diff options
author | Robingad <robingad@rambler.ru> | 2021-01-04 02:23:53 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-02-07 19:43:13 +0100 |
commit | 964340bb764baab75830cfe298d1346ceae84c61 (patch) | |
tree | bed87544eadc6e767264aecf9a4e71678a323564 /src | |
parent | e11067a39861214bde940bdc0e5b11daf7c326a0 (diff) |
Core/Auras: Handle SPELL_AURA_MOD_AUTOATTACK_DAMAGE
(cherry picked from AshamaneProject/AshamaneCore@92bbcfde0bd60f783f6eef8cb5cd60cfac4b10c4)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 |
3 files changed, 11 insertions, 5 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 31490b44869..d05c889dbed 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7621,11 +7621,11 @@ uint32 Unit::MeleeDamageBonusDone(Unit* victim, uint32 pdamage, WeaponAttackType // Done total percent damage auras float DoneTotalMod = 1.0f; - // Some spells don't benefit from pct done mods - if (spellProto && !spellProto->HasAttribute(SPELL_ATTR6_NO_DONE_PCT_DAMAGE_MODS)) + if (spellProto) { + // Some spells don't benefit from pct done mods // mods for SPELL_SCHOOL_MASK_NORMAL are already factored in base melee damage calculation - if (!(spellProto->GetSchoolMask() & SPELL_SCHOOL_MASK_NORMAL)) + if (!spellProto->HasAttribute(SPELL_ATTR6_NO_DONE_PCT_DAMAGE_MODS) && !(spellProto->GetSchoolMask() & SPELL_SCHOOL_MASK_NORMAL)) { float maxModDamagePercentSchool = 0.0f; if (Player const* thisPlayer = ToPlayer()) @@ -7640,6 +7640,12 @@ uint32 Unit::MeleeDamageBonusDone(Unit* victim, uint32 pdamage, WeaponAttackType DoneTotalMod *= maxModDamagePercentSchool; } } + else + { + // melee attack + for (AuraEffect const* autoAttackDamage : GetAuraEffectsByType(SPELL_AURA_MOD_AUTOATTACK_DAMAGE)) + AddPct(DoneTotalMod, autoAttackDamage->GetAmount()); + } DoneTotalMod *= GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_DONE_VERSUS, creatureTypeMask); diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 9890752f752..654c4faeb61 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -416,7 +416,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_SPELL_CATEGORY_COOLDOWN = 341, // Modifies cooldown of all spells using affected category SPELL_AURA_MOD_MELEE_RANGED_HASTE_2 = 342, SPELL_AURA_MOD_MELEE_DAMAGE_FROM_CASTER = 343, // NYI - SPELL_AURA_MOD_AUTOATTACK_DAMAGE = 344, // NYI + SPELL_AURA_MOD_AUTOATTACK_DAMAGE = 344, SPELL_AURA_BYPASS_ARMOR_FOR_CASTER = 345, SPELL_AURA_ENABLE_ALT_POWER = 346, // NYI SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE = 347, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index a6f7fc4b4f1..714539fb265 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -410,7 +410,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleModSpellCategoryCooldown, //341 SPELL_AURA_MOD_SPELL_CATEGORY_COOLDOWN &AuraEffect::HandleModMeleeRangedSpeedPct, //342 SPELL_AURA_MOD_MELEE_RANGED_HASTE_2 &AuraEffect::HandleNULL, //343 SPELL_AURA_MOD_MELEE_DAMAGE_FROM_CASTER - &AuraEffect::HandleNULL, //344 SPELL_AURA_MOD_AUTOATTACK_DAMAGE + &AuraEffect::HandleNoImmediateEffect, //344 SPELL_AURA_MOD_AUTOATTACK_DAMAGE - Implemented in Unit::MeleeDamageBonusDone &AuraEffect::HandleNoImmediateEffect, //345 SPELL_AURA_BYPASS_ARMOR_FOR_CASTER &AuraEffect::HandleEnableAltPower, //346 SPELL_AURA_ENABLE_ALT_POWER &AuraEffect::HandleNoImmediateEffect, //347 SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE implemented in SpellHistory::StartCooldown |