Core/Quests: Fixes response selection to use correct referenced identifier

Port From (https://github.com/TrinityCore/TrinityCore/commit/8de5053a655a59cc1d38b1e1de59950ab32629cf)
This commit is contained in:
hondacrx
2022-05-23 17:18:01 -04:00
parent d780b46dca
commit eb95b0106d
3 changed files with 15 additions and 10 deletions
+10 -5
View File
@@ -11842,11 +11842,6 @@ namespace Game
public class PlayerChoice
{
public PlayerChoiceResponse GetResponse(int responseId)
{
return Responses.FirstOrDefault(playerChoiceResponse => playerChoiceResponse.ResponseId == responseId);
}
public int ChoiceId;
public int UiTextureKitId;
public uint SoundKitId;
@@ -11857,6 +11852,16 @@ namespace Game
public List<PlayerChoiceResponse> Responses = new();
public bool HideWarboardHeader;
public bool KeepOpenAfterChoice;
public PlayerChoiceResponse GetResponse(int responseId)
{
return Responses.Find(playerChoiceResponse => playerChoiceResponse.ResponseId == responseId);
}
public PlayerChoiceResponse GetResponseByIdentifier(int responseIdentifier)
{
return Responses.Find(playerChoiceResponse => playerChoiceResponse.ResponseIdentifier == responseIdentifier);
}
}
public class ClassAvailability
+3 -3
View File
@@ -787,14 +787,14 @@ namespace Game
if (playerChoice == null)
return;
PlayerChoiceResponse playerChoiceResponse = playerChoice.GetResponse(choiceResponse.ResponseID);
PlayerChoiceResponse playerChoiceResponse = playerChoice.GetResponseByIdentifier(choiceResponse.ResponseIdentifier);
if (playerChoiceResponse == null)
{
Log.outError(LogFilter.Player, $"Error in CMSG_CHOICE_RESPONSE: {GetPlayerInfo()} tried to select invalid player choice response {choiceResponse.ResponseID} (possible packet-hacking detected)");
Log.outError(LogFilter.Player, $"Error in CMSG_CHOICE_RESPONSE: {GetPlayerInfo()} tried to select invalid player choice response {choiceResponse.ResponseIdentifier} (possible packet-hacking detected)");
return;
}
Global.ScriptMgr.OnPlayerChoiceResponse(GetPlayer(), (uint)choiceResponse.ChoiceID, (uint)choiceResponse.ResponseID);
Global.ScriptMgr.OnPlayerChoiceResponse(GetPlayer(), (uint)choiceResponse.ChoiceID, (uint)choiceResponse.ResponseIdentifier);
if (playerChoiceResponse.Reward != null)
{
@@ -889,12 +889,12 @@ namespace Game.Networking.Packets
public override void Read()
{
ChoiceID = _worldPacket.ReadInt32();
ResponseID = _worldPacket.ReadInt32();
ResponseIdentifier = _worldPacket.ReadInt32();
IsReroll = _worldPacket.HasBit();
}
public int ChoiceID;
public int ResponseID;
public int ResponseIdentifier;
public bool IsReroll;
}