Core/Quests: Fixes response selection to use correct referenced identifier
Port From (https://github.com/TrinityCore/TrinityCore/commit/8de5053a655a59cc1d38b1e1de59950ab32629cf)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user