Resolved a possible scaling issue with the way CharMaxLevel works with quest globals and data buckets.

This commit is contained in:
Kinglykrab
2018-12-13 21:44:52 -05:00
parent 838ab5b77e
commit 3a757a7a85
6 changed files with 48 additions and 26 deletions
+9 -23
View File
@@ -684,26 +684,12 @@ void Client::SetEXP(uint32 set_exp, uint32 set_aaxp, bool isrezzexp) {
}
}
if(RuleB(Character, PerCharacterQglobalMaxLevel)){
uint32 MaxLevel = GetCharMaxLevelFromQGlobal();
if(MaxLevel){
if(GetLevel() >= MaxLevel){
uint32 expneeded = GetEXPForLevel(MaxLevel);
if(set_exp > expneeded) {
set_exp = expneeded;
}
}
}
}
if(RuleB(Character, PerCharacterBucketMaxLevel)){
uint32 MaxLevel = GetCharMaxLevelFromBucket();
if(MaxLevel){
if(GetLevel() >= MaxLevel){
uint32 expneeded = GetEXPForLevel(MaxLevel);
if(set_exp > expneeded) {
set_exp = expneeded;
}
if (GetClientMaxLevel() > 0) {
int client_max_level = GetClientMaxLevel();
if (GetLevel() >= client_max_level) {
uint32 expneeded = GetEXPForLevel(client_max_level);
if(set_exp > expneeded) {
set_exp = expneeded;
}
}
}
@@ -1142,7 +1128,7 @@ uint32 Client::GetCharMaxLevelFromQGlobal() {
++gcount;
}
return false;
return 0;
}
uint32 Client::GetCharMaxLevelFromBucket() {
@@ -1151,14 +1137,14 @@ uint32 Client::GetCharMaxLevelFromBucket() {
auto results = database.QueryDatabase(query);
if (!results.Success()) {
Log(Logs::General, Logs::Error, "Data bucket for CharMaxLevel for char ID %i failed.", char_id);
return false;
return 0;
}
if (results.RowCount() > 0) {
auto row = results.begin();
return atoi(row[0]);
}
return false;
return 0;
}
uint32 Client::GetRequiredAAExperience() {