mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Unit: Improve Glancing Blow calculation (#26100)
* Core/Unit: Improve Glancing Blow calculation * Fix minimum reduction of Glancing Blow * Fix comment * Fix glancing minimum damage reduction
This commit is contained in:
@@ -1316,13 +1316,15 @@ void Unit::CalculateMeleeDamage(Unit* victim, CalcDamageInfo* damageInfo, Weapon
|
||||
damageInfo->HitInfo |= HITINFO_GLANCING;
|
||||
damageInfo->TargetState = VICTIMSTATE_HIT;
|
||||
int32 leveldif = int32(victim->GetLevel()) - int32(GetLevel());
|
||||
if (leveldif == 0)
|
||||
leveldif = 1;
|
||||
if (leveldif > 3)
|
||||
leveldif = 3;
|
||||
|
||||
// against boss-level targets - 24% chance of 25% average damage reduction (damage reduction range : 20-30%)
|
||||
// against level 82 elites - 18% chance of 15% average damage reduction (damage reduction range : 10-20%)
|
||||
int32 const reductionMax = leveldif * 10;
|
||||
int32 const reductionMin = reductionMax - 10;
|
||||
int32 const reductionMin = std::max(1, reductionMax - 10);
|
||||
float reducePercent = 1.f - irand(reductionMin, reductionMax) / 100.0f;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i)
|
||||
@@ -2169,10 +2171,10 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst(Unit const* victim, WeaponAttackTy
|
||||
}
|
||||
|
||||
// 4. GLANCING
|
||||
// Max 40% chance to score a glancing blow against mobs that are higher level (can do only players and pets and not with ranged weapon)
|
||||
// Max 40% chance to score a glancing blow against mobs that are same or higher level (can do only players and pets and not with ranged weapon)
|
||||
if ((GetTypeId() == TYPEID_PLAYER || IsPet()) &&
|
||||
victim->GetTypeId() != TYPEID_PLAYER && !victim->IsPet() &&
|
||||
GetLevel() < victim->GetLevelForTarget(this))
|
||||
GetLevel() <= victim->GetLevelForTarget(this))
|
||||
{
|
||||
// cap possible value (with bonuses > max skill)
|
||||
int32 skill = attackerWeaponSkill;
|
||||
|
||||
Reference in New Issue
Block a user