using System; using System.Collections; using System.Collections.Generic; using System.IO; using DarkTonic.MasterAudio; using Pathfinding; using PixelCrushers.DialogueSystem; using UnityEngine; using UnityEngine.SceneManagement; // Token: 0x02000086 RID: 134 public class Gaia : MonoBehaviour { // Token: 0x06000D41 RID: 3393 RVA: 0x000FFBEC File Offset: 0x000FDDEC private void Start() { this.tr = base.transform; this.sceneLoaded = false; Links.x.SetCursor("Point", true); base.StartCoroutine(this.StartGame()); MasterAudio.MasterVolumeLevel = 0f; SceneManager.sceneUnloaded += this.OnSceneUnloaded; SceneManager.sceneLoaded += this.OnSceneLoaded; } // Token: 0x06000D42 RID: 3394 RVA: 0x000FFC55 File Offset: 0x000FDE55 private IEnumerator StartGame() { ES3File es3File = new ES3File("Version.es3"); string text = "AutoSave/Quests.es3"; ES3File es3FileSerpent = new ES3File("SerpentData.es3"); if (!es3File.KeyExists("CheckpointSave")) { Debug.Log("Writing new version files"); es3File.Save("CheckpointSave", "Checkpoint Save"); es3File.Save("CheckpointSaveTime", ""); es3File.Save("QuickSave", "Quick Save"); es3File.Save("QuickSaveTime", ""); es3File.Save("Save1", ""); es3File.Save("Save1Time", ""); es3File.Save("Save2", ""); es3File.Save("Save2Time", ""); es3File.Save("Save3", ""); es3File.Save("Save3Time", ""); es3File.Save("Save4", ""); es3File.Save("Save4Time", ""); es3File.Save("Save5", ""); es3File.Save("Save5Time", ""); es3File.Save("Save6", ""); es3File.Save("Save6Time", ""); es3File.Save("Save7", ""); es3File.Save("Save7Time", ""); es3File.Save("Save8", ""); es3File.Save("Save8Time", ""); es3File.Save("Save9", ""); es3File.Save("Save9Time", ""); es3File.Save("Save10", ""); es3File.Save("Save10Time", ""); es3File.Save("CurrentVersion", Records.x.gameVersion); es3File.Save("CurrentVersionDemo", Records.x.gameVersionDemo); es3File.Sync(); this.newGame = true; ES3.Save("SceneName", "", text); ES3.Save("GameHours", 0, text); ES3.Save("GameDays", 0, text); ES3.Save("GameMinutes", 0f, text); this.partyNames.Clear(); this.partyIDs.Clear(); this.partyNames.Add("BloodlessHunter"); this.partyIDs.Add(0); ES3.Save>("PartyNames", this.partyNames, text); } else { this.partyNames.Clear(); this.partyIDs.Clear(); this.partyNames.Add("Empty"); this.partyIDs.Add(0); es3File.Save("CurrentVersion", Records.x.gameVersion); es3File.Save("CurrentVersionDemo", Records.x.gameVersionDemo); es3File.Sync(); this.newGame = false; } if (es3File.KeyExists("DefendTutorialTip")) { Records.x.needsDefendTooltip = false; } else { Records.x.needsDefendTooltip = true; } if (es3File.KeyExists("SynergyTutorialTip")) { Records.x.needsSynergyTooltip = false; } else { Records.x.needsSynergyTooltip = true; } if (es3File.KeyExists("CompanionTutorialTip")) { Records.x.needsCompanionTooltip = false; } else { Records.x.needsCompanionTooltip = true; } if (es3File.KeyExists("AttackTutorialTip")) { Records.x.needsAttackTooltip = false; } else { Records.x.needsAttackTooltip = true; } if (es3File.KeyExists("MoreTutorialTip")) { Records.x.needsMoreTooltip = false; } else { Records.x.needsMoreTooltip = true; } if (es3File.KeyExists("CircleTutorialTip")) { Records.x.needsCircleTooltip = false; } else { Records.x.needsCircleTooltip = true; } Links.x.archives.CreateArchives(); yield return new WaitForSecondsRealtime(0.001f); Links.x.cellar.CreateCellar(); Links.x.options.LoadOptions(); yield return new WaitForSecondsRealtime(0.1f); this.StartGameContinued(); yield return new WaitForSecondsRealtime(0.5f); this.pathfindingReady = true; if (es3FileSerpent.KeyExists("SitsAnimal")) { Records.x.sitsAnimal = es3FileSerpent.Load("SitsAnimal"); Records.x.sitsCompanion1 = es3FileSerpent.Load("SitsCompanion1"); Records.x.sitsCompanion2 = es3FileSerpent.Load("SitsCompanion2"); Records.x.sitsCompanion3 = es3FileSerpent.Load("SitsCompanion3"); Records.x.sitsCompanion4 = es3FileSerpent.Load("SitsCompanion4"); Records.x.sitsNecholai = es3FileSerpent.Load("SitsNecholai"); } Links.x.prewarm.SetActive(false); Links.x.prewarm.transform.SetParent(Links.x.gameplay.transform); Links.x.camera3D.enabled = false; if (!Records.x.editor) { this.debugPlaylist = false; } yield break; } // Token: 0x06000D43 RID: 3395 RVA: 0x000FFC64 File Offset: 0x000FDE64 public void StartGameContinued() { this.sceneLoaded = false; this.sceneToLoad = "_~[Menu]~_"; Records.x.LoadGameFiles(true); this.cameraFollow = Records.x.cameraFollowing; } // Token: 0x06000D44 RID: 3396 RVA: 0x000FFC94 File Offset: 0x000FDE94 public void PlayFade(string state, string timeMode) { if (timeMode == "Scaled") { Links.x.fadeAnimator.updateMode = AnimatorUpdateMode.Normal; } else { Links.x.fadeAnimator.updateMode = AnimatorUpdateMode.UnscaledTime; } if (state == "Out") { if (Links.x.fadeAnimator.GetCurrentAnimatorStateInfo(0).IsName("FadeIn") || Links.x.fadeAnimator.GetCurrentAnimatorStateInfo(0).IsName("FadeInLoop")) { Links.x.fadeAnimator.Play("FadeOut"); return; } } else if (Links.x.fadeAnimator.GetCurrentAnimatorStateInfo(0).IsName("FadeOut") || Links.x.fadeAnimator.GetCurrentAnimatorStateInfo(0).IsName("FadeOutLoop")) { Links.x.fadeAnimator.Play("FadeIn"); } } // Token: 0x06000D45 RID: 3397 RVA: 0x000FFD82 File Offset: 0x000FDF82 public void NewGameFromMainMenu() { base.StartCoroutine(this.NewGame()); } // Token: 0x06000D46 RID: 3398 RVA: 0x000FFD91 File Offset: 0x000FDF91 private IEnumerator NewGame() { string text = Application.persistentDataPath + "/AutoSave"; if (Directory.Exists(text)) { string[] files = Directory.GetFiles(text); for (int i = 0; i < files.Length; i++) { File.Delete(files[i]); } } Records.x.mainMenuOpen = false; yield return new WaitForSecondsRealtime(0.25f); this.PlayFade("Out", "Unscaled"); this.DestroyPartyObjects(); this.partyNames.Clear(); this.partyNames.Add("BloodlessHunter"); this.partyIDs.Add(0); Records.x.partyTotal++; Links.x.journal.NewGame(); Links.x.cameraEffects.pointLightShadows.SwitchingScenes(); Links.x.RemoveScene(); Links.x.ClearSceneLists(); yield return new WaitForSecondsRealtime(0.25f); Links.x.gameplay.CloseDock(); Links.x.gameplay.TogglePause(false); SceneManager.UnloadSceneAsync(SceneManager.GetSceneAt(1)); SceneManager.UnloadSceneAsync(SceneManager.GetSceneAt(2)); yield return new WaitForSecondsRealtime(0.25f); this.sceneToLoad = "F4_BanquetIsle"; this.newGameFromMenu = true; this.addressablesLoading = true; this.ChangeLevels("Assets/+ Joseph/Maps/" + this.sceneToLoad + ".unity", this.sceneToLoad, "New Game"); while (this.addressablesLoading) { yield return null; } yield break; } // Token: 0x06000D47 RID: 3399 RVA: 0x000FFDA0 File Offset: 0x000FDFA0 public void ReturnToMainMenu() { this.clearPreviousScene = false; SceneManager.LoadScene(0, LoadSceneMode.Single); } // Token: 0x06000D48 RID: 3400 RVA: 0x000FFDB0 File Offset: 0x000FDFB0 public void LoadFromGameFiles() { this.newGame = false; if (Records.x.combat) { Links.x.combat.EndCombat(false); } if (this.loadCoroutine == null) { this.loadCoroutine = this.LoadFromGameFilesTimed(); base.StartCoroutine(this.loadCoroutine); } } // Token: 0x06000D49 RID: 3401 RVA: 0x000FFE01 File Offset: 0x000FE001 private IEnumerator LoadFromGameFilesTimed() { Records.x.RemoveControls(true); Debug.Log("Load from game files"); this.PlayFade("Out", "Unscaled"); yield return new WaitForSecondsRealtime(0.25f); Links.x.saveLoad.StartEndMenu(false); Links.x.gameplay.CloseDock(); if (Links.x.pocketWheel.rallyWheelOpen) { Links.x.pocketWheel.CloseRallyWheel(false); } Links.x.gameplay.TogglePause(false); if (Records.x.pocketPause) { Links.x.gameplay.PocketPause(false); } if (Records.x.partySailing) { this.boat.ClearBoatForRespawn(); Records.x.partySailing = false; } Links.x.RemoveScene(); Links.x.hudControl.ClearBadges(); Links.x.hudControl.ClearBribeBadges(); Links.x.hudControl.ClearSheep(); Links.x.renderPortraits.Reloading(); Links.x.gameFeed.ClearFeed(); Links.x.hudControl.ClearRally(); if (Records.x.circle) { Links.x.fellowship.BreakCircle(false); } this.DestroyPartyObjects(); Links.x.ClearSceneLists(); Records.x.mainMenuOpen = false; this.sceneLoaded = false; Links.x.partyColliderAdventure.itemCollector.EmptyItems(); if (!Links.x.worldCamera.orthographic) { Links.x.rtsCamera.ReturnOrthographicCamera(); } Links.x.cameraEffects.pointLightShadows.SwitchingScenes(); yield return new WaitForSecondsRealtime(0.01f); if (SceneManager.sceneCount > 2) { SceneManager.UnloadSceneAsync(SceneManager.GetSceneAt(1)); yield return new WaitForSecondsRealtime(0.25f); SceneManager.UnloadSceneAsync(SceneManager.GetSceneAt(1)); yield return new WaitForSecondsRealtime(0.25f); } Records.x.LoadGameFiles(false); this.cameraFollow = Records.x.cameraFollowing; this.loadCoroutine = null; yield break; } // Token: 0x06000D4A RID: 3402 RVA: 0x000FFE10 File Offset: 0x000FE010 public void GameFilesLoaded(string s) { this.sceneToLoad = s; this.currentSceneName = this.sceneToLoad; if (!(s == "_~[Menu]~_")) { this.addressablesLoading = true; this.ChangeLevels("Assets/+ Joseph/Maps/" + this.sceneToLoad + ".unity", this.sceneToLoad, "Game Files"); Records.x.RemoveControls(false); return; } SceneManager.LoadScene(this.sceneToLoad, LoadSceneMode.Additive); if (this.sceneToLoad == "_~[Menu]~_") { SceneManager.LoadScene("Statues", LoadSceneMode.Additive); return; } Records.x.RemoveControls(false); } // Token: 0x06000D4B RID: 3403 RVA: 0x000FFEAB File Offset: 0x000FE0AB public void SetSavedExit(string n1, string n2) { this.savedMapExitName = n1; this.saveMapExitSub = n2; } // Token: 0x06000D4C RID: 3404 RVA: 0x000FFEBC File Offset: 0x000FE0BC public void Teleport(Character character, string sceneTo, MapExit.interiorNames interiorName, MapExit.interiorNames exteriorName, bool toInterior, MapExit clickedDoor) { character.ClearMoveTargets(); character.body.SetMagicaClothState(false); int num = 0; MapExit mapExit; string text; if (toInterior) { num = 1; mapExit = Links.x.diorama.MatchMapExitInteriorExterior(toInterior, interiorName, clickedDoor); text = interiorName.ToString(); } else { mapExit = Links.x.diorama.MatchMapExitInteriorExterior(toInterior, exteriorName, clickedDoor); text = ""; } int desiredGraph = character.desiredGraph; string doorID = character.doorID; character.desiredGraph = num; if (toInterior) { character.doorID = text; } else { character.doorID = ""; } character.lastDoorID = text; GraphNode graphNode = character.NearNode(mapExit.doorPoint, true, 0, num, 0); if (graphNode != null) { character.SetPosition((Vector3)graphNode.position, null); Quaternion rotation = mapExit.GetComponent().spawnPoint.rotation; Vector3 eulerAngles = rotation.eulerAngles; rotation.x = 0f; rotation.z = 0f; Vector3 vector = Quaternion.Euler(eulerAngles) * Vector3.forward * -1f; character.ClearNodePath(); character.SetRotation(Quaternion.Euler(vector), false, true); character.ClaimNode(graphNode, (Vector3)graphNode.position, true); character.sphere.transform.position = this.tr.position; if (character.circleTr) { character.circleTr.position = character.tr.position; } character.SetMoveFollowPosition((Vector3)graphNode.position); character.savedFollowNode = character.node; character.savedPathTarget = character.node; if (num == 1) { if (Links.x.diorama.GetIndoorView()) { character.indoorID = Links.x.diorama.GetIndoorView().GetInteriorBoundsName((Vector3)graphNode.position); } else { character.indoorID = "?"; } } else { character.indoorID = ""; } character.ChangeTorchLight(); character.FirstPosition(graphNode); if (clickedDoor) { bool playDoorSound = clickedDoor.playDoorSound; MasterAudio.PlaySound3DAtVector3AndForget("Feedback", character.tr.position, 0.3f, new float?(1f), 0f, "Used Exit", null); if (clickedDoor.locationText != "") { clickedDoor.gameObject.GetComponent().Use(); } clickedDoor.gameObject.GetComponent().Leave(); } Links.x.fellowship.TeleportParty(true); } else { character.desiredGraph = desiredGraph; character.doorID = doorID; } if (character == Links.x.main) { Links.x.rtsCamera.JumpTo(Links.x.main.tr, true); } else { Links.x.sensory.UpdateCharactersIntExt(true); } character.body.SetMagicaClothState(true); character.selectedBeforeDoor = false; } // Token: 0x06000D4D RID: 3405 RVA: 0x001001CC File Offset: 0x000FE3CC public void TeleportNPC(Character character, MapExit exit, string exitID, bool toInterior) { int desiredGraph = character.desiredGraph; string doorID = character.doorID; string indoorID = character.indoorID; int num = 0; MapExit mapExit; if (toInterior) { num = 1; mapExit = exit; character.doorID = exitID; } else { mapExit = exit; character.doorID = ""; character.indoorID = ""; } character.desiredGraph = num; GraphNode graphNode = character.NearNode(mapExit.doorPoint, true, 0, num, 0); if (graphNode != null) { character.SetPosition((Vector3)graphNode.position, null); character.SetRotation(mapExit.GetComponent().spawnPoint.rotation, false, true); character.FirstPosition(graphNode); character.lastDoorID = exitID; if (num == 1) { if (Links.x.diorama.GetIndoorView()) { character.indoorID = Links.x.diorama.GetIndoorView().GetInteriorBoundsName((Vector3)graphNode.position); } else { character.indoorID = "?"; } } else { character.indoorID = ""; } character.ChangeTorchLight(); return; } character.desiredGraph = desiredGraph; character.doorID = doorID; character.indoorID = indoorID; } // Token: 0x06000D4E RID: 3406 RVA: 0x001002F0 File Offset: 0x000FE4F0 public void ChangeScene(string sceneTo, string sceneFrom, string subExit) { Debug.Log(string.Concat(new string[] { sceneTo, " ", sceneFrom, " ", subExit })); if (!this.sceneLoaded) { return; } this.newGame = false; this.newSceneFromOverworldMap = false; base.StartCoroutine(this.WaitForSceneChange(sceneTo, sceneFrom, subExit)); } // Token: 0x06000D4F RID: 3407 RVA: 0x00100350 File Offset: 0x000FE550 public void ChangeSceneFromOverworld(string sceneTo, string sceneFrom) { if (!this.sceneLoaded) { return; } if (sceneTo == "None" || sceneTo == "Interiors" || sceneTo == "Exteriors" || sceneTo == "Same" || sceneTo == "x") { return; } this.newGame = false; this.newSceneFromOverworldMap = true; base.StartCoroutine(this.WaitForSceneChange(sceneTo, sceneFrom, "A")); } // Token: 0x06000D50 RID: 3408 RVA: 0x001003CA File Offset: 0x000FE5CA private IEnumerator WaitForSceneChange(string sceneTo, string sceneFrom, string subExit) { this.changingMapsComplete = false; for (int i = 0; i < this.changingMaps.Count; i++) { if (this.changingMaps[i]) { if (this.changingMaps[i].IsSentient() && !this.changingMaps[i].ghost && this.changingMaps[i].hostility == 2 && !this.changingMaps[i].stats.characterRow._NeverLeaveMap && this.changingMaps[i].stats.characterRow._Quest == "") { this.changingMaps[i].changingMaps = true; this.changingMaps[i].creatures.futureDelay = this.changingMapsDistance[i]; this.changingMaps[i].creatures.MoveToNewMap(this.changingMaps[i], sceneTo, Vector3.zero, this.changingMapsDistance[i]); } else { this.changingMaps[i] = null; } } } this.pathfindingReady = false; Links.x.gameplay.ChangeScene(); if (Records.x.circle) { Links.x.fellowship.BreakCircle(false); } this.PlayFade("Out", "Unscaled"); yield return new WaitForSecondsRealtime(0.26f); Records.x.TriggerGlobalSave("AutoSave", false); while (Records.x.IsSaving()) { yield return null; } if (Records.x.CanSave()) { Records.x.CopyToCheckPoint(); } Links.x.diorama.CheckDelayedCharacters(sceneTo); this.waitingToRemoveScene = true; Links.x.hudControl.ClearBadges(); Links.x.hudControl.ClearBribeBadges(); Links.x.hudControl.ClearOnReload(); Links.x.RemoveScene(); while (this.waitingToRemoveScene) { yield return null; } Links.x.ClearSceneLists(); this.sceneToLoad = sceneTo; this.sceneLoaded = false; this.savedSceneFrom = sceneFrom; this.savedSubExit = subExit; this.changeScene = sceneFrom; Records.x.RemoveControls(true); if (!Links.x.worldCamera.orthographic) { Links.x.rtsCamera.ReturnOrthographicCamera(); } Links.x.partyColliderAdventure.itemCollector.EmptyItems(); Links.x.gameplay.hitExit = false; this.newSceneFromMapExit = true; Records.x.inOverworldMap = false; if (sceneTo == "Invimona") { for (int j = 0; j < this.party.Count; j++) { if (this.party[j]) { this.party[j].fowRevealer.enabled = false; } } Records.x.inOverworldMap = true; Links.x.hudControl.ChangeHudVisibility(false, true); } else if (sceneFrom == "Invimona") { for (int k = 0; k < this.party.Count; k++) { if (this.party[k] && this.party[k].fowRevealer) { this.party[k].fowRevealer.enabled = true; } } } if (this.boat) { this.boat.nodeMovingID = 0; this.boat.nodeStationaryID = 0; } Links.x.gameplay.CloseDock(); Links.x.gameplay.TogglePause(false); Links.x.gameplay.ChangeScene(); Links.x.cameraEffects.pointLightShadows.SwitchingScenes(); this.cameraFollow = Links.x.rtsCamera.IsFollowing; Links.x.sceneMap.LeavingScene(sceneFrom); yield return new WaitForSecondsRealtime(0.01f); this.addressablesLoading = true; this.ChangeLevels("Assets/+ Joseph/Maps/" + this.sceneToLoad + ".unity", this.sceneToLoad, "Switching Scenes"); yield break; } // Token: 0x06000D51 RID: 3409 RVA: 0x001003EE File Offset: 0x000FE5EE public void OnSceneUnloaded(Scene current) { this.unloaded = false; } // Token: 0x06000D52 RID: 3410 RVA: 0x001003F7 File Offset: 0x000FE5F7 public void OnSceneLoaded(Scene current, LoadSceneMode mode) { this.loaded = false; } // Token: 0x06000D53 RID: 3411 RVA: 0x00100400 File Offset: 0x000FE600 public void ChangeLevels(string addressableKey, string sceneName, string switchType) { base.StartCoroutine(this.SceneAddressables(addressableKey, sceneName, switchType)); } // Token: 0x06000D54 RID: 3412 RVA: 0x00100412 File Offset: 0x000FE612 private IEnumerator SceneAddressables(string addressableKey, string sceneName, string switchType) { this.unloaded = false; this.loaded = false; if (this.clearPreviousScene && SceneManager.sceneCount > 1) { this.cleared = false; this.unloaded = true; SceneManager.UnloadSceneAsync(SceneManager.GetSceneAt(1)); if (this.unloaded) { yield return null; } this.cleared = true; } else { this.cleared = true; } while (!this.cleared) { yield return null; } Links.x.archives.clearing = true; Links.x.archives.ClearBetweenLevels(); while (Links.x.archives.clearing) { yield return null; } if (switchType == "Main Menu" || Time.timeScale < 0.5f) { yield return new WaitForSecondsRealtime(0.1f); } else { yield return new WaitForSeconds(0.1f); } bool loading = false; if (addressableKey != "") { loading = true; this.loaded = true; if (switchType == "Switching Scenes") { base.StartCoroutine(this.FinishSceneSwitch(sceneName)); } SceneManager.LoadScene(sceneName, LoadSceneMode.Additive); if (this.loaded) { yield return null; } loading = false; this.clearPreviousScene = true; } while (loading) { yield return null; } if (switchType == "Main Menu") { this.cleared = false; SceneManager.LoadScene(0, LoadSceneMode.Single); } else { this.cleared = false; this.ClearMemory(); while (!this.cleared) { yield return null; } } yield break; } // Token: 0x06000D55 RID: 3413 RVA: 0x00100436 File Offset: 0x000FE636 private void ClearMemory() { Resources.UnloadUnusedAssets().completed += delegate(AsyncOperation operation) { this.cleared = true; }; } // Token: 0x06000D56 RID: 3414 RVA: 0x0010044E File Offset: 0x000FE64E private IEnumerator FinishSceneSwitch(string sceneName) { Debug.Log("Finish scene switch"); Links.x.hudControl.ClearSheep(); Links.x.renderPortraits.Reloading(); Records.x.SetupStunned(); Records.x.SetupBribeBadges(sceneName); this.currentSceneName = this.sceneToLoad; Links.x.diorama = null; Links.x.fellowship.NewScene(); while (Links.x.diorama == null) { yield return null; } MapExit exit = null; if (this.newSceneFromOverworldMap) { if (this.party.Count > 0) { this.party[0].SetPosition(Links.x.diorama.playerStartDefault.position, null); this.party[0].SetRotation(Links.x.diorama.playerStartDefault.rotation, false, true); this.party[0].FirstPosition(null); Links.x.fellowship.SetPartyPositions(false); } } else { exit = Links.x.diorama.MatchMapExit(this.savedSceneFrom, this.savedSubExit); string[] array = new string[8]; array[0] = "SCENE SWITCH "; int num = 1; MapExit mapExit = exit; array[num] = ((mapExit != null) ? mapExit.ToString() : null); array[2] = " "; array[3] = this.party.Count.ToString(); array[4] = " "; array[5] = this.savedSceneFrom; array[6] = " "; array[7] = this.savedSubExit; Debug.Log(string.Concat(array)); if (this.party.Count > 0 && exit) { Debug.Log(exit.waterExit.ToString() + " " + exit.keepWaterPosition.ToString()); if (!exit.waterExit) { this.party[0].SetPosition(exit.gameObject.GetComponent().spawnPoint.position, null); this.party[0].SetRotation(exit.gameObject.GetComponent().spawnPoint.rotation, false, true); this.party[0].FirstPosition(null); for (int i = 1; i < this.party.Count; i++) { if (this.party[i]) { this.party[i].SetPosition(exit.gameObject.GetComponent().spawnPoint.position, null); } } } Links.x.fellowship.SetPartyPositions(false); } } yield return new WaitForSecondsRealtime(0.1f); if (exit && exit.waterExit) { Debug.Log("water exit"); if (exit.keepWaterPosition) { this.boat.ChangeScenes(this.exitPoint); } else { Debug.Log("new point " + exit.gameObject.GetComponent().spawnPoint.position.ToString()); this.boat.ChangeScenes(exit.gameObject.GetComponent().spawnPoint.position); } } this.changeScene = ""; Records.x.RemoveControls(false); this.pathfindingReady = true; Debug.Log("Scene ready"); yield break; } // Token: 0x06000D57 RID: 3415 RVA: 0x00100464 File Offset: 0x000FE664 public void SwitchToBloodlessScene() { this.sceneLoaded = false; Records.x.RemoveControls(false); this.newGame = true; base.StartCoroutine(this.SwitchToSceneTimed("F4_BanquetIsle", true, "BloodlessHunter", 2f, false)); } // Token: 0x06000D58 RID: 3416 RVA: 0x0010049D File Offset: 0x000FE69D public void SwitchToCharacterCreationScene() { this.sceneLoaded = false; Records.x.RemoveControls(true); base.StartCoroutine(this.SwitchToSceneTimed("C6_FortenLazure", true, "Protagonist", 1f, false)); } // Token: 0x06000D59 RID: 3417 RVA: 0x001004D0 File Offset: 0x000FE6D0 public void FinishCharacterCreation(GameObject go, bool fromBeginning) { if (fromBeginning) { Links.x.gameplay.TogglePause(false); Object.Destroy(Links.x.creation.gameObject); } else { Object.Destroy(Links.x.creation.gameObject); Links.x.creation = null; Links.x.gameplay.TogglePause(false); Records.x.dialogue = false; Records.x.RemoveControls(false); this.PlayFade("In", "Unscaled"); } Links.x.fellowship.UpdateHotkeys(); Links.x.cameraEffects.ToggleObscurance(); } // Token: 0x06000D5A RID: 3418 RVA: 0x00100579 File Offset: 0x000FE779 public void EndCharacterCreation() { Links.x.gameFeed.ClearFeed(); base.gameObject.AddComponent().StartPavuraWalk(); } // Token: 0x06000D5B RID: 3419 RVA: 0x0010059A File Offset: 0x000FE79A private IEnumerator SwitchToSceneTimed(string newScene, bool destroyParty, string newPartyMember, float waitTime, bool checkPoint) { bool currentControls = Records.x.removeControls; Records.x.RemoveControls(true); while (Records.x.IsSaving()) { yield return null; } yield return new WaitForSecondsRealtime(waitTime); Records.x.mainMenuOpen = false; this.PlayFade("Out", "Unscaled"); yield return new WaitForSecondsRealtime(0.25f); if (destroyParty) { this.partyNames.Clear(); this.partyIDs.Clear(); this.partyNames.Add("Protagonist"); this.partyIDs.Add(0); this.DestroyPartyObjects(); } Links.x.RemoveScene(); Links.x.ClearSceneLists(); yield return new WaitForSecondsRealtime(0.5f); Links.x.gameplay.CloseDock(); Links.x.gameplay.TogglePause(false); this.cameraFollow = Links.x.rtsCamera.IsFollowing; Links.x.cameraEffects.pointLightShadows.SwitchingScenes(); this.addressablesLoading = true; this.sceneToLoad = newScene; this.ChangeLevels("Assets/+ Joseph/Maps/" + this.sceneToLoad + ".unity", this.sceneToLoad, "Timed"); while (this.addressablesLoading) { yield return null; } yield return new WaitForSecondsRealtime(0.1f); Records.x.removeControls = currentControls; this.changingScene = false; Links.x.hudControl.ChangeHudVisibility(true, true); while (!Links.x.fadeAnimator.GetCurrentAnimatorStateInfo(0).IsName("FadeInLoop")) { yield return null; } if (checkPoint) { Records.x.TriggerGlobalSave("CheckpointSave", false); } while (Records.x.IsSaving()) { yield return null; } yield break; } // Token: 0x06000D5C RID: 3420 RVA: 0x001005C8 File Offset: 0x000FE7C8 public void CreateCharacterSingle(Vector3 pos, Quaternion rot, int partyID) { int freePartyNode = Links.x.GetFreePartyNode(); this.CreateCharacter(true, freePartyNode, "Empty", partyID); this.party[freePartyNode].SceneSetup(); this.party[freePartyNode].tr.position = pos; this.party[freePartyNode].SetRotation(rot, false, true); this.party[freePartyNode].FirstPosition(null); } // Token: 0x06000D5D RID: 3421 RVA: 0x0010063C File Offset: 0x000FE83C public void CreateCharacter(bool party, int num, string partyName, int partyID) { this.go = new GameObject("Player " + num.ToString()); Character character = this.go.AddComponent(); if (num == 0 && !Links.x.gaia.sceneLoaded) { Links.x.main = character; Links.x.protagonist = character; } character.SetupBasic(party, num, partyName, num * 2 + 1, false, partyID); if (Records.x.useTestCharacters && num == 0) { character.stats.protagonist = true; character.stats.level = 1; } if (Records.x.useTestCharacters) { Records.x.partyTotal++; } } // Token: 0x06000D5E RID: 3422 RVA: 0x001006F1 File Offset: 0x000FE8F1 public void NewSceneLoaded() { SceneManager.SetActiveScene(SceneManager.GetSceneAt(0)); this.SceneStartCommands(); } // Token: 0x06000D5F RID: 3423 RVA: 0x00100705 File Offset: 0x000FE905 public void SceneStartCommands() { base.StartCoroutine(this.SceneCommands()); } // Token: 0x06000D60 RID: 3424 RVA: 0x00100714 File Offset: 0x000FE914 private IEnumerator SceneCommands() { this.sceneLoaded = false; this.changingMapsComplete = false; this.loadingCharacterCreation = false; if (Links.x.diorama.sceneName == "C6_FortenLazure" && QuestLog.GetQuestState("CharacterCreation") != QuestState.Success && QuestLog.GetQuestState("CharacterCreation") != QuestState.Active) { this.loadingCharacterCreation = true; Debug.Log("Loading character creation"); } Links.x.partyColliderCombat.gameObject.transform.localScale = Vector3.zero; Links.x.partyColliderAdventure.gameObject.transform.localScale = Vector3.zero; Links.x.combat.ClearNearby(); Links.x.combat.ChangeScene(); Shader.SetGlobalFloat("_Pocket", 0f); if (Links.x.diorama.playerStartDefault) { Links.x.rtsCamera.JumpTo(Links.x.diorama.playerStartDefault.position, Links.x.main, true); } if (Links.x.diorama.sceneName == "F4_BanquetIsle") { Records.x.banquetIsle = true; } else { Records.x.banquetIsle = false; } while (AstarPath.active == null) { yield return null; } while (AstarPath.active.graphs == null) { yield return null; } while (AstarPath.active.graphs.Length < 2) { yield return null; } while (AstarPath.active.DirtyNodeCount() > 0) { Debug.Log(AstarPath.active.DirtyNodeCount()); yield return null; } yield return new WaitForSecondsRealtime(0.1f); this.interiorGraph = (GridGraph)AstarPath.active.graphs[1]; this.exteriorGraph = (GridGraph)AstarPath.active.graphs[0]; AstarPath.active.heuristic = Heuristic.Euclidean; if (!this.newSceneFromMapExit) { Links.x.characterSheet.anim.enabled = true; Links.x.characterSheet.anim.Play("Open", 0, 1f); } Records.x.inOverworldMap = false; Records.x.miniGame = false; Links.x.inputControls.NewScene(); Links.x.sceneMap.DoLoad(); if (!this.newSceneFromOverworldMap && Links.x.diorama.sceneName == "Invimona") { Records.x.inOverworldMap = true; } this.party = Links.x.party; int num; if (this.party.Count == 0) { int partyCount = 4; yield return new WaitForSecondsRealtime(0.1f); if (this.loadingCharacterCreation) { this.partyNames.Clear(); this.partyIDs.Clear(); this.partyNames.Add("Empty"); this.partyNames.Add("Empty"); this.partyNames.Add("Empty"); this.partyNames.Add("Empty"); this.partyIDs.Add(3); this.partyIDs.Add(4); this.partyIDs.Add(5); this.partyIDs.Add(6); Records.x.partyTotal = 7; } else if (Records.x.useTestCharacters) { this.partyNames.Clear(); this.partyIDs.Clear(); this.partyNames.Add("Josef"); this.partyIDs.Add(3); this.partyNames.Add("Branwen"); this.partyIDs.Add(4); this.partyNames.Add("Hannah"); this.partyIDs.Add(5); this.partyNames.Add("Pug"); this.partyIDs.Add(6); Records.x.partyTotal = 7; } partyCount = this.partyNames.Count; for (int i = 0; i < partyCount; i = num + 1) { this.settingUpParty = true; this.CreateCharacter(true, i, this.partyNames[i], this.partyIDs[i]); while (this.settingUpParty) { yield return null; } yield return new WaitForSecondsRealtime(0.01f); if (Records.x.banquetIsle && this.newGameFromMenu) { Library.Pagan pagan = Links.x.library.GetPaganRow("Mistral"); List sockets = Links.x.main.sockets; sockets[20] = new Vector3((float)pagan._Number, 5f, 0f); sockets[21] = new Vector3(0f, 5f, 10f); Links.x.main.stats.EnchantJewelryEffects(20, true); Links.x.main.inventoryBag.socketA[10] = sockets[20]; Links.x.main.inventoryBag.socketB[10] = sockets[21]; pagan = Links.x.library.GetPaganRow("StormSword"); sockets[0] = new Vector3((float)pagan._Number, 1f, 0f); sockets[1] = new Vector3(0f, 5f, 12f); Links.x.main.inventoryBag.socketA[0] = sockets[0]; Links.x.main.inventoryBag.socketB[0] = sockets[1]; } num = i; } for (int j = 0; j < partyCount; j++) { if (Records.x.useTestCharacters && Records.x.editor) { if (j == 0) { this.party[j].stats.SetMajorsMinors("Pagan", "Dexterity", "Strength", "Vines", "Hand-to-Hand", "Robes", false); global::Item item; ItemEquipped itemEquipped; Links.x.inventory.AddFromGround(null, null, 0, false, 0f, Links.x.library.GetInvRowID("Spellbook"), 1, new Vector3(3f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector4(0f, 0f, 0f, 0f), this.party[j], false, false, out item, out itemEquipped); this.party[j].stats.UpdateAbilityTriggers(); this.party[j].portrait.skillBag.SetSpellbookGrid(); } if (j == 1) { this.party[j].stats.SetMajorsMinors("Strength", "Dexterity", "Sensory", "Hand-to-Hand", "Bindings", "Robes", false); global::Item item2; ItemEquipped itemEquipped2; Links.x.inventory.AddFromGround(null, null, 0, false, 0f, Links.x.library.GetInvRowID("Songbook"), 1, new Vector3(4f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector4(0f, 0f, 0f, 0f), this.party[j], false, false, out item2, out itemEquipped2); this.party[j].stats.UpdateAbilityTriggers(); this.party[j].portrait.skillBag.SetSongGrid(); } if (j == 2) { this.party[j].stats.SetMajorsMinors("Sensory", "Dexterity", "Strength", "Hand-to-Hand", "Sneaking", "Sling", false); global::Item item3; ItemEquipped itemEquipped3; Links.x.inventory.AddFromGround(null, null, 0, false, 0f, Links.x.library.GetInvRowID("Songbook"), 1, new Vector3(5f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector4(0f, 0f, 0f, 0f), this.party[j], false, false, out item3, out itemEquipped3); this.party[j].stats.UpdateAbilityTriggers(); this.party[j].portrait.skillBag.SetSongGrid(); } if (j == 3) { this.party[j].stats.SetMajorsMinors("Strength", "Dexterity", "Aura", "Hand-to-Hand", "Flute", "Robes", false); global::Item item4; ItemEquipped itemEquipped4; Links.x.inventory.AddFromGround(null, null, 0, false, 0f, Links.x.library.GetInvRowID("Songbook"), 1, new Vector3(6f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector4(0f, 0f, 0f, 0f), this.party[j], false, false, out item4, out itemEquipped4); this.party[j].stats.UpdateAbilityTriggers(); this.party[j].portrait.skillBag.SetSongGrid(); } this.party[j].portrait.skillBag.trinketWindow.GridLayout(true, false); } } } else { for (int partyCount = 0; partyCount < this.party.Count; partyCount = num + 1) { this.party[partyCount].SceneSetup(); yield return new WaitForSecondsRealtime(0.001f); num = partyCount; } } SceneManager.SetActiveScene(SceneManager.GetSceneAt(1)); Records.x.currentPathNode = 13; Links.x.gameplay.SceneSwitch(); Links.x.diorama.GetGhostNode(); Links.x.pocketWheel.NewScene(); Links.x.cameraEffects.pointLightShadows.DoneSwitchingScenes(); if (!this.newSceneFromMapExit) { Links.x.inventory.Setup(); Links.x.inventory.groundBag.Setup(); Links.x.characterSheet.StartMenu(true); } yield return new WaitForSecondsRealtime(0.001f); Links.x.diorama.SetupInteractives1(); yield return new WaitForSecondsRealtime(0.001f); Links.x.diorama.SetupInteractives2(); Links.x.diorama.StartQuadCulling(); yield return new WaitForSecondsRealtime(0.001f); Links.x.cameraEffects.SceneSwitch(); Links.x.rtsCamera.CameraStart(); Links.x.diorama.GetBreakableTiles(); Links.x.fogOfWar.Load(); if (Links.x.fogOfWarInterior) { Links.x.fogOfWarInterior.Load(); } yield return new WaitForSecondsRealtime(0.001f); this.changingMapsComplete = true; if (Records.x.partySailing && this.boat && this.boat.setup && this.boat.node == null) { this.boat.ChangeScenes(this.exitPoint); } if (this.party.Count > 0 && this.changeScene == "") { bool flag = false; if (Links.x.diorama.sceneName.Contains("C6_FortenLazure") && QuestLog.GetQuestState("CharacterCreation") == QuestState.Unassigned) { flag = true; } if (this.newGameFromMenu || (Records.x.editor && Records.x.defaultStartPoint) || Links.x.diorama.sceneName == "Intro" || this.loadingCharacterCreation || flag) { Transform transform = Links.x.diorama.ReturnJumpPoint(); if (flag || this.loadingCharacterCreation || this.newGameFromMenu || !Records.x.editor) { transform = Links.x.diorama.playerStartDefault; } this.party[0].SetPosition(transform.position, null); this.party[0].SetRotation(transform.rotation, false, true); this.party[0].FirstPosition(null); Links.x.fellowship.SetPartyPositions(false); Records.x.defaultStartPoint = false; } } this.playerStartingPosition = Links.x.main.tr.position; this.playerStartingNode = Links.x.main.node; Records.x.CheckForTemporaryCreatures(0); Links.x.diorama.FindCreatures(); Records.x.CheckForTemporaryCreatures(1); Links.x.diorama.SetupCreatures(); for (int k = 0; k < this.party.Count; k++) { if (Links.x.diorama.singleCharacter) { if (!this.party[k].mainSelected) { this.party[k].offMap = true; this.party[k].TurnScriptsOff(); } } else if (this.party[k].inactive || this.party[k].offMap) { this.party[k].offMap = false; this.party[k].TurnScriptsOn(); } } yield return new WaitForSecondsRealtime(0.001f); Links.x.diorama.SetupItems(); if (!Records.x.mainMenuOpen && this.sceneToLoad != "F4_BanquetIsle" && !this.loadingCharacterCreation) { Links.x.hudControl.ChangeHudVisibility(true, true); } if (Records.x.inOverworldMap || this.loadingCharacterCreation) { Links.x.hudControl.ChangeHudVisibility(false, true); } Links.x.rtsCamera.SwitchScene(); Links.x.hudControl.SwitchScene(); Links.x.hudControl.canvas.enabled = true; Links.x.partyColliderAdventure.itemCollector.LoadScene(); for (int partyCount = 0; partyCount < this.party.Count; partyCount = num + 1) { this.party[partyCount].FirstPosition(null); yield return new WaitForSecondsRealtime(0.001f); if (Records.x.inOverworldMap) { this.party[partyCount].SetMeshState(false); } else { this.party[partyCount].SetMeshState(true); } this.party[partyCount].stats.FormationTactics(); num = partyCount; } if (!this.newSceneFromMapExit) { this.LoadSummons(); } else { for (int l = 0; l < this.party.Count; l++) { if (this.party[l].summoned && this.party[l] != this.boro && this.party[l].dockFriend) { this.party[l].dockFriend.AddPortrait(); } } } Links.x.gameplay.SetControlsText(false); if (!Links.x.diorama.underground && !Records.x.banquetIsle && !Records.x.mainMenuOpen) { Links.x.sceneMap.NewScene(Links.x.diorama.sceneName); } bool flag2 = false; if (this.loadingCharacterCreation || this.sceneToLoad == "F4_BanquetIsle") { this.partyBoat.SetActive(false); this.party[0].fowRevealer.main = true; Links.x.beachCollider.SetActive(false); } else { if (Links.x.diorama.playerStartBoatDefault && Records.x.BoroInParty()) { flag2 = true; Records.x.boroLastBeachPoint = Links.x.diorama.playerStartBoatDefault.position; } if (flag2) { Vector3 boroPosition = Records.x.boroPosition; Quaternion boroRotation = Records.x.boroRotation; bool partySailing = Records.x.partySailing; string boroScene = Records.x.boroScene; Quaternion boatRotation = Records.x.boatRotation; Vector3 boatPosition = Records.x.boatPosition; bool partyBoatDown = Records.x.partyBoatDown; if (Records.x.boroName == "") { Records.x.boroName = "Boro"; } if (flag2) { if (Records.x.boroID == "") { Debug.Log("Missing boro info"); Records.x.AddFirstBoro(); } string boroID = Records.x.boroID; if (partySailing) { if (this.boro) { string boroModel = Records.x.GetBoroModel(boroID, false, true); if (!(this.boro.stats.model == boroModel)) { Links.x.gaia.boro.stats.model = boroModel; Links.x.gaia.boro.SetupBody(); } } if (!this.boro) { Records.x.CreateBoro(false); } Links.x.gaia.boro.SetMeshState(false); this.partyBoat.SetActive(true); if (!this.boat.setup) { this.boat.PartySetupFromLoad(); this.partyBoat.transform.position = boatPosition; this.partyBoat.transform.rotation = boatRotation; } this.restingBoat.SetActive(false); } else { if (!this.boro) { Records.x.CreateBoro(true); } this.partyBoat.SetActive(false); if (partyBoatDown) { this.restingBoat.SetActive(true); this.restingBoat.transform.position = boatPosition; this.restingBoat.transform.rotation = boatRotation; } else { this.restingBoat.SetActive(false); } } } else { this.partyBoat.SetActive(false); } } else { Links.x.beachCollider.SetActive(false); } } Records.x.boroNearby = flag2; if (!this.newSceneFromMapExit) { Links.x.characterSheet.StartEndMenu(false, false); } Links.x.OrderPortraitList(); Links.x.characterSheet.OrderPortraits(); Links.x.hudControl.SetPortraitPositions(); Links.x.hudControl.SetPortraitBacks(); Links.x.partyColliderAdventure.itemCollector.UpdateSize(); Links.x.fellowship.UpdateHotkeys(); Links.x.fellowship.SetFriends(); yield return new WaitForSecondsRealtime(0.05f); if (Records.x.mainMenuOpen) { Links.x.hudControl.ChangeHudVisibility(false, true); } else if (!Records.x.dialogue && !Records.x.removeControls && this.loadingCharacterCreation) { Links.x.hudControl.ChangeHudVisibility(true, true); } for (int partyCount = 0; partyCount < this.party.Count; partyCount = num + 1) { this.party[partyCount].FirstPosition(null); yield return new WaitForSecondsRealtime(0.001f); if (Records.x.inOverworldMap) { this.party[partyCount].SetMeshState(false); } else if ((this.party[partyCount].isBoro && !this.party[partyCount].sailing) || !this.party[partyCount].isBoro) { this.party[partyCount].SetMeshState(true); } if (!this.party[partyCount].summoned && !this.party[partyCount].isBoro) { Links.x.fellowship.AddPortraitChange(this.party[partyCount]); } if (partyCount == 0 && this.loadingCharacterCreation) { this.party[partyCount].AddToSelected(true, false); } num = partyCount; } if (Links.x.main.node == null) { Links.x.main.FindCurrentNodeAnytime(true); } this.playerStartingPosition = Links.x.main.tr.position; this.playerStartingNode = Links.x.main.node; Links.x.diorama.UpdateTemporaryCreatureStartNodes(); if (this.sceneToLoad == "F4_BanquetIsle" && this.newGameFromMenu) { this.party[0].SetPosition(Links.x.diorama.playerStartDefault.position, null); this.party[0].SetRotation(Links.x.diorama.playerStartDefault.rotation, false, true); this.party[0].FirstPosition(null); this.playerStartingPosition = Links.x.main.tr.position; this.playerStartingNode = Links.x.main.node; base.StartCoroutine(this.Intro()); } if (this.sceneToLoad == "C6_FortenLazure" && QuestLog.GetQuestState("CharacterCreation") == QuestState.Unassigned) { Links.x.diorama.gameObject.AddComponent().StartDemo(); } if (this.newGameFromMenu) { Links.x.diorama.gameObject.AddComponent().StartBanquetIsle(); } this.SceneCamera(); if (this.boro) { Links.x.hudControl.ShowSheep(false); if (Records.x.boroInvisible || Links.x.cameraEffects.indoors) { this.boroControls.Leave(); } } Links.x.cameraEffects.SetShadowInfo(); Links.x.sceneMap.CheckQuests(); if (Links.x.sceneMap.undergroundMap) { Links.x.sceneMap.undergroundMap.UsedPreviousDoor(this.savedMapExitName, this.saveMapExitSub); } this.savedMapExitName = ""; this.saveMapExitSub = ""; Links.x.gameFeed.SetState(Links.x.options.gameFeedState); yield return new WaitForSecondsRealtime(0.2f); this.sceneLoaded = true; this.SetEnvironmentPlaylist(false, Links.x.main.inTown, true); if (Links.x.fadeAnimator.GetCurrentAnimatorStateInfo(0).IsName("FadeOut") || Links.x.fadeAnimator.GetCurrentAnimatorStateInfo(0).IsName("FadeOutLoop")) { if (this.loadingCharacterCreation) { yield return new WaitForSecondsRealtime(0.2f); } if (!this.newGameFromMenu && !this.loadingCharacterCreation) { this.PlayFade("In", "Unscaled"); } } if (Records.x.useTestCharacters) { Links.x.protagonist = this.party[0]; this.party[0].stats.protagonist = true; this.party[0].protagonist = true; } this.newGameFromMenu = false; for (int m = 0; m < this.party.Count; m++) { if (this.party[m] && this.party[m].fowRevealer) { this.party[m].fowRevealer.enabled = true; } if (this.party[m] && this.party[m].fowRevealerInterior) { this.party[m].fowRevealerInterior.enabled = true; } if (this.party[m] && !this.party[m].isBoro && !this.party[m].summoned) { this.party[m].RemovePlayerLight(); this.party[m].portrait.skillBag.NewPortrait(); } } List boats = Links.x.boats; for (int n = 0; n < boats.Count; n++) { if (boats[n] && !boats[n].navigator) { boats[n].SetBoatNavigator(null, false); } } Records.x.CheckForTemporaryCreatures(2); Links.x.diorama.UpdateTemporaryCreatureStartNodes(); Links.x.hudControl.LoadButtonImages(); Links.x.sensory.StartGrounder(); this.newSceneFromMapExit = false; this.newSceneFromOverworldMap = false; if (this.doCircle) { Records.x.CircleFromLoad(); } this.doCircle = false; yield return new WaitForSecondsRealtime(0.5f); Links.x.cameraEffects.ToggleObscurance(); Links.x.partyColliderCombat.gameObject.transform.localScale = Vector3.one; Links.x.partyColliderAdventure.gameObject.transform.localScale = Vector3.one; Links.x.main.DoFootsteps(); Links.x.rtsCamera.Follow(Links.x.main.transform, Links.x.main, false); if (Links.x.diorama.underground && Links.x.sceneMap.undergroundMap) { Links.x.sceneMap.undergroundMap.ChangedArea(Links.x.rtsCamera.currentBoundsName); } Records.x.useTestCharacters = false; yield break; } // Token: 0x06000D61 RID: 3425 RVA: 0x00100724 File Offset: 0x000FE924 public void SceneCamera() { if (!Records.x.dialogue) { Links.x.rtsCamera.JumpTo(Links.x.main.tr, true); Links.x.rtsCamera.Follow(Links.x.main.transform, Links.x.main, false); Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); Links.x.rtsCamera.singleJumpFrame = 3; if (!Records.x.cameraFollowing && Records.x.cameraPosition != Vector3.zero) { Links.x.rtsCamera.gameObject.transform.position = Records.x.cameraPosition; Links.x.rtsCamera.cameraTarget.transform.position = Records.x.cameraTargetPosition; Links.x.rtsCamera.LookAt = Records.x.cameraTargetPosition; Links.x.rtsCamera.singleJumpFrame = 3; Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); return; } } else { Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); } } // Token: 0x06000D62 RID: 3426 RVA: 0x0010087B File Offset: 0x000FEA7B private IEnumerator Intro() { Records.x.mainMenuOpen = false; Records.x.RemoveControls(true); yield return new WaitForSecondsRealtime(0.25f); Records.x.RemoveControls(false); Links.x.hudControl.ChangeHudVisibility(true, true); yield return new WaitForSecondsRealtime(2f); yield break; } // Token: 0x06000D63 RID: 3427 RVA: 0x00100883 File Offset: 0x000FEA83 public void OpenCharacterCreation(bool fromBeginning, Character cc, Character respec) { if (fromBeginning) { this.ccCharacter = cc; } base.StartCoroutine(this.OpenCharacterCreationTimed(fromBeginning, respec)); } // Token: 0x06000D64 RID: 3428 RVA: 0x0010089E File Offset: 0x000FEA9E private IEnumerator OpenCharacterCreationTimed(bool fromBeginning, Character respec) { if (Links.x.creation) { if (fromBeginning) { Links.x.gaia.PlayFade("Out", "Unscaled"); yield return new WaitForSecondsRealtime(0.25f); } Links.x.gameplay.TogglePause(false); Links.x.creation.fromBeginning = fromBeginning; Links.x.creation.gameObject.SetActive(true); if (fromBeginning) { Links.x.gaia.PlayFade("In", "Unscaled"); } } else { bool justRespec = false; int previousXP = 0; int previousLevel = 0; if (fromBeginning) { Links.x.gaia.PlayFade("Out", "Unscaled"); yield return new WaitForSecondsRealtime(0.25f); Links.x.gaia.PlayFade("In", "Unscaled"); } else if (!fromBeginning && respec) { SceneManager.SetActiveScene(SceneManager.GetSceneAt(0)); justRespec = true; previousXP = respec.stats.XP; previousLevel = respec.stats.level; respec.stats.level = 1; respec.stats.XP = 0; } else { SceneManager.SetActiveScene(SceneManager.GetSceneAt(0)); yield return new WaitForSecondsRealtime(0.1f); if (Records.x.partyTotal < 7) { Records.x.partyTotal = 7; } Links.x.gaia.CreateCharacterSingle(Links.x.main.tr.position, Links.x.main.tr.rotation, Records.x.partyTotal + 1); yield return new WaitForSecondsRealtime(0.4f); } SceneManager.SetActiveScene(SceneManager.GetSceneAt(1)); GameObject gameObject = Object.Instantiate(this.characterCreation, Vector3.zero, Quaternion.Euler(Vector3.zero), null); gameObject.GetComponent().fromBeginning = fromBeginning; gameObject.GetComponent().justRespec = justRespec; gameObject.GetComponent().respecCharacter = respec; gameObject.GetComponent().previousXP = previousXP; gameObject.GetComponent().previousLevel = previousLevel; Links.x.gameplay.TogglePause(false); } yield break; } // Token: 0x06000D65 RID: 3429 RVA: 0x001008BC File Offset: 0x000FEABC public void SetEnvironmentPlaylist(bool onBeach, bool inTown, bool alwaysCheckSoundtrack) { bool flag = false; string text = ""; if (Links.x.hasMain && !Links.x.diorama.underground && Links.x.main.desiredGraph == 1) { flag = true; } if (onBeach) { text = "Beach"; } else if (inTown && !flag) { if (Links.x.gameplay.IsNight()) { text = "Night Town"; } else { text = "Town"; } } else if (flag) { text = "None"; } else if (!inTown) { if (Links.x.diorama.exteriorForest) { text = "Forest"; } else if (Links.x.diorama.exteriorDeepForest) { text = "DeepForest"; } else if (Links.x.diorama.exteriorWaterBeach) { text = "Water"; } else if (Links.x.diorama.exteriorBog) { text = "Forest"; } else if (Links.x.diorama.exteriorMountains) { text = "Forest"; } else if (Links.x.diorama.interiorCave) { text = "Cave"; } else if (Links.x.diorama.interiorTomb) { text = "InteriorEmpty"; } else if (Links.x.diorama.horror) { text = "Horror"; } } if (Records.x.mainMenuOpen || (flag && Links.x.creation)) { text = "Tavern"; } if (text == "None") { this.FadeOutPlaylist(false, 1f); } else { this.SetPlaylist(text, false, 0f); } if (this.debugPlaylist) { Debug.Log(text + " " + this.currentPlaylist); } if (text != this.currentPlaylist || alwaysCheckSoundtrack || this.currentPlaylist == "") { this.CheckForNewSoundtrack(text, flag, inTown); } } // Token: 0x06000D66 RID: 3430 RVA: 0x00100AB4 File Offset: 0x000FECB4 public void CheckForNewSoundtrack(string n, bool indoors, bool inTown) { if (this.debugPlaylist) { Debug.Log(string.Concat(new string[] { "Checking for new soundtrack ", n, " ", indoors.ToString(), " ", inTown.ToString(), " ", this.playingSoundtrackFromInWorld.ToString(), " ", Links.x.gaia.sceneLoaded.ToString() })); } if (this.playingSoundtrackFromInWorld) { return; } if (!Links.x.gaia.sceneLoaded) { return; } if (Records.x.removeControls) { return; } if (Records.x.InCombat(false)) { return; } float num = Random.Range(1f, 10f); if (Records.x.banquetIsle) { if (!Records.x.removeControls) { this.SetPlaylist("Banquet Isle", true, Random.Range(1f, 3f)); return; } } else if (n == "Town" || (indoors && inTown)) { int num2 = Random.Range(0, 6); if (num2 == 0) { this.SetPlaylist("Garrison", true, num); return; } if (num2 == 1) { this.SetPlaylist("Ambience", true, num); return; } if (num2 == 2) { this.SetPlaylist("Mood", true, num); return; } if (num2 == 3) { this.SetPlaylist("Wandering", true, num); return; } if (num2 == 4) { this.SetPlaylist("Lazure", true, num); return; } if (num2 == 5) { this.SetPlaylist("Wandering", true, num); return; } } else { if (n == "Forest") { int num3 = Random.Range(0, 4); if (num3 == 0) { this.SetPlaylist("Trees", true, num); } else if (num3 == 1) { this.SetPlaylist("Creepy Trees", true, num); } else if (num3 == 2) { this.SetPlaylist("Mood", true, num); } else if (num3 == 3) { this.SetPlaylist("Wandering", true, num); } else if (num3 == 4) { this.SetPlaylist("Ambience", true, num); } } if (n == "Cave") { this.SetPlaylist("Caves", true, num); } if (n == "InteriorEmpty" && !Links.x.diorama.interiorTomb) { int num4 = Random.Range(0, 4); if (num4 == 0) { this.SetPlaylist("Dangerous Area A", true, num); } else if (num4 == 1) { this.SetPlaylist("Dangerous Area B", true, num); } else if (num4 == 2) { this.SetPlaylist("Dangerous Area C", true, num); } else if (num4 == 3) { this.SetPlaylist("Lachovinians", true, num); } } if (n == "Tomb" || Links.x.diorama.interiorTomb) { this.SetPlaylist("Tomb", true, num); } } } // Token: 0x06000D67 RID: 3431 RVA: 0x00100D6C File Offset: 0x000FEF6C public void SetPlaylist(string playlistName, bool useSoundtrackPlaylist, float delay) { if (useSoundtrackPlaylist) { Links.x.soundtrack.onlyStartCombatTracks = this.playingSoundtrackFromInWorld; if (this.debugPlaylist) { Debug.Log("From gaia set playlist " + playlistName + " " + this.currentSoundtrack); } if (playlistName != this.currentSoundtrack && (!this.playingSoundtrackFromInWorld || (Records.x.InCombat(false) && this.playingSoundtrackFromInWorld))) { this.currentSoundtrack = playlistName; if (!Records.x.editor) { Links.x.soundtrack.debug = false; } Links.x.soundtrack.filming = Records.x.filming; Links.x.soundtrack.currentSoundtrack = this.currentSoundtrack; Links.x.soundtrack.StartSong(1f, this.currentSoundtrack, delay); return; } } else if (playlistName != this.currentPlaylist) { this.currentPlaylist = playlistName; if (playlistName != "") { MasterAudio.FadePlaylistToVolume("PlaylistController", Links.x.options.soundVolume, 2f); MasterAudio.StartPlaylist("PlaylistController", playlistName, null); } } } // Token: 0x06000D68 RID: 3432 RVA: 0x00100EA4 File Offset: 0x000FF0A4 public void FadeOutPlaylist(bool useSoundtrackPlaylist, float fadeTime) { Links.x.soundtrack.onlyStartCombatTracks = this.playingSoundtrackFromInWorld; if (this.debugPlaylist) { Debug.Log("From gaia fade out playlist " + useSoundtrackPlaylist.ToString()); } if (useSoundtrackPlaylist) { this.currentSoundtrack = ""; Links.x.soundtrack.currentSoundtrack = ""; Links.x.soundtrack.EndSong(fadeTime, false); return; } this.currentPlaylist = ""; MasterAudio.FadePlaylistToVolume("PlaylistController", 0f, fadeTime); } // Token: 0x06000D69 RID: 3433 RVA: 0x00100F34 File Offset: 0x000FF134 public void SaveSummons() { string text = Records.x.openBook + "/Summons.es3"; this.saveFile = new ES3File(text); this.summons.Clear(); this.summonPosition.Clear(); this.summonHealth.Clear(); this.summonsTime.Clear(); this.summonsDetails.Clear(); this.summonsPotency.Clear(); for (int i = 0; i < this.party.Count; i++) { if (this.party[i].summoned && this.party[i] != this.boro) { float leaveTime = this.party[i].stats.leaveTime; if (this.party[i].stats.HealthCurrent() > 0 && (!this.party[i].summoned || (this.party[i].summoned && !this.party[i].stats.xmlName.Contains("Summon")))) { this.summonPosition.Add(this.party[i].tr.position); this.summons.Add(this.party[i].stats.xmlName); this.summonHealth.Add(this.party[i].stats.HealthCurrent()); this.summonsTime.Add(leaveTime); this.summonsDetails.Add(this.party[i].GetBoundCharacter()); bool flag = this.party[i].stats.HasEffect("PipePotency"); bool flag2 = this.party[i].stats.HasEffect("CharmPotency"); if (flag) { Effects existingEffect = this.party[i].stats.GetExistingEffect("PipePotency"); if (existingEffect) { this.summonsPotency.Add(existingEffect.sourceLevel); } else { this.summonsPotency.Add(0f); } this.party[i].pipeSummons = true; } if (flag2) { Effects existingEffect2 = this.party[i].stats.GetExistingEffect("CharmPotency"); if (existingEffect2) { this.summonsPotency.Add(existingEffect2.sourceLevel); } else { this.summonsPotency.Add(0f); } } if (!flag2 && !flag) { this.summonsPotency.Add(0f); } } } } this.saveFile.Save>("Summons", this.summons); this.saveFile.Save>("SummonsHealth", this.summonHealth); this.saveFile.Save>("SummonsPosition", this.summonPosition); this.saveFile.Save>("SummonsTime", this.summonsTime); this.saveFile.Save>("SummonsScene", this.summonsDetails); this.saveFile.Save>("SummonsPotency", this.summonsPotency); this.saveFile.Sync(); } // Token: 0x06000D6A RID: 3434 RVA: 0x00101288 File Offset: 0x000FF488 public void LoadSummons() { string text = Records.x.openBook + "/Summons.es3"; this.saveFile = new ES3File(text); this.summons.Clear(); this.summonPosition.Clear(); this.summonHealth.Clear(); this.summonsTime.Clear(); this.summonsDetails.Clear(); this.summonsPotency.Clear(); if (this.saveFile.KeyExists("Summons")) { this.summonHealth = this.saveFile.Load>("SummonsHealth"); this.summons = this.saveFile.Load>("Summons"); this.summonPosition = this.saveFile.Load>("SummonsPosition"); this.summonsTime = this.saveFile.Load>("SummonsTime"); this.summonsDetails = this.saveFile.Load>("SummonsScene"); this.summonsPotency = this.saveFile.Load>("SummonsPotency"); for (int i = 0; i < this.summons.Count; i++) { Character firstCharacter = this.CreateCreature(this.summonPosition[i], Quaternion.LookRotation(Links.x.main.tr.position, this.summonPosition[i]), this.summons[i], true, this.summonsTime[i], 1).GetFirstCharacter(); if (Links.x.diorama.singleCharacter) { firstCharacter.offMap = true; firstCharacter.TurnScriptsOff(); } if (this.summonsPotency[i] > 0f && firstCharacter) { if (this.summons[i].Contains("Summon")) { Effects effects = firstCharacter.gameObject.AddComponent(); Links.x.cellar.AddEffects(effects); effects.source = null; effects.target = firstCharacter; effects.effectName = "PipePotency"; effects.sourceLevel = this.summonsPotency[i]; effects.Inflicted(true); } if (firstCharacter.stats.race == "Forest" || firstCharacter.stats.race == "Fish" || firstCharacter.stats.race == "Shroom") { Effects effects2 = firstCharacter.gameObject.AddComponent(); Links.x.cellar.AddEffects(effects2); effects2.source = null; effects2.target = firstCharacter; effects2.effectName = "CharmPotency"; effects2.sourceLevel = this.summonsPotency[i]; effects2.Inflicted(true); } } if (firstCharacter) { if (firstCharacter.stats.race == "Vol") { Character character = Links.x.GetPartyFromName(this.summonsDetails[i]); if (!character) { character = Links.x.GetPagan(); } firstCharacter.GetFriendDock(character); } if (firstCharacter.stats.race == "Forest" || firstCharacter.stats.race == "Fish" || firstCharacter.stats.race == "Shroom") { Character character2 = Links.x.GetPartyFromName(this.summonsDetails[i]); if (!character2) { character2 = Links.x.GetBinder(firstCharacter.stats.race); } firstCharacter.Charmed(character2); } } } } } // Token: 0x06000D6B RID: 3435 RVA: 0x00101624 File Offset: 0x000FF824 public CreatureActions CreateCreature(Vector3 position, Quaternion rotation, string xmlName, bool alliedToParty, float summonTime, int number) { GameObject gameObject = new GameObject("Summoned " + xmlName + " " + number.ToString()); gameObject.transform.parent = base.gameObject.transform; gameObject.transform.parent = null; gameObject.transform.position = position; gameObject.transform.rotation = rotation; GameObject gameObject2 = new GameObject("DayNight"); gameObject2.transform.SetParent(gameObject.transform); gameObject2.transform.localPosition = Vector3.zero; GameObject gameObject3 = new GameObject("Walk"); gameObject3.transform.SetParent(gameObject2.transform); gameObject3.transform.localPosition = Vector3.zero; Creatures creatures = gameObject.AddComponent(); if (number == 0) { number = 1; } creatures.number = number; int characterCreatureIndex = Records.x.GetCharacterCreatureIndex(xmlName); if (characterCreatureIndex > -1) { creatures.characterName = (Creatures.xmlNames)characterCreatureIndex; if (alliedToParty) { creatures.temperament = Creatures.temperamentState.Ally; } else if (xmlName.Contains("Boro")) { creatures.temperament = Creatures.temperamentState.FightsIfAttacked; } else { creatures.temperament = Creatures.temperamentState.AttacksOnSight; } CreatureActions creatureActions = gameObject.gameObject.AddComponent(); creatureActions.creatures = creatures; creatureActions.summons = true; creatureActions.alliedToParty = alliedToParty; if (xmlName == "Ghost") { creatureActions.SetAsResurrected(); } creatureActions.SetupCreatures(); Character firstCharacter = creatureActions.GetFirstCharacter(); if (firstCharacter) { firstCharacter.SetMeshState(true); if (alliedToParty && !xmlName.Contains("Friend") && !xmlName.Contains("Acorn")) { xmlName.Contains("Sheep"); } if (summonTime > 0f) { firstCharacter.stats.leaveTime = summonTime; } if (Records.x.InCombat(false)) { Links.x.combat.AddParty(creatureActions.GetFirstCharacter(), false, null, true); } firstCharacter.jumpingPosition = false; } else { string text = "No first character summoned "; CreatureActions creatureActions2 = creatureActions; Debug.Log(text + ((creatureActions2 != null) ? creatureActions2.ToString() : null)); } return creatureActions; } Debug.Log("no creature found for " + xmlName); return null; } // Token: 0x06000D6C RID: 3436 RVA: 0x00101835 File Offset: 0x000FFA35 public void SaveOverworldMapInfo() { } // Token: 0x06000D6D RID: 3437 RVA: 0x00101837 File Offset: 0x000FFA37 public void UpdateOverworldFow(List buff) { } // Token: 0x06000D6E RID: 3438 RVA: 0x00101839 File Offset: 0x000FFA39 public void LoadMapVariables() { } // Token: 0x06000D6F RID: 3439 RVA: 0x0010183B File Offset: 0x000FFA3B public void RandomVariables() { } // Token: 0x06000D70 RID: 3440 RVA: 0x00101840 File Offset: 0x000FFA40 public void DestroyPartyObjects() { if (this.boroControls) { this.boroControls.Stop(); } Links.x.inventory.ClearAllBags(); this.party = Links.x.party; if (this.party != null) { for (int i = 0; i < this.party.Count; i++) { this.party[i].DestroyCharacter(); } this.party.Clear(); } List deads = Links.x.deads; for (int j = 0; j < deads.Count; j++) { deads[j].DestroyCharacter(); } if (this.boat.sailing) { this.boat.ClearPartyBoat(); } Links.x.portraitOrder.Clear(); Links.x.hudControl.ClearOnReload(); Links.x.journal.ClearNotes(); } // Token: 0x06000D71 RID: 3441 RVA: 0x0010192B File Offset: 0x000FFB2B public string GetTestLocation(string txt) { return ""; } // Token: 0x0400151D RID: 5405 [Header("CREATING MAP")] private List party; // Token: 0x0400151E RID: 5406 private GameObject go; // Token: 0x0400151F RID: 5407 private Transform tr; // Token: 0x04001520 RID: 5408 public bool sceneLoaded; // Token: 0x04001521 RID: 5409 public bool pathfindingReady; // Token: 0x04001522 RID: 5410 public bool newGame; // Token: 0x04001523 RID: 5411 public bool newGameFromMenu; // Token: 0x04001524 RID: 5412 public bool changingMapsComplete; // Token: 0x04001525 RID: 5413 public bool noAstar; // Token: 0x04001526 RID: 5414 public string sceneToLoad = "HamletAConsil"; // Token: 0x04001527 RID: 5415 public string currentSceneName; // Token: 0x04001528 RID: 5416 public string mapDirection; // Token: 0x04001529 RID: 5417 public string changeScene; // Token: 0x0400152A RID: 5418 public string currentPlaylist; // Token: 0x0400152B RID: 5419 public string currentSoundtrack; // Token: 0x0400152C RID: 5420 public GameObject characterCreation; // Token: 0x0400152D RID: 5421 public List partyNames = new List(); // Token: 0x0400152E RID: 5422 public List partyIDs = new List(); // Token: 0x0400152F RID: 5423 public Vector3 playerStartingPosition; // Token: 0x04001530 RID: 5424 public GraphNode playerStartingNode; // Token: 0x04001531 RID: 5425 public GridGraph interiorGraph; // Token: 0x04001532 RID: 5426 public GridGraph exteriorGraph; // Token: 0x04001533 RID: 5427 public Vector3 exitPoint; // Token: 0x04001534 RID: 5428 private Character ccCharacter; // Token: 0x04001535 RID: 5429 public bool changingScene; // Token: 0x04001536 RID: 5430 public bool loadingCharacterCreation; // Token: 0x04001537 RID: 5431 public bool settingUpParty; // Token: 0x04001538 RID: 5432 public bool doCircle; // Token: 0x04001539 RID: 5433 private IEnumerator loadCoroutine; // Token: 0x0400153A RID: 5434 public bool newSceneFromMapExit; // Token: 0x0400153B RID: 5435 public bool newSceneFromOverworldMap; // Token: 0x0400153C RID: 5436 private ES3File saveFile; // Token: 0x0400153D RID: 5437 public bool playingSoundtrackFromInWorld; // Token: 0x0400153E RID: 5438 public GameSecondCounter gameSecondCounter; // Token: 0x0400153F RID: 5439 [Header("SUMMONS")] private List summons = new List(); // Token: 0x04001540 RID: 5440 private List summonHealth = new List(); // Token: 0x04001541 RID: 5441 private List summonPosition = new List(); // Token: 0x04001542 RID: 5442 private List summonsTime = new List(); // Token: 0x04001543 RID: 5443 private List summonsDetails = new List(); // Token: 0x04001544 RID: 5444 private List summonsPotency = new List(); // Token: 0x04001545 RID: 5445 [Header("SCENE TRANSFER")] public List changingMaps = new List(); // Token: 0x04001546 RID: 5446 public List changingMapsDistance = new List(); // Token: 0x04001547 RID: 5447 private bool cameraFollow; // Token: 0x04001548 RID: 5448 private string savedSceneFrom; // Token: 0x04001549 RID: 5449 private string savedSubExit; // Token: 0x0400154A RID: 5450 public bool waitingToRemoveScene; // Token: 0x0400154B RID: 5451 private int sceneLoadedCount; // Token: 0x0400154C RID: 5452 private string savedMapExitName; // Token: 0x0400154D RID: 5453 private string saveMapExitSub; // Token: 0x0400154E RID: 5454 [Header("BOAT")] public GameObject partyBoat; // Token: 0x0400154F RID: 5455 public Boat boat; // Token: 0x04001550 RID: 5456 public GameObject restingBoat; // Token: 0x04001551 RID: 5457 public List restingBoatPoints = new List(); // Token: 0x04001552 RID: 5458 public Character boro; // Token: 0x04001553 RID: 5459 public Boro boroControls; // Token: 0x04001554 RID: 5460 private bool clearPreviousScene; // Token: 0x04001555 RID: 5461 private bool cleared; // Token: 0x04001556 RID: 5462 private bool addressablesLoading; // Token: 0x04001557 RID: 5463 private bool loaded; // Token: 0x04001558 RID: 5464 private bool unloaded; // Token: 0x04001559 RID: 5465 public bool debugPlaylist; }