From 1cfac833114e4516a6d7d22be5d2cb82cc67f132 Mon Sep 17 00:00:00 2001 From: "eos@runuo.com" Date: Sun, 16 Jun 2013 01:24:45 +0000 Subject: [PATCH] - Removed invisible items from the item insurance menu. - Changed the new context menu packet to only be used when necessary, until assistants are patched. - Added a setting for disabling target ID validation for debugging purposes. (It is still enabled by default.) --- Scripts/Mobiles/PlayerMobile.cs | 2 +- Server/ContextMenus/ContextMenu.cs | 17 +++++++++++++++++ Server/Mobile.cs | 3 ++- Server/Network/PacketHandlers.cs | 2 +- Server/Targeting/Target.cs | 8 ++++++++ 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Scripts/Mobiles/PlayerMobile.cs b/Scripts/Mobiles/PlayerMobile.cs index 4bc2b0b1a..e098a6e2c 100644 --- a/Scripts/Mobiles/PlayerMobile.cs +++ b/Scripts/Mobiles/PlayerMobile.cs @@ -1882,7 +1882,7 @@ namespace Server.Mobiles private bool DisplayInItemInsuranceGump( Item item ) { - return ( item.Insured || CanInsure( item ) ); + return ( ( item.Visible || AccessLevel >= AccessLevel.GameMaster ) && ( item.Insured || CanInsure( item ) ) ); } private class ItemInsuranceMenuGump : Gump diff --git a/Server/ContextMenus/ContextMenu.cs b/Server/ContextMenus/ContextMenu.cs index 1c255549b..8e139a757 100644 --- a/Server/ContextMenus/ContextMenu.cs +++ b/Server/ContextMenus/ContextMenu.cs @@ -94,5 +94,22 @@ namespace Server.ContextMenus m_Entries[i].Owner = this; } } + + /// + /// Returns true if this ContextMenu requires packet version 2. + /// + public bool RequiresNewPacket + { + get + { + for ( int i = 0; i < m_Entries.Length; ++i ) + { + if ( m_Entries[i].Number < 3000000 || m_Entries[i].Number > 3032767 ) + return true; + } + + return false; + } + } } } \ No newline at end of file diff --git a/Server/Mobile.cs b/Server/Mobile.cs index eba8e6d89..c0b78b0cc 100644 --- a/Server/Mobile.cs +++ b/Server/Mobile.cs @@ -2786,7 +2786,8 @@ namespace Server if ( m_ContextMenu != null && m_NetState != null ) { - if ( m_NetState.NewHaven ) + // Old packet is preferred until assistants catch up + if ( m_NetState.NewHaven && m_ContextMenu.RequiresNewPacket ) Send( new DisplayContextMenu( m_ContextMenu ) ); else Send( new DisplayContextMenuOld( m_ContextMenu ) ); diff --git a/Server/Network/PacketHandlers.cs b/Server/Network/PacketHandlers.cs index 695765a88..d0de10181 100644 --- a/Server/Network/PacketHandlers.cs +++ b/Server/Network/PacketHandlers.cs @@ -1126,7 +1126,7 @@ namespace Server.Network // User pressed escape t.Cancel( from, TargetCancelType.Canceled ); } - else if ( t.TargetID != targetID ) + else if ( Target.TargetIDValidation && t.TargetID != targetID ) { // Sanity, prevent fake target return; diff --git a/Server/Targeting/Target.cs b/Server/Targeting/Target.cs index c09301302..0310ae8b1 100644 --- a/Server/Targeting/Target.cs +++ b/Server/Targeting/Target.cs @@ -27,6 +27,14 @@ namespace Server.Targeting { private static int m_NextTargetID; + private static bool m_TargetIDValidation = true; + + public static bool TargetIDValidation + { + get { return m_TargetIDValidation; } + set { m_TargetIDValidation = value; } + } + private int m_TargetID; private int m_Range; private bool m_AllowGround;