using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq.Expressions;
using DarkTonic.MasterAudio;
using Pathfinding;
using PixelCrushers.DialogueSystem;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

// Token: 0x02000025 RID: 37
public class Dialogue : MonoBehaviour
{
	// Token: 0x06000594 RID: 1428 RVA: 0x0007A38F File Offset: 0x0007858F
	private void Awake()
	{
		PersistentDataManager.RegisterPersistentData(base.gameObject);
		this.dialoguePopupBox.SetActive(false);
		if (!Records.x.editor)
		{
			bool secrets = Records.x.secrets;
		}
	}

	// Token: 0x06000595 RID: 1429 RVA: 0x0007A3C0 File Offset: 0x000785C0
	private void Start()
	{
		this.allParty = Links.x.party;
		Transform child = GameObject.Find("Fullscreen Dialogue").transform.GetChild(1);
		Transform child2 = child.GetChild(3);
		Transform child3 = child.GetChild(4);
		this.responseRT = child3.gameObject.GetComponent<RectTransform>();
		Transform transform = child2.GetChild(0).GetChild(1);
		this.typewriter = transform.gameObject.GetComponent<TextMeshProTypewriterEffect>();
		this.name1 = child3.GetChild(2).gameObject.GetComponent<TextMeshProUGUI>();
		this.portrait1 = this.name1.gameObject.transform.GetChild(0).GetChild(0).gameObject.GetComponent<RawImage>();
		this.name2 = child3.GetChild(3).gameObject.GetComponent<TextMeshProUGUI>();
		this.portrait2 = this.name2.gameObject.transform.GetChild(0).GetChild(0).gameObject.GetComponent<RawImage>();
		this.name3 = child3.GetChild(4).gameObject.GetComponent<TextMeshProUGUI>();
		this.portrait3 = this.name3.gameObject.transform.GetChild(0).GetChild(0).gameObject.GetComponent<RawImage>();
		this.name4 = child3.GetChild(5).gameObject.GetComponent<TextMeshProUGUI>();
		this.portrait4 = this.name4.gameObject.transform.GetChild(0).GetChild(0).gameObject.GetComponent<RawImage>();
		this.response1 = child3.GetChild(0).GetChild(4);
		this.response2 = child3.GetChild(0).GetChild(5);
		this.response3 = child3.GetChild(0).GetChild(6);
		this.response4 = child3.GetChild(0).GetChild(7);
		this.responsePoints.Add(child3.GetChild(0).GetChild(0));
		this.responsePoints.Add(child3.GetChild(0).GetChild(1));
		this.responsePoints.Add(child3.GetChild(0).GetChild(2));
		this.responsePoints.Add(child3.GetChild(0).GetChild(3));
		transform = child2.GetChild(1).GetChild(1);
		this.typewriter2 = transform.gameObject.GetComponent<TextMeshProTypewriterEffect>();
		if (!Records.x.editor)
		{
			this.system.PreloadResources();
		}
		this.partyList = Links.x.portraitOrder;
		Lua.RegisterFunction("CharacterNeedsSongbook", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.CharacterNeedsSongbook(double)), new Expression[] { Expression.Constant(0.0, typeof(double)) }), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("CharacterNeedsSpellbook", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.CharacterNeedsSpellbook(double)), new Expression[] { Expression.Constant(0.0, typeof(double)) }), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("EveryoneLearnedSong", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.EveryoneLearnedSong(string)), new Expression[] { Expression.Constant("", typeof(string)) }), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("CharacterCanLearnSong", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.CharacterCanLearnSong(string, double)), new Expression[]
		{
			Expression.Constant("", typeof(string)),
			Expression.Constant(0.0, typeof(double))
		}), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("PartyHasItem", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.PartyHasItem(string, double)), new Expression[]
		{
			Expression.Constant("", typeof(string)),
			Expression.Constant(0.0, typeof(double))
		}), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("PartyHasItemWithDurability", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.PartyHasItemWithDurability(string, double)), new Expression[]
		{
			Expression.Constant("", typeof(string)),
			Expression.Constant(0.0, typeof(double))
		}), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("PartyHasItemWithIntercession", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.PartyHasItemWithIntercession(string, double)), new Expression[]
		{
			Expression.Constant("", typeof(string)),
			Expression.Constant(0.0, typeof(double))
		}), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("PartyHasEffect", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.PartyHasEffect(string)), new Expression[] { Expression.Constant("", typeof(string)) }), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("EveryoneLearnedSpell", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.EveryoneLearnedSpell(string)), new Expression[] { Expression.Constant("", typeof(string)) }), Array.Empty<ParameterExpression>())));
		Lua.RegisterFunction("CharacterCanLearnSpell", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.CharacterCanLearnSpell(string, double)), new Expression[]
		{
			Expression.Constant("", typeof(string)),
			Expression.Constant(0.0, typeof(double))
		}), Array.Empty<ParameterExpression>())));
		CharacterInfo.RegisterActorTransform("MainCamera", Links.x.worldCamera.gameObject.transform);
		Lua.RegisterFunction("EveryoneNear", this, SymbolExtensions.GetMethodInfo(Expression.Lambda<Action>(Expression.Call(Expression.Constant(this, typeof(Dialogue)), methodof(Dialogue.EveryoneNear()), Array.Empty<Expression>()), Array.Empty<ParameterExpression>())));
	}

	// Token: 0x06000596 RID: 1430 RVA: 0x0007AAD0 File Offset: 0x00078CD0
	private void Update()
	{
		if (Records.x.dialogue)
		{
			if (this.typewriter.isPlaying || this.typewriter2.isPlaying)
			{
				this.npcTalking = true;
				return;
			}
			this.npcTalking = false;
		}
	}

	// Token: 0x06000597 RID: 1431 RVA: 0x0007AB07 File Offset: 0x00078D07
	public void TurnOffMainCamera()
	{
		Links.x.worldCamera.cullingMask = 1;
	}

	// Token: 0x06000598 RID: 1432 RVA: 0x0007AB19 File Offset: 0x00078D19
	public void TurnOnMainCamera()
	{
		Links.x.worldCamera.cullingMask = Links.x.mainCameraMask;
	}

	// Token: 0x06000599 RID: 1433 RVA: 0x0007AB39 File Offset: 0x00078D39
	public void CancelLine()
	{
	}

	// Token: 0x0600059A RID: 1434 RVA: 0x0007AB3C File Offset: 0x00078D3C
	public void SetSkipKey(bool state)
	{
		if (this.system.displaySettings.inputSettings == null)
		{
			Debug.Log("null");
			return;
		}
		state = false;
		if (state)
		{
			this.system.displaySettings.inputSettings.cancel.key = KeyCode.Return;
			this.system.displaySettings.inputSettings.cancel.buttonName = "";
			return;
		}
		this.system.displaySettings.inputSettings.cancel.key = KeyCode.None;
		this.system.displaySettings.inputSettings.cancel.buttonName = "";
	}

	// Token: 0x0600059B RID: 1435 RVA: 0x0007ABE2 File Offset: 0x00078DE2
	public void ToggleTimeScale()
	{
		if (Records.x.paused)
		{
			this.system.dialogueTimeMode = DialogueTime.TimeMode.Realtime;
		}
		else
		{
			this.system.dialogueTimeMode = DialogueTime.TimeMode.Gameplay;
		}
		this.system.UpdateDialogueTimeMode();
	}

	// Token: 0x0600059C RID: 1436 RVA: 0x0007AC15 File Offset: 0x00078E15
	public void NoSkip()
	{
		this.SetSkipKey(false);
	}

	// Token: 0x0600059D RID: 1437 RVA: 0x0007AC1E File Offset: 0x00078E1E
	public void SetNoExit()
	{
		this.NoExit(false);
	}

	// Token: 0x0600059E RID: 1438 RVA: 0x0007AC27 File Offset: 0x00078E27
	public void SetExit()
	{
		this.NoExit(true);
	}

	// Token: 0x0600059F RID: 1439 RVA: 0x0007AC30 File Offset: 0x00078E30
	public void SetNoBobbling()
	{
		this.noBobbling = true;
	}

	// Token: 0x060005A0 RID: 1440 RVA: 0x0007AC39 File Offset: 0x00078E39
	public void SetBobbling()
	{
		this.noBobbling = false;
	}

	// Token: 0x060005A1 RID: 1441 RVA: 0x0007AC44 File Offset: 0x00078E44
	public void NoExit(bool state)
	{
		if (this.importantConversation)
		{
			state = false;
		}
		if (state)
		{
			this.byeButton.interactable = true;
			this.byeImage.raycastTarget = true;
			return;
		}
		this.byeButton.interactable = false;
		this.byeImage.raycastTarget = false;
	}

	// Token: 0x060005A2 RID: 1442 RVA: 0x0007AC90 File Offset: 0x00078E90
	public void ClickedResponse1()
	{
		this.ClickedResponse(1);
	}

	// Token: 0x060005A3 RID: 1443 RVA: 0x0007AC99 File Offset: 0x00078E99
	public void ClickedResponse2()
	{
		this.ClickedResponse(2);
	}

	// Token: 0x060005A4 RID: 1444 RVA: 0x0007ACA2 File Offset: 0x00078EA2
	public void ClickedResponse3()
	{
		this.ClickedResponse(3);
	}

	// Token: 0x060005A5 RID: 1445 RVA: 0x0007ACAB File Offset: 0x00078EAB
	public void ClickedResponse4()
	{
		this.ClickedResponse(4);
	}

	// Token: 0x060005A6 RID: 1446 RVA: 0x0007ACB4 File Offset: 0x00078EB4
	public void ClickedResponse(int num)
	{
		string text = "";
		if (num == 1)
		{
			text = this.responseCharacter1;
		}
		if (num == 2)
		{
			text = this.responseCharacter2;
		}
		if (num == 3)
		{
			text = this.responseCharacter3;
		}
		if (num == 4)
		{
			text = this.responseCharacter4;
		}
		if (text != "")
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (text == this.partyList[i].stats.GetName())
				{
					this.respondCharacter = this.partyList[i];
					this.party = this.partyList[i];
					DialogueLua.SetVariable("SelectedParty", text);
					DialogueLua.SetVariable("SelectedPartyRace", this.respondCharacter.stats.race);
					Links.x.renderPortraits.HeadBobble(this.party);
					this.justResponded = this.respondCharacter;
				}
			}
		}
		for (int j = 0; j < this.foundParty.Count; j++)
		{
			if (!(this.foundParty[j] == this.justResponded))
			{
				if (j == 0)
				{
					this.responseBtn1.text = "";
				}
				if (j == 1)
				{
					this.responseBtn2.text = "";
				}
				if (j == 2)
				{
					this.responseBtn3.text = "";
				}
				if (j == 3)
				{
					this.responseBtn4.text = "";
				}
			}
		}
		this.responseCharacter1 = "";
		this.responseCharacter2 = "";
		this.responseCharacter3 = "";
		this.responseCharacter4 = "";
	}

	// Token: 0x060005A7 RID: 1447 RVA: 0x0007AE51 File Offset: 0x00079051
	public void SetResponses()
	{
	}

	// Token: 0x060005A8 RID: 1448 RVA: 0x0007AE54 File Offset: 0x00079054
	private Character FindRandom()
	{
		this.randomParty.Clear();
		for (int i = 0; i < this.talkingParty.Count; i++)
		{
			if (!this.foundParty.Contains(this.talkingParty[i]))
			{
				this.randomParty.Add(this.talkingParty[i]);
			}
		}
		if (this.randomParty.Count > 1)
		{
			return this.randomParty[Random.Range(0, this.randomParty.Count)];
		}
		return Links.x.main;
	}

	// Token: 0x060005A9 RID: 1449 RVA: 0x0007AEE7 File Offset: 0x000790E7
	public void OnResponse()
	{
		this.sequence = "";
	}

	// Token: 0x060005AA RID: 1450 RVA: 0x0007AEF4 File Offset: 0x000790F4
	public void ResponsesSetup()
	{
		this.responsesOn = true;
		this.pcResponses = this.system.currentConversationState.pcResponses;
		this.foundAnswers = new bool[4];
		string text = "";
		string text2 = "";
		string text3 = "";
		string text4 = "";
		for (int i = 0; i < this.pcResponses.Length; i++)
		{
			if (i == 0)
			{
				text = this.responseBtn1.response.desc;
			}
			if (i == 1)
			{
				text2 = this.responseBtn2.response.desc;
			}
			if (i == 2)
			{
				text3 = this.responseBtn3.response.desc;
			}
			if (i == 3)
			{
				text4 = this.responseBtn4.response.desc;
			}
		}
		this.foundParty.Clear();
		this.foundPartyResponses.Clear();
		this.responseCharacter1 = "";
		this.responseCharacter2 = "";
		this.responseCharacter3 = "";
		this.responseCharacter4 = "";
		bool flag = false;
		for (int j = 0; j < 4; j++)
		{
			string text5 = text;
			Transform transform = this.response1;
			StandardUIResponseButton standardUIResponseButton = this.responseBtn1;
			if (j == 1)
			{
				text5 = text2;
				transform = this.response2;
				standardUIResponseButton = this.responseBtn2;
			}
			if (j == 2)
			{
				text5 = text3;
				transform = this.response3;
				standardUIResponseButton = this.responseBtn3;
			}
			if (j == 3)
			{
				text5 = text4;
				transform = this.response4;
				standardUIResponseButton = this.responseBtn4;
			}
			if (standardUIResponseButton.response != null)
			{
				int nodeID = standardUIResponseButton.response.nodeID;
				for (int k = 0; k < this.savedIDs.Count; k++)
				{
					if (nodeID == this.savedIDs[k])
					{
						Character character = this.savedCharacters[k];
						if (!this.foundParty.Contains(character))
						{
							int num = this.talkingParty.IndexOf(character);
							transform.position = this.responsePoints[num].position;
							bool flag2 = true;
							bool flag3 = false;
							bool flag4 = false;
							this.FindArchetype(text5, out flag2, out flag3, out flag4);
							this.foundParty.Add(character);
							this.foundPartyResponses.Add(standardUIResponseButton);
							if (flag4)
							{
								flag = true;
							}
							if (flag3)
							{
								standardUIResponseButton.response.formattedText = standardUIResponseButton.response.alternativeFormattedText;
								standardUIResponseButton.SetFormattedText(standardUIResponseButton.response.formattedText);
							}
							if (num == 0)
							{
								this.responseCharacter1 = character.stats.GetName();
							}
							if (num == 1)
							{
								this.responseCharacter2 = character.stats.GetName();
							}
							if (num == 2)
							{
								this.responseCharacter3 = character.stats.GetName();
							}
							if (num == 3)
							{
								this.responseCharacter4 = character.stats.GetName();
							}
							this.foundAnswers[j] = true;
						}
					}
				}
			}
		}
		for (int l = 0; l < 4; l++)
		{
			string text6 = text;
			Transform transform2 = this.response1;
			StandardUIResponseButton standardUIResponseButton2 = this.responseBtn1;
			if (l == 1)
			{
				text6 = text2;
				transform2 = this.response2;
				standardUIResponseButton2 = this.responseBtn2;
			}
			if (l == 2)
			{
				text6 = text3;
				transform2 = this.response3;
				standardUIResponseButton2 = this.responseBtn3;
			}
			if (l == 3)
			{
				text6 = text4;
				transform2 = this.response4;
				standardUIResponseButton2 = this.responseBtn4;
			}
			if (standardUIResponseButton2.response != null && !this.foundAnswers[l])
			{
				int nodeID2 = standardUIResponseButton2.response.nodeID;
				if (text6 == "")
				{
					text6 = "Any";
				}
				if (text6 != "")
				{
					bool flag5 = true;
					bool flag6 = false;
					bool flag7 = false;
					Character character2 = this.FindArchetype(text6, out flag5, out flag6, out flag7);
					if (flag7)
					{
						flag = true;
					}
					if (character2)
					{
						this.foundParty.Add(character2);
						this.foundPartyResponses.Add(standardUIResponseButton2);
					}
					else
					{
						if (flag5)
						{
							character2 = this.FindRandom();
							this.foundParty.Add(character2);
							this.foundPartyResponses.Add(standardUIResponseButton2);
						}
						if (flag6)
						{
							standardUIResponseButton2.response.formattedText = standardUIResponseButton2.response.alternativeFormattedText;
							standardUIResponseButton2.SetFormattedText(standardUIResponseButton2.response.formattedText);
						}
					}
					if (character2)
					{
						if (l == 0)
						{
							this.responseCharacter1 = character2.stats.GetName();
						}
						if (l == 1)
						{
							this.responseCharacter2 = character2.stats.GetName();
						}
						if (l == 2)
						{
							this.responseCharacter3 = character2.stats.GetName();
						}
						if (l == 3)
						{
							this.responseCharacter4 = character2.stats.GetName();
						}
						int num2 = this.talkingParty.IndexOf(character2);
						transform2.position = this.responsePoints[num2].position;
						this.savedIDs.Add(nodeID2);
						this.savedCharacters.Add(character2);
						this.foundAnswers[l] = true;
					}
					else
					{
						transform2.position = new Vector3(10000f, 10000f, 10000f);
						standardUIResponseButton2.button.interactable = false;
						standardUIResponseButton2.isClickable = false;
						standardUIResponseButton2.isVisible = false;
					}
				}
			}
		}
		GameObject gameObject = null;
		Color color = new Color(0.3f, 0.3f, 0.3f, 0.65f);
		bool flag8 = false;
		Color color2 = new Color(1f, 1f, 1f, 0.65f);
		for (int m = 0; m < this.talkingParty.Count; m++)
		{
			int num3 = this.foundParty.IndexOf(this.talkingParty[m]);
			if (num3 == -1)
			{
				if (m == 0)
				{
					this.portrait1.color = color;
				}
				if (m == 1)
				{
					this.portrait2.color = color;
				}
				if (m == 2)
				{
					this.portrait3.color = color;
				}
				if (m == 3)
				{
					this.portrait4.color = color;
				}
			}
			else
			{
				if (m == 0)
				{
					this.portrait1.color = color2;
					if (!flag8)
					{
						gameObject = this.foundPartyResponses[num3].gameObject;
						flag8 = true;
					}
				}
				if (m == 1)
				{
					this.portrait2.color = color2;
					if (!flag8)
					{
						gameObject = this.foundPartyResponses[num3].gameObject;
						flag8 = true;
					}
				}
				if (m == 2)
				{
					this.portrait3.color = color2;
					if (!flag8)
					{
						gameObject = this.foundPartyResponses[num3].gameObject;
						flag8 = true;
					}
				}
				if (m == 3)
				{
					this.portrait4.color = color2;
					if (!flag8)
					{
						gameObject = this.foundPartyResponses[num3].gameObject;
						flag8 = true;
					}
				}
			}
		}
		if (this.continueButton2.gameObject.activeSelf)
		{
			gameObject = this.continueButton2.gameObject;
		}
		if (!flag8)
		{
			gameObject = this.byeButton.gameObject;
		}
		if (flag)
		{
			DialogueLua.SetVariable("ArchetypeFail", true);
		}
		else
		{
			DialogueLua.SetVariable("ArchetypeFail", false);
		}
		this.npcTalking = false;
		if (Links.x.mk)
		{
			EventSystem.current.SetSelectedGameObject(null);
			return;
		}
		base.StartCoroutine(this.SetSelected(gameObject));
	}

	// Token: 0x060005AB RID: 1451 RVA: 0x0007B611 File Offset: 0x00079811
	private IEnumerator SetSelected(GameObject startSelected)
	{
		yield return new WaitForSeconds(0.1f);
		this.responsesOn = true;
		EventSystem.current.SetSelectedGameObject(startSelected);
		if (startSelected)
		{
			startSelected.GetComponent<UITriggerButton>().SetSelected(true);
		}
		yield break;
	}

	// Token: 0x060005AC RID: 1452 RVA: 0x0007B628 File Offset: 0x00079828
	public void SetupConversation(string dialogueFile, Character mainSpeaker, Character mainSpeaker2, Character mainSpeaker3, Character responder)
	{
		bool flag = false;
		if (dialogueFile == "Quip")
		{
			bool flag2 = false;
			if (this.npc1.stats.isHouseGuard && this.npc1.npc && (Links.x.diorama.sceneName.Contains("C6") || Links.x.diorama.sceneName.Contains("D6")) && !Links.x.diorama.sceneName.Contains("Creation") && !dialogueFile.Contains("Bribe") && Records.x.ExilesToTurnIn() > 0)
			{
				flag2 = true;
			}
			if (!flag2)
			{
				flag = !(this.FindQuip(mainSpeaker, dialogueFile) != "");
				mainSpeaker.PlayAnimation("Talk_1", 0f);
			}
		}
		if (!flag && mainSpeaker)
		{
			string xmlName = mainSpeaker.stats.xmlName;
			if (xmlName == "RozafirStoreKeep")
			{
				if (QuestLog.GetQuestState("D6_Licech") != QuestState.ActivePart2)
				{
					flag = true;
				}
				if (dialogueFile.Contains("Party/Bribe"))
				{
					flag = false;
				}
			}
			if (xmlName == "RenazinInformantFarmer")
			{
				if (this.npc1.creatures.isDay)
				{
					flag = true;
				}
				if (dialogueFile.Contains("Party/Bribe"))
				{
					flag = false;
				}
			}
			if (xmlName == "RozafirStoreGuardA" || xmlName == "RozafirStoreGuardB")
			{
				if (QuestLog.GetQuestState("D6_Licech") != QuestState.WaitingForExileIsland && QuestLog.GetQuestState("D6_Licech") != QuestState.ExileIsland && QuestLog.GetQuestState("D6_Licech") != QuestState.PerpIsDead && QuestLog.GetQuestState("D6_Licech") != QuestState.Complete)
				{
					flag = true;
				}
				if (dialogueFile.Contains("Party/Bribe"))
				{
					flag = false;
				}
			}
			if (flag)
			{
				this.FindQuip(mainSpeaker, dialogueFile);
				mainSpeaker.PlayAnimation("Talk_1", 0f);
			}
		}
		if (!flag)
		{
			this.diaFile = dialogueFile;
			if (Records.x.paused)
			{
				Links.x.gameplay.TogglePause(false);
			}
			if (this.startCorout == null)
			{
				Records.x.dialogue = true;
				this.startCorout = this.Starting(dialogueFile, mainSpeaker, mainSpeaker2, mainSpeaker3, responder);
				base.StartCoroutine(this.startCorout);
			}
		}
		if (Records.x.editor)
		{
			Debug.Log(string.Concat(new string[]
			{
				"Start a dialogue: ",
				dialogueFile,
				" ",
				(mainSpeaker != null) ? mainSpeaker.ToString() : null,
				" ",
				(mainSpeaker2 != null) ? mainSpeaker2.ToString() : null,
				" ",
				(mainSpeaker3 != null) ? mainSpeaker3.ToString() : null,
				" ",
				(responder != null) ? responder.ToString() : null,
				" ",
				this.initiateNum.ToString(),
				" ",
				flag.ToString()
			}));
		}
	}

	// Token: 0x060005AD RID: 1453 RVA: 0x0007B91D File Offset: 0x00079B1D
	private IEnumerator Starting(string dialogueFile, Character mainSpeaker, Character mainSpeaker2, Character mainSpeaker3, Character responder)
	{
		while (Records.x.IsSaving())
		{
			yield return null;
		}
		Links.x.cameraEffects.ToggleObscurance();
		this.stopDialogue = false;
		this.setRotation = false;
		this.training = false;
		this.trainingSkill = "";
		this.skillTraining.SetActive(false);
		this.buySongs.SetActive(false);
		this.vignettes.NewDialogue();
		this.doNotTurnOnHud = false;
		this.noBobbling = false;
		this.responsesOn = false;
		DialogueManager.displaySettings.subtitleSettings.continueButton = DisplaySettings.SubtitleSettings.ContinueButtonMode.Never;
		if (Records.x.filming)
		{
			this.system.displaySettings.subtitleSettings.subtitleCharsPerSecond = 150f;
			this.system.displaySettings.subtitleSettings.minSubtitleSeconds = 1.5f;
		}
		Transform mainSpeakerTr = null;
		this.npc1 = mainSpeaker;
		this.npc2 = mainSpeaker2;
		this.npc3 = mainSpeaker3;
		this.npc4 = null;
		this.npc5 = null;
		if (mainSpeaker && responder && mainSpeaker.party && responder.party)
		{
			this.npc1 = mainSpeaker;
			this.npc2 = responder;
			this.npc3 = mainSpeaker2;
			this.npc4 = mainSpeaker3;
			this.npc5 = null;
		}
		if (Links.x.mk)
		{
			this.navigate.text = "";
		}
		if (Links.x.joy)
		{
			this.navigate.spriteAsset = Links.x.GetSpriteSheetAsset(Links.x.gameplay.currentSpriteSheetAsset);
			this.str.Clear();
			this.str.Append("<voffset=.4em><size=40><sprite=");
			int controllerSprite = Links.x.gameplay.GetControllerSprite("Joystick", Links.x.gameplay.controllerName);
			this.str.Append(controllerSprite);
			this.str.Append("></size></voffset> Navigate ");
			this.navigate.text = this.str.ToString();
		}
		DialogueLua.SetVariable("PartyIsSneaking", false);
		if (dialogueFile == "Party/Boro" && !(this.npc1 == Links.x.gaia.boro))
		{
			if (Records.x.InCombat(false) || this.npc1.hostility == 2)
			{
				this.stopDialogue = true;
			}
			else
			{
				this.boro = this.npc1;
				Character character = Links.x.diorama.FindCharacterHerder();
				if (character)
				{
					this.npc1 = character;
				}
				if (!character)
				{
					if (!Links.x.main.body.sneaking)
					{
						this.stopDialogue = true;
						this.npc1.ignoreRemoveControls = true;
						Records.x.dialogue = false;
						this.npc1.Flee(Links.x.main.node, false, Links.x.gameplay.seconds, 100f);
						yield return new WaitForSeconds(0.5f);
						Links.x.main.StartQuip("I've startled it");
					}
					else
					{
						DialogueLua.SetVariable("PartyIsSneaking", true);
					}
				}
				else
				{
					string xmlName = this.boro.stats.xmlName;
					Vector3 vector;
					Vector4 vector2;
					string text;
					int num;
					Records.x.BoroStats(xmlName, out vector, out vector2, out text, out num, true);
					Vector3 vector3;
					Vector4 vector4;
					string text2;
					int num2;
					Records.x.BoroStats(Records.x.boroID, out vector3, out vector4, out text2, out num2, true);
					int num3 = num - num2;
					if (num3 < 0)
					{
						num3 = 0;
					}
					DialogueLua.SetVariable("Cost", num3);
					DialogueLua.SetVariable("PartyIsSneaking", false);
				}
			}
		}
		this.justResponded = null;
		this.SetPortraitColorGray();
		if (Records.x.paused)
		{
			Links.x.gameplay.TogglePause(false);
		}
		this.importantConversation = false;
		if (this.npc1 && !this.npc1.party && !Records.x.removeControls && !this.stopDialogue)
		{
			this.npc1.HoverOut(false);
			this.npc1.body.Hover(false, true);
			if ((this.initiateNum == 15 || this.initiateNum == 16 || this.initiateNum == 5 || this.initiateNum == 6 || this.initiateNum == 12 || this.initiateNum == 2 || this.initiateNum == 17 || this.initiateNum == 7) && Vector3.Distance(this.npc1.tr.position, Links.x.main.tr.position) > 15f && Links.x.diorama.sceneName != "C6_FortenLazure" && Links.x.worldCamera.orthographic)
			{
				Links.x.hoverObject = this.npc1.gameObject;
				Shader.SetGlobalVector("_DoorLightPosition", this.npc1.tr.position + new Vector3(0f, 3f, 0f));
				Records.x.hoverLightColor = Color.white * 0.1f;
				Shader.SetGlobalFloat("_DoorLightRange", 15f);
				Shader.SetGlobalVector("_CinematicRevealPosition", this.npc1.tr.position);
			}
			for (int i = 0; i < this.allParty.Count; i++)
			{
				if (this.allParty[i] && this.allParty[i])
				{
					this.allParty[i].ClearNodePath();
					this.allParty[i].TargetReached();
				}
			}
			Links.x.rtsCamera.Follow(this.npc1.tr, this.npc1, false);
			Links.x.rtsCamera.Zoom(true, "Dialogue");
			if (dialogueFile.Contains("Pavura"))
			{
				this.importantConversation = true;
			}
			if (dialogueFile.Contains("LazureScribe") && QuestLog.GetQuestState("CharacterCreation") != QuestState.Success)
			{
				this.importantConversation = true;
			}
			if (this.npc1.moving)
			{
				this.npc1.ClearNodePath();
				this.npc1.TargetReached();
			}
			if (!this.npc1.resting)
			{
				this.npc1.SetRotation(Quaternion.LookRotation(Links.x.main.tr.position - this.npc1.tr.position), false, false);
			}
			if (Links.x.main.moving)
			{
				Links.x.main.TargetReached();
			}
			while (Links.x.main.moving)
			{
				yield return null;
			}
			Links.x.main.alwaysTurn = true;
			Links.x.main.SetRotation(Quaternion.LookRotation(this.npc1.tr.position - Links.x.main.tr.position), true, false);
			float timeToLerp = 1f;
			float percentage = 0f;
			float startTime = Time.time;
			if (this.npc1.body.GetHead())
			{
				Links.x.itemPickupFX.gameObject.SetActive(true);
				Links.x.itemPickupFX.gameObject.GetComponent<HannahAnimator>().Play("Idle");
			}
			MasterAudio.PlaySoundAndForget("Feedback", Random.Range(0.5f, 0.7f), new float?(1f), 0f, "StartDialogue", null);
			while (percentage < 1f)
			{
				percentage = (Time.time - startTime) / timeToLerp;
				if (this.npc1.body.GetHead())
				{
					Vector3 position = this.npc1.body.GetHead().position;
					Vector3 vector5 = Links.x.worldCamera.WorldToScreenPoint(position);
					vector5.z = 0f;
					vector5.x = vector5.x * (1920f / (float)Screen.width) - 960f;
					vector5.y = vector5.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
					Links.x.itemPickupFX.localPosition = vector5;
				}
				yield return null;
			}
			while (Links.x.main.turning || this.npc1.turning)
			{
				yield return null;
			}
			Links.x.hoverObject = null;
		}
		this.NoExit(true);
		if (dialogueFile == "Party/Boro" && this.npc1 == Links.x.gaia.boro)
		{
			this.stopDialogue = true;
			this.OpenBags();
			yield return new WaitForSeconds(0.5f);
		}
		this.savedIDs.Clear();
		this.savedCharacters.Clear();
		DialogueLua.SetVariable("GiveXP", false);
		if (DialogueLua.GetVariable("GiveXP").asBool)
		{
			DialogueLua.SetVariable("GiveXP", false);
		}
		this.message1.SetActive(false);
		this.message2.SetActive(false);
		this.message3.SetActive(false);
		this.message4.SetActive(false);
		this.messageText1.text = "";
		this.messageText2.text = "";
		this.messageText3.text = "";
		this.messageText4.text = "";
		DialogueLua.SetVariable("ShowCinematic", false);
		if (this.initiateNum == 15 || this.initiateNum == 16 || this.initiateNum == 5 || this.initiateNum == 6 || this.initiateNum == 12 || this.initiateNum == 2 || this.initiateNum == 17 || this.initiateNum == 7)
		{
			DialogueLua.SetVariable("ShowCinematic", true);
			this.CheckCinematicDialogues(dialogueFile);
			if (this.npc1 && (this.npc1.stats.characterRow._Quest.Contains("GraveRobber") || this.npc1.stats.characterRow._Quest.Contains("Thieves") || this.npc1.stats.characterRow._Quest.Contains("RobberBaron")))
			{
				Links.x.gaia.SetPlaylist("Up To No Good", true, 0f);
			}
			if (!this.stopDialogue && (this.initiateNum == 15 || this.initiateNum == 5))
			{
				bool flag = Links.x.sensory.CheckSneaking(this.npc1, true, null, false, false);
				if (this.npc2 && flag)
				{
					flag = Links.x.sensory.CheckSneaking(this.npc2, true, null, false, false);
				}
				if (this.npc3 && flag)
				{
					flag = Links.x.sensory.CheckSneaking(this.npc3, true, null, false, false);
				}
				if (this.npc4 && flag)
				{
					flag = Links.x.sensory.CheckSneaking(this.npc4, true, null, false, false);
				}
				DialogueLua.SetVariable("PartyIsSneaking", flag);
				Debug.Log(flag);
				if (dialogueFile == "D6/RenazinSpy" && flag)
				{
					this.stopDialogue = true;
					this.npc1.stats.initiateDialogue = 5;
					this.npc1.stats.canTalk = true;
				}
			}
		}
		else
		{
			if (dialogueFile == "FortenLazure/LazureGuardOffDuty")
			{
				Character character2 = Links.x.diorama.FindCharacter("LazurePostingMaster");
				if (character2 && !character2.sleeping && !character2.dead && character2.IsSentient())
				{
					this.npc2 = character2;
				}
			}
			if (dialogueFile == "FortenLazure/LazureGuardDayGateB")
			{
				Character character3 = Links.x.diorama.FindCharacter("LazureGuardDayGateA");
				if (character3 && !character3.sleeping && !character3.dead && character3.IsSentient())
				{
					this.npc2 = character3;
					Character character4 = this.npc2;
					Debug.Log(((character4 != null) ? character4.ToString() : null) + " found");
				}
			}
			if (dialogueFile == "Farm/CaravanBlessed")
			{
				Character character5 = Links.x.diorama.FindCharacter("DuraCampWoman");
				if (character5 && !character5.dead)
				{
					this.npc2 = character5;
					Character character6 = this.npc2;
					Debug.Log(((character6 != null) ? character6.ToString() : null) + " found");
				}
			}
			if (dialogueFile == "FortenLazure/LazureChanter")
			{
				Character character7 = Links.x.diorama.FindCharacter("LazureGuardSickA");
				if (character7 && !character7.dead)
				{
					this.npc2 = character7;
				}
				character7 = Links.x.diorama.FindCharacter("LazureGuardSickB");
				if (character7 && !character7.dead)
				{
					this.npc3 = character7;
				}
				character7 = Links.x.diorama.FindCharacter("LazureGuardSickC");
				if (character7 && !character7.dead)
				{
					this.npc4 = character7;
				}
			}
			if (dialogueFile == "WestRuins/Captain" || dialogueFile == "Rozafir/Baths")
			{
				this.npc2 = Links.x.GetPortraitID(0);
				this.npc3 = Links.x.GetPortraitID(1);
				this.npc4 = Links.x.GetPortraitID(2);
				this.npc5 = Links.x.GetPortraitID(3);
			}
			if (dialogueFile == "LazureFalls/Bandit")
			{
				Character character8 = Links.x.diorama.FindCharacter("FallsBanditB");
				this.npc3 = character8;
				character8 = Links.x.diorama.FindCharacter("FallsBanditFriend");
				this.npc2 = character8;
			}
		}
		if (this.initiateNum == 2)
		{
			this.npc1.stats.initiateDialogue = 0;
		}
		if (this.initiateNum == 12)
		{
			this.npc1.stats.initiateDialogue = 10;
		}
		if ((this.initiateNum == 0 || this.initiateNum == 10) && this.npc1 && this.npc1.stats.isHouseGuard && this.npc1.npc && (Links.x.diorama.sceneName.Contains("C6") || Links.x.diorama.sceneName.Contains("D6")) && !Links.x.diorama.sceneName.Contains("Creation") && !dialogueFile.Contains("Bribe"))
		{
			int num4 = Records.x.ExilesToTurnIn();
			if (num4 > 0)
			{
				dialogueFile = "Party/Banishment";
				DialogueLua.SetVariable("StunBadges", num4);
				if (Records.x.HasSpecialTurnIn("Dolki"))
				{
					DialogueLua.SetVariable("SpecialExile", "Dolki");
				}
				else
				{
					DialogueLua.SetVariable("SpecialExile", "");
				}
			}
		}
		if (dialogueFile.Contains("Bribe"))
		{
			int num5 = Records.x.BribeBadgeCount();
			DialogueLua.SetVariable("BribeAmount", (float)num5 * 200f);
		}
		if (!this.stopDialogue)
		{
			Records.x.dialogue = true;
			Links.x.cameraEffects.ToggleObscurance();
			Records.x.StartUIFade(true, false);
			if (this.quickNoteOpen)
			{
				this.quickNoteOpen = false;
			}
			Records.x.SetTypingState(true);
			Links.x.hudControl.ChangeHudVisibility(false, true);
			Records.x.RemoveControls(true);
			Links.x.inventory.groundBag.RemoveLabels();
			this.startPosition = this.npc1.tr.position;
			if (!Records.x.partyCamping && this.initiateNum != 5 && this.initiateNum != 15)
			{
				if (this.npc1)
				{
					this.npc1.EndPath();
				}
				if (this.npc2)
				{
					this.npc2.EndPath();
				}
				if (this.npc3)
				{
					this.npc3.EndPath();
				}
				if (this.npc4)
				{
					this.npc4.EndPath();
				}
			}
			for (int j = 0; j < this.allParty.Count; j++)
			{
				this.allParty[j].ClearNodePath();
				this.allParty[j].ClearMoveTargets();
			}
			yield return new WaitForSeconds(0.2f);
		}
		else
		{
			Records.x.dialogue = false;
		}
		this.respondCharacter = responder;
		this.itemGiveCount = 0;
		if (!this.stopDialogue)
		{
			CharacterInfo.RegisterActorTransform("Player", Links.x.main.tr);
			CharacterInfo.RegisterActorTransform("PlayerAnimator", Links.x.main.body.transform);
			CharacterInfo.RegisterActorTransform("NPC 1", this.npc1.tr);
			CharacterInfo.RegisterActorTransform("NPC1Animator", this.npc1.body.transform);
			this.npc1.SetMeshState(true);
			this.npc1.animator.SetBool("Idle", false);
			if (this.npc2)
			{
				CharacterInfo.RegisterActorTransform("NPC 2", this.npc2.tr);
				CharacterInfo.RegisterActorTransform("NPC2Animator", this.npc2.body.transform);
				this.npc2.SetMeshState(true);
				this.npc2.animator.SetBool("Idle", false);
			}
			if (this.npc3)
			{
				CharacterInfo.RegisterActorTransform("NPC 3", this.npc3.tr);
				CharacterInfo.RegisterActorTransform("NPC3Animator", this.npc3.body.transform);
				this.npc3.SetMeshState(true);
				this.npc3.animator.SetBool("Idle", false);
			}
			if (this.npc4)
			{
				CharacterInfo.RegisterActorTransform("NPC 4", this.npc4.tr);
				CharacterInfo.RegisterActorTransform("NPC4Animator", this.npc4.body.transform);
				this.npc4.SetMeshState(true);
				this.npc4.animator.SetBool("Idle", false);
			}
			if (this.npc5)
			{
				CharacterInfo.RegisterActorTransform("NPC 5", this.npc5.tr);
			}
		}
		if (dialogueFile == "Pavura")
		{
			yield return new WaitForSecondsRealtime(1.5f);
		}
		int num6 = 0;
		int num7 = 0;
		int num8 = 0;
		this.name1.text = "";
		this.portrait1.texture = Links.x.emptyTexture;
		this.name2.text = "";
		this.portrait2.texture = Links.x.emptyTexture;
		this.name3.text = "";
		this.portrait3.texture = Links.x.emptyTexture;
		this.name4.text = "";
		this.portrait4.texture = Links.x.emptyTexture;
		this.talkingParty.Clear();
		bool flag2 = false;
		if (dialogueFile.Contains("RoadAhead") || dialogueFile.Contains("Party/ExileIsland"))
		{
			DialogueLua.SetVariable("VignetteAnimController", "Right");
			flag2 = true;
		}
		if (!flag2)
		{
			for (int k = 0; k < this.partyList.Count; k++)
			{
				if (this.partyList[k] && !this.partyList[k].isBoro && !this.partyList[k].summoned)
				{
					Links.x.renderPortraits.PlayAnimation(this.partyList[k], "dialogue", "Look Around Less");
					Links.x.renderPortraits.FreshBlinks(this.partyList[k]);
					this.talkingParty.Add(this.partyList[k]);
					if (num8 == 0)
					{
						this.name1.text = this.partyList[k].stats.GetName();
						this.portrait1.texture = this.partyList[k].characterSheetPortrait.GetTextureIdle(0);
					}
					if (num8 == 1)
					{
						this.name2.text = this.partyList[k].stats.GetName();
						this.portrait2.texture = this.partyList[k].characterSheetPortrait.GetTextureIdle(0);
					}
					if (num8 == 2)
					{
						this.name3.text = this.partyList[k].stats.GetName();
						this.portrait3.texture = this.partyList[k].characterSheetPortrait.GetTextureIdle(0);
					}
					if (num8 == 3)
					{
						this.name4.text = this.partyList[k].stats.GetName();
						this.portrait4.texture = this.partyList[k].characterSheetPortrait.GetTextureIdle(0);
					}
					num8++;
					num7++;
					num6++;
				}
			}
		}
		if (!this.stopDialogue)
		{
			DialogueLua.SetVariable("PartySize", num7);
			DialogueLua.SetVariable("PartySizeAll", num6);
			DialogueLua.SetVariable("SceneName", Links.x.diorama.sceneName);
			this.TimeOfDay();
			if (num7 == 1)
			{
				DialogueLua.SetVariable("MyOur", "my");
				DialogueLua.SetVariable("WeI", "I");
				DialogueLua.SetVariable("MyOurU", "My");
				DialogueLua.SetVariable("WeIU", "I");
				DialogueLua.SetVariable("MeUs", "me");
			}
			else
			{
				DialogueLua.SetVariable("MyOur", "our");
				DialogueLua.SetVariable("WeI", "we");
				DialogueLua.SetVariable("MyOurU", "Our");
				DialogueLua.SetVariable("WeIU", "We");
				DialogueLua.SetVariable("MeUs", "us");
			}
			DialogueLua.SetVariable("NPCName", this.npc1.stats.GetDisplayName());
			if (this.npc2)
			{
				DialogueLua.SetVariable("NPC2Name", this.npc2.stats.GetDisplayName());
			}
			else
			{
				DialogueLua.SetVariable("NPC2Name", "");
			}
			if (this.npc3)
			{
				DialogueLua.SetVariable("NPC3Name", this.npc3.stats.GetDisplayName());
			}
			else
			{
				DialogueLua.SetVariable("NPC3Name", "");
			}
			if (this.npc4)
			{
				DialogueLua.SetVariable("NPC4Name", this.npc4.stats.GetDisplayName());
			}
			else
			{
				DialogueLua.SetVariable("NPC4Name", "");
			}
			if (this.npc5)
			{
				DialogueLua.SetVariable("NPC5Name", this.npc5.stats.GetDisplayName());
			}
			else
			{
				DialogueLua.SetVariable("NPC5Name", "");
			}
			DialogueLua.SetVariable("NPCGenericName", this.npc1.stats.GetGenericName());
			DialogueLua.SetVariable("Emeralds", Links.x.inventory.emeralds);
			DialogueLua.SetVariable("Disposition", Links.x.main.stats.Disposition(Links.x.diorama.sceneName));
			DialogueLua.SetVariable("PaganPartyMember", "");
			DialogueLua.SetVariable("ResponderAlive", true);
			DialogueLua.SetVariable("NPCAlive", true);
			DialogueLua.SetVariable("BranchActiveA", false);
			DialogueLua.SetVariable("BranchActiveB", false);
			DialogueLua.SetVariable("BranchActiveC", false);
			DialogueLua.SetVariable("BranchActiveD", false);
			int num9 = Random.Range(0, 4);
			DialogueLua.SetVariable("Random4", num9);
			DialogueLua.SetVariable("GameHours", (int)Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours()));
			Links.x.gameplay.GetTimeOfDay();
			DialogueLua.SetVariable("TimeOfDay", Links.x.gameplay.timeOfDay);
			if (this.npc1.stats.initiateDialogue >= 10)
			{
				DialogueLua.SetVariable("KnowsName", true);
			}
			else
			{
				DialogueLua.SetVariable("KnowsName", false);
			}
			for (int l = 0; l < this.partyList.Count; l++)
			{
				string text3 = "Party1";
				if (l == 1)
				{
					text3 = "Party2";
				}
				if (l == 2)
				{
					text3 = "Party3";
				}
				if (l == 3)
				{
					text3 = "Party4";
				}
				if (l < this.partyList.Count)
				{
					DialogueLua.SetVariable(text3, this.partyList[l].stats.GetName());
					float sqrMagnitude = (this.partyList[l].tr.position - this.npc1.tr.position).sqrMagnitude;
					DialogueLua.SetVariable(text3 + "Near", true);
					DialogueLua.SetVariable(text3, this.partyList[l].stats.GetName());
					if (this.partyList[l].mainSelected)
					{
						DialogueLua.SetVariable("SelectedParty", this.partyList[l].stats.GetName());
						DialogueLua.SetVariable("SelectedPartyRace", this.partyList[l].stats.race);
					}
					if (this.partyList[l].stats.HasPaganToken())
					{
						DialogueLua.SetVariable("PaganPartyMember", this.partyList[l].stats.GetName());
					}
				}
				else
				{
					DialogueLua.SetVariable(text3, "[None]");
					DialogueLua.SetVariable(text3 + "Near", false);
				}
			}
		}
		if (!this.stopDialogue)
		{
			DialogueManager.StartConversation(dialogueFile, mainSpeakerTr, responder.tr);
		}
		else
		{
			Records.x.SetTypingState(false);
			Records.x.dialogue = false;
			Links.x.cameraEffects.ToggleObscurance();
			Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true);
			Links.x.rtsCamera.Zoom(false, "Dialogue");
			Records.x.RemoveControls(false);
			Links.x.hudControl.ChangeHudVisibility(true, true);
			Shader.SetGlobalVector("_CinematicRevealPosition", new Vector3(-100000f, -100000f, -100000f));
		}
		this.stopDialogue = false;
		yield return new WaitForSecondsRealtime(0.1f);
		this.training = DialogueLua.GetVariable("Training").asBool;
		if (this.training)
		{
			this.trainingSkill = DialogueLua.GetVariable("TrainingSkill").asString;
			bool flag3 = true;
			if (this.npc1.stats.xmlName.Contains("WestRuinsGemLover") && QuestLog.GetQuestState("D5_Gem") != QuestState.Active && QuestLog.GetQuestState("D5_Gem") != QuestState.Success)
			{
				flag3 = false;
			}
			if (flag3)
			{
				this.skillTraining.SetActive(true);
				this.SetTrainingIcon(this.trainingSkill);
				string text4 = Links.x.inventory.emeralds.ToString();
				this.emeraldText.text = text4;
			}
		}
		this.startCorout = null;
		yield break;
	}

	// Token: 0x060005AE RID: 1454 RVA: 0x0007B954 File Offset: 0x00079B54
	public void StartConversation()
	{
		this.SetSkipKey(true);
		Links.x.hudControl.cinematicQuips.alpha = 0f;
		int conversationID = DialogueManager.currentConversationState.subtitle.dialogueEntry.conversationID;
		string text = DialogueManager.currentConversationState.subtitle.dialogueEntry.MenuText;
		string asString = DialogueLua.GetVariable("VignetteAnimController").asString;
		this.vignettes.animController = asString;
		if (text == "" || text == null)
		{
			text = "Vignette Example";
		}
		this.vignettes.Setup(this.npc1, text);
		if (this.vignettes.body)
		{
			this.typewriter.headBone = this.vignettes.body.GetHead();
			this.typewriter2.headBone = this.vignettes.body.GetHead();
			CharacterInfo.RegisterActorTransform("VignetteAnimator", this.vignettes.body.gameObject.transform);
		}
		Conversation conversation = DialogueManager.masterDatabase.GetConversation(conversationID);
		conversation.ActorID = 1;
		conversation.ConversantID = 2;
		this.characterFollowAudioSource.volume = Links.x.options.soundVolume * 0.5f;
		for (int i = 0; i < this.allParty.Count; i++)
		{
			this.allParty[i].EndPath();
			this.allParty[i].ClearMoveTargets();
		}
		if (this.npc1 && this.npc1.stats.xmlName.Contains("Minstrel"))
		{
			this.CheckToBuySongs();
		}
		Links.x.gameplay.hitCharacter = false;
		Links.x.gameCard.End();
		Links.x.itemCard.End();
		this.npc1.body.Hover(false, true);
		DialogueManager.ChangeActorName("NPC 1", this.npc1.stats.GetDialogueName());
		DialogueManager.ChangeActorName("Player", this.party.stats.displayName);
		if (this.npc1)
		{
			this.npc1.body.lookAtController.EndLookFast(false);
		}
		if (this.npc2)
		{
			this.npc2.body.lookAtController.EndLookFast(false);
			DialogueManager.ChangeActorName("NPC 2", this.npc2.stats.GetDialogueName());
		}
		if (this.npc3)
		{
			this.npc1.body.lookAtController.EndLookFast(false);
			DialogueManager.ChangeActorName("NPC 3", this.npc3.stats.GetDialogueName());
		}
		if (this.npc4)
		{
			this.npc4.body.lookAtController.EndLookFast(false);
			DialogueManager.ChangeActorName("NPC 4", this.npc4.stats.GetDialogueName());
		}
		if (this.npc5)
		{
			this.npc5.body.lookAtController.EndLookFast(false);
			DialogueManager.ChangeActorName("NPC 5", this.npc5.stats.GetDialogueName());
		}
		if (this.party)
		{
			this.party.body.lookAtController.EndLookFast(false);
		}
		this.SetTypewriter(this.npc1);
		base.StartCoroutine(this.DialogueDisplays());
	}

	// Token: 0x060005AF RID: 1455 RVA: 0x0007BCC8 File Offset: 0x00079EC8
	public void SetTypewriter(Character talkingCharacter)
	{
		if (!talkingCharacter)
		{
			return;
		}
		if (talkingCharacter.body.GetNeck())
		{
			this.indicatorCharacter = talkingCharacter;
		}
		else
		{
			this.indicatorCharacter = null;
		}
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		DialogueManager.ChangeActorName("NPC 1", this.npc1.stats.GetDialogueName());
		DialogueManager.ChangeActorName("Player", selectedDialogueCharacter.stats.GetName());
		if (this.npc2)
		{
			DialogueManager.ChangeActorName("NPC 2", this.npc2.stats.GetDialogueName());
		}
		if (this.npc3)
		{
			DialogueManager.ChangeActorName("NPC 3", this.npc3.stats.GetDialogueName());
		}
		if (this.npc4)
		{
			DialogueManager.ChangeActorName("NPC 4", this.npc4.stats.GetDialogueName());
		}
		if (this.npc5)
		{
			DialogueManager.ChangeActorName("NPC 5", this.npc5.stats.GetDialogueName());
		}
		if (!Records.x.partyCamping && !this.setRotation && this.initiateNum != 15)
		{
			int num = this.initiateNum;
		}
		if (this.typewriter && this.vignettes.body)
		{
			this.typewriter.headAnimator = this.vignettes.body.headAnim;
			this.typewriter.headBone = this.vignettes.body.GetHead();
			this.typewriter2.headBone = this.vignettes.body.GetHead();
		}
		this.typewriter.soundVolume = Links.x.options.soundVolume;
		if (this.npc1.party)
		{
			this.typewriter.audioIndex = -1;
			this.typewriter2.audioIndex = -1;
		}
		else
		{
			this.typewriter.audioIndex = talkingCharacter.stats.voiceID;
			this.typewriter2.audioIndex = talkingCharacter.stats.voiceID;
		}
		this.typewriter2.headAnimator = this.typewriter.headAnimator;
		this.typewriter2.soundVolume = Links.x.options.soundVolume;
		this.currentTalking = talkingCharacter;
		if (this.puzzleActions)
		{
			DialogueManager.ChangeActorName("NPC 1", "");
		}
	}

	// Token: 0x060005B0 RID: 1456 RVA: 0x0007BF29 File Offset: 0x0007A129
	private IEnumerator DialogueDisplays()
	{
		yield return new WaitForSeconds(1E-05f);
		Shader.SetGlobalVector("_CinematicRevealPosition", new Vector3(-100000f, -100000f, -100000f));
		this.SetTypewriter(this.npc1);
		if (!Records.x.partyCamping && !this.setRotation && this.initiateNum != 15 && this.initiateNum != 5)
		{
			int num;
			for (int i = 0; i < 3; i = num + 1)
			{
				yield return new WaitForSeconds(0.4f);
				num = i;
			}
		}
		if (Records.x.dialogue)
		{
			this.TurnOffMainCamera();
		}
		this.journalNoteField.text = Links.x.journal.GetDialogueNoteText();
		if (this.quickJournalAnimator.gameObject.activeInHierarchy)
		{
			this.quickJournalAnimator.Play("QuickNoteClose", 0, 1f);
		}
		for (int j = 0; j < this.allParty.Count; j++)
		{
			this.allParty[j].PlayIdle();
			this.allParty[j].animator.SetBool("Idle", false);
		}
		yield break;
	}

	// Token: 0x060005B1 RID: 1457 RVA: 0x0007BF38 File Offset: 0x0007A138
	public void StartTraining()
	{
		this.training = DialogueLua.GetVariable("Training").asBool;
		if (this.training)
		{
			this.trainingSkill = DialogueLua.GetVariable("TrainingSkill").asString;
			this.skillTraining.SetActive(true);
			this.SetTrainingIcon(this.trainingSkill);
			string text = Links.x.inventory.emeralds.ToString();
			this.emeraldText.text = text;
		}
	}

	// Token: 0x060005B2 RID: 1458 RVA: 0x0007BFB6 File Offset: 0x0007A1B6
	public void SkillTrainingOff()
	{
		this.skillTraining.SetActive(false);
	}

	// Token: 0x060005B3 RID: 1459 RVA: 0x0007BFC4 File Offset: 0x0007A1C4
	public void NodeEnd()
	{
		this.typewriter.soundVolume = Links.x.options.soundVolume;
		if (this.playSmile)
		{
			this.playSmile = false;
			if (this.currentTalking && this.currentTalking.body.headAnim)
			{
				this.currentTalking.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.Smile);
			}
		}
		if (this.playFrown)
		{
			this.playFrown = false;
			if (this.currentTalking && this.currentTalking.body.headAnim)
			{
				this.currentTalking.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.Frown);
			}
		}
		if (this.playAngry)
		{
			this.playAngry = false;
			if (this.currentTalking && this.currentTalking.body.headAnim)
			{
				this.currentTalking.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.Angry);
			}
		}
		if (this.playShock)
		{
			this.playShock = false;
			if (this.currentTalking && this.currentTalking.body.headAnim)
			{
				this.currentTalking.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.Shock);
			}
		}
		this.npcTalking = false;
	}

	// Token: 0x060005B4 RID: 1460 RVA: 0x0007C119 File Offset: 0x0007A319
	private IEnumerator ConversationDelay()
	{
		yield return new WaitForSeconds(0.01f);
		if (this.currentTalking && this.currentTalking.body.headAnim)
		{
			this.currentTalking.body.headAnim.moveHead = true;
		}
		if (Links.x.joy)
		{
			while (Links.x.gameplay.actionDown)
			{
				yield return null;
			}
			Links.x.hudControl.JoyBox(false);
			EventSystem.current.SetSelectedGameObject(null);
		}
		yield break;
	}

	// Token: 0x060005B5 RID: 1461 RVA: 0x0007C128 File Offset: 0x0007A328
	public void SetPortraitColorGray()
	{
		Color color = new Color(0.3f, 0.3f, 0.3f, 1f);
		int num = this.talkingParty.IndexOf(this.justResponded);
		for (int i = 0; i < this.talkingParty.Count; i++)
		{
			if (num != i)
			{
				if (i == 0)
				{
					this.portrait1.color = color;
				}
				if (i == 1)
				{
					this.portrait2.color = color;
				}
				if (i == 2)
				{
					this.portrait3.color = color;
				}
				if (i == 3)
				{
					this.portrait4.color = color;
				}
			}
		}
	}

	// Token: 0x060005B6 RID: 1462 RVA: 0x0007C1BB File Offset: 0x0007A3BB
	public void Exclamation()
	{
		this.vignettes.SetFont(this.npc1.stats.race, true);
	}

	// Token: 0x060005B7 RID: 1463 RVA: 0x0007C1DC File Offset: 0x0007A3DC
	public void OnConversationLine(Subtitle subtitle)
	{
		this.vignettes.newLineAnimation = false;
		this.prevHash = this.vignettes.AnimatorHash();
		this.skippingSequence = false;
		this.sequence = subtitle.sequence;
		this.npcTalking = true;
		this.responsesOn = false;
		Links.x.hudControl.JoyBox(false);
		EventSystem.current.SetSelectedGameObject(null);
		this.SetPortraitColorGray();
		if (this.messagedOn == 2)
		{
			this.message1.SetActive(false);
			this.message2.SetActive(false);
			this.message3.SetActive(false);
			this.message4.SetActive(false);
			this.messageText1.text = "";
			this.messageText2.text = "";
			this.messageText3.text = "";
			this.messageText4.text = "";
		}
		this.messagedOn = 0;
		if (this.npc1)
		{
			this.vignettes.SetFont(this.npc1.stats.race, false);
		}
		if (this.npc1)
		{
			if (this.npc1.dead || this.npc1.stunned || !this.npc1.IsSentient())
			{
				DialogueLua.SetVariable("NPCAlive", false);
			}
			this.npc1.animator.SetBool("Idle", false);
			base.StartCoroutine(this.ConversationDelay());
		}
		if (this.respondCharacter && (this.respondCharacter.dead || this.respondCharacter.stunned || !this.respondCharacter.IsSentient()))
		{
			DialogueLua.SetVariable("ResponderAlive", false);
		}
		if (!this.updatedDialogueActor)
		{
			CharacterInfo.RegisterActorTransform("Dialogue", base.transform);
			this.updatedDialogueActor = true;
		}
		if (Time.realtimeSinceStartup > 3f + this.lastZoomChange)
		{
			this.lastZoomChange = Time.realtimeSinceStartup;
		}
	}

	// Token: 0x060005B8 RID: 1464 RVA: 0x0007C3DC File Offset: 0x0007A5DC
	public void DialogueEndVariables(bool doNotTurnOnHud)
	{
		Records.x.dialogue = false;
		if (!Links.x.spellcrafting.open && !Links.x.characterSheet.open)
		{
			this.TurnOnMainCamera();
		}
		if (!doNotTurnOnHud)
		{
			Records.x.RemoveControls(false);
		}
		for (int i = 0; i < this.allParty.Count; i++)
		{
			this.allParty[i].animator.SetBool("Idle", true);
		}
		if (this.npc1)
		{
			this.npc1.PlayIdle();
			if (this.npc2)
			{
				this.npc2.PlayIdle();
			}
			if (this.npc3)
			{
				this.npc3.PlayIdle();
			}
			if (this.npc4)
			{
				this.npc4.PlayIdle();
			}
			if (this.npc1.stats.xmlName != "LazureScribeCC" && this.npc1.stats.xmlName != "Pavura")
			{
				Records.x.StartUIFade(false, false);
			}
			Links.x.rtsCamera.Follow(Links.x.main.tr, Links.x.main, true);
			Links.x.rtsCamera.Zoom(false, "Dialogue");
			if (this.npc1.stats.xmlName == "Pavura")
			{
				Debug.Log("End Pavura");
				Links.x.combat.gameObject.AddComponent<Cinematics>().EndPavura();
			}
		}
		for (int j = 0; j < this.partyList.Count; j++)
		{
			if (this.partyList[j] && !this.partyList[j].isBoro && !this.partyList[j].summoned)
			{
				Links.x.renderPortraits.PlayAnimation(this.partyList[j], "", "Look Around Less");
			}
		}
		Links.x.hudControl.cinematicQuips.alpha = 1f;
	}

	// Token: 0x060005B9 RID: 1465 RVA: 0x0007C60D File Offset: 0x0007A80D
	public void EndConversation()
	{
		base.StartCoroutine(this.End());
	}

	// Token: 0x060005BA RID: 1466 RVA: 0x0007C61C File Offset: 0x0007A81C
	private IEnumerator End()
	{
		if (Links.x.joy)
		{
			yield return new WaitForSecondsRealtime(0.15f);
		}
		this.typewriter.headAnimator = null;
		DialogueLua.SetVariable("Training", false);
		this.talkingIndicator.gameObject.SetActive(false);
		this.indicatorCharacter = null;
		Character character = this.npc1;
		if (!Links.x.forfeits.on && !Records.x.inMenus)
		{
			Links.x.hudControl.JoyBox(false);
		}
		if (this.npc1)
		{
			this.currentTalking = this.npc1;
			this.SetNone();
		}
		if (this.npc2)
		{
			this.currentTalking = this.npc2;
			this.SetNone();
		}
		if (this.npc3)
		{
			this.currentTalking = this.npc3;
			this.SetNone();
		}
		if (this.npc4)
		{
			this.currentTalking = this.npc4;
			this.SetNone();
		}
		if (this.npc5)
		{
			this.currentTalking = this.npc5;
			this.SetNone();
		}
		DialogueLua.SetVariable("VignetteAnimController", "");
		this.vignettes.animController = "";
		if (this.npc1.stats.xmlName.Contains("LazureScribe") && QuestLog.GetQuestState("CharacterCreation") == QuestState.Active)
		{
			QuestLog.SetQuestState("CharacterCreation", QuestState.Success);
		}
		if (this.npc1.stats.xmlName == "Pavura")
		{
			this.doNotTurnOnHud = true;
		}
		if (Links.x.creation || this.openingCreation)
		{
			this.doNotTurnOnHud = true;
		}
		this.openingCreation = false;
		Links.x.journal.UpdateDialogueNote();
		if (this.startCombat)
		{
			this.SetHostileInstant(character);
		}
		this.startCombat = false;
		this.typewriter.lookAt = null;
		if (this.quickJournalAnimator.gameObject.activeInHierarchy)
		{
			this.quickJournalAnimator.Play("QuickNoteClose", 0, 1f);
		}
		this.DialogueEndVariables(this.doNotTurnOnHud);
		for (int i = 0; i < this.allParty.Count; i++)
		{
			this.currentTalking = this.allParty[i];
			this.SetNone();
		}
		this.initiateNum = 0;
		Records.x.SetTypingState(false);
		if (!this.doNotTurnOnHud && !Links.x.characterSheet.open && !Links.x.forfeits.on)
		{
			Links.x.hudControl.ChangeHudVisibility(true, true);
		}
		if (this.fx.gameObject.activeSelf)
		{
			this.fx.gameObject.SetActive(false);
		}
		bool partyCamping = Records.x.partyCamping;
		this.giveXP = DialogueLua.GetVariable("GiveXP").asBool;
		if (this.giveXP)
		{
			Links.x.questEnd.QuestEnded(DialogueLua.GetVariable("QuestXP").asString);
			this.giveXP = false;
			DialogueLua.SetVariable("GiveXP", false);
		}
		this.puzzleActions = null;
		Links.x.cameraEffects.ToggleObscurance();
		this.vignettes.End();
		this.doNotTurnOnHud = false;
		if (!Links.x.spellcrafting.open && !Links.x.characterSheet.open)
		{
			this.TurnOnMainCamera();
		}
		yield break;
	}

	// Token: 0x060005BB RID: 1467 RVA: 0x0007C62C File Offset: 0x0007A82C
	public bool GiveXP()
	{
		return DialogueLua.GetVariable("GiveXP").asBool;
	}

	// Token: 0x060005BC RID: 1468 RVA: 0x0007C64C File Offset: 0x0007A84C
	public void SwitchNPC()
	{
		string text = DialogueLua.GetVariable("Vignette").asString;
		int asInt = DialogueLua.GetVariable("CurrentNPC").asInt;
		Character character = this.npc1;
		if (asInt == 1)
		{
			character = this.npc1;
		}
		if (asInt == 2)
		{
			character = this.npc2;
		}
		if (asInt == 3)
		{
			character = this.npc3;
		}
		if (asInt == 4)
		{
			character = this.npc4;
		}
		if (asInt == 5)
		{
			character = this.npc5;
		}
		if (asInt == -1)
		{
			character = this.party;
		}
		if (character)
		{
			this.vignettes.End();
			if (text == "")
			{
				text = "Vignette Example";
			}
			string asString = DialogueLua.GetVariable("VignetteAnimController").asString;
			this.vignettes.animController = asString;
			this.vignettes.Setup(character, text);
			if (this.vignettes.body)
			{
				CharacterInfo.RegisterActorTransform("VignetteAnimator", this.vignettes.body.gameObject.transform);
				if (this.typewriter)
				{
					this.typewriter.headAnimator = this.vignettes.body.headAnim;
					this.typewriter.headBone = this.vignettes.body.GetHead();
					this.typewriter2.headBone = this.vignettes.body.GetHead();
				}
			}
			if (this.npc1.party)
			{
				this.typewriter.audioIndex = -1;
				this.typewriter2.audioIndex = -1;
				return;
			}
			this.typewriter.audioIndex = character.stats.voiceID;
			this.typewriter2.audioIndex = character.stats.voiceID;
		}
	}

	// Token: 0x060005BD RID: 1469 RVA: 0x0007C7FC File Offset: 0x0007A9FC
	public void SheepBackToBeach()
	{
		Links.x.gaia.boroControls.BackToBeach();
	}

	// Token: 0x060005BE RID: 1470 RVA: 0x0007C812 File Offset: 0x0007AA12
	private IEnumerator Camp()
	{
		Links.x.gaia.boro.stats.model = "Boro_orange_packed_M_Generic";
		Links.x.gaia.boro.SetupBody();
		Links.x.gaia.boro.SetMeshState(true);
		Links.x.gaia.boro.PlayAnimation("Idle", 0f);
		Links.x.gaia.boro.tr.position = Links.x.gaia.restingBoat.transform.position;
		Links.x.gaia.boro.SetRotation(Links.x.gaia.restingBoat.transform.rotation, false, true);
		Links.x.gaia.restingBoat.transform.position = Links.x.gaia.boro.tr.position;
		Links.x.gaia.restingBoat.SetActive(false);
		List<GraphNode> previousNodes = Links.x.rest.previousNodes;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && this.partyList[i].node != null)
			{
				this.partyList[i].tr.position = (Vector3)previousNodes[i].position;
				this.partyList[i].FirstPosition(previousNodes[i]);
				this.partyList[i].PlayIdle();
			}
		}
		Records.x.StartUIFade(false, true);
		yield return new WaitForSeconds(0.2f);
		Links.x.diorama.EnemiesInCampAlert();
		Records.x.partyCamping = false;
		yield break;
	}

	// Token: 0x060005BF RID: 1471 RVA: 0x0007C821 File Offset: 0x0007AA21
	public void UpdateToFace(Character faceThisCharacter)
	{
		if (!faceThisCharacter)
		{
			return;
		}
		this.SetTypewriter(faceThisCharacter);
		this.setRotation = true;
	}

	// Token: 0x060005C0 RID: 1472 RVA: 0x0007C83C File Offset: 0x0007AA3C
	public Character GetSelectedDialogueCharacter()
	{
		string asString = DialogueLua.GetVariable("SelectedParty").asString;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i].stats.GetName() == asString)
			{
				return this.partyList[i];
			}
		}
		return Links.x.main;
	}

	// Token: 0x060005C1 RID: 1473 RVA: 0x0007C8A8 File Offset: 0x0007AAA8
	public void SetRaces()
	{
		string asString = DialogueLua.GetVariable("Race").asString;
		int num = 0;
		string text = "";
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				float sqrMagnitude = (this.partyList[i].tr.position - this.npc1.tr.position).sqrMagnitude;
				if (this.partyList[i].stats.race == asString)
				{
					if (num == 0)
					{
						text = this.partyList[i].stats.GetName();
					}
					else
					{
						text += " and ";
						text += this.partyList[i].stats.GetName();
					}
				}
			}
		}
		DialogueLua.SetVariable("RaceNames", text);
	}

	// Token: 0x060005C2 RID: 1474 RVA: 0x0007C9DC File Offset: 0x0007ABDC
	public void GetRaceSingle()
	{
		string asString = DialogueLua.GetVariable("Race").asString;
		string text = "";
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && !this.partyList[i].summoned && this.partyList[i].stats.race == asString)
			{
				text = this.partyList[i].stats.GetName();
				break;
			}
		}
		DialogueLua.SetVariable("RaceNames", text);
	}

	// Token: 0x060005C3 RID: 1475 RVA: 0x0007CA98 File Offset: 0x0007AC98
	public void GetMusicalParty()
	{
		float num = 0f;
		Character character = null;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				float num2 = this.partyList[i].stats.HighestMusicSkill();
				if (num2 > num && num2 >= 40f)
				{
					character = this.partyList[i];
				}
			}
		}
		if (character)
		{
			DialogueLua.SetVariable("MusicPartyList", character.stats.GetName());
			return;
		}
		DialogueLua.SetVariable("MusicPartyList", "");
	}

	// Token: 0x060005C4 RID: 1476 RVA: 0x0007CB5C File Offset: 0x0007AD5C
	public void GetAllSneaking()
	{
		bool flag = true;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && !this.partyList[i].summoned && this.partyList[i].mainSelected && !this.partyList[i].body.sneaking)
			{
				flag = false;
			}
		}
		DialogueLua.SetVariable("AllSneaking", flag);
	}

	// Token: 0x060005C5 RID: 1477 RVA: 0x0007CBF8 File Offset: 0x0007ADF8
	public void GetHighSkill()
	{
		int asInt = DialogueLua.GetVariable("SkillToCheck").asInt;
		float num = 0f;
		Character character = null;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				float skill = this.partyList[i].stats.GetSkill(asInt);
				if (skill > num && skill >= 40f)
				{
					character = this.partyList[i];
				}
			}
		}
		if (character)
		{
			DialogueLua.SetVariable("HighSkillParty", character.stats.GetName());
			return;
		}
		DialogueLua.SetVariable("HighSkillParty", "");
	}

	// Token: 0x060005C6 RID: 1478 RVA: 0x0007CCDC File Offset: 0x0007AEDC
	public void GetGlam()
	{
		float num = 0f;
		Character character = null;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				float num2 = (float)this.partyList[i].GetGlam();
				if (num2 > num && num2 >= 4f)
				{
					character = this.partyList[i];
				}
			}
		}
		if (character)
		{
			DialogueLua.SetVariable("HighSkillParty", character.stats.GetName());
			return;
		}
		DialogueLua.SetVariable("HighSkillParty", "");
	}

	// Token: 0x060005C7 RID: 1479 RVA: 0x0007CD9C File Offset: 0x0007AF9C
	public void SwitchSelectedToHighStat()
	{
		string asString = DialogueLua.GetVariable("Stat").asString;
		string asString2 = DialogueLua.GetVariable("High" + asString + "Party").asString;
		Debug.Log(asString2);
		if (asString2 != "")
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i].stats.GetName() == asString2)
				{
					Character character = this.partyList[i];
					Debug.Log(character);
					this.party = character;
					DialogueLua.SetVariable("SelectedParty", character.stats.GetName());
					DialogueLua.SetVariable("SelectedPartyRace", character.stats.race);
					CharacterInfo.RegisterActorTransform("Player", this.party.tr);
					CharacterInfo.RegisterActorTransform("PlayerAnimator", this.party.body.transform);
				}
			}
		}
	}

	// Token: 0x060005C8 RID: 1480 RVA: 0x0007CEA8 File Offset: 0x0007B0A8
	public void SwitchSelectedToHighSkill()
	{
		string asString = DialogueLua.GetVariable("HighSkillParty").asString;
		this.SwitchToParty(asString);
	}

	// Token: 0x060005C9 RID: 1481 RVA: 0x0007CED0 File Offset: 0x0007B0D0
	public void SwitchSelectedToHighMusic()
	{
		string asString = DialogueLua.GetVariable("MusicPartyList").asString;
		this.SwitchToParty(asString);
	}

	// Token: 0x060005CA RID: 1482 RVA: 0x0007CEF8 File Offset: 0x0007B0F8
	public void SwitchToTraitCharacter()
	{
		string asString = DialogueLua.GetVariable("TraitParty").asString;
		this.SwitchToParty(asString);
	}

	// Token: 0x060005CB RID: 1483 RVA: 0x0007CF20 File Offset: 0x0007B120
	public void SwitchToPaganCharacter()
	{
		string asString = DialogueLua.GetVariable("PaganPartyMember").asString;
		this.SwitchToParty(asString);
	}

	// Token: 0x060005CC RID: 1484 RVA: 0x0007CF48 File Offset: 0x0007B148
	public void SwitchToParty(string partyName)
	{
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i].stats.GetName() == partyName)
			{
				Character character = this.partyList[i];
				this.party = character;
				DialogueLua.SetVariable("SelectedParty", character.stats.GetName());
				DialogueLua.SetVariable("SelectedPartyRace", character.stats.race);
				CharacterInfo.RegisterActorTransform("Player", this.party.tr);
				CharacterInfo.RegisterActorTransform("PlayerAnimator", this.party.body.transform);
			}
		}
	}

	// Token: 0x060005CD RID: 1485 RVA: 0x0007D000 File Offset: 0x0007B200
	public void UpdateSelectedParty()
	{
		this.party = this.GetSelectedDialogueCharacter();
		string text = "setting selected: ";
		Character character = this.party;
		Debug.Log(text + ((character != null) ? character.ToString() : null));
		CharacterInfo.RegisterActorTransform("Player", this.party.tr);
		CharacterInfo.RegisterActorTransform("PlayerAnimator", this.party.body.transform);
		DialogueManager.ChangeActorName("Player", this.party.stats.displayName);
	}

	// Token: 0x060005CE RID: 1486 RVA: 0x0007D084 File Offset: 0x0007B284
	public void CheckForItemDurability()
	{
		string asString = DialogueLua.GetVariable("HasItemInBagName").asString;
		int asInt = DialogueLua.GetVariable("HasItemInBagDurability").asInt;
		int id = Links.x.library.GetInvRowFromName(asString)._ID;
		int num = 0;
		if (id > -1)
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i] && !this.partyList[i].summoned && !this.partyList[i].isBoro)
				{
					int num2 = this.partyList[i].HasItem(id);
					if (this.partyList[i].GetDurabilityNum(num2 / 2).x >= (float)asInt && num2 != -1)
					{
						num++;
					}
				}
			}
		}
		if (num >= 1)
		{
			DialogueLua.SetVariable("HasItemInBagWithDurability", true);
			return;
		}
		DialogueLua.SetVariable("HasItemInBagWithDurability", false);
	}

	// Token: 0x060005CF RID: 1487 RVA: 0x0007D194 File Offset: 0x0007B394
	public void CheckForNPCItemSpecial(string questName)
	{
		if (questName == "D5_Dura")
		{
			bool flag = false;
			if (this.npc1.HowManyItemsInBag(Links.x.library.GetInvRowFromName("Ax1")._ID, 0) > 0)
			{
				flag = true;
			}
			if (this.npc1.HowManyItemsInBag(Links.x.library.GetInvRowFromName("Sword1")._ID, 0) > 0)
			{
				flag = true;
			}
			if (this.npc1.HowManyItemsInBag(Links.x.library.GetInvRowFromName("Blowgun1")._ID, 0) > 0)
			{
				flag = true;
			}
			DialogueLua.SetVariable("NPCHasItemInBag", flag);
		}
	}

	// Token: 0x060005D0 RID: 1488 RVA: 0x0007D244 File Offset: 0x0007B444
	public void CheckForNPCItem()
	{
		string asString = DialogueLua.GetVariable("NPCHasItemInBagName").asString;
		int asInt = DialogueLua.GetVariable("NPCHasItemInBagAmount").asInt;
		int id = Links.x.library.GetInvRowFromName(asString)._ID;
		int num = 0;
		if (id > -1)
		{
			int num2 = this.npc1.HowManyItemsInBag(id, 0);
			num += num2;
		}
		if (num >= asInt)
		{
			DialogueLua.SetVariable("NPCHasItemInBag", true);
			return;
		}
		DialogueLua.SetVariable("NPCHasItemInBag", false);
	}

	// Token: 0x060005D1 RID: 1489 RVA: 0x0007D2D0 File Offset: 0x0007B4D0
	public void CheckForItem()
	{
		string asString = DialogueLua.GetVariable("HasItemInBagName").asString;
		int asInt = DialogueLua.GetVariable("HasItemInBagAmount").asInt;
		int id = Links.x.library.GetInvRowFromName(asString)._ID;
		int num = 0;
		if (id > -1)
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i] && !this.partyList[i].summoned && !this.partyList[i].isBoro)
				{
					int num2 = this.partyList[i].HowManyItemsInBag(id, 0);
					num += num2;
				}
			}
		}
		if (num >= asInt)
		{
			DialogueLua.SetVariable("HasItemInBag", true);
			return;
		}
		DialogueLua.SetVariable("HasItemInBag", false);
	}

	// Token: 0x060005D2 RID: 1490 RVA: 0x0007D3B8 File Offset: 0x0007B5B8
	public void CheckForItemThree()
	{
		string asString = DialogueLua.GetVariable("HasItemInBagName").asString;
		string asString2 = DialogueLua.GetVariable("HasItemInBagNameB").asString;
		string asString3 = DialogueLua.GetVariable("HasItemInBagNameC").asString;
		int id = Links.x.library.GetInvRowFromName(asString)._ID;
		int id2 = Links.x.library.GetInvRowFromName(asString2)._ID;
		int id3 = Links.x.library.GetInvRowFromName(asString3)._ID;
		int num = 0;
		int num2 = 0;
		int num3 = 0;
		if (id > -1)
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i] && !this.partyList[i].summoned && !this.partyList[i].isBoro && this.partyList[i].HowManyItemsInBag(id, 0) >= 1)
				{
					num++;
				}
			}
		}
		if (id2 > -1)
		{
			for (int j = 0; j < this.partyList.Count; j++)
			{
				if (this.partyList[j] && !this.partyList[j].summoned && !this.partyList[j].isBoro && this.partyList[j].HowManyItemsInBag(id2, 0) >= 1)
				{
					num2++;
				}
			}
		}
		if (id3 > -1)
		{
			for (int k = 0; k < this.partyList.Count; k++)
			{
				if (this.partyList[k] && !this.partyList[k].summoned && !this.partyList[k].isBoro && this.partyList[k].HowManyItemsInBag(id3, 0) >= 1)
				{
					num3++;
				}
			}
		}
		if (num >= 1 && num2 >= 1 && num3 >= 1)
		{
			DialogueLua.SetVariable("HasItemInBag", true);
			return;
		}
		DialogueLua.SetVariable("HasItemInBag", false);
	}

	// Token: 0x060005D3 RID: 1491 RVA: 0x0007D5E8 File Offset: 0x0007B7E8
	public void CheckHasEffect()
	{
		bool flag = false;
		string asString = DialogueLua.GetVariable("HasEffectName").asString;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && this.partyList[i].stats.HasEffect(asString))
			{
				flag = true;
			}
		}
		if (flag)
		{
			DialogueLua.SetVariable("HasEffect", true);
			return;
		}
		DialogueLua.SetVariable("HasEffect", false);
	}

	// Token: 0x060005D4 RID: 1492 RVA: 0x0007D688 File Offset: 0x0007B888
	public void CheckForItemIntercession()
	{
		string asString = DialogueLua.GetVariable("HasItemInBagName").asString;
		int asInt = DialogueLua.GetVariable("HasItemInBagAmount").asInt;
		int asInt2 = DialogueLua.GetVariable("HasItemInBagIntercessionA").asInt;
		int asInt3 = DialogueLua.GetVariable("HasItemInBagIntercessionB").asInt;
		int num = asInt;
		int id = Links.x.library.GetInvRowFromName(asString)._ID;
		int num2 = 0;
		if (id > -1)
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i] && !this.partyList[i].summoned && !this.partyList[i].isBoro && this.partyList[i].HowManyItemsInBag(id, 0) > 0)
				{
					int num3 = this.partyList[i].HasItem(id);
					float x = this.partyList[i].GetSocketNum(num3).x;
					if (x == (float)asInt2 || (x == (float)asInt3 && asInt3 != 0))
					{
						num2++;
						Debug.Log(num2);
					}
				}
			}
		}
		if (num2 >= num)
		{
			DialogueLua.SetVariable("HasItemInBag", true);
			return;
		}
		DialogueLua.SetVariable("HasItemInBag", false);
	}

	// Token: 0x060005D5 RID: 1493 RVA: 0x0007D7F8 File Offset: 0x0007B9F8
	public bool PartyHasItem(string itemName, double itemAmount)
	{
		int num = (int)itemAmount;
		int id = Links.x.library.GetInvRowFromName(itemName)._ID;
		int num2 = 0;
		int num3 = 0;
		if (id > -1)
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i] && !this.partyList[i].summoned && !this.partyList[i].isBoro)
				{
					int num4 = this.partyList[i].HowManyItemsInBag(id, num3);
					num2 += num4;
				}
			}
		}
		return num2 >= num;
	}

	// Token: 0x060005D6 RID: 1494 RVA: 0x0007D8A0 File Offset: 0x0007BAA0
	public bool PartyHasItemWithIntercession(string itemName, double intercessionNeeded)
	{
		int id = Links.x.library.GetInvRowFromName(itemName)._ID;
		int num = 0;
		int num2 = 0;
		if (id > -1)
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i] && num == 0 && !this.partyList[i].summoned && !this.partyList[i].isBoro && this.partyList[i].HowManyItemsInBag(id, num2) > 0)
				{
					int num3 = this.partyList[i].HasItem(id);
					if ((double)this.partyList[i].GetSocketNum(num3).x != intercessionNeeded)
					{
						num = 0;
					}
					else
					{
						num = 1;
					}
				}
			}
		}
		return num > 0;
	}

	// Token: 0x060005D7 RID: 1495 RVA: 0x0007D97C File Offset: 0x0007BB7C
	public bool PartyHasItemWithDurability(string itemName, double durabilityNeeded)
	{
		int id = Links.x.library.GetInvRowFromName(itemName)._ID;
		int num = 0;
		int num2 = 0;
		if (id > -1)
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i] && num == 0 && !this.partyList[i].summoned && !this.partyList[i].isBoro && this.partyList[i].HowManyItemsInBag(id, num2) > 0)
				{
					int num3 = this.partyList[i].HasItem(id);
					float x = this.partyList[i].GetDurabilityNum(num3 / 2).x;
					Debug.Log(num3.ToString() + " " + x.ToString());
					if ((double)x < durabilityNeeded)
					{
						num = 0;
					}
					else
					{
						num = 1;
					}
				}
			}
		}
		return num > 0;
	}

	// Token: 0x060005D8 RID: 1496 RVA: 0x0007DA84 File Offset: 0x0007BC84
	public bool PartyHasEffect(string effectName)
	{
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].summoned && !this.partyList[i].isBoro && this.partyList[i].stats.HasEffect(effectName))
			{
				return true;
			}
		}
		return false;
	}

	// Token: 0x060005D9 RID: 1497 RVA: 0x0007DAFC File Offset: 0x0007BCFC
	public bool EveryoneLearnedSong(string songName)
	{
		bool flag = true;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (!this.partyList[i].stats.HasAbility(songName))
			{
				return false;
			}
		}
		return flag;
	}

	// Token: 0x060005DA RID: 1498 RVA: 0x0007DB40 File Offset: 0x0007BD40
	public void CheckSongBooks()
	{
		for (int i = 0; i < this.talkingParty.Count; i++)
		{
			if (this.talkingParty[i])
			{
				if (this.talkingParty[i].stats.HasSongbook())
				{
					if (i == 0)
					{
						DialogueLua.SetVariable("Party1NeedsBook", false);
					}
					if (i == 1)
					{
						DialogueLua.SetVariable("Party2NeedsBook", false);
					}
					if (i == 2)
					{
						DialogueLua.SetVariable("Party3NeedsBook", false);
					}
					if (i == 3)
					{
						DialogueLua.SetVariable("Party4NeedsBook", false);
					}
				}
				else
				{
					if (i == 0)
					{
						DialogueLua.SetVariable("Party1NeedsBook", true);
					}
					if (i == 1)
					{
						DialogueLua.SetVariable("Party2NeedsBook", true);
					}
					if (i == 2)
					{
						DialogueLua.SetVariable("Party3NeedsBook", true);
					}
					if (i == 3)
					{
						DialogueLua.SetVariable("Party4NeedsBook", true);
					}
				}
			}
		}
	}

	// Token: 0x060005DB RID: 1499 RVA: 0x0007DC38 File Offset: 0x0007BE38
	public void CheckSpellBooks()
	{
		for (int i = 0; i < this.talkingParty.Count; i++)
		{
			if (this.talkingParty[i])
			{
				if (this.talkingParty[i].stats.HasSpellbook())
				{
					if (i == 0)
					{
						DialogueLua.SetVariable("Party1NeedsBook", false);
					}
					if (i == 1)
					{
						DialogueLua.SetVariable("Party2NeedsBook", false);
					}
					if (i == 2)
					{
						DialogueLua.SetVariable("Party3NeedsBook", false);
					}
					if (i == 3)
					{
						DialogueLua.SetVariable("Party4NeedsBook", false);
					}
				}
				else
				{
					if (i == 0)
					{
						DialogueLua.SetVariable("Party1NeedsBook", true);
					}
					if (i == 1)
					{
						DialogueLua.SetVariable("Party2NeedsBook", true);
					}
					if (i == 2)
					{
						DialogueLua.SetVariable("Party3NeedsBook", true);
					}
					if (i == 3)
					{
						DialogueLua.SetVariable("Party4NeedsBook", true);
					}
				}
			}
		}
	}

	// Token: 0x060005DC RID: 1500 RVA: 0x0007DD30 File Offset: 0x0007BF30
	public bool CharacterNeedsSongbook(double index)
	{
		int num = (int)index;
		for (int i = 0; i < this.talkingParty.Count; i++)
		{
			if (this.talkingParty[i] && num == i + 1)
			{
				return !this.talkingParty[i].stats.HasSongbook();
			}
		}
		return false;
	}

	// Token: 0x060005DD RID: 1501 RVA: 0x0007DD8C File Offset: 0x0007BF8C
	public bool CharacterNeedsSpellbook(double index)
	{
		int num = (int)index;
		bool flag = false;
		for (int i = 0; i < this.talkingParty.Count; i++)
		{
			if (this.talkingParty[i] && num == i + 1)
			{
				return !this.talkingParty[i].stats.HasSpellbook();
			}
		}
		return flag;
	}

	// Token: 0x060005DE RID: 1502 RVA: 0x0007DDEC File Offset: 0x0007BFEC
	public bool CharacterCanLearnSong(string songName, double index)
	{
		int num = (int)index;
		bool flag = false;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && num == i + 1 && !this.partyList[i].stats.HasAbility(songName))
			{
				return true;
			}
		}
		return flag;
	}

	// Token: 0x060005DF RID: 1503 RVA: 0x0007DE4C File Offset: 0x0007C04C
	public bool EveryoneLearnedSpell(string spellName)
	{
		bool flag = true;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (!this.partyList[i].stats.HasPaganKnowledge(spellName))
			{
				return false;
			}
		}
		return flag;
	}

	// Token: 0x060005E0 RID: 1504 RVA: 0x0007DE90 File Offset: 0x0007C090
	public bool CharacterCanLearnSpell(string spellName, double index)
	{
		int num = (int)index;
		bool flag = false;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && num == i + 1 && !this.partyList[i].stats.HasPaganKnowledge(spellName))
			{
				return true;
			}
		}
		return flag;
	}

	// Token: 0x060005E1 RID: 1505 RVA: 0x0007DEEF File Offset: 0x0007C0EF
	public bool EveryoneNear()
	{
		return true;
	}

	// Token: 0x060005E2 RID: 1506 RVA: 0x0007DEF2 File Offset: 0x0007C0F2
	public void AddToParty(string xmlName)
	{
		Debug.Log(xmlName + " is joining");
		this.npc1.AddToParty();
		base.StartCoroutine(this.Add());
	}

	// Token: 0x060005E3 RID: 1507 RVA: 0x0007DF1C File Offset: 0x0007C11C
	private IEnumerator Add()
	{
		yield return new WaitForSecondsRealtime(0.1f);
		if (this.npc2)
		{
			this.npc2.AddToParty();
		}
		yield break;
	}

	// Token: 0x060005E4 RID: 1508 RVA: 0x0007DF2C File Offset: 0x0007C12C
	public void OpenMerchantScreen()
	{
		Links.x.characterSheet.merchant = true;
		Links.x.characterSheet.blacksmith = false;
		Links.x.characterSheet.pagan = false;
		Links.x.merchant.isBoat = false;
		Links.x.merchant.merchantCharacter = this.npc1;
		Links.x.characterSheet.peddler = this.npc1.stats.xmlName;
		Links.x.merchant.SetUpItems();
		Links.x.characterSheet.StartMenu(false);
	}

	// Token: 0x060005E5 RID: 1509 RVA: 0x0007DFCC File Offset: 0x0007C1CC
	public void OpenMerchantScreen(Character peddler)
	{
	}

	// Token: 0x060005E6 RID: 1510 RVA: 0x0007DFD0 File Offset: 0x0007C1D0
	public void OpenBlacksmithScreen()
	{
		Links.x.characterSheet.merchant = false;
		Links.x.characterSheet.blacksmith = true;
		Links.x.characterSheet.pagan = false;
		Links.x.characterSheet.repairCharacter = this.npc1;
		Links.x.characterSheet.StartMenu(false);
	}

	// Token: 0x060005E7 RID: 1511 RVA: 0x0007E034 File Offset: 0x0007C234
	public void OpenPaganScreen()
	{
		Links.x.characterSheet.merchant = false;
		Links.x.characterSheet.blacksmith = false;
		Links.x.characterSheet.pagan = true;
		Links.x.characterSheet.repairCharacter = this.npc1;
		Links.x.characterSheet.StartMenu(false);
	}

	// Token: 0x060005E8 RID: 1512 RVA: 0x0007E096 File Offset: 0x0007C296
	public void OpenSpellcrafting()
	{
		Links.x.spellcrafting.StartMenu(false, Links.x.main);
	}

	// Token: 0x060005E9 RID: 1513 RVA: 0x0007E0B2 File Offset: 0x0007C2B2
	public void Rest()
	{
		base.StartCoroutine(this.RestWait());
	}

	// Token: 0x060005EA RID: 1514 RVA: 0x0007E0C1 File Offset: 0x0007C2C1
	private IEnumerator RestWait()
	{
		while (Records.x.dialogue)
		{
			yield return null;
		}
		Links.x.rest.StartMenu(false);
		yield break;
	}

	// Token: 0x060005EB RID: 1515 RVA: 0x0007E0C9 File Offset: 0x0007C2C9
	public void SetSail()
	{
		Links.x.gaia.boat.GetOnWater();
	}

	// Token: 0x060005EC RID: 1516 RVA: 0x0007E0E0 File Offset: 0x0007C2E0
	public void OpenBags()
	{
		Links.x.characterSheet.merchant = true;
		Links.x.characterSheet.blacksmith = false;
		Links.x.characterSheet.pagan = false;
		Links.x.merchant.isBoat = false;
		Links.x.merchant.merchantCharacter = this.npc1;
		Links.x.characterSheet.peddler = this.npc1.stats.xmlName;
		Links.x.merchant.SetUpItems();
		Links.x.characterSheet.StartMenu(false);
	}

	// Token: 0x060005ED RID: 1517 RVA: 0x0007E180 File Offset: 0x0007C380
	public void AddQuestToTimer()
	{
		string asString = DialogueLua.GetVariable("Quest").asString;
		string asString2 = DialogueLua.GetVariable("QuestFrom").asString;
		string asString3 = DialogueLua.GetVariable("QuestTo").asString;
		int asInt = DialogueLua.GetVariable("HourDelay").asInt;
		bool flag = false;
		if (asInt == -1)
		{
			flag = true;
		}
		Records.x.AddQuestToTimer(asString, (float)asInt, asString2, asString3, flag);
	}

	// Token: 0x060005EE RID: 1518 RVA: 0x0007E1F8 File Offset: 0x0007C3F8
	public void AddQuestToTimerConstant()
	{
		string asString = DialogueLua.GetVariable("Quest").asString;
		string asString2 = DialogueLua.GetVariable("QuestFrom").asString;
		string asString3 = DialogueLua.GetVariable("QuestTo").asString;
		int asInt = DialogueLua.GetVariable("HourDelay").asInt;
		Records.x.AddQuestToTimer(asString, (float)asInt, asString2, asString3, true);
	}

	// Token: 0x060005EF RID: 1519 RVA: 0x0007E265 File Offset: 0x0007C465
	public void CheckQuestSwaps()
	{
		Links.x.diorama.CheckQuestChange();
	}

	// Token: 0x060005F0 RID: 1520 RVA: 0x0007E276 File Offset: 0x0007C476
	public void StatPass()
	{
		this.ShowStatCheck(true);
	}

	// Token: 0x060005F1 RID: 1521 RVA: 0x0007E27F File Offset: 0x0007C47F
	public void StatFail()
	{
		this.ShowStatCheck(false);
	}

	// Token: 0x060005F2 RID: 1522 RVA: 0x0007E288 File Offset: 0x0007C488
	public void ShowStatCheck(bool pass)
	{
		string asString = DialogueLua.GetVariable("StatCheckName").asString;
		string asString2 = DialogueLua.GetVariable("StatCheckCharacterName").asString;
		Debug.Log("Stat check show: " + asString2 + " " + asString);
		Character character = Links.x.main;
		if (asString2 != "")
		{
			for (int i = 0; i < this.partyList.Count; i++)
			{
				if (this.partyList[i].stats.GetName() == asString2)
				{
					character = this.partyList[i];
					if (asString2 != DialogueLua.GetVariable("SelectedParty").asString)
					{
						this.SwitchToParty(asString2);
					}
				}
			}
		}
		this.StatCheckVisuals(asString, character, pass, 0f);
	}

	// Token: 0x060005F3 RID: 1523 RVA: 0x0007E35F File Offset: 0x0007C55F
	public void StatCheckVisualsOutsideDialogue(string statCheckName, Character statCheckCharacter, bool pass, float heightoffset)
	{
		base.StartCoroutine(this.StatCheckVisualsDelay(statCheckName, statCheckCharacter, pass, heightoffset));
	}

	// Token: 0x060005F4 RID: 1524 RVA: 0x0007E373 File Offset: 0x0007C573
	private IEnumerator StatCheckVisualsDelay(string statCheckName, Character statCheckCharacter, bool pass, float heightoffset)
	{
		this.StatCheckVisuals(statCheckName, statCheckCharacter, pass, heightoffset);
		yield return new WaitForSecondsRealtime(0.2f);
		yield break;
	}

	// Token: 0x060005F5 RID: 1525 RVA: 0x0007E3A0 File Offset: 0x0007C5A0
	public void StatCheckVisuals(string statCheckName, Character statCheckCharacter, bool pass, float heightoffset)
	{
		if (pass && Records.x.dialogue)
		{
			MasterAudio.PlaySoundAndForget("Feedback", 1f, new float?(1f), 0f, "DialogueStatPass", null);
		}
	}

	// Token: 0x060005F6 RID: 1526 RVA: 0x0007E3EC File Offset: 0x0007C5EC
	public void PlayStatPassSound()
	{
		MasterAudio.PlaySoundAndForget("Feedback", 1f, new float?(1f), 0f, "DialogueStatPass", null);
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		this.giveXPAmt = DialogueLua.GetVariable("XP").asInt;
		if (this.giveXPAmt == 0)
		{
			this.giveXPAmt = 15;
		}
		selectedDialogueCharacter.stats.AddXP(this.giveXPAmt, selectedDialogueCharacter, false);
		this.str.Clear();
		this.str.Append("+");
		this.str.Append(this.giveXPAmt);
		this.str.Append(" XP");
		Debug.Log(selectedDialogueCharacter);
		int num = this.talkingParty.IndexOf(selectedDialogueCharacter);
		if (num == 0)
		{
			this.message1.SetActive(true);
			this.messageImg1.enabled = false;
			this.messageText1.text = this.str.ToString();
		}
		if (num == 1)
		{
			this.message2.SetActive(true);
			this.messageImg2.enabled = false;
			this.messageText2.text = this.str.ToString();
		}
		if (num == 2)
		{
			this.message3.SetActive(true);
			this.messageImg3.enabled = false;
			this.messageText3.text = this.str.ToString();
		}
		if (num == 3)
		{
			this.message4.SetActive(true);
			this.messageImg4.enabled = false;
			this.messageText4.text = this.str.ToString();
		}
		this.messagedOn = 0;
		this.str.Clear();
		this.str.Append(selectedDialogueCharacter.stats.GetName());
		this.str.Append(" gained ");
		this.str.Append(this.giveXPAmt);
		this.str.Append(" XP");
		Links.x.gameFeed.AddFeed(this.str.ToString());
	}

	// Token: 0x060005F7 RID: 1527 RVA: 0x0007E5F8 File Offset: 0x0007C7F8
	private IEnumerator Fade()
	{
		int hourCount = DialogueLua.GetVariable("HourDelay").asInt;
		Links.x.gaia.PlayFade("Out", "Scaled");
		yield return new WaitForSeconds(1.5f);
		Links.x.cameraEffects.immediateTransition = true;
		Links.x.sensory.SetMagicaClothState(false);
		int v = hourCount;
		int num;
		for (int i = 0; i < v; i = num + 1)
		{
			Links.x.gameplay.AddHours();
			yield return new WaitForSecondsRealtime(0.05f);
			num = i;
		}
		Links.x.sensory.SetMagicaClothState(true);
		this.waited = true;
		yield return new WaitForSeconds(1.4f);
		Links.x.gaia.PlayFade("In", "Scaled");
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x060005F8 RID: 1528 RVA: 0x0007E608 File Offset: 0x0007C808
	public void PayEmeralds()
	{
		this.SetSkipKey(false);
		int asInt = DialogueLua.GetVariable("Cost").asInt;
		if (asInt > 0)
		{
			Links.x.inventory.emeralds -= asInt;
			MasterAudio.PlaySoundAndForget("Inventory", 0.6f, new float?(1f), 1f, "Jewelry drop", null);
		}
		this.SetSkipKey(true);
	}

	// Token: 0x060005F9 RID: 1529 RVA: 0x0007E680 File Offset: 0x0007C880
	public void Cafera()
	{
		this.QuestEffectParty("Cafera", true);
		MasterAudio.PlaySoundAndForget("Cafera", 1f, new float?(1f), 0f, "", null);
	}

	// Token: 0x060005FA RID: 1530 RVA: 0x0007E6C8 File Offset: 0x0007C8C8
	public void PlaySong(string num)
	{
		int num2;
		int.TryParse(num, out num2);
		num2--;
		Character character = this.talkingParty[num2];
		bool flag = false;
		string[] array = new string[5];
		array[0] = num;
		array[1] = " ";
		int num3 = 2;
		Character character2 = character;
		array[num3] = ((character2 != null) ? character2.ToString() : null);
		array[3] = " ";
		array[4] = character.HasInstrument().ToString();
		Debug.Log(string.Concat(array));
		string text = "ChoraSinging";
		if (character.HasInstrument())
		{
			bool flag2 = false;
			bool flag3 = false;
			bool flag4 = false;
			if (character.HasInstrumentType("Flute"))
			{
				flag2 = true;
			}
			if (character.HasInstrumentType("Horn"))
			{
				flag3 = true;
			}
			if (character.HasInstrumentType("Pipe"))
			{
				flag4 = true;
			}
			float num4 = character.stats.PlayingSkill("Flute") * 20f;
			if (!flag2)
			{
				num4 = 0f;
			}
			float num5 = character.stats.PlayingSkill("Horn") * 20f;
			if (!flag3)
			{
				num5 = 0f;
			}
			float num6 = character.stats.PlayingSkill("Pipe") * 20f;
			if (!flag4)
			{
				num6 = 0f;
			}
			float num7 = 0f;
			if (num4 > 0f && num4 > num7)
			{
				num7 = num4;
			}
			if (num5 > 0f && num5 > num7)
			{
				num7 = num5;
			}
			if (num6 > 0f && num6 > num7)
			{
				num7 = num6;
			}
			if (num7 == num4)
			{
				text = "ChoraFlute";
			}
			if (num7 == num5)
			{
				text = "ChoraHorn";
			}
			if (num7 == num6)
			{
				text = "ChoraPipes";
			}
			if (num7 >= 50f)
			{
				flag = true;
			}
		}
		MasterAudio.PlaySoundAndForget("Feedback", 1f, new float?(1f), 0f, text, null);
		DialogueLua.SetVariable("PassedSkillCheck", flag);
	}

	// Token: 0x060005FB RID: 1531 RVA: 0x0007E894 File Offset: 0x0007CA94
	public void Baths()
	{
		Links.x.gameplay.AddHours();
		this.QuestEffectParty("Baths", true);
		MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Song Learned", null);
		this.str.Clear();
		this.str.Append("Relaxed");
		this.message1.SetActive(true);
		this.messageImg1.enabled = false;
		this.messageText1.text = this.str.ToString();
		this.message2.SetActive(true);
		this.messageImg2.enabled = false;
		this.messageText2.text = this.str.ToString();
		this.message3.SetActive(true);
		this.messageImg3.enabled = false;
		this.messageText3.text = this.str.ToString();
		this.message4.SetActive(true);
		this.messageImg4.enabled = false;
		this.messageText4.text = this.str.ToString();
		this.messagedOn = 0;
	}

	// Token: 0x060005FC RID: 1532 RVA: 0x0007E9C5 File Offset: 0x0007CBC5
	public void OpenForfeitsBoard()
	{
		Links.x.forfeits.StartMenu();
	}

	// Token: 0x060005FD RID: 1533 RVA: 0x0007E9D8 File Offset: 0x0007CBD8
	public void WaitThroughFadeGeneric()
	{
		this.SetSkipKey(false);
		int asInt = DialogueLua.GetVariable("HourDelay").asInt;
		base.StartCoroutine(this.ExileFades(asInt));
	}

	// Token: 0x060005FE RID: 1534 RVA: 0x0007EA0D File Offset: 0x0007CC0D
	public void WaitThroughFade()
	{
		this.SetSkipKey(false);
		base.StartCoroutine(this.ExileFades(12));
	}

	// Token: 0x060005FF RID: 1535 RVA: 0x0007EA28 File Offset: 0x0007CC28
	public void WaitAndTurnInExiles()
	{
		this.SetSkipKey(false);
		int num = 12;
		base.StartCoroutine(this.ExileFades(num));
	}

	// Token: 0x06000600 RID: 1536 RVA: 0x0007EA50 File Offset: 0x0007CC50
	public void WaitAndTurnInExilesShort()
	{
		this.SetSkipKey(false);
		int num = 3;
		base.StartCoroutine(this.ExileFades(num));
	}

	// Token: 0x06000601 RID: 1537 RVA: 0x0007EA74 File Offset: 0x0007CC74
	private IEnumerator ExileFades(int hours)
	{
		Links.x.gaia.PlayFade("Out", "Scaled");
		yield return new WaitForSeconds(1.5f);
		Links.x.cameraEffects.immediateTransition = true;
		Links.x.sensory.SetMagicaClothState(false);
		int num;
		for (int i = 0; i < hours; i = num + 1)
		{
			Links.x.gameplay.AddHours();
			yield return new WaitForSecondsRealtime(0.05f);
			num = i;
		}
		Links.x.sensory.SetMagicaClothState(true);
		this.waited = true;
		yield return new WaitForSeconds(1.4f);
		Links.x.gaia.PlayFade("In", "Scaled");
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x06000602 RID: 1538 RVA: 0x0007EA8C File Offset: 0x0007CC8C
	public void TurnInExiles()
	{
		Records.x.TurnInExiles(this.waited, DialogueLua.GetVariable("SpecialExile").asString);
		this.waited = false;
		DialogueLua.SetVariable("StunBadges", 0);
		if (DialogueLua.GetVariable("SpecialExile").asString == "Dolki")
		{
			Links.x.diorama.CheckCreaturesThatMightActivate();
			DoorActions doorActions = Links.x.diorama.FindDoor("Door_Use_Wooden_Swingy_Exterior_DolkiFarm");
			if (doorActions)
			{
				if (doorActions.destroyed)
				{
					doorActions.Remake(true);
				}
				if (!doorActions.door.locked)
				{
					doorActions.door.locked = true;
				}
			}
		}
	}

	// Token: 0x06000603 RID: 1539 RVA: 0x0007EB44 File Offset: 0x0007CD44
	public void KnowName()
	{
		if (this.npc1.stats.initiateDialogue < 10)
		{
			this.npc1.stats.initiateDialogue += 10;
		}
		if (this.npc2 && this.npc2.stats.initiateDialogue < 10)
		{
			this.npc2.stats.initiateDialogue += 10;
		}
		if (this.npc3 && this.npc3.stats.initiateDialogue < 10)
		{
			this.npc3.stats.initiateDialogue += 10;
		}
		if (this.npc4 && this.npc4.stats.initiateDialogue < 10)
		{
			this.npc4.stats.initiateDialogue += 10;
		}
		DialogueLua.SetVariable("KnowsName", true);
		this.SetTypewriter(this.npc1);
	}

	// Token: 0x06000604 RID: 1540 RVA: 0x0007EC48 File Offset: 0x0007CE48
	public void SetVariableBool(string n, bool b)
	{
		DialogueLua.SetVariable(n, b);
	}

	// Token: 0x06000605 RID: 1541 RVA: 0x0007EC58 File Offset: 0x0007CE58
	public bool GetVariableBool(string n)
	{
		return DialogueLua.GetVariable(n).asBool;
	}

	// Token: 0x06000606 RID: 1542 RVA: 0x0007EC74 File Offset: 0x0007CE74
	public void LearnSong(string songName)
	{
		this.SetSkipKey(false);
		songName = DialogueLua.GetVariable("SongToLearn").asString;
		int asInt = DialogueLua.GetVariable("Cost").asInt;
		if (asInt > 0)
		{
			Links.x.inventory.emeralds -= asInt;
			MasterAudio.PlaySoundAndForget("Inventory", 0.6f, new float?(1f), 1f, "Jewelry drop", null);
		}
		this.SetSkipKey(true);
	}

	// Token: 0x06000607 RID: 1543 RVA: 0x0007ED00 File Offset: 0x0007CF00
	public void SpellCompleteUI(string spellName)
	{
		this.SetSkipKey(false);
		spellName = DialogueLua.GetVariable("SpellToLearn").asString;
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		Debug.Log(spellName);
		this.currentSpellName = spellName;
		Library.Pagan paganRow = Links.x.library.GetPaganRow(spellName);
		Debug.Log(paganRow);
		MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Song Learned", null);
		this.dialoguePopupBox.SetActive(true);
		this.str.Clear();
		this.str.Append(selectedDialogueCharacter.stats.GetName());
		string text = "Bold";
		this.str.Append(" has learned\n<size=1.6em><font=");
		this.str.Append(text);
		this.str.Append(">");
		this.str.Append(paganRow._DisplayName);
		this.str.Append("</font></size>");
		this.spellPopupBoxText.text = this.str.ToString();
		if (paganRow._School == "Bindings")
		{
			this.spellImage.sprite = this.bindingsSprite;
		}
		if (paganRow._School == "Fauna")
		{
			this.spellImage.sprite = this.faunaSprite;
		}
		if (paganRow._School == "Vines")
		{
			this.spellImage.sprite = this.vinesSprite;
		}
		if (paganRow._School == "Spores")
		{
			this.spellImage.sprite = this.scoriaSprite;
		}
		selectedDialogueCharacter.stats.AddPaganKnowledge(spellName);
		this.dialoguePopupBoxAnimator.Play("DialoguePopsSpellOn", -1, 0f);
		this.str.Append(paganRow._DisplayName);
		Links.x.gameFeed.AddFeed(this.str.ToString());
		if (!this.skippingSequence)
		{
			base.StartCoroutine(this.SpellUIWait());
		}
	}

	// Token: 0x06000608 RID: 1544 RVA: 0x0007EF0D File Offset: 0x0007D10D
	private IEnumerator SpellUIWait()
	{
		this.SetSkipKey(false);
		float t = 4.15f;
		float startTime = Time.timeSinceLevelLoad;
		bool skipping = false;
		while (Time.timeSinceLevelLoad < startTime + t && !Input.GetMouseButtonUp(0))
		{
			yield return null;
		}
		if (Input.GetMouseButtonUp(0))
		{
			Debug.Log("Skipping");
			skipping = true;
		}
		MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Box Close", null);
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		this.str.Clear();
		this.str.Append(Links.x.gameFeed.GetPartyColorText(selectedDialogueCharacter));
		this.str.Append(selectedDialogueCharacter.stats.GetName());
		this.str.Append("</color>");
		this.str.Append(" has learned ");
		if (!skipping)
		{
			yield return new WaitForSeconds(1.5f);
		}
		else
		{
			this.dialoguePopupBoxAnimator.Play("DialoguePopsSpellOn", -1, 0.9f);
			this.skippingSequence = true;
			DialogueManager.Instance.GetComponent<Sequencer>().DoAllImmediately();
			yield return new WaitForSeconds(0.15f);
		}
		this.dialoguePopupBox.SetActive(false);
		this.spellPopupBoxText.text = "";
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x06000609 RID: 1545 RVA: 0x0007EF1C File Offset: 0x0007D11C
	public void FadeInAndOut()
	{
		this.SetSkipKey(false);
		base.StartCoroutine(this.FadeInOut());
	}

	// Token: 0x0600060A RID: 1546 RVA: 0x0007EF32 File Offset: 0x0007D132
	private IEnumerator FadeInOut()
	{
		this.SetSkipKey(false);
		Links.x.gaia.PlayFade("Out", "Scaled");
		yield return new WaitForSeconds(2f);
		Links.x.gaia.PlayFade("In", "Scaled");
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x0600060B RID: 1547 RVA: 0x0007EF41 File Offset: 0x0007D141
	public void FadeIn()
	{
		Links.x.gaia.PlayFade("In", "Scaled");
	}

	// Token: 0x0600060C RID: 1548 RVA: 0x0007EF5C File Offset: 0x0007D15C
	public void FadeOut()
	{
		Links.x.gaia.PlayFade("Out", "Scaled");
	}

	// Token: 0x0600060D RID: 1549 RVA: 0x0007EF78 File Offset: 0x0007D178
	public void LevelUpFromDialogue(string partyID)
	{
		this.SetSkipKey(false);
		int asInt = DialogueLua.GetVariable("SkillIncrease").asInt;
		Character character = null;
		string text = "";
		string text2 = "";
		if (partyID == "1")
		{
			text = DialogueLua.GetVariable("Party1Skill").asString;
			text2 = DialogueLua.GetVariable("Party1").asString;
		}
		if (partyID == "2")
		{
			text = DialogueLua.GetVariable("Party2Skill").asString;
			text2 = DialogueLua.GetVariable("Party2").asString;
		}
		if (partyID == "3")
		{
			text = DialogueLua.GetVariable("Party3Skill").asString;
			text2 = DialogueLua.GetVariable("Party3").asString;
		}
		if (partyID == "4")
		{
			text = DialogueLua.GetVariable("Party4Skill").asString;
			text2 = DialogueLua.GetVariable("Party4").asString;
		}
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i].stats.GetName() == text2)
			{
				character = this.partyList[i];
			}
		}
		string[] array = new string[7];
		array[0] = text;
		array[1] = " ";
		array[2] = text2;
		array[3] = " ";
		array[4] = partyID;
		array[5] = " ";
		int num = 6;
		Character character2 = character;
		array[num] = ((character2 != null) ? character2.ToString() : null);
		Debug.Log(string.Concat(array));
		int num2 = character.stats.MatchBestSkillToDialogueName(text);
		string text3 = "SkillTrained";
		string text4 = "_whips";
		MasterAudio.PlaySoundAndForget("Feedback", Random.Range(0.8f, 0.9f), new float?(Random.Range(0.9f, 1f)), 0f, text3 + text4, null);
		this.str.Clear();
		this.str.Append("Increased ");
		this.str.Append(text);
		this.str.Append(" +");
		this.str.Append(asInt);
		int num3 = this.talkingParty.IndexOf(character);
		if (num3 == 0)
		{
			this.message1.SetActive(true);
			this.messageImg1.enabled = false;
			this.messageText1.text = this.str.ToString();
		}
		if (num3 == 1)
		{
			this.message2.SetActive(true);
			this.messageImg2.enabled = false;
			this.messageText2.text = this.str.ToString();
		}
		if (num3 == 2)
		{
			this.message3.SetActive(true);
			this.messageImg3.enabled = false;
			this.messageText3.text = this.str.ToString();
		}
		if (num3 == 3)
		{
			this.message4.SetActive(true);
			this.messageImg4.enabled = false;
			this.messageText4.text = this.str.ToString();
		}
		this.messagedOn = 0;
		character.stats.IncreaseSkill(num2, asInt);
		this.str.Clear();
		this.str.Append(Links.x.gameFeed.GetPartyColorText(character));
		this.str.Append(character.stats.GetName());
		this.str.Append("</color>");
		this.str.Append(" has improved ");
		this.str.Append(Links.x.manual.DisplayNameFromIndex(num2, character));
	}

	// Token: 0x0600060E RID: 1550 RVA: 0x0007F320 File Offset: 0x0007D520
	public void SongCompleteUI(string songName)
	{
		this.SetSkipKey(false);
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		songName = DialogueLua.GetVariable("SongToLearn").asString;
		this.currentSongName = songName;
		Library.Abilities abilityRow = Links.x.library.GetAbilityRow(songName);
		string text = "Song character: ";
		Character character = selectedDialogueCharacter;
		Debug.Log(text + ((character != null) ? character.ToString() : null) + " " + songName);
		MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Song Learned", null);
		this.dialoguePopupBox.SetActive(true);
		this.str.Clear();
		this.str.Append(selectedDialogueCharacter.stats.GetName());
		string text2 = "Bold";
		this.str.Append(" has learned\n<size=1.6em><font=");
		this.str.Append(text2);
		this.str.Append(">");
		this.str.Append(abilityRow._DisplayName);
		this.str.Append("</font></size>");
		this.songPopupBoxText.text = this.str.ToString();
		string text3 = "";
		if (abilityRow._WeaponReq.Contains("Flute"))
		{
			text3 = "FluteBasic";
		}
		if (abilityRow._WeaponReq.Contains("Pipe"))
		{
			text3 = "PipeBasic";
		}
		if (abilityRow._WeaponReq.Contains("Drum"))
		{
			text3 = "DrumBasic";
		}
		if (abilityRow._WeaponReq.Contains("Horn"))
		{
			text3 = "HornBasic";
		}
		Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName(text3);
		this.trinketItemImage.sprite = Links.x.archives.GetItem(invRowFromName._UIModel);
		this.dialoguePopupBoxAnimator.Play("DialoguePopsSongOn", -1, 0f);
	}

	// Token: 0x0600060F RID: 1551 RVA: 0x0007F504 File Offset: 0x0007D704
	public void SongCompleteUIPart2()
	{
		this.SetSkipKey(false);
		this.songCorout = this.SongComplete();
		base.StartCoroutine(this.songCorout);
	}

	// Token: 0x06000610 RID: 1552 RVA: 0x0007F526 File Offset: 0x0007D726
	private IEnumerator SongComplete()
	{
		Character selectedParty = this.GetSelectedDialogueCharacter();
		float t = 2f;
		float startTime = Time.timeSinceLevelLoad;
		while (Time.timeSinceLevelLoad < startTime + t && !Input.GetMouseButtonUp(0))
		{
			yield return null;
		}
		selectedParty.stats.AddSong(this.currentSongName, this.currentSongName, new Vector3(1f, 1f, 1f));
		Library.Abilities abilityRow = Links.x.library.GetAbilityRow(this.currentSongName);
		int invNum = selectedParty.GetInvNum(14);
		if (invNum > 1 && Links.x.library.GetInvRow(invNum)._Name.Contains(abilityRow._WeaponReq))
		{
			MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Highlight Window", null);
			this.fx.gameObject.transform.position = selectedParty.portrait.skillBag.trinketPortrait.gameObject.transform.position;
			this.fx.gameObject.SetActive(true);
			if (selectedParty.portrait.skillBag.trinketWindow.minimized)
			{
				selectedParty.portrait.skillBag.trinketWindow.ToggleMinimize();
			}
		}
		this.str.Clear();
		this.str.Append(Links.x.gameFeed.GetPartyColorText(selectedParty));
		this.str.Append(selectedParty.stats.GetName());
		this.str.Append("</color>");
		this.str.Append(" has learned ");
		this.str.Append(abilityRow._DisplayName);
		Links.x.gameFeed.AddFeed(this.str.ToString());
		yield return new WaitForSeconds(2f);
		this.dialoguePopupBox.SetActive(false);
		this.songPopupBoxText.text = "";
		this.songCorout = null;
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x06000611 RID: 1553 RVA: 0x0007F538 File Offset: 0x0007D738
	public void SwitchBoro()
	{
		string xmlName = this.boro.stats.xmlName;
		Vector3 vector;
		Vector4 vector2;
		string text;
		int num;
		Records.x.BoroStats(xmlName, out vector, out vector2, out text, out num, true);
		Vector3 vector3;
		Vector4 vector4;
		string text2;
		int num2;
		Records.x.BoroStats(Records.x.boroID, out vector3, out vector4, out text2, out num2, true);
		int num3 = num - num2;
		if (num3 < 0)
		{
			num3 = 0;
		}
		Links.x.inventory.emeralds -= num3;
		if (num3 > 0)
		{
			MasterAudio.PlaySoundAndForget("Inventory", 0.6f, new float?(1f), 0.25f, "Coins", null);
		}
		MasterAudio.PlaySoundAndForget("Feedback", 0.3f, new float?(1f), 0f, "Song Learned", null);
		Records.x.boroID = this.boro.stats.xmlName;
		Records.x.CreateBoro(true);
		this.boro = null;
	}

	// Token: 0x06000612 RID: 1554 RVA: 0x0007F63C File Offset: 0x0007D83C
	public void CheckToBuySongs()
	{
		if (this.npc1.stats.xmlName == "MinstrelLazure")
		{
			this.buySongs.SetActive(true);
		}
		if (this.npc1.stats.xmlName == "WestRuinsMinstrel" && QuestLog.GetQuestState("D5_Minstrel") == QuestState.Success)
		{
			this.buySongs.SetActive(true);
		}
	}

	// Token: 0x06000613 RID: 1555 RVA: 0x0007F6A8 File Offset: 0x0007D8A8
	public void RespecParty()
	{
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		DialogueLua.SetVariable("RemovedParty", selectedDialogueCharacter.stats.GetName());
	}

	// Token: 0x06000614 RID: 1556 RVA: 0x0007F6D1 File Offset: 0x0007D8D1
	public void RespecPartyDelayed()
	{
		this.SetNoExit();
		this.SetSkipKey(false);
	}

	// Token: 0x06000615 RID: 1557 RVA: 0x0007F6E0 File Offset: 0x0007D8E0
	public void StartRespec()
	{
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		this.openingCreation = true;
		Links.x.gaia.OpenCharacterCreation(false, null, selectedDialogueCharacter);
	}

	// Token: 0x06000616 RID: 1558 RVA: 0x0007F710 File Offset: 0x0007D910
	public void RemoveParty()
	{
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		DialogueLua.SetVariable("RemovedParty", selectedDialogueCharacter.stats.GetName());
	}

	// Token: 0x06000617 RID: 1559 RVA: 0x0007F739 File Offset: 0x0007D939
	public void RemovePartyDelayed()
	{
		this.SetNoExit();
		this.SetSkipKey(false);
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		selectedDialogueCharacter.DropEverything();
		selectedDialogueCharacter.SetMeshState(false);
		base.StartCoroutine(this.EndPartyRemoval());
	}

	// Token: 0x06000618 RID: 1560 RVA: 0x0007F767 File Offset: 0x0007D967
	private IEnumerator EndPartyRemoval()
	{
		Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
		selectedDialogueCharacter.Dead(false, false, true);
		Character character = selectedDialogueCharacter;
		Debug.Log(((character != null) ? character.ToString() : null) + " gone");
		Character nearestParty = Links.x.GetNearestParty(selectedDialogueCharacter.tr.position);
		nearestParty.protagonist = true;
		nearestParty.SetAsLeader();
		Links.x.fellowship.SingleSelected(nearestParty);
		nearestParty.AddToSelected(false, true);
		nearestParty.SetAsLeader();
		Links.x.rtsCamera.Follow(nearestParty.tr, nearestParty, false);
		this.SetSkipKey(true);
		yield return new WaitForSeconds(2f);
		yield break;
	}

	// Token: 0x06000619 RID: 1561 RVA: 0x0007F776 File Offset: 0x0007D976
	public void AddParty()
	{
		this.openingCreation = true;
		Links.x.gaia.OpenCharacterCreation(false, null, null);
	}

	// Token: 0x0600061A RID: 1562 RVA: 0x0007F794 File Offset: 0x0007D994
	public void Bribe()
	{
		Records.x.StartBribe();
		Character character = this.respondCharacter;
		character.ClearLKP();
		if (character.actions)
		{
			character.actions.EndActions();
		}
		character.hostility = 1;
		character.CircleAnimation("");
		Links.x.combat.RemoveFromPartyLists(character);
		Links.x.combat.BribeToReduceHostilities();
	}

	// Token: 0x0600061B RID: 1563 RVA: 0x0007F801 File Offset: 0x0007DA01
	public void BribeFail()
	{
	}

	// Token: 0x0600061C RID: 1564 RVA: 0x0007F804 File Offset: 0x0007DA04
	public void ToggleQuickNote()
	{
		if (Links.x.mk)
		{
			EventSystem.current.SetSelectedGameObject(null);
		}
		if (!this.quickNoteOpen)
		{
			this.lastBtn = Links.x.gameplay.currentEventObject;
			this.journalNoteField.transform.parent.gameObject.SetActive(true);
			this.quickJournalAnimator.Play("QuickNoteOpen");
			this.quickNoteOpen = true;
			this.canUseKeys = false;
			if (Links.x.joy)
			{
				this.canvasGroup.interactable = false;
				Links.x.keyboardScript.StartMenu(this.journalNoteField, null, base.gameObject, "QuickNote");
				return;
			}
		}
		else
		{
			this.quickJournalAnimator.Play("QuickNoteClose");
			this.quickNoteOpen = false;
			this.canvasGroup.interactable = true;
			if (Links.x.joy)
			{
				if (this.lastBtn == null)
				{
					this.lastBtn = this.byeButton.gameObject;
				}
				Links.x.gameplay.SetInteractableSelected(EventSystem.current, this.lastBtn);
			}
		}
	}

	// Token: 0x0600061D RID: 1565 RVA: 0x0007F926 File Offset: 0x0007DB26
	public void EndJournalNote()
	{
		Links.x.journal.UpdateDialogueNote();
	}

	// Token: 0x0600061E RID: 1566 RVA: 0x0007F937 File Offset: 0x0007DB37
	public void ClickAwayFromNote()
	{
		this.canUseKeys = true;
	}

	// Token: 0x0600061F RID: 1567 RVA: 0x0007F940 File Offset: 0x0007DB40
	public void EndCharacterCreation()
	{
	}

	// Token: 0x06000620 RID: 1568 RVA: 0x0007F942 File Offset: 0x0007DB42
	public void ChangeToStun()
	{
		if (Records.x.kill)
		{
			Links.x.hudControl.ToggleLethalityJoystick();
		}
	}

	// Token: 0x06000621 RID: 1569 RVA: 0x0007F95F File Offset: 0x0007DB5F
	public void ChangeToKill()
	{
		if (!Records.x.kill)
		{
			Links.x.hudControl.ToggleLethalityJoystick();
		}
	}

	// Token: 0x06000622 RID: 1570 RVA: 0x0007F97C File Offset: 0x0007DB7C
	public void SetHostile()
	{
		if (DialogueLua.GetVariable("SetJustice").asBool)
		{
			Links.x.combat.isJustice = true;
			DialogueLua.SetVariable("SetJustice", false);
		}
		bool asBool = DialogueLua.GetVariable("PartyIsSneaking").asBool;
		Debug.Log("Sneaking while setting hostile: " + asBool.ToString());
		if (!asBool)
		{
			this.startCombat = true;
		}
		else
		{
			this.npc1.hostility = 2;
			if (this.npc2)
			{
				this.npc2.hostility = 2;
			}
			if (this.npc3)
			{
				this.npc3.hostility = 2;
			}
			if (this.npc4)
			{
				this.npc4.hostility = 2;
			}
		}
		DialogueLua.SetVariable("PartyIsSneaking", false);
	}

	// Token: 0x06000623 RID: 1571 RVA: 0x0007FA5C File Offset: 0x0007DC5C
	public void SetHostileInstant(Character npcToSetHostile)
	{
		Character nearestParty = Links.x.GetNearestParty(npcToSetHostile.tr.position);
		string[] array = new string[10];
		array[0] = "Setting hostile: ";
		int num = 1;
		Character character = nearestParty;
		array[num] = ((character != null) ? character.ToString() : null);
		array[2] = " ";
		array[3] = ((npcToSetHostile != null) ? npcToSetHostile.ToString() : null);
		array[4] = " ";
		int num2 = 5;
		Character character2 = this.npc2;
		array[num2] = ((character2 != null) ? character2.ToString() : null);
		array[6] = " ";
		int num3 = 7;
		Character character3 = this.npc3;
		array[num3] = ((character3 != null) ? character3.ToString() : null);
		array[8] = " ";
		int num4 = 9;
		Character character4 = this.npc4;
		array[num4] = ((character4 != null) ? character4.ToString() : null);
		Debug.Log(string.Concat(array));
		npcToSetHostile.hostility = 2;
		npcToSetHostile.UpdateLKP(nearestParty, nearestParty.node, "Seen", true);
		Links.x.sensory.AddPlayerToCombat(npcToSetHostile, nearestParty, true, false, false);
		if (this.npc2)
		{
			this.npc2.hostility = 2;
			this.npc2.UpdateLKP(nearestParty, nearestParty.node, "Seen", true);
			Links.x.sensory.AddPlayerToCombat(this.npc2, nearestParty, true, false, false);
		}
		if (this.npc3)
		{
			this.npc3.hostility = 2;
			this.npc3.UpdateLKP(nearestParty, nearestParty.node, "Seen", true);
			Links.x.sensory.AddPlayerToCombat(this.npc3, nearestParty, true, false, false);
		}
		if (this.npc4)
		{
			this.npc4.hostility = 2;
			this.npc4.UpdateLKP(nearestParty, nearestParty.node, "Seen", true);
			Links.x.sensory.AddPlayerToCombat(this.npc4, nearestParty, true, false, false);
		}
		if (!Records.x.combat)
		{
			Links.x.combat.StartCombat(nearestParty, npcToSetHostile, false, true);
		}
	}

	// Token: 0x06000624 RID: 1572 RVA: 0x0007FC43 File Offset: 0x0007DE43
	public void CheckQuestActivations()
	{
		Links.x.diorama.CheckQuestActivations();
	}

	// Token: 0x06000625 RID: 1573 RVA: 0x0007FC54 File Offset: 0x0007DE54
	public void UpdateQuestPoints()
	{
		if (this.npc1 && this.npc1.creatures)
		{
			this.npc1.creatures.CheckQuestSwap();
		}
		if (this.npc2 && this.npc2.creatures)
		{
			this.npc2.creatures.CheckQuestSwap();
		}
		if (this.npc3 && this.npc3.creatures)
		{
			this.npc3.creatures.CheckQuestSwap();
		}
		if (this.npc4 && this.npc4.creatures)
		{
			this.npc4.creatures.CheckQuestSwap();
		}
	}

	// Token: 0x06000626 RID: 1574 RVA: 0x0007FD20 File Offset: 0x0007DF20
	private void TimeOfDay()
	{
		Links.x.gameplay.GetTimeOfDay();
		string timeOfDay = Links.x.gameplay.timeOfDay;
		if (timeOfDay == "Morning")
		{
			int num = Random.Range(0, 4);
			if (num == 0)
			{
				DialogueLua.SetVariable("TimeGreeting", "A bright morning to you");
			}
			if (num == 1)
			{
				DialogueLua.SetVariable("TimeGreeting", "Good morning");
			}
			if (num == 2)
			{
				DialogueLua.SetVariable("TimeGreeting", "Sela's blessings this morning");
			}
			if (num == 3)
			{
				DialogueLua.SetVariable("TimeGreeting", "Topa-din");
			}
		}
		if (timeOfDay == "Afternoon")
		{
			int num2 = Random.Range(0, 4);
			if (num2 == 0)
			{
				DialogueLua.SetVariable("TimeGreeting", "Good afternoon");
			}
			if (num2 == 1)
			{
				DialogueLua.SetVariable("TimeGreeting", "Afternoon's greetings");
			}
			if (num2 == 2)
			{
				DialogueLua.SetVariable("TimeGreeting", "A good afternoon to you");
			}
			if (num2 == 3)
			{
				DialogueLua.SetVariable("TimeGreeting", "Topa-din");
			}
		}
		if (timeOfDay == "Evening")
		{
			int num3 = Random.Range(0, 4);
			if (num3 == 0)
			{
				DialogueLua.SetVariable("TimeGreeting", "Good evening");
			}
			if (num3 == 1)
			{
				DialogueLua.SetVariable("TimeGreeting", "A good evening to you");
			}
			if (num3 == 2)
			{
				DialogueLua.SetVariable("TimeGreeting", "Evening's greetings");
			}
			if (num3 == 3)
			{
				DialogueLua.SetVariable("TimeGreeting", "Topa-din");
			}
		}
		if (timeOfDay == "Night")
		{
			int num4 = Random.Range(0, 4);
			if (num4 == 0)
			{
				DialogueLua.SetVariable("TimeGreeting", "A safe night to you");
			}
			if (num4 == 1)
			{
				DialogueLua.SetVariable("TimeGreeting", "Night's greetings");
			}
			if (num4 == 2)
			{
				DialogueLua.SetVariable("TimeGreeting", "A blessed night to you");
			}
			if (num4 == 3)
			{
				DialogueLua.SetVariable("TimeGreeting", "Topa-din");
			}
		}
	}

	// Token: 0x06000627 RID: 1575 RVA: 0x0007FEC4 File Offset: 0x0007E0C4
	public void StartVIPQuest()
	{
		this.npc1.creatures.CheckVIP();
		this.str.Clear();
		this.str.Append("<color=#FFFFFF>You have gained a follower</color>");
		Links.x.gameFeed.AddFeed(this.str.ToString());
		this.npc1.StartQuip("I will follow you now");
		Links.x.diorama.CheckCreaturesThatMightActivate();
	}

	// Token: 0x06000628 RID: 1576 RVA: 0x0007FF38 File Offset: 0x0007E138
	public void EndVIPQuest()
	{
		this.npc1.creatures.CheckVIP();
		this.str.Clear();
		this.str.Append("<color=#FFFFFF>You have lost a follower</color>");
		Links.x.gameFeed.AddFeed(this.str.ToString());
		this.npc1.ReturnHealthBar();
	}

	// Token: 0x06000629 RID: 1577 RVA: 0x0007FF97 File Offset: 0x0007E197
	public void StartPuzzle()
	{
		if (this.puzzleActions)
		{
			this.puzzleActions.StartPuzzle();
		}
	}

	// Token: 0x0600062A RID: 1578 RVA: 0x0007FFB4 File Offset: 0x0007E1B4
	public void StartMiniGame()
	{
		if (this.npc1.stats.xmlName == "DryadFrog")
		{
			Character selectedDialogueCharacter = this.GetSelectedDialogueCharacter();
			foreach (Puzzle puzzle in Links.x.diorama.puzzles)
			{
				if (puzzle.gameObject.name == "FrogMiniGameSpots")
				{
					this.doNotTurnOnHud = true;
					int asInt = DialogueLua.GetVariable("C6_TalkedToFrogDryad").asInt;
					puzzle.gameObject.GetComponent<PuzzleActions>().MiniGame(selectedDialogueCharacter, this.npc1, asInt);
				}
			}
		}
	}

	// Token: 0x0600062B RID: 1579 RVA: 0x0008007C File Offset: 0x0007E27C
	public void SetMiniGameVariables(int num, PuzzleActions p)
	{
		this.puzzleActions = p;
		bool flag = false;
		if (num >= p.scoreCap3)
		{
			flag = true;
		}
		QuestLog.SetQuestState("C6_MiniGame", QuestState.Success);
		DialogueLua.SetVariable("MiniGameComplete", flag);
	}

	// Token: 0x0600062C RID: 1580 RVA: 0x000800B8 File Offset: 0x0007E2B8
	public void MiniGameReward()
	{
		int asInt = DialogueLua.GetVariable("C6_TalkedToFrogDryad").asInt;
		int savedScore = this.puzzleActions.savedScore;
		int scoreCap = this.puzzleActions.scoreCap1;
		int scoreCap2 = this.puzzleActions.scoreCap2;
		int scoreCap3 = this.puzzleActions.scoreCap3;
		int num = this.talkingParty.IndexOf(Links.x.main);
		int num2 = -1;
		if (num == 0)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party1").asString);
		}
		if (num == 1)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party2").asString);
		}
		if (num == 2)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party3").asString);
		}
		if (num == 3)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party4").asString);
		}
		if (savedScore >= scoreCap && asInt == 1)
		{
			DialogueLua.SetVariable("Item", "Berry");
			DialogueLua.SetVariable("ItemStack", 10);
			this.GiveItem();
			DialogueLua.SetVariable("C6_TalkedToFrogDryad", 2);
		}
		if (savedScore >= scoreCap2 && asInt <= 2)
		{
			bool flag = false;
			if (num != 0)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party1").asString);
				num2 = 0;
				flag = true;
			}
			if (num != 1 && !flag)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party2").asString);
				num2 = 1;
				flag = true;
			}
			if (num != 2 && !flag)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party3").asString);
				num2 = 2;
				flag = true;
			}
			if (num != 3 && !flag)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party4").asString);
				num2 = 3;
			}
			DialogueLua.SetVariable("Item", "GemCitrinePoor");
			DialogueLua.SetVariable("ItemStack", 1);
			this.GiveItem();
			DialogueLua.SetVariable("C6_TalkedToFrogDryad", 3);
		}
		if (savedScore >= scoreCap3 && asInt <= 3)
		{
			bool flag2 = false;
			if (num != 0 && num2 != 0)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party1").asString);
				flag2 = true;
			}
			if (num != 1 && num2 != 1 && !flag2)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party2").asString);
				flag2 = true;
			}
			if (num != 2 && num2 != 2 && !flag2)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party3").asString);
				flag2 = true;
			}
			if (num != 3 && num2 != 3 && !flag2)
			{
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party4").asString);
			}
			DialogueLua.SetVariable("Item", "FrogRing");
			DialogueLua.SetVariable("ItemStack", 1);
			this.GiveItem();
			DialogueLua.SetVariable("C6_TalkedToFrogDryad", 4);
		}
		if (num == 0)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party1").asString);
		}
		if (num == 1)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party2").asString);
		}
		if (num == 2)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party3").asString);
		}
		if (num == 3)
		{
			DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party4").asString);
		}
	}

	// Token: 0x0600062D RID: 1581 RVA: 0x00080450 File Offset: 0x0007E650
	public void PlayLocationText(string text)
	{
		text = string.Concat(new string[]
		{
			"<font=Bold>",
			text,
			"</font>\n<size=70%>",
			Links.x.diorama.sceneDisplayName,
			"</size>"
		});
		if (this.corout == null)
		{
			this.corout = this.PlayLocation(text);
			base.StartCoroutine(this.corout);
			return;
		}
		this.locationText.text = text;
	}

	// Token: 0x0600062E RID: 1582 RVA: 0x000804C7 File Offset: 0x0007E6C7
	private IEnumerator PlayLocation(string text)
	{
		this.locationText.text = text;
		if (!Records.x.filming)
		{
			this.dialoguePopupBoxAnimator.updateMode = AnimatorUpdateMode.UnscaledTime;
		}
		this.dialoguePopupBox.SetActive(true);
		MasterAudio.PlaySoundAndForget("Map Entered", 0.8f, new float?(1f), 0f, "", null);
		this.dialoguePopupBoxAnimator.Play("DialoguePopsLocation", -1, 0f);
		if (!Records.x.filming)
		{
			yield return new WaitForSeconds(10f);
		}
		else
		{
			yield return new WaitForSecondsRealtime(10f);
		}
		this.dialoguePopupBox.SetActive(false);
		this.dialoguePopupBoxAnimator.updateMode = AnimatorUpdateMode.Normal;
		this.corout = null;
		yield break;
	}

	// Token: 0x0600062F RID: 1583 RVA: 0x000804DD File Offset: 0x0007E6DD
	public void GiveItem()
	{
		this.SetSkipKey(false);
		this.Item(true);
	}

	// Token: 0x06000630 RID: 1584 RVA: 0x000804F0 File Offset: 0x0007E6F0
	public void GiveItemSpecial(string questName)
	{
		this.NoExit(true);
		if (questName == "D5_Dura")
		{
			int num = 0;
			Character character = Links.x.diorama.FindCharacterAnyState("WestRuinsHostage1");
			Character character2 = Links.x.diorama.FindCharacterAnyState("WestRuinsHostage2");
			Character character3 = Links.x.diorama.FindCharacterAnyState("WestRuinsHostage3");
			if (character && !character.dead && !character.stunned && !character.missing)
			{
				num++;
			}
			if (character2 && !character2.dead && !character2.stunned && !character2.missing)
			{
				num++;
			}
			if (character3 && !character3.dead && !character3.stunned && !character3.missing)
			{
				num++;
			}
			Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName("Ax1");
			Library.Inventory invRowFromName2 = Links.x.library.GetInvRowFromName("Sword1");
			Library.Inventory invRowFromName3 = Links.x.library.GetInvRowFromName("Blowgun1");
			if (this.npc1.HowManyItemsInBag(invRowFromName._ID, 0) > 0 && num >= 1)
			{
				DialogueLua.SetVariable("Item", invRowFromName._Name);
				DialogueLua.SetVariable("ItemStack", 1);
				this.Item(true);
			}
			if (this.npc1.HowManyItemsInBag(invRowFromName2._ID, 0) > 0 && num >= 2)
			{
				DialogueLua.SetVariable("Item", invRowFromName2._Name);
				DialogueLua.SetVariable("ItemStack", 1);
				this.Item(true);
			}
			if (this.npc1.HowManyItemsInBag(invRowFromName3._ID, 0) > 0 && num >= 3)
			{
				DialogueLua.SetVariable("Item", invRowFromName3._Name);
				DialogueLua.SetVariable("ItemStack", 1);
				this.Item(true);
			}
		}
	}

	// Token: 0x06000631 RID: 1585 RVA: 0x000806C9 File Offset: 0x0007E8C9
	public void TakeItem()
	{
		this.SetSkipKey(false);
		this.Item(false);
	}

	// Token: 0x06000632 RID: 1586 RVA: 0x000806DC File Offset: 0x0007E8DC
	public void Item(bool npcGive)
	{
		Character character = this.GetSelectedDialogueCharacter();
		string text = DialogueLua.GetVariable("Item").asString;
		int num = DialogueLua.GetVariable("ItemStack").asInt;
		if (num == 0)
		{
			num = 1;
		}
		Library.Inventory inventory;
		if (text == "PartyFood")
		{
			if (this.itemGiveCount == 0)
			{
				text = DialogueLua.GetVariable("Party1Skill").asString;
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party1").asString);
			}
			if (this.itemGiveCount == 1)
			{
				text = DialogueLua.GetVariable("Party2Skill").asString;
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party2").asString);
			}
			if (this.itemGiveCount == 2)
			{
				text = DialogueLua.GetVariable("Party3Skill").asString;
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party3").asString);
			}
			if (this.itemGiveCount == 3)
			{
				text = DialogueLua.GetVariable("Party4Skill").asString;
				DialogueLua.SetVariable("SelectedParty", DialogueLua.GetVariable("Party4").asString);
			}
			inventory = Links.x.library.GetInvRowFromDisplayName(text);
			character = this.GetSelectedDialogueCharacter();
			this.itemGiveCount++;
			if (inventory == null)
			{
				return;
			}
		}
		else if (text == "Emerald")
		{
			if (npcGive)
			{
				Links.x.inventory.emeralds += num;
			}
			else
			{
				Links.x.inventory.emeralds -= num;
			}
			inventory = Links.x.library.GetInvRowFromName(text);
		}
		else
		{
			inventory = Links.x.library.GetInvRowFromName(text);
		}
		if (npcGive)
		{
			MasterAudio.PlaySoundAndForget("Feedback", 1f, new float?(1f), 0f, "DialogueItemGiven", null);
		}
		else
		{
			MasterAudio.PlaySoundAndForget("Feedback", 1f, new float?(1f), 0f, "DialogueItemReceived", null);
		}
		bool flag = false;
		if (npcGive)
		{
			if (text != "Songbook" && text != "Spellbook")
			{
				int num2 = this.npc1.HasItem(inventory._ID);
				Vector3 vector = Vector3.zero;
				Vector3 vector2 = Vector3.zero;
				if (num2 > -1)
				{
					List<int> bag = this.npc1.bag;
					List<Vector4> durability = this.npc1.durability;
					List<Vector3> sockets = this.npc1.sockets;
					int num3 = num2;
					bag[num3] = 0;
					bag[num3 + 1] = 0;
					durability[num3 / 2] = Vector4.zero;
					vector = sockets[num3];
					vector2 = sockets[num3];
					sockets[num3] = Vector3.zero;
					sockets[num3 + 1] = Vector3.zero;
				}
				if (!this.talkingParty.Contains(character) && this.foundParty.Count > 0)
				{
					character = this.talkingParty[0];
				}
				if (inventory._Stackable)
				{
					global::Item item;
					ItemEquipped itemEquipped;
					Links.x.inventory.AddFromGround(null, null, 0, false, 0f, inventory._ID, num, Vector3.zero, Vector3.zero, new Vector4((float)inventory._DurabilityMax, 0f, 0f, 0f), character, true, false, out item, out itemEquipped);
				}
				else
				{
					for (int i = 0; i < num; i++)
					{
						global::Item item2;
						ItemEquipped itemEquipped2;
						Links.x.inventory.AddFromGround(null, null, 0, false, 0f, inventory._ID, 1, vector, vector2, new Vector4((float)inventory._DurabilityMax, 0f, 0f, 0f), character, true, false, out item2, out itemEquipped2);
					}
				}
			}
			if (text == "Songbook")
			{
				global::Item item3;
				ItemEquipped itemEquipped3;
				Links.x.inventory.AddFromGround(null, null, 0, false, 0f, inventory._ID, 1, new Vector3((float)character.stats.partyID, 0f, 0f), Vector3.zero, new Vector4(0f, 0f, 0f, 0f), character, true, false, out item3, out itemEquipped3);
				Links.x.inventory.emeralds -= 50;
			}
			if (text == "Spellbook")
			{
				Character character2 = character;
				Debug.Log(((character2 != null) ? character2.ToString() : null) + " " + character.stats.partyID.ToString());
				global::Item item4;
				ItemEquipped itemEquipped4;
				Links.x.inventory.AddFromGround(null, null, 0, false, 0f, inventory._ID, 1, new Vector3((float)character.stats.partyID, 0f, 0f), Vector3.zero, new Vector4(0f, 0f, 0f, 0f), character, true, false, out item4, out itemEquipped4);
				Links.x.inventory.emeralds -= 150;
			}
			flag = true;
		}
		else if (text != "Emerald")
		{
			if (num < 1)
			{
				num = 1;
			}
			for (int j = 0; j < num; j++)
			{
				Character character3 = null;
				bool flag2 = false;
				if (text == "GhostScrollCirclet")
				{
					flag2 = false;
				}
				int num4 = -1;
				for (int k = 0; k < this.partyList.Count; k++)
				{
					if (this.partyList[k] && !character3 && this.partyList[k])
					{
						if (flag2)
						{
							num4 = this.partyList[k].HasItemInBagOnly(inventory._ID);
						}
						else
						{
							num4 = this.partyList[k].HasItemInBag(inventory._ID);
						}
						if (num4 > -1)
						{
							character3 = this.partyList[k];
							break;
						}
					}
				}
				if (num4 > -1)
				{
					int invNum = character3.GetInvNum(num4 + 1);
					Vector3 socketNum = character3.GetSocketNum(num4);
					Vector3 socketNum2 = character3.GetSocketNum(num4 + 1);
					Vector4 durabilityNum = character3.GetDurabilityNum(num4 / 2);
					this.npc1.GiveItem(inventory._ID, invNum, socketNum, socketNum2, durabilityNum, false);
					character3.RemoveItem(inventory._ID, 1);
					flag = true;
				}
			}
		}
		this.inventoryItemImage.sprite = Links.x.archives.GetItem(inventory._UIModel);
		if (flag)
		{
			MasterAudio.PlaySoundAndForget("Inventory", 0.6f, new float?(1f), 0f, inventory._Sound, null);
		}
		if (npcGive)
		{
			if (flag)
			{
				this.str.Clear();
				this.str.Append("Received ");
				this.str.Append(inventory._DisplayName);
				if (num > 1)
				{
					this.str.Append(" x");
					this.str.Append(num);
				}
				this.itemPopupText.text = this.str.ToString();
				this.str.Clear();
				this.str.Append(character.stats.GetName());
				this.str.Append(" received");
				this.str.Append(inventory._DisplayName);
				if (num > 1)
				{
					this.str.Append(" x");
					this.str.Append(num);
				}
			}
		}
		else if (flag)
		{
			this.str.Clear();
			this.str.Append("Gave ");
			this.str.Append(inventory._DisplayName);
			if (num > 1)
			{
				this.str.Append(" x");
				this.str.Append(num);
			}
			this.itemPopupText.text = this.str.ToString();
			this.str.Clear();
			this.str.Append("Item removed: ");
			this.str.Append(inventory._DisplayName);
			if (num > 1)
			{
				this.str.Append(" x");
				this.str.Append(num);
			}
			Links.x.gameFeed.AddFeed(this.str.ToString());
		}
		int num5 = this.talkingParty.IndexOf(character);
		if (!flag)
		{
			num5 = -1;
		}
		if (num5 == 0)
		{
			this.message1.SetActive(true);
			this.messageImg1.sprite = this.inventoryItemImage.sprite;
			this.messageImg1.enabled = true;
			if (this.messageText1.text != "")
			{
				TextMeshProUGUI textMeshProUGUI = this.messageText1;
				textMeshProUGUI.text = textMeshProUGUI.text + ", " + this.itemPopupText.text;
			}
			else
			{
				this.messageText1.text = this.itemPopupText.text;
			}
		}
		if (num5 == 1)
		{
			this.message2.SetActive(true);
			this.messageImg2.sprite = this.inventoryItemImage.sprite;
			this.messageImg2.enabled = true;
			if (this.messageText2.text != "")
			{
				TextMeshProUGUI textMeshProUGUI2 = this.messageText2;
				textMeshProUGUI2.text = textMeshProUGUI2.text + ", " + this.itemPopupText.text;
			}
			else
			{
				this.messageText2.text = this.itemPopupText.text;
			}
		}
		if (num5 == 2)
		{
			this.message3.SetActive(true);
			this.messageImg3.sprite = this.inventoryItemImage.sprite;
			this.messageImg3.enabled = true;
			if (this.messageText3.text != "")
			{
				TextMeshProUGUI textMeshProUGUI3 = this.messageText3;
				textMeshProUGUI3.text = textMeshProUGUI3.text + ", " + this.itemPopupText.text;
			}
			else
			{
				this.messageText3.text = this.itemPopupText.text;
			}
		}
		if (num5 == 3)
		{
			this.message4.SetActive(true);
			this.messageImg4.sprite = this.inventoryItemImage.sprite;
			this.messageImg4.enabled = true;
			if (this.messageText4.text != "")
			{
				TextMeshProUGUI textMeshProUGUI4 = this.messageText4;
				textMeshProUGUI4.text = textMeshProUGUI4.text + ", " + this.itemPopupText.text;
			}
			else
			{
				this.messageText4.text = this.itemPopupText.text;
			}
		}
		this.messagedOn = 0;
		if (inventory._Name.Contains("PaduriiChildRingA"))
		{
			DialogueLua.SetVariable("Item", "PaduriiChildRingB");
			this.TakeItem();
		}
		if (inventory._Name.Contains("PaduriiChildRingB"))
		{
			DialogueLua.SetVariable("Item", "PaduriiChildRingC");
			this.TakeItem();
		}
	}

	// Token: 0x06000633 RID: 1587 RVA: 0x000811E2 File Offset: 0x0007F3E2
	private IEnumerator ItemWait()
	{
		float t = 4.15f;
		float startTime = Time.timeSinceLevelLoad;
		bool skipping = false;
		while (Time.timeSinceLevelLoad < startTime + t && !Input.GetMouseButtonUp(0))
		{
			yield return null;
		}
		if (Input.GetMouseButtonUp(0))
		{
			Debug.Log("Skipping");
			skipping = true;
		}
		MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Box Close", null);
		if (!skipping)
		{
			yield return new WaitForSeconds(0.6f);
		}
		else
		{
			this.dialoguePopupBoxAnimator.Play("DialoguePopsItemOn", -1, 0.9f);
			this.skippingSequence = true;
			DialogueManager.Instance.GetComponent<Sequencer>().DoAllImmediately();
			yield return new WaitForSeconds(0.15f);
		}
		this.dialoguePopupBox.SetActive(false);
		this.itemPopupText.text = "";
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x06000634 RID: 1588 RVA: 0x000811F4 File Offset: 0x0007F3F4
	public void Message(string type)
	{
		MasterAudio.PlaySoundAndForget("Feedback", 0.8f, new float?(1f), 0f, "SkillTrained_whips", null);
		this.dialoguePopupBox.SetActive(true);
		this.str.Clear();
		if (type == "Demo")
		{
			this.str.Append("Demo Quest");
			this.str.Append("\n<size=1.6em><font=Bold>");
			this.str.Append("Complete!");
			this.str.Append("</font></size>");
		}
		this.spellPopupBoxText.text = this.str.ToString();
		if (!this.skippingSequence)
		{
			this.dialoguePopupBoxAnimator.Play("DialoguePopsSpellOn", -1, 0f);
			base.StartCoroutine(this.MessageWait());
		}
	}

	// Token: 0x06000635 RID: 1589 RVA: 0x000812D8 File Offset: 0x0007F4D8
	private IEnumerator MessageWait()
	{
		this.SetSkipKey(false);
		float t = 4.15f;
		float startTime = Time.timeSinceLevelLoad;
		bool skipping = false;
		while (Time.timeSinceLevelLoad < startTime + t && !Input.GetMouseButtonUp(0))
		{
			yield return null;
		}
		if (Input.GetMouseButtonUp(0))
		{
			Debug.Log("Skipping");
			skipping = true;
		}
		MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Box Close", null);
		if (!skipping)
		{
			yield return new WaitForSeconds(1.5f);
		}
		else
		{
			this.dialoguePopupBoxAnimator.Play("DialoguePopsSpellOn", -1, 0.9f);
			this.skippingSequence = true;
			DialogueManager.Instance.GetComponent<Sequencer>().DoAllImmediately();
			yield return new WaitForSeconds(0.15f);
		}
		this.dialoguePopupBox.SetActive(false);
		this.spellPopupBoxText.text = "";
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x06000636 RID: 1590 RVA: 0x000812E8 File Offset: 0x0007F4E8
	public void QuestEffectParty(string effectName, bool near)
	{
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (!this.partyList[i].dead && !this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				this.AddEffect(this.partyList[i], effectName);
			}
		}
	}

	// Token: 0x06000637 RID: 1591 RVA: 0x00081358 File Offset: 0x0007F558
	public void QuestEffect(string effectName)
	{
		Character character = this.npc1;
		if (effectName == "QuestTimerBlessedC5")
		{
			character = this.npc2;
		}
		this.AddEffect(character, effectName);
	}

	// Token: 0x06000638 RID: 1592 RVA: 0x00081388 File Offset: 0x0007F588
	private void AddEffect(Character character, string effectName)
	{
		Effects existingEffect = character.stats.GetExistingEffect("Cafera");
		if (existingEffect && effectName == "Cafera")
		{
			existingEffect.IncreaseTimeToFull();
			return;
		}
		Effects effects = character.gameObject.AddComponent<Effects>();
		Links.x.cellar.AddEffects(effects);
		effects.gameObject.SetActive(true);
		effects.source = null;
		effects.target = character;
		effects.fromLoad = false;
		effects.effectName = effectName;
		effects.sourceLevel = 0f;
		effects.Inflicted(false);
	}

	// Token: 0x06000639 RID: 1593 RVA: 0x0008141C File Offset: 0x0007F61C
	public void UpdateRainGodEarring(string num)
	{
		Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName("RainGodEarring");
		Character character = null;
		int num2 = -1;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !character && this.partyList[i])
			{
				num2 = this.partyList[i].HasItemInBag(invRowFromName._ID);
				if (num2 > -1)
				{
					character = this.partyList[i];
					break;
				}
			}
		}
		string text = "Rain god earring upgrade ";
		string text2 = num2.ToString();
		string text3 = " ";
		Character character2 = character;
		Debug.Log(text + text2 + text3 + ((character2 != null) ? character2.ToString() : null));
		if (num2 > -1)
		{
			float y = character.GetSocketNum(num2).y;
			character.SetSocketNum(num2, (int)y + 1, 1);
			character.inventoryBag.SetSocketA(character.GetSocketNum(num2), num2 / 2);
		}
	}

	// Token: 0x0600063A RID: 1594 RVA: 0x00081510 File Offset: 0x0007F710
	public void SetTraitsCharacters()
	{
		string asString = DialogueLua.GetVariable("Trait").asString;
		string text = "";
		float num = float.PositiveInfinity;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (!this.partyList[i].dead && !this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				float num2 = 0f;
				if (this.partyList[i].stats.HasFamilyBackgroundFromName(asString) > 0 && num2 < num)
				{
					num = num2;
					text = this.partyList[i].stats.GetName();
				}
			}
		}
		DialogueLua.SetVariable("TraitParty", text);
	}

	// Token: 0x0600063B RID: 1595 RVA: 0x000815E8 File Offset: 0x0007F7E8
	public void HealRozafirFarmers()
	{
		List<Character> characters = Links.x.diorama.characters;
		for (int i = 0; i < characters.Count; i++)
		{
			if (characters[i] && !characters[i].stats.animal)
			{
				Effects existingEffect = characters[i].stats.GetExistingEffect("Licech");
				if (existingEffect)
				{
					existingEffect.Healed(false, true);
				}
			}
		}
	}

	// Token: 0x0600063C RID: 1596 RVA: 0x0008165E File Offset: 0x0007F85E
	public void SetBoro()
	{
		DialogueLua.SetVariable("Boro", "1");
	}

	// Token: 0x0600063D RID: 1597 RVA: 0x0008166F File Offset: 0x0007F86F
	public void SetStatsCharacterNear()
	{
		this.SetStatCharacters(true);
	}

	// Token: 0x0600063E RID: 1598 RVA: 0x00081678 File Offset: 0x0007F878
	public void SetStatsCharactersAll()
	{
		this.SetStatCharacters(false);
	}

	// Token: 0x0600063F RID: 1599 RVA: 0x00081684 File Offset: 0x0007F884
	public void SetStatCharacters(bool hasToBeNear)
	{
		int num = 0;
		Character character = null;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (this.partyList[i] && !this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				if (!character)
				{
					character = this.partyList[i];
				}
				num++;
			}
		}
		hasToBeNear = false;
		for (int j = 0; j < 12; j++)
		{
			string text = "HighAuraParty";
			string text2 = "Aura";
			if (j == 1)
			{
				text = "HighStrengthParty";
				text2 = "Strength";
			}
			if (j == 2)
			{
				text = "HighAgilityParty";
				text2 = "Agility";
			}
			if (j == 3)
			{
				text = "HighDexterityParty";
				text2 = "Dexterity";
			}
			if (j == 4)
			{
				text = "HighPaganParty";
				text2 = "Pagan";
			}
			if (j == 5)
			{
				text = "HighSensoryParty";
				text2 = "Sensory";
			}
			if (j == 6)
			{
				text = "LowAuraParty";
				text2 = "Aura";
			}
			if (j == 7)
			{
				text = "LowStrengthParty";
				text2 = "Strength";
			}
			if (j == 8)
			{
				text = "LowAgilityParty";
				text2 = "Agility";
			}
			if (j == 9)
			{
				text = "LowDexterityParty";
				text2 = "Dexterity";
			}
			if (j == 10)
			{
				text = "LowPaganParty";
				text2 = "Pagan";
			}
			if (j == 11)
			{
				text = "LowSensoryParty";
				text2 = "Sensory";
			}
			Character character2 = null;
			float num2 = 0f;
			if (j >= 6)
			{
				num2 = 100f;
			}
			if (num == 1)
			{
				int num4;
				float num3 = character.stats.Stat(text2, false, out num4);
				if ((num3 >= 20f && j < 6) || (num3 <= 20f && j >= 6))
				{
					character2 = character;
				}
			}
			else
			{
				for (int k = 0; k < this.partyList.Count; k++)
				{
					if (!this.partyList[k].isBoro && !this.partyList[k].summoned)
					{
						float num5 = 0f;
						if (hasToBeNear)
						{
							num5 = (this.partyList[k].tr.position - this.npc1.tr.position).sqrMagnitude;
						}
						if (num5 < this.maxPartyDistance * this.maxPartyDistance)
						{
							int num7;
							float num6 = this.partyList[k].stats.Stat(text2, false, out num7);
							if ((num6 >= 20f && num6 > num2 && j < 6) || (num6 < 20f && num6 < num2 && j >= 6))
							{
								character2 = this.partyList[k];
								num2 = num6;
							}
						}
					}
				}
			}
			if (character2)
			{
				DialogueLua.SetVariable(text, character2.stats.GetName());
			}
			else
			{
				DialogueLua.SetVariable(text, "");
			}
		}
	}

	// Token: 0x06000640 RID: 1600 RVA: 0x0008195E File Offset: 0x0007FB5E
	public void SetSkillsCharacterNear()
	{
		this.SetSkillCharacters(true);
	}

	// Token: 0x06000641 RID: 1601 RVA: 0x00081967 File Offset: 0x0007FB67
	public void SetSkillsCharactersAll()
	{
		this.SetSkillCharacters(true);
	}

	// Token: 0x06000642 RID: 1602 RVA: 0x00081970 File Offset: 0x0007FB70
	public void SetSkillCharacters(bool hasToBeNear)
	{
		hasToBeNear = false;
		int num = 0;
		string text = "";
		string text2 = "";
		string text3 = "";
		float num2 = 0f;
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (!this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				float num3 = 0f;
				if (hasToBeNear)
				{
					num3 = (this.partyList[i].tr.position - this.npc1.tr.position).sqrMagnitude;
				}
				if (num3 < this.maxPartyDistance * this.maxPartyDistance)
				{
					num++;
					if (num == 1)
					{
						text = "Party1Skill";
						text2 = "Party1";
					}
					if (num == 2)
					{
						text = "Party2Skill";
						text2 = "Party2";
					}
					if (num == 3)
					{
						text = "Party3Skill";
						text2 = "Party3";
					}
					if (num == 4)
					{
						text = "Party4Skill";
						text2 = "Party4";
					}
					float num4 = 0f;
					string bestSkill = this.partyList[i].stats.GetBestSkill("Weapon", out num4);
					if (num4 > num2)
					{
						num2 = num4;
						text3 = this.partyList[i].stats.GetName();
					}
					DialogueLua.SetVariable(text2, this.partyList[i].stats.GetName());
					DialogueLua.SetVariable(text, bestSkill);
				}
			}
		}
		DialogueLua.SetVariable("PartySize", num);
		DialogueLua.SetVariable("BestFighter", text3);
	}

	// Token: 0x06000643 RID: 1603 RVA: 0x00081B0C File Offset: 0x0007FD0C
	public void SetFoodCharacters()
	{
		int num = 0;
		string text = "";
		string text2 = "";
		string text3 = "";
		string text4 = "";
		string text5 = "";
		string text6 = "";
		string text7 = "";
		for (int i = 0; i < this.partyList.Count; i++)
		{
			if (!this.partyList[i].isBoro && !this.partyList[i].summoned)
			{
				num++;
				if (num == 1)
				{
					text = "Party1Skill";
					text2 = "Party1";
				}
				if (num == 2)
				{
					text = "Party2Skill";
					text2 = "Party2";
				}
				if (num == 3)
				{
					text = "Party3Skill";
					text2 = "Party3";
				}
				if (num == 4)
				{
					text = "Party4Skill";
					text2 = "Party4";
				}
				string race = this.partyList[i].stats.race;
				string text8 = "";
				if (race == "Yeti")
				{
					text8 = Links.x.library.GetInvRowFromName("FoodBlackBuffsWonderful")._DisplayName;
					text5 = this.partyList[i].stats.GetName();
					text6 = "Yeti";
				}
				if (race == "Taratorith")
				{
					text8 = Links.x.library.GetInvRowFromName("FoodHealthWonderful")._DisplayName;
					text4 = this.partyList[i].stats.GetName();
					text6 = "Taratorith";
				}
				if (race == "Varuchov")
				{
					text8 = Links.x.library.GetInvRowFromName("FoodSpiritWonderful")._DisplayName;
					text3 = this.partyList[i].stats.GetName();
				}
				if (race == "Pasaaren")
				{
					text8 = Links.x.library.GetInvRowFromName("FoodFatigueWonderful")._DisplayName;
					text4 = this.partyList[i].stats.GetName();
					text6 = "Pasaaren";
				}
				if (race == "Ameythevian")
				{
					text8 = Links.x.library.GetInvRowFromName("FoodWhiteBuffsWonderful")._DisplayName;
					text4 = this.partyList[i].stats.GetName();
					text6 = "Ameythevian";
				}
				DialogueLua.SetVariable(text2, this.partyList[i].stats.GetName());
				DialogueLua.SetVariable(text, text8);
			}
		}
		DialogueLua.SetVariable("PartySize", num);
		if (text4 == "" && text5 != "")
		{
			text4 = text5;
			text6 = "Yeti";
		}
		if (text4 == "" && text7 != "")
		{
			text4 = text7;
			text6 = "Varuchov";
		}
		DialogueLua.SetVariable("RaceNames", text3);
		DialogueLua.SetVariable("RaceNames2", text4);
		DialogueLua.SetVariable("Race", text6);
	}

	// Token: 0x06000644 RID: 1604 RVA: 0x00081E00 File Offset: 0x00080000
	public void LevelUpStats()
	{
		this.GetSelectedDialogueCharacter().stats.LevelUpStats();
		this.puzzleActions.UsedFairy();
		MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Song Learned", null);
	}

	// Token: 0x06000645 RID: 1605 RVA: 0x00081E58 File Offset: 0x00080058
	public void TrainSkill1()
	{
		DialogueLua.SetVariable("SelectedParty", this.talkingParty[0].stats.GetName());
		this.TrainSkill(DialogueLua.GetVariable("TrainingEmeralds1").asInt);
	}

	// Token: 0x06000646 RID: 1606 RVA: 0x00081EA0 File Offset: 0x000800A0
	public void TrainSkill2()
	{
		DialogueLua.SetVariable("SelectedParty", this.talkingParty[1].stats.GetName());
		this.TrainSkill(DialogueLua.GetVariable("TrainingEmeralds2").asInt);
	}

	// Token: 0x06000647 RID: 1607 RVA: 0x00081EE8 File Offset: 0x000800E8
	public void TrainSkill3()
	{
		DialogueLua.SetVariable("SelectedParty", this.talkingParty[2].stats.GetName());
		this.TrainSkill(DialogueLua.GetVariable("TrainingEmeralds3").asInt);
	}

	// Token: 0x06000648 RID: 1608 RVA: 0x00081F30 File Offset: 0x00080130
	public void TrainSkill4()
	{
		DialogueLua.SetVariable("SelectedParty", this.talkingParty[3].stats.GetName());
		this.TrainSkill(DialogueLua.GetVariable("TrainingEmeralds4").asInt);
	}

	// Token: 0x06000649 RID: 1609 RVA: 0x00081F78 File Offset: 0x00080178
	public void TrainSkillFree()
	{
		this.party = this.GetSelectedDialogueCharacter();
		string text = "SkillTrained";
		string text2 = "_whips";
		if (this.skillNumber == 0)
		{
			text2 = "_armor";
		}
		if (this.skillNumber == 1)
		{
			text2 = "_armor";
		}
		if (this.skillNumber == 2)
		{
			text2 = "_armor";
		}
		if (this.skillNumber == 3)
		{
			text2 = "_armor";
		}
		if (this.skillNumber == 4)
		{
			text2 = "_swords";
		}
		if (this.skillNumber == 5)
		{
			text2 = "_swords";
		}
		if (this.skillNumber == 6)
		{
			text2 = "_scepter";
		}
		if (this.skillNumber == 7)
		{
			text2 = "_dagers";
		}
		if (this.skillNumber == 8)
		{
			text2 = "_spear";
		}
		if (this.skillNumber == 9)
		{
			text2 = "_dagers";
		}
		if (this.skillNumber == 10)
		{
			text2 = "_blowpipe";
		}
		if (this.skillNumber == 11)
		{
			text2 = "_blowpipe";
		}
		if (this.skillNumber == 12)
		{
			text2 = "_blowpipe";
		}
		if (this.skillNumber == 13)
		{
			text2 = "_axe";
		}
		if (this.skillNumber == 14)
		{
			text2 = "_shields";
		}
		if (this.skillNumber == 15)
		{
			text2 = "_shields";
		}
		if (this.skillNumber == 16)
		{
			text2 = "_divine";
		}
		if (this.skillNumber == 17)
		{
			text2 = "_pagan";
		}
		if (this.skillNumber == 18)
		{
			text2 = "_pagan";
		}
		if (this.skillNumber == 19)
		{
			text2 = "_pagan";
		}
		if (this.skillNumber == 20)
		{
			text2 = "_dagers";
		}
		if (this.skillNumber == 21)
		{
			text2 = "_dagers";
		}
		if (this.skillNumber == 22)
		{
			text2 = "_dagers";
		}
		if (this.skillNumber == 23)
		{
			text2 = "_divine";
		}
		if (this.skillNumber == 24)
		{
			text2 = "_divine";
		}
		if (this.skillNumber == 25)
		{
			text2 = "_divine";
		}
		if (this.skillNumber == 26)
		{
			text2 = "_instrument";
		}
		if (this.skillNumber == 27)
		{
			text2 = "_instrument";
		}
		if (this.skillNumber == 28)
		{
			text2 = "_instrument";
		}
		if (this.skillNumber == 29)
		{
			text2 = "_instrument";
		}
		if (this.skillNumber == 30)
		{
			text2 = "";
		}
		if (this.skillNumber == 31)
		{
			text2 = "";
		}
		if (this.skillNumber == 32)
		{
			text2 = "";
		}
		if (this.skillNumber == 33)
		{
			text2 = "";
		}
		if (this.skillNumber == 34)
		{
			text2 = "";
		}
		if (this.skillNumber == 35)
		{
			text2 = "_whips";
		}
		MasterAudio.PlaySoundAndForget("Feedback", Random.Range(0.6f, 0.9f), new float?(Random.Range(0.8f, 1f)), 0f, text + text2, null);
		this.str.Clear();
		this.str.Append("Increased ");
		this.str.Append(Links.x.manual.DisplayNameFromIndex(this.skillNumber, this.party));
		this.str.Append(" +");
		this.str.Append(3);
		int num = this.talkingParty.IndexOf(this.party);
		if (num == 0)
		{
			this.message1.SetActive(true);
			this.messageImg1.sprite = this.skillTrainingIcon.sprite;
			this.messageImg1.enabled = true;
			this.messageText1.text = this.str.ToString();
		}
		if (num == 1)
		{
			this.message2.SetActive(true);
			this.messageImg1.sprite = this.skillTrainingIcon.sprite;
			this.messageImg1.enabled = true;
			this.messageText2.text = this.str.ToString();
		}
		if (num == 2)
		{
			this.message3.SetActive(true);
			this.messageImg1.sprite = this.skillTrainingIcon.sprite;
			this.messageImg1.enabled = true;
			this.messageText3.text = this.str.ToString();
		}
		if (num == 3)
		{
			this.message4.SetActive(true);
			this.messageImg1.sprite = this.skillTrainingIcon.sprite;
			this.messageImg1.enabled = true;
			this.messageText4.text = this.str.ToString();
		}
		this.messagedOn = 0;
	}

	// Token: 0x0600064A RID: 1610 RVA: 0x000823B0 File Offset: 0x000805B0
	public void TrainSkill(int ems)
	{
		Links.x.inventory.emeralds -= ems;
		string[] array = new string[5];
		array[0] = Links.x.inventory.emeralds.ToString();
		array[1] = " ";
		array[2] = ems.ToString();
		array[3] = " ";
		int num = 4;
		Character character = this.party;
		array[num] = ((character != null) ? character.ToString() : null);
		Debug.Log(string.Concat(array));
		DialogueLua.SetVariable("Emeralds", Links.x.inventory.emeralds);
		if (ems > 0)
		{
			MasterAudio.PlaySoundAndForget("Inventory", 0.6f, new float?(1f), 0f, "Coins", null);
		}
		this.GetSelectedDialogueCharacter().stats.IncreaseSkill(this.skillNumber, 1);
		this.Train(1);
	}

	// Token: 0x0600064B RID: 1611 RVA: 0x00082498 File Offset: 0x00080698
	public void Train(int num)
	{
		this.SetExit();
		this.messagedOn = 0;
		int num2 = 0;
		int num3 = 0;
		int num4 = 0;
		int num5 = 0;
		Character character = this.talkingParty[0];
		string text = Links.x.inventory.emeralds.ToString();
		this.emeraldText.text = text;
		if (character)
		{
			int num6 = (int)character.stats.GetSkill(this.skillNumber);
			num2 = num6 * 2;
			this.message1.SetActive(true);
			this.messageImg1.sprite = this.emeraldsSprite;
			this.messageImg1.enabled = true;
			this.messageText1.text = string.Concat(new string[]
			{
				this.skillTrainingName,
				" ",
				num6.ToString(),
				"\nCost: ",
				num2.ToString(),
				" emeralds"
			});
		}
		Character character2 = this.talkingParty[1];
		if (character2)
		{
			int num7 = (int)character2.stats.GetSkill(this.skillNumber);
			num3 = num7 * 2;
			this.message2.SetActive(true);
			this.messageImg2.sprite = this.emeraldsSprite;
			this.messageImg2.enabled = true;
			this.messageText2.text = string.Concat(new string[]
			{
				this.skillTrainingName,
				" ",
				num7.ToString(),
				"\nCost: ",
				num3.ToString(),
				" emeralds"
			});
		}
		Character character3 = this.talkingParty[2];
		if (character3)
		{
			int num8 = (int)character3.stats.GetSkill(this.skillNumber);
			num4 = num8 * 2;
			this.message3.SetActive(true);
			this.messageImg3.sprite = this.emeraldsSprite;
			this.messageImg3.enabled = true;
			this.messageText3.text = string.Concat(new string[]
			{
				this.skillTrainingName,
				" ",
				num8.ToString(),
				"\nCost: ",
				num4.ToString(),
				" emeralds"
			});
		}
		Character character4 = this.talkingParty[3];
		if (character4)
		{
			int num9 = (int)character4.stats.GetSkill(this.skillNumber);
			num5 = num9 * 2;
			this.message4.SetActive(true);
			this.messageImg4.sprite = this.emeraldsSprite;
			this.messageImg4.enabled = true;
			this.messageText4.text = string.Concat(new string[]
			{
				this.skillTrainingName,
				" ",
				num9.ToString(),
				"\nCost: ",
				num5.ToString(),
				" emeralds"
			});
		}
		DialogueLua.SetVariable("TrainingEmeralds1", num2);
		DialogueLua.SetVariable("TrainingEmeralds2", num3);
		DialogueLua.SetVariable("TrainingEmeralds3", num4);
		DialogueLua.SetVariable("TrainingEmeralds4", num5);
		if (num == 0)
		{
			int asInt = DialogueLua.GetVariable("TrainingNode").asInt;
			DialogueEntry dialogueEntry = DialogueManager.masterDatabase.GetDialogueEntry(DialogueManager.lastConversationID, asInt);
			DialogueManager.conversationController.GotoState(DialogueManager.conversationModel.GetState(dialogueEntry));
		}
	}

	// Token: 0x0600064C RID: 1612 RVA: 0x00082800 File Offset: 0x00080A00
	private void SetTrainingIcon(string n)
	{
		if (n == "Robes")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_armorChain_sprite_square");
			this.skillNumber = 0;
			this.skillTrainingName = "Robes";
		}
		if (n == "Pearl")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_armorChain_sprite_square");
			this.skillNumber = 1;
			this.skillTrainingName = "Pearl";
		}
		if (n == "Crimscale")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_armorChain_sprite_square");
			this.skillNumber = 2;
			this.skillTrainingName = "Crimscale";
		}
		if (n == "Stonewood")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_armorChain_sprite_square");
			this.skillNumber = 3;
			this.skillTrainingName = "Stonewood";
		}
		if (n == "ShortSword")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_shortSword_X_minorevReserve_square");
			this.skillNumber = 4;
			this.skillTrainingName = "Short Sword";
		}
		if (n == "LongSword")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_giantSword_X_minorevReserve_square");
			this.skillNumber = 5;
			this.skillTrainingName = "Long Sword";
		}
		if (n == "Scepter")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_scepterSingle_X_minorevReserve_square");
			this.skillNumber = 6;
			this.skillTrainingName = "Scepter";
		}
		if (n == "Ax")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_ax_X_MinorevReserve_square");
			this.skillNumber = 7;
			this.skillTrainingName = "Ax";
		}
		if (n == "Pole")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_spear_X_minorevReserve_square");
			this.skillNumber = 8;
			this.skillTrainingName = "Pole";
		}
		if (n == "Multi-Hand")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("fist");
			this.skillNumber = 9;
			this.skillTrainingName = "Multi-Hand";
		}
		if (n == "Bow")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_bow_X_minorevReserve_square");
			this.skillNumber = 10;
			this.skillTrainingName = "Bow";
		}
		if (n == "Sling")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_sling_X_MinorevReserve_square");
			this.skillNumber = 11;
			this.skillTrainingName = "Slings";
		}
		if (n == "Elixir")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_elyxerbaglesser_sqaure");
			this.skillNumber = 12;
			this.skillTrainingName = "Elyxir";
		}
		if (n == "Hand-to-Hand")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("fist");
			this.skillNumber = 13;
			this.skillTrainingName = "Unarmed";
		}
		if (n == "LargeShield")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_shield_AME_sprite_square");
			this.skillNumber = 14;
			this.skillTrainingName = "Large Shield";
		}
		if (n == "SmallShield")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_shield_AME_sprite_square");
			this.skillNumber = 15;
			this.skillTrainingName = "Small Shield";
		}
		if (n == "Bindings")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_resource_gem_Moonstone_square");
			this.skillNumber = 16;
			this.skillTrainingName = "Intercessions";
		}
		if (n == "Fauna")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_resource_gemAmeythystPiece_poor_square");
			this.skillNumber = 17;
			this.skillTrainingName = "Fauna";
		}
		if (n == "Vines")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_resource_gemCitrinePiece_poor_square");
			this.skillNumber = 18;
			this.skillTrainingName = "Vines";
		}
		if (n == "Spores")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_resource_gemGarnetPiece_poor_square");
			this.skillNumber = 19;
			this.skillTrainingName = "Spores";
		}
		if (n == "Lockpick")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_puzzle_key_garrison_1_square");
			this.skillNumber = 20;
			this.skillTrainingName = "Lockpicking";
		}
		if (n == "Sneaking")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_Action_Sneak_square");
			this.skillNumber = 21;
			this.skillTrainingName = "Sneaking";
		}
		if (n == "Bartering")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_resource_EmeraldPile_mid_square");
			this.skillNumber = 22;
			this.skillTrainingName = "Bartering";
		}
		if (n == "Fish")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_puzzle_scrolls_empty_square");
			this.skillNumber = 23;
			this.skillTrainingName = "Charm Fish";
		}
		if (n == "Forest")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_puzzle_scrolls_empty_square");
			this.skillNumber = 24;
			this.skillTrainingName = "Charm Forest";
		}
		if (n == "Shroom")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_puzzle_scrolls_empty_square");
			this.skillNumber = 25;
			this.skillTrainingName = "Charm Shroom";
		}
		if (n == "Flute")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_use_flute_wood_square");
			this.skillNumber = 26;
			this.skillTrainingName = "Flute";
		}
		if (n == "Horn")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_use_horn_clay_square");
			this.skillNumber = 27;
			this.skillTrainingName = "Horn";
		}
		if (n == "Pipe")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_use_shephpipes_wood_square");
			this.skillNumber = 29;
			this.skillTrainingName = "Shepard Pipes";
		}
		if (n == "Whip")
		{
			this.skillTrainingIcon.sprite = Links.x.archives.GetItem("item_weapon_FlailWhip_X_minorevReserve_square");
			this.skillNumber = 35;
			this.skillTrainingName = "Whip";
		}
	}

	// Token: 0x0600064D RID: 1613 RVA: 0x00082F66 File Offset: 0x00081166
	public void Animate(string animName)
	{
		this.vignettes.PlayAnimation(animName, true);
	}

	// Token: 0x0600064E RID: 1614 RVA: 0x00082F75 File Offset: 0x00081175
	public void SetFaceAnimation(string animName)
	{
		DialogueLua.SetVariable("FaceAnimation", animName);
	}

	// Token: 0x0600064F RID: 1615 RVA: 0x00082F84 File Offset: 0x00081184
	public void PlayFaceAnimation(string zoomActor)
	{
		Character character = null;
		if (zoomActor == "Party")
		{
			character = this.party;
		}
		else if (zoomActor == "NPC")
		{
			character = this.npc1;
		}
		else if (zoomActor == "NPC2")
		{
			character = this.npc2;
		}
		else if (zoomActor == "NPC3")
		{
			character = this.npc3;
		}
		else if (zoomActor == "NPC4")
		{
			character = this.npc4;
		}
		else if (zoomActor == "NPC5")
		{
			character = this.npc5;
		}
		else if (zoomActor == "Responder")
		{
			character = this.respondCharacter;
		}
		if (character && character.body.headAnim)
		{
			character.body.headAnim.PlayAnimation(DialogueLua.GetVariable("FaceAnimation").asString);
		}
	}

	// Token: 0x06000650 RID: 1616 RVA: 0x0008306A File Offset: 0x0008126A
	public void PlaySmile()
	{
		this.playSmile = true;
	}

	// Token: 0x06000651 RID: 1617 RVA: 0x00083074 File Offset: 0x00081274
	public void PlayAngry()
	{
		if (this.vignettes.body && this.vignettes.body.headAnim)
		{
			this.vignettes.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.LookUp);
		}
	}

	// Token: 0x06000652 RID: 1618 RVA: 0x000830C0 File Offset: 0x000812C0
	public void PlayShock()
	{
		this.playShock = true;
	}

	// Token: 0x06000653 RID: 1619 RVA: 0x000830CC File Offset: 0x000812CC
	public void PlaySad()
	{
		if (this.vignettes.body && this.vignettes.body.headAnim)
		{
			this.vignettes.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.LookDown);
		}
	}

	// Token: 0x06000654 RID: 1620 RVA: 0x00083118 File Offset: 0x00081318
	public void PlayShifty()
	{
		if (this.vignettes.body && this.vignettes.body.headAnim)
		{
			this.vignettes.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.Shifty);
		}
	}

	// Token: 0x06000655 RID: 1621 RVA: 0x00083165 File Offset: 0x00081365
	public void PlayEyeRoll()
	{
		if (this.vignettes && this.vignettes.body.headAnim)
		{
			this.vignettes.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.EyeRoll);
		}
	}

	// Token: 0x06000656 RID: 1622 RVA: 0x000831A2 File Offset: 0x000813A2
	public void SetSmile()
	{
	}

	// Token: 0x06000657 RID: 1623 RVA: 0x000831A4 File Offset: 0x000813A4
	public void SetNone()
	{
		if (this.vignettes.body && this.vignettes.body.headAnim)
		{
			this.vignettes.body.headAnim.PlayAnimation(FaceAnimations.AnimationNames.Blink);
		}
	}

	// Token: 0x06000658 RID: 1624 RVA: 0x000831F0 File Offset: 0x000813F0
	public void SetFrown()
	{
	}

	// Token: 0x06000659 RID: 1625 RVA: 0x000831F2 File Offset: 0x000813F2
	public void SetAngry()
	{
	}

	// Token: 0x0600065A RID: 1626 RVA: 0x000831F4 File Offset: 0x000813F4
	public void SetPlaylist(string x)
	{
		Debug.Log(x);
		Links.x.gaia.SetPlaylist(x, true, 0f);
	}

	// Token: 0x0600065B RID: 1627 RVA: 0x00083212 File Offset: 0x00081412
	public void EndOpeningPavura()
	{
		this.SetSkipKey(false);
	}

	// Token: 0x0600065C RID: 1628 RVA: 0x0008321B File Offset: 0x0008141B
	public void EndScribe()
	{
		this.SetSkipKey(false);
		base.StartCoroutine(this.EndScribeTimed());
	}

	// Token: 0x0600065D RID: 1629 RVA: 0x00083231 File Offset: 0x00081431
	private IEnumerator EndScribeTimed()
	{
		QuestLog.SetQuestState("CharacterCreation", QuestState.Success);
		Links.x.inventory.emeralds = 250;
		Library.Inventory inventory = Links.x.library.GetInvRowFromName("ScribeBoatOrder");
		global::Item item;
		ItemEquipped itemEquipped;
		Links.x.inventory.AddFromGround(null, null, 0, false, 0f, inventory._ID, 1, Vector3.zero, Vector3.zero, new Vector4((float)inventory._DurabilityMax, 0f, 0f, 0f), Links.x.main, false, false, out item, out itemEquipped);
		yield return new WaitForSeconds(0.01f);
		inventory = Links.x.library.GetInvRowFromName("ScribeMapInvimona");
		Links.x.inventory.AddFromGround(null, null, 0, false, 0f, inventory._ID, 1, Vector3.zero, Vector3.zero, new Vector4((float)inventory._DurabilityMax, 0f, 0f, 0f), Links.x.main, false, false, out item, out itemEquipped);
		yield return new WaitForSeconds(0.01f);
		inventory = Links.x.library.GetInvRowFromName("ScribeMapLighthouse");
		Links.x.inventory.AddFromGround(null, null, 0, false, 0f, inventory._ID, 1, Vector3.zero, Vector3.zero, new Vector4((float)inventory._DurabilityMax, 0f, 0f, 0f), Links.x.main, false, false, out item, out itemEquipped);
		this.SetSkipKey(true);
		yield break;
	}

	// Token: 0x0600065E RID: 1630 RVA: 0x00083240 File Offset: 0x00081440
	public void CheckCinematicDialogues(string dialogueFile)
	{
		if (dialogueFile == "FortenLazure/InnFighter")
		{
			bool flag = Links.x.sensory.CheckSneaking(this.npc1, true, null, false, false);
			Character character = Links.x.diorama.FindCharacter("LazureInnFightPatronB");
			bool flag2 = false;
			bool flag3 = false;
			bool flag4 = false;
			this.npc1 = null;
			if (character)
			{
				if (!character.dead && !character.downed && !character.stunned)
				{
					this.npc2 = character;
				}
				if (character.hostility == 2 || character.attackingUntilBribe || character.fleeing)
				{
					this.npc2 = null;
					this.stopDialogue = true;
				}
				character.stats.initiateDialogue = 0;
				flag2 = true;
			}
			if (QuestLog.GetQuestState("C6_GobletGuildThievesB") == QuestState.Unassigned && !flag2)
			{
				flag2 = true;
			}
			character = Links.x.diorama.FindCharacter("LazureInnFightPatronC");
			if (character)
			{
				if (!character.dead && !character.downed && !character.stunned)
				{
					this.npc3 = character;
				}
				if (character.hostility == 2 || character.attackingUntilBribe || character.fleeing)
				{
					this.npc3 = null;
					this.stopDialogue = true;
				}
				character.stats.initiateDialogue = 0;
			}
			if (QuestLog.GetQuestState("C6_GobletGuildThievesC") == QuestState.Unassigned && !flag3)
			{
				flag3 = true;
			}
			character = Links.x.diorama.FindCharacter("LazureInnFightPatronA");
			if (character)
			{
				if (!character.dead && !character.downed && !character.stunned)
				{
					this.npc1 = character;
				}
				if (character.hostility == 2 || character.attackingUntilBribe || character.fleeing)
				{
					this.npc1 = null;
					this.stopDialogue = true;
				}
				character.stats.initiateDialogue = 0;
			}
			if (QuestLog.GetQuestState("C6_GobletGuildThievesA") == QuestState.Unassigned && !flag4)
			{
				flag4 = true;
			}
			if (Records.x.editor)
			{
				string[] array = new string[16];
				array[0] = "Inn fighter dialogue quest: ";
				array[1] = flag.ToString();
				array[2] = " ";
				int num = 3;
				Character character2 = this.npc1;
				array[num] = ((character2 != null) ? character2.ToString() : null);
				array[4] = " ";
				int num2 = 5;
				Character character3 = this.npc2;
				array[num2] = ((character3 != null) ? character3.ToString() : null);
				array[6] = " ";
				int num3 = 7;
				Character character4 = this.npc3;
				array[num3] = ((character4 != null) ? character4.ToString() : null);
				array[8] = " ";
				array[9] = flag4.ToString();
				array[10] = " ";
				array[11] = flag2.ToString();
				array[12] = " ";
				array[13] = flag3.ToString();
				array[14] = " ";
				array[15] = Records.x.combat.ToString();
				Debug.Log(string.Concat(array));
			}
			if (!this.npc3 || !this.npc2 || !this.npc1)
			{
				this.initiateNum = 0;
				if (!this.npc1)
				{
					if (Links.x.gameplay.character)
					{
						this.npc1 = Links.x.gameplay.character;
					}
					if (!this.npc1 && this.npc2)
					{
						this.npc1 = this.npc2;
					}
					if (!this.npc1 && !this.npc2)
					{
						this.npc1 = this.npc3;
					}
					this.npc2 = null;
					this.npc3 = null;
				}
				if (flag)
				{
					this.stopDialogue = true;
				}
			}
			else
			{
				DialogueLua.SetVariable("VignetteAnimController", "Left");
			}
		}
		if (dialogueFile == "WestRuins/Captain")
		{
			this.npc2 = Links.x.GetPortraitID(0);
			this.npc3 = Links.x.GetPortraitID(1);
			this.npc4 = Links.x.GetPortraitID(2);
			this.npc5 = Links.x.GetPortraitID(3);
		}
	}

	// Token: 0x0600065F RID: 1631 RVA: 0x0008361E File Offset: 0x0008181E
	public void BanquetIsleCompanion()
	{
		this.vignettes.BanquetIsleCompanion();
	}

	// Token: 0x06000660 RID: 1632 RVA: 0x0008362B File Offset: 0x0008182B
	public void SetVariableInt(string n, int set)
	{
		DialogueLua.SetVariable(n, set);
	}

	// Token: 0x06000661 RID: 1633 RVA: 0x00083639 File Offset: 0x00081839
	public bool CheckToSwitchCamera(string n)
	{
		return false;
	}

	// Token: 0x06000662 RID: 1634 RVA: 0x0008363C File Offset: 0x0008183C
	public void Peddler(Character quipNPC)
	{
		base.StartCoroutine(this.PeddlerScreen(quipNPC));
	}

	// Token: 0x06000663 RID: 1635 RVA: 0x0008364C File Offset: 0x0008184C
	private IEnumerator PeddlerScreen(Character quipNPC)
	{
		yield return new WaitForSecondsRealtime(0.1f);
		while (quipNPC.turning)
		{
			yield return null;
		}
		Links.x.characterSheet.merchant = true;
		Links.x.characterSheet.blacksmith = false;
		Links.x.characterSheet.pagan = false;
		Links.x.merchant.isBoat = false;
		Links.x.merchant.merchantCharacter = quipNPC;
		Links.x.characterSheet.peddler = quipNPC.stats.xmlName;
		Links.x.merchant.SetUpItems();
		yield return new WaitForSecondsRealtime(0.1f);
		Links.x.characterSheet.StartMenu(false);
		yield break;
	}

	// Token: 0x06000664 RID: 1636 RVA: 0x0008365C File Offset: 0x0008185C
	public void OpenSongStore()
	{
		Links.x.characterSheet.merchant = false;
		Links.x.characterSheet.blacksmith = false;
		Links.x.characterSheet.pagan = false;
		Links.x.characterSheet.minstrel = true;
		Links.x.merchant.isBoat = false;
		Links.x.merchant.merchantCharacter = this.npc1;
		Links.x.characterSheet.peddler = this.npc1.stats.xmlName;
		Links.x.characterSheet.StartMenu(false);
		this.system.StopConversation();
	}

	// Token: 0x06000665 RID: 1637 RVA: 0x00083708 File Offset: 0x00081908
	public string FindQuip(Character quipNPC, string filename)
	{
		this.quipping = true;
		string text = "";
		string text2 = "";
		string sceneName = Links.x.diorama.sceneName;
		string xmlName = quipNPC.stats.xmlName;
		if (sceneName.Contains("C6"))
		{
			if (xmlName == "LazurePatronDuraMessenger")
			{
				text = "I'll not return to Aven Dura without news of the fight, be it victory or defeat.";
			}
			if (xmlName == "LazureBarPatronC")
			{
				text = "It's a long road back to Porta Dun, I should fortify myself.";
			}
			if (xmlName == "LazureBarPatronD")
			{
				text = "Do you think Florina knows my name yet? Best to order another round.";
			}
			if (xmlName == "LazureBarPatronE")
			{
				text = "Did you see the mercenary army? From the Staglands, I hear. The Pavura will surely prevail with such a force.";
			}
			if (xmlName == "LazurePeddler")
			{
				text = "";
				base.StartCoroutine(this.PeddlerScreen(quipNPC));
			}
			if (xmlName == "LazureShipwright")
			{
				text = "Speak with Mihal Scrith-sil if you desire a boat. I've none to give.";
			}
			if (xmlName == "LazureMushroomFarmerB")
			{
				text = "Think you that Renazin sappers might reach this cavern? My ears strain to hear scrapes and shovels.";
			}
			if (xmlName == "LazureBoroHerder")
			{
				text = "You can pet the boro if you wish.";
			}
			if (xmlName == "LazureWeaponMerchant")
			{
				text = "A strong guard needs a strong weapon! Minorev's standard issue bronze.";
			}
			if (xmlName == "LazureElixirMerchant")
			{
				text = "You'll not find a better-crafted globe than these, not from here to Porta Dun.";
			}
			if (xmlName == "LazureMusicMerchant")
			{
				text = "The finest instruments, straight from the amethyst halls of Stran Sura!";
			}
			if (xmlName == "LazureArmorMerchant")
			{
				text = "Topa-din! My customers always return in one piece!";
			}
			if (xmlName == "LazureCharmMerchant")
			{
				text = "Charm bells here, hand crafted for a smooth bond!";
			}
			if (xmlName == "LazureFletcher")
			{
				text = "Get your suplies for the road! New arrows in stock!";
			}
			if (xmlName == "LazureGuardDayGateA")
			{
				text = "The forest encroaches and the beasts grow bold. We will look for your return.";
			}
			if (xmlName == "LazureGuardNightGateB")
			{
				text = "Dark this hour, dark this cursed frontier.";
			}
			if (xmlName == "LazureMihalson")
			{
				text = "Topa-din! I watch for ships on the horizon.";
			}
			if (xmlName == "LazureChildB")
			{
				text = "I'm not to return without a bag of shells.";
			}
			if (xmlName == "DryadD")
			{
				text = "Vol grows stronger.";
			}
			if (xmlName == "DryadE")
			{
				text = "This is not your home.";
			}
			if (xmlName == "DryadF")
			{
				text = "You frighten the little ones.";
			}
			if (xmlName == "DryadG")
			{
				text = "Your body wrappings are soft.";
			}
			if (xmlName == "DryadH")
			{
				text = "Vol waits for her.";
			}
			if (xmlName == "DryadJ")
			{
				text = "The others beyond the mountain, can you feel it?";
			}
		}
		if (sceneName.Contains("F4") && xmlName == "LachoPriestStart")
		{
			text = "I cannot resist him!";
		}
		if (sceneName.Contains("C5"))
		{
			if (xmlName == "DuraCampGuardA")
			{
				text = "We are glad to have your strength among us.";
			}
			if (xmlName == "DuraCampGuardC")
			{
				text = "Together we will keep this camp safe.";
			}
			if (xmlName == "DuraCampGuardD")
			{
				text = "How now, friend? We will look for your return.";
			}
			if (xmlName == "DuraCampGuardB")
			{
				text = "Green everywhere I look. The Pavura is lucky to have a rain spirit so near.";
			}
			if (xmlName == "DuraCampGeneralMerchant")
			{
				text = "Your business is a brightness in this ill-made venture.";
			}
			if (xmlName == "DuraCampWoman")
			{
				text = "I wish we would linger no more.";
			}
			if (xmlName == "DuraCampPeddler")
			{
				text = "Unburden yourself of unwanted goods, and I'll fill your purse fresh and full!";
				base.StartCoroutine(this.PeddlerScreen(quipNPC));
			}
		}
		if (sceneName.Contains("D5"))
		{
			if (xmlName == "WestRuinsDura1")
			{
				text = "At least that Grave Keeper was slain ere we arrived, I'd not wish to meet one in battle.";
			}
			if (xmlName == "WestRuinsDura2")
			{
				text = "This venture has been ill-fated, but I am relieved to have a respite from wolf patrols.";
			}
			if (xmlName == "WestRuinsHostage1")
			{
				text = "To have been captured is a shame, I beg you to tell none that need not know.";
			}
			if (xmlName == "WestRuinsHostage2")
			{
				text = "May Vol twist the legs and arms of all robbers like his tangled Bittersweet vines 'til they beg for death!";
			}
			if (xmlName == "WestRuinsHostage3")
			{
				text = "This slight to House Dura will not go unavenged!";
			}
		}
		if (sceneName.Contains("D6"))
		{
			if (xmlName == "RenazinInformantFarmer")
			{
				text = "All quiet in Rozafir.";
			}
			if (xmlName == "RozafirDolkiA")
			{
				text = "Hisssss!";
			}
			if (xmlName == "RozafirDolkiB")
			{
				text = "Hissssssss";
			}
			if (xmlName == "RozafirDolkiC")
			{
				text = "Hisssss";
			}
			if (xmlName == "RozafirDolkiD")
			{
				text = "Hiss!";
			}
			if (xmlName == "RozafirDolkiE")
			{
				text = "Hisssssssssss";
			}
			if (xmlName == "RozafirDolkiF")
			{
				text = "Hisss!";
			}
			if (xmlName == "RozafirPatrolDay")
			{
				text = "Good to have you at Rozafir, we could use your strength.";
			}
			if (xmlName == "RozafirPatrolNight")
			{
				text = "So many wandering around at night, hard to keep track of everyone.";
			}
			if (xmlName == "RozafirNewStorekeep")
			{
				text = "Only the best for the guards of Lazure.";
			}
			if (xmlName == "RozafirAboveMerchantA")
			{
				text = "My wares are yours, but for an emerald or three.";
			}
			if (xmlName == "RozafirAboveMerchantB")
			{
				text = "Hands to yourself, please you.";
			}
			if (xmlName == "RozafirBarkeep")
			{
				text = "My mulled mead is your best friend on a patrol.";
			}
			if (xmlName == "RozafirBoroHerder")
			{
				text = "I would be willing to trade boro if your needs a rest.";
			}
			if (xmlName == "RozafirUndergroundMerchant")
			{
				if (QuestLog.GetQuestState("D6_Fence") == QuestState.Unassigned)
				{
					text = "I'll suffer no thieves.";
				}
				else
				{
					text = "Let's do business";
					base.StartCoroutine(this.PeddlerScreen(quipNPC));
				}
			}
			if (xmlName == "RozafirPeddler")
			{
				text = "";
				base.StartCoroutine(this.PeddlerScreen(quipNPC));
			}
			if (xmlName == "RozafirCook")
			{
				text = "The guard is always welcome to share our food.";
			}
			if (xmlName == "RozafirCookDownstairs")
			{
				text = "We are grateful for your protection.";
			}
			if (xmlName == "RozafirCookApprentice")
			{
				text = "I do not wish to be in your way.";
			}
			if (xmlName == "RozafirFarmerA")
			{
				text = "Please step lightly about the crops.";
			}
			if (xmlName == "RozafirFarmerB")
			{
				text = "The Pavura will be pleased with the harvest this year.";
			}
			if (xmlName == "RozafirFarmerJ")
			{
				text = "I would wish for more dew, but the peppura is hardy.";
			}
			if (xmlName == "RozafirFarmerC")
			{
				text = "Too much sunlight up above. Better to stay down here if you ask me.";
			}
			if (xmlName == "RozafirFarmerD")
			{
				text = "Not much longer 'til harvest.";
			}
			if (xmlName == "RozafirFarmerE")
			{
				text = "The reeve is in her quarters, if you seek her.";
			}
			if (xmlName == "RozafirFarmerF")
			{
				text = "Topa-din, guard.";
			}
			if (xmlName == "RozafirFarmerG")
			{
				text = "Step lightly 'round the peppura.";
			}
			if (xmlName == "RozafirFarmerH")
			{
				text = "Good to see another guard about, too few as it is.";
			}
			if (xmlName == "RozafirFarmerI")
			{
				text = "Step lightly 'round the peppura.";
			}
			if (xmlName == "RozafirFarmerK")
			{
				text = "More tillers would be welcome, if the Pavura asks.";
			}
			if (xmlName == "RozafirFarmerL")
			{
				text = "Good looking crop this year.";
			}
			if (xmlName == "RozafirFarmerM")
			{
				text = "Glad to see another guard patrolling. I fear to leave the hold.";
			}
			if (xmlName == "RozafirChildA")
			{
				text = "Topa-din!";
			}
			if (xmlName == "RozafirChildB")
			{
				text = "Don't step on the peppura!";
			}
			if (xmlName == "RozafirChildC")
			{
				text = "Wish we could have a holiday.";
			}
			if (xmlName == "RozafirStoreKeep")
			{
				text = "Welcome to Cristian's Fine Goods!";
			}
			if (xmlName == "RozafirStoreGuardA")
			{
				text = "Hands to yourself.";
			}
			if (xmlName == "RozafirStoreGuardB")
			{
				text = "Touch only what you mean to buy.";
			}
			if (xmlName == "RozafirFarmerN")
			{
				text = "Music is good today.";
			}
			if (xmlName == "RozafirFarmerO")
			{
				text = "Nothing like Vali's gin after tending the peppura.";
			}
			if (xmlName == "RozafirFarmerP")
			{
				text = "Topa-din, guard.";
			}
			if (xmlName == "RozafirFarmerQ")
			{
				text = "Mayhap you should visit the baths?";
			}
			if (xmlName == "RozafirFarmerB")
			{
				text = "Sela's glow is too harsh, I fear. I will return to Minorev after the harvest.";
			}
			if (xmlName == "RozafirFarmerS")
			{
				text = "We are grateful for your protection.";
			}
			if (xmlName == "RozafirFarmerT")
			{
				text = "Glad to see more guards about.";
			}
			if (xmlName == "RozafirFarmerU")
			{
				text = "Do you hear music, faintly?";
			}
			if (xmlName == "RozafirFarmerV")
			{
				text = "Regards to the Forten.";
			}
			if (xmlName == "RozafirWorkerD")
			{
				text = "Aven Dura might have more trappings of luxury, but the Rozafir underkeep is truly a hidden gem.";
			}
			if (xmlName == "RozafirWorkerE")
			{
				text = "I pray the great mushroom keeps the shroomers away, that the dancers might never stop.";
			}
			if (xmlName == "RozafirWorkerC")
			{
				text = "Thirsty work, tending peppura.";
			}
			if (xmlName == "RozafirWorkerB")
			{
				text = "What ho, guard?";
			}
			if (xmlName == "RozafirFarmerR")
			{
				text = "The cook is wroth with me, for I have eaten every last velvet browncap.";
			}
			if (xmlName == "RozafirWorkerA")
			{
				text = "This will be a great harvest, for Sela has blessed us with a gentle summer.";
			}
			if (xmlName == "RozafirWorkerF")
			{
				text = "A long soak followed by gin and good company is all I need.";
			}
			if (xmlName == "RozafirChildD")
			{
				text = "I fear the crop goblins.";
			}
			if (xmlName == "RozafirChildF")
			{
				text = "I wish to be a guard like you.";
			}
			if (xmlName == "RozafirChildE")
			{
				text = "Don't stand on the vegetables!";
			}
		}
		if (sceneName.Contains("E6"))
		{
			if (xmlName == "FallsBanditB")
			{
				text = "I fear the crop goblins and their pet shroomers!";
			}
			if (xmlName == "FallsFarmerB")
			{
				text = "What ho, guards! Safe travels to you.";
			}
			if (xmlName == "FallsGuard")
			{
				text = "Beware the sand foxes, for I killed their pack leader and they've gone mad.";
			}
			if (xmlName.Contains("Dolki"))
			{
				int num = Random.Range(0, 6);
				if (num == 0)
				{
					text = "Hisssss!";
				}
				if (num == 1)
				{
					text = "Hissssssss";
				}
				if (num == 2)
				{
					text = "Hisssss";
				}
				if (num == 3)
				{
					text = "Hiss!";
				}
				if (num == 4)
				{
					text = "Hisssssssssss";
				}
				if (num == 5)
				{
					text = "Hisss!";
				}
			}
		}
		if (filename.Contains("Party/ExileIsland"))
		{
			text = "We should report this criminal, and quickly, before they awaken.";
		}
		if (filename.Contains("Party/Camping Attack"))
		{
			text = "Beasts in the camp! Wake up, make haste!";
		}
		if (filename.Contains("Party/ChalkRubbing"))
		{
			if (this.PartyHasItem("ChalkRubbingKit", 1.0))
			{
				text = "I'll need a chalk rubbing kit to record this.";
			}
			else
			{
				this.StartPuzzle();
			}
		}
		if (text != "" && text2 == "")
		{
			if (this.quipCoroutine != null)
			{
				base.StopCoroutine(this.quipCoroutine);
				this.quipCoroutine = null;
			}
			this.quipCoroutine = this.Quipping(quipNPC, text);
			base.StartCoroutine(this.quipCoroutine);
			return "";
		}
		this.quipping = false;
		return text2;
	}

	// Token: 0x06000666 RID: 1638 RVA: 0x0008401F File Offset: 0x0008221F
	private IEnumerator Quipping(Character quipNPC, string x)
	{
		Links.x.itemPickupFX.gameObject.SetActive(true);
		Links.x.itemPickupFX.gameObject.GetComponent<HannahAnimator>().Play("Idle");
		Vector3 position = quipNPC.body.GetHead().position;
		Vector3 vector = Links.x.worldCamera.WorldToScreenPoint(position);
		vector.z = 0f;
		vector.x = vector.x * (1920f / (float)Screen.width) - 960f;
		vector.y = vector.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
		Links.x.itemPickupFX.localPosition = vector;
		MasterAudio.PlaySoundAndForget("Feedback", Random.Range(0.5f, 0.7f), new float?(1f), 0f, "StartDialogue", null);
		if (!quipNPC.resting)
		{
			quipNPC.SetRotation(Quaternion.LookRotation(Links.x.main.tr.position - quipNPC.tr.position), false, false);
		}
		Links.x.main.TargetReached();
		while (Links.x.main.moving)
		{
			yield return null;
		}
		Links.x.fellowship.SetPartyRotation(quipNPC.tr.position);
		Links.x.main.alwaysTurn = true;
		Links.x.main.SetRotation(Quaternion.LookRotation(quipNPC.tr.position - Links.x.main.tr.position), false, false);
		yield return new WaitForSeconds(0.02f);
		while (Links.x.main.turning || quipNPC.turning)
		{
			yield return null;
		}
		if (!quipNPC.resting)
		{
			quipNPC.PlayAnimation("Talk_1", 0f);
		}
		Links.x.hudControl.AddRemoveInteraction(false, quipNPC, null, null, null, null, null, null);
		quipNPC.StartQuip(x);
		this.quipCoroutine = null;
		this.quipping = false;
		yield break;
	}

	// Token: 0x06000667 RID: 1639 RVA: 0x0008403C File Offset: 0x0008223C
	private Character FindArchetype(string type, out bool canFindRandom, out bool useBackUpText, out bool setArchetypeFail)
	{
		if (type == "")
		{
			type = "Any";
		}
		if (type == null)
		{
			type = "Any";
		}
		canFindRandom = true;
		useBackUpText = false;
		setArchetypeFail = false;
		if (type == "Fighter")
		{
			Character character = null;
			float num = -1f;
			for (int i = 0; i < this.talkingParty.Count; i++)
			{
				if (!this.foundParty.Contains(this.talkingParty[i]))
				{
					int num3;
					float num2 = this.talkingParty[i].stats.Stat("Strength", true, out num3);
					if (num2 > num)
					{
						character = this.talkingParty[i];
						num = num2;
					}
				}
			}
			return character;
		}
		if (type == "LowArmor")
		{
			Character character2 = null;
			float num4 = 100000f;
			for (int j = 0; j < this.talkingParty.Count; j++)
			{
				if (!this.foundParty.Contains(this.talkingParty[j]))
				{
					float skill = this.talkingParty[j].stats.GetSkill(0);
					float skill2 = this.talkingParty[j].stats.GetSkill(1);
					float skill3 = this.talkingParty[j].stats.GetSkill(2);
					float skill4 = this.talkingParty[j].stats.GetSkill(3);
					float num5 = skill;
					if (skill2 > num5)
					{
						num5 = skill2;
					}
					if (skill3 > num5)
					{
						num5 = skill3;
					}
					if (skill4 > num5)
					{
						num5 = skill4;
					}
					string[] array = new string[13];
					int num6 = 0;
					Character character3 = this.talkingParty[j];
					array[num6] = ((character3 != null) ? character3.ToString() : null);
					array[1] = " ";
					array[2] = skill.ToString();
					array[3] = " ";
					array[4] = skill2.ToString();
					array[5] = " ";
					array[6] = skill3.ToString();
					array[7] = " ";
					array[8] = skill4.ToString();
					array[9] = " ";
					array[10] = num5.ToString();
					array[11] = " ";
					array[12] = num4.ToString();
					Debug.Log(string.Concat(array));
					if (num5 < num4)
					{
						character2 = this.talkingParty[j];
						num4 = num5;
					}
				}
			}
			return character2;
		}
		if (type == "LowArmorCap")
		{
			Character character4 = null;
			float num7 = 50f;
			for (int k = 0; k < this.talkingParty.Count; k++)
			{
				if (!this.foundParty.Contains(this.talkingParty[k]))
				{
					float skill5 = this.talkingParty[k].stats.GetSkill(0);
					float skill6 = this.talkingParty[k].stats.GetSkill(1);
					float skill7 = this.talkingParty[k].stats.GetSkill(2);
					float skill8 = this.talkingParty[k].stats.GetSkill(3);
					float num8 = skill5;
					if (skill6 > num8)
					{
						num8 = skill6;
					}
					if (skill7 > num8)
					{
						num8 = skill7;
					}
					if (skill8 > num8)
					{
						num8 = skill8;
					}
					if (num8 < num7)
					{
						character4 = this.talkingParty[k];
						num7 = num8;
					}
				}
			}
			if (!character4)
			{
				setArchetypeFail = true;
			}
			return character4;
		}
		if (type == "HighArmor")
		{
			Character character5 = null;
			float num9 = 0f;
			for (int l = 0; l < this.talkingParty.Count; l++)
			{
				if (!this.foundParty.Contains(this.talkingParty[l]))
				{
					float skill9 = this.talkingParty[l].stats.GetSkill(0);
					float skill10 = this.talkingParty[l].stats.GetSkill(1);
					float skill11 = this.talkingParty[l].stats.GetSkill(2);
					float skill12 = this.talkingParty[l].stats.GetSkill(3);
					float num10 = skill9;
					if (skill10 > num10)
					{
						num10 = skill10;
					}
					if (skill11 > num10)
					{
						num10 = skill11;
					}
					if (skill12 > num10)
					{
						num10 = skill12;
					}
					if (num10 > num9)
					{
						character5 = this.talkingParty[l];
						num9 = num10;
					}
				}
			}
			return character5;
		}
		if (type == "Musician")
		{
			Character character6 = null;
			float num11 = 0f;
			for (int m = 0; m < this.talkingParty.Count; m++)
			{
				if (!this.foundParty.Contains(this.talkingParty[m]))
				{
					float skill13 = this.talkingParty[m].stats.GetSkill(26);
					float skill14 = this.talkingParty[m].stats.GetSkill(27);
					float skill15 = this.talkingParty[m].stats.GetSkill(28);
					float skill16 = this.talkingParty[m].stats.GetSkill(29);
					float num12 = skill13;
					if (skill14 > num12)
					{
						num12 = skill14;
					}
					if (skill15 > num12)
					{
						num12 = skill15;
					}
					if (skill16 > num12)
					{
						num12 = skill16;
					}
					if (num12 > num11)
					{
						character6 = this.talkingParty[m];
						num11 = num12;
					}
				}
			}
			return character6;
		}
		if (type == "LowMusic")
		{
			Character character7 = null;
			float num13 = 10000f;
			for (int n = 0; n < this.talkingParty.Count; n++)
			{
				if (!this.foundParty.Contains(this.talkingParty[n]))
				{
					float skill17 = this.talkingParty[n].stats.GetSkill(26);
					float skill18 = this.talkingParty[n].stats.GetSkill(27);
					float skill19 = this.talkingParty[n].stats.GetSkill(28);
					float skill20 = this.talkingParty[n].stats.GetSkill(29);
					float num14 = skill17;
					if (skill18 > num14)
					{
						num14 = skill18;
					}
					if (skill19 > num14)
					{
						num14 = skill19;
					}
					if (skill20 > num14)
					{
						num14 = skill20;
					}
					if (num14 < num13)
					{
						character7 = this.talkingParty[n];
						num13 = num14;
					}
				}
			}
			return character7;
		}
		if (type == "Divine")
		{
			Character character8 = null;
			float num15 = 0f;
			for (int num16 = 0; num16 < this.talkingParty.Count; num16++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num16]))
				{
					float skill21 = this.talkingParty[num16].stats.GetSkill(16);
					if (skill21 > num15)
					{
						character8 = this.talkingParty[num16];
						num15 = skill21;
					}
				}
			}
			return character8;
		}
		if (type == "Pagan" || type == "Aura" || type == "Sensory" || type == "Dexterity" || type == "Agility" || type == "Strength")
		{
			Character character9 = null;
			float num17 = -1f;
			for (int num18 = 0; num18 < this.talkingParty.Count; num18++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num18]))
				{
					int num20;
					float num19 = this.talkingParty[num18].stats.Stat(type, true, out num20);
					if (num19 > num17)
					{
						character9 = this.talkingParty[num18];
						num17 = num19;
					}
				}
			}
			return character9;
		}
		if (type == "SensoryCheck")
		{
			canFindRandom = false;
			Character character10 = null;
			float num21 = 25f;
			for (int num22 = 0; num22 < this.talkingParty.Count; num22++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num22]))
				{
					int num24;
					float num23 = this.talkingParty[num22].stats.Stat("Sensory", true, out num24);
					if (num23 > num21)
					{
						character10 = this.talkingParty[num22];
						num21 = num23;
					}
				}
			}
			return character10;
		}
		if (type == "AuraCap")
		{
			useBackUpText = true;
			Character character11 = null;
			float num25 = 25f;
			for (int num26 = 0; num26 < this.talkingParty.Count; num26++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num26]))
				{
					int num28;
					float num27 = this.talkingParty[num26].stats.Stat("Aura", true, out num28);
					if (num27 > num25)
					{
						character11 = this.talkingParty[num26];
						num25 = num27;
					}
				}
			}
			return character11;
		}
		if (type == "Cautious")
		{
			Character character12 = null;
			float num29 = -1f;
			for (int num30 = 0; num30 < this.talkingParty.Count; num30++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num30]))
				{
					int num32;
					float num31 = this.talkingParty[num30].stats.Stat("Aura", true, out num32);
					if (num31 > num29)
					{
						character12 = this.talkingParty[num30];
						num29 = num31;
					}
				}
			}
			return character12;
		}
		if (type == "LowAura")
		{
			Character character13 = null;
			float num33 = 100f;
			for (int num34 = 0; num34 < this.talkingParty.Count; num34++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num34]))
				{
					int num36;
					float num35 = this.talkingParty[num34].stats.Stat("Aura", true, out num36);
					if (num35 < num33)
					{
						character13 = this.talkingParty[num34];
						num33 = num35;
					}
				}
			}
			return character13;
		}
		if (type == "Rogue")
		{
			Character character14 = null;
			float num37 = 0f;
			for (int num38 = 0; num38 < this.talkingParty.Count; num38++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num38]))
				{
					float skill22 = this.talkingParty[num38].stats.GetSkill(20);
					float skill23 = this.talkingParty[num38].stats.GetSkill(21);
					float skill24 = this.talkingParty[num38].stats.GetSkill(22);
					float num39 = skill22;
					if (skill23 > num39)
					{
						num39 = skill23;
					}
					if (skill24 > num39)
					{
						num39 = skill24;
					}
					if (num39 > num37)
					{
						character14 = this.talkingParty[num38];
						num37 = num39;
					}
				}
			}
			return character14;
		}
		if (type == "NoCharm")
		{
			Character character15 = null;
			float num40 = 200f;
			for (int num41 = 0; num41 < this.talkingParty.Count; num41++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num41]))
				{
					int num43;
					int num44;
					float num42 = this.talkingParty[num41].stats.Stat("Sensory", true, out num43) + this.talkingParty[num41].stats.Stat("Agility", true, out num44);
					if (num42 < num40)
					{
						character15 = this.talkingParty[num41];
						num40 = num42;
					}
				}
			}
			return character15;
		}
		if (type == "LowDivine")
		{
			Character character16 = null;
			float num45 = 400f;
			for (int num46 = 0; num46 < this.talkingParty.Count; num46++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num46]))
				{
					float skill25 = this.talkingParty[num46].stats.GetSkill(16);
					if (skill25 < num45)
					{
						character16 = this.talkingParty[num46];
						num45 = skill25;
					}
				}
			}
			return character16;
		}
		if (type == "FluteCheck")
		{
			canFindRandom = false;
			Character character17 = null;
			float num47 = 55f;
			for (int num48 = 0; num48 < this.talkingParty.Count; num48++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num48]))
				{
					float skill26 = this.talkingParty[num48].stats.GetSkill(26);
					if (skill26 > num47)
					{
						character17 = this.talkingParty[num48];
						num47 = skill26;
					}
				}
			}
			return character17;
		}
		if (type == "MusicCheck")
		{
			canFindRandom = false;
			Character character18 = null;
			float num49 = 50f;
			for (int num50 = 0; num50 < this.talkingParty.Count; num50++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num50]))
				{
					float skill27 = this.talkingParty[num50].stats.GetSkill(26);
					float skill28 = this.talkingParty[num50].stats.GetSkill(27);
					float skill29 = this.talkingParty[num50].stats.GetSkill(29);
					if (skill27 > num49 || skill28 > num49 || skill29 > num49)
					{
						character18 = this.talkingParty[num50];
						num49 = skill27;
						if (skill28 > num49)
						{
							num49 = skill28;
						}
						if (skill29 > num49)
						{
							num49 = skill29;
						}
					}
				}
			}
			return character18;
		}
		if (type == "Repulsive")
		{
			canFindRandom = false;
			Character character19 = null;
			float num51 = 12f;
			for (int num52 = 0; num52 < this.talkingParty.Count; num52++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num52]))
				{
					int num54;
					float num53 = this.talkingParty[num52].stats.Stat("Sensory", true, out num54);
					if (num53 < num51)
					{
						character19 = this.talkingParty[num52];
						num51 = num53;
					}
				}
			}
			return character19;
		}
		if (type == "DivineCheck")
		{
			canFindRandom = false;
			Character character20 = null;
			float num55 = 55f;
			for (int num56 = 0; num56 < this.talkingParty.Count; num56++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num56]))
				{
					float skill30 = this.talkingParty[num56].stats.GetSkill(16);
					if (skill30 > num55)
					{
						character20 = this.talkingParty[num56];
						num55 = skill30;
					}
				}
			}
			return character20;
		}
		if (type == "HighDivine")
		{
			canFindRandom = false;
			Character character21 = null;
			float num57 = 0f;
			for (int num58 = 0; num58 < this.talkingParty.Count; num58++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num58]))
				{
					float skill31 = this.talkingParty[num58].stats.GetSkill(16);
					if (skill31 > num57)
					{
						character21 = this.talkingParty[num58];
						num57 = skill31;
					}
				}
			}
			return character21;
		}
		if (type == "HighDivineCheckIfAllSame")
		{
			canFindRandom = false;
			bool flag = true;
			float skill32 = this.talkingParty[0].stats.GetSkill(16);
			for (int num59 = 1; num59 < this.talkingParty.Count; num59++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num59]) && this.talkingParty[num59].stats.GetSkill(16) != skill32)
				{
					flag = false;
				}
			}
			Character character22 = null;
			float num60 = 0f;
			for (int num61 = 0; num61 < this.talkingParty.Count; num61++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num61]))
				{
					float skill33 = this.talkingParty[num61].stats.GetSkill(16);
					if (skill33 > num60 && (!flag || num61 != 0))
					{
						character22 = this.talkingParty[num61];
						num60 = skill33;
					}
				}
			}
			return character22;
		}
		if (type == "Dealmaker")
		{
			canFindRandom = false;
			Character character23 = null;
			float num62 = 55f;
			for (int num63 = 0; num63 < this.talkingParty.Count; num63++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num63]))
				{
					float skill34 = this.talkingParty[num63].stats.GetSkill(22);
					if (skill34 > num62)
					{
						character23 = this.talkingParty[num63];
						num62 = skill34;
					}
				}
			}
			return character23;
		}
		if (type == "Honorable")
		{
			Character character24 = null;
			float num64 = 0f;
			for (int num65 = 0; num65 < this.talkingParty.Count; num65++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num65]))
				{
					int num67;
					int num68;
					float num66 = this.talkingParty[num65].stats.Stat("Strength", true, out num67) + this.talkingParty[num65].stats.Stat("Aura", true, out num68);
					if (num66 > num64)
					{
						character24 = this.talkingParty[num65];
						num64 = num66;
					}
				}
			}
			return character24;
		}
		if (type == "LowFatigue")
		{
			Character character25 = null;
			float num69 = float.PositiveInfinity;
			for (int num70 = 0; num70 < this.talkingParty.Count; num70++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num70]))
				{
					float num71 = (float)this.talkingParty[num70].stats.HealthCurrent();
					if (num71 < num69)
					{
						character25 = this.talkingParty[num70];
						num69 = num71;
					}
				}
			}
			return character25;
		}
		if (type == "Bloodthirsty")
		{
			Character character26 = null;
			float num72 = 0f;
			for (int num73 = 0; num73 < this.talkingParty.Count; num73++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num73]))
				{
					float num74 = (float)this.talkingParty[num73].stats.killCount;
					if (num74 > num72)
					{
						character26 = this.talkingParty[num73];
						num72 = num74;
					}
				}
			}
			return character26;
		}
		if (type == "Pacifist")
		{
			Character character27 = null;
			float num75 = float.PositiveInfinity;
			for (int num76 = 0; num76 < this.talkingParty.Count; num76++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num76]))
				{
					float num77 = (float)this.talkingParty[num76].stats.killCount;
					if (num77 < num75)
					{
						character27 = this.talkingParty[num76];
						num75 = num77;
					}
				}
			}
			return character27;
		}
		if (type == "Brave")
		{
			Character character28 = null;
			float num78 = 10f;
			for (int num79 = 0; num79 < this.talkingParty.Count; num79++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num79]))
				{
					float num80 = (float)this.talkingParty[num79].stats.formationGroup;
					if (num80 < num78)
					{
						character28 = this.talkingParty[num79];
						num78 = num80;
					}
				}
			}
			return character28;
		}
		if (type == "Scared")
		{
			Character character29 = null;
			float num81 = 0f;
			for (int num82 = 0; num82 < this.talkingParty.Count; num82++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num82]))
				{
					float num83 = (float)this.talkingParty[num82].stats.formationGroup;
					if (num83 > num81)
					{
						character29 = this.talkingParty[num82];
						num81 = num83;
					}
				}
			}
			return character29;
		}
		if (type == "Stealth")
		{
			Character character30 = null;
			float num84 = 0f;
			for (int num85 = 0; num85 < this.talkingParty.Count; num85++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num85]))
				{
					float skill35 = this.talkingParty[num85].stats.GetSkill(21);
					if (skill35 > num84)
					{
						character30 = this.talkingParty[num85];
						num84 = skill35;
					}
				}
			}
			return character30;
		}
		if (type == "Female")
		{
			Character character31 = null;
			float num86 = 1f;
			for (int num87 = 0; num87 < this.talkingParty.Count; num87++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num87]))
				{
					float sex = this.talkingParty[num87].stats.sex;
					if (sex < num86)
					{
						character31 = this.talkingParty[num87];
						num86 = sex;
					}
				}
			}
			return character31;
		}
		if (type == "Barterer")
		{
			Character character32 = null;
			float num88 = 0f;
			for (int num89 = 0; num89 < this.talkingParty.Count; num89++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num89]))
				{
					float skill36 = this.talkingParty[num89].stats.GetSkill(22);
					if (skill36 > num88)
					{
						character32 = this.talkingParty[num89];
						num88 = skill36;
					}
				}
			}
			return character32;
		}
		if (type == "Flute")
		{
			Character character33 = null;
			float num90 = 0f;
			for (int num91 = 0; num91 < this.talkingParty.Count; num91++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num91]))
				{
					float skill37 = this.talkingParty[num91].stats.GetSkill(26);
					if (skill37 > num90)
					{
						character33 = this.talkingParty[num91];
						num90 = skill37;
					}
				}
			}
			return character33;
		}
		if (type == "Divine")
		{
			Character character34 = null;
			float num92 = 0f;
			for (int num93 = 0; num93 < this.talkingParty.Count; num93++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num93]))
				{
					float skill38 = this.talkingParty[num93].stats.GetSkill(16);
					if (skill38 > num92)
					{
						character34 = this.talkingParty[num93];
						num92 = skill38;
					}
				}
			}
			return character34;
		}
		if (type == "PaganSpellbook")
		{
			canFindRandom = false;
			Character character35 = null;
			float num94 = 50f;
			for (int num95 = 0; num95 < this.talkingParty.Count; num95++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num95]))
				{
					float skill39 = this.talkingParty[num95].stats.GetSkill(17);
					float skill40 = this.talkingParty[num95].stats.GetSkill(18);
					float skill41 = this.talkingParty[num95].stats.GetSkill(19);
					float num96 = skill39;
					if (skill40 > num96)
					{
						num96 = skill40;
					}
					if (skill41 > num96)
					{
						num96 = skill41;
					}
					if (num96 > num94 && !this.CharacterNeedsSpellbook((double)(num95 + 1)))
					{
						character35 = this.talkingParty[num95];
						num94 = num96;
					}
				}
			}
			return character35;
		}
		if (type == "LowPaganNeedsBook")
		{
			canFindRandom = false;
			Character character36 = null;
			float num97 = 50f;
			for (int num98 = 0; num98 < this.talkingParty.Count; num98++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num98]))
				{
					float skill42 = this.talkingParty[num98].stats.GetSkill(17);
					float skill43 = this.talkingParty[num98].stats.GetSkill(18);
					float skill44 = this.talkingParty[num98].stats.GetSkill(19);
					float num99 = skill42;
					if (skill43 > num99)
					{
						num99 = skill43;
					}
					if (skill44 > num99)
					{
						num99 = skill44;
					}
					if (num99 < num97 && this.CharacterNeedsSpellbook((double)(num98 + 1)))
					{
						character36 = this.talkingParty[num98];
						num97 = num99;
					}
				}
			}
			return character36;
		}
		if (type == "LowestPagan")
		{
			canFindRandom = false;
			Character character37 = null;
			float num100 = 1000f;
			for (int num101 = 0; num101 < this.talkingParty.Count; num101++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num101]))
				{
					float skill45 = this.talkingParty[num101].stats.GetSkill(17);
					float skill46 = this.talkingParty[num101].stats.GetSkill(18);
					float skill47 = this.talkingParty[num101].stats.GetSkill(19);
					float num102 = skill45;
					if (skill46 > num102)
					{
						num102 = skill46;
					}
					if (skill47 > num102)
					{
						num102 = skill47;
					}
					if (num102 < num100)
					{
						character37 = this.talkingParty[num101];
						num100 = num102;
					}
				}
			}
			return character37;
		}
		if (type == "Sneaky")
		{
			Character character38 = null;
			float num103 = 0f;
			for (int num104 = 0; num104 < this.talkingParty.Count; num104++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num104]))
				{
					float num105 = this.talkingParty[num104].stats.GetSkill(20);
					float skill48 = this.talkingParty[num104].stats.GetSkill(21);
					if (skill48 > num105)
					{
						num105 = skill48;
					}
					if (num105 > num103)
					{
						character38 = this.talkingParty[num104];
						num103 = num105;
					}
				}
			}
			return character38;
		}
		if (type == "Charmer")
		{
			Character character39 = null;
			float num106 = 0f;
			for (int num107 = 0; num107 < this.talkingParty.Count; num107++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num107]))
				{
					float num108 = this.talkingParty[num107].stats.GetSkill(23);
					float skill49 = this.talkingParty[num107].stats.GetSkill(24);
					float skill50 = this.talkingParty[num107].stats.GetSkill(25);
					if (skill49 > num108)
					{
						num108 = skill49;
					}
					if (skill50 > num108)
					{
						num108 = skill50;
					}
					if (num108 > num106)
					{
						character39 = this.talkingParty[num107];
						num106 = num108;
					}
				}
			}
			return character39;
		}
		if (type == "Any")
		{
			this.randomParty.Clear();
			for (int num109 = 0; num109 < this.talkingParty.Count; num109++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num109]))
				{
					this.randomParty.Add(this.talkingParty[num109]);
				}
			}
			return this.randomParty[Random.Range(0, this.randomParty.Count)];
		}
		if (type == "Bye")
		{
			Character character40 = null;
			for (int num110 = 0; num110 < this.talkingParty.Count; num110++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num110]))
				{
					character40 = this.talkingParty[num110];
				}
			}
			return character40;
		}
		if (type == "Party1")
		{
			return this.talkingParty[0];
		}
		if (type == "Party2")
		{
			return this.talkingParty[1];
		}
		if (type == "Party3")
		{
			return this.talkingParty[2];
		}
		if (type == "Party4")
		{
			return this.talkingParty[3];
		}
		if (type == "RemovedParty")
		{
			string asString = DialogueLua.GetVariable("RemovedParty").asString;
			for (int num111 = 0; num111 < this.talkingParty.Count; num111++)
			{
				if (this.talkingParty[num111].stats.GetName() == asString)
				{
					return this.talkingParty[num111];
				}
			}
			string asString2 = DialogueLua.GetVariable("SelectedParty").asString;
			for (int num112 = 0; num112 < this.talkingParty.Count; num112++)
			{
				if (this.talkingParty[num112].stats.GetName() == asString)
				{
					return this.talkingParty[num112];
				}
			}
			return null;
		}
		if (type == "NonMain")
		{
			string asString3 = DialogueLua.GetVariable("SelectedParty").asString;
			for (int num113 = 0; num113 < this.talkingParty.Count; num113++)
			{
				if (this.talkingParty[num113].stats.GetName() != asString3)
				{
					return this.talkingParty[num113];
				}
			}
			return null;
		}
		if (type == "BestFighter")
		{
			string asString4 = DialogueLua.GetVariable("BestFighter").asString;
			for (int num114 = 0; num114 < this.talkingParty.Count; num114++)
			{
				if (this.talkingParty[num114].stats.GetName() == asString4)
				{
					return this.talkingParty[num114];
				}
			}
			string asString5 = DialogueLua.GetVariable("SelectedParty").asString;
			for (int num115 = 0; num115 < this.talkingParty.Count; num115++)
			{
				if (this.talkingParty[num115].stats.GetName() == asString4)
				{
					return this.talkingParty[num115];
				}
			}
			return null;
		}
		if (type == "HighSkillParty")
		{
			string asString6 = DialogueLua.GetVariable("HighSkillParty").asString;
			for (int num116 = 0; num116 < this.talkingParty.Count; num116++)
			{
				if (this.talkingParty[num116].stats.GetName() == asString6)
				{
					return this.talkingParty[num116];
				}
			}
			string asString7 = DialogueLua.GetVariable("SelectedParty").asString;
			for (int num117 = 0; num117 < this.talkingParty.Count; num117++)
			{
				if (this.talkingParty[num117].stats.GetName() == asString6)
				{
					return this.talkingParty[num117];
				}
			}
			return null;
		}
		if (type == "SelectedParty")
		{
			string asString8 = DialogueLua.GetVariable("SelectedParty").asString;
			for (int num118 = 0; num118 < this.talkingParty.Count; num118++)
			{
				if (this.talkingParty[num118].stats.GetName() == asString8)
				{
					return this.talkingParty[num118];
				}
			}
			return null;
		}
		if (type == "Amey")
		{
			for (int num119 = 0; num119 < this.talkingParty.Count; num119++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num119]) && this.talkingParty[num119].stats.race.Contains("Amey"))
				{
					return this.talkingParty[num119];
				}
			}
			useBackUpText = true;
		}
		if (type == "Pasa")
		{
			for (int num120 = 0; num120 < this.talkingParty.Count; num120++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num120]) && this.talkingParty[num120].stats.race.Contains("Pasa"))
				{
					return this.talkingParty[num120];
				}
			}
			useBackUpText = true;
		}
		if (type == "Varu")
		{
			for (int num121 = 0; num121 < this.talkingParty.Count; num121++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num121]) && this.talkingParty[num121].stats.race.Contains("Varu"))
				{
					return this.talkingParty[num121];
				}
			}
			useBackUpText = true;
		}
		if (type == "Yeti")
		{
			for (int num122 = 0; num122 < this.talkingParty.Count; num122++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num122]) && this.talkingParty[num122].stats.race.Contains("Yeti"))
				{
					return this.talkingParty[num122];
				}
			}
			useBackUpText = true;
		}
		if (type == "Tara")
		{
			for (int num123 = 0; num123 < this.talkingParty.Count; num123++)
			{
				if (!this.foundParty.Contains(this.talkingParty[num123]) && this.talkingParty[num123].stats.race.Contains("Tara"))
				{
					return this.talkingParty[num123];
				}
			}
			useBackUpText = true;
		}
		return null;
	}

	// Token: 0x0400089B RID: 2203
	public Character npc1;

	// Token: 0x0400089C RID: 2204
	public Character npc2;

	// Token: 0x0400089D RID: 2205
	public Character npc3;

	// Token: 0x0400089E RID: 2206
	public Character npc4;

	// Token: 0x0400089F RID: 2207
	public Character npc5;

	// Token: 0x040008A0 RID: 2208
	public Character party;

	// Token: 0x040008A1 RID: 2209
	public Character respondCharacter;

	// Token: 0x040008A2 RID: 2210
	public Character justResponded;

	// Token: 0x040008A3 RID: 2211
	public Character currentTalking;

	// Token: 0x040008A4 RID: 2212
	private float ortho;

	// Token: 0x040008A5 RID: 2213
	public CanvasGroup canvasGroup;

	// Token: 0x040008A6 RID: 2214
	private List<Character> allParty;

	// Token: 0x040008A7 RID: 2215
	public TextMeshProTypewriterEffect typewriter;

	// Token: 0x040008A8 RID: 2216
	public TextMeshProTypewriterEffect typewriter2;

	// Token: 0x040008A9 RID: 2217
	public DialogueSystemController system;

	// Token: 0x040008AA RID: 2218
	private float lastZoomChange;

	// Token: 0x040008AB RID: 2219
	private List<Character> partyList;

	// Token: 0x040008AC RID: 2220
	private bool updatedDialogueActor;

	// Token: 0x040008AD RID: 2221
	private StringFast str = new StringFast(64);

	// Token: 0x040008AE RID: 2222
	private IEnumerator songCorout;

	// Token: 0x040008AF RID: 2223
	private IEnumerator startCorout;

	// Token: 0x040008B0 RID: 2224
	public AudioSource characterFollowAudioSource;

	// Token: 0x040008B1 RID: 2225
	private bool openingCreation;

	// Token: 0x040008B2 RID: 2226
	public bool canUseKeys;

	// Token: 0x040008B3 RID: 2227
	public bool responsesOn;

	// Token: 0x040008B4 RID: 2228
	public bool giveXP;

	// Token: 0x040008B5 RID: 2229
	private int giveXPAmt;

	// Token: 0x040008B6 RID: 2230
	public int initiateNum;

	// Token: 0x040008B7 RID: 2231
	private bool setRotation;

	// Token: 0x040008B8 RID: 2232
	private bool waited;

	// Token: 0x040008B9 RID: 2233
	private bool startCombat;

	// Token: 0x040008BA RID: 2234
	private bool stopDialogue;

	// Token: 0x040008BB RID: 2235
	public float maxPartyDistance = 35f;

	// Token: 0x040008BC RID: 2236
	private bool playSmile;

	// Token: 0x040008BD RID: 2237
	private bool playAngry;

	// Token: 0x040008BE RID: 2238
	private bool playFrown;

	// Token: 0x040008BF RID: 2239
	private bool playShock;

	// Token: 0x040008C0 RID: 2240
	public string diaFile;

	// Token: 0x040008C1 RID: 2241
	private bool switchedCameras;

	// Token: 0x040008C2 RID: 2242
	private SceneCamera switchedSceneCamera;

	// Token: 0x040008C3 RID: 2243
	public PuzzleActions puzzleActions;

	// Token: 0x040008C4 RID: 2244
	private Vector3 startPosition;

	// Token: 0x040008C5 RID: 2245
	public GameObject talkingIndicator;

	// Token: 0x040008C6 RID: 2246
	private Response[] pcResponses;

	// Token: 0x040008C7 RID: 2247
	private Character indicatorCharacter;

	// Token: 0x040008C8 RID: 2248
	public bool skippingSequence;

	// Token: 0x040008C9 RID: 2249
	private string sequence = "";

	// Token: 0x040008CA RID: 2250
	private RectTransform responseRT;

	// Token: 0x040008CB RID: 2251
	public Button continueButton1;

	// Token: 0x040008CC RID: 2252
	public Button continueButton2;

	// Token: 0x040008CD RID: 2253
	public TextMeshProUGUI name1;

	// Token: 0x040008CE RID: 2254
	public TextMeshProUGUI name2;

	// Token: 0x040008CF RID: 2255
	public TextMeshProUGUI name3;

	// Token: 0x040008D0 RID: 2256
	public TextMeshProUGUI name4;

	// Token: 0x040008D1 RID: 2257
	public TextMeshProUGUI navigate;

	// Token: 0x040008D2 RID: 2258
	public RawImage portrait1;

	// Token: 0x040008D3 RID: 2259
	public RawImage portrait2;

	// Token: 0x040008D4 RID: 2260
	public RawImage portrait3;

	// Token: 0x040008D5 RID: 2261
	public RawImage portrait4;

	// Token: 0x040008D6 RID: 2262
	public List<Character> talkingParty = new List<Character>();

	// Token: 0x040008D7 RID: 2263
	public List<Character> foundParty = new List<Character>();

	// Token: 0x040008D8 RID: 2264
	public List<Character> randomParty = new List<Character>();

	// Token: 0x040008D9 RID: 2265
	public List<Transform> responsePoints = new List<Transform>();

	// Token: 0x040008DA RID: 2266
	private List<StandardUIResponseButton> foundPartyResponses = new List<StandardUIResponseButton>();

	// Token: 0x040008DB RID: 2267
	public List<int> savedIDs = new List<int>();

	// Token: 0x040008DC RID: 2268
	public List<Character> savedCharacters = new List<Character>();

	// Token: 0x040008DD RID: 2269
	public Transform response1;

	// Token: 0x040008DE RID: 2270
	public Transform response2;

	// Token: 0x040008DF RID: 2271
	public Transform response3;

	// Token: 0x040008E0 RID: 2272
	public Transform response4;

	// Token: 0x040008E1 RID: 2273
	public GameObject message1;

	// Token: 0x040008E2 RID: 2274
	public GameObject message2;

	// Token: 0x040008E3 RID: 2275
	public GameObject message3;

	// Token: 0x040008E4 RID: 2276
	public GameObject message4;

	// Token: 0x040008E5 RID: 2277
	public TextMeshProUGUI messageText1;

	// Token: 0x040008E6 RID: 2278
	public TextMeshProUGUI messageText2;

	// Token: 0x040008E7 RID: 2279
	public TextMeshProUGUI messageText3;

	// Token: 0x040008E8 RID: 2280
	public TextMeshProUGUI messageText4;

	// Token: 0x040008E9 RID: 2281
	public Image messageImg1;

	// Token: 0x040008EA RID: 2282
	public Image messageImg2;

	// Token: 0x040008EB RID: 2283
	public Image messageImg3;

	// Token: 0x040008EC RID: 2284
	public Image messageImg4;

	// Token: 0x040008ED RID: 2285
	public string responseCharacter1;

	// Token: 0x040008EE RID: 2286
	public string responseCharacter2;

	// Token: 0x040008EF RID: 2287
	public string responseCharacter3;

	// Token: 0x040008F0 RID: 2288
	public string responseCharacter4;

	// Token: 0x040008F1 RID: 2289
	public Button byeButton;

	// Token: 0x040008F2 RID: 2290
	public Image byeImage;

	// Token: 0x040008F3 RID: 2291
	public StandardUIResponseButton responseBtn1;

	// Token: 0x040008F4 RID: 2292
	public StandardUIResponseButton responseBtn2;

	// Token: 0x040008F5 RID: 2293
	public StandardUIResponseButton responseBtn3;

	// Token: 0x040008F6 RID: 2294
	public StandardUIResponseButton responseBtn4;

	// Token: 0x040008F7 RID: 2295
	public Vignettes vignettes;

	// Token: 0x040008F8 RID: 2296
	public bool npcTalking;

	// Token: 0x040008F9 RID: 2297
	public bool noBobbling;

	// Token: 0x040008FA RID: 2298
	private bool[] foundAnswers = new bool[0];

	// Token: 0x040008FB RID: 2299
	public GameObject skillTraining;

	// Token: 0x040008FC RID: 2300
	public GameObject buySongs;

	// Token: 0x040008FD RID: 2301
	public Image skillTrainingIcon;

	// Token: 0x040008FE RID: 2302
	public TextMeshProUGUI emeraldText;

	// Token: 0x040008FF RID: 2303
	public bool training;

	// Token: 0x04000900 RID: 2304
	public string trainingSkill;

	// Token: 0x04000901 RID: 2305
	public int skillNumber;

	// Token: 0x04000902 RID: 2306
	public Sprite emeraldsSprite;

	// Token: 0x04000903 RID: 2307
	public string skillTrainingName;

	// Token: 0x04000904 RID: 2308
	private int messagedOn;

	// Token: 0x04000905 RID: 2309
	private bool doNotTurnOnHud;

	// Token: 0x04000906 RID: 2310
	[Header("Dialogue Pops")]
	public GameObject dialoguePopupBox;

	// Token: 0x04000907 RID: 2311
	public Animator dialoguePopupBoxAnimator;

	// Token: 0x04000908 RID: 2312
	public TextMeshProUGUI songPopupBoxText;

	// Token: 0x04000909 RID: 2313
	public TextMeshProUGUI spellPopupBoxText;

	// Token: 0x0400090A RID: 2314
	public TextMeshProUGUI levelUpPopupBoxText;

	// Token: 0x0400090B RID: 2315
	public TextMeshProUGUI itemPopupText;

	// Token: 0x0400090C RID: 2316
	public TextMeshProUGUI locationText;

	// Token: 0x0400090D RID: 2317
	private string currentSongName;

	// Token: 0x0400090E RID: 2318
	private string currentSpellName;

	// Token: 0x0400090F RID: 2319
	public HannahAnimator fx;

	// Token: 0x04000910 RID: 2320
	public Image trinketItemImage;

	// Token: 0x04000911 RID: 2321
	public Image spellImage;

	// Token: 0x04000912 RID: 2322
	public Image inventoryItemImage;

	// Token: 0x04000913 RID: 2323
	public RawImage levelUpPortraitImage;

	// Token: 0x04000914 RID: 2324
	public Sprite bindingsSprite;

	// Token: 0x04000915 RID: 2325
	public Sprite faunaSprite;

	// Token: 0x04000916 RID: 2326
	public Sprite vinesSprite;

	// Token: 0x04000917 RID: 2327
	public Sprite scoriaSprite;

	// Token: 0x04000918 RID: 2328
	public GameObject quickJournal;

	// Token: 0x04000919 RID: 2329
	public Animator quickJournalAnimator;

	// Token: 0x0400091A RID: 2330
	private bool quickNoteOpen;

	// Token: 0x0400091B RID: 2331
	public TMP_InputField journalNoteField;

	// Token: 0x0400091C RID: 2332
	private IEnumerator corout;

	// Token: 0x0400091D RID: 2333
	private IEnumerator quipCoroutine;

	// Token: 0x0400091E RID: 2334
	private int itemGiveCount;

	// Token: 0x0400091F RID: 2335
	private int prevHash;

	// Token: 0x04000920 RID: 2336
	public bool quipping;

	// Token: 0x04000921 RID: 2337
	public Character boro;

	// Token: 0x04000922 RID: 2338
	[Header("Misc")]
	private bool importantConversation;

	// Token: 0x04000923 RID: 2339
	private GameObject lastBtn;
}
