diff options
author | ariel- <ariel-@users.noreply.github.com> | 2017-12-16 21:04:20 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2017-12-16 21:04:20 -0300 |
commit | 484c681e43057baf65079291d0e886b454dce7b8 (patch) | |
tree | b07d43d33bfef0749c7ba885159196c6e36638d0 /src | |
parent | 57375739ba81ab88c83b1327b3c61a1d2a0c1b57 (diff) |
Core/Entities: fixed rage gain from attacking script-invincible targets
Closes #3856
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e4ea448df12..7722bea42d0 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -682,6 +682,8 @@ void Unit::DealDamageMods(Unit const* victim, uint32 &damage, uint32* absorb) co uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellInfo const* spellProto, bool durabilityLoss) { + uint32 rage_damage = damage + (cleanDamage ? cleanDamage->absorbed_damage : 0); + if (victim->IsAIEnabled) victim->GetAI()->DamageTaken(this, damage); @@ -758,28 +760,17 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam if (cleanDamage && damagetype == DIRECT_DAMAGE && this != victim && getPowerType() == POWER_RAGE) { uint32 weaponSpeedHitFactor; - uint32 rage_damage = damage + cleanDamage->absorbed_damage; switch (cleanDamage->attackType) { case BASE_ATTACK: - { - weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType) / 1000.0f * 3.5f); - if (cleanDamage->hitOutCome == MELEE_HIT_CRIT) - weaponSpeedHitFactor *= 2; - - RewardRage(rage_damage, weaponSpeedHitFactor, true); - - break; - } case OFF_ATTACK: { - weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType) / 1000.0f * 1.75f); + weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType) / 1000.0f * (cleanDamage->attackType == BASE_ATTACK ? 3.5f : 1.75f)); if (cleanDamage->hitOutCome == MELEE_HIT_CRIT) weaponSpeedHitFactor *= 2; RewardRage(rage_damage, weaponSpeedHitFactor, true); - break; } case RANGED_ATTACK: @@ -895,7 +886,7 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam // Rage from damage received if (this != victim && victim->getPowerType() == POWER_RAGE) { - uint32 rage_damage = damage + (cleanDamage ? cleanDamage->absorbed_damage : 0); + rage_damage = damage + (cleanDamage ? cleanDamage->absorbed_damage : 0); victim->RewardRage(rage_damage, 0, false); } |