public void travelMapInterceptor(object sender, EventArgs e) { var manager = (UserInterfaceManager)sender; var window = manager.TopWindow; Debug.Log("top window: " + window); if (window != null && !travelMap.IsShowing && window.GetType() == typeof(DaggerfallTravelMapWindow)) { DaggerfallTravelMapWindow originalTravelMap = window as DaggerfallTravelMapWindow; // check if the travel map was brought up to check for a destination for teleportation and let it proceed if yes. var isTeleportation = originalTravelMap.GetType().GetField("teleportationTravel", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); if ((bool)isTeleportation.GetValue(originalTravelMap)) { return; } // check if the travel map received a goto order from the journal link and replicate if yes var gotoLocation = (string)originalTravelMap.GetType().GetField("gotoLocation", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(originalTravelMap); if (gotoLocation != null) { var gotoRegion = (int)originalTravelMap.GetType().GetField("gotoRegion", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(originalTravelMap); travelMap.GotoLocation(gotoLocation, gotoRegion); } originalTravelMap.CloseWindow(); // if a destination was picked, ask whether to resume or open map if (destinationName != null) { DaggerfallMessageBox confirmTravelBox = new DaggerfallMessageBox(manager, DaggerfallMessageBox.CommonMessageBoxButtons.YesNo, "Resume travel to " + destinationName + "?", manager.TopWindow); confirmTravelBox.OnButtonClick += (_sender, button) => { if (button == DaggerfallMessageBox.MessageBoxButtons.Yes) { _sender.CloseWindow(); StartFastTravel(destinationSummary); } else { manager.PopWindow(); manager.PushWindow(travelMap); } }; confirmTravelBox.Show(); } else { manager.PushWindow(travelMap); } } }