aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/CharacterHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 1472ce1fea0..d499ba13c11 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -403,10 +403,7 @@ void WorldSession::HandleCharEnum(CharacterDatabaseQueryHolder const& holder)
do
{
Field* fields = customizationsResult->Fetch();
- std::vector<UF::ChrCustomizationChoice>& customizationsForCharacter = customizations[fields[0].GetUInt64()];
-
- customizationsForCharacter.emplace_back();
- UF::ChrCustomizationChoice& choice = customizationsForCharacter.back();
+ UF::ChrCustomizationChoice& choice = customizations[fields[0].GetUInt64()].emplace_back();
choice.ChrCustomizationOptionID = fields[1].GetUInt32();
choice.ChrCustomizationChoiceID = fields[2].GetUInt32();
@@ -457,8 +454,6 @@ void WorldSession::HandleCharEnum(CharacterDatabaseQueryHolder const& holder)
while (result->NextRow() && charEnum.Characters.size() < MAX_CHARACTERS_PER_REALM);
}
- charEnum.IsAlliedRacesCreationAllowed = CanAccessAlliedRaces();
-
for (std::pair<uint8 const, RaceUnlockRequirement> const& requirement : sObjectMgr->GetRaceUnlockRequirements())
{
WorldPackets::Character::EnumCharactersResult::RaceUnlock raceUnlock;
@@ -1166,9 +1161,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder const& holder)
// Send MOTD
{
- WorldPackets::System::MOTD motd;
- motd.Text = &sWorld->GetMotd();
- SendPacket(motd.Write());
+ for (std::string const& motdLine : sWorld->GetMotd())
+ sWorld->SendServerMessage(SERVER_MSG_STRING, motdLine, pCurrChar);
}
SendSetTimeZoneInformation();
@@ -2797,6 +2791,29 @@ void WorldSession::HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCha
}));
}
+void WorldSession::HandleSavePersonalEmblem(WorldPackets::Character::SavePersonalEmblem const& savePersonalEmblem)
+{
+ if (!_player->GetNPCIfCanInteractWith(savePersonalEmblem.Vendor, UNIT_NPC_FLAG_NONE, UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER))
+ {
+ SendPacket(WorldPackets::Character::PlayerSavePersonalEmblem(ERR_GUILDEMBLEM_INVALIDVENDOR).Write());
+ return;
+ }
+
+ if (!EmblemInfo::ValidateEmblemColors(savePersonalEmblem.PersonalTabard.EmblemStyle, savePersonalEmblem.PersonalTabard.EmblemColor,
+ savePersonalEmblem.PersonalTabard.BorderStyle, savePersonalEmblem.PersonalTabard.BorderColor,
+ savePersonalEmblem.PersonalTabard.BackgroundColor))
+ {
+ SendPacket(WorldPackets::Character::PlayerSavePersonalEmblem(ERR_GUILDEMBLEM_INVALID_TABARD_COLORS).Write());
+ return;
+ }
+
+ _player->SetPersonalTabard(savePersonalEmblem.PersonalTabard.EmblemStyle, savePersonalEmblem.PersonalTabard.EmblemColor,
+ savePersonalEmblem.PersonalTabard.BorderStyle, savePersonalEmblem.PersonalTabard.BorderColor,
+ savePersonalEmblem.PersonalTabard.BackgroundColor);
+
+ SendPacket(WorldPackets::Character::PlayerSavePersonalEmblem(ERR_GUILDEMBLEM_SUCCESS).Write());
+}
+
void WorldSession::SendCharCreate(ResponseCodes result, ObjectGuid const& guid /*= ObjectGuid::Empty*/)
{
WorldPackets::Character::CreateChar response;