Implement a general way to store selection data for gossip and fix trainer exploit
This commit is contained in:
@@ -182,8 +182,6 @@ namespace Game.Misc
|
||||
|
||||
public void SetMenuId(uint menu_id) { _menuId = menu_id; }
|
||||
public uint GetMenuId() { return _menuId; }
|
||||
public void SetSenderGUID(ObjectGuid guid) { _senderGUID = guid; }
|
||||
public ObjectGuid GetSenderGUID() { return _senderGUID; }
|
||||
public void SetLocale(LocaleConstant locale) { _locale = locale; }
|
||||
LocaleConstant GetLocale() { return _locale; }
|
||||
|
||||
@@ -215,10 +213,21 @@ namespace Game.Misc
|
||||
Dictionary<uint, GossipMenuItem> _menuItems = new Dictionary<uint, GossipMenuItem>();
|
||||
Dictionary<uint, GossipMenuItemData> _menuItemData = new Dictionary<uint, GossipMenuItemData>();
|
||||
uint _menuId;
|
||||
ObjectGuid _senderGUID;
|
||||
LocaleConstant _locale;
|
||||
}
|
||||
|
||||
public class InteractionData
|
||||
{
|
||||
public void Reset()
|
||||
{
|
||||
SourceGuid.Clear();
|
||||
TrainerId = 0;
|
||||
}
|
||||
|
||||
public ObjectGuid SourceGuid;
|
||||
public uint TrainerId;
|
||||
}
|
||||
|
||||
public class PlayerMenu
|
||||
{
|
||||
public PlayerMenu(WorldSession session)
|
||||
@@ -236,7 +245,8 @@ namespace Game.Misc
|
||||
|
||||
public void SendGossipMenu(uint titleTextId, ObjectGuid objectGUID)
|
||||
{
|
||||
_gossipMenu.SetSenderGUID(objectGUID);
|
||||
_interactionData.Reset();
|
||||
_interactionData.SourceGuid = objectGUID;
|
||||
|
||||
GossipMessagePkt packet = new GossipMessagePkt();
|
||||
packet.GossipGUID = objectGUID;
|
||||
@@ -294,7 +304,7 @@ namespace Game.Misc
|
||||
|
||||
public void SendCloseGossip()
|
||||
{
|
||||
_gossipMenu.SetSenderGUID(ObjectGuid.Empty);
|
||||
_interactionData.Reset();
|
||||
|
||||
_session.SendPacket(new GossipComplete());
|
||||
}
|
||||
@@ -726,6 +736,7 @@ namespace Game.Misc
|
||||
|
||||
public GossipMenu GetGossipMenu() { return _gossipMenu; }
|
||||
public QuestMenu GetQuestMenu() { return _questMenu; }
|
||||
public InteractionData GetInteractionData() { return _interactionData; }
|
||||
|
||||
bool IsEmpty() { return _gossipMenu.IsEmpty() && _questMenu.IsEmpty(); }
|
||||
|
||||
@@ -736,6 +747,7 @@ namespace Game.Misc
|
||||
GossipMenu _gossipMenu = new GossipMenu();
|
||||
QuestMenu _questMenu = new QuestMenu();
|
||||
WorldSession _session;
|
||||
InteractionData _interactionData = new InteractionData();
|
||||
}
|
||||
|
||||
public class QuestMenu
|
||||
|
||||
@@ -140,8 +140,6 @@ namespace Game.Entities
|
||||
|
||||
RestMgr _restMgr;
|
||||
|
||||
uint _currentTrainerId;
|
||||
|
||||
//Combat
|
||||
int[] baseRatingValue = new int[(int)CombatRating.Max];
|
||||
public float[][] m_auraBaseMod = new float[(int)BaseModGroup.End][];
|
||||
|
||||
@@ -1034,9 +1034,6 @@ namespace Game.Entities
|
||||
|
||||
public RestMgr GetRestMgr() { return _restMgr; }
|
||||
|
||||
public uint GetCurrentTrainerId() { return _currentTrainerId; }
|
||||
public void SetCurrentTrainerId(uint trainerId) { _currentTrainerId = trainerId; }
|
||||
|
||||
public bool IsAdvancedCombatLoggingEnabled() { return _advancedCombatLoggingEnabled; }
|
||||
public void SetAdvancedCombatLogging(bool enabled) { _advancedCombatLoggingEnabled = enabled; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user