diff options
-rw-r--r-- | src/server/game/AI/CreatureAI.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 10 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index 09a6725485a..a494507919a 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -165,8 +165,6 @@ void CreatureAI::EnterEvadeMode() if (me->IsVehicle()) // use the same sequence of addtoworld, aireset may remove all summons! me->GetVehicleKit()->Reset(true); - - me->SetLastDamagedTime(0); } /*void CreatureAI::AttackedBy(Unit* attacker) @@ -236,6 +234,7 @@ bool CreatureAI::_EnterEvadeMode() me->LoadCreaturesAddon(); me->SetLootRecipient(NULL); me->ResetPlayerDamageReq(); + me->SetLastDamagedTime(0); if (me->IsInEvadeMode()) return false; 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; |