aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-08-02 19:56:48 +0200
committerShauren <shauren.trinity@gmail.com>2013-08-02 19:56:48 +0200
commit20a61b6400b17d09f7fc78bc75783aff16e7a029 (patch)
treef5287095e14bd334e85163d41c0ed0f676d31085 /src/server/game/Entities/Unit
parent5ae86ee2a85923ed09b8b719ef98de759d22e0e8 (diff)
Core/Creatures: DoTs and self damage will no longer reset time since last damage taken for stopping creature from evading
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 0b660c1bb9a..327c4b96c34 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -738,10 +738,14 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam
if (victim->GetTypeId() == TYPEID_PLAYER)
victim->ToPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED, damage);
- victim->ModifyHealth(- (int32)damage);
+ victim->ModifyHealth(-(int32)damage);
if (damagetype == DIRECT_DAMAGE || damagetype == SPELL_DIRECT_DAMAGE)
+ {
victim->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_DIRECT_DAMAGE, spellProto ? spellProto->Id : 0);
+ if (victim->GetTypeId() == TYPEID_UNIT && !victim->IsPet())
+ victim->SetLastDamagedTime(time(NULL));
+ }
if (victim->GetTypeId() != TYPEID_PLAYER)
victim->AddThreat(this, float(damage), damageSchoolMask, spellProto);
@@ -11961,10 +11965,6 @@ int32 Unit::ModifyHealth(int32 dVal)
if (dVal == 0)
return 0;
- // Part of Evade mechanics. Only track health lost, not gained.
- if (dVal < 0 && GetTypeId() != TYPEID_PLAYER && !IsPet())
- SetLastDamagedTime(time(NULL));
-
int32 curHealth = (int32)GetHealth();
int32 val = dVal + curHealth;