using System; using System.Collections; using System.Collections.Generic; using DarkTonic.MasterAudio; using LOS; using Pathfinding; using PixelCrushers.DialogueSystem; using TheVegetationEngine; using UnityEngine; // Token: 0x02000085 RID: 133 [ExecuteInEditMode] public class Diorama : MonoBehaviour { // Token: 0x06000CEA RID: 3306 RVA: 0x000F9D51 File Offset: 0x000F7F51 private void Awake() { this.sceneInfo = base.gameObject.GetComponent(); } // Token: 0x06000CEB RID: 3307 RVA: 0x000F9D64 File Offset: 0x000F7F64 private void Start() { if (Links.x) { this.linksParty = Links.x.portraitOrder; for (int i = 0; i < this.sceneViews.Count; i++) { this.sceneViews[i].Setup(); } for (int j = 0; j < this.fogColliders.Count; j++) { this.fogColliders[j].enabled = false; } this.blueFogBounds.Clear(); for (int k = 0; k < this.blueFog.Count; k++) { this.blueFog[k].enabled = false; this.blueFogBounds.Add(this.blueFog[k].bounds); } if (this.cameraPoints) { foreach (object obj in this.cameraPoints) { Transform transform = (Transform)obj; if (transform != this.cameraPoints) { transform.gameObject.layer = 10; transform.gameObject.SetActive(true); } } } foreach (object obj2 in base.transform) { Transform transform2 = (Transform)obj2; if (transform2.gameObject.name.Contains("Ghost Point")) { this.ghostPoint = transform2.gameObject; } } Links.x.fogOfWar = this.fogOfWar; Links.x.fogOfWarInterior = this.fogOfWarInterior; Links.x.diorama = this; if (this.sceneDirectionalLight) { this.sceneDirectionalLight.gameObject.SetActive(false); Links.x.gameplay.sunlightAnimator.exteriorRotation = this.sceneDirectionalLight.gameObject.transform.rotation.eulerAngles; } if (this.vegetation) { this.vegetation.mainCamera = Links.x.worldCamera; this.globalVegVolume = this.vegetation.transform; this.globalVegVolume.localScale = new Vector3(80f, 80f, 80f); } if (this.sceneCamera) { this.sceneCamera.enabled = false; } Links.x.cameraEffects.usesTimeOfDay = this.timeOfDay; Links.x.cameraEffects.hasDirectionalLight = true; if (this.sceneViews.Count > 0) { this.currentCameraView = this.sceneViews[0].sceneCamera; } else { this.currentCameraView = this.sceneCamera; } Links.x.gaia.NewSceneLoaded(); Links.x.sensory = base.gameObject.GetComponent(); this.quads = Links.x.quads; this.party = Links.x.party; Links.x.cameraEffects.SetFog(); if (Links.x.options.graphicsQuality == 0) { this.SetTerrainQuality(0f); } else if (Links.x.options.graphicsQuality == 1) { this.SetTerrainQuality(0.6f); } else { this.SetTerrainQuality(1f); } } this.itemIDs.Clear(); this.itemSaveIDs.Clear(); this.itemAmts.Clear(); this.itemSocketsA.Clear(); this.itemSocketsB.Clear(); this.itemsForSaleStates.Clear(); this.itemPositions.Clear(); this.itemLinks.Clear(); this.itemLinkIDs.Clear(); this.itemPrompts.Clear(); this.itemOriginals.Clear(); if (!this.promptsFolder) { this.promptsFolder = GameObject.Find("~ Prompts"); } if (this.promptsFolder) { this.prompts = this.promptsFolder.GetComponentsInChildren(true); } this.activeView = null; Shader.SetGlobalFloat("_InGhostFog", 0f); this.mainCharacterInGhostFog = false; this.boatCollider = GameObject.Find("collider_boat"); if (this.boatCollider) { GameObject gameObject = GameObject.Find("collider_water"); if (gameObject) { this.waterY = gameObject.transform.position.y; } else { this.waterY = 20f; } this.boatCollider.transform.position = new Vector3(this.boatCollider.transform.position.x, gameObject.transform.position.y - 1f, this.boatCollider.transform.position.z); this.boatColliderY = this.boatCollider.transform.position.y; return; } this.boatColliderY = 19.5f; this.waterY = 20f; } // Token: 0x06000CEC RID: 3308 RVA: 0x000FA2A4 File Offset: 0x000F84A4 public Transform ReturnJumpPoint() { if (Records.x.editor && QuestLog.GetQuestState("CharacterCreation") == QuestState.Success) { List list = new List(); foreach (object obj in base.transform) { Transform transform = (Transform)obj; if (transform.gameObject.name.Contains("Jump")) { list.Add(transform); } } if (list.Count > 0) { if (Random.Range(0, 10) == 0) { return this.playerStartDefault; } return list[Random.Range(0, list.Count)]; } } return this.playerStartDefault; } // Token: 0x06000CED RID: 3309 RVA: 0x000FA36C File Offset: 0x000F856C public void SetTerrainQuality(float n) { if ((float)Screen.height < 1000f && n > 0f && n < 1f) { n = 0.35f; } for (int i = 0; i < this.terrains.Count; i++) { this.terrains[i].detailObjectDensity = n; this.terrains[i].detailObjectDistance = 500f; } } // Token: 0x06000CEE RID: 3310 RVA: 0x000FA3DB File Offset: 0x000F85DB public void GetGhostNode() { if (this.ghostPoint) { this.ghostNode = Links.x.main.NearNode(this.ghostPoint.transform.position, false, 0, -1, 0); } } // Token: 0x06000CEF RID: 3311 RVA: 0x000FA413 File Offset: 0x000F8613 public SceneCamera GetIndoorView() { if (this.sceneViews.Count > 1) { return this.sceneViews[1]; } return null; } // Token: 0x06000CF0 RID: 3312 RVA: 0x000FA431 File Offset: 0x000F8631 public SceneCamera GetOutdoorView() { return this.sceneViews[0]; } // Token: 0x06000CF1 RID: 3313 RVA: 0x000FA43F File Offset: 0x000F863F public string GetCurrentCaptureCameraID() { if (this.activeView) { return this.activeView.id; } return ""; } // Token: 0x06000CF2 RID: 3314 RVA: 0x000FA460 File Offset: 0x000F8660 public void ToggleSceneCameras(bool interior, string captureCameraId) { if (!interior) { int num = 0; if (captureCameraId != "") { for (int i = 0; i < this.sceneViews.Count; i++) { if (this.sceneViews[i].id == captureCameraId) { num = this.sceneViews[i].index; } } } this.activeView = this.sceneViews[num]; this.currentCameraView = this.activeView.sceneCamera; this.activeView.On(); this.pointLightTransforms = 0; Links.x.cameraEffects.pointLightShadows.pointLightObject.SetActive(false); if (this.currentInteriorLight) { this.currentInteriorLight.TurnOffLights(); this.currentInteriorLight.InactiveLights(); } Links.x.fellowship.ClearCompanionNodes(); this.currentInteriorLight = null; } else { int num2 = 1; if (captureCameraId != "") { for (int j = 0; j < this.sceneViews.Count; j++) { if (this.sceneViews[j].id == captureCameraId) { num2 = this.sceneViews[j].index; } } } if (num2 < this.sceneViews.Count) { this.activeView = this.sceneViews[num2]; this.currentCameraView = this.activeView.sceneCamera; this.activeView.On(); InteriorLights pointLights = this.sceneViews[1].GetPointLights(Links.x.rtsCamera.coll); if (this.currentInteriorLight != pointLights) { if (this.currentInteriorLight) { this.currentInteriorLight.InactiveLights(); } this.pointLightTransforms = this.sceneViews[1].GetPointLightCount(Links.x.rtsCamera.coll); this.currentInteriorLight = pointLights; if (this.currentInteriorLight) { this.currentInteriorLight.TurnOffLights(); this.currentInteriorLight.ActiveLights(); } if (this.currentInteriorLight) { this.currentInteriorLight.SetUpCompanionNodes(); } } if (pointLights) { Links.x.cameraEffects.pointLightShadows.pointLightObject.SetActive(true); } else { Links.x.cameraEffects.pointLightShadows.pointLightObject.SetActive(false); } } } if (this.prevView && this.prevView != this.activeView) { this.prevView.Off(); } this.prevView = this.activeView; } // Token: 0x06000CF3 RID: 3315 RVA: 0x000FA70C File Offset: 0x000F890C public void ChangeTimeOfDay(bool sendDayNightEvent, bool timeJump) { if (this.prevTimeOfDay != Links.x.gameplay.timeOfDay) { if (Links.x.gameplay.timeOfDay == "Morning") { if (this.morningFolder) { this.morningFolder.SetActive(true); } if (this.afternoonFolder) { this.afternoonFolder.SetActive(false); } if (this.eveningFolder) { this.eveningFolder.SetActive(false); } if (this.nightFolder) { this.nightFolder.SetActive(false); } } if (Links.x.gameplay.timeOfDay == "Afternoon") { if (this.morningFolder) { this.morningFolder.SetActive(false); } if (this.afternoonFolder) { this.afternoonFolder.SetActive(true); } if (this.eveningFolder) { this.eveningFolder.SetActive(false); } if (this.nightFolder) { this.nightFolder.SetActive(false); } } if (Links.x.gameplay.timeOfDay == "Evening") { if (this.morningFolder) { this.morningFolder.SetActive(false); } if (this.afternoonFolder) { this.afternoonFolder.SetActive(false); } if (this.eveningFolder) { this.eveningFolder.SetActive(true); } if (this.nightFolder) { this.nightFolder.SetActive(false); } } if (Links.x.gameplay.timeOfDay == "Night") { if (this.morningFolder) { this.morningFolder.SetActive(false); } if (this.afternoonFolder) { this.afternoonFolder.SetActive(false); } if (this.eveningFolder) { this.eveningFolder.SetActive(false); } if (this.nightFolder) { this.nightFolder.SetActive(true); } } Links.x.hudControl.UpdateTimeOfDay(); } if (sendDayNightEvent) { this.DayNightSwitch(timeJump); } float num = Links.x.gameplay.gameHours; num = Mathf.Floor(num); string text = Links.x.gameplay.ShowHour(num); Links.x.gameFeed.AddFeed("New hour: " + text); if (this.prevTimeOfDay != Links.x.gameplay.timeOfDay) { if (Links.x.gameplay.timeOfDay == "Night") { Links.x.gameFeed.AddFeed("Sunset"); } else if (Links.x.gameplay.timeOfDay == "Morning") { Links.x.gameFeed.AddFeed("Sunrise"); } } this.prevTimeOfDay = Links.x.gameplay.timeOfDay; this.CheckRespawns(); this.CheckResurrections(); this.CheckStunsAndQuestChange(); } // Token: 0x06000CF4 RID: 3316 RVA: 0x000FAA34 File Offset: 0x000F8C34 public bool InResurrectionFog(Vector3 pt) { bool flag = false; bool flag2 = true; if (this.fogColliders.Count == 0 && !this.underground) { return false; } if (this.underground && !this.blackFow) { return false; } if (this.sceneName.Contains("C6") && QuestLog.GetQuestState("C6_Ghosts") == QuestState.Success) { flag2 = false; } if (!flag2) { return false; } if (this.blackFow) { return true; } for (int i = 0; i < this.fogColliders.Count; i++) { if (!flag) { Vector3 center = this.fogColliderBounds[i].center; pt.y = center.y; float num = this.fogColliderBounds[i].extents.x; if ((pt - center).sqrMagnitude < num * num) { flag = true; } } } return flag; } // Token: 0x06000CF5 RID: 3317 RVA: 0x000FAB10 File Offset: 0x000F8D10 public bool InSporeForest(Vector3 pt) { bool flag = false; if (this.sporeColliders.Count == 0) { return false; } for (int i = 0; i < this.sporeColliders.Count; i++) { if (!flag) { Vector3 center = this.sporeColliderBounds[i].center; pt.y = center.y; float num = this.sporeColliderBounds[i].extents.x; if ((pt - center).sqrMagnitude < num * num) { flag = true; } } } return flag; } // Token: 0x06000CF6 RID: 3318 RVA: 0x000FABA0 File Offset: 0x000F8DA0 public bool InTown(Vector3 pt) { bool flag = false; if (this.townColliders.Count == 0) { return false; } for (int i = 0; i < this.townColliders.Count; i++) { if (!flag) { Vector3 center = this.townColliderBounds[i].center; pt.y = center.y; float num = this.townColliderBounds[i].extents.x; if ((pt - center).sqrMagnitude < num * num) { flag = true; } } } return flag; } // Token: 0x06000CF7 RID: 3319 RVA: 0x000FAC30 File Offset: 0x000F8E30 public void SetVolume() { for (int i = 0; i < this.quads.Count; i++) { this.quads[i].SetVolume(); } } // Token: 0x06000CF8 RID: 3320 RVA: 0x000FAC64 File Offset: 0x000F8E64 public void GhostFogOn() { this.GhostMaterials(); this.mapCanResurrect = true; if (this.underground) { if (this.fogFadeCorout != null) { base.StopCoroutine(this.fogFadeCorout); this.fogFadeCorout = null; } this.fogFadeCorout = this.FadeGhostFog(this.currentFogValue, 1f); base.StartCoroutine(this.fogFadeCorout); } } // Token: 0x06000CF9 RID: 3321 RVA: 0x000FACC8 File Offset: 0x000F8EC8 public void GhostMaterials() { for (int i = 0; i < this.quads.Count; i++) { if (this.quads[i].art.sharedMaterial && this.quads[i].art.sharedMaterial.GetFloat("_IsGhostArea") >= 1f && !this.quads[i].art.sharedMaterial.shader.name.Contains("Ghost")) { this.quads[i].art.sharedMaterial.shader = Links.x.backgroundShaderGhosts; } } } // Token: 0x06000CFA RID: 3322 RVA: 0x000FAD88 File Offset: 0x000F8F88 public void GhostFogOff() { if (Records.x.editor) { Debug.Log("Ghost fog off"); } for (int i = 0; i < this.quads.Count; i++) { if (this.quads[i].art.sharedMaterial && this.quads[i].art.sharedMaterial.shader.name.Contains("Ghost")) { this.quads[i].art.sharedMaterial.shader = Links.x.backgroundShader; } } this.mapCanResurrect = false; if (this.underground) { if (this.fogFadeCorout != null) { base.StopCoroutine(this.fogFadeCorout); this.fogFadeCorout = null; } this.fogFadeCorout = this.FadeGhostFog(this.currentFogValue, 0f); base.StartCoroutine(this.fogFadeCorout); } } // Token: 0x06000CFB RID: 3323 RVA: 0x000FAE80 File Offset: 0x000F9080 public Character FindCharacterHerder() { for (int i = 0; i < this.creatureActions.Count; i++) { if (this.creatureActions[i] && this.creatureActions[i].xmlName != null && this.creatureActions[i].xmlName.Contains("Herder")) { Character firstCharacter = this.creatureActions[i].GetFirstCharacter(); if (firstCharacter && !firstCharacter.dead && !firstCharacter.stunned && !firstCharacter.sleeping) { return firstCharacter; } } } return null; } // Token: 0x06000CFC RID: 3324 RVA: 0x000FAF20 File Offset: 0x000F9120 public Character FindCharacter(string n) { for (int i = 0; i < this.creatureActions.Count; i++) { if (this.creatureActions[i] && this.creatureActions[i].xmlName == n) { return this.creatureActions[i].GetFirstCharacter(); } } return null; } // Token: 0x06000CFD RID: 3325 RVA: 0x000FAF84 File Offset: 0x000F9184 public DoorActions FindDoor(string n) { for (int i = 0; i < this.doorActions.Count; i++) { if (this.doorActions[i].gameObject.name == n) { return this.doorActions[i]; } } return null; } // Token: 0x06000CFE RID: 3326 RVA: 0x000FAFD4 File Offset: 0x000F91D4 public Character FindCharacterAnyState(string n) { int count = this.creatureActions.Count; for (int i = 0; i < count; i++) { CreatureActions creatureActions = this.creatureActions[i]; if (creatureActions.xmlName == n) { return creatureActions.GetFirstCharacter(true); } } return null; } // Token: 0x06000CFF RID: 3327 RVA: 0x000FB020 File Offset: 0x000F9220 public PromptActions GetPromptWithQuest(string n) { foreach (PromptActions promptActions in this.promptActions) { if (promptActions.prompt.type == Prompts.types.puzzle && promptActions.prompt.questName.ToString() == n) { return promptActions; } } return null; } // Token: 0x06000D00 RID: 3328 RVA: 0x000FB0A0 File Offset: 0x000F92A0 public void CheckCampCleared() { foreach (PromptActions promptActions in this.promptActions) { if (promptActions.prompt.type == Prompts.types.campCleared) { promptActions.CheckStatus(); } } } // Token: 0x06000D01 RID: 3329 RVA: 0x000FB104 File Offset: 0x000F9304 public void CheckQuestChange() { for (int i = 0; i < this.creatureActions.Count; i++) { this.creatureActions[i].CheckQuestSwap(); } } // Token: 0x06000D02 RID: 3330 RVA: 0x000FB138 File Offset: 0x000F9338 private void CheckStunsAndQuestChange() { for (int i = 0; i < this.creatureActions.Count; i++) { this.creatureActions[i].CheckStuns(); this.creatureActions[i].CheckQuestSwap(); } for (int j = 0; j < this.party.Count; j++) { if (this.party[j] && this.party[j].stunned && Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours()) >= this.party[j].timeOfDeath) { this.party[j].EndStun(); } } foreach (PromptActions promptActions in this.promptActions) { if (promptActions.prompt.type == Prompts.types.campCleared) { promptActions.CheckHour(); } } } // Token: 0x06000D03 RID: 3331 RVA: 0x000FB248 File Offset: 0x000F9448 private void CheckResurrections() { for (int i = 0; i < this.creatureActions.Count; i++) { this.creatureActions[i].CheckResurrections(); } } // Token: 0x06000D04 RID: 3332 RVA: 0x000FB27C File Offset: 0x000F947C private void CheckRespawns() { for (int i = 0; i < this.creatureActions.Count; i++) { this.creatureActions[i].CheckHourRespawn(); } } // Token: 0x06000D05 RID: 3333 RVA: 0x000FB2B0 File Offset: 0x000F94B0 public void TimeJump() { this.enemiesInCamp.Clear(); this.prevTimeOfDay = Links.x.gameplay.timeOfDay; for (int i = 0; i < this.creatureActions.Count; i++) { this.creatureActions[i].ChangingTime(Links.x.gameplay.gameHours, true); } } // Token: 0x06000D06 RID: 3334 RVA: 0x000FB314 File Offset: 0x000F9514 public bool SeenWhileResting() { return this.enemiesInCamp.Count > 0; } // Token: 0x06000D07 RID: 3335 RVA: 0x000FB328 File Offset: 0x000F9528 public void EnemiesInCampAlert() { if (this.enemiesInCamp.Count > 0) { for (int i = 0; i < this.linksParty.Count; i++) { if (this.linksParty[i]) { Links.x.sensory.AddFootstep(this.linksParty[i]); } } } } // Token: 0x06000D08 RID: 3336 RVA: 0x000FB388 File Offset: 0x000F9588 public void DayNightSwitch(bool timeJump) { for (int i = 0; i < this.creatureActions.Count; i++) { this.creatureActions[i].DayNightSwitch(timeJump); } } // Token: 0x06000D09 RID: 3337 RVA: 0x000FB3C0 File Offset: 0x000F95C0 public void CheckDistanceToRestingParty(Character character) { float num = character.stats.SightRadius(false, false, false); float num2 = num * num; for (int i = 0; i < this.linksParty.Count; i++) { if (this.linksParty[i] && this.linksParty[i].party && (this.linksParty[i].tr.position - character.tr.position).sqrMagnitude < num2 && this.linksParty[i].indoorID == character.indoorID) { this.enemiesInCamp.Add(character); if (Records.x.editor) { string text = ((character != null) ? character.ToString() : null); string text2 = " interrupted sleep for "; Character character2 = this.linksParty[i]; Debug.Log(text + text2 + ((character2 != null) ? character2.ToString() : null)); } } } } // Token: 0x06000D0A RID: 3338 RVA: 0x000FB4C4 File Offset: 0x000F96C4 public global::Item CheckGroundForItem(Creatures linked, int linkedID, int itemID, Vector3 point, Character character, int index) { int count = this.groundItems.Count; for (int i = 0; i < count; i++) { global::Item item = this.groundItems[i]; if (item && item.ID == itemID && item.active && item.gameObject.activeSelf && (item.linkedCreatures == linked || !linked) && (item.linkedCreatureID == linkedID || !linked) && (item.tr.position - point).sqrMagnitude < 400f) { return item; } } for (int j = 0; j < count; j++) { global::Item item = this.groundItems[j]; if (item && item.active && item.gameObject.activeSelf && (item.tr.position - point).sqrMagnitude < 400f && !item.linkedCreatures) { if (index == 0 || index == 32) { if (item.invRow._DmgMax > 0 && character.stats.IsGoodWeaponMatch(character, item)) { return item; } } else if (index == 18) { if (item.invRow._Tag == "Armor" && character.stats.IsGoodArmorMatch(character, item)) { return item; } } else if (index == 2) { if (character.stats.IsGoodShieldMatch(character, item)) { return item; } } else if (index > 36 || index == 14 || index == 26 || index == 28) { if (item.invRow._Life > 0) { return item; } } else if ((index > 36 || index == 8 || index == 10 || index == 12) && item.invRow._Tag == "Ammunition" && character.stats.IsGoodAmmoMatch(character, item)) { return item; } } } return null; } // Token: 0x06000D0B RID: 3339 RVA: 0x000FB6D8 File Offset: 0x000F98D8 public void SetOriginalSceneItemLink(string sceneItemName, GameObject creatureObject) { for (int i = 0; i < this.itemOriginals.Count; i++) { if (this.itemOriginals[i] == sceneItemName) { this.itemLinks[i] = ""; } } foreach (SceneItem sceneItem in this.sceneItems) { if (sceneItem.gameObject.name == sceneItemName) { sceneItem.linkedCharacter = null; } } this.itemsNoRespawn.Add(sceneItemName); } // Token: 0x06000D0C RID: 3340 RVA: 0x000FB760 File Offset: 0x000F9960 public void HasForSaleGroundItems(Creatures linked) { int num = this.sceneItems.Length; for (int i = 0; i < num; i++) { SceneItem sceneItem = this.sceneItems[i]; if (sceneItem.forSale && linked == sceneItem.linkedCharacter && !this.HasSpawnedItem(sceneItem)) { this.SpawnSceneItem(sceneItem); } } } // Token: 0x06000D0D RID: 3341 RVA: 0x000FB7B8 File Offset: 0x000F99B8 public void CheckDoors(Character character) { Vector3 position = character.tr.position; if (character.currentDoor > 0 && character.currentDoor > 0 && character.currentDoor - 1 < this.doorActions.Count) { position.y = this.doorActions[character.currentDoor - 1].center.y; if (this.SubtractVectors(position, this.doorActions[character.currentDoor - 1].center).sqrMagnitude >= this.doorActions[character.currentDoor - 1].openDistance) { this.doorActions[character.currentDoor - 1].AddRemoveCharacterOnCollider(character, false); character.currentDoor = 0; } } int count = this.doorActions.Count; for (int i = 0; i < count; i++) { DoorActions doorActions = this.doorActions[i]; if (i != character.currentDoor - 1 && doorActions.swings && !doorActions.destroyed) { position.y = this.doorActions[i].center.y; if (this.SubtractVectors(position, this.doorActions[i].center).sqrMagnitude < this.doorActions[i].openDistance) { this.doorActions[i].AddRemoveCharacterOnCollider(character, true); character.currentDoor = i + 1; return; } } } } // Token: 0x06000D0E RID: 3342 RVA: 0x000FB94C File Offset: 0x000F9B4C public Vector3 SubtractVectors(Vector3 a, Vector3 b) { Vector3 vector; vector.x = a.x - b.x; vector.y = a.y - b.y; vector.z = a.z - b.z; return vector; } // Token: 0x06000D0F RID: 3343 RVA: 0x000FB998 File Offset: 0x000F9B98 public Vector3 SubtractVectorsSameY(Vector3 a, Vector3 b) { Vector3 vector; vector.x = a.x - b.x; vector.y = 0f; vector.z = a.z - b.z; return vector; } // Token: 0x06000D10 RID: 3344 RVA: 0x000FB9DC File Offset: 0x000F9BDC public bool InMoonlight(Vector3 pt) { bool flag = true; this.currentInteriorLight; if (!flag) { for (int i = 0; i < this.moonlights.Count; i++) { Moonlight moonlight = this.moonlights[i]; if (moonlight) { pt.y = moonlight.tr.position.y; if ((pt - moonlight.tr.position).sqrMagnitude < moonlight.radius) { flag = true; break; } } } } return flag; } // Token: 0x06000D11 RID: 3345 RVA: 0x000FBA68 File Offset: 0x000F9C68 public void MoonlightList(Moonlight moonlight, bool state) { int num = this.moonlights.IndexOf(moonlight); if (state) { if (num == -1) { this.moonlights.Add(moonlight); return; } } else if (num > -1) { this.moonlights.RemoveAt(num); } } // Token: 0x06000D12 RID: 3346 RVA: 0x000FBAA8 File Offset: 0x000F9CA8 public void StartQuadCulling() { this.quads = Links.x.quads; this.party = Links.x.party; for (int i = 0; i < 2; i++) { if (i < this.sceneViews.Count) { Plane plane = new Plane(Vector3.up, new Vector3(0f, this.sceneViews[i].cameraCollider.bounds.center.y, 0f)); float num = this.sceneViews[i].sceneCamera.orthographicSize * 2f; float num2 = num * 1.7777778f; num2 /= 2f; num /= 2f; Vector3 position = this.sceneViews[i].sceneCamera.gameObject.transform.position; Vector3 forward = this.sceneViews[i].sceneCamera.gameObject.transform.forward; Vector3 right = this.sceneViews[i].sceneCamera.gameObject.transform.right; Vector3 up = this.sceneViews[i].sceneCamera.gameObject.transform.up; Vector3 vector = position - num2 * right + num * up; Ray ray = new Ray(vector, forward); float num3; if (plane.Raycast(ray, out num3)) { vector = ray.GetPoint(num3); } Vector3 vector2 = position + num2 * right + num * up; ray = new Ray(vector2, forward); float num4; if (plane.Raycast(ray, out num4)) { vector2 = ray.GetPoint(num4); } Vector3 vector3 = position + num2 * right - num * up; ray = new Ray(vector3, forward); float num5; if (plane.Raycast(ray, out num5)) { vector3 = ray.GetPoint(num5); } Vector3 vector4 = position - num2 * right - num * up; ray = new Ray(vector4, forward); float num6; if (plane.Raycast(ray, out num6)) { vector4 = ray.GetPoint(num6); } if (i == 0) { Links.x.rtsCamera.topLeftBounds = vector; Links.x.rtsCamera.topRightBounds = vector2; Links.x.rtsCamera.bottomRightBounds = vector3; Links.x.rtsCamera.bottomLeftBounds = vector4; Links.x.main.CreateSphere(Links.x.rtsCamera.topLeftBounds, 1E-05f); Links.x.main.CreateSphere(Links.x.rtsCamera.topRightBounds, 1E-05f); Links.x.main.CreateSphere(Links.x.rtsCamera.bottomRightBounds, 1E-05f); Links.x.main.CreateSphere(Links.x.rtsCamera.bottomLeftBounds, 1E-05f); } else { Links.x.rtsCamera.topLeftBoundsInterior = vector; Links.x.rtsCamera.topRightBoundsInterior = vector2; Links.x.rtsCamera.bottomRightBoundsInterior = vector3; Links.x.rtsCamera.bottomLeftBoundsInterior = vector4; Links.x.main.CreateSphere(Links.x.rtsCamera.topLeftBoundsInterior, 1E-05f); Links.x.main.CreateSphere(Links.x.rtsCamera.topRightBoundsInterior, 1E-05f); Links.x.main.CreateSphere(Links.x.rtsCamera.bottomRightBoundsInterior, 1E-05f); Links.x.main.CreateSphere(Links.x.rtsCamera.bottomLeftBoundsInterior, 1E-05f); } } } } // Token: 0x06000D13 RID: 3347 RVA: 0x000FBEA4 File Offset: 0x000FA0A4 public void CheckQuadState(bool turnAllOff) { if (!this.activeView) { return; } Vector3 vector = Vector3.zero; Vector3 vector2 = new Vector3((float)Screen.width / 2f, (float)Screen.height / 2f, 0f); Ray ray = Links.x.worldCamera.ScreenPointToRay(vector2); float num = 0f; if (this.sceneInfo) { num = this.sceneInfo.groundY; } Plane plane = new Plane(Vector3.up, this.activeView.cameraCollider.bounds.center.y + num); float num2; if (plane.Raycast(ray, out num2)) { vector = ray.GetPoint(num2); } int index = this.activeView.index; bool flag = false; if (this.activeView.index > 1) { flag = true; } for (int i = 0; i < this.quads.Count; i++) { bool flag2 = false; Culling culling = this.quads[i]; if (culling.sceneCamera.index == index) { flag2 = true; } bool flag3 = false; bool flag4 = false; if (flag2 && !flag) { flag4 = true; } if (flag4 && (vector - new Vector3(culling.center.x, vector.y, culling.center.z)).sqrMagnitude < 22500f) { flag3 = true; } if (flag && flag2) { flag3 = true; } if (flag && !flag2) { if (this.activeView.isInterior) { if (culling.sceneCamera.index == 1) { flag3 = true; } } else if (culling.sceneCamera.index == 0) { flag3 = true; } } if (Records.x.editor && Records.x.testPatrols && culling.sceneCamera.index < 2) { flag3 = true; } if (flag3) { if (!culling.isOn) { if (flag && !flag2) { culling.ChangeState(true, true); } else { culling.ChangeState(true, false); } this.activeQuads.Add(culling); } else if (culling.isOn && !culling.art.enabled && flag2) { culling.ArtOn(); } else if (culling.isOn && flag && !flag2 && culling.art.enabled) { culling.ChangeState(true, true); } } else if (culling.isOn) { culling.ChangeState(false, false); int num3 = this.activeQuads.IndexOf(culling); if (num3 > -1) { this.activeQuads.RemoveAt(num3); } } } if (turnAllOff) { for (int j = 0; j < this.quads.Count; j++) { this.quads[j].ChangeState(false, false); } } if (this.currentInteriorLight && (Links.x.main.tr.position - this.prevMainPosition).sqrMagnitude > 16f) { this.currentInteriorLight.SetUpCompanionNodes(); this.prevMainPosition = Links.x.main.tr.position; } } // Token: 0x06000D14 RID: 3348 RVA: 0x000FC1E0 File Offset: 0x000FA3E0 private void LateUpdate() { if (Links.x) { if (this.quads != null && this.party != null && Links.x.gaia.sceneLoaded) { this.CheckQuadState(false); } if (Time.timeSinceLevelLoad > this.queueUpdate + 2f) { this.queueUpdate = Time.timeSinceLevelLoad; int count = this.promptQueue.Count; for (int i = 0; i < count; i++) { if (i < this.promptQueue.Count) { PromptActions promptActions = this.promptQueue[i]; if (promptActions && promptActions.state != 1) { promptActions.Action(true); } } } uint num = 0U; this.UpdateMapExits(num); } if (this.currentInteriorLight) { this.currentInteriorLight.ActiveLights(); } Links.x.inventory.LookForTorch(); bool flag = this.mainCharacterInGhostFog; if (Links.x.hasMain) { this.mainCharacterInGhostFog = this.InResurrectionFog(Links.x.main.tr.position); if (flag != this.mainCharacterInGhostFog) { if (this.fogFadeCorout != null) { base.StopCoroutine(this.fogFadeCorout); this.fogFadeCorout = null; } if (this.mainCharacterInGhostFog) { this.fogFadeCorout = this.FadeGhostFog(this.currentFogValue, 1f); base.StartCoroutine(this.fogFadeCorout); } else { this.fogFadeCorout = this.FadeGhostFog(this.currentFogValue, 0f); base.StartCoroutine(this.fogFadeCorout); } } } for (int j = 0; j < this.characters.Count; j++) { Character character = this.characters[j]; if (character && !character.inactive) { character.UpdatePositions(); } } } } // Token: 0x06000D15 RID: 3349 RVA: 0x000FC3B3 File Offset: 0x000FA5B3 private IEnumerator FadeGhostFog(float fogStart, float fogTarget) { float timeToLerp = 1.5f; float percentage = 0f; float startTime = Time.time; yield return new WaitForSeconds(0.1f); while (Records.x.removeControls) { yield return null; } while (percentage < 1f) { percentage = (Time.time - startTime) / timeToLerp; this.currentFogValue = Mathf.Lerp(fogStart, fogTarget, percentage); Shader.SetGlobalFloat("_InGhostFog", this.currentFogValue); yield return null; } yield break; } // Token: 0x06000D16 RID: 3350 RVA: 0x000FC3D0 File Offset: 0x000FA5D0 public void AddPromptToQueue(PromptActions queue) { if (this.promptQueue.IndexOf(queue) == -1) { this.promptQueue.Add(queue); } } // Token: 0x06000D17 RID: 3351 RVA: 0x000FC3F0 File Offset: 0x000FA5F0 public void RemovePromptFromQueue(PromptActions queue) { int num = this.promptQueue.IndexOf(queue); if (num > -1) { this.promptQueue.RemoveAt(num); } } // Token: 0x06000D18 RID: 3352 RVA: 0x000FC41C File Offset: 0x000FA61C public void BombBomb(Vector3 pt, Character bomber) { GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(135); pooledGameObject.transform.position = pt + new Vector3(0f, 0.2f, 0f); pooledGameObject.SetActive(true); MasterAudio.PlaySound3DAtVector3AndForget("Elixir", pt, Random.Range(0.5f, 0.6f), new float?(1f), 0f, "", null); MasterAudio.PlaySound3DAtVector3AndForget("Interactives", pt, 0.5f, new float?(1f), 0f, "Chest Break", null); float num = 36f; if (bomber) { num = 81f; } for (int i = 0; i < this.characters.Count; i++) { Character character = this.characters[i]; if (character && this.SubtractVectorsSameY(character.currentPosition, pt).sqrMagnitude < num && !character.stats.dead) { Effects effects = character.gameObject.AddComponent(); Links.x.cellar.AddEffects(effects); effects.gameObject.SetActive(true); effects.target = character; effects.effectName = "Impact"; if (!bomber) { effects.source = character; effects.sourceLevel = Mathf.Clamp(5f - Vector3.Distance(character.currentPosition, pt), 1f, 5f); } else { effects.source = bomber; effects.sourceLevel = (float)bomber.stats.level * 5f; } effects.Inflicted(true); character.Bounce(bomber, "Hit", 0f); } } for (int j = 0; j < this.breakableActions.Count; j++) { BreakableActions breakableActions = this.breakableActions[j]; if (breakableActions && !breakableActions.destroyed && this.SubtractVectorsSameY(breakableActions.pt, pt).sqrMagnitude < num) { breakableActions.currentHealth = 0; breakableActions.ClickToBreak(Links.x.main, false, false); } } for (int k = 0; k < this.chestActions.Count; k++) { ChestActions chestActions = this.chestActions[k]; if (chestActions && !chestActions.destroyed && this.SubtractVectorsSameY(chestActions.transform.position, pt).sqrMagnitude < num) { chestActions.currentHealth = 0; chestActions.ClickToBreak(Links.x.main, false); } } for (int l = 0; l < this.doorActions.Count; l++) { DoorActions doorActions = this.doorActions[l]; if (doorActions && !doorActions.destroyed && this.SubtractVectorsSameY(doorActions.lockColliderPosition, pt).sqrMagnitude < num) { doorActions.currentHealth = 0; doorActions.ClickToBreak(Links.x.main, false); } } } // Token: 0x06000D19 RID: 3353 RVA: 0x000FC750 File Offset: 0x000FA950 public void SetupInteractives1() { string text = Records.x.openBook + "/Map_" + this.sceneDisplayName + ".es3"; this.firstTimeOnScene = true; if (ES3.FileExists(text)) { this.saveFile = new ES3File(text); this.breakableNames.Clear(); this.breakableNames = this.saveFile.Load>("BreakableNames"); this.breakableStates.Clear(); this.breakableStates = this.saveFile.Load>("Breakables"); this.chestNames.Clear(); this.chestNames = this.saveFile.Load>("ChestNames"); this.chestStates.Clear(); this.chestStates = this.saveFile.Load>("ChestStates"); this.doorNames.Clear(); this.doorNames = this.saveFile.Load>("DoorNames"); this.doorLocked.Clear(); this.doorLocked = this.saveFile.Load>("DoorLocked"); this.doorHealth.Clear(); this.doorHealth = this.saveFile.Load>("DoorHealth"); this.resourceStates.Clear(); this.resourceStates = this.saveFile.Load>("ResourceStates"); this.resourceTime.Clear(); this.resourceTime = this.saveFile.Load>("ResourceTime"); this.promptStates.Clear(); this.promptStates = this.saveFile.Load>("Prompts"); this.promptNames.Clear(); this.promptNames = this.saveFile.Load>("PromptNames"); this.mapExitNames.Clear(); this.mapExitNames = this.saveFile.Load>("MapExitNames"); this.mapExitStates.Clear(); this.mapExitStates = this.saveFile.Load>("MapExitStates"); if (this.saveFile.KeyExists("TimeOnScene")) { this.lastTimeOnScene = this.saveFile.Load("TimeOnScene"); } if (this.saveFile.KeyExists("GameVersionForThisScene")) { if (Records.x.demo) { this.lastVersionForThisScene = this.saveFile.Load("GameVersionForThisScene"); } else { this.lastVersionForThisScene = this.saveFile.Load("GameVersionForThisScene"); } } else { this.lastVersionForThisScene = 1.27f; } this.firstTimeOnScene = false; } int count = this.mapExitNames.Count; for (int i = 0; i < this.mapExits.Count; i++) { if (this.mapExits[i]) { this.mapExits[i].SetupNodeLink(); string name = this.mapExits[i].gameObject.name; for (int j = 0; j < count; j++) { if (this.mapExitNames[j] == name) { if (this.mapExitStates[j] == 1) { this.mapExits[i].visited = true; } else { this.mapExits[i].visited = false; } } } } } int count2 = this.puzzles.Count; for (int k = 0; k < count2; k++) { PuzzleActions puzzleActions = this.puzzles[k].gameObject.AddComponent(); this.puzzleActions.Add(puzzleActions); } this.breakableActions.Clear(); for (int l = 0; l < this.breakables.Count; l++) { BreakableActions breakableActions = this.breakables[l].gameObject.AddComponent(); this.breakableActions.Add(breakableActions); breakableActions.breakable = this.breakables[l]; breakableActions.resourceLocation = -1; if (this.firstTimeOnScene) { breakableActions.NewGameSetup(); } } this.chestActions.Clear(); for (int m = 0; m < this.chests.Count; m++) { ChestActions chestActions = this.chests[m].gameObject.AddComponent(); this.chestActions.Add(chestActions); chestActions.chest = this.chests[m]; } this.doorActions.Clear(); for (int n = 0; n < this.doors.Count; n++) { DoorActions doorActions = this.doors[n].gameObject.AddComponent(); this.doorActions.Add(doorActions); doorActions.door = this.doors[n]; if (this.firstTimeOnScene) { this.doorActions[n].NewGameSetup(); } } for (int num = 0; num < this.prompts.Length; num++) { PromptActions promptActions = this.prompts[num].gameObject.AddComponent(); this.promptActions.Add(promptActions); promptActions.prompt = this.prompts[num]; promptActions.Setup(); } } // Token: 0x06000D1A RID: 3354 RVA: 0x000FCC74 File Offset: 0x000FAE74 public void SetupInteractives2() { int num = this.breakableNames.Count; int num2 = this.breakableActions.Count; for (int i = 0; i < num; i++) { bool flag = false; string text = this.breakableNames[i]; for (int j = 0; j < num2; j++) { if (!flag && text == this.breakableActions[j].saveName) { flag = true; if (this.breakableStates[i] <= 0) { this.breakableActions[j].ClickToBreak(null, true, false); } else { this.breakableActions[j].LoadGameSetup(this.breakableStates[i]); } } } } num = this.chestNames.Count; num2 = this.chestActions.Count; for (int k = 0; k < num; k++) { bool flag2 = false; string text2 = this.chestNames[k]; for (int l = 0; l < num2; l++) { if (!flag2 && text2 == this.chestActions[l].saveName) { flag2 = true; this.chestActions[l].LoadGameSetup(this.chestStates[k]); } } } num = this.doorNames.Count; num2 = this.doorActions.Count; for (int m = 0; m < num; m++) { bool flag3 = false; string text3 = this.doorNames[m]; for (int n = 0; n < num2; n++) { if (!flag3 && text3 == this.doorActions[n].saveName) { flag3 = true; this.doorActions[n].LoadGameSetup(this.doorHealth[m], this.doorLocked[m]); } } } num = this.promptNames.Count; num2 = this.promptActions.Count; for (int num3 = 0; num3 < num; num3++) { bool flag4 = false; string text4 = this.promptNames[num3]; for (int num4 = 0; num4 < num2; num4++) { if (!flag4 && text4 == this.promptActions[num4].saveName) { flag4 = true; this.promptActions[num4].state = this.promptStates[num3]; } } } for (int num5 = 0; num5 < this.promptActions.Count; num5++) { this.promptActions[num5].FinishSetup(); } int num6 = 0; bool flag5 = false; if (this.resourceLocations.Count > 0) { if (this.resourceStates.Count != this.resourceLocations.Count || this.firstTimeOnScene || flag5) { int num7 = Mathf.RoundToInt((float)this.resourceLocations.Count / 6f); num6 = Random.Range(Mathf.RoundToInt((float)this.resourceLocations.Count / 8f), num7); if (flag5) { num6 = this.resourceLocations.Count; } for (int num8 = 0; num8 < this.resourceLocations.Count; num8++) { this.resourceStates.Add(false); this.resourceTime.Add(0f); this.resourcePrefabs.Add(null); } } else { this.resourcePrefabs.Clear(); for (int num9 = 0; num9 < this.resourceLocations.Count; num9++) { if (this.resourceStates[num9]) { this.resourcePrefabs.Add(null); this.SetupResource(this.resourceTypes[num9], num9); } else if (this.resourceTime[num9] > 0f) { if (this.resourceTime[num9] > (float)(Links.x.gameplay.GetCurrentGameTime() + 1)) { num6++; this.resourceTime[num9] = 0f; } this.resourcePrefabs.Add(null); } else { this.resourcePrefabs.Add(null); } } } List list = new List(); for (int num10 = 0; num10 < num6; num10++) { bool flag6 = false; for (int num11 = 0; num11 < 200; num11++) { if (!flag6) { int num12 = Random.Range(0, this.resourceStates.Count); if (!this.resourceStates[num12] && !list.Contains(num12)) { list.Add(num12); flag6 = true; } } } } if (flag5) { list.Clear(); for (int num13 = 0; num13 < num6; num13++) { list.Add(num13); } } for (int num14 = 0; num14 < list.Count; num14++) { if (list[num14] < this.resourceTypes.Count && list[num14] > -1) { Breakable.ComponentTypes componentTypes = this.resourceTypes[list[num14]]; this.resourceStates[list[num14]] = true; this.resourceTime[list[num14]] = 0f; int num15 = list[num14]; this.SetupResource(componentTypes, num15); } } } for (int num16 = 0; num16 < this.puzzleActions.Count; num16++) { this.puzzleActions[num16].LoadPuzzleInfo(); } } // Token: 0x06000D1B RID: 3355 RVA: 0x000FD1F4 File Offset: 0x000FB3F4 private void SetupResource(Breakable.ComponentTypes component, int index) { if (component == Breakable.ComponentTypes.Acorn) { GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(59); pooledGameObject.SetActive(true); pooledGameObject.transform.position = this.resourceLocations[index]; pooledGameObject.transform.rotation = this.resourceRotations[index]; pooledGameObject.gameObject.GetComponent().resourceLocation = index; this.resourcePrefabs[index] = pooledGameObject; } if (component == Breakable.ComponentTypes.Berry) { GameObject pooledGameObject2 = Links.x.cellar.GetPooledGameObject(93); pooledGameObject2.SetActive(true); pooledGameObject2.transform.position = this.resourceLocations[index]; pooledGameObject2.transform.rotation = this.resourceRotations[index]; pooledGameObject2.gameObject.GetComponent().resourceLocation = index; this.resourcePrefabs[index] = pooledGameObject2; } if (component == Breakable.ComponentTypes.Shell) { RaycastHit raycastHit; if (Physics.Raycast(this.resourceLocations[index] + new Vector3(0f, 10f, 0f), Vector3.up * -1f, out raycastHit, 100f, Links.x.floor)) { this.resourceLocations[index] = raycastHit.point; } GameObject gameObject = Object.Instantiate(Links.x.critters.crab, this.resourceLocations[index], this.resourceRotations[index], Links.x.diorama.transform); CritterActions critterActions = gameObject.transform.GetChild(0).gameObject.AddComponent(); gameObject.transform.GetChild(0).gameObject.SetActive(true); gameObject.transform.GetChild(1).gameObject.SetActive(false); critterActions.resourceLocation = index; critterActions.resourcePoint = this.resourceLocations[index]; critterActions.dead = false; critterActions.isResource = true; critterActions.MakeRandomPath(null); Links.x.critters.AddActiveCritter(critterActions); this.resourcePrefabs[index] = gameObject; } if (component == Breakable.ComponentTypes.Mushroom) { GameObject pooledGameObject3 = Links.x.cellar.GetPooledGameObject(54); pooledGameObject3.SetActive(true); pooledGameObject3.transform.position = this.resourceLocations[index]; pooledGameObject3.transform.rotation = this.resourceRotations[index]; pooledGameObject3.gameObject.GetComponent().resourceLocation = index; this.resourcePrefabs[index] = pooledGameObject3; } if (component == Breakable.ComponentTypes.Rock) { GameObject pooledGameObject4 = Links.x.cellar.GetPooledGameObject(52); pooledGameObject4.SetActive(true); pooledGameObject4.transform.position = this.resourceLocations[index]; pooledGameObject4.transform.rotation = this.resourceRotations[index]; pooledGameObject4.gameObject.GetComponent().resourceLocation = index; this.resourcePrefabs[index] = pooledGameObject4; } if (component == Breakable.ComponentTypes.Frog) { GameObject pooledGameObject5 = Links.x.cellar.GetPooledGameObject(50); pooledGameObject5.SetActive(true); pooledGameObject5.transform.position = this.resourceLocations[index]; pooledGameObject5.transform.rotation = this.resourceRotations[index]; pooledGameObject5.gameObject.GetComponent().resourceLocation = index; this.resourcePrefabs[index] = pooledGameObject5; } if (component == Breakable.ComponentTypes.Stick) { GameObject pooledGameObject6 = Links.x.cellar.GetPooledGameObject(51); pooledGameObject6.SetActive(true); pooledGameObject6.transform.position = this.resourceLocations[index]; pooledGameObject6.transform.rotation = this.resourceRotations[index]; pooledGameObject6.gameObject.GetComponent().resourceLocation = index; this.resourcePrefabs[index] = pooledGameObject6; } if (component == Breakable.ComponentTypes.HollowStick) { GameObject pooledGameObject7 = Links.x.cellar.GetPooledGameObject(53); pooledGameObject7.SetActive(true); pooledGameObject7.transform.position = this.resourceLocations[index] + new Vector3(0f, 1.4f, 0f); pooledGameObject7.transform.rotation = Quaternion.identity; pooledGameObject7.gameObject.GetComponent().resourceLocation = index; this.resourcePrefabs[index] = pooledGameObject7; } if (this.resourcePrefabs[index] && component != Breakable.ComponentTypes.Shell) { this.resourcePrefabs[index].transform.parent = null; this.resourcePrefabs[index].transform.parent = Links.x.cellar.tr; } } // Token: 0x06000D1C RID: 3356 RVA: 0x000FD6A4 File Offset: 0x000FB8A4 public void ReturnResource(int index, GameObject go) { if (index < this.resourceTime.Count && index > -1) { this.resourceTime[index] = (float)Links.x.gameplay.GetCurrentGameTime(); this.resourceStates[index] = false; Breakable.ComponentTypes componentTypes = this.resourceTypes[index]; if (componentTypes == Breakable.ComponentTypes.Acorn) { Links.x.cellar.ReturnPooledGameObject(59, go); } if (componentTypes == Breakable.ComponentTypes.Mushroom) { Links.x.cellar.ReturnPooledGameObject(54, go); } if (componentTypes == Breakable.ComponentTypes.Stick) { Links.x.cellar.ReturnPooledGameObject(51, go); } if (componentTypes == Breakable.ComponentTypes.HollowStick) { Links.x.cellar.ReturnPooledGameObject(53, go); } } } // Token: 0x06000D1D RID: 3357 RVA: 0x000FD764 File Offset: 0x000FB964 public void RemoveResourcePrefabs() { for (int i = 0; i < this.resourcePrefabs.Count; i++) { GameObject gameObject = this.resourcePrefabs[i]; if (gameObject) { Breakable.ComponentTypes componentTypes = this.resourceTypes[i]; if (componentTypes == Breakable.ComponentTypes.Rock) { Links.x.cellar.ReturnPooledGameObject(52, gameObject); } if (componentTypes == Breakable.ComponentTypes.Frog) { Links.x.cellar.ReturnPooledGameObject(50, gameObject); } if (componentTypes == Breakable.ComponentTypes.Stick) { Links.x.cellar.ReturnPooledGameObject(51, gameObject); } if (componentTypes == Breakable.ComponentTypes.HollowStick) { Links.x.cellar.ReturnPooledGameObject(53, gameObject); } if (componentTypes == Breakable.ComponentTypes.Acorn) { Links.x.cellar.ReturnPooledGameObject(59, gameObject); } if (componentTypes == Breakable.ComponentTypes.Mushroom) { Links.x.cellar.ReturnPooledGameObject(54, gameObject); } if (componentTypes == Breakable.ComponentTypes.Berry) { Links.x.cellar.ReturnPooledGameObject(93, gameObject); } } } } // Token: 0x06000D1E RID: 3358 RVA: 0x000FD84C File Offset: 0x000FBA4C public void ReturnItemsPrefabs() { foreach (global::Item item in this.groundItems) { if (item) { item.DestroyItem(false, true); } } } // Token: 0x06000D1F RID: 3359 RVA: 0x000FD8A8 File Offset: 0x000FBAA8 public void GetBreakableTiles() { for (int i = 0; i < this.breakableActions.Count; i++) { this.breakableActions[i].GetNode(); } } // Token: 0x06000D20 RID: 3360 RVA: 0x000FD8DC File Offset: 0x000FBADC public void SetupItems() { this.sceneItems = this.items.gameObject.GetComponentsInChildren(); int num = this.sceneItems.Length; string text = Records.x.openBook + "/Map_" + this.sceneDisplayName + ".es3"; if (ES3.FileExists(text)) { this.saveFile = new ES3File(text); this.itemIDs.Clear(); this.itemSaveIDs = this.saveFile.Load>("ItemIDs"); this.itemAmts = this.saveFile.Load>("ItemAmts"); this.itemSocketsA = this.saveFile.Load>("ItemSocketsA"); this.itemSocketsB = this.saveFile.Load>("ItemSocketsB"); this.itemsForSaleStates = this.saveFile.Load>("ItemForSaleStates"); this.itemPositions = this.saveFile.Load>("ItemPositions"); this.itemRotations = this.saveFile.Load>("ItemRotations"); this.itemLinks = this.saveFile.Load>("ItemLinks"); this.itemLinkIDs = this.saveFile.Load>("ItemLinkIDs"); this.itemPrompts = this.saveFile.Load>("ItemPrompts"); this.itemTimes = this.saveFile.Load>("ItemTimes"); this.itemOriginals = this.saveFile.Load>("ItemOriginals"); this.itemsNoRespawn = this.saveFile.Load>("ItemsNoRespawn"); int count = this.itemSaveIDs.Count; for (int i = 0; i < count; i++) { int invRowID = Links.x.library.GetInvRowID(this.itemSaveIDs[i]); this.itemIDs.Add(invRowID); global::Item item = Links.x.inventory.groundBag.DropLoot(invRowID, this.itemAmts[i], this.itemSocketsA[i], this.itemSocketsB[i], this.itemTimes[i], null, this.itemPositions[i], false, this.itemsForSaleStates[i], -1); if (item) { item.sceneItemName = this.itemOriginals[i]; item.transform.rotation = this.itemRotations[i]; item.forSale = this.itemsForSaleStates[i]; item.durability = this.itemTimes[i]; if (item.forSale && item.invRow._NeedFullStack) { this.itemAmts[i] = item.invRow._MaxStackSize; item.stackSize = item.invRow._MaxStackSize; } if (this.itemLinks[i] != "") { foreach (Creatures creatures in this.creatureControllers) { if (creatures.gameObject.name == this.itemLinks[i]) { item.linkedCreatures = creatures; item.linkedCreatureID = this.itemLinkIDs[i]; break; } } } if (this.itemPrompts[i] != "") { Prompts[] array2 = this.prompts; int j = 0; while (j < array2.Length) { Prompts prompts = array2[j]; if (prompts.gameObject.name == this.itemPrompts[i]) { item.linkedPrompt = prompts; if (item.linkedPrompt) { item.SetupLinkedItem(); break; } break; } else { j++; } } } this.AddItem(item); if (this.itemLinks[i] == "") { for (int k = 0; k < num; k++) { if (this.sceneItems[k].gameObject.name == item.sceneItemName) { this.sceneItems[k].linkedCharacter = null; } } } item.GetLinkedCharacter(); } } foreach (SceneItem sceneItem in this.sceneItems) { if (sceneItem.deactivateFromQuest != Creatures.Adventures.None) { global::Item item2 = this.HasSpawnedItem(sceneItem); if (item2) { item2.deactivateFromQuest = sceneItem.deactivateFromQuest; item2.stateOfQuest_ = sceneItem.stateOfQuest_; } } else if (sceneItem.versionNumber > this.lastVersionForThisScene && sceneItem.versionNumber > 0f) { bool flag = true; if (sceneItem.activateFromQuest != Creatures.Adventures.None) { flag = QuestLog.GetQuestState(sceneItem.activateFromQuest.ToString()) == Records.x.StringToQuestState(sceneItem.stateOfQuest.ToString()) && sceneItem.stateOfQuest != Creatures.AdventureStates.NotApplicable; } if (flag) { this.SpawnSceneItem(sceneItem); } } if (this.itemsNoRespawn.Contains(sceneItem.gameObject.name)) { sceneItem.linkedCharacter = null; } } this.CheckItemsThatMightActivate(); } else { foreach (SceneItem sceneItem2 in this.sceneItems) { bool flag2 = true; if (sceneItem2.activateFromQuest != Creatures.Adventures.None) { flag2 = QuestLog.GetQuestState(sceneItem2.activateFromQuest.ToString()) == Records.x.StringToQuestState(sceneItem2.stateOfQuest.ToString()) && sceneItem2.stateOfQuest != Creatures.AdventureStates.NotApplicable; } if (flag2) { this.SpawnSceneItem(sceneItem2); } } } this.itemSaveIDs.Clear(); } // Token: 0x06000D21 RID: 3361 RVA: 0x000FDEA4 File Offset: 0x000FC0A4 private global::Item SpawnSceneItem(SceneItem t) { string text = t.item.ToString(); Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName(text); if (Records.x.editor && invRowFromName == null) { Debug.Log("row null: " + text); } int id = invRowFromName._ID; if (t.durability.x == 0f) { t.durability.x = (float)invRowFromName._DurabilityMax; } global::Item item = Links.x.inventory.groundBag.DropLoot(id, t.amount, t.socketA, t.socketB, t.durability, null, t.gameObject.transform.position, false, t.forSale, -1); Vector3 eulerAngles = t.gameObject.transform.rotation.eulerAngles; eulerAngles.y += 300f; if (item) { item.transform.rotation = Quaternion.Euler(eulerAngles); item.forSale = t.forSale; item.linkedCreatures = t.linkedCharacter; item.linkedCreatureID = 0; item.linkedPrompt = t.linkedPrompt; item.sceneItemName = t.gameObject.name; if (item.linkedPrompt) { item.SetupLinkedItem(); } item.deactivateFromQuest = t.deactivateFromQuest; item.stateOfQuest_ = t.stateOfQuest_; this.AddItem(item); item.GetLinkedCharacter(); } return item; } // Token: 0x06000D22 RID: 3362 RVA: 0x000FE024 File Offset: 0x000FC224 public void UpdateMapExits(uint area) { for (int i = 0; i < this.mapExits.Count; i++) { if (this.mapExits[i]) { this.mapExits[i].PartyInRoom(area); } } } // Token: 0x06000D23 RID: 3363 RVA: 0x000FE06C File Offset: 0x000FC26C public void FindCreatures() { this.creatureControllers = this.creatures.gameObject.GetComponentsInChildren(); foreach (Creatures creatures in this.creatureControllers) { CreatureActions creatureActions = creatures.gameObject.GetComponent(); if (!creatureActions) { creatureActions = creatures.gameObject.AddComponent(); creatureActions.creatures = creatures; this.creatureActions.Add(creatureActions); creatureActions.LoadCreatures(); } } } // Token: 0x06000D24 RID: 3364 RVA: 0x000FE0E4 File Offset: 0x000FC2E4 public void CombatEndPrompts() { foreach (PromptActions promptActions in this.promptActions) { if (promptActions) { promptActions.CheckCombatEnd(); } } } // Token: 0x06000D25 RID: 3365 RVA: 0x000FE140 File Offset: 0x000FC340 public void CheckQuestActivations() { this.CheckCreaturesThatMightActivate(); this.CheckPromptsThatMightActivate(); this.CheckItemsThatMightActivate(); } // Token: 0x06000D26 RID: 3366 RVA: 0x000FE154 File Offset: 0x000FC354 public void CheckItemsThatMightActivate() { foreach (SceneItem sceneItem in this.sceneItems) { bool flag = false; if (sceneItem.activateFromQuest != Creatures.Adventures.None && !this.HasSpawnedItem(sceneItem) && QuestLog.GetQuestState(sceneItem.activateFromQuest.ToString()) == Records.x.StringToQuestState(sceneItem.stateOfQuest.ToString()) && sceneItem.stateOfQuest != Creatures.AdventureStates.NotApplicable) { flag = true; } if (flag) { this.SpawnSceneItem(sceneItem); } } foreach (global::Item item in this.groundItems) { if (item && item.active && item.deactivateFromQuest != Creatures.Adventures.None && QuestLog.GetQuestState(item.deactivateFromQuest.ToString()) == Records.x.StringToQuestState(item.stateOfQuest_.ToString())) { item.DestroyItem(false, false); } } foreach (global::Item item2 in this.groundItems) { if (item2 && item2.linkedCreatures) { item2.GetLinkedCharacter(); Character linkedCharacter = item2.linkedCharacter; if (linkedCharacter && !linkedCharacter.stunned && !linkedCharacter.dead) { if (((linkedCharacter.creatures.isDay && linkedCharacter.creatures.daySleep) || (!linkedCharacter.creatures.isDay && linkedCharacter.creatures.nightSleep)) && !linkedCharacter.dead && item2.clickable && item2.forSale) { item2.SetDayNight(false); } if (!item2.clickable && ((linkedCharacter.creatures.isDay && !linkedCharacter.creatures.daySleep) || (!linkedCharacter.creatures.isDay && !linkedCharacter.creatures.nightSleep)) && item2.forSale) { item2.SetDayNight(true); } } } } } // Token: 0x06000D27 RID: 3367 RVA: 0x000FE3C8 File Offset: 0x000FC5C8 public void CheckLinkedCharacters(Character deadCharacter) { foreach (global::Item item in this.groundItems) { if (item && item.linkedCreatures) { item.GetLinkedCharacter(); } } } // Token: 0x06000D28 RID: 3368 RVA: 0x000FE430 File Offset: 0x000FC630 public void CheckCreaturesThatMightActivate() { foreach (CreatureActions creatureActions in this.creatureActions) { if (creatureActions.waitingForPrompt && !this.HasPrompt(creatureActions.gameObject) && creatureActions.CanActivate()) { creatureActions.SetupCreatures(); creatureActions.enabled = true; } } } // Token: 0x06000D29 RID: 3369 RVA: 0x000FE4A8 File Offset: 0x000FC6A8 private void CheckPromptsThatMightActivate() { foreach (PromptActions promptActions in this.promptActions) { if (promptActions.prompt.type == Prompts.types.toggleGameObjectFromQuest) { promptActions.CheckStatus(); } } } // Token: 0x06000D2A RID: 3370 RVA: 0x000FE50C File Offset: 0x000FC70C private global::Item HasSpawnedItem(SceneItem sceneItem) { string text = sceneItem.item.ToString(); int id = Links.x.library.GetInvRowFromName(text)._ID; for (int i = 0; i < this.groundItems.Count; i++) { if (this.groundItems[i].ID == id && this.groundItems[i].active && this.groundItems[i].sceneItemName == sceneItem.gameObject.name) { return this.groundItems[i]; } } return null; } // Token: 0x06000D2B RID: 3371 RVA: 0x000FE5B0 File Offset: 0x000FC7B0 public void SetupCreatures() { bool flag = false; if (this.sceneName == "F4_BanquetIsle") { flag = true; } foreach (CreatureActions creatureActions in this.creatureActions) { if (!this.HasPrompt(creatureActions.gameObject) && creatureActions.CanActivate()) { creatureActions.SetupCreatures(); if (flag) { creatureActions.CheckForTextureSwap(); } } else { creatureActions.waitingForPrompt = true; } } } // Token: 0x06000D2C RID: 3372 RVA: 0x000FE640 File Offset: 0x000FC840 public bool HasPrompt(GameObject x) { for (int i = 0; i < this.prompts.Length; i++) { if (this.prompts[i].ambushCharacters && (this.prompts[i].ambushCharacters == x || this.prompts[i].ambushCharacters == x.transform.parent.gameObject) && this.prompts[i].GetComponent().state != 1) { return true; } } return false; } // Token: 0x06000D2D RID: 3373 RVA: 0x000FE6C8 File Offset: 0x000FC8C8 public CreatureActions SetCreatureState(string xmlName, string newState, int num) { foreach (CreatureActions creatureActions in this.creatureActions) { if (creatureActions.xmlName == xmlName) { creatureActions.SetStateByIndex(num, newState); return creatureActions; } } return null; } // Token: 0x06000D2E RID: 3374 RVA: 0x000FE734 File Offset: 0x000FC934 public CreatureActions MatchCreatureActions(string s) { for (int i = 0; i < this.creatureActions.Count; i++) { if (this.creatureActions[i].gameObject.name == s) { return this.creatureActions[i]; } } return null; } // Token: 0x06000D2F RID: 3375 RVA: 0x000FE784 File Offset: 0x000FC984 public void SetupTemporaryCreatures(string creaturesName, int temperament, string xmlName, int xmlNameIndex, string originalMap, string previousMap, Vector3 position, string state, int life, string savedEffects, int tempIndex, float delay) { GameObject gameObject = new GameObject(creaturesName); gameObject.transform.parent = this.creatures; Creatures creatures = gameObject.AddComponent(); CreatureActions creatureActions = gameObject.AddComponent(); creatureActions.creatures = creatures; GameObject gameObject2 = new GameObject("DayNight"); gameObject2.transform.parent = gameObject.transform; gameObject2.transform.position = position; GameObject gameObject3 = new GameObject("Walk Point"); gameObject3.transform.parent = gameObject2.transform; gameObject3.transform.position = position; creatures.number = 1; creatureActions.temporary = true; creatureActions.SetTemperament(temperament); creatureActions.SetState(tempIndex, state); creatureActions.temporaryState = state; creatureActions.creatures.characterName = (Creatures.xmlNames)xmlNameIndex; creatureActions.originalScene = originalMap; if (delay > 0f) { creatureActions.UpdateDelays(delay, 0, previousMap); creatureActions.temporaryStartNode = Links.x.gaia.playerStartingNode; creatureActions.hunting = true; } creatureActions.SetupCreatures(); creatureActions.temporaryIndex = tempIndex; if (originalMap == "") { creatureActions.onlyTemporary = true; creatureActions.temporary = false; } this.creatureActions.Add(creatureActions); } // Token: 0x06000D30 RID: 3376 RVA: 0x000FE8B0 File Offset: 0x000FCAB0 public void UpdateTemporaryCreatureStartNodes() { for (int i = 0; i < this.creatureActions.Count; i++) { if (this.creatureActions[i].hunting) { this.creatureActions[i].temporaryStartNode = Links.x.gaia.playerStartingNode; this.creatureActions[i].UpdatePosition((Vector3)Links.x.gaia.playerStartingNode.position); } } } // Token: 0x06000D31 RID: 3377 RVA: 0x000FE930 File Offset: 0x000FCB30 public void CheckDelayedCharacters(string map) { for (int i = 0; i < this.creatureActions.Count; i++) { if (this.creatureActions[i].waitingForDelay) { this.creatureActions[i].UpdateTemporaryListsFromMapChange(map); } } } // Token: 0x06000D32 RID: 3378 RVA: 0x000FE978 File Offset: 0x000FCB78 public void AddCreature(CreatureActions c) { this.creatureActions.Add(c); } // Token: 0x06000D33 RID: 3379 RVA: 0x000FE988 File Offset: 0x000FCB88 public void SaveCreatures() { foreach (CreatureActions creatureActions in this.creatureActions) { creatureActions.SaveCreatures(); } Links.x.cellar.SaveEnemySummons(); } // Token: 0x06000D34 RID: 3380 RVA: 0x000FE9E8 File Offset: 0x000FCBE8 public void PrepareItemsToSave() { this.savingItems = true; } // Token: 0x06000D35 RID: 3381 RVA: 0x000FE9F4 File Offset: 0x000FCBF4 public void SaveGroundItems() { string text = Records.x.openBook + "/Map_" + this.sceneDisplayName + ".es3"; this.saveFile = new ES3File(text); if (Records.x.demo) { this.saveFile.Save("GameVersionForThisScene", Records.x.gameVersionDemo); } else { this.saveFile.Save("GameVersionForThisScene", Records.x.gameVersion); } this.saveFile.Save("TimeOnScene", (float)Links.x.gameplay.gameDays); this.itemIDs.Clear(); this.itemAmts.Clear(); this.itemSocketsA.Clear(); this.itemSocketsB.Clear(); this.itemsForSaleStates.Clear(); this.itemPositions.Clear(); this.itemRotations.Clear(); this.itemLinks.Clear(); this.itemPrompts.Clear(); this.itemTimes.Clear(); this.itemSaveIDs.Clear(); this.itemOriginals.Clear(); int count = this.groundItems.Count; for (int i = 0; i < count; i++) { global::Item item = this.groundItems[i]; if (item) { bool flag = false; if (item.onGround && item.linkedPrompt && item.linkedPrompt.gameObject.GetComponent().state == 0) { flag = true; } if (item.active || (!item.active && item.instantiating) || flag) { this.itemIDs.Add(item.ID); this.itemSaveIDs.Add(item.invRow._Name); this.itemAmts.Add(item.stackSize); this.itemSocketsA.Add(item.socketA); this.itemSocketsB.Add(item.socketB); this.itemsForSaleStates.Add(item.forSale); this.itemPositions.Add(item.gameObject.transform.position); this.itemRotations.Add(item.gameObject.transform.rotation); this.itemTimes.Add(item.durability); if (item.linkedCreatures) { this.itemLinks.Add(item.linkedCreatures.gameObject.name); this.itemLinkIDs.Add(item.linkedCreatureID); } else { this.itemLinks.Add(""); this.itemLinkIDs.Add(0); } if (item.linkedPrompt) { this.itemPrompts.Add(item.linkedPrompt.gameObject.name); } else { this.itemPrompts.Add(""); } this.itemOriginals.Add(item.sceneItemName); } } } this.saveFile.Save>("ItemIDs", this.itemSaveIDs); this.saveFile.Save>("ItemAmts", this.itemAmts); this.saveFile.Save>("ItemSocketsA", this.itemSocketsA); this.saveFile.Save>("ItemSocketsB", this.itemSocketsB); this.saveFile.Save>("ItemForSaleStates", this.itemsForSaleStates); this.saveFile.Save>("ItemPositions", this.itemPositions); this.saveFile.Save>("ItemRotations", this.itemRotations); this.saveFile.Save>("ItemLinks", this.itemLinks); this.saveFile.Save>("ItemLinkIDs", this.itemLinkIDs); this.saveFile.Save>("ItemTimes", this.itemTimes); this.saveFile.Save>("ItemPrompts", this.itemPrompts); this.saveFile.Save>("ItemOriginals", this.itemOriginals); this.saveFile.Save>("ItemsNoRespawn", this.itemsNoRespawn); this.savingItems = false; } // Token: 0x06000D36 RID: 3382 RVA: 0x000FEE1C File Offset: 0x000FD01C public void SaveInteractives() { this.breakableNames.Clear(); this.breakableStates.Clear(); int num = this.breakableActions.Count; for (int i = 0; i < num; i++) { BreakableActions breakableActions = this.breakableActions[i]; if (breakableActions) { if (breakableActions.breakable.armor == 0) { if (breakableActions.destroyed) { this.breakableStates.Add(0); } else { this.breakableStates.Add(1); } } else { this.breakableStates.Add(breakableActions.currentHealth); } this.breakableNames.Add(breakableActions.gameObject.name); } } this.saveFile.Save>("Breakables", this.breakableStates); this.saveFile.Save>("BreakableNames", this.breakableNames); this.chestNames.Clear(); this.chestStates.Clear(); num = this.chestActions.Count; for (int j = 0; j < num; j++) { ChestActions chestActions = this.chestActions[j]; if (chestActions) { this.chestStates.Add(chestActions.currentHealth); this.chestNames.Add(chestActions.gameObject.name); } } this.saveFile.Save>("ChestStates", this.chestStates); this.saveFile.Save>("ChestNames", this.chestNames); this.doorNames.Clear(); this.doorHealth.Clear(); this.doorLocked.Clear(); num = this.doorActions.Count; for (int k = 0; k < num; k++) { DoorActions doorActions = this.doorActions[k]; if (doorActions) { this.doorHealth.Add(doorActions.currentHealth); this.doorLocked.Add(doorActions.door.locked); this.doorNames.Add(doorActions.gameObject.name); } } this.saveFile.Save>("DoorHealth", this.doorHealth); this.saveFile.Save>("DoorLocked", this.doorLocked); this.saveFile.Save>("DoorNames", this.doorNames); this.promptNames.Clear(); this.promptStates.Clear(); num = this.promptActions.Count; for (int l = 0; l < num; l++) { PromptActions promptActions = this.promptActions[l]; if (promptActions) { this.promptStates.Add(promptActions.state); this.promptNames.Add(promptActions.gameObject.name); } } this.saveFile.Save>("Prompts", this.promptStates); this.saveFile.Save>("PromptNames", this.promptNames); num = this.mapExits.Count; this.mapExitNames.Clear(); this.mapExitStates.Clear(); for (int m = 0; m < num; m++) { this.mapExitNames.Add(this.mapExits[m].gameObject.name); if (this.mapExits[m].visited) { this.mapExitStates.Add(1); } else { this.mapExitStates.Add(0); } } this.saveFile.Save>("MapExitNames", this.mapExitNames); this.saveFile.Save>("MapExitStates", this.mapExitStates); this.saveFile.Save>("ResourceTime", this.resourceTime); this.saveFile.Save>("ResourceStates", this.resourceStates); this.saveFile.Sync(); for (int n = 0; n < this.puzzleActions.Count; n++) { this.puzzleActions[n].SavePuzzleInfo(); } } // Token: 0x06000D37 RID: 3383 RVA: 0x000FF214 File Offset: 0x000FD414 public MapExit MatchMapExit(string sceneFrom, string subExit) { for (int i = 0; i < this.mapExits.Count; i++) { if (this.mapExits[i].sceneTo == sceneFrom && (this.mapExits[i].subExit == subExit || subExit == "None")) { return this.mapExits[i].mapExit; } } return null; } // Token: 0x06000D38 RID: 3384 RVA: 0x000FF28C File Offset: 0x000FD48C public Door GetBuddyDoor(MapExit entrance) { for (int i = 0; i < this.mapExits.Count; i++) { if (entrance != this.mapExits[i].mapExit) { if (this.mapExits[i].sceneTo == "Interiors" && entrance.exitTo == MapExit.exitToNames.Exterior) { if (this.mapExits[i].mapExit.interiorConnection == entrance.exteriorConnection) { return this.mapExits[i].door; } } else if (this.mapExits[i].sceneTo == "Exterior" && entrance.exitTo == MapExit.exitToNames.Interiors) { if (this.mapExits[i].mapExit.exteriorConnection == entrance.interiorConnection) { return this.mapExits[i].door; } } else if (this.mapExits[i].sceneTo == "Interiors" && entrance.exitTo == MapExit.exitToNames.Interiors && this.mapExits[i].mapExit.interiorConnection == entrance.interiorConnection) { return this.mapExits[i].door; } } } return null; } // Token: 0x06000D39 RID: 3385 RVA: 0x000FF3D8 File Offset: 0x000FD5D8 public MapExit MatchMapExitInteriorExterior(bool toInterior, MapExit.interiorNames exitName, MapExit entrance) { for (int i = 0; i < this.mapExits.Count; i++) { if (entrance != this.mapExits[i].mapExit && ((this.mapExits[i].sceneTo == "Interiors" && !toInterior) || (this.mapExits[i].sceneTo == "Interiors" && toInterior) || (this.mapExits[i].sceneTo == "Exterior" && toInterior) || (this.mapExits[i].sceneTo == "Exterior" && !toInterior))) { if (!toInterior && this.mapExits[i].mapExit.interiorConnection == exitName) { return this.mapExits[i].mapExit; } if (toInterior) { if (this.mapExits[i].mapExit.exteriorConnection == exitName) { return this.mapExits[i].mapExit; } if (this.mapExits[i].mapExit.interiorConnection == exitName) { return this.mapExits[i].mapExit; } } } } return null; } // Token: 0x06000D3A RID: 3386 RVA: 0x000FF52C File Offset: 0x000FD72C public MapExit MatchMapExitDoorway(bool toInterior, MapExit.interiorNames exitName) { for (int i = 0; i < this.mapExits.Count; i++) { if ((this.mapExits[i].sceneTo == "Interiors" && toInterior) || (this.mapExits[i].sceneTo == "Exterior" && !toInterior)) { if (toInterior && this.mapExits[i].mapExit.interiorConnection == exitName) { return this.mapExits[i].mapExit; } if (!toInterior && this.mapExits[i].mapExit.exteriorConnection == exitName) { return this.mapExits[i].mapExit; } } } return null; } // Token: 0x06000D3B RID: 3387 RVA: 0x000FF5F1 File Offset: 0x000FD7F1 public bool IsInteriorExit(MapExit exit) { return exit.exitTo == MapExit.exitToNames.Interiors; } // Token: 0x06000D3C RID: 3388 RVA: 0x000FF600 File Offset: 0x000FD800 public MapExit ClosestMapEntrance(Vector3 pt) { MapExit mapExit = null; float num = float.PositiveInfinity; for (int i = 0; i < this.mapExits.Count; i++) { float sqrMagnitude = (this.mapExits[i].mapExit.doorPoint - pt).sqrMagnitude; if (sqrMagnitude < num) { num = sqrMagnitude; mapExit = this.mapExits[i].mapExit; } } return mapExit; } // Token: 0x06000D3D RID: 3389 RVA: 0x000FF66C File Offset: 0x000FD86C public MapExit.interiorNames GetMapExitName(string n) { if (n == "A") { return MapExit.interiorNames.A; } if (n == "B") { return MapExit.interiorNames.B; } if (n == "C") { return MapExit.interiorNames.C; } if (n == "D") { return MapExit.interiorNames.D; } if (n == "E") { return MapExit.interiorNames.E; } if (n == "F") { return MapExit.interiorNames.F; } if (n == "G") { return MapExit.interiorNames.G; } if (n == "H") { return MapExit.interiorNames.H; } if (n == "I") { return MapExit.interiorNames.I; } if (n == "J") { return MapExit.interiorNames.J; } if (n == "K") { return MapExit.interiorNames.K; } if (n == "L") { return MapExit.interiorNames.L; } if (n == "M") { return MapExit.interiorNames.M; } if (n == "N") { return MapExit.interiorNames.N; } if (n == "O") { return MapExit.interiorNames.O; } if (n == "P") { return MapExit.interiorNames.P; } if (n == "Q") { return MapExit.interiorNames.Q; } if (n == "R") { return MapExit.interiorNames.R; } if (n == "S") { return MapExit.interiorNames.S; } if (n == "T") { return MapExit.interiorNames.T; } if (n == "U") { return MapExit.interiorNames.U; } if (n == "V") { return MapExit.interiorNames.V; } if (n == "W") { return MapExit.interiorNames.W; } if (n == "X") { return MapExit.interiorNames.X; } if (n == "Y") { return MapExit.interiorNames.Y; } if (n == "Z") { return MapExit.interiorNames.Z; } return MapExit.interiorNames.None; } // Token: 0x06000D3E RID: 3390 RVA: 0x000FF812 File Offset: 0x000FDA12 public void AddItem(global::Item item) { if (this.groundItems.IndexOf(item) == -1) { this.groundItems.Add(item); } } // Token: 0x06000D3F RID: 3391 RVA: 0x000FF830 File Offset: 0x000FDA30 public void CheckTileEffects(TileEffects effects) { for (int i = 0; i < this.breakableActions.Count; i++) { if (!this.breakableActions[i].destroyed) { effects.CheckTileInteractive(this.breakableActions[i].gameObject); } } for (int j = 0; j < this.chestActions.Count; j++) { if (!this.chestActions[j].destroyed) { effects.CheckTileInteractive(this.chestActions[j].gameObject); } } for (int k = 0; k < this.doorActions.Count; k++) { if (!this.doorActions[k].destroyed) { effects.CheckTileInteractive(this.doorActions[k].gameObject); } } } // Token: 0x04001492 RID: 5266 public string sceneName; // Token: 0x04001493 RID: 5267 public string sceneDisplayName; // Token: 0x04001494 RID: 5268 public bool underground; // Token: 0x04001495 RID: 5269 public bool exteriorForest; // Token: 0x04001496 RID: 5270 public bool exteriorDeepForest; // Token: 0x04001497 RID: 5271 public bool exteriorWaterBeach; // Token: 0x04001498 RID: 5272 public bool exteriorBog; // Token: 0x04001499 RID: 5273 public bool exteriorMountains; // Token: 0x0400149A RID: 5274 public bool interiorCave; // Token: 0x0400149B RID: 5275 public bool interiorTomb; // Token: 0x0400149C RID: 5276 public bool horror; // Token: 0x0400149D RID: 5277 public static GameObject origin; // Token: 0x0400149E RID: 5278 public static Links x; // Token: 0x0400149F RID: 5279 public bool timeOfDay; // Token: 0x040014A0 RID: 5280 public bool saveOverTerrain; // Token: 0x040014A1 RID: 5281 public bool singleCharacter; // Token: 0x040014A2 RID: 5282 public bool blackFow; // Token: 0x040014A3 RID: 5283 public bool mapCanResurrect; // Token: 0x040014A4 RID: 5284 public float cameraDistance; // Token: 0x040014A5 RID: 5285 public SceneInfo sceneInfo; // Token: 0x040014A6 RID: 5286 public float lastVersionForThisScene; // Token: 0x040014A7 RID: 5287 public bool savingItems; // Token: 0x040014A8 RID: 5288 public int groupID; // Token: 0x040014A9 RID: 5289 public float lastTimeOnScene; // Token: 0x040014AA RID: 5290 public float boatColliderY; // Token: 0x040014AB RID: 5291 public float waterY; // Token: 0x040014AC RID: 5292 [Header("LISTS")] public List characters = new List(); // Token: 0x040014AD RID: 5293 public Creatures[] creatureControllers = new Creatures[0]; // Token: 0x040014AE RID: 5294 public List creatureActions = new List(); // Token: 0x040014AF RID: 5295 public List creatureHolders = new List(); // Token: 0x040014B0 RID: 5296 public SceneItem[] sceneItems = new SceneItem[0]; // Token: 0x040014B1 RID: 5297 public List groundItems = new List(); // Token: 0x040014B2 RID: 5298 public List breakables = new List(); // Token: 0x040014B3 RID: 5299 public List breakableActions = new List(); // Token: 0x040014B4 RID: 5300 public List doors = new List(); // Token: 0x040014B5 RID: 5301 public List doorActions = new List(); // Token: 0x040014B6 RID: 5302 public List chests = new List(); // Token: 0x040014B7 RID: 5303 public List chestActions = new List(); // Token: 0x040014B8 RID: 5304 public List promptActions = new List(); // Token: 0x040014B9 RID: 5305 public Prompts[] prompts = new Prompts[0]; // Token: 0x040014BA RID: 5306 public List promptStates = new List(); // Token: 0x040014BB RID: 5307 public List meshColliders = new List(); // Token: 0x040014BC RID: 5308 public List blueFog = new List(); // Token: 0x040014BD RID: 5309 public List fogColliders = new List(); // Token: 0x040014BE RID: 5310 private List blueFogBounds = new List(); // Token: 0x040014BF RID: 5311 public List fogColliderBounds = new List(); // Token: 0x040014C0 RID: 5312 public List townColliders = new List(); // Token: 0x040014C1 RID: 5313 public List townColliderBounds = new List(); // Token: 0x040014C2 RID: 5314 public List sporeColliders = new List(); // Token: 0x040014C3 RID: 5315 public List sporeColliderBounds = new List(); // Token: 0x040014C4 RID: 5316 public List enemiesInCamp = new List(); // Token: 0x040014C5 RID: 5317 public List resourcePrefabs = new List(); // Token: 0x040014C6 RID: 5318 public List resourceLocations = new List(); // Token: 0x040014C7 RID: 5319 public List resourceRotations = new List(); // Token: 0x040014C8 RID: 5320 public List resourceTypes = new List(); // Token: 0x040014C9 RID: 5321 public List moonlights = new List(); // Token: 0x040014CA RID: 5322 public List puzzles = new List(); // Token: 0x040014CB RID: 5323 public List puzzleActions = new List(); // Token: 0x040014CC RID: 5324 public List promptQueue = new List(); // Token: 0x040014CD RID: 5325 public Transform cameraPoints; // Token: 0x040014CE RID: 5326 public List camPoints = new List(); // Token: 0x040014CF RID: 5327 public List terrains = new List(); // Token: 0x040014D0 RID: 5328 [Header("GAMEPLAY OBJECTS")] public Light sceneDirectionalLight; // Token: 0x040014D1 RID: 5329 public Light scenePointLight; // Token: 0x040014D2 RID: 5330 public GameObject pointLightShadows; // Token: 0x040014D3 RID: 5331 public List pointShadowCameras = new List(); // Token: 0x040014D4 RID: 5332 public FOWSystem fogOfWar; // Token: 0x040014D5 RID: 5333 public FOWSystemInterior fogOfWarInterior; // Token: 0x040014D6 RID: 5334 public Transform items; // Token: 0x040014D7 RID: 5335 public Transform creatures; // Token: 0x040014D8 RID: 5336 public Transform throats; // Token: 0x040014D9 RID: 5337 public Transform town; // Token: 0x040014DA RID: 5338 public Transform spores; // Token: 0x040014DB RID: 5339 public TVEGlobalVolume vegetation; // Token: 0x040014DC RID: 5340 private List quads; // Token: 0x040014DD RID: 5341 public List activeQuads = new List(); // Token: 0x040014DE RID: 5342 public List party = new List(); // Token: 0x040014DF RID: 5343 private List linksParty; // Token: 0x040014E0 RID: 5344 public MeshRenderer terrain; // Token: 0x040014E1 RID: 5345 public GameObject promptsFolder; // Token: 0x040014E2 RID: 5346 public Transform globalVegVolume; // Token: 0x040014E3 RID: 5347 public GameObject morningFolder; // Token: 0x040014E4 RID: 5348 public GameObject afternoonFolder; // Token: 0x040014E5 RID: 5349 public GameObject eveningFolder; // Token: 0x040014E6 RID: 5350 public GameObject nightFolder; // Token: 0x040014E7 RID: 5351 public int pointLightTransforms; // Token: 0x040014E8 RID: 5352 public InteriorLights currentInteriorLight; // Token: 0x040014E9 RID: 5353 public GameObject ghostPoint; // Token: 0x040014EA RID: 5354 public GraphNode ghostNode; // Token: 0x040014EB RID: 5355 public GameObject boatCollider; // Token: 0x040014EC RID: 5356 [Header("CAMERA OBJECTS")] public Camera sceneCamera; // Token: 0x040014ED RID: 5357 public Collider currCameraCollider; // Token: 0x040014EE RID: 5358 public Transform cameraDirection; // Token: 0x040014EF RID: 5359 public List sceneViews = new List(); // Token: 0x040014F0 RID: 5360 public Camera currentCameraView; // Token: 0x040014F1 RID: 5361 public SceneCamera activeView; // Token: 0x040014F2 RID: 5362 private SceneCamera prevView; // Token: 0x040014F3 RID: 5363 [Header("STARTING LOCATIONS")] public Transform playerStartDefault; // Token: 0x040014F4 RID: 5364 public Transform playerStartBoatDefault; // Token: 0x040014F5 RID: 5365 public List mapExits = new List(); // Token: 0x040014F6 RID: 5366 [Header("BAKE VARIABLES")] public Vector2 aspect; // Token: 0x040014F7 RID: 5367 public Vector2 resolution; // Token: 0x040014F8 RID: 5368 public Vector2 split; // Token: 0x040014F9 RID: 5369 public float quadOverlap; // Token: 0x040014FA RID: 5370 public int fogOfWarSize; // Token: 0x040014FB RID: 5371 public List itemIDs = new List(); // Token: 0x040014FC RID: 5372 public List itemSaveIDs = new List(); // Token: 0x040014FD RID: 5373 public List itemAmts = new List(); // Token: 0x040014FE RID: 5374 public List itemSocketsA = new List(); // Token: 0x040014FF RID: 5375 public List itemSocketsB = new List(); // Token: 0x04001500 RID: 5376 public List itemsForSaleStates = new List(); // Token: 0x04001501 RID: 5377 public List itemPositions = new List(); // Token: 0x04001502 RID: 5378 public List itemRotations = new List(); // Token: 0x04001503 RID: 5379 public List itemLinks = new List(); // Token: 0x04001504 RID: 5380 public List itemLinkIDs = new List(); // Token: 0x04001505 RID: 5381 public List itemTimes = new List(); // Token: 0x04001506 RID: 5382 public List itemPrompts = new List(); // Token: 0x04001507 RID: 5383 public List itemOriginals = new List(); // Token: 0x04001508 RID: 5384 public List itemsNoRespawn = new List(); // Token: 0x04001509 RID: 5385 private ES3File saveFile; // Token: 0x0400150A RID: 5386 public List breakableStates = new List(); // Token: 0x0400150B RID: 5387 public List resourceStates = new List(); // Token: 0x0400150C RID: 5388 public List resourceTime = new List(); // Token: 0x0400150D RID: 5389 public List chestStates = new List(); // Token: 0x0400150E RID: 5390 public List doorHealth = new List(); // Token: 0x0400150F RID: 5391 public List doorLocked = new List(); // Token: 0x04001510 RID: 5392 public List breakableNames = new List(); // Token: 0x04001511 RID: 5393 public List doorNames = new List(); // Token: 0x04001512 RID: 5394 public List chestNames = new List(); // Token: 0x04001513 RID: 5395 public List promptNames = new List(); // Token: 0x04001514 RID: 5396 public List mapExitNames = new List(); // Token: 0x04001515 RID: 5397 public List mapExitStates = new List(); // Token: 0x04001516 RID: 5398 private bool firstTimeOnScene; // Token: 0x04001517 RID: 5399 private bool mainCharacterInGhostFog; // Token: 0x04001518 RID: 5400 private float queueUpdate; // Token: 0x04001519 RID: 5401 private Vector3 prevMainPosition; // Token: 0x0400151A RID: 5402 private string prevTimeOfDay; // Token: 0x0400151B RID: 5403 private IEnumerator fogFadeCorout; // Token: 0x0400151C RID: 5404 private float currentFogValue; }