diff options
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 35 |
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; |