aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRazmataz <git@mataz.dev>2024-02-25 17:49:20 +0000
committerGitHub <noreply@github.com>2024-02-25 18:49:20 +0100
commit31236de396811afae2c67810b70dc671e69bc8dc (patch)
tree4bc751103fd90d064781c9c7e6efd2991bd32c89
parent6c15fb00e5b7cf39cd6dc97c302418710bc21212 (diff)
Core/Players: Support race and faction changes for new races (#29755)
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 149b0ad914a..804f3f4109f 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -2274,7 +2274,8 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
trans->Append(stmt);
// Race specific languages
- if (factionChangeInfo->RaceID != RACE_ORC && factionChangeInfo->RaceID != RACE_HUMAN && factionChangeInfo->RaceID != RACE_MAGHAR_ORC)
+ std::array<uint8, 4> const racesWithoutSpecificLanguages = { RACE_ORC, RACE_HUMAN, RACE_MAGHAR_ORC, RACE_KUL_TIRAN };
+ if (std::find(racesWithoutSpecificLanguages.begin(), racesWithoutSpecificLanguages.end(), factionChangeInfo->RaceID) == racesWithoutSpecificLanguages.end())
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE);
stmt->setUInt64(0, lowGuid);
@@ -2290,6 +2291,7 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
stmt->setUInt16(1, 759);
break;
case RACE_GNOME:
+ case RACE_MECHAGNOME:
stmt->setUInt16(1, 313);
break;
case RACE_NIGHTELF:
@@ -2306,6 +2308,7 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
stmt->setUInt16(1, 115);
break;
case RACE_TROLL:
+ case RACE_ZANDALARI_TROLL:
stmt->setUInt16(1, 315);
break;
case RACE_BLOODELF:
@@ -2318,6 +2321,17 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
case RACE_NIGHTBORNE:
stmt->setUInt16(1, 2464);
break;
+ case RACE_VULPERA:
+ stmt->setUInt16(1, 2776);
+ break;
+ case LANG_PANDAREN_ALLIANCE:
+ case LANG_PANDAREN_HORDE:
+ stmt->setUInt16(1, 905);
+ break;
+ case RACE_DRACTHYR_ALLIANCE:
+ case RACE_DRACTHYR_HORDE:
+ stmt->setUInt16(1, 138);
+ break;
default:
TC_LOG_ERROR("entities.player", "Could not find language data for race ({}).", factionChangeInfo->RaceID);
SendCharFactionChange(CHAR_CREATE_ERROR, factionChangeInfo.get());