aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Accounts/RBAC.h2
-rw-r--r--src/server/game/Entities/Player/Player.cpp19
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp68
-rw-r--r--src/server/game/World/World.cpp51
-rw-r--r--src/server/game/World/World.h7
-rw-r--r--src/server/scripts/Commands/cs_reset.cpp2
-rw-r--r--src/server/worldserver/worldserver.conf.dist58
8 files changed, 7 insertions, 202 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index 752fde07c7b..4c72acc8821 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -62,7 +62,7 @@ enum RBACPermissions
RBAC_PERM_CANNOT_EARN_REALM_FIRST_ACHIEVEMENTS = 9,
RBAC_PERM_USE_CHARACTER_TEMPLATES = 10,
RBAC_PERM_LOG_GM_TRADE = 11,
- RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_DEMON_HUNTER = 12,
+ // 12 previously used, do not reuse
RBAC_PERM_SKIP_CHECK_INSTANCE_REQUIRED_BOSSES = 13,
RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_TEAMMASK = 14,
RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_CLASSMASK = 15,
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 084917b2b8d..f5618905f0a 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -475,7 +475,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac
SetInventorySlotCount(INVENTORY_DEFAULT_SIZE);
// set starting level
- SetLevel(GetStartLevel(createInfo->Race, createInfo->Class, createInfo->TemplateSet));
+ SetLevel(GetStartLevel(createInfo->Class, createInfo->TemplateSet));
InitRunes();
@@ -3500,8 +3500,6 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
if (characterInfo->Class == CLASS_DEATH_KNIGHT)
charDeleteMinLvl = sWorld->getIntConfig(CONFIG_CHARDELETE_DEATH_KNIGHT_MIN_LEVEL);
- else if (characterInfo->Class == CLASS_DEMON_HUNTER)
- charDeleteMinLvl = sWorld->getIntConfig(CONFIG_CHARDELETE_DEMON_HUNTER_MIN_LEVEL);
else
charDeleteMinLvl = sWorld->getIntConfig(CONFIG_CHARDELETE_MIN_LEVEL);
@@ -22595,23 +22593,12 @@ void Player::ReportedAfkBy(Player* reporter)
reporter->SendDirectMessage(reportAfkResult.Write());
}
-uint8 Player::GetStartLevel(uint8 race, uint8 playerClass, Optional<int32> characterTemplateId) const
+uint8 Player::GetStartLevel(uint8 playerClass, Optional<int32> characterTemplateId) const
{
uint8 startLevel = sWorld->getIntConfig(CONFIG_START_PLAYER_LEVEL);
- if (sChrRacesStore.AssertEntry(race)->GetFlags().HasFlag(ChrRacesFlag::IsAlliedRace))
- startLevel = sWorld->getIntConfig(CONFIG_START_ALLIED_RACE_LEVEL);
if (playerClass == CLASS_DEATH_KNIGHT)
- {
- if (race == RACE_PANDAREN_ALLIANCE || race == RACE_PANDAREN_HORDE)
- startLevel = std::max<uint8>(sWorld->getIntConfig(CONFIG_START_ALLIED_RACE_LEVEL), startLevel);
- else
- startLevel = std::max<uint8>(sWorld->getIntConfig(CONFIG_START_DEATH_KNIGHT_PLAYER_LEVEL), startLevel);
- }
- else if (playerClass == CLASS_DEMON_HUNTER)
- startLevel = std::max<uint8>(sWorld->getIntConfig(CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL), startLevel);
- else if (playerClass == CLASS_EVOKER)
- startLevel = std::max<uint8>(sWorld->getIntConfig(CONFIG_START_EVOKER_PLAYER_LEVEL), startLevel);
+ startLevel = std::max<uint8>(sWorld->getIntConfig(CONFIG_START_DEATH_KNIGHT_PLAYER_LEVEL), startLevel);
if (characterTemplateId)
{
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index bfca4d4fb10..555b4a0a72c 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2448,7 +2448,7 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player>
WorldLocation m_homebind;
uint16 m_homebindAreaId;
- uint8 GetStartLevel(uint8 race, uint8 playerClass, Optional<int32> characterTemplateId) const;
+ uint8 GetStartLevel(uint8 playerClass, Optional<int32> characterTemplateId) const;
// currently visible objects at player client
GuidUnorderedSet m_clientGUIDs;
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 06fa07371b8..cbe38ab3fa0 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -751,16 +751,8 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
std::function<void(PreparedQueryResult)> finalizeCharacterCreation = [this, createInfo](PreparedQueryResult result)
{
bool haveSameRace = false;
- uint32 demonHunterReqLevel = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_DEMON_HUNTER);
- bool hasDemonHunterReqLevel = (demonHunterReqLevel == 0);
- uint32 evokerReqLevel = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_EVOKER);
- bool hasEvokerReqLevel = (evokerReqLevel == 0);
bool allowTwoSideAccounts = !sWorld->IsPvPRealm() || HasPermission(rbac::RBAC_PERM_TWO_SIDE_CHARACTER_CREATION);
uint32 skipCinematics = sWorld->getIntConfig(CONFIG_SKIP_CINEMATICS);
- bool checkClassLevelReqs = (createInfo->Class == CLASS_DEMON_HUNTER || createInfo->Class == CLASS_EVOKER)
- && !HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_DEMON_HUNTER);
- int32 evokerLimit = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM);
- bool hasEvokerLimit = evokerLimit != 0;
if (result)
{
@@ -770,25 +762,6 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
uint8 accRace = field[1].GetUInt8();
uint8 accClass = field[2].GetUInt8();
- if (checkClassLevelReqs)
- {
- if (!hasDemonHunterReqLevel)
- {
- uint8 accLevel = field[0].GetUInt8();
- if (accLevel >= demonHunterReqLevel)
- hasDemonHunterReqLevel = true;
- }
- if (!hasEvokerReqLevel)
- {
- uint8 accLevel = field[0].GetUInt8();
- if (accLevel >= evokerReqLevel)
- hasEvokerReqLevel = true;
- }
- }
-
- if (accClass == CLASS_EVOKER)
- --evokerLimit;
-
// need to check team only for first character
/// @todo what to if account already has characters of both races?
if (!allowTwoSideAccounts)
@@ -806,7 +779,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
// search same race for cinematic or same class if need
/// @todo check if cinematic already shown? (already logged in?; cinematic field)
- while ((skipCinematics == 1 && !haveSameRace) || createInfo->Class == CLASS_DEMON_HUNTER || createInfo->Class == CLASS_EVOKER)
+ while (skipCinematics == 1 && !haveSameRace)
{
if (!result->NextRow())
break;
@@ -817,46 +790,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
if (!haveSameRace)
haveSameRace = createInfo->Race == accRace;
-
- if (checkClassLevelReqs)
- {
- if (!hasDemonHunterReqLevel)
- {
- uint8 accLevel = field[0].GetUInt8();
- if (accLevel >= demonHunterReqLevel)
- hasDemonHunterReqLevel = true;
- }
- if (!hasEvokerReqLevel)
- {
- uint8 accLevel = field[0].GetUInt8();
- if (accLevel >= evokerReqLevel)
- hasEvokerReqLevel = true;
- }
- }
-
- if (accClass == CLASS_EVOKER)
- --evokerLimit;
- }
- }
-
- if (checkClassLevelReqs)
- {
- if (!hasDemonHunterReqLevel)
- {
- SendCharCreate(CHAR_CREATE_NEW_PLAYER);
- return;
}
- if (!hasEvokerReqLevel)
- {
- SendCharCreate(CHAR_CREATE_DRACTHYR_LEVEL_REQUIREMENT);
- return;
- }
- }
-
- if (createInfo->Class == CLASS_EVOKER && hasEvokerLimit && evokerLimit < 1)
- {
- SendCharCreate(CHAR_CREATE_DRACTHYR_DUPLICATE);
- return;
}
// Check name uniqueness in the same step as saving to database
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index a9dc0b85161..2ad23606ffb 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -964,15 +964,7 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_CHARACTERS_PER_ACCOUNT] = m_int_configs[CONFIG_CHARACTERS_PER_REALM];
}
- m_int_configs[CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM] = sConfigMgr->GetIntDefault("CharacterCreating.EvokersPerRealm", 1);
- if (int32(m_int_configs[CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM]) < 0 || m_int_configs[CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM] > 10)
- {
- TC_LOG_ERROR("server.loading", "CharacterCreating.EvokersPerRealm ({}) must be in range 0..10. Set to 1.", m_int_configs[CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM]);
- m_int_configs[CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM] = 1;
- }
- m_int_configs[CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_DEMON_HUNTER] = sConfigMgr->GetIntDefault("CharacterCreating.MinLevelForDemonHunter", 0);
- m_int_configs[CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_EVOKER] = sConfigMgr->GetIntDefault("CharacterCreating.MinLevelForEvoker", 50);
m_bool_configs[CONFIG_CHARACTER_CREATING_DISABLE_ALLIED_RACE_ACHIEVEMENT_REQUIREMENT] = sConfigMgr->GetBoolDefault("CharacterCreating.DisableAlliedRaceAchievementRequirement", false);
m_int_configs[CONFIG_SKIP_CINEMATICS] = sConfigMgr->GetIntDefault("SkipCinematics", 0);
@@ -1025,48 +1017,6 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_START_DEATH_KNIGHT_PLAYER_LEVEL] = m_int_configs[CONFIG_MAX_PLAYER_LEVEL];
}
- m_int_configs[CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL] = sConfigMgr->GetIntDefault("StartDemonHunterPlayerLevel", 8);
- if (m_int_configs[CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL] < 1)
- {
- TC_LOG_ERROR("server.loading", "StartDemonHunterPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to 1.",
- m_int_configs[CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL]);
- m_int_configs[CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL] = 1;
- }
- else if (m_int_configs[CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL] > m_int_configs[CONFIG_MAX_PLAYER_LEVEL])
- {
- TC_LOG_ERROR("server.loading", "StartDemonHunterPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to {}.",
- m_int_configs[CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL]);
- m_int_configs[CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL] = m_int_configs[CONFIG_MAX_PLAYER_LEVEL];
- }
-
- m_int_configs[CONFIG_START_EVOKER_PLAYER_LEVEL] = sConfigMgr->GetIntDefault("StartEvokerPlayerLevel", 58);
- if (m_int_configs[CONFIG_START_EVOKER_PLAYER_LEVEL] < 1)
- {
- TC_LOG_ERROR("server.loading", "StartEvokerPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to 1.",
- m_int_configs[CONFIG_START_EVOKER_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL]);
- m_int_configs[CONFIG_START_EVOKER_PLAYER_LEVEL] = 1;
- }
- else if (m_int_configs[CONFIG_START_EVOKER_PLAYER_LEVEL] > m_int_configs[CONFIG_MAX_PLAYER_LEVEL])
- {
- TC_LOG_ERROR("server.loading", "StartEvokerPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to {}.",
- m_int_configs[CONFIG_START_EVOKER_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL]);
- m_int_configs[CONFIG_START_EVOKER_PLAYER_LEVEL] = m_int_configs[CONFIG_MAX_PLAYER_LEVEL];
- }
-
- m_int_configs[CONFIG_START_ALLIED_RACE_LEVEL] = sConfigMgr->GetIntDefault("StartAlliedRacePlayerLevel", 10);
- if (m_int_configs[CONFIG_START_ALLIED_RACE_LEVEL] < 1)
- {
- TC_LOG_ERROR("server.loading", "StartDemonHunterPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to 1.",
- m_int_configs[CONFIG_START_ALLIED_RACE_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL]);
- m_int_configs[CONFIG_START_ALLIED_RACE_LEVEL] = 1;
- }
- else if (m_int_configs[CONFIG_START_ALLIED_RACE_LEVEL] > m_int_configs[CONFIG_MAX_PLAYER_LEVEL])
- {
- TC_LOG_ERROR("server.loading", "StartDemonHunterPlayerLevel ({}) must be in range 1..MaxPlayerLevel({}). Set to {}.",
- m_int_configs[CONFIG_START_ALLIED_RACE_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL], m_int_configs[CONFIG_MAX_PLAYER_LEVEL]);
- m_int_configs[CONFIG_START_ALLIED_RACE_LEVEL] = m_int_configs[CONFIG_MAX_PLAYER_LEVEL];
- }
-
m_int_configs[CONFIG_START_PLAYER_MONEY] = sConfigMgr->GetIntDefault("StartPlayerMoney", 0);
if (int32(m_int_configs[CONFIG_START_PLAYER_MONEY]) < 0)
{
@@ -1451,7 +1401,6 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_CHARDELETE_METHOD] = sConfigMgr->GetIntDefault("CharDelete.Method", 0);
m_int_configs[CONFIG_CHARDELETE_MIN_LEVEL] = sConfigMgr->GetIntDefault("CharDelete.MinLevel", 0);
m_int_configs[CONFIG_CHARDELETE_DEATH_KNIGHT_MIN_LEVEL] = sConfigMgr->GetIntDefault("CharDelete.DeathKnight.MinLevel", 0);
- m_int_configs[CONFIG_CHARDELETE_DEMON_HUNTER_MIN_LEVEL] = sConfigMgr->GetIntDefault("CharDelete.DemonHunter.MinLevel", 0);
m_int_configs[CONFIG_CHARDELETE_KEEP_DAYS] = sConfigMgr->GetIntDefault("CharDelete.KeepDays", 30);
// No aggro from gray mobs
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index d3ae3e7f44a..272f608fa3d 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -252,17 +252,11 @@ enum WorldIntConfigs
CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK,
CONFIG_CHARACTERS_PER_ACCOUNT,
CONFIG_CHARACTERS_PER_REALM,
- CONFIG_CHARACTER_CREATING_EVOKERS_PER_REALM,
- CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_DEMON_HUNTER,
- CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_EVOKER,
CONFIG_SKIP_CINEMATICS,
CONFIG_MAX_PLAYER_LEVEL,
CONFIG_MIN_DUALSPEC_LEVEL,
CONFIG_START_PLAYER_LEVEL,
CONFIG_START_DEATH_KNIGHT_PLAYER_LEVEL,
- CONFIG_START_DEMON_HUNTER_PLAYER_LEVEL,
- CONFIG_START_EVOKER_PLAYER_LEVEL,
- CONFIG_START_ALLIED_RACE_LEVEL,
CONFIG_START_PLAYER_MONEY,
CONFIG_CURRENCY_START_APEXIS_CRYSTALS,
CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS,
@@ -370,7 +364,6 @@ enum WorldIntConfigs
CONFIG_CHARDELETE_METHOD,
CONFIG_CHARDELETE_MIN_LEVEL,
CONFIG_CHARDELETE_DEATH_KNIGHT_MIN_LEVEL,
- CONFIG_CHARDELETE_DEMON_HUNTER_MIN_LEVEL,
CONFIG_AUTOBROADCAST_CENTER,
CONFIG_AUTOBROADCAST_INTERVAL,
CONFIG_MAX_RESULTS_LOOKUP_COMMANDS,
diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp
index f983d3b3b50..69056e160de 100644
--- a/src/server/scripts/Commands/cs_reset.cpp
+++ b/src/server/scripts/Commands/cs_reset.cpp
@@ -135,7 +135,7 @@ public:
uint8 oldLevel = target->GetLevel();
// set starting level
- uint8 startLevel = target->GetStartLevel(target->GetRace(), target->GetClass(), {});
+ uint8 startLevel = target->GetStartLevel(target->GetClass(), {});
target->_ApplyAllLevelScaleItemMods(false);
target->SetLevel(startLevel);
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 39bd12adfca..ef22d3756fb 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -851,32 +851,6 @@ CharactersPerAccount = 60
CharactersPerRealm = 60
#
-# CharacterCreating.EvokersPerRealm
-# Description: Limit number of evokers per account on this realm.
-# Range: 1-60
-# Default: 1
-
-CharacterCreating.EvokersPerRealm = 1
-
-#
-# CharacterCreating.MinLevelForDemonHunter
-# Description: Limit creating demon hunters only for account with another
-# character of specific level.
-# Default: 0 - (Disabled, No requirement)
-# 1 - (Enabled, Requires at least another level 1 character)
-
-CharacterCreating.MinLevelForDemonHunter = 0
-
-#
-# CharacterCreating.MinLevelForEvoker
-# Description: Limit creating evokers only for account with another
-# character of specific level.
-# Default: 50 - (Enabled, Requires at least another level 50 character)
-# 0 - (Disabled, No requirement)
-
-CharacterCreating.MinLevelForEvoker = 0
-
-#
# CharacterCreating.DisableAlliedRaceAchievementRequirement
# Description: Disable achievement requirements for allied race character creation
# Default: 0 (Keep requirements active)
@@ -927,30 +901,6 @@ StartPlayerLevel = 1
StartDeathKnightPlayerLevel = 55
#
-# StartDemonHunterPlayerLevel
-# Description: Staring level for demon hunters after creation.
-# Range: 1-MaxPlayerLevel
-# Default: 8
-
-StartDemonHunterPlayerLevel = 8
-
-#
-# StartEvokerPlayerLevel
-# Description: Staring level for evokers after creation.
-# Range: 1-MaxPlayerLevel
-# Default: 58
-
-StartEvokerPlayerLevel = 58
-
-#
-# StartAlliedRacePlayerLevel
-# Description: Staring level for allied races after creation.
-# Range: 1-MaxPlayerLevel
-# Default: 10
-
-StartAlliedRacePlayerLevel = 10
-
-#
# StartPlayerMoney
# Description: Amount of money (in Copper) that a character has after creation.
# Default: 0
@@ -3293,14 +3243,6 @@ CharDelete.MinLevel = 0
CharDelete.DeathKnight.MinLevel = 0
#
-# CharDelete.DemonHunter.MinLevel
-# Description: Required level to use the unlinking method if enabled for demon hunters.
-# Default: 0 - (Same method for every level)
-# 1+ - (Only characters with the specified level will use the unlinking method)
-
-CharDelete.DemonHunter.MinLevel = 0
-
-#
# CharDelete.KeepDays
# Description: Time (in days) before unlinked characters will be removed from the database.
# Default: 30 - (Enabled)