diff options
author | thenecromancer <none@none> | 2010-01-13 11:37:49 +0100 |
---|---|---|
committer | thenecromancer <none@none> | 2010-01-13 11:37:49 +0100 |
commit | 91e1bf323d80304669c80f1f4171028b2facc9ac (patch) | |
tree | d0d008fe0efeec651f3f42a5891dddbaaa065362 /src | |
parent | f57f33eacf2413cbc3e3f0552fc474b9cc13cc2e (diff) |
Generate rage when hitting critters/targets with absorb
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Unit.cpp | 71 |
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); |