public void PreqPacket(PreqPacket packet)
        {
            ScriptManager.Instance.Portal1 = ScriptManager.Instance.Map1 != null
                ? ScriptManager.Instance.Map1.MapPortals.FirstOrDefault(s =>
            {
                if (s.PosX != ScriptManager.Instance.PosX && s.PosX != (ScriptManager.Instance.PosX - 1) && s.PosX != (ScriptManager.Instance.PosX + 1))
                {
                    return(false);
                }

                if (s.PosY != ScriptManager.Instance.PosY && s.PosY != (ScriptManager.Instance.PosY - 1))
                {
                    return(s.PosY != (ScriptManager.Instance.PosY + 1));
                }

                return(true);
            })
                : null;

            ScriptManager.Instance.Target = ScriptManager.Instance.Portal1;
        }
        /// <summary>
        ///     PreqPacket packet
        /// </summary>
        /// <param name="packet"></param>
        public void Preq([UsedImplicitly] PreqPacket packet)
        {
            var currentRunningSeconds   = (DateTime.Now - Process.GetCurrentProcess().StartTime).TotalSeconds;
            var timeSpanSinceLastPortal = currentRunningSeconds - Session.Character.LastPortal;

            if (!(timeSpanSinceLastPortal >= 4))
            {
                return;
            }

            var portal = Session.Character.MapInstance.Portals.Find(port =>
                                                                    Heuristic.Octile(Math.Abs(Session.Character.PositionX - port.SourceX),
                                                                                     Math.Abs(Session.Character.PositionY - port.SourceY)) <= 1);

            if (portal == null)
            {
                return;
            }

            if (portal.DestinationMapInstanceId == default(Guid))
            {
                return;
            }

            Session.Character.LastPortal = currentRunningSeconds;

            if (ServerManager.Instance.GetMapInstance(portal.SourceMapInstanceId).MapInstanceType
                != MapInstanceType.BaseMapInstance &&
                ServerManager.Instance.GetMapInstance(portal.DestinationMapInstanceId).MapInstanceType
                == MapInstanceType.BaseMapInstance)
            {
                Session.ChangeMap(Session.Character.MapId, Session.Character.MapX, Session.Character.MapY);
            }
            else
            {
                Session.ChangeMapInstance(portal.DestinationMapInstanceId, portal.DestinationX,
                                          portal.DestinationY);
            }
        }
        /// <summary>
        ///     PreqPacket packet
        /// </summary>
        /// <param name="_"></param>
        public void Preq(PreqPacket _)
        {
            if ((SystemTime.Now() - Session.Character.LastPortal).TotalSeconds < 4 ||
                Session.Character.LastPortal > Session.Character.LastMove)
            {
                return;
            }

            var portal = Session.Character.MapInstance.Portals.Find(port =>
                                                                    Heuristic.Octile(Math.Abs(Session.Character.PositionX - port.SourceX),
                                                                                     Math.Abs(Session.Character.PositionY - port.SourceY)) <= 1);

            if (portal == null)
            {
                return;
            }

            if (portal.DestinationMapInstanceId == default)
            {
                return;
            }

            Session.Character.LastPortal = SystemTime.Now();

            if (_mapInstanceProvider.GetMapInstance(portal.SourceMapInstanceId).MapInstanceType
                != MapInstanceType.BaseMapInstance &&
                _mapInstanceProvider.GetMapInstance(portal.DestinationMapInstanceId).MapInstanceType
                == MapInstanceType.BaseMapInstance)
            {
                Session.ChangeMap(Session.Character.MapId, Session.Character.MapX, Session.Character.MapY);
            }
            else
            {
                Session.ChangeMapInstance(portal.DestinationMapInstanceId, portal.DestinationX,
                                          portal.DestinationY);
            }
        }