aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/DataStores/GameTables.cpp4
-rw-r--r--src/server/game/DataStores/GameTables.h41
-rw-r--r--src/server/game/Entities/Player/Player.cpp58
-rw-r--r--src/server/game/Entities/Unit/Unit.h6
4 files changed, 54 insertions, 55 deletions
diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp
index a3ce7e1b08a..e47033e3655 100644
--- a/src/server/game/DataStores/GameTables.cpp
+++ b/src/server/game/DataStores/GameTables.cpp
@@ -33,7 +33,7 @@ GameTable<GtCombatRatingsEntry> sCombatRatingsGameTable;
GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
GameTable<GtOctBaseHpByClassEntry> sOctBaseHpByClassGameTable;
GameTable<GtOctBaseMpByClassEntry> sOctBaseMpByClassGameTable;
-GameTable<GtOctClassCombatRatingScalarEntry> sOctClassCombatRazingScalarGameTable;
+GameTable<GtOctClassCombatRatingScalarEntry> sOctClassCombatRatingScalarGameTable;
GameTable<GtOctHpPerStaminaEntry> sOctHpPerStaminaGameTable;
GameTable<GtOctRegenHpEntry> sOctRegenHpGameTable;
GameTable<GtOctRegenMpEntry> sOctRegenMpGameTable;
@@ -129,7 +129,7 @@ void LoadGameTables(std::string const& dataPath)
LOAD_GT(sNpcManaCostScalerGameTable, "NPCManaCostScaler.txt");
LOAD_GT(sOctBaseHpByClassGameTable, "OCTBaseHPByClass.txt");
LOAD_GT(sOctBaseMpByClassGameTable, "OCTBaseMPByClass.txt");
- LOAD_GT(sOctClassCombatRazingScalarGameTable, "OCTClassCombatRatingScalar.txt");
+ LOAD_GT(sOctClassCombatRatingScalarGameTable, "OCTClassCombatRatingScalar.txt");
LOAD_GT(sOctHpPerStaminaGameTable, "OCTHPPerStamina.txt");
LOAD_GT(sOctRegenHpGameTable, "OCTRegenHP.txt");
LOAD_GT(sOctRegenMpGameTable, "OCTRegenMP.txt");
diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h
index ab4f7a18470..713b8233178 100644
--- a/src/server/game/DataStores/GameTables.h
+++ b/src/server/game/DataStores/GameTables.h
@@ -22,6 +22,7 @@
#include "Common.h"
#include <vector>
+enum CombatRating : uint8;
enum InventoryType : uint8;
struct GtBarberShopCostBaseEntry
@@ -303,7 +304,7 @@ TC_GAME_API extern GameTable<GtCombatRatingsEntry> sCombatRatin
TC_GAME_API extern GameTable<GtNpcManaCostScalerEntry> sNpcManaCostScalerGameTable;
TC_GAME_API extern GameTable<GtOctBaseHpByClassEntry> sOctBaseHpByClassGameTable;
TC_GAME_API extern GameTable<GtOctBaseMpByClassEntry> sOctBaseMpByClassGameTable;
-TC_GAME_API extern GameTable<GtOctClassCombatRatingScalarEntry> sOctClassCombatRazingScalarGameTable;
+TC_GAME_API extern GameTable<GtOctClassCombatRatingScalarEntry> sOctClassCombatRatingScalarGameTable;
TC_GAME_API extern GameTable<GtOctHpPerStaminaEntry> sOctHpPerStaminaGameTable;
TC_GAME_API extern GameTable<GtOctRegenHpEntry> sOctRegenHpGameTable;
TC_GAME_API extern GameTable<GtOctRegenMpEntry> sOctRegenMpGameTable;
@@ -387,4 +388,42 @@ inline float GetSpellScalingColumnForClass(GtSpellScalingEntry const* row, int32
return 0.0f;
}
+template<class T>
+inline float GetGameTableColumnForCombatRating(T const* row, CombatRating combatRating)
+{
+ switch (combatRating)
+ {
+ case CR_DEFENSE_SKILL:
+ return row->DefenseSkill;
+ case CR_DODGE:
+ return row->Dodge;
+ case CR_PARRY:
+ return row->Parry;
+ case CR_BLOCK:
+ return row->Block;
+ case CR_HIT_MELEE:
+ return row->HitMelee;
+ case CR_HIT_RANGED:
+ return row->HitRanged;
+ case CR_HIT_SPELL:
+ return row->HitSpell;
+ case CR_CRIT_MELEE:
+ return row->CritMelee;
+ case CR_CRIT_RANGED:
+ return row->CritRanged;
+ case CR_CRIT_SPELL:
+ return row->CritSpell;
+ case CR_HASTE_MELEE:
+ return row->HasteMelee;
+ case CR_HASTE_RANGED:
+ return row->HasteRanged;
+ case CR_HASTE_SPELL:
+ return row->HasteSpell;
+ default:
+ break;
+ }
+
+ return 0.0f;
+};
+
#endif // GameTables_h__
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 83aaf6d35d9..07ec1487a44 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -5108,54 +5108,17 @@ void Player::GetDodgeFromAgility(float &/*diminishing*/, float &/*nondiminishing
//nondiminishing = 100.0f * (dodge_base[pclass-1] + base_agility * dodgeRatio->ratio * crit_to_dodge[pclass-1]);
}
-inline float GetGameTableColumnForCombatRating(GtCombatRatingsEntry const* row, uint32 rating)
-{
- switch (rating)
- {
- case CR_DEFENSE_SKILL:
- return row->DefenseSkill;
- case CR_DODGE:
- return row->Dodge;
- case CR_PARRY:
- return row->Parry;
- case CR_BLOCK:
- return row->Block;
- case CR_HIT_MELEE:
- return row->HitMelee;
- case CR_HIT_RANGED:
- return row->HitRanged;
- case CR_HIT_SPELL:
- return row->HitSpell;
- case CR_CRIT_MELEE:
- return row->CritMelee;
- case CR_CRIT_RANGED:
- return row->CritRanged;
- case CR_CRIT_SPELL:
- return row->CritSpell;
- case CR_HASTE_MELEE:
- return row->HasteMelee;
- case CR_HASTE_RANGED:
- return row->HasteRanged;
- case CR_HASTE_SPELL:
- return row->HasteSpell;
- default:
- break;
- }
-
- return 1.0f;
-}
-
float Player::GetRatingMultiplier(CombatRating cr) const
{
- GtCombatRatingsEntry const* Rating = sCombatRatingsGameTable.GetRow(GetLevel());
- if (!Rating)
- return 1.0f;
+ float combatRatingRatio = GetGameTableColumnForCombatRating(sCombatRatingsGameTable.GetRow(GetLevel()), cr);
+ if (combatRatingRatio == 0.0f)
+ return 1.0f; // By default use minimum coefficient (not must be called)
- float value = GetGameTableColumnForCombatRating(Rating, cr);
- if (!value)
- return 1.0f; // By default use minimum coefficient (not must be called)
+ float classRatingRatio = GetGameTableColumnForClass(sOctClassCombatRatingScalarGameTable.GetRow(cr), GetClass());
+ if (classRatingRatio == 0.0f)
+ return 1.0f; // By default use minimum coefficient (not must be called)
- return 1.0f / value;
+ return classRatingRatio / combatRatingRatio;
}
float Player::GetRatingBonusValue(CombatRating cr) const
@@ -5271,7 +5234,7 @@ void Player::UpdateRating(CombatRating cr)
switch (cr)
{
- case CR_AMPLIFY:
+ case CR_UNUSED_0:
case CR_DEFENSE_SKILL:
break;
case CR_DODGE:
@@ -5366,7 +5329,7 @@ void Player::UpdateRating(CombatRating cr)
UpdateMastery();
break;
case CR_PVP_POWER:
- case CR_CLEAVE:
+ case CR_UNUSED_27:
break;
case CR_VERSATILITY_DAMAGE_DONE:
UpdateVersatilityDamageDone();
@@ -7727,9 +7690,6 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply)
return;
uint32 itemLevel = item->GetItemLevel(this);
- //float combatRatingMultiplier = 1.0f;
- //if (GtCombatRatingsMultByILvl const* ratingMult = sCombatRatingsMultByILvlGameTable.GetRow(itemLevel))
- // combatRatingMultiplier = GetIlvlStatMultiplier(ratingMult, proto->GetInventoryType());
for (uint8 i = 0; i < MAX_ITEM_PROTO_STATS; ++i)
{
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index bef14e1f976..367a5c775bb 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -308,9 +308,9 @@ enum UnitState : uint32
TC_GAME_API extern float baseMoveSpeed[MAX_MOVE_TYPE];
TC_GAME_API extern float playerBaseMoveSpeed[MAX_MOVE_TYPE];
-enum CombatRating
+enum CombatRating : uint8
{
- CR_AMPLIFY = 0,
+ CR_UNUSED_0 = 0,
CR_DEFENSE_SKILL = 1,
CR_DODGE = 2,
CR_PARRY = 3,
@@ -337,7 +337,7 @@ enum CombatRating
CR_ARMOR_PENETRATION = 24,
CR_MASTERY = 25,
CR_PVP_POWER = 26,
- CR_CLEAVE = 27,
+ CR_UNUSED_27 = 27,
CR_VERSATILITY_DAMAGE_DONE = 28,
CR_VERSATILITY_HEALING_DONE = 29,
CR_VERSATILITY_DAMAGE_TAKEN = 30,