aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Globals/ObjectMgr.h7
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp6
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h2
4 files changed, 12 insertions, 5 deletions
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 5aa7bed0eda..07ee9996ecb 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -946,6 +946,13 @@ struct PlayerChoice
[responseId](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseId == responseId; });
return itr != Responses.end() ? &(*itr) : nullptr;
}
+
+ PlayerChoiceResponse const* GetResponseByIdentifier(int32 responseIdentifier) const
+ {
+ auto itr = std::find_if(Responses.begin(), Responses.end(),
+ [responseIdentifier](PlayerChoiceResponse const& playerChoiceResponse) { return playerChoiceResponse.ResponseIdentifier == responseIdentifier; });
+ return itr != Responses.end() ? &(*itr) : nullptr;
+ }
};
enum SkillRangeType
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index c48837bee41..5c108c6e42a 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -818,15 +818,15 @@ void WorldSession::HandlePlayerChoiceResponse(WorldPackets::Quest::ChoiceRespons
if (!playerChoice)
return;
- PlayerChoiceResponse const* playerChoiceResponse = playerChoice->GetResponse(choiceResponse.ResponseID);
+ PlayerChoiceResponse const* playerChoiceResponse = playerChoice->GetResponseByIdentifier(choiceResponse.ResponseIdentifier);
if (!playerChoiceResponse)
{
TC_LOG_ERROR("entities.player.cheat", "Error in CMSG_CHOICE_RESPONSE: %s tried to select invalid player choice response %d (possible packet-hacking detected)",
- GetPlayerInfo().c_str(), choiceResponse.ResponseID);
+ GetPlayerInfo().c_str(), choiceResponse.ResponseIdentifier);
return;
}
- sScriptMgr->OnPlayerChoiceResponse(GetPlayer(), choiceResponse.ChoiceID, choiceResponse.ResponseID);
+ sScriptMgr->OnPlayerChoiceResponse(GetPlayer(), choiceResponse.ChoiceID, choiceResponse.ResponseIdentifier);
if (playerChoiceResponse->Reward)
{
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 955c792faff..76d803dbf17 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -769,7 +769,7 @@ WorldPacket const* DisplayPlayerChoice::Write()
void ChoiceResponse::Read()
{
_worldPacket >> ChoiceID;
- _worldPacket >> ResponseID;
+ _worldPacket >> ResponseIdentifier;
IsReroll = _worldPacket.ReadBit();
}
}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 69580d036b8..630cb3880cc 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -737,7 +737,7 @@ namespace WorldPackets
void Read() override;
int32 ChoiceID = 0;
- int32 ResponseID = 0;
+ int32 ResponseIdentifier = 0;
bool IsReroll = false;
};
}