public void MenuResponse( GameClient state, PacketReader pvSrc ) { int serial = pvSrc.ReadInt32(); /*int menuID = */ pvSrc.ReadInt16(); // unused in our implementation int index = pvSrc.ReadInt16(); /*int itemID = */ pvSrc.ReadInt16(); /*int hue = */ pvSrc.ReadInt16(); var menu = state.Menus.Where( m => m.Serial == serial ).FirstOrDefault(); if ( menu != null ) { try { if ( index > 0 && index <= menu.EntryLength ) menu.OnResponse( state, index - 1 ); else menu.OnCancel( state ); } catch ( Exception e ) { Logger.Error( "Exception disarmed in menu response {0} > {1}[index]: {2}", state.Mobile, menu, e ); } state.RemoveMenu( menu ); } }