aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Miscellaneous
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-04-25 22:03:34 +0200
committerShauren <shauren.trinity@gmail.com>2016-05-20 23:49:53 +0200
commit70102f32fe38ae7d49acbd5ddee0239602d3cb94 (patch)
tree22dcecc33942c7f60e2edb5402f6f7feaf559ece /src/server/game/Miscellaneous
parent885d9b53c38662e00e3b4977b82e9cf36d197f94 (diff)
Core/DataStores: Updated opcodes and db2 to 7.0.3.21414
Diffstat (limited to 'src/server/game/Miscellaneous')
-rw-r--r--src/server/game/Miscellaneous/Formulas.h30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h
index 94aa48168da..41d0e4b8a15 100644
--- a/src/server/game/Miscellaneous/Formulas.h
+++ b/src/server/game/Miscellaneous/Formulas.h
@@ -23,9 +23,28 @@
#include "SharedDefines.h"
#include "ScriptMgr.h"
#include "Player.h"
+#include "GameTables.h"
namespace Trinity
{
+ inline uint32 GetExpansionForLevel(uint32 level)
+ {
+ if (level < 60)
+ return EXPANSION_CLASSIC;
+ else if (level < 70)
+ return EXPANSION_THE_BURNING_CRUSADE;
+ else if (level < 80)
+ return EXPANSION_WRATH_OF_THE_LICH_KING;
+ else if (level < 85)
+ return EXPANSION_CATACLYSM;
+ else if (level < 90)
+ return EXPANSION_MISTS_OF_PANDARIA;
+ else if (level < 100)
+ return EXPANSION_WARLORDS_OF_DRAENOR;
+ else
+ return CURRENT_EXPANSION;
+ }
+
namespace Honor
{
inline float hk_honor_at_level_f(uint8 level, float multiplier = 1.0f)
@@ -120,11 +139,8 @@ namespace Trinity
{
uint32 baseGain;
- GtOCTLevelExperienceEntry const* BaseExpPlayer = sGtOCTLevelExperienceStore.EvaluateTable(pl_level - 1, 1);
- GtOCTLevelExperienceEntry const* BaseExpMob = sGtOCTLevelExperienceStore.EvaluateTable(mob_level - 1, 1);
-
- GtOCTLevelExperienceEntry const* CoefPlayer = sGtOCTLevelExperienceStore.EvaluateTable(pl_level - 1, 4);
- GtOCTLevelExperienceEntry const* CoefMob = sGtOCTLevelExperienceStore.EvaluateTable(mob_level - 1, 4);
+ GtXpEntry const* xpPlayer = sXpGameTable.GetRow(pl_level);
+ GtXpEntry const* xpMob = sXpGameTable.GetRow(mob_level);
if (mob_level >= pl_level)
{
@@ -132,7 +148,7 @@ namespace Trinity
if (nLevelDiff > 4)
nLevelDiff = 4;
- baseGain = uint32(round(BaseExpPlayer->Data * (1 + 0.05f * nLevelDiff)));
+ baseGain = uint32(round(xpPlayer->PerKill * (1 + 0.05f * nLevelDiff)));
}
else
{
@@ -140,7 +156,7 @@ namespace Trinity
if (mob_level > gray_level)
{
uint8 ZD = GetZeroDifference(pl_level);
- baseGain = uint32(round(BaseExpMob->Data * ((1 - ((pl_level - mob_level) / float(ZD))) * (CoefMob->Data / CoefPlayer->Data))));
+ baseGain = uint32(round(xpMob->PerKill * ((1 - ((pl_level - mob_level) / float(ZD))) * (xpMob->Divisor / xpPlayer->Divisor))));
}
else
baseGain = 0;