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<RectTransform>();
	}

	// 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<Image>().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<UITriggerButton>());
		}
	}

	// 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<UITriggerButton>());
			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<UITriggerButton>());
						}
						else
						{
							GameObject firstOpenRallyButton = this.GetFirstOpenRallyButton();
							EventSystem.current.SetSelectedGameObject(firstOpenRallyButton.gameObject);
							if (firstOpenRallyButton)
							{
								Links.x.hudControl.SetJoyBox(firstOpenRallyButton.gameObject.GetComponent<UITriggerButton>());
							}
						}
					}
					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<UITriggerButton>().rt, gameObject.GetComponent<UITriggerButton>().boxOffset, false);
							if (Links.x.gameplay.actionStart)
							{
								gameObject.gameObject.GetComponent<Pointer>().PointerDownAction();
							}
							if (Links.x.gameplay.interactStart)
							{
								gameObject.gameObject.GetComponent<Pointer>().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 = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Attack")).ToString() + ">";
			this.pinKey.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Pin")).ToString() + ">";
			this.chargeKey.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Charge")).ToString() + ">";
			this.rallyKey.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Rally")).ToString() + ">";
			this.spellsKey.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Spells")).ToString() + ">";
			this.sneakKey.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Sneak")).ToString() + ">";
			this.talkKey.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Talk")).ToString() + ">";
			this.item1Key.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Item1")).ToString() + ">";
			this.item2Key.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Item2")).ToString() + ">";
			this.item3key.text = "<sprite=" + Links.x.keyControl.GetKeyIconIndex(Links.x.keyControl.GetHotkeyString("Item3")).ToString() + ">";
			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("<font=BoldOutline>");
		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("</font><line-height=1.5em>");
				this.str.Append("<size=.95em>\n<color=#878075>Details");
				this.str.Append("  <voffset=.4em><size=20><sprite=");
				int keyIconIndex = Links.x.keyControl.GetKeyIconIndex("RMB");
				this.str.Append(keyIconIndex);
				this.str.Append("></size></voffset></color>");
				this.str.Append("</size></line-height>");
				if (this.rallyWheelOpen)
				{
					this.hoverFieldRally.text = this.str.ToString();
					return;
				}
				this.hoverField.text = this.str.ToString();
				return;
			}
			else
			{
				this.str.Append("</font><line-height=1.5em>");
				if (text.Contains("Item") || text.Contains("Song") || text.Contains("Spell") || text == "Shout" || text == "Sneak")
				{
					this.str.Append("<size=.7em>\n<size=.9em>");
				}
				else
				{
					bool flag3 = true;
					if (text.Contains("Attack") && !text.Contains("Special"))
					{
						if (this.lightTrig.noIcon)
						{
							this.str.Append("<size=.7em>\n      <size=1em>No targets in range to attack<size=.7em>\n\n      <size=1em>");
							flag3 = false;
						}
					}
					else if (text.Contains("Charm") && this.charmTrig.noIcon)
					{
						if (Links.x.combat.charmFail == "Low Skill")
						{
							this.str.Append("<size=.7em>\n      <size=1em>Targets in range would resist bind attempt<size=.7em>\n      <size=1em>");
						}
						else if (Links.x.combat.charmFail == "No Beads")
						{
							this.str.Append("<size=.7em>\n      <size=1em>Need Charm Bells to bind<size=.7em>\n      <size=1em>");
						}
						else if (Links.x.combat.charmFail == "On water")
						{
							this.str.Append("<size=.7em>\n      <size=1em>Cannot bind at sea<size=.7em>\n      <size=1em>");
						}
						else
						{
							this.str.Append("<size=.7em>\n      <size=1em>No targets in range to bind<size=.7em>\n      <size=1em>");
						}
						flag3 = false;
					}
					if (flag3)
					{
						this.str.Append("<size=.7em>\n<size=.9em>");
					}
				}
				this.str.Append("Details");
				this.str.Append("     <voffset=.4em><size=40><sprite=");
				int controllerSprite = Links.x.gameplay.GetControllerSprite("Interact", Links.x.gameplay.controllerName);
				this.str.Append(controllerSprite);
				this.str.Append("></size></voffset>");
				this.str.Append("</size></line-height>");
				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<UITriggerButton>());
			}
		}
		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<UITriggerButton>());
		}
		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<GameObject>(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<Image>().sprite = Links.x.archives.GetItem(invRow._UIModel);
				gameObject.transform.GetChild(1).gameObject.GetComponent<TextMeshProUGUI>().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<UITriggerButton>());
				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<int> bag;

	// Token: 0x04001F7F RID: 8063
	private List<int> ammos = new List<int>();

	// Token: 0x04001F80 RID: 8064
	private List<int> ammoCounts = new List<int>();

	// 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<Image> damageAttacksPaper = new List<Image>();

	// Token: 0x04001F8C RID: 8076
	public List<Image> cripplingAttacksPaper = new List<Image>();

	// Token: 0x04001F8D RID: 8077
	public List<Image> bothAttacksPaper = new List<Image>();

	// Token: 0x04001F8E RID: 8078
	public List<Image> damageAttacks = new List<Image>();

	// Token: 0x04001F8F RID: 8079
	public List<Image> cripplingAttacks = new List<Image>();

	// Token: 0x04001F90 RID: 8080
	public List<Image> bothAttacks = new List<Image>();

	// Token: 0x04001F91 RID: 8081
	public List<Image> damageAttacksWpns = new List<Image>();

	// Token: 0x04001F92 RID: 8082
	public List<Image> cripplingAttacksWpns = new List<Image>();

	// Token: 0x04001F93 RID: 8083
	public List<Image> bothAttacksWpns = new List<Image>();

	// Token: 0x04001F94 RID: 8084
	public List<Button> damageAttacksBtns = new List<Button>();

	// Token: 0x04001F95 RID: 8085
	public List<Button> cripplingAttacksBtns = new List<Button>();

	// Token: 0x04001F96 RID: 8086
	public List<Button> bothAttacksBtns = new List<Button>();

	// Token: 0x04001F97 RID: 8087
	public List<RawImage> rallyPortraits = new List<RawImage>();

	// Token: 0x04001F98 RID: 8088
	public List<Image> rallyPortraitBorders = new List<Image>();

	// Token: 0x04001F99 RID: 8089
	public List<GridLayoutGroup> grids = new List<GridLayoutGroup>();

	// Token: 0x04001F9A RID: 8090
	public List<GameObject> ammoGrids = new List<GameObject>();

	// Token: 0x04001F9B RID: 8091
	public List<int> ammoRotation = new List<int>();

	// Token: 0x04001F9C RID: 8092
	public List<GameObject> openAmmos = new List<GameObject>();

	// Token: 0x04001F9D RID: 8093
	public List<GameObject> usedAmmos = new List<GameObject>();

	// Token: 0x04001F9E RID: 8094
	private List<Character> portraitOrder;

	// Token: 0x04001F9F RID: 8095
	private List<Character> party = new List<Character>();

	// Token: 0x04001FA0 RID: 8096
	private IEnumerator rallyOpen;

	// Token: 0x04001FA1 RID: 8097
	public Animator rallyWheelAnimator;

	// Token: 0x04001FA2 RID: 8098
	public Animator rallyTextAnimator;

	// Token: 0x04001FA3 RID: 8099
	public GameObject ammoPrefab;

	// Token: 0x04001FA4 RID: 8100
	public Character selectedRallyCharacter;

	// Token: 0x04001FA5 RID: 8101
	public Character rally1;

	// Token: 0x04001FA6 RID: 8102
	public Character rally2;

	// Token: 0x04001FA7 RID: 8103
	public string selectedRally;

	// Token: 0x04001FA8 RID: 8104
	public Texture emptyTexture;

	// Token: 0x04001FA9 RID: 8105
	public Sprite emptySprite;

	// Token: 0x04001FAA RID: 8106
	public bool canTarget;

	// Token: 0x04001FAB RID: 8107
	public Material borderActive;

	// Token: 0x04001FAC RID: 8108
	public Material borderInactive;

	// Token: 0x04001FAD RID: 8109
	public Color portraitActive;

	// Token: 0x04001FAE RID: 8110
	public Color portraitInactive;

	// Token: 0x04001FAF RID: 8111
	public float currentDither;

	// Token: 0x04001FB0 RID: 8112
	private float startDither;

	// Token: 0x04001FB1 RID: 8113
	private float endDither;

	// Token: 0x04001FB2 RID: 8114
	private float fadeAmount;

	// Token: 0x04001FB3 RID: 8115
	public bool fading;

	// Token: 0x04001FB4 RID: 8116
	private Character ammoCharacter;

	// Token: 0x04001FB5 RID: 8117
	public CanvasGroup rallyCanvasGroup;

	// Token: 0x04001FB6 RID: 8118
	private GameObject prevSelectedObject;

	// Token: 0x04001FB7 RID: 8119
	private List<Character> allCharacters;

	// Token: 0x04001FB8 RID: 8120
	public GameObject[] oneCharacter;

	// Token: 0x04001FB9 RID: 8121
	public GameObject[] threeCharacters;

	// Token: 0x04001FBA RID: 8122
	public GameObject[] fourCharacters;
}
