1. From 732d4af506bdddf0bad638b2737517bf5dc9502c Mon Sep 17 00:00:00 2001
  2. From: Northstrider <[email protected]>
  3. Date: Wed, 6 Feb 2013 19:13:31 +0100
  4. Subject: [PATCH] Core/Units: updated combat damage reduction to cataclysm.
  5. this will fix the relisience damage bug.
  6. ---
  7. src/server/game/Entities/Unit/Unit.cpp | 21 +++++++++++++--------
  8. 1 file changed, 13 insertions(+), 8 deletions(-)
  9. diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
  10. index 37fbf93..17516d7 100644
  11. --- a/src/server/game/Entities/Unit/Unit.cpp
  12. +++ b/src/server/game/Entities/Unit/Unit.cpp
  13. @@ -15741,20 +15741,25 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ)
  14. float Unit::GetCombatRatingReduction(CombatRating cr) const
  15. {
  16. - if (Player const* player = ToPlayer())
  17. - return player->GetRatingBonusValue(cr);
  18. - // Player's pet get resilience from owner
  19. - else if (isPet() && GetOwner())
  20. - if (Player* owner = GetOwner()->ToPlayer())
  21. - return owner->GetRatingBonusValue(cr);
  22. + if (GetTypeId() == TYPEID_PLAYER)
  23. + return ((Player const*)this)->GetRatingBonusValue(cr);
  24. + else if (((Creature const*)this)->isPet())
  25. + {
  26. + // Player's pet get resilience from owner
  27. + if (Unit* owner = GetOwner())
  28. + if (owner->GetTypeId() == TYPEID_PLAYER)
  29. + return ((Player*)owner)->GetRatingBonusValue(cr);
  30. + }
  31. return 0.0f;
  32. }
  33. uint32 Unit::GetCombatRatingDamageReduction(CombatRating cr, float rate, float cap, uint32 damage) const
  34. {
  35. - float percent = std::min(GetCombatRatingReduction(cr) * rate, cap);
  36. - return CalculatePct(damage, percent);
  37. + float percent = GetCombatRatingReduction(cr) * rate;
  38. + if (percent > cap)
  39. + percent = cap;
  40. + return uint32 (percent * damage / 100.0f);
  41. }
  42. uint32 Unit::GetModelForForm(ShapeshiftForm form) const
  43. --
  44. 1.7.10.msysgit.1