7240 lines
170 KiB
C#
7240 lines
170 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using Pathfinding;
|
|
using PixelCrushers.DialogueSystem;
|
|
using UnityEngine;
|
|
|
|
// Token: 0x0200007F RID: 127
|
|
public class Records : MonoBehaviour
|
|
{
|
|
// Token: 0x06000C31 RID: 3121 RVA: 0x000EE6A4 File Offset: 0x000EC8A4
|
|
private void Awake()
|
|
{
|
|
Records.x = base.gameObject.GetComponent<Records>();
|
|
if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.WindowsEditor)
|
|
{
|
|
this.editor = true;
|
|
}
|
|
if (Application.platform == RuntimePlatform.WindowsPlayer)
|
|
{
|
|
OperatingSystem osversion = Environment.OSVersion;
|
|
string operatingSystem = SystemInfo.operatingSystem;
|
|
string text = "OS is ";
|
|
OperatingSystem operatingSystem2 = osversion;
|
|
Debug.Log(text + ((operatingSystem2 != null) ? operatingSystem2.ToString() : null) + " " + operatingSystem);
|
|
if (operatingSystem.Contains("Windows 7") || operatingSystem.Contains("Vista"))
|
|
{
|
|
this.windows7 = true;
|
|
}
|
|
}
|
|
if (Application.platform == RuntimePlatform.LinuxPlayer || this.steamDeck)
|
|
{
|
|
this.linux = true;
|
|
Debug.Log("Running linux " + Screen.width.ToString() + " " + Screen.height.ToString());
|
|
}
|
|
if (!this.editor)
|
|
{
|
|
Debug.Log("Version " + this.gameVersion.ToString());
|
|
}
|
|
if (Application.productName.Contains("Demo"))
|
|
{
|
|
this.demo = true;
|
|
this.extendedDemo = false;
|
|
}
|
|
else
|
|
{
|
|
this.demo = false;
|
|
}
|
|
this.windows = false;
|
|
if (Application.platform == RuntimePlatform.WindowsPlayer)
|
|
{
|
|
this.windows = true;
|
|
}
|
|
if (!this.editor)
|
|
{
|
|
this.skipMainMenu = false;
|
|
this.turnOffCharacters = false;
|
|
this.turnOffAnimals = false;
|
|
this.noCombat = false;
|
|
this.testPatrols = false;
|
|
this.secrets = false;
|
|
this.questDebugging = false;
|
|
this.combatQuipDebugging = false;
|
|
this.combatConsoleDebugging = false;
|
|
this.effectsDebugging = false;
|
|
this.showRuleset = false;
|
|
this.testQuests = false;
|
|
this.astarDebugging = false;
|
|
this.noDamage = false;
|
|
this.editorBoro = false;
|
|
}
|
|
if (this.editor && !this.skipMainMenu)
|
|
{
|
|
this.editorMap = MapExit.exitToNames.None;
|
|
this.editorQuickLoad = Records.saves.None;
|
|
}
|
|
if (!this.skipMainMenu && this.editor)
|
|
{
|
|
this.useTestCharacters = false;
|
|
}
|
|
if (this.editor)
|
|
{
|
|
if (this.editorQuickLoad != Records.saves.None)
|
|
{
|
|
this.editorQuickLoadFile = this.editorQuickLoad.ToString();
|
|
if (this.editorQuickLoadFile != "")
|
|
{
|
|
this.useTestCharacters = false;
|
|
this.defaultStartPoint = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.editorQuickLoadFile = "";
|
|
GameObject.Find("Journal Canvas").GetComponent<Journal>().NewGame();
|
|
string text2 = Application.persistentDataPath + "/AutoSave";
|
|
if (Directory.Exists(text2))
|
|
{
|
|
string[] files = Directory.GetFiles(text2);
|
|
for (int i = 0; i < files.Length; i++)
|
|
{
|
|
File.Delete(files[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!this.editor && !this.filming)
|
|
{
|
|
this.useTestCharacters = false;
|
|
}
|
|
if (this.useTestCharacters && Records.x.editor && this.skipMainMenu)
|
|
{
|
|
QuestLog.SetQuestState("CharacterCreation", QuestState.Success);
|
|
QuestLog.SetQuestState("C6_Scribe", QuestState.Active);
|
|
}
|
|
this.characterNames = Enum.GetNames(typeof(Creatures.xmlNames));
|
|
Shader.SetGlobalFloat("_FadeOutUI", 0f);
|
|
if (this.editor && this.serpentFiles)
|
|
{
|
|
this.FindSerpentFiles();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C32 RID: 3122 RVA: 0x000EE9A2 File Offset: 0x000ECBA2
|
|
private void Start()
|
|
{
|
|
this.camTr = Links.x.worldCamera.gameObject.transform;
|
|
this.forw = Vector3.forward;
|
|
this.up = Vector3.up;
|
|
}
|
|
|
|
// Token: 0x06000C33 RID: 3123 RVA: 0x000EE9D4 File Offset: 0x000ECBD4
|
|
public void AddDead(Character character)
|
|
{
|
|
this.deadCharacters.Add(character);
|
|
}
|
|
|
|
// Token: 0x06000C34 RID: 3124 RVA: 0x000EE9E2 File Offset: 0x000ECBE2
|
|
public void AddDestroyCharacter(Character character)
|
|
{
|
|
if (!this.destroyCharacters.Contains(character))
|
|
{
|
|
this.destroyCharacters.Add(character);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C35 RID: 3125 RVA: 0x000EE9FE File Offset: 0x000ECBFE
|
|
public void AddBillboard(Transform t, bool isItem)
|
|
{
|
|
if (isItem)
|
|
{
|
|
this.itemBillboards.Add(t);
|
|
return;
|
|
}
|
|
this.billboards.Add(t);
|
|
}
|
|
|
|
// Token: 0x06000C36 RID: 3126 RVA: 0x000EEA1C File Offset: 0x000ECC1C
|
|
public void RemoveBillboard(Transform t, bool isItem)
|
|
{
|
|
if (isItem)
|
|
{
|
|
this.itemBillboards.Remove(t);
|
|
return;
|
|
}
|
|
this.billboards.Remove(t);
|
|
}
|
|
|
|
// Token: 0x06000C37 RID: 3127 RVA: 0x000EEA3C File Offset: 0x000ECC3C
|
|
private void LateUpdate()
|
|
{
|
|
this.UpdateLists();
|
|
int num = this.billboards.Count;
|
|
bool flag = false;
|
|
for (int i = 0; i < num; i++)
|
|
{
|
|
Transform transform = this.billboards[i];
|
|
if (transform)
|
|
{
|
|
transform.LookAt(transform.position + this.camTr.rotation * this.forw, this.camTr.rotation * this.up);
|
|
}
|
|
else
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.billboards.RemoveAll((Transform item) => item == null);
|
|
}
|
|
flag = false;
|
|
num = this.itemBillboards.Count;
|
|
for (int j = 0; j < num; j++)
|
|
{
|
|
Transform transform = this.itemBillboards[j];
|
|
if (transform)
|
|
{
|
|
transform.LookAt(transform.position + this.camTr.rotation * this.forw, this.camTr.rotation * this.up);
|
|
transform.position = transform.parent.position + this.camTr.forward * -0.5f + new Vector3(0f, 0.15f, 0f);
|
|
}
|
|
else
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.itemBillboards.RemoveAll((Transform item) => item == null);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C38 RID: 3128 RVA: 0x000EEBE4 File Offset: 0x000ECDE4
|
|
public void UpdateLists()
|
|
{
|
|
int num = this.destroyCharacters.Count;
|
|
if (num > 0)
|
|
{
|
|
for (int i = 0; i < num; i++)
|
|
{
|
|
this.destroyCharacters[i].FinishDestroyingCharacter();
|
|
}
|
|
this.destroyCharacters.Clear();
|
|
}
|
|
num = this.deadCharacters.Count;
|
|
if (num > 0)
|
|
{
|
|
for (int j = 0; j < num; j++)
|
|
{
|
|
this.deadCharacters[j].Dead(false, true, false);
|
|
}
|
|
this.deadCharacters.Clear();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C39 RID: 3129 RVA: 0x000EEC64 File Offset: 0x000ECE64
|
|
private void Update()
|
|
{
|
|
if (Links.x.gaia.sceneLoaded)
|
|
{
|
|
if (Records.x.partyCamping || this.openMenus.Count > 0 || Links.x.options.contents1.activeSelf)
|
|
{
|
|
if (Links.x.options.contents1.activeSelf)
|
|
{
|
|
if (!this.pausedForMenus)
|
|
{
|
|
if (!Records.x.paused)
|
|
{
|
|
this.pausedForMenus = true;
|
|
}
|
|
Links.x.gameplay.TogglePause(true);
|
|
}
|
|
}
|
|
else if (!this.pausedForMenus && !Records.x.paused)
|
|
{
|
|
this.pausedForMenus = true;
|
|
Links.x.gameplay.TogglePause(true);
|
|
}
|
|
}
|
|
else if (this.pausedForMenus && !this.inMenus)
|
|
{
|
|
this.pausedForMenus = false;
|
|
Links.x.gameplay.TogglePause(false);
|
|
}
|
|
if (Time.timeSinceLevelLoad > this.constantQuestCheckTimer)
|
|
{
|
|
this.CheckConstantlyForQuestTimers();
|
|
}
|
|
if (Links.x.hoverObject)
|
|
{
|
|
this.hoverLightColor.a = 1f;
|
|
this.currColor = Color.Lerp(this.currColor, this.hoverLightColor, Time.unscaledDeltaTime * 15f);
|
|
Shader.SetGlobalVector("_DoorLightColor", this.currColor);
|
|
}
|
|
else if (this.hoverLightColor != Color.black)
|
|
{
|
|
this.currColor = Color.Lerp(this.currColor, Color.black, Time.unscaledDeltaTime * 15f);
|
|
if (this.currColor != Color.black)
|
|
{
|
|
Shader.SetGlobalVector("_DoorLightColor", this.currColor);
|
|
}
|
|
if (this.currColor == Color.black)
|
|
{
|
|
this.hoverLightColor = Color.black;
|
|
}
|
|
}
|
|
}
|
|
if (this.fading)
|
|
{
|
|
this.currentDither = Mathf.Lerp(this.startDither, this.endDither, this.fadeAmount * 1f);
|
|
Shader.SetGlobalFloat("_FadeOutUI", this.currentDither);
|
|
if ((this.endDither == 1f && this.currentDither >= 1f) || (this.endDither == 0f && this.currentDither <= 0f))
|
|
{
|
|
this.fading = false;
|
|
}
|
|
if (Records.x.filming)
|
|
{
|
|
this.fadeAmount += Time.unscaledDeltaTime * Records.x.filmingAnimatorSpeed;
|
|
return;
|
|
}
|
|
if (Records.x.paused)
|
|
{
|
|
this.fadeAmount += Time.deltaTime * 1.5f;
|
|
return;
|
|
}
|
|
this.fadeAmount += Time.unscaledDeltaTime * 1.5f;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C3A RID: 3130 RVA: 0x000EEF10 File Offset: 0x000ED110
|
|
public void StartUIFade(bool fadeOut, bool instant)
|
|
{
|
|
bool flag = true;
|
|
if (this.endDither == 0f)
|
|
{
|
|
flag = false;
|
|
}
|
|
if (instant)
|
|
{
|
|
if (fadeOut)
|
|
{
|
|
this.currentDither = 1f;
|
|
}
|
|
else
|
|
{
|
|
this.currentDither = 0f;
|
|
}
|
|
Shader.SetGlobalFloat("_FadeOutUI", this.currentDither);
|
|
return;
|
|
}
|
|
if (flag != fadeOut)
|
|
{
|
|
if (fadeOut)
|
|
{
|
|
this.startDither = 0f;
|
|
this.endDither = 1f;
|
|
}
|
|
else
|
|
{
|
|
this.startDither = 1f;
|
|
this.endDither = 0f;
|
|
}
|
|
if (this.fading)
|
|
{
|
|
this.startDither = this.currentDither;
|
|
}
|
|
this.fadeAmount = 0f;
|
|
this.fading = true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C3B RID: 3131 RVA: 0x000EEFB8 File Offset: 0x000ED1B8
|
|
public void RemoveControls(bool state)
|
|
{
|
|
bool flag = this.removeControls;
|
|
this.removeControls = state;
|
|
if (state != flag)
|
|
{
|
|
if (state)
|
|
{
|
|
Links.x.hudControl.ChangeHudVisibility(false, true);
|
|
return;
|
|
}
|
|
Links.x.hudControl.ChangeHudVisibility(true, true);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C3C RID: 3132 RVA: 0x000EF000 File Offset: 0x000ED200
|
|
public bool CharacterInDialogue(Character character)
|
|
{
|
|
return character == Links.x.dialogue.npc1 || character == Links.x.dialogue.npc2 || character == Links.x.dialogue.npc3;
|
|
}
|
|
|
|
// Token: 0x06000C3D RID: 3133 RVA: 0x000EF055 File Offset: 0x000ED255
|
|
public int MenusCount()
|
|
{
|
|
return this.openMenus.Count;
|
|
}
|
|
|
|
// Token: 0x06000C3E RID: 3134 RVA: 0x000EF062 File Offset: 0x000ED262
|
|
public bool OpenMenusContains(GameObject g)
|
|
{
|
|
return this.openMenus.Contains(g);
|
|
}
|
|
|
|
// Token: 0x06000C3F RID: 3135 RVA: 0x000EF078 File Offset: 0x000ED278
|
|
public bool InObscuranceMenu()
|
|
{
|
|
return Links.x.creation || Links.x.characterSheet.canvas.enabled || Links.x.spellcrafting.open || Records.x.dialogue;
|
|
}
|
|
|
|
// Token: 0x06000C40 RID: 3136 RVA: 0x000EF0D2 File Offset: 0x000ED2D2
|
|
public void AddMenu(GameObject g)
|
|
{
|
|
if (this.openMenus.IndexOf(g) == -1)
|
|
{
|
|
this.openMenus.Add(g);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C41 RID: 3137 RVA: 0x000EF0F0 File Offset: 0x000ED2F0
|
|
public void RemoveMenu(GameObject g)
|
|
{
|
|
int num = this.openMenus.IndexOf(g);
|
|
if (num > -1)
|
|
{
|
|
this.openMenus.RemoveAt(num);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C42 RID: 3138 RVA: 0x000EF11A File Offset: 0x000ED31A
|
|
public void AddCloseButtonMenu(UITriggerButton g)
|
|
{
|
|
if (this.closeButtons.IndexOf(g) == -1)
|
|
{
|
|
this.closeButtons.Add(g);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C43 RID: 3139 RVA: 0x000EF137 File Offset: 0x000ED337
|
|
public GameObject FirstMenu()
|
|
{
|
|
if (this.openMenus.Count > 0)
|
|
{
|
|
return this.openMenus[this.openMenus.Count - 1];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x06000C44 RID: 3140 RVA: 0x000EF161 File Offset: 0x000ED361
|
|
public UITriggerButton FirstCloseButton()
|
|
{
|
|
if (this.closeButtons.Count > 0)
|
|
{
|
|
return this.closeButtons[this.closeButtons.Count - 1];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x06000C45 RID: 3141 RVA: 0x000EF18C File Offset: 0x000ED38C
|
|
public void RemoveCloseButtonMenu(UITriggerButton g)
|
|
{
|
|
int num = this.closeButtons.IndexOf(g);
|
|
if (num > -1)
|
|
{
|
|
this.closeButtons.RemoveAt(num);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C46 RID: 3142 RVA: 0x000EF1B6 File Offset: 0x000ED3B6
|
|
public void SetTypingState(bool state)
|
|
{
|
|
this.typing = state;
|
|
}
|
|
|
|
// Token: 0x06000C47 RID: 3143 RVA: 0x000EF1BF File Offset: 0x000ED3BF
|
|
public bool IsSaving()
|
|
{
|
|
return this.needsSaveNames.Count != 0 || this.saving;
|
|
}
|
|
|
|
// Token: 0x06000C48 RID: 3144 RVA: 0x000EF1D9 File Offset: 0x000ED3D9
|
|
public void TriggerGlobalSave(string pickedSave, bool showNotifier)
|
|
{
|
|
if (!this.saving)
|
|
{
|
|
Records.x.openBook = pickedSave;
|
|
base.StartCoroutine(this.SaveGameFiles(showNotifier));
|
|
return;
|
|
}
|
|
this.needsSaveNames.Add(pickedSave);
|
|
}
|
|
|
|
// Token: 0x06000C49 RID: 3145 RVA: 0x000EF20C File Offset: 0x000ED40C
|
|
public void LoadGameFiles(bool beginning)
|
|
{
|
|
this.saving = true;
|
|
if (this.editor && beginning && this.editorQuickLoadFile != "")
|
|
{
|
|
Links.x.saveKeeper.openBook = this.editorQuickLoadFile;
|
|
Records.x.openBook = this.editorQuickLoadFile;
|
|
}
|
|
if (Links.x.saveKeeper.openBook != "AutoSave" && Links.x.saveKeeper.openBook != "")
|
|
{
|
|
string persistentDataPath = Application.persistentDataPath;
|
|
string text = persistentDataPath + "/" + Links.x.saveKeeper.openBook;
|
|
string text2 = persistentDataPath + "/AutoSave";
|
|
if (Directory.Exists(text))
|
|
{
|
|
if (Directory.Exists(text2))
|
|
{
|
|
string[] array = Directory.GetFiles(text2);
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
File.Delete(array[i]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Directory.CreateDirectory(text2);
|
|
}
|
|
if (Directory.Exists(text))
|
|
{
|
|
foreach (string text3 in Directory.GetFiles(text))
|
|
{
|
|
string fileName = Path.GetFileName(text3);
|
|
string text4 = Path.Combine(text2, fileName);
|
|
File.Copy(text3, text4);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("this save does not exist!");
|
|
}
|
|
}
|
|
if (beginning && this.editor)
|
|
{
|
|
Links.x.gameplay.gameHours = 5f;
|
|
Links.x.gameplay.gameMinutes = 300f;
|
|
Links.x.gameplay.gameSeconds = 18000f;
|
|
Links.x.gameplay.LoadGameTime();
|
|
if (this.editorMap != MapExit.exitToNames.None)
|
|
{
|
|
this.editorSceneToLoad = this.editorMap.ToString();
|
|
if ((this.editorSceneToLoad != "" || this.editorQuickLoadFile != "") && ES3.FileExists("AutoSave/Quests.es3"))
|
|
{
|
|
beginning = false;
|
|
}
|
|
}
|
|
}
|
|
string text5 = Records.x.openBook + "/Quests.es3";
|
|
if (!ES3.FileExists(text5) && this.editor)
|
|
{
|
|
beginning = true;
|
|
}
|
|
if (beginning)
|
|
{
|
|
this.sceneToLoad = "_~[Menu]~_";
|
|
if (!this.editor || (this.editor && !this.skipMainMenu))
|
|
{
|
|
Links.x.hudControl.ChangeHudVisibility(false, true);
|
|
this.mainMenuOpen = true;
|
|
this.removeControls = true;
|
|
}
|
|
if (this.editor)
|
|
{
|
|
if (this.editorMap != MapExit.exitToNames.None)
|
|
{
|
|
this.editorSceneToLoad = this.editorMap.ToString();
|
|
if (this.editorSceneToLoad != "")
|
|
{
|
|
this.sceneToLoad = this.editorSceneToLoad;
|
|
}
|
|
}
|
|
if (this.useTestCharacters && this.editor && QuestLog.GetQuestState("C6_GobletGuildThievesA") == QuestState.Unassigned)
|
|
{
|
|
this.AddQuestToTimer("C6_GobletGuildThievesA", 72f, "unassigned", "active", false);
|
|
this.AddQuestToTimer("C6_GobletGuildThievesB", 72f, "unassigned", "active", false);
|
|
this.AddQuestToTimer("C6_GobletGuildThievesC", 72f, "unassigned", "active", false);
|
|
}
|
|
}
|
|
Links.x.inventory.emeralds = 523;
|
|
Links.x.gaia.RandomVariables();
|
|
}
|
|
else
|
|
{
|
|
text5 = Records.x.openBook + "/Quests.es3";
|
|
this.saveFile = new ES3File(text5);
|
|
Links.x.gaia.partyNames.Clear();
|
|
Links.x.gaia.partyIDs.Clear();
|
|
if (ES3.KeyExists("PartyNames", text5))
|
|
{
|
|
Links.x.gaia.partyNames = this.saveFile.Load<List<string>>("PartyNames");
|
|
Links.x.gaia.partyIDs = this.saveFile.Load<List<int>>("PartyIDs");
|
|
}
|
|
else
|
|
{
|
|
Debug.Log(text5 + " no key found");
|
|
}
|
|
ES3File es3File = new ES3File("Version.es3");
|
|
if (es3File.KeyExists("DefendTutorialTip"))
|
|
{
|
|
this.needsDefendTooltip = es3File.Load<bool>("DefendTutorialTip");
|
|
}
|
|
if (es3File.KeyExists("SynergyTutorialTip"))
|
|
{
|
|
this.needsSynergyTooltip = es3File.Load<bool>("SynergyTutorialTip");
|
|
}
|
|
if (es3File.KeyExists("CompanionTutorialTip"))
|
|
{
|
|
this.needsCompanionTooltip = es3File.Load<bool>("CompanionTutorialTip");
|
|
}
|
|
if (es3File.KeyExists("AttackTutorialTip"))
|
|
{
|
|
this.needsAttackTooltip = es3File.Load<bool>("AttackTutorialTip");
|
|
}
|
|
if (es3File.KeyExists("MoreTutorialTip"))
|
|
{
|
|
this.needsMoreTooltip = es3File.Load<bool>("MoreTutorialTip");
|
|
}
|
|
if (es3File.KeyExists("CircleTutorialTip"))
|
|
{
|
|
this.needsCircleTooltip = es3File.Load<bool>("CircleTutorialTip");
|
|
}
|
|
this.sceneToLoad = this.saveFile.Load<string>("SceneName", text5);
|
|
Links.x.inventory.emeralds = this.saveFile.Load<int>("Emeralds");
|
|
Links.x.inventory.gems = this.saveFile.Load<int>("Gems");
|
|
Links.x.journal.LoadScrolls();
|
|
Links.x.cellar.LoadGorePiles(text5);
|
|
Links.x.cellar.LoadTileEffects(text5);
|
|
Links.x.inventory.groundBag.toggle = this.saveFile.Load<bool>("GroundItems");
|
|
Links.x.inventory.groundBag.hudButton.SetImageFromSave();
|
|
this.partyTotal = this.saveFile.Load<int>("PartyTotal");
|
|
this.ai = this.saveFile.Load<int>("AI");
|
|
this.kill = this.saveFile.Load<bool>("Kill");
|
|
if (this.saveFile.KeyExists("Rallies"))
|
|
{
|
|
Vector3 vector = this.saveFile.Load<Vector3>("Rallies");
|
|
Links.x.fellowship.rally = vector.z;
|
|
Links.x.fellowship.rallyBoost = vector.x;
|
|
Links.x.fellowship.rallyAttacks = vector.y;
|
|
Links.x.hudControl.SetRallyBars();
|
|
Links.x.gaia.doCircle = false;
|
|
this.defenseCircle = this.saveFile.Load<List<Vector3>>("DefenseCircle");
|
|
if (this.defenseCircle.Count > 0 && this.defenseCircle[0] != Vector3.zero)
|
|
{
|
|
Links.x.gaia.doCircle = true;
|
|
}
|
|
}
|
|
Links.x.hudControl.allModalWindowsOpen = this.saveFile.Load<bool>("WindowsOpen");
|
|
Links.x.hudControl.SetModalWindowState(Links.x.hudControl.allModalWindowsOpen, false);
|
|
Links.x.gameplay.keyControl.Setup();
|
|
this.saveFile.Load<bool>("MenuButtons");
|
|
Links.x.gameplay.gameDays = this.saveFile.Load<int>("GameDays");
|
|
Links.x.gameplay.gameMinutes = this.saveFile.Load<float>("GameMinutes");
|
|
Links.x.gameplay.gameSeconds = this.saveFile.Load<float>("GameSeconds");
|
|
Links.x.gameplay.gameHours = this.saveFile.Load<float>("GameHours");
|
|
Links.x.cameraEffects.indoors = this.saveFile.Load<bool>("Indoors");
|
|
DialogueManager.ResetDatabase(DatabaseResetOptions.KeepAllLoaded);
|
|
PersistentDataManager.ApplySaveData(this.saveFile.Load<string>("Dialogue", text5), DatabaseResetOptions.KeepAllLoaded);
|
|
Links.x.hudControl.LoadWindows();
|
|
text5 = Records.x.openBook + "/CreatureLocations.es3";
|
|
this.creaturesMapXml.Clear();
|
|
this.creaturesMapNew.Clear();
|
|
this.creaturesMapOld.Clear();
|
|
this.creaturesMapHostility.Clear();
|
|
this.creaturesMapChangeTime.Clear();
|
|
this.creaturesMapGameObject.Clear();
|
|
this.creaturesMapLife.Clear();
|
|
this.creaturesMapIndex.Clear();
|
|
this.creaturesMapChangeDelay.Clear();
|
|
this.creaturesMapMovingFrom.Clear();
|
|
this.creaturesMapMovingFromPosition.Clear();
|
|
this.creaturesMapXml = this.saveFile.Load<List<string>>("CreaturesMapXml");
|
|
this.creaturesMapNew = this.saveFile.Load<List<string>>("CreatureMapsNew");
|
|
this.creaturesMapOld = this.saveFile.Load<List<string>>("CreatureMapsOld");
|
|
this.creaturesMapHostility = this.saveFile.Load<List<int>>("CreaturesMapHostility");
|
|
this.creaturesMapName = this.saveFile.Load<List<string>>("CreaturesMapName");
|
|
this.creaturesMapPosition = this.saveFile.Load<List<Vector3>>("CreaturesMapPosition");
|
|
this.creaturesMapState = this.saveFile.Load<List<string>>("CreaturesMapState");
|
|
this.creaturesMapChangeTime = this.saveFile.Load<List<int>>("CreaturesMapChangeTime");
|
|
this.creaturesMapChangeDelay = this.saveFile.Load<List<float>>("CreaturesMapChangeDelay");
|
|
this.creaturesMapGameObject = this.saveFile.Load<List<string>>("CreaturesMapGameObject");
|
|
this.creaturesMapLife = this.saveFile.Load<List<int>>("CreaturesMapLife");
|
|
this.creaturesMapIndex = this.saveFile.Load<List<int>>("CreaturesMapIndex");
|
|
this.creaturesMapMovingFrom = this.saveFile.Load<List<string>>("CreaturesMapMoving");
|
|
this.creaturesMapMovingFromPosition = this.saveFile.Load<List<Vector3>>("CreaturesMapMovingFromPosition");
|
|
if (this.saveFile.KeyExists("BoroPosition"))
|
|
{
|
|
this.boroPosition = this.saveFile.Load<Vector3>("BoroPosition");
|
|
this.boroRotation = this.saveFile.Load<Quaternion>("BoroRotation");
|
|
this.boatPosition = this.saveFile.Load<Vector3>("BoatPosition");
|
|
this.boatRotation = this.saveFile.Load<Quaternion>("BoatRotation");
|
|
this.partySailing = this.saveFile.Load<bool>("PartySailing");
|
|
this.boroScene = this.saveFile.Load<string>("BoroScene");
|
|
this.partyBoatDown = this.saveFile.Load<bool>("PartyBoatDown");
|
|
this.boroBag = this.saveFile.Load<string>("BoroBag");
|
|
this.boroID = this.saveFile.Load<string>("BoroID");
|
|
this.boroWeight = this.saveFile.Load<float>("BoroWeight");
|
|
this.boroBonus = this.saveFile.Load<Vector3>("BoroBonus");
|
|
this.boroLastBeachPoint = this.saveFile.Load<Vector3>("BoroLastBeachPoint");
|
|
this.banners.Clear();
|
|
this.banners = this.saveFile.Load<List<string>>("Banners");
|
|
this.boroName = this.saveFile.Load<string>("BoroName");
|
|
this.boroShrines = this.saveFile.Load<Vector4>("BoroShrines");
|
|
this.savedBoro = this.saveFile.Load<List<string>>("SavedBoro");
|
|
this.boroInvisible = this.saveFile.Load<bool>("BoroInvisible");
|
|
}
|
|
this.stunnedNPCs = this.saveFile.Load<List<string>>("StunnedNPCs");
|
|
this.stunnedTime = this.saveFile.Load<List<float>>("StunnedTime");
|
|
this.stunnedSaveFiles = this.saveFile.Load<List<string>>("StunnedSaveFiles");
|
|
this.exiles = this.saveFile.Load<List<string>>("Exiles");
|
|
this.exilesPurseState = this.saveFile.Load<List<float>>("ExilesPurseState");
|
|
this.victims = this.saveFile.Load<List<string>>("Victims");
|
|
this.victimBadgeState = this.saveFile.Load<List<string>>("VictimBadgeState");
|
|
this.victimTown = this.saveFile.Load<List<string>>("VictimTown");
|
|
this.victimBadgeStartTime = this.saveFile.Load<List<float>>("VictimBadgeStartTime");
|
|
this.SetupStunned();
|
|
this.SetupBribeBadges(this.sceneToLoad);
|
|
this.changeQuestName = this.saveFile.Load<List<string>>("ChangeQuestName");
|
|
this.changeAtHour = this.saveFile.Load<List<float>>("ChangeAtHour");
|
|
this.changeToState = this.saveFile.Load<List<string>>("ChangeToState");
|
|
this.changeFromState = this.saveFile.Load<List<string>>("ChangeFromState");
|
|
this.SetupSitsInfo();
|
|
Links.x.gameplay.LoadGameTime();
|
|
}
|
|
this.saving = false;
|
|
Links.x.gaia.GameFilesLoaded(this.sceneToLoad);
|
|
}
|
|
|
|
// Token: 0x06000C4A RID: 3146 RVA: 0x000EFE75 File Offset: 0x000EE075
|
|
private IEnumerator SaveGameFiles(bool showNotifier)
|
|
{
|
|
this.saving = true;
|
|
bool paused = Records.x.paused;
|
|
bool controlsRemoved = this.removeControls;
|
|
if (showNotifier)
|
|
{
|
|
Links.x.gameFeed.AddFeed("Game recorded");
|
|
Links.x.saveVisual.SetActive(true);
|
|
if (!paused)
|
|
{
|
|
Links.x.gameplay.TogglePause(true);
|
|
}
|
|
this.RemoveControls(true);
|
|
yield return new WaitForSecondsRealtime(0.001f);
|
|
}
|
|
if (Records.x.openBook != "AutoSave")
|
|
{
|
|
string persistentDataPath = Application.persistentDataPath;
|
|
string text = persistentDataPath + "/AutoSave";
|
|
string text2 = persistentDataPath + "/" + Records.x.openBook;
|
|
if (Directory.Exists(text2))
|
|
{
|
|
string[] array = Directory.GetFiles(text2);
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
File.Delete(array[i]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Directory.CreateDirectory(text2);
|
|
}
|
|
if (Directory.Exists(text))
|
|
{
|
|
foreach (string text3 in Directory.GetFiles(text))
|
|
{
|
|
string fileName = Path.GetFileName(text3);
|
|
string text4 = Path.Combine(text2, fileName);
|
|
File.Copy(text3, text4);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Links.x.combat.CheckReduceHostilities(true);
|
|
Records.x.UpdateLists();
|
|
}
|
|
string filename = Records.x.openBook + "/Quests.es3";
|
|
this.saveFile = new ES3File(filename);
|
|
this.saveFile.Save<int>("GameDays", Links.x.gameplay.gameDays);
|
|
this.saveFile.Save<float>("GameSeconds", Links.x.gameplay.gameSeconds);
|
|
this.saveFile.Save<float>("GameMinutes", Links.x.gameplay.gameMinutes);
|
|
this.saveFile.Save<float>("GameHours", Links.x.gameplay.gameHours);
|
|
ES3File es3File = new ES3File("Version.es3");
|
|
es3File.Save<bool>("DefendTutorialTip", this.needsDefendTooltip);
|
|
es3File.Save<bool>("SynergyTutorialTip", this.needsSynergyTooltip);
|
|
es3File.Save<bool>("CompanionTutorialTip", this.needsCompanionTooltip);
|
|
es3File.Save<bool>("AttackTutorialTip", this.needsAttackTooltip);
|
|
es3File.Save<bool>("MoreTutorialTip", this.needsMoreTooltip);
|
|
es3File.Save<bool>("CircleTutorialTip", this.needsCircleTooltip);
|
|
es3File.Sync();
|
|
if (Records.x.openBook != "AutoSave")
|
|
{
|
|
Links.x.cameraEffects.Capture(Records.x.openBook);
|
|
}
|
|
Links.x.gameplay.keyControl.DoSave();
|
|
if (showNotifier)
|
|
{
|
|
yield return new WaitForSecondsRealtime(0.05f);
|
|
}
|
|
Links.x.sceneMap.DoSave();
|
|
Links.x.journal.DoSave();
|
|
Links.x.cellar.SaveTileEffects(filename);
|
|
if (Links.x.gaia.boro)
|
|
{
|
|
this.boroPosition = Links.x.gaia.boro.tr.position;
|
|
this.boroRotation = Links.x.gaia.boro.tr.rotation;
|
|
this.boatPosition = Links.x.gaia.boro.tr.position;
|
|
this.boatRotation = Links.x.gaia.boro.tr.rotation;
|
|
this.boroScene = Links.x.diorama.sceneName;
|
|
this.saveFile.Save<string>("BoroBag", Links.x.gaia.boro.stats.savedMerchantList);
|
|
this.saveFile.Save<float>("BoroWeight", this.boroWeight);
|
|
this.saveFile.Save<Vector3>("BoroLastBeachPoint", this.boroLastBeachPoint);
|
|
this.saveFile.Save<bool>("BoroInvisible", Links.x.gaia.boroControls.boroInvisible);
|
|
}
|
|
else
|
|
{
|
|
this.saveFile.Save<string>("BoroBag", "");
|
|
this.saveFile.Save<float>("BoroWeight", 0f);
|
|
this.saveFile.Save<Vector3>("BoroLastBeachPoint", Vector3.zero);
|
|
this.saveFile.Save<bool>("BoroInvisible", false);
|
|
}
|
|
if (this.partySailing)
|
|
{
|
|
this.boatPosition = Links.x.gaia.boat.tr.position;
|
|
this.boatRotation = Links.x.gaia.boat.tr.rotation;
|
|
}
|
|
this.saveFile.Save<string>("BoroID", this.boroID);
|
|
this.saveFile.Save<string>("BoroName", this.boroName);
|
|
this.saveFile.Save<Vector3>("BoroPosition", this.boroPosition);
|
|
this.saveFile.Save<Quaternion>("BoroRotation", this.boroRotation);
|
|
this.saveFile.Save<bool>("PartySailing", this.partySailing);
|
|
this.saveFile.Save<Vector3>("BoatPosition", this.boatPosition);
|
|
this.saveFile.Save<Quaternion>("BoatRotation", this.boatRotation);
|
|
this.saveFile.Save<string>("BoroScene", this.boroScene);
|
|
this.saveFile.Save<bool>("PartyBoatDown", this.partyBoatDown);
|
|
this.saveFile.Save<List<string>>("Banners", this.banners);
|
|
this.saveFile.Save<Vector3>("BoroBonus", this.boroBonus);
|
|
this.saveFile.Save<Vector4>("BoroShrines", this.boroShrines);
|
|
this.saveFile.Save<List<string>>("SavedBoro", this.savedBoro);
|
|
Links.x.gaia.partyNames.Clear();
|
|
Links.x.gaia.partyIDs.Clear();
|
|
this.party = Links.x.party;
|
|
for (int j = 0; j < this.party.Count; j++)
|
|
{
|
|
if (this.party[j] && !this.party[j].summoned && !this.party[j].isBoro)
|
|
{
|
|
Links.x.gaia.partyNames.Add(this.party[j].stats.displayName);
|
|
Links.x.gaia.partyIDs.Add(this.party[j].stats.partyID);
|
|
}
|
|
}
|
|
this.saveFile.Save<List<string>>("PartyNames", Links.x.gaia.partyNames);
|
|
this.saveFile.Save<List<int>>("PartyIDs", Links.x.gaia.partyIDs);
|
|
this.saveFile.Save<int>("PartyTotal", this.partyTotal);
|
|
for (int k = 0; k < this.party.Count; k++)
|
|
{
|
|
if (this.party[k] && !this.party[k].summoned && !this.party[k].isBoro)
|
|
{
|
|
this.party[k].stats.CharacterSave();
|
|
}
|
|
}
|
|
this.party = Links.x.portraitOrder;
|
|
this.saveFile.Save<bool>("WindowsOpen", Links.x.hudControl.allModalWindowsOpen);
|
|
this.saveFile.Save<bool>("Indoors", Links.x.cameraEffects.indoors);
|
|
this.saveFile.Save<string>("SceneName", Links.x.diorama.sceneName);
|
|
Links.x.gaia.SaveSummons();
|
|
this.saveFile.Save<bool>("GroundItems", Links.x.inventory.groundBag.toggle);
|
|
this.saveFile.Save<int>("Emeralds", Links.x.inventory.emeralds);
|
|
this.saveFile.Save<int>("Gems", Links.x.inventory.gems);
|
|
this.saveFile.Save<int>("AI", this.ai);
|
|
this.saveFile.Save<bool>("Kill", this.kill);
|
|
this.saveFile.Save<bool>("MenuButtons", Links.x.hudControl.menuButtonsOpen);
|
|
this.saveFile.Save<Vector3>("Rallies", new Vector3(Links.x.fellowship.rallyBoost, Links.x.fellowship.rallyAttacks, Links.x.fellowship.rally));
|
|
if (this.circle)
|
|
{
|
|
this.circleTiles = Links.x.fellowship.circleTiles;
|
|
Vector3 middleCircle = Links.x.gameplay.middleCircle;
|
|
Vector3 eulerAngles = Links.x.gameplay.circleRotation.eulerAngles;
|
|
this.defenseCircle.Clear();
|
|
this.defenseCircle.Add(middleCircle);
|
|
for (int l = 0; l < 9; l++)
|
|
{
|
|
if (l < this.circleTiles.Count)
|
|
{
|
|
this.defenseCircle.Add((Vector3)this.circleTiles[l].position);
|
|
}
|
|
else
|
|
{
|
|
this.defenseCircle.Add(Vector3.zero);
|
|
}
|
|
}
|
|
this.defenseCircle.Add(eulerAngles);
|
|
}
|
|
else
|
|
{
|
|
this.defenseCircle.Clear();
|
|
}
|
|
this.saveFile.Save<List<Vector3>>("DefenseCircle", this.defenseCircle);
|
|
Links.x.hudControl.SetPartyWait();
|
|
string saveData = PersistentDataManager.GetSaveData();
|
|
this.saveFile.Save<string>("Dialogue", saveData);
|
|
Links.x.diorama.SaveCreatures();
|
|
Links.x.diorama.PrepareItemsToSave();
|
|
yield return new WaitForSecondsRealtime(0.05f);
|
|
Links.x.diorama.SaveGroundItems();
|
|
Links.x.diorama.SaveInteractives();
|
|
Links.x.fogOfWar.Save();
|
|
Links.x.fogOfWarInterior.Save();
|
|
string text5 = this.SaveTime();
|
|
ES3File es3File2 = new ES3File("Version.es3");
|
|
if (Records.x.openBook == "CheckpointSave")
|
|
{
|
|
es3File2.Save<string>("CheckpointSave", "Check Point Save");
|
|
es3File2.Save<string>("CheckpointSaveTime", text5);
|
|
}
|
|
if (Records.x.openBook == "QuickSave")
|
|
{
|
|
es3File2.Save<string>("QuickSaveTime", text5);
|
|
}
|
|
if (Records.x.openBook == "Save1")
|
|
{
|
|
es3File2.Save<string>("Save1Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save2")
|
|
{
|
|
es3File2.Save<string>("Save2Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save3")
|
|
{
|
|
es3File2.Save<string>("Save3Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save4")
|
|
{
|
|
es3File2.Save<string>("Save4Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save5")
|
|
{
|
|
es3File2.Save<string>("Save5Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save6")
|
|
{
|
|
es3File2.Save<string>("Save6Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save7")
|
|
{
|
|
es3File2.Save<string>("Save7Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save8")
|
|
{
|
|
es3File2.Save<string>("Save8Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save9")
|
|
{
|
|
es3File2.Save<string>("Save9Time", text5);
|
|
}
|
|
if (Records.x.openBook == "Save10")
|
|
{
|
|
es3File2.Save<string>("Save10Time", text5);
|
|
}
|
|
es3File2.Sync();
|
|
ES3File es3File3 = new ES3File("SerpentData.es3");
|
|
es3File3.Save<string>("SitsAnimal", this.sitsAnimal);
|
|
es3File3.Save<string>("SitsCompanion1", this.sitsCompanion1);
|
|
es3File3.Save<string>("SitsCompanion2", this.sitsCompanion2);
|
|
es3File3.Save<string>("SitsCompanion3", this.sitsCompanion3);
|
|
es3File3.Save<string>("SitsCompanion4", this.sitsCompanion4);
|
|
es3File3.Save<string>("SitsNecholai", this.sitsNecholai);
|
|
es3File3.Sync();
|
|
filename = Records.x.openBook + "/CreatureLocations.es3";
|
|
this.saveFile.Save<List<string>>("CreaturesMapXml", this.creaturesMapXml);
|
|
this.saveFile.Save<List<string>>("CreatureMapsNew", this.creaturesMapNew);
|
|
this.saveFile.Save<List<string>>("CreatureMapsOld", this.creaturesMapOld);
|
|
this.saveFile.Save<List<string>>("CreaturesMapName", this.creaturesMapName);
|
|
this.saveFile.Save<List<int>>("CreaturesMapHostility", this.creaturesMapHostility);
|
|
this.saveFile.Save<List<Vector3>>("CreaturesMapPosition", this.creaturesMapPosition);
|
|
this.saveFile.Save<List<string>>("CreaturesMapState", this.creaturesMapState);
|
|
this.saveFile.Save<List<int>>("CreaturesMapChangeTime", this.creaturesMapChangeTime);
|
|
this.saveFile.Save<List<float>>("CreaturesMapChangeDelay", this.creaturesMapChangeDelay);
|
|
this.saveFile.Save<List<string>>("CreaturesMapGameObject", this.creaturesMapGameObject);
|
|
this.saveFile.Save<List<int>>("CreaturesMapLife", this.creaturesMapLife);
|
|
this.saveFile.Save<List<int>>("CreaturesMapIndex", this.creaturesMapIndex);
|
|
this.saveFile.Save<List<string>>("CreaturesMapMoving", this.creaturesMapMovingFrom);
|
|
this.saveFile.Save<List<Vector3>>("CreaturesMapMovingFromPosition", this.creaturesMapMovingFromPosition);
|
|
this.saveFile.Save<List<string>>("StunnedNPCs", this.stunnedNPCs);
|
|
this.saveFile.Save<List<float>>("StunnedTime", this.stunnedTime);
|
|
this.saveFile.Save<List<string>>("StunnedSaveFiles", this.stunnedSaveFiles);
|
|
this.saveFile.Save<List<string>>("Exiles", this.exiles);
|
|
this.saveFile.Save<List<float>>("ExilesPurseState", this.exilesPurseState);
|
|
this.saveFile.Save<List<string>>("Victims", this.victims);
|
|
this.saveFile.Save<List<string>>("VictimBadgeState", this.victimBadgeState);
|
|
this.saveFile.Save<List<float>>("VictimBadgeStartTime", this.victimBadgeStartTime);
|
|
this.saveFile.Save<List<string>>("VictimTown", this.victimTown);
|
|
this.saveFile.Save<List<string>>("ChangeQuestName", this.changeQuestName);
|
|
this.saveFile.Save<List<float>>("ChangeAtHour", this.changeAtHour);
|
|
this.saveFile.Save<List<string>>("ChangeToState", this.changeToState);
|
|
this.saveFile.Save<List<string>>("ChangeFromState", this.changeFromState);
|
|
this.saveFile.Sync();
|
|
yield return new WaitForSecondsRealtime(0.05f);
|
|
filename = Records.x.openBook + "/Quests.es3";
|
|
Links.x.cellar.SaveGorePiles(filename);
|
|
Links.x.hudControl.SaveWindows();
|
|
if (Links.x.saveLoad)
|
|
{
|
|
Links.x.saveLoad.UpdateSave(Records.x.openBook);
|
|
}
|
|
Records.x.openBook = "AutoSave";
|
|
Links.x.saveKeeper.openBook = "AutoSave";
|
|
if (showNotifier && !Records.x.inMenus)
|
|
{
|
|
GC.Collect();
|
|
}
|
|
this.saving = false;
|
|
if (!paused && showNotifier && !Records.x.inMenus)
|
|
{
|
|
Links.x.gameplay.TogglePause(false);
|
|
}
|
|
if (showNotifier && !controlsRemoved)
|
|
{
|
|
this.RemoveControls(false);
|
|
}
|
|
if (this.needsSaveNames.Count > 0)
|
|
{
|
|
Records.x.openBook = this.needsSaveNames[0];
|
|
this.needsSaveNames.RemoveAt(0);
|
|
this.TriggerGlobalSave(Records.x.openBook, false);
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000C4B RID: 3147 RVA: 0x000EFE8C File Offset: 0x000EE08C
|
|
private string SaveTime()
|
|
{
|
|
string text = "";
|
|
float num = Mathf.Round((float)Links.x.gameplay.gameDays);
|
|
float num2 = Mathf.Round(Mathf.Round(Links.x.gameplay.gameHours) / 24f * 10f) / 10f;
|
|
num += num2;
|
|
if (num == 1f)
|
|
{
|
|
text = text + num.ToString() + " day, ";
|
|
}
|
|
else
|
|
{
|
|
text = text + num.ToString() + " days, ";
|
|
}
|
|
text += Links.x.diorama.sceneDisplayName;
|
|
string text2 = DateTime.Now.ToString("hh:mm");
|
|
string text3 = DateTime.Now.ToString("MM/dd/yyyy");
|
|
text += "\n";
|
|
text += text2;
|
|
text += " on ";
|
|
return text + text3;
|
|
}
|
|
|
|
// Token: 0x06000C4C RID: 3148 RVA: 0x000EFF80 File Offset: 0x000EE180
|
|
public void CopyToCheckPoint()
|
|
{
|
|
string persistentDataPath = Application.persistentDataPath;
|
|
string text = persistentDataPath + "/AutoSave";
|
|
string text2 = persistentDataPath + "/CheckpointSave";
|
|
if (Directory.Exists(text2))
|
|
{
|
|
string[] array = Directory.GetFiles(text2);
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
File.Delete(array[i]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Directory.CreateDirectory(text2);
|
|
}
|
|
if (Directory.Exists(text))
|
|
{
|
|
foreach (string text3 in Directory.GetFiles(text))
|
|
{
|
|
string fileName = Path.GetFileName(text3);
|
|
string text4 = Path.Combine(text2, fileName);
|
|
File.Copy(text3, text4);
|
|
}
|
|
}
|
|
Links.x.cameraEffects.Capture("CheckpointSave");
|
|
string text5 = this.SaveTime();
|
|
ES3File es3File = new ES3File("Version.es3");
|
|
es3File.Save<string>("CheckpointSaveTime", text5);
|
|
es3File.Sync();
|
|
if (Links.x.saveLoad)
|
|
{
|
|
Links.x.saveLoad.UpdateSave("CheckpointSave");
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C4D RID: 3149 RVA: 0x000F0075 File Offset: 0x000EE275
|
|
public void ChangeDeadList(string xmlName, bool add)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000C4E RID: 3150 RVA: 0x000F0078 File Offset: 0x000EE278
|
|
public void CircleFromLoad()
|
|
{
|
|
if (this.defenseCircle.Count > 10)
|
|
{
|
|
Vector3 vector = this.defenseCircle[0];
|
|
Vector3 vector2 = this.defenseCircle[1];
|
|
Vector3 vector3 = this.defenseCircle[2];
|
|
Vector3 vector4 = this.defenseCircle[3];
|
|
Vector3 vector5 = this.defenseCircle[4];
|
|
Vector3 vector6 = this.defenseCircle[5];
|
|
Vector3 vector7 = this.defenseCircle[6];
|
|
Vector3 vector8 = this.defenseCircle[7];
|
|
Vector3 vector9 = this.defenseCircle[8];
|
|
Vector3 vector10 = this.defenseCircle[9];
|
|
Vector3 vector11 = this.defenseCircle[10];
|
|
Links.x.gameplay.CircleFromLoad(vector, vector2, vector3, vector4, vector5, vector6, vector7, vector8, vector9, vector10, vector11);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C4F RID: 3151 RVA: 0x000F0150 File Offset: 0x000EE350
|
|
private void SetupSitsInfo()
|
|
{
|
|
if (this.sitsCompanion1 != "" && this.sitsCompanion2 != "")
|
|
{
|
|
DialogueLua.SetVariable("SerpentSaveFileInfo1", string.Concat(new string[] { "brave ", this.sitsCompanion1, " and ", this.sitsCompanion2, " the wise" }));
|
|
}
|
|
DialogueLua.SetVariable("SerpentSaveFileInfo2", this.sitsNecholai);
|
|
}
|
|
|
|
// Token: 0x06000C50 RID: 3152 RVA: 0x000F01D0 File Offset: 0x000EE3D0
|
|
public void CheckForTemporaryCreatures(int type)
|
|
{
|
|
this.returningCreatures.Clear();
|
|
int count = this.creaturesMapXml.Count;
|
|
bool flag = false;
|
|
int currentGameTimeHours = Links.x.gameplay.GetCurrentGameTimeHours();
|
|
for (int i = 0; i < this.creaturesMapXml.Count; i++)
|
|
{
|
|
string text = this.creaturesMapNew[i];
|
|
bool flag2 = true;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
if (text == Links.x.diorama.sceneName)
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.creaturesMapXml[i].Contains("Ghost"))
|
|
{
|
|
flag4 = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Checking temp creature for ",
|
|
Links.x.diorama.sceneName,
|
|
" pass ",
|
|
type.ToString(),
|
|
" hours: ",
|
|
currentGameTimeHours.ToString(),
|
|
" time until return ",
|
|
(this.creaturesMapChangeTime[i] + 3).ToString(),
|
|
" is same map?",
|
|
flag3.ToString(),
|
|
" name is: ",
|
|
this.creaturesMapXml[i]
|
|
}));
|
|
}
|
|
if (currentGameTimeHours > this.creaturesMapChangeTime[i] + 24 && this.creaturesMapChangeTime[i] >= 0 && type == 0 && !flag4)
|
|
{
|
|
if (this.creaturesMapIndex[i] > -1)
|
|
{
|
|
flag2 = false;
|
|
string text2 = string.Concat(new string[]
|
|
{
|
|
"AutoSave/Creature_",
|
|
this.creaturesMapOld[i],
|
|
"_",
|
|
this.creaturesMapGameObject[i],
|
|
".es3"
|
|
});
|
|
if (flag)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Pass 1 for ",
|
|
Links.x.diorama.sceneName,
|
|
" sending npc back ",
|
|
this.creaturesMapXml[i],
|
|
" ",
|
|
text2,
|
|
" ",
|
|
ES3.FileExists(text2).ToString(),
|
|
" ",
|
|
this.creaturesMapOld[i]
|
|
}));
|
|
}
|
|
if (ES3.FileExists(text2))
|
|
{
|
|
this.saveFileTemporary = new ES3File(text2);
|
|
this.positions = this.saveFileTemporary.Load<List<Vector4>>("Positions");
|
|
this.maps = this.saveFileTemporary.Load<List<string>>("Maps");
|
|
int num = this.creaturesMapIndex[i];
|
|
this.positions[num] = Vector3.zero;
|
|
this.maps[num] = this.creaturesMapOld[i];
|
|
this.saveFileTemporary.Save<List<Vector4>>("Positions", this.positions);
|
|
this.saveFileTemporary.Save<List<string>>("Maps", this.maps);
|
|
this.saveFileTemporary.Sync();
|
|
this.returningCreatures.Add(i);
|
|
}
|
|
else
|
|
{
|
|
this.creaturesMapChangeTime[i] = -1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.creaturesMapChangeTime[i] = -1;
|
|
}
|
|
}
|
|
if (flag2 && flag3)
|
|
{
|
|
string text3 = this.creaturesMapOld[i];
|
|
string text4 = this.creaturesMapXml[i];
|
|
int characterCreatureIndex = this.GetCharacterCreatureIndex(text4);
|
|
if (characterCreatureIndex > -1)
|
|
{
|
|
if (type == 1 && text == text3 && !flag4)
|
|
{
|
|
CreatureActions creatureActions = Links.x.diorama.MatchCreatureActions(this.creaturesMapGameObject[i]);
|
|
if (flag)
|
|
{
|
|
string text5 = "found original map for temporary creature, returning to: ";
|
|
CreatureActions creatureActions2 = creatureActions;
|
|
Debug.Log(text5 + ((creatureActions2 != null) ? creatureActions2.ToString() : null));
|
|
}
|
|
if (creatureActions)
|
|
{
|
|
Vector3 playerStartingPosition = Links.x.gaia.playerStartingPosition;
|
|
GraphNode playerStartingNode = Links.x.gaia.playerStartingNode;
|
|
if (creatureActions.ReturnSingleToMap(this.creaturesMapName[i], this.creaturesMapHostility[i], text4, characterCreatureIndex, text3, playerStartingPosition, this.creaturesMapState[i], this.creaturesMapLife[i], "", this.creaturesMapIndex[i]))
|
|
{
|
|
creatureActions.UpdateDelays(this.creaturesMapChangeDelay[i], i, this.creaturesMapMovingFrom[i]);
|
|
if (this.creaturesMapChangeDelay[i] > 0f && this.creaturesMapHostility[i] >= 2)
|
|
{
|
|
creatureActions.hunting = true;
|
|
}
|
|
creatureActions.temporaryStartNode = Links.x.gaia.playerStartingNode;
|
|
Debug.Log("Returned creature to main script " + text4 + " " + this.creaturesMapChangeDelay[i].ToString());
|
|
this.returningCreatures.Add(i);
|
|
flag2 = false;
|
|
}
|
|
}
|
|
}
|
|
if (flag2 && type == 2)
|
|
{
|
|
Vector3 vector = this.creaturesMapPosition[i];
|
|
int num2 = this.creaturesMapLife[i];
|
|
if (num2 > 0)
|
|
{
|
|
if (flag)
|
|
{
|
|
string text6 = "Adding new creature ";
|
|
string text7 = text4;
|
|
string text8 = " ";
|
|
Vector3 vector2 = vector;
|
|
Debug.Log(text6 + text7 + text8 + vector2.ToString());
|
|
}
|
|
if (vector == Vector3.zero)
|
|
{
|
|
vector = Links.x.gaia.playerStartingPosition;
|
|
}
|
|
if (flag)
|
|
{
|
|
string[] array = new string[8];
|
|
array[0] = "Adding new creature ";
|
|
array[1] = text4;
|
|
array[2] = " ";
|
|
array[3] = text3;
|
|
array[4] = " ";
|
|
int num3 = 5;
|
|
Vector3 vector2 = vector;
|
|
array[num3] = vector2.ToString();
|
|
array[6] = " ";
|
|
array[7] = this.creaturesMapChangeDelay[i].ToString();
|
|
Debug.Log(string.Concat(array));
|
|
}
|
|
Links.x.diorama.SetupTemporaryCreatures(this.creaturesMapName[i], this.creaturesMapHostility[i], text4, characterCreatureIndex, text3, this.creaturesMapMovingFrom[i], vector, this.creaturesMapState[i], num2, "", this.creaturesMapIndex[i], this.creaturesMapChangeDelay[i]);
|
|
this.creaturesMapChangeDelay[i] = 0f;
|
|
}
|
|
else
|
|
{
|
|
string text9 = string.Concat(new string[]
|
|
{
|
|
"AutoSave/Creature_",
|
|
this.creaturesMapOld[i],
|
|
"_",
|
|
this.creaturesMapGameObject[i],
|
|
".es3"
|
|
});
|
|
if (flag)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"sending npc back ",
|
|
this.creaturesMapXml[i],
|
|
" ",
|
|
text9,
|
|
" ",
|
|
ES3.FileExists(text9).ToString(),
|
|
" ",
|
|
this.creaturesMapOld[i],
|
|
" because its dead"
|
|
}));
|
|
}
|
|
if (ES3.FileExists(text9))
|
|
{
|
|
this.saveFileTemporary = new ES3File(text9);
|
|
this.health = this.saveFileTemporary.Load<List<int>>("Health");
|
|
this.maps = this.saveFileTemporary.Load<List<string>>("Maps");
|
|
int num4 = this.creaturesMapIndex[i];
|
|
this.health[num4] = 0;
|
|
this.maps[num4] = this.creaturesMapOld[i];
|
|
this.saveFileTemporary.Save<List<int>>("Health", this.health);
|
|
this.saveFileTemporary.Save<List<string>>("Maps", this.maps);
|
|
this.saveFileTemporary.Sync();
|
|
}
|
|
this.returningCreatures.Add(i);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("could not find enum for xmlName " + text4);
|
|
}
|
|
}
|
|
if (this.returningCreatures.Count > 0)
|
|
{
|
|
int num5 = this.returningCreatures[0];
|
|
if (flag)
|
|
{
|
|
Debug.Log("returning creature " + this.creaturesMapXml[num5]);
|
|
}
|
|
this.RemoveTemporaryCreature(this.creaturesMapName[num5], this.creaturesMapXml[num5], this.creaturesMapOld[num5], this.creaturesMapIndex[num5]);
|
|
this.returningCreatures.Clear();
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C51 RID: 3153 RVA: 0x000F0A24 File Offset: 0x000EEC24
|
|
public int GetCharacterCreatureIndex(string xmlName)
|
|
{
|
|
for (int i = 0; i < this.characterNames.Length; i++)
|
|
{
|
|
if (this.characterNames[i] == xmlName)
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
// Token: 0x06000C52 RID: 3154 RVA: 0x000F0A58 File Offset: 0x000EEC58
|
|
public void RemoveTemporaryCreature(string creaturesName, string xmlName, string originalMap, int mapIndex)
|
|
{
|
|
int count = this.creaturesMapXml.Count;
|
|
int num = -1;
|
|
for (int i = 0; i < this.creaturesMapOld.Count; i++)
|
|
{
|
|
if (this.creaturesMapOld[i] == originalMap && this.creaturesMapName[i] == creaturesName && this.creaturesMapIndex[i] == mapIndex)
|
|
{
|
|
num = i;
|
|
break;
|
|
}
|
|
}
|
|
if (num > -1)
|
|
{
|
|
this.creaturesMapOld.RemoveAt(num);
|
|
this.creaturesMapNew.RemoveAt(num);
|
|
this.creaturesMapHostility.RemoveAt(num);
|
|
this.creaturesMapName.RemoveAt(num);
|
|
this.creaturesMapXml.RemoveAt(num);
|
|
this.creaturesMapPosition.RemoveAt(num);
|
|
this.creaturesMapState.RemoveAt(num);
|
|
this.creaturesMapChangeTime.RemoveAt(num);
|
|
this.creaturesMapChangeDelay.RemoveAt(num);
|
|
this.creaturesMapGameObject.RemoveAt(num);
|
|
this.creaturesMapLife.RemoveAt(num);
|
|
this.creaturesMapIndex.RemoveAt(num);
|
|
this.creaturesMapMovingFrom.RemoveAt(num);
|
|
this.creaturesMapMovingFromPosition.RemoveAt(num);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C53 RID: 3155 RVA: 0x000F0B74 File Offset: 0x000EED74
|
|
public void AddTemporaryCreature(string creaturesName, string xmlName, string oldMap, string newMap, int hostility, Vector3 position, string state, string parentName, int life, string savedEffects, int mapIndex, float delay, string movingFromMap, Vector3 movingStartPosition, bool updateMapMoving)
|
|
{
|
|
int num = -1;
|
|
for (int i = 0; i < this.creaturesMapOld.Count; i++)
|
|
{
|
|
Debug.Log(this.creaturesMapOld[i] + " " + oldMap);
|
|
if (this.creaturesMapOld[i] == oldMap)
|
|
{
|
|
Debug.Log(this.creaturesMapName[i] + " " + creaturesName);
|
|
if (this.creaturesMapName[i] == creaturesName)
|
|
{
|
|
Debug.Log(this.creaturesMapIndex[i].ToString() + " " + mapIndex.ToString());
|
|
if (this.creaturesMapIndex[i] == mapIndex)
|
|
{
|
|
num = i;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
bool flag = true;
|
|
if (flag)
|
|
{
|
|
string[] array = new string[20];
|
|
array[0] = "Adding temporary creature ";
|
|
array[1] = creaturesName;
|
|
array[2] = " xml ";
|
|
array[3] = xmlName;
|
|
array[4] = " index ";
|
|
array[5] = num.ToString();
|
|
array[6] = " old map ";
|
|
array[7] = oldMap;
|
|
array[8] = " new map ";
|
|
array[9] = newMap;
|
|
array[10] = " delay ";
|
|
array[11] = delay.ToString();
|
|
array[12] = " pt ";
|
|
int num2 = 13;
|
|
Vector3 vector = position;
|
|
array[num2] = vector.ToString();
|
|
array[14] = " state ";
|
|
array[15] = state;
|
|
array[16] = " map index ";
|
|
array[17] = mapIndex.ToString();
|
|
array[18] = " life ";
|
|
array[19] = life.ToString();
|
|
Debug.Log(string.Concat(array));
|
|
}
|
|
if (num > -1)
|
|
{
|
|
bool flag2 = false;
|
|
if (state == "Purgatory" || state == "Resurrected" || state == "Purgatory2")
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (life <= 0 && !flag2)
|
|
{
|
|
this.RemoveTemporaryCreature(this.creaturesMapName[num], this.creaturesMapXml[num], this.creaturesMapOld[num], this.creaturesMapIndex[num]);
|
|
return;
|
|
}
|
|
if (flag)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"new map ",
|
|
newMap,
|
|
" xml name ",
|
|
xmlName,
|
|
" creature name ",
|
|
creaturesName,
|
|
" ",
|
|
this.creaturesMapIndex[num].ToString()
|
|
}));
|
|
}
|
|
this.creaturesMapNew[num] = newMap;
|
|
this.creaturesMapHostility[num] = hostility;
|
|
this.creaturesMapName[num] = creaturesName;
|
|
this.creaturesMapXml[num] = xmlName;
|
|
this.creaturesMapPosition[num] = position;
|
|
this.creaturesMapState[num] = state;
|
|
this.creaturesMapChangeTime[num] = Links.x.gameplay.GetCurrentGameTimeHours();
|
|
this.creaturesMapChangeDelay[num] = delay;
|
|
this.creaturesMapGameObject[num] = parentName;
|
|
this.creaturesMapLife[num] = life;
|
|
if (updateMapMoving)
|
|
{
|
|
this.creaturesMapMovingFrom[num] = movingFromMap;
|
|
this.creaturesMapMovingFromPosition[num] = movingStartPosition;
|
|
return;
|
|
}
|
|
}
|
|
else if (life > 0)
|
|
{
|
|
this.creaturesMapOld.Add(oldMap);
|
|
this.creaturesMapNew.Add(newMap);
|
|
this.creaturesMapHostility.Add(hostility);
|
|
this.creaturesMapName.Add(creaturesName);
|
|
this.creaturesMapXml.Add(xmlName);
|
|
this.creaturesMapPosition.Add(position);
|
|
this.creaturesMapState.Add(state);
|
|
this.creaturesMapChangeTime.Add(Links.x.gameplay.GetCurrentGameTimeHours());
|
|
this.creaturesMapChangeDelay.Add(delay);
|
|
this.creaturesMapGameObject.Add(parentName);
|
|
this.creaturesMapLife.Add(life);
|
|
this.creaturesMapIndex.Add(mapIndex);
|
|
this.creaturesMapMovingFrom.Add(movingFromMap);
|
|
this.creaturesMapMovingFromPosition.Add(movingStartPosition);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C54 RID: 3156 RVA: 0x000F0F54 File Offset: 0x000EF154
|
|
public void ReturnTemporaryCreatureToPreviousMap(string creaturesName, string xmlName, int mapIndex, string oldMap)
|
|
{
|
|
int num = -1;
|
|
for (int i = 0; i < this.creaturesMapOld.Count; i++)
|
|
{
|
|
if (this.creaturesMapOld[i] == oldMap && this.creaturesMapName[i] == creaturesName && this.creaturesMapIndex[i] == mapIndex)
|
|
{
|
|
num = i;
|
|
break;
|
|
}
|
|
}
|
|
Debug.Log("Returning creature following player " + creaturesName + " to map, index is " + num.ToString());
|
|
if (num > -1)
|
|
{
|
|
this.creaturesMapNew[num] = this.creaturesMapMovingFrom[num];
|
|
this.creaturesMapName[num] = creaturesName;
|
|
this.creaturesMapChangeDelay[num] = 0f;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C55 RID: 3157 RVA: 0x000F100B File Offset: 0x000EF20B
|
|
public void StartBribe()
|
|
{
|
|
this.Bribe(1f, true, true, "", false);
|
|
}
|
|
|
|
// Token: 0x06000C56 RID: 3158 RVA: 0x000F1020 File Offset: 0x000EF220
|
|
public void StartForgiveness()
|
|
{
|
|
this.Bribe(1f, false, true, "", true);
|
|
}
|
|
|
|
// Token: 0x06000C57 RID: 3159 RVA: 0x000F1038 File Offset: 0x000EF238
|
|
private void Bribe(float t, bool fromDialogue, bool all, string single, bool forgiven)
|
|
{
|
|
for (int i = 0; i < this.victims.Count; i++)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Starting bribe ",
|
|
this.victims[i],
|
|
" ",
|
|
this.victimTown[i],
|
|
" ",
|
|
all.ToString(),
|
|
" ",
|
|
forgiven.ToString()
|
|
}));
|
|
if (this.victims[i] != "" && ((all && (this.victimTown[i] == Links.x.diorama.sceneName || this.victimBadgeState[i] == "Remove")) || single == this.victims[i]))
|
|
{
|
|
Library.Characters pcrowFromName = Links.x.library.GetPCRowFromName(this.victims[i]);
|
|
Links.x.hudControl.RemoveBribeBadge(this.victims[i]);
|
|
Character character = Links.x.diorama.FindCharacterAnyState(this.victims[i]);
|
|
if (character)
|
|
{
|
|
character.attackingUntilBribe = false;
|
|
}
|
|
this.victimBadgeStartTime[i] = -1f;
|
|
this.victims[i] = "";
|
|
this.victimBadgeState[i] = "";
|
|
this.victimTown[i] = "";
|
|
if (fromDialogue)
|
|
{
|
|
Links.x.gameFeed.AddFeed("Cleared of crime against " + pcrowFromName._DisplayName + " (Reparations made)");
|
|
}
|
|
else if (!forgiven)
|
|
{
|
|
Links.x.gameFeed.AddFeed("Cleared of crime against " + pcrowFromName._DisplayName + " (No witnesses)");
|
|
}
|
|
else
|
|
{
|
|
Links.x.gameFeed.AddFeed("Forgiven of crime against " + pcrowFromName._DisplayName);
|
|
}
|
|
}
|
|
}
|
|
this.victimBadgeStartTime.RemoveAll((float item) => item == -1f);
|
|
this.victimBadgeState.RemoveAll((string item) => item == "");
|
|
this.victims.RemoveAll((string item) => item == "");
|
|
this.victimTown.RemoveAll((string item) => item == "");
|
|
this.BribeBadgeCount();
|
|
}
|
|
|
|
// Token: 0x06000C58 RID: 3160 RVA: 0x000F1300 File Offset: 0x000EF500
|
|
public void SetupBribeBadges(string sceneName)
|
|
{
|
|
for (int i = 0; i < this.victims.Count; i++)
|
|
{
|
|
if (this.victimTown[i] == sceneName)
|
|
{
|
|
bool flag = false;
|
|
if (this.victimBadgeState[i] == "StunnedWaiting")
|
|
{
|
|
flag = true;
|
|
}
|
|
Links.x.hudControl.AddBribeBadge(this.victims[i], this.victimBadgeStartTime[i], flag, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C59 RID: 3161 RVA: 0x000F137C File Offset: 0x000EF57C
|
|
public int BribeBadgeCount()
|
|
{
|
|
int num = 0;
|
|
if (!Links.x.gaia.sceneLoaded)
|
|
{
|
|
return 0;
|
|
}
|
|
for (int i = 0; i < this.victims.Count; i++)
|
|
{
|
|
if (this.victimTown[i] == Links.x.diorama.sceneName && this.victimBadgeState[i] != "StunnedWaiting")
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
this.badgeCount = num;
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000C5A RID: 3162 RVA: 0x000F13FC File Offset: 0x000EF5FC
|
|
public int BribeBadgeCountOld()
|
|
{
|
|
int num = 0;
|
|
for (int i = 0; i < this.victims.Count; i++)
|
|
{
|
|
if (this.victimTown[i] == Links.x.diorama.sceneName)
|
|
{
|
|
string text = this.victimBadgeState[i];
|
|
if (text != "StunnedWaiting" && text != "Seen" && text != "Unseen")
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
}
|
|
this.badgeCount = num;
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000C5B RID: 3163 RVA: 0x000F1484 File Offset: 0x000EF684
|
|
public void UpdateBribeState(Character seenCharacter)
|
|
{
|
|
if (this.victims.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
if (seenCharacter.isHostage)
|
|
{
|
|
return;
|
|
}
|
|
if (Records.x.editor)
|
|
{
|
|
Debug.Log("Updating bribe state: " + ((seenCharacter != null) ? seenCharacter.ToString() : null) + " saw crime, added as witness");
|
|
}
|
|
for (int i = 0; i < this.victims.Count; i++)
|
|
{
|
|
if (this.victimBadgeState[i] == "Unseen")
|
|
{
|
|
this.victimBadgeState[i] = "Seen";
|
|
}
|
|
}
|
|
if (!this.witnesses.Contains(seenCharacter))
|
|
{
|
|
this.witnesses.Add(seenCharacter);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C5C RID: 3164 RVA: 0x000F1530 File Offset: 0x000EF730
|
|
public void UpdateBribeBadgeFromTimer(string info)
|
|
{
|
|
for (int i = 0; i < this.victims.Count; i++)
|
|
{
|
|
if (this.victims[i] == info)
|
|
{
|
|
this.victimBadgeState[i] = "Fled";
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C5D RID: 3165 RVA: 0x000F1578 File Offset: 0x000EF778
|
|
public void CombatDoneBribeStates()
|
|
{
|
|
bool flag = false;
|
|
bool flag2 = true;
|
|
bool flag3 = true;
|
|
bool flag4 = false;
|
|
for (int i = 0; i < this.witnesses.Count; i++)
|
|
{
|
|
if (this.witnesses[i])
|
|
{
|
|
if (!this.witnesses[i].dead)
|
|
{
|
|
flag2 = false;
|
|
}
|
|
if (this.witnesses[i].stunned || this.witnesses[i].dead)
|
|
{
|
|
if (this.witnesses[i].stunned)
|
|
{
|
|
flag4 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag3 = false;
|
|
}
|
|
if (Records.x.editor)
|
|
{
|
|
string[] array = new string[8];
|
|
array[0] = "Checking witness ";
|
|
int num = 1;
|
|
Character character = this.witnesses[i];
|
|
array[num] = ((character != null) ? character.ToString() : null);
|
|
array[2] = " all stunned: ";
|
|
array[3] = flag3.ToString();
|
|
array[4] = " any stunned: ";
|
|
array[5] = flag4.ToString();
|
|
array[6] = " all dead: ";
|
|
array[7] = flag2.ToString();
|
|
Debug.Log(string.Concat(array));
|
|
}
|
|
}
|
|
}
|
|
if (this.victims.Count > 0 && Records.x.editor)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"All stunned ",
|
|
flag3.ToString(),
|
|
" any stunned ",
|
|
flag4.ToString(),
|
|
" all dead ",
|
|
flag2.ToString()
|
|
}));
|
|
}
|
|
for (int j = 0; j < this.victims.Count; j++)
|
|
{
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
Character character2 = Links.x.diorama.FindCharacterAnyState(this.victims[j]);
|
|
if (character2)
|
|
{
|
|
if (character2.stunned)
|
|
{
|
|
flag6 = true;
|
|
}
|
|
if (character2.dead)
|
|
{
|
|
flag7 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag7 = true;
|
|
}
|
|
if (flag6 && (flag3 || flag2))
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (flag7 && flag4 && (flag3 || flag2))
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (Records.x.editor)
|
|
{
|
|
string[] array2 = new string[14];
|
|
array2[0] = "wait, need to stun: ";
|
|
array2[1] = flag5.ToString();
|
|
array2[2] = " character stunned: ";
|
|
array2[3] = flag6.ToString();
|
|
array2[4] = " character dead: ";
|
|
array2[5] = flag7.ToString();
|
|
array2[6] = " character is: ";
|
|
int num2 = 7;
|
|
Character character3 = character2;
|
|
array2[num2] = ((character3 != null) ? character3.ToString() : null);
|
|
array2[8] = " badge state is: ";
|
|
array2[9] = this.victimBadgeState[j];
|
|
array2[10] = " witnesses are stunned? ";
|
|
array2[11] = flag3.ToString();
|
|
array2[12] = " dead? ";
|
|
array2[13] = flag2.ToString();
|
|
Debug.Log(string.Concat(array2));
|
|
}
|
|
if (this.victimBadgeState[j] == "Unseen" || (this.victimBadgeState[j] == "Seen" && flag2 && !flag5))
|
|
{
|
|
this.victimBadgeState[j] = "Remove";
|
|
flag = true;
|
|
}
|
|
else if (this.victimBadgeState[j] == "Seen")
|
|
{
|
|
if (flag7)
|
|
{
|
|
if (flag5)
|
|
{
|
|
this.victimBadgeState[j] = "StunnedWaiting";
|
|
this.victimBadgeStartTime[j] = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
}
|
|
else
|
|
{
|
|
this.victimBadgeState[j] = "Dead";
|
|
}
|
|
}
|
|
else if (flag6)
|
|
{
|
|
if (flag5)
|
|
{
|
|
this.victimBadgeState[j] = "StunnedWaiting";
|
|
this.victimBadgeStartTime[j] = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
}
|
|
else
|
|
{
|
|
this.victimBadgeState[j] = "Stunned";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.victimBadgeState[j] = "Fled";
|
|
}
|
|
if (this.victimBadgeState[j] == "StunnedWaiting")
|
|
{
|
|
AnimateButton bribeBadge = Links.x.hudControl.GetBribeBadge(this.victims[j]);
|
|
bribeBadge.id = (int)this.victimBadgeStartTime[j];
|
|
Links.x.hudControl.UpdateBribeBadgeState(bribeBadge, true);
|
|
Character nearestParty = Links.x.GetNearestParty(Links.x.rtsCamera.bokehFollow.position, null, 900f);
|
|
if (nearestParty)
|
|
{
|
|
base.StartCoroutine(this.VictimQuip(character2, nearestParty));
|
|
}
|
|
}
|
|
if (Records.x.editor)
|
|
{
|
|
Debug.Log(this.victimBadgeState[j]);
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.Bribe(0f, false, false, this.victims[j], false);
|
|
Character nearestParty2 = Links.x.GetNearestParty(Links.x.rtsCamera.bokehFollow.position, null, 900f);
|
|
j--;
|
|
if (nearestParty2 && this.victims.Count == 0)
|
|
{
|
|
nearestParty2.StartQuip("None the wiser");
|
|
}
|
|
}
|
|
flag = false;
|
|
}
|
|
this.witnesses.Clear();
|
|
}
|
|
|
|
// Token: 0x06000C5E RID: 3166 RVA: 0x000F1A85 File Offset: 0x000EFC85
|
|
private IEnumerator VictimQuip(Character c, Character near)
|
|
{
|
|
yield return new WaitForSeconds(0.5f);
|
|
if (c && !c.dead)
|
|
{
|
|
near.StartQuip("They'll talk of this when they wake up...");
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000C5F RID: 3167 RVA: 0x000F1A9C File Offset: 0x000EFC9C
|
|
public string CanBribe(string info)
|
|
{
|
|
int i = 0;
|
|
while (i < this.victims.Count)
|
|
{
|
|
if (info == this.victims[i])
|
|
{
|
|
if (this.victimBadgeState[i].Contains("Waiting"))
|
|
{
|
|
return "Stunned";
|
|
}
|
|
if (!(this.victimTown[i] == Links.x.diorama.sceneName))
|
|
{
|
|
return "Out of town";
|
|
}
|
|
if (Links.x.sensory.BribeCharacterNear(Links.x.main, true))
|
|
{
|
|
return "Yes";
|
|
}
|
|
return "Too far";
|
|
}
|
|
else
|
|
{
|
|
i++;
|
|
}
|
|
}
|
|
return "No";
|
|
}
|
|
|
|
// Token: 0x06000C60 RID: 3168 RVA: 0x000F1B54 File Offset: 0x000EFD54
|
|
public bool IsVictim(Character character)
|
|
{
|
|
string xmlName = character.stats.xmlName;
|
|
return this.IsVictim(xmlName);
|
|
}
|
|
|
|
// Token: 0x06000C61 RID: 3169 RVA: 0x000F1B74 File Offset: 0x000EFD74
|
|
public bool IsVictim(string characterName)
|
|
{
|
|
return this.victims.Contains(characterName);
|
|
}
|
|
|
|
// Token: 0x06000C62 RID: 3170 RVA: 0x000F1B88 File Offset: 0x000EFD88
|
|
public bool IsFelon(Character character)
|
|
{
|
|
string xmlName = character.stats.xmlName;
|
|
return this.IsFelon(xmlName);
|
|
}
|
|
|
|
// Token: 0x06000C63 RID: 3171 RVA: 0x000F1BA8 File Offset: 0x000EFDA8
|
|
public bool IsFelon(string characterName)
|
|
{
|
|
return this.stunnedNPCs.Contains(characterName);
|
|
}
|
|
|
|
// Token: 0x06000C64 RID: 3172 RVA: 0x000F1BBC File Offset: 0x000EFDBC
|
|
public void AddBribeBadge(Character character, string state, bool fromSave, Character fromCharacter)
|
|
{
|
|
if (!character)
|
|
{
|
|
return;
|
|
}
|
|
if (Links.x.diorama.sceneName == "F4_BanquetIsle")
|
|
{
|
|
return;
|
|
}
|
|
if (character.stats.semizenMagic)
|
|
{
|
|
return;
|
|
}
|
|
if (character.willBeHostile)
|
|
{
|
|
return;
|
|
}
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Adding bribe badge ",
|
|
(character != null) ? character.ToString() : null,
|
|
" ",
|
|
state,
|
|
" ",
|
|
(fromCharacter != null) ? fromCharacter.ToString() : null
|
|
}));
|
|
if (this.victims.IndexOf(character.stats.xmlName) == -1)
|
|
{
|
|
Debug.Log("add victim " + ((character != null) ? character.ToString() : null));
|
|
this.victims.Add(character.stats.xmlName);
|
|
this.victimBadgeStartTime.Add(Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours()));
|
|
this.victimBadgeState.Add(state);
|
|
string text = Links.x.diorama.sceneName;
|
|
if (character.creatures && character.creatures.temporary)
|
|
{
|
|
text = character.creatures.originalScene;
|
|
}
|
|
if (text == "C6_Cave" || text == "C6_Tomb")
|
|
{
|
|
text = "C6_FortenLazure";
|
|
}
|
|
this.victimTown.Add(text);
|
|
bool flag = false;
|
|
if (state == "StunnedUnseen")
|
|
{
|
|
flag = true;
|
|
}
|
|
Links.x.hudControl.AddBribeBadge(character.stats.xmlName, (float)((int)Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours())), flag, fromSave);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C65 RID: 3173 RVA: 0x000F1D72 File Offset: 0x000EFF72
|
|
public void TurnInExiles(bool waited, string specialTurnIn)
|
|
{
|
|
Debug.Log(specialTurnIn);
|
|
base.StartCoroutine(this.TurnIn(waited, specialTurnIn));
|
|
}
|
|
|
|
// Token: 0x06000C66 RID: 3174 RVA: 0x000F1D89 File Offset: 0x000EFF89
|
|
private IEnumerator TurnIn(bool waited, string specialTurnIn)
|
|
{
|
|
yield return new WaitForSecondsRealtime(1f);
|
|
bool lookForSpecialTurnIn = false;
|
|
if (specialTurnIn != "" && specialTurnIn != null)
|
|
{
|
|
lookForSpecialTurnIn = true;
|
|
}
|
|
int num4;
|
|
for (int i = 0; i < this.stunnedNPCs.Count; i = num4 + 1)
|
|
{
|
|
Debug.Log(this.stunnedNPCs[i]);
|
|
Library.Characters pcrowFromName = Links.x.library.GetPCRowFromName(this.stunnedNPCs[i]);
|
|
if (pcrowFromName != null)
|
|
{
|
|
string quest = pcrowFromName._Quest;
|
|
bool flag = this.CanTurnInExile(quest, this.stunnedNPCs[i]);
|
|
if (lookForSpecialTurnIn && flag)
|
|
{
|
|
flag = this.stunnedNPCs[i].Contains(specialTurnIn);
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
specialTurnIn,
|
|
" ",
|
|
this.stunnedNPCs[i],
|
|
" ",
|
|
flag.ToString()
|
|
}));
|
|
}
|
|
if (flag)
|
|
{
|
|
if (QuestLog.GetQuestState(pcrowFromName._Quest) == QuestState.WaitingForExileIsland)
|
|
{
|
|
QuestLog.SetQuestState(pcrowFromName._Quest, QuestState.ExileIsland);
|
|
}
|
|
if (lookForSpecialTurnIn)
|
|
{
|
|
Links.x.diorama.CheckCreaturesThatMightActivate();
|
|
}
|
|
else
|
|
{
|
|
this.exiles.Add(this.stunnedNPCs[i]);
|
|
float num = 12f;
|
|
if (waited)
|
|
{
|
|
num = 0f;
|
|
}
|
|
float num2 = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours()) + num;
|
|
this.exilesPurseState.Add(num2);
|
|
Links.x.forfeits.AddLine(this.stunnedNPCs[i], num2);
|
|
}
|
|
Character character = Links.x.diorama.FindCharacterAnyState(pcrowFromName._Name);
|
|
if (character)
|
|
{
|
|
character.Missing();
|
|
}
|
|
bool flag2 = true;
|
|
if (this.stunnedNPCs[i] == "RozafirStoreKeep")
|
|
{
|
|
this.AddQuestToTimer("D6_NewStoreKeep", 24f, "unassigned", "active", false);
|
|
}
|
|
if (this.stunnedNPCs[i].Contains("RozafirDolki"))
|
|
{
|
|
this.UpdateSaveFileHealth("D6_Rozafir_" + this.stunnedNPCs[i], pcrowFromName._Life, false);
|
|
}
|
|
string[] array = new string[5];
|
|
int num3 = 0;
|
|
Character character2 = character;
|
|
array[num3] = ((character2 != null) ? character2.ToString() : null);
|
|
array[1] = " ";
|
|
array[2] = flag2.ToString();
|
|
array[3] = " ";
|
|
array[4] = this.stunnedSaveFiles[i];
|
|
Debug.Log(string.Concat(array));
|
|
if (!character && flag2)
|
|
{
|
|
this.UpdateSaveFileHealth(this.stunnedSaveFiles[i], 0, false);
|
|
}
|
|
Links.x.hudControl.RemoveStunBadge(this.stunnedNPCs[i], true);
|
|
this.stunnedTime[i] = -1f;
|
|
this.stunnedNPCs[i] = "";
|
|
this.stunnedSaveFiles[i] = "";
|
|
}
|
|
}
|
|
yield return new WaitForSecondsRealtime(0.3f);
|
|
num4 = i;
|
|
}
|
|
this.stunnedTime.RemoveAll((float item) => item == -1f);
|
|
this.stunnedNPCs.RemoveAll((string item) => item == "");
|
|
this.stunnedSaveFiles.RemoveAll((string item) => item == "");
|
|
Links.x.diorama.CheckQuestActivations();
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000C67 RID: 3175 RVA: 0x000F1DA8 File Offset: 0x000EFFA8
|
|
public bool HasSpecialTurnIn(string type)
|
|
{
|
|
for (int i = 0; i < this.stunnedNPCs.Count; i++)
|
|
{
|
|
if (this.stunnedNPCs[i].Contains(type))
|
|
{
|
|
return !this.stunnedNPCs[i].Contains("Dolki") || Links.x.diorama.sceneName.Contains("D6");
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000C68 RID: 3176 RVA: 0x000F1E1C File Offset: 0x000F001C
|
|
public void CheckStunnedStates()
|
|
{
|
|
for (int i = 0; i < this.stunnedNPCs.Count; i++)
|
|
{
|
|
AnimateButton stunBadge = Links.x.hudControl.GetStunBadge(this.stunnedNPCs[i]);
|
|
if (!stunBadge.state)
|
|
{
|
|
string quest = Links.x.library.GetPCRowFromName(this.stunnedNPCs[i])._Quest;
|
|
if (this.CanTurnInExile(quest, this.stunnedNPCs[i]))
|
|
{
|
|
Links.x.hudControl.UpdateBadgeState(stunBadge);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C69 RID: 3177 RVA: 0x000F1EAC File Offset: 0x000F00AC
|
|
public int ExilesToTurnIn()
|
|
{
|
|
int num = 0;
|
|
for (int i = 0; i < this.stunnedNPCs.Count; i++)
|
|
{
|
|
Library.Characters pcrowFromName = Links.x.library.GetPCRowFromName(this.stunnedNPCs[i]);
|
|
if (pcrowFromName != null)
|
|
{
|
|
string quest = pcrowFromName._Quest;
|
|
if (this.CanTurnInExile(quest, this.stunnedNPCs[i]))
|
|
{
|
|
if (quest.Contains("D6_Dolki"))
|
|
{
|
|
if (Links.x.diorama.sceneName.Contains("D6"))
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000C6A RID: 3178 RVA: 0x000F1F40 File Offset: 0x000F0140
|
|
public void SetupStunned()
|
|
{
|
|
for (int i = 0; i < this.stunnedNPCs.Count; i++)
|
|
{
|
|
string quest = Links.x.library.GetPCRowFromName(this.stunnedNPCs[i])._Quest;
|
|
bool flag = this.CanTurnInExile(quest, this.stunnedNPCs[i]);
|
|
Links.x.hudControl.AddStunBadge(this.stunnedNPCs[i], this.stunnedTime[i], flag, true);
|
|
}
|
|
Links.x.forfeits.SetupFromGameLoad();
|
|
}
|
|
|
|
// Token: 0x06000C6B RID: 3179 RVA: 0x000F1FD0 File Offset: 0x000F01D0
|
|
public void AddStunned(Character character, bool fromSave)
|
|
{
|
|
if (!this.stunnedNPCs.Contains(character.stats.xmlName))
|
|
{
|
|
Debug.Log("add stunned " + ((character != null) ? character.ToString() : null));
|
|
this.stunnedNPCs.Add(character.stats.xmlName);
|
|
this.stunnedTime.Add(Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours()));
|
|
this.stunnedSaveFiles.Add(Links.x.diorama.sceneName + "_" + character.creatures.gameObject.name);
|
|
string quest = Links.x.library.GetPCRowFromName(character.stats.xmlName)._Quest;
|
|
bool flag = this.CanTurnInExile(quest, character.stats.xmlName);
|
|
Links.x.hudControl.AddStunBadge(character.stats.xmlName, (float)((int)Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours())), flag, fromSave);
|
|
if (this.IsVictim(character.stats.xmlName))
|
|
{
|
|
int num = this.victims.IndexOf(character.stats.xmlName);
|
|
if (num > -1)
|
|
{
|
|
Links.x.hudControl.RemoveBribeBadge(this.victims[num]);
|
|
this.victimBadgeStartTime.RemoveAt(num);
|
|
this.victims.RemoveAt(num);
|
|
this.victimTown.RemoveAt(num);
|
|
this.victimBadgeState.RemoveAt(num);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C6C RID: 3180 RVA: 0x000F2160 File Offset: 0x000F0360
|
|
public void KilledStunnedVictim(string x)
|
|
{
|
|
bool flag = false;
|
|
Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
for (int i = 0; i < this.victims.Count; i++)
|
|
{
|
|
if (x == this.victims[i] && this.victimBadgeState[i].Contains("Waiting"))
|
|
{
|
|
flag = true;
|
|
Links.x.hudControl.RemoveBribeBadge(this.victims[i]);
|
|
this.victimBadgeStartTime[i] = -1f;
|
|
this.victims[i] = "";
|
|
this.victimTown[i] = "";
|
|
this.victimBadgeState[i] = "";
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.victims.RemoveAll((string item) => item == "");
|
|
this.victimBadgeState.RemoveAll((string item) => item == "");
|
|
this.victimTown.RemoveAll((string item) => item == "");
|
|
this.victimBadgeStartTime.RemoveAll((float item) => item == -1f);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C6D RID: 3181 RVA: 0x000F22E0 File Offset: 0x000F04E0
|
|
public void KilledStunnedFelon(string x)
|
|
{
|
|
bool flag = false;
|
|
Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
for (int i = 0; i < this.stunnedNPCs.Count; i++)
|
|
{
|
|
if (x == this.stunnedNPCs[i])
|
|
{
|
|
this.FailedExileTurnIn(this.stunnedNPCs[i]);
|
|
flag = true;
|
|
this.stunnedTime[i] = -1f;
|
|
this.stunnedNPCs[i] = "";
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.stunnedTime.RemoveAll((float item) => item == -1f);
|
|
this.stunnedNPCs.RemoveAll((string item) => item == "");
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C6E RID: 3182 RVA: 0x000F23C0 File Offset: 0x000F05C0
|
|
public void CheckHourForStunnedBadges()
|
|
{
|
|
bool flag = false;
|
|
float num = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
for (int i = 0; i < this.stunnedNPCs.Count; i++)
|
|
{
|
|
if (this.testQuests && this.editor)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"stunned ",
|
|
this.stunnedNPCs[i],
|
|
" ",
|
|
num.ToString(),
|
|
" ",
|
|
this.stunnedTime[i].ToString()
|
|
}));
|
|
}
|
|
if (num >= this.stunnedTime[i] + 24f)
|
|
{
|
|
this.FailedExileTurnIn(this.stunnedNPCs[i]);
|
|
flag = true;
|
|
this.stunnedTime[i] = -1f;
|
|
this.stunnedNPCs[i] = "";
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.stunnedTime.RemoveAll((float item) => item == -1f);
|
|
this.stunnedNPCs.RemoveAll((string item) => item == "");
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C6F RID: 3183 RVA: 0x000F2510 File Offset: 0x000F0710
|
|
private void FailedExileTurnIn(string characterName)
|
|
{
|
|
Library.Characters pcrowFromName = Links.x.library.GetPCRowFromName(characterName);
|
|
Links.x.gameFeed.AddFeed(pcrowFromName._DisplayName + " regained consciousness");
|
|
string quest = pcrowFromName._Quest;
|
|
if (quest != "" && QuestLog.GetQuestState(quest) == QuestState.WaitingForExileIsland)
|
|
{
|
|
QuestLog.SetQuestState(quest, this.StringToQuestState(pcrowFromName._QuestProofState));
|
|
}
|
|
Links.x.hudControl.RemoveStunBadge(characterName, false);
|
|
if (quest.Contains("C6_GobletGuildThieves") && Links.x.diorama.sceneName == "C6_FortenLazure")
|
|
{
|
|
string text = "LazureInnFightPatronA";
|
|
if (quest == "C6_GobletGuildThievesB")
|
|
{
|
|
text = "LazureInnFightPatronB";
|
|
}
|
|
if (quest == "C6_GobletGuildThievesC")
|
|
{
|
|
text = "LazureInnFightPatronC";
|
|
}
|
|
Character character = Links.x.diorama.FindCharacterAnyState(text);
|
|
if (character && !character.dead)
|
|
{
|
|
character.creatures.CheckQuestSwap();
|
|
}
|
|
}
|
|
if (quest.Contains("D5") && characterName.Contains("WestRuins") && QuestLog.GetQuestState("D5_RobberFortCleared") == QuestState.Success)
|
|
{
|
|
QuestLog.SetQuestState(quest, QuestState.Fled);
|
|
Character character2 = Links.x.diorama.FindCharacterAnyState(characterName);
|
|
if (character2 && !character2.dead && !character2.missing)
|
|
{
|
|
character2.Leave(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C70 RID: 3184 RVA: 0x000F2678 File Offset: 0x000F0878
|
|
public bool CanTurnInExile(string questName, string characterName)
|
|
{
|
|
if (questName.Contains("C6_GobletGuildThieves") && characterName.Contains("Island"))
|
|
{
|
|
bool flag = true;
|
|
Library.Characters pcrowFromName = Links.x.library.GetPCRowFromName(characterName);
|
|
QuestState questState = this.StringToQuestState(pcrowFromName._SetQuestStateOnDeath);
|
|
for (int i = 0; i < 3; i++)
|
|
{
|
|
string text = "C6_GobletGuildThievesA";
|
|
if (i == 1)
|
|
{
|
|
text = "C6_GobletGuildThievesB";
|
|
}
|
|
if (i == 2)
|
|
{
|
|
text = "C6_GobletGuildThievesC";
|
|
}
|
|
if (QuestLog.GetQuestState(text) != questState && QuestLog.GetQuestState(text) != QuestState.WaitingForExileIsland && QuestLog.GetQuestState(text) != QuestState.ExileIsland && QuestLog.GetQuestState(text) != QuestState.PerpIsDead)
|
|
{
|
|
flag = false;
|
|
break;
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
if (characterName.Contains("WestRuins"))
|
|
{
|
|
bool flag2 = true;
|
|
Library.Characters pcrowFromName2 = Links.x.library.GetPCRowFromName(characterName);
|
|
QuestState questState2 = this.StringToQuestState(pcrowFromName2._SetQuestStateOnDeath);
|
|
for (int j = 0; j < 13; j++)
|
|
{
|
|
string text2 = "D5_RobberBaron";
|
|
if (j == 1)
|
|
{
|
|
text2 = "D5_Archer1";
|
|
}
|
|
if (j == 2)
|
|
{
|
|
text2 = "D5_Archer2";
|
|
}
|
|
if (j == 3)
|
|
{
|
|
text2 = "D5_Archer3";
|
|
}
|
|
if (j == 4)
|
|
{
|
|
text2 = "D5_Archer4";
|
|
}
|
|
if (j == 5)
|
|
{
|
|
text2 = "D5_Archer5";
|
|
}
|
|
if (j == 6)
|
|
{
|
|
text2 = "D5_Archer6";
|
|
}
|
|
if (j == 7)
|
|
{
|
|
text2 = "D5_Archer7";
|
|
}
|
|
if (j == 8)
|
|
{
|
|
text2 = "D5_Archer8";
|
|
}
|
|
if (j == 9)
|
|
{
|
|
text2 = "D5_Archer9";
|
|
}
|
|
if (j == 10)
|
|
{
|
|
text2 = "D5_Archer10";
|
|
}
|
|
if (j == 11)
|
|
{
|
|
text2 = "D5_Lookout";
|
|
}
|
|
if (j == 12)
|
|
{
|
|
text2 = "D5_Pagan";
|
|
}
|
|
if (QuestLog.GetQuestState(text2) != questState2 && QuestLog.GetQuestState(text2) != QuestState.WaitingForExileIsland && QuestLog.GetQuestState(text2) != QuestState.ExileIsland && QuestLog.GetQuestState(text2) != QuestState.Fled && QuestLog.GetQuestState(text2) != QuestState.PerpIsDead)
|
|
{
|
|
flag2 = false;
|
|
break;
|
|
}
|
|
}
|
|
return flag2;
|
|
}
|
|
if (questName.Contains("C6_GraveRobber") && !questName.Contains("Topside"))
|
|
{
|
|
bool flag3 = true;
|
|
Library.Characters pcrowFromName3 = Links.x.library.GetPCRowFromName(characterName);
|
|
QuestState questState3 = this.StringToQuestState(pcrowFromName3._SetQuestStateOnDeath);
|
|
for (int k = 0; k < 12; k++)
|
|
{
|
|
string text3 = "C6_GraveRobberMeleeA";
|
|
if (k == 1)
|
|
{
|
|
text3 = "C6_GraveRobberMeleeB";
|
|
}
|
|
if (k == 2)
|
|
{
|
|
text3 = "C6_GraveRobberArcherA";
|
|
}
|
|
if (k == 3)
|
|
{
|
|
text3 = "C6_GraveRobberArcherB";
|
|
}
|
|
if (k == 4)
|
|
{
|
|
text3 = "C6_GraveRobberPaganA";
|
|
}
|
|
if (k == 5)
|
|
{
|
|
text3 = "C6_GraveRobberBothA";
|
|
}
|
|
if (k == 6)
|
|
{
|
|
text3 = "C6_GraveRobberBothB";
|
|
}
|
|
if (k == 7)
|
|
{
|
|
text3 = "C6_GraveRobberBothC";
|
|
}
|
|
if (k == 8)
|
|
{
|
|
text3 = "C6_GraveRobberBothD";
|
|
}
|
|
if (k == 9)
|
|
{
|
|
text3 = "C6_GraveRobberBothE";
|
|
}
|
|
if (k == 10)
|
|
{
|
|
text3 = "C6_GraveRobberBothF";
|
|
}
|
|
if (k == 11)
|
|
{
|
|
text3 = "C6_GraveRobberBothG";
|
|
}
|
|
if (QuestLog.GetQuestState(text3) != questState3 && QuestLog.GetQuestState(text3) != QuestState.WaitingForExileIsland && QuestLog.GetQuestState(text3) != QuestState.ExileIsland && QuestLog.GetQuestState(text3) != QuestState.PerpIsDead)
|
|
{
|
|
flag3 = false;
|
|
break;
|
|
}
|
|
}
|
|
return flag3;
|
|
}
|
|
if (questName.Contains("C6_GraveRobber") && questName.Contains("Topside"))
|
|
{
|
|
bool flag4 = true;
|
|
Library.Characters pcrowFromName4 = Links.x.library.GetPCRowFromName(characterName);
|
|
QuestState questState4 = this.StringToQuestState(pcrowFromName4._SetQuestStateOnDeath);
|
|
for (int l = 0; l < 2; l++)
|
|
{
|
|
string text4 = "C6_GraveRobberTopsideA";
|
|
if (l == 1)
|
|
{
|
|
text4 = "C6_GraveRobberTopsideB";
|
|
}
|
|
if (QuestLog.GetQuestState(text4) != questState4 && QuestLog.GetQuestState(text4) != QuestState.WaitingForExileIsland && QuestLog.GetQuestState(text4) != QuestState.ExileIsland && QuestLog.GetQuestState(text4) != QuestState.PerpIsDead)
|
|
{
|
|
flag4 = false;
|
|
break;
|
|
}
|
|
}
|
|
return flag4;
|
|
}
|
|
if (questName.Contains("D6_Dolki"))
|
|
{
|
|
bool flag5 = true;
|
|
Library.Characters pcrowFromName5 = Links.x.library.GetPCRowFromName(characterName);
|
|
QuestState questState5 = this.StringToQuestState(pcrowFromName5._SetQuestStateOnDeath);
|
|
for (int m = 0; m < 6; m++)
|
|
{
|
|
string text5 = "D6_DolkiA";
|
|
if (m == 1)
|
|
{
|
|
text5 = "D6_DolkiB";
|
|
}
|
|
if (m == 2)
|
|
{
|
|
text5 = "D6_DolkiC";
|
|
}
|
|
if (m == 3)
|
|
{
|
|
text5 = "D6_DolkiD";
|
|
}
|
|
if (m == 4)
|
|
{
|
|
text5 = "D6_DolkiE";
|
|
}
|
|
if (m == 5)
|
|
{
|
|
text5 = "D6_DolkiF";
|
|
}
|
|
if (QuestLog.GetQuestState(text5) != questState5 && QuestLog.GetQuestState(text5) != QuestState.WaitingForExileIsland && QuestLog.GetQuestState(text5) != QuestState.ExileIsland && QuestLog.GetQuestState(text5) != QuestState.PerpIsDead)
|
|
{
|
|
flag5 = false;
|
|
break;
|
|
}
|
|
}
|
|
return flag5;
|
|
}
|
|
if (questName.Contains("StonebridgeBanditA"))
|
|
{
|
|
bool flag6 = true;
|
|
Library.Characters pcrowFromName6 = Links.x.library.GetPCRowFromName(characterName);
|
|
QuestState questState6 = this.StringToQuestState(pcrowFromName6._SetQuestStateOnDeath);
|
|
for (int n = 0; n < 2; n++)
|
|
{
|
|
string text6 = "StonebridgeBanditA";
|
|
if (n == 1)
|
|
{
|
|
text6 = "StonebridgeBanditB";
|
|
}
|
|
QuestState questState7 = QuestLog.GetQuestState(text6);
|
|
if (!this.InQuestStateTurnIn(questState7, questState6))
|
|
{
|
|
flag6 = false;
|
|
break;
|
|
}
|
|
}
|
|
return flag6;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Token: 0x06000C71 RID: 3185 RVA: 0x000F2B5F File Offset: 0x000F0D5F
|
|
private bool InQuestStateTurnIn(QuestState q, QuestState deathState)
|
|
{
|
|
return q == deathState || q == QuestState.WaitingForExileIsland || q == QuestState.ExileIsland || q == QuestState.PerpIsDead;
|
|
}
|
|
|
|
// Token: 0x06000C72 RID: 3186 RVA: 0x000F2B80 File Offset: 0x000F0D80
|
|
public void AddQuestToTimer(string questName, float howLong, string changeFrom, string changeTo, bool constant)
|
|
{
|
|
if (Records.x.editor)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Adding quest timer: ",
|
|
questName,
|
|
" for ",
|
|
howLong.ToString(),
|
|
" hours, change from ",
|
|
changeFrom,
|
|
" to ",
|
|
changeTo,
|
|
", is constant? ",
|
|
constant.ToString()
|
|
}));
|
|
}
|
|
int num = this.changeQuestName.IndexOf(questName);
|
|
if (num == -1)
|
|
{
|
|
this.changeQuestName.Add(questName);
|
|
if (!constant)
|
|
{
|
|
float num2 = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
num2 += howLong;
|
|
this.changeAtHour.Add(num2);
|
|
}
|
|
else
|
|
{
|
|
float num3 = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
num3 += howLong;
|
|
this.changeAtHour.Add(num3 * -1f);
|
|
}
|
|
this.changeToState.Add(changeTo);
|
|
this.changeFromState.Add(changeFrom);
|
|
return;
|
|
}
|
|
if (!constant)
|
|
{
|
|
float num4 = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
num4 += howLong;
|
|
this.changeAtHour[num] = num4;
|
|
}
|
|
else
|
|
{
|
|
float num5 = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
num5 += howLong;
|
|
this.changeAtHour[num] = num5 * -1f;
|
|
}
|
|
this.changeToState[num] = changeTo;
|
|
this.changeFromState[num] = changeFrom;
|
|
}
|
|
|
|
// Token: 0x06000C73 RID: 3187 RVA: 0x000F2CFC File Offset: 0x000F0EFC
|
|
private void ClearTimer(int i)
|
|
{
|
|
this.changeAtHour[i] = 0f;
|
|
this.changeQuestName[i] = "";
|
|
this.changeToState[i] = "";
|
|
this.changeFromState[i] = "";
|
|
}
|
|
|
|
// Token: 0x06000C74 RID: 3188 RVA: 0x000F2D4D File Offset: 0x000F0F4D
|
|
private void UpdateSaveFileHealth(string mapName, string creatureName, int amt, bool missing)
|
|
{
|
|
this.UpdateSaveFileHealth(mapName + "_" + creatureName, amt, missing);
|
|
}
|
|
|
|
// Token: 0x06000C75 RID: 3189 RVA: 0x000F2D64 File Offset: 0x000F0F64
|
|
private void UpdateSaveFileHealth(string full, int amt, bool missing)
|
|
{
|
|
string text = "AutoSave/Creature_" + full + ".es3";
|
|
Debug.Log(text + " " + ES3.FileExists(text).ToString());
|
|
if (ES3.FileExists(text))
|
|
{
|
|
this.saveFileTemporary = new ES3File(text);
|
|
if (missing)
|
|
{
|
|
this.states = this.saveFileTemporary.Load<List<string>>("States");
|
|
this.states[0] = "Gone";
|
|
this.saveFileTemporary.Save<List<string>>("States", this.states);
|
|
}
|
|
this.health = this.saveFileTemporary.Load<List<int>>("Health");
|
|
this.health[0] = amt;
|
|
this.saveFileTemporary.Save<List<int>>("Health", this.health);
|
|
this.saveFileTemporary.Sync();
|
|
return;
|
|
}
|
|
Debug.Log("filename not found to update health from quest timer " + full);
|
|
}
|
|
|
|
// Token: 0x06000C76 RID: 3190 RVA: 0x000F2E4C File Offset: 0x000F104C
|
|
private bool OutOfSight(Character character)
|
|
{
|
|
if (Links.x.rtsCamera.currentBoundsName == "")
|
|
{
|
|
if (character && Links.x.fogOfWar.IsVisible(character.tr.position))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
else if (character && Links.x.fogOfWarInterior.IsVisible(character.tr.position))
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Token: 0x06000C77 RID: 3191 RVA: 0x000F2EC4 File Offset: 0x000F10C4
|
|
public void CheckConstantlyForQuestTimers()
|
|
{
|
|
float num = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
string sceneName = Links.x.diorama.sceneName;
|
|
for (int i = 0; i < this.changeQuestName.Count; i++)
|
|
{
|
|
bool flag = false;
|
|
if (this.changeAtHour[i] < 0f)
|
|
{
|
|
string text = this.changeQuestName[i];
|
|
QuestState questState = QuestLog.GetQuestState(text);
|
|
if (questState == this.StringToQuestState(this.changeFromState[i]) || this.changeFromState[i] == "" || this.changeFromState[i] == "any")
|
|
{
|
|
if (this.testQuests && this.editor)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Checking ",
|
|
text,
|
|
" ",
|
|
this.changeFromState[i],
|
|
" ",
|
|
this.changeToState[i]
|
|
}));
|
|
}
|
|
if (text == "C6_WitchMessage")
|
|
{
|
|
Character character = null;
|
|
if (sceneName.Contains("C6_FortenLazure"))
|
|
{
|
|
character = Links.x.diorama.FindCharacterAnyState("LazureForfeitsChild");
|
|
}
|
|
if (character)
|
|
{
|
|
if (QuestLog.GetQuestState("C6_WitchTask") == QuestState.Unassigned)
|
|
{
|
|
if (this.changeFromState[i] == "unassigned")
|
|
{
|
|
this.changeFromState[i] = "active";
|
|
QuestLog.SetQuestState(text, QuestState.Active);
|
|
}
|
|
if (!character.gameObject.GetComponent<Cinematics>())
|
|
{
|
|
character.gameObject.AddComponent<Cinematics>().TalkToWitch(character, (Vector3)character.creatures.GetWalkNodeIndex(0).position);
|
|
}
|
|
}
|
|
if (questState == QuestState.Success)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
if (text == "C5_CaravanLeaderWalk")
|
|
{
|
|
Character character2 = null;
|
|
if (sceneName.Contains("C5_AbandonedFarm"))
|
|
{
|
|
character2 = Links.x.diorama.FindCharacterAnyState("DuraCampLeader");
|
|
}
|
|
if (character2)
|
|
{
|
|
if (this.changeFromState[i] == "unassigned" && QuestLog.GetQuestState("C5_CaravanLeaderWalk") == QuestState.Unassigned)
|
|
{
|
|
this.changeFromState[i] = "active";
|
|
QuestLog.SetQuestState(text, QuestState.Active);
|
|
if (!character2.gameObject.GetComponent<Cinematics>())
|
|
{
|
|
character2.gameObject.AddComponent<Cinematics>().TalkToPartyPaduriiChildQuest(character2, (Vector3)character2.creatures.GetWalkNodeIndex(0).position);
|
|
}
|
|
}
|
|
if (questState == QuestState.Success)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
if (text == "F5_BanquetFriend")
|
|
{
|
|
Character character3 = null;
|
|
if (sceneName.Contains("F4_BanquetIsle"))
|
|
{
|
|
if (this.changeFromState[i] == "unassigned" || this.changeFromState[i] == "active")
|
|
{
|
|
character3 = Links.x.diorama.FindCharacterAnyState("BanquetIsleFriend");
|
|
}
|
|
else
|
|
{
|
|
character3 = Links.x.GetCreationID(1);
|
|
}
|
|
}
|
|
if (character3)
|
|
{
|
|
if (character3.dead || character3.stunned)
|
|
{
|
|
flag = true;
|
|
}
|
|
else if (this.changeFromState[i] == "unassigned" || this.changeFromState[i] == "active")
|
|
{
|
|
if (QuestLog.GetQuestState("F5_BanquetFriend") == QuestState.Unassigned || QuestLog.GetQuestState("F5_BanquetFriend") == QuestState.Active)
|
|
{
|
|
if (this.changeFromState[i] == "unassigned")
|
|
{
|
|
this.changeFromState[i] = "active";
|
|
QuestLog.SetQuestState(text, QuestState.Active);
|
|
}
|
|
if (!character3.gameObject.GetComponent<Cinematics>())
|
|
{
|
|
character3.gameObject.AddComponent<Cinematics>().BanquetIsleFriend(character3, (Vector3)character3.creatures.GetWalkNodeIndex(0).position);
|
|
}
|
|
}
|
|
if (questState == QuestState.Success)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.changeFromState[i] == "success" && QuestLog.GetQuestState("F5_BanquetFriend") == QuestState.Success && !character3.gameObject.GetComponent<Cinematics>())
|
|
{
|
|
character3.gameObject.AddComponent<Cinematics>().BanquetIsleFriendLeave(character3, character3.tr.position);
|
|
}
|
|
if (questState == QuestState.Complete)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (text == "F5_BanquetPriest")
|
|
{
|
|
Character character4 = null;
|
|
if (sceneName.Contains("F4"))
|
|
{
|
|
character4 = Links.x.diorama.FindCharacterAnyState("LachoPriestStart");
|
|
}
|
|
if (character4)
|
|
{
|
|
if ((this.changeFromState[i] == "unassigned" || this.changeFromState[i] == "active") && (QuestLog.GetQuestState("F5_BanquetPriest") == QuestState.Unassigned || QuestLog.GetQuestState("F5_BanquetPriest") == QuestState.Active))
|
|
{
|
|
if (this.changeFromState[i] == "unassigned")
|
|
{
|
|
this.changeFromState[i] = "active";
|
|
QuestLog.SetQuestState(text, QuestState.Active);
|
|
}
|
|
if (!character4.gameObject.GetComponent<Cinematics>())
|
|
{
|
|
character4.gameObject.AddComponent<Cinematics>().BanquetIslePriest(character4, (Vector3)character4.creatures.GetWalkNodeIndex(0).position);
|
|
}
|
|
}
|
|
if (questState == QuestState.Success)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
if (text == "C6_GobletGuildA")
|
|
{
|
|
Character character5 = null;
|
|
if (sceneName.Contains("C6"))
|
|
{
|
|
character5 = Links.x.diorama.FindCharacterAnyState("LazureGobletGuildUndergroundA");
|
|
}
|
|
if (character5)
|
|
{
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
if (character5)
|
|
{
|
|
if (character5.creatures.CheckDeactivation() || num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (character5.dead)
|
|
{
|
|
flag3 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (flag2)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag3)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character5))
|
|
{
|
|
if (character5)
|
|
{
|
|
character5.Missing();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth("C6_Tomb_LazureGobletGuildUndergroundA", 0, true);
|
|
}
|
|
}
|
|
if (text == "C6_Dan")
|
|
{
|
|
Character character6 = null;
|
|
if (sceneName.Contains("C6"))
|
|
{
|
|
character6 = Links.x.diorama.FindCharacterAnyState("LazureGuardAmputee");
|
|
}
|
|
if (character6)
|
|
{
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
if (character6)
|
|
{
|
|
if (character6.creatures.CheckDeactivation() || (num >= -1f * this.changeAtHour[i] && !character6.stunned && !character6.deactivating))
|
|
{
|
|
flag4 = true;
|
|
}
|
|
if (character6.dead)
|
|
{
|
|
flag5 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (flag4)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag5)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character6))
|
|
{
|
|
if (character6)
|
|
{
|
|
character6.Missing();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth("LazureGuardAmputee", 0, true);
|
|
}
|
|
}
|
|
if (text == "D5_RainAcolyte")
|
|
{
|
|
Character character7 = null;
|
|
if (sceneName.Contains("D5"))
|
|
{
|
|
character7 = Links.x.diorama.FindCharacterAnyState("SoulBoundRainAcolyte");
|
|
}
|
|
if (character7)
|
|
{
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
if (character7)
|
|
{
|
|
if (character7.creatures.CheckDeactivation() || (num >= -1f * this.changeAtHour[i] && !character7.stunned && !character7.deactivating))
|
|
{
|
|
flag6 = true;
|
|
}
|
|
if (character7.dead)
|
|
{
|
|
flag7 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag7 = true;
|
|
}
|
|
if (flag6)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag7)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character7))
|
|
{
|
|
if (character7)
|
|
{
|
|
character7.Missing();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth("SoulBoundRainAcolyte", 0, true);
|
|
}
|
|
}
|
|
if (text == "D6_Licech")
|
|
{
|
|
Character character8 = null;
|
|
if (sceneName.Contains("D6"))
|
|
{
|
|
character8 = Links.x.diorama.FindCharacterAnyState("RozafirStoreKeep");
|
|
}
|
|
if (character8)
|
|
{
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
if (character8)
|
|
{
|
|
if (character8.creatures.CheckDeactivation() || (num >= -1f * this.changeAtHour[i] && !character8.stunned && !character8.deactivating))
|
|
{
|
|
flag8 = true;
|
|
}
|
|
if (character8.dead)
|
|
{
|
|
flag9 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag9 = true;
|
|
}
|
|
if (flag8)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag9)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character8))
|
|
{
|
|
if (character8)
|
|
{
|
|
character8.Missing();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth("RozafirStoreKeep", 0, true);
|
|
}
|
|
}
|
|
if (text == "D5_RainAcolyte_C5" && this.changeFromState[i] == "active")
|
|
{
|
|
Character character9 = null;
|
|
bool flag10 = false;
|
|
if (sceneName.Contains("C5"))
|
|
{
|
|
character9 = Links.x.diorama.FindCharacterAnyState("SoulBoundRainAcolyte");
|
|
}
|
|
Debug.Log(character9);
|
|
if (character9)
|
|
{
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
if (character9)
|
|
{
|
|
if (character9.creatures.CheckDeactivation() || (num >= -1f * this.changeAtHour[i] && !character9.stunned && !character9.deactivating))
|
|
{
|
|
flag11 = true;
|
|
}
|
|
if (character9.dead)
|
|
{
|
|
flag12 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag12 = true;
|
|
}
|
|
if (flag11)
|
|
{
|
|
flag = true;
|
|
flag10 = true;
|
|
}
|
|
if (flag12)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character9))
|
|
{
|
|
if (character9)
|
|
{
|
|
character9.Missing();
|
|
flag10 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
flag10 = true;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
flag10 = true;
|
|
this.UpdateSaveFileHealth("SoulBoundRainAcolyte", 0, true);
|
|
}
|
|
if (flag10)
|
|
{
|
|
Debug.Log("Start rain acolyte second area");
|
|
this.AddQuestToTimer("D5_RainAcolyte_C5", 300f, "activePart2", "activePart3", false);
|
|
return;
|
|
}
|
|
}
|
|
if (text == "D6_NewStoreKeep")
|
|
{
|
|
Character character10 = null;
|
|
if (sceneName.Contains("D6"))
|
|
{
|
|
character10 = Links.x.diorama.FindCharacterAnyState("RozafirNewStorekeep");
|
|
}
|
|
if (character10)
|
|
{
|
|
string text2 = "Day";
|
|
if (!character10.creatures.isDay)
|
|
{
|
|
text2 = "Night";
|
|
}
|
|
if (character10.creatures.NearWalkNode(text2, character10, 25f, false))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (character10.dead)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
}
|
|
else if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
if (text == "D6_LicechGuardsLeave")
|
|
{
|
|
Character character11 = null;
|
|
Character character12 = null;
|
|
if (sceneName.Contains("D6"))
|
|
{
|
|
character11 = Links.x.diorama.FindCharacterAnyState("RozafirStoreGuardA");
|
|
character12 = Links.x.diorama.FindCharacterAnyState("RozafirStoreGuardB");
|
|
}
|
|
if (character11 || character12)
|
|
{
|
|
bool flag13 = false;
|
|
bool flag14 = false;
|
|
bool flag15 = false;
|
|
bool flag16 = false;
|
|
if (character11)
|
|
{
|
|
if (character11.creatures.CheckDeactivation() || num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag13 = true;
|
|
}
|
|
if (character11.dead)
|
|
{
|
|
flag15 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag15 = true;
|
|
}
|
|
if (character12)
|
|
{
|
|
if (character12.creatures.CheckDeactivation() || num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag14 = true;
|
|
}
|
|
if (character12.dead)
|
|
{
|
|
flag16 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag16 = true;
|
|
}
|
|
if (flag13 && flag14)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag13 && flag16)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag14 && flag15)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag15 && flag16)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character11) && this.OutOfSight(character12))
|
|
{
|
|
if (character11)
|
|
{
|
|
character11.Missing();
|
|
}
|
|
if (character12)
|
|
{
|
|
character12.Missing();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth("D6_Rozafir_RozafirStoreGuardA", 0, true);
|
|
this.UpdateSaveFileHealth("D6_Rozafir_RozafirStoreGuardB", 0, true);
|
|
}
|
|
}
|
|
if (text.Contains("D6_Dolki"))
|
|
{
|
|
Character character13 = null;
|
|
string text3 = "RozafirDolkiA";
|
|
if (text.Contains("DolkiB"))
|
|
{
|
|
text3 = "RozafirDolkiB";
|
|
}
|
|
if (text.Contains("DolkiC"))
|
|
{
|
|
text3 = "RozafirDolkiC";
|
|
}
|
|
if (text.Contains("DolkiD"))
|
|
{
|
|
text3 = "RozafirDolkiD";
|
|
}
|
|
if (text.Contains("DolkiE"))
|
|
{
|
|
text3 = "RozafirDolkiE";
|
|
}
|
|
if (text.Contains("DolkiF"))
|
|
{
|
|
text3 = "RozafirDolkiF";
|
|
}
|
|
if (sceneName.Contains("D6") || sceneName.Contains("D5"))
|
|
{
|
|
character13 = Links.x.diorama.FindCharacterAnyState(text3);
|
|
}
|
|
if (character13)
|
|
{
|
|
bool flag17 = false;
|
|
bool flag18 = false;
|
|
if (character13)
|
|
{
|
|
if (this.changeToState[i] == "activePart3")
|
|
{
|
|
if (character13.creatures.CheckDeactivation() || num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag17 = true;
|
|
}
|
|
if (character13.leashed && !character13.dead)
|
|
{
|
|
character13.leashed = false;
|
|
}
|
|
if (!character13.body.sneaking && !character13.dead)
|
|
{
|
|
character13.body.Sneaking(true);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string text4 = "Day";
|
|
if (!character13.creatures.isDay)
|
|
{
|
|
text4 = "Night";
|
|
}
|
|
if (character13.creatures.NearWalkNode(text4, character13, 25f, false))
|
|
{
|
|
flag17 = true;
|
|
}
|
|
}
|
|
if (character13.dead)
|
|
{
|
|
flag18 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag18 = true;
|
|
}
|
|
if (flag17)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag18)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (character13)
|
|
{
|
|
character13.Missing();
|
|
}
|
|
if (this.changeToState[i] == "activePart3")
|
|
{
|
|
QuestLog.SetQuestState(text, QuestState.ActivePart3);
|
|
this.AddQuestToTimer(text, 1f, "activePart3", "activePart4", true);
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth("D6_Rozafir_" + text3, 0, true);
|
|
}
|
|
}
|
|
if (text == "D6_RenazinInformant")
|
|
{
|
|
Character character14 = null;
|
|
if (sceneName.Contains("D6"))
|
|
{
|
|
character14 = Links.x.diorama.FindCharacterAnyState("RenazinInformantFarmer");
|
|
}
|
|
if (character14)
|
|
{
|
|
bool flag19 = false;
|
|
bool flag20 = false;
|
|
if (character14)
|
|
{
|
|
if (character14.creatures.CheckDeactivation() || num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag19 = true;
|
|
}
|
|
if (character14.dead)
|
|
{
|
|
flag20 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag20 = true;
|
|
}
|
|
if (flag19)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag20)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character14))
|
|
{
|
|
if (character14)
|
|
{
|
|
character14.Missing();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth("D6_Rozafir_RenazinInformantFarmer", 0, true);
|
|
}
|
|
}
|
|
bool flag21 = false;
|
|
string text5 = "";
|
|
string text6 = "";
|
|
string text7 = "";
|
|
if (text == "D6_FarmerToGuard")
|
|
{
|
|
flag21 = true;
|
|
text5 = "D6";
|
|
text6 = "RozafirFarmerI";
|
|
text7 = "D6_Rozafir_RozafirFarmerI";
|
|
}
|
|
if (flag21)
|
|
{
|
|
Character character15 = null;
|
|
if (sceneName.Contains(text5))
|
|
{
|
|
character15 = Links.x.diorama.FindCharacterAnyState(text6);
|
|
}
|
|
if (character15)
|
|
{
|
|
bool flag22 = false;
|
|
bool flag23 = false;
|
|
if (character15)
|
|
{
|
|
if (character15.creatures.CheckDeactivation() || num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag22 = true;
|
|
}
|
|
if (character15.dead)
|
|
{
|
|
flag23 = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag23 = true;
|
|
}
|
|
if (flag22)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag23)
|
|
{
|
|
this.ClearTimer(i);
|
|
flag = false;
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.OutOfSight(character15))
|
|
{
|
|
if (character15)
|
|
{
|
|
character15.Missing();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
if (num >= -1f * this.changeAtHour[i])
|
|
{
|
|
flag = true;
|
|
this.UpdateSaveFileHealth(text7, 0, true);
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
QuestLog.SetQuestState(text, this.StringToQuestState(this.changeToState[i]));
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Setting quest state from timer: ",
|
|
text,
|
|
" from ",
|
|
questState.ToString(),
|
|
" to ",
|
|
QuestLog.GetQuestState(text).ToString()
|
|
}));
|
|
this.ClearTimer(i);
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.ClearTimer(i);
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
}
|
|
}
|
|
if (this.needToRemoveQuestItems)
|
|
{
|
|
Links.x.diorama.CheckQuestActivations();
|
|
this.changeAtHour.RemoveAll((float item) => item == 0f);
|
|
this.changeQuestName.RemoveAll((string item) => item == "");
|
|
this.changeToState.RemoveAll((string item) => item == "");
|
|
this.changeFromState.RemoveAll((string item) => item == "");
|
|
this.needToRemoveQuestItems = false;
|
|
}
|
|
this.constantQuestCheckTimer = Time.timeSinceLevelLoad + 0.5f;
|
|
}
|
|
|
|
// Token: 0x06000C78 RID: 3192 RVA: 0x000F4130 File Offset: 0x000F2330
|
|
public void CheckHourForQuestTimers()
|
|
{
|
|
float num = Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
for (int i = 0; i < this.changeQuestName.Count; i++)
|
|
{
|
|
if (this.testQuests && this.editor)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.changeQuestName[i],
|
|
" ",
|
|
num.ToString(),
|
|
" ",
|
|
this.changeAtHour[i].ToString()
|
|
}));
|
|
}
|
|
if (num >= this.changeAtHour[i] && this.changeAtHour[i] > 0f)
|
|
{
|
|
this.needToRemoveQuestItems = true;
|
|
bool flag = true;
|
|
string text = this.changeQuestName[i];
|
|
if (QuestLog.GetQuestState(text) == this.StringToQuestState(this.changeFromState[i]) || this.changeFromState[i] == "" || this.changeFromState[i] == "any")
|
|
{
|
|
QuestLog.SetQuestState(text, this.StringToQuestState(this.changeToState[i]));
|
|
if (Records.x.editor)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Setting quest state from timer: ",
|
|
text,
|
|
" to ",
|
|
QuestLog.GetQuestState(text).ToString(),
|
|
" ",
|
|
this.changeAtHour[i].ToString(),
|
|
" ",
|
|
num.ToString()
|
|
}));
|
|
}
|
|
if (text.Contains("D6_Dolki"))
|
|
{
|
|
this.AddQuestToTimer(text, 2f, "activePart2", "activePart3", true);
|
|
flag = false;
|
|
}
|
|
if (text.Contains("D6_CropGoblinCamp"))
|
|
{
|
|
Character character = Links.x.diorama.FindCharacterAnyState("RozafirFarmerH");
|
|
if (character)
|
|
{
|
|
character.Leave(true);
|
|
}
|
|
}
|
|
if (text.Contains("D6_FarmerToGuard"))
|
|
{
|
|
this.AddQuestToTimer(text, 1f, "success", "complete", true);
|
|
flag = false;
|
|
}
|
|
if (text == "D6_NewStoreKeep")
|
|
{
|
|
this.AddQuestToTimer(text, 1f, "active", "complete", true);
|
|
flag = false;
|
|
}
|
|
if (text == "D6_LicechGuardsLeave")
|
|
{
|
|
this.AddQuestToTimer(text, 1f, "active", "complete", true);
|
|
flag = false;
|
|
}
|
|
if (text == "D6_RenazinInformant")
|
|
{
|
|
this.AddQuestToTimer(text, 1f, "activePart2", "activePart3", true);
|
|
flag = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Quest timer for " + text + " hit but state is no longer applicable");
|
|
}
|
|
if (flag)
|
|
{
|
|
this.ClearTimer(i);
|
|
}
|
|
}
|
|
}
|
|
if (this.needToRemoveQuestItems)
|
|
{
|
|
this.changeAtHour.RemoveAll((float item) => item == 0f);
|
|
this.changeQuestName.RemoveAll((string item) => item == "");
|
|
this.changeToState.RemoveAll((string item) => item == "");
|
|
this.changeFromState.RemoveAll((string item) => item == "");
|
|
this.needToRemoveQuestItems = false;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C79 RID: 3193 RVA: 0x000F44D0 File Offset: 0x000F26D0
|
|
public bool HasQuestTimer(string questName, string fromName)
|
|
{
|
|
for (int i = 0; i < this.changeQuestName.Count; i++)
|
|
{
|
|
if (this.changeQuestName[i] == questName && this.changeFromState[i] == fromName)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000C7A RID: 3194 RVA: 0x000F4520 File Offset: 0x000F2720
|
|
public void RemoveQuestTimer(string questName)
|
|
{
|
|
for (int i = 0; i < this.changeQuestName.Count; i++)
|
|
{
|
|
if (this.changeQuestName[i] == questName)
|
|
{
|
|
this.ClearTimer(i);
|
|
}
|
|
}
|
|
this.needToRemoveQuestItems = true;
|
|
}
|
|
|
|
// Token: 0x06000C7B RID: 3195 RVA: 0x000F4568 File Offset: 0x000F2768
|
|
public string GetRandomMerchantQuip(string type)
|
|
{
|
|
string text = "";
|
|
if (type == "Expensive")
|
|
{
|
|
int num = Random.Range(0, 5);
|
|
if (num == 0)
|
|
{
|
|
text = "Come back when you have more to spend.";
|
|
}
|
|
if (num == 1)
|
|
{
|
|
text = "You'll need a few more emeralds for that one.";
|
|
}
|
|
if (num == 2)
|
|
{
|
|
text = "That'll cost more than your purse holds.";
|
|
}
|
|
if (num == 3)
|
|
{
|
|
text = "Maybe next time, friend. I'd be throwing you in the debtor cells for that one.";
|
|
}
|
|
if (num == 4)
|
|
{
|
|
text = "Your eyes are larger than your gem purse.";
|
|
}
|
|
}
|
|
if (type == "Purchased")
|
|
{
|
|
int num2 = Random.Range(0, 5);
|
|
if (num2 == 0)
|
|
{
|
|
text = "Thank you.";
|
|
}
|
|
if (num2 == 1)
|
|
{
|
|
text = "Always a pleasure to sell to one of the guard.";
|
|
}
|
|
if (num2 == 2)
|
|
{
|
|
text = "A fine purchase, you won't regret the emeralds spent.";
|
|
}
|
|
if (num2 == 3)
|
|
{
|
|
text = "Your business is always welcome here.";
|
|
}
|
|
if (num2 == 4)
|
|
{
|
|
text = "It's a joy to sell to a patron with such a keen eye.";
|
|
}
|
|
}
|
|
if (type == "Stolen")
|
|
{
|
|
int num3 = Random.Range(0, 2);
|
|
if (num3 == 0)
|
|
{
|
|
text = "Thief!";
|
|
}
|
|
if (num3 == 1)
|
|
{
|
|
text = "Filching fingers, I'll cut them off!";
|
|
}
|
|
}
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x06000C7C RID: 3196 RVA: 0x000F462A File Offset: 0x000F282A
|
|
public void SetShout(string s, float t)
|
|
{
|
|
this.recentShout = s;
|
|
this.lastShoutTime = t;
|
|
}
|
|
|
|
// Token: 0x06000C7D RID: 3197 RVA: 0x000F463A File Offset: 0x000F283A
|
|
public float GetSkillWeight(int skillNumber)
|
|
{
|
|
return this.skillWeights[skillNumber];
|
|
}
|
|
|
|
// Token: 0x06000C7E RID: 3198 RVA: 0x000F4644 File Offset: 0x000F2844
|
|
public int GetRollMean(int d, int ds)
|
|
{
|
|
float num = 0f;
|
|
if (d == 1)
|
|
{
|
|
num = Mathf.Ceil((float)d * (float)ds / 2f);
|
|
}
|
|
if (d == 2)
|
|
{
|
|
if (ds == 2)
|
|
{
|
|
num = 3f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 4f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 6f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 7f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 8f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 9f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 10f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 11f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 12f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 13f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 14f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 15f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 16f;
|
|
}
|
|
}
|
|
if (d == 3)
|
|
{
|
|
if (ds == 2)
|
|
{
|
|
num = 4.5f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 6f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 7.5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 9f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 10.5f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 12f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 13.5f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 15f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 16.5f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 18f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 19.5f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 21f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 22.5f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 24f;
|
|
}
|
|
}
|
|
if (d == 4)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 4f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 6f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 8f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 10f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 12f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 14f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 16f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 18f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 20f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 22f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 24f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 26f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 28f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 30f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 32f;
|
|
}
|
|
}
|
|
if (d == 5)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 5f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 7.5f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 10f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 12.5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 15f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 17.5f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 20f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 22.5f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 25f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 27.5f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 30f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 32.5f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 35f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 37.5f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 40f;
|
|
}
|
|
}
|
|
if (d == 6)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 6f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 9f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 12f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 15f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 18f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 21f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 24f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 27f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 30f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 33f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 36f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 39f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 42f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 45f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 48f;
|
|
}
|
|
}
|
|
if (d == 7)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 7f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 10.5f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 14f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 17.5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 21f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 24.5f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 28f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 31.5f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 35f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 38.5f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 42f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 45.5f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 49f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 52.5f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 56f;
|
|
}
|
|
}
|
|
if (d == 8)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 8f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 12f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 16f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 20f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 24f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 28f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 32f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 36f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 40f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 44f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 48f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 52f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 56f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 60f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 64f;
|
|
}
|
|
}
|
|
if (d == 9)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 9f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 13.5f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 18f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 22.5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 27f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 31.5f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 36f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 40.5f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 45f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 49.5f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 54f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 58.5f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 63f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 67.5f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 72f;
|
|
}
|
|
}
|
|
if (d == 10)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 10f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 15f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 20f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 25f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 30f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 35f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 40f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 45f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 50f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 55f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 60f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 65f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 70f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 75f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 80f;
|
|
}
|
|
}
|
|
if (d == 11)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 11f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 16.5f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 22f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 27.5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 33f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 38.5f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 44f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 49.5f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 55f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 60.5f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 66f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 71.5f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 77f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 82.5f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 88f;
|
|
}
|
|
}
|
|
if (d == 12)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 12f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 18f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 24f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 30f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 36f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 42f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 48f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 54f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 60f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 66f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 72f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 78f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 84f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 90f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 96f;
|
|
}
|
|
}
|
|
if (d == 13)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 13f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 19.5f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 26f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 32.5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 39f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 45.5f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 52f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 58.5f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 65f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 71.5f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 78f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 84.5f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 91f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 97.5f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 104f;
|
|
}
|
|
}
|
|
if (d == 14)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 14f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 21f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 28f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 35f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 42f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 49f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 56f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 63f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 70f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 77f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 84f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 91f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 98f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 105f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 112f;
|
|
}
|
|
}
|
|
if (d == 15)
|
|
{
|
|
if (ds == 1)
|
|
{
|
|
num = 15f;
|
|
}
|
|
if (ds == 2)
|
|
{
|
|
num = 22.5f;
|
|
}
|
|
if (ds == 3)
|
|
{
|
|
num = 30f;
|
|
}
|
|
if (ds == 4)
|
|
{
|
|
num = 37.5f;
|
|
}
|
|
if (ds == 5)
|
|
{
|
|
num = 45f;
|
|
}
|
|
if (ds == 6)
|
|
{
|
|
num = 52.5f;
|
|
}
|
|
if (ds == 7)
|
|
{
|
|
num = 60f;
|
|
}
|
|
if (ds == 8)
|
|
{
|
|
num = 67.5f;
|
|
}
|
|
if (ds == 9)
|
|
{
|
|
num = 75f;
|
|
}
|
|
if (ds == 10)
|
|
{
|
|
num = 82.5f;
|
|
}
|
|
if (ds == 11)
|
|
{
|
|
num = 90f;
|
|
}
|
|
if (ds == 12)
|
|
{
|
|
num = 97.5f;
|
|
}
|
|
if (ds == 13)
|
|
{
|
|
num = 105f;
|
|
}
|
|
if (ds == 14)
|
|
{
|
|
num = 112.5f;
|
|
}
|
|
if (ds == 15)
|
|
{
|
|
num = 120f;
|
|
}
|
|
}
|
|
if (d > 15)
|
|
{
|
|
num = (float)(d + d * ds) / 2f;
|
|
}
|
|
if (num == 0f && ds <= 1)
|
|
{
|
|
num = (float)d;
|
|
}
|
|
if (num == 0f && Records.x.editor)
|
|
{
|
|
Debug.LogError("No Roll Found!! " + d.ToString() + "d" + ds.ToString());
|
|
}
|
|
return (int)Mathf.Ceil(num);
|
|
}
|
|
|
|
// Token: 0x06000C7F RID: 3199 RVA: 0x000F4FB5 File Offset: 0x000F31B5
|
|
public float SongSkillMultiplier(float x)
|
|
{
|
|
return Mathf.Round(x / 20f * 10f) / 10f;
|
|
}
|
|
|
|
// Token: 0x06000C80 RID: 3200 RVA: 0x000F4FD0 File Offset: 0x000F31D0
|
|
public int GetElixirComponentID(string n)
|
|
{
|
|
int num = -1;
|
|
if (n.Contains("Nap"))
|
|
{
|
|
num = Links.x.library.GetInvRowID("Mushroom");
|
|
}
|
|
if (num == -1 && (n.Contains("Fire") || n.Contains("Spark")))
|
|
{
|
|
num = Links.x.library.GetInvRowID("ShinyRock");
|
|
}
|
|
if (num == -1 && n.Contains("Water"))
|
|
{
|
|
num = Links.x.library.GetInvRowID("Shell");
|
|
}
|
|
if (num == -1 && n.Contains("Trip"))
|
|
{
|
|
num = Links.x.library.GetInvRowID("Acorn");
|
|
}
|
|
if (num == -1 && n.Contains("Poison"))
|
|
{
|
|
num = Links.x.library.GetInvRowID("Frog");
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000C81 RID: 3201 RVA: 0x000F50A8 File Offset: 0x000F32A8
|
|
public QuestState StringToQuestState(string txtState)
|
|
{
|
|
QuestState questState = QuestState.Unassigned;
|
|
if (txtState == "unassigned")
|
|
{
|
|
questState = QuestState.Unassigned;
|
|
}
|
|
if (txtState == "active")
|
|
{
|
|
questState = QuestState.Active;
|
|
}
|
|
if (txtState == "success")
|
|
{
|
|
questState = QuestState.Success;
|
|
}
|
|
if (txtState == "failure")
|
|
{
|
|
questState = QuestState.Failure;
|
|
}
|
|
if (txtState == "discussed")
|
|
{
|
|
questState = QuestState.Discussed;
|
|
}
|
|
if (txtState == "abandoned")
|
|
{
|
|
questState = QuestState.Abandoned;
|
|
}
|
|
if (txtState == "returnToNPC")
|
|
{
|
|
questState = QuestState.ReturnToNPC;
|
|
}
|
|
if (txtState == "activePart2")
|
|
{
|
|
questState = QuestState.ActivePart2;
|
|
}
|
|
if (txtState == "waitingForExileIsland")
|
|
{
|
|
questState = QuestState.WaitingForExileIsland;
|
|
}
|
|
if (txtState == "exileIsland")
|
|
{
|
|
questState = QuestState.ExileIsland;
|
|
}
|
|
if (txtState == "perpIsDead")
|
|
{
|
|
questState = QuestState.PerpIsDead;
|
|
}
|
|
if (txtState == "complete")
|
|
{
|
|
questState = QuestState.Complete;
|
|
}
|
|
if (txtState == "activePart3")
|
|
{
|
|
questState = QuestState.ActivePart3;
|
|
}
|
|
if (txtState == "activePart4")
|
|
{
|
|
questState = QuestState.ActivePart4;
|
|
}
|
|
if (txtState == "activePart5")
|
|
{
|
|
questState = QuestState.ActivePart5;
|
|
}
|
|
if (txtState == "activePart6")
|
|
{
|
|
questState = QuestState.ActivePart6;
|
|
}
|
|
return questState;
|
|
}
|
|
|
|
// Token: 0x06000C82 RID: 3202 RVA: 0x000F51D4 File Offset: 0x000F33D4
|
|
public bool FindDemoFiles()
|
|
{
|
|
string fullName = Directory.GetParent(Directory.GetParent(Directory.GetParent(Directory.GetParent(Application.persistentDataPath).FullName).FullName).FullName).FullName;
|
|
string text = fullName + "/Library/Application Support/Hannah and Joseph Games/Banquet for Fools Demo";
|
|
if (this.windows)
|
|
{
|
|
text = fullName + "\\AppData\\LocalLow\\Hannah and Joseph Games\\Banquet for Fools Demo";
|
|
}
|
|
string text2 = text + "/CheckpointSave";
|
|
string text3 = text + "/Version.es3";
|
|
string text4 = "/VinePrison.png";
|
|
string text5 = "/Entangle.png";
|
|
string text6 = "/PukeSpores.png";
|
|
string text7 = "/AttractionSpores.png";
|
|
string text8 = "/FrogTrap.png";
|
|
string text9 = "/CorpseNest.png";
|
|
string text10 = "/CheckpointSave.png";
|
|
if (this.windows)
|
|
{
|
|
text2 = text + "\\CheckpointSave";
|
|
text3 = text2 + "\\Version.es3";
|
|
text4 = "\\VinePrison.png";
|
|
text5 = "\\Entangle.png";
|
|
text6 = "\\PukeSpores.png";
|
|
text7 = "\\AttractionSpores.png";
|
|
text8 = "\\FrogTrap.png";
|
|
text9 = "\\CorpseNest.png";
|
|
text10 = "\\CheckpointSave.png";
|
|
}
|
|
bool flag = false;
|
|
if (Directory.Exists(text2))
|
|
{
|
|
Debug.Log("Found checkpoint save " + text + " " + text2);
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
string persistentDataPath = Application.persistentDataPath;
|
|
string text11 = persistentDataPath + "/CheckpointSave";
|
|
if (Directory.Exists(text2))
|
|
{
|
|
if (Directory.Exists(text11))
|
|
{
|
|
string[] array = Directory.GetFiles(text11);
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
File.Delete(array[i]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Directory.CreateDirectory(text11);
|
|
}
|
|
if (Directory.Exists(text2))
|
|
{
|
|
foreach (string text12 in Directory.GetFiles(text2))
|
|
{
|
|
string fileName = Path.GetFileName(text12);
|
|
string text13 = Path.Combine(text11, fileName);
|
|
File.Copy(text12, text13);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("this save does not exist!");
|
|
}
|
|
for (int j = 0; j < 7; j++)
|
|
{
|
|
string text14 = text4;
|
|
if (j == 1)
|
|
{
|
|
text14 = text5;
|
|
}
|
|
if (j == 2)
|
|
{
|
|
text14 = text6;
|
|
}
|
|
if (j == 3)
|
|
{
|
|
text14 = text7;
|
|
}
|
|
if (j == 4)
|
|
{
|
|
text14 = text8;
|
|
}
|
|
if (j == 5)
|
|
{
|
|
text14 = text9;
|
|
}
|
|
if (j == 6)
|
|
{
|
|
text14 = text10;
|
|
}
|
|
string text15 = persistentDataPath + text14;
|
|
string text16 = text + text14;
|
|
if (File.Exists(text16))
|
|
{
|
|
Debug.Log("Found " + text16 + " " + text15);
|
|
string fileName2 = Path.GetFileName(text16);
|
|
string text17 = Path.Combine(persistentDataPath, fileName2);
|
|
if (!File.Exists(text15))
|
|
{
|
|
File.Copy(text16, text17);
|
|
}
|
|
else
|
|
{
|
|
File.Delete(text15);
|
|
File.Copy(text16, text17);
|
|
}
|
|
}
|
|
}
|
|
ES3File es3File = new ES3File(text3);
|
|
if (es3File.KeyExists("CheckpointSave"))
|
|
{
|
|
string text18 = es3File.Load<string>("CheckpointSave");
|
|
string text19 = es3File.Load<string>("CheckpointSaveTime");
|
|
ES3File es3File2 = new ES3File("Version.es3");
|
|
if (!es3File2.KeyExists("CheckpointSave"))
|
|
{
|
|
es3File2.Save<string>("CheckpointSave", text18);
|
|
es3File2.Save<string>("CheckpointSaveTime", text19);
|
|
es3File2.Sync();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ES3File es3File3 = new ES3File("Version.es3");
|
|
if (!es3File3.KeyExists("CheckpointSave"))
|
|
{
|
|
es3File3.Save<string>("CheckpointSave", "Checkpoint Save");
|
|
es3File3.Save<string>("CheckpointSaveTime", "");
|
|
es3File3.Sync();
|
|
}
|
|
}
|
|
Links.x.saveLoad.UpdateSave("CheckpointSave");
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06000C83 RID: 3203 RVA: 0x000F5520 File Offset: 0x000F3720
|
|
public bool FindSerpentFiles()
|
|
{
|
|
string fullName = Directory.GetParent(Directory.GetParent(Directory.GetParent(Directory.GetParent(Application.persistentDataPath).FullName).FullName).FullName).FullName;
|
|
string text = fullName + "/Library/Application Support/Whalenought Studios/Serpent in the Staglands";
|
|
if (this.windows)
|
|
{
|
|
text = fullName + "\\AppData\\LocalLow\\Whalenought Studios\\Serpent in the Staglands";
|
|
}
|
|
string text2 = text + "/_Auto_Save";
|
|
string text3 = text2 + "/Game.txt";
|
|
string text4 = text + "/_Final_Save";
|
|
string text5 = text4 + "/Game.txt";
|
|
string text6 = text2 + "/Party";
|
|
string text7 = text2 + "/Party";
|
|
if (this.windows)
|
|
{
|
|
text2 = text + "\\_Auto_Save";
|
|
text3 = text2 + "\\Game.txt";
|
|
text4 = text + "\\_Final_Save";
|
|
text5 = text4 + "\\Game.txt";
|
|
text6 = text2 + "\\Party";
|
|
text7 = text4 + "\\Party";
|
|
}
|
|
string text8 = "";
|
|
string text9 = "";
|
|
bool flag = false;
|
|
if (Directory.Exists(text4))
|
|
{
|
|
Debug.Log("Using final save");
|
|
flag = true;
|
|
text8 = text5;
|
|
text9 = text7;
|
|
}
|
|
else if (Directory.Exists(text2))
|
|
{
|
|
Debug.Log("Using auto save");
|
|
flag = true;
|
|
text8 = text3;
|
|
text9 = text6;
|
|
}
|
|
if (flag)
|
|
{
|
|
byte[] array = ES3.LoadRawBytes(text8);
|
|
string @string = Encoding.UTF8.GetString(array);
|
|
new string[0];
|
|
char c = '~';
|
|
string[] array2 = @string.Split(c, StringSplitOptions.None);
|
|
int num = 0;
|
|
string text10 = "";
|
|
foreach (string text11 in array2)
|
|
{
|
|
if (text11.Contains("wolf") && text10.Contains("Wandering"))
|
|
{
|
|
this.sitsAnimal = "Wolf";
|
|
Debug.Log("found wolf");
|
|
}
|
|
if (text11.Contains("lynx") && text10.Contains("Wandering"))
|
|
{
|
|
this.sitsAnimal = "Lynx";
|
|
Debug.Log("found lynx");
|
|
}
|
|
if (text11.Contains("fox") && text10.Contains("Wandering"))
|
|
{
|
|
this.sitsAnimal = "Fox";
|
|
Debug.Log("found fox");
|
|
}
|
|
if (text11.Contains("ram") && text10.Contains("Wandering"))
|
|
{
|
|
this.sitsAnimal = "ram";
|
|
Debug.Log("found ram");
|
|
}
|
|
text10 = text11;
|
|
if (text11.Contains("PartyIDs"))
|
|
{
|
|
new string[0];
|
|
char c2 = ',';
|
|
foreach (string text12 in text11.Split(c2, StringSplitOptions.None))
|
|
{
|
|
string text13 = "";
|
|
if (text12 == "1")
|
|
{
|
|
text13 = "Lookup";
|
|
}
|
|
if (text12 == "2")
|
|
{
|
|
text13 = "Lookup";
|
|
}
|
|
if (text12 == "3")
|
|
{
|
|
text13 = "Lookup";
|
|
}
|
|
if (text12 == "4")
|
|
{
|
|
text13 = "Lookup";
|
|
}
|
|
if (text12 == "5")
|
|
{
|
|
text13 = "Lookup";
|
|
}
|
|
if (text12 == "6")
|
|
{
|
|
text13 = "Vilhelm";
|
|
}
|
|
if (text12 == "7")
|
|
{
|
|
text13 = "Catalina";
|
|
}
|
|
if (text12 == "8")
|
|
{
|
|
text13 = "Viorica";
|
|
}
|
|
if (text12 == "9")
|
|
{
|
|
text13 = "Ionel";
|
|
}
|
|
if (text12 == "10")
|
|
{
|
|
text13 = "Mikalus";
|
|
}
|
|
if (text12 == "11")
|
|
{
|
|
text13 = "Sofia";
|
|
}
|
|
if (text12 == "12")
|
|
{
|
|
text13 = "Oana";
|
|
}
|
|
if (text12 == "13")
|
|
{
|
|
text13 = "Petr";
|
|
}
|
|
if (text12 == "14")
|
|
{
|
|
text13 = "Kavel";
|
|
}
|
|
if (text12 == "15")
|
|
{
|
|
text13 = "Michaela";
|
|
}
|
|
if (text12 == "16")
|
|
{
|
|
text13 = "Filip";
|
|
}
|
|
if (text12 == "17")
|
|
{
|
|
text13 = "Regina";
|
|
}
|
|
if (text12 == "18")
|
|
{
|
|
text13 = "Istav";
|
|
}
|
|
if (text12 == "19")
|
|
{
|
|
text13 = "Notol";
|
|
}
|
|
if (text12 == "20")
|
|
{
|
|
text13 = "Mya";
|
|
}
|
|
if (text12 == "21")
|
|
{
|
|
text13 = "Minodora";
|
|
}
|
|
if (text12 == "22")
|
|
{
|
|
text13 = "Kreel";
|
|
}
|
|
if (text12 == "23")
|
|
{
|
|
text13 = "Ruxandra";
|
|
}
|
|
if (text12 == "24")
|
|
{
|
|
text13 = "Ovidiu";
|
|
}
|
|
if (text12 == "25")
|
|
{
|
|
text13 = "Dragos";
|
|
}
|
|
if (text12 == "26")
|
|
{
|
|
text13 = "Filip";
|
|
}
|
|
if (text12 == "27")
|
|
{
|
|
text13 = "Chestimir";
|
|
}
|
|
if (text12 == "28")
|
|
{
|
|
text13 = "Istav";
|
|
}
|
|
if (text12 == "29")
|
|
{
|
|
text13 = "Notol";
|
|
}
|
|
if (text12 == "30")
|
|
{
|
|
text13 = "Daciana";
|
|
}
|
|
if (text12 == "31")
|
|
{
|
|
text13 = "Petr";
|
|
}
|
|
if (text12 == "32")
|
|
{
|
|
text13 = "Violeta";
|
|
}
|
|
if (text12 == "33")
|
|
{
|
|
text13 = "Silviu";
|
|
}
|
|
if (text12 == "34")
|
|
{
|
|
text13 = "Serafim";
|
|
}
|
|
if (text12 == "35")
|
|
{
|
|
text13 = "Vasile";
|
|
}
|
|
if (text12 == "36")
|
|
{
|
|
text13 = "Liliana";
|
|
}
|
|
if (text12 == "37")
|
|
{
|
|
text13 = "Stela";
|
|
}
|
|
if (text12 == "38")
|
|
{
|
|
text13 = "Margareta";
|
|
}
|
|
if (text12 == "39")
|
|
{
|
|
text13 = "Tereza";
|
|
}
|
|
if (text12 == "40")
|
|
{
|
|
text13 = "Dinu";
|
|
}
|
|
if (text13 == "Lookup")
|
|
{
|
|
string text14 = text12;
|
|
byte[] array5 = ES3.LoadRawBytes(text9 + text12 + ".txt");
|
|
string string2 = Encoding.UTF8.GetString(array5);
|
|
new string[0];
|
|
char c3 = '~';
|
|
string[] array6 = string2.Split(c3, StringSplitOptions.None);
|
|
string text15 = "";
|
|
foreach (string text16 in array6)
|
|
{
|
|
if (text16.Contains("Name") && text15.Contains("Portrait"))
|
|
{
|
|
string text17 = "";
|
|
int num2 = 0;
|
|
string text18 = text16;
|
|
for (int l = 0; l < text18.Length; l++)
|
|
{
|
|
string text19 = text18[l].ToString();
|
|
string text20 = "a";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "A";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "b";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "B";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "c";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "C";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "d";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "D";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "e";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "E";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "f";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "F";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "g";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "G";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "h";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "H";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "i";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "I";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "j";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "J";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "k";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "K";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "l";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "L";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "m";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "M";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "n";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "N";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "o";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "O";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "p";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "P";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "q";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "Q";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "r";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "R";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "s";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "S";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "t";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "T";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "u";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "U";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "v";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "V";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "w";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "W";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "x";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "X";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "y";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "Y";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "z";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
text20 = "Z";
|
|
if (text19.Contains(text20))
|
|
{
|
|
text17 += text20;
|
|
}
|
|
num2++;
|
|
}
|
|
string text21 = Regex.Replace(text17, "Name", "");
|
|
Debug.Log(string.Concat(new string[] { "Created Avatar: ", text17, " ", text21, " ", text14 }));
|
|
text13 = text21;
|
|
if (text14 == "1")
|
|
{
|
|
this.sitsNecholai = text13;
|
|
text13 = "";
|
|
Debug.Log("Found necholai: " + text13);
|
|
}
|
|
}
|
|
text15 = text16;
|
|
}
|
|
}
|
|
if (text13 != "")
|
|
{
|
|
Debug.Log("Found companion: " + text13);
|
|
if (num == 0)
|
|
{
|
|
this.sitsCompanion1 = text13;
|
|
}
|
|
if (num == 1)
|
|
{
|
|
this.sitsCompanion2 = text13;
|
|
}
|
|
if (num == 2)
|
|
{
|
|
this.sitsCompanion3 = text13;
|
|
}
|
|
if (num == 3)
|
|
{
|
|
this.sitsCompanion4 = text13;
|
|
}
|
|
num++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag && this.sitsNecholai != "")
|
|
{
|
|
ES3File es3File = new ES3File("SerpentData.es3");
|
|
es3File.Save<string>("SitsAnimal", this.sitsAnimal);
|
|
es3File.Save<string>("SitsCompanion1", this.sitsCompanion1);
|
|
es3File.Save<string>("SitsCompanion2", this.sitsCompanion2);
|
|
es3File.Save<string>("SitsCompanion3", this.sitsCompanion3);
|
|
es3File.Save<string>("SitsCompanion4", this.sitsCompanion4);
|
|
es3File.Save<string>("SitsNecholai", this.sitsNecholai);
|
|
es3File.Sync();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000C84 RID: 3204 RVA: 0x000F6314 File Offset: 0x000F4514
|
|
public string GetWeaponControllerPrefix(Library.Inventory invRow1, Library.Inventory invRow2, string race, bool ignoreSecondHand)
|
|
{
|
|
string text = invRow1._CharacterAnimation;
|
|
if (invRow2 != null && !ignoreSecondHand && invRow2._ID > 1)
|
|
{
|
|
if (invRow2._Tag == "Weapon" && invRow2._ID > 1)
|
|
{
|
|
text = "_Multihand";
|
|
}
|
|
else if (invRow2._Tag == "Shield")
|
|
{
|
|
text = "_Shield_Blades";
|
|
bool flag = false;
|
|
if (invRow1 != null && invRow1._MainSkill == "Whip")
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
text = "_Shield_FlailWhip";
|
|
}
|
|
}
|
|
}
|
|
if (race == "Yeti")
|
|
{
|
|
bool flag2 = false;
|
|
if (invRow1 != null && invRow1._MainSkill == "Pole")
|
|
{
|
|
flag2 = true;
|
|
}
|
|
bool flag3 = false;
|
|
if (invRow2 != null && invRow2._MainSkill == "Pole")
|
|
{
|
|
flag3 = true;
|
|
}
|
|
string text2 = "";
|
|
int num = 0;
|
|
if (invRow2 != null && !ignoreSecondHand)
|
|
{
|
|
text2 = invRow2._Tag;
|
|
num = invRow2._ID;
|
|
}
|
|
if (text2 == "Weapon" && num > 1)
|
|
{
|
|
text = "_Multihand";
|
|
if (flag3 && flag2)
|
|
{
|
|
text = "_SpearDualWield";
|
|
}
|
|
}
|
|
else if (text2 == "Shield")
|
|
{
|
|
text = "_Shield_SwordScepter";
|
|
if (flag2)
|
|
{
|
|
text = "_SpearShield";
|
|
}
|
|
}
|
|
else if (invRow1._ID <= 1)
|
|
{
|
|
text = "_Unarmed";
|
|
}
|
|
else if (flag2)
|
|
{
|
|
text = "_Spear";
|
|
}
|
|
else
|
|
{
|
|
text = "_SingleHandWield";
|
|
}
|
|
}
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x06000C85 RID: 3205 RVA: 0x000F6460 File Offset: 0x000F4660
|
|
public bool CanSave()
|
|
{
|
|
return (!Records.x.combat || (Records.x.combat && Links.x.combat.npcOnlyCombat)) && Links.x.cellar.NonSavingTileEffects() == 0 && Links.x.gaia.sceneLoaded && !Records.x.IsSaving() && !Records.x.removeControls && !Links.x.creation && !Records.x.miniGame && !Links.x.questEnd.on;
|
|
}
|
|
|
|
// Token: 0x06000C86 RID: 3206 RVA: 0x000F6501 File Offset: 0x000F4701
|
|
public bool InCombat(bool any)
|
|
{
|
|
if (!this.combat)
|
|
{
|
|
return false;
|
|
}
|
|
if (any)
|
|
{
|
|
return this.combat;
|
|
}
|
|
return (!Links.x.combat.npcOnlyCombat || any) && this.combat;
|
|
}
|
|
|
|
// Token: 0x06000C87 RID: 3207 RVA: 0x000F6534 File Offset: 0x000F4734
|
|
public bool IsTextLeft(Character main, Character target)
|
|
{
|
|
ref Vector3 ptr = Links.x.worldCamera.WorldToScreenPoint(main.tr.position);
|
|
Vector3 vector = Links.x.worldCamera.WorldToScreenPoint(target.tr.position);
|
|
return ptr.x >= vector.x;
|
|
}
|
|
|
|
// Token: 0x06000C88 RID: 3208 RVA: 0x000F6586 File Offset: 0x000F4786
|
|
public float ShowSeconds(int overallTime)
|
|
{
|
|
return Mathf.Round((float)overallTime * (0.00027777778f / Links.x.gameplay.sunlightAnimator.animatorSpeed) * 10f) / 10f;
|
|
}
|
|
|
|
// Token: 0x06000C89 RID: 3209 RVA: 0x000F65B6 File Offset: 0x000F47B6
|
|
public float RealSecondsToGameSeconds(float num)
|
|
{
|
|
return num / (0.00027777778f / Links.x.gameplay.sunlightAnimator.animatorSpeed);
|
|
}
|
|
|
|
// Token: 0x06000C8A RID: 3210 RVA: 0x000F65D4 File Offset: 0x000F47D4
|
|
public int GetConstantPathRadius(int wanted)
|
|
{
|
|
int num = 3;
|
|
if (wanted == 1)
|
|
{
|
|
return 8000 * num;
|
|
}
|
|
if (wanted == 2)
|
|
{
|
|
return 16000 * num;
|
|
}
|
|
if (wanted == 3)
|
|
{
|
|
return 22000 * num;
|
|
}
|
|
if (wanted == 4)
|
|
{
|
|
return 31000 * num;
|
|
}
|
|
if (wanted == 5)
|
|
{
|
|
return 38000 * num;
|
|
}
|
|
if (wanted == 6)
|
|
{
|
|
return 44000 * num;
|
|
}
|
|
if (wanted == 7)
|
|
{
|
|
return 55000 * num;
|
|
}
|
|
if (wanted == 8)
|
|
{
|
|
return 62000 * num;
|
|
}
|
|
if (wanted == 9)
|
|
{
|
|
return 70000 * num;
|
|
}
|
|
if (wanted == 10)
|
|
{
|
|
return 80000 * num;
|
|
}
|
|
if (wanted == 11)
|
|
{
|
|
return 90000 * num;
|
|
}
|
|
return 100000 * num;
|
|
}
|
|
|
|
// Token: 0x06000C8B RID: 3211 RVA: 0x000F6674 File Offset: 0x000F4874
|
|
public float GetRadiusEstimate(float radius)
|
|
{
|
|
float num = radius / 2f / 3f / 3f;
|
|
float num2 = 1f;
|
|
if (radius < 10f)
|
|
{
|
|
return 3f * num2;
|
|
}
|
|
if (radius >= 10f && radius < 100f)
|
|
{
|
|
return 6f * num2;
|
|
}
|
|
if (radius >= 100f && radius < 200f)
|
|
{
|
|
return 7f * num2;
|
|
}
|
|
if (radius >= 200f && radius < 300f)
|
|
{
|
|
return 9f * num2;
|
|
}
|
|
if (radius >= 300f && radius < 400f)
|
|
{
|
|
return 10f * num2;
|
|
}
|
|
if (radius >= 400f && radius < 500f)
|
|
{
|
|
return 11f * num2;
|
|
}
|
|
if (radius >= 500f && radius < 600f)
|
|
{
|
|
return 12f * num2;
|
|
}
|
|
if (radius >= 600f && radius < 700f)
|
|
{
|
|
return 8f * num2;
|
|
}
|
|
if (radius >= 700f && radius < 800f)
|
|
{
|
|
return 9f * num2;
|
|
}
|
|
if (radius >= 800f && radius < 900f)
|
|
{
|
|
return 10f * num2;
|
|
}
|
|
if (radius >= 900f && radius < 1000f)
|
|
{
|
|
return 11f * num2;
|
|
}
|
|
if (radius >= 1000f && radius < 1100f)
|
|
{
|
|
return 12f * num2;
|
|
}
|
|
if (radius >= 1100f && radius < 1200f)
|
|
{
|
|
return 13f * num2;
|
|
}
|
|
if (radius >= 1200f && radius < 1300f)
|
|
{
|
|
return 14f * num2;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000C8C RID: 3212 RVA: 0x000F67E4 File Offset: 0x000F49E4
|
|
public Vector4 GetSpellScrollData(int x)
|
|
{
|
|
if (x == 1)
|
|
{
|
|
return new Vector4(15f, 4f, 0f, 0f);
|
|
}
|
|
if (x == 2)
|
|
{
|
|
return new Vector4(10f, 6f, 0f, 0f);
|
|
}
|
|
if (x == 3)
|
|
{
|
|
return new Vector4(1f, 3f, 0f, 0f);
|
|
}
|
|
if (x == 4)
|
|
{
|
|
return new Vector4(40f, 4f, 0f, 0f);
|
|
}
|
|
if (x == 5)
|
|
{
|
|
return new Vector4(15f, 3f, 0f, 0f);
|
|
}
|
|
if (x == 6)
|
|
{
|
|
return new Vector4(30f, 0f, 0f, 0f);
|
|
}
|
|
if (x == 7)
|
|
{
|
|
return new Vector4(1f, 1000f, 0f, 0f);
|
|
}
|
|
if (x == 8)
|
|
{
|
|
return new Vector4(1f, 1000f, 0f, 0f);
|
|
}
|
|
if (x == 9)
|
|
{
|
|
return new Vector4(10f, 0f, 0f, 0f);
|
|
}
|
|
return new Vector4(0f, 0f, 0f, 0f);
|
|
}
|
|
|
|
// Token: 0x06000C8D RID: 3213 RVA: 0x000F691C File Offset: 0x000F4B1C
|
|
public string PaganDescription(Library.Pagan selectedPagan, float slider1, float slider2, float slider3)
|
|
{
|
|
this.str.Clear();
|
|
for (int i = 0; i < 3; i++)
|
|
{
|
|
string text = selectedPagan._Slider1;
|
|
if (i == 1)
|
|
{
|
|
text = selectedPagan._Slider2;
|
|
}
|
|
if (i == 2)
|
|
{
|
|
text = selectedPagan._Slider3;
|
|
}
|
|
float num = slider1;
|
|
if (i == 1)
|
|
{
|
|
num = slider2;
|
|
}
|
|
if (i == 2)
|
|
{
|
|
num = slider3;
|
|
}
|
|
if (text != "" && !this.FoundUniqueSlider(text, num, selectedPagan))
|
|
{
|
|
if (text.Contains("Potency") && i == 0)
|
|
{
|
|
this.str.Append(" by ");
|
|
}
|
|
else if (text.Contains("Reduction") && i == 0)
|
|
{
|
|
this.str.Append(" of ");
|
|
}
|
|
else if (text == "Radius")
|
|
{
|
|
if (i > 0)
|
|
{
|
|
this.str.Append(", ");
|
|
}
|
|
}
|
|
else if (text.Contains("Durability"))
|
|
{
|
|
if (i > 0)
|
|
{
|
|
this.str.Append(" and a ");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" with a ");
|
|
}
|
|
this.str.Append(text.ToLower());
|
|
this.str.Append(" of ");
|
|
}
|
|
else if (text.Contains("Duration") || text.Contains("Time"))
|
|
{
|
|
this.str.Append(" for ");
|
|
}
|
|
else if (text.Contains("Skill") || text.Contains("Power"))
|
|
{
|
|
this.str.Append(" with a ");
|
|
this.str.Append(text.ToLower());
|
|
this.str.Append(" of ");
|
|
}
|
|
else if (text.Contains("Tile"))
|
|
{
|
|
this.str.Append(" with a range of ");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" with ");
|
|
this.str.Append(text.ToLower());
|
|
this.str.Append(" of ");
|
|
}
|
|
this.str.Append(this.R2(num));
|
|
string text2 = this.Label(num, text);
|
|
if (text2 != "")
|
|
{
|
|
this.str.Append(" ");
|
|
this.str.Append(text2);
|
|
}
|
|
}
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000C8E RID: 3214 RVA: 0x000F6B8C File Offset: 0x000F4D8C
|
|
public float SpellDifficulty(Library.Pagan paganRow, float s1, float s2, float s3)
|
|
{
|
|
float num = (float)paganRow._Difficulty;
|
|
float num2 = 1f;
|
|
if (paganRow._Slider2 != "")
|
|
{
|
|
num2 += 1f;
|
|
}
|
|
if (paganRow._Slider3 != "")
|
|
{
|
|
num2 += 1f;
|
|
}
|
|
for (int i = 0; i < 3; i++)
|
|
{
|
|
string text = "";
|
|
if (i == 0)
|
|
{
|
|
text = paganRow._Slider1;
|
|
}
|
|
if (i == 1)
|
|
{
|
|
text = paganRow._Slider2;
|
|
}
|
|
if (i == 2)
|
|
{
|
|
text = paganRow._Slider3;
|
|
}
|
|
float num3 = s1;
|
|
if (i == 1)
|
|
{
|
|
num3 = s2;
|
|
}
|
|
if (i == 2)
|
|
{
|
|
num3 = s3;
|
|
}
|
|
float num4 = paganRow._Slider1Min;
|
|
float slider1Max = paganRow._Slider1Max;
|
|
if (i == 1)
|
|
{
|
|
num4 = paganRow._Slider2Min;
|
|
float slider2Max = paganRow._Slider2Max;
|
|
}
|
|
if (i == 2)
|
|
{
|
|
num4 = paganRow._Slider3Min;
|
|
float slider3Max = paganRow._Slider3Max;
|
|
}
|
|
num3 -= num4;
|
|
num3 += 1f;
|
|
if (text != "")
|
|
{
|
|
if (text == "Radius")
|
|
{
|
|
num += num3 * (20f / num2);
|
|
}
|
|
if (text.Contains("Duration") || text.Contains("Time"))
|
|
{
|
|
if (text.Contains("Spore"))
|
|
{
|
|
num += num3 * (6f / num2);
|
|
}
|
|
else
|
|
{
|
|
num += num3 * (3f / num2);
|
|
}
|
|
}
|
|
if (text == "PartyTarget")
|
|
{
|
|
num += (num3 - 1f) * (10f / num2);
|
|
}
|
|
if (text.Contains("Damage") || text == "Deterioration" || text.Contains("Effects") || text.Contains("Power") || text.Contains("Healing"))
|
|
{
|
|
if (text.Contains("Fire"))
|
|
{
|
|
num += num3 * (10f / num2);
|
|
}
|
|
else if (text.Contains("Vine"))
|
|
{
|
|
num += num3 * (15f / num2);
|
|
}
|
|
else if (text.Contains("Swarm"))
|
|
{
|
|
num += num3 * (6f / num2);
|
|
}
|
|
else if (text.Contains("Deterioration"))
|
|
{
|
|
num += num3 * (15f / num2);
|
|
}
|
|
else
|
|
{
|
|
num += num3 * (10f / num2);
|
|
}
|
|
}
|
|
if (text.Contains("Summons"))
|
|
{
|
|
if (text.Contains("Vine"))
|
|
{
|
|
num += num3 * (80f / num2);
|
|
}
|
|
else
|
|
{
|
|
num += num3 * (30f / num2);
|
|
}
|
|
}
|
|
if (text.Contains("Level"))
|
|
{
|
|
num += num3 * (50f / num2);
|
|
}
|
|
if (text == "Targets")
|
|
{
|
|
num += num3 * (30f / num2);
|
|
}
|
|
if (text.Contains("Skill"))
|
|
{
|
|
num += num3 * (20f / num2);
|
|
}
|
|
}
|
|
}
|
|
return Mathf.Round(num * 0.3f);
|
|
}
|
|
|
|
// Token: 0x06000C8F RID: 3215 RVA: 0x000F6E48 File Offset: 0x000F5048
|
|
public float SpellCostWeight(string s)
|
|
{
|
|
float num = 0f;
|
|
if (s.Contains("Duration") || s.Contains("Time"))
|
|
{
|
|
num = 7f;
|
|
}
|
|
if (s == "Radius")
|
|
{
|
|
num = 30f;
|
|
}
|
|
if (s == "Distance")
|
|
{
|
|
num = 20f;
|
|
}
|
|
if (s == "Tile")
|
|
{
|
|
num = 100f;
|
|
}
|
|
if (s == "PartyTarget")
|
|
{
|
|
num = 250f;
|
|
}
|
|
if (s == "Targets")
|
|
{
|
|
num = 200f;
|
|
}
|
|
if (s.Contains("Summons"))
|
|
{
|
|
num = 70f;
|
|
}
|
|
if (s.Contains("Damage") || s == "Deterioration" || s.Contains("Effects") || s.Contains("Power") || s.Contains("Healing"))
|
|
{
|
|
if (s.Contains("Fire"))
|
|
{
|
|
num = 26f;
|
|
}
|
|
else if (s.Contains("Swarm"))
|
|
{
|
|
num = 22f;
|
|
}
|
|
else
|
|
{
|
|
num = 25f;
|
|
}
|
|
}
|
|
if (s == "Tether")
|
|
{
|
|
num = 10f;
|
|
}
|
|
if (s.Contains("Skill"))
|
|
{
|
|
num = 20f;
|
|
}
|
|
if (s.Contains("Movement"))
|
|
{
|
|
num = 100f;
|
|
}
|
|
return num * 0.75f;
|
|
}
|
|
|
|
// Token: 0x06000C90 RID: 3216 RVA: 0x000F6FA0 File Offset: 0x000F51A0
|
|
public float EnchantCostWeight(string type)
|
|
{
|
|
if (type.Contains("Duration") || type.Contains("Time"))
|
|
{
|
|
return 5f;
|
|
}
|
|
if (type == "Radius")
|
|
{
|
|
return 20f;
|
|
}
|
|
if (type == "Targets")
|
|
{
|
|
return 40f;
|
|
}
|
|
if (type.Contains("Summons"))
|
|
{
|
|
return 40f;
|
|
}
|
|
if (type == "Damage")
|
|
{
|
|
return 10f;
|
|
}
|
|
if (type == "Glare")
|
|
{
|
|
return 10f;
|
|
}
|
|
if (type.Contains("Potency") || type.Contains("Reduction"))
|
|
{
|
|
if (type.Contains("Light"))
|
|
{
|
|
return 12f;
|
|
}
|
|
if (type.Contains("Healing"))
|
|
{
|
|
return 10f;
|
|
}
|
|
if (type.Contains("Strength"))
|
|
{
|
|
return 15f;
|
|
}
|
|
if (type.Contains("Agility"))
|
|
{
|
|
return 8f;
|
|
}
|
|
if (type.Contains("Hit Chance"))
|
|
{
|
|
return 7f;
|
|
}
|
|
if (type.Contains("Poison"))
|
|
{
|
|
return 15f;
|
|
}
|
|
if (type.Contains("Music Resist"))
|
|
{
|
|
return 3f;
|
|
}
|
|
return 10f;
|
|
}
|
|
else
|
|
{
|
|
if (type == "Tile")
|
|
{
|
|
return 26f;
|
|
}
|
|
if (type == "Distance")
|
|
{
|
|
return 20f;
|
|
}
|
|
return 1f;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C91 RID: 3217 RVA: 0x000F70FF File Offset: 0x000F52FF
|
|
public bool SpellWholeNumber(string s)
|
|
{
|
|
return s.Contains("Targets") || s.Contains("Tile") || s.Contains("Summons");
|
|
}
|
|
|
|
// Token: 0x06000C92 RID: 3218 RVA: 0x000F712B File Offset: 0x000F532B
|
|
private float R2(float x)
|
|
{
|
|
return Mathf.Round(x * 10f) / 10f;
|
|
}
|
|
|
|
// Token: 0x06000C93 RID: 3219 RVA: 0x000F7140 File Offset: 0x000F5340
|
|
private string Label(float val, string type)
|
|
{
|
|
string text = "";
|
|
if (type.Contains("Duration") || type.Contains("Time"))
|
|
{
|
|
text = "seconds";
|
|
if (val == 1f)
|
|
{
|
|
text = "second";
|
|
}
|
|
}
|
|
if (type == "Radius")
|
|
{
|
|
text = "half-poles reach";
|
|
if (val == 1f)
|
|
{
|
|
text = "half-pole reach";
|
|
}
|
|
}
|
|
if (type == "PartyTarget")
|
|
{
|
|
text = "targets";
|
|
if (val == 1f)
|
|
{
|
|
text = "target";
|
|
}
|
|
}
|
|
if (type == "Targets")
|
|
{
|
|
text = "target";
|
|
if (val == 1f)
|
|
{
|
|
text = "targets";
|
|
}
|
|
}
|
|
if (type.Contains("Summons"))
|
|
{
|
|
if (type == "Summons")
|
|
{
|
|
text = "summon clump";
|
|
if (val == 1f)
|
|
{
|
|
text = "summon clumps";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
text = "summon";
|
|
if (val == 1f)
|
|
{
|
|
text = "summons";
|
|
}
|
|
}
|
|
}
|
|
if (type == "Damage")
|
|
{
|
|
text = "damage";
|
|
}
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x06000C94 RID: 3220 RVA: 0x000F723C File Offset: 0x000F543C
|
|
private bool FoundUniqueSlider(string n, float v, Library.Pagan selectedPagan)
|
|
{
|
|
v = Mathf.Round(v);
|
|
if (n == "PartyTarget")
|
|
{
|
|
if (v == 1f)
|
|
{
|
|
this.str.Append(". Targets single party member");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(". Targets party");
|
|
}
|
|
return true;
|
|
}
|
|
if (n.Contains("Summons"))
|
|
{
|
|
if (selectedPagan._School == "Fauna")
|
|
{
|
|
if (v == 1f)
|
|
{
|
|
this.str.Append(". Creates one summon clump");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(". Create ");
|
|
this.str.Append(v);
|
|
this.str.Append(" summon clumps");
|
|
}
|
|
}
|
|
else if (v == 1f)
|
|
{
|
|
this.str.Append(". Creates one summon");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(". Create ");
|
|
this.str.Append(v);
|
|
this.str.Append(" summons");
|
|
}
|
|
return true;
|
|
}
|
|
if (n == "Movement")
|
|
{
|
|
if (v < 0.5f)
|
|
{
|
|
this.str.Append(". Moves in random direction.");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(". Moves toward enemy targets.");
|
|
}
|
|
return true;
|
|
}
|
|
if (n == "Targets")
|
|
{
|
|
if (v == 1f)
|
|
{
|
|
this.str.Append(". Targets single enemy");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(". Targets ");
|
|
this.str.Append(v);
|
|
this.str.Append(" enemies");
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000C95 RID: 3221 RVA: 0x000F73DB File Offset: 0x000F55DB
|
|
public int GetRallyAttackCosts(int type, Character character)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
// Token: 0x06000C96 RID: 3222 RVA: 0x000F73DE File Offset: 0x000F55DE
|
|
public bool HigherThanVersion(float demoNum, float num)
|
|
{
|
|
return (Records.x.demo && Records.x.gameVersionDemo > demoNum) || (!Records.x.demo && Records.x.gameVersion > num);
|
|
}
|
|
|
|
// Token: 0x06000C97 RID: 3223 RVA: 0x000F7418 File Offset: 0x000F5618
|
|
public float GetPotencyAdd(string type, float amt, int jewelrySlot)
|
|
{
|
|
if (amt == 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
if (jewelrySlot > 0)
|
|
{
|
|
return amt;
|
|
}
|
|
if (type == "Time")
|
|
{
|
|
return amt * 0.25f;
|
|
}
|
|
if (type == "HitChance" || type == "BlockChance" || type == "EvadeChance")
|
|
{
|
|
return amt * 0.5f;
|
|
}
|
|
if (type == "FlatMods")
|
|
{
|
|
return amt * 0.5f;
|
|
}
|
|
if (type == "Stats")
|
|
{
|
|
return amt * 1f;
|
|
}
|
|
if (type == "ModsDice")
|
|
{
|
|
return amt;
|
|
}
|
|
if (type == "StatsDice")
|
|
{
|
|
return amt;
|
|
}
|
|
if (type == "MoveSpeed")
|
|
{
|
|
return amt * 0.2f;
|
|
}
|
|
if (type == "ActionTime")
|
|
{
|
|
return amt * 0.05f;
|
|
}
|
|
if (type == "Artistry")
|
|
{
|
|
return amt * 1f;
|
|
}
|
|
if (type == "Charming")
|
|
{
|
|
return amt * 1f;
|
|
}
|
|
if (type == "NimbleFingers")
|
|
{
|
|
return amt * 1f;
|
|
}
|
|
if (type == "Spirit")
|
|
{
|
|
return amt * 3f;
|
|
}
|
|
if (type == "SpiritAbsorb")
|
|
{
|
|
return amt * 0.05f;
|
|
}
|
|
if (type == "RallySpeed")
|
|
{
|
|
return amt * 0.05f;
|
|
}
|
|
if (type == "Health")
|
|
{
|
|
return amt * 0.3f;
|
|
}
|
|
if (type == "SkillsDown")
|
|
{
|
|
return amt * 3f;
|
|
}
|
|
if (type == "SightHearing")
|
|
{
|
|
return amt;
|
|
}
|
|
if (type == "ReduceStuns")
|
|
{
|
|
return amt;
|
|
}
|
|
if (type == "ReduceArmor")
|
|
{
|
|
return amt * 0f;
|
|
}
|
|
if (type == "ReduceEqArmor")
|
|
{
|
|
return amt * 0.5f;
|
|
}
|
|
if (type == "Stamina")
|
|
{
|
|
return amt * 0.5f;
|
|
}
|
|
if (type == "StaminaSpeed")
|
|
{
|
|
return amt * 0.1f;
|
|
}
|
|
if (type == "StaminaReduce")
|
|
{
|
|
return amt * 0.1f;
|
|
}
|
|
if (type == "AddActionTime")
|
|
{
|
|
return amt * 0.1f;
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
// Token: 0x06000C98 RID: 3224 RVA: 0x000F7638 File Offset: 0x000F5838
|
|
public float ChargeAmount(float lvl)
|
|
{
|
|
return (lvl + 1f) * 2f;
|
|
}
|
|
|
|
// Token: 0x06000C99 RID: 3225 RVA: 0x000F7647 File Offset: 0x000F5847
|
|
public float BoroMaxWeight()
|
|
{
|
|
return Mathf.Round(0f + this.boroBonus.y * 300f);
|
|
}
|
|
|
|
// Token: 0x06000C9A RID: 3226 RVA: 0x000F7665 File Offset: 0x000F5865
|
|
public bool BoroInParty()
|
|
{
|
|
return QuestLog.GetQuestState("C6_GetBoat") == QuestState.Success || (this.editor && this.editorBoro);
|
|
}
|
|
|
|
// Token: 0x06000C9B RID: 3227 RVA: 0x000F7687 File Offset: 0x000F5887
|
|
public bool HasBanner(string areaName)
|
|
{
|
|
return this.banners.IndexOf(areaName) > -1;
|
|
}
|
|
|
|
// Token: 0x06000C9C RID: 3228 RVA: 0x000F769B File Offset: 0x000F589B
|
|
public int GetBannerCount()
|
|
{
|
|
return this.banners.Count;
|
|
}
|
|
|
|
// Token: 0x06000C9D RID: 3229 RVA: 0x000F76A8 File Offset: 0x000F58A8
|
|
public void NewBoro(string borosID, Vector3 bonuses, Vector4 shrines, string n)
|
|
{
|
|
this.savedBoro.Add(borosID);
|
|
float num = bonuses.x;
|
|
float num2 = bonuses.y;
|
|
float num3 = bonuses.z;
|
|
this.savedBoro.Add(num.ToString());
|
|
this.savedBoro.Add(num2.ToString());
|
|
this.savedBoro.Add(num3.ToString());
|
|
num = shrines.x;
|
|
num2 = shrines.y;
|
|
num3 = shrines.z;
|
|
float w = shrines.w;
|
|
this.savedBoro.Add(num.ToString());
|
|
this.savedBoro.Add(num2.ToString());
|
|
this.savedBoro.Add(num3.ToString());
|
|
this.savedBoro.Add(w.ToString());
|
|
this.savedBoro.Add(n);
|
|
}
|
|
|
|
// Token: 0x06000C9E RID: 3230 RVA: 0x000F7780 File Offset: 0x000F5980
|
|
public void UpdateBoroInSavedList(string borosID, Vector3 bonuses, Vector4 shrines, string n)
|
|
{
|
|
bool flag = false;
|
|
int num = 0;
|
|
for (int i = 0; i < this.savedBoro.Count; i++)
|
|
{
|
|
if (num == 0 && borosID == this.savedBoro[i])
|
|
{
|
|
flag = true;
|
|
this.savedBoro[i + 1] = bonuses.x.ToString();
|
|
this.savedBoro[i + 2] = bonuses.y.ToString();
|
|
this.savedBoro[i + 3] = bonuses.z.ToString();
|
|
this.savedBoro[i + 4] = shrines.x.ToString();
|
|
this.savedBoro[i + 5] = shrines.y.ToString();
|
|
this.savedBoro[i + 6] = shrines.z.ToString();
|
|
this.savedBoro[i + 7] = shrines.w.ToString();
|
|
this.savedBoro[i + 8] = n;
|
|
}
|
|
if (num == 8)
|
|
{
|
|
num = 0;
|
|
}
|
|
else
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
if (!flag)
|
|
{
|
|
this.NewBoro(borosID, bonuses, shrines, n);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000C9F RID: 3231 RVA: 0x000F78AC File Offset: 0x000F5AAC
|
|
public float BoroMaxSpeed()
|
|
{
|
|
return 1f;
|
|
}
|
|
|
|
// Token: 0x06000CA0 RID: 3232 RVA: 0x000F78B3 File Offset: 0x000F5AB3
|
|
public float BoroMaxSpirit()
|
|
{
|
|
return 1f;
|
|
}
|
|
|
|
// Token: 0x06000CA1 RID: 3233 RVA: 0x000F78BA File Offset: 0x000F5ABA
|
|
public float BoroMaxStrength()
|
|
{
|
|
return 1f;
|
|
}
|
|
|
|
// Token: 0x06000CA2 RID: 3234 RVA: 0x000F78C4 File Offset: 0x000F5AC4
|
|
public string GetBoroModel(string borosID, bool withBoat, bool withPacks)
|
|
{
|
|
if (borosID == "BoroA")
|
|
{
|
|
return "Boro_orange_packed_M_Generic";
|
|
}
|
|
if (borosID == "BoroB")
|
|
{
|
|
return "Boro_dark_noPack_M_generic";
|
|
}
|
|
if (borosID == "BoroC")
|
|
{
|
|
return "Boro_gray_noPack_F_generic";
|
|
}
|
|
if (borosID == "BoroD")
|
|
{
|
|
return "Boro_dark_noPack_M_generic";
|
|
}
|
|
if (borosID == "BoroE")
|
|
{
|
|
return "Boro_orange_packed_M_Generic";
|
|
}
|
|
if (borosID == "BoroF")
|
|
{
|
|
return "Boro_gray_noPack_F_generic";
|
|
}
|
|
return "Boro_orange_packed_M_Generic";
|
|
}
|
|
|
|
// Token: 0x06000CA3 RID: 3235 RVA: 0x000F7954 File Offset: 0x000F5B54
|
|
public void AddFirstBoro()
|
|
{
|
|
this.boroID = "BoroE";
|
|
Vector3 vector;
|
|
Vector4 vector2;
|
|
string text;
|
|
int num;
|
|
this.BoroStats(this.boroID, out vector, out vector2, out text, out num, true);
|
|
this.boroName = text;
|
|
this.boroBonus = vector;
|
|
this.boroShrines = vector2;
|
|
this.NewBoro(this.boroID, this.boroBonus, this.boroShrines, this.boroName);
|
|
}
|
|
|
|
// Token: 0x06000CA4 RID: 3236 RVA: 0x000F79B4 File Offset: 0x000F5BB4
|
|
public void CreateBoro(bool withBoat)
|
|
{
|
|
Vector3 vector = this.boroPosition;
|
|
Quaternion quaternion = this.boroRotation;
|
|
float y = this.boroBonus.y;
|
|
Character boro = Links.x.gaia.boro;
|
|
if (boro)
|
|
{
|
|
string xmlName = boro.stats.xmlName;
|
|
this.UpdateBoroInSavedList(xmlName, this.boroBonus, this.boroShrines, this.boroName);
|
|
GraphNode graphNode = boro.node;
|
|
if ((boro.currentPosition - Links.x.main.currentPosition).sqrMagnitude > 900f || graphNode == null)
|
|
{
|
|
vector = boro.tr.position;
|
|
quaternion = boro.tr.rotation;
|
|
if (Links.x.dialogue.boro)
|
|
{
|
|
graphNode = Links.x.dialogue.boro.NearNode(Links.x.dialogue.boro.tr.position, true, 0, -1, 0);
|
|
if (graphNode == null)
|
|
{
|
|
graphNode = Links.x.dialogue.boro.NearNode(Links.x.main.tr.position, true, 0, -1, 0);
|
|
}
|
|
if (graphNode == null)
|
|
{
|
|
graphNode = boro.node;
|
|
}
|
|
}
|
|
}
|
|
CreatureActions creatures = boro.creatures;
|
|
Links.x.hudControl.ClearSheep();
|
|
boro.Missing();
|
|
boro.FinishDestroyingCharacter();
|
|
if (creatures)
|
|
{
|
|
creatures.SetState(0, "Gone");
|
|
}
|
|
Vector3 vector2 = this.boroPosition;
|
|
if (graphNode != null)
|
|
{
|
|
vector2 = (Vector3)graphNode.position;
|
|
}
|
|
CreatureActions creatureActions = Links.x.gaia.CreateCreature(vector2, quaternion, xmlName, false, 0f, 1);
|
|
Component firstCharacter = creatureActions.GetFirstCharacter();
|
|
creatureActions.onlyTemporary = true;
|
|
Links.x.diorama.AddCreature(creatureActions);
|
|
string text = creatureActions.gameObject.name;
|
|
text += "_";
|
|
text += Links.x.gameplay.seconds.ToString();
|
|
creatureActions.gameObject.name = text;
|
|
firstCharacter.gameObject.name = text;
|
|
creatureActions.UpdateName();
|
|
}
|
|
if (Links.x.dialogue.boro)
|
|
{
|
|
CreatureActions creatures2 = Links.x.dialogue.boro.creatures;
|
|
vector = Links.x.dialogue.boro.tr.position;
|
|
quaternion = Links.x.dialogue.boro.tr.rotation;
|
|
if (creatures2)
|
|
{
|
|
creatures2.SetState(0, "Gone");
|
|
}
|
|
Links.x.dialogue.boro.Missing();
|
|
}
|
|
CreatureActions creatureActions2 = Links.x.gaia.CreateCreature(vector, quaternion, this.boroID, true, 0f, 1);
|
|
Links.x.gaia.boro = creatureActions2.GetFirstCharacter();
|
|
Links.x.gaia.boroControls = Links.x.gaia.boro.gameObject.AddComponent<Boro>();
|
|
Links.x.gaia.boroControls.Setup();
|
|
Links.x.gaia.boro.isBoro = true;
|
|
Vector3 vector3;
|
|
Vector4 vector4;
|
|
string text2;
|
|
int num;
|
|
this.BoroStats(this.boroID, out vector3, out vector4, out text2, out num, true);
|
|
this.boroName = text2;
|
|
this.boroBonus = vector3;
|
|
this.boroShrines = vector4;
|
|
this.UpdateBoroInSavedList(this.boroID, this.boroBonus, this.boroShrines, this.boroName);
|
|
string text3;
|
|
if (withBoat)
|
|
{
|
|
text3 = this.GetBoroModel(this.boroID, true, false);
|
|
}
|
|
else
|
|
{
|
|
text3 = this.GetBoroModel(this.boroID, false, true);
|
|
}
|
|
if (Links.x.gaia.boro.stats.model != text3)
|
|
{
|
|
Links.x.gaia.boro.stats.model = text3;
|
|
Links.x.gaia.boro.SetupBody();
|
|
}
|
|
Links.x.gaia.boro.BoroBoat();
|
|
Links.x.gaia.boro.stats.savedMerchantList = this.boroBag;
|
|
if (y > this.boroBonus.y && y != 0f)
|
|
{
|
|
Links.x.merchant.Unload();
|
|
}
|
|
Links.x.hudControl.ShowSheep(true);
|
|
Links.x.beachCollider.SetActive(true);
|
|
}
|
|
|
|
// Token: 0x06000CA5 RID: 3237 RVA: 0x000F7E30 File Offset: 0x000F6030
|
|
public void ShowBoroStats(Character hoverBoro)
|
|
{
|
|
Character character = Links.x.diorama.FindCharacterHerder();
|
|
Links.x.hudControl.OpenBoroHoverCard(hoverBoro, character);
|
|
}
|
|
|
|
// Token: 0x06000CA6 RID: 3238 RVA: 0x000F7E60 File Offset: 0x000F6060
|
|
public void BoroStats(string borosID, out Vector3 bonuses, out Vector4 shrines, out string n, out int cost, bool lookInSave)
|
|
{
|
|
bonuses = Vector3.zero;
|
|
shrines = Vector4.zero;
|
|
n = "Boro";
|
|
cost = 0;
|
|
int num = 10;
|
|
bool flag = false;
|
|
int num2 = 0;
|
|
for (int i = 0; i < this.savedBoro.Count; i++)
|
|
{
|
|
if (num2 == 0 && lookInSave && !flag && borosID == this.savedBoro[i])
|
|
{
|
|
flag = true;
|
|
float num3 = 0f;
|
|
float.TryParse(this.savedBoro[i + 1], out num3);
|
|
bonuses.x = num3;
|
|
float.TryParse(this.savedBoro[i + 2], out num3);
|
|
bonuses.y = num3;
|
|
float.TryParse(this.savedBoro[i + 3], out num3);
|
|
bonuses.z = num3;
|
|
float.TryParse(this.savedBoro[i + 4], out num3);
|
|
shrines.x = num3;
|
|
float.TryParse(this.savedBoro[i + 5], out num3);
|
|
shrines.y = num3;
|
|
float.TryParse(this.savedBoro[i + 6], out num3);
|
|
shrines.z = num3;
|
|
float.TryParse(this.savedBoro[i + 7], out num3);
|
|
shrines.w = num3;
|
|
n = this.savedBoro[i + 8];
|
|
cost = Mathf.RoundToInt((bonuses.x + bonuses.y + bonuses.z) * 100f) * num;
|
|
}
|
|
if (num2 == 8)
|
|
{
|
|
num2 = 0;
|
|
}
|
|
else
|
|
{
|
|
num2++;
|
|
}
|
|
}
|
|
if (!flag)
|
|
{
|
|
if (borosID == "BoroA")
|
|
{
|
|
float num4 = 0.5f;
|
|
float num5 = 0.07f;
|
|
float num6 = 0.15f;
|
|
cost = Mathf.RoundToInt((num4 + num5 + num6) * 100f) * num;
|
|
bonuses = new Vector3(num4, num5, num6);
|
|
}
|
|
if (borosID == "BoroB")
|
|
{
|
|
float num7 = 0.18f;
|
|
float num8 = 0.2f;
|
|
float num9 = 0.3f;
|
|
cost = Mathf.RoundToInt((num7 + num8 + num9) * 100f) * num;
|
|
bonuses = new Vector3(num7, num8, num9);
|
|
}
|
|
if (borosID == "BoroC")
|
|
{
|
|
float num10 = 0.42f;
|
|
float num11 = 0.05f;
|
|
float num12 = 0.18f;
|
|
cost = Mathf.RoundToInt((num10 + num11 + num12) * 100f) * num;
|
|
bonuses = new Vector3(num10, num11, num12);
|
|
}
|
|
if (borosID == "BoroD")
|
|
{
|
|
float num13 = 0.1f;
|
|
float num14 = 0.2f;
|
|
float num15 = 0.4f;
|
|
cost = Mathf.RoundToInt((num13 + num14 + num15) * 100f) * num;
|
|
bonuses = new Vector3(num13, num14, num15);
|
|
}
|
|
if (borosID == "BoroE")
|
|
{
|
|
float num16 = 0.2f;
|
|
float num17 = 0.4f;
|
|
float num18 = 0.1f;
|
|
cost = Mathf.RoundToInt((num16 + num17 + num18) * 100f) * num;
|
|
bonuses = new Vector3(num16, num17, num18);
|
|
}
|
|
if (borosID == "BoroF")
|
|
{
|
|
float num19 = 0.05f;
|
|
float num20 = 0.6f;
|
|
float num21 = 0.07f;
|
|
cost = Mathf.RoundToInt((num19 + num20 + num21) * 100f) * num;
|
|
bonuses = new Vector3(num19, num20, num21);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x040013AA RID: 5034
|
|
public static Records x;
|
|
|
|
// Token: 0x040013AB RID: 5035
|
|
[Header("GAME INFO")]
|
|
public float gameVersion;
|
|
|
|
// Token: 0x040013AC RID: 5036
|
|
public float gameVersionDemo;
|
|
|
|
// Token: 0x040013AD RID: 5037
|
|
public bool demo;
|
|
|
|
// Token: 0x040013AE RID: 5038
|
|
public bool extendedDemo;
|
|
|
|
// Token: 0x040013AF RID: 5039
|
|
public bool alwaysPlayTranscodedVideo;
|
|
|
|
// Token: 0x040013B0 RID: 5040
|
|
[Header("TESTING")]
|
|
public bool skipMainMenu;
|
|
|
|
// Token: 0x040013B1 RID: 5041
|
|
public MapExit.exitToNames editorMap;
|
|
|
|
// Token: 0x040013B2 RID: 5042
|
|
public Records.saves editorQuickLoad;
|
|
|
|
// Token: 0x040013B3 RID: 5043
|
|
private string editorQuickLoadFile;
|
|
|
|
// Token: 0x040013B4 RID: 5044
|
|
private string editorSceneToLoad;
|
|
|
|
// Token: 0x040013B5 RID: 5045
|
|
public bool defaultStartPoint;
|
|
|
|
// Token: 0x040013B6 RID: 5046
|
|
public bool useTestCharacters;
|
|
|
|
// Token: 0x040013B7 RID: 5047
|
|
public bool secrets;
|
|
|
|
// Token: 0x040013B8 RID: 5048
|
|
public bool astarDebugging;
|
|
|
|
// Token: 0x040013B9 RID: 5049
|
|
public bool combatConsoleDebugging;
|
|
|
|
// Token: 0x040013BA RID: 5050
|
|
public bool combatQuipDebugging;
|
|
|
|
// Token: 0x040013BB RID: 5051
|
|
public bool showRuleset;
|
|
|
|
// Token: 0x040013BC RID: 5052
|
|
public bool effectsDebugging;
|
|
|
|
// Token: 0x040013BD RID: 5053
|
|
public bool questDebugging;
|
|
|
|
// Token: 0x040013BE RID: 5054
|
|
public bool filming;
|
|
|
|
// Token: 0x040013BF RID: 5055
|
|
public bool showFPS;
|
|
|
|
// Token: 0x040013C0 RID: 5056
|
|
public bool noCombat;
|
|
|
|
// Token: 0x040013C1 RID: 5057
|
|
public bool noDamage;
|
|
|
|
// Token: 0x040013C2 RID: 5058
|
|
public bool turnOffCharacters;
|
|
|
|
// Token: 0x040013C3 RID: 5059
|
|
public bool turnOffAnimals;
|
|
|
|
// Token: 0x040013C4 RID: 5060
|
|
public bool testPatrols;
|
|
|
|
// Token: 0x040013C5 RID: 5061
|
|
public bool testQuests;
|
|
|
|
// Token: 0x040013C6 RID: 5062
|
|
public bool serpentFiles;
|
|
|
|
// Token: 0x040013C7 RID: 5063
|
|
public bool editorBoro;
|
|
|
|
// Token: 0x040013C8 RID: 5064
|
|
[Header("READ AND WRITE")]
|
|
public string openBook;
|
|
|
|
// Token: 0x040013C9 RID: 5065
|
|
public string sceneToLoad;
|
|
|
|
// Token: 0x040013CA RID: 5066
|
|
[Header("GAMEPLAY SETTINGS")]
|
|
public bool grabbingSomething;
|
|
|
|
// Token: 0x040013CB RID: 5067
|
|
public bool usingController;
|
|
|
|
// Token: 0x040013CC RID: 5068
|
|
public bool gameOver;
|
|
|
|
// Token: 0x040013CD RID: 5069
|
|
public bool pocketPause;
|
|
|
|
// Token: 0x040013CE RID: 5070
|
|
public bool slowTimeMode;
|
|
|
|
// Token: 0x040013CF RID: 5071
|
|
public bool removeControls;
|
|
|
|
// Token: 0x040013D0 RID: 5072
|
|
public bool paused;
|
|
|
|
// Token: 0x040013D1 RID: 5073
|
|
public bool inOverworldMap;
|
|
|
|
// Token: 0x040013D2 RID: 5074
|
|
public bool holdCombat;
|
|
|
|
// Token: 0x040013D3 RID: 5075
|
|
public bool kill;
|
|
|
|
// Token: 0x040013D4 RID: 5076
|
|
public bool partyWait;
|
|
|
|
// Token: 0x040013D5 RID: 5077
|
|
public bool movingWindows;
|
|
|
|
// Token: 0x040013D6 RID: 5078
|
|
public bool friends;
|
|
|
|
// Token: 0x040013D7 RID: 5079
|
|
public bool circle;
|
|
|
|
// Token: 0x040013D8 RID: 5080
|
|
public int ai;
|
|
|
|
// Token: 0x040013D9 RID: 5081
|
|
public bool shouting;
|
|
|
|
// Token: 0x040013DA RID: 5082
|
|
public bool miniGame;
|
|
|
|
// Token: 0x040013DB RID: 5083
|
|
public bool boroNearby;
|
|
|
|
// Token: 0x040013DC RID: 5084
|
|
public bool partySailing;
|
|
|
|
// Token: 0x040013DD RID: 5085
|
|
public bool partyBoatDown;
|
|
|
|
// Token: 0x040013DE RID: 5086
|
|
public bool turnBased;
|
|
|
|
// Token: 0x040013DF RID: 5087
|
|
public bool useBigTiles;
|
|
|
|
// Token: 0x040013E0 RID: 5088
|
|
public bool partyCamping;
|
|
|
|
// Token: 0x040013E1 RID: 5089
|
|
public bool dialogue;
|
|
|
|
// Token: 0x040013E2 RID: 5090
|
|
public bool mainMenuOpen;
|
|
|
|
// Token: 0x040013E3 RID: 5091
|
|
public bool waitForResurrect;
|
|
|
|
// Token: 0x040013E4 RID: 5092
|
|
public float moveSpeedAdd;
|
|
|
|
// Token: 0x040013E5 RID: 5093
|
|
public bool cyclingAttacks;
|
|
|
|
// Token: 0x040013E6 RID: 5094
|
|
public float nodeSize = 0.4f;
|
|
|
|
// Token: 0x040013E7 RID: 5095
|
|
public int playerDefaultConnections;
|
|
|
|
// Token: 0x040013E8 RID: 5096
|
|
public float gridOffset = 17f;
|
|
|
|
// Token: 0x040013E9 RID: 5097
|
|
public int maxSummons = 20;
|
|
|
|
// Token: 0x040013EA RID: 5098
|
|
public int spiritFragment = 30;
|
|
|
|
// Token: 0x040013EB RID: 5099
|
|
public float filmingAnimatorSpeed = 0.3f;
|
|
|
|
// Token: 0x040013EC RID: 5100
|
|
public int durabilityThreshold = 10;
|
|
|
|
// Token: 0x040013ED RID: 5101
|
|
public bool combat;
|
|
|
|
// Token: 0x040013EE RID: 5102
|
|
public bool canLeaveCombat;
|
|
|
|
// Token: 0x040013EF RID: 5103
|
|
public bool blueFog;
|
|
|
|
// Token: 0x040013F0 RID: 5104
|
|
public bool mainCharacterDead;
|
|
|
|
// Token: 0x040013F1 RID: 5105
|
|
public bool playerTurn;
|
|
|
|
// Token: 0x040013F2 RID: 5106
|
|
public float lastQuipTime;
|
|
|
|
// Token: 0x040013F3 RID: 5107
|
|
public bool saving;
|
|
|
|
// Token: 0x040013F4 RID: 5108
|
|
private float updateGameTime;
|
|
|
|
// Token: 0x040013F5 RID: 5109
|
|
public bool atMerchant;
|
|
|
|
// Token: 0x040013F6 RID: 5110
|
|
public bool selling;
|
|
|
|
// Token: 0x040013F7 RID: 5111
|
|
public bool typing;
|
|
|
|
// Token: 0x040013F8 RID: 5112
|
|
public bool portraitDragging;
|
|
|
|
// Token: 0x040013F9 RID: 5113
|
|
public int currentPathNode;
|
|
|
|
// Token: 0x040013FA RID: 5114
|
|
public bool coloredCircles;
|
|
|
|
// Token: 0x040013FB RID: 5115
|
|
public bool test;
|
|
|
|
// Token: 0x040013FC RID: 5116
|
|
private bool pausedForMenus;
|
|
|
|
// Token: 0x040013FD RID: 5117
|
|
public bool inMenus;
|
|
|
|
// Token: 0x040013FE RID: 5118
|
|
public bool cameraFollowing;
|
|
|
|
// Token: 0x040013FF RID: 5119
|
|
public Vector3 cameraPosition;
|
|
|
|
// Token: 0x04001400 RID: 5120
|
|
public Vector3 cameraTargetPosition;
|
|
|
|
// Token: 0x04001401 RID: 5121
|
|
public SceneCamera inspectCamera;
|
|
|
|
// Token: 0x04001402 RID: 5122
|
|
public SceneCamera previousView;
|
|
|
|
// Token: 0x04001403 RID: 5123
|
|
public bool inspecting;
|
|
|
|
// Token: 0x04001404 RID: 5124
|
|
public Color hoverLightColor;
|
|
|
|
// Token: 0x04001405 RID: 5125
|
|
public Color currColor;
|
|
|
|
// Token: 0x04001406 RID: 5126
|
|
public int partyTotal;
|
|
|
|
// Token: 0x04001407 RID: 5127
|
|
private StringFast str = new StringFast(64);
|
|
|
|
// Token: 0x04001408 RID: 5128
|
|
public bool showRulesetInfo = true;
|
|
|
|
// Token: 0x04001409 RID: 5129
|
|
public bool needsDefendTooltip;
|
|
|
|
// Token: 0x0400140A RID: 5130
|
|
public bool needsSynergyTooltip;
|
|
|
|
// Token: 0x0400140B RID: 5131
|
|
public bool needsCompanionTooltip;
|
|
|
|
// Token: 0x0400140C RID: 5132
|
|
public bool needsAttackTooltip;
|
|
|
|
// Token: 0x0400140D RID: 5133
|
|
public bool needsMoreTooltip;
|
|
|
|
// Token: 0x0400140E RID: 5134
|
|
public bool needsCircleTooltip;
|
|
|
|
// Token: 0x0400140F RID: 5135
|
|
public bool banquetIsle;
|
|
|
|
// Token: 0x04001410 RID: 5136
|
|
public string recentShout;
|
|
|
|
// Token: 0x04001411 RID: 5137
|
|
public float lastShoutTime;
|
|
|
|
// Token: 0x04001412 RID: 5138
|
|
public bool freeAttack;
|
|
|
|
// Token: 0x04001413 RID: 5139
|
|
public bool testingFreeAttack;
|
|
|
|
// Token: 0x04001414 RID: 5140
|
|
public bool spin;
|
|
|
|
// Token: 0x04001415 RID: 5141
|
|
[Header("QUEST TIMERS")]
|
|
public List<string> changeQuestName = new List<string>();
|
|
|
|
// Token: 0x04001416 RID: 5142
|
|
public List<float> changeAtHour = new List<float>();
|
|
|
|
// Token: 0x04001417 RID: 5143
|
|
public List<string> changeToState = new List<string>();
|
|
|
|
// Token: 0x04001418 RID: 5144
|
|
public List<string> changeFromState = new List<string>();
|
|
|
|
// Token: 0x04001419 RID: 5145
|
|
private float constantQuestCheckTimer;
|
|
|
|
// Token: 0x0400141A RID: 5146
|
|
private bool needToRemoveQuestItems;
|
|
|
|
// Token: 0x0400141B RID: 5147
|
|
[Header("FORFEITS + FINES")]
|
|
public List<string> stunnedNPCs = new List<string>();
|
|
|
|
// Token: 0x0400141C RID: 5148
|
|
public List<float> stunnedTime = new List<float>();
|
|
|
|
// Token: 0x0400141D RID: 5149
|
|
public List<string> stunnedSaveFiles = new List<string>();
|
|
|
|
// Token: 0x0400141E RID: 5150
|
|
public List<string> exiles = new List<string>();
|
|
|
|
// Token: 0x0400141F RID: 5151
|
|
public List<float> exilesPurseState = new List<float>();
|
|
|
|
// Token: 0x04001420 RID: 5152
|
|
public List<string> victims = new List<string>();
|
|
|
|
// Token: 0x04001421 RID: 5153
|
|
public List<string> victimBadgeState = new List<string>();
|
|
|
|
// Token: 0x04001422 RID: 5154
|
|
public List<string> victimTown = new List<string>();
|
|
|
|
// Token: 0x04001423 RID: 5155
|
|
public List<float> victimBadgeStartTime = new List<float>();
|
|
|
|
// Token: 0x04001424 RID: 5156
|
|
public int badgeCount;
|
|
|
|
// Token: 0x04001425 RID: 5157
|
|
[Header("UI SETTINGS")]
|
|
public float uiHeight;
|
|
|
|
// Token: 0x04001426 RID: 5158
|
|
private float startDither;
|
|
|
|
// Token: 0x04001427 RID: 5159
|
|
private float endDither;
|
|
|
|
// Token: 0x04001428 RID: 5160
|
|
private float currentDither;
|
|
|
|
// Token: 0x04001429 RID: 5161
|
|
private float fadeAmount;
|
|
|
|
// Token: 0x0400142A RID: 5162
|
|
private bool fading;
|
|
|
|
// Token: 0x0400142B RID: 5163
|
|
[Header("LISTS")]
|
|
public List<GameObject> openMenus = new List<GameObject>();
|
|
|
|
// Token: 0x0400142C RID: 5164
|
|
public List<UITriggerButton> closeButtons = new List<UITriggerButton>();
|
|
|
|
// Token: 0x0400142D RID: 5165
|
|
private float[] skillWeights = new float[]
|
|
{
|
|
0.25f, 0.25f, 0.25f, 0.25f, 1f, 1f, 1f, 1f, 1f, 1f,
|
|
1f, 1f, 1f, 1f, 2f, 2f, 0.5f, 0.5f, 0.5f, 0.5f,
|
|
10f, 2f, 5f, 3f, 3f, 3f, 1f, 1f, 1f, 1f,
|
|
5f, 5f, 5f, 5f, 5f, 1f
|
|
};
|
|
|
|
// Token: 0x0400142E RID: 5166
|
|
private List<Character> party;
|
|
|
|
// Token: 0x0400142F RID: 5167
|
|
public List<string> creaturesMapNew = new List<string>();
|
|
|
|
// Token: 0x04001430 RID: 5168
|
|
public List<string> creaturesMapOld = new List<string>();
|
|
|
|
// Token: 0x04001431 RID: 5169
|
|
public List<string> creaturesMapXml = new List<string>();
|
|
|
|
// Token: 0x04001432 RID: 5170
|
|
public List<string> creaturesMapName = new List<string>();
|
|
|
|
// Token: 0x04001433 RID: 5171
|
|
public List<int> creaturesMapHostility = new List<int>();
|
|
|
|
// Token: 0x04001434 RID: 5172
|
|
public List<Vector3> creaturesMapPosition = new List<Vector3>();
|
|
|
|
// Token: 0x04001435 RID: 5173
|
|
public List<string> creaturesMapState = new List<string>();
|
|
|
|
// Token: 0x04001436 RID: 5174
|
|
public List<int> creaturesMapChangeTime = new List<int>();
|
|
|
|
// Token: 0x04001437 RID: 5175
|
|
public List<string> creaturesMapGameObject = new List<string>();
|
|
|
|
// Token: 0x04001438 RID: 5176
|
|
public List<int> creaturesMapLife = new List<int>();
|
|
|
|
// Token: 0x04001439 RID: 5177
|
|
public List<int> creaturesMapIndex = new List<int>();
|
|
|
|
// Token: 0x0400143A RID: 5178
|
|
public List<float> creaturesMapChangeDelay = new List<float>();
|
|
|
|
// Token: 0x0400143B RID: 5179
|
|
public List<string> creaturesMapMovingFrom = new List<string>();
|
|
|
|
// Token: 0x0400143C RID: 5180
|
|
public List<Vector3> creaturesMapMovingFromPosition = new List<Vector3>();
|
|
|
|
// Token: 0x0400143D RID: 5181
|
|
public List<string> deadCompanions = new List<string>();
|
|
|
|
// Token: 0x0400143E RID: 5182
|
|
private List<Character> witnesses = new List<Character>();
|
|
|
|
// Token: 0x0400143F RID: 5183
|
|
private ES3File saveFile;
|
|
|
|
// Token: 0x04001440 RID: 5184
|
|
private ES3File saveFileTemporary;
|
|
|
|
// Token: 0x04001441 RID: 5185
|
|
private List<int> health = new List<int>();
|
|
|
|
// Token: 0x04001442 RID: 5186
|
|
private List<string> states = new List<string>();
|
|
|
|
// Token: 0x04001443 RID: 5187
|
|
private List<int> temperaments = new List<int>();
|
|
|
|
// Token: 0x04001444 RID: 5188
|
|
private List<Vector4> positions = new List<Vector4>();
|
|
|
|
// Token: 0x04001445 RID: 5189
|
|
private List<string> maps = new List<string>();
|
|
|
|
// Token: 0x04001446 RID: 5190
|
|
private List<string> effects = new List<string>();
|
|
|
|
// Token: 0x04001447 RID: 5191
|
|
public string[] characterNames = new string[0];
|
|
|
|
// Token: 0x04001448 RID: 5192
|
|
private List<int> returningCreatures = new List<int>();
|
|
|
|
// Token: 0x04001449 RID: 5193
|
|
public List<Character> destroyCharacters = new List<Character>();
|
|
|
|
// Token: 0x0400144A RID: 5194
|
|
public List<Character> deadCharacters = new List<Character>();
|
|
|
|
// Token: 0x0400144B RID: 5195
|
|
public List<string> needsSaveNames = new List<string>();
|
|
|
|
// Token: 0x0400144C RID: 5196
|
|
private List<Transform> billboards = new List<Transform>();
|
|
|
|
// Token: 0x0400144D RID: 5197
|
|
private List<Transform> itemBillboards = new List<Transform>();
|
|
|
|
// Token: 0x0400144E RID: 5198
|
|
private Transform camTr;
|
|
|
|
// Token: 0x0400144F RID: 5199
|
|
private Vector3 forw;
|
|
|
|
// Token: 0x04001450 RID: 5200
|
|
private Vector3 up;
|
|
|
|
// Token: 0x04001451 RID: 5201
|
|
private List<Vector3> defenseCircle = new List<Vector3>();
|
|
|
|
// Token: 0x04001452 RID: 5202
|
|
private List<GraphNode> circleTiles;
|
|
|
|
// Token: 0x04001453 RID: 5203
|
|
[Header("SHEEP + BOAT")]
|
|
public Vector3 boroPosition;
|
|
|
|
// Token: 0x04001454 RID: 5204
|
|
public Quaternion boroRotation;
|
|
|
|
// Token: 0x04001455 RID: 5205
|
|
public Vector3 boroLastBeachPoint;
|
|
|
|
// Token: 0x04001456 RID: 5206
|
|
public Vector3 boatPosition;
|
|
|
|
// Token: 0x04001457 RID: 5207
|
|
public Quaternion boatRotation;
|
|
|
|
// Token: 0x04001458 RID: 5208
|
|
public string boroScene;
|
|
|
|
// Token: 0x04001459 RID: 5209
|
|
public string boroBag;
|
|
|
|
// Token: 0x0400145A RID: 5210
|
|
public string boroID;
|
|
|
|
// Token: 0x0400145B RID: 5211
|
|
public float boroWeight;
|
|
|
|
// Token: 0x0400145C RID: 5212
|
|
public string boroName;
|
|
|
|
// Token: 0x0400145D RID: 5213
|
|
public bool boroInvisible;
|
|
|
|
// Token: 0x0400145E RID: 5214
|
|
public Vector3 boroBonus = new Vector3(0f, 1f, 0f);
|
|
|
|
// Token: 0x0400145F RID: 5215
|
|
public Vector4 boroShrines;
|
|
|
|
// Token: 0x04001460 RID: 5216
|
|
public List<string> banners = new List<string>();
|
|
|
|
// Token: 0x04001461 RID: 5217
|
|
public List<string> savedBoro = new List<string>();
|
|
|
|
// Token: 0x04001462 RID: 5218
|
|
[Header("PLATFORMS")]
|
|
public bool windows;
|
|
|
|
// Token: 0x04001463 RID: 5219
|
|
public bool windows7;
|
|
|
|
// Token: 0x04001464 RID: 5220
|
|
public bool linux;
|
|
|
|
// Token: 0x04001465 RID: 5221
|
|
public bool editor;
|
|
|
|
// Token: 0x04001466 RID: 5222
|
|
public bool steamDeck;
|
|
|
|
// Token: 0x04001467 RID: 5223
|
|
[Header("SERPENT INFO")]
|
|
public string sitsAnimal;
|
|
|
|
// Token: 0x04001468 RID: 5224
|
|
public string sitsCompanion1;
|
|
|
|
// Token: 0x04001469 RID: 5225
|
|
public string sitsCompanion2;
|
|
|
|
// Token: 0x0400146A RID: 5226
|
|
public string sitsCompanion3;
|
|
|
|
// Token: 0x0400146B RID: 5227
|
|
public string sitsCompanion4;
|
|
|
|
// Token: 0x0400146C RID: 5228
|
|
public string sitsNecholai;
|
|
|
|
// Token: 0x020001E6 RID: 486
|
|
public enum saves
|
|
{
|
|
// Token: 0x040031E3 RID: 12771
|
|
QuickSave,
|
|
// Token: 0x040031E4 RID: 12772
|
|
None,
|
|
// Token: 0x040031E5 RID: 12773
|
|
Save1,
|
|
// Token: 0x040031E6 RID: 12774
|
|
Save2,
|
|
// Token: 0x040031E7 RID: 12775
|
|
Save3,
|
|
// Token: 0x040031E8 RID: 12776
|
|
Save4,
|
|
// Token: 0x040031E9 RID: 12777
|
|
Save5,
|
|
// Token: 0x040031EA RID: 12778
|
|
Save6,
|
|
// Token: 0x040031EB RID: 12779
|
|
Save7,
|
|
// Token: 0x040031EC RID: 12780
|
|
Save8,
|
|
// Token: 0x040031ED RID: 12781
|
|
Save9,
|
|
// Token: 0x040031EE RID: 12782
|
|
Save10
|
|
}
|
|
}
|