diff options
| author | CraftedRO <24683355+CraftedRO@users.noreply.github.com> | 2024-06-27 19:54:31 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-27 18:54:31 +0200 |
| commit | c5a9ab65af58c8642f914c31f327f09ca3a0ce0c (patch) | |
| tree | 14d02252a2e0e9306cc9caa16a022c752d11cc5c /src/server/game | |
| parent | 6c15d7f7502d50520b502067c6401a4bf11075a2 (diff) | |
Core/Players: Add level restrictions for faction changes (#30057)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/Language.h | 4 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 29b39902a5e..706384c9b55 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1670,6 +1670,7 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact uint32 atLoginFlags = fields[0].GetUInt16(); std::string knownTitlesStr = fields[1].GetString(); uint32 groupId = !fields[2].IsNull() ? fields[2].GetUInt32() : 0; + uint32 mapId = fields[3].GetUInt16(); uint32 usedLoginFlag = (factionChangeInfo->FactionChange ? AT_LOGIN_CHANGE_FACTION : AT_LOGIN_CHANGE_RACE); if (!(atLoginFlags & usedLoginFlag)) @@ -1678,6 +1679,18 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact return; } + if (level < 10) + { + SendCharFactionChange(CHAR_CREATE_ERROR, factionChangeInfo.get()); + return; + } + + if (playerClass == CLASS_DEATH_KNIGHT && (level < 60 || mapId == 609)) + { + SendCharFactionChange(CHAR_CREATE_RESTRICTED_RACECLASS, factionChangeInfo.get()); + return; + } + uint32 newTeam = Player::TeamForRace(factionChangeInfo->Race); if (factionChangeInfo->FactionChange == (Player::TeamForRace(oldRace) == newTeam)) { diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 073c0294f71..c0200ef61e1 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -449,7 +449,9 @@ enum TrinityStrings LANG_COMMAND_LEARN_ALL_PETTALENT_HELP = 394, LANG_COMMAND_BG_START_HELP = 395, LANG_COMMAND_BG_STOP_HELP = 396, - // Room for more level 2 397-399 not used + LANG_CHANGEFACTION_NOT_ELIGIBLE_10 = 397, + LANG_CHANGEFACTION_NOT_ELIGIBLE_60 = 398, + // Room for more level 2 399 not used // level 3 chat LANG_SCRIPTS_RELOADED = 400, |
