diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Accounts/RBAC.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 68 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 51 | ||||
-rw-r--r-- | src/server/game/World/World.h | 7 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_reset.cpp | 2 | ||||
-rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 58 |
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) |