From 56d355935b99de7039c3c21021d11b9713305b6a Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Sat, 10 Sep 2016 14:21:19 -0400 Subject: [PATCH 1/2] Fix task experience by level % to take into account hell level rule. --- zone/exp.cpp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/zone/exp.cpp b/zone/exp.cpp index 93c689b7c..63989a4e9 100644 --- a/zone/exp.cpp +++ b/zone/exp.cpp @@ -705,10 +705,33 @@ uint32 Client::GetEXPForLevel(uint16 check_level) return finalxp; } -void Client::AddLevelBasedExp(uint8 exp_percentage, uint8 max_level) { - if (exp_percentage > 100) { exp_percentage = 100; } - if (!max_level || GetLevel() < max_level) { max_level = GetLevel(); } - uint32 newexp = GetEXP() + ((GetEXPForLevel(max_level + 1) - GetEXPForLevel(max_level)) * exp_percentage / 100); +void Client::AddLevelBasedExp(uint8 exp_percentage, uint8 max_level) +{ + uint32 award; + uint32 xp_for_level; + + if (exp_percentage > 100) + { + exp_percentage = 100; + } + + if (!max_level || GetLevel() < max_level) + { + max_level = GetLevel(); + } + + xp_for_level = GetEXPForLevel(max_level + 1) - GetEXPForLevel(max_level); + award = xp_for_level * exp_percentage / 100; + + if(RuleB(Zone, LevelBasedEXPMods)) + { + if(zone->level_exp_mod[GetLevel()].ExpMod) + { + award *= zone->level_exp_mod[GetLevel()].ExpMod; + } + } + + uint32 newexp = GetEXP() + award; SetEXP(newexp, GetAAXP()); } From 0503e85fd3c55e36d0f591e6fd9941740535a905 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Sat, 10 Sep 2016 14:26:47 -0400 Subject: [PATCH 2/2] Updated changelog --- changelog.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog.txt b/changelog.txt index b2d7c7b05..1cfdce055 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,9 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50) ------------------------------------------------------- +== 09/10/2016 == +noudess: Task system experience based on a % of a level did not take into +account the hell levels rule. Now it does. + == 09/03/2016 == Uleat: Changed 'Bind Wound' behavior to match the best references that I could find for post-2004 era. Note: If you wish to retain the old method, source in the optional '2016_09_03_old_bind_wound_rule.sql' script file.