aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorTraesh <traesh@farahlon.com>2017-12-17 14:40:04 +0100
committerShauren <shauren.trinity@gmail.com>2017-12-31 23:22:55 +0100
commit89c91c271b94f34076be7256378610a2a45c9ed2 (patch)
tree71a2d1751039924a66ebfdb33408695f0cd51d3b /src/server/game/Entities
parent5dd686c080723eeeefdabb50b867f9f662d5deb9 (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.cpp32
-rw-r--r--src/server/game/Entities/Player/Player.h2
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;