diff options
| author | Traesh <traesh@farahlon.com> | 2017-12-17 14:40:04 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-12-31 23:22:55 +0100 |
| commit | 89c91c271b94f34076be7256378610a2a45c9ed2 (patch) | |
| tree | 71a2d1751039924a66ebfdb33408695f0cd51d3b /src/server/game/Entities | |
| parent | 5dd686c080723eeeefdabb50b867f9f662d5deb9 (diff) | |
Core/Quests: Implemented player choices
* Implemented SPELL_EFFECT_LAUNCH_QUEST_CHOICE
* Script hook for player choices
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 32 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e9c53e161d5..1e084d87850 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -27121,6 +27121,38 @@ void Player::SendMovementSetCollisionHeight(float height) SendMessageToSet(updateCollisionHeight.Write(), false); } +void Player::SendPlayerChoice(ObjectGuid sender, uint32 choiceID) +{ + PlayerChoice const* playerChoice = sObjectMgr->GetPlayerChoice(choiceID); + if (!playerChoice) + return; + + PlayerChoice localizedPlayerChoice = *playerChoice; + + LocaleConstant locale = GetSession()->GetSessionDbLocaleIndex(); + if (locale != DEFAULT_LOCALE) + { + if (PlayerChoiceLocale const* playerChoiceLocale = sObjectMgr->GetPlayerChoiceLocale(localizedPlayerChoice.ChoiceId)) + sObjectMgr->GetLocaleString(playerChoiceLocale->Question, locale, localizedPlayerChoice.Question); + + for (auto& playerChoiceResponse : localizedPlayerChoice.Responses) + { + if (PlayerChoiceResponseLocale const* playerChoiceResponseLocale = sObjectMgr->GetPlayerChoiceResponseLocale(localizedPlayerChoice.ChoiceId, playerChoiceResponse.second.ResponseID)) + { + sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Header, locale, playerChoiceResponse.second.Header); + sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Answer, locale, playerChoiceResponse.second.Answer); + sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Description, locale, playerChoiceResponse.second.Description); + sObjectMgr->GetLocaleString(playerChoiceResponseLocale->Confirmation, locale, playerChoiceResponse.second.Confirmation); + } + } + } + + WorldPackets::Quest::DisplayPlayerChoice displayPlayerChoice; + displayPlayerChoice.Choice = &localizedPlayerChoice; + displayPlayerChoice.SenderGUID = sender; + SendDirectMessage(displayPlayerChoice.Write()); +} + float Player::GetCollisionHeight(bool mounted) const { if (mounted) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 4d111da3c0d..1391ad7e532 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2338,6 +2338,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> SceneMgr& GetSceneMgr() { return m_sceneMgr; } RestMgr& GetRestMgr() const { return *_restMgr; } + void SendPlayerChoice(ObjectGuid sender, uint32 choiceID); + protected: // Gamemaster whisper whitelist GuidList WhisperList; |
