From e8b7f00161ee77f85f965a45f064c7db7984d84b Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 23 Jun 2021 14:42:03 -0400 Subject: [PATCH] Core/Player: only call _ApplyWeaponDamage for actual weapons Port From (https://github.com/TrinityCore/TrinityCore/commit/905112b2a61c5b3999f936d957e10a3ee6258751) --- Source/Game/Entities/Player/Player.Combat.cs | 13 +++++-------- Source/Game/Spells/Auras/AuraEffect.cs | 6 +++--- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Source/Game/Entities/Player/Player.Combat.cs b/Source/Game/Entities/Player/Player.Combat.cs index 900aa33bf..34b5b3c56 100644 --- a/Source/Game/Entities/Player/Player.Combat.cs +++ b/Source/Game/Entities/Player/Player.Combat.cs @@ -291,17 +291,14 @@ namespace Game.Entities return true; } - public void _ApplyWeaponDamage(uint slot, Item item, bool apply) + public void _ApplyWeaponDamage(byte slot, Item item, bool apply) { ItemTemplate proto = item.GetTemplate(); - WeaponAttackType attType = WeaponAttackType.BaseAttack; + WeaponAttackType attType = GetAttackBySlot(slot, proto.GetInventoryType()); + if (attType == WeaponAttackType.Max) + return; + float damage = 0.0f; - - if (slot == EquipmentSlot.MainHand && (proto.GetInventoryType() == InventoryType.Ranged || proto.GetInventoryType() == InventoryType.RangedRight)) - attType = WeaponAttackType.RangedAttack; - else if (slot == EquipmentSlot.OffHand) - attType = WeaponAttackType.OffAttack; - uint itemLevel = item.GetItemLevel(this); float minDamage, maxDamage; proto.GetDamage(itemLevel, out minDamage, out maxDamage); diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index e99c1191c..399eec5e0 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -1702,7 +1702,7 @@ namespace Game.Spells Action flagAddFn = null; Action flagRemoveFn = null; - uint slot; + byte slot; WeaponAttackType attType; switch (type) { @@ -1742,10 +1742,10 @@ namespace Game.Spells { Player player = target.ToPlayer(); - Item item = player.GetItemByPos(InventorySlots.Bag0, (byte)slot); + Item item = player.GetItemByPos(InventorySlots.Bag0, slot); if (item != null) { - WeaponAttackType attackType = Player.GetAttackBySlot((byte)slot, item.GetTemplate().GetInventoryType()); + WeaponAttackType attackType = Player.GetAttackBySlot(slot, item.GetTemplate().GetInventoryType()); player.ApplyItemDependentAuras(item, !apply); if (attackType < WeaponAttackType.Max)