aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/Unit.cpp71
1 files changed, 36 insertions, 35 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index ef9a46c7855..422cace994e 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -602,6 +602,42 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
pVictim->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_TAKE_DAMAGE, spellProto ? spellProto->Id : 0);
}
+
+ // Rage from Damage made (only from direct weapon damage)
+ if (cleanDamage && damagetype==DIRECT_DAMAGE && this != pVictim && getPowerType() == POWER_RAGE)
+ {
+ uint32 weaponSpeedHitFactor;
+ uint32 rage_damage = damage + cleanDamage->absorbed_damage;
+
+ switch(cleanDamage->attackType)
+ {
+ case BASE_ATTACK:
+ {
+ if (cleanDamage->hitOutCome == MELEE_HIT_CRIT)
+ weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 7);
+ else
+ weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 3.5f);
+
+ RewardRage(rage_damage, weaponSpeedHitFactor, true);
+
+ break;
+ }
+ case OFF_ATTACK:
+ {
+ if (cleanDamage->hitOutCome == MELEE_HIT_CRIT)
+ weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 3.5f);
+ else
+ weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 1.75f);
+
+ RewardRage(rage_damage, weaponSpeedHitFactor, true);
+
+ break;
+ }
+ case RANGED_ATTACK:
+ break;
+ }
+ }
+
if (!damage)
{
// Rage from absorbed damage
@@ -651,41 +687,6 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
duel_hasEnded = true;
}
- // Rage from Damage made (only from direct weapon damage)
- if (cleanDamage && damagetype==DIRECT_DAMAGE && this != pVictim && getPowerType() == POWER_RAGE)
- {
- uint32 weaponSpeedHitFactor;
- uint32 rage_damage = damage + cleanDamage->absorbed_damage;
-
- switch(cleanDamage->attackType)
- {
- case BASE_ATTACK:
- {
- if (cleanDamage->hitOutCome == MELEE_HIT_CRIT)
- weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 7);
- else
- weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 3.5f);
-
- RewardRage(rage_damage, weaponSpeedHitFactor, true);
-
- break;
- }
- case OFF_ATTACK:
- {
- if (cleanDamage->hitOutCome == MELEE_HIT_CRIT)
- weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 3.5f);
- else
- weaponSpeedHitFactor = uint32(GetAttackTime(cleanDamage->attackType)/1000.0f * 1.75f);
-
- RewardRage(rage_damage, weaponSpeedHitFactor, true);
-
- break;
- }
- case RANGED_ATTACK:
- break;
- }
- }
-
if (GetTypeId() == TYPEID_PLAYER && this != pVictim)
{
Player *killer = ((Player*)this);