using System; using System.Collections; using System.Collections.Generic; using DarkTonic.MasterAudio; using Pathfinding; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; // Token: 0x02000030 RID: 48 public class Gameplay : MonoBehaviour { // Token: 0x0600075B RID: 1883 RVA: 0x0009B387 File Offset: 0x00099587 private void Awake() { } // Token: 0x0600075C RID: 1884 RVA: 0x0009B38C File Offset: 0x0009958C private void Start() { Shader.SetGlobalFloat("_Combat", 0f); this.playerInput = base.gameObject.GetComponent(); this.move = this.playerInput.actions["Move"]; this.action = this.playerInput.actions["Action"]; this.interact = this.playerInput.actions["Interact"]; this.showAllItems = this.playerInput.actions["Show Items"]; this.switchTarget = this.playerInput.actions["Dodge"]; this.aim = this.playerInput.actions["Aim"]; this.dock = this.playerInput.actions["Dock"]; this.cancel = this.playerInput.actions["Cancel"]; this.rightJoyStick = this.playerInput.actions["Target"]; this.quickSave = this.playerInput.actions["Quick Save"]; this.allMenus = this.playerInput.actions["Menus"]; this.switchPartyUp = this.playerInput.actions["Party Up"]; this.switchPartyDown = this.playerInput.actions["Party Down"]; this.partyItemsLeft = this.playerInput.actions["Dock Left"]; this.partyItemsRight = this.playerInput.actions["Dock Right"]; this.menus = this.playerInput.actions["Options"]; this.hudLeft = this.playerInput.actions["HUD Left"]; this.hudRight = this.playerInput.actions["HUD Right"]; this.joystickTarget.SetActive(false); this.messageDefenseHoldMK.SetActive(false); this.messageDefenseHoldJoy.SetActive(false); this.messageDefenseHoldQuickMK.SetActive(false); this.AllOff(); this.keyCodes = this.keyControl.keys; this.keyConverted = this.keyControl.keyStrings; this.openMenus = Records.x.openMenus; Links.x.gameplay = this; this.gameHours = 5f; this.party = Links.x.party; for (int i = 0; i < 4; i++) { GameObject gameObject = Object.Instantiate(this.effectsTilePrefab, new Vector3(10000f, 0f, 0f), Quaternion.identity, base.transform); gameObject.SetActive(false); this.effectTileWaypoints.Add(gameObject); this.effectTileWaypointAnimators.Add(gameObject.transform.GetChild(0).gameObject.GetComponent()); } this.effectTileTooFar = Object.Instantiate(this.effectsTilePrefabTooFar, new Vector3(10000f, 0f, 0f), Quaternion.identity, base.transform); this.effectTileTooFar.SetActive(false); this.currentTileEffects = Links.x.cellar.currentTileEffects; GameObject gameObject2 = new GameObject("World Look At"); this.lookAt = gameObject2.transform; this.lookAt.SetParent(base.transform, true); this.selectionCircle.SetActive(false); this.controllers = Input.GetJoystickNames(); EventSystem.current.SetSelectedGameObject(null); this.circleBreakObject.SetActive(false); } // Token: 0x0600075D RID: 1885 RVA: 0x0009B740 File Offset: 0x00099940 public void SetInteractableSelected(EventSystem eventSystem, GameObject goj) { eventSystem.enabled = false; eventSystem.sendNavigationEvents = false; eventSystem.SetSelectedGameObject(null); eventSystem.SetSelectedGameObject(goj); eventSystem.sendNavigationEvents = true; eventSystem.enabled = true; } // Token: 0x0600075E RID: 1886 RVA: 0x0009B76C File Offset: 0x0009996C private void Update() { this.seconds = this.Seconds(); if (!Records.x.paused) { int count = this.levelUpSkills.Count; } if (this.screenW != Screen.width || this.screenH != Screen.height) { this.screenW = Screen.width; this.screenH = Screen.height; Links.x.hudControl.ChangeWindowSize(); } this.currentEventObject = EventSystem.current.currentSelectedGameObject; if (this.mk) { if (this.uiHover != EventSystem.current.IsPointerOverGameObject()) { this.uiHover = EventSystem.current.IsPointerOverGameObject(); } } else { this.uiHover = false; if (this.firstEventObject && !this.currentEventObject) { this.firstEventObject.GetComponent().FirstSelect(); } } if (this.prevEventObject != this.currentEventObject) { if (this.prevEventObject) { UITriggerButton component = this.prevEventObject.GetComponent(); if (component) { component.SetSelected(false); } } if (this.currentEventObject && this.currentEventObject.activeSelf) { UITriggerButton component2 = this.currentEventObject.GetComponent(); bool flag = true; if (Records.x.mainMenuOpen) { flag = Links.x.mainMenu && (Links.x.mainMenu.newGameButton.gameObject.activeSelf || component2.GetButton() == Links.x.mainMenu.newGameButton); } if (Records.x.dialogue && !Links.x.dialogue.responsesOn && this.currentEventObject.name.Contains("Response Button")) { flag = false; } if (Links.x.keyboardScript.gameObject.activeSelf) { flag = Links.x.keyboardScript.IsKey(this.currentEventObject); } if (component2 && flag) { component2.SetSelected(true); } } } this.prevEventObject = this.currentEventObject; if (this.mk) { this.closeTheGap = true; } else { this.closeTheGap = false; } this.currentControllerCount = Input.GetJoystickNames().Length; if (Links.x.gaia.sceneLoaded) { if (this.currentControllerCount > 0 && this.prevControllerCount == 0) { if (Records.x.usingController) { if (!this.joy) { Links.x.gameFeed.ShowNotice("Controller detected"); Debug.Log("Controller detected"); this.joy = true; this.mk = false; Links.x.joy = true; Links.x.mk = false; this.SetControlsText(false); Links.x.hudControl.SwitchController(true); Links.x.partyColliderAdventure.itemCollector.UpdateSize(); if (Records.x.mainMenuOpen) { GameObject gameObject = GameObject.Find("Main Menu"); EventSystem.current.SetSelectedGameObject(gameObject.GetComponent().newGameButton.gameObject); gameObject.GetComponent().newGameButton.gameObject.GetComponent().SetSelected(true); } } } else if (Records.x.mainMenuOpen) { GameObject gameObject2 = GameObject.Find("Main Menu"); if (gameObject2) { if (!this.joy) { Links.x.gameFeed.ShowNotice("Controller detected"); Links.x.joy = true; this.joy = true; Links.x.mk = false; this.mk = false; this.SetControlsText(false); Links.x.partyColliderAdventure.itemCollector.UpdateSize(); Links.x.options.UseController(); Links.x.hudControl.SwitchController(true); Records.x.usingController = true; EventSystem.current.SetSelectedGameObject(gameObject2.GetComponent().newGameButton.gameObject); gameObject2.GetComponent().newGameButton.gameObject.GetComponent().SetSelected(true); } } else { Links.x.gameFeed.ShowNotice("Open settings menu to activate controller scheme"); } } else { Links.x.partyColliderAdventure.itemCollector.UpdateSize(); Links.x.gameFeed.ShowNotice("Open settings menu to activate controller scheme"); } } if (this.currentControllerCount == 0 && this.prevControllerCount > 0) { Links.x.gameFeed.ShowNotice("Controller removed"); this.currentSpriteSheetAsset = 0; this.SetControlsText(false); Links.x.hudControl.SwitchController(false); } } this.prevControllerCount = this.currentControllerCount; this.triggerCancel = this.cancel.ReadValue(); this.triggerAction = this.action.ReadValue(); this.triggerInteract = this.interact.ReadValue(); this.triggerItems = this.showAllItems.ReadValue(); this.triggerDodge = this.switchTarget.ReadValue(); this.triggerAim = this.aim.ReadValue(); this.triggerDock = this.dock.ReadValue(); this.triggerQuickSave = this.quickSave.ReadValue(); this.rightJoystick = this.rightJoyStick.ReadValue(); this.triggerAllMenus = this.allMenus.ReadValue(); this.triggerParty1 = this.switchPartyUp.ReadValue(); this.triggerParty2 = this.switchPartyDown.ReadValue(); this.triggerPartyItems3 = this.partyItemsLeft.ReadValue(); this.triggerPartyItems4 = this.partyItemsRight.ReadValue(); this.triggerMenus = this.menus.ReadValue(); this.triggerHudLeft = this.hudLeft.ReadValue(); this.triggerHudRight = this.hudRight.ReadValue(); if (this.triggerAction > 0f && this.prevTriggerAction == 0f) { if (!Records.x.inMenus) { this.StoneSoundQuieter(); } this.actionStart = true; } else { this.actionStart = false; } if (this.triggerAction > 0f && this.prevTriggerAction == 0f) { this.actionDown = true; } if (this.triggerAction == 0f && this.prevTriggerAction > 0f) { this.actionUp = true; this.waitingForActionUp = false; } if (this.triggerAction == 0f && this.prevTriggerAction == 0f) { this.actionDown = false; this.actionUp = false; } if (this.triggerInteract > 0f && this.prevTriggerInteract == 0f) { if (!Records.x.inMenus) { this.StoneSoundQuieter(); } this.interactStart = true; } else { this.interactStart = false; } if (this.triggerItems > 0f && this.prevTriggerItems == 0f) { if (!Records.x.inMenus) { this.StoneSoundQuieter(); } this.itemsStart = true; this.itemsDown = true; this.itemsUp = false; } if (this.prevTriggerItems > 0f && this.triggerItems == 0f) { if (!Records.x.inMenus) { this.StoneSoundQuieter(); } this.itemsDown = false; this.itemsUp = true; } if (this.triggerItems == 0f && this.prevTriggerItems == 0f) { this.itemsDown = false; this.itemsUp = false; } if (this.triggerItems > 0f && this.prevTriggerItems > 0f) { this.itemsStart = false; } if (this.triggerDodge > 0f && this.prevTriggerDodge == 0f) { this.StoneSound(); this.targetDodgeStart = true; this.targetDodgeHold = true; this.targetDodgeUp = false; } if (this.triggerDodge > 0f && this.prevTriggerDodge > 0f) { this.targetDodgeStart = false; } if (this.prevTriggerDodge > 0f && this.triggerDodge == 0f) { this.targetDodgeHold = false; this.targetDodgeUp = true; this.targetDodgeStart = false; } if (this.triggerDodge == 0f && this.prevTriggerDodge == 0f) { this.targetDodgeUp = false; this.targetDodgeStart = false; } if (this.triggerAim > 0f && this.prevTriggerAim == 0f) { this.StoneSoundQuieter(); this.aimStart = true; this.aimUp = false; this.aimHold = true; } if (this.triggerAim > 0f && this.prevTriggerAim > 0f) { this.aimStart = false; } if (this.prevTriggerAim > 0f && this.triggerAim == 0f) { this.aimUp = true; this.aimStart = false; this.aimHold = false; } if (this.triggerAim == 0f && this.prevTriggerAim == 0f) { this.aimUp = false; this.aimStart = false; this.aimHold = false; } if (this.triggerDock > 0f && this.prevTriggerDock == 0f) { this.dockStart = true; this.dockDown = true; this.dockUp = false; } if (this.triggerDock > 0f && this.prevTriggerDock > 0f) { this.dockStart = false; } if (this.prevTriggerDock > 0f && this.triggerDock == 0f) { this.dockDown = false; this.dockUp = true; this.dockStart = false; } if (this.triggerDock == 0f && this.prevTriggerDock == 0f) { this.dockDown = false; this.dockUp = false; this.dockStart = false; } if (this.triggerCancel > 0f && this.prevTriggerCancel == 0f) { if (!Records.x.inMenus) { this.StoneSoundQuieter(); } this.cancelStart = true; } else { this.cancelStart = false; } if (this.triggerQuickSave > 0f && this.prevTriggerQuickSave == 0f) { this.quickSaveStart = true; } else { this.quickSaveStart = false; } if (this.triggerHudLeft > 0f && this.prevTriggerHudLeft == 0f) { this.hudLeftStart = true; } else { this.hudLeftStart = false; } if (this.triggerHudRight > 0f && this.prevTriggerHudRight == 0f) { this.hudRightStart = true; } else { this.hudRightStart = false; } if (this.triggerAllMenus > 0f && this.prevTriggerAllMenus == 0f) { if (!Records.x.inMenus) { this.StoneSoundQuieter(); } this.allMenusStart = true; this.allMenusDown = true; this.allMenusUp = false; } else { this.allMenusStart = false; this.allMenusDown = true; } if (this.prevTriggerAllMenus > 0f && this.triggerAllMenus == 0f) { if (!Records.x.inMenus) { this.StoneSoundQuieter(); } this.allMenusDown = false; this.allMenusDown = false; this.allMenusUp = true; } if (this.triggerAllMenus == 0f && this.prevTriggerAllMenus == 0f) { this.allMenusDown = false; this.allMenusUp = false; } if (this.triggerItems == 0f && !Records.x.inMenus) { if (this.triggerParty1 > 0f && this.prevTriggerParty1 == 0f) { this.StoneSoundQuieter(); this.party1Down = true; } else { this.party1Down = false; } if (this.triggerParty2 > 0f && this.prevTriggerParty2 == 0f) { this.StoneSoundQuieter(); this.party2Down = true; } else { this.party2Down = false; } if (this.triggerPartyItems3 > 0f && this.prevTriggerPartyItems3 == 0f) { this.StoneSoundQuieter(); this.partyItems3Down = true; } else { this.partyItems3Down = false; } if (this.triggerPartyItems4 > 0f && this.prevTriggerPartyItems4 == 0f) { this.StoneSoundQuieter(); this.partyItems4Down = true; } else { this.partyItems4Down = false; } } if (this.triggerMenus > 0f && this.prevTriggerMenus == 0f) { this.StoneSound(); this.menusDown = true; } else { this.menusDown = false; } if (Links.x.gaia.boro && Links.x.main) { if (!this.sailing) { if (Records.x.partySailing) { Links.x.gaia.SetEnvironmentPlaylist(true, false, false); this.sailing = true; } else if (Physics.Raycast(Links.x.main.tr.position + new Vector3(0f, 10f, 0f), Vector3.up * -1f, 20f, 16384)) { Links.x.gaia.SetEnvironmentPlaylist(true, false, false); this.sailing = true; } } else if (!Records.x.partySailing) { RaycastHit raycastHit; Physics.Raycast(Links.x.main.tr.position + new Vector3(0f, 10f, 0f), Vector3.up * -1f, out raycastHit, 20f, 16384); if (!raycastHit.collider) { Links.x.gaia.SetEnvironmentPlaylist(false, Links.x.main.inTown, false); this.sailing = false; } } } if (!Records.x.saving && Links.x.joy && Input.GetKeyDown(KeyCode.Escape) && Links.x.gaia.sceneLoaded && !Links.x.combat.inPocketAttack && !Links.x.rallyStage.playing && !Links.x.qte.playing && !Links.x.questEnd.on) { Links.x.options.mk.isOn = true; Links.x.options.UseMK(); this.joy = false; Links.x.joy = false; this.mk = true; Links.x.mk = true; this.SetControlsText(false); Links.x.partyColliderAdventure.itemCollector.UpdateSize(); Records.x.usingController = false; } if (!Records.x.saving && this.mk && Input.GetKeyDown(KeyCode.Escape) && (!Records.x.typing || (Records.x.typing && Links.x.creation)) && !Records.x.miniGame && !Links.x.combat.inPocketAttack && !Links.x.questEnd.on && !Records.x.dialogue) { if (this.openMenus.Count == 0) { if (Records.x.dialogue) { if (!Records.x.editor && Records.x.secrets) { } } else if (Links.x.options.contents1.activeSelf) { Links.x.options.StartEndMenu(true); } else { this.OpenDock(); if (Records.x.mainMenuOpen) { Links.x.options.OpenMenu(); } else { Links.x.saveLoad.OpenMenu(); } } } else { this.openingAnotherMenu = false; if (Links.x.spellcrafting.open) { if (!Links.x.spellcrafting.confirming) { Links.x.spellcrafting.StartEndMenu(false); } } else if (Links.x.options.contents1.activeSelf) { this.CloseAllMenus(); this.CloseDock(); } else { this.CloseAllMenus(); this.CloseDock(); } } } this.quickReposition = false; this.quickGroup = false; this.quickCommandAttack = false; if ((!Links.x.pathfind || this.makeCircleMode || Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands"))) && this.mk && !this.spellcasting && !Records.x.miniGame && !Links.x.pocketWheel.rallyWheelOpen && !Records.x.partySailing) { if (!this.messageDefenseHoldQuickMK.activeSelf && Links.x.gaia.sceneLoaded && !Records.x.inMenus && !Records.x.removeControls && !Records.x.typing && Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands"))) { this.messageDefenseHoldQuickMK.SetActive(true); this.messageDefenseHoldQuickAnimMK.Play("ControlsSlideMK"); } if (Input.GetMouseButtonDown(0)) { this.groupMouseTime = Time.timeSinceLevelLoad; } if (Time.timeSinceLevelLoad > this.groupMouseTime + 0.25f && (Input.GetMouseButton(0) || Input.GetMouseButtonUp(0))) { this.quickGroup = true; } if (Input.GetMouseButton(0) || Input.GetMouseButtonUp(0)) { this.quickGroup = true; } if (!this.quickGroup && this.attackDirection.activeSelf) { this.attackDirection.SetActive(false); } } if (Input.GetKeyUp(Links.x.gameplay.keyControl.GetHotkey("Commands"))) { if (this.attackDirection.activeSelf) { this.attackDirection.SetActive(false); } if (this.messageDefenseHoldQuickMK.activeSelf) { this.messageDefenseHoldQuickAnimMK.Play("ControlsSlideOutMK"); } } if (!Records.x.saving && !Records.x.mainMenuOpen) { if (this.joy && Mathf.Abs(this.rightJoystick.x) > 0.5f && Links.x.hudControl.gameFeedPopout.activeSelf && Links.x.hudControl.scrollbar) { Links.x.hudControl.scrollbar.value += this.rightJoystick.x * 0.1f; } if (Records.x.pocketPause) { Links.x.domeTr.Rotate(new Vector3(0f, 10f * Time.deltaTime, 3f * Time.deltaTime)); } bool flag2 = false; bool flag3 = false; bool flag4 = false; bool flag5 = false; bool flag6 = false; SelectionCircle selectionCircle = null; this.mouseNode = null; this.hitWater = false; this.hitBeach = false; bool flag7 = false; if (this.mk) { if (Input.GetMouseButton(0) || Input.GetMouseButtonDown(0)) { if (Links.x.hasMain) { if (Links.x.main.physicsMove) { flag7 = true; } } else { flag7 = false; } } if (Input.GetMouseButtonDown(0)) { this.startMouseDownTime = Time.timeSinceLevelLoad; } if ((Input.GetMouseButtonDown(0) || Input.GetMouseButton(0)) && this.startMouseDownTime > 0f && (Time.timeSinceLevelLoad >= this.startMouseDownTime + 0.25f || Records.x.pocketPause)) { this.holdingMouseButton = true; this.startMouseDownTime = 0f; } if (Input.GetMouseButtonUp(0)) { if (Links.x.hasMain && Time.timeSinceLevelLoad < this.startMouseDownTime + 0.25f && Links.x.main.moving) { Links.x.main.SetWaypoint(Vector3.zero); } this.startMouseDownTime = 0f; this.holdingMouseButton = false; } } if (Records.x.shouting && Input.GetMouseButtonDown(1)) { if (this.tp1.open) { this.tp1.EndMenu(); } if (this.tp2.open) { this.tp2.EndMenu(); } if (this.tp3.open) { this.tp3.EndMenu(); } if (this.tp4.open) { this.tp4.EndMenu(); } } if (this.mk) { if (!this.uiHover && !Records.x.inMenus && !Records.x.miniGame && !Records.x.removeControls && !Links.x.pocketWheel.rallyWheelOpen) { if (Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Party 1"))) { Character hotKeyCharacter = Links.x.GetHotKeyCharacter(0); if (hotKeyCharacter && !hotKeyCharacter.dead) { Links.x.fellowship.SingleSelected(hotKeyCharacter); hotKeyCharacter.AddToSelected(false, true); hotKeyCharacter.SetAsLeader(); Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true); } } if (Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Party 2"))) { Character hotKeyCharacter2 = Links.x.GetHotKeyCharacter(1); if (hotKeyCharacter2 && !hotKeyCharacter2.dead) { Links.x.fellowship.SingleSelected(hotKeyCharacter2); hotKeyCharacter2.AddToSelected(false, true); hotKeyCharacter2.SetAsLeader(); Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true); } } if (Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Party 3"))) { Character hotKeyCharacter3 = Links.x.GetHotKeyCharacter(2); if (hotKeyCharacter3 && !hotKeyCharacter3.dead) { Links.x.fellowship.SingleSelected(hotKeyCharacter3); hotKeyCharacter3.AddToSelected(false, true); hotKeyCharacter3.SetAsLeader(); Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true); } } if (Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Party 4"))) { Character hotKeyCharacter4 = Links.x.GetHotKeyCharacter(3); if (hotKeyCharacter4 && !hotKeyCharacter4.dead) { Links.x.fellowship.SingleSelected(hotKeyCharacter4); hotKeyCharacter4.AddToSelected(false, true); hotKeyCharacter4.SetAsLeader(); Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true); } } float axisRaw = Input.GetAxisRaw(Links.x.rtsCamera.cameraControls.ZoomInputAxis); if (Mathf.Abs(axisRaw) > 0f && (Time.timeSinceLevelLoad > this.portraitChangeTime || this.portraitChangeTime == 0f)) { bool flag8 = false; if (Links.x.main && Links.x.main.timelineIcon && Links.x.main.timelineIcon.overridePause) { flag8 = true; } if (!flag8) { this.portraitChangeTime = Time.timeSinceLevelLoad + 0.05f; Links.x.hudControl.ArrangePortraits(); Character character; if (axisRaw > 0f) { character = Links.x.hudControl.upCharacter; } else { character = Links.x.hudControl.downCharacter; } if (character) { Links.x.fellowship.SingleSelected(character); character.AddToSelected(false, true); character.SetAsLeader(); Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true); } } } } this.ray = Links.x.worldCamera.ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f)); RaycastHit raycastHit2; if (Physics.Raycast(this.ray, out raycastHit2, 500f, -2146957312) && !this.spellTargetingGround) { if (raycastHit2.collider.gameObject.layer == 11) { flag6 = false; } else { flag6 = true; this.mousePoint = raycastHit2.point; selectionCircle = raycastHit2.collider.gameObject.GetComponent(); if (selectionCircle) { if (selectionCircle.character) { this.mouseNode = selectionCircle.character.node; } else if (selectionCircle.boat) { this.mouseNode = Links.x.fellowship.NearNode(selectionCircle.boat.tr.position, false, true, false, 0, -1); } } Links.x.fellowship.mouseNode = this.mouseNode; } } if (!flag6 && Physics.Raycast(this.ray, out raycastHit2, 500f, 4194449)) { if (raycastHit2.collider.gameObject.layer == 4) { if (Physics.Raycast(this.ray, 500f, 128)) { flag4 = true; } else { flag3 = true; } } if (raycastHit2.collider.gameObject.layer == 7 || flag4) { flag4 = true; } else { flag2 = true; } this.mousePoint = raycastHit2.point; bool flag9 = false; if (this.spellTargetingGround && this.currentAbility != null && this.currentAbility.Contains("Moss")) { flag9 = true; } this.mouseNode = Links.x.fellowship.NearNode(this.mousePoint, false, flag3, flag9, 0, -1); Links.x.fellowship.mouseNode = this.mouseNode; if (flag3 && !Records.x.partySailing && Records.x.BoroInParty() && Links.x.gaia.partyBoat) { bool flag10 = false; if (Links.x.gaia.boat.CanSail(out flag10) && flag10) { this.hitWater = true; } } } if (Links.x.fogOfWar && Links.x.main && this.mk) { Vector3 point = this.mousePoint; RaycastHit raycastHit3; if (Physics.Raycast(this.ray, out raycastHit3, 500f, -2143215471)) { point = raycastHit3.point; } if (Links.x.rtsCamera.currentBoundsName == "") { if (!Links.x.fogOfWar.IsVisible(point)) { this.mouseVisible = false; } else { this.mouseVisible = true; } if (!Links.x.fogOfWar.IsVisibleWorm(point)) { this.mouseWormVisible = false; } else { this.mouseWormVisible = true; } if (Input.GetKey(KeyCode.Alpha7) && Records.x.editor) { Debug.Log(this.mouseVisible.ToString() + " " + this.mouseWormVisible.ToString()); } } else { if (!Links.x.fogOfWarInterior.IsVisible(point)) { this.mouseVisible = false; } else { this.mouseVisible = true; } if (!Links.x.fogOfWarInterior.IsVisibleWorm(point)) { this.mouseWormVisible = false; } else { this.mouseWormVisible = true; } } } } if (this.selectionCircle.activeSelf) { this.selectionCircle.transform.position = Links.x.main.tr.position; } this.playerInAction = false; this.attackingCharacter = Links.x.main; if (Records.x.pocketPause) { Character character2 = Links.x.main; bool flag11 = false; if (Links.x.combat.inPocketAttack && Links.x.pocketWheel.selectedRallyCharacter) { character2 = Links.x.pocketWheel.selectedRallyCharacter; this.attackingCharacter = character2; flag11 = true; } if (!flag11 && (character2.inAction || character2.inRecovery || character2.IsAttacking(character2.body.currentHash)) && character2.timelineIcon && character2.timelineIcon.overridePause) { this.playerInAction = true; } this.startPocketPause = false; } this.descWindowOpen = false; if (Links.x.hudControl.descriptionWindowOpen) { this.pointer = new PointerEventData(EventSystem.current); this.pointer.position = Input.mousePosition; this.raycastResults.Clear(); EventSystem.current.RaycastAll(this.pointer, this.raycastResults); bool flag12 = false; if (this.mk && this.raycastResults.Count > 0) { foreach (RaycastResult raycastResult in this.raycastResults) { string name = raycastResult.gameObject.name; if (name.Contains(" Btn") || name.Contains("Light Attack") || name.Contains("Special Attack") || name.Contains("Rally Attack") || name.Contains("Rare Ammo") || name.Contains("Heavy Attack") || name.Contains("Medium Attack") || name.Contains("Spellbag") || name.Contains("Songbook") || Links.x.pocketWheel.Charming() || name.Contains("Item 1") || name.Contains("Item 2") || name.Contains("Item 3") || name.Contains("Sneak") || name.Contains("Shout")) { flag12 = true; } } } if (this.joy) { this.descWindowOpen = true; } if ((!flag12 && this.mk) || (this.joy && this.cancelStart)) { Links.x.hudControl.CloseDescWindow(); } } if (Links.x.hudControl.tutorialTipOpen) { if (Links.x.mk && Input.GetMouseButtonUp(1)) { Links.x.hudControl.CloseTutorialTooltip(); } return; } if (!Records.x.inspecting && Links.x.hasMain) { SceneCamera sceneCamera = null; if (Links.x.main.tr) { RaycastHit raycastHit2; if (Physics.Raycast(Links.x.main.tr.position + new Vector3(0f, 50f, 0f), Vector3.up * -1f, out raycastHit2, 200f, 134217728)) { RaycastHit raycastHit4; if (raycastHit2.collider.gameObject.name.Contains("Camera Collider")) { sceneCamera = raycastHit2.collider.gameObject.transform.parent.gameObject.GetComponent(); } else if (Physics.Raycast(raycastHit2.point - new Vector3(0f, 1f, 0f), Vector3.up * -1f, out raycastHit4, 100f, 134217728) && raycastHit4.collider.gameObject.name.Contains("Camera Collider")) { sceneCamera = raycastHit4.collider.gameObject.transform.parent.gameObject.GetComponent(); } } if (sceneCamera && !Records.x.inspectCamera && !sceneCamera.gameObject.name.Contains("Frog") && Links.x.gaia.sceneLoaded && Links.x.gaia.pathfindingReady) { Links.x.inspectTextAnimator.gameObject.SetActive(true); Links.x.inspectTextAnimator.Play("InspectOn"); } if (!sceneCamera && Records.x.inspectCamera && !Records.x.inspectCamera.gameObject.name.Contains("Frog") && Links.x.gaia.sceneLoaded && Links.x.gaia.pathfindingReady) { Links.x.inspectTextAnimator.Play("InspectOff"); } if (!sceneCamera && Links.x.inspectTextAnimator.gameObject.activeSelf) { Links.x.inspectTextAnimator.Play("InspectOff"); } if (sceneCamera && sceneCamera.gameObject.name.Contains("Frog")) { Records.x.inspectCamera = sceneCamera; if (Links.x.main.desiredGraph == 0) { Records.x.previousView = Links.x.diorama.GetOutdoorView(); } else { Records.x.previousView = Links.x.diorama.GetIndoorView(); } Links.x.diorama.ToggleSceneCameras(Records.x.inspectCamera.isInterior, Records.x.inspectCamera.id); Links.x.rtsCamera.CopyPerspectiveCamera(Links.x.diorama.activeView.sceneCamera, null, null); Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); Records.x.inspecting = true; } Records.x.inspectCamera = sceneCamera; } } else if (Records.x.inspectCamera && Records.x.inspectCamera != Links.x.diorama.activeView && !Links.x.worldCamera.orthographic && !Links.x.cameraEffects.transitioning) { if (Links.x.main.desiredGraph == 0) { Records.x.previousView = Links.x.diorama.GetOutdoorView(); } else { Records.x.previousView = Links.x.diorama.GetIndoorView(); } Links.x.diorama.ToggleSceneCameras(Records.x.inspectCamera.isInterior, Records.x.inspectCamera.id); Links.x.rtsCamera.CopyPerspectiveCamera(Records.x.inspectCamera.sceneCamera, null, null); Links.x.cameraEffects.ToggleInteriorExterior(Links.x.main); Records.x.inspecting = true; } if (Records.x.editor && Input.GetKey(KeyCode.K)) { string[] array = new string[31]; array[0] = this.uiHover.ToString(); array[1] = " "; int num = 2; Camera worldCamera = Links.x.worldCamera; array[num] = ((worldCamera != null) ? worldCamera.ToString() : null); array[3] = " "; array[4] = Links.x.gaia.sceneLoaded.ToString(); array[5] = " "; array[6] = this.clickStartOnUIHover.ToString(); array[7] = " "; array[8] = Links.x.gaia.pathfindingReady.ToString(); array[9] = " "; array[10] = Records.x.paused.ToString(); array[11] = " "; array[12] = Records.x.dialogue.ToString(); array[13] = " "; array[14] = Records.x.inOverworldMap.ToString(); array[15] = " "; array[16] = this.playerInAction.ToString(); array[17] = " "; array[18] = Records.x.inMenus.ToString(); array[19] = " "; array[20] = this.hudLeftOpen.ToString(); array[21] = " "; array[22] = this.hudRightOpen.ToString(); array[23] = " "; array[24] = this.descWindowOpen.ToString(); array[25] = " "; array[26] = flag7.ToString(); array[27] = " "; array[28] = this.CanClick().ToString(); array[29] = " "; array[30] = this.CanInteractWithWorld("Character").ToString(); Debug.Log(string.Concat(array)); } if (!this.uiHover && Links.x.worldCamera && Links.x.gaia.sceneLoaded && Links.x.gaia.pathfindingReady && !Records.x.paused && !Records.x.dialogue && !Records.x.inOverworldMap && !this.playerInAction && !Records.x.inMenus && !this.hudLeftOpen && !this.hudRightOpen && !this.descWindowOpen && !flag7) { bool flag13 = false; Vector2 vector = new Vector2(Input.mousePosition.x / (float)Screen.width, Input.mousePosition.y / (float)Screen.height); float num2 = 0.02f; if (Input.GetMouseButtonDown(0)) { this.clickCount++; if (this.clickCount == 2) { if (Time.realtimeSinceStartup < this.clickTime + 0.3f && Vector2.Distance(vector, this.prevClickPosition) < num2) { this.doubleClick = true; this.clickTime = Time.realtimeSinceStartup; } else { this.clickCount = 0; this.doubleClick = false; } } else if (this.clickCount == 1) { this.clickTime = Time.realtimeSinceStartup; this.prevClickPosition = vector; } } if ((this.clickCount > 0 || this.doubleClick) && (Time.realtimeSinceStartup >= this.clickTime + 0.3f || Vector2.Distance(vector, this.prevClickPosition) >= num2)) { this.doubleClick = false; this.clickCount = 0; } if (Input.GetMouseButtonDown(0)) { this.clickUpTime = Time.realtimeSinceStartup + 0.4f; } this.hitItem = false; this.hitFloor = false; this.hitCharacter = false; this.hitExit = false; this.hitInteractable = false; this.hitBoat = false; this.hitGameCardHover = false; bool flag14 = false; if (this.mk && this.makeCircleMode && Input.GetMouseButtonDown(1) && !this.uiHover) { this.EndCircleMode(); return; } if (this.joy && this.makeCircleMode && this.cancelStart && !this.uiHover) { this.EndCircleMode(); return; } if (this.mk && Records.x.movingWindows && (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) && !this.uiHover) { Records.x.movingWindows = false; Links.x.hudControl.ToggleWindowVisual(false); Links.x.hudControl.ToggleWindowInteractables(true); this.clickedDownWindows = true; return; } if (this.clickedDownWindows) { if (!Input.GetMouseButton(0) && !Input.GetMouseButton(1)) { this.clickedDownWindows = false; return; } return; } else { if (false && (Links.x.gameFeed.noticeTextShowing || Links.x.hudControl.descriptionWindowOpen)) { this.TurnOffHoverTiles(); if (Links.x.hudControl.descriptionWindowOpen && !this.uiHover) { if (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(1)) { Links.x.hudControl.CloseDescWindow(); } if (this.joy && (this.cancelStart || this.actionStart)) { Links.x.hudControl.CloseDescWindow(); } } } else { if ((this.mk && Input.GetMouseButtonDown(0)) || (this.joy && this.actionDown)) { Shader.SetGlobalFloat("_MouseDown", 1f); this.clickStartOnUIHover = false; this.mouseDown = Time.realtimeSinceStartup; this.mouseDownPosition = new Vector3(Input.mousePosition.x / (float)Screen.width, Input.mousePosition.y / (float)Screen.height, 0f); } else if ((Input.GetMouseButtonUp(0) && this.mk) || (this.joy && this.actionUp)) { Shader.SetGlobalFloat("_MouseDown", 0f); this.mouseDown = 0f; } GraphNode graphNode = null; bool flag15 = false; if (Links.x.diorama) { this.dioramaCharacters = Links.x.diorama.characters; } if (Records.x.pocketPause && this.joy && !this.spellTargetingGround && !this.makeCircleMode) { if (Links.x.pocketWheel.selected == "Command Attack" || Links.x.pocketWheel.selected == "Light Attack" || (Links.x.pocketWheel.selected == "Special Attack 1" && Links.x.pocketWheel.canTarget) || Links.x.pocketWheel.selected == "Medium Attack" || Links.x.pocketWheel.selected == "Heavy Attack" || Links.x.pocketWheel.Charming() || (Links.x.pocketWheel.selected == "Spellbag" && (this.spellTargetingParty || this.spellTargetingEnemy))) { if (Links.x.fellowship.move.magnitude > 0.1f) { this.GetControllerTarget(false); } } else { this.GetControllerTarget(false); } } if (((Links.x.mk && flag6) || (this.joy && Links.x.partyColliderAdventure.closestBoat)) && this.CanInteractWithWorld("Character") && (selectionCircle || (this.joy && Links.x.partyColliderAdventure.closestBoat && Links.x.partyColliderAdventure.InRangeToHover(Links.x.partyColliderAdventure.closestBoat)))) { bool flag16 = false; if (selectionCircle && selectionCircle.character) { flag16 = true; } if (flag16) { graphNode = selectionCircle.character.node; flag15 = false; this.gameCardCharacter = selectionCircle.character; this.hitGameCardHover = true; } else if (Records.x.BoroInParty()) { if (this.mk) { this.boat = selectionCircle.boat; } else { this.boat = Links.x.partyColliderAdventure.closestBoat; } bool flag17 = Links.x.hudControl.BoatIsNear(this.boat); if (Links.x.mk) { flag17 = true; } if (flag17) { if (this.boat != this.prevBoat && this.prevBoat) { this.prevBoat.HoverOut(); if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBoat(false, this.prevBoat); } } if (this.boat != this.prevBoat && this.boat) { this.boat.HoverIn(); if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBoat(true, this.boat); } } this.prevBoat = this.boat; this.hitBoat = true; } } } if (this.hitBoat && (this.joy || this.mouseVisible) && ((this.mk && Input.GetMouseButtonUp(0)) || (this.joy && this.interactStart && Links.x.partyColliderAdventure.InRange(Links.x.partyColliderAdventure.closestBoat))) && this.CanClick() && Links.x.hasMain) { this.clickedCharacter = null; Links.x.gameplay.StoneSoundQuieter(); if (this.boat.NearNode(this.boat.tr.position, false, 0, -1) != null) { Character main = Links.x.main; if (Records.x.partySailing) { Character boro = Links.x.gaia.boro; } this.BoatFollowFinished(this.boat); } } if (!this.hitBoat && this.prevBoat) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBoat(false, this.prevBoat); } this.prevBoat.HoverOut(); this.prevBoat = null; this.boat = null; } bool flag18 = false; RaycastHit raycastHit2; if ((this.joy || (!this.joy && !this.hitCharacter && !this.hitItem && !this.hitBoat && !this.hitInteractable && this.mouseWormVisible && !Records.x.pocketPause)) && !this.clickedUpCharacter && !Links.x.fellowship.drawingSquare && !this.spellTargetingGround && !this.spellTargetingParty && !this.spellTargetingEnemy && this.CanInteractWithWorld("Exit") && (Physics.Raycast(this.ray, out raycastHit2, 500f, 8192) || (this.joy && Links.x.partyColliderAdventure.closestMapExit))) { if (this.mk) { this.mousePoint = raycastHit2.point; this.exit = raycastHit2.collider.gameObject.GetComponent(); if (!this.exit) { MapExitIcon component3 = raycastHit2.collider.gameObject.GetComponent(); if (component3) { this.exit = component3.mapExit; if (!this.exit && component3.beach) { flag18 = true; } } } } else if (Links.x.partyColliderAdventure.InRangeToHover(Links.x.partyColliderAdventure.closestMapExit)) { this.exit = Links.x.partyColliderAdventure.closestMapExit; } if (this.exit) { GraphNode graphNode2 = Links.x.main.NearNode(this.exit.mapExit.doorPoint, false, 0, -1, 0); if (graphNode2.GraphIndex == 1U && Links.x.diorama.GetIndoorView().GetInteriorBoundsName((Vector3)graphNode2.position) != Links.x.main.indoorID) { this.exit = null; } } bool flag19 = Links.x.hudControl.ExitIsNear(this.exit); if (Links.x.mk) { flag19 = this.mouseWormVisible; } if (flag18) { flag19 = true; } if (flag19) { if (this.exit) { if (this.exit.mapExit) { if (this.exit.mapExit.waterExit && this.exit != this.prevExit) { this.exit.SetDoorPoint(this.mousePoint); } if (this.exit != this.prevExit && this.prevExit) { this.prevExit.Hover(false); this.prevExit.Hover(false); if (this.prevExit.doorActions) { this.mapDoor = null; this.prevMapDoor = null; } } if (this.exit != this.prevExit) { if (this.exit.doorActions) { this.mapDoor = this.exit.doorActions; this.prevMapDoor = this.exit.doorActions; } this.exit.Hover(true); Links.x.hudControl.HighlightExit(true, this.exit); } else if (this.exit.doorActions && this.exit.doorActions.currentHealth == Links.x.itemCard.savedHealth) { bool locked = this.exit.doorActions.door.locked; bool savedLockState = Links.x.itemCard.savedLockState; } this.prevExit = this.exit; this.hitExit = true; } else { MapExitActions mapExitActions = this.exit; Debug.Log(((mapExitActions != null) ? mapExitActions.ToString() : null) + " missing map exit reference"); } } else if (!flag18) { this.hitExit = false; } else { this.hitExit = true; } } else { this.exit = null; } } if (this.hitExit) { if (Input.GetKey(KeyCode.T) && Records.x.editor) { Debug.Log(this.interactStart.ToString() + " " + this.CanClick().ToString()); } if ((this.joy && this.interactStart && Links.x.partyColliderAdventure.InRange(Links.x.partyColliderAdventure.closestMapExit)) || (this.mk && Input.GetMouseButtonDown(0) && this.CanClick() && Links.x.hasMain && !Records.x.pocketPause)) { bool flag20 = false; if (Records.x.demo) { flag20 = true; Links.x.main.StartQuip("Alas, this will take us beyond the demo"); } else if (Records.x.extendedDemo && !flag18 && this.exit.mapExit.exitTo != MapExit.exitToNames.Interiors && this.exit.mapExit.exitTo != MapExit.exitToNames.Exterior) { flag20 = true; Links.x.main.StartQuip("Alas, this will take us beyond the extended demo"); } if (!flag20) { this.clickedCharacter = null; Links.x.gameplay.StoneSoundQuieter(); bool flag21 = false; bool flag22 = false; if (this.exit) { if (this.exit.doorActions && this.exit.doorActions.door.locked) { flag21 = true; } if (this.exit.nodeLink && !flag21 && Links.x.main.node != null) { GraphNode endNode = this.exit.nodeLink.endNode; } if (this.exit.connectionExit && this.exit.connectionExit.GetComponent().nodeLink && !flag21 && Links.x.main.node != null) { NodeLink nodeLink = this.exit.connectionExit.GetComponent().nodeLink; } } if (!flag21 && !flag22) { if (Input.GetMouseButtonDown(0)) { this.clickStartOnUIHover = true; } if (this.exit) { if (this.exit.mapExit.waterExit) { if (Physics.Raycast(this.ray, out raycastHit2, 500f, 4194321)) { this.mousePoint = raycastHit2.point; this.currentExitNode = Links.x.main.NearNode(this.mousePoint, false, 0, -1, 0); } else { this.currentExitNode = Links.x.main.NearNode(this.mousePoint, false, 0, -1, 0); } } else { Physics.Raycast(this.exit.mapExit.doorPoint + new Vector3(0f, 20f, 0f), Vector3.up * -1f, out raycastHit2, 500f, 4194321); Links.x.main.setArea = -1; this.currentExitNode = Links.x.main.NearNode(this.exit.mapExit.doorPoint, false, 0, -1, 0); } } else { this.currentExitNode = Links.x.main.node; } if (this.spellcasting || this.throwingElixir) { Links.x.main.actions.RemoveAbility(); if (this.actionCharacter) { this.actionCharacter.portrait.skillBag.RemoveSelectedButton(); } } this.spellcasting = false; if (this.spellTargetingGround || this.spellTargetingEnemy || this.spellTargetingParty) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.throwingElixir = false; if (this.currentExitNode != null) { if (flag18) { if (Links.x.gaia.boat.CanEnterLeaveBoat()) { if (Records.x.partySailing) { Links.x.gaia.boat.GetOffBoat(); } else { Links.x.gaia.boat.GetOnWater(); } } else if (Records.x.partySailing) { Links.x.gameFeed.ShowNotice("Guards cannot leave boat yet"); } else { Links.x.gameFeed.ShowNotice("Guards are not ready to sail"); } } else if (!this.closeTheGap) { Links.x.gameplay.MapExitFinished(this.exit, Links.x.main, false); } else { for (int i = 0; i < this.party.Count; i++) { if (this.party[i].IsSentient() && this.party[i].mainSelected) { if (this.exit.mapExit.waterExit) { this.exit.SetDoorPoint((Vector3)this.currentExitNode.position); } this.party[i].selectedBeforeDoor = true; this.party[i].StartGetPathToTarget(this.currentExitNode, null, null, null, null, null, null, null, this.party[i], this.exit, this.CanScatterPartyToMakePath("Exit"), true, false, "Exit", false); } } } } else { Debug.Log("cannot find exit position"); } } else { this.str.Clear(); if (flag21) { this.str.Append("Door is locked"); } else { this.str.Append("Exit is blocked"); } Links.x.gameFeed.AddFeed(this.str.ToString()); MasterAudio.PlaySoundAndForget("Interactives", 1f, new float?(1f), 0f, "Chest Locked", null); if (flag21 && this.exit.doorActions.lockCollider) { Links.x.cellar.GetAnimatedText("", "Locked", false).gameObject.transform.position = this.exit.doorActions.lockCollider.bounds.center + new Vector3(0f, Random.Range(1.5f, 1.8f), 0f); } else { Links.x.cellar.GetAnimatedText("", "Blocked", false).gameObject.transform.position = this.exit.mapExit.doorPoint + new Vector3(0f, 3f, 0f); } } } } } if (!this.hitExit && this.prevExit) { this.prevExit.doorActions; this.prevExit.Hover(false); Links.x.hudControl.HighlightExit(false, this.prevExit); if (this.intersectingExit) { this.intersectingExit.Near(true); } this.prevExit.Hover(false); Links.x.hudControl.HighlightExit(false, this.prevExit); this.prevExit = null; this.exit = null; this.mapDoor = null; this.prevMapDoor = null; } if (Links.x.diorama && !this.spellTargetingGround && this.joy && this.CanInteractWithWorld("Character") && !this.hitExit) { if ((this.party1Down || this.party2Down) && !Links.x.pocketWheel.spellbook.activeSelf && !this.gameFeedScrolling && !this.badgeScrolling && !Records.x.removeControls) { Character character3 = null; Links.x.hudControl.ArrangePortraits(); if (this.party1Down) { character3 = Links.x.hudControl.upCharacter; } if (this.party2Down) { character3 = Links.x.hudControl.downCharacter; } if (character3) { bool flag23 = false; if (Links.x.main && Links.x.main.timelineIcon && Links.x.main.timelineIcon.overridePause) { flag23 = true; } if (!flag23) { flag15 = false; this.gameCardCharacter = character3; this.hitGameCardHover = true; graphNode = character3.node; Links.x.fellowship.SingleSelected(character3); character3.AddToSelected(false, true); character3.SetAsLeader(); } } } if (!Records.x.pocketPause && Links.x.partyColliderAdventure.closestCharacter && Links.x.partyColliderAdventure.InRangeToHover(Links.x.partyColliderAdventure.closestCharacter)) { flag15 = false; this.gameCardCharacter = Links.x.partyColliderAdventure.closestCharacter; this.hitGameCardHover = true; graphNode = Links.x.partyColliderAdventure.closestCharacter.node; } if (Records.x.pocketPause && this.domeEnemy && Links.x.pocketWheel.targetSelection) { flag15 = false; this.gameCardCharacter = this.domeEnemy; this.hitGameCardHover = true; graphNode = this.domeEnemy.node; } if (Records.x.pocketPause && this.domeParty && Links.x.pocketWheel.targetSelection) { flag15 = false; this.gameCardCharacter = this.domeParty; this.hitGameCardHover = true; graphNode = this.domeParty.node; } } if (graphNode != null && (Links.x.combat.inPocketAttack || Records.x.pocketPause)) { if (Links.x.combat.inPocketAttack) { if (Links.x.pocketWheel.selectedRallyCharacter) { } } else if (Links.x.main.IsAttacking(Links.x.main.body.currentHash)) { graphNode = null; } } if (!this.hitCharacter && graphNode != null && !this.hitBoat && !this.hitExit && this.CanInteractWithWorld("Character")) { this.mousePoint = (Vector3)graphNode.position; this.character = this.gameCardCharacter; this.gameCardCharacter = this.character; this.hitGameCardHover = true; if (Records.x.InCombat(false) && (this.playerInAction || Links.x.main.IsAttacking(Links.x.main.body.currentHash))) { this.hitGameCardHover = false; this.gameCardCharacter = null; } bool flag24 = false; if (Records.x.pocketPause) { if (Links.x.combat.CanAttackTarget(this.character) && (this.attackingCharacter.CanAttack() || Links.x.combat.inPocketAttack)) { flag24 = true; } if (this.character.party) { if (this.spellTargetingParty && this.actionCharacter) { if ((this.character.tr.position - this.actionCharacter.tr.position).sqrMagnitude < this.actionCharacter.stats.SpellRadius(this.spellPaganRow) * this.actionCharacter.stats.SpellRadius(this.spellPaganRow)) { flag24 = true; } if (this.actionCharacter == this.character) { flag24 = true; } } else if (this.character != Links.x.main && Links.x.combat.CharacterHasSynergy(this.character)) { flag24 = true; } this.quickCommandAttack = false; } } else { if (this.character.hostility < 2 && !this.character.attackingUntilBribe && ((!this.character.stats.animal && this.character.npc) || this.character.isBoro || this.character.stats.dialogueFile != "")) { flag24 = Links.x.hudControl.CharacterIsNear(this.character); if (Links.x.mk) { flag24 = this.mouseVisible; } } if (Links.x.combat.CanAttackTarget(this.character)) { flag24 = true; } if (this.character.party) { flag24 = Links.x.combat.pickingRally; } } if (flag24) { this.mousePoint = this.character.tr.position; if (this.character != this.prevCharacter && this.prevCharacter) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightCharacter(false, this.prevCharacter); } else { Links.x.combat.HighlightCharacter(false, this.prevCharacter); } if (Records.x.pocketPause && this.joy) { this.joystickTarget.SetActive(false); } this.prevCharacter.HoverOut(false); } if (this.character != this.prevCharacter && this.character) { this.character.HoverIn(); if (Records.x.pocketPause && this.joy && Links.x.pocketWheel.targetSelection) { this.SetPositionAtWorldPoint(this.character.body.GetNeck().position + new Vector3(0f, 2.1f, 0f), this.joystickTargetRT); this.joystickTarget.SetActive(true); } else if (this.joystickTarget.activeSelf) { this.joystickTarget.SetActive(false); } if (this.character.portrait && Links.x.mk) { this.character.portrait.HoverFromCharacter(true); } if (Records.x.InCombat(false) && !this.character.party) { this.targetingCharacter = this.character; } if (!Records.x.pocketPause) { Links.x.hudControl.HighlightCharacter(true, this.character); } else { Links.x.combat.HighlightCharacter(true, this.character); } } this.prevCharacter = this.character; this.hitCharacter = true; } else { this.character = null; this.hitCharacter = false; } } if (!this.hitCharacter && this.targetingGroundCharacterHover) { this.targetingGroundCharacterHover = false; } if (this.charming && !this.actionCharacter) { this.charming = false; } if (this.waitingForClickUpOnCharacter) { if (Links.x.mk && Input.GetMouseButtonUp(0)) { this.waitingForClickUpOnCharacter = false; } if (Links.x.mk && Input.GetMouseButton(0) && !this.hitCharacter) { this.waitingForClickUpOnCharacter = false; } } if (this.hitCharacter && !Links.x.fellowship.drawingSquare && this.CanInteractWithWorld("Character") && !this.hitExit && this.character) { string selected = Links.x.pocketWheel.selected; if (((this.mk && Input.GetMouseButtonDown(0)) || (this.joy && ((this.interactStart && this.character == Links.x.partyColliderAdventure.closestCharacter && Links.x.partyColliderAdventure.InRange(Links.x.partyColliderAdventure.closestCharacter)) || (!this.inPartyDock && this.actionStart && !this.waitingForActionUp && (!Records.x.pocketPause || (Records.x.pocketPause && Links.x.pocketWheel.targetSelection)) && (selected == "Light Attack" || (Links.x.pocketWheel.selected == "Special Attack 1" && Links.x.pocketWheel.canTarget) || selected == "Medium Attack" || selected == "Command Attack" || selected == "Heavy Attack" || Links.x.pocketWheel.Charming() || (selected == "Spellbag" && (this.spellTargetingParty || this.spellTargetingEnemy))) && (this.character == this.domeParty || this.character == this.domeEnemy))))) && this.CanClick() && (!this.character.stunned || (this.character.stunned && Records.x.kill))) { this.WorldClick(); if (Input.GetMouseButtonDown(0)) { this.clickStartOnUIHover = true; } if (this.spellTargetingGround && ((this.joy && this.actionStart) || Input.GetMouseButtonDown(0))) { this.StartGroundTargetTiles(this.actionCharacter, this.character.tr.position, false, this.tileEffectRadius, this.actionCharacter.stats.SpellRadius(this.spellPaganRow)); } else if ((this.character.isBoro || this.character.npc) && Links.x.hasMain) { if (!this.quickCommandAttack && (this.character.isBoro || (this.character.hostility < 2 && !this.attacking && !this.character.attackingUntilBribe && this.character.stats.dialogueFile != "")) && !Records.x.pocketPause && ((this.joy && this.interactStart) || Input.GetMouseButtonDown(0))) { if (this.closeTheGap) { this.talkCharacter = null; Character character4 = Links.x.main; if (Records.x.partySailing) { character4 = Links.x.gaia.boro; } if (!this.character.sleeping) { if (!this.character.hasActions) { this.character.ClearNodePath(); } if (this.character.creatures) { this.character.creatures.SetWaitTime(); } character4.StartGetPathToTarget(this.character.node, this.character, null, null, null, null, null, null, character4, null, false, true, false, "Dialogue", false); } } else { flag14 = true; this.FollowCharacterPathFinished(this.character, Links.x.main); this.talkCharacter = null; } } else if (this.character.cannotAttack) { Links.x.gameFeed.AddFeed(this.character.stats.displayName + " cannot be attacked"); } else if (this.quickCommandAttack || (Records.x.pocketPause && Links.x.combat.CanAttackTarget(this.character))) { if (this.character.hostility < 2 && !this.character.attackingUntilBribe) { for (int j = 0; j < this.party.Count; j++) { if (this.party[j] && this.party[j].IsSentient()) { this.party[j].UpdateLKP(this.character, this.character.node, "Attack", true); } } } if (!this.quickCommandAttack) { this.domeEnemy = null; this.domeParty = null; this.NewPaths(); this.clickedCharacter = this.character; this.ClearInteractionNodes(); this.targetingCharacter = this.character; } Character character5 = Links.x.main; if (Links.x.pocketWheel.rallyWheelOpen) { character5 = Links.x.pocketWheel.selectedRallyCharacter; } for (int k = 0; k < this.party.Count; k++) { Character character6 = this.party[k]; if (character6 && !character6.isBoro) { if (this.quickCommandAttack) { if (!character6.hasActions) { Links.x.combat.GivePartyActions(character6, false); } if (character6.commandMove != null) { character6.commandMove = null; character6.ClearNodePath(); if (character6.waypoint) { character6.waypoint.transform.position = this.farPosition; } } if (character6.actions) { character6.actions.SetSelectedTarget(true, this.character, null, null); if (character6.actions && !character6.mainSelected) { Links.x.combat.GetNextAction(character6); } } if (character6.mainSelected) { if (this.arcCorout != null) { this.ReturnLineRenderers(); base.StopCoroutine(this.arcCorout); } this.arcCorout = this.ArcToTarget(this.character.torsoPosition); base.StartCoroutine(this.arcCorout); } } else if (character6 == character5 && (character6.CanAttack() || Links.x.combat.inPocketAttack || Links.x.pocketWheel.rallyWheelOpen) && character6.IsSentient()) { if (!character6.hasActions) { Links.x.combat.GivePartyActions(character6, false); } if (this.spellTargetingEnemy && character6.attackTime >= 1f && character6.hasActions && ((this.joy && this.actionStart) || Input.GetMouseButtonDown(0))) { if (true) { this.actionCharacter.portrait.skillBag.selectedSkillButton.SetActionAbility(); this.actionCharacter.actions.CastSpell(this.character, false, this.character.node, Vector3.zero, true, false); this.ClearEffectTiles(true, null, false); this.EndControllerTargeting(); this.RemoveSpellTargets(); } } else if (character6.actions) { if (Links.x.pocketWheel.Charming() && Records.x.pocketPause && ((this.joy && this.actionStart) || Input.GetMouseButtonDown(0))) { if (this.character.stats.characterRow._Race == "Forest" || this.character.stats.characterRow._Race == "Fish" || this.character.stats.characterRow._Race == "Shroom") { character6.actions.SelectActionRealTime(this.character, null); } } else if (Links.x.pocketWheel.selected == "Medium Attack" && Records.x.pocketPause && ((this.joy && this.actionStart) || Input.GetMouseButtonDown(0))) { character6.actions.SelectPin(this.character); } else if (Records.x.pocketPause && ((this.mk && Input.GetMouseButtonDown(0)) || (this.joy && this.actionStart))) { if (Links.x.pocketWheel.selected != "Heavy Attack") { if (Links.x.combat.inPocketAttack) { this.rallyTargetSelected = this.character; } else { character6.actions.SelectActionRealTime(this.character, null); } } else { character6.actions.SelectCharge(this.character); } } } } this.waitingForClickUpOnCharacter = true; } } if (!Links.x.main.HasAmmoOrMelee(Links.x.main.invRow1, false)) { Links.x.gameFeed.AddFeed(this.character.stats.displayName + " is out of " + Links.x.main.GetAmmoType()); } } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround || this.spellTargetingParty || this.spellTargetingEnemy) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.EndControllerTargeting(); } else if (!this.character.npc && (this.mk || (this.joy && !this.inPartyDock && !this.waitingForActionUp && this.actionStart)) && !this.character.offMap && !Records.x.paused) { if (this.spellTargetingParty && ((this.joy && this.actionStart) || Input.GetMouseButtonDown(0))) { this.actionCharacter.portrait.skillBag.selectedSkillButton.SetActionAbility(); this.actionCharacter.actions.CastSpell(this.character, false, this.character.node, Vector3.zero, true, false); this.ClearEffectTiles(true, null, false); this.EndControllerTargeting(); this.RemoveSpellTargets(); } else if (Records.x.pocketPause) { if (Links.x.combat.CharacterHasSynergy(this.character) && !this.character.mainSelected && (this.joy || Input.GetMouseButtonDown(0))) { this.SelectRallyCharacter(this.character); } } else if (!Records.x.pocketPause && this.character.party && this.mk && ((this.joy && this.actionStart) || Input.GetMouseButtonDown(0))) { Links.x.fellowship.SingleSelected(this.character); this.character.AddToSelected(false, true); this.character.SetAsLeader(); if (this.doubleClick) { Links.x.rtsCamera.Follow(this.character.tr, this.character, true); } flag14 = true; } if (this.mk) { this.clickedUpCharacter = true; } } } else if (this.spellTargetingGround) { this.targetingGroundCharacterHover = true; this.StartGroundTargetTiles(this.actionCharacter, this.character.tr.position, true, this.tileEffectRadius, this.actionCharacter.stats.SpellRadius(this.spellPaganRow)); } } if (!this.hitCharacter) { this.targetingCharacter = null; if (this.prevCharacter) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightCharacter(false, this.prevCharacter); } else { Links.x.combat.HighlightCharacter(false, this.prevCharacter); } this.prevCharacter.HoverOut(false); this.prevCharacter = null; this.character = null; if (Records.x.pocketPause && this.joy) { this.joystickTarget.SetActive(false); } this.attacking = false; this.attacking = false; this.ClearInteractionNodes(); } } if (this.hitGameCardHover) { if (this.prevGameCardCharacter != this.gameCardCharacter) { if (this.prevGameCardCharacter) { if (this.prevGameCardCharacter.npc) { Links.x.gameCard.EndHover(this.prevGameCardCharacter, false); } this.prevGameCardCharacter.body.Hover(false, true); } if (this.gameCardCharacter) { if (this.gameCardCharacter.npc || this.gameCardCharacter.isBoro) { Links.x.gameCard.StartHover(this.gameCardCharacter, ""); } if (!Records.x.InCombat(false) || (Records.x.InCombat(false) && (this.quickCommandAttack || Records.x.pocketPause) && (this.quickCommandAttack || (this.gameCardCharacter.party && this.spellTargetingParty) || Links.x.combat.CanAttackTarget(this.gameCardCharacter)))) { this.gameCardCharacter.body.Hover(true, true); } } } this.prevGameCardCharacter = this.gameCardCharacter; bool flag25 = false; for (int l = 0; l < this.party.Count; l++) { if (this.party[l].body.sneaking) { flag25 = true; } } bool flag26 = flag25; if (this.gameCardCharacter && (this.gameCardCharacter.npc && !Records.x.InCombat(false) && this.gameCardCharacter.hostility > 0 && flag26)) { if (this.coneCharacter != this.gameCardCharacter) { Links.x.lineOfSightCone.rotation = this.gameCardCharacter.body.tr.rotation; if (this.gameCardCharacter.moving) { Links.x.lineOfSightCone.rotation = this.gameCardCharacter.smoothRot; } Links.x.lineOfSightCone.position = this.gameCardCharacter.tr.position; Links.x.lineOfSightCamera.farClipPlane = this.gameCardCharacter.stats.SightRadius(false, false, false); } this.coneCharacter = this.gameCardCharacter; } } else if (this.prevGameCardCharacter) { Links.x.gameCard.EndHover(this.prevGameCardCharacter, false); this.prevGameCardCharacter.body.Hover(false, true); this.prevGameCardCharacter = null; } if ((this.joy || !this.hitCharacter) && !this.clickedUpCharacter && !flag14 && !Links.x.fellowship.drawingSquare && !this.spellTargetingGround && !this.spellTargetingParty && !this.spellTargetingEnemy && !this.hitBoat && !this.charming && this.CanInteractWithWorld("Item") && !Links.x.main.summoned) { Item item = null; RaycastHit raycastHit5; if (this.mk && Physics.Raycast(this.ray, out raycastHit5, 500f, 2048)) { this.mousePoint = raycastHit5.point; item = raycastHit5.collider.gameObject.GetComponent(); if (!item) { item = raycastHit5.collider.gameObject.transform.parent.gameObject.GetComponent(); } if (!this.mouseWormVisible && !this.WormVisible(raycastHit5.point)) { item = null; } if (item) { if (!Links.x.partyColliderAdventure.itemCollector.CheckInteractiveLineOfSight(item)) { item = null; } if (item && Records.x.pocketPause && !Links.x.partyColliderAdventure.InRange(item)) { item = null; } } } if (item || (this.joy && Links.x.partyColliderAdventure.closestItem)) { if (this.joy) { if (Links.x.partyColliderAdventure.InRangeToHover(Links.x.partyColliderAdventure.closestItem)) { this.item = Links.x.partyColliderAdventure.closestItem; } } else { this.item = item; } if (!Links.x.inventory.groundBag.ItemInList(this.item) && this.joy) { this.item = null; } if (this.item != this.prevItem && this.prevItem) { Links.x.inventory.groundBag.RemoveLabels(); this.prevItem.HoverOut(); Links.x.inventory.groundBag.SetCollectorUpdate(); } if (this.item != this.prevItem && this.item) { Links.x.inventory.groundBag.RemoveLabels(); this.item.HoverIn(); Links.x.inventory.groundBag.SetCollectorUpdate(); } if (this.item) { this.prevItem = this.item; this.hitItem = true; } } if (Input.GetMouseButtonDown(0)) { this.mouseDownItem = this.item; } } if (this.hitItem && ((this.mk && Input.GetMouseButtonUp(0) && this.item == this.mouseDownItem) || (this.joy && this.interactStart && Links.x.partyColliderAdventure.InRange(Links.x.partyColliderAdventure.closestItem))) && this.CanClick() && Links.x.hasMain) { Links.x.gameplay.StoneSoundQuieter(); GraphNode dropNode = this.item.dropNode; Character character7 = Links.x.main; if (Records.x.partySailing) { character7 = Links.x.gaia.boro; } if (this.closeTheGap) { character7.StartGetPathToTarget(dropNode, null, this.item, null, null, null, null, null, character7, null, Links.x.gameplay.CanScatterPartyToMakePath("Item"), true, false, "Item", false); } else { Links.x.gameplay.ItemPathFinished(this.item, Links.x.main); } this.clickedCharacter = null; if (this.spellcasting || this.throwingElixir) { Links.x.main.actions.RemoveAbility(); } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround || this.spellTargetingEnemy || this.spellTargetingParty) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); if (this.actionCharacter) { this.actionCharacter.portrait.skillBag.RemoveSelectedButton(); } if (Input.GetMouseButtonDown(0)) { this.clickStartOnUIHover = true; } } if (!this.hitItem) { this.mouseDownItem = null; if (this.prevItem) { this.prevItem.HoverOut(); this.prevItem = null; this.item = null; Links.x.inventory.groundBag.SetCollectorUpdate(); } } bool flag27 = false; if (Records.x.pocketPause) { if (this.attackingCharacter.CanAttack() && (!Links.x.pocketWheel.rallyWheelOpen || (Links.x.pocketWheel.rallyWheelOpen && Links.x.pocketWheel.canTarget))) { flag27 = true; } if (!flag27 && Links.x.pocketWheel.rallyWheelOpen && Links.x.pocketWheel.canTarget) { flag27 = true; } } if (!this.hitCharacter && !this.clickedUpCharacter && (this.joy || !this.hitItem) && !Links.x.fellowship.drawingSquare && !this.spellTargetingGround && !this.spellTargetingParty && !this.spellTargetingEnemy && !this.hitBoat && !this.charming && this.CanInteractWithWorld("Interactive Object")) { bool flag28 = false; if (this.mk && Physics.Raycast(this.ray, 500f, 2162688) && Physics.Raycast(this.ray, out raycastHit2, 500f, 2163200) && (raycastHit2.collider.gameObject.layer == 16 || raycastHit2.collider.gameObject.layer == 21 || this.mouseWormVisible || this.WormVisible(raycastHit2.point))) { flag28 = true; } if ((!Records.x.pocketPause || flag27) && (flag28 || (this.joy && !Records.x.pocketPause && (Links.x.partyColliderAdventure.closestBreakable || Links.x.partyColliderAdventure.closestDoor || Links.x.partyColliderAdventure.closestChest || Links.x.partyColliderAdventure.closestPuzzle)) || (this.joy && Records.x.pocketPause && Links.x.pocketWheel.targetSelection && (this.domeBreakable || this.domeDoor || this.domeChest || this.domePuzzle)))) { if (this.mk) { Physics.Raycast(this.ray, out raycastHit2, 500f, 2162688); this.mousePoint = raycastHit2.point; this.breakable = raycastHit2.collider.gameObject.GetComponent(); if (!this.breakable) { this.breakable = raycastHit2.collider.gameObject.transform.parent.gameObject.GetComponent(); } if (!this.breakable) { this.chest = raycastHit2.collider.gameObject.transform.parent.gameObject.GetComponent(); } if (!this.breakable && !this.chest) { this.door = raycastHit2.collider.gameObject.GetComponent(); } if (!this.breakable && !this.chest && !this.door) { this.puzzle = raycastHit2.collider.gameObject.GetComponent(); } if (this.breakable != this.prevBreakable && this.prevBreakable) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBreakable(false, this.prevBreakable); } else { Links.x.combat.HighlightBreakable(false, this.prevBreakable); } this.prevBreakable.HoverOut(); Links.x.itemCard.EndHover(null, null, null, this.prevBreakable, null, true); } } else { if (!Records.x.pocketPause) { this.breakable = Links.x.partyColliderAdventure.closestBreakable; this.door = Links.x.partyColliderAdventure.closestDoor; this.chest = Links.x.partyColliderAdventure.closestChest; this.puzzle = Links.x.partyColliderAdventure.closestPuzzle; } else { this.breakable = this.domeBreakable; this.door = this.domeDoor; this.chest = this.domeChest; this.puzzle = this.domePuzzle; } if (this.breakable != this.prevBreakable && this.prevBreakable) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBreakable(false, this.prevBreakable); } else { Links.x.combat.HighlightBreakable(false, this.prevBreakable); } this.prevBreakable.HoverOut(); Links.x.itemCard.EndHover(null, null, null, this.prevBreakable, null, true); } } this.mapDoor = null; bool flag29 = true; if (this.breakable || this.chest || this.door || this.puzzle) { if (!Records.x.pocketPause) { if (this.breakable) { flag29 = Links.x.hudControl.BreakableIsNear(this.breakable); } if (this.chest) { flag29 = Links.x.hudControl.ChestIsNear(this.chest); } if (this.door) { flag29 = Links.x.hudControl.DoorIsNear(this.door); } if (this.puzzle) { flag29 = Links.x.hudControl.PuzzleIsNear(this.puzzle); } if (Links.x.mk) { flag29 = this.mouseWormVisible; } } if (Records.x.pocketPause) { if (this.breakable) { flag29 = Links.x.combat.BreakableIsNear(this.breakable, this.attackingCharacter); } if (this.chest) { flag29 = Links.x.combat.ChestIsNear(this.chest, this.attackingCharacter); } if (this.door) { flag29 = Links.x.combat.DoorIsNear(this.door, this.attackingCharacter); } if (this.puzzle) { flag29 = Links.x.combat.PuzzleIsNear(this.puzzle, this.attackingCharacter); } if (Links.x.pocketWheel.rallyWheelOpen) { if (Links.x.pocketWheel.selectedRally.Contains("Both") || Links.x.pocketWheel.selectedRally.Contains("Crippl") || Links.x.pocketWheel.selectedRally.Contains("Wound")) { flag29 = false; } else { if (this.breakable && this.breakable.sheen == 1f) { flag29 = true; } if (this.chest && this.chest.sheen == 1f) { flag29 = true; } if (this.door && this.door.sheen == 1f) { flag29 = true; } } } else { bool flag30 = false; if (this.breakable && (float)this.breakable.currentHealth < Records.x.ChargeAmount((float)this.attackingCharacter.stats.level)) { flag30 = true; } if (Links.x.pocketWheel.Charming() || (Links.x.pocketWheel.selected == "Heavy Attack" && !flag30) || Links.x.pocketWheel.selected == "Medium Attack") { flag29 = false; } } } if (this.mk && flag29) { Vector3 vector2 = Vector3.zero; if (this.breakable) { vector2 = this.breakable.gameObject.transform.position + new Vector3(0f, 2f, 0f); } if (this.chest) { vector2 = this.chest.gameObject.transform.position + new Vector3(0f, 2f, 0f); } if (this.door) { vector2 = this.door.gameObject.transform.position + new Vector3(0f, 2f, 0f); } if (this.puzzle) { vector2 = this.puzzle.gameObject.transform.position + new Vector3(0f, this.puzzle.interactionPointY, 0f); } GraphNode graphNode3 = Links.x.main.NearNode(vector2, false, 0, -1, 0); if (graphNode3 != null && graphNode3.GraphIndex == 1U && Links.x.diorama.GetIndoorView().GetInteriorBoundsName((Vector3)graphNode3.position) != Links.x.main.indoorID) { flag29 = false; this.breakable = null; this.chest = null; this.door = null; this.puzzle = null; this.hitInteractable = false; } } } else { flag29 = false; } if (flag29) { if (Records.x.pocketPause && this.joy && !Links.x.main.inAction && !Links.x.main.inRecovery && Links.x.pocketWheel.targetSelection) { this.joystickTarget.SetActive(true); } else if (this.joystickTarget.activeSelf) { this.joystickTarget.SetActive(false); } if (this.breakable) { if (this.breakable != this.prevBreakable && this.breakable) { if (this.breakable.breakable.armor > 0 && this.breakable.resourceLocation < 0) { Links.x.itemCard.StartHover(null, null, null, this.breakable, null); } this.breakable.HoverIn(true); if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBreakable(true, this.breakable); } else { Links.x.combat.HighlightBreakable(true, this.breakable); } } else if (this.breakable == this.prevBreakable && Links.x.itemCard.savedHealth != this.breakable.currentHealth && this.breakable.breakable.armor > 0 && this.breakable.resourceLocation < 0) { Links.x.itemCard.StartHover(null, null, null, this.breakable, null); } if (Records.x.pocketPause && this.joy && Links.x.pocketWheel.targetSelection) { this.SetPositionAtWorldPoint(this.breakable.transform.position + new Vector3(0f, 1.5f, 0f), this.joystickTargetRT); } this.door = null; this.chest = null; this.puzzle = null; } if (this.door) { if (this.door != this.prevDoor) { Links.x.itemCard.StartHover(null, null, this.door, null, null); this.door.HoverIn(true); if (!Records.x.pocketPause) { Links.x.hudControl.HighlightDoor(true, this.door); } else { Links.x.combat.HighlightDoor(true, this.door); } } else if (Links.x.itemCard.savedHealth != this.door.currentHealth || Links.x.itemCard.savedLockState != this.door.door.locked) { Links.x.itemCard.StartHover(null, null, this.door, null, null); } if (Records.x.pocketPause && this.joy && Links.x.pocketWheel.targetSelection) { this.SetPositionAtWorldPoint(this.door.lockColliderPosition + new Vector3(0f, 0.5f, 0f), this.joystickTargetRT); } this.chest = null; this.breakable = null; this.puzzle = null; } if (this.puzzle != this.prevPuzzle && this.prevPuzzle) { this.prevPuzzle.HoverOut(); } if (this.puzzle) { if (this.puzzle != this.prevPuzzle) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightPuzzle(false, this.prevPuzzle); } else { Links.x.combat.HighlightPuzzle(false, this.prevPuzzle); } Links.x.itemCard.StartHover(null, null, null, null, this.puzzle); this.puzzle.HoverIn(); if (!Records.x.pocketPause) { Links.x.hudControl.HighlightPuzzle(true, this.puzzle); } } if (Records.x.pocketPause && this.joy && Links.x.pocketWheel.targetSelection) { this.SetPositionAtWorldPoint(this.puzzle.transform.position + new Vector3(0f, 1.5f, 0f), this.joystickTargetRT); } this.door = null; this.chest = null; this.breakable = null; } if (this.chest) { if (this.chest != this.prevChest) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightChest(false, this.prevChest); } else { Links.x.combat.HighlightChest(false, this.prevChest); } Links.x.itemCard.StartHover(null, this.chest, null, null, null); this.chest.HoverIn(true); if (!Records.x.pocketPause) { Links.x.hudControl.HighlightChest(true, this.chest); } else { Links.x.combat.HighlightChest(true, this.chest); } } else if (this.chest == this.prevChest && (Links.x.itemCard.savedHealth != this.chest.currentHealth || Links.x.itemCard.savedLockState != this.chest.chest.locked)) { Links.x.itemCard.StartHover(null, this.chest, null, null, null); } if (Records.x.pocketPause && this.joy && Links.x.pocketWheel.targetSelection) { this.SetPositionAtWorldPoint(this.chest.transform.position + new Vector3(0f, 1.5f, 0f), this.joystickTargetRT); } this.door = null; this.breakable = null; this.puzzle = null; } if (this.door != this.prevDoor && this.prevDoor) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightDoor(false, this.prevDoor); } else { Links.x.combat.HighlightDoor(false, this.prevDoor); } this.prevDoor.HoverOut(); } if (this.chest != this.prevChest && this.prevChest) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightChest(false, this.prevChest); } else { Links.x.combat.HighlightChest(false, this.prevChest); } this.prevChest.HoverOut(); } this.prevDoor = this.door; this.prevChest = this.chest; this.prevPuzzle = this.puzzle; this.prevBreakable = this.breakable; this.hitInteractable = true; } } } if (this.hitInteractable) { bool flag31 = false; if (this.breakable && this.breakable.breakable.armor > 0) { flag31 = true; } if (((this.mk && Input.GetMouseButtonDown(0)) || (this.joy && ((this.actionStart && Records.x.pocketPause && Links.x.pocketWheel.targetSelection && !this.waitingForActionUp) || (this.interactStart && !Records.x.pocketPause)))) && this.CanClick() && Links.x.hasMain && Links.x.main.IsSentient()) { bool flag32 = this.joy; if (this.breakable || this.chest || this.door || this.puzzle) { this.clickedCharacter = null; this.WorldClick(); if (this.breakable) { this.currentInteractionNode = Links.x.main.NearNode(this.breakable.transform.position, false, 0, -1, 0); } else if (this.chest) { this.currentInteractionNode = Links.x.main.NearNode(this.chest.point.transform.position, false, 0, -1, 0); } else if (this.door) { if (this.door.node != null) { this.currentInteractionNode = this.door.node; } else { this.currentInteractionNode = this.door.GetNode(); } } else if (this.puzzle) { this.currentInteractionNode = Links.x.main.NearNode(this.puzzle.transform.position, false, 0, -1, 0); this.puzzle.node = this.currentInteractionNode; } if ((this.mk || (this.joy && !Records.x.pocketPause)) && (this.currentInteractionNode != null || !this.closeTheGap)) { Character character8 = Links.x.main; if (Records.x.partySailing) { character8 = Links.x.gaia.boro; } if (this.closeTheGap) { if (!Records.x.pocketPause) { if (this.breakable) { if (this.breakable.breakable.armor == 0) { character8.StartGetPathToTarget(this.currentInteractionNode, null, null, this.breakable, null, null, null, null, character8, null, this.CanScatterPartyToMakePath("Breakable"), true, false, "Breakable", false); } } else if (this.chest) { character8.StartGetPathToTarget(this.currentInteractionNode, null, null, null, this.chest, null, null, null, character8, null, this.CanScatterPartyToMakePath("Chest"), true, false, "Chest", false); } else if (this.door) { character8.StartGetPathToTarget(this.currentInteractionNode, null, null, null, null, this.door, null, null, character8, null, this.CanScatterPartyToMakePath("Door"), true, false, "Door", false); } else if (this.puzzle) { if (this.puzzle.id == "Break Circle") { this.PuzzleFinished(this.puzzle, Links.x.main); } else { character8.StartGetPathToTarget(this.currentInteractionNode, null, null, null, null, null, this.puzzle, null, character8, null, this.CanScatterPartyToMakePath("Puzzle"), true, false, "Puzzle", false); } } } } else if (this.breakable) { if (this.breakable.breakable.armor == 0) { this.BreakableFinished(this.breakable, Links.x.main); if (Links.x.joy) { this.waitingForActionUp = true; } } } else if (this.chest) { this.ChestFinished(this.chest, Links.x.main); } else if (this.door) { this.DoorFinished(this.door, Links.x.main); } else if (this.puzzle) { this.PuzzleFinished(this.puzzle, Links.x.main); } if (Input.GetMouseButtonDown(0)) { this.clickStartOnUIHover = true; } } } if (flag27 && ((this.mk && Input.GetMouseButtonDown(0)) || (this.joy && !this.inPartyDock && this.actionStart && !this.waitingForActionUp && flag27 && Links.x.pocketWheel.targetSelection)) && this.CanClick() && Links.x.hasMain && !Records.x.typing) { Debug.Log(flag27.ToString() + " " + Links.x.main.CanAttack().ToString()); bool flag33 = false; if (this.breakable && ((flag31 && Links.x.combat.BreakableIsNear(this.breakable, this.attackingCharacter)) || (flag27 && Links.x.combat.BreakableIsNear(this.breakable, this.attackingCharacter)) || (flag27 && Links.x.pocketWheel.rallyWheelOpen && Links.x.pocketWheel.canTarget && Links.x.pocketWheel.rally1 && this.breakable.sheen == 1f))) { flag33 = true; } if (flag33 || this.chest || this.door) { this.AttackInteractive(); if (Links.x.joy) { this.waitingForActionUp = true; } if (Input.GetMouseButtonDown(0)) { this.clickStartOnUIHover = true; } } } } } if (!this.hitInteractable) { if (this.prevBreakable) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBreakable(false, this.prevBreakable); } else { Links.x.combat.HighlightBreakable(false, this.prevBreakable); } if (this.prevBreakable.resourceLocation < 0) { Links.x.itemCard.EndHover(null, null, null, this.prevBreakable, null, true); } this.prevBreakable.HoverOut(); this.prevBreakable = null; this.breakable = null; if (!Links.x.pocketWheel.targetSelection || (this.joystickTarget.activeSelf && !this.domeParty && !this.domeEnemy)) { this.joystickTarget.SetActive(false); } } if (this.prevChest) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightChest(false, this.prevChest); } else { Links.x.combat.HighlightChest(false, this.prevChest); } Links.x.itemCard.EndHover(null, this.prevChest, null, null, null, true); this.prevChest.HoverOut(); this.prevChest = null; this.chest = null; if (!Links.x.pocketWheel.targetSelection || (this.joystickTarget.activeSelf && !this.domeParty && !this.domeEnemy)) { this.joystickTarget.SetActive(false); } } if (this.prevDoor) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightDoor(false, this.prevDoor); } else { Links.x.combat.HighlightDoor(false, this.prevDoor); } Links.x.itemCard.EndHover(null, null, this.prevDoor, null, null, true); this.prevDoor.HoverOut(); this.prevDoor = null; this.door = null; if (!Links.x.pocketWheel.targetSelection || (this.joystickTarget.activeSelf && !this.domeParty && !this.domeEnemy)) { this.joystickTarget.SetActive(false); } } if (this.prevPuzzle) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightPuzzle(false, this.prevPuzzle); } else { Links.x.combat.HighlightPuzzle(false, this.prevPuzzle); } Links.x.itemCard.EndHover(null, null, null, null, this.prevPuzzle, true); this.prevPuzzle.HoverOut(); this.prevPuzzle = null; this.puzzle = null; if (!Links.x.pocketWheel.targetSelection || (this.joystickTarget.activeSelf && !this.domeParty && !this.domeEnemy)) { this.joystickTarget.SetActive(false); } } } bool flag34 = false; bool flag35 = false; bool flag36 = false; if (this.joy && Links.x.partyColliderAdventure.nearBeach) { if (Records.x.partySailing) { flag5 = true; this.hitBeach = true; } else { flag3 = true; this.hitWater = true; } } if (!this.hitItem && !this.hitCharacter && !this.hitExit && !this.hitBoat && !this.hitInteractable && !this.clickedUpCharacter && this.CanClick() && (this.CanInteractWithWorld("Ground") || this.makeCircleMode) && !this.itemsDown && !Links.x.fellowship.drawingSquare) { if ((flag3 || flag4 || flag2 || flag5 || this.joy) && !flag15 && !this.spellTargetingParty && !this.spellTargetingEnemy) { if (Records.x.InCombat(false) && Links.x.fellowship.mouseNode != null) { flag34 = true; } if (this.spellTargetingGround) { if (this.repositionTargeting || this.defenseCircleTargeting) { this.ClearEffectTiles(true, null, true); } if (this.joy) { float num3 = Mathf.Abs(Links.x.fellowship.move.magnitude); if (num3 > 0.1f) { this.targetGroundTime = Time.timeSinceLevelLoad; Vector3 vector3 = this.joyPosition; float num4 = Mathf.Atan2(Links.x.fellowship.move.x, Links.x.fellowship.move.y) / 3.1415927f * 180f; if (num4 < 0f) { num4 += 360f; } float num5 = Links.x.worldCamera.transform.rotation.eulerAngles.y + Records.x.gridOffset; Quaternion quaternion = Quaternion.Euler(new Vector3(0f, num4 + num5, 0f)); this.joyPosition = vector3 + quaternion * Vector3.forward * num3 * Time.deltaTime * 30f; Vector3 vector4 = this.joyPosition - Links.x.main.tr.position; Vector3 vector5 = Links.x.main.tr.position + Vector3.ClampMagnitude(vector4, Links.x.main.stats.SpellRadius(this.spellPaganRow)); this.SetControllerTargetingPosition(vector5); this.joyPosition = vector5; } } if ((this.mk && Input.GetMouseButtonUp(0)) || (this.joy && !this.inPartyDock && this.actionStart && !this.waitingForActionUp)) { flag13 = true; if (this.actionCharacter.hasActions) { if (this.actionCharacter.actions.channeling) { this.actionCharacter.actions.EndChanneling(false); } this.actionCharacter.actions.EndVine(); } this.clickedCharacter = null; this.WorldClick(); if (this.joy) { this.mousePoint = this.groundTargetingWaypoint.transform.position; } this.StartGroundTargetTiles(this.actionCharacter, this.mousePoint, false, this.tileEffectRadius, this.actionCharacter.stats.SpellRadius(this.spellPaganRow)); } else { if (this.joy) { this.mousePoint = this.groundTargetingWaypoint.transform.position; } this.StartGroundTargetTiles(this.actionCharacter, this.mousePoint, true, this.tileEffectRadius, this.actionCharacter.stats.SpellRadius(this.spellPaganRow)); } } else if (Records.x.pocketPause || this.quickReposition || this.quickGroup || Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands")) || this.makeCircleMode) { if (this.mk && (Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Left")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Up")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Right")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Down")))) { this.PocketPause(false); } if ((this.quickReposition || this.quickGroup || this.makeCircleMode || Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands"))) && !Records.x.partySailing) { Vector3 vector6 = this.joyPosition; if (this.mk) { Vector3 vector7 = this.mousePoint - Links.x.main.tr.position; vector6 = Links.x.main.tr.position + Vector3.ClampMagnitude(vector7, Links.x.main.stats.SightRadius(false, false, false)); } if (this.joy) { float num6 = Mathf.Abs(Links.x.fellowship.move.magnitude); if (num6 > 0.1f) { this.targetGroundTime = Time.timeSinceLevelLoad; Vector3 vector8 = this.joyPosition; float num7 = Mathf.Atan2(Links.x.fellowship.move.x, Links.x.fellowship.move.y) / 3.1415927f * 180f; if (num7 < 0f) { num7 += 360f; } float num8 = Links.x.worldCamera.transform.rotation.eulerAngles.y + Records.x.gridOffset; Quaternion quaternion2 = Quaternion.Euler(new Vector3(0f, num7 + num8, 0f)); this.joyPosition = vector8 + quaternion2 * Vector3.forward * num6 * Time.deltaTime * 30f; Vector3 vector9 = this.joyPosition - Links.x.main.tr.position; vector6 = Links.x.main.tr.position + Vector3.ClampMagnitude(vector9, Links.x.main.stats.SightRadius(false, false, false)); RaycastHit raycastHit6; if (Physics.Raycast(vector6 + new Vector3(0f, 100f, 0f), Vector3.up * -1f, out raycastHit6, 200f, Links.x.floor)) { vector6 = raycastHit6.point; } } } bool flag37 = false; GraphNode graphNode4 = Links.x.main.NearNode(vector6, false, 0, -1, 0); if (graphNode4 != null && Links.x.main.node != null) { if (graphNode4.GraphIndex == 1U) { flag37 = !(Links.x.diorama.GetIndoorView().GetInteriorBoundsName((Vector3)graphNode4.position) != Links.x.main.indoorID) && Links.x.main.node.GraphIndex != 0U; } else { flag37 = graphNode4.GraphIndex != 0U || Links.x.main.node.GraphIndex != 1U; } } if (Time.timeSinceLevelLoad > this.foundGroupTime + 0.15f) { this.foundGroupTime = 0f; } if (flag37 && (this.quickGroup || this.makeCircleMode || Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands")))) { if (!this.defenseCircleTargeting) { this.defenseCircleRotation = Quaternion.identity; } this.defenseCircleTargeting = true; if (this.mk) { if (!this.messageDefenseHoldMK.activeSelf && Input.GetMouseButton(0)) { this.messageDefenseHoldMK.SetActive(true); this.messageDefenseHoldAnimMK.Play("ControlsSlideMK"); } if (Input.GetMouseButtonDown(0)) { this.defenseHoldTime = 0f; } if (Input.GetMouseButton(0) && this.defenseHoldTime == 0f) { this.defenseHoldTime = Time.timeSinceLevelLoad; this.defenseCircleHoldPosition = vector6; } if (Input.GetMouseButtonDown(0) || (Input.GetMouseButton(0) && Time.timeSinceLevelLoad < this.defenseHoldTime + 0.3f)) { vector6 = this.defenseCircleHoldPosition; } else if (Input.GetMouseButton(0) || Input.GetMouseButtonUp(0)) { vector6 = this.defenseCircleHoldPosition; } else { this.defenseCircleHoldPosition = Vector3.zero; this.defenseCircleRotation = Quaternion.identity; this.defenseHoldTime = 0f; } } else if (!this.messageDefenseHoldJoy.activeSelf) { this.messageDefenseHoldJoy.SetActive(true); this.messageDefenseHoldAnimJoy.Play("ControlsSlideMK"); } bool flag38 = true; bool flag39 = false; if (this.quickGroup && Input.GetMouseButtonUp(0)) { flag39 = true; flag38 = false; } this.StartGroundTargetTiles(Links.x.main, vector6, flag38, 4, Links.x.main.stats.SightRadius(false, false, false)); if ((Input.GetMouseButtonUp(0) && this.mk) || (this.actionStart && this.joy)) { flag13 = true; if (!flag39) { this.EndGroupCircle(vector6); } } } } } else if (!this.quickGroup && !this.quickReposition) { if (this.repositionTargeting || this.defenseCircleTargeting) { this.ClearEffectTiles(true, null, true); } if (Links.x.mk && Links.x.pathfind && !this.hitWater) { bool flag40 = false; if (Input.GetMouseButtonDown(0)) { bool flag41 = false; GraphNode graphNode5 = Links.x.main.NearNode(this.mousePoint, false, 0, -1, 0); if (graphNode5 != null && Links.x.main.node != null) { if (graphNode5.GraphIndex == 1U) { flag41 = !(Links.x.diorama.GetIndoorView().GetInteriorBoundsName((Vector3)graphNode5.position) != Links.x.main.indoorID) && Links.x.main.node.GraphIndex != 0U; } else { flag41 = graphNode5.GraphIndex != 0U || Links.x.main.node.GraphIndex != 1U; } } if (flag41) { this.ClearSelectedActionTargets(Links.x.main); this.clickedCharacter = null; Links.x.gameplay.StoneSoundQuieter(); if (Links.x.main.actions && !Records.x.partySailing) { Links.x.main.actions.RemoveAbility(); } if (this.spellTargetingGround || this.spellTargetingParty || this.spellTargetingEnemy) { this.ClearEffectTiles(true, null, false); } this.RemoveSpellTargets(); this.throwingElixir = false; if (this.actionCharacter) { this.actionCharacter.portrait.skillBag.RemoveSelectedButton(); } if (Records.x.InCombat(false)) { Links.x.combat.ClickAwayFromCombat(); } Links.x.fellowship.MakeWaypoints(this.mousePoint, null, flag40, flag3); } } } } } } else if (this.repositionTargeting || this.defenseCircleTargeting) { this.ClearEffectTiles(true, null, true); } if ((!flag34 && !this.targetingCharacter) || this.spellTargetingGround) { this.TurnOffHoverTiles(); } if (!Records.x.pocketPause && Links.x.main.IsSentient() && (this.joy || !flag14) && !Records.x.removeControls && !Records.x.inMenus && !this.spellTargetingGround && !this.spellTargetingParty && !this.spellTargetingEnemy && !this.clickedUpCharacter && !flag36 && !flag35 && !flag13 && !Records.x.typing && !this.makeCircleMode) { if ((!this.attackingCharacter.inAction && !this.attackingCharacter.inRecovery && !this.attackingCharacter.inQueuedAbility && this.mk && ((!Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands")) && Input.GetMouseButtonDown(1)) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Pocket")))) || (this.joy && !this.inPartyDock && this.actionStart && !this.waitingForActionUp && !this.itemsDown && !this.descWindowOpen && (Records.x.MenusCount() == 0 || (Records.x.MenusCount() == 1 && Records.x.FirstMenu() == Links.x.hudControl.gameFeedPopout)))) { if (Links.x.main.attackTime < 1f) { MasterAudio.PlaySoundAndForget("Not ready", Random.Range(0.5f, 0.7f), new float?(Random.Range(0.9f, 1f)), 0f, "", null); } this.startPocketPause = true; } } else if (!this.startPocketPause && Records.x.pocketPause && ((this.joy && this.cancelStart && !Links.x.pocketWheel.targetSelection) || (!this.hitItem && !this.hitExit && !this.hitInteractable && !flag14 && !this.hitCharacter && Input.GetMouseButtonDown(0)) || (Input.GetMouseButtonDown(1) && !this.spellcasting) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Right")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Left")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Up")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Down")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Pocket"))) && !Records.x.removeControls && !Records.x.inMenus && !this.spellTargetingGround && !this.spellTargetingParty && !this.spellTargetingEnemy && !Records.x.typing && !Links.x.pocketWheel.rallyWheelOpen && ((this.mk && ((Input.GetMouseButtonDown(0) && !this.quickCommandAttack && !this.quickReposition && !this.quickGroup) || (!this.spellcasting && Input.GetMouseButtonDown(1)) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Right")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Left")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Up")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Down")) || Input.GetKeyDown(Links.x.gameplay.keyControl.GetHotkey("Pocket")))) || (this.joy && this.cancelStart && !this.spellcasting && !Links.x.pocketWheel.spellbookWindow.gameObject.activeSelf))) { this.PocketPause(false); } if (Records.x.pocketPause && this.joy && !Links.x.pocketWheel.rallyWheelOpen && this.cancelStart) { if (!Links.x.pocketWheel.targetSelection && Links.x.pocketWheel.spellbookWindow.gameObject.activeSelf) { this.RemoveSpellTargets(); } else if (Links.x.pocketWheel.targetSelection) { Links.x.rtsCamera.Zoom(false, "TargetSelect"); Links.x.rtsCamera.targetSelecting = false; if (Links.x.main.attackTime >= 1f) { Links.x.pocketWheel.Open(Links.x.main); } if (this.spellcasting || this.spellTargetingGround) { this.RemoveSpellTargets(); } } else if (!this.startPocketPause) { this.PocketPause(false); } } if (Records.x.pocketPause) { if (((this.mk && Input.GetMouseButtonDown(1)) || (this.joy && this.cancelStart)) && !this.character) { if (Links.x.combat.pickingRally && !this.spellcasting) { Links.x.combat.pickingRally = false; if (Links.x.main.attackTime >= 1f) { Links.x.pocketWheel.Open(Links.x.main); } Shader.SetGlobalFloat("_Combat", 1f); Links.x.main.portrait.AnimatorSynergyDone(); Links.x.combat.rallyCharacter.portrait.AnimatorSynergyDone(); Links.x.combat.rallyCharacter = null; this.SetDomeSize(); if (this.joy) { this.GetControllerTarget(false); } } if (this.spellcasting) { if (this.actionCharacter && this.actionCharacter.actions && this.actionCharacter.actions.spellCasterFX) { Links.x.cellar.ReturnPooledGameObject(69, this.actionCharacter.actions.spellCasterFX); } this.RemoveAbilityInfo(); } if (this.actionCharacter) { Links.x.gameplay.ClearWaypointEffect(this.actionCharacter); } this.clickStartOnUIHover = false; } } else if (this.mk && Input.GetMouseButtonDown(1) && this.spellcasting && !this.startPocketPause && this.spellcasting) { if (this.actionCharacter && this.actionCharacter.actions && this.actionCharacter.actions.spellCasterFX) { Links.x.cellar.ReturnPooledGameObject(69, this.actionCharacter.actions.spellCasterFX); } this.RemoveAbilityInfo(); } } if (!Records.x.pocketPause && (this.defenseCircleTargeting || this.repositionTargeting) && !this.quickGroup && !this.quickReposition && !this.makeCircleMode && !Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands"))) { this.ClearEffectTiles(true, null, true); } } } else { if (this.mk) { if (Input.GetMouseButtonDown(0) && this.uiHover) { this.clickStartOnUIHover = true; } if (this.prevExit) { this.prevExit.Hover(false); Links.x.hudControl.HighlightExit(false, this.prevExit); this.prevExit = null; this.exit = null; this.mapDoor = null; this.prevMapDoor = null; } this.targetingCharacter = null; if (this.prevCharacter) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightCharacter(false, this.prevCharacter); } else { Links.x.combat.HighlightCharacter(false, this.prevCharacter); } this.prevCharacter.HoverOut(false); this.prevCharacter = null; this.character = null; this.ClearInteractionNodes(); } if (this.prevBreakable) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightBreakable(false, this.prevBreakable); } else { Links.x.combat.HighlightBreakable(false, this.prevBreakable); } Links.x.itemCard.EndHover(null, null, null, this.prevBreakable, null, true); this.prevBreakable.HoverOut(); this.prevBreakable = null; this.breakable = null; } if (this.prevChest) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightChest(false, this.prevChest); } else { Links.x.combat.HighlightChest(false, this.prevChest); } Links.x.itemCard.EndHover(null, this.prevChest, null, null, null, true); this.prevChest.HoverOut(); this.prevChest = null; this.chest = null; } if (this.prevDoor) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightDoor(false, this.prevDoor); } else { Links.x.combat.HighlightDoor(false, this.prevDoor); } Links.x.itemCard.EndHover(null, null, this.prevDoor, null, null, true); this.prevDoor.HoverOut(); this.prevDoor = null; this.door = null; } if (this.prevPuzzle) { if (!Records.x.pocketPause) { Links.x.hudControl.HighlightPuzzle(false, this.prevPuzzle); } else { Links.x.combat.HighlightPuzzle(false, this.prevPuzzle); } Links.x.itemCard.EndHover(null, null, null, null, this.prevPuzzle, true); this.prevPuzzle.HoverOut(); this.prevPuzzle = null; this.puzzle = null; } if (this.prevItem) { this.prevItem.HoverOut(); Links.x.itemCard.EndHover(this.prevItem, null, null, null, null, false); this.prevItem = null; } } if (this.prevGameCardCharacter) { Links.x.gameCard.EndHover(this.prevGameCardCharacter, false); this.prevGameCardCharacter.body.Hover(false, true); this.prevGameCardCharacter = null; } this.TurnOffHoverTiles(); } if (this.joy) { if (!Records.x.typing && !Records.x.inMenus && Links.x.main && !Records.x.removeControls && Links.x.gaia.sceneLoaded && !Links.x.creation && !Links.x.pocketWheel.rallyWheelOpen && !Links.x.combat.inPocketAttack && !this.makeCircleMode) { if (Links.x.main.IsSentient() && (this.partyItems3Down || this.partyItems4Down) && !this.inPartyDock && !Links.x.pocketWheel.spellbook.activeSelf && !Links.x.pocketWheel.open && !this.gameFeedScrolling && !this.badgeScrolling) { this.inPartyDock = true; Links.x.hudControl.ToggleBothCanvasGroup(true); Links.x.hudControl.ToggleCanvasGroup(false); EventSystem.current.SetSelectedGameObject(Links.x.main.portrait.skillBag.weaponTransform.GetChild(1).gameObject); } if (this.itemsDown && this.dockDown && Links.x.gameFeed.isOn) { if (this.currentEventObject != Links.x.gameFeed.scrollbar.gameObject) { EventSystem.current.SetSelectedGameObject(Links.x.gameFeed.scrollbar.gameObject); this.gameFeedScrolling = true; Links.x.hudControl.ToggleControllerItemsIcon(false); if (this.badgeScrolling) { Links.x.hudControl.RemoveBadgeNavigation(); this.badgeScrolling = false; } } Links.x.gameFeed.scrollRect.verticalNormalizedPosition += Links.x.fellowship.move.y * 7f * Time.deltaTime; } if (this.gameFeedScrolling && (!this.itemsDown || !this.dockDown)) { EventSystem.current.SetSelectedGameObject(null); Links.x.hudControl.JoyBox(false); this.gameFeedScrolling = false; Links.x.hudControl.ToggleControllerItemsIcon(true); } if (this.aimHold && this.targetDodgeHold && Links.x.hudControl.GetFirstBadge()) { if (this.currentEventObject == null || !this.badgeScrolling) { GameObject firstBadge = Links.x.hudControl.GetFirstBadge(); if (firstBadge) { EventSystem.current.SetSelectedGameObject(firstBadge); } } this.badgeScrolling = true; Links.x.hudControl.ToggleControllerItemsIcon(false); this.gameFeedScrolling = false; } if (this.badgeScrolling && (!this.aimHold || !this.targetDodgeHold || this.gameFeedScrolling)) { EventSystem.current.SetSelectedGameObject(null); Links.x.hudControl.JoyBox(false); this.badgeScrolling = false; Links.x.hudControl.RemoveBadgeNavigation(); Links.x.hudControl.ToggleControllerItemsIcon(true); } if (this.menusDown && Links.x.gameFeed.isOn) { Links.x.hudControl.MoveFeedAndNote(); } } if (Records.x.typing || Records.x.removeControls || Records.x.dialogue || Records.x.inMenus || !Links.x.gaia.sceneLoaded) { if (this.gameFeedScrolling) { this.gameFeedScrolling = false; Links.x.hudControl.ToggleControllerItemsIcon(true); } if (this.badgeScrolling) { this.badgeScrolling = false; Links.x.hudControl.RemoveBadgeNavigation(); Links.x.hudControl.ToggleControllerItemsIcon(true); } } if (Records.x.inMenus || Records.x.removeControls || !Links.x.gaia.sceneLoaded || (!Records.x.inMenus && !this.makeCircleMode && (this.cancelStart || this.dockDown || this.gameFeedScrolling || (!Records.x.typing && (Links.x.fellowship.move.x != 0f || Links.x.fellowship.move.y != 0f || Links.x.fellowship.move.magnitude > 0.1f || Links.x.fellowship.direction.magnitude > 0.1f || this.party1Down || this.party2Down))))) { if (this.makeCircleMode) { Links.x.hudControl.ToggleStayBack(); } if (this.tp1.open) { this.tp1.EndMenuStart(); } if (this.tp2.open) { this.tp1.EndMenuStart(); } if (this.tp3.open) { this.tp1.EndMenuStart(); } if (this.tp4.open) { this.tp1.EndMenuStart(); } if (!Records.x.miniGame && this.inPartyDock && !Records.x.inMenus && !this.descWindowOpen) { Links.x.main.portrait.skillBag.TooltipOff(); if (this.currentEventObject != Links.x.gameFeed.scrollbar) { EventSystem.current.SetSelectedGameObject(null); Links.x.hudControl.JoyBox(false); } } this.inPartyDock = false; if (this.descWindowOpen) { Links.x.hudControl.CloseDescWindow(); } } if (!Records.x.typing && !Records.x.inMenus && this.hudLeftStart && !Links.x.pocketWheel.rallyWheelOpen && !Links.x.combat.inPocketAttack) { Links.x.hudControl.ToggleLethalityJoystick(); if (Records.x.kill) { Links.x.main.StartQuip("Killing blows only"); } else { Links.x.main.StartQuip("Just knock them out"); } if (this.tp1.open) { this.tp1.EndMenuStart(); } if (this.tp2.open) { this.tp1.EndMenuStart(); } if (this.tp3.open) { this.tp1.EndMenuStart(); } if (this.tp4.open) { this.tp1.EndMenuStart(); } if (this.descWindowOpen) { Links.x.hudControl.CloseDescWindow(); } } if (!Records.x.typing && !Records.x.inMenus && this.hudRightStart && !Links.x.pocketWheel.rallyWheelOpen && !Links.x.combat.inPocketAttack && !this.spellTargetingGround && !this.spellcasting && (!Links.x.pocketWheel.open || (Links.x.pocketWheel.open && !Links.x.pocketWheel.targetSelection))) { Links.x.hudControl.ToggleStayBack(); if (this.tp1.open) { this.tp1.EndMenuStart(); } if (this.tp2.open) { this.tp1.EndMenuStart(); } if (this.tp3.open) { this.tp1.EndMenuStart(); } if (this.tp4.open) { this.tp1.EndMenuStart(); } if (this.descWindowOpen) { Links.x.hudControl.CloseDescWindow(); } } if (this.allMenusStart && !Links.x.spellcrafting.open && !Records.x.miniGame && !this.tp1.open && !this.tp2.open && !this.tp3.open && !this.tp4.open && !Links.x.pocketWheel.rallyWheelOpen && !Links.x.combat.inPocketAttack && !Links.x.questEnd.on && !Records.x.dialogue && !Records.x.inMenus) { if (this.gameFeedScrolling) { this.gameFeedScrolling = false; Links.x.hudControl.ToggleControllerItemsIcon(true); } if (this.badgeScrolling) { this.badgeScrolling = false; Links.x.hudControl.RemoveBadgeNavigation(); Links.x.hudControl.ToggleControllerItemsIcon(true); } if (this.tp1.open) { this.tp1.EndMenuStart(); } if (this.tp2.open) { this.tp1.EndMenuStart(); } if (this.tp3.open) { this.tp1.EndMenuStart(); } if (this.tp4.open) { this.tp1.EndMenuStart(); } if (this.descWindowOpen) { Links.x.hudControl.CloseDescWindow(); } string text = this.lastMenuOpened; if (text == "" || text == null) { text = "Character Sheet"; } if (Links.x.creation) { text = "Options"; } if (text == "Rest") { if (Records.x.InCombat(false)) { text = "Character Sheet"; this.lastMenuOpened = text; } else { Links.x.rest.StartMenu(true); } } if (text == "Character Sheet") { Links.x.characterSheet.StartMenu(false); } if (text == "Journal") { Links.x.journal.StartMenu(); } if (text == "Scene Map") { Links.x.sceneMap.OpenMenu(); } if (text == "Options") { Links.x.saveLoad.OpenMenu(); } if (text == "Formation") { Links.x.formation.StartMenu(); } Links.x.hudControl.OpenMenuSwitcher(text); } if (Records.x.inMenus && !Records.x.typing && !Links.x.spellcrafting.open) { if (this.hudLeftOpen || this.hudRightOpen) { this.hudRightOpen = false; this.hudLeftOpen = false; this.ToggleControllerGlows(); Links.x.hudControl.ToggleCanvasGroup(false); } if (!this.cancelStart && (this.dockStart || this.itemsStart) && !Links.x.creation && !Links.x.characterSheet.levelUpMenu) { if (this.gameFeedScrolling) { this.gameFeedScrolling = false; Links.x.hudControl.ToggleControllerItemsIcon(true); } if (this.badgeScrolling) { this.badgeScrolling = false; Links.x.hudControl.RemoveBadgeNavigation(); Links.x.hudControl.ToggleControllerItemsIcon(true); } string text2 = this.lastMenuOpened; if (text2 == "" || text2 == null) { text2 = "Character Sheet"; } if (this.dockStart) { if (text2 == "Character Sheet") { Links.x.sceneMap.OpenMenu(); } if (text2 == "Scene Map") { Links.x.journal.StartMenu(); } if (text2 == "Journal") { Links.x.formation.StartMenu(); } if (text2 == "Formation") { if (Records.x.InCombat(false)) { text2 = "Rest"; this.lastMenuOpened = text2; } else { Links.x.rest.StartMenu(true); } } if (text2 == "Rest") { Links.x.saveLoad.OpenMenu(); } if (text2 == "Options") { Links.x.characterSheet.StartMenu(false); } } if (this.itemsStart) { if (text2 == "Scene Map") { Links.x.characterSheet.StartMenu(false); } if (text2 == "Journal") { Links.x.sceneMap.OpenMenu(); } if (text2 == "Formation") { Links.x.journal.StartMenu(); } if (text2 == "Rest") { Links.x.formation.StartMenu(); } if (text2 == "Options") { if (Records.x.InCombat(false)) { text2 = "Formation"; Links.x.formation.StartMenu(); this.lastMenuOpened = text2; } else { Links.x.rest.StartMenu(true); } } if (text2 == "Character Sheet") { Links.x.saveLoad.OpenMenu(); } } Links.x.hudControl.MenuText(); } } } if (this.joy && this.cancelStart && this.makeCircleMode) { Links.x.hudControl.ToggleStayBack(); } bool inMenus = Records.x.inMenus; float timeScale = Time.timeScale; if (this.clickedUpCharacter && (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(1) || !Input.GetMouseButton(0) || !Input.GetMouseButton(1))) { this.clickedUpCharacter = false; } if (this.doLookAt) { Vector3 vector10 = this.mousePoint; vector10.y = Links.x.main.body.headBone.position.y + 0.1f; this.lookAt.position = Vector3.Lerp(this.lookAt.position, vector10, Time.deltaTime * 30f); Links.x.main.body.lookAtController.SetNewTarget(this.lookAt, 0f, 0f, false); } if (Input.GetMouseButtonUp(0) && this.mk) { this.clickStartOnUIHover = false; } else if (this.joy) { this.clickStartOnUIHover = false; } if (this.needsPathParty.Count > 0) { this.needsPathParty[0].DoPath(true); this.needsPathParty.RemoveAt(0); } if (this.needsPath.Count > 0) { this.needsPath[0].DoPath(true); this.needsPath.RemoveAt(0); } if (this.needsPath.Count > 0) { this.needsPath[0].DoPath(true); this.needsPath.RemoveAt(0); } if (this.needsPath.Count > 0) { this.needsPath[0].DoPath(true); this.needsPath.RemoveAt(0); } if (this.needsPath.Count > 0) { this.needsPath[0].DoPath(true); this.needsPath.RemoveAt(0); } if (!Records.x.removeControls && Links.x.main) { Links.x.inventory.groundBag.CheckGroundAndClicks(false); } if (((this.mk && Input.GetKeyDown(this.keyCodes[10])) || (this.joy && this.itemsDown && !this.gameFeedScrolling && !Links.x.inventory.groundBag.toggle)) && this.CanInteractWithWorld("Item") && Links.x.hasMain && !Links.x.creation && !Records.x.typing) { Links.x.inventory.groundBag.RemoveLabels(); Links.x.inventory.groundBag.firstOpen = true; Links.x.inventory.groundBag.toggle = true; Links.x.inventory.groundBag.hudButton.SetImageFromSave(); if (Links.x.hasMain) { Links.x.inventory.groundBag.startPosY = Links.x.main.tr.position.y; } Links.x.inventory.groundBag.collectorUpdate = true; Shader.SetGlobalFloat("_HoveringOnItem", 1f); if (this.prevItem) { this.prevItem.HoverOut(); Links.x.itemCard.EndHover(this.prevItem, null, null, null, null, false); this.prevItem = null; } Links.x.inventory.groundBag.CheckGroundAndClicks(true); } if ((this.mk && Input.GetKeyUp(this.keyCodes[10])) || (this.joy && (this.itemsUp || this.gameFeedScrolling))) { Links.x.inventory.groundBag.toggle = false; Shader.SetGlobalFloat("_HoveringOnItem", 0f); Links.x.inventory.groundBag.hudButton.SetImageFromSave(); if (Links.x.joy) { Links.x.inventory.groundBag.JoyRemoveToggle(); } } if ((this.mk && Input.GetKeyUp(this.keyCodes[33])) || (this.joy && this.itemsUp)) { Links.x.inventory.groundBag.RemoveHoverTooltip(); } if (!Records.x.removeControls && !Records.x.typing && !Records.x.mainMenuOpen && !Records.x.inOverworldMap && Links.x.gaia.sceneLoaded && !Links.x.hudControl.descriptionWindowOpen && !this.hudLeftOpen && !this.hudRightOpen && !Records.x.miniGame && !Links.x.pocketWheel.rallyWheelOpen && !Links.x.combat.inPocketAttack) { if (!this.uiHover || !this.mk) { this.settingFavorite = ""; } if (this.mk && !Links.x.combat.inPocketAttack && !Records.x.typing) { for (int m = 0; m < this.keyCodes.Count; m++) { if (this.keyCodes[m] != KeyCode.None && this.keyConverted[m] != "null") { if (m == 44 && Input.GetKeyUp(this.keyCodes[m])) { Links.x.hudControl.HideShowHud(false); } if (Input.GetKeyDown(this.keyCodes[m])) { if (m >= 34 && m <= 43) { Links.x.pocketWheel.HitKey(m); } if (m == 44) { Links.x.hudControl.HideShowHud(true); } if (m == 0 && Links.x.characterSheet) { if (Links.x.characterSheet.contents1.activeSelf) { Links.x.characterSheet.StartEndMenu(false, true); this.CloseDock(); } else { this.openingAnotherMenu = true; this.CloseAllMenus(); Links.x.characterSheet.StartMenu(false); this.OpenDock(); } } if (m == 1) { this.QuickSave(); } if (m == 6) { if (!Links.x.journal.contents1.activeSelf) { this.openingAnotherMenu = true; this.CloseAllMenus(); Links.x.journal.StartMenu(); this.OpenDock(); } else { Links.x.journal.StartEndMenu(true); this.CloseDock(); } } if (m == 7) { if (Links.x.sceneMap.contents1.activeSelf) { Links.x.sceneMap.StartEndMenu(true); this.CloseDock(); } else { this.openingAnotherMenu = true; this.CloseAllMenus(); Links.x.sceneMap.OpenMenu(); this.OpenDock(); } } if (m >= 13 && m <= 20 && !this.uiHover) { Links.x.hudControl.currentHotkeyButton; } } } } } else if (this.quickSaveStart) { this.QuickSave(); } } if (!Records.x.inOverworldMap) { if (this.coneCharacter) { bool flag42 = false; for (int n = 0; n < this.party.Count; n++) { if (this.party[n].body.sneaking) { flag42 = true; } } bool flag43 = flag42; if (this.coneCharacter.dead || this.coneCharacter.stunned || !flag43 || Records.x.dialogue) { Links.x.lineOfSightCone.position = this.farPosition; this.coneCharacter = null; Links.x.coneEffects.enabled = false; } else if (this.coneCharacter) { if (this.coneCharacter.moveFollow) { Vector3 position = this.coneCharacter.tr.position; position.y = this.coneCharacter.torsoPosition.y; Links.x.lineOfSightCone.position = position; Quaternion quaternion3 = this.coneCharacter.body.tr.rotation; if (this.coneCharacter.moving) { quaternion3 = this.coneCharacter.tr.rotation; } Links.x.lineOfSightCone.rotation = Quaternion.Slerp(Links.x.lineOfSightCone.rotation, quaternion3, Time.deltaTime * 25f); Links.x.coneEffects.enabled = true; } else { Links.x.lineOfSightCone.position = this.farPosition; this.coneCharacter = null; Links.x.coneEffects.enabled = false; } } } if ((!Records.x.pocketPause || !this.attackingCharacter.CanAttack() || Links.x.combat.inPocketAttack || !this.playerInAction) && Links.x.attackConeEffects.enabled) { Links.x.attackConeEffects.enabled = false; Links.x.attackCone1.position = this.farPosition; Links.x.attackCone2.position = this.farPosition; } } bool flag44 = false; if ((this.spellcasting || this.throwingElixir) && (!Records.x.InCombat(false) || (Records.x.InCombat(false) && Records.x.playerTurn) || !Records.x.turnBased) && !Records.x.removeControls) { flag44 = true; if (!this.showingAbilityUI) { this.showingAbilityUI = true; } } bool flag45 = !flag44 && flag44; if (!Records.x.paused && !Records.x.dialogue && !Records.x.pocketPause) { float normalizedTime = this.sunlightAnimator.animator.GetCurrentAnimatorStateInfo(0).normalizedTime; int num9 = (int)Mathf.Floor(this.gameHours); this.gameMinutes = normalizedTime * 1440f; this.gameSeconds = this.gameMinutes * 60f; this.gameHours = this.gameMinutes / 60f; if (num9 != (int)Mathf.Floor(this.gameHours) && Links.x.gaia.sceneLoaded) { if (this.gameHours == 0f) { this.SetNewDay(); } this.NewHourMessages(false); } } if (Input.GetKeyDown(KeyCode.O) && !Records.x.typing && (Records.x.secrets || Records.x.editor) && !Records.x.removeControls) { this.TogglePause(true); this.AddHours(); this.TogglePause(false); } if (this.attacking && !this.uiHover && Input.GetMouseButtonUp(0)) { this.attacking = false; } } if (Links.x.gaia.sceneLoaded) { if (this.joy) { this.SetAdventureDomeSize(); if (Links.x.options.open && Links.x.fellowship.direction.magnitude > 0.25f) { Links.x.options.SetSlider(); } if (Links.x.inventory.splitter.open && Links.x.fellowship.direction.magnitude > 0.25f) { Links.x.inventory.splitter.SetSlider(); } if (Links.x.arrowKit.open && Links.x.fellowship.direction.magnitude > 0.25f) { Links.x.arrowKit.SetSlider(); } if (Links.x.rest.on && Links.x.fellowship.direction.magnitude > 0.25f) { Links.x.rest.UpdateSlider(); } if (Links.x.formation.open && Links.x.fellowship.direction.magnitude > 0.25f) { Links.x.formation.UpdateSlider(); } if (Links.x.inventory.enchantMenu.open && Links.x.fellowship.direction.magnitude > 0.25f) { Links.x.inventory.enchantMenu.UpdateSlider(); } if (Links.x.forfeits.on) { Links.x.forfeits.DoUpdate(); } if (Links.x.spellcrafting.open && Links.x.fellowship.direction.magnitude > 0.25f) { Links.x.spellcrafting.UpdateSlider(); } } if (this.mk) { if (!this.uiHover && !Records.x.inOverworldMap && !this.resizing && !Links.x.hudControl.descriptionWindowOpen) { bool flag46 = true; if (!Links.x.hasMain) { flag46 = false; } if (this.hitCharacter && this.character && flag46 && !this.charming) { bool flag47 = false; if (!this.character.npc) { flag47 = true; } if (this.character.stunned && !Records.x.kill) { flag47 = true; } if (this.spellTargetingGround || this.targetingGroundCharacterHover) { flag47 = true; } if (!Records.x.pocketPause) { flag47 = true; } if (Records.x.pocketPause && !Links.x.combat.CanAttackTarget(this.character)) { flag47 = true; } if (flag47 || (!Records.x.InCombat(false) && this.character.hostility < 2 && !Records.x.pocketPause && !this.character.attackingUntilBribe)) { if (this.character.isBoro || (this.character.npc && this.character.hostility < 2 && !this.character.attackingUntilBribe && !this.character.sleeping && !this.character.dayNightVanishing && this.character.stats.dialogueFile != "")) { if (this.character.stats.dialogueFile != "Quip") { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Talk", false); } else { Links.x.SetCursor("TalkDown", false); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (this.spellcasting || (this.character.npc && this.spellTargetingEnemy) || (!this.character.npc && this.spellTargetingParty)) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Spell", false); } else { Links.x.SetCursor("SpellDown", false); } } else if (flag47 || this.character.sleeping) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Point", false); } else { Links.x.SetCursor("PointDown", false); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (this.spellcasting || (this.character.npc && this.spellTargetingEnemy) || (!this.character.npc && this.spellTargetingParty)) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Spell", false); } else { Links.x.SetCursor("SpellDown", false); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Attack", false); } else { Links.x.SetCursor("AttackDown", false); } } else if (this.hitItem) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (this.hitExit) { bool flag48 = true; bool flag49 = false; if (this.exit && (this.exit.mapExit.exitTo == MapExit.exitToNames.Interiors || this.exit.mapExit.exitTo == MapExit.exitToNames.Exterior)) { flag49 = true; flag48 = false; } if (flag49) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (flag48) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (this.hitInteractable) { if (this.spellcasting) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Spell", false); } else { Links.x.SetCursor("SpellDown", false); } } else if (this.throwingElixir) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Elixir", false); } else { Links.x.SetCursor("ElixirDown", false); } } else if (this.breakable) { if (this.breakable.resourceLocation == -1) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Attack", false); } else { Links.x.SetCursor("AttackDown", false); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (this.chest || this.door || this.puzzle) { if (!Records.x.pocketPause) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Interact", false); } else { Links.x.SetCursor("InteractDown", false); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Attack", false); } else { Links.x.SetCursor("AttackDown", false); } } } else if (this.charming) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Charm", false); } else { Links.x.SetCursor("CharmDown", false); } } else if (!this.attacking && !this.spellcasting && !this.charming && !this.mouseWormVisible && !this.mouseVisible) { Links.x.SetCursor("NoSee", false); } else if (this.attacking && flag46) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Attack", false); } else { Links.x.SetCursor("AttackDown", false); } } else if (this.spellcasting && flag46) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Spell", false); } else { Links.x.SetCursor("SpellDown", false); } } else if (this.throwingElixir && flag46) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Elixir", false); } else { Links.x.SetCursor("ElixirDown", false); } } else if (this.makeCircleMode) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Circle", false); } else { Links.x.SetCursor("CircleDown", false); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Point", false); } else { Links.x.SetCursor("PointDown", false); } } else { bool flag50 = false; if (!this.resizing) { if (Links.x.inventory.repairing) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Repair", true); } else { Links.x.SetCursor("RepairDown", true); } } else if (Links.x.inventory.mineralizing) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Mineral", true); } else { Links.x.SetCursor("MineralDown", true); } } else if (Records.x.portraitDragging || Links.x.inventory.dragging || Links.x.keyControl.dragging || Links.x.journal.dragging || Links.x.inventory.spinning || Links.x.formation.dragging) { if (!Input.GetMouseButtonUp(0)) { Links.x.SetCursor("Use", true); } else { Links.x.SetCursor("UseDown", true); } } else if (this.settingFavorite != "" && Links.x.currentSkillHover) { if (!Input.GetMouseButtonUp(0)) { Links.x.SetCursor("SetFavorite", true); } else { Links.x.SetCursor("SetFavoriteDown", true); } } else if (!Links.x.previousCursor.Contains("Resiz") && !Links.x.previousCursor.Contains("Window Drag")) { if ((flag50 || Records.x.typing) && !this.uiCanClick) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("Write", true); } else { Links.x.SetCursor("WriteDown", true); } } else if (this.uiCanClick) { if (!Input.GetMouseButton(0)) { Links.x.SetCursor("UIInteract", true); } else { Links.x.SetCursor("UIInteractDown", true); } } else if (!Input.GetMouseButton(0)) { Links.x.SetCursor("UIPoint", true); } else { Links.x.SetCursor("UIPointDown", true); } } } } Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } else if (this.currentControllerCount > 0) { Cursor.visible = false; if (Records.x.editor) { Cursor.lockState = CursorLockMode.Locked; } else { Cursor.lockState = CursorLockMode.Locked; } Links.x.SetCursor("EmptyCursor", true); } } this.prevTriggerAction = this.triggerAction; this.prevTriggerInteract = this.triggerInteract; this.prevTriggerItems = this.triggerItems; this.prevTriggerDodge = this.triggerDodge; this.prevTriggerAim = this.triggerAim; this.prevTriggerDock = this.triggerDock; this.prevTriggerCancel = this.triggerCancel; this.prevTriggerAllMenus = this.triggerAllMenus; this.prevTriggerQuickSave = this.triggerQuickSave; this.prevTriggerParty1 = this.triggerParty1; this.prevTriggerParty2 = this.triggerParty2; this.prevTriggerPartyItems3 = this.triggerPartyItems3; this.prevTriggerPartyItems4 = this.triggerPartyItems4; this.prevTriggerMenus = this.triggerMenus; this.prevTriggerHudRight = this.triggerHudRight; this.prevTriggerHudLeft = this.triggerHudLeft; } // Token: 0x0600075F RID: 1887 RVA: 0x000A664C File Offset: 0x000A484C public void CheckIfAnythingShouldRedoMultiTargetHover() { if (Records.x.pocketPause && (Links.x.pocketWheel.selected.Contains("Light") || Links.x.pocketWheel.selected.Contains("Special")) && this.character) { this.character.body.Hover(true, true); } } // Token: 0x06000760 RID: 1888 RVA: 0x000A66BA File Offset: 0x000A48BA public void ChangeScene() { this.needsPath.Clear(); this.needsPathParty.Clear(); this.RemoveSpellTargets(); this.actionCharacter = null; } // Token: 0x06000761 RID: 1889 RVA: 0x000A66DF File Offset: 0x000A48DF public void ToggleControllerGlows() { } // Token: 0x06000762 RID: 1890 RVA: 0x000A66E1 File Offset: 0x000A48E1 private void AllOff() { } // Token: 0x06000763 RID: 1891 RVA: 0x000A66E3 File Offset: 0x000A48E3 public void FindDockGlowParent() { } // Token: 0x06000764 RID: 1892 RVA: 0x000A66E8 File Offset: 0x000A48E8 public void AttackInteractive() { if (!Records.x.pocketPause && Records.x.InCombat(false) && Links.x.combat.npcsInCombat) { this.PocketPause(true); } this.clickedCharacter = null; this.WorldClick(); this.domeParty = null; this.domeEnemy = null; this.NewPaths(); this.ClearInteractionNodes(); this.targetingCharacter = null; GameObject gameObject = null; GraphNode graphNode = null; Vector3 vector = Vector3.zero; if (this.breakable) { gameObject = this.breakable.gameObject; vector = gameObject.transform.position; graphNode = this.breakable.node; } else if (this.chest) { gameObject = this.chest.gameObject; vector = gameObject.transform.position; graphNode = this.chest.node; } else if (this.puzzle) { gameObject = this.puzzle.gameObject; vector = gameObject.transform.position; graphNode = this.puzzle.node; } else if (this.door) { gameObject = this.door.gameObject; vector = gameObject.transform.position; if (this.door.node == null) { this.door.GetNode(); } if (this.door.node != null) { graphNode = this.door.node; vector = (Vector3)graphNode.position; } } else if (this.mapDoor) { gameObject = this.mapDoor.gameObject; vector = gameObject.transform.position; if (this.mapDoor.node == null) { this.mapDoor.GetNode(); } if (this.mapDoor.node != null) { graphNode = this.mapDoor.node; vector = (Vector3)graphNode.position; } } if (gameObject) { Character character = this.MakeObjectCharacter(graphNode, gameObject, vector); Character character2 = Links.x.main; if (Links.x.pocketWheel.rallyWheelOpen && Links.x.pocketWheel.selectedRallyCharacter) { character2 = Links.x.pocketWheel.selectedRallyCharacter; } character2.UpdateLKP(character, character.node, "Attack", true); if (!character2.hasActions) { Links.x.combat.GivePartyActions(character2, false); if (!Records.x.combat) { Links.x.combat.StartCombat(null, character2, true, true); } } if (Links.x.combat.inPocketAttack) { this.rallyTargetInteractiveSelected = gameObject; } else { if (Links.x.pocketWheel.rallyWheelOpen) { this.rallyTargetInteractiveSelected = gameObject; } if (Links.x.pocketWheel.selected == "Heavy Attack") { character2.actions.SelectCharge(character); } else { character2.actions.SelectActionRealTime(null, gameObject); } } if (!character2.HasAmmoOrMelee(character2.invRow1, false)) { Links.x.gameFeed.AddFeed(this.character.stats.displayName + " is out of " + character2.GetAmmoType()); } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround || this.spellTargetingParty || this.spellTargetingEnemy) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.EndControllerTargeting(); } } // Token: 0x06000765 RID: 1893 RVA: 0x000A6A5C File Offset: 0x000A4C5C public Character MakeObjectCharacter(GraphNode nearNode, GameObject obj, Vector3 center) { Character character = obj.GetComponent(); if (!character) { character = obj.AddComponent(); character.enabled = false; } character.npc = true; character.hostility = 2; character.interactiveObject = true; character.tr = obj.transform; if (this.door) { if (!this.door.point) { this.door.SetupExits(); } character.tr = this.door.point.transform; } if (this.mapDoor) { character.tr = this.mapDoor.point.transform; } character.attackRadius = 1f; if (nearNode == null && character.node != null) { nearNode = character.node; } if (nearNode == null) { this.nodeConstraint.constrainWalkability = true; this.nodeConstraint.walkable = true; this.nodeConstraint.constrainPenalty = 0; this.nodeConstraint.constrainTags = false; this.nodeConstraint.checkCircleID = 0; this.nodeConstraint.passID = 0; this.nodeConstraint.passID2 = 0; this.nodeConstraint.checkConnections = 0; this.nodeConstraint.constrainToArea = -1; nearNode = AstarPath.active.GetNearest(center, this.nodeConstraint).node; } character.currentPosition = center; character.node = nearNode; return character; } // Token: 0x06000766 RID: 1894 RVA: 0x000A6BC4 File Offset: 0x000A4DC4 public void RemoveSpellTargets() { this.spellTargetingGround = false; this.spellcasting = false; this.spellTargetingEnemy = false; this.spellTargetingParty = false; Shader.SetGlobalFloat("_TargetingParty", 0f); this.ClearEffectTiles(true, null, false); this.EndControllerTargeting(); this.spellPaganRow = null; } // Token: 0x06000767 RID: 1895 RVA: 0x000A6C12 File Offset: 0x000A4E12 private void LateUpdate() { this.SetJoystickTargetPosition(); if (this.startPocketPause) { this.PocketPause(true); this.startPocketPause = false; } if (this.mk && Input.GetMouseButtonUp(0)) { this.resizing = false; } } // Token: 0x06000768 RID: 1896 RVA: 0x000A6C48 File Offset: 0x000A4E48 public bool WormVisible(Vector3 pt) { if (Links.x.rtsCamera.currentBoundsName == "") { return Links.x.fogOfWar.IsVisibleWorm(pt); } return Links.x.fogOfWarInterior.IsVisibleWorm(pt); } // Token: 0x06000769 RID: 1897 RVA: 0x000A6C9C File Offset: 0x000A4E9C private bool CanInteractWithWorld(string type) { if (Links.x.rtsCamera.inspecting) { return false; } if (Links.x.rtsCamera.panning) { return false; } if (Records.x.dialogue) { return false; } if (Records.x.inMenus) { return false; } if (Links.x.fellowship.drawingSquare) { return false; } if (this.makeCircleMode) { return false; } if (this.resizing) { return false; } if (this.joy) { return !Records.x.typing; } return !this.uiHover && (!Records.x.removeControls || (Links.x.combat.inPocketAttack && Links.x.pocketWheel.rallyWheelOpen && (type == "Character" || type == "Interactive Object"))); } // Token: 0x0600076A RID: 1898 RVA: 0x000A6D84 File Offset: 0x000A4F84 public void SetNewDay() { this.gameSeconds = 0f; this.gameMinutes = 0f; this.gameHours = 0f; this.gameDays++; this.GetTimeOfDay(); Debug.Log("New Day " + this.gameDays.ToString()); } // Token: 0x0600076B RID: 1899 RVA: 0x000A6DE0 File Offset: 0x000A4FE0 public void GetTimeOfDay() { if ((this.gameHours >= 0f && this.gameHours < 4f) || this.gameHours >= 22f) { this.timeOfDay = "Morning"; } if (this.gameHours >= 4f && this.gameHours < 10f) { this.timeOfDay = "Afternoon"; } if (this.gameHours >= 10f && this.gameHours < 16f) { this.timeOfDay = "Evening"; } if (this.gameHours >= 16f && this.gameHours < 22f) { this.timeOfDay = "Night"; } Links.x.hudControl.SetTimeOfDay(Mathf.Floor(this.gameHours)); } // Token: 0x0600076C RID: 1900 RVA: 0x000A6EA8 File Offset: 0x000A50A8 public bool IsNight() { return this.gameHours >= 16f && this.gameHours < 22f; } // Token: 0x0600076D RID: 1901 RVA: 0x000A6EC7 File Offset: 0x000A50C7 public bool IsEvening() { return this.gameHours >= 10f && this.gameHours < 16f; } // Token: 0x0600076E RID: 1902 RVA: 0x000A6EE6 File Offset: 0x000A50E6 public bool IsAfternoon() { return this.gameHours >= 4f && this.gameHours < 10f; } // Token: 0x0600076F RID: 1903 RVA: 0x000A6F08 File Offset: 0x000A5108 public bool IsDay() { return (this.gameHours >= 0f && this.gameHours < 4f) || this.gameHours >= 22f || (this.gameHours >= 4f && this.gameHours < 10f) || (this.gameHours >= 10f && this.gameHours < 16f) || this.gameHours < 16f || this.gameHours >= 22f; } // Token: 0x06000770 RID: 1904 RVA: 0x000A6F94 File Offset: 0x000A5194 public void LoadGameTime() { float num = this.sunlightAnimator.ChangeTime(this.gameSeconds); this.gameMinutes = num * 1440f; this.gameSeconds = this.gameMinutes * 60f; this.gameHours = this.gameMinutes / 60f; this.GetTimeOfDay(); this.UpdateTimeText(); } // Token: 0x06000771 RID: 1905 RVA: 0x000A6FF0 File Offset: 0x000A51F0 public void UpdateTimeText() { this.str.Clear(); this.str.Append("Day "); this.str.Append(this.gameDays); this.str.Append(", "); float num = Mathf.Floor(this.gameHours); string text = this.ShowHour(num); this.str.Append(text); this.timeText.text = this.str.ToString(); } // Token: 0x06000772 RID: 1906 RVA: 0x000A7074 File Offset: 0x000A5274 public string ShowHour(float h) { string text = ""; if (h == 22f) { text = "6 in the morning"; } if (h == 23f) { text = "7 in the morning"; } if (h == 0f) { text = "8 in the morning"; } if (h == 1f) { text = "9 in the morning"; } if (h == 2f) { text = "10 in the morning"; } if (h == 3f) { text = "11 in the morning"; } if (h == 4f) { text = "12 in the afternoon"; } if (h == 5f) { text = "1 in the afternoon"; } if (h == 6f) { text = "2 in the afternoon"; } if (h == 7f) { text = "3 in the afternoon"; } if (h == 8f) { text = "4 in the afternoon"; } if (h == 9f) { text = "5 in the afternoon"; } if (h == 10f) { text = "6 in the evening"; } if (h == 11f) { text = "7 in the evening"; } if (h == 12f) { text = "8 in the evening"; } if (h == 13f) { text = "9 in the evening"; } if (h == 14f) { text = "10 in the evening"; } if (h == 15f) { text = "11 in the evening"; } if (h == 16f) { text = "12 at night"; } if (h == 17f) { text = "1 at night"; } if (h == 18f) { text = "2 at night"; } if (h == 19f) { text = "3 at night"; } if (h == 20f) { text = "4 at night"; } if (h == 21f) { text = "5 at night"; } return text; } // Token: 0x06000773 RID: 1907 RVA: 0x000A71D8 File Offset: 0x000A53D8 public void AddHours() { int num = 1; this.gameSeconds += 3600f * (float)num; float num2 = this.sunlightAnimator.ChangeTime(this.gameSeconds); this.gameMinutes = num2 * 1440f; this.gameSeconds = this.gameMinutes * 60f; this.gameHours = this.gameMinutes / 60f; if (this.gameHours >= 24f) { this.gameHours = 0f; this.SetNewDay(); } if (Records.x.editor) { Debug.Log("Hour is " + this.GetCurrentGameTimeHours().ToString()); } this.NewHourMessages(true); } // Token: 0x06000774 RID: 1908 RVA: 0x000A7290 File Offset: 0x000A5490 public void NewHourMessages(bool timeJump) { this.GetTimeOfDay(); Records.x.CheckHourForQuestTimers(); Records.x.CheckHourForStunnedBadges(); Links.x.diorama.ChangeTimeOfDay(true, timeJump); Links.x.ChangeTimeOfDay(); this.UpdateTimeText(); Links.x.diorama.CheckQuestActivations(); Links.x.inventory.NewHour(); Links.x.hudControl.UpdateStunHours(); Links.x.hudControl.UpdateBribeHours(); if (timeJump) { Links.x.diorama.TimeJump(); } } // Token: 0x06000775 RID: 1909 RVA: 0x000A7326 File Offset: 0x000A5526 public int GetCurrentGameTime() { return 0 + this.gameDays * 24 * 60 * 60 + (int)Mathf.Floor(this.gameMinutes); } // Token: 0x06000776 RID: 1910 RVA: 0x000A7346 File Offset: 0x000A5546 public float Seconds() { return 0f + (float)this.gameDays * 24f * 60f * 60f + Mathf.Floor(this.gameSeconds); } // Token: 0x06000777 RID: 1911 RVA: 0x000A7373 File Offset: 0x000A5573 public int GetCurrentGameTimeHours() { return 0 + this.gameDays * 24 + (int)Mathf.Floor(this.gameHours); } // Token: 0x06000778 RID: 1912 RVA: 0x000A7390 File Offset: 0x000A5590 public void SelectRallyCharacter(Character c) { Links.x.combat.pickingRally = true; Links.x.main.portrait.AnimatorSynergy(); c.portrait.AnimatorSynergy(); MasterAudio.PlaySoundAndForget("Synergy", 1f, new float?(1f), 0f, "", null); Shader.SetGlobalFloat("_Combat", 2f); Links.x.combat.rallyCharacter = c; this.SetDomeSize(); Links.x.combat.UpdateRallyVisuals(); if (this.joy) { this.GetControllerTarget(false); } Links.x.pocketWheel.Select("Light Attack"); if (Links.x.mk) { Links.x.pocketWheel.Close(false); } } // Token: 0x06000779 RID: 1913 RVA: 0x000A746C File Offset: 0x000A566C public void GetControllerTarget(bool first) { bool flag = false; if (Links.x.pocketWheel.selected == "Special Attack 1" && Links.x.pocketWheel.canTarget) { flag = true; } if (!flag && (Links.x.main.inAction || Links.x.main.inRecovery || Links.x.main.inQueuedAbility || !Links.x.main.CanAttack() || (Links.x.pocketWheel.selected == "Special Attack 1" && !Links.x.pocketWheel.canTarget))) { this.domeEnemy = null; this.domeParty = null; this.domeBreakable = null; this.domeChest = null; this.domePuzzle = null; this.domeDoor = null; return; } if ((!flag && !Links.x.main.CanAttack()) || (!(Links.x.pocketWheel.selected == "Light Attack") && !(Links.x.pocketWheel.selected == "Medium Attack") && !(Links.x.pocketWheel.selected == "Heavy Attack") && (!(Links.x.pocketWheel.selected == "Special Attack 1") || !Links.x.pocketWheel.canTarget) && !Links.x.pocketWheel.Charming() && (!(Links.x.pocketWheel.selected == "Spellbag") || (!this.spellTargetingParty && !this.spellTargetingEnemy)))) { this.domeEnemy = null; this.domeParty = null; this.domeBreakable = null; this.domeChest = null; this.domePuzzle = null; this.domeDoor = null; return; } Links.x.combat.GetJoystickTarget(out this.domeEnemy, out this.domeParty, out this.domeBreakable, out this.domeChest, out this.domeDoor, out this.domePuzzle, new Vector2(0f, 0f), first); if ((flag || Links.x.pocketWheel.targetSelection) && (this.domeEnemy || this.domeParty || this.domeBreakable || this.domeChest || this.domeDoor) && !this.joystickTarget.activeSelf) { this.joystickTarget.SetActive(true); } this.SetJoystickTargetPosition(); } // Token: 0x0600077A RID: 1914 RVA: 0x000A7708 File Offset: 0x000A5908 public void SetJoystickTargetActive() { bool flag = false; if (Links.x.pocketWheel.selected == "Special Attack 1" && Links.x.pocketWheel.canTarget) { flag = true; } if ((flag || Links.x.pocketWheel.targetSelection) && (this.domeEnemy || this.domeParty || this.domeBreakable || this.domeChest || this.domeDoor) && !this.joystickTarget.activeSelf) { this.joystickTarget.SetActive(true); } this.SetJoystickTargetPosition(); } // Token: 0x0600077B RID: 1915 RVA: 0x000A77BC File Offset: 0x000A59BC private void SetJoystickTargetPosition() { if (this.joystickTarget.activeSelf && Links.x.pocketWheel.targetSelection) { Vector3 vector = Vector3.zero; GameObject gameObject = null; float num = 0f; if (!Links.x.worldCamera.orthographic) { num = -1f; } if (this.domeEnemy) { gameObject = this.domeEnemy.body.bracket; vector = this.domeEnemy.body.GetNeck().position + new Vector3(0f, 2.1f, 0f); Links.x.rtsCamera.joyTarget = this.domeEnemy.gameObject; if (Links.x.gameCard.hoverCharacter == this.domeEnemy && Links.x.gameCard.controlsText.text != "") { num += 0.5f; } } if (this.domeParty) { gameObject = this.domeParty.body.bracket; vector = this.domeParty.body.GetNeck().position + new Vector3(0f, 2.1f, 0f); Links.x.rtsCamera.joyTarget = this.domeParty.gameObject; if (Links.x.gameCard.hoverCharacter == this.domeEnemy && Links.x.gameCard.controlsText.text != "") { num += 0.5f; } } if (this.domeDoor) { gameObject = this.domeDoor.bracket; vector = this.domeDoor.lockColliderPosition + new Vector3(0f, 0.5f, 0f); Links.x.rtsCamera.joyTarget = this.domeDoor.gameObject; if (Links.x.itemCard.hoverDoor == this.domeDoor && Links.x.gameCard.controlsText.text != "") { num += 0.5f; } } if (this.domeChest) { gameObject = this.domeChest.bracket; vector = this.domeChest.transform.position + new Vector3(0f, 1.5f, 0f); Links.x.rtsCamera.joyTarget = this.domeChest.gameObject; if (Links.x.itemCard.hoverChest == this.domeChest && Links.x.gameCard.controlsText.text != "") { num += 0.5f; } } if (this.domeBreakable) { gameObject = this.domeBreakable.bracket; vector = this.domeBreakable.transform.position + new Vector3(0f, 1.5f, 0f); Links.x.rtsCamera.joyTarget = this.domeBreakable.gameObject; if (Links.x.itemCard.hoverBreakable == this.domeBreakable && Links.x.gameCard.controlsText.text != "") { num += 0.5f; } } if (this.domePuzzle) { gameObject = this.domePuzzle.bracket; vector = this.domePuzzle.transform.position + new Vector3(0f, 1.5f, 0f); Links.x.rtsCamera.joyTarget = this.domePuzzle.gameObject; if (Links.x.itemCard.hoverPuzzle == this.domePuzzle && Links.x.gameCard.controlsText.text != "") { num += 0.5f; } } if (gameObject) { vector = Vector3.Lerp(gameObject.transform.GetChild(0).transform.position, gameObject.transform.GetChild(1).transform.position, 0.5f); } this.SetPositionAtWorldPoint(vector + new Vector3(0f, 1.5f + num, 0f), this.joystickTargetRT); } } // Token: 0x0600077C RID: 1916 RVA: 0x000A7C60 File Offset: 0x000A5E60 public void PocketPause(bool state) { if (!state && (Links.x.combat.inPocketAttack || Links.x.combat.inRally)) { return; } if (state && Records.x.miniGame) { return; } if (!state) { this.domeEnemy = null; this.domeParty = null; if (Records.x.pocketPause) { MasterAudio.PlaySoundAndForget("Remove Pause", 1f, new float?(1f), 0f, "", null); } if (Links.x.joy) { Links.x.rtsCamera.Zoom(false, "TargetSelect"); Links.x.rtsCamera.targetSelecting = false; } Records.x.pocketPause = false; Links.x.hudControl.RemoveAllHighlights(); Links.x.cameraEffects.combatTime = 0f; this.updateGameTime = Time.timeSinceLevelLoad + this.pausedTime; Links.x.rtsCamera.joyTarget = null; Links.x.attackDome.SetActive(false); if (!Records.x.InCombat(false)) { if (!Links.x.combat.attackingInteractiveOutsideOfCombat) { Links.x.hudControl.ToggleAttackTimer(false); } else { Links.x.hudControl.ToggleAttackTimer(true); } } Links.x.main.body.lookAtController.EndLook(); this.doLookAt = false; Links.x.combat.ClearPossibleTargets(); Links.x.cameraEffects.EndPocket(); Links.x.rtsCamera.Zoom(false, "Combat"); Links.x.partyColliderAdventure.gameObject.transform.localScale = new Vector3(1f, 1f, 1f); Links.x.partyColliderAdventure.UpdatePocket(); this.joystickTarget.SetActive(false); foreach (Character character in this.party) { if (!character.mainSelected) { character.body.SeeThroughColliders(false); } if (character.portrait) { character.portrait.skillBag.UpdateAbilityTriggers(); character.portrait.SetActionBar(character.attackTime); character.portrait.skillBag.SetSelectedState(); } character.body.CombatSheen(0); } this.SetDomeSize(); Shader.SetGlobalFloat("_Combat", 0f); Links.x.main.body.CombatSheen(0); if (Links.x.combat.inRally || Links.x.combat.pickingRally) { Links.x.main.portrait.AnimatorSynergyDone(); if (Links.x.combat.rallyCharacter) { Links.x.combat.rallyCharacter.portrait.AnimatorSynergyDone(); } } Links.x.combat.pickingRally = false; Links.x.combat.inRally = false; Links.x.combat.rallyCharacter = null; if (!Records.x.InCombat(false)) { Links.x.combat.pocketTarget = null; } Links.x.attackDomeMinimum.SetActive(false); Links.x.main.animator.SetFloat("Combat Variation", 1f); Links.x.pocketWheel.Close(false); Links.x.main.portrait.SetActionBar(Links.x.main.attackTime); if (!Records.x.InCombat(false)) { Links.x.combat.ClearPossibleTargets(); Links.x.main.inAction = false; Links.x.main.inRecovery = false; } Links.x.partyColliderAdventure.PocketEnd(); Shader.SetGlobalFloat("_AttackTime", 1f); Links.x.sensory.SetUpPocketPause(); if (Links.x.main.timelineIcon) { Links.x.main.timelineIcon.overridePause = false; } Links.x.main.NeedToUpdateSailingAnimator(false); } else if (state) { Links.x.hudControl.ToggleAttackTimer(true); Shader.SetGlobalFloat("_NoCharacterFX", 0f); float num = Links.x.main.attackTime; if (!Links.x.main.CanAttack()) { num = 0f; } if (Links.x.combat.bubbleEvent) { num = 1f; } Shader.SetGlobalFloat("_AttackTime", num); if (this.descWindowOpen) { Links.x.hudControl.CloseDescWindow(); } Links.x.combat.rallyCharacter = null; Links.x.partyColliderAdventure.gameObject.transform.localScale = Vector3.zero; if (!Records.x.pocketPause) { MasterAudio.PlaySoundAndForget("Pause", 1f, new float?(1f), 0f, "", null); } Records.x.pocketPause = true; Links.x.hudControl.RemoveAllHighlights(); Links.x.cameraEffects.combatTime = 0f; this.doLookAt = false; this.pausedTime = Time.timeSinceLevelLoad - this.updateGameTime; if ((!Links.x.combat.miniEvent || Links.x.combat.bubbleEvent) && !Links.x.combat.inPocketAttack && !Records.x.removeControls) { Links.x.attackDome.SetActive(true); } else { Links.x.attackDome.SetActive(false); } this.SetDomeSize(); Links.x.main.EndTurning(true); Links.x.main.currentTargetIndex = -1; if (this.joy) { this.joystickTargetIcon.text = ""; } Links.x.combat.GetTargets(true, false, null); if (!Links.x.combat.miniEvent && this.joy) { this.GetControllerTarget(true); } foreach (Character character2 in this.party) { if (!this.spellTargetingParty && !Links.x.combat.CharacterHasSynergy(character2)) { character2.body.SeeThroughColliders(false); } else { character2.body.SeeThroughColliders(true); } if (character2.portrait) { character2.portrait.SetActionBar(character2.attackTime); character2.portrait.skillBag.UpdateAbilityTriggers(); character2.portrait.skillBag.SetSelectedState(); } } if (this.character && this.joy && Links.x.pocketWheel.targetSelection && !Links.x.combat.miniEvent && (this.domeEnemy || this.domeParty)) { this.joystickTarget.SetActive(true); if (this.domeEnemy) { this.SetPositionAtWorldPoint(this.domeEnemy.body.GetNeck().position + new Vector3(0f, 2.1f, 0f), this.joystickTargetRT); } else { this.SetPositionAtWorldPoint(this.domeParty.body.GetNeck().position + new Vector3(0f, 2.1f, 0f), this.joystickTargetRT); } } if (!Links.x.combat.miniEvent) { Links.x.partyColliderAdventure.UpdatePocket(); Links.x.partyColliderAdventure.PocketStart(); Shader.SetGlobalFloat("_Combat", 1f); Links.x.main.body.CombatSheen(1); Links.x.main.animator.SetBool("Combat", true); Links.x.main.animator.SetFloat("Combat Variation", 0f); } if (Links.x.main.moving) { Links.x.main.TargetReached(); } if (Links.x.main.CanAttack() && !Links.x.combat.miniEvent) { Links.x.pocketWheel.Open(Links.x.main); } Links.x.main.portrait.SetActionBar(Links.x.main.attackTime); if (this.gameFeedScrolling) { this.gameFeedScrolling = false; } if (this.badgeScrolling) { this.badgeScrolling = false; Links.x.hudControl.RemoveBadgeNavigation(); } if (!Links.x.domeAnimator.GetCurrentAnimatorStateInfo(0).IsName("DomeLoop")) { Links.x.domeAnimator.Play("DomeStart"); Links.x.domeAnimator.Update(0f); } Links.x.main.NeedToUpdateSailingAnimator(false); } Links.x.sensory.SetUpPocketPause(); } // Token: 0x0600077D RID: 1917 RVA: 0x000A865C File Offset: 0x000A685C public void SetDomeSize() { if (!Links.x.hasMain) { return; } if (Records.x.removeControls && !Links.x.combat.bubbleEvent) { return; } if (this.spellTargetingGround || this.spellTargetingParty || this.spellTargetingEnemy || Links.x.pocketWheel.Charming()) { float num = Links.x.main.stats.SpellRadius(this.spellPaganRow); Links.x.attackDome.transform.localScale = new Vector3(num, num, num); Links.x.partyColliderCombat.SetRadius(num); Shader.SetGlobalFloat("_BubbleSize", num); if (Links.x.main) { Shader.SetGlobalVector("_BubblePosition", Links.x.main.tr.position + new Vector3(0f, 3f, 0f)); if (Records.x.pocketPause) { Links.x.attackDome.transform.position = Links.x.main.tr.position; } } Links.x.attackDomeMinimum.SetActive(false); Links.x.attackDome.transform.position = Links.x.main.tr.position; } else if (Links.x.combat.bubbleEvent) { float num2 = Links.x.combat.bubbleEventTarget.AttackRange(); Vector3 currentPosition = Links.x.combat.bubbleEventTarget.currentPosition; Links.x.attackDome.transform.localScale = new Vector3(num2, num2, num2); Shader.SetGlobalFloat("_BubbleSize", num2); Shader.SetGlobalVector("_BubblePosition", currentPosition + new Vector3(0f, 3f, 0f)); Links.x.attackDome.transform.position = currentPosition; Links.x.attackDomeMinimum.SetActive(false); } else if (Links.x.pocketWheel.selected.Contains("Medium Attack")) { float num3 = 3.5f; Links.x.attackDome.transform.localScale = new Vector3(num3, num3, num3); Links.x.partyColliderCombat.SetRadius(num3); Shader.SetGlobalFloat("_BubbleSize", num3); if (Links.x.main) { Shader.SetGlobalVector("_BubblePosition", Links.x.main.tr.position + new Vector3(0f, 3f, 0f)); if (Records.x.pocketPause) { Links.x.attackDome.transform.position = Links.x.main.tr.position; } } Links.x.attackDomeMinimum.SetActive(false); Links.x.attackDome.transform.position = Links.x.main.tr.position; } else if (Links.x.pocketWheel.selected.Contains("Heavy Attack")) { float num4 = 7f; Links.x.attackDome.transform.localScale = new Vector3(num4, num4, num4); Links.x.partyColliderCombat.SetRadius(num4); Shader.SetGlobalFloat("_BubbleSize", num4); if (Links.x.main) { Shader.SetGlobalVector("_BubblePosition", Links.x.main.tr.position + new Vector3(0f, 3f, 0f)); if (Records.x.pocketPause) { Links.x.attackDome.transform.position = Links.x.main.tr.position; } } Links.x.attackDomeMinimum.SetActive(false); Links.x.attackDome.transform.position = Links.x.main.tr.position; } else if (Links.x.combat.pickingRally) { float num5 = Links.x.combat.rallyCharacter.AttackRange() + Links.x.main.AttackRange(); if (Links.x.main.stats.race == "Varuchov" && Links.x.combat.rallyCharacter.stats.race == "Varuchov") { num5 = 50f; } Links.x.attackDome.transform.localScale = new Vector3(num5, num5, num5); Links.x.partyColliderCombat.SetRadius(num5); Shader.SetGlobalFloat("_BubbleSize", num5); if (Records.x.pocketPause) { Vector3 vector = Vector3.Lerp(Links.x.combat.rallyCharacter.tr.position, Links.x.main.tr.position, 0.5f); if ((Links.x.main.stats.race == "Varuchov" || Links.x.combat.rallyCharacter.stats.race == "Varuchov") && (!(Links.x.main.stats.race == "Varuchov") || !(Links.x.combat.rallyCharacter.stats.race == "Varuchov"))) { if (Links.x.main.stats.race == "Varuchov") { if (Vector3.Distance(vector, Links.x.main.tr.position) > num5) { vector = Links.x.combat.rallyCharacter.tr.position; } } else if (Vector3.Distance(Links.x.combat.rallyCharacter.tr.position, vector) > num5) { vector = Links.x.main.tr.position; } } Links.x.attackDome.transform.position = vector; Shader.SetGlobalVector("_BubblePosition", vector + new Vector3(0f, 3f, 0f)); Links.x.attackDomeMinimum.SetActive(false); } } else { Character character = Links.x.main; if (Links.x.pocketWheel.rallyWheelOpen && Links.x.pocketWheel.selectedRallyCharacter) { character = Links.x.pocketWheel.selectedRallyCharacter; } Links.x.attackDome.transform.localScale = new Vector3(character.AttackRange(), character.AttackRange(), character.AttackRange()); Links.x.partyColliderCombat.SetRadius(character.AttackRange()); Shader.SetGlobalFloat("_BubbleSize", character.AttackRange()); if (character.tr) { Shader.SetGlobalVector("_BubblePosition", character.tr.position + new Vector3(0f, 3f, 0f)); } if (Records.x.pocketPause) { Links.x.attackDome.transform.position = character.tr.position; } float num6 = character.invRow1._MeleeRangeStart * Records.x.nodeSize; if (num6 > 0f && !Links.x.combat.miniEvent) { num6 += character.attackRadius; num6 += Records.x.nodeSize / 2f; num6 *= 2f; if (Records.x.pocketPause) { Links.x.attackDomeMinimum.SetActive(true); } Links.x.attackDomeMinimum.transform.localScale = new Vector3(num6, num6, num6); Links.x.attackDomeMinimum.transform.position = Links.x.attackDome.transform.position; } else { Links.x.attackDomeMinimum.SetActive(false); } Links.x.attackDome.transform.position = character.tr.position; } this.SetAdventureDomeSize(); } // Token: 0x0600077E RID: 1918 RVA: 0x000A8F4C File Offset: 0x000A714C public void SetAdventureDomeSize() { if (Links.x.main) { if (Links.x.mk) { if (Links.x.main.sailing) { Links.x.partyColliderAdventure.SetRadius(8f); return; } Links.x.partyColliderAdventure.SetRadius(4f); return; } else { if (Links.x.main.sailing) { Links.x.partyColliderAdventure.SetRadius(8f); return; } Links.x.partyColliderAdventure.SetRadius(4f); } } } // Token: 0x0600077F RID: 1919 RVA: 0x000A8FF0 File Offset: 0x000A71F0 public void SetPartyColliders(bool state) { foreach (Character character in this.party) { character.body.SeeThroughColliders(state); } } // Token: 0x06000780 RID: 1920 RVA: 0x000A9048 File Offset: 0x000A7248 public void CallBoro() { if (Links.x.gaia.boro) { if (!Records.x.InCombat(false)) { bool flag = true; Character character = Links.x.main; if (!Links.x.gaia.boroControls.boroInvisible) { for (int i = 0; i < this.party.Count; i++) { if (this.party[i] && flag && this.party[i].mainSelected && !this.party[i].summoned && !this.party[i].isBoro && (this.party[i].tr.position - Links.x.gaia.boro.tr.position).sqrMagnitude < 100f) { flag = false; } } } bool flag2 = true; if (Links.x.main.node.GraphIndex == 1U && flag) { flag2 = false; for (int j = 0; j < this.party.Count; j++) { if (this.party[j] && flag && !flag2 && this.party[j].mainSelected && !this.party[j].summoned && !this.party[j].isBoro && this.party[j].node.GraphIndex == 0U) { flag2 = true; character = this.party[j]; } } } if (flag && flag2) { Links.x.gaia.boroControls.Call(character); return; } if (flag2) { string text = Records.x.boroName + " is already nearby"; Links.x.gameFeed.AddFeed(text); return; } string text2 = "Cannot call " + Records.x.boroName + " from here"; Links.x.gameFeed.AddFeed(text2); if (!Links.x.gameFeed.isOn) { Links.x.gameFeed.ShowNotice(text2); return; } } else { string text3 = "Cannot call " + Records.x.boroName + " right now"; Links.x.gameFeed.AddFeed(text3); if (!Links.x.gameFeed.isOn) { Links.x.gameFeed.ShowNotice(text3); return; } } } else { string text4 = Records.x.boroName + " is is too far away"; Links.x.gameFeed.AddFeed(text4); if (!Links.x.gameFeed.isOn) { Links.x.gameFeed.ShowNotice(text4); } } } // Token: 0x06000781 RID: 1921 RVA: 0x000A9344 File Offset: 0x000A7544 public void ToggleSlowTimeMode(bool state) { if (Records.x.inMenus || Records.x.removeControls || Records.x.paused || !Links.x.gaia.sceneLoaded || Records.x.typing || Records.x.dialogue || Records.x.mainCharacterDead) { state = false; } if (state && !Records.x.slowTimeMode) { Links.x.cameraEffects.PlayAnimation("CameraSlowStart"); } if (!state && Records.x.slowTimeMode) { Links.x.cameraEffects.PlayAnimation("CameraSlowEnd"); } Records.x.slowTimeMode = state; } // Token: 0x06000782 RID: 1922 RVA: 0x000A9400 File Offset: 0x000A7600 public void OpenDock() { if (!Records.x.inMenus) { if (Links.x.hudControl.descriptionWindowOpen) { Links.x.hudControl.CloseDescWindow(); } Links.x.hudControl.ChangeHudVisibility(false, true); Records.x.inMenus = true; this.ToggleSlowTimeMode(false); Links.x.hudControl.ToggleBothCanvasGroup(false); Links.x.hudControl.SetModalWindowState(false, true); if (this.prevGameCardCharacter) { Links.x.gameCard.EndHover(this.prevGameCardCharacter, false); this.prevGameCardCharacter.body.Hover(false, true); this.prevGameCardCharacter = null; this.character = null; this.gameCardCharacter = null; } if (Links.x.gameCard.hoverCharacter) { Links.x.gameCard.EndHover(Links.x.gameCard.hoverCharacter, false); } if (this.prevItem) { Links.x.inventory.groundBag.RemoveLabels(); this.prevItem.HoverOut(); Links.x.inventory.groundBag.SetCollectorUpdate(); Links.x.itemCard.EndHover(this.prevItem, null, null, null, null, false); this.prevItem = null; this.item = null; } if (this.prevBreakable) { this.prevBreakable.HoverOut(); this.prevBreakable = null; this.breakable = null; } Links.x.hudControl.ToggleMenus(); this.ToggleControllerGlows(); Links.x.dialogue.ToggleTimeScale(); Links.x.cameraEffects.ToggleObscurance(); Links.x.hudControl.cinematicQuips.alpha = 0f; } this.openingAnotherMenu = false; } // Token: 0x06000783 RID: 1923 RVA: 0x000A95E0 File Offset: 0x000A77E0 public void CloseDock() { if (!this.openingAnotherMenu && Records.x.inMenus) { Links.x.hudControl.ChangeHudVisibility(true, true); if (this.prevDockButton) { this.prevDockButton.canInteract = true; this.prevDockButton.OnPointerExit(null); } this.prevDockButton = null; this.dockOpen = false; this.uiHover = false; if (!Links.x.creation) { Links.x.hudControl.SetModalWindowState(true, true); Links.x.hudControl.ToggleBothCanvasGroup(true); Records.x.SetTypingState(false); } Records.x.inMenus = false; Links.x.hudControl.CloseMenuSwitcher(); Links.x.hudControl.ToggleMenus(); Links.x.dialogue.ToggleTimeScale(); Links.x.cameraEffects.ToggleObscurance(); Links.x.hudControl.cinematicQuips.alpha = 1f; } this.openingAnotherMenu = false; } // Token: 0x06000784 RID: 1924 RVA: 0x000A96F8 File Offset: 0x000A78F8 public void StartHoverTimer(Item item) { if (Records.x.inMenus) { return; } if (Links.x.joy) { return; } if (Records.x.filming) { return; } Links.x.inventory.groundBag.AddPopItem(item); if (this.routine != null) { base.StopCoroutine(this.routine); this.routine = null; } this.routine = this.TimedShow(); base.StartCoroutine(this.routine); } // Token: 0x06000785 RID: 1925 RVA: 0x000A9775 File Offset: 0x000A7975 private IEnumerator TimedShow() { bool waitedForCombat = false; while (Records.x.InCombat(false)) { waitedForCombat = true; yield return null; } if (waitedForCombat) { yield return new WaitForSeconds(4f); } Links.x.inventory.groundBag.timerItems = true; this.timerHoverItem = this.item; Links.x.inventory.groundBag.CheckGroundAndClicks(true); float num = 4f; yield return new WaitForSeconds(num); Links.x.inventory.groundBag.timerItems = false; yield return new WaitForSeconds(1f); Links.x.inventory.groundBag.RemovePopItems(); this.routine = null; yield break; } // Token: 0x06000786 RID: 1926 RVA: 0x000A9784 File Offset: 0x000A7984 public void ToggleAIFromButton() { } // Token: 0x06000787 RID: 1927 RVA: 0x000A9786 File Offset: 0x000A7986 public void TogglePartyWait() { if (Records.x.partyWait) { Records.x.partyWait = false; return; } Records.x.partyWait = true; Links.x.fellowship.SetWaitPositions(); } // Token: 0x06000788 RID: 1928 RVA: 0x000A97BA File Offset: 0x000A79BA public void TogglePauseFromButton() { if (Records.x.paused) { this.TogglePause(false); return; } this.TogglePause(true); } // Token: 0x06000789 RID: 1929 RVA: 0x000A97D8 File Offset: 0x000A79D8 public void TogglePause(bool state) { if (!Links.x.sensory) { return; } if (Records.x.inMenus) { state = true; } if (Records.x.dialogue) { state = false; } if (Links.x.creation) { state = false; } if (Records.x.filming) { state = false; } if (Records.x.paused != state) { Records.x.paused = state; Links.x.dialogue.ToggleTimeScale(); Links.x.sensory.SetUpPause(); if (Records.x.paused) { MasterAudio.PauseSoundGroup("Instruments"); this.pausedTime = Time.timeSinceLevelLoad - this.updateGameTime; Time.timeScale = 0f; if (Records.x.InCombat(false)) { Links.x.combat.GetTargets(false, false, null); return; } } else { Links.x.combat.ClearPossibleTargets(); MasterAudio.UnpauseSoundGroup("Instruments"); this.updateGameTime = Time.timeSinceLevelLoad + this.pausedTime; Time.timeScale = 1f; } return; } } // Token: 0x0600078A RID: 1930 RVA: 0x000A98FC File Offset: 0x000A7AFC public void ToggleAI() { if (Records.x.ai == 1) { Records.x.ai = 0; Links.x.gameFeed.AddFeed("The party will wait for actions"); return; } Records.x.ai = 1; Links.x.gameFeed.AddFeed("The party will automatically attack"); } // Token: 0x0600078B RID: 1931 RVA: 0x000A9958 File Offset: 0x000A7B58 public void RemoveAbilityInfo() { if (this.charming) { this.charming = false; } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.EndControllerTargeting(); Links.x.gameplay.SetDomeSize(); if (this.actionCharacter) { if (this.actionCharacter.actions) { this.actionCharacter.actions.RemoveAbility(); } this.actionCharacter.portrait.skillBag.RemoveSelectedButton(); this.actionCharacter.portrait.skillBag.selectedSkillButton = null; if (Links.x.combat.preDome && this.combatStartedWithSkill) { this.combatStartedWithSkill = false; Links.x.combat.EndCombat(false); } } this.EndControllerTargeting(); } // Token: 0x0600078C RID: 1932 RVA: 0x000A9A44 File Offset: 0x000A7C44 public void ClearEffectTiles(bool includeFarTile, Character characterToRemoveWaypoint, bool allCharacterWaypoints) { for (int i = 0; i < this.effectTiles.Count; i++) { Links.x.cellar.ReturnPooledGameObject(11, this.effectTiles[i]); } this.effectTiles.Clear(); if (allCharacterWaypoints) { for (int j = 0; j < this.effectTileWaypoints.Count; j++) { if (this.effectTileWaypoints[j].activeSelf) { this.effectTileWaypoints[j].SetActive(false); } } } if (!allCharacterWaypoints && characterToRemoveWaypoint) { this.ClearWaypointEffect(characterToRemoveWaypoint); } if (includeFarTile && this.effectTileTooFar.activeSelf) { this.effectTileTooFar.SetActive(false); } this.foundGroupTime = 0f; if (this.messageDefenseHoldMK.activeSelf) { this.messageDefenseHoldMK.SetActive(false); } if (this.messageDefenseHoldJoy.activeSelf) { this.messageDefenseHoldJoy.SetActive(false); } } // Token: 0x0600078D RID: 1933 RVA: 0x000A9B38 File Offset: 0x000A7D38 public void ClearWaypointEffect(Character character) { int portraitOrder = Links.x.GetPortraitOrder(character); if (this.effectTileWaypoints[portraitOrder].activeSelf) { this.effectTileWaypoints[portraitOrder].SetActive(false); } } // Token: 0x0600078E RID: 1934 RVA: 0x000A9B76 File Offset: 0x000A7D76 public void EndCombatTurn() { Links.x.combat.EndTurn(true, Links.x.protagonist, true); } // Token: 0x0600078F RID: 1935 RVA: 0x000A9B94 File Offset: 0x000A7D94 public void CheckTileEffects(Character source, GraphNode n, bool reRollAgainst) { if (n != null) { int count = this.currentTileEffects.Count; for (int i = 0; i < count; i++) { if ((this.currentTileEffects[i].mainPosition - source.tr.position).sqrMagnitude < 2500f) { this.currentTileEffects[i].CheckTile(n, source, reRollAgainst); } } } } // Token: 0x06000790 RID: 1936 RVA: 0x000A9C04 File Offset: 0x000A7E04 public void ClearSelectedActionTargets(Character character) { if (this.actionCharacter && this.actionCharacter.hasActions) { this.actionCharacter.actions.ClearSelectedActionRealTime(); } if (character.hasActions && !character.actions.cannotInterrupt) { character.actions.ClearSelectedActionRealTime(); if (!Records.x.combat) { character.actions.EndActions(); } } } // Token: 0x06000791 RID: 1937 RVA: 0x000A9C74 File Offset: 0x000A7E74 public void NewPaths() { for (int i = 0; i < this.party.Count; i++) { if (this.party[i]) { this.party[i].pathTries = 0; this.party[i].attackRadiusTries = 0; } } } // Token: 0x06000792 RID: 1938 RVA: 0x000A9CD0 File Offset: 0x000A7ED0 public bool ClickingOnInteractable() { return ((Input.GetMouseButtonDown(0) || Input.GetMouseButtonUp(0)) && (this.character || this.item || this.exit || this.breakable || this.chest || this.door || this.puzzle || this.boat)) || this.waitingForClickUpOnCharacter; } // Token: 0x06000793 RID: 1939 RVA: 0x000A9D64 File Offset: 0x000A7F64 public bool CanClick() { return Links.x.hasMain && (!this.mk || !Records.x.movingWindows) && (Records.x.removeControls || !Links.x.mk || true); } // Token: 0x06000794 RID: 1940 RVA: 0x000A9DB6 File Offset: 0x000A7FB6 public void TurnOffHoverTiles() { } // Token: 0x06000795 RID: 1941 RVA: 0x000A9DB8 File Offset: 0x000A7FB8 public void FollowCharacterPathFinished(Character followTarget, Character party) { bool flag = true; if (followTarget.hostility == 2 || followTarget.attackingUntilBribe) { flag = false; } if (flag) { this.StartDialogue(followTarget, party, null, null, followTarget.stats.dialogueFile); return; } if (party.hasActions) { party.actions.AddTarget(followTarget); party.actions.QueueIcon(true); party.actions.readyToAttack = true; party.actions.AddTarget(followTarget); party.actions.StartAction("Attack"); } } // Token: 0x06000796 RID: 1942 RVA: 0x000A9E3B File Offset: 0x000A803B public void StartDialogue(Character mainSpeaker, Character responder, Character mainSpeaker2, Character mainSpeaker3, string dialogueFile) { Links.x.dialogue.npc1 = mainSpeaker; Links.x.dialogue.party = responder; Links.x.dialogue.SetupConversation(dialogueFile, mainSpeaker, mainSpeaker2, mainSpeaker3, responder); } // Token: 0x06000797 RID: 1943 RVA: 0x000A9E74 File Offset: 0x000A8074 public void BreakableFinished(BreakableActions currentBreakable, Character breaker) { currentBreakable.ClickToBreak(breaker, false, true); if (this.spellcasting || this.throwingElixir) { Links.x.main.actions.RemoveAbility(); } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.EndControllerTargeting(); } // Token: 0x06000798 RID: 1944 RVA: 0x000A9EE0 File Offset: 0x000A80E0 public void DoorFinished(DoorActions currentDoor, Character party) { currentDoor.ClickToOpen(party, false); if (this.spellcasting || this.throwingElixir) { Links.x.main.actions.RemoveAbility(); } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.EndControllerTargeting(); } // Token: 0x06000799 RID: 1945 RVA: 0x000A9F4C File Offset: 0x000A814C public void ChestFinished(ChestActions currentChest, Character party) { currentChest.ClickToOpen(party, false); if (this.spellcasting || this.throwingElixir) { Links.x.main.actions.RemoveAbility(); } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.EndControllerTargeting(); } // Token: 0x0600079A RID: 1946 RVA: 0x000A9FB8 File Offset: 0x000A81B8 public void PuzzleFinished(PuzzleActions currentPuzzle, Character party) { currentPuzzle.Clicked(party); if (this.spellcasting || this.throwingElixir) { Links.x.main.actions.RemoveAbility(); } this.spellcasting = false; this.throwingElixir = false; if (this.spellTargetingGround) { this.ClearEffectTiles(true, this.actionCharacter, false); } this.RemoveSpellTargets(); this.EndControllerTargeting(); } // Token: 0x0600079B RID: 1947 RVA: 0x000AA020 File Offset: 0x000A8220 public void BoatFollowFinished(Boat currentBoat) { currentBoat.OpenBag(); } // Token: 0x0600079C RID: 1948 RVA: 0x000AA028 File Offset: 0x000A8228 public void MapExitFinished(MapExitActions moveToExit, Character c, bool fromTestMenu) { if (!Links.x.gaia.sceneLoaded) { return; } if (!Links.x.gaia.pathfindingReady) { return; } bool flag = true; if (moveToExit) { if (moveToExit.sceneTo != "Interiors" && moveToExit.sceneTo != "Exterior" && Records.x.partyWait) { for (int i = 0; i < this.party.Count; i++) { if (this.party[i] && !this.party[i].isBoro) { Vector3 doorPoint = moveToExit.mapExit.doorPoint; doorPoint.y = this.party[i].tr.position.y; if ((this.party[i].tr.position - doorPoint).sqrMagnitude > 2500f) { flag = false; } } } } if (!flag) { Links.x.gameFeed.ShowNotice("Cannot leave area while separated"); } if (flag || fromTestMenu) { string sceneTo = moveToExit.sceneTo; if (sceneTo == "OverworldMap") { Links.x.mapConfirm.currentExit = moveToExit; Links.x.mapConfirm.StartMenu(); return; } if (sceneTo == "Interiors") { Links.x.gaia.Teleport(c, sceneTo, moveToExit.mapExit.interiorConnection, moveToExit.mapExit.exteriorConnection, true, moveToExit.mapExit); return; } if (sceneTo == "Exterior") { Links.x.gaia.Teleport(c, sceneTo, moveToExit.mapExit.interiorConnection, moveToExit.mapExit.exteriorConnection, false, moveToExit.mapExit); return; } for (int j = 0; j < this.party.Count; j++) { this.party[j].ClearMoveTargets(); } if (!fromTestMenu) { Links.x.combat.SaveCombatants(Links.x.main.tr.position, true); } Links.x.gaia.exitPoint = moveToExit.mapExit.doorPoint; moveToExit.mapExit.gameObject.GetComponent().Leave(); Links.x.gaia.ChangeScene(sceneTo, moveToExit.sceneFrom, moveToExit.subExit); } } } // Token: 0x0600079D RID: 1949 RVA: 0x000AA2AF File Offset: 0x000A84AF public void ItemPathFinished(Item item, Character character) { if (character.mainSelected && Records.x.pocketPause) { this.PocketPause(false); } item.Clicked(character); } // Token: 0x0600079E RID: 1950 RVA: 0x000AA2D4 File Offset: 0x000A84D4 public bool CanScatterPartyToMakePath(string type) { return !Records.x.InCombat(false) || (Records.x.InCombat(false) && (type == "Breakable" || type == "Door" || type == "Chest" || type == "Dialogue" || type == "Item")); } // Token: 0x0600079F RID: 1951 RVA: 0x000AA33F File Offset: 0x000A853F public void UpdateSelectedParty() { if (this.gatherNodesCoroutine == null) { this.ClearInteractionNodes(); } } // Token: 0x060007A0 RID: 1952 RVA: 0x000AA350 File Offset: 0x000A8550 public void SetHoverTile(int num) { for (int i = 0; i < this.hoverTilesNumbers.Count; i++) { this.hoverTilesNumbers[i].enabled = false; if (i == num) { this.hoverTilesNumbers[i].enabled = true; } } } // Token: 0x060007A1 RID: 1953 RVA: 0x000AA39C File Offset: 0x000A859C public void TurnOffHoverTile() { for (int i = 0; i < this.hoverTilesNumbers.Count; i++) { this.hoverTilesNumbers[i].enabled = false; } } // Token: 0x060007A2 RID: 1954 RVA: 0x000AA3D1 File Offset: 0x000A85D1 public void TurnOffSelectionCircle() { this.selectionCircle.SetActive(false); } // Token: 0x060007A3 RID: 1955 RVA: 0x000AA3E0 File Offset: 0x000A85E0 public void SetSelectionCircle(Character character) { if (Links.x.gameplay.selectionCircle.activeSelf) { Links.x.gameplay.selectionCircle.SetActive(true); Links.x.gameplay.selectionCircleAnimator.Play("selected", -1, 0f); } else { Links.x.gameplay.selectionCircle.SetActive(true); } this.selectionCircle.transform.position = character.tr.position; } // Token: 0x060007A4 RID: 1956 RVA: 0x000AA469 File Offset: 0x000A8669 public void SceneSwitch() { this.allCharacters = Links.x.diorama.characters; this.foundGroupTime = 0f; } // Token: 0x060007A5 RID: 1957 RVA: 0x000AA48C File Offset: 0x000A868C public void ClearInteractionNodes() { for (int i = 0; i < this.pickedInteractionNodes.Count; i++) { if (this.pickedInteractionNodes[i] != null) { this.pickedInteractionNodes[i].SetFlowerConnectionsPlanning(1, 0, 0); } } this.pickedInteractionNodes.Clear(); } // Token: 0x060007A6 RID: 1958 RVA: 0x000AA4DC File Offset: 0x000A86DC public void QuickSave() { if (!Records.x.saving) { if (Records.x.CanSave()) { Records.x.TriggerGlobalSave("QuickSave", true); return; } if (Links.x.options.gameFeedState > 0) { Links.x.gameFeed.AddFeed("Cannot save at this time"); return; } Links.x.gameFeed.ShowNotice("Cannot save at this time"); } } // Token: 0x060007A7 RID: 1959 RVA: 0x000AA550 File Offset: 0x000A8750 public Vector3 GetHoverPosition() { if (this.character) { return this.character.currentPosition; } if (this.breakable) { return this.breakable.transform.position; } if (this.door) { return this.door.lockColliderPosition; } if (this.chest) { return this.chest.gameObject.transform.position; } return Vector3.zero; } // Token: 0x060007A8 RID: 1960 RVA: 0x000AA5D5 File Offset: 0x000A87D5 private IEnumerator ArcToTarget(Vector3 targetPosition) { if (this.quickCommandAttack) { this.GroupCommandAnim("Attack", targetPosition + new Vector3(0f, 2f, 0f)); } else { targetPosition.y += 0.5f; this.GroupCommandAnim("Move", targetPosition + new Vector3(0f, 2f, 0f)); } this.arcTarget = targetPosition; Shader.SetGlobalFloat("_LineFade", 1f); int num2; for (int i = 0; i < this.party.Count; i = num2 + 1) { Character character = this.party[i]; if (!character.mainSelected && character.IsSentient()) { Vector3 startPosition = character.body.HeadPosition(-0.25f); this.trajectoryModifier = 1; this.initialVelocity = 0f; Quaternion quaternion = this.GetBearing(startPosition, this.arcTarget); if (!this.arcObject) { this.arcObject = new GameObject("Arc Object"); } this.arcObject.transform.SetParent(base.gameObject.transform); this.arcObject.transform.rotation = quaternion; LineRenderer line = null; if (this.openLineRenderers.Count > 0) { line = this.openLineRenderers[0]; this.usedLineRenderers.Add(line); this.openLineRenderers.RemoveAt(0); line.positionCount = 0; } else { GameObject gameObject = Object.Instantiate(this.lineRendererToDrawTrajectory); gameObject.transform.SetParent(base.transform); line = gameObject.GetComponent(); this.usedLineRenderers.Add(line); line.positionCount = 0; } line.gameObject.SetActive(true); float currentTime = -(1f / this.trajectoryPrecision); bool hasImpacted = false; int num = 0; int lineCount = 0; int min = 6; for (int j = 0; j < this.maximumIterations; j = num2 + 1) { if (!hasImpacted) { currentTime += 1f / this.trajectoryPrecision; Vector3 vector = startPosition + this.arcObject.transform.forward * this.initialVelocity * currentTime + 0.5f * this.gravity2 * Mathf.Pow(currentTime, 2f); if (j > min) { line.positionCount = lineCount + 1; line.SetPosition(lineCount, vector); num2 = lineCount; lineCount = num2 + 1; } if ((vector - this.arcTarget).sqrMagnitude < 0.25f) { hasImpacted = true; line.positionCount = lineCount; this.prevPos = vector; } if (num == 30) { yield return new WaitForSeconds(0.01f); num = 0; } else { num++; } } num2 = j; } this.arcObject.transform.rotation = Quaternion.identity; startPosition = default(Vector3); line = null; } num2 = i; } float startValue = 1f; float endValue = 0f; float timeToLerp = 1.5f; float percentage = 0f; float startTime = Time.time; if (!Records.x.pocketPause) { timeToLerp = 0.25f; } while (percentage < 1f) { percentage = (Time.time - startTime) / timeToLerp; float num3 = Mathf.Lerp(startValue, endValue, percentage); Shader.SetGlobalFloat("_LineFade", num3); yield return null; } this.ReturnLineRenderers(); this.arcCorout = null; yield break; } // Token: 0x060007A9 RID: 1961 RVA: 0x000AA5EC File Offset: 0x000A87EC private Quaternion GetBearing(Vector3 start, Vector3 targetPt) { this.bearing = Quaternion.Euler(Vector3.zero); Vector3 vector = targetPt - start; float num = Mathf.Sqrt(Mathf.Pow(vector.x, 2f) + Mathf.Pow(vector.z, 2f)); float num2 = -vector.y; float num3 = this.gravity * (this.gravity * Mathf.Pow(num, 2f) + 2f * num2 * Mathf.Pow(this.initialVelocity, 2f)); float num4 = Mathf.Sqrt(Mathf.Pow(this.initialVelocity, 4f) - num3); bool flag = float.IsNaN(num4); if (!flag) { float num5 = (Mathf.Pow(this.initialVelocity, 2f) + (float)this.trajectoryModifier * num4) / (this.gravity * num); float num6 = 57.29578f * Mathf.Atan(num5); this.bearing = Quaternion.LookRotation(vector); Vector3 eulerAngles = this.bearing.eulerAngles; eulerAngles.x = num6; this.bearing.eulerAngles = eulerAngles; } if (flag) { this.initialVelocity += 1f; this.GetBearing(start, targetPt); } return this.bearing; } // Token: 0x060007AA RID: 1962 RVA: 0x000AA720 File Offset: 0x000A8920 private void ReturnLineRenderers() { for (int i = 0; i < this.usedLineRenderers.Count; i++) { this.usedLineRenderers[i].positionCount = 0; this.openLineRenderers.Add(this.usedLineRenderers[i]); this.usedLineRenderers[i].gameObject.SetActive(false); } this.usedLineRenderers.Clear(); } // Token: 0x060007AB RID: 1963 RVA: 0x000AA78E File Offset: 0x000A898E public void ClearGroundNodes() { this.pickedGroundNodes.Clear(); } // Token: 0x060007AC RID: 1964 RVA: 0x000AA79B File Offset: 0x000A899B public void AddGroundNode(GraphNode n) { this.pickedGroundNodes.Add(n); } // Token: 0x060007AD RID: 1965 RVA: 0x000AA7AC File Offset: 0x000A89AC public void StartGroundTargetTiles(Character mainCharacter, Vector3 targetNode, bool previewPoints, int radius, float maxRadius) { if (this.gatherGroundNodesCoroutine == null) { if (this.clickGroundWait) { previewPoints = false; } this.gatherGroundNodesCoroutine = this.GetGroundTargetTiles(mainCharacter, targetNode, previewPoints, radius, maxRadius); base.StartCoroutine(this.gatherGroundNodesCoroutine); this.clickGroundWait = false; return; } if (!previewPoints) { if (this.pickedGroundNodes.Count > 0 && mainCharacter.portrait.skillBag.selectedSkillButton && !this.quickGroup) { if (!this.character) { int portraitOrder = Links.x.GetPortraitOrder(mainCharacter); this.effectTileWaypointAnimators[portraitOrder].Play("Clicked"); } mainCharacter.portrait.skillBag.selectedSkillButton.SetActionAbility(); Vector3 zero = Vector3.zero; mainCharacter.actions.CastSpell(this.character, false, this.pickedGroundNodes[this.pickedGroundNodes.Count - 1], zero, false, false); this.ClearEffectTiles(true, null, false); this.EndControllerTargeting(); this.RemoveSpellTargets(); return; } this.clickGroundWait = true; } } // Token: 0x060007AE RID: 1966 RVA: 0x000AA8C4 File Offset: 0x000A8AC4 private IEnumerator GetGroundTargetTiles(Character mainCharacter, Vector3 targetNodePosition, bool previewPoints, int radius, float sightRadius) { bool flag = false; GraphNode start = null; bool inQuickGroup = this.quickGroup; if (!mainCharacter) { flag = true; } if (!flag) { bool isCommand = false; if (inQuickGroup || Input.GetKey(Links.x.gameplay.keyControl.GetHotkey("Commands")) || this.makeCircleMode) { isCommand = true; } if (this.spellTargetingGround) { isCommand = false; } if (!previewPoints && !isCommand) { this.nodeConstraint.constrainWalkability = true; this.nodeConstraint.walkable = true; this.nodeConstraint.passID = 0; this.nodeConstraint.passID2 = 0; this.nodeConstraint.constrainTags = false; this.nodeConstraint.checkCircleID = 0; if (this.currentAbility.Contains("Moss")) { this.nodeConstraint.constrainToEnvironment = 3; } else { this.nodeConstraint.constrainToEnvironment = 1; if (mainCharacter.sailing) { this.nodeConstraint.constrainToEnvironment = 2; } } this.nodeConstraint.constrainPenalty = 0; this.nodeConstraint.checkConnections = -1; GraphNode node = AstarPath.active.GetNearest(targetNodePosition, this.nodeConstraint).node; if (node != null) { if (Vector3.Distance((Vector3)node.position, mainCharacter.tr.position) > sightRadius) { this.NoCircle(); } else { if (!this.character) { int portraitOrder = Links.x.GetPortraitOrder(mainCharacter); if (!this.effectTileWaypointAnimators[portraitOrder].gameObject.activeSelf) { this.effectTileWaypointAnimators[portraitOrder].gameObject.SetActive(true); } this.effectTileWaypointAnimators[portraitOrder].Play("Clicked"); } if (!this.pickedGroundNodes.Contains(node)) { this.pickedGroundNodes.Add(node); } if (!mainCharacter.inAction && !mainCharacter.inRecovery && !mainCharacter.inQueuedAbility && mainCharacter.attackTime >= 1f) { if (mainCharacter.portrait.skillBag.selectedSkillButton) { mainCharacter.portrait.skillBag.selectedSkillButton.SetActionAbility(); } Vector3 zero = Vector3.zero; mainCharacter.actions.CastSpell(this.character, false, this.pickedGroundNodes[this.pickedGroundNodes.Count - 1], zero, false, false); } this.ClearGroundNodes(); this.ClearEffectTiles(true, null, false); this.EndControllerTargeting(); this.RemoveSpellTargets(); } } } else { if (this.currentAbility.Contains("Moss")) { this.nodeConstraint.constrainToEnvironment = 3; } else { this.nodeConstraint.constrainToEnvironment = 1; if (mainCharacter.sailing) { this.nodeConstraint.constrainToEnvironment = 2; } } this.nodeConstraint.constrainTags = false; this.nodeConstraint.checkCircleID = 0; this.nodeConstraint.passID = 0; this.nodeConstraint.passID2 = 0; this.nodeConstraint.constrainPenalty = 0; this.nodeConstraint.checkConnections = 0; this.nodeConstraint.constrainToArea = -1; GraphNode node2 = AstarPath.active.GetNearest(targetNodePosition, this.nodeConstraint).node; if (node2 != null) { start = node2; } else { flag = true; } if (start != null) { Vector3 vector = (Vector3)start.position; if (Vector3.Distance(vector, mainCharacter.tr.position) > sightRadius) { if (!previewPoints) { this.NoCircle(); } this.ClearEffectTiles(false, null, false); this.ClearWaypointEffect(mainCharacter); if (!this.effectTileTooFar.activeSelf) { this.effectTileTooFar.SetActive(true); } this.effectTileTooFar.transform.position = vector; RaycastHit raycastHit; if (Physics.SphereCast(this.effectTileTooFar.transform.position + new Vector3(0f, 3f, 0f), 0.15f, Vector3.up * -1f, out raycastHit, 10f, 4194449)) { Quaternion quaternion = Quaternion.Euler(Quaternion.FromToRotation(Vector3.up, raycastHit.normal).eulerAngles); this.effectTileTooFar.transform.rotation = quaternion; this.effectTileTooFar.transform.GetChild(0).localRotation = Quaternion.Euler(new Vector3(0f, 0f, 0f)); } } else { float num = (float)radius; this.ClearGroundNodes(); float max = (num * Records.x.nodeSize + 0.05f) * (num * Records.x.nodeSize + 0.05f); if (!flag && Links.x.gaia.pathfindingReady) { ConstantPath constPath = null; this.nodeConstraint.constrainWalkability = false; constPath = ConstantPath.ConstructFast(start, Records.x.GetConstantPathRadius(radius), null); constPath.nnConstraint = this.nodeConstraint; AstarPath.StartPath(constPath, false); yield return base.StartCoroutine(constPath.WaitForPath()); this.nodeConstraint.constrainWalkability = true; constPath.Claim(this); this.allNodes = constPath.allNodes; int count = this.allNodes.Count; Vector3 position = mainCharacter.tr.position; vector = (Vector3)start.position; Vector3 vector2 = vector; Vector3 vector3 = vector; if (position != vector) { vector2 += Quaternion.LookRotation(position - vector) * Vector3.forward * -3.5f; vector3 += Quaternion.LookRotation(position - vector) * Vector3.forward * 3.5f; } float sqrMagnitude = (position - vector2).sqrMagnitude; float sqrMagnitude2 = (position - vector3).sqrMagnitude; int num2 = 0; bool flag2 = false; if (this.currentAbility.Contains("VineWall")) { flag2 = true; } if (isCommand) { this.allNodesTaken.Clear(); for (int i = 0; i < count; i++) { this.allNodesTaken.Add(0); } for (int j = 0; j < 10; j++) { float num3 = 3f; if (j == 1) { num3 = 3.6f; } if (j == 2) { num3 = 5.1f; } if (j == 3) { num3 = 7.1f; } if (j == 4) { num3 = 7.6f; } if (j == 5) { num3 = 10.6f; } if (j == 6) { num3 = 10.1f; } if (j == 7) { num3 = 14.1f; } if (j == 8) { num3 = 12.6f; } if (j == 9) { num3 = 17.6f; } float num4 = num3 * num3; for (int k = 0; k < count; k++) { if (this.allNodesTaken[k] == 0 && (j <= 0 || num2 < 9) && ((Vector3)this.allNodes[k].position - vector).sqrMagnitude < num4 && this.allNodes[k].circle <= 1) { num2++; this.pickedGroundNodes.Add(this.allNodes[k]); this.allNodesTaken[k] = 1; } } } this.allNodesTaken.Clear(); int count2 = this.pickedGroundNodes.Count; for (int l = 0; l < count2; l++) { this.allNodesTaken.Add(0); } for (int m = 0; m < count2; m++) { Vector3 vector4 = (Vector3)this.pickedGroundNodes[m].position; bool flag3 = false; for (int n = 0; n < count2; n++) { if (!flag3) { Vector3 vector5 = (Vector3)this.pickedGroundNodes[n].position; vector5.y = vector4.y; if ((vector5 - vector4).sqrMagnitude < 16f) { flag3 = true; } } } if (!flag3) { this.allNodesTaken[m] = 1; } } bool flag4 = false; for (int num5 = 0; num5 < count2; num5++) { if (this.allNodesTaken[num5] == 1) { this.pickedGroundNodes[num5] = null; flag4 = true; } } if (flag4) { this.pickedGroundNodes.RemoveAll((GraphNode item) => item == null); } } else { for (int num6 = 0; num6 < count; num6++) { if (((Vector3)this.allNodes[num6].position - vector).sqrMagnitude < max) { if (flag2) { float sqrMagnitude3 = ((Vector3)this.allNodes[num6].position - position).sqrMagnitude; if (sqrMagnitude3 >= sqrMagnitude2 && sqrMagnitude3 <= sqrMagnitude) { this.pickedGroundNodes.Add(this.allNodes[num6]); } } else { num2++; this.pickedGroundNodes.Add(this.allNodes[num6]); } } } } int num7 = this.pickedGroundNodes.IndexOf(start); if (num7 > -1) { this.pickedGroundNodes.RemoveAt(num7); } constPath.Release(this, false); constPath = null; } if (this.spellTargetingGround) { int portraitOrder2 = Links.x.GetPortraitOrder(mainCharacter); if (!this.effectTileWaypoints[portraitOrder2].activeSelf) { this.effectTileWaypoints[portraitOrder2].SetActive(true); } this.effectTileWaypoints[portraitOrder2].transform.position = vector; if (this.character) { this.effectTileWaypoints[portraitOrder2].transform.position = this.farPosition; } else { this.effectTileWaypoints[portraitOrder2].transform.position = vector; } if (this.effectTileTooFar.activeSelf) { this.effectTileTooFar.SetActive(false); } RaycastHit raycastHit2; if (Physics.SphereCast(this.effectTileWaypoints[portraitOrder2].transform.position + new Vector3(0f, 3f, 0f), 0.15f, Vector3.up * -1f, out raycastHit2, 10f, 4194449)) { Quaternion quaternion2 = Quaternion.Euler(Quaternion.FromToRotation(Vector3.up, raycastHit2.normal).eulerAngles); this.effectTileWaypoints[portraitOrder2].transform.rotation = quaternion2; this.effectTileWaypoints[portraitOrder2].transform.GetChild(0).localRotation = Quaternion.Euler(new Vector3(0f, 0f, 0f)); } } else if (this.effectTileTooFar.activeSelf) { this.effectTileTooFar.SetActive(false); } if (!previewPoints && !isCommand) { if (!this.character) { int portraitOrder3 = Links.x.GetPortraitOrder(mainCharacter); this.effectTileWaypointAnimators[portraitOrder3].Play("Clicked"); } if (!this.pickedGroundNodes.Contains(start)) { this.pickedGroundNodes.Add(start); } if (!mainCharacter.inAction && !mainCharacter.inRecovery && !mainCharacter.inQueuedAbility && mainCharacter.attackTime >= 1f) { mainCharacter.portrait.skillBag.selectedSkillButton.SetActionAbility(); Vector3 zero2 = Vector3.zero; mainCharacter.actions.CastSpell(this.character, false, this.pickedGroundNodes[this.pickedGroundNodes.Count - 1], zero2, false, false); } this.ClearGroundNodes(); this.ClearEffectTiles(true, null, false); this.EndControllerTargeting(); this.spellTargetingGround = false; this.spellcasting = false; this.throwingElixir = false; } else if (previewPoints) { if (isCommand) { this.pickedGroundNodes.Add(start); } Vector3 vector6 = new Vector3(0f, 0.3f, 0f); for (int num8 = 0; num8 < this.pickedGroundNodes.Count; num8++) { if (this.spellTargetingGround || isCommand) { int count3 = this.effectTiles.Count; GameObject gameObject; if (num8 < count3) { gameObject = this.effectTiles[num8]; } else { gameObject = Links.x.cellar.GetPooledGameObject(11); this.effectTiles.Add(gameObject); } if (!gameObject.activeSelf) { gameObject.SetActive(true); } gameObject.transform.position = (Vector3)this.pickedGroundNodes[num8].position + vector6; } } } if (this.effectTiles.Count > this.pickedGroundNodes.Count) { for (int num9 = 0; num9 < this.effectTiles.Count; num9++) { if (num9 >= this.pickedGroundNodes.Count && this.effectTiles[num9].activeSelf) { this.effectTiles[num9].SetActive(false); } } } } } } } if (Links.x.pocketWheel.selected == "Command Group" || inQuickGroup || this.makeCircleMode) { if (Time.timeSinceLevelLoad > this.foundGroupTime + 0.2f || this.foundGroupTime == 0f) { this.circleTiles.Clear(); for (int num10 = 0; num10 < this.pickedGroundNodes.Count; num10++) { this.circleTiles.Add(this.pickedGroundNodes[num10]); } if (!this.circleTiles.Contains(start)) { this.circleTiles.Add(start); } } if (this.pickedGroundNodes.Count > 0) { if (!this.attackDirection.activeSelf && !this.uiHover && (Links.x.gameplay.seconds > Links.x.fellowship.timeToNextCircle + Links.x.fellowship.circleRecoverTime || Links.x.fellowship.timeToNextCircle == 0f)) { this.attackDirection.SetActive(true); } if (this.joy) { this.attackDirection.transform.position = (Vector3)start.position + new Vector3(0f, 0.2f, 0f); } else { this.attackDirection.transform.position = targetNodePosition + new Vector3(0f, 0.2f, 0f); } Quaternion quaternion3 = this.attackDirection.transform.rotation; if (this.defenseCircleRotation != Quaternion.identity && Time.timeSinceLevelLoad >= this.defenseHoldTime + 0.3f) { quaternion3 = this.defenseCircleRotation; } else { Vector3 vector7 = this.NearestEnemyClump(true, Links.x.main); if (vector7 == Vector3.zero) { vector7 = Links.x.main.currentPosition; } if (vector7 != (Vector3)start.position) { quaternion3 = Quaternion.LookRotation(vector7 - (Vector3)start.position); } if (this.joy) { this.defenseCircleRotation = quaternion3; } } this.attackDirection.transform.rotation = quaternion3; if (this.mk) { if ((Input.GetMouseButton(0) || Input.GetMouseButtonUp(0)) && Time.timeSinceLevelLoad > this.defenseHoldTime + 0.3f) { if ((this.mousePoint - targetNodePosition).sqrMagnitude > 0.25f) { quaternion3 = Quaternion.LookRotation(this.mousePoint - targetNodePosition); } this.defenseCircleRotation = quaternion3; } } else if (Mathf.Abs(Links.x.fellowship.direction.magnitude) > 0.1f) { float y = Links.x.worldCamera.transform.rotation.eulerAngles.y; float num11 = Mathf.Atan2(Links.x.fellowship.direction.x, Links.x.fellowship.direction.y) / 3.1415927f * 180f; if (num11 < 0f) { num11 += 360f; } quaternion3 = Quaternion.Euler(new Vector3(0f, num11 + y, 0f)); this.defenseCircleRotation = quaternion3; } RaycastHit raycastHit3; if (Physics.Raycast(targetNodePosition + new Vector3(0f, 3f, 0f), Vector3.up * -1f, out raycastHit3, 10f, 4194449)) { Quaternion quaternion4 = Quaternion.FromToRotation(mainCharacter.tr.up, raycastHit3.normal); this.attackDirection.transform.rotation = quaternion4 * quaternion3; } if (!previewPoints || this.clickGroundWait) { this.EndGroupCircle(targetNodePosition); this.clickGroundWait = false; } } } this.gatherGroundNodesCoroutine = null; yield break; } // Token: 0x060007AF RID: 1967 RVA: 0x000AA8F8 File Offset: 0x000A8AF8 private void NoCircle() { } // Token: 0x060007B0 RID: 1968 RVA: 0x000AA8FC File Offset: 0x000A8AFC public void EndCircleMode() { if (this.makeCircleMode) { this.makeCircleMode = false; if (!Records.x.circle) { Links.x.hudControl.SetFalseStayBack(); } if (this.messageDefenseHoldQuickMK.activeSelf) { this.messageDefenseHoldQuickAnimMK.Play("ControlsSlideOutMK"); } this.attackDirection.SetActive(false); } } // Token: 0x060007B1 RID: 1969 RVA: 0x000AA95C File Offset: 0x000A8B5C private void EndGroupCircle(Vector3 clampedPoint) { if (this.messageDefenseHoldQuickMK.activeSelf) { this.messageDefenseHoldQuickAnimMK.Play("ControlsSlideOutMK"); } this.attackDirection.SetActive(false); if (Links.x.gameplay.seconds < Links.x.fellowship.timeToNextCircle + Links.x.fellowship.circleRecoverTime) { this.NoCircle(); this.EndCircleMode(); return; } Records.x.circle = true; this.EndCircleMode(); Links.x.hudControl.SetTrueStayBack(); Vector3 vector = clampedPoint + this.attackDirection.transform.rotation * Vector3.forward * 10f; this.middleCircle = clampedPoint; Vector3 vector2 = clampedPoint + this.attackDirection.transform.rotation * Vector3.forward * -10f; float num = float.PositiveInfinity; float num2 = float.PositiveInfinity; for (int i = 0; i < this.circleTiles.Count; i++) { if (this.circleTiles[i] != null) { float num3 = ((Vector3)this.circleTiles[i].position - vector).sqrMagnitude; if (num3 < num) { num = num3; this.frontOfCircle = (Vector3)this.circleTiles[i].position; } num3 = ((Vector3)this.circleTiles[i].position - vector2).sqrMagnitude; if (num3 < num2) { num2 = num3; this.backOfCircle = (Vector3)this.circleTiles[i].position; } } } Shader.SetGlobalVector("_FrontOfCircle", this.frontOfCircle); this.circleRotation = this.attackDirection.transform.rotation; this.foundGroupTime = Time.timeSinceLevelLoad; Links.x.cameraEffects.ClearPartyGroupTiles(); Links.x.fellowship.StartCircle(clampedPoint); this.clickedCharacter = null; Links.x.gameplay.StoneSoundQuieter(); Links.x.fellowship.MakeWaypoints(clampedPoint, null, false, false); this.ClearGroundNodes(); for (int j = 0; j < this.party.Count; j++) { Character character = this.party[j]; if (character.commandMove != null) { character.commandMove = null; character.ClearNodePath(); if (character.waypoint) { character.waypoint.transform.position = this.farPosition; } } } } // Token: 0x060007B2 RID: 1970 RVA: 0x000AAC10 File Offset: 0x000A8E10 public void CircleFromLoad(Vector3 clampedPoint, Vector3 point1, Vector3 point2, Vector3 point3, Vector3 point4, Vector3 point5, Vector3 point6, Vector3 point7, Vector3 point8, Vector3 point9, Vector3 rot) { this.circleTiles.Clear(); GraphNode graphNode = Links.x.fellowship.NearNode(point1, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } if (point2 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point2, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } if (point3 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point3, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } if (point4 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point4, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } if (point5 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point5, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } if (point6 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point6, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } if (point7 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point7, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } if (point8 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point8, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } if (point9 != Vector3.zero) { graphNode = Links.x.fellowship.NearNode(point9, false, false, false, 0, -1); if (graphNode != null) { this.circleTiles.Add(graphNode); } } Links.x.hudControl.SetTrueStayBack(); Vector3 vector = clampedPoint + this.attackDirection.transform.rotation * Vector3.forward * 10f; this.middleCircle = clampedPoint; Vector3 vector2 = clampedPoint + this.attackDirection.transform.rotation * Vector3.forward * -10f; float num = float.PositiveInfinity; float num2 = float.PositiveInfinity; for (int i = 0; i < this.circleTiles.Count; i++) { if (this.circleTiles[i] != null) { float num3 = ((Vector3)this.circleTiles[i].position - vector).sqrMagnitude; if (num3 < num) { num = num3; this.frontOfCircle = (Vector3)this.circleTiles[i].position; } num3 = ((Vector3)this.circleTiles[i].position - vector2).sqrMagnitude; if (num3 < num2) { num2 = num3; this.backOfCircle = (Vector3)this.circleTiles[i].position; } } } this.foundGroupTime = Time.timeSinceLevelLoad; this.circleRotation = Quaternion.Euler(rot); Links.x.cameraEffects.ClearPartyGroupTiles(); Links.x.fellowship.StartCircle(clampedPoint); } // Token: 0x060007B3 RID: 1971 RVA: 0x000AAF69 File Offset: 0x000A9169 public void BreakCircle() { this.circleBreakObject.SetActive(false); Links.x.cameraEffects.ClearPartyGroupTiles(); } // Token: 0x060007B4 RID: 1972 RVA: 0x000AAF86 File Offset: 0x000A9186 public void GroupCommandAnim(string type, Vector3 pt) { } // Token: 0x060007B5 RID: 1973 RVA: 0x000AAF88 File Offset: 0x000A9188 public Vector3 NearestEnemyClump(bool lookForNPCs, Character main) { Vector3 vector = Vector3.zero; if (this.combatCharacters == null) { this.combatCharacters = Links.x.diorama.characters; } int num = this.combatCharacters.Count; this.clumps.Clear(); this.characters.Clear(); float num2 = 49f; Vector3 currentPosition = main.currentPosition; Vector3 vector2 = Vector3.zero; float num3 = 30f; for (int i = 0; i < num; i++) { Character character = this.combatCharacters[i]; if (character) { bool flag = false; if (lookForNPCs && !character.dead && !character.stunned && (character.hostility >= 2 || character.attackingUntilBribe) && !character.inactive && character.npc) { flag = true; } if (!lookForNPCs && !character.dead && !character.stunned && !character.inactive && (!character.npc || main.stats.IsTargetAnEnemy(character.stats.allegiance))) { flag = true; } if (flag) { vector2 = character.currentPosition; if (this.SubtractVectors(vector2, currentPosition).sqrMagnitude < num3 * num3) { this.characters.Add(character); } } } } num = this.characters.Count; for (int j = 0; j < num; j++) { Character character = this.characters[j]; vector2 = character.currentPosition; int num4 = 1; for (int k = 0; k < num; k++) { if (k != j && this.SubtractVectors(vector2, this.characters[k].currentPosition).sqrMagnitude <= num2) { num4++; } } this.clumps.Add(num4); } int num5 = 0; for (int l = 0; l < num; l++) { if (this.clumps[l] > num5) { num5 = this.clumps[l]; vector2 = this.characters[l].currentPosition; } } int num6 = 0; float num7 = 49f; for (int m = 0; m < num; m++) { if (this.SubtractVectors(vector2, this.characters[m].currentPosition).sqrMagnitude <= num7) { vector += this.characters[m].currentPosition; num6++; } } if (vector != Vector3.zero) { vector /= (float)num6; } return vector; } // Token: 0x060007B6 RID: 1974 RVA: 0x000AB214 File Offset: 0x000A9414 private void SetControllerTargetingPosition(Vector3 position) { if (this.currentAbility.Contains("Moss")) { this.nodeConstraint.constrainToEnvironment = 3; } else { this.nodeConstraint.constrainToEnvironment = 1; if (Links.x.main.sailing) { this.nodeConstraint.constrainToEnvironment = 2; } } this.nodeConstraint.constrainTags = false; this.nodeConstraint.checkCircleID = 0; this.nodeConstraint.passID = 0; this.nodeConstraint.passID2 = 0; this.nodeConstraint.constrainPenalty = 0; this.nodeConstraint.checkConnections = 0; this.nodeConstraint.constrainToArea = -1; GraphNode node = AstarPath.active.GetNearest(position, this.nodeConstraint).node; if (node != null) { this.groundTargetingWaypoint.transform.position = (Vector3)node.position; } } // Token: 0x060007B7 RID: 1975 RVA: 0x000AB2F4 File Offset: 0x000A94F4 public void StartControllerTargeting() { if (!this.makeCircleMode) { this.groundTargetingWaypoint.SetActive(true); } this.SetControllerTargetingPosition(Links.x.main.tr.position + Links.x.main.tr.forward * 4f); this.joyPosition = Links.x.main.tr.position; } // Token: 0x060007B8 RID: 1976 RVA: 0x000AB36C File Offset: 0x000A956C public void EndControllerTargeting() { this.groundTargetingWaypoint.SetActive(false); } // Token: 0x060007B9 RID: 1977 RVA: 0x000AB37C File Offset: 0x000A957C public void GetDistances(Character pathfinder, Character target, out float bestDistance, out float maxDistance, out float minDistance) { bestDistance = (pathfinder.invRow1._MeleeRangeEnd * Records.x.nodeSize + pathfinder.attackRadius + target.attackRadius - 0.65f) * (pathfinder.invRow1._MeleeRangeEnd * Records.x.nodeSize + pathfinder.attackRadius + target.attackRadius - 0.65f); maxDistance = (pathfinder.invRow1._MeleeRangeEnd * Records.x.nodeSize + pathfinder.attackRadius + target.attackRadius) * (pathfinder.invRow1._MeleeRangeEnd * Records.x.nodeSize + pathfinder.attackRadius + target.attackRadius); minDistance = (pathfinder.invRow1._MeleeRangeStart * Records.x.nodeSize + pathfinder.attackRadius + target.attackRadius) * (pathfinder.invRow1._MeleeRangeStart * Records.x.nodeSize + pathfinder.attackRadius + target.attackRadius); if (minDistance == maxDistance || pathfinder.invRow1._MeleeRangeStart == 0f) { minDistance = 0f; } if (bestDistance < minDistance) { bestDistance = minDistance; } } // Token: 0x060007BA RID: 1978 RVA: 0x000AB4A6 File Offset: 0x000A96A6 public void AddLevelUp(Character character, int skillIndex) { this.levelUpCharacters.Add(character); this.levelUpSkills.Add(skillIndex); } // Token: 0x060007BB RID: 1979 RVA: 0x000AB4C0 File Offset: 0x000A96C0 public void AddNeedsPath(Character addCharacter, bool topOfList) { if (addCharacter.npc) { if (this.needsPath.IndexOf(addCharacter) == -1) { if (topOfList) { this.needsPath.Insert(0, addCharacter); return; } this.needsPath.Add(addCharacter); return; } } else if (this.needsPathParty.IndexOf(addCharacter) == -1) { if (topOfList) { this.needsPathParty.Insert(0, addCharacter); return; } this.needsPathParty.Add(addCharacter); } } // Token: 0x060007BC RID: 1980 RVA: 0x000AB530 File Offset: 0x000A9730 public void RemoveNeedsPath(Character c) { for (int i = 0; i < this.needsPath.Count; i++) { if (this.needsPath[i] == c) { this.needsPath[i] = null; } } this.needsPath.RemoveAll((Character item) => item == null); } // Token: 0x060007BD RID: 1981 RVA: 0x000AB5A0 File Offset: 0x000A97A0 public bool InPathQueue(Character c) { for (int i = 0; i < this.needsPath.Count; i++) { if (this.needsPath[i] == c) { return true; } } return false; } // Token: 0x060007BE RID: 1982 RVA: 0x000AB5DC File Offset: 0x000A97DC public void CloseAllMenus() { Links.x.tooltip.EndHoverText(null, true); if (Links.x.options.contents1.activeSelf) { Links.x.options.StartEndMenu(true); return; } for (int i = this.openMenus.Count - 1; i >= 0; i--) { if (this.openMenus[i] == Links.x.formation.gameObject) { Links.x.formation.StartEndMenu(false); return; } if (Links.x.characterSheet.levelUpMenu && this.openMenus[i] == Links.x.characterSheet.levelUpMenu.gameObject) { Links.x.characterSheet.levelUpMenu.CloseMenu(); return; } if (this.openMenus[i] == Links.x.characterSheet.gameObject) { Links.x.characterSheet.StartEndMenu(false, false); return; } if (this.openMenus[i] == Links.x.forfeits.gameObject) { Links.x.forfeits.CloseMenu(false); return; } if (this.openMenus[i] == Links.x.inventory.enchantMenu) { Links.x.inventory.enchantMenu.CloseMenu(); return; } if (this.openMenus[i] == Links.x.saveLoad.gameObject && !Links.x.saveLoad.characterDead) { Links.x.saveLoad.StartEndMenu(false); return; } if (this.openMenus[i] == Links.x.sceneMap.gameObject) { Links.x.sceneMap.StartEndMenu(false); return; } if (this.openMenus[i] == Links.x.journal.gameObject) { Links.x.journal.StartEndMenu(false); return; } if (this.openMenus[i] == Links.x.hudControl.tipsMenu) { Links.x.hudControl.CloseTips(); return; } if (this.openMenus[i] == Links.x.forfeits.gameObject) { Links.x.forfeits.CloseMenu(false); return; } if (this.openMenus[i] == Links.x.spellcrafting.gameObject) { Links.x.spellcrafting.StartEndMenu(false); return; } if (this.openMenus[i] == Links.x.rest.gameObject) { Links.x.rest.CloseMenu(false); return; } } } // Token: 0x060007BF RID: 1983 RVA: 0x000AB8D8 File Offset: 0x000A9AD8 public void SetControlsText(bool pocketTextOnly) { if (!Links.x.main) { return; } this.controllerName = "Xbox_Icons"; this.controllers = Input.GetJoystickNames(); if (this.controllers != null && this.controllers.Length != 0 && this.playerInput.devices.Count > 0) { string text = "Controllers: "; InputDevice inputDevice = this.playerInput.devices[0]; Debug.Log(text + ((inputDevice != null) ? inputDevice.ToString() : null)); } bool flag = false; this.currentSpriteSheetAsset = 0; foreach (string text2 in this.controllers) { if (!flag && this.joy) { Debug.Log("Controller name " + text2); if (!Records.x.steamDeck && (text2.ToLower().Contains("box") || text2.ToLower().Contains("xinput"))) { this.controllerName = "Xbox_Icons"; this.currentSpriteSheetAsset = 1; flag = true; } else if (!Records.x.steamDeck && (text2.ToLower().Contains("tation") || text2.ToLower().Contains("dual"))) { this.controllerName = "Playstation_Icons"; this.currentSpriteSheetAsset = 2; flag = true; } else if (!Records.x.steamDeck && (text2.ToLower().Contains("witch") || text2.ToLower().Contains("pro"))) { this.controllerName = "Switch_Icons"; this.currentSpriteSheetAsset = 3; flag = true; } else if (text2.ToLower().Contains("team") || Records.x.steamDeck) { this.controllerName = "SteamDeck_Icons"; this.currentSpriteSheetAsset = 4; flag = true; } else { this.controllerName = "Xbox_Icons"; this.currentSpriteSheetAsset = 1; flag = true; } } } if (!Links.x.gaia.sceneLoaded && this.joy && this.controllers.Length != 0) { Links.x.hudControl.SwitchController(true); } this.joystickTargetIcon.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); Links.x.partyColliderAdventure.UpdateControlsText(); Links.x.hudControl.Controller(); this.skipTxt.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.str.Clear(); this.str.Append("Cancel "); this.str.Append(" "); } else { int controllerSprite = Links.x.gameplay.GetControllerSprite("Cancel", Links.x.gameplay.controllerName); this.str.Append(controllerSprite); this.str.Append(">"); } this.skipTxt.text = this.str.ToString(); this.SetConfirmText("Confirm"); bool flag2 = this.mk; if (!pocketTextOnly) { if (this.joy) { this.str.Clear(); this.str.Append("Exit"); this.exitMenuText = this.str.ToString(); this.str.Clear(); this.str.Append("Continue"); this.continueText = this.str.ToString(); this.str.Clear(); this.str.Append("Return"); this.exitText = this.str.ToString(); this.str.Clear(); this.str.Append("Cancel"); this.cancelText = this.str.ToString(); this.str.Clear(); this.str.Append("Navigate "); this.str.Append("Select Letter "); this.str.Append("Done"); this.keyboardText2 = this.str.ToString(); this.str.Clear(); this.str.Append("Navigate "); this.str.Append("Select Letter "); this.str.Append("Continue"); this.keyboardText = this.str.ToString(); this.str.Clear(); this.str.Append("Navigate "); this.str.Append("Select Letter "); this.str.Append("Cancel "); this.str.Append("Confirm"); this.keyboardText3 = this.str.ToString(); this.str.Clear(); this.str.Append("to label"); this.pinOpenText = this.str.ToString(); this.str.Clear(); this.str.Append("Move Item "); this.str.Append("Place Item"); this.dragJoystickText = this.str.ToString(); this.str.Clear(); this.str.Append("Start Dragging"); this.formationText = this.str.ToString(); this.str.Clear(); this.itemHoverText = this.str.ToString(); this.itemHoverUseText = this.str.ToString(); this.str.Clear(); this.itemHoverSplitUseText = this.str.ToString(); this.str.Clear(); this.itemHoverSplitText = this.str.ToString(); this.str.Clear(); this.str.Append("Grab equipped item"); this.equipText = this.str.ToString(); this.str.Clear(); this.str.Append("Move / "); this.str.Append("Change Item / "); this.str.Append("Return"); this.equipBagText = this.str.ToString(); this.str.Clear(); this.str.Append("Swap / "); this.str.Append("Switch Item / "); this.str.Append("Return"); this.equipBagDragText = this.str.ToString(); this.str.Clear(); this.str.Append(" Rotate"); this.equipSpinningText = this.str.ToString(); this.str.Clear(); this.str.Append(" Drag Portraits"); this.formationText = this.str.ToString(); } else { this.dragJoystickText = ""; } } this.str.Clear(); if (Links.x.joy) { this.interactButton.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.itemButton.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.mapButton.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.actionButton.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.gatherItemsButton.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.quickSaveBtn.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.interactButton.text = ""; this.itemButton.text = ""; this.mapButton.text = ""; this.actionButton.text = ""; this.gatherItemsButton.text = ""; this.quickSaveBtn.text = ""; } } // Token: 0x060007C0 RID: 1984 RVA: 0x000AC790 File Offset: 0x000AA990 public int GetControllerSprite(string type, string controllerName) { if (type == "Cancel") { if (controllerName == "Switch_Icons") { return 0; } if (controllerName == "Xbox_Icons") { return 1; } if (controllerName == "Playstation_Icons") { return 0; } if (controllerName == "SteamDeck_Icons") { return 1; } } if (type == "Attack" || type == "Action") { if (controllerName == "Switch_Icons") { return 1; } if (controllerName == "Xbox_Icons") { return 0; } if (controllerName == "Playstation_Icons") { return 1; } if (controllerName == "SteamDeck_Icons") { return 0; } } if (type == "Dodge") { if (controllerName == "Xbox_Icons") { return 15; } if (controllerName == "Playstation_Icons") { return 15; } if (controllerName == "Switch_Icons") { return 18; } if (controllerName == "SteamDeck_Icons") { return 21; } } if (type == "Synergy") { if (controllerName == "Xbox_Icons") { return 10; } if (controllerName == "Playstation_Icons") { return 8; } if (controllerName == "Switch_Icons") { return 12; } if (controllerName == "SteamDeck_Icons") { return 10; } } if (type == "Party1") { if (controllerName == "Xbox_Icons") { return 3; } if (controllerName == "Playstation_Icons") { return 3; } if (controllerName == "Switch_Icons") { return 4; } if (controllerName == "SteamDeck_Icons") { return 4; } } if (type == "Party2") { if (controllerName == "Xbox_Icons") { return 4; } if (controllerName == "Playstation_Icons") { return 4; } if (controllerName == "Switch_Icons") { return 5; } if (controllerName == "SteamDeck_Icons") { return 5; } } if (type == "Party3") { if (controllerName == "Xbox_Icons") { return 5; } if (controllerName == "Playstation_Icons") { return 5; } if (controllerName == "Switch_Icons") { return 6; } if (controllerName == "SteamDeck_Icons") { return 6; } } if (type == "Party4") { if (controllerName == "Xbox_Icons") { return 2; } if (controllerName == "Playstation_Icons") { return 2; } if (controllerName == "Switch_Icons") { return 3; } if (controllerName == "SteamDeck_Icons") { return 3; } } if (type == "Dock") { if (controllerName == "Xbox_Icons") { return 12; } if (controllerName == "Playstation_Icons") { return 14; } if (controllerName == "Switch_Icons") { return 15; } if (controllerName == "SteamDeck_Icons") { return 20; } } if (type == "Show Items") { if (controllerName == "Xbox_Icons") { return 7; } if (controllerName == "Playstation_Icons") { return 7; } if (controllerName == "Switch_Icons") { return 9; } if (controllerName == "SteamDeck_Icons") { return 9; } } if (type == "Right Joystick") { if (controllerName == "Xbox_Icons") { return 14; } if (controllerName == "Playstation_Icons") { return 17; } if (controllerName == "Switch_Icons") { return 16; } if (controllerName == "SteamDeck_Icons") { return 25; } } if (type == "Joystick") { if (controllerName == "Xbox_Icons") { return 9; } if (controllerName == "Playstation_Icons") { return 10; } if (controllerName == "Switch_Icons") { return 10; } if (controllerName == "SteamDeck_Icons") { return 14; } } if (type == "Interact") { if (controllerName == "Xbox_Icons") { return 18; } if (controllerName == "Playstation_Icons") { return 20; } if (controllerName == "Switch_Icons") { return 22; } if (controllerName == "SteamDeck_Icons") { return 29; } } if (type == "BtnNorth") { if (controllerName == "Xbox_Icons") { return 19; } if (controllerName == "Playstation_Icons") { return 22; } if (controllerName == "Switch_Icons") { return 21; } if (controllerName == "SteamDeck_Icons") { return 30; } } if (type == "InteractItems") { if (controllerName == "Xbox_Icons") { return 19; } if (controllerName == "Playstation_Icons") { return 22; } if (controllerName == "Switch_Icons") { return 21; } if (controllerName == "SteamDeck_Icons") { return 30; } } if (type == "InteractExits") { if (controllerName == "Xbox_Icons") { return 0; } if (controllerName == "Playstation_Icons") { return 1; } if (controllerName == "Switch_Icons") { return 1; } if (controllerName == "SteamDeck_Icons") { return 0; } } if (type == "Open Menus") { if (controllerName == "Xbox_Icons") { return 11; } if (controllerName == "Playstation_Icons") { return 12; } if (controllerName == "Switch_Icons") { return 14; } if (controllerName == "SteamDeck_Icons") { return 2; } } if (type == "Save") { if (controllerName == "Xbox_Icons") { return 17; } if (controllerName == "Playstation_Icons") { return 18; } if (controllerName == "Switch_Icons") { return 13; } if (controllerName == "SteamDeck_Icons") { return 27; } } if (type == "Press Joystick Left") { if (controllerName == "Xbox_Icons") { return 8; } if (controllerName == "Playstation_Icons") { return 20; } if (controllerName == "Switch_Icons") { return 10; } if (controllerName == "SteamDeck_Icons") { return 13; } } if (type == "Press Joystick Right") { if (controllerName == "Xbox_Icons") { return 13; } if (controllerName == "Playstation_Icons") { return 16; } if (controllerName == "Switch_Icons") { return 17; } if (controllerName == "SteamDeck_Icons") { return 24; } } return 0; } // Token: 0x060007C1 RID: 1985 RVA: 0x000ACD90 File Offset: 0x000AAF90 public void SetConfirmText(string n) { this.confirmTxt.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.str.Clear(); this.str.Append(n); this.str.Append(" "); } else { int controllerSprite = Links.x.gameplay.GetControllerSprite("Action", Links.x.gameplay.controllerName); this.str.Append(controllerSprite); this.str.Append(">"); } this.confirmTxt.text = this.str.ToString(); } // Token: 0x060007C2 RID: 1986 RVA: 0x000ACE84 File Offset: 0x000AB084 public void StoneSound() { string text = "Clicks Stone A"; int num = Random.Range(0, 5); if (num == 1) { text = "Clicks Stone B"; } else if (num == 2) { text = "Clicks Stone C"; } else if (num == 3) { text = "Clicks Stone D"; } else if (num == 4) { text = "Clicks Stone E"; } MasterAudio.PlaySoundAndForget(text, Random.Range(0.6f, 0.8f), new float?(1f), 0f, "", null); } // Token: 0x060007C3 RID: 1987 RVA: 0x000ACF00 File Offset: 0x000AB100 public void StoneSoundQuieter() { string text = "Clicks Stone A"; int num = Random.Range(0, 5); if (num == 1) { text = "Clicks Stone B"; } else if (num == 2) { text = "Clicks Stone C"; } else if (num == 3) { text = "Clicks Stone D"; } else if (num == 4) { text = "Clicks Stone E"; } MasterAudio.PlaySoundAndForget(text, Random.Range(0.25f, 0.4f), new float?(1f), 0f, "", null); } // Token: 0x060007C4 RID: 1988 RVA: 0x000ACF7C File Offset: 0x000AB17C public void WorldClick() { if (Records.x.pocketPause) { MasterAudio.PlaySoundAndForget("Target Click", Random.Range(0.9f, 1f) * 1.5f, new float?(1f), 0f, "", null); return; } MasterAudio.PlaySoundAndForget("World Click", Random.Range(0.9f, 1f), new float?(1f), 0f, "", null); } // Token: 0x060007C5 RID: 1989 RVA: 0x000AD00C File Offset: 0x000AB20C 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: 0x060007C6 RID: 1990 RVA: 0x000AD058 File Offset: 0x000AB258 public float AngleDir(Vector3 fwd, Vector3 targetDir, Vector3 up) { float num = Vector3.Dot(Vector3.Cross(fwd, targetDir), up); if (num > 0f) { return 1f; } if (num <= 0f) { return -1f; } return 1f; } // Token: 0x060007C7 RID: 1991 RVA: 0x000AD094 File Offset: 0x000AB294 public void SetPositionAtWorldPoint(Vector3 worldPoint, RectTransform rt) { Vector3 vector = Links.x.worldCamera.WorldToScreenPoint(worldPoint); vector.z = 0f; vector.x = vector.x * (1920f / (float)Screen.width) - 960f; vector.y = vector.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f; rt.localPosition = vector; } // Token: 0x04000A89 RID: 2697 [Header("GAMEPLAY SETTINGS")] public float gameHours; // Token: 0x04000A8A RID: 2698 public int gameDays; // Token: 0x04000A8B RID: 2699 public float gameMinutes; // Token: 0x04000A8C RID: 2700 public float gameSeconds; // Token: 0x04000A8D RID: 2701 public float seconds; // Token: 0x04000A8E RID: 2702 public string timeOfDay = "Morning"; // Token: 0x04000A8F RID: 2703 public string currentTimeBlock; // Token: 0x04000A90 RID: 2704 public float testRadius = 100f; // Token: 0x04000A91 RID: 2705 private float updateGameTime; // Token: 0x04000A92 RID: 2706 private float pausedTime; // Token: 0x04000A93 RID: 2707 public bool attacking; // Token: 0x04000A94 RID: 2708 public bool spellcasting; // Token: 0x04000A95 RID: 2709 public bool throwingElixir; // Token: 0x04000A96 RID: 2710 public bool spellTargetingGround; // Token: 0x04000A97 RID: 2711 public bool spellTargetingParty; // Token: 0x04000A98 RID: 2712 public bool spellTargetingEnemy; // Token: 0x04000A99 RID: 2713 public bool charming; // Token: 0x04000A9A RID: 2714 private bool startCombatFromPause; // Token: 0x04000A9B RID: 2715 public Sunlight sunlightAnimator; // Token: 0x04000A9C RID: 2716 public TextMeshProUGUI timeText; // Token: 0x04000A9D RID: 2717 private PointerEventData pointer; // Token: 0x04000A9E RID: 2718 private List raycastResults = new List(); // Token: 0x04000A9F RID: 2719 public List effectTileWaypoints = new List(); // Token: 0x04000AA0 RID: 2720 public List effectTileWaypointAnimators = new List(); // Token: 0x04000AA1 RID: 2721 private int screenW; // Token: 0x04000AA2 RID: 2722 private int screenH; // Token: 0x04000AA3 RID: 2723 public bool closeTheGap; // Token: 0x04000AA4 RID: 2724 public bool playerInAction; // Token: 0x04000AA5 RID: 2725 public bool startPocketPause; // Token: 0x04000AA6 RID: 2726 [Header("INPUTS")] public KeyControl keyControl; // Token: 0x04000AA7 RID: 2727 private List keyConverted; // Token: 0x04000AA8 RID: 2728 private List keyCodes; // Token: 0x04000AA9 RID: 2729 public string settingFavorite; // Token: 0x04000AAA RID: 2730 public GameObject currentEventObject; // Token: 0x04000AAB RID: 2731 public GameObject firstEventObject; // Token: 0x04000AAC RID: 2732 private GameObject prevEventObject; // Token: 0x04000AAD RID: 2733 private int clickCount; // Token: 0x04000AAE RID: 2734 private float clickTime; // Token: 0x04000AAF RID: 2735 private float clickUpTime; // Token: 0x04000AB0 RID: 2736 private float startMouseDownTime; // Token: 0x04000AB1 RID: 2737 private float groupMouseTime; // Token: 0x04000AB2 RID: 2738 public bool doubleClick; // Token: 0x04000AB3 RID: 2739 public bool holdingMouseButton; // Token: 0x04000AB4 RID: 2740 [Header("MOUSE + CONTROLLER")] private float mouseDown; // Token: 0x04000AB5 RID: 2741 public bool mouseVisible; // Token: 0x04000AB6 RID: 2742 public bool mouseWormVisible; // Token: 0x04000AB7 RID: 2743 public bool hitWater; // Token: 0x04000AB8 RID: 2744 public bool hitBeach; // Token: 0x04000AB9 RID: 2745 public bool hitItem; // Token: 0x04000ABA RID: 2746 public bool hitFloor; // Token: 0x04000ABB RID: 2747 public bool hitCharacter; // Token: 0x04000ABC RID: 2748 public bool hitGameCardHover; // Token: 0x04000ABD RID: 2749 public bool hitExit; // Token: 0x04000ABE RID: 2750 public bool hitInteractable; // Token: 0x04000ABF RID: 2751 public bool hitBoat; // Token: 0x04000AC0 RID: 2752 public bool uiCanClick; // Token: 0x04000AC1 RID: 2753 public bool uiHover; // Token: 0x04000AC2 RID: 2754 public bool clickStartOnUIHover; // Token: 0x04000AC3 RID: 2755 public bool waitingForClickUpOnCharacter; // Token: 0x04000AC4 RID: 2756 public Item prevItem; // Token: 0x04000AC5 RID: 2757 public Item item; // Token: 0x04000AC6 RID: 2758 public Boat prevBoat; // Token: 0x04000AC7 RID: 2759 public Boat boat; // Token: 0x04000AC8 RID: 2760 public BreakableActions breakable; // Token: 0x04000AC9 RID: 2761 public BreakableActions prevBreakable; // Token: 0x04000ACA RID: 2762 public BreakableActions domeBreakable; // Token: 0x04000ACB RID: 2763 public ChestActions chest; // Token: 0x04000ACC RID: 2764 public ChestActions prevChest; // Token: 0x04000ACD RID: 2765 public ChestActions domeChest; // Token: 0x04000ACE RID: 2766 public DoorActions door; // Token: 0x04000ACF RID: 2767 public DoorActions prevDoor; // Token: 0x04000AD0 RID: 2768 public DoorActions domeDoor; // Token: 0x04000AD1 RID: 2769 public DoorActions mapDoor; // Token: 0x04000AD2 RID: 2770 public DoorActions prevMapDoor; // Token: 0x04000AD3 RID: 2771 public PuzzleActions puzzle; // Token: 0x04000AD4 RID: 2772 public PuzzleActions prevPuzzle; // Token: 0x04000AD5 RID: 2773 public PuzzleActions domePuzzle; // Token: 0x04000AD6 RID: 2774 public Character prevCharacter; // Token: 0x04000AD7 RID: 2775 public Character character; // Token: 0x04000AD8 RID: 2776 public Character prevGameCardCharacter; // Token: 0x04000AD9 RID: 2777 public Character gameCardCharacter; // Token: 0x04000ADA RID: 2778 public Character clickedCharacter; // Token: 0x04000ADB RID: 2779 public Character targetingCharacter; // Token: 0x04000ADC RID: 2780 public Character coneCharacter; // Token: 0x04000ADD RID: 2781 public Character talkCharacter; // Token: 0x04000ADE RID: 2782 public Character domeParty; // Token: 0x04000ADF RID: 2783 public Character domeEnemy; // Token: 0x04000AE0 RID: 2784 public Character attackingCharacter; // Token: 0x04000AE1 RID: 2785 public MapExitActions exit; // Token: 0x04000AE2 RID: 2786 public MapExitActions prevExit; // Token: 0x04000AE3 RID: 2787 public MapExitActions intersectingExit; // Token: 0x04000AE4 RID: 2788 private Vector3 mouseDownPosition; // Token: 0x04000AE5 RID: 2789 private bool alreadyClicked; // Token: 0x04000AE6 RID: 2790 public GraphNode currentExitNode; // Token: 0x04000AE7 RID: 2791 public GraphNode currentInteractionNode; // Token: 0x04000AE8 RID: 2792 public float mouseColor; // Token: 0x04000AE9 RID: 2793 public Vector3 farPosition = new Vector3(10000f, 0f, 0f); // Token: 0x04000AEA RID: 2794 public bool gettingPartyNodes; // Token: 0x04000AEB RID: 2795 public bool combatStartedWithSkill; // Token: 0x04000AEC RID: 2796 public bool showingAbilityUI; // Token: 0x04000AED RID: 2797 public GameObject effectsTilePrefab; // Token: 0x04000AEE RID: 2798 public GameObject effectsTilePrefabTooFar; // Token: 0x04000AEF RID: 2799 public GameObject effectTileTooFar; // Token: 0x04000AF0 RID: 2800 public Ray ray; // Token: 0x04000AF1 RID: 2801 public int tileEffectRadius; // Token: 0x04000AF2 RID: 2802 public string currentAbility; // Token: 0x04000AF3 RID: 2803 public Library.Pagan spellPaganRow; // Token: 0x04000AF4 RID: 2804 public GameObject clickedUI; // Token: 0x04000AF5 RID: 2805 public GameObject selectedUI; // Token: 0x04000AF6 RID: 2806 public Vector3 mousePoint; // Token: 0x04000AF7 RID: 2807 public Transform lookAt; // Token: 0x04000AF8 RID: 2808 public bool doLookAt; // Token: 0x04000AF9 RID: 2809 public TextMeshProUGUI interactButton; // Token: 0x04000AFA RID: 2810 public TextMeshProUGUI itemButton; // Token: 0x04000AFB RID: 2811 public TextMeshProUGUI mapButton; // Token: 0x04000AFC RID: 2812 public TextMeshProUGUI actionButton; // Token: 0x04000AFD RID: 2813 public TextMeshProUGUI gatherItemsButton; // Token: 0x04000AFE RID: 2814 public TextMeshProUGUI quickSaveBtn; // Token: 0x04000AFF RID: 2815 public string exitMenuText; // Token: 0x04000B00 RID: 2816 public string continueText; // Token: 0x04000B01 RID: 2817 public string cancelText; // Token: 0x04000B02 RID: 2818 public string exitText; // Token: 0x04000B03 RID: 2819 public string keyboardText; // Token: 0x04000B04 RID: 2820 public string keyboardText2; // Token: 0x04000B05 RID: 2821 public string keyboardText3; // Token: 0x04000B06 RID: 2822 public string gameFeedText; // Token: 0x04000B07 RID: 2823 public string dragText; // Token: 0x04000B08 RID: 2824 public string dragJoystickText; // Token: 0x04000B09 RID: 2825 public string pinOpenText; // Token: 0x04000B0A RID: 2826 public string partySwitchText; // Token: 0x04000B0B RID: 2827 public string targetSwitchText; // Token: 0x04000B0C RID: 2828 public string npcHoverText; // Token: 0x04000B0D RID: 2829 public string pocketText; // Token: 0x04000B0E RID: 2830 public string dockText; // Token: 0x04000B0F RID: 2831 public string pocketTextSpell; // Token: 0x04000B10 RID: 2832 public string formationText; // Token: 0x04000B11 RID: 2833 public string itemHoverText; // Token: 0x04000B12 RID: 2834 public string itemHoverUseText; // Token: 0x04000B13 RID: 2835 public string equipText; // Token: 0x04000B14 RID: 2836 public string equipBagDragText; // Token: 0x04000B15 RID: 2837 public string equipBagText; // Token: 0x04000B16 RID: 2838 public string equipSpinningText; // Token: 0x04000B17 RID: 2839 public string itemHoverSplitUseText; // Token: 0x04000B18 RID: 2840 public string itemHoverSplitText; // Token: 0x04000B19 RID: 2841 public GameObject selectionCircle; // Token: 0x04000B1A RID: 2842 public Animator selectionCircleAnimator; // Token: 0x04000B1B RID: 2843 public bool dockOpen; // Token: 0x04000B1C RID: 2844 public string dockSelected; // Token: 0x04000B1D RID: 2845 private float timeHeld; // Token: 0x04000B1E RID: 2846 private float targetTime; // Token: 0x04000B1F RID: 2847 public string lastMenu; // Token: 0x04000B20 RID: 2848 public bool resizing; // Token: 0x04000B21 RID: 2849 public bool sailing; // Token: 0x04000B22 RID: 2850 private bool targetingGroundCharacterHover; // Token: 0x04000B23 RID: 2851 public bool openingAnotherMenu; // Token: 0x04000B24 RID: 2852 public Item timerHoverItem; // Token: 0x04000B25 RID: 2853 private IEnumerator routine; // Token: 0x04000B26 RID: 2854 private IEnumerator arcCorout; // Token: 0x04000B27 RID: 2855 public GraphNode mouseNode; // Token: 0x04000B28 RID: 2856 public bool clickedUpCharacter; // Token: 0x04000B29 RID: 2857 public bool clickedDownWindows; // Token: 0x04000B2A RID: 2858 private Vector2 prevClickPosition; // Token: 0x04000B2B RID: 2859 public GameObject joystickTarget; // Token: 0x04000B2C RID: 2860 public TextMeshProUGUI joystickTargetIcon; // Token: 0x04000B2D RID: 2861 public RectTransform joystickTargetRT; // Token: 0x04000B2E RID: 2862 public GameObject attackDirection; // Token: 0x04000B2F RID: 2863 public Material attackDirectionMaterial; // Token: 0x04000B30 RID: 2864 [Header("LISTS")] private List needsPath = new List(); // Token: 0x04000B31 RID: 2865 private List needsPathParty = new List(); // Token: 0x04000B32 RID: 2866 private List closestCharacters = new List(); // Token: 0x04000B33 RID: 2867 private List openMenus; // Token: 0x04000B34 RID: 2868 private List party; // Token: 0x04000B35 RID: 2869 private List dioramaCharacters; // Token: 0x04000B36 RID: 2870 private List characters = new List(); // Token: 0x04000B37 RID: 2871 private List combatCharacters; // Token: 0x04000B38 RID: 2872 private List clumps = new List(); // Token: 0x04000B39 RID: 2873 public List hoverTilesNumbers = new List(); // Token: 0x04000B3A RID: 2874 public List effectTiles = new List(); // Token: 0x04000B3B RID: 2875 private List currentTileEffects; // Token: 0x04000B3C RID: 2876 private List allCharacters; // Token: 0x04000B3D RID: 2877 private List talkCharacters = new List(); // Token: 0x04000B3E RID: 2878 private List chests = new List(); // Token: 0x04000B3F RID: 2879 private List doors = new List(); // Token: 0x04000B40 RID: 2880 private List levelUpCharacters = new List(); // Token: 0x04000B41 RID: 2881 private List levelUpSkills = new List(); // Token: 0x04000B42 RID: 2882 public List circleTiles = new List(); // Token: 0x04000B43 RID: 2883 [Header("AI")] public IEnumerator gatherNodesCoroutine; // Token: 0x04000B44 RID: 2884 [Header("AI")] public IEnumerator gatherGroundNodesCoroutine; // Token: 0x04000B45 RID: 2885 private bool clickWait; // Token: 0x04000B46 RID: 2886 private bool clickGroundWait; // Token: 0x04000B47 RID: 2887 private List allNodes; // Token: 0x04000B48 RID: 2888 private List allNodesTaken = new List(); // Token: 0x04000B49 RID: 2889 private List targetingNodes = new List(); // Token: 0x04000B4A RID: 2890 private List nodeInRadius = new List(); // Token: 0x04000B4B RID: 2891 public List pickedInteractionNodes = new List(); // Token: 0x04000B4C RID: 2892 public List pickedGroundNodes = new List(); // Token: 0x04000B4D RID: 2893 private NNConstraint nodeConstraint = new NNConstraint(); // Token: 0x04000B4E RID: 2894 private List tempPath; // Token: 0x04000B4F RID: 2895 private List tempNodes = new List(); // Token: 0x04000B50 RID: 2896 private List savedNodes = new List(); // Token: 0x04000B51 RID: 2897 private List targetingBool = new List(); // Token: 0x04000B52 RID: 2898 private List targetingDist = new List(); // Token: 0x04000B53 RID: 2899 private WaitForSeconds delayShort = new WaitForSeconds(0.001f); // Token: 0x04000B54 RID: 2900 private WaitForSeconds delayHalfSecond = new WaitForSeconds(0.5f); // Token: 0x04000B55 RID: 2901 private WaitForSeconds delaySecond = new WaitForSeconds(1f); // Token: 0x04000B56 RID: 2902 public Character actionCharacter; // Token: 0x04000B57 RID: 2903 private Item mouseDownItem; // Token: 0x04000B58 RID: 2904 [Header("HOTKEYS")] public bool mk; // Token: 0x04000B59 RID: 2905 public bool joy; // Token: 0x04000B5A RID: 2906 public string hotkey1; // Token: 0x04000B5B RID: 2907 public string hotkey2; // Token: 0x04000B5C RID: 2908 public string hotkey3; // Token: 0x04000B5D RID: 2909 public string hotkey4; // Token: 0x04000B5E RID: 2910 public string hotkey5; // Token: 0x04000B5F RID: 2911 public string hotkey6; // Token: 0x04000B60 RID: 2912 public string hotkey7; // Token: 0x04000B61 RID: 2913 public string hotkey8; // Token: 0x04000B62 RID: 2914 public string hotkey9; // Token: 0x04000B63 RID: 2915 public string hotkey10; // Token: 0x04000B64 RID: 2916 public string hotkey11; // Token: 0x04000B65 RID: 2917 public string hotkey12; // Token: 0x04000B66 RID: 2918 public string hotkeyCharacter1; // Token: 0x04000B67 RID: 2919 public string hotkeyCharacter2; // Token: 0x04000B68 RID: 2920 public string hotkeyCharacter3; // Token: 0x04000B69 RID: 2921 public string hotkeyCharacter4; // Token: 0x04000B6A RID: 2922 public string hotkeyCharacter5; // Token: 0x04000B6B RID: 2923 public string hotkeyCharacter6; // Token: 0x04000B6C RID: 2924 public string hotkeyCharacter7; // Token: 0x04000B6D RID: 2925 public string hotkeyCharacter8; // Token: 0x04000B6E RID: 2926 public string hotkeyCharacter9; // Token: 0x04000B6F RID: 2927 public string hotkeyCharacter10; // Token: 0x04000B70 RID: 2928 public string hotkeyCharacter11; // Token: 0x04000B71 RID: 2929 public string hotkeyCharacter12; // Token: 0x04000B72 RID: 2930 private StringFast str = new StringFast(64); // Token: 0x04000B73 RID: 2931 [Header("CONTROLLER")] private string[] controllers; // Token: 0x04000B74 RID: 2932 private int prevControllerCount; // Token: 0x04000B75 RID: 2933 public int currentControllerCount; // Token: 0x04000B76 RID: 2934 public PlayerInput playerInput; // Token: 0x04000B77 RID: 2935 public InputAction action; // Token: 0x04000B78 RID: 2936 public InputAction move; // Token: 0x04000B79 RID: 2937 public InputAction zoom; // Token: 0x04000B7A RID: 2938 public InputAction interact; // Token: 0x04000B7B RID: 2939 public InputAction showAllItems; // Token: 0x04000B7C RID: 2940 public InputAction switchTarget; // Token: 0x04000B7D RID: 2941 public InputAction aim; // Token: 0x04000B7E RID: 2942 public InputAction dock; // Token: 0x04000B7F RID: 2943 public InputAction cancel; // Token: 0x04000B80 RID: 2944 public InputAction quickSave; // Token: 0x04000B81 RID: 2945 public InputAction rightJoyStick; // Token: 0x04000B82 RID: 2946 public InputAction allMenus; // Token: 0x04000B83 RID: 2947 public InputAction switchPartyUp; // Token: 0x04000B84 RID: 2948 public InputAction switchPartyDown; // Token: 0x04000B85 RID: 2949 public InputAction partyItemsLeft; // Token: 0x04000B86 RID: 2950 public InputAction partyItemsRight; // Token: 0x04000B87 RID: 2951 public InputAction hudLeft; // Token: 0x04000B88 RID: 2952 public InputAction hudRight; // Token: 0x04000B89 RID: 2953 public InputAction spell3; // Token: 0x04000B8A RID: 2954 public InputAction spell4; // Token: 0x04000B8B RID: 2955 public InputAction menus; // Token: 0x04000B8C RID: 2956 public Vector2 rightJoystick; // Token: 0x04000B8D RID: 2957 public float triggerAction; // Token: 0x04000B8E RID: 2958 public float triggerInteract; // Token: 0x04000B8F RID: 2959 public float triggerItems; // Token: 0x04000B90 RID: 2960 public float triggerDodge; // Token: 0x04000B91 RID: 2961 public float triggerAim; // Token: 0x04000B92 RID: 2962 public float triggerDock; // Token: 0x04000B93 RID: 2963 public float triggerCancel; // Token: 0x04000B94 RID: 2964 public float triggerQuickSave; // Token: 0x04000B95 RID: 2965 public float triggerAllMenus; // Token: 0x04000B96 RID: 2966 public float triggerParty1; // Token: 0x04000B97 RID: 2967 public float triggerParty2; // Token: 0x04000B98 RID: 2968 public float triggerPartyItems3; // Token: 0x04000B99 RID: 2969 public float triggerPartyItems4; // Token: 0x04000B9A RID: 2970 public float triggerMenus; // Token: 0x04000B9B RID: 2971 public float triggerHudLeft; // Token: 0x04000B9C RID: 2972 public float triggerHudRight; // Token: 0x04000B9D RID: 2973 public float prevTriggerAction; // Token: 0x04000B9E RID: 2974 public float prevTriggerInteract; // Token: 0x04000B9F RID: 2975 public float prevTriggerItems; // Token: 0x04000BA0 RID: 2976 public float prevTriggerDodge; // Token: 0x04000BA1 RID: 2977 public float prevTriggerAim; // Token: 0x04000BA2 RID: 2978 public float prevTriggerDock; // Token: 0x04000BA3 RID: 2979 public float prevTriggerCancel; // Token: 0x04000BA4 RID: 2980 public float prevTriggerQuickSave; // Token: 0x04000BA5 RID: 2981 public float prevTriggerAllMenus; // Token: 0x04000BA6 RID: 2982 public float prevTriggerParty1; // Token: 0x04000BA7 RID: 2983 public float prevTriggerParty2; // Token: 0x04000BA8 RID: 2984 public float prevTriggerPartyItems3; // Token: 0x04000BA9 RID: 2985 public float prevTriggerPartyItems4; // Token: 0x04000BAA RID: 2986 public float prevTriggerMenus; // Token: 0x04000BAB RID: 2987 public float prevTriggerHudLeft; // Token: 0x04000BAC RID: 2988 public float prevTriggerHudRight; // Token: 0x04000BAD RID: 2989 public bool actionStart; // Token: 0x04000BAE RID: 2990 public bool actionDown; // Token: 0x04000BAF RID: 2991 public bool actionUp; // Token: 0x04000BB0 RID: 2992 public bool interactStart; // Token: 0x04000BB1 RID: 2993 public bool itemsDown; // Token: 0x04000BB2 RID: 2994 public bool itemsStart; // Token: 0x04000BB3 RID: 2995 public bool itemsUp; // Token: 0x04000BB4 RID: 2996 public bool targetDodgeStart; // Token: 0x04000BB5 RID: 2997 public bool targetDodgeDown; // Token: 0x04000BB6 RID: 2998 public bool targetDodgeUp; // Token: 0x04000BB7 RID: 2999 public bool aimStart; // Token: 0x04000BB8 RID: 3000 public bool aimUp; // Token: 0x04000BB9 RID: 3001 public bool aimHold; // Token: 0x04000BBA RID: 3002 public bool targetDodgeHold; // Token: 0x04000BBB RID: 3003 public bool dockStart; // Token: 0x04000BBC RID: 3004 public bool dockUp; // Token: 0x04000BBD RID: 3005 public bool dockDown; // Token: 0x04000BBE RID: 3006 public bool cancelStart; // Token: 0x04000BBF RID: 3007 public bool quickSaveStart; // Token: 0x04000BC0 RID: 3008 public bool party1Down; // Token: 0x04000BC1 RID: 3009 public bool party2Down; // Token: 0x04000BC2 RID: 3010 public bool partyItems3Down; // Token: 0x04000BC3 RID: 3011 public bool partyItems4Down; // Token: 0x04000BC4 RID: 3012 public bool spell1Down; // Token: 0x04000BC5 RID: 3013 public bool spell2Down; // Token: 0x04000BC6 RID: 3014 public bool spell3Down; // Token: 0x04000BC7 RID: 3015 public bool spell4Down; // Token: 0x04000BC8 RID: 3016 public bool menusDown; // Token: 0x04000BC9 RID: 3017 public bool zooming; // Token: 0x04000BCA RID: 3018 public bool hudLeftStart; // Token: 0x04000BCB RID: 3019 public bool hudRightStart; // Token: 0x04000BCC RID: 3020 public bool allMenusStart; // Token: 0x04000BCD RID: 3021 public bool allMenusDown; // Token: 0x04000BCE RID: 3022 public bool allMenusUp; // Token: 0x04000BCF RID: 3023 private int currentHudButton; // Token: 0x04000BD0 RID: 3024 private float lastDockTime; // Token: 0x04000BD1 RID: 3025 private float targetGroundTime; // Token: 0x04000BD2 RID: 3026 private float portraitChangeTime; // Token: 0x04000BD3 RID: 3027 private AnimateButton prevDockButton; // Token: 0x04000BD4 RID: 3028 public GameObject groundTargetingWaypoint; // Token: 0x04000BD5 RID: 3029 public string controllerName; // Token: 0x04000BD6 RID: 3030 public int currentSpriteSheetAsset; // Token: 0x04000BD7 RID: 3031 public bool hudRightOpen; // Token: 0x04000BD8 RID: 3032 public bool hudLeftOpen; // Token: 0x04000BD9 RID: 3033 public bool descWindowOpen; // Token: 0x04000BDA RID: 3034 public bool endDockNavigation; // Token: 0x04000BDB RID: 3035 public bool inPartyDock; // Token: 0x04000BDC RID: 3036 public GameObject hudLeftButton; // Token: 0x04000BDD RID: 3037 public GameObject hudRightButton; // Token: 0x04000BDE RID: 3038 public GameObject lastDockButton; // Token: 0x04000BDF RID: 3039 public TextParser tp1; // Token: 0x04000BE0 RID: 3040 public TextParser tp2; // Token: 0x04000BE1 RID: 3041 public TextParser tp3; // Token: 0x04000BE2 RID: 3042 public TextParser tp4; // Token: 0x04000BE3 RID: 3043 public string lastMenuOpened; // Token: 0x04000BE4 RID: 3044 public bool waitingForActionUp; // Token: 0x04000BE5 RID: 3045 private Vector3 joyPosition; // Token: 0x04000BE6 RID: 3046 public bool gameFeedScrolling; // Token: 0x04000BE7 RID: 3047 public bool badgeScrolling; // Token: 0x04000BE8 RID: 3048 public TextMeshProUGUI skipTxt; // Token: 0x04000BE9 RID: 3049 public TextMeshProUGUI confirmTxt; // Token: 0x04000BEA RID: 3050 public GameObject skipText; // Token: 0x04000BEB RID: 3051 public GameObject confirmText; // Token: 0x04000BEC RID: 3052 [Header("COMMANDS")] private float gravity = -9.81f; // Token: 0x04000BED RID: 3053 private float initialVelocity = 3f; // Token: 0x04000BEE RID: 3054 private Quaternion bearing; // Token: 0x04000BEF RID: 3055 private int trajectoryModifier = 1; // Token: 0x04000BF0 RID: 3056 private Vector3 projectileVelocity; // Token: 0x04000BF1 RID: 3057 private Vector3 arcTarget; // Token: 0x04000BF2 RID: 3058 public float trajectoryPrecision = 20f; // Token: 0x04000BF3 RID: 3059 public int maximumIterations = 100; // Token: 0x04000BF4 RID: 3060 private Vector3 gravity2 = new Vector3(0f, -9.81f, 0f); // Token: 0x04000BF5 RID: 3061 public GameObject lineRendererToDrawTrajectory; // Token: 0x04000BF6 RID: 3062 private List openLineRenderers = new List(); // Token: 0x04000BF7 RID: 3063 private List usedLineRenderers = new List(); // Token: 0x04000BF8 RID: 3064 private Vector3 prevPos; // Token: 0x04000BF9 RID: 3065 private List arcPoints = new List(); // Token: 0x04000BFA RID: 3066 private int currentArcIndex; // Token: 0x04000BFB RID: 3067 private Vector3 previousPosition; // Token: 0x04000BFC RID: 3068 private GameObject arcObject; // Token: 0x04000BFD RID: 3069 public bool repositionTargeting; // Token: 0x04000BFE RID: 3070 public bool defenseCircleTargeting; // Token: 0x04000BFF RID: 3071 public Quaternion defenseCircleRotation; // Token: 0x04000C00 RID: 3072 private Vector3 defenseCircleHoldPosition; // Token: 0x04000C01 RID: 3073 private float defenseHoldTime; // Token: 0x04000C02 RID: 3074 private float foundGroupTime; // Token: 0x04000C03 RID: 3075 public GameObject messageDefenseHoldMK; // Token: 0x04000C04 RID: 3076 public GameObject messageDefenseHoldQuickMK; // Token: 0x04000C05 RID: 3077 public GameObject messageDefenseHoldJoy; // Token: 0x04000C06 RID: 3078 public Animator messageDefenseHoldAnimMK; // Token: 0x04000C07 RID: 3079 public Animator messageDefenseHoldQuickAnimMK; // Token: 0x04000C08 RID: 3080 public Animator messageDefenseHoldAnimJoy; // Token: 0x04000C09 RID: 3081 public Vector3 frontOfCircle; // Token: 0x04000C0A RID: 3082 public Vector3 middleCircle; // Token: 0x04000C0B RID: 3083 public Vector3 backOfCircle; // Token: 0x04000C0C RID: 3084 public bool quickGroup; // Token: 0x04000C0D RID: 3085 public bool quickReposition; // Token: 0x04000C0E RID: 3086 public bool quickCommandAttack; // Token: 0x04000C0F RID: 3087 public Quaternion circleRotation; // Token: 0x04000C10 RID: 3088 private Vector3 savedGroupCommandPoint; // Token: 0x04000C11 RID: 3089 public GameObject circleBreakObject; // Token: 0x04000C12 RID: 3090 public bool makeCircleMode; // Token: 0x04000C13 RID: 3091 public Character rallyTargetSelected; // Token: 0x04000C14 RID: 3092 public GameObject rallyTargetInteractiveSelected; }