aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r--src/game/Unit.cpp40
1 files changed, 11 insertions, 29 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index affdc47bbc5..5a07c68efe4 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -1212,13 +1212,8 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;//|PROC_FLAG_TAKEN_OFFHAND_HIT // not used
damageInfo->HitInfo = HITINFO_LEFTSWING;
break;
- case RANGED_ATTACK:
- damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT;
- damageInfo->procVictim = PROC_FLAG_TAKEN_RANGED_HIT;
- damageInfo->HitInfo = HITINFO_UNK2;// test
- break;
default:
- break;
+ return;
}
// Physical Immune check
@@ -1235,20 +1230,17 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
damage += CalculateDamage(damageInfo->attackType, false, true);
// Add melee damage bonus
MeleeDamageBonus(damageInfo->target, &damage, damageInfo->attackType);
- // Calculate armor reduction
- damageInfo->damage = CalcArmorReducedDamage(damageInfo->target, damage, NULL , damageInfo->attackType);
- damageInfo->cleanDamage += damage - damageInfo->damage;
- damageInfo->hitOutCome = RollMeleeOutcomeAgainst(damageInfo->target, damageInfo->attackType);
-
- // Disable parry or dodge for ranged attack
- if (damageInfo->attackType == RANGED_ATTACK)
+ // Calculate armor reduction
+ if (damageInfo->damageSchoolMask & SPELL_SCHOOL_MASK_NORMAL)
{
- if (damageInfo->hitOutCome == MELEE_HIT_PARRY)
- damageInfo->hitOutCome = MELEE_HIT_NORMAL;
- else if (damageInfo->hitOutCome == MELEE_HIT_DODGE)
- damageInfo->hitOutCome = MELEE_HIT_MISS;
+ damageInfo->damage = CalcArmorReducedDamage(damageInfo->target, damage, NULL , damageInfo->attackType);
+ damageInfo->cleanDamage += damage - damageInfo->damage;
}
+ else
+ damageInfo->damage = damage;
+
+ damageInfo->hitOutCome = RollMeleeOutcomeAgainst(damageInfo->target, damageInfo->attackType);
switch (damageInfo->hitOutCome)
{
@@ -1302,12 +1294,7 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
damageInfo->damage = int32((damageInfo->damage) * float((100.0f + mod)/100.0f));
// Resilience - reduce crit damage
- uint32 resilienceReduction;
- if (attackType != RANGED_ATTACK)
- resilienceReduction = pVictim->GetMeleeCritDamageReduction(damageInfo->damage);
- else
- resilienceReduction = pVictim->GetRangedCritDamageReduction(damageInfo->damage);
-
+ uint32 resilienceReduction = pVictim->GetMeleeCritDamageReduction(damageInfo->damage);
damageInfo->damage -= resilienceReduction;
damageInfo->cleanDamage += resilienceReduction;
break;
@@ -1373,12 +1360,7 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
// only from players
if (GetTypeId() == TYPEID_PLAYER)
- {
- if (attackType != RANGED_ATTACK)
- damage -= pVictim->GetMeleeDamageReduction(damage);
- else
- damage -= pVictim->GetRangedDamageReduction(damage);
- }
+ damage -= pVictim->GetMeleeDamageReduction(damage);
// Calculate absorb resist
if (int32(damageInfo->damage) > 0)