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 class PlayerChoice
{ {
public PlayerChoiceResponse GetResponse(int responseId)
{
return Responses.FirstOrDefault(playerChoiceResponse => playerChoiceResponse.ResponseId == responseId);
}
public int ChoiceId; public int ChoiceId;
public int UiTextureKitId; public int UiTextureKitId;
public uint SoundKitId; public uint SoundKitId;
@@ -11857,6 +11852,16 @@ namespace Game
public List<PlayerChoiceResponse> Responses = new(); public List<PlayerChoiceResponse> Responses = new();
public bool HideWarboardHeader; public bool HideWarboardHeader;
public bool KeepOpenAfterChoice; 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 public class ClassAvailability
+3 -3
View File
@@ -787,14 +787,14 @@ namespace Game
if (playerChoice == null) if (playerChoice == null)
return; return;
PlayerChoiceResponse playerChoiceResponse = playerChoice.GetResponse(choiceResponse.ResponseID); PlayerChoiceResponse playerChoiceResponse = playerChoice.GetResponseByIdentifier(choiceResponse.ResponseIdentifier);
if (playerChoiceResponse == null) 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; 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) if (playerChoiceResponse.Reward != null)
{ {
@@ -889,12 +889,12 @@ namespace Game.Networking.Packets
public override void Read() public override void Read()
{ {
ChoiceID = _worldPacket.ReadInt32(); ChoiceID = _worldPacket.ReadInt32();
ResponseID = _worldPacket.ReadInt32(); ResponseIdentifier = _worldPacket.ReadInt32();
IsReroll = _worldPacket.HasBit(); IsReroll = _worldPacket.HasBit();
} }
public int ChoiceID; public int ChoiceID;
public int ResponseID; public int ResponseIdentifier;
public bool IsReroll; public bool IsReroll;
} }