From 732d4af506bdddf0bad638b2737517bf5dc9502c Mon Sep 17 00:00:00 2001
Date: Wed, 6 Feb 2013 19:13:31 +0100
Subject: [PATCH] Core/Units: updated combat damage reduction to cataclysm.
this will fix the relisience damage bug.
---
src/server/game/Entities/Unit/Unit.cpp | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 37fbf93..17516d7 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -15741,20 +15741,25 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ)
float Unit::GetCombatRatingReduction(CombatRating cr) const
{
- if (Player const* player = ToPlayer())
- return player->GetRatingBonusValue(cr);
- // Player's pet get resilience from owner
- else if (isPet() && GetOwner())
- if (Player* owner = GetOwner()->ToPlayer())
- return owner->GetRatingBonusValue(cr);
+ if (GetTypeId() == TYPEID_PLAYER)
+ return ((Player const*)this)->GetRatingBonusValue(cr);
+ else if (((Creature const*)this)->isPet())
+ {
+ // Player's pet get resilience from owner
+ if (Unit* owner = GetOwner())
+ if (owner->GetTypeId() == TYPEID_PLAYER)
+ return ((Player*)owner)->GetRatingBonusValue(cr);
+ }
return 0.0f;
}
uint32 Unit::GetCombatRatingDamageReduction(CombatRating cr, float rate, float cap, uint32 damage) const
{
- float percent = std::min(GetCombatRatingReduction(cr) * rate, cap);
- return CalculatePct(damage, percent);
+ float percent = GetCombatRatingReduction(cr) * rate;
+ if (percent > cap)
+ percent = cap;
+ return uint32 (percent * damage / 100.0f);
}
uint32 Unit::GetModelForForm(ShapeshiftForm form) const
--
1.7.10.msysgit.1