diff --git a/src/game/UnitAuraProcHandler.cpp b/src/game/UnitAuraProcHandler.cpp index 8f8402d6e..6a55521de 100644 --- a/src/game/UnitAuraProcHandler.cpp +++ b/src/game/UnitAuraProcHandler.cpp @@ -2848,8 +2848,8 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d //case 44819: break; // Hate Monster (Spar Buddy) (>30% Health) //case 44820: break; // Hate Monster (Spar) (<30%) case 45057: // Evasive Maneuvers (Commendation of Kael`thas trinket) - // reduce you below $s1% health - if (GetHealth() - damage > GetMaxHealth() * triggerAmount / 100) + // reduce you below $s1% health (in fact in this specific case can proc from any attack while health in result less $s1%) + if (int32(GetHealth()) - int32(damage) >= GetMaxHealth() * triggerAmount / 100) return SPELL_AURA_PROC_FAILED; break; //case 45903: break: // Offensive State @@ -2913,8 +2913,8 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d case 64568: // Blood Reserve { // When your health drops below 35% .... - uint32 health35 = uint32(GetMaxHealth() * 0.35); - if (GetHealth() - damage > health35 || GetHealth() < health35) + int32 health35 = int32(GetMaxHealth() * 35 / 100); + if (int32(GetHealth()) - int32(damage) >= health35 || int32(GetHealth()) < health35) return SPELL_AURA_PROC_FAILED; trigger_spell_id = 64569; @@ -3050,7 +3050,8 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d else if (auraSpellInfo->Id == 28845) { // When your health drops below 20% .... - if (GetHealth() - damage > GetMaxHealth() / 5 || GetHealth() < GetMaxHealth() / 5) + int32 health20 = int32(GetMaxHealth()) / 5; + if (int32(GetHealth()) - int32(damage) >= health20 || int32(GetHealth()) < health20) return SPELL_AURA_PROC_FAILED; } // Decimation @@ -3321,8 +3322,9 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d // Nature's Guardian else if (auraSpellInfo->SpellIconID == 2013) { - // Check health condition - should drop to less 30% (damage deal after this!) - if (!(10*(int32(GetHealth() - damage)) < int32(3 * GetMaxHealth()))) + // Check health condition - should drop to less 30% (trigger at any attack with result health less 30%, independent original health state) + int32 health30 = int32(GetMaxHealth()) * 3 / 10; + if (int32(GetHealth()) - int32(damage) >= health30) return SPELL_AURA_PROC_FAILED; if(pVictim && pVictim->isAlive()) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 62611f691..eaa895056 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11504" + #define REVISION_NR "11505" #endif // __REVISION_NR_H__