diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-04-25 22:03:34 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-05-20 23:49:53 +0200 |
| commit | 70102f32fe38ae7d49acbd5ddee0239602d3cb94 (patch) | |
| tree | 22dcecc33942c7f60e2edb5402f6f7feaf559ece /src/server/game/Miscellaneous | |
| parent | 885d9b53c38662e00e3b4977b82e9cf36d197f94 (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.h | 30 |
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; |
