[Bug Fix] Fix for Discipline Loading from Database causing issues with slot_ids (#3008)

* [Bug Fix] Fix for Discipline Loading from Database causing issues with slot_ids

* cleanup per comments
This commit is contained in:
Aeadoin 2023-02-28 16:55:22 -05:00 committed by GitHub
parent 93c79817cd
commit 2f0dbc5d15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -13,6 +13,7 @@
#include "zonedb.h"
#include "aura.h"
#include "../common/repositories/criteria/content_filter_criteria.h"
#include "../common/repositories/character_disciplines_repository.h"
#include "../common/repositories/npc_types_repository.h"
#include <ctime>
@ -814,22 +815,27 @@ bool ZoneDatabase::LoadCharacterLeadershipAA(uint32 character_id, PlayerProfile_
}
bool ZoneDatabase::LoadCharacterDisciplines(uint32 character_id, PlayerProfile_Struct* pp){
std::string query = StringFormat(
"SELECT "
"disc_id "
"FROM "
"`character_disciplines`"
"WHERE `id` = %u ORDER BY `slot_id`", character_id);
auto results = database.QueryDatabase(query);
int i = 0;
auto character_disciplines = CharacterDisciplinesRepository::GetWhere(
database, fmt::format(
"`id` = {} ORDER BY `slot_id`",
character_id
)
);
if (character_disciplines.empty()) {
return false;
}
int i = 0;
/* Initialize Disciplines */
memset(pp->disciplines.values, 0, (sizeof(pp->disciplines.values[0]) * MAX_PP_DISCIPLINES));
for (auto& row = results.begin(); row != results.end(); ++row) {
if (i < MAX_PP_DISCIPLINES)
pp->disciplines.values[i] = atoi(row[0]);
++i;
}
for (auto& row : character_disciplines) {
if (i < MAX_PP_DISCIPLINES && IsValidSpell(row.disc_id)) {
pp->disciplines.values[row.slot_id] = row.disc_id;
}
++i;
}
return true;
}