public IEnumerator RawNextMapRoutine() { bool swapped = false; pc.GetComponent <MapEvent>().SetLocation(new Vector2Int(0, 0)); activeMap.GetComponent <BattleController>().Clear(); MapGenerator oldGen = activeMap.GetComponent <MapGenerator>(); Map oldMap = activeMap; int level = oldGen.level; MapGenerator newGen = activeMap.gameObject.AddComponent <MapGenerator>(); newGen.GenerateMesh(oldGen); Destroy(oldGen); activeMap.GetComponent <LineOfSightEffect>().Erase(); if (activeMap != oldMap) { swapped = true; pc.GetComponent <CharaEvent>().facing = EightDir.N; Destroy(oldGen.gameObject); activeMap.AddEvent(pc.GetComponent <MapEvent>()); } MapCamera cam = FindObjectOfType <MapCamera>(); if (cam.target != pc.GetComponent <MapEvent3D>()) { cam.target = activeMap.GetEventNamed("ZoomTarget").GetComponent <MapEvent3D>(); } activeMap.GetComponent <LineOfSightEffect>().RegenSitemap(activeMap.GetComponent <TacticsTerrainMesh>()); RogueUI ui = FindObjectOfType <RogueUI>(); ui.narrator.Clear(); if (level == 0 && !seenTutorial) { seenTutorial = true; yield return(ui.TutorialRoutine()); } yield return(ui.EditSpellsRoutine()); Vector2Int loc = activeMap.GetEventNamed("TeleStart").location; EightDir dir = pc.GetComponent <CharaEvent>().facing; loc += dir.XY() * -2; pc.GetComponent <MapEvent>().SetLocation(loc); activeMap.GetComponent <LineOfSightEffect>().RecalculateVisibilityMap(); if (swapped) { StartCoroutine(activeMap.GetComponent <BattleController>().BattleRoutine()); } }