diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2018-01-20 21:00:53 -0300 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-06-16 14:26:09 +0200 |
| commit | 85ffcd9826f95127317a8a8427e9140542583bd5 (patch) | |
| tree | a4362e504544a446f29bc9d721844a375944eb8b /src/server/game | |
| parent | d4359bb560ff1022dac7b0339dab894906a09be4 (diff) | |
Core/Scripts: fix wrong uses of SetHitDamage hook.
This hook modifies damage AFTER it has been reduced by target auras/armor/resistances etc, it's useful if you want to scale damage by a factor, but not to add flat bonuses.
We're fixing those by moving calculation to Launch phase, where target taken bonuses haven't been used yet.
- Bronjahm: Magic's Bane
- BPC: Shadow Prison
- Oculus: Shock Lance
- Ymiron: Dark Slash (extra fix, it was wrongly damaging half of total health, it's supposed to be half of CURRENT health!)
- DK: Raise Ally Thrash spell (also extra fix: corrected formula)
- Warrior: Bloodthirst (shouldn't matter much as it's damage class none and those don't get bonuses by default)
- Warrior: Concussion Blow
- Warlock: extra fix for Haunt, healing part shouldn't scale with spell power
Closes #9560
(cherry picked from commit 9f5d1e2b10013e5fecf35fdd5af70921c96d07d1)
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c8c6329a5c0..e6c6116b0af 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4720,29 +4720,28 @@ uint32 Unit::GetDiseasesByCaster(ObjectGuid casterGUID, bool remove) static const AuraType diseaseAuraTypes[] = { SPELL_AURA_PERIODIC_DAMAGE, // Frost Fever and Blood Plague - SPELL_AURA_LINKED, // Crypt Fever and Ebon Plague - SPELL_AURA_NONE + SPELL_AURA_LINKED // Crypt Fever and Ebon Plague }; uint32 diseases = 0; - for (AuraType const* itr = diseaseAuraTypes; *itr != SPELL_AURA_NONE; ++itr) + for (AuraType aType : diseaseAuraTypes) { - for (AuraEffectList::iterator i = m_modAuras[*itr].begin(); i != m_modAuras[*itr].end();) + for (auto itr = m_modAuras[aType].begin(); itr != m_modAuras[aType].end();) { // Get auras with disease dispel type by caster - if ((*i)->GetSpellInfo()->Dispel == DISPEL_DISEASE - && (*i)->GetCasterGUID() == casterGUID) + if ((*itr)->GetSpellInfo()->Dispel == DISPEL_DISEASE + && (*itr)->GetCasterGUID() == casterGUID) { ++diseases; if (remove) { - RemoveAura((*i)->GetId(), (*i)->GetCasterGUID()); - i = m_modAuras[*itr].begin(); + RemoveAura((*itr)->GetId(), (*itr)->GetCasterGUID()); + itr = m_modAuras[aType].begin(); continue; } } - ++i; + ++itr; } } return diseases; |
