mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 17:05:44 +01:00
Generate rage when hitting critters/targets with absorb
--HG-- branch : trunk
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user