aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-11-06 00:14:50 +0100
committerShauren <shauren.trinity@gmail.com>2016-11-06 00:14:50 +0100
commit39df5e9ead83783585590241aa21014e550f68a2 (patch)
tree4c302338833d656eaf991599fd5cb1c6d2da4ae5 /src/server/game/Entities
parent56a7e86a2869e0b179c7ccac8221fac2979560e6 (diff)
Core/Stats: Updated handling crit chance - removed school specific crit chances
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Player/Player.h3
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp23
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp6
4 files changed, 6 insertions, 28 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index f64078f8117..38675cf6b52 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -5086,7 +5086,7 @@ void Player::UpdateRating(CombatRating cr)
break;
case CR_CRIT_SPELL:
if (affectStats)
- UpdateAllSpellCritChances();
+ UpdateSpellCritChance();
break;
case CR_MULTISTRIKE:
case CR_READINESS:
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 068d253610f..97fe7df32c1 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1966,8 +1966,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void UpdateRangedHitChances();
void UpdateSpellHitChances();
- void UpdateAllSpellCritChances();
- void UpdateSpellCritChance(uint32 school);
+ void UpdateSpellCritChance();
void UpdateArmorPenetration(int32 amount);
void UpdateExpertise(WeaponAttackType attType);
void ApplyManaRegenBonus(int32 amount, bool apply);
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index b9b0dca17c1..04124e71c6e 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -114,7 +114,7 @@ bool Player::UpdateStats(Stats stat)
UpdateMaxHealth();
break;
case STAT_INTELLECT:
- UpdateAllSpellCritChances();
+ UpdateSpellCritChance();
UpdateArmor(); //SPELL_AURA_MOD_RESISTANCE_OF_INTELLECT_PERCENT, only armor currently
break;
default:
@@ -201,7 +201,7 @@ bool Player::UpdateAllStats()
UpdateAllRatings();
UpdateAllCritPercentages();
- UpdateAllSpellCritChances();
+ UpdateSpellCritChance();
UpdateBlockPercentage();
UpdateParryPercentage();
UpdateDodgePercentage();
@@ -636,27 +636,18 @@ void Player::UpdateDodgePercentage()
SetStatFloatValue(PLAYER_DODGE_PERCENTAGE, value);
}
-void Player::UpdateSpellCritChance(uint32 school)
+void Player::UpdateSpellCritChance()
{
- // For normal school set zero crit chance
- if (school == SPELL_SCHOOL_NORMAL)
- {
- SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, 0.0f);
- return;
- }
- // For others recalculate it from:
float crit = 5.0f;
// Increase crit from SPELL_AURA_MOD_SPELL_CRIT_CHANCE
crit += GetTotalAuraModifier(SPELL_AURA_MOD_SPELL_CRIT_CHANCE);
// Increase crit from SPELL_AURA_MOD_CRIT_PCT
crit += GetTotalAuraModifier(SPELL_AURA_MOD_CRIT_PCT);
- // Increase crit by school from SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL
- crit += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL, 1<<school);
// Increase crit from spell crit ratings
crit += GetRatingBonusValue(CR_CRIT_SPELL);
// Store crit value
- SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1 + school, crit);
+ SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, crit);
}
void Player::UpdateArmorPenetration(int32 amount)
@@ -683,12 +674,6 @@ void Player::UpdateSpellHitChances()
m_modSpellHitChance += GetRatingBonusValue(CR_HIT_SPELL);
}
-void Player::UpdateAllSpellCritChances()
-{
- for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i)
- UpdateSpellCritChance(i);
-}
-
void Player::UpdateExpertise(WeaponAttackType attack)
{
if (attack == RANGED_ATTACK)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index ca44e62923d..9e543c2c110 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -8244,10 +8244,7 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto
else if (GetTypeId() == TYPEID_PLAYER)
crit_chance = GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1);
else
- {
crit_chance = (float)m_baseSpellCritChance;
- crit_chance += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL, schoolMask);
- }
// taken
if (victim)
{
@@ -8366,10 +8363,7 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto
case SPELL_DAMAGE_CLASS_RANGED:
{
if (victim)
- {
crit_chance += GetUnitCriticalChance(attackType, victim);
- crit_chance += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL, schoolMask);
- }
break;
}
default: