mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 07:48:02 +00:00
feat(Core/ObjectMgr): Add handling specific to heroic player level stats (DKs). (#14378)
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
DELETE FROM `player_class_stats` WHERE `class` = 6 AND `level` < 55;
|
||||||
|
DELETE FROM `player_classlevelstats` WHERE `class` = 6 AND `level` < 55;
|
||||||
@@ -3992,7 +3992,7 @@ void ObjectMgr::LoadPlayerInfo()
|
|||||||
PlayerClassInfo* pClassInfo = _playerClassInfo[class_];
|
PlayerClassInfo* pClassInfo = _playerClassInfo[class_];
|
||||||
|
|
||||||
// fatal error if no level 1 data
|
// fatal error if no level 1 data
|
||||||
if (!pClassInfo->levelInfo || pClassInfo->levelInfo[0].basehealth == 0)
|
if (!pClassInfo->levelInfo || (pClassInfo->levelInfo[sWorld->getIntConfig(CONFIG_START_PLAYER_LEVEL) - 1].basehealth == 0 && class_ != CLASS_DEATH_KNIGHT) || (pClassInfo->levelInfo[sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL) - 1].basehealth == 0 && class_ == CLASS_DEATH_KNIGHT))
|
||||||
{
|
{
|
||||||
LOG_ERROR("sql.sql", "Class {} Level 1 does not have health/mana data!", class_);
|
LOG_ERROR("sql.sql", "Class {} Level 1 does not have health/mana data!", class_);
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -4001,7 +4001,7 @@ void ObjectMgr::LoadPlayerInfo()
|
|||||||
// fill level gaps
|
// fill level gaps
|
||||||
for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
||||||
{
|
{
|
||||||
if (pClassInfo->levelInfo[level].basehealth == 0)
|
if ((pClassInfo->levelInfo[level].basehealth == 0 && class_ != CLASS_DEATH_KNIGHT) || (level >= sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL) && pClassInfo->levelInfo[level].basehealth == 0 && class_ == CLASS_DEATH_KNIGHT))
|
||||||
{
|
{
|
||||||
LOG_ERROR("sql.sql", "Class {} Level {} does not have health/mana data. Using stats data of level {}.", class_, level + 1, level);
|
LOG_ERROR("sql.sql", "Class {} Level {} does not have health/mana data. Using stats data of level {}.", class_, level + 1, level);
|
||||||
pClassInfo->levelInfo[level] = pClassInfo->levelInfo[level - 1];
|
pClassInfo->levelInfo[level] = pClassInfo->levelInfo[level - 1];
|
||||||
@@ -4126,16 +4126,16 @@ void ObjectMgr::LoadPlayerInfo()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// fatal error if no level 1 data
|
// fatal error if no level 1 data
|
||||||
if (!info->levelInfo || info->levelInfo[0].stats[0] == 0)
|
if (!info->levelInfo || (info->levelInfo[sWorld->getIntConfig(CONFIG_START_PLAYER_LEVEL) - 1].stats[0] == 0 && class_ != CLASS_DEATH_KNIGHT) || (info->levelInfo[sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL) - 1].stats[0] == 0 && class_ == CLASS_DEATH_KNIGHT))
|
||||||
{
|
{
|
||||||
LOG_ERROR("sql.sql", "Race {} Class {} Level 1 does not have stats data!", race, class_);
|
LOG_ERROR("sql.sql", "Race {} Class {} initial level does not have stats data!", race, class_);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fill level gaps
|
// fill level gaps
|
||||||
for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
||||||
{
|
{
|
||||||
if (info->levelInfo[level].stats[0] == 0)
|
if ((info->levelInfo[level].stats[0] == 0 && class_ != CLASS_DEATH_KNIGHT) || (level >= sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL) && info->levelInfo[level].stats[0] == 0 && class_ == CLASS_DEATH_KNIGHT))
|
||||||
{
|
{
|
||||||
LOG_ERROR("sql.sql", "Race {} Class {} Level {} does not have stats data. Using stats data of level {}.", race, class_, level + 1, level);
|
LOG_ERROR("sql.sql", "Race {} Class {} Level {} does not have stats data. Using stats data of level {}.", race, class_, level + 1, level);
|
||||||
info->levelInfo[level] = info->levelInfo[level - 1];
|
info->levelInfo[level] = info->levelInfo[level - 1];
|
||||||
|
|||||||
Reference in New Issue
Block a user