using System; using System.Collections; using System.Collections.Generic; using System.Linq; using DarkTonic.MasterAudio; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; // Token: 0x020000CC RID: 204 public class Pocket : MonoBehaviour { // Token: 0x060012AA RID: 4778 RVA: 0x00168B00 File Offset: 0x00166D00 private void Awake() { this.spellbook.SetActive(false); this.ControllerMessage(false); this.controllerWheel2.SetActive(false); this.controllerWheel4.SetActive(false); this.arrow.enabled = false; this.rallyWheel.SetActive(false); this.selectedRallyRTs = this.selectedAmmoImage.GetComponentsInChildren(); } // Token: 0x060012AB RID: 4779 RVA: 0x00168B64 File Offset: 0x00166D64 private string GetSelected() { if (this.character == this.c1) { return this.selected1; } if (this.character == this.c2) { return this.selected2; } if (this.character == this.c3) { return this.selected3; } if (this.character == this.c4) { return this.selected4; } this.UpdateCharacterLists(false); return "Light Attack"; } // Token: 0x060012AC RID: 4780 RVA: 0x00168BE8 File Offset: 0x00166DE8 private void SaveSelected() { if (this.character == this.c1) { this.selected1 = this.selected; return; } if (this.character == this.c2) { this.selected2 = this.selected; return; } if (this.character == this.c3) { this.selected3 = this.selected; return; } if (this.character == this.c4) { this.selected4 = this.selected; return; } this.UpdateCharacterLists(true); } // Token: 0x060012AD RID: 4781 RVA: 0x00168C7C File Offset: 0x00166E7C private void UpdateCharacterLists(bool save) { bool flag = false; if (this.c1 == null) { this.c1 = this.character; flag = true; } if (!flag && !this.c2) { this.c2 = this.character; flag = true; } if (!flag && !this.c3) { this.c3 = this.character; flag = true; } if (!flag && !this.c4) { this.c4 = this.character; flag = true; } if (!flag) { if (!Links.x.portraitOrder.Contains(this.c1)) { this.c1 = null; } if (!Links.x.portraitOrder.Contains(this.c2)) { this.c2 = null; } if (!Links.x.portraitOrder.Contains(this.c3)) { this.c3 = null; } if (!Links.x.portraitOrder.Contains(this.c4)) { this.c4 = null; } if (this.c1 == null) { this.c1 = this.character; flag = true; } if (!flag && !this.c2) { this.c2 = this.character; flag = true; } if (!flag && !this.c3) { this.c3 = this.character; flag = true; } if (!flag && !this.c4) { this.c4 = this.character; flag = true; } } if (save && flag) { this.SaveSelected(); } } // Token: 0x060012AE RID: 4782 RVA: 0x00168E00 File Offset: 0x00167000 private void SetPocketImg(GameObject go) { bool flag = true; if (this.selected.Contains("Attack")) { if (Links.x.combat.ItemCardCount() == 0) { flag = false; } } else if (this.selected.Contains("Charm") && Links.x.combat.TargetCount() == 0) { flag = false; } if (flag) { Links.x.partyColliderAdventure.actionImage.sprite = go.GetComponent().sprite; Links.x.partyColliderAdventure.ToggleAction(true); return; } Links.x.partyColliderAdventure.ToggleAction(false); } // Token: 0x060012AF RID: 4783 RVA: 0x00168E9E File Offset: 0x0016709E public void SetDirection(string toBtn) { } // Token: 0x060012B0 RID: 4784 RVA: 0x00168EA0 File Offset: 0x001670A0 public void UpdateRotation(float rotationAmount) { if (Links.x.gameplay.currentEventObject) { Links.x.hudControl.SetJoyBox(Links.x.gameplay.currentEventObject.GetComponent()); } } // Token: 0x060012B1 RID: 4785 RVA: 0x00168EDB File Offset: 0x001670DB public void GetSelectedFromRotatation() { } // Token: 0x060012B2 RID: 4786 RVA: 0x00168EE0 File Offset: 0x001670E0 private void SelectJoyObject() { Button button = null; if (this.selected == "Light Attack") { this.selectedLightAtk.enabled = true; button = this.lightAtkBtn; } else { this.selectedLightAtk.enabled = false; } if (this.selected == "Special Attack 1" && this.special1.enabled) { this.selectedSpecial1.enabled = true; button = this.specialBtn1; } else { this.selectedSpecial1.enabled = false; } if (this.selected == "Medium Attack") { this.selectedMediumAtk.enabled = true; button = this.mediumAtkBtn; } else { this.selectedMediumAtk.enabled = false; } if (this.selected == "Heavy Attack") { this.selectedHeavyAtk.enabled = true; button = this.heavyAtkBtn; } else { this.selectedHeavyAtk.enabled = false; } if (this.selected == "Item 1") { this.selectedItem1.enabled = true; button = this.item1Btn; } else { this.selectedItem1.enabled = false; } if (this.selected == "Item 2") { this.selectedItem2.enabled = true; button = this.item2Btn; } else { this.selectedItem2.enabled = false; } if (this.selected == "Item 3") { this.selectedItem3.enabled = true; button = this.item3Btn; } else { this.selectedItem3.enabled = false; } if (this.selected == "Charm") { this.selectedCharm.enabled = true; button = this.charmBtn; } else { this.selectedCharm.enabled = false; } if (this.selected == "Spellbag") { this.selectedSpells.enabled = true; button = this.spellsBtn; } else { this.selectedSpells.enabled = false; } if (this.selected == "Shout") { this.selectedShout.enabled = true; button = this.shoutBtn; } else { this.selectedShout.enabled = false; } if (this.selected == "Sneak") { this.selectedSneak.enabled = true; button = this.sneakBtn; } else { this.selectedSneak.enabled = false; } if (button) { EventSystem.current.SetSelectedGameObject(button.gameObject); Links.x.hudControl.SetJoyBox(button.gameObject.GetComponent()); this.SetPocketImg(button.gameObject); } this.RemoveCommandUI(); } // Token: 0x060012B3 RID: 4787 RVA: 0x00169174 File Offset: 0x00167374 private string GetJoystickDirection(float angle) { if (angle >= 0f && angle < 45f) { return "Up"; } if (angle >= 315f && angle <= 360f) { return "Up"; } if (angle >= 225f && angle < 315f) { return "Left"; } if (angle >= 135f && angle < 225f) { return "Down"; } if (angle >= 45f) { return "Right"; } return "Right"; } // Token: 0x060012B4 RID: 4788 RVA: 0x001691F4 File Offset: 0x001673F4 public void SetButtonsForCharacter() { int num = 5; if (this.character.stats.HasSpellbook()) { this.spellsGo.SetActive(true); num++; } else { this.spellsGo.SetActive(false); } if (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost >= Links.x.hudControl.rallyInterval) { this.specialGo.SetActive(true); num++; } else { this.specialGo.SetActive(false); } this.items1Go.SetActive(this.item1.enabled); if (this.item1.enabled) { num++; } this.items2Go.SetActive(this.item2.enabled); if (this.item2.enabled) { num++; } this.items3Go.SetActive(this.item3.enabled); if (this.item3.enabled) { num++; } } // Token: 0x060012B5 RID: 4789 RVA: 0x001692F8 File Offset: 0x001674F8 public void HitKey(int i) { if (i == 34) { this.attackPointer.PointerDownAction(); } if (i == 35) { this.pinPointer.PointerDownAction(); } if (i == 36) { this.chargePointer.PointerDownAction(); } if (i == 37) { this.rallyPointer.PointerDownAction(); } if (i == 38) { this.spellsPointer.PointerDownAction(); } if (i == 39) { this.sneakPointer.PointerDownAction(); } if (i == 40) { this.talkPointer.PointerDownAction(); } if (i == 41) { this.item1Pointer.PointerDownAction(); } if (i == 42) { this.item2Pointer.PointerDownAction(); } if (i == 43) { this.item3Pointer.PointerDownAction(); } } // Token: 0x060012B6 RID: 4790 RVA: 0x001693A8 File Offset: 0x001675A8 private void Update() { if (this.character) { Character character = this.character; if ((!character.CanAttack() || character.attackTime < 1f || Links.x.gameplay.playerInAction) && this.selectedLightAtk.enabled) { this.selectedLightAtk.enabled = false; this.selectedSpecial1.enabled = false; this.selectedMediumAtk.enabled = false; this.selectedHeavyAtk.enabled = false; this.selectedItem1.enabled = false; this.selectedItem2.enabled = false; this.selectedItem3.enabled = false; this.selectedCharm.enabled = false; this.selectedSpells.enabled = false; this.selectedShout.enabled = false; this.selectedSneak.enabled = false; this.spellsBtn.interactable = false; this.item1Btn.interactable = false; this.item2Btn.interactable = false; this.item3Btn.interactable = false; this.lightAtkBtn.interactable = false; this.mediumAtkBtn.interactable = false; this.heavyAtkBtn.interactable = false; this.shoutBtn.interactable = false; this.sneakBtn.interactable = false; this.specialBtn1.interactable = false; this.lightTrig.noIcon = true; this.mediumTrig.noIcon = true; this.heavyTrig.noIcon = true; this.special1Trig.noIcon = true; this.charmTrig.noIcon = true; this.sneakTrig.noIcon = true; this.talkTrig.noIcon = true; this.item1Trig.noIcon = true; this.item2Trig.noIcon = true; this.item3Trig.noIcon = true; this.spellTrig.noIcon = true; } if (character.CanAttack()) { if (!this.spellsBtn.interactable) { this.spellsBtn.interactable = true; this.item1Btn.interactable = true; this.item2Btn.interactable = true; this.item3Btn.interactable = true; this.lightAtkBtn.interactable = true; this.shoutBtn.interactable = true; this.sneakBtn.interactable = true; this.specialBtn1.interactable = true; this.lightTrig.noIcon = false; this.mediumTrig.noIcon = false; this.special1Trig.noIcon = false; this.charmTrig.noIcon = false; this.sneakTrig.noIcon = false; this.talkTrig.noIcon = false; this.item1Trig.noIcon = false; this.item2Trig.noIcon = false; this.item3Trig.noIcon = false; this.spellTrig.noIcon = false; } if (character.stats.stamina > 25f && !Records.x.partySailing) { if (!this.heavyAtkBtn.interactable) { this.heavyAtkBtn.interactable = true; this.heavyTrig.noIcon = false; } } else if (this.heavyAtkBtn.interactable) { this.heavyAtkBtn.interactable = false; this.heavyTrig.noIcon = true; } if (character.stats.stamina > 15f && !Records.x.partySailing) { if (!this.mediumAtkBtn.interactable) { this.mediumAtkBtn.interactable = true; this.mediumTrig.noIcon = false; } } else if (this.mediumAtkBtn.interactable) { this.mediumAtkBtn.interactable = false; this.mediumTrig.noIcon = true; } } if (!this.specialGo.activeSelf && Links.x.fellowship.rally + Links.x.fellowship.rallyBoost >= Links.x.hudControl.rallyInterval && character) { this.Open(character); } } if (Links.x.joy) { if (Records.x.pocketPause && (Links.x.combat.inPocketAttack || Links.x.main.CanAttack())) { this.joyOpen = true; if (!this.controllerWheel1.activeSelf) { this.ControllerMessage(true); } } else { this.joyOpen = false; if (this.canvasGroup.alpha < 1f && !this.rallyWheelOpen && !Links.x.combat.inPocketAttack) { this.canvasGroup.interactable = true; this.canvasGroup.alpha = 1f; this.canvasGroup.blocksRaycasts = true; } if (this.controllerWheel1.activeSelf) { this.ControllerMessage(false); } } } if (Links.x.joy && (this.joyOpen || this.rallyWheelOpen) && !Records.x.inMenus && !Links.x.gameplay.tp1.open && !Links.x.gameplay.tp2.open && !Links.x.gameplay.tp3.open && !Links.x.gameplay.tp4.open && this.closeRoutine == null && this.openRoutine == null && (this.canvasGroup.interactable || this.rallyWheelOpen)) { bool flag = false; if (Links.x.gameplay.currentEventObject && Links.x.hudControl.joyRT.gameObject.activeSelf) { if (!Links.x.gameplay.currentEventObject.activeSelf || !Links.x.gameplay.currentEventObject.activeInHierarchy) { flag = true; } } else { flag = true; } if (!this.spellbookWindow.gameObject.activeSelf && !this.rallyWheelOpen) { bool flag2 = false; if (flag) { this.ToggleButtons(true); if (flag) { flag2 = true; } if (Links.x.gameplay.currentEventObject) { if (Links.x.gameplay.currentEventObject.transform.parent && !Links.x.gameplay.currentEventObject.transform.parent.gameObject.name.Contains("Pocket Wheel")) { flag2 = true; } } else { flag2 = true; } if (this.spellbookWindow.gameObject.activeSelf) { flag2 = false; } } if (!flag2 && this.selected != "" && !flag && Mathf.Abs(Links.x.fellowship.move.magnitude) > 0.1f && !Links.x.gameplay.gameFeedScrolling && !Links.x.gameplay.dockDown && Time.timeSinceLevelLoad > this.lastChange + 0.2f) { bool flag3 = true; if (Links.x.fellowship.move.x < 0f) { flag3 = false; } if (flag3) { string text = ""; if (this.selected == "Light Attack") { text = "Medium Attack"; } if (this.selected == "Medium Attack") { text = "Heavy Attack"; } if (this.selected == "Heavy Attack") { if (this.special1Trig.gameObject.transform.parent.gameObject.activeSelf) { text = "Special Attack 1"; } else if (this.spellTrig.gameObject.transform.parent.gameObject.activeSelf) { text = "Spellbag"; } else { text = "Sneak"; } } if (this.selected == "Special Attack 1") { if (this.spellTrig.gameObject.transform.parent.gameObject.activeSelf) { text = "Spellbag"; } else { text = "Sneak"; } } if (this.selected == "Spellbag") { text = "Sneak"; } if (this.selected == "Sneak") { text = "Shout"; } if (this.selected == "Shout") { if (this.item1Trig.gameObject.transform.parent.gameObject.activeSelf) { text = "Item 1"; } else if (this.item2Trig.gameObject.transform.parent.gameObject.activeSelf) { text = "Item 2"; } else if (this.item3Trig.gameObject.transform.parent.gameObject.activeSelf) { text = "Item 3"; } } if (this.selected == "Item 1") { if (this.item2Trig.gameObject.transform.parent.gameObject.activeSelf) { text = "Item 2"; } else if (this.item3Trig.gameObject.transform.parent.gameObject.activeSelf) { text = "Item 3"; } } if (this.selected == "Item 2" && this.item3Trig.gameObject.transform.parent.gameObject.activeSelf) { text = "Item 3"; } if (text != "") { this.lastChange = Time.timeSinceLevelLoad; this.selected = text; this.SelectJoyObject(); } } else { string text2 = ""; if (this.selected == "Medium Attack") { text2 = "Light Attack"; } if (this.selected == "Heavy Attack") { text2 = "Medium Attack"; } if (this.selected == "Special Attack 1") { text2 = "Heavy Attack"; } if (this.selected == "Spellbag") { if (this.special1Trig.gameObject.transform.parent.gameObject.activeSelf) { text2 = "Special Attack 1"; } else { text2 = "Heavy Attack"; } } if (this.selected == "Sneak") { if (this.spellTrig.gameObject.transform.parent.gameObject.activeSelf) { text2 = "Spellbag"; } else if (this.special1Trig.gameObject.transform.parent.gameObject.activeSelf) { text2 = "Special Attack 1"; } else { text2 = "Heavy Attack"; } } if (this.selected == "Shout") { text2 = "Sneak"; } if (this.selected == "Item 1") { text2 = "Shout"; } if (this.selected == "Item 2") { if (this.item1Trig.gameObject.transform.parent.gameObject.activeSelf) { text2 = "Item 1"; } else { text2 = "Shout"; } } if (this.selected == "Item 3") { if (this.item2Trig.gameObject.transform.parent.gameObject.activeSelf) { text2 = "Item 2"; } else if (this.item1Trig.gameObject.transform.parent.gameObject.activeSelf) { text2 = "Item 1"; } else { text2 = "Shout"; } } if (text2 != "") { this.lastChange = Time.timeSinceLevelLoad; this.selected = text2; this.SelectJoyObject(); } } this.GetSelectedFromRotatation(); } if (flag2) { if (this.selected == "") { this.selected = "Light Attack"; } this.SelectJoyObject(); if (flag) { this.SetDirection(this.selected); } } Links.x.hudControl.ToggleBothCanvasGroup(false); Links.x.hudControl.cardCanvasGroup.interactable = true; if (Links.x.gameplay.actionStart && !this.targetSelection) { if (this.selected.Contains("Attack") || this.Charming() || Links.x.gameplay.spellTargetingParty || Links.x.gameplay.spellTargetingEnemy) { if (this.selected.Contains("Special")) { if (this.specialBtn1.interactable) { this.Select(this.selected); } } else { this.Select(this.selected); } } else if (this.spellbookWindow.gameObject.activeSelf) { if (Links.x.gameplay.spellTargetingGround) { } } else { this.Select(this.selected); } } } if (this.spellbookWindow.gameObject.activeSelf) { this.ToggleButtons(false); if (Links.x.gameplay.cancelStart && this.selected == "Spellbag") { if (Links.x.joy) { this.skillBag.CloseSpells(); this.spellbook.SetActive(false); } Links.x.gameplay.RemoveSpellTargets(); } } if (this.rallyWheelOpen) { if (this.rallyCanvasGroup.interactable) { if (flag) { if (this.selectedRallyCharacter) { int num = this.party.IndexOf(this.selectedRallyCharacter); EventSystem.current.SetSelectedGameObject(this.damageAttacksPaper[num].gameObject); Links.x.hudControl.SetJoyBox(this.damageAttacksPaper[num].gameObject.GetComponent()); } else { GameObject firstOpenRallyButton = this.GetFirstOpenRallyButton(); EventSystem.current.SetSelectedGameObject(firstOpenRallyButton.gameObject); if (firstOpenRallyButton) { Links.x.hudControl.SetJoyBox(firstOpenRallyButton.gameObject.GetComponent()); } } } else { GameObject currentEventObject = Links.x.gameplay.currentEventObject; GameObject gameObject = null; if (this.ammoOpen) { for (int i = 0; i < this.usedAmmos.Count; i++) { if (currentEventObject == this.usedAmmos[i]) { gameObject = currentEventObject; break; } } } for (int j = 0; j < this.damageAttacksPaper.Count; j++) { if (currentEventObject == this.damageAttacksPaper[j].gameObject) { gameObject = currentEventObject; break; } } if (!gameObject) { for (int k = 0; k < this.cripplingAttacksPaper.Count; k++) { if (currentEventObject == this.cripplingAttacksPaper[k].gameObject) { gameObject = currentEventObject; break; } } } if (!gameObject) { for (int l = 0; l < this.bothAttacksPaper.Count; l++) { if (currentEventObject == this.bothAttacksPaper[l].gameObject) { gameObject = currentEventObject; break; } } } if (gameObject) { this.prevSelectedObject = gameObject; Links.x.hudControl.JoyBounds(gameObject.GetComponent().rt, gameObject.GetComponent().boxOffset, false); if (Links.x.gameplay.actionStart) { gameObject.gameObject.GetComponent().PointerDownAction(); } if (Links.x.gameplay.interactStart) { gameObject.gameObject.GetComponent().PointerDownInteract(); } } } } if (Links.x.gameplay.cancelStart) { if (!this.selectedAmmoImage.activeSelf) { if (this.ammoOpen) { this.CloseAmmo(); } else { this.CloseRallyWheel(true); } } else { this.StartFade(false); } } } } if (Links.x.mk && this.open && !Records.x.inMenus && !Links.x.gameplay.tp1.open && !Links.x.gameplay.tp2.open && !Links.x.gameplay.tp3.open && !Links.x.gameplay.tp4.open && this.closeRoutine == null && this.openRoutine == null) { bool flag4 = false; if (Links.x.gameplay.spellTargetingGround || Links.x.gameplay.spellTargetingEnemy || Links.x.gameplay.spellTargetingParty) { flag4 = true; } if ((this.spellbookWindow.gameObject.activeSelf || flag4) && Input.GetMouseButtonDown(1) && !Links.x.gameplay.uiHover && (this.selected == "Spellbag" || flag4)) { Links.x.gameplay.RemoveAbilityInfo(); if (this.selected != "Spellbag") { Links.x.gameplay.PocketPause(false); } } } if (Links.x.mk && this.rallyWheelOpen && !Links.x.hudControl.descriptionWindowOpen && Input.GetMouseButtonUp(1)) { if (!this.selectedAmmoImage.activeSelf) { this.CloseRallyWheel(true); } else { this.StartFade(false); } } if (Links.x.gameplay.tp1.open || Links.x.gameplay.tp2.open || Links.x.gameplay.tp3.open || Links.x.gameplay.tp3.open || Records.x.inMenus) { this.ToggleButtons(false); } if ((this.open || this.rallyWheelOpen) && this.selectedAmmoImage.activeSelf && this.selectedRallyBtn) { this.selectedAmmoImage.transform.position = this.selectedRallyBtn.transform.position; } if (this.fading) { this.currentDither = Mathf.Lerp(this.startDither, this.endDither, this.fadeAmount); if ((this.endDither > 0.9f && this.currentDither >= this.endDither) || (this.endDither == 0f && this.currentDither <= this.endDither)) { this.fading = false; } this.fadeAmount += Time.deltaTime * 4f; this.rallyCanvasGroup.alpha = 1f - this.currentDither; } } // Token: 0x060012B7 RID: 4791 RVA: 0x0016A678 File Offset: 0x00168878 public void ToggleButtons(bool state) { this.spellsBtn.interactable = state; this.lightAtkBtn.interactable = state; this.mediumAtkBtn.interactable = state; this.heavyAtkBtn.interactable = state; this.charmBtn.interactable = state; this.shoutBtn.interactable = state; this.sneakBtn.interactable = state; if (!state || (state && this.item1.enabled)) { this.item1Btn.interactable = state; } if (!state || (state && this.item2.enabled)) { this.item2Btn.interactable = state; } if (!state || (state && this.item3.enabled)) { this.item3Btn.interactable = state; } } // Token: 0x060012B8 RID: 4792 RVA: 0x0016A736 File Offset: 0x00168936 private void SetScale(bool allOff) { } // Token: 0x060012B9 RID: 4793 RVA: 0x0016A738 File Offset: 0x00168938 public void SetHotkeys(bool mk) { if (mk) { this.attackKey.text = ""; this.pinKey.text = ""; this.chargeKey.text = ""; this.rallyKey.text = ""; this.spellsKey.text = ""; this.sneakKey.text = ""; this.talkKey.text = ""; this.item1Key.text = ""; this.item2Key.text = ""; this.item3key.text = ""; return; } this.attackKey.text = ""; this.pinKey.text = ""; this.chargeKey.text = ""; this.rallyKey.text = ""; this.spellsKey.text = ""; this.sneakKey.text = ""; this.talkKey.text = ""; this.item1Key.text = ""; this.item2Key.text = ""; this.item3key.text = ""; } // Token: 0x060012BA RID: 4794 RVA: 0x0016AAA0 File Offset: 0x00168CA0 public void Open(Character c) { if (this.open && this.character) { this.SaveSelected(); this.skillBag.CloseSpells(); this.SetDirection(this.selected); } else { this.arrow.enabled = false; } this.character = c; if (this.character.CanAttack()) { this.halfOpen = false; } else { this.halfOpen = true; } Links.x.hudControl.ToggleControllerItemsIcon(false); this.hoverField.text = ""; this.hoverFieldRally.text = ""; this.EnableBorder(""); this.SetScale(true); this.CloseAmmo(); this.selectedRallyCharacter = null; this.rallyWheelOpen = false; if (this.character.portrait) { this.skillBag = this.character.portrait.skillBag; } this.rally1 = null; this.rally2 = null; if (this.character.IsSentient() && this.closeRoutine != null) { base.StopCoroutine(this.closeRoutine); this.closeRoutine = null; } this.open = true; Links.x.gameplay.joystickTarget.SetActive(false); if (this.targetSelection) { Links.x.rtsCamera.Zoom(false, "TargetSelect"); Links.x.rtsCamera.targetSelecting = false; } this.targetSelection = false; Links.x.partyColliderAdventure.SetTargetText(0); this.SetupItems(); this.selected = this.GetSelected(); this.canTarget = false; this.timeSinceOpen = Time.timeSinceLevelLoad; this.SetRallyButtons(); Links.x.follow.position = c.tr.position + c.HeadHeight(); this.ToggleButtons(true); if (!this.rallyWheelOpen && !Links.x.combat.inPocketAttack) { this.canvasGroup.interactable = true; this.canvasGroup.alpha = 1f; this.canvasGroup.blocksRaycasts = true; } this.targetSelection = false; this.skillBag.SetSelectedState(); if (Links.x.joy) { this.ControllerMessage(true); this.controllerWheel2.SetActive(false); this.controllerWheel4.SetActive(false); Links.x.partyColliderAdventure.SetTargetText(0); } else { this.ControllerMessage(false); } if (this.selected == "Light Attack" || this.selected == "Medium Attack" || this.selected == "Heavy Attack" || this.Charming() || (this.spellsBtn.interactable && this.selected == "Spellbag")) { this.EnableBorder(this.selected); if (this.selected == "Spellbag") { this.Select("Spellbag"); } if (Links.x.joy) { if (this.selected == "Light Attack" || this.selected == "Medium Attack" || this.selected == "Heavy Attack" || this.selected == "Charm") { this.ControllerSelect(this.selected, false, false); } else { this.ControllerSelect(this.selected, true, false); } } } else { this.selected = "Light Attack"; Debug.Log("Set as light attack"); this.EnableBorder("Light Attack"); if (Links.x.joy) { this.ControllerSelect(this.selected, false, false); } this.SetScale(false); } this.skillBag.TooltipOff(); if (Links.x.mk) { this.arrow.enabled = false; this.spellbookTop.interactable = true; this.closeSpellbook.gameObject.SetActive(false); this.SetDirection(this.selected); } else { this.spellbookTop.interactable = false; this.closeSpellbook.gameObject.SetActive(true); this.closeSpellbook.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.closeSpellbook.text = Links.x.gameplay.cancelText; this.SetDirection(this.selected); } this.openRoutine = null; bool flag = false; if (Links.x.joy && this.joyOpen) { this.SelectJoyObject(); if (Links.x.combat.ItemCardCount() == 0) { this.lightTrig.noIcon = true; this.mediumTrig.noIcon = true; this.heavyTrig.noIcon = true; flag = true; } else { this.lightTrig.noIcon = false; this.mediumTrig.noIcon = false; this.heavyTrig.noIcon = false; } if (this.selected == "Light Attack") { this.SetHoverText(true, this.lightAtk.gameObject); } if (this.selected == "Special Attack 1") { this.SetHoverText(true, this.special1.gameObject); } if (this.selected == "Medium Attack") { this.SetHoverText(true, this.mediumAtk.gameObject); } if (this.selected == "Heavy Attack") { this.SetHoverText(true, this.heavyAtk.gameObject); } if (this.selected == "Spellbag") { this.SetHoverText(true, this.spells.gameObject); } if (this.selected == "Charm") { this.SetHoverText(true, this.charm.gameObject); } if (this.selected == "Item 1") { this.SetHoverText(true, this.item1.gameObject); } if (this.selected == "Item 2") { this.SetHoverText(true, this.item2.gameObject); } if (this.selected == "Item 3") { this.SetHoverText(true, this.item3.gameObject); } if (this.selected == "Shout") { this.SetHoverText(true, this.shoutBtn.gameObject); } if (this.selected == "Sneak") { this.SetHoverText(true, this.sneakBtn.gameObject); } this.SetScale(false); } this.SetButtonsForCharacter(); if (this.selected == "Spellbag" && Links.x.mk && this.spellsGo.activeSelf) { this.skillBag.OpenSpells(); } else if (this.spellbook.activeSelf) { this.CloseSpellsAndSongs(); } if (this.character.stats.stamina >= 25f && !flag) { this.heavyTrig.noIcon = false; this.heavyAtkBtn.interactable = true; } else { this.heavyTrig.noIcon = true; this.heavyAtkBtn.interactable = false; if (this.selected == "Heavy Attack" && Links.x.joy) { this.SelectLightAttack(); Links.x.gameplay.SetDomeSize(); } } if (this.character.stats.stamina >= 15f && !flag) { this.mediumTrig.noIcon = false; this.mediumAtkBtn.interactable = true; return; } this.mediumTrig.noIcon = true; this.mediumAtkBtn.interactable = false; if (this.selected == "Medium Attack" && Links.x.joy) { this.SelectLightAttack(); Links.x.gameplay.SetDomeSize(); } } // Token: 0x060012BB RID: 4795 RVA: 0x0016B274 File Offset: 0x00169474 public void SetupItems() { if (this.skillBag) { for (int i = 0; i < 3; i++) { Image image = this.item1; Image image2 = this.item1back; TextMeshProUGUI textMeshProUGUI = this.item1stack; Library.Inventory inventory = this.skillBag.beltItemRow1; int num = this.skillBag.beltIndex1; if (i == 1) { image = this.item2; textMeshProUGUI = this.item2stack; image2 = this.item2back; num = this.skillBag.beltIndex2; inventory = this.skillBag.beltItemRow2; } if (i == 2) { image = this.item3; textMeshProUGUI = this.item3stack; image2 = this.item3back; num = this.skillBag.beltIndex3; inventory = this.skillBag.beltItemRow3; } if (num > 1 && (inventory._RightClickAction == "Consume" || inventory._Tag.Contains("Scroll") || inventory._MainSkill.Contains("Charm"))) { image.enabled = true; string text = ""; if (i == 0) { image.sprite = this.skillBag.beltItem1Img.sprite; text = this.skillBag.beltItem1text.text; } if (i == 1) { image.sprite = this.skillBag.beltItem2Img.sprite; text = this.skillBag.beltItem2text.text; } if (i == 2) { image.sprite = this.skillBag.beltItem3Img.sprite; text = this.skillBag.beltItem3text.text; } if (text == "1" || text == "" || inventory._Tag.Contains("Scroll")) { textMeshProUGUI.enabled = false; image2.enabled = false; } else { textMeshProUGUI.enabled = true; textMeshProUGUI.text = text; image2.enabled = true; } } else { image.enabled = false; textMeshProUGUI.enabled = false; image2.enabled = false; } } this.dropItem1.gameObject.SetActive(this.item1.enabled); this.dropItem2.gameObject.SetActive(this.item2.enabled); this.dropItem3.gameObject.SetActive(this.item3.enabled); this.item1Btn.enabled = this.item1.enabled; this.item2Btn.enabled = this.item2.enabled; this.item3Btn.enabled = this.item3.enabled; } } // Token: 0x060012BC RID: 4796 RVA: 0x0016B50C File Offset: 0x0016970C public void ControllerMessage(bool state) { RectOffset rectOffset = new RectOffset(this.glg.padding.left, this.glg.padding.right, this.glg.padding.top, this.glg.padding.bottom); if (state) { rectOffset.right = -40; } else { rectOffset.right = 0; } rectOffset.left = 0; this.glg.padding = rectOffset; this.controllerWheel1.SetActive(state); } // Token: 0x060012BD RID: 4797 RVA: 0x0016B594 File Offset: 0x00169794 public void Close(bool showItem) { this.SaveSelected(); if (Links.x.joy) { this.spellbook.SetActive(false); } this.arrow.enabled = false; this.ControllerMessage(false); this.controllerWheel2.SetActive(false); this.controllerWheel4.SetActive(false); if (Links.x.joy) { Links.x.partyColliderAdventure.SetTargetText(0); } this.RemoveCommandUI(); if (this.selected == "Special Attack 1") { this.SelectLightAttack(); } if (this.rallyWheelOpen) { this.CloseRallyWheel(false); } this.rallyWheelOpen = false; this.CloseAmmo(); this.rallyText.SetActive(false); if (Links.x.joy && this.targetSelection) { if (!Links.x.combat.inRally && !Links.x.combat.inPocketAttack) { Links.x.rtsCamera.Zoom(false, "TargetSelect"); } Links.x.rtsCamera.targetSelecting = false; Links.x.rtsCamera.joyTarget = null; } if (Links.x.joy && !Records.x.inMenus && !Links.x.gameplay.inPartyDock) { Links.x.hudControl.JoyBox(false); } if (this.rallyOpen != null) { base.StopCoroutine(this.rallyOpen); this.rallyOpen = null; } this.rallyWheel.SetActive(false); Links.x.hudControl.ToggleControllerItemsIcon(true); if (Links.x.joy) { this.CloseSpellsAndSongs(); } if (this.skillBag) { this.skillBag.SetSelectedState(); } this.targetSelection = false; this.EnableBorder(""); this.closeRoutine = null; } // Token: 0x060012BE RID: 4798 RVA: 0x0016B76C File Offset: 0x0016996C public void Select(string type) { if (type == "" || type == "Close" || type.Contains("Portrait")) { return; } if (type.Contains("Rally Attack")) { this.SelectRally(type); } else { if (type == "Special Attack 1" && !this.specialBtn1.interactable) { return; } if (type.Contains("Ammo")) { return; } if (type == "Heavy Attack" && !this.heavyAtkBtn.interactable) { return; } if (type == "Light Attack" && !this.lightAtkBtn.interactable) { return; } if (type == "Medium Attack" && !this.mediumAtkBtn.interactable) { return; } if (type == "Sneak" && !this.sneakBtn.interactable) { return; } if (type == "Shout" && !this.shoutBtn.interactable) { return; } if (type == "Spellbag" && !this.spellsBtn.interactable) { return; } if (type == "Item 1" && !this.item1Btn.interactable) { return; } if (type == "Item 2" && !this.item2Btn.interactable) { return; } if (type == "Item 3" && !this.item3Btn.interactable) { return; } this.EnableBorder(type); if (type == "Spellbook") { if (this.spells.material != this.noBook) { this.selected = type; } } else { this.selected = type; } if (type == "Light Attack") { Links.x.gameplay.SetDomeSize(); Links.x.combat.GetTargets(false, false, null); this.CloseSpellsAndSongs(); } if (type == "Special Attack 1" && this.specialBtn1.interactable) { this.canTarget = false; Links.x.gameplay.SetDomeSize(); Links.x.combat.GetTargets(false, false, null); this.CloseSpellsAndSongs(); if (Links.x.mk) { this.OpenRallyWheel(true); } else if (Links.x.joy && Links.x.gameplay.actionStart && !this.rallyWheelOpen) { this.OpenRallyWheel(true); } } if (type == "Medium Attack") { Links.x.gameplay.SetDomeSize(); Links.x.combat.GetTargets(false, false, null); this.CloseSpellsAndSongs(); } if (type == "Heavy Attack") { Links.x.gameplay.SetDomeSize(); Links.x.combat.GetTargets(false, false, null); this.CloseSpellsAndSongs(); } if (type.Contains("Item")) { Library.Inventory inventory = this.skillBag.beltItemRow1; if (type.Contains("2")) { inventory = this.skillBag.beltItemRow2; } if (type.Contains("3")) { inventory = this.skillBag.beltItemRow3; } if (inventory._MainSkill == "Charm") { Links.x.gameplay.SetDomeSize(); Links.x.combat.GetTargets(false, false, null); this.CloseSpellsAndSongs(); } else { bool flag = false; if (type == "Item 1") { this.skillBag.UseBeltItem1(true); } if (type == "Item 2") { this.skillBag.UseBeltItem2(true); } if (type == "Item 3") { this.skillBag.UseBeltItem3(true); } this.CloseSpellsAndSongs(); this.selected = ""; this.EnableBorder(""); this.SetupItems(); if (Links.x.joy && flag) { this.selected = ""; this.GetSelectedFromRotatation(); } } } if (type == "Charm") { Links.x.gameplay.SetDomeSize(); Links.x.combat.GetTargets(false, false, null); this.CloseSpellsAndSongs(); } if (this.spells.material != this.noBook && type == "Spellbag") { Links.x.gameplay.SetDomeSize(); Links.x.combat.GetTargets(false, false, null); this.CloseSpellsAndSongs(); this.OpenSpells(); } if (type == "Shout") { Links.x.gameplay.SetDomeSize(); this.skillBag.portrait.textParser.StartMenu(this.skillBag.portrait); this.CloseSpellsAndSongs(); this.EndTurn(0.5f); } if (type == "Sneak") { Links.x.gameplay.SetDomeSize(); this.skillBag.Sneak(); this.EndTurn(0f); this.CloseSpellsAndSongs(); } } this.RemoveCommandUI(); this.SetScale(false); } // Token: 0x060012BF RID: 4799 RVA: 0x0016BC74 File Offset: 0x00169E74 public bool StartPocket(string type) { if (type.Contains("Item")) { if (type.Contains("1") && !(this.skillBag.beltItemRow1._MainSkill == "Charm") && !this.skillBag.beltItemRow1._Tag.Contains("Scroll")) { return false; } if (type.Contains("2") && !(this.skillBag.beltItemRow2._MainSkill == "Charm") && !this.skillBag.beltItemRow2._Tag.Contains("Scroll")) { return false; } if (type.Contains("3") && !(this.skillBag.beltItemRow3._MainSkill == "Charm") && !this.skillBag.beltItemRow3._Tag.Contains("Scroll")) { return false; } } if (type == "Shout" || type == "Sneak") { return false; } if (!Records.x.pocketPause) { Links.x.gameplay.PocketPause(true); return false; } if (Records.x.pocketPause && type == this.selected && type != "Special Attack 1") { Links.x.gameplay.PocketPause(false); this.CloseSpellsAndSongs(); return true; } return false; } // Token: 0x060012C0 RID: 4800 RVA: 0x0016BDE0 File Offset: 0x00169FE0 public void SelectLightAttack() { this.selected = "Light Attack"; this.EnableBorder("Light Attack"); if (Links.x.joy) { this.ControllerSelect(this.selected, false, false); } this.SetScale(false); this.Select("Light Attack"); if (!this.open) { this.character = Links.x.main; this.SaveSelected(); } } // Token: 0x060012C1 RID: 4801 RVA: 0x0016BE50 File Offset: 0x0016A050 public bool Charming() { if (this.selected.Contains("Item")) { if (this.selected == "Item 1" && this.skillBag.beltItemRow1._MainSkill == "Charm") { return true; } if (this.selected == "Item 2" && this.skillBag.beltItemRow2._MainSkill == "Charm") { return true; } if (this.selected == "Item 3" && this.skillBag.beltItemRow3._MainSkill == "Charm") { return true; } } return false; } // Token: 0x060012C2 RID: 4802 RVA: 0x0016BF04 File Offset: 0x0016A104 public bool HasSpellScroll() { if (this.selected.Contains("Item")) { if (this.selected == "Item 1" && this.skillBag.beltItemRow1._Tag.Contains("Scroll")) { return true; } if (this.selected == "Item 2" && this.skillBag.beltItemRow2._Tag.Contains("Scroll")) { return true; } if (this.selected == "Item 3" && this.skillBag.beltItemRow3._Tag.Contains("Scroll")) { return true; } } return false; } // Token: 0x060012C3 RID: 4803 RVA: 0x0016BFB8 File Offset: 0x0016A1B8 public void WaitForTargets() { bool flag = true; if (this.selected.Contains("Attack")) { if (Links.x.combat.ItemCardCount() == 0) { flag = false; } } else if (this.selected.Contains("Charm") && Links.x.combat.TargetCount() == 0) { flag = false; } if (Links.x.joy && Time.timeSinceLevelLoad > this.timeSinceOpen + 0.25f && !this.targetSelection && flag) { this.targetSelection = true; this.canvasGroup.interactable = false; this.canvasGroup.blocksRaycasts = false; this.canvasGroup.alpha = 0.25f; Links.x.hudControl.JoyBox(false); Links.x.gameplay.waitingForActionUp = true; this.prevSelectedObject = Links.x.gameplay.currentEventObject; EventSystem.current.SetSelectedGameObject(null); this.ControllerMessage(false); if (this.selected != "Spellbag") { this.controllerWheel2.SetActive(true); } else if (Links.x.gameplay.spellTargetingGround) { this.controllerWheel4.SetActive(true); } else { this.controllerWheel2.SetActive(true); } Links.x.gameplay.GetControllerTarget(false); Links.x.gameplay.SetJoystickTargetActive(); if (Links.x.joy) { Links.x.rtsCamera.Zoom(true, "TargetSelect"); Links.x.rtsCamera.targetSelecting = true; } Links.x.partyColliderAdventure.SetTargetText(Links.x.combat.ItemCardCount()); } } // Token: 0x060012C4 RID: 4804 RVA: 0x0016C174 File Offset: 0x0016A374 private void CloseSpellsAndSongs() { if (this.spellbook.activeSelf) { this.skillBag.CloseSpells(); this.spellbook.SetActive(false); Links.x.gameplay.RemoveSpellTargets(); } } // Token: 0x060012C5 RID: 4805 RVA: 0x0016C1A9 File Offset: 0x0016A3A9 public void CloseSpellsFromButton() { this.CloseSpellsAndSongs(); this.SelectLightAttack(); } // Token: 0x060012C6 RID: 4806 RVA: 0x0016C1B7 File Offset: 0x0016A3B7 public void OpenSongs() { } // Token: 0x060012C7 RID: 4807 RVA: 0x0016C1B9 File Offset: 0x0016A3B9 public void OpenSpells() { if (!this.spellbook.activeSelf) { this.spellbook.SetActive(true); this.skillBag.OpenSpells(); } } // Token: 0x060012C8 RID: 4808 RVA: 0x0016C1E0 File Offset: 0x0016A3E0 public void EndTurn(float attackTimeReduction) { EventSystem.current.SetSelectedGameObject(null); if (this.character.actions) { this.character.actions.canEndAttackTime = true; this.character.actions.EndAttackTime(attackTimeReduction); } else { if (Records.x.pocketPause && this.character.mainSelected) { Links.x.gameplay.PocketPause(false); } this.character.ZeroAttackTime(attackTimeReduction); if (this.character.mainSelected) { this.character.body.CombatSheen(0); Links.x.cameraEffects.RemoveCombatCharacters(); } } Links.x.hudControl.JoyBox(false); this.Close(true); } // Token: 0x060012C9 RID: 4809 RVA: 0x0016C2A8 File Offset: 0x0016A4A8 public void EnableBorder(string type) { if (this.closeRoutine != null) { return; } if (type == "") { type = "Light Attack"; } if (type == "Special Attack 1" && !this.specialBtn1.interactable) { this.selectedSpecial1.enabled = false; return; } if (type == "Light Attack") { this.selectedLightAtk.enabled = true; } else { this.selectedLightAtk.enabled = false; } if (type == "Special Attack 1") { this.selectedSpecial1.enabled = true; } else { this.selectedSpecial1.enabled = false; } if (type == "Medium Attack") { this.selectedMediumAtk.enabled = true; } else { this.selectedMediumAtk.enabled = false; } if (type == "Heavy Attack") { this.selectedHeavyAtk.enabled = true; } else { this.selectedHeavyAtk.enabled = false; } if (type == "Item 1") { this.selectedItem1.enabled = true; } else { this.selectedItem1.enabled = false; } if (type == "Item 2") { this.selectedItem2.enabled = true; } else { this.selectedItem2.enabled = false; } if (type == "Item 3") { this.selectedItem3.enabled = true; } else { this.selectedItem3.enabled = false; } if (type == "Charm") { this.selectedCharm.enabled = true; } else { this.selectedCharm.enabled = false; } if (type == "Spellbag") { this.selectedSpells.enabled = true; } else { this.selectedSpells.enabled = false; } if (type == "Shout") { this.selectedShout.enabled = true; } else { this.selectedShout.enabled = false; } if (type == "Sneak") { this.selectedSneak.enabled = true; return; } this.selectedSneak.enabled = false; } // Token: 0x060012CA RID: 4810 RVA: 0x0016C4A8 File Offset: 0x0016A6A8 public void ControllerSelect(string type, bool fromButton, bool confirm) { if (type == "" || type == "Close" || type.Contains("Portrait")) { return; } if (type.Contains("Rally Attack")) { this.SelectRally(type); } else { bool flag = false; if (type.Contains("Item")) { if (type.Contains("1") && this.skillBag.beltItemRow1._MainSkill == "Charm") { flag = true; } if (type.Contains("2") && this.skillBag.beltItemRow2._MainSkill == "Charm") { flag = true; } if (type.Contains("3") && this.skillBag.beltItemRow3._MainSkill == "Charm") { flag = true; } } if (type == "Special Attack 1" && !this.specialBtn1.interactable) { this.canTarget = false; return; } if (type == "Heavy Attack" && !this.heavyAtkBtn.interactable) { return; } if (type.Contains("Ammo")) { return; } this.selected = type; if ((type.Contains("Attack") || flag) && confirm) { this.WaitForTargets(); } if (!type.Contains("Item") && !type.Contains("Shout") && !type.Contains("Sneak") && !type.Contains("Spellbag") && !type.Contains("Special Attack 1")) { this.Select(type); } else if (type.Contains("Special Attack 1")) { this.Select(type); } else { if (Links.x.joy) { Links.x.gameplay.GetControllerTarget(false); } Links.x.gameplay.SetDomeSize(); this.EnableBorder(type); } } this.SetScale(false); this.RemoveCommandUI(); } // Token: 0x060012CB RID: 4811 RVA: 0x0016C692 File Offset: 0x0016A892 public bool CanOpenDescription(GameObject go) { return !go.name.Contains("Special") || this.specialBtn1.interactable; } // Token: 0x060012CC RID: 4812 RVA: 0x0016C6B8 File Offset: 0x0016A8B8 private void RemoveCommandUI() { if (this.selected != "Command Reposition" && Links.x.gameplay.repositionTargeting) { Links.x.gameplay.repositionTargeting = false; Links.x.gameplay.ClearEffectTiles(true, null, true); } if (this.selected != "Command Group" && Links.x.gameplay.defenseCircleTargeting) { Links.x.gameplay.defenseCircleRotation = Quaternion.identity; Links.x.gameplay.defenseCircleTargeting = false; Links.x.gameplay.ClearEffectTiles(true, null, true); Links.x.gameplay.messageDefenseHoldMK.SetActive(false); Links.x.gameplay.messageDefenseHoldJoy.SetActive(false); } } // Token: 0x060012CD RID: 4813 RVA: 0x0016C790 File Offset: 0x0016A990 public void SetHoverText(bool on, GameObject g) { string text = ""; if (g) { text = g.name; } if (on && this.window.dragging) { return; } if (text.Contains("Special Attack") && !this.specialBtn1.interactable) { on = false; } if (text.Contains("Damage Rally Attack") || text.Contains("Cripple Rally Attack") || text.Contains("Both Rally Attack")) { int num = 0; if (text.Contains("2")) { num = 1; } if (text.Contains("3")) { num = 2; } if (text.Contains("4")) { num = 3; } if (on) { if ((text.Contains("Damage") && this.damageAttacksBtns[num].interactable) || (text.Contains("Both") && this.bothAttacksBtns[num].interactable) || (text.Contains("Cripple") && this.cripplingAttacksBtns[num].interactable)) { Links.x.combat.hoverShowTargets = true; Links.x.combat.hoverShowTargetsType = text; Links.x.combat.hoverShowTargetCharacter = this.party[num]; Links.x.combat.GetTargets(false, true, this.party[num]); } } else { Links.x.combat.hoverShowTargets = false; Links.x.combat.GetTargets(false, true, this.party[num]); } on = false; } if (!on || !this.skillBag) { this.hoverFieldRally.text = ""; this.hoverField.text = ""; return; } this.str.Clear(); this.str.Append(""); bool flag = true; if (Links.x.joy) { this.hoverField.gameObject.transform.SetParent(this.controllerWheel1.transform, true); this.hoverFieldRT.anchoredPosition3D = this.hoverPositionJoy; } else { this.hoverField.gameObject.transform.SetParent(base.transform, true); this.hoverFieldRT.anchoredPosition3D = this.hoverPositionMK; } if (text == "Light Attack") { this.str.Append("Attack"); } if (text == "Special Attack 1") { this.str.Append("Rally Attacks"); } if (text.Contains("Damage Rally Attack")) { this.str.Append(this.GetSpecialAttackText(1, g, out flag)); } if (text.Contains("Cripple Rally Attack")) { this.str.Append(this.GetSpecialAttackText(2, g, out flag)); } if (text.Contains("Both Rally Attack")) { this.str.Append(this.GetSpecialAttackText(3, g, out flag)); } if (text.Contains("Portrait")) { flag = false; int num2 = 0; if (g.name.Contains("2")) { num2 = 1; } if (g.name.Contains("3")) { num2 = 2; } if (g.name.Contains("4")) { num2 = 3; } bool flag2 = this.open; this.str.Append(this.party[num2].stats.GetName()); } if (text == "Medium Attack") { this.str.Append("Pin"); if (!this.mediumAtkBtn.interactable && !Records.x.partySailing) { this.str.Append(" (Not enough stamina)"); } } if (text == "Heavy Attack") { this.str.Append("Knockback"); if (!this.heavyAtkBtn.interactable && !Records.x.partySailing) { this.str.Append(" (Not enough stamina)"); } } if (text == "Close") { this.str.Append("End Rally Combo"); } if (text == "Item 1") { this.str.Append(this.skillBag.beltItem1Name); } if (text == "Item 2") { this.str.Append(this.skillBag.beltItem2Name); } if (text == "Item 3") { this.str.Append(this.skillBag.beltItem3Name); } if (text == "Charm") { this.str.Append("Bind"); } if (text == "Shout") { this.str.Append("Say Something"); } if (text == "Sneak") { this.str.Append("Sneak"); } if (text == "Spellbag") { this.str.Append("Cast a spell"); } this.hoverField.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); this.hoverFieldRally.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset); if (this.ammoOpen && text.Contains("Ammo")) { int num3 = 0; if (text == "Rare Ammo 1") { num3 = 1; } if (text == "Rare Ammo 2") { num3 = 2; } if (text == "Rare Ammo 3") { num3 = 3; } if (text == "Rare Ammo 4") { num3 = 4; } if (text == "Rare Ammo 5") { num3 = 5; } if (text == "Rare Ammo 6") { num3 = 6; } if (text == "Rare Ammo 7") { num3 = 7; } if (text == "Rare Ammo 8") { num3 = 8; } if (text == "Rare Ammo 9") { num3 = 9; } Library.Inventory invRow = Links.x.library.GetInvRow(this.ammos[num3]); this.str.Append("Use "); this.str.Append(invRow._DisplayName); } if (text != "Close" && flag) { if (Links.x.mk) { this.str.Append(""); this.str.Append("\nDetails"); this.str.Append(" "); this.str.Append(""); if (this.rallyWheelOpen) { this.hoverFieldRally.text = this.str.ToString(); return; } this.hoverField.text = this.str.ToString(); return; } else { this.str.Append(""); if (text.Contains("Item") || text.Contains("Song") || text.Contains("Spell") || text == "Shout" || text == "Sneak") { this.str.Append("\n"); } else { bool flag3 = true; if (text.Contains("Attack") && !text.Contains("Special")) { if (this.lightTrig.noIcon) { this.str.Append("\n No targets in range to attack\n\n "); flag3 = false; } } else if (text.Contains("Charm") && this.charmTrig.noIcon) { if (Links.x.combat.charmFail == "Low Skill") { this.str.Append("\n Targets in range would resist bind attempt\n "); } else if (Links.x.combat.charmFail == "No Beads") { this.str.Append("\n Need Charm Bells to bind\n "); } else if (Links.x.combat.charmFail == "On water") { this.str.Append("\n Cannot bind at sea\n "); } else { this.str.Append("\n No targets in range to bind\n "); } flag3 = false; } if (flag3) { this.str.Append("\n"); } } this.str.Append("Details"); this.str.Append(" "); this.str.Append(""); if (this.rallyWheelOpen) { this.hoverFieldRally.text = this.str.ToString(); return; } this.hoverField.text = this.str.ToString(); return; } } else { if (this.rallyWheelOpen) { this.hoverFieldRally.text = this.str.ToString(); return; } this.hoverField.text = this.str.ToString(); return; } } // Token: 0x060012CE RID: 4814 RVA: 0x0016D110 File Offset: 0x0016B310 public void NewScene() { this.party.Clear(); if (!Records.x.mainMenuOpen) { this.portraitOrder = Links.x.portraitOrder; foreach (Character character in this.portraitOrder.OrderByDescending((Character ch) => ch.stats.partyID)) { this.party.Add(character); } int count = this.party.Count; if (count > 1) { for (int i = count - 1; i >= 0; i--) { this.party.Add(this.party[i]); } if (count >= 1) { this.party.RemoveAt(0); } if (count >= 2) { this.party.RemoveAt(0); } if (count >= 3) { this.party.RemoveAt(0); } if (count >= 4) { this.party.RemoveAt(0); } } } } // Token: 0x060012CF RID: 4815 RVA: 0x0016D228 File Offset: 0x0016B428 private void SelectRally(string type) { GameObject gameObject = null; int num; if (type == "Damage Rally Attack 1" || type == "Cripple Rally Attack 1" || type == "Both Rally Attack 1") { num = 0; } else if (type == "Damage Rally Attack 2" || type == "Cripple Rally Attack 2" || type == "Both Rally Attack 2") { num = 1; } else if (type == "Damage Rally Attack 3" || type == "Cripple Rally Attack 3" || type == "Both Rally Attack 3") { num = 2; } else { num = 3; } if (!this.damageAttacksBtns[num].interactable && !this.cripplingAttacksBtns[num].interactable) { return; } if (type.Contains("Cripple") && !this.cripplingAttacksBtns[num].interactable) { return; } if (type.Contains("Damag") && !this.damageAttacksBtns[num].interactable) { return; } if (type.Contains("Both") && !this.damageAttacksBtns[num].interactable) { return; } if (type.Contains("Cripple") && this.HasAmmo(this.party[num], false) && (this.party[num].invRow1._MainSkill == "Elixir" || this.party[num].invRow1._MainSkill == "Sling")) { this.selectedAmmoImage.SetActive(false); this.selectedRally = ""; this.canTarget = false; if (this.ammoOpen && this.party[num] == this.selectedRallyCharacter) { this.CloseAmmo(); } else { this.CloseAmmo(); this.ShowAmmo(num); } this.selectedRallyCharacter = this.party[num]; } else { this.CloseAmmo(); this.selectedRallyCharacter = this.party[num]; if (type.Contains("Damage")) { gameObject = this.damageAttacks[num].gameObject.transform.parent.gameObject; this.selectedRally = "Damage"; } if (type.Contains("Both")) { gameObject = this.bothAttacks[num].gameObject.transform.parent.gameObject; this.selectedRally = "Both"; } if (type.Contains("Cripp")) { gameObject = this.cripplingAttacks[num].gameObject.transform.parent.gameObject; this.selectedRally = "Wound"; } this.selectedAmmoImage.transform.position = gameObject.transform.position; this.selectedAmmoImage.SetActive(true); this.selectedRallyBtn = gameObject.gameObject; this.canTarget = true; this.StartFade(true); string text; if (type.Contains("Damage")) { bool flag; text = this.GetSpecialAttackText(1, gameObject, out flag); } else { bool flag2; text = this.GetSpecialAttackText(2, gameObject, out flag2); } Links.x.gameplay.SetConfirmText("Select target for " + text); } this.SetSelectedButtonSize(false); this.SetRallyPortraits(); Links.x.gameplay.SetDomeSize(); if (Links.x.joy) { Links.x.hudControl.JoyBox(false); Links.x.gameplay.GetControllerTarget(true); this.WaitForTargets(); } } // Token: 0x060012D0 RID: 4816 RVA: 0x0016D5B4 File Offset: 0x0016B7B4 private void SetSelectedButtonSize(bool small) { foreach (RectTransform rectTransform in this.selectedRallyRTs) { if (rectTransform.gameObject != this.selectedAmmoImage) { if (small) { rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, 120f); } else { rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, 180f); } } } } // Token: 0x060012D1 RID: 4817 RVA: 0x0016D628 File Offset: 0x0016B828 private void SetRallyPortraits() { } // Token: 0x060012D2 RID: 4818 RVA: 0x0016D62C File Offset: 0x0016B82C public void SetRallyButtons() { if (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost >= Links.x.hudControl.rallyInterval) { int rallyAttackCosts = Records.x.GetRallyAttackCosts(1, this.character); Records.x.GetRallyAttackCosts(2, this.character); int num = 1; if (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost >= Links.x.hudControl.rallyInterval * 2f) { num = 2; } if (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost >= Links.x.hudControl.rallyInterval * 3f) { num = 3; } this.SetSpecialAttackSprite(); if (rallyAttackCosts <= num) { this.specialBtn1.interactable = true; this.special1Trig.noIcon = false; this.special1.enabled = true; } else { this.specialBtn1.interactable = false; this.special1Trig.noIcon = true; this.special1.enabled = false; } } else { this.specialBtn1.interactable = false; this.special1Trig.noIcon = true; this.special1.enabled = false; } this.dropSpecial1.gameObject.SetActive(this.specialBtn1.interactable); } // Token: 0x060012D3 RID: 4819 RVA: 0x0016D795 File Offset: 0x0016B995 public void OpenRallyWheel(bool select) { base.gameObject.SetActive(true); this.rallyOpen = this.RallyOpen(select); base.StartCoroutine(this.rallyOpen); } // Token: 0x060012D4 RID: 4820 RVA: 0x0016D7BD File Offset: 0x0016B9BD private IEnumerator RallyOpen(bool select) { this.canvasGroup.alpha = 0f; this.canvasGroup.interactable = false; this.canvasGroup.blocksRaycasts = false; this.arrow.enabled = false; this.rallyWheelOpen = true; Links.x.hudControl.ChangeHudVisibility(false, true); this.selectedRallyCharacter = null; this.selectedAmmoImage.SetActive(false); this.selectedRally = ""; this.selected = "Special Attack 1"; this.rallyCanvasGroup.alpha = 1f; this.rallyCanvasGroup.interactable = true; this.rallyCanvasGroup.blocksRaycasts = true; this.fading = false; Links.x.gameplay.confirmText.SetActive(false); this.ControllerMessage(false); this.controllerWheel2.SetActive(false); this.controllerWheel4.SetActive(false); Links.x.partyColliderAdventure.SetTargetText(0); this.arrow.enabled = false; Links.x.hudControl.JoyBox(false); this.targetSelection = false; Links.x.gameCard.badgesCanvasGroup.interactable = false; Links.x.gameCard.badgesCanvasGroup.alpha = 0f; for (int i = 0; i < this.party.Count; i++) { Links.x.renderPortraits.FreshBlinks(this.party[i]); } MasterAudio.PlaySoundAndForget("Feedback", 1f, new float?(1f), 0f, "Bff_Sounds_RallyMenuOpenPortraits", null); this.SetHoverText(false, null); this.SetSpecialAttackSprite(); yield return new WaitForSeconds(0.1f); Links.x.renderPortraits.FaceForward(); this.rallyWheel.SetActive(true); if (Links.x.fellowship.rallyAttacks < 4f) { this.rallyWheelAnimator.Play("RallySelect"); } else { this.rallyWheelAnimator.Play("RallySelectThree"); } Links.x.gameplay.skipText.SetActive(true); if (Links.x.joy) { Links.x.hudControl.ToggleControllerControls(false); } if (select) { this.selectedRally = ""; this.selectedRallyCharacter = null; this.selectedAmmoImage.SetActive(false); this.SetRallyPortraits(); } else { this.selectedRally = ""; this.selectedRallyCharacter = null; this.selectedAmmoImage.SetActive(false); this.SetRallyPortraits(); } yield return new WaitForSeconds(0.1f); Links.x.hudControl.ScaleRallyBar(true); this.rallyText.SetActive(true); if (Links.x.combat.inPocketAttack) { this.rallyTextAnimator.Play("RallyTextAnim_RallyChain"); } else { this.rallyTextAnimator.Play("RallyTextAnim_Rally"); } if (Links.x.joy) { GameObject firstOpenRallyButton = this.GetFirstOpenRallyButton(); EventSystem.current.SetSelectedGameObject(firstOpenRallyButton.gameObject); if (firstOpenRallyButton) { Links.x.hudControl.SetJoyBox(firstOpenRallyButton.gameObject.GetComponent()); } } this.rallyOpen = null; yield break; } // Token: 0x060012D5 RID: 4821 RVA: 0x0016D7D4 File Offset: 0x0016B9D4 public void CloseRallyWheel(bool returnToPocket) { this.rallyWheel.SetActive(false); this.rallyWheelOpen = false; if (Links.x.joy) { Links.x.hudControl.ToggleControllerControls(true); } this.open = false; Links.x.gameplay.skipText.SetActive(false); Links.x.gameplay.confirmText.SetActive(false); Links.x.renderPortraits.FaceSide(); Links.x.hudControl.ScaleRallyBar(false); if (!Records.x.removeControls && !Links.x.combat.inPocketAttack) { Links.x.hudControl.ChangeHudVisibility(true, true); } this.rallyText.SetActive(false); Links.x.gameCard.badgesCanvasGroup.interactable = true; if (!Links.x.combat.inPocketAttack) { Links.x.gameCard.badgesCanvasGroup.alpha = 1f; } if (Links.x.combat.inPocketAttack) { returnToPocket = false; } else { this.canvasGroup.alpha = 1f; this.canvasGroup.interactable = true; this.canvasGroup.blocksRaycasts = true; } if (returnToPocket) { this.Open(this.character); return; } this.Close(false); } // Token: 0x060012D6 RID: 4822 RVA: 0x0016D930 File Offset: 0x0016BB30 public void SetSpecialAttackSprite() { if (!this.open && !this.rallyWheelOpen) { return; } for (int i = 0; i < this.party.Count; i++) { Character character = this.party[i]; Library.Inventory invRow = character.invRow1; string text = invRow._UIModel; if (invRow._ID <= 1) { text = "fist"; } Sprite item = Links.x.archives.GetItem(text); Image image = this.damageAttacks[i]; Image image2 = this.cripplingAttacks[i]; Image image3 = this.bothAttacks[i]; Image image4 = this.damageAttacksWpns[i]; Image image5 = this.cripplingAttacksWpns[i]; Image image6 = this.bothAttacksWpns[i]; if (invRow._MainSkill == "Scepter") { image.sprite = this.scepterAtk1; image2.sprite = this.scepterAtk2; image3.sprite = this.scepterAtk3; } if (invRow._MainSkill == "Whip") { image.sprite = this.whipAtk1; image2.sprite = this.whipAtk2; image3.sprite = this.whipAtk3; } if (invRow._MainSkill == "Pole") { image.sprite = this.poleAtk1; image2.sprite = this.poleAtk2; image3.sprite = this.poleAtk3; } if (invRow._MainSkill == "ShortSword") { image.sprite = this.swordAtk1; image2.sprite = this.swordAtk2; image3.sprite = this.swordAtk3; } if (invRow._MainSkill == "Sword") { image.sprite = this.longSwordAtk1; image2.sprite = this.longSwordAtk2; image3.sprite = this.longSwordAtk3; } if (invRow._MainSkill == "Sling") { image.sprite = this.slingAtk1; image2.sprite = this.slingAtk2; image3.sprite = this.slingAtk3; } if (invRow._MainSkill == "Ax") { image.sprite = this.axAtk1; image2.sprite = this.axAtk2; image3.sprite = this.axAtk3; } if (invRow._MainSkill == "Bow") { image.sprite = this.bowAtk1; image2.sprite = this.bowAtk2; image3.sprite = this.bowAtk3; } if (invRow._MainSkill == "Elixir") { image.sprite = this.elyxirsAtk1; image2.sprite = this.elyxirsAtk2; image3.sprite = this.elyxirsAtk3; } if (invRow._MainSkill == "Hand-to-Hand") { image.sprite = this.unarmedAtk1; image2.sprite = this.unarmedAtk2; image3.sprite = this.unarmedAtk3; } this.damageAttacksPaper[i].enabled = true; this.cripplingAttacksPaper[i].enabled = true; this.bothAttacksPaper[i].enabled = true; image4.sprite = item; image5.sprite = item; image6.sprite = item; if (character.portrait) { this.rallyPortraits[i].texture = character.portrait.texturesIdle; } bool flag = true; if (this.rally1) { flag = true; } if (this.CanRally(character, flag)) { if (character.HasAmmoOrMelee(character.invRow1, false)) { this.damageAttacksBtns[i].interactable = true; this.bothAttacksBtns[i].interactable = true; } else { this.damageAttacksBtns[i].interactable = false; this.bothAttacksBtns[i].interactable = false; } this.cripplingAttacksBtns[i].interactable = this.HasAmmo(character, false); this.rallyPortraits[i].color = this.portraitActive; this.rallyPortraitBorders[i].material = this.borderActive; } else { this.damageAttacksBtns[i].interactable = false; this.cripplingAttacksBtns[i].interactable = false; this.bothAttacksBtns[i].interactable = false; this.rallyPortraits[i].color = this.portraitInactive; this.rallyPortraitBorders[i].material = this.borderInactive; } } if (this.party.Count < 4) { for (int j = this.party.Count; j < 4; j++) { this.damageAttacks[j].sprite = this.emptySprite; this.cripplingAttacks[j].sprite = this.emptySprite; this.bothAttacks[j].sprite = this.emptySprite; this.damageAttacksWpns[j].sprite = this.emptySprite; this.cripplingAttacksWpns[j].sprite = this.emptySprite; this.bothAttacksWpns[j].sprite = this.emptySprite; this.damageAttacksBtns[j].interactable = false; this.cripplingAttacksBtns[j].interactable = false; this.bothAttacksBtns[j].interactable = false; this.rallyPortraits[j].color = this.portraitInactive; this.rallyPortraitBorders[j].material = this.borderInactive; this.rallyPortraits[j].texture = this.emptyTexture; this.rallyPortraitBorders[j].material = this.borderInactive; this.damageAttacksPaper[j].enabled = false; this.cripplingAttacksPaper[j].enabled = false; this.bothAttacksPaper[j].enabled = false; } if (this.party.Count == 1) { for (int k = 0; k < this.oneCharacter.Length; k++) { if (this.oneCharacter[k].activeSelf) { this.oneCharacter[k].SetActive(false); } } } if (this.party.Count > 1) { for (int l = 0; l < this.oneCharacter.Length; l++) { if (!this.oneCharacter[l].activeSelf) { this.oneCharacter[l].SetActive(true); } } for (int m = 0; m < this.threeCharacters.Length; m++) { if (this.threeCharacters[m].activeSelf) { this.threeCharacters[m].SetActive(false); } } } } else { for (int n = 0; n < this.oneCharacter.Length; n++) { if (!this.oneCharacter[n].activeSelf) { this.oneCharacter[n].SetActive(true); } } } this.CloseAmmo(); } // Token: 0x060012D7 RID: 4823 RVA: 0x0016E064 File Offset: 0x0016C264 public GameObject GetFirstOpenRallyButton() { for (int i = 0; i < this.party.Count; i++) { if (this.damageAttacksPaper[i].enabled && this.damageAttacksBtns[i].interactable) { return this.damageAttacksBtns[i].gameObject; } } for (int j = 0; j < this.party.Count; j++) { if (this.cripplingAttacksPaper[j].enabled && this.cripplingAttacksBtns[j].interactable) { return this.cripplingAttacksBtns[j].gameObject; } } return null; } // Token: 0x060012D8 RID: 4824 RVA: 0x0016E110 File Offset: 0x0016C310 public bool CanRally(Character c, bool lookForTargets) { bool flag = true; if (!c.HasAmmoOrMelee(c.invRow1, false)) { flag = this.HasAmmo(c, false); } if (!c.IsSentient() || c.stats.Confuse() != 0 || c.stats.pinned || c.fleeing || c.isHit || c.inAction || !(c != this.rally1) || !(c != this.rally2) || !flag || (this.rally1 && (!this.rally1 || Vector3.Distance(Links.x.combat.rallyStartPosition, c.currentPosition) >= 1600f || Records.x.partySailing))) { return false; } if (lookForTargets && !Links.x.combat.rallyTarget) { this.allCharacters = Links.x.diorama.characters; bool flag2 = false; if (this.rally1 && c.actions) { for (int i = 0; i < this.allCharacters.Count; i++) { if (!flag2) { Character character = this.allCharacters[i]; if (c.actions.ai.CanAttack(character) && !character.dead && !character.stunned) { if (Records.x.partySailing) { float num; float num2; float num3; Links.x.combat.GetDistances(c, character, out num, out num2, out num3); float sqrMagnitude = (c.currentPosition - character.currentPosition).sqrMagnitude; if (sqrMagnitude <= num2 && sqrMagnitude >= num3) { if (Records.x.editor) { string text = ((c != null) ? c.ToString() : null); string text2 = " "; Character character2 = character; Debug.Log(text + text2 + ((character2 != null) ? character2.ToString() : null)); } flag2 = true; break; } } else if ((Links.x.combat.rallyStartPosition - character.currentPosition).sqrMagnitude < 100f) { flag2 = true; break; } } } } } else { flag2 = true; } return flag2; } return true; } // Token: 0x060012D9 RID: 4825 RVA: 0x0016E358 File Offset: 0x0016C558 public void CloseAmmo() { if (Links.x.joy && this.rallyWheelOpen && this.ammoOpen && this.ammoCharacter) { int num = this.party.IndexOf(this.ammoCharacter); EventSystem.current.SetSelectedGameObject(this.cripplingAttacksBtns[num].gameObject); Links.x.hudControl.SetJoyBox(this.cripplingAttacksBtns[num].gameObject.GetComponent()); } this.ammoOpen = false; for (int i = 0; i < this.usedAmmos.Count; i++) { this.openAmmos.Add(this.usedAmmos[i]); this.usedAmmos[i].SetActive(false); } this.usedAmmos.Clear(); this.ammoCharacter = null; for (int j = 0; j < this.grids.Count; j++) { this.grids[j].enabled = false; } } // Token: 0x060012DA RID: 4826 RVA: 0x0016E460 File Offset: 0x0016C660 public string GetSpecialAttackText(int num, GameObject go, out bool canAttack) { string text = ""; int num2 = 0; if (go.name.Contains("2")) { num2 = 1; } if (go.name.Contains("3")) { num2 = 2; } if (go.name.Contains("4")) { num2 = 3; } Library.Inventory invRow = this.party[num2].invRow1; if (invRow._MainSkill == "Scepter") { if (num == 1) { text = "Whack"; } if (num == 2) { text = "Breach"; } if (num == 3) { text = "Crush"; } } if (invRow._MainSkill == "Whip") { if (num == 1) { text = "Rip Splash"; } if (num == 2) { text = "Paralyze Snap"; } if (num == 3) { text = "Snare"; } } if (invRow._MainSkill == "Pole") { if (num == 1) { text = "Lunge"; } if (num == 2) { text = "Trip"; } if (num == 3) { text = "Skewer"; } } if (invRow._MainSkill == "ShortSword") { if (num == 1) { text = "Strike"; } if (num == 2) { text = "Sweep"; } if (num == 3) { text = "Sweep"; } } if (invRow._MainSkill == "Sword") { if (num == 1) { text = "Slash"; } if (num == 2) { text = "Slash"; } if (num == 3) { text = "Slash"; } } if (invRow._MainSkill == "Sling") { if (num == 1) { text = "Overhead"; } if (num == 2) { if (this.HasAmmo(this.party[num2], false)) { text = "Use Rivi-Wraps"; } else { text = "Requires Rivi-Wraps"; } } if (num == 3) { text = "Mighty"; } } if (invRow._MainSkill == "Ax") { if (num == 1) { text = "Hack"; } if (num == 2) { text = "Carve"; } if (num == 3) { text = "Mighty"; } } if (invRow._MainSkill == "Bow") { if (num == 1) { text = "Mighty Draw"; } if (num == 2) { text = "Draw"; } if (num == 3) { text = "Pin"; } } if (invRow._MainSkill == "Elixir") { if (num == 1) { text = "Shaken"; } if (num == 2) { if (this.HasAmmo(this.party[num2], false)) { text = "Use Prepared Globes"; } else { text = "Requires Prepared Globes"; } } if (num == 3) { text = "Hard Shot"; } } if (invRow._MainSkill == "Hand-to-Hand") { if (num == 1) { text = "Uppercut"; } if (num == 2) { text = "Drop Kick"; } if (num == 3) { text = "Suplex"; } } if (this.damageAttacksBtns[num2].interactable || this.cripplingAttacksBtns[num2].interactable) { canAttack = true; return text; } canAttack = false; return this.party[num2].stats.GetName() + " cannot join the rally right now"; } // Token: 0x060012DB RID: 4827 RVA: 0x0016E72C File Offset: 0x0016C92C public string GetSpecialAttackTextDesc(int num, GameObject go) { string text = ""; int num2 = 0; if (go.name.Contains("2")) { num2 = 1; } if (go.name.Contains("3")) { num2 = 2; } if (go.name.Contains("4")) { num2 = 3; } Library.Inventory invRow = this.party[num2].invRow1; if (invRow._MainSkill == "Scepter") { if (num == 1) { text = "Attack a target with a critical blow that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow = Links.x.library.GetEffectRow("CripplingScepter"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow2 = Links.x.library.GetEffectRow("CripplingScepter"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow2, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Whip") { if (num == 1) { text = "Attack a target with a critical hit that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow3 = Links.x.library.GetEffectRow("CripplingWhip"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow3, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow4 = Links.x.library.GetEffectRow("CripplingWhip"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow4, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Pole") { if (num == 1) { text = "Attack a target with a critical blow that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow5 = Links.x.library.GetEffectRow("CripplingPole"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow5, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow6 = Links.x.library.GetEffectRow("CripplingPole"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow6, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "ShortSword") { if (num == 1) { text = "Attack a target with a critical slash that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow7 = Links.x.library.GetEffectRow("CripplingShortSword"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow7, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow8 = Links.x.library.GetEffectRow("CripplingShortSword"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow8, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Sword") { if (num == 1) { text = "Attack a target with a critical cut that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow9 = Links.x.library.GetEffectRow("CripplingLongSword"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow9, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow10 = Links.x.library.GetEffectRow("CripplingLongSword"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow10, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Sling") { if (num == 1) { text = "Attack a target with a critical blow that deals up to 3x damage."; } if (num == 2) { text = "Use crafted or rare slingstones stored in your bag."; } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow11 = Links.x.library.GetEffectRow("CripplingSling"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow11, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Ax") { if (num == 1) { text = "Attack a target with a critical blow that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow12 = Links.x.library.GetEffectRow("CripplingAx"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow12, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow13 = Links.x.library.GetEffectRow("CripplingAx"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow13, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Bow") { if (num == 1) { text = "Attack a target with a critical shot that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow14 = Links.x.library.GetEffectRow("CripplingBow"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow14, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow15 = Links.x.library.GetEffectRow("CripplingBow"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow15, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Elixir") { if (num == 1) { text = "Attack a target with a critical bomb that deals up to 3x damage."; } if (num == 2) { text = "Use crafted or rare elyxirs stored in your bag."; } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow16 = Links.x.library.GetEffectRow("CripplingElyxir"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow16, (float)this.character.stats.level, 0); } } if (invRow._MainSkill == "Hand-to-Hand") { if (num == 1) { text = "Attack a target with a critical punch that deals up to 3x damage."; } if (num == 2) { text = "Cripple your target's defenses."; Library.Effects effectRow17 = Links.x.library.GetEffectRow("CripplingUnarmed"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow17, (float)this.character.stats.level, 0); } if (num == 3) { text = "Deal heavy damage and strike your target's defenses."; Library.Effects effectRow18 = Links.x.library.GetEffectRow("CripplingUnarmed"); text += "\n"; text += Links.x.manual.GetEffectDescription(effectRow18, (float)this.character.stats.level, 0); } } return text; } // Token: 0x060012DC RID: 4828 RVA: 0x0016EEDC File Offset: 0x0016D0DC public void StartFade(bool fadeOut) { if (fadeOut) { this.startDither = 0f; this.endDither = 0.95f; this.rallyCanvasGroup.interactable = false; this.rallyCanvasGroup.blocksRaycasts = false; Links.x.gameplay.confirmText.SetActive(true); } else { this.startDither = 0.95f; this.endDither = 0f; this.rallyCanvasGroup.interactable = true; this.rallyCanvasGroup.blocksRaycasts = true; this.canTarget = false; this.selectedRally = ""; this.selectedAmmo = -1; this.selectedRallyCharacter = null; if (this.ammoOpen) { this.CloseAmmo(); } this.selectedAmmoImage.SetActive(false); Links.x.gameplay.confirmText.SetActive(false); Links.x.gameplay.SetDomeSize(); if (Links.x.joy) { Links.x.hudControl.JoyBox(true); if (this.prevSelectedObject && this.prevSelectedObject.activeSelf && this.prevSelectedObject.activeInHierarchy) { EventSystem.current.SetSelectedGameObject(this.prevSelectedObject); } } } this.currentDither = this.startDither; this.fadeAmount = 0f; this.fading = true; } // Token: 0x060012DD RID: 4829 RVA: 0x0016F034 File Offset: 0x0016D234 public void SelectAmmo(GameObject go) { int siblingIndex = go.transform.GetSiblingIndex(); this.selectedAmmo = this.ammos[siblingIndex]; this.selectedAmmoImage.gameObject.transform.position = go.transform.position; this.selectedAmmoImage.SetActive(true); this.selectedRallyBtn = go.gameObject; this.canTarget = true; GameObject gameObject = go.transform.parent.gameObject.transform.parent.gameObject; int num = 0; this.selectedRally = "Cripple Rally Attack 1"; if (gameObject.name.Contains("2")) { num = 1; this.selectedRally = "Cripple Rally Attack 2"; } if (gameObject.name.Contains("3")) { num = 2; this.selectedRally = "Cripple Rally Attack 3"; } if (gameObject.name.Contains("4")) { num = 3; this.selectedRally = "Cripple Rally Attack 4"; } this.selectedRallyCharacter = this.party[num]; Library.Inventory invRow = Links.x.library.GetInvRow(this.ammos[siblingIndex]); Links.x.gameplay.SetConfirmText("Select target for " + invRow._DisplayName); this.SetSelectedButtonSize(true); this.StartFade(true); Links.x.gameplay.SetDomeSize(); if (Links.x.joy) { Links.x.hudControl.JoyBox(false); Links.x.gameplay.GetControllerTarget(true); this.WaitForTargets(); } } // Token: 0x060012DE RID: 4830 RVA: 0x0016F1C2 File Offset: 0x0016D3C2 public int GetSelectedAmmoID() { return this.selectedAmmo; } // Token: 0x060012DF RID: 4831 RVA: 0x0016F1CA File Offset: 0x0016D3CA public bool CanSelectRallyTarget() { if (this.selectedRallyCharacter != null && this.selectedRally != "") { if (!this.ammoOpen) { return true; } if (this.selectedAmmo != -1) { return true; } } return false; } // Token: 0x060012E0 RID: 4832 RVA: 0x0016F204 File Offset: 0x0016D404 public void ShowAmmo(int index) { Character character = this.party[index]; if (this.HasAmmo(character, false) && (character.invRow1._MainSkill == "Elixir" || character.invRow1._MainSkill == "Sling")) { this.ammoOpen = true; this.ammoCharacter = character; this.targetSelection = false; this.canTarget = false; bool flag = false; bool flag2 = false; this.ammos.Clear(); this.ammoCounts.Clear(); if (character.invRow1._MainSkill == "Elixir") { flag = true; } if (character.invRow1._MainSkill == "Sling") { flag2 = true; } if (flag || flag2) { this.bag = character.bag; for (int i = 0; i < this.bag.Count; i++) { if (i % 2 == 0) { if (flag2 && this.bag[i] > Links.x.library.dartsMin && this.bag[i] <= Links.x.library.dartsMax) { int num = this.bag[i + 1]; if (!this.ammos.Contains(this.bag[i])) { this.ammos.Add(this.bag[i]); this.ammoCounts.Add(num); } } if (flag && this.bag[i] > Links.x.library.vialsMin + 1 && this.bag[i] <= Links.x.library.vialsMax) { int num2 = this.bag[i + 1]; if (!this.ammos.Contains(this.bag[i])) { this.ammos.Add(this.bag[i]); this.ammoCounts.Add(num2); } } } } } this.grids[index].enabled = false; for (int j = 0; j < this.ammos.Count; j++) { GameObject gameObject; if (this.openAmmos.Count > 0) { gameObject = this.openAmmos[0]; gameObject.transform.SetParent(this.ammoGrids[index].transform); this.openAmmos.RemoveAt(0); } else { gameObject = Object.Instantiate(this.ammoPrefab, Vector3.zero, Quaternion.identity, this.ammoGrids[index].transform); } gameObject.name = "Rare Ammo " + j.ToString(); this.usedAmmos.Add(gameObject); gameObject.SetActive(true); gameObject.transform.localScale = Vector3.one; gameObject.transform.localPosition = Vector3.zero; gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero); Library.Inventory invRow = Links.x.library.GetInvRow(this.ammos[j]); gameObject.transform.GetChild(0).gameObject.GetComponent().sprite = Links.x.archives.GetItem(invRow._UIModel); gameObject.transform.GetChild(1).gameObject.GetComponent().text = this.ammoCounts[j].ToString(); } this.grids[index].enabled = true; if (Links.x.joy) { EventSystem.current.SetSelectedGameObject(this.usedAmmos[0].gameObject); Links.x.hudControl.SetJoyBox(this.usedAmmos[0].gameObject.GetComponent()); return; } } else { this.CloseAmmo(); } } // Token: 0x060012E1 RID: 4833 RVA: 0x0016F608 File Offset: 0x0016D808 private IEnumerator RefreshLayout(GridLayoutGroup layout) { yield return new WaitForFixedUpdate(); layout.enabled = false; layout.enabled = true; if (this.ammos.Count > 0) { this.SelectAmmo(this.usedAmmos[0]); } yield break; } // Token: 0x060012E2 RID: 4834 RVA: 0x0016F620 File Offset: 0x0016D820 public bool HasAmmo(Character c, bool all) { bool flag = false; bool flag2 = false; if (c.invRow1._MainSkill == "Elixir") { flag = true; } if (c.invRow1._MainSkill == "Sling") { flag2 = true; } if (flag || flag2) { this.bag = c.bag; for (int i = 0; i < this.bag.Count; i++) { if (i % 2 == 0) { if (flag2) { if (all) { if (this.bag[i] >= Links.x.library.dartsMin && this.bag[i] <= Links.x.library.dartsMax) { return true; } } else if (this.bag[i] > Links.x.library.dartsMin && this.bag[i] <= Links.x.library.dartsMax) { return true; } } if (flag) { if (all) { if (this.bag[i] >= Links.x.library.vialsMin && this.bag[i] <= Links.x.library.vialsMax) { return true; } } else if (this.bag[i] > Links.x.library.vialsMin + 1 && this.bag[i] <= Links.x.library.vialsMax) { return true; } } } } return false; } return true; } // Token: 0x060012E3 RID: 4835 RVA: 0x0016F79C File Offset: 0x0016D99C public string GetSpecialAttackTextAmmo(string type) { int num = 0; this.str.Clear(); if (type == "Rare Ammo 1") { num = 1; } if (type == "Rare Ammo 2") { num = 2; } if (type == "Rare Ammo 3") { num = 3; } if (type == "Rare Ammo 4") { num = 4; } if (type == "Rare Ammo 5") { num = 5; } if (type == "Rare Ammo 6") { num = 6; } if (type == "Rare Ammo 7") { num = 7; } if (type == "Rare Ammo 8") { num = 8; } if (type == "Rare Ammo 9") { num = 9; } return Links.x.library.GetInvRow(this.ammos[num])._DisplayName; } // Token: 0x060012E4 RID: 4836 RVA: 0x0016F860 File Offset: 0x0016DA60 public string GetSpecialAttackTextDescAmmo(string type) { int num = 0; this.str.Clear(); if (type == "Rare Ammo 1") { num = 1; } if (type == "Rare Ammo 2") { num = 2; } if (type == "Rare Ammo 3") { num = 3; } if (type == "Rare Ammo 4") { num = 4; } if (type == "Rare Ammo 5") { num = 5; } if (type == "Rare Ammo 6") { num = 6; } if (type == "Rare Ammo 7") { num = 7; } if (type == "Rare Ammo 8") { num = 8; } if (type == "Rare Ammo 9") { num = 9; } Library.Inventory invRow = Links.x.library.GetInvRow(this.ammos[num]); if (invRow._Effect != "") { Library.Effects effectRow = Links.x.library.GetEffectRow(invRow._Effect); if (effectRow != null) { string effectDescription = Links.x.manual.GetEffectDescription(effectRow, (float)this.character.stats.level, 0); this.str.Append("Damage: "); this.str.Append(invRow._DmgMax); this.str.Append("\nArea of Effect: "); float num2 = this.character.stats.R1(5f + this.character.stats.MultiHitMod()); this.str.Append(num2); this.str.Append(" poles"); if (invRow._Name.Contains("Dart")) { this.str.Append("\n\nStone Effects: "); } else { this.str.Append("\n\nElyxir Effects: "); } this.str.Append(effectDescription); } } return this.str.ToString(); } // Token: 0x04001EE4 RID: 7908 public bool open; // Token: 0x04001EE5 RID: 7909 public bool halfOpen; // Token: 0x04001EE6 RID: 7910 public bool targetSelection; // Token: 0x04001EE7 RID: 7911 public bool joyOpen; // Token: 0x04001EE8 RID: 7912 public Animator animator; // Token: 0x04001EE9 RID: 7913 public GameObject spellsGo; // Token: 0x04001EEA RID: 7914 public GameObject items1Go; // Token: 0x04001EEB RID: 7915 public GameObject items2Go; // Token: 0x04001EEC RID: 7916 public GameObject items3Go; // Token: 0x04001EED RID: 7917 public GameObject specialGo; // Token: 0x04001EEE RID: 7918 public Image selectedLightAtk; // Token: 0x04001EEF RID: 7919 public Image selectedMediumAtk; // Token: 0x04001EF0 RID: 7920 public Image selectedHeavyAtk; // Token: 0x04001EF1 RID: 7921 public Image selectedSpells; // Token: 0x04001EF2 RID: 7922 public Image selectedSongs; // Token: 0x04001EF3 RID: 7923 public Image selectedCharm; // Token: 0x04001EF4 RID: 7924 public Image selectedItem1; // Token: 0x04001EF5 RID: 7925 public Image selectedItem2; // Token: 0x04001EF6 RID: 7926 public Image selectedItem3; // Token: 0x04001EF7 RID: 7927 public Image selectedShout; // Token: 0x04001EF8 RID: 7928 public Image selectedSneak; // Token: 0x04001EF9 RID: 7929 public Image selectedSpecial1; // Token: 0x04001EFA RID: 7930 public Image dropItem1; // Token: 0x04001EFB RID: 7931 public Image dropItem2; // Token: 0x04001EFC RID: 7932 public Image dropItem3; // Token: 0x04001EFD RID: 7933 public Image dropSpecial1; // Token: 0x04001EFE RID: 7934 public Image dropSpecial2; // Token: 0x04001EFF RID: 7935 public Image lightAtk; // Token: 0x04001F00 RID: 7936 public Image mediumAtk; // Token: 0x04001F01 RID: 7937 public Image heavyAtk; // Token: 0x04001F02 RID: 7938 public Image spells; // Token: 0x04001F03 RID: 7939 public Image songs; // Token: 0x04001F04 RID: 7940 public Image charm; // Token: 0x04001F05 RID: 7941 public Image item1; // Token: 0x04001F06 RID: 7942 public Image item2; // Token: 0x04001F07 RID: 7943 public Image item3; // Token: 0x04001F08 RID: 7944 public Image special1; // Token: 0x04001F09 RID: 7945 public Image item1back; // Token: 0x04001F0A RID: 7946 public Image item2back; // Token: 0x04001F0B RID: 7947 public Image item3back; // Token: 0x04001F0C RID: 7948 public Button spellsBtn; // Token: 0x04001F0D RID: 7949 public Button songsBtn; // Token: 0x04001F0E RID: 7950 public Button item1Btn; // Token: 0x04001F0F RID: 7951 public Button item2Btn; // Token: 0x04001F10 RID: 7952 public Button item3Btn; // Token: 0x04001F11 RID: 7953 public Button lightAtkBtn; // Token: 0x04001F12 RID: 7954 public Button mediumAtkBtn; // Token: 0x04001F13 RID: 7955 public Button heavyAtkBtn; // Token: 0x04001F14 RID: 7956 public Button charmBtn; // Token: 0x04001F15 RID: 7957 public Button shoutBtn; // Token: 0x04001F16 RID: 7958 public Button sneakBtn; // Token: 0x04001F17 RID: 7959 public Button specialBtn1; // Token: 0x04001F18 RID: 7960 public UITriggerButton lightTrig; // Token: 0x04001F19 RID: 7961 public UITriggerButton mediumTrig; // Token: 0x04001F1A RID: 7962 public UITriggerButton heavyTrig; // Token: 0x04001F1B RID: 7963 public UITriggerButton special1Trig; // Token: 0x04001F1C RID: 7964 public UITriggerButton charmTrig; // Token: 0x04001F1D RID: 7965 public UITriggerButton sneakTrig; // Token: 0x04001F1E RID: 7966 public UITriggerButton talkTrig; // Token: 0x04001F1F RID: 7967 public UITriggerButton item1Trig; // Token: 0x04001F20 RID: 7968 public UITriggerButton item2Trig; // Token: 0x04001F21 RID: 7969 public UITriggerButton item3Trig; // Token: 0x04001F22 RID: 7970 public UITriggerButton spellTrig; // Token: 0x04001F23 RID: 7971 public TextMeshProUGUI attackKey; // Token: 0x04001F24 RID: 7972 public TextMeshProUGUI pinKey; // Token: 0x04001F25 RID: 7973 public TextMeshProUGUI chargeKey; // Token: 0x04001F26 RID: 7974 public TextMeshProUGUI rallyKey; // Token: 0x04001F27 RID: 7975 public TextMeshProUGUI spellsKey; // Token: 0x04001F28 RID: 7976 public TextMeshProUGUI sneakKey; // Token: 0x04001F29 RID: 7977 public TextMeshProUGUI talkKey; // Token: 0x04001F2A RID: 7978 public TextMeshProUGUI item1Key; // Token: 0x04001F2B RID: 7979 public TextMeshProUGUI item2Key; // Token: 0x04001F2C RID: 7980 public TextMeshProUGUI item3key; // Token: 0x04001F2D RID: 7981 public Pointer attackPointer; // Token: 0x04001F2E RID: 7982 public Pointer pinPointer; // Token: 0x04001F2F RID: 7983 public Pointer chargePointer; // Token: 0x04001F30 RID: 7984 public Pointer rallyPointer; // Token: 0x04001F31 RID: 7985 public Pointer spellsPointer; // Token: 0x04001F32 RID: 7986 public Pointer sneakPointer; // Token: 0x04001F33 RID: 7987 public Pointer talkPointer; // Token: 0x04001F34 RID: 7988 public Pointer item1Pointer; // Token: 0x04001F35 RID: 7989 public Pointer item2Pointer; // Token: 0x04001F36 RID: 7990 public Pointer item3Pointer; // Token: 0x04001F37 RID: 7991 public Sprite swordAtk1; // Token: 0x04001F38 RID: 7992 public Sprite swordAtk2; // Token: 0x04001F39 RID: 7993 public Sprite swordAtk3; // Token: 0x04001F3A RID: 7994 public Sprite longSwordAtk1; // Token: 0x04001F3B RID: 7995 public Sprite longSwordAtk2; // Token: 0x04001F3C RID: 7996 public Sprite longSwordAtk3; // Token: 0x04001F3D RID: 7997 public Sprite axAtk1; // Token: 0x04001F3E RID: 7998 public Sprite axAtk2; // Token: 0x04001F3F RID: 7999 public Sprite axAtk3; // Token: 0x04001F40 RID: 8000 public Sprite poleAtk1; // Token: 0x04001F41 RID: 8001 public Sprite poleAtk2; // Token: 0x04001F42 RID: 8002 public Sprite poleAtk3; // Token: 0x04001F43 RID: 8003 public Sprite whipAtk1; // Token: 0x04001F44 RID: 8004 public Sprite whipAtk2; // Token: 0x04001F45 RID: 8005 public Sprite whipAtk3; // Token: 0x04001F46 RID: 8006 public Sprite scepterAtk1; // Token: 0x04001F47 RID: 8007 public Sprite scepterAtk2; // Token: 0x04001F48 RID: 8008 public Sprite scepterAtk3; // Token: 0x04001F49 RID: 8009 public Sprite unarmedAtk1; // Token: 0x04001F4A RID: 8010 public Sprite unarmedAtk2; // Token: 0x04001F4B RID: 8011 public Sprite unarmedAtk3; // Token: 0x04001F4C RID: 8012 public Sprite multiHandAtk1; // Token: 0x04001F4D RID: 8013 public Sprite multiHandAtk2; // Token: 0x04001F4E RID: 8014 public Sprite multiHandAtk3; // Token: 0x04001F4F RID: 8015 public Sprite slingAtk1; // Token: 0x04001F50 RID: 8016 public Sprite slingAtk2; // Token: 0x04001F51 RID: 8017 public Sprite slingAtk3; // Token: 0x04001F52 RID: 8018 public Sprite bowAtk1; // Token: 0x04001F53 RID: 8019 public Sprite bowAtk2; // Token: 0x04001F54 RID: 8020 public Sprite bowAtk3; // Token: 0x04001F55 RID: 8021 public Sprite elyxirsAtk1; // Token: 0x04001F56 RID: 8022 public Sprite elyxirsAtk2; // Token: 0x04001F57 RID: 8023 public Sprite elyxirsAtk3; // Token: 0x04001F58 RID: 8024 public Windows window; // Token: 0x04001F59 RID: 8025 public Windows spellbookWindow; // Token: 0x04001F5A RID: 8026 public Button spellbookTop; // Token: 0x04001F5B RID: 8027 public TextMeshProUGUI closeSpellbook; // Token: 0x04001F5C RID: 8028 private IEnumerator closeRoutine; // Token: 0x04001F5D RID: 8029 private IEnumerator openRoutine; // Token: 0x04001F5E RID: 8030 public TextMeshProUGUI hoverField; // Token: 0x04001F5F RID: 8031 public TextMeshProUGUI hoverFieldRally; // Token: 0x04001F60 RID: 8032 public TextMeshProUGUI item1stack; // Token: 0x04001F61 RID: 8033 public TextMeshProUGUI item2stack; // Token: 0x04001F62 RID: 8034 public TextMeshProUGUI item3stack; // Token: 0x04001F63 RID: 8035 public RectTransform hoverFieldRT; // Token: 0x04001F64 RID: 8036 public Character character; // Token: 0x04001F65 RID: 8037 public SkillBag skillBag; // Token: 0x04001F66 RID: 8038 public string selected = ""; // Token: 0x04001F67 RID: 8039 private StringFast str = new StringFast(32); // Token: 0x04001F68 RID: 8040 public Material hasBook; // Token: 0x04001F69 RID: 8041 public Material noBook; // Token: 0x04001F6A RID: 8042 public GameObject spellbook; // Token: 0x04001F6B RID: 8043 public Character c1; // Token: 0x04001F6C RID: 8044 public Character c2; // Token: 0x04001F6D RID: 8045 public Character c3; // Token: 0x04001F6E RID: 8046 public Character c4; // Token: 0x04001F6F RID: 8047 public string selected1 = "Light Attack"; // Token: 0x04001F70 RID: 8048 public string selected2 = "Light Attack"; // Token: 0x04001F71 RID: 8049 public string selected3 = "Light Attack"; // Token: 0x04001F72 RID: 8050 public string selected4 = "Light Attack"; // Token: 0x04001F73 RID: 8051 public CanvasGroup canvasGroup; // Token: 0x04001F74 RID: 8052 public Image arrow; // Token: 0x04001F75 RID: 8053 private float prevAngle; // Token: 0x04001F76 RID: 8054 private float timeSinceOpen; // Token: 0x04001F77 RID: 8055 public GameObject controllerWheel1; // Token: 0x04001F78 RID: 8056 public GameObject controllerWheel2; // Token: 0x04001F79 RID: 8057 public GameObject controllerWheel4; // Token: 0x04001F7A RID: 8058 public Sprite doGroup; // Token: 0x04001F7B RID: 8059 public Sprite breakGroup; // Token: 0x04001F7C RID: 8060 public GridLayoutGroup glg; // Token: 0x04001F7D RID: 8061 public bool ammoOpen; // Token: 0x04001F7E RID: 8062 private List bag; // Token: 0x04001F7F RID: 8063 private List ammos = new List(); // Token: 0x04001F80 RID: 8064 private List ammoCounts = new List(); // Token: 0x04001F81 RID: 8065 public int selectedAmmo; // Token: 0x04001F82 RID: 8066 public GameObject selectedAmmoImage; // Token: 0x04001F83 RID: 8067 private GameObject selectedRallyBtn; // Token: 0x04001F84 RID: 8068 private RectTransform[] selectedRallyRTs; // Token: 0x04001F85 RID: 8069 public Vector3 hoverPositionJoy; // Token: 0x04001F86 RID: 8070 public Vector3 hoverPositionMK; // Token: 0x04001F87 RID: 8071 private float lastChange; // Token: 0x04001F88 RID: 8072 [Header("Rally")] public GameObject rallyWheel; // Token: 0x04001F89 RID: 8073 public GameObject rallyText; // Token: 0x04001F8A RID: 8074 public bool rallyWheelOpen; // Token: 0x04001F8B RID: 8075 public List damageAttacksPaper = new List(); // Token: 0x04001F8C RID: 8076 public List cripplingAttacksPaper = new List(); // Token: 0x04001F8D RID: 8077 public List bothAttacksPaper = new List(); // Token: 0x04001F8E RID: 8078 public List damageAttacks = new List(); // Token: 0x04001F8F RID: 8079 public List cripplingAttacks = new List(); // Token: 0x04001F90 RID: 8080 public List bothAttacks = new List(); // Token: 0x04001F91 RID: 8081 public List damageAttacksWpns = new List(); // Token: 0x04001F92 RID: 8082 public List cripplingAttacksWpns = new List(); // Token: 0x04001F93 RID: 8083 public List bothAttacksWpns = new List(); // Token: 0x04001F94 RID: 8084 public List