12157 lines
272 KiB
C#
12157 lines
272 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using DarkTonic.MasterAudio;
|
|
using Pathfinding;
|
|
using PixelCrushers.DialogueSystem;
|
|
using UnityEngine;
|
|
|
|
// Token: 0x02000051 RID: 81
|
|
public class Stats : MonoBehaviour
|
|
{
|
|
// Token: 0x0600091E RID: 2334 RVA: 0x000C3DEB File Offset: 0x000C1FEB
|
|
private void Start()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600091F RID: 2335 RVA: 0x000C3DF0 File Offset: 0x000C1FF0
|
|
public void SetupStats(Character self, string n)
|
|
{
|
|
this.character = self;
|
|
this.xmlName = n;
|
|
if (this.character.party && (!Records.x.editor || (Records.x.editor && (!Records.x.useTestCharacters || !Records.x.skipMainMenu))))
|
|
{
|
|
if (!n.Contains("Boro"))
|
|
{
|
|
this.xmlName = "Protagonist";
|
|
}
|
|
if (Records.x.banquetIsle && n.Contains("Bloodless"))
|
|
{
|
|
this.xmlName = "BloodlessHunter";
|
|
}
|
|
}
|
|
this.characterRow = Links.x.library.GetPCRowFromName(this.xmlName);
|
|
if (this.characterRow == null)
|
|
{
|
|
Debug.Log("null character row for " + this.xmlName);
|
|
}
|
|
this.originalMap = Links.x.diorama.sceneName;
|
|
this.creaturesName = this.xmlName;
|
|
this.canUseTwoWeapons = true;
|
|
this.state = "";
|
|
this.useItemsAI = 45;
|
|
this.autoBuffsAI = 2;
|
|
this.autoCritsAI = 25;
|
|
this.level = this.characterRow._Level;
|
|
if (this.character.party && Records.x.banquetIsle)
|
|
{
|
|
if (n.Contains("Bloodless"))
|
|
{
|
|
this.level = 49;
|
|
this.XP = 300126;
|
|
}
|
|
if (n.Contains("Viorica"))
|
|
{
|
|
this.level = 9;
|
|
this.XP = 1800;
|
|
}
|
|
if (n.Contains("Emil"))
|
|
{
|
|
this.level = 8;
|
|
this.XP = 2200;
|
|
}
|
|
}
|
|
this.modalWindowsOpen = true;
|
|
this.songPoints = this.SongPointsMax();
|
|
if (!this.character.npc)
|
|
{
|
|
if (ES3.FileExists(Records.x.openBook + "/Party1.es3"))
|
|
{
|
|
this.LoadFromDB();
|
|
}
|
|
else
|
|
{
|
|
this.LoadFromDB();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.LoadFromDB();
|
|
}
|
|
if (this.character.party && (!Records.x.editor || (Records.x.editor && (!Records.x.useTestCharacters || !Records.x.skipMainMenu))) && !n.Contains("Boro") && !n.Contains("Bloodless"))
|
|
{
|
|
this.displayName = n;
|
|
}
|
|
if (this.character.party)
|
|
{
|
|
if ((!Records.x.editor || (Records.x.editor && (!Records.x.useTestCharacters || !Records.x.skipMainMenu))) && !n.Contains("Boro") && !n.Contains("Bloodless"))
|
|
{
|
|
this.xmlName = "Protagonist";
|
|
this.displayName = n;
|
|
n = this.xmlName;
|
|
}
|
|
this.maxStamina = 30f;
|
|
this.stamina = 30f;
|
|
this.canCharge = true;
|
|
}
|
|
this.currLife = this.HealthMax();
|
|
this.magicPoints = 0;
|
|
if (this.character.npc)
|
|
{
|
|
this.magicPoints = this.magicPointsBase;
|
|
if (Records.x.banquetIsle)
|
|
{
|
|
this.magicPoints = 300;
|
|
}
|
|
}
|
|
this.CarryingWeight();
|
|
if ((this.dialogueFile != "" && this.initiateDialogue >= 1 && this.initiateDialogue < 10) || this.initiateDialogue >= 11)
|
|
{
|
|
this.canTalk = true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000920 RID: 2336 RVA: 0x000C4150 File Offset: 0x000C2350
|
|
public void ChangingScene()
|
|
{
|
|
List<Effects> list = new List<Effects>();
|
|
foreach (Effects effects in this.effects)
|
|
{
|
|
list.Add(effects);
|
|
}
|
|
for (int i = 0; i < list.Count; i++)
|
|
{
|
|
list[i].Healed(this.character.dead, false);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000921 RID: 2337 RVA: 0x000C41D4 File Offset: 0x000C23D4
|
|
public void RemoveEffect(Effects effect, string n)
|
|
{
|
|
int num = this.effects.IndexOf(effect);
|
|
if (num > -1)
|
|
{
|
|
if (num < this.effects.Count)
|
|
{
|
|
this.effects.RemoveAt(num);
|
|
return;
|
|
}
|
|
}
|
|
else if (Records.x.editor)
|
|
{
|
|
Debug.Log("Effect gone " + n + " " + ((this != null) ? this.ToString() : null));
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000922 RID: 2338 RVA: 0x000C423C File Offset: 0x000C243C
|
|
public void ReturnPooledEffects()
|
|
{
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
this.effects[i].ReturnPooledEffects();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000923 RID: 2339 RVA: 0x000C4270 File Offset: 0x000C2470
|
|
public void RemoveAllAilments()
|
|
{
|
|
List<Effects> list = new List<Effects>();
|
|
foreach (Effects effects in this.effects)
|
|
{
|
|
if (!effects.effect._IsBuff)
|
|
{
|
|
list.Add(effects);
|
|
}
|
|
}
|
|
for (int i = 0; i < list.Count; i++)
|
|
{
|
|
list[i].Healed(this.character.dead, false);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000924 RID: 2340 RVA: 0x000C4300 File Offset: 0x000C2500
|
|
public void ClearAilments()
|
|
{
|
|
this.RemoveAllAilments();
|
|
this.effects.Clear();
|
|
}
|
|
|
|
// Token: 0x06000925 RID: 2341 RVA: 0x000C4313 File Offset: 0x000C2513
|
|
public void AddEffect(Effects effect, int var1, float level)
|
|
{
|
|
if (!this.effects.Contains(effect))
|
|
{
|
|
this.effects.Add(effect);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000926 RID: 2342 RVA: 0x000C4330 File Offset: 0x000C2530
|
|
public void RemoveNullAilments()
|
|
{
|
|
if (this.effects.Count > 0)
|
|
{
|
|
int count = this.effects.Count;
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
this.effects[i];
|
|
}
|
|
}
|
|
this.effects.RemoveAll((Effects item) => item == null);
|
|
}
|
|
|
|
// Token: 0x06000927 RID: 2343 RVA: 0x000C43AA File Offset: 0x000C25AA
|
|
public void SaveEffects()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000928 RID: 2344 RVA: 0x000C43AC File Offset: 0x000C25AC
|
|
public void HealAll()
|
|
{
|
|
this.temp.Clear();
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
this.temp.Add(this.effects[i]);
|
|
}
|
|
int count = this.temp.Count;
|
|
for (int j = 0; j < count; j++)
|
|
{
|
|
this.temp[j].Healed(false, true);
|
|
}
|
|
this.currLife = this.HealthMax();
|
|
if (this.character.downed)
|
|
{
|
|
this.character.downed = false;
|
|
this.character.GetUp();
|
|
}
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.SetHealthColor();
|
|
}
|
|
if (this.character.dockFriend)
|
|
{
|
|
this.character.dockFriend.UpdateHealth();
|
|
}
|
|
this.UpdateStats();
|
|
}
|
|
|
|
// Token: 0x06000929 RID: 2345 RVA: 0x000C4498 File Offset: 0x000C2698
|
|
public int GetMaxRadiusFromAbilities()
|
|
{
|
|
int count = this.abilityNames.Count;
|
|
int num = 0;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.abilityLevels[i].x > 0f || (this.abilityLevels[i].x == 0f && this.abilityRows[i]._IsSpell))
|
|
{
|
|
Library.Effects effectRow = Links.x.library.GetEffectRow(this.abilityNames[i]);
|
|
if (this.abilityRows[i]._AINotes.Contains("Crowd") && effectRow != null && effectRow._TileRadius > 0 && effectRow._TileRadius > num)
|
|
{
|
|
num = effectRow._TileRadius;
|
|
}
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600092A RID: 2346 RVA: 0x000C4560 File Offset: 0x000C2760
|
|
public int GetLevel(string abilityName)
|
|
{
|
|
int count = this.abilityNames.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.abilityNames[i] == abilityName)
|
|
{
|
|
return (int)this.abilityLevels[i].x;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x0600092B RID: 2347 RVA: 0x000C45B0 File Offset: 0x000C27B0
|
|
public Effects GetExistingEffect(string n)
|
|
{
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
if (this.effects[i] && this.effects[i].effectName == n)
|
|
{
|
|
return this.effects[i];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x0600092C RID: 2348 RVA: 0x000C4610 File Offset: 0x000C2810
|
|
public float GetAmplifyEffects()
|
|
{
|
|
float num = 0f;
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
if (this.effects[i])
|
|
{
|
|
if (this.effects[i].effect._Script.Contains("AmplifyWounds"))
|
|
{
|
|
num += this.effects[i].sourceLevel;
|
|
}
|
|
if (this.effects[i].effect._Script.Contains("PukeSpore"))
|
|
{
|
|
num += this.effects[i].sourceLevel;
|
|
}
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600092D RID: 2349 RVA: 0x000C46C0 File Offset: 0x000C28C0
|
|
public float AddPotionBoosts()
|
|
{
|
|
float num = 0f;
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
if (this.effects[i])
|
|
{
|
|
if (this.effects[i].effect._Name.Contains("HarvestOverflowing"))
|
|
{
|
|
num += this.effects[i].sourceLevel;
|
|
}
|
|
if (this.effects[i].effect._Name.Contains("HarvestOverflowing"))
|
|
{
|
|
num += this.effects[i].sourceLevel;
|
|
}
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600092E RID: 2350 RVA: 0x000C4770 File Offset: 0x000C2970
|
|
public int GetStatusCount(Effects exclude, string type)
|
|
{
|
|
int num = 0;
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
Effects effects = this.effects[i];
|
|
if (effects && effects != exclude)
|
|
{
|
|
if (type == "Stun")
|
|
{
|
|
if (effects.effect._Stun > 0)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
else if (type == "Flee")
|
|
{
|
|
if (effects.effect._Flee > 0)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
else if (type == "Stuck")
|
|
{
|
|
if (effects.effect._StuckInPlace > 0)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
else if (type == "Confuse" && effects.effect._Confuse > 0)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600092F RID: 2351 RVA: 0x000C4844 File Offset: 0x000C2A44
|
|
public bool HasInstrumentEffect(string n)
|
|
{
|
|
int count = this.effects.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.effects[i] && this.effects[i].hasAbility && this.effects[i].ability._MainSkill == n)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000930 RID: 2352 RVA: 0x000C48B0 File Offset: 0x000C2AB0
|
|
public bool HasEffect(string n)
|
|
{
|
|
int count = this.effects.Count;
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
if (this.effects[i] && this.effects[i].effectName == n)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000931 RID: 2353 RVA: 0x000C4910 File Offset: 0x000C2B10
|
|
public void RemoveCurrentSong(bool isBuff)
|
|
{
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
Effects effects = this.effects[i];
|
|
if (effects && effects.effect._IsSong && ((effects.effect._IsBuff && isBuff) || (!effects.effect._IsBuff && !isBuff)))
|
|
{
|
|
effects.Healed(false, true);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000932 RID: 2354 RVA: 0x000C4980 File Offset: 0x000C2B80
|
|
public bool HasSongBuff()
|
|
{
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
Effects effects = this.effects[i];
|
|
if (effects && effects.effect._IsSong && effects.effect._IsBuff)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000933 RID: 2355 RVA: 0x000C49D8 File Offset: 0x000C2BD8
|
|
public bool HasSongAilment()
|
|
{
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
Effects effects = this.effects[i];
|
|
if (effects && effects.effect._IsSong && !effects.effect._IsBuff)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000934 RID: 2356 RVA: 0x000C4A30 File Offset: 0x000C2C30
|
|
public bool HasAilment()
|
|
{
|
|
bool flag = false;
|
|
int count = this.effects.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.effects[i] && !this.effects[i].effect._IsBuff)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06000935 RID: 2357 RVA: 0x000C4A88 File Offset: 0x000C2C88
|
|
public void HealEffect(string n)
|
|
{
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
bool flag = false;
|
|
int count = this.effects.Count;
|
|
for (int j = 0; j < count; j++)
|
|
{
|
|
if (!flag && j < this.effects.Count && this.effects[j] && this.effects[j].effectName == n)
|
|
{
|
|
this.effects[j].Healed(false, true);
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000936 RID: 2358 RVA: 0x000C4B10 File Offset: 0x000C2D10
|
|
public void HealEffectExcept(string n, Effects e)
|
|
{
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
bool flag = false;
|
|
int count = this.effects.Count;
|
|
for (int j = 0; j < count; j++)
|
|
{
|
|
if (!flag && j < this.effects.Count && this.effects[j] && this.effects[j].effectName == n && this.effects[j] != e)
|
|
{
|
|
this.effects[j].Healed(false, true);
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000937 RID: 2359 RVA: 0x000C4BB0 File Offset: 0x000C2DB0
|
|
public bool HasEffectAndCure(string n)
|
|
{
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
if (this.effects[i] && this.effects[i].effectName == n && i < this.effects.Count && this.effects[i])
|
|
{
|
|
this.effects[i].Healed(false, true);
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000938 RID: 2360 RVA: 0x000C4C38 File Offset: 0x000C2E38
|
|
public void RemoveTileEffect(Effects effect)
|
|
{
|
|
int count = this.effects.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.effects[i] == effect)
|
|
{
|
|
this.effects[i].Healed(this.character.dead, true);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000939 RID: 2361 RVA: 0x000C4C90 File Offset: 0x000C2E90
|
|
public void ChangeAilmentMultiplier(float amt, bool isBuff, bool healed)
|
|
{
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
this.effects[i].ChangeAilmentMultiplier(amt, isBuff, healed);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600093A RID: 2362 RVA: 0x000C4CC8 File Offset: 0x000C2EC8
|
|
public void SpawnStartingEffect()
|
|
{
|
|
if (this.characterRow._StartingEffect != "")
|
|
{
|
|
bool flag = true;
|
|
if (this.xmlName.Contains("RozafirFarmer"))
|
|
{
|
|
QuestState questState = QuestLog.GetQuestState("D6_Licech");
|
|
if (questState != QuestState.Unassigned && questState != QuestState.Active && questState != QuestState.ActivePart2 && questState != QuestState.Discussed)
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
if (Records.x.testQuests)
|
|
{
|
|
Debug.Log(((this != null) ? this.ToString() : null) + " " + this.characterRow._StartingEffect);
|
|
}
|
|
Effects effects = base.gameObject.AddComponent<Effects>();
|
|
Links.x.cellar.AddEffects(effects);
|
|
effects.gameObject.SetActive(true);
|
|
this.effects.Add(effects);
|
|
effects.source = null;
|
|
effects.effectStartTime = 0;
|
|
effects.target = this.character;
|
|
effects.fromLoad = true;
|
|
effects.effectName = this.characterRow._StartingEffect;
|
|
effects.sourceLevel = 0f;
|
|
effects.Inflicted(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600093B RID: 2363 RVA: 0x000C4DDC File Offset: 0x000C2FDC
|
|
public void SpawnEffects()
|
|
{
|
|
if (this.effectsNamesFromSave.Count > 0)
|
|
{
|
|
int count = this.effectsNamesFromSave.Count;
|
|
for (int i = 0; i < this.effectsNamesFromSave.Count; i++)
|
|
{
|
|
Library.Effects effectRow = Links.x.library.GetEffectRow(this.effectsNamesFromSave[i]);
|
|
if (effectRow != null && !effectRow._IsIntercession && !effectRow._Name.Contains("Ring") && !effectRow._Name.Contains("Circle") && !effectRow._Name.Contains("Circlet") && !effectRow._Name.Contains("Earring") && !effectRow._WhileOnTile && effectRow._Name != "Leader" && effectRow._Name != "Follower")
|
|
{
|
|
Effects effects = base.gameObject.AddComponent<Effects>();
|
|
Links.x.cellar.AddEffects(effects);
|
|
effects.gameObject.SetActive(true);
|
|
this.effects.Add(effects);
|
|
effects.source = null;
|
|
float num = (float)this.effectsTimesFromSave[i];
|
|
effects.target = this.character;
|
|
effects.fromLoad = true;
|
|
effects.effectName = this.effectsNamesFromSave[i];
|
|
effects.sourceLevel = this.effectsVar2FromSave[i];
|
|
effects.Inflicted(false);
|
|
if (effects)
|
|
{
|
|
effects.effectStartTime = (int)num;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.effectsNamesFromSave.Clear();
|
|
this.effectsTimesFromSave.Clear();
|
|
this.effectsVar2FromSave.Clear();
|
|
}
|
|
|
|
// Token: 0x0600093C RID: 2364 RVA: 0x000C4F94 File Offset: 0x000C3194
|
|
public string GetStatusEffects(bool characterSheet)
|
|
{
|
|
int count = this.effects.Count;
|
|
this.str.Clear();
|
|
int num = 0;
|
|
if (this.character.stunned && characterSheet)
|
|
{
|
|
this.str.Append("<color ");
|
|
this.str.Append(Links.x.characterSheet.hoverColor);
|
|
this.str.Append(">");
|
|
this.str.Append("Stunned</color>\nKnocked out for up to 24 hours\n");
|
|
int num2 = (int)this.character.timeOfDeath - (int)Mathf.Floor((float)Links.x.gameplay.GetCurrentGameTimeHours());
|
|
this.str.Append(num2);
|
|
if ((float)num2 != 1f)
|
|
{
|
|
this.str.Append(" hours remaining\n");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" hour remaining\n");
|
|
}
|
|
}
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.effects[i].effect._ShowInStatus && !this.effects[i].effect._Permanent)
|
|
{
|
|
if (num == 0)
|
|
{
|
|
if (characterSheet)
|
|
{
|
|
this.str.Append("<color ");
|
|
this.str.Append(Links.x.characterSheet.hoverColor);
|
|
this.str.Append(">");
|
|
}
|
|
}
|
|
else if (characterSheet)
|
|
{
|
|
this.str.Append("\n");
|
|
this.str.Append("<color ");
|
|
this.str.Append(Links.x.characterSheet.hoverColor);
|
|
this.str.Append(">");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(", ");
|
|
}
|
|
this.str.Append(this.effects[i].effect._DisplayName);
|
|
if (characterSheet)
|
|
{
|
|
this.str.Append("</color>");
|
|
this.str.Append("\n");
|
|
this.str.Append(this.effects[i].displayEffects);
|
|
}
|
|
if (this.effects[i].effect._OverallTime > 0f && !this.effects[i].effect._OverTime)
|
|
{
|
|
int num3 = this.effects[i].effectStartTime + this.effects[i].timeToWait - (int)Links.x.gameplay.seconds;
|
|
if (num3 < 0)
|
|
{
|
|
num3 *= -1;
|
|
}
|
|
num3 = (int)Records.x.ShowSeconds(num3);
|
|
if (characterSheet)
|
|
{
|
|
if (this.effects[i].displayEffects != "")
|
|
{
|
|
this.str.Append("\n</color>");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" (");
|
|
}
|
|
this.str.Append(num3);
|
|
if (characterSheet)
|
|
{
|
|
if ((float)num3 != 1f)
|
|
{
|
|
this.str.Append(" seconds remaining\n");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" second remaining\n");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("s)");
|
|
}
|
|
}
|
|
else if (characterSheet)
|
|
{
|
|
this.str.Append("\n");
|
|
}
|
|
num++;
|
|
}
|
|
}
|
|
string text = this.str.ToString();
|
|
if (text == "")
|
|
{
|
|
return "";
|
|
}
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x0600093D RID: 2365 RVA: 0x000C5340 File Offset: 0x000C3540
|
|
public float GetStatusEffectDuration(string effect)
|
|
{
|
|
int count = this.effects.Count;
|
|
float num = 0f;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (effect == this.effects[i].effect._Name && this.effects[i].effect._OverallTime > num)
|
|
{
|
|
num = (float)(this.effects[i].effectStartTime + this.effects[i].timeToWait - (int)Links.x.gameplay.seconds);
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600093E RID: 2366 RVA: 0x000C53DC File Offset: 0x000C35DC
|
|
public string GetStatusEffectSingle(string effect)
|
|
{
|
|
int count = this.effects.Count;
|
|
bool flag = false;
|
|
this.str.Clear();
|
|
float num = 0f;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (effect == this.effects[i].effect._Name)
|
|
{
|
|
if (!flag)
|
|
{
|
|
this.str.Append(this.effects[i].effect._DisplayName);
|
|
}
|
|
flag = true;
|
|
if (this.effects[i].effect._OverallTime > num)
|
|
{
|
|
num = (float)(this.effects[i].effectStartTime + this.effects[i].timeToWait - (int)Links.x.gameplay.seconds);
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.str.Append("<color #5E584D> (");
|
|
float num2 = Records.x.ShowSeconds((int)num);
|
|
if (num2 < 60f)
|
|
{
|
|
this.str.Append(num2);
|
|
this.str.Append(" sec.)</color>");
|
|
}
|
|
else
|
|
{
|
|
float num3 = num2 / 60f;
|
|
num3 = Mathf.Round(num3);
|
|
this.str.Append(num3);
|
|
this.str.Append(" min.)</color>");
|
|
}
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x0600093F RID: 2367 RVA: 0x000C5538 File Offset: 0x000C3738
|
|
public void GetEffectStrings()
|
|
{
|
|
this.effectsNamesFromSave.Clear();
|
|
this.effectsTimesFromSave.Clear();
|
|
this.effectsVar2FromSave.Clear();
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
if (this.effects[i])
|
|
{
|
|
this.effectsNamesFromSave.Add(this.effects[i].effectName);
|
|
this.effectsTimesFromSave.Add(this.effects[i].effectStartTime);
|
|
this.effectsVar2FromSave.Add(this.effects[i].sourceLevel);
|
|
}
|
|
}
|
|
if (this.effectsNamesFromSave.Count > 0)
|
|
{
|
|
this.str.Clear();
|
|
int count = this.effectsNamesFromSave.Count;
|
|
for (int j = 0; j < count; j++)
|
|
{
|
|
if (j > 0)
|
|
{
|
|
this.str.Append(",");
|
|
}
|
|
this.str.Append(this.effectsNamesFromSave[j]);
|
|
this.str.Append(",");
|
|
this.str.Append(this.effectsTimesFromSave[j]);
|
|
this.str.Append(",");
|
|
this.str.Append(0);
|
|
this.str.Append(",");
|
|
this.str.Append(this.effectsVar2FromSave[j]);
|
|
}
|
|
this.savedEffects = this.str.ToString();
|
|
return;
|
|
}
|
|
this.savedEffects = "";
|
|
}
|
|
|
|
// Token: 0x06000940 RID: 2368 RVA: 0x000C56D8 File Offset: 0x000C38D8
|
|
public void AddEffectFromLoad(string x, string y, string z, string w)
|
|
{
|
|
this.effectsNamesFromSave.Clear();
|
|
this.effectsTimesFromSave.Clear();
|
|
this.effectsVar2FromSave.Clear();
|
|
this.effectsNamesFromSave.Add(x);
|
|
if (y == null)
|
|
{
|
|
y = "0";
|
|
}
|
|
int num = 0;
|
|
int.TryParse(y, NumberStyles.Any, CultureInfo.InvariantCulture, out num);
|
|
this.effectsTimesFromSave.Add(num);
|
|
num = 0;
|
|
int.TryParse(w, NumberStyles.Any, CultureInfo.InvariantCulture, out num);
|
|
this.effectsVar2FromSave.Add((float)num);
|
|
}
|
|
|
|
// Token: 0x06000941 RID: 2369 RVA: 0x000C5760 File Offset: 0x000C3960
|
|
public void UpdateStats()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000942 RID: 2370 RVA: 0x000C5762 File Offset: 0x000C3962
|
|
public int XPToNextLevel()
|
|
{
|
|
return this.GetNextLevel(this.level);
|
|
}
|
|
|
|
// Token: 0x06000943 RID: 2371 RVA: 0x000C5770 File Offset: 0x000C3970
|
|
public int XPToNextLevelForLevelUp()
|
|
{
|
|
int nextLevel = this.GetNextLevel(this.level);
|
|
int xp = this.XP;
|
|
return nextLevel - xp;
|
|
}
|
|
|
|
// Token: 0x06000944 RID: 2372 RVA: 0x000C5794 File Offset: 0x000C3994
|
|
public void CheckThatXPLevelIsCorrect(int xpTest, int lvlTest)
|
|
{
|
|
if (Records.x.banquetIsle)
|
|
{
|
|
return;
|
|
}
|
|
int num = this.GetNextLevel(lvlTest - 1);
|
|
if (lvlTest == 1)
|
|
{
|
|
num = 0;
|
|
}
|
|
int num2 = this.GetNextLevel(lvlTest) - 1;
|
|
if (xpTest > num2 || xpTest < num)
|
|
{
|
|
Debug.Log("Level is wrong");
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
", min: ",
|
|
num.ToString(),
|
|
" max: ",
|
|
num2.ToString(),
|
|
" xp: ",
|
|
xpTest.ToString()
|
|
}));
|
|
bool flag = false;
|
|
for (int i = lvlTest; i >= 1; i--)
|
|
{
|
|
if (!flag)
|
|
{
|
|
Debug.Log("Testing level " + i.ToString());
|
|
num = this.GetNextLevel(i - 1) + 1;
|
|
if (i == 1)
|
|
{
|
|
num = 0;
|
|
}
|
|
Debug.Log("level min is " + num.ToString());
|
|
num2 = this.GetNextLevel(i) - 1;
|
|
Debug.Log("level max is " + num2.ToString());
|
|
if (xpTest <= num2 && xpTest >= num)
|
|
{
|
|
this.level = i;
|
|
Debug.Log("Found correct level: " + i.ToString());
|
|
flag = true;
|
|
if (this.level == 3 && xpTest >= 225)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "2";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (this.level == 4 && xpTest >= 375)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "3";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (this.level == 5)
|
|
{
|
|
if (xpTest >= 375)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "3";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (xpTest >= 600)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "4";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
}
|
|
if (this.level == 6)
|
|
{
|
|
if (xpTest >= 375)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "3";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (xpTest >= 600)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "4";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (xpTest >= 900)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "5";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
}
|
|
if (this.level == 7)
|
|
{
|
|
if (xpTest >= 375)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "3";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (xpTest >= 600)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "4";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (xpTest >= 900)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "5";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
if (xpTest >= 1250)
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "6";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000945 RID: 2373 RVA: 0x000C6A2C File Offset: 0x000C4C2C
|
|
public int GetNextLevel(int lvl)
|
|
{
|
|
if (lvl <= 1)
|
|
{
|
|
return 150;
|
|
}
|
|
if (lvl == 2)
|
|
{
|
|
return 600;
|
|
}
|
|
if (lvl == 3)
|
|
{
|
|
return 1350;
|
|
}
|
|
if (lvl == 4)
|
|
{
|
|
return 2400;
|
|
}
|
|
if (lvl == 5)
|
|
{
|
|
return 3750;
|
|
}
|
|
if (lvl == 6)
|
|
{
|
|
return 5400;
|
|
}
|
|
if (lvl == 7)
|
|
{
|
|
return 7350;
|
|
}
|
|
if (lvl == 8)
|
|
{
|
|
return 9600;
|
|
}
|
|
if (lvl == 9)
|
|
{
|
|
return 12150;
|
|
}
|
|
if (lvl == 10)
|
|
{
|
|
return 15000;
|
|
}
|
|
if (lvl == 11)
|
|
{
|
|
return 18150;
|
|
}
|
|
if (lvl == 12)
|
|
{
|
|
return 21600;
|
|
}
|
|
if (lvl == 13)
|
|
{
|
|
return 25350;
|
|
}
|
|
if (lvl == 14)
|
|
{
|
|
return 29400;
|
|
}
|
|
if (lvl == 15)
|
|
{
|
|
return 33750;
|
|
}
|
|
if (lvl == 16)
|
|
{
|
|
return 38400;
|
|
}
|
|
if (lvl == 17)
|
|
{
|
|
return 43350;
|
|
}
|
|
if (lvl == 18)
|
|
{
|
|
return 48600;
|
|
}
|
|
if (lvl == 19)
|
|
{
|
|
return 54150;
|
|
}
|
|
if (lvl == 20)
|
|
{
|
|
return 60000;
|
|
}
|
|
if (lvl == 21)
|
|
{
|
|
return 66150;
|
|
}
|
|
if (lvl == 22)
|
|
{
|
|
return 72600;
|
|
}
|
|
if (lvl == 23)
|
|
{
|
|
return 79350;
|
|
}
|
|
if (lvl == 24)
|
|
{
|
|
return 86400;
|
|
}
|
|
if (lvl == 25)
|
|
{
|
|
return 93750;
|
|
}
|
|
if (lvl == 26)
|
|
{
|
|
return 101400;
|
|
}
|
|
if (lvl == 27)
|
|
{
|
|
return 109350;
|
|
}
|
|
if (lvl == 28)
|
|
{
|
|
return 117600;
|
|
}
|
|
if (lvl == 29)
|
|
{
|
|
return 126150;
|
|
}
|
|
if (lvl == 30)
|
|
{
|
|
return 135000;
|
|
}
|
|
if (lvl == 31)
|
|
{
|
|
return 144150;
|
|
}
|
|
if (lvl == 32)
|
|
{
|
|
return 153600;
|
|
}
|
|
if (lvl == 33)
|
|
{
|
|
return 163350;
|
|
}
|
|
if (lvl == 34)
|
|
{
|
|
return 173400;
|
|
}
|
|
if (lvl == 35)
|
|
{
|
|
return 183750;
|
|
}
|
|
if (lvl == 36)
|
|
{
|
|
return 194400;
|
|
}
|
|
if (lvl == 37)
|
|
{
|
|
return 205350;
|
|
}
|
|
if (lvl == 38)
|
|
{
|
|
return 216600;
|
|
}
|
|
if (lvl == 39)
|
|
{
|
|
return 228150;
|
|
}
|
|
if (lvl == 40)
|
|
{
|
|
return 240000;
|
|
}
|
|
if (lvl == 41)
|
|
{
|
|
return 252150;
|
|
}
|
|
if (lvl == 42)
|
|
{
|
|
return 264600;
|
|
}
|
|
if (lvl == 43)
|
|
{
|
|
return 277350;
|
|
}
|
|
if (lvl == 44)
|
|
{
|
|
return 290400;
|
|
}
|
|
if (lvl == 45)
|
|
{
|
|
return 303750;
|
|
}
|
|
if (lvl == 46)
|
|
{
|
|
return 317400;
|
|
}
|
|
if (lvl == 47)
|
|
{
|
|
return 331350;
|
|
}
|
|
if (lvl == 48)
|
|
{
|
|
return 345600;
|
|
}
|
|
if (lvl == 49)
|
|
{
|
|
return 360150;
|
|
}
|
|
if (lvl == 50)
|
|
{
|
|
return 375000;
|
|
}
|
|
return lvl * lvl * 150;
|
|
}
|
|
|
|
// Token: 0x06000946 RID: 2374 RVA: 0x000C6C60 File Offset: 0x000C4E60
|
|
public int GetNextLevelBefore1_3(int lvl)
|
|
{
|
|
if (lvl <= 1)
|
|
{
|
|
return 100;
|
|
}
|
|
if (lvl == 2)
|
|
{
|
|
return 225;
|
|
}
|
|
if (lvl == 3)
|
|
{
|
|
return 375;
|
|
}
|
|
if (lvl == 4)
|
|
{
|
|
return 600;
|
|
}
|
|
if (lvl == 5)
|
|
{
|
|
return 900;
|
|
}
|
|
if (lvl == 6)
|
|
{
|
|
return 1250;
|
|
}
|
|
if (lvl == 7)
|
|
{
|
|
return 1600;
|
|
}
|
|
if (lvl == 8)
|
|
{
|
|
return 2000;
|
|
}
|
|
if (lvl == 9)
|
|
{
|
|
return 2400;
|
|
}
|
|
if (lvl == 10)
|
|
{
|
|
return 2800;
|
|
}
|
|
if (lvl == 11)
|
|
{
|
|
return 3200;
|
|
}
|
|
if (lvl == 12)
|
|
{
|
|
return 3800;
|
|
}
|
|
if (lvl == 13)
|
|
{
|
|
return 7000;
|
|
}
|
|
if (lvl == 14)
|
|
{
|
|
return 10000;
|
|
}
|
|
if (lvl == 15)
|
|
{
|
|
return 15000;
|
|
}
|
|
if (lvl == 16)
|
|
{
|
|
return 21000;
|
|
}
|
|
if (lvl == 17)
|
|
{
|
|
return 27000;
|
|
}
|
|
if (lvl == 18)
|
|
{
|
|
return 35000;
|
|
}
|
|
if (lvl == 19)
|
|
{
|
|
return 45000;
|
|
}
|
|
if (lvl == 20)
|
|
{
|
|
return 55000;
|
|
}
|
|
if (lvl == 21)
|
|
{
|
|
return 65000;
|
|
}
|
|
if (lvl == 22)
|
|
{
|
|
return 75000;
|
|
}
|
|
if (lvl == 23)
|
|
{
|
|
return 85000;
|
|
}
|
|
if (lvl == 24)
|
|
{
|
|
return 95000;
|
|
}
|
|
if (lvl == 25)
|
|
{
|
|
return 105000;
|
|
}
|
|
if (lvl == 26)
|
|
{
|
|
return 115000;
|
|
}
|
|
if (lvl == 27)
|
|
{
|
|
return 125000;
|
|
}
|
|
if (lvl == 28)
|
|
{
|
|
return 135000;
|
|
}
|
|
if (lvl == 29)
|
|
{
|
|
return 145000;
|
|
}
|
|
if (lvl == 30)
|
|
{
|
|
return 155000;
|
|
}
|
|
return 999999;
|
|
}
|
|
|
|
// Token: 0x06000947 RID: 2375 RVA: 0x000C6DB4 File Offset: 0x000C4FB4
|
|
public int CorrectLevelForXP(int prevXP, int prevLevel)
|
|
{
|
|
int num = this.GetNextLevel(prevLevel - 1);
|
|
if (prevLevel == 1)
|
|
{
|
|
prevLevel = 0;
|
|
}
|
|
int num2 = this.GetNextLevel(prevLevel) - 1;
|
|
if (prevXP <= num2 && prevXP >= num)
|
|
{
|
|
return prevLevel;
|
|
}
|
|
Debug.Log("Level is wrong");
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
", min: ",
|
|
num.ToString(),
|
|
" max: ",
|
|
num2.ToString(),
|
|
" xp: ",
|
|
prevXP.ToString()
|
|
}));
|
|
bool flag = false;
|
|
int num3 = prevLevel;
|
|
for (int i = 50; i >= 1; i--)
|
|
{
|
|
if (!flag)
|
|
{
|
|
Debug.Log("Testing level " + i.ToString());
|
|
num = this.GetNextLevel(i - 1) + 1;
|
|
if (i == 1)
|
|
{
|
|
num = 0;
|
|
}
|
|
Debug.Log("level min is " + num.ToString());
|
|
num2 = this.GetNextLevel(i) - 1;
|
|
Debug.Log("level max is " + num2.ToString());
|
|
if (prevXP <= num2 && prevXP >= num)
|
|
{
|
|
num3 = i;
|
|
Debug.Log("Found correct level: " + i.ToString());
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
return num3;
|
|
}
|
|
|
|
// Token: 0x06000948 RID: 2376 RVA: 0x000C6EDC File Offset: 0x000C50DC
|
|
public void AddXP(int amt, Character target, bool show)
|
|
{
|
|
if (target && target.summoned)
|
|
{
|
|
return;
|
|
}
|
|
if (!this.character.dead && amt > 0)
|
|
{
|
|
if (target)
|
|
{
|
|
float num = (float)amt;
|
|
if (target.numberOfTimesKilled == 1f)
|
|
{
|
|
num = (float)amt * 0.75f;
|
|
}
|
|
if (target.numberOfTimesKilled == 2f)
|
|
{
|
|
num = (float)amt * 0.5f;
|
|
}
|
|
if (target.numberOfTimesKilled == 3f)
|
|
{
|
|
num = (float)amt * 0.25f;
|
|
}
|
|
if (target.numberOfTimesKilled >= 4f)
|
|
{
|
|
num = 0f;
|
|
}
|
|
amt = Mathf.RoundToInt(num);
|
|
}
|
|
this.XP += amt;
|
|
if (show)
|
|
{
|
|
this.ShowXP(amt);
|
|
}
|
|
this.CheckForLevelUp();
|
|
this.str.Clear();
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
this.str.Append(this.GetName());
|
|
this.str.Append("</color>");
|
|
this.str.Append(" +");
|
|
this.str.Append(amt);
|
|
this.str.Append(" XP");
|
|
if (!Links.x.creation)
|
|
{
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
}
|
|
this.CheckForLevelUp();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000949 RID: 2377 RVA: 0x000C7048 File Offset: 0x000C5248
|
|
public void ShowXP(int amt)
|
|
{
|
|
Animator animatedText = Links.x.cellar.GetAnimatedText("XP", amt.ToString(), false);
|
|
animatedText.gameObject.transform.position = this.character.body.HeadPosition(0f) + new Vector3(Random.Range(0f, 1f), Random.Range(0f, 1f), 0f) + new Vector3(0f, 2.5f, 0f);
|
|
animatedText.gameObject.transform.SetParent(this.character.tr, true);
|
|
animatedText.gameObject.name = this.GetName();
|
|
MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "XP", null);
|
|
}
|
|
|
|
// Token: 0x0600094A RID: 2378 RVA: 0x000C7138 File Offset: 0x000C5338
|
|
public void CheckForLevelUp()
|
|
{
|
|
for (int i = 0; i < 30; i++)
|
|
{
|
|
int num = this.level;
|
|
if (this.GetNextLevel(this.level) <= this.XP)
|
|
{
|
|
this.LevelUpSkills();
|
|
if (this.levelUpCorout != null)
|
|
{
|
|
base.StopCoroutine(this.levelUpCorout);
|
|
this.levelUpCorout = null;
|
|
}
|
|
this.levelUpCorout = this.LevelUpDelay("Skill");
|
|
base.StartCoroutine(this.levelUpCorout);
|
|
this.str.Clear();
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
this.str.Append(this.GetName());
|
|
this.str.Append("</color>");
|
|
this.str.Append(" leveled up");
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600094B RID: 2379 RVA: 0x000C7230 File Offset: 0x000C5430
|
|
private IEnumerator LevelUpDelay(string type)
|
|
{
|
|
yield return new WaitForSecondsRealtime(2f);
|
|
Animator animator;
|
|
if (type == "Skill")
|
|
{
|
|
animator = Links.x.cellar.GetAnimatedText("LevelUp", "", false);
|
|
}
|
|
else
|
|
{
|
|
animator = Links.x.cellar.GetAnimatedText("Text", "Stat+", false);
|
|
}
|
|
animator.gameObject.transform.position = this.character.body.HeadPosition(0f) + new Vector3(Random.Range(0f, 1f), Random.Range(0f, 1f), 0f) + new Vector3(0f, 0.5f, 0f);
|
|
animator.gameObject.transform.SetParent(this.character.tr, true);
|
|
animator.gameObject.name = this.GetName();
|
|
MasterAudio.PlaySoundAndForget("Feedback", 0.1f, new float?(1f), 0f, "LevelUp", null);
|
|
this.levelUpCorout = null;
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x0600094C RID: 2380 RVA: 0x000C7248 File Offset: 0x000C5448
|
|
public void GetHighestSkills(out int highest1, out int highest2, out int highest3)
|
|
{
|
|
highest1 = -1;
|
|
float num = -1f;
|
|
highest2 = -1;
|
|
highest3 = -1;
|
|
for (int i = 0; i < this.skillsProgress.Count; i++)
|
|
{
|
|
if (this.skillsProgress[i] > num && this.skillsProgress[i] > 0f)
|
|
{
|
|
highest1 = i;
|
|
num = this.skillsProgress[i];
|
|
}
|
|
}
|
|
num = -1f;
|
|
for (int j = 0; j < this.skillsProgress.Count; j++)
|
|
{
|
|
if (this.skillsProgress[j] > num && j != highest1 && this.skillsProgress[j] > 0f)
|
|
{
|
|
highest2 = j;
|
|
num = this.skillsProgress[j];
|
|
}
|
|
}
|
|
num = -1f;
|
|
for (int k = 0; k < this.skillsProgress.Count; k++)
|
|
{
|
|
if (this.skillsProgress[k] > num && k != highest1 && k != highest2 && this.skillsProgress[k] > 0f)
|
|
{
|
|
highest3 = k;
|
|
num = this.skillsProgress[k];
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600094D RID: 2381 RVA: 0x000C7358 File Offset: 0x000C5558
|
|
public void LevelUpSkills()
|
|
{
|
|
int num = 0;
|
|
int num2 = 1;
|
|
int num3 = 2;
|
|
this.GetHighestSkills(out num, out num2, out num3);
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += this.level.ToString();
|
|
this.levelUps += ",";
|
|
this.levelUps += num.ToString();
|
|
this.levelUps += ",";
|
|
this.levelUps += num2.ToString();
|
|
this.levelUps += ",";
|
|
this.levelUps += num3.ToString();
|
|
for (int i = 0; i < this.skillsProgress.Count; i++)
|
|
{
|
|
this.skillsProgress[i] = 0f;
|
|
}
|
|
this.level++;
|
|
this.LevelUpStats();
|
|
}
|
|
|
|
// Token: 0x0600094E RID: 2382 RVA: 0x000C7480 File Offset: 0x000C5680
|
|
public void LevelUpStats()
|
|
{
|
|
if (this.levelUps != "")
|
|
{
|
|
this.levelUps += ",";
|
|
}
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
this.levelUps += ",";
|
|
this.levelUps += "-1";
|
|
if (this.levelUpCorout != null)
|
|
{
|
|
base.StopCoroutine(this.levelUpCorout);
|
|
this.levelUpCorout = null;
|
|
}
|
|
this.levelUpCorout = this.LevelUpDelay("Stat");
|
|
base.StartCoroutine(this.levelUpCorout);
|
|
this.str.Clear();
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
this.str.Append(this.GetName());
|
|
this.str.Append("</color>");
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
}
|
|
|
|
// Token: 0x0600094F RID: 2383 RVA: 0x000C75F4 File Offset: 0x000C57F4
|
|
public bool ShouldStun(Character target)
|
|
{
|
|
bool flag = false;
|
|
if (target.party)
|
|
{
|
|
flag = false;
|
|
}
|
|
if (!this.character.npc && !Records.x.kill)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (this.character.npc && (this.isGuard || this.allegiance == 6U))
|
|
{
|
|
if (!target)
|
|
{
|
|
return false;
|
|
}
|
|
if (target.stats.animal)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
flag = true;
|
|
if (!Records.x.kill && target.stats.allegiance == 7U && target.stats.xmlName.Contains("WestRuins"))
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06000950 RID: 2384 RVA: 0x000C7697 File Offset: 0x000C5897
|
|
public bool CanAttackStunned()
|
|
{
|
|
return !this.character.npc || (!this.isGuard && this.allegiance != 6U);
|
|
}
|
|
|
|
// Token: 0x06000951 RID: 2385 RVA: 0x000C76BC File Offset: 0x000C58BC
|
|
public string GetDialogueName()
|
|
{
|
|
if (!this.character.npc)
|
|
{
|
|
return this.displayName;
|
|
}
|
|
if (this.initiateDialogue >= 10 && this.race != "Dryad")
|
|
{
|
|
return this.displayName + ", " + this.characterRow._GenericName;
|
|
}
|
|
if (this.characterRow._GenericName != "")
|
|
{
|
|
return this.characterRow._GenericName;
|
|
}
|
|
return this.displayName;
|
|
}
|
|
|
|
// Token: 0x06000952 RID: 2386 RVA: 0x000C7740 File Offset: 0x000C5940
|
|
public string GetName()
|
|
{
|
|
if (this.character.ghost)
|
|
{
|
|
return "Ghost";
|
|
}
|
|
if (!this.character.npc)
|
|
{
|
|
return this.displayName;
|
|
}
|
|
if (this.initiateDialogue >= 10)
|
|
{
|
|
return this.displayName;
|
|
}
|
|
if (this.characterRow._GenericName != "")
|
|
{
|
|
return this.characterRow._GenericName;
|
|
}
|
|
if (this.race.Contains("Forest"))
|
|
{
|
|
return "Forest creature";
|
|
}
|
|
if (this.race.Contains("Shroom"))
|
|
{
|
|
return "Shroom creature";
|
|
}
|
|
if (this.race.Contains("Fish"))
|
|
{
|
|
return "Fish creature";
|
|
}
|
|
if (this.race.Contains("Beast"))
|
|
{
|
|
return "Beast";
|
|
}
|
|
if (this.race.Contains("Demon"))
|
|
{
|
|
return "Demon";
|
|
}
|
|
return this.displayName;
|
|
}
|
|
|
|
// Token: 0x06000953 RID: 2387 RVA: 0x000C7826 File Offset: 0x000C5A26
|
|
public string GetDisplayName()
|
|
{
|
|
return this.displayName;
|
|
}
|
|
|
|
// Token: 0x06000954 RID: 2388 RVA: 0x000C782E File Offset: 0x000C5A2E
|
|
public string GetGenericName()
|
|
{
|
|
return this.characterRow._GenericName;
|
|
}
|
|
|
|
// Token: 0x06000955 RID: 2389 RVA: 0x000C783C File Offset: 0x000C5A3C
|
|
public void UpdateDiceModifiers(int type, int count, int sides, bool removing)
|
|
{
|
|
if (!removing)
|
|
{
|
|
this.diceCountMods.Add(count);
|
|
this.diceSideMods.Add(sides);
|
|
this.diceTypeMods.Add(type);
|
|
return;
|
|
}
|
|
int num = -1;
|
|
for (int i = 0; i < this.diceTypeMods.Count; i++)
|
|
{
|
|
if (this.diceCountMods[i] == count && this.diceSideMods[i] == sides && this.diceTypeMods[i] == type)
|
|
{
|
|
num = i;
|
|
break;
|
|
}
|
|
}
|
|
if (num > -1)
|
|
{
|
|
this.diceCountMods.RemoveAt(num);
|
|
this.diceSideMods.RemoveAt(num);
|
|
this.diceTypeMods.RemoveAt(num);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000956 RID: 2390 RVA: 0x000C78E3 File Offset: 0x000C5AE3
|
|
public int GetDiceModifier(int type)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x06000957 RID: 2391 RVA: 0x000C78E6 File Offset: 0x000C5AE6
|
|
public int GetDiceModifierAverage(int type)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x06000958 RID: 2392 RVA: 0x000C78EC File Offset: 0x000C5AEC
|
|
public int GetFlatModifier(int type)
|
|
{
|
|
if (type == 0)
|
|
{
|
|
return (int)this.strengthModFlat;
|
|
}
|
|
if (type == 1)
|
|
{
|
|
return (int)this.agilityModFlat;
|
|
}
|
|
if (type == 2)
|
|
{
|
|
return (int)this.auraModFlat;
|
|
}
|
|
if (type == 3)
|
|
{
|
|
return (int)this.paganModFlat;
|
|
}
|
|
if (type == 4)
|
|
{
|
|
return (int)this.dexterityModFlat;
|
|
}
|
|
if (type == 5)
|
|
{
|
|
return (int)this.sensoryModFlat;
|
|
}
|
|
if (type == 6)
|
|
{
|
|
return (int)this.severityModFlat;
|
|
}
|
|
if (type == 7)
|
|
{
|
|
return (int)this.paganSeverityModFlat;
|
|
}
|
|
if (type == 8)
|
|
{
|
|
return (int)this.hitModFlat;
|
|
}
|
|
if (type == 9)
|
|
{
|
|
return (int)this.paganHitModFlat;
|
|
}
|
|
if (type == 10)
|
|
{
|
|
return (int)this.evadeModFlat;
|
|
}
|
|
if (type == 11)
|
|
{
|
|
return (int)this.blockModFlat;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x06000959 RID: 2393 RVA: 0x000C798C File Offset: 0x000C5B8C
|
|
public int GetCombatSkillID(string mainSkill)
|
|
{
|
|
int num = 0;
|
|
if (mainSkill == "Whip")
|
|
{
|
|
num = 35;
|
|
}
|
|
if (mainSkill == "Pole")
|
|
{
|
|
num = 8;
|
|
}
|
|
if (mainSkill == "Scepter" || mainSkill == "Scepter")
|
|
{
|
|
num = 6;
|
|
}
|
|
if (mainSkill == "Sword")
|
|
{
|
|
num = 5;
|
|
}
|
|
if (mainSkill == "ShortSword")
|
|
{
|
|
num = 4;
|
|
}
|
|
if (mainSkill == "Sling")
|
|
{
|
|
num = 11;
|
|
}
|
|
if (mainSkill == "Ax")
|
|
{
|
|
num = 7;
|
|
}
|
|
if (mainSkill == "Bow")
|
|
{
|
|
num = 10;
|
|
}
|
|
if (mainSkill == "Edge")
|
|
{
|
|
num = 4;
|
|
}
|
|
if (mainSkill == "Bindings")
|
|
{
|
|
num = 16;
|
|
}
|
|
if (mainSkill == "Fauna")
|
|
{
|
|
num = 17;
|
|
}
|
|
if (mainSkill == "Vines")
|
|
{
|
|
num = 18;
|
|
}
|
|
if (mainSkill == "Spores")
|
|
{
|
|
num = 19;
|
|
}
|
|
if (mainSkill == "Elixir")
|
|
{
|
|
num = 12;
|
|
}
|
|
if (mainSkill == "LargeShield")
|
|
{
|
|
num = 14;
|
|
}
|
|
if (mainSkill == "SmallShield")
|
|
{
|
|
num = 15;
|
|
}
|
|
if (mainSkill == "Hand-to-Hand")
|
|
{
|
|
num = 13;
|
|
}
|
|
if (mainSkill == "Flute")
|
|
{
|
|
num = 26;
|
|
}
|
|
if (mainSkill == "Horn")
|
|
{
|
|
num = 27;
|
|
}
|
|
if (mainSkill == "Pipe")
|
|
{
|
|
num = 29;
|
|
}
|
|
if (mainSkill == "Pearl")
|
|
{
|
|
num = 1;
|
|
}
|
|
if (mainSkill == "Stonewood")
|
|
{
|
|
num = 3;
|
|
}
|
|
if (mainSkill == "Robes")
|
|
{
|
|
num = 0;
|
|
}
|
|
if (mainSkill == "Crimscale")
|
|
{
|
|
num = 2;
|
|
}
|
|
if (mainSkill == "Multi-Hand")
|
|
{
|
|
num = 9;
|
|
}
|
|
if (mainSkill == "Flute")
|
|
{
|
|
num = 26;
|
|
}
|
|
if (mainSkill == "Horn")
|
|
{
|
|
num = 27;
|
|
}
|
|
if (mainSkill == "Pipe")
|
|
{
|
|
num = 29;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600095A RID: 2394 RVA: 0x000C7B60 File Offset: 0x000C5D60
|
|
public int GetArmorSkillID(string mainSkill)
|
|
{
|
|
int num = 0;
|
|
if (mainSkill == "Pearl")
|
|
{
|
|
num = 1;
|
|
}
|
|
if (mainSkill == "Stonewood")
|
|
{
|
|
num = 3;
|
|
}
|
|
if (mainSkill == "Robes")
|
|
{
|
|
num = 0;
|
|
}
|
|
if (mainSkill == "Crimscale")
|
|
{
|
|
num = 2;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600095B RID: 2395 RVA: 0x000C7BAC File Offset: 0x000C5DAC
|
|
public int GetCharmerSkillID(string mainSkill)
|
|
{
|
|
int num = 0;
|
|
if (mainSkill == "Forest")
|
|
{
|
|
num = 24;
|
|
}
|
|
if (mainSkill == "Fish")
|
|
{
|
|
num = 23;
|
|
}
|
|
if (mainSkill == "Shroom")
|
|
{
|
|
num = 25;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600095C RID: 2396 RVA: 0x000C7BEC File Offset: 0x000C5DEC
|
|
public float R2(float x)
|
|
{
|
|
return Mathf.Round(x * 10f) / 10f;
|
|
}
|
|
|
|
// Token: 0x0600095D RID: 2397 RVA: 0x000C7C00 File Offset: 0x000C5E00
|
|
public float R1(float x)
|
|
{
|
|
return Mathf.Round(x * 10f) / 10f;
|
|
}
|
|
|
|
// Token: 0x0600095E RID: 2398 RVA: 0x000C7C14 File Offset: 0x000C5E14
|
|
public float PartyAdventureMoveSpeed()
|
|
{
|
|
return Links.x.fellowship.GetPartyMoveSpeed();
|
|
}
|
|
|
|
// Token: 0x0600095F RID: 2399 RVA: 0x000C7C28 File Offset: 0x000C5E28
|
|
public float MoveSpeed(bool forCharacterSheet)
|
|
{
|
|
float num = this.moveSpeedMod;
|
|
float num2;
|
|
if (!forCharacterSheet)
|
|
{
|
|
if (this.animal)
|
|
{
|
|
num2 = this.PaganMSNPC() + this.StrengthMSNPC() + this.AglMSNPC();
|
|
num2 += this.MoveSpeedBaseNPC() * 35f;
|
|
}
|
|
else if (!this.character.party)
|
|
{
|
|
num2 = this.PaganMSNPC() + this.StrengthMSNPC() + this.AglMSNPC();
|
|
if (this.character.inCombat)
|
|
{
|
|
num2 += this.MoveSpeedBaseNPC() * 60f;
|
|
}
|
|
else
|
|
{
|
|
num2 += this.MoveSpeedBaseNPC() * 91f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num2 = this.PaganMS() + this.StrengthMS() + this.AglMS();
|
|
if (forCharacterSheet || this.character.inCombat)
|
|
{
|
|
num2 += 68f;
|
|
}
|
|
else
|
|
{
|
|
num2 += 97f;
|
|
}
|
|
}
|
|
if (this.character.vipFollow || this.character.summoned)
|
|
{
|
|
if (this.character.animator.GetBool("Combat"))
|
|
{
|
|
num2 += this.MoveSpeedMS() * 100f;
|
|
}
|
|
else
|
|
{
|
|
num2 += this.R1(this.summonSpeed) * 100f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num2 += this.MoveSpeedMS() * 100f;
|
|
}
|
|
num2 *= 0.01f;
|
|
}
|
|
else
|
|
{
|
|
num2 = this.PaganMS() + this.StrengthMS() + this.AglMS();
|
|
}
|
|
if (this.character.party)
|
|
{
|
|
float num3 = this.BagWeightMS();
|
|
num2 *= num3;
|
|
}
|
|
if (num != 0f)
|
|
{
|
|
float moveMod = this.GetMoveMod();
|
|
num2 *= moveMod;
|
|
}
|
|
if (num2 < 0f)
|
|
{
|
|
num2 = 0.1f;
|
|
}
|
|
return this.R2(num2);
|
|
}
|
|
|
|
// Token: 0x06000960 RID: 2400 RVA: 0x000C7DC8 File Offset: 0x000C5FC8
|
|
public float GetMoveMod()
|
|
{
|
|
float num = this.moveSpeedMod;
|
|
if (num > 10f)
|
|
{
|
|
num = 10f;
|
|
}
|
|
if (num < -10f)
|
|
{
|
|
num = -10f;
|
|
}
|
|
float num2 = Mathf.Abs(num / 10f);
|
|
if (num > 0f)
|
|
{
|
|
return this.R1(1f + num2);
|
|
}
|
|
return this.R1(1f - num2);
|
|
}
|
|
|
|
// Token: 0x06000961 RID: 2401 RVA: 0x000C7E28 File Offset: 0x000C6028
|
|
public float MoveSpeedBaseNPC()
|
|
{
|
|
return 0.675f;
|
|
}
|
|
|
|
// Token: 0x06000962 RID: 2402 RVA: 0x000C7E2F File Offset: 0x000C602F
|
|
public float MoveSpeedMS()
|
|
{
|
|
return this.R1(this.moveSpeed / 2f);
|
|
}
|
|
|
|
// Token: 0x06000963 RID: 2403 RVA: 0x000C7E43 File Offset: 0x000C6043
|
|
public float PaganMS()
|
|
{
|
|
return this.R1((this.Pagan() + this.paganModFlat + (float)this.GetDiceModifierAverage(3)) / 10f);
|
|
}
|
|
|
|
// Token: 0x06000964 RID: 2404 RVA: 0x000C7E67 File Offset: 0x000C6067
|
|
public float StrengthMS()
|
|
{
|
|
return this.R1((this.Strength() + this.strengthModFlat + (float)this.GetDiceModifierAverage(0)) / 10f);
|
|
}
|
|
|
|
// Token: 0x06000965 RID: 2405 RVA: 0x000C7E8B File Offset: 0x000C608B
|
|
public float PaganMSNPC()
|
|
{
|
|
return this.R1((this.Pagan() + this.paganModFlat + (float)this.GetDiceModifierAverage(3)) / 3f);
|
|
}
|
|
|
|
// Token: 0x06000966 RID: 2406 RVA: 0x000C7EAF File Offset: 0x000C60AF
|
|
public float StrengthMSNPC()
|
|
{
|
|
return this.R1((this.Strength() + this.strengthModFlat + (float)this.GetDiceModifierAverage(0)) / 3f);
|
|
}
|
|
|
|
// Token: 0x06000967 RID: 2407 RVA: 0x000C7ED3 File Offset: 0x000C60D3
|
|
public float AglMSNPC()
|
|
{
|
|
return this.R1((this.Agility() + this.agilityModFlat + (float)this.GetDiceModifierAverage(1)) / 3f);
|
|
}
|
|
|
|
// Token: 0x06000968 RID: 2408 RVA: 0x000C7EF7 File Offset: 0x000C60F7
|
|
public float AglMS()
|
|
{
|
|
return this.R1((this.Agility() + this.agilityModFlat + (float)this.GetDiceModifierAverage(1)) / 10f);
|
|
}
|
|
|
|
// Token: 0x06000969 RID: 2409 RVA: 0x000C7F1C File Offset: 0x000C611C
|
|
public float BagWeightMS()
|
|
{
|
|
if (this.character.party && this.character.inventoryBag)
|
|
{
|
|
return 1f - Mathf.Clamp(this.R1(this.character.inventoryBag.weight / (float)this.CarryingWeight() * 0.4f), 0f, 0.4f);
|
|
}
|
|
return 1f;
|
|
}
|
|
|
|
// Token: 0x0600096A RID: 2410 RVA: 0x000C7F88 File Offset: 0x000C6188
|
|
public float UtilitySpeed()
|
|
{
|
|
return 1f;
|
|
}
|
|
|
|
// Token: 0x0600096B RID: 2411 RVA: 0x000C7F8F File Offset: 0x000C618F
|
|
public float ActionTime()
|
|
{
|
|
if (this.character.pipeSummons)
|
|
{
|
|
return 0.1f;
|
|
}
|
|
return this.AttackSpeed(this.currentHand, false, false);
|
|
}
|
|
|
|
// Token: 0x0600096C RID: 2412 RVA: 0x000C7FB4 File Offset: 0x000C61B4
|
|
public float Initiative()
|
|
{
|
|
float num = (this.Agility() + this.agilityModFlat) / 300f;
|
|
float num2 = (this.Sensory() + this.sensoryModFlat) / 300f;
|
|
return this.R1(num + num2 + 0.3f);
|
|
}
|
|
|
|
// Token: 0x0600096D RID: 2413 RVA: 0x000C7FF8 File Offset: 0x000C61F8
|
|
public float AttackSpeed(int index, bool forCharacterSheet, bool forAI)
|
|
{
|
|
float num = this.SkillAS(index);
|
|
float num2 = this.AglAS(forCharacterSheet);
|
|
float num3 = this.actionTimeMod;
|
|
float num4 = this.BaseAtkSpeed(index) - num - num2 + num3;
|
|
if (Records.x.showRuleset && !forCharacterSheet && !forAI)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s attack speed total: ",
|
|
num4.ToString(),
|
|
", agl mod: ",
|
|
num2.ToString(),
|
|
", skill: ",
|
|
num.ToString(),
|
|
", base: ",
|
|
this.BaseAtkSpeed(index).ToString()
|
|
}));
|
|
}
|
|
if (!forCharacterSheet)
|
|
{
|
|
if (this.lastActionModifier == 0f)
|
|
{
|
|
this.lastActionModifier = 1f;
|
|
}
|
|
num4 *= this.lastActionModifier;
|
|
if (Records.x.filming && this.character.mainSelected)
|
|
{
|
|
num4 *= 0.5f;
|
|
}
|
|
}
|
|
if (num4 < 0.1f)
|
|
{
|
|
num4 = 0.1f;
|
|
}
|
|
return this.R1(num4);
|
|
}
|
|
|
|
// Token: 0x0600096E RID: 2414 RVA: 0x000C8104 File Offset: 0x000C6304
|
|
public float FreeAttackSpeed(int index, bool forCharacterSheet, bool forAI)
|
|
{
|
|
float num = this.SkillAS(index);
|
|
float num2 = this.AglAS(forCharacterSheet);
|
|
float num3 = this.actionTimeMod;
|
|
float num4 = this.BaseAtkSpeed(index) - num - num2 + num3;
|
|
if (Records.x.showRuleset && !forCharacterSheet && !forAI)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s attack speed total: ",
|
|
num4.ToString(),
|
|
", agl mod: ",
|
|
num2.ToString(),
|
|
", skill: ",
|
|
num.ToString(),
|
|
", base: ",
|
|
this.BaseAtkSpeed(index).ToString()
|
|
}));
|
|
}
|
|
if (!forCharacterSheet)
|
|
{
|
|
if (this.lastActionModifier == 0f)
|
|
{
|
|
this.lastActionModifier = 1f;
|
|
}
|
|
num4 *= this.lastActionModifier;
|
|
if (Records.x.filming && this.character.mainSelected)
|
|
{
|
|
num4 *= 0.5f;
|
|
}
|
|
}
|
|
num4 *= 0.1f;
|
|
if (num4 < 0.1f)
|
|
{
|
|
num4 = 0.1f;
|
|
}
|
|
return this.R1(num4);
|
|
}
|
|
|
|
// Token: 0x0600096F RID: 2415 RVA: 0x000C8218 File Offset: 0x000C6418
|
|
public float AglAS(bool forCharacterSheet)
|
|
{
|
|
float num = this.Agility() + this.agilityModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(1);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(1);
|
|
}
|
|
return this.R1(num / 75f);
|
|
}
|
|
|
|
// Token: 0x06000970 RID: 2416 RVA: 0x000C825B File Offset: 0x000C645B
|
|
public bool HasShield()
|
|
{
|
|
return this.character.GetInvNum(2) > 1 && Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2))._EquipSlotID == 1;
|
|
}
|
|
|
|
// Token: 0x06000971 RID: 2417 RVA: 0x000C8292 File Offset: 0x000C6492
|
|
public float ShieldAC()
|
|
{
|
|
if (this.character.GetInvNum(2) > 1)
|
|
{
|
|
return Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2))._AC;
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
// Token: 0x06000972 RID: 2418 RVA: 0x000C82CC File Offset: 0x000C64CC
|
|
public float SkillAS(int index)
|
|
{
|
|
string text = "";
|
|
if (index == 0 && this.character.invRow1 != null)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (index == 1 && this.character.invRow2 != null)
|
|
{
|
|
text = this.character.invRow2._MainSkill;
|
|
}
|
|
int num = this.GetCombatSkillID(text);
|
|
if (index == 7 || index == 13 || index == 14)
|
|
{
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(index * 2));
|
|
if (invRowByIndex._MainSkill == "Flute")
|
|
{
|
|
num = 26;
|
|
}
|
|
if (invRowByIndex._MainSkill == "Horn")
|
|
{
|
|
num = 27;
|
|
}
|
|
if (invRowByIndex._MainSkill == "Pipe")
|
|
{
|
|
num = 29;
|
|
}
|
|
if (invRowByIndex._MainSkill.Contains("Elixir"))
|
|
{
|
|
num = 12;
|
|
}
|
|
}
|
|
float num2 = this.GetSkill(num);
|
|
if (num2 < 0f)
|
|
{
|
|
num2 = 0f;
|
|
}
|
|
num2 /= 400f;
|
|
return this.R1(num2);
|
|
}
|
|
|
|
// Token: 0x06000973 RID: 2419 RVA: 0x000C83D0 File Offset: 0x000C65D0
|
|
public float BaseAtkSpeed(int index)
|
|
{
|
|
if (this.HandCount() <= 1f)
|
|
{
|
|
if (this.character.invRow1 != null)
|
|
{
|
|
return this.character.invRow1._WpnSpeed;
|
|
}
|
|
}
|
|
else if (this.character.invRow2 != null)
|
|
{
|
|
return (this.character.invRow1._WpnSpeed + this.character.invRow2._WpnSpeed) / 2f;
|
|
}
|
|
if (index == 7 || index == 13 || index == 14)
|
|
{
|
|
return Links.x.library.GetInvRowByIndex(this.character.GetInvNum(index * 2))._WpnSpeed;
|
|
}
|
|
return 3f;
|
|
}
|
|
|
|
// Token: 0x06000974 RID: 2420 RVA: 0x000C8474 File Offset: 0x000C6674
|
|
public int GetCurrentHand()
|
|
{
|
|
if (this.character.actions)
|
|
{
|
|
int num = 0;
|
|
if (this.character.actions.firstAttack && this.character.inAction && this.character.GetInvNum(2) > 1 && this.character.invRow2._EquipSlotID == 0)
|
|
{
|
|
num = 1;
|
|
}
|
|
return num;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x06000975 RID: 2421 RVA: 0x000C84DA File Offset: 0x000C66DA
|
|
private float Pagan()
|
|
{
|
|
if (this.pagan < 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
return this.pagan;
|
|
}
|
|
|
|
// Token: 0x06000976 RID: 2422 RVA: 0x000C84F5 File Offset: 0x000C66F5
|
|
private float Dexterity()
|
|
{
|
|
if (this.dexterity < 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
return this.dexterity;
|
|
}
|
|
|
|
// Token: 0x06000977 RID: 2423 RVA: 0x000C8510 File Offset: 0x000C6710
|
|
private float Strength()
|
|
{
|
|
if (this.strength < 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
return this.strength;
|
|
}
|
|
|
|
// Token: 0x06000978 RID: 2424 RVA: 0x000C852B File Offset: 0x000C672B
|
|
private float Agility()
|
|
{
|
|
if (this.agility < 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
return this.agility;
|
|
}
|
|
|
|
// Token: 0x06000979 RID: 2425 RVA: 0x000C8546 File Offset: 0x000C6746
|
|
private float Sensory()
|
|
{
|
|
if (this.sensory < 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
return this.sensory;
|
|
}
|
|
|
|
// Token: 0x0600097A RID: 2426 RVA: 0x000C8561 File Offset: 0x000C6761
|
|
private float Aura()
|
|
{
|
|
if (this.aura < 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
return this.aura;
|
|
}
|
|
|
|
// Token: 0x0600097B RID: 2427 RVA: 0x000C857C File Offset: 0x000C677C
|
|
public int SpiritCurrent()
|
|
{
|
|
return this.magicPoints;
|
|
}
|
|
|
|
// Token: 0x0600097C RID: 2428 RVA: 0x000C8584 File Offset: 0x000C6784
|
|
public int SpiritMax()
|
|
{
|
|
return 90;
|
|
}
|
|
|
|
// Token: 0x0600097D RID: 2429 RVA: 0x000C8588 File Offset: 0x000C6788
|
|
public float SpiritAura()
|
|
{
|
|
return this.R2((this.Pagan() + this.paganModFlat + (float)this.GetDiceModifierAverage(3)) / 50f);
|
|
}
|
|
|
|
// Token: 0x0600097E RID: 2430 RVA: 0x000C85AC File Offset: 0x000C67AC
|
|
public float SpiritPagan()
|
|
{
|
|
return this.R2((this.Aura() + this.auraModFlat + (float)this.GetDiceModifierAverage(2)) / 100f);
|
|
}
|
|
|
|
// Token: 0x0600097F RID: 2431 RVA: 0x000C85D0 File Offset: 0x000C67D0
|
|
public float SpiritAbsorptionMultiplier(bool characterSheet)
|
|
{
|
|
float num = this.SpiritAura();
|
|
float num2 = this.SpiritPagan();
|
|
return this.R1((float)this.magicPointsBase + num + num2 + this.spiritAbsorption);
|
|
}
|
|
|
|
// Token: 0x06000980 RID: 2432 RVA: 0x000C8605 File Offset: 0x000C6805
|
|
public int HealthCurrent()
|
|
{
|
|
return this.currLife;
|
|
}
|
|
|
|
// Token: 0x06000981 RID: 2433 RVA: 0x000C8610 File Offset: 0x000C6810
|
|
public int HealthMax()
|
|
{
|
|
if (this.character.npc)
|
|
{
|
|
return Mathf.Clamp(this.lifeBase + this.maxHealthAdd, 0, 1000000);
|
|
}
|
|
return Mathf.Clamp(this.lifeBase + this.maxHealthAdd + this.HealthAura(), 0, 10000000);
|
|
}
|
|
|
|
// Token: 0x06000982 RID: 2434 RVA: 0x000C8662 File Offset: 0x000C6862
|
|
public int HealthAura()
|
|
{
|
|
return (int)Mathf.Round((this.Aura() + this.auraModFlat + (float)this.GetDiceModifierAverage(2)) / 10f);
|
|
}
|
|
|
|
// Token: 0x06000983 RID: 2435 RVA: 0x000C8688 File Offset: 0x000C6888
|
|
public float Stat(string stat, bool addRolls, out int adjusted)
|
|
{
|
|
float num = 0f;
|
|
adjusted = 0;
|
|
addRolls = false;
|
|
if (stat == "Agility")
|
|
{
|
|
num = this.agility + this.agilityModFlat;
|
|
if (this.agilityModFlat > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (this.agilityModFlat < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
if (addRolls)
|
|
{
|
|
float num2 = (float)this.GetDiceModifierAverage(1);
|
|
num += num2;
|
|
if (num2 > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (num2 < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
}
|
|
}
|
|
if (stat == "Aura")
|
|
{
|
|
num = this.Aura() + this.auraModFlat;
|
|
if (this.auraModFlat > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (this.auraModFlat < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
if (addRolls)
|
|
{
|
|
float num3 = (float)this.GetDiceModifierAverage(2);
|
|
num += num3;
|
|
if (num3 > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (num3 < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
}
|
|
}
|
|
if (stat == "Strength")
|
|
{
|
|
num = this.strength + this.strengthModFlat;
|
|
if (this.strengthModFlat > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (this.strengthModFlat < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
if (addRolls)
|
|
{
|
|
float num4 = (float)this.GetDiceModifierAverage(0);
|
|
num += num4;
|
|
if (num4 > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (num4 < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
}
|
|
}
|
|
if (stat == "Dexterity")
|
|
{
|
|
num = this.dexterity + this.dexterityModFlat;
|
|
if (this.dexterityModFlat > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (this.dexterityModFlat < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
if (addRolls)
|
|
{
|
|
float num5 = (float)this.GetDiceModifierAverage(4);
|
|
num += num5;
|
|
if (num5 > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (num5 < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
}
|
|
}
|
|
if (stat == "Pagan")
|
|
{
|
|
num = this.pagan + this.paganModFlat;
|
|
if (this.paganModFlat > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (this.paganModFlat < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
if (addRolls)
|
|
{
|
|
float num6 = (float)this.GetDiceModifierAverage(3);
|
|
num += num6;
|
|
if (num6 > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (num6 < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
}
|
|
}
|
|
if (stat == "Sensory")
|
|
{
|
|
num = this.sensory + this.sensoryModFlat;
|
|
if (this.sensoryModFlat > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (this.sensoryModFlat < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
if (addRolls)
|
|
{
|
|
float num7 = (float)this.GetDiceModifierAverage(5);
|
|
num += num7;
|
|
if (num7 > 0f)
|
|
{
|
|
adjusted = 1;
|
|
}
|
|
else if (num7 < 0f)
|
|
{
|
|
adjusted = -1;
|
|
}
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000984 RID: 2436 RVA: 0x000C890C File Offset: 0x000C6B0C
|
|
public void SetStat(string stat, float x)
|
|
{
|
|
if (stat == "Agility")
|
|
{
|
|
this.agility = x;
|
|
}
|
|
if (stat == "Aura")
|
|
{
|
|
this.aura = x;
|
|
}
|
|
if (stat == "Strength")
|
|
{
|
|
this.strength = x;
|
|
}
|
|
if (stat == "Dexterity")
|
|
{
|
|
this.dexterity = x;
|
|
}
|
|
if (stat == "Pagan")
|
|
{
|
|
this.pagan = x;
|
|
}
|
|
if (stat == "Sensory")
|
|
{
|
|
this.sensory = x;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000985 RID: 2437 RVA: 0x000C8994 File Offset: 0x000C6B94
|
|
public void AddStat(string stat, float x)
|
|
{
|
|
if (stat == "Agility")
|
|
{
|
|
this.agility += x;
|
|
}
|
|
if (stat == "Aura")
|
|
{
|
|
this.aura += x;
|
|
}
|
|
if (stat == "Strength")
|
|
{
|
|
this.strength += x;
|
|
}
|
|
if (stat == "Dexterity")
|
|
{
|
|
this.dexterity += x;
|
|
}
|
|
if (stat == "Pagan")
|
|
{
|
|
this.pagan += x;
|
|
}
|
|
if (stat == "Sensory")
|
|
{
|
|
this.sensory += x;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000986 RID: 2438 RVA: 0x000C8A44 File Offset: 0x000C6C44
|
|
public float GetStatOnly(string stat)
|
|
{
|
|
if (stat == "Agility")
|
|
{
|
|
return this.agility;
|
|
}
|
|
if (stat == "Aura")
|
|
{
|
|
return this.aura;
|
|
}
|
|
if (stat == "Strength")
|
|
{
|
|
return this.strength;
|
|
}
|
|
if (stat == "Dexterity")
|
|
{
|
|
return this.dexterity;
|
|
}
|
|
if (stat == "Pagan")
|
|
{
|
|
return this.pagan;
|
|
}
|
|
if (stat == "Sensory")
|
|
{
|
|
return this.sensory;
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
// Token: 0x06000987 RID: 2439 RVA: 0x000C8ACE File Offset: 0x000C6CCE
|
|
public void SetSkill(int index, float x)
|
|
{
|
|
this.skills[index] = x;
|
|
}
|
|
|
|
// Token: 0x06000988 RID: 2440 RVA: 0x000C8AE0 File Offset: 0x000C6CE0
|
|
public float CharacterWeight()
|
|
{
|
|
if (!this.character.inventoryBag)
|
|
{
|
|
return 0f;
|
|
}
|
|
float num = (float)this.weightBase;
|
|
if (this.character.party && !this.character.isBoro)
|
|
{
|
|
num += this.character.inventoryBag.weight;
|
|
}
|
|
else if (this.character.isBoro)
|
|
{
|
|
num += Records.x.boroWeight;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000989 RID: 2441 RVA: 0x000C8B58 File Offset: 0x000C6D58
|
|
public float Level()
|
|
{
|
|
if (this.character.party)
|
|
{
|
|
return (float)this.level;
|
|
}
|
|
float num = (float)this.level - 2f;
|
|
float num2 = (this.strength + this.dexterity + this.agility + this.sensory + this.pagan + this.aura) / 6f;
|
|
num2 /= 30f;
|
|
return num + num2;
|
|
}
|
|
|
|
// Token: 0x0600098A RID: 2442 RVA: 0x000C8BC1 File Offset: 0x000C6DC1
|
|
public float Balance()
|
|
{
|
|
return this.balance;
|
|
}
|
|
|
|
// Token: 0x0600098B RID: 2443 RVA: 0x000C8BCC File Offset: 0x000C6DCC
|
|
public string BalanceCheck(float amt)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(amt);
|
|
this.SBP();
|
|
this.str.Append("Difficulty");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x0600098C RID: 2444 RVA: 0x000C8C1C File Offset: 0x000C6E1C
|
|
public string BalanceResist(float amt, string stat)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(this.Balance());
|
|
this.SBP();
|
|
this.str.Append("Balance Mod");
|
|
if (stat != "")
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(amt);
|
|
this.SBP();
|
|
this.str.Append(stat);
|
|
this.CB();
|
|
}
|
|
else
|
|
{
|
|
this.CB();
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x0600098D RID: 2445 RVA: 0x000C8CAC File Offset: 0x000C6EAC
|
|
public float GhostResistance(bool forCharacterSheet)
|
|
{
|
|
float num = this.GhostResistAur(forCharacterSheet);
|
|
if (forCharacterSheet)
|
|
{
|
|
return Mathf.Round(num / (float)this.GhostRollMax() * 100f);
|
|
}
|
|
return this.R2(num);
|
|
}
|
|
|
|
// Token: 0x0600098E RID: 2446 RVA: 0x000C8CE0 File Offset: 0x000C6EE0
|
|
public float GhostResistAur(bool forCharacterSheet)
|
|
{
|
|
if (forCharacterSheet)
|
|
{
|
|
return this.Aura() + this.auraModFlat + (float)this.GetDiceModifierAverage(2);
|
|
}
|
|
return this.Aura() + this.auraModFlat + (float)this.GetDiceModifier(2);
|
|
}
|
|
|
|
// Token: 0x0600098F RID: 2447 RVA: 0x000C8D12 File Offset: 0x000C6F12
|
|
public int GhostRollMax()
|
|
{
|
|
return 40;
|
|
}
|
|
|
|
// Token: 0x06000990 RID: 2448 RVA: 0x000C8D18 File Offset: 0x000C6F18
|
|
public void GhostHit()
|
|
{
|
|
if (Links.x.gameplay.seconds > this.lastGhostRoll + 100f && !Records.x.filming && (this.character.party || (this.character.tr.position - Links.x.main.tr.position).sqrMagnitude < 400f) && !this.character.hasIncenseTorch && !this.character.summoned && !this.HasEffect("Ghost"))
|
|
{
|
|
this.character.PlayAnimation("Hit", 0f);
|
|
int num = Mathf.RoundToInt(this.GhostResistance(false));
|
|
int num2 = Random.Range(1, this.GhostRollMax());
|
|
if (Records.x.showRuleset)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s ghost roll resistance: ",
|
|
num.ToString(),
|
|
" roll: ",
|
|
num2.ToString()
|
|
}));
|
|
}
|
|
this.lastGhostRoll = Links.x.gameplay.seconds;
|
|
if (num >= num2)
|
|
{
|
|
this.str.Clear();
|
|
if (!this.character.npc)
|
|
{
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
}
|
|
this.str.Append(this.GetName());
|
|
if (!this.character.npc)
|
|
{
|
|
this.str.Append("</color>");
|
|
}
|
|
this.str.Append(" resisted ghost");
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
return;
|
|
}
|
|
Effects effects = this.character.gameObject.AddComponent<Effects>();
|
|
Links.x.cellar.AddEffects(effects);
|
|
effects.gameObject.SetActive(true);
|
|
effects.source = this.character;
|
|
effects.target = this.character;
|
|
effects.effectName = "Ghost";
|
|
effects.sourceLevel = 0f;
|
|
effects.Inflicted(false);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000991 RID: 2449 RVA: 0x000C8F5C File Offset: 0x000C715C
|
|
public float Disposition(string areaName)
|
|
{
|
|
float num = this.DispSen();
|
|
num += this.DispSkill();
|
|
num += (float)this.character.GetGlam() / 2f;
|
|
if (Records.x.BribeBadgeCount() > 0)
|
|
{
|
|
num -= 100f;
|
|
}
|
|
return this.R1(num) / 100f;
|
|
}
|
|
|
|
// Token: 0x06000992 RID: 2450 RVA: 0x000C8FB0 File Offset: 0x000C71B0
|
|
public float DispSen()
|
|
{
|
|
return this.R1((this.Sensory() + this.sensoryModFlat + (float)this.GetDiceModifierAverage(5)) / 15f);
|
|
}
|
|
|
|
// Token: 0x06000993 RID: 2451 RVA: 0x000C8FD4 File Offset: 0x000C71D4
|
|
public float DispSkill()
|
|
{
|
|
return this.R1(this.GetSkill(22) / 6f);
|
|
}
|
|
|
|
// Token: 0x06000994 RID: 2452 RVA: 0x000C8FEC File Offset: 0x000C71EC
|
|
public float DispositionResistance(string areaName, Character dialogueCharacter)
|
|
{
|
|
float num = (this.Sensory() + this.sensoryModFlat + (float)this.GetDiceModifierAverage(5)) / 300f;
|
|
bool flag = false;
|
|
if (dialogueCharacter && dialogueCharacter.stats.characterRow._Race == this.characterRow._Race)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
num *= 0.95f;
|
|
}
|
|
if (Records.x.HasBanner(areaName))
|
|
{
|
|
num *= 0.5f;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000995 RID: 2453 RVA: 0x000C9068 File Offset: 0x000C7268
|
|
public float DispositionCost(string areaName, Character merchant)
|
|
{
|
|
float num = this.Disposition(areaName);
|
|
if (!merchant)
|
|
{
|
|
return 1f - num;
|
|
}
|
|
if (Records.x.BribeBadgeCount() > 0)
|
|
{
|
|
return num;
|
|
}
|
|
return 1f - num * (1f - merchant.stats.DispositionResistance(areaName, this.character));
|
|
}
|
|
|
|
// Token: 0x06000996 RID: 2454 RVA: 0x000C90BC File Offset: 0x000C72BC
|
|
public float DispositionSell(string areaName, Character merchant)
|
|
{
|
|
if (!merchant)
|
|
{
|
|
return 1f;
|
|
}
|
|
return this.Disposition(areaName) / merchant.stats.DispositionResistance(areaName, this.character);
|
|
}
|
|
|
|
// Token: 0x06000997 RID: 2455 RVA: 0x000C90E6 File Offset: 0x000C72E6
|
|
public string Disposition()
|
|
{
|
|
this.str.Clear();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000998 RID: 2456 RVA: 0x000C90FF File Offset: 0x000C72FF
|
|
public string MerchantDisposition(string areaName, Character merchant)
|
|
{
|
|
this.str.Clear();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000999 RID: 2457 RVA: 0x000C9118 File Offset: 0x000C7318
|
|
public float PartyDispositionSell(string areaName, Character merchant)
|
|
{
|
|
return 1f;
|
|
}
|
|
|
|
// Token: 0x0600099A RID: 2458 RVA: 0x000C9120 File Offset: 0x000C7320
|
|
public float SongCost(Library.Abilities abilityRow)
|
|
{
|
|
return Mathf.Floor((float)abilityRow._SongCost * abilityRow._Difficulty * 30f * this.DispositionCost(Links.x.diorama.sceneName, Links.x.merchant.merchantCharacter));
|
|
}
|
|
|
|
// Token: 0x0600099B RID: 2459 RVA: 0x000C916C File Offset: 0x000C736C
|
|
public float Repair(string mainSkill, bool forCharacterSheet)
|
|
{
|
|
float num = this.RepairDex();
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
float num2 = this.R2(this.GetSkill(combatSkillID) / 10f + num + (float)this.nimbleFingers);
|
|
if (!forCharacterSheet)
|
|
{
|
|
this.AddSkillProgress(combatSkillID, 0f, null);
|
|
this.str2.Clear();
|
|
this.str2.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
this.str2.Append(this.GetName());
|
|
this.str2.Append("</color>");
|
|
this.str2.Append(" repairs weapon condition +");
|
|
this.str2.Append(num2);
|
|
if (Records.x.showRulesetInfo)
|
|
{
|
|
this.str2.Append(" <color #857C6C>... ");
|
|
this.str2.Append(this.RepairCalculations(false, mainSkill));
|
|
this.str2.Append("</color>");
|
|
}
|
|
Links.x.gameFeed.AddFeed(this.str2.ToString());
|
|
}
|
|
if (forCharacterSheet)
|
|
{
|
|
return this.R2(num + (float)this.nimbleFingers);
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
// Token: 0x0600099C RID: 2460 RVA: 0x000C9297 File Offset: 0x000C7497
|
|
public float RepairDex()
|
|
{
|
|
return this.R2((this.Dexterity() + this.dexterityModFlat + (float)this.GetDiceModifierAverage(4)) / 2f);
|
|
}
|
|
|
|
// Token: 0x0600099D RID: 2461 RVA: 0x000C92BC File Offset: 0x000C74BC
|
|
public float Fletching(bool forCharacterSheet, string mainSkill)
|
|
{
|
|
float num = this.FletchDex();
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
if (!forCharacterSheet)
|
|
{
|
|
this.AddSkillProgress(combatSkillID, 0f, null);
|
|
}
|
|
if (forCharacterSheet)
|
|
{
|
|
return this.R2(num + (float)this.nimbleFingers);
|
|
}
|
|
float num2 = this.R2(this.GetSkill(combatSkillID) / 10f + num + (float)this.nimbleFingers);
|
|
if (!forCharacterSheet)
|
|
{
|
|
this.str2.Clear();
|
|
this.str2.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
this.str2.Append(this.GetName());
|
|
this.str2.Append("</color>");
|
|
if (mainSkill.Contains("Bow"))
|
|
{
|
|
this.str2.Append(" assembles arrows with +");
|
|
}
|
|
else if (mainSkill.Contains("Sling"))
|
|
{
|
|
this.str2.Append(" assembles slingstones with +");
|
|
}
|
|
else
|
|
{
|
|
this.str2.Append(" assembles vials with +");
|
|
}
|
|
this.str2.Append(num2);
|
|
this.str2.Append(" damage");
|
|
if (Records.x.showRulesetInfo)
|
|
{
|
|
this.str2.Append(" <color #857C6C>... ");
|
|
this.str2.Append(this.FletchingCalculations(false, mainSkill));
|
|
this.str2.Append("</color>");
|
|
}
|
|
Links.x.gameFeed.AddFeed(this.str2.ToString());
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
// Token: 0x0600099E RID: 2462 RVA: 0x000C943B File Offset: 0x000C763B
|
|
public float FletchDex()
|
|
{
|
|
return this.R2((this.Dexterity() + this.dexterityModFlat + (float)this.GetDiceModifierAverage(4)) / 10f);
|
|
}
|
|
|
|
// Token: 0x0600099F RID: 2463 RVA: 0x000C9460 File Offset: 0x000C7660
|
|
public float SocketingRepair(int socketRepairAmount, bool forCharacterSheet, string mainSkill)
|
|
{
|
|
float num = this.SocketDex();
|
|
if (forCharacterSheet)
|
|
{
|
|
return this.R2(num + (float)this.nimbleFingers);
|
|
}
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
float num2 = this.R2(this.GetSkill(combatSkillID) / 5f + (num + (float)this.nimbleFingers));
|
|
if (num2 > (float)socketRepairAmount)
|
|
{
|
|
num2 = (float)socketRepairAmount;
|
|
}
|
|
if (!forCharacterSheet)
|
|
{
|
|
this.AddSkillProgress(combatSkillID, 0f, null);
|
|
this.str2.Clear();
|
|
this.str2.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
this.str2.Append(this.GetName());
|
|
this.str2.Append("</color>");
|
|
this.str2.Append(" repairs armor condition +");
|
|
this.str2.Append(num2);
|
|
if (Records.x.showRulesetInfo)
|
|
{
|
|
this.str2.Append(" <color #857C6C>... ");
|
|
this.str2.Append(this.SocketingCalculations(false, mainSkill));
|
|
this.str2.Append("</color>");
|
|
}
|
|
Links.x.gameFeed.AddFeed(this.str2.ToString());
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
// Token: 0x060009A0 RID: 2464 RVA: 0x000C9593 File Offset: 0x000C7793
|
|
public float SocketDex()
|
|
{
|
|
return this.R2((this.Dexterity() + this.dexterityModFlat + (float)this.GetDiceModifierAverage(4)) / 3f);
|
|
}
|
|
|
|
// Token: 0x060009A1 RID: 2465 RVA: 0x000C95B8 File Offset: 0x000C77B8
|
|
public string RepairCalculations(bool fromManual, string mainSkill)
|
|
{
|
|
this.str.Clear();
|
|
float num = (float)this.character.stats.NimbleFingers();
|
|
this.str.Append(this.character.stats.RepairDex());
|
|
this.SBP();
|
|
this.str.Append("DEX/2");
|
|
if (num != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Nimble Mods");
|
|
this.str.Append("]</color> +");
|
|
}
|
|
else
|
|
{
|
|
this.CPlus();
|
|
}
|
|
if (fromManual)
|
|
{
|
|
this.SBP();
|
|
this.str.Append("Skill of Weapon");
|
|
this.str.Append("/10");
|
|
}
|
|
else
|
|
{
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
this.str.Append(this.R1(this.GetSkill(combatSkillID) / 10f));
|
|
this.SBP();
|
|
this.str.Append("Skill of Weapon");
|
|
this.str.Append("/10");
|
|
}
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009A2 RID: 2466 RVA: 0x000C96F0 File Offset: 0x000C78F0
|
|
public string FletchingCalculations(bool fromManual, string mainSkill)
|
|
{
|
|
this.str.Clear();
|
|
float num = (float)this.character.stats.NimbleFingers();
|
|
this.str.Append(this.character.stats.RepairDex());
|
|
this.SBP();
|
|
this.str.Append("DEX/2");
|
|
if (num != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Nimble Mods");
|
|
this.str.Append("]</color> +");
|
|
}
|
|
else
|
|
{
|
|
this.CPlus();
|
|
}
|
|
if (fromManual)
|
|
{
|
|
this.SBP();
|
|
this.str.Append("Skill of Weapon");
|
|
this.str.Append("/10");
|
|
}
|
|
else
|
|
{
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
this.str.Append(this.R1(this.GetSkill(combatSkillID) / 10f));
|
|
this.SBP();
|
|
this.str.Append("Skill of Weapon");
|
|
this.str.Append("/10");
|
|
}
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009A3 RID: 2467 RVA: 0x000C9828 File Offset: 0x000C7A28
|
|
public string SocketingCalculations(bool fromManual, string mainSkill)
|
|
{
|
|
this.str.Clear();
|
|
float num = (float)this.character.stats.NimbleFingers();
|
|
this.str.Append(this.character.stats.SocketDex());
|
|
this.SBP();
|
|
this.str.Append("DEX/3");
|
|
if (num != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Nimble Mods");
|
|
this.str.Append("]</color> +");
|
|
}
|
|
else
|
|
{
|
|
this.CPlus();
|
|
}
|
|
if (fromManual)
|
|
{
|
|
this.SBP();
|
|
this.str.Append("Skill of Armor");
|
|
this.str.Append("/5");
|
|
}
|
|
else
|
|
{
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
this.str.Append(this.R1(this.GetSkill(combatSkillID) / 10f));
|
|
this.SBP();
|
|
this.str.Append("Skill of Armor");
|
|
this.str.Append("/5");
|
|
}
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009A4 RID: 2468 RVA: 0x000C995E File Offset: 0x000C7B5E
|
|
public float EnchantPowerAura()
|
|
{
|
|
return this.R1((this.Aura() + this.auraModFlat + (float)this.GetDiceModifierAverage(2)) / 15f);
|
|
}
|
|
|
|
// Token: 0x060009A5 RID: 2469 RVA: 0x000C9984 File Offset: 0x000C7B84
|
|
public float EnchantPag()
|
|
{
|
|
float num = this.Pagan() + this.paganModFlat + (float)this.GetDiceModifierAverage(3);
|
|
if (num > 10f)
|
|
{
|
|
return this.R1((num - 10f) / 15f);
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
// Token: 0x060009A6 RID: 2470 RVA: 0x000C99CC File Offset: 0x000C7BCC
|
|
public string IntercessionCalculation()
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(this.character.stats.EnchantPowerAura());
|
|
this.SBP();
|
|
this.str.Append("AUR/15");
|
|
this.CPlus();
|
|
this.str.Append(this.character.stats.IntercessionSkill());
|
|
this.SBP();
|
|
this.str.Append("Skill/15");
|
|
this.CMin();
|
|
this.str.Append(this.character.stats.EnchantPag());
|
|
this.SBP();
|
|
this.str.Append("(PAG>10)/15");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009A7 RID: 2471 RVA: 0x000C9A9B File Offset: 0x000C7C9B
|
|
public float IntercessionSkill()
|
|
{
|
|
return this.R1(this.GetSkill(16) / 15f);
|
|
}
|
|
|
|
// Token: 0x060009A8 RID: 2472 RVA: 0x000C9AB1 File Offset: 0x000C7CB1
|
|
public bool CanWearEnchantedItem(float savedDifficulty)
|
|
{
|
|
return this.EnchantWearingAbility() >= savedDifficulty;
|
|
}
|
|
|
|
// Token: 0x060009A9 RID: 2473 RVA: 0x000C9AC0 File Offset: 0x000C7CC0
|
|
public float EnchantWearingAbility()
|
|
{
|
|
float num = this.EnchantPowerAura();
|
|
float num2 = this.EnchantPag();
|
|
return this.R1(num - num2 + this.IntercessionSkill());
|
|
}
|
|
|
|
// Token: 0x060009AA RID: 2474 RVA: 0x000C9AEB File Offset: 0x000C7CEB
|
|
public float SightRadiusBase()
|
|
{
|
|
return this.sightRadiusBase;
|
|
}
|
|
|
|
// Token: 0x060009AB RID: 2475 RVA: 0x000C9AF4 File Offset: 0x000C7CF4
|
|
public float SightRadius(bool forCharacterSheet, bool forCharacterCreation, bool forFOW)
|
|
{
|
|
float num = 0f;
|
|
float num2 = this.SightRadiusTOD(false, forFOW);
|
|
float num3 = this.SightRadiusSensory(forCharacterSheet);
|
|
float num4 = (this.sightRadiusBase - this.blind + num + num3) * num2;
|
|
if (forCharacterSheet)
|
|
{
|
|
num4 = Mathf.Round(num4);
|
|
}
|
|
if (forCharacterCreation)
|
|
{
|
|
num4 = Mathf.Round(this.sightRadiusBase + num3);
|
|
}
|
|
return num4;
|
|
}
|
|
|
|
// Token: 0x060009AC RID: 2476 RVA: 0x000C9B48 File Offset: 0x000C7D48
|
|
public float SightRadiusTOD(bool returnPercent, bool forFOW)
|
|
{
|
|
float num = 0.9f;
|
|
if (Links.x.gameplay.IsNight())
|
|
{
|
|
num = 0.75f;
|
|
if (this.character.party && Links.x.fellowship.PartyHasTorch())
|
|
{
|
|
num = 1f;
|
|
}
|
|
}
|
|
else if (this.character.desiredGraph == 1)
|
|
{
|
|
num = 0.75f;
|
|
}
|
|
else if (Links.x.gameplay.IsAfternoon())
|
|
{
|
|
num = 1f;
|
|
}
|
|
if (this.character.party && forFOW && Links.x.gaia.sceneLoaded && Links.x.diorama.InResurrectionFog(this.character.tr.position))
|
|
{
|
|
num = 0.5f;
|
|
}
|
|
if (returnPercent)
|
|
{
|
|
return Mathf.Round(num * 100f);
|
|
}
|
|
return this.R2(num);
|
|
}
|
|
|
|
// Token: 0x060009AD RID: 2477 RVA: 0x000C9C24 File Offset: 0x000C7E24
|
|
public float SightRadiusSensory(bool forCharacterSheet)
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
return this.R2(num / 5f);
|
|
}
|
|
|
|
// Token: 0x060009AE RID: 2478 RVA: 0x000C9C6C File Offset: 0x000C7E6C
|
|
public float HearingRadius(bool forCharacterSheet, bool forCharacterCreation)
|
|
{
|
|
float num = 0f;
|
|
float num2 = this.HearingRadiusSensory(true);
|
|
float num3 = this.hearingRadiusBase - this.deaf + num + num2;
|
|
if (forCharacterSheet)
|
|
{
|
|
num3 = Mathf.Round(num3);
|
|
}
|
|
if (forCharacterCreation)
|
|
{
|
|
num3 = Mathf.Round(this.hearingRadiusBase + num2);
|
|
}
|
|
return num3;
|
|
}
|
|
|
|
// Token: 0x060009AF RID: 2479 RVA: 0x000C9CB8 File Offset: 0x000C7EB8
|
|
public float HearingRadiusSensory(bool forCharacterSheet)
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
return num / 5f;
|
|
}
|
|
|
|
// Token: 0x060009B0 RID: 2480 RVA: 0x000C9CF8 File Offset: 0x000C7EF8
|
|
public void StartSneak()
|
|
{
|
|
float num = 0f;
|
|
if (this.character.IsSentient())
|
|
{
|
|
bool flag = this.Sneaking(false, out num);
|
|
string text = this.SearchingCalculation(false);
|
|
if (this.character.CheckLights(true))
|
|
{
|
|
flag = false;
|
|
}
|
|
this.str.Clear();
|
|
if (!this.character.npc)
|
|
{
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
}
|
|
this.str.Append(this.GetName());
|
|
if (!this.character.npc)
|
|
{
|
|
this.str.Append("</color>");
|
|
}
|
|
if (flag)
|
|
{
|
|
this.str.Append(" is sneaking for ");
|
|
this.str.Append(this.R1(num));
|
|
this.str.Append(" seconds");
|
|
this.character.body.Sneaking(true);
|
|
this.character.SetupSneakGauge((int)Mathf.Round(num));
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" failed to sneak");
|
|
GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(58);
|
|
if (pooledGameObject)
|
|
{
|
|
pooledGameObject.transform.position = this.character.body.headBone.position + new Vector3(0f, 1f, 0f);
|
|
pooledGameObject.SetActive(true);
|
|
}
|
|
}
|
|
if (Records.x.showRulesetInfo)
|
|
{
|
|
this.str.Append(" <color #857C6C>... ");
|
|
this.str.Append(text);
|
|
this.str.Append("</color>");
|
|
}
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
}
|
|
}
|
|
|
|
// Token: 0x060009B1 RID: 2481 RVA: 0x000C9EC4 File Offset: 0x000C80C4
|
|
public bool Sneaking(bool forCharacterSheet, out float duration)
|
|
{
|
|
float num = this.RaceMod();
|
|
float num2 = this.AglSneak();
|
|
float num3 = this.SenSneak();
|
|
float num4 = this.SneakSkill();
|
|
duration = this.R1((num + num2 + num3 + (float)this.invisible) * num4);
|
|
if (!forCharacterSheet && duration > 1f)
|
|
{
|
|
this.AddSkillProgress(21, 0f, null);
|
|
}
|
|
return duration > 1f;
|
|
}
|
|
|
|
// Token: 0x060009B2 RID: 2482 RVA: 0x000C9F2A File Offset: 0x000C812A
|
|
public float Stealing()
|
|
{
|
|
return this.SneakSkillStealing();
|
|
}
|
|
|
|
// Token: 0x060009B3 RID: 2483 RVA: 0x000C9F32 File Offset: 0x000C8132
|
|
public float HearStealing()
|
|
{
|
|
return this.SenSneakHearing();
|
|
}
|
|
|
|
// Token: 0x060009B4 RID: 2484 RVA: 0x000C9F3C File Offset: 0x000C813C
|
|
public float SenSneakHearing()
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x060009B5 RID: 2485 RVA: 0x000C9F5E File Offset: 0x000C815E
|
|
public float SneakSkillStealing()
|
|
{
|
|
return this.R1(this.GetSkill(21) * 2f / 10f);
|
|
}
|
|
|
|
// Token: 0x060009B6 RID: 2486 RVA: 0x000C9F7C File Offset: 0x000C817C
|
|
public string StealingCalculation(bool fromManual)
|
|
{
|
|
this.str.Clear();
|
|
float num = (float)this.character.stats.NimbleFingers();
|
|
this.str.Append(this.character.stats.SneakSkillStealing());
|
|
this.SBP();
|
|
this.str.Append("(Skill*2)/10");
|
|
if (num != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Nimble Mods");
|
|
this.str.Append("]</color>");
|
|
}
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009B7 RID: 2487 RVA: 0x000CA02E File Offset: 0x000C822E
|
|
public float SneakSkill()
|
|
{
|
|
return this.R1(this.GetSkill(21) / 25f);
|
|
}
|
|
|
|
// Token: 0x060009B8 RID: 2488 RVA: 0x000CA044 File Offset: 0x000C8244
|
|
public float RaceMod()
|
|
{
|
|
float num = 2f;
|
|
if (this.race == "Yeti")
|
|
{
|
|
num = 0f;
|
|
}
|
|
if (this.race == "Taratorith")
|
|
{
|
|
num = 0.15f;
|
|
}
|
|
if (this.race == "Pasaaren")
|
|
{
|
|
num = 0.25f;
|
|
}
|
|
if (this.race == "Ameythevian")
|
|
{
|
|
num = 0.3f;
|
|
}
|
|
if (this.race == "Varuchov")
|
|
{
|
|
num = 0.5f;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060009B9 RID: 2489 RVA: 0x000CA0D0 File Offset: 0x000C82D0
|
|
public float AglSneak()
|
|
{
|
|
float num = this.Agility() + this.agilityModFlat;
|
|
num += (float)this.GetDiceModifierAverage(1);
|
|
num /= 20f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x060009BA RID: 2490 RVA: 0x000CA108 File Offset: 0x000C8308
|
|
public float SenSneak()
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
num /= 15f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x060009BB RID: 2491 RVA: 0x000CA140 File Offset: 0x000C8340
|
|
public string SearchingCalculation(bool fromManual)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append("(");
|
|
this.str.Append(this.character.stats.AglSneak());
|
|
this.SBP();
|
|
this.str.Append("AGL/20");
|
|
this.CPlus();
|
|
this.str.Append(this.character.stats.SenSneak());
|
|
this.SBP();
|
|
this.str.Append("SEN/15");
|
|
this.CPlus();
|
|
this.str.Append(this.character.stats.RaceMod());
|
|
this.SBP();
|
|
this.str.Append("Race Bonus");
|
|
if (this.character.stats.Invisible() != 0)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(this.character.stats.Invisible());
|
|
this.SBP();
|
|
this.str.Append("Invisible Mod");
|
|
}
|
|
this.str.Append("]</color>");
|
|
this.str.Append(") * ");
|
|
this.str.Append(this.character.stats.SneakSkill());
|
|
this.SBP();
|
|
this.str.Append("Skill/25");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009BC RID: 2492 RVA: 0x000CA2C0 File Offset: 0x000C84C0
|
|
public bool IsInvisible()
|
|
{
|
|
return this.character.body.sneaking;
|
|
}
|
|
|
|
// Token: 0x060009BD RID: 2493 RVA: 0x000CA2D4 File Offset: 0x000C84D4
|
|
public float Charming(string skill, bool forCharacterSheet)
|
|
{
|
|
float num = this.CharmSkill(skill);
|
|
float num2 = this.CharmSen(forCharacterSheet);
|
|
float num3 = this.R1(num + (float)this.charming + num2);
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
" charm hit chance ",
|
|
num3.ToString(),
|
|
" from sensory ",
|
|
num2.ToString(),
|
|
" and skill ",
|
|
skill,
|
|
" ",
|
|
num.ToString()
|
|
}));
|
|
}
|
|
return num3;
|
|
}
|
|
|
|
// Token: 0x060009BE RID: 2494 RVA: 0x000CA36F File Offset: 0x000C856F
|
|
public float SummonModCharm()
|
|
{
|
|
return (float)Links.x.GetSummonsCount(0) * 2f;
|
|
}
|
|
|
|
// Token: 0x060009BF RID: 2495 RVA: 0x000CA383 File Offset: 0x000C8583
|
|
public float SummonModSpells()
|
|
{
|
|
return (float)Links.x.GetSummonsCount(1) * 2f;
|
|
}
|
|
|
|
// Token: 0x060009C0 RID: 2496 RVA: 0x000CA398 File Offset: 0x000C8598
|
|
public float CharmSkill(string skill)
|
|
{
|
|
int num = 23;
|
|
if (skill.Contains("Forest"))
|
|
{
|
|
num = 24;
|
|
}
|
|
else if (skill.Contains("Fish"))
|
|
{
|
|
num = 23;
|
|
}
|
|
else if (skill.Contains("Shroom"))
|
|
{
|
|
num = 25;
|
|
}
|
|
if (skill == "")
|
|
{
|
|
num = 23;
|
|
if (this.GetSkill(24) > this.GetSkill(num))
|
|
{
|
|
num = 24;
|
|
}
|
|
if (this.GetSkill(25) > this.GetSkill(num))
|
|
{
|
|
num = 25;
|
|
}
|
|
}
|
|
float num2 = this.GetSkill(num) / 20f;
|
|
return this.R1(num2);
|
|
}
|
|
|
|
// Token: 0x060009C1 RID: 2497 RVA: 0x000CA430 File Offset: 0x000C8630
|
|
public float CharmSen(bool forCharacterSheet)
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(5);
|
|
}
|
|
num /= 30f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x060009C2 RID: 2498 RVA: 0x000CA478 File Offset: 0x000C8678
|
|
public float CharmResistance(bool forCharacterSheet, float health)
|
|
{
|
|
float num = this.CharmResistSen(forCharacterSheet);
|
|
float num2 = this.CharmResistAura(forCharacterSheet);
|
|
float num3 = this.CharmHealth(health);
|
|
if (Records.x.showRuleset)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
" charm resistance ",
|
|
this.R2(num * num3).ToString(),
|
|
" from sensory ",
|
|
(num2 + num).ToString(),
|
|
" and health factor ",
|
|
num3.ToString()
|
|
}));
|
|
}
|
|
return this.R2((num2 + num) * num3);
|
|
}
|
|
|
|
// Token: 0x060009C3 RID: 2499 RVA: 0x000CA514 File Offset: 0x000C8714
|
|
public float CharmResistSen(bool forCharacterSheet)
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(5);
|
|
}
|
|
return this.R1(num / 2f);
|
|
}
|
|
|
|
// Token: 0x060009C4 RID: 2500 RVA: 0x000CA558 File Offset: 0x000C8758
|
|
public float CharmResistAura(bool forCharacterSheet)
|
|
{
|
|
float num = this.Aura() + this.auraModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(2);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(2);
|
|
}
|
|
return this.R1(num / 2f);
|
|
}
|
|
|
|
// Token: 0x060009C5 RID: 2501 RVA: 0x000CA59B File Offset: 0x000C879B
|
|
public float CharmHealth(float health)
|
|
{
|
|
return this.R1(0.4f + health / (float)this.HealthMax());
|
|
}
|
|
|
|
// Token: 0x060009C6 RID: 2502 RVA: 0x000CA5B4 File Offset: 0x000C87B4
|
|
public string CharmingCalculation(string type)
|
|
{
|
|
this.str.Clear();
|
|
float num = (float)this.character.stats.Charming();
|
|
this.str.Append(this.character.stats.CharmSen(true));
|
|
this.SBP();
|
|
this.str.Append("SEN/30");
|
|
if (num != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Bind Mods");
|
|
this.str.Append("]</color> + ");
|
|
}
|
|
else
|
|
{
|
|
this.CPlus();
|
|
}
|
|
this.str.Append(this.character.stats.CharmSkill(type));
|
|
this.SBP();
|
|
this.str.Append("Skill");
|
|
this.str.Append("/20");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009C7 RID: 2503 RVA: 0x000CA6B4 File Offset: 0x000C88B4
|
|
public string CharmResist(float summonMod, float health)
|
|
{
|
|
this.str.Clear();
|
|
float num = this.CharmResistSen(false);
|
|
float num2 = this.CharmResistAura(false);
|
|
float num3 = this.CharmHealth(health);
|
|
this.str.Append("(");
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("SEN/2");
|
|
this.CPlus();
|
|
this.str.Append(num2);
|
|
this.SBP();
|
|
this.str.Append("AUR/2");
|
|
this.str.Append("]</color>) * ");
|
|
this.str.Append(num3);
|
|
this.SBP();
|
|
this.str.Append(".4f + Health/Max Health");
|
|
this.CMin();
|
|
this.str.Append(summonMod);
|
|
this.SBP();
|
|
this.str.Append("Current Summons Penalty");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009C8 RID: 2504 RVA: 0x000CA7B4 File Offset: 0x000C89B4
|
|
public int CarryingWeight()
|
|
{
|
|
return this.CarryWeightStrength() + this.CarryWeightAgility() + this.CarryWeightDex();
|
|
}
|
|
|
|
// Token: 0x060009C9 RID: 2505 RVA: 0x000CA7CA File Offset: 0x000C89CA
|
|
public int CarryWeightStrength()
|
|
{
|
|
return (int)(Mathf.Round(this.Strength() + this.strengthModFlat + (float)this.GetDiceModifierAverage(0)) * 7f);
|
|
}
|
|
|
|
// Token: 0x060009CA RID: 2506 RVA: 0x000CA7EE File Offset: 0x000C89EE
|
|
public int CarryWeightAgility()
|
|
{
|
|
return (int)(Mathf.Round(this.Agility() + this.agilityModFlat + (float)this.GetDiceModifierAverage(1)) * 2f);
|
|
}
|
|
|
|
// Token: 0x060009CB RID: 2507 RVA: 0x000CA812 File Offset: 0x000C8A12
|
|
public int CarryWeightDex()
|
|
{
|
|
return (int)(Mathf.Round(this.Dexterity() + this.dexterityModFlat + (float)this.GetDiceModifierAverage(4)) * 2f);
|
|
}
|
|
|
|
// Token: 0x060009CC RID: 2508 RVA: 0x000CA838 File Offset: 0x000C8A38
|
|
public float Lockpicking(bool forCharacterSheet)
|
|
{
|
|
float num = this.LockSkill();
|
|
float num2 = this.LockDex(forCharacterSheet);
|
|
return this.R1(num + ((float)this.nimbleFingers + num2));
|
|
}
|
|
|
|
// Token: 0x060009CD RID: 2509 RVA: 0x000CA865 File Offset: 0x000C8A65
|
|
public float LockSkill()
|
|
{
|
|
return this.R1(this.GetSkill(20) / 10f);
|
|
}
|
|
|
|
// Token: 0x060009CE RID: 2510 RVA: 0x000CA87C File Offset: 0x000C8A7C
|
|
public float LockDex(bool forCharacterSheet)
|
|
{
|
|
float num = this.Dexterity() + this.dexterityModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(4);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(4);
|
|
}
|
|
return num / 10f;
|
|
}
|
|
|
|
// Token: 0x060009CF RID: 2511 RVA: 0x000CA8BC File Offset: 0x000C8ABC
|
|
public string LockpickingCalculation(bool fromManual)
|
|
{
|
|
this.str.Clear();
|
|
float num = (float)this.character.stats.NimbleFingers();
|
|
this.str.Append(this.character.stats.LockDex(true));
|
|
this.SBP();
|
|
this.str.Append("DEX/10");
|
|
if (num != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Nimble Mods");
|
|
this.str.Append("]</color> +");
|
|
}
|
|
else
|
|
{
|
|
this.CPlus();
|
|
}
|
|
this.str.Append(this.character.stats.LockSkill());
|
|
this.SBP();
|
|
this.str.Append("Skill");
|
|
this.str.Append("/10");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009D0 RID: 2512 RVA: 0x000CA9BC File Offset: 0x000C8BBC
|
|
public string LockDifficultyString(float diff)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(diff);
|
|
this.SBP();
|
|
this.str.Append("Difficulty");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009D1 RID: 2513 RVA: 0x000CAA0C File Offset: 0x000C8C0C
|
|
public float SearchNumber(string type, bool forCharacterSheet, string skill)
|
|
{
|
|
float num = this.SearchSen();
|
|
float num2 = this.SearchSkill(skill, type);
|
|
return num * num2;
|
|
}
|
|
|
|
// Token: 0x060009D2 RID: 2514 RVA: 0x000CAA2C File Offset: 0x000C8C2C
|
|
public float SearchSkill(string skill, string type)
|
|
{
|
|
int num = 0;
|
|
if (type == "Rogue")
|
|
{
|
|
num = 20;
|
|
float num2 = this.GetSkill(num);
|
|
if (this.GetSkill(21) > num2)
|
|
{
|
|
num = 21;
|
|
num2 = this.GetSkill(21);
|
|
}
|
|
if (this.GetSkill(22) > num2)
|
|
{
|
|
num = 22;
|
|
num2 = this.GetSkill(22);
|
|
}
|
|
}
|
|
else if (type == "Charmer")
|
|
{
|
|
num = 23;
|
|
float num3 = this.GetSkill(num);
|
|
if (this.GetSkill(24) > num3)
|
|
{
|
|
num = 24;
|
|
num3 = this.GetSkill(24);
|
|
}
|
|
if (this.GetSkill(25) > num3)
|
|
{
|
|
num = 25;
|
|
num3 = this.GetSkill(25);
|
|
}
|
|
}
|
|
return Mathf.Ceil(this.GetSkill(num) / 50f);
|
|
}
|
|
|
|
// Token: 0x060009D3 RID: 2515 RVA: 0x000CAADC File Offset: 0x000C8CDC
|
|
public float SearchSen()
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
num /= 5f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x060009D4 RID: 2516 RVA: 0x000CAB14 File Offset: 0x000C8D14
|
|
public string SearchCalculation(string type)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(this.character.stats.SearchSen());
|
|
this.SBP();
|
|
this.str.Append("SEN/5");
|
|
this.CMult();
|
|
this.str.Append(this.character.stats.SearchSkill("", type));
|
|
this.SBP();
|
|
if (type == "Charmer")
|
|
{
|
|
this.str.Append("Highest Binding Skill");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Highest Rogue Skill");
|
|
}
|
|
this.str.Append("/50");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009D5 RID: 2517 RVA: 0x000CABE4 File Offset: 0x000C8DE4
|
|
public string SearchDifficultyString(float diff)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(diff);
|
|
this.SBP();
|
|
this.str.Append("Difficulty");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009D6 RID: 2518 RVA: 0x000CAC34 File Offset: 0x000C8E34
|
|
public float WeaponHitChance(bool forCharacterSheet, int weaponIndex)
|
|
{
|
|
float num = 0f;
|
|
int num2 = 0;
|
|
if (forCharacterSheet)
|
|
{
|
|
num2 = 1;
|
|
}
|
|
string text = "";
|
|
if (weaponIndex == 0)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (weaponIndex == 1)
|
|
{
|
|
text = this.character.invRow2._MainSkill;
|
|
}
|
|
string text2;
|
|
this.GetHitChanceStat(text, out text2, out num, (float)num2);
|
|
float num3 = this.HitMods(forCharacterSheet);
|
|
float num4 = this.HitSkill(weaponIndex, false);
|
|
float num5 = num + num3 + num4;
|
|
if (forCharacterSheet)
|
|
{
|
|
return Mathf.Round(num5);
|
|
}
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s hit roll info 2 - stat total: ",
|
|
num.ToString(),
|
|
", hit chance mods: ",
|
|
num3.ToString(),
|
|
", skill: ",
|
|
num4.ToString()
|
|
}));
|
|
}
|
|
return Mathf.Round(num5);
|
|
}
|
|
|
|
// Token: 0x060009D7 RID: 2519 RVA: 0x000CAD18 File Offset: 0x000C8F18
|
|
public float HandCount()
|
|
{
|
|
float num = 1f;
|
|
if (!this.HasShield())
|
|
{
|
|
if (this.character.GetInvNum(2) > 1)
|
|
{
|
|
num += 1f;
|
|
}
|
|
else if (this.GetSkill(9) >= 50f)
|
|
{
|
|
if (this.character.GetInvNum(0) <= 1)
|
|
{
|
|
num += 1f;
|
|
}
|
|
else if (this.character.invRow1 != null && this.character.invRow1._ArmorID < 0)
|
|
{
|
|
num += 1f;
|
|
}
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060009D8 RID: 2520 RVA: 0x000CADA0 File Offset: 0x000C8FA0
|
|
public float HitMods(bool forCharacterSheet)
|
|
{
|
|
float num = this.hitModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(8);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(8);
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060009D9 RID: 2521 RVA: 0x000CADD0 File Offset: 0x000C8FD0
|
|
public string MainSkill(int weaponIndex)
|
|
{
|
|
string text = "";
|
|
if (weaponIndex == 0)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (weaponIndex == 1)
|
|
{
|
|
text = "Multi-Hand";
|
|
}
|
|
return Links.x.manual.DisplayNameFromIndex(this.GetCombatSkillID(text), this.character);
|
|
}
|
|
|
|
// Token: 0x060009DA RID: 2522 RVA: 0x000CAE20 File Offset: 0x000C9020
|
|
public int MainSkillIndex(int weaponIndex)
|
|
{
|
|
string text = "";
|
|
if (weaponIndex == 0)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (weaponIndex == 1)
|
|
{
|
|
text = "Multi-Hand";
|
|
}
|
|
return this.GetCombatSkillID(text);
|
|
}
|
|
|
|
// Token: 0x060009DB RID: 2523 RVA: 0x000CAE58 File Offset: 0x000C9058
|
|
public float HitSkill(int weaponIndex, bool justSkill)
|
|
{
|
|
string text = "";
|
|
if (weaponIndex == 0)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (weaponIndex == 1)
|
|
{
|
|
text = "Multi-Hand";
|
|
}
|
|
int combatSkillID = this.GetCombatSkillID(text);
|
|
if (justSkill)
|
|
{
|
|
return this.GetSkill(combatSkillID);
|
|
}
|
|
return this.R1(this.GetSkill(combatSkillID) / 20f);
|
|
}
|
|
|
|
// Token: 0x060009DC RID: 2524 RVA: 0x000CAEB0 File Offset: 0x000C90B0
|
|
public float HitWpnDur(int weaponIndex, bool returnPercent)
|
|
{
|
|
string text = "";
|
|
float num = 0f;
|
|
if (weaponIndex == 0)
|
|
{
|
|
num = (float)this.character.invRow1._DurabilityMax;
|
|
}
|
|
if (weaponIndex == 1)
|
|
{
|
|
num = (float)this.character.invRow2._DurabilityMax;
|
|
}
|
|
if (num == -1f)
|
|
{
|
|
return 1f;
|
|
}
|
|
this.GetCombatSkillID(text);
|
|
float num2 = this.character.GetDurabilityNum(weaponIndex).x;
|
|
if (num2 > num)
|
|
{
|
|
num2 = num;
|
|
}
|
|
if (returnPercent)
|
|
{
|
|
return this.R1(num2 / num * 100f);
|
|
}
|
|
return this.R2(num2 / num);
|
|
}
|
|
|
|
// Token: 0x060009DD RID: 2525 RVA: 0x000CAF40 File Offset: 0x000C9140
|
|
public string HitChanceCalculation(int hand)
|
|
{
|
|
this.str.Clear();
|
|
float num = 0f;
|
|
int num2 = 0;
|
|
string text = "";
|
|
if (hand == 0)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (hand == 1)
|
|
{
|
|
text = this.character.invRow2._MainSkill;
|
|
}
|
|
string text2;
|
|
this.GetHitChanceStat(text, out text2, out num, (float)num2);
|
|
float num3 = this.HitMods(true);
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append(text2);
|
|
this.str.Append("/20");
|
|
if (num3 != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num3);
|
|
this.SBP();
|
|
this.str.Append("Bonuses & Ailments");
|
|
this.CPlus();
|
|
}
|
|
else
|
|
{
|
|
this.CPlus();
|
|
}
|
|
if (this.animal)
|
|
{
|
|
this.str.Append("Skill");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(this.HitSkill(hand, false));
|
|
}
|
|
this.SBP();
|
|
this.str.Append(this.MainSkill(hand));
|
|
this.str.Append("/20");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009DE RID: 2526 RVA: 0x000CB084 File Offset: 0x000C9284
|
|
private void OP()
|
|
{
|
|
this.str.Append("<color=#504B41>(");
|
|
}
|
|
|
|
// Token: 0x060009DF RID: 2527 RVA: 0x000CB097 File Offset: 0x000C9297
|
|
private void CP()
|
|
{
|
|
this.str.Append(")</color>");
|
|
}
|
|
|
|
// Token: 0x060009E0 RID: 2528 RVA: 0x000CB0AA File Offset: 0x000C92AA
|
|
private void SP()
|
|
{
|
|
this.str.Append(" ");
|
|
}
|
|
|
|
// Token: 0x060009E1 RID: 2529 RVA: 0x000CB0BD File Offset: 0x000C92BD
|
|
private void SOP()
|
|
{
|
|
this.str.Append(" <color=#504B41>(");
|
|
}
|
|
|
|
// Token: 0x060009E2 RID: 2530 RVA: 0x000CB0D0 File Offset: 0x000C92D0
|
|
private void COL()
|
|
{
|
|
}
|
|
|
|
// Token: 0x060009E3 RID: 2531 RVA: 0x000CB0D2 File Offset: 0x000C92D2
|
|
private void SBP()
|
|
{
|
|
this.str.Append(" <color=#504B41>[");
|
|
}
|
|
|
|
// Token: 0x060009E4 RID: 2532 RVA: 0x000CB0E5 File Offset: 0x000C92E5
|
|
private void CB()
|
|
{
|
|
this.str.Append("]</color>");
|
|
}
|
|
|
|
// Token: 0x060009E5 RID: 2533 RVA: 0x000CB0F8 File Offset: 0x000C92F8
|
|
private void CPlus()
|
|
{
|
|
this.str.Append("]</color> + ");
|
|
}
|
|
|
|
// Token: 0x060009E6 RID: 2534 RVA: 0x000CB10B File Offset: 0x000C930B
|
|
private void CMult()
|
|
{
|
|
this.str.Append("]</color> * ");
|
|
}
|
|
|
|
// Token: 0x060009E7 RID: 2535 RVA: 0x000CB11E File Offset: 0x000C931E
|
|
private void CMin()
|
|
{
|
|
this.str.Append("]</color> - ");
|
|
}
|
|
|
|
// Token: 0x060009E8 RID: 2536 RVA: 0x000CB134 File Offset: 0x000C9334
|
|
public float EvasionChance(bool forCharacterSheet, float dazedCount, out float roll)
|
|
{
|
|
float num = this.EvadeAgl(forCharacterSheet);
|
|
float num2 = this.EvadeMods(forCharacterSheet);
|
|
float num3 = this.BlockMods(forCharacterSheet);
|
|
float num4 = -1f;
|
|
float num5 = -1f;
|
|
bool flag = false;
|
|
bool flag2 = false;
|
|
if (this.character.GetInvNum(2) > 1 && Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2))._Tag == "Shield")
|
|
{
|
|
flag = true;
|
|
}
|
|
if (this.HasEffect("VineCocoon"))
|
|
{
|
|
flag2 = true;
|
|
flag = true;
|
|
}
|
|
float num6;
|
|
float num7;
|
|
this.EvadeArmorTotal(out num6, out num4, out num7, false, flag);
|
|
bool flag3 = false;
|
|
if (num4 > -1f)
|
|
{
|
|
flag3 = true;
|
|
}
|
|
float num8;
|
|
float num9;
|
|
this.BlockTotal(out num8, out num5, out num9, false, flag3);
|
|
if (flag2)
|
|
{
|
|
flag = true;
|
|
this.GetExistingEffect("VineCocoon");
|
|
num5 = 120f;
|
|
}
|
|
float num10 = num;
|
|
if (flag3)
|
|
{
|
|
num10 += num4;
|
|
}
|
|
if (flag)
|
|
{
|
|
num10 += num5;
|
|
num10 += num3;
|
|
}
|
|
if (!flag3 && !flag)
|
|
{
|
|
num10 += this.EvadeUnarmed(false, flag);
|
|
}
|
|
num10 += num2;
|
|
if (dazedCount > 0f && !forCharacterSheet)
|
|
{
|
|
num10 *= 1f - dazedCount * 0.2f;
|
|
}
|
|
roll = 0f;
|
|
if (!forCharacterSheet)
|
|
{
|
|
float num11 = num10;
|
|
float num12 = num10 * 0.75f;
|
|
float num13 = num10 * 1.1f;
|
|
float num14 = Random.Range(num12, num13);
|
|
num10 = this.R1(num14);
|
|
roll = this.R1(num11 - num14);
|
|
if (this.character.npc)
|
|
{
|
|
float num15 = 1f - this.R1(this.stamina / this.maxStamina);
|
|
num10 -= this.R1(num15 * 10f);
|
|
}
|
|
}
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s evade roll info 2 - stat total: ",
|
|
num.ToString(),
|
|
", evade chance mods: ",
|
|
num2.ToString(),
|
|
", skill: ",
|
|
num4.ToString()
|
|
}));
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s block roll info 2 - block chance mods: ",
|
|
num3.ToString(),
|
|
", skill: ",
|
|
num5.ToString()
|
|
}));
|
|
}
|
|
return this.R1(num10);
|
|
}
|
|
|
|
// Token: 0x060009E9 RID: 2537 RVA: 0x000CB374 File Offset: 0x000C9574
|
|
public string MainArmorSkill()
|
|
{
|
|
if (this.character.GetInvNum(18) > 1)
|
|
{
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(18));
|
|
return Links.x.manual.DisplayNameFromIndex(this.GetArmorSkillID(invRowByIndex._MainSkill), this.character);
|
|
}
|
|
return "Unarmored";
|
|
}
|
|
|
|
// Token: 0x060009EA RID: 2538 RVA: 0x000CB3D8 File Offset: 0x000C95D8
|
|
public void EvadeArmorTotal(out float maxDurability, out float skillTotal, out float durability, bool justSkill, bool hasShield)
|
|
{
|
|
maxDurability = 1f;
|
|
skillTotal = -1f;
|
|
durability = 1f;
|
|
if (this.character.GetInvNum(18) > 1)
|
|
{
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(18));
|
|
maxDurability = (float)invRowByIndex._DurabilityMax;
|
|
if (this.character.npc)
|
|
{
|
|
maxDurability /= 2f;
|
|
}
|
|
skillTotal = this.GetSkill(this.GetArmorSkillID(invRowByIndex._MainSkill));
|
|
if (hasShield)
|
|
{
|
|
skillTotal /= 80f;
|
|
}
|
|
else
|
|
{
|
|
skillTotal /= 40f;
|
|
}
|
|
if (justSkill)
|
|
{
|
|
skillTotal = (float)this.GetArmorSkillID(invRowByIndex._MainSkill);
|
|
}
|
|
durability = this.character.GetDurabilityNum(9).x / maxDurability;
|
|
if (justSkill)
|
|
{
|
|
durability = Mathf.Round(durability / maxDurability * 100f);
|
|
}
|
|
skillTotal = Mathf.Round(skillTotal);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060009EB RID: 2539 RVA: 0x000CB4C4 File Offset: 0x000C96C4
|
|
public float EvadeAgl(bool forCharacterSheet)
|
|
{
|
|
float num = this.Agility() + this.agilityModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(1);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(1);
|
|
}
|
|
float num2 = 0f;
|
|
float num3 = 0f;
|
|
float num4 = 0f;
|
|
if (this.character.invRow1 != null)
|
|
{
|
|
num3 = this.character.invRow1._EvasionReduction;
|
|
}
|
|
if (this.character.GetInvNum(2) > 1)
|
|
{
|
|
num4 = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2))._EvasionReduction;
|
|
}
|
|
if (this.character.GetInvNum(18) > 1)
|
|
{
|
|
num2 = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(18))._EvasionReduction;
|
|
}
|
|
num -= num2;
|
|
num -= num4;
|
|
num -= num3;
|
|
return this.R1(num / 20f);
|
|
}
|
|
|
|
// Token: 0x060009EC RID: 2540 RVA: 0x000CB5A8 File Offset: 0x000C97A8
|
|
public float EvadeMods(bool forCharacterSheet)
|
|
{
|
|
float num = this.evadeModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(10);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(10);
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060009ED RID: 2541 RVA: 0x000CB5DC File Offset: 0x000C97DC
|
|
public float EvadeUnarmed(bool forCharacterSheet, bool hasShield)
|
|
{
|
|
float num = this.Dexterity() + this.dexterityModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(4);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(4);
|
|
}
|
|
float num2 = this.Aura() + this.auraModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num2 += (float)this.GetDiceModifierAverage(2);
|
|
}
|
|
else
|
|
{
|
|
num2 += (float)this.GetDiceModifier(2);
|
|
}
|
|
float num3 = this.Sensory() + this.sensoryModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num3 += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
else
|
|
{
|
|
num3 += (float)this.GetDiceModifier(5);
|
|
}
|
|
float num4 = Mathf.Round(num + num2 + num3) / 40f;
|
|
return this.R1(num4);
|
|
}
|
|
|
|
// Token: 0x060009EE RID: 2542 RVA: 0x000CB67C File Offset: 0x000C987C
|
|
public void BlockTotal(out float maxDurability, out float skillTotal, out float durability, bool justSkill, bool hasArmor)
|
|
{
|
|
maxDurability = 1f;
|
|
skillTotal = -1f;
|
|
durability = 0f;
|
|
if (this.character.GetInvNum(2) <= 1)
|
|
{
|
|
durability = 0f;
|
|
return;
|
|
}
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2));
|
|
if (invRowByIndex._Tag == "Shield")
|
|
{
|
|
maxDurability = (float)invRowByIndex._DurabilityMax;
|
|
int num = 15;
|
|
if (invRowByIndex._MainSkill == "LargeShield")
|
|
{
|
|
num = 14;
|
|
}
|
|
skillTotal = this.GetSkill(num);
|
|
if (hasArmor)
|
|
{
|
|
skillTotal /= 80f;
|
|
}
|
|
else
|
|
{
|
|
skillTotal /= 40f;
|
|
}
|
|
durability = this.character.GetDurabilityNum(1).x / maxDurability;
|
|
skillTotal = Mathf.Round(skillTotal);
|
|
return;
|
|
}
|
|
durability = 0f;
|
|
}
|
|
|
|
// Token: 0x060009EF RID: 2543 RVA: 0x000CB754 File Offset: 0x000C9954
|
|
public float BlockMods(bool forCharacterSheet)
|
|
{
|
|
float num = this.blockModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(11);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(11);
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060009F0 RID: 2544 RVA: 0x000CB788 File Offset: 0x000C9988
|
|
public string MainShieldSkill()
|
|
{
|
|
if (this.character.GetInvNum(2) > 1)
|
|
{
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2));
|
|
if (invRowByIndex._Tag == "Shield")
|
|
{
|
|
return Links.x.manual.DisplayNameFromIndex(this.GetCombatSkillID(invRowByIndex._MainSkill), this.character);
|
|
}
|
|
}
|
|
return "No Shield";
|
|
}
|
|
|
|
// Token: 0x060009F1 RID: 2545 RVA: 0x000CB7FC File Offset: 0x000C99FC
|
|
public string EvadeChanceCalculation(float evasionBonus, float roll, bool forCharacterSheet)
|
|
{
|
|
this.str.Clear();
|
|
bool flag = false;
|
|
if (this.character.GetInvNum(2) > 1 && Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2))._Tag == "Shield")
|
|
{
|
|
flag = true;
|
|
}
|
|
float num = -1f;
|
|
float num2 = -1f;
|
|
float num3;
|
|
float num4;
|
|
this.EvadeArmorTotal(out num3, out num, out num4, false, flag);
|
|
bool flag2 = false;
|
|
if (num > -1f)
|
|
{
|
|
flag2 = true;
|
|
}
|
|
float num5;
|
|
float num6;
|
|
this.BlockTotal(out num5, out num2, out num6, false, flag2);
|
|
float num7 = this.EvadeMods(true);
|
|
float num8 = this.BlockMods(true);
|
|
if (evasionBonus > 0f)
|
|
{
|
|
this.str.Append("(");
|
|
}
|
|
this.str.Append(this.EvadeAgl(true));
|
|
this.SBP();
|
|
this.str.Append("(AGL - Equipment Evasion Reduction)/20");
|
|
this.CPlus();
|
|
if (flag2 || flag)
|
|
{
|
|
if (flag2)
|
|
{
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append(this.MainArmorSkill());
|
|
if (flag)
|
|
{
|
|
this.str.Append("/80");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("/40");
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
if (flag2)
|
|
{
|
|
this.CPlus();
|
|
}
|
|
this.str.Append(num2);
|
|
this.SBP();
|
|
this.str.Append(this.MainShieldSkill());
|
|
if (flag2)
|
|
{
|
|
this.str.Append("/80");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("/40");
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(this.EvadeUnarmed(true, flag));
|
|
this.SBP();
|
|
this.str.Append("(DEX + AUR + SEN)/40");
|
|
}
|
|
if (num8 != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num8);
|
|
this.SBP();
|
|
this.str.Append("Block Chance Mods");
|
|
}
|
|
else if (num7 != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num7);
|
|
this.SBP();
|
|
this.str.Append("Evade Chance Mods");
|
|
}
|
|
if (evasionBonus > 0f)
|
|
{
|
|
this.str.Append("</color>) * ");
|
|
this.str.Append(evasionBonus);
|
|
this.SBP();
|
|
this.str.Append("Bonus");
|
|
}
|
|
else if (forCharacterSheet)
|
|
{
|
|
this.CB();
|
|
}
|
|
if (!forCharacterSheet)
|
|
{
|
|
if (roll > 0f)
|
|
{
|
|
this.CMin();
|
|
this.str.Append(roll);
|
|
}
|
|
if (roll < 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(roll * -1f);
|
|
}
|
|
if (roll == 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append("0");
|
|
}
|
|
this.SBP();
|
|
this.str.Append("Evade Luck");
|
|
if (this.character.npc)
|
|
{
|
|
this.CMin();
|
|
float num9 = 1f - this.R1(this.stamina / this.maxStamina);
|
|
this.str.Append(this.R1(num9 * 10f));
|
|
this.SBP();
|
|
this.str.Append("Fatigue");
|
|
this.CB();
|
|
}
|
|
else
|
|
{
|
|
this.CB();
|
|
}
|
|
}
|
|
else if (!this.character.party)
|
|
{
|
|
this.str.Append("- Fatigue Penalty");
|
|
this.CB();
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x060009F2 RID: 2546 RVA: 0x000CBB94 File Offset: 0x000C9D94
|
|
public float DamageRoll(bool forCharacterSheet, int weaponIndex, out float wpnDmg, bool single, bool marked, Character target)
|
|
{
|
|
wpnDmg = 0f;
|
|
float num = 0f;
|
|
int num2 = 0;
|
|
if (forCharacterSheet)
|
|
{
|
|
num2 = 1;
|
|
}
|
|
string text = "";
|
|
Library.Inventory invRow = this.character.invRow1;
|
|
if (weaponIndex == 0)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (weaponIndex == 1)
|
|
{
|
|
text = this.character.invRow2._MainSkill;
|
|
Library.Inventory invRow2 = this.character.invRow2;
|
|
}
|
|
string text2;
|
|
this.GetDmgStat(text, out num, out text2, (float)num2);
|
|
float num3 = this.DmgMods(forCharacterSheet);
|
|
int num4 = 0;
|
|
int num5 = 0;
|
|
this.DmgMinMax(out num4, out num5, weaponIndex, target, forCharacterSheet);
|
|
float num6 = this.HitWpnDur(this.GetCurrentHand(), false);
|
|
if (forCharacterSheet)
|
|
{
|
|
num6 = 1f;
|
|
}
|
|
else
|
|
{
|
|
float num7 = num6 * 100f;
|
|
if (num7 < 100f)
|
|
{
|
|
num6 = (float)Random.Range((int)num7, 100) / 100f;
|
|
}
|
|
else
|
|
{
|
|
num6 = 1f;
|
|
}
|
|
}
|
|
float num8 = (float)num5;
|
|
wpnDmg = num8 * num6;
|
|
float num9;
|
|
if (forCharacterSheet)
|
|
{
|
|
num9 = Mathf.Round(num + num3);
|
|
}
|
|
else
|
|
{
|
|
num9 = this.R1(num8 + num + num3);
|
|
}
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s damage roll info - total ",
|
|
num9.ToString(),
|
|
", min: ",
|
|
num4.ToString(),
|
|
", max: ",
|
|
num5.ToString(),
|
|
", roll: ",
|
|
num8.ToString(),
|
|
", strength: ",
|
|
num.ToString(),
|
|
", diff: ",
|
|
num3.ToString()
|
|
}));
|
|
}
|
|
return num9;
|
|
}
|
|
|
|
// Token: 0x060009F3 RID: 2547 RVA: 0x000CBD40 File Offset: 0x000C9F40
|
|
public string DamageRollString(int weaponIndex, out float floatVersion)
|
|
{
|
|
floatVersion = 0f;
|
|
int num = 0;
|
|
int num2 = 0;
|
|
this.DmgMinMax(out num, out num2, weaponIndex, null, true);
|
|
float num3 = this.HitWpnDur(0, false);
|
|
float num4 = (float)num2;
|
|
float num6;
|
|
float num5 = this.DamageRoll(true, weaponIndex, out num6, false, false, null);
|
|
floatVersion = num4 * num3 + num5;
|
|
return this.R1(num4 * num3 + num5).ToString();
|
|
}
|
|
|
|
// Token: 0x060009F4 RID: 2548 RVA: 0x000CBDA0 File Offset: 0x000C9FA0
|
|
public float DmgStrength(bool forCharacterSheet)
|
|
{
|
|
float num = this.Strength() + this.strengthModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(0);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(0);
|
|
}
|
|
num /= 20f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x060009F5 RID: 2549 RVA: 0x000CBDE8 File Offset: 0x000C9FE8
|
|
public float DmgMods(bool forCharacterSheet)
|
|
{
|
|
float num = this.severityModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(6);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(6);
|
|
}
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x060009F6 RID: 2550 RVA: 0x000CBE20 File Offset: 0x000CA020
|
|
public void DmgMinMax(out int damageMin, out int damageMax, int weaponIndex, Character target, bool forCS)
|
|
{
|
|
damageMin = 0;
|
|
damageMax = 0;
|
|
bool flag = false;
|
|
if (weaponIndex == 0)
|
|
{
|
|
damageMax = this.character.invRow1._DmgMax;
|
|
if (this.character.invRow1._MeleeRangeEnd >= 5f)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (!forCS)
|
|
{
|
|
damageMax += this.CheckForSpecial(this.character.invRow1, target);
|
|
}
|
|
}
|
|
if (weaponIndex == 1)
|
|
{
|
|
damageMax = this.character.invRow2._DmgMax;
|
|
if (!forCS)
|
|
{
|
|
damageMax += this.CheckForSpecial(this.character.invRow2, target);
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
int num = this.character.selectedAmmoIndex + 4;
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(num * 2));
|
|
damageMax = invRowByIndex._DmgMax;
|
|
Vector3 socketNum = this.character.GetSocketNum(num * 2);
|
|
damageMax += (int)socketNum.x;
|
|
if (Records.x.showRuleset && !Records.x.paused && Records.x.InCombat(false))
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s damage roll is from projectile ",
|
|
invRowByIndex._DisplayName,
|
|
", min: ",
|
|
damageMin.ToString(),
|
|
", max: ",
|
|
damageMax.ToString(),
|
|
", ammo index: ",
|
|
num.ToString()
|
|
}));
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060009F7 RID: 2551 RVA: 0x000CBF8C File Offset: 0x000CA18C
|
|
public int CheckForSpecial(Library.Inventory itemRow, Character target)
|
|
{
|
|
if (itemRow._HasUseFill && itemRow._UseFill == "Forest1" && target && target.stats.race == "Forest")
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x060009F8 RID: 2552 RVA: 0x000CBFCC File Offset: 0x000CA1CC
|
|
public string GetHitChanceStat(string mainSkill, out string abrev, out float num, float forCS)
|
|
{
|
|
num = 0f;
|
|
abrev = "DEX";
|
|
if (mainSkill == "Hand-to-Hand")
|
|
{
|
|
float num2 = this.Sensory() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(5), (float)this.GetDiceModifierAverage(5), forCS);
|
|
float num3 = this.Agility() + this.agilityModFlat + Mathf.Lerp((float)this.GetDiceModifier(1), (float)this.GetDiceModifierAverage(1), forCS);
|
|
float num4 = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
string text = "Sensory";
|
|
num = num2;
|
|
abrev = "SEN";
|
|
if (num3 > num2)
|
|
{
|
|
text = "Agility";
|
|
num = num3;
|
|
abrev = "AGL";
|
|
}
|
|
if (num4 > num3 && text == "Agility")
|
|
{
|
|
text = "Dexterity";
|
|
num = num4;
|
|
abrev = "DEX";
|
|
}
|
|
if (num4 > num2 && text == "Sensory")
|
|
{
|
|
num = num4;
|
|
abrev = "DEX";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Sensory or Agility or Dexterity (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Whip")
|
|
{
|
|
num = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = this.R1(num / 20f);
|
|
return "Dexterity";
|
|
}
|
|
if (mainSkill == "Sword" || mainSkill == "LongSword")
|
|
{
|
|
num = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = this.R1(num / 20f);
|
|
return "Dexterity";
|
|
}
|
|
if (mainSkill == "ShortSword")
|
|
{
|
|
float num5 = this.Sensory() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(5), (float)this.GetDiceModifierAverage(5), forCS);
|
|
float num6 = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = num5;
|
|
abrev = "SEN";
|
|
if (num6 > num5)
|
|
{
|
|
num = num6;
|
|
abrev = "DEX";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Sensory or Dexterity (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Bow")
|
|
{
|
|
num = this.Sensory() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(5), (float)this.GetDiceModifierAverage(5), forCS);
|
|
num = this.R1(num / 20f);
|
|
abrev = "SEN";
|
|
return "Sensory";
|
|
}
|
|
if (mainSkill == "Elixir")
|
|
{
|
|
float num7 = this.Sensory() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(5), (float)this.GetDiceModifierAverage(5), forCS);
|
|
float num8 = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = num7;
|
|
abrev = "SEN";
|
|
if (num8 > num7)
|
|
{
|
|
num = num8;
|
|
abrev = "DEX";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Sensory or Dexterity (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Pole")
|
|
{
|
|
num = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = this.R1(num / 20f);
|
|
abrev = "DEX";
|
|
return "Dexterity";
|
|
}
|
|
if (mainSkill == "Scepter")
|
|
{
|
|
float num9 = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
float num10 = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = num9;
|
|
abrev = "STR";
|
|
if (num10 > num9)
|
|
{
|
|
num = num10;
|
|
abrev = "DEX";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Strength or Dexterity (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Sling")
|
|
{
|
|
float num11 = this.Sensory() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(5), (float)this.GetDiceModifierAverage(5), forCS);
|
|
float num12 = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = num11;
|
|
abrev = "SEN";
|
|
if (num12 > num11)
|
|
{
|
|
num = num12;
|
|
abrev = "STR";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Sensory or Dexterity (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Ax")
|
|
{
|
|
float num13 = this.Sensory() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(5), (float)this.GetDiceModifierAverage(5), forCS);
|
|
float num14 = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = num13;
|
|
abrev = "SEN";
|
|
if (num14 > num13)
|
|
{
|
|
num = num14;
|
|
abrev = "DEX";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Sensory or Dexterity (whichever is higher)";
|
|
}
|
|
num = this.Dexterity() + this.dexterityModFlat + Mathf.Lerp((float)this.GetDiceModifier(4), (float)this.GetDiceModifierAverage(4), forCS);
|
|
num = this.R1(num / 20f);
|
|
return "Dexterity";
|
|
}
|
|
|
|
// Token: 0x060009F9 RID: 2553 RVA: 0x000CC534 File Offset: 0x000CA734
|
|
public string GetDmgStat(string mainSkill, out float num, out string abrev, float forCS)
|
|
{
|
|
num = 0f;
|
|
if (mainSkill == "Hand-to-Hand")
|
|
{
|
|
float num2 = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
float num3 = this.Aura() + this.auraModFlat + Mathf.Lerp((float)this.GetDiceModifier(2), (float)this.GetDiceModifierAverage(2), forCS);
|
|
num = num2 + num3;
|
|
num = this.R1(num / 20f);
|
|
abrev = "(STR + AUR)";
|
|
return "Strength + Aura";
|
|
}
|
|
if (mainSkill == "Whip")
|
|
{
|
|
float num4 = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
float num5 = this.Agility() + this.agilityModFlat + Mathf.Lerp((float)this.GetDiceModifier(1), (float)this.GetDiceModifierAverage(1), forCS);
|
|
num = num4;
|
|
abrev = "STR";
|
|
if (num5 > num4)
|
|
{
|
|
num = num5;
|
|
abrev = "AGL";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Strength or Agility (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Sword" || mainSkill == "LongSword")
|
|
{
|
|
num = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
abrev = "STR";
|
|
num = this.R1(num / 20f);
|
|
return "Strength";
|
|
}
|
|
if (mainSkill == "ShortSword")
|
|
{
|
|
float num6 = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
float num7 = this.Agility() + this.agilityModFlat + Mathf.Lerp((float)this.GetDiceModifier(1), (float)this.GetDiceModifierAverage(1), forCS);
|
|
num = num6;
|
|
abrev = "STR";
|
|
if (num7 > num6)
|
|
{
|
|
num = num7;
|
|
abrev = "AGL";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Strength or Agility (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Bow")
|
|
{
|
|
num = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
num = this.R1(num / 20f);
|
|
abrev = "STR";
|
|
return "Strength";
|
|
}
|
|
if (mainSkill == "Elixir")
|
|
{
|
|
abrev = "WPN";
|
|
num = 0f;
|
|
return "From Weapon";
|
|
}
|
|
if (mainSkill == "Pole")
|
|
{
|
|
float num8 = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
float num9 = this.Sensory() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(5), (float)this.GetDiceModifierAverage(5), forCS);
|
|
num = num8;
|
|
abrev = "STR";
|
|
if (num9 > num8)
|
|
{
|
|
num = num9;
|
|
abrev = "SEN";
|
|
}
|
|
num = this.R1(num / 20f);
|
|
return "Strength or Sensory (whichever is higher)";
|
|
}
|
|
if (mainSkill == "Scepter")
|
|
{
|
|
num = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
num = this.R1(num / 20f);
|
|
abrev = "STR";
|
|
return "Strength";
|
|
}
|
|
if (mainSkill == "Sling")
|
|
{
|
|
abrev = "WPN";
|
|
num = 0f;
|
|
return "From Weapon";
|
|
}
|
|
mainSkill == "Ax";
|
|
num = this.Strength() + this.sensoryModFlat + Mathf.Lerp((float)this.GetDiceModifier(0), (float)this.GetDiceModifierAverage(0), forCS);
|
|
num = this.R1(num / 20f);
|
|
abrev = "STR";
|
|
return "Strength";
|
|
}
|
|
|
|
// Token: 0x060009FA RID: 2554 RVA: 0x000CC8FC File Offset: 0x000CAAFC
|
|
public float ArmorNumber(bool forCharacterSheet, bool addDurability)
|
|
{
|
|
bool flag = false;
|
|
float num = -1f;
|
|
float num2 = 0f;
|
|
float num3 = 0f;
|
|
float num4 = 0f;
|
|
float num5 = 0f;
|
|
float num6 = 0f;
|
|
float num7 = 0f;
|
|
if (this.character.GetInvNum(2) > 1)
|
|
{
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(2));
|
|
if (invRowByIndex._Tag == "Shield")
|
|
{
|
|
flag = true;
|
|
}
|
|
num6 = invRowByIndex._AC;
|
|
}
|
|
this.EvadeArmorTotal(out num2, out num, out num3, false, flag);
|
|
bool flag2 = false;
|
|
if (num > -1f)
|
|
{
|
|
flag2 = true;
|
|
if (this.character.GetInvNum(18) > 1)
|
|
{
|
|
num7 = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(18))._AC;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
float num8;
|
|
this.BlockTotal(out num4, out num8, out num5, false, flag2);
|
|
}
|
|
float num9 = 0f;
|
|
if (flag2)
|
|
{
|
|
float num10 = num3;
|
|
if (forCharacterSheet)
|
|
{
|
|
num10 = num3;
|
|
}
|
|
if (!addDurability)
|
|
{
|
|
num10 = 1f;
|
|
}
|
|
num9 += num7 * num10;
|
|
}
|
|
if (flag)
|
|
{
|
|
float num11 = num5 * 100f;
|
|
float num12;
|
|
if (num11 < 100f)
|
|
{
|
|
num12 = (float)Random.Range((int)num11, 100) / 100f;
|
|
if (forCharacterSheet)
|
|
{
|
|
num12 = num11 / 100f;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num12 = 1f;
|
|
}
|
|
if (forCharacterSheet)
|
|
{
|
|
num12 = num5;
|
|
}
|
|
if (!addDurability)
|
|
{
|
|
num12 = 1f;
|
|
}
|
|
num9 += num6 * num12;
|
|
}
|
|
if (this.character.npc && this.xmlName.Contains("FishMonsterWhite") && (this.character.node.GraphIndex == 1U || Links.x.gameplay.IsNight()))
|
|
{
|
|
num9 += 40f;
|
|
}
|
|
float num13 = this.characterRow._NaturalArmor;
|
|
if (this.naturalArmorBase > 0f)
|
|
{
|
|
num13 = this.naturalArmorBase;
|
|
}
|
|
if (num13 < 0f)
|
|
{
|
|
num13 = 0f;
|
|
}
|
|
num9 += num13;
|
|
bool flag3 = forCharacterSheet && addDurability;
|
|
return this.R1(num9);
|
|
}
|
|
|
|
// Token: 0x060009FB RID: 2555 RVA: 0x000CCAF8 File Offset: 0x000CACF8
|
|
public float ArmorAura(int forCS)
|
|
{
|
|
float num = this.Aura() + this.auraModFlat + Mathf.Lerp((float)this.GetDiceModifier(2), (float)this.GetDiceModifierAverage(2), (float)forCS);
|
|
return this.R1(num / 4f);
|
|
}
|
|
|
|
// Token: 0x060009FC RID: 2556 RVA: 0x000CCB38 File Offset: 0x000CAD38
|
|
public float ArmorPaganAura(int forCS)
|
|
{
|
|
float num = this.Aura() + this.auraModFlat + Mathf.Lerp((float)this.GetDiceModifier(2), (float)this.GetDiceModifierAverage(2), (float)forCS);
|
|
return this.R1(num / 2f);
|
|
}
|
|
|
|
// Token: 0x060009FD RID: 2557 RVA: 0x000CCB78 File Offset: 0x000CAD78
|
|
public bool AttackIsPoison(bool firstAttack, Library.Inventory ammoRow)
|
|
{
|
|
if (this.xmlName.Contains("Frog"))
|
|
{
|
|
return true;
|
|
}
|
|
if (ammoRow != null)
|
|
{
|
|
if (ammoRow._Effect.Contains("Frog"))
|
|
{
|
|
return true;
|
|
}
|
|
if (ammoRow._Name.Contains("Poison"))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return (firstAttack && this.character.invRow1._Effect.Contains("Poison")) || (!firstAttack && this.character.invRow2 != null && this.character.invRow2._Effect.Contains("Poison"));
|
|
}
|
|
|
|
// Token: 0x060009FE RID: 2558 RVA: 0x000CCC14 File Offset: 0x000CAE14
|
|
public float HeavyDamageModifier()
|
|
{
|
|
return 1.15f + (this.dexterity + this.dexterityModFlat) / 200f;
|
|
}
|
|
|
|
// Token: 0x060009FF RID: 2559 RVA: 0x000CCC2F File Offset: 0x000CAE2F
|
|
public float MultiHitMod()
|
|
{
|
|
return this.character.invRow1._MultiTargetMod;
|
|
}
|
|
|
|
// Token: 0x06000A00 RID: 2560 RVA: 0x000CCC41 File Offset: 0x000CAE41
|
|
public float LightDamageModifier()
|
|
{
|
|
return 0.5f;
|
|
}
|
|
|
|
// Token: 0x06000A01 RID: 2561 RVA: 0x000CCC48 File Offset: 0x000CAE48
|
|
public string DefenseStance(string orig, float perc)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append("<color #857C6C>(");
|
|
this.str.Append(orig);
|
|
this.str.Append(" * ");
|
|
this.str.Append(this.R1(perc));
|
|
this.SBP();
|
|
this.str.Append("Defend");
|
|
this.CB();
|
|
this.str.Append("</color>");
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A02 RID: 2562 RVA: 0x000CCCDC File Offset: 0x000CAEDC
|
|
public string DirectionalString()
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append("<color #857C6C>");
|
|
this.str.Append(" + 1");
|
|
this.SBP();
|
|
this.str.Append("Directional bonus");
|
|
this.CB();
|
|
this.str.Append("</color>");
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A03 RID: 2563 RVA: 0x000CCD50 File Offset: 0x000CAF50
|
|
public string DamageCalculation(bool fromManual, float wpnDmg, float severity, float targetArmor, bool secondAttack, float damageReduction, string attackType, bool interactable, bool poison, Character target)
|
|
{
|
|
this.str.Clear();
|
|
float num = this.DmgMods(true);
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
this.DmgMinMax(out num2, out num3, this.GetCurrentHand(), target, fromManual);
|
|
float num4 = 0f;
|
|
int num5 = 0;
|
|
string text = "";
|
|
if (this.GetCurrentHand() == 0)
|
|
{
|
|
text = this.character.invRow1._MainSkill;
|
|
}
|
|
if (this.GetCurrentHand() == 1)
|
|
{
|
|
text = this.character.invRow2._MainSkill;
|
|
}
|
|
string text2;
|
|
this.GetDmgStat(text, out num4, out text2, (float)num5);
|
|
this.COL();
|
|
if (secondAttack || (damageReduction < 1f && damageReduction > 0f))
|
|
{
|
|
this.str.Append("(");
|
|
}
|
|
this.str.Append("(");
|
|
if (fromManual)
|
|
{
|
|
this.str.Append("Hit Chance Severity + ");
|
|
}
|
|
if (!fromManual)
|
|
{
|
|
this.str.Append(this.R1(severity));
|
|
this.SBP();
|
|
this.str.Append("Severity");
|
|
this.CPlus();
|
|
}
|
|
if (text2 != "WPN")
|
|
{
|
|
this.str.Append(num4);
|
|
this.SBP();
|
|
this.str.Append(text2);
|
|
this.str.Append("/20");
|
|
this.CPlus();
|
|
}
|
|
if (num != 0f)
|
|
{
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Damage Mods");
|
|
this.str.Append("]</color> + ");
|
|
}
|
|
if (fromManual)
|
|
{
|
|
this.str.Append(num3);
|
|
this.SBP();
|
|
this.str.Append("Weapon Damage");
|
|
this.CMult();
|
|
this.str.Append(this.HitWpnDur(this.GetCurrentHand(), false));
|
|
this.SBP();
|
|
this.str.Append("Weapon Condition");
|
|
this.CB();
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(this.R1(wpnDmg * this.HitWpnDur(this.GetCurrentHand(), false)));
|
|
this.SBP();
|
|
this.str.Append("Wpn Dmg * Condition");
|
|
}
|
|
if (fromManual)
|
|
{
|
|
this.str.Append(") * ");
|
|
this.str.Append("(Target's Armor % * Armor Condition % + Aur/4)");
|
|
this.str.Append("\n\n<color=#504B41>Left hand attack damage is halved.</color>");
|
|
}
|
|
else
|
|
{
|
|
this.CB();
|
|
if (!interactable)
|
|
{
|
|
this.str.Append(") * ");
|
|
this.str.Append(this.R1(targetArmor));
|
|
this.SBP();
|
|
if (poison)
|
|
{
|
|
this.str.Append("Armor ineffective to poison");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Armor");
|
|
}
|
|
this.CB();
|
|
if (secondAttack || (damageReduction < 1f && damageReduction > 0f) || damageReduction > 1f)
|
|
{
|
|
this.str.Append(")");
|
|
if ((damageReduction < 1f && damageReduction > 0f) || damageReduction > 1f)
|
|
{
|
|
this.str.Append(" * ");
|
|
this.str.Append(damageReduction);
|
|
this.SBP();
|
|
if (attackType == "Multi Attack")
|
|
{
|
|
this.str.Append("Sweep Penalty");
|
|
}
|
|
if (attackType == "Heavy Attack")
|
|
{
|
|
this.str.Append("Marked Penalty");
|
|
}
|
|
if (attackType == "Grazing")
|
|
{
|
|
this.str.Append("Grazed");
|
|
}
|
|
if (attackType == "Spirit Attack 1")
|
|
{
|
|
this.str.Append("Rally Bonus");
|
|
}
|
|
this.CB();
|
|
}
|
|
if (secondAttack)
|
|
{
|
|
this.str.Append(" * ");
|
|
this.str.Append(0.5);
|
|
this.SBP();
|
|
this.str.Append("Left Hand Penalty");
|
|
this.CB();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((damageReduction < 1f && damageReduction > 0f) || damageReduction > 1f)
|
|
{
|
|
this.str.Append(") * ");
|
|
this.str.Append(damageReduction);
|
|
this.SBP();
|
|
if (attackType == "Multi Attack")
|
|
{
|
|
this.str.Append("Sweep Penalty");
|
|
}
|
|
if (attackType == "Heavy Attack")
|
|
{
|
|
this.str.Append("Marked Penalty");
|
|
}
|
|
if (attackType == "Spirit Attack 1")
|
|
{
|
|
this.str.Append("Rally Bonus");
|
|
}
|
|
this.CMin();
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(") * ");
|
|
}
|
|
this.str.Append(this.R1(targetArmor));
|
|
this.SBP();
|
|
this.str.Append("Armor");
|
|
this.CB();
|
|
if (secondAttack)
|
|
{
|
|
this.COL();
|
|
this.str.Append(")/2");
|
|
this.SBP();
|
|
this.str.Append("Left Hand");
|
|
this.CB();
|
|
}
|
|
}
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A04 RID: 2564 RVA: 0x000CD29C File Offset: 0x000CB49C
|
|
public float PaganHitChance(bool forCharacterSheet, string skill)
|
|
{
|
|
float num = this.PaganHit(forCharacterSheet);
|
|
float num2 = this.PaganMods(forCharacterSheet);
|
|
float num3 = 1f;
|
|
float num4;
|
|
this.PaganTotals(out num4, out num3, skill, false, forCharacterSheet);
|
|
float num5 = num + num2 + num3;
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s pagan hit roll info - total is: ",
|
|
(Mathf.Round(num5 * 100f) / 100f).ToString(),
|
|
", pagan: ",
|
|
num.ToString(),
|
|
", pagan mods: ",
|
|
num2.ToString(),
|
|
", skill: ",
|
|
num3.ToString()
|
|
}));
|
|
}
|
|
return Mathf.Round(num5);
|
|
}
|
|
|
|
// Token: 0x06000A05 RID: 2565 RVA: 0x000CD364 File Offset: 0x000CB564
|
|
public void PaganTotals(out float durability, out float skillTotal, string skill, bool justSkill, bool forCharacterSheet)
|
|
{
|
|
durability = 1f;
|
|
skillTotal = 1f;
|
|
int combatSkillID = this.GetCombatSkillID(skill);
|
|
skillTotal = this.GetSkill(combatSkillID) / 10f;
|
|
if (justSkill)
|
|
{
|
|
skillTotal = this.GetSkill(combatSkillID);
|
|
}
|
|
if (Records.x.showRuleset && !justSkill && Records.x.InCombat(false) && !Records.x.paused && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s pagan roll info 1 - skill raw: ",
|
|
this.GetSkill(combatSkillID).ToString(),
|
|
", dur: ",
|
|
this.character.GetDurabilityNum(0).y.ToString(),
|
|
", max dur: , staff: ",
|
|
this.character.invRow1._DisplayName
|
|
}));
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A06 RID: 2566 RVA: 0x000CD44C File Offset: 0x000CB64C
|
|
public float PaganHit(bool forCharacterSheet)
|
|
{
|
|
float num = this.Pagan() + this.paganModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(3);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(3);
|
|
}
|
|
return num / 5f;
|
|
}
|
|
|
|
// Token: 0x06000A07 RID: 2567 RVA: 0x000CD48C File Offset: 0x000CB68C
|
|
public float PaganMods(bool forCharacterSheet)
|
|
{
|
|
float num = this.paganHitModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(9);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(9);
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000A08 RID: 2568 RVA: 0x000CD4C0 File Offset: 0x000CB6C0
|
|
public void PaganSpellCost(string spellName, bool remove, out float spiritCost, out float healthCost)
|
|
{
|
|
int num = this.uniqueNames.IndexOf(spellName);
|
|
spiritCost = 0f;
|
|
healthCost = 0f;
|
|
if (num > -1)
|
|
{
|
|
spiritCost = this.abilityCost[num].x;
|
|
if (Records.x.showRuleset)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s spell cost - spirit: ",
|
|
spiritCost.ToString(),
|
|
", health: ",
|
|
healthCost.ToString()
|
|
}));
|
|
}
|
|
if (remove && !this.semizenMagic && this.customAI != "SpellsOnly")
|
|
{
|
|
this.AddSpirit((int)spiritCost * (-1 * Records.x.spiritFragment));
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A09 RID: 2569 RVA: 0x000CD580 File Offset: 0x000CB780
|
|
public bool HasPaganCostForSpell(string spellName)
|
|
{
|
|
int num = this.uniqueNames.IndexOf(spellName);
|
|
float num2 = 0f;
|
|
if (num > -1)
|
|
{
|
|
float num3 = this.abilityCost[num].x * (float)Records.x.spiritFragment;
|
|
return num2 <= (float)this.currLife && num3 <= (float)this.magicPoints;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000A0A RID: 2570 RVA: 0x000CD5E4 File Offset: 0x000CB7E4
|
|
public float PaganPower(float tether, bool forCharacterSheet)
|
|
{
|
|
float num = this.PaganPowerAura(forCharacterSheet);
|
|
float num2 = this.PaganPowerPag(forCharacterSheet);
|
|
float num3 = this.PaganPowerMods(forCharacterSheet);
|
|
if (forCharacterSheet)
|
|
{
|
|
return this.R1(num + num2 + num3 + (float)this.character.GetMagicItems());
|
|
}
|
|
float num4 = this.R1(tether + num + num2 + num3 + (float)this.character.GetMagicItems());
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s spell power - aura: ",
|
|
num.ToString(),
|
|
", pagan: ",
|
|
num2.ToString(),
|
|
", mods: ",
|
|
num3.ToString(),
|
|
", tether: ",
|
|
tether.ToString(),
|
|
", magic items: ",
|
|
this.character.GetMagicItems().ToString(),
|
|
" total is ",
|
|
num4.ToString()
|
|
}));
|
|
}
|
|
return this.R1(num4);
|
|
}
|
|
|
|
// Token: 0x06000A0B RID: 2571 RVA: 0x000CD6FC File Offset: 0x000CB8FC
|
|
public float PaganRollString()
|
|
{
|
|
float num = this.PaganPowerAura(true);
|
|
float num2 = this.PaganPowerPag(true);
|
|
float num3 = this.PaganPowerMods(true);
|
|
return this.R1(num + num2 + num3 + (float)this.character.GetMagicItems());
|
|
}
|
|
|
|
// Token: 0x06000A0C RID: 2572 RVA: 0x000CD73C File Offset: 0x000CB93C
|
|
public float PaganPowerMods(bool forCharacterSheet)
|
|
{
|
|
float num = this.paganSeverityModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(7);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(7);
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000A0D RID: 2573 RVA: 0x000CD76C File Offset: 0x000CB96C
|
|
public float PaganPowerPag(bool forCharacterSheet)
|
|
{
|
|
float num = this.Pagan() + this.paganModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(3);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(3);
|
|
}
|
|
num /= 5f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x06000A0E RID: 2574 RVA: 0x000CD7B4 File Offset: 0x000CB9B4
|
|
public float PaganPowerAura(bool forCharacterSheet)
|
|
{
|
|
float num = this.Aura() + this.auraModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(2);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(2);
|
|
}
|
|
num /= 7f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x06000A0F RID: 2575 RVA: 0x000CD7FC File Offset: 0x000CB9FC
|
|
public float PaganPowerFromItem(float severity, float tether)
|
|
{
|
|
float num = Mathf.Round(tether + severity);
|
|
if (Records.x.showRuleset)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s spell power from item - tether: ",
|
|
tether.ToString(),
|
|
", severity: ",
|
|
severity.ToString()
|
|
}));
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000A10 RID: 2576 RVA: 0x000CD85C File Offset: 0x000CBA5C
|
|
public string PaganPowerCalculation(bool fromManual, float tether, bool fromItem)
|
|
{
|
|
this.str.Clear();
|
|
if (fromItem)
|
|
{
|
|
this.str.Append(tether);
|
|
this.SBP();
|
|
this.str.Append("Spell Overpower");
|
|
this.CB();
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(this.PaganPowerAura(true));
|
|
this.SBP();
|
|
this.str.Append("AUR/7");
|
|
this.CPlus();
|
|
this.str.Append(this.PaganPowerPag(true));
|
|
if (!Records.x.banquetIsle && !this.semizenMagic)
|
|
{
|
|
this.SBP();
|
|
this.str.Append("PAG/5");
|
|
this.CPlus();
|
|
}
|
|
else
|
|
{
|
|
this.SBP();
|
|
this.str.Append("OCC/5");
|
|
this.CPlus();
|
|
}
|
|
this.str.Append(this.character.GetMagicItems());
|
|
this.SBP();
|
|
this.str.Append("Enhanced Items");
|
|
this.CPlus();
|
|
float num = this.PaganPowerMods(true);
|
|
if (num != 0f)
|
|
{
|
|
this.str.Append(num);
|
|
this.SBP();
|
|
this.str.Append("Mods");
|
|
this.CPlus();
|
|
}
|
|
this.str.Append(tether);
|
|
this.SBP();
|
|
this.str.Append("Spell Overpower");
|
|
this.CB();
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A11 RID: 2577 RVA: 0x000CD9DD File Offset: 0x000CBBDD
|
|
public float SpellRadius(Library.Pagan paganRow)
|
|
{
|
|
if (this.character.npc)
|
|
{
|
|
return 20f;
|
|
}
|
|
if (paganRow != null && paganRow._ID == "Revive")
|
|
{
|
|
return 5f;
|
|
}
|
|
return 20f;
|
|
}
|
|
|
|
// Token: 0x06000A12 RID: 2578 RVA: 0x000CDA14 File Offset: 0x000CBC14
|
|
public float PaganResistance(bool forCharacterSheet, string spellClass, out float roll, out float armor)
|
|
{
|
|
armor = (float)this.character.GetMagicAC();
|
|
float num = this.PaganResistAura(forCharacterSheet);
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s spell resistance - aura: ",
|
|
num.ToString(),
|
|
", armor: ",
|
|
armor.ToString()
|
|
}));
|
|
}
|
|
float num2 = num;
|
|
roll = 0f;
|
|
if (!forCharacterSheet)
|
|
{
|
|
float num3 = num2;
|
|
float num4 = num2 * 0.6f;
|
|
float num5 = num2 * 1.4f;
|
|
float num6 = Random.Range(num4, num5);
|
|
num2 = num6;
|
|
roll = this.R1(num3 - num6);
|
|
if (spellClass == "Vines")
|
|
{
|
|
num2 += this.paganResist.x;
|
|
}
|
|
else if (spellClass == "Spores")
|
|
{
|
|
num2 += this.paganResist.z;
|
|
}
|
|
else if (spellClass == "Fauna")
|
|
{
|
|
num2 += this.paganResist.y;
|
|
}
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
// Token: 0x06000A13 RID: 2579 RVA: 0x000CDB18 File Offset: 0x000CBD18
|
|
public float PaganResistAura(bool forCharacterSheet)
|
|
{
|
|
float num = this.Aura() + this.auraModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(2);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(2);
|
|
}
|
|
num /= 3f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x06000A14 RID: 2580 RVA: 0x000CDB60 File Offset: 0x000CBD60
|
|
public string PaganResistCalculation(bool fromManual, float luck, string spellClass)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(this.PaganResistAura(true));
|
|
this.SBP();
|
|
this.str.Append("AUR/3");
|
|
int magicAC = this.character.GetMagicAC();
|
|
float num = 0f;
|
|
if (spellClass == "Vines")
|
|
{
|
|
num = this.paganResist.x;
|
|
}
|
|
else if (spellClass == "Spores")
|
|
{
|
|
num = this.paganResist.z;
|
|
}
|
|
else if (spellClass == "Fauna")
|
|
{
|
|
num = this.paganResist.y;
|
|
}
|
|
if (num != 0f)
|
|
{
|
|
if (num > 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(num);
|
|
}
|
|
if (num < 0f)
|
|
{
|
|
this.CMin();
|
|
this.str.Append(num * -1f);
|
|
}
|
|
if (fromManual)
|
|
{
|
|
this.SBP();
|
|
if (spellClass == "Vines")
|
|
{
|
|
this.str.Append("Vines Resistance");
|
|
}
|
|
else if (spellClass == "Spores")
|
|
{
|
|
this.str.Append("Spores Resistance");
|
|
}
|
|
else if (spellClass == "Fauna")
|
|
{
|
|
this.str.Append("Fauna Resistance");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.SBP();
|
|
this.str.Append("Resistance Modifier");
|
|
}
|
|
}
|
|
if (fromManual)
|
|
{
|
|
this.CB();
|
|
}
|
|
else
|
|
{
|
|
if (luck > 0f)
|
|
{
|
|
this.CMin();
|
|
this.str.Append(luck);
|
|
}
|
|
if (luck < 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(luck * -1f);
|
|
}
|
|
this.SBP();
|
|
this.str.Append("Resist Luck");
|
|
this.CB();
|
|
}
|
|
if (fromManual || magicAC > 0)
|
|
{
|
|
this.str.Append("Spell effects are reduced ");
|
|
this.str.Append((float)this.character.GetMagicAC() / 10f);
|
|
this.str.Append("%");
|
|
this.SBP();
|
|
this.str.Append("Pagan Armor");
|
|
this.CB();
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A15 RID: 2581 RVA: 0x000CDDA0 File Offset: 0x000CBFA0
|
|
public float SpellDifficulty(string spellName, out float tether)
|
|
{
|
|
int num = this.uniqueNames.IndexOf(spellName);
|
|
float num2 = 0f;
|
|
tether = 0f;
|
|
if (num > -1)
|
|
{
|
|
Library.Pagan paganRow = Links.x.library.GetPaganRow(this.abilityNames[num]);
|
|
num2 = Records.x.SpellDifficulty(paganRow, this.abilityLevels[num].x, this.abilityLevels[num].y, this.abilityLevels[num].z);
|
|
if (paganRow._Slider1.Contains("Summon"))
|
|
{
|
|
num2 += this.SummonModSpells();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("NO SPELL NAME FOUND " + ((this != null) ? this.ToString() : null));
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
// Token: 0x06000A16 RID: 2582 RVA: 0x000CDE60 File Offset: 0x000CC060
|
|
public float PlayingSkill(string instrument)
|
|
{
|
|
int num = 26;
|
|
if (instrument == "Flute")
|
|
{
|
|
num = 26;
|
|
}
|
|
if (instrument == "Horn")
|
|
{
|
|
num = 27;
|
|
}
|
|
if (instrument == "Pipe")
|
|
{
|
|
num = 29;
|
|
}
|
|
return this.R1(this.GetSkill(num) / 20f);
|
|
}
|
|
|
|
// Token: 0x06000A17 RID: 2583 RVA: 0x000CDEB4 File Offset: 0x000CC0B4
|
|
public float PlayingSkillHighest()
|
|
{
|
|
float num = this.R1(this.GetSkill(26) / 20f);
|
|
float num2 = this.R1(this.GetSkill(27) / 20f);
|
|
float num3 = this.R1(this.GetSkill(29) / 20f);
|
|
float num4 = num;
|
|
if (num2 > num4)
|
|
{
|
|
num4 = num2;
|
|
}
|
|
if (num3 > num4)
|
|
{
|
|
num4 = num3;
|
|
}
|
|
return num4;
|
|
}
|
|
|
|
// Token: 0x06000A18 RID: 2584 RVA: 0x000CDF10 File Offset: 0x000CC110
|
|
public float PlaySensory(bool forCharacterSheet)
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(5);
|
|
}
|
|
num /= 10f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x06000A19 RID: 2585 RVA: 0x000CDF58 File Offset: 0x000CC158
|
|
public float InstrumentPower(float severity, string skill, bool forCharacterSheet, out float instrumentPower)
|
|
{
|
|
float num = this.PlayingPowerDex(forCharacterSheet);
|
|
float num2 = this.PlaySensory(forCharacterSheet);
|
|
int num3 = 0;
|
|
int num4 = 0;
|
|
this.PlayingMinMax(out num3, out num4, forCharacterSheet, skill);
|
|
instrumentPower = this.R1((float)Random.Range(num3, num4 + 1));
|
|
if (forCharacterSheet)
|
|
{
|
|
return this.R2((float)num4 + num + num2 + this.R1((float)this.Artistry()));
|
|
}
|
|
float num5 = this.PlayingSkill(skill);
|
|
float num6;
|
|
if (forCharacterSheet)
|
|
{
|
|
num6 = this.R1(instrumentPower + num + num2 + this.R1(this.PlayingSkillHighest()) + this.R1((float)this.Artistry()));
|
|
}
|
|
else
|
|
{
|
|
num6 = this.R1(instrumentPower + num + num2 + this.R1(num5) + this.R1((float)this.Artistry()));
|
|
}
|
|
if (Records.x.showRuleset && !forCharacterSheet)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
this.GetName(),
|
|
"'s instrument potency total: ",
|
|
num6.ToString(),
|
|
", damageMin: ",
|
|
num3.ToString(),
|
|
", damageMax: ",
|
|
num4.ToString(),
|
|
", power: ",
|
|
instrumentPower.ToString(),
|
|
", severity: ",
|
|
severity.ToString(),
|
|
" , dex: ",
|
|
num.ToString(),
|
|
", sen: ",
|
|
num2.ToString()
|
|
}));
|
|
}
|
|
return num6;
|
|
}
|
|
|
|
// Token: 0x06000A1A RID: 2586 RVA: 0x000CE0D0 File Offset: 0x000CC2D0
|
|
public float MusicPowerString()
|
|
{
|
|
float num = this.PlayingPowerDex(true);
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x06000A1B RID: 2587 RVA: 0x000CE0EC File Offset: 0x000CC2EC
|
|
public void PlayingMinMax(out int damageMin, out int damageMax, bool forCharacterSheet, string skill)
|
|
{
|
|
damageMin = 0;
|
|
damageMax = 0;
|
|
if (forCharacterSheet)
|
|
{
|
|
return;
|
|
}
|
|
Library.Inventory inventory = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(this.character.instrumentInUse * 2));
|
|
if (this.character.instrumentInUse == 0)
|
|
{
|
|
inventory = this.character.GetInstrumentType(skill);
|
|
}
|
|
if (inventory != null && (inventory._MainSkill == "Flute" || inventory._MainSkill == "Drums" || inventory._MainSkill == "Pipe" || inventory._MainSkill == "Horn"))
|
|
{
|
|
damageMin = inventory._DmgMin;
|
|
damageMax = inventory._DmgMax;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A1C RID: 2588 RVA: 0x000CE1A4 File Offset: 0x000CC3A4
|
|
public float PlayingPowerDex(bool forCharacterSheet)
|
|
{
|
|
float num = this.Dexterity() + this.dexterityModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(4);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(4);
|
|
}
|
|
num /= 30f;
|
|
return this.R1(num);
|
|
}
|
|
|
|
// Token: 0x06000A1D RID: 2589 RVA: 0x000CE1EC File Offset: 0x000CC3EC
|
|
public string InstrumentPowerCalculation(bool fromManual, string req, float instrumentPower, bool addSkillLevel, float skillLevel, string type)
|
|
{
|
|
this.str.Clear();
|
|
float num = (float)this.Artistry();
|
|
if (num != 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(this.R1(num));
|
|
this.SBP();
|
|
this.str.Append("Artistry Mods");
|
|
this.CPlus();
|
|
}
|
|
this.str.Append(this.PlayingPowerDex(true));
|
|
this.SBP();
|
|
this.str.Append("DEX/30");
|
|
this.CPlus();
|
|
this.str.Append(this.PlaySensory(true));
|
|
this.SBP();
|
|
this.str.Append("SEN/10");
|
|
this.CPlus();
|
|
if (!fromManual)
|
|
{
|
|
this.str.Append(this.R1(instrumentPower));
|
|
}
|
|
this.SBP();
|
|
if (!fromManual)
|
|
{
|
|
if (type == "Pipe")
|
|
{
|
|
this.str.Append("Pipe Power");
|
|
}
|
|
else if (type == "Flute")
|
|
{
|
|
this.str.Append("Flute Power");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Horn Power");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Instrument Power");
|
|
}
|
|
if (addSkillLevel)
|
|
{
|
|
this.str.Append("]</color> + ");
|
|
this.str.Append(this.PlayingSkill(req));
|
|
this.SBP();
|
|
this.str.Append("Skill/20");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("]</color> + ");
|
|
this.str.Append(this.PlayingSkill(req));
|
|
this.SBP();
|
|
this.str.Append("Highest Instrument Skill/20");
|
|
}
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A1E RID: 2590 RVA: 0x000CE3C0 File Offset: 0x000CC5C0
|
|
public string SongSkillMultiplierCalculation(float x)
|
|
{
|
|
this.str.Clear();
|
|
this.str.Append(this.R1(Records.x.SongSkillMultiplier(x)));
|
|
this.SBP();
|
|
this.str.Append("Modified Skill");
|
|
this.CB();
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A1F RID: 2591 RVA: 0x000CE420 File Offset: 0x000CC620
|
|
public float InstrumentResistance(bool forCharacterSheet, out float roll)
|
|
{
|
|
float num = this.PlayingResistAura(forCharacterSheet);
|
|
float num2 = this.PlayingResistSensory(forCharacterSheet);
|
|
float num3 = num + num2;
|
|
num3 += this.musicResistMod;
|
|
roll = 0f;
|
|
if (!forCharacterSheet)
|
|
{
|
|
float num4 = num3;
|
|
float num5 = num3 * 0.6f;
|
|
float num6 = num3 * 1.4f;
|
|
float num7 = Random.Range(num5, num6);
|
|
num3 = num7;
|
|
roll = this.R1(num4 - num7);
|
|
}
|
|
return this.R1(num3);
|
|
}
|
|
|
|
// Token: 0x06000A20 RID: 2592 RVA: 0x000CE484 File Offset: 0x000CC684
|
|
public float PlayingResistAura(bool forCharacterSheet)
|
|
{
|
|
float num = this.Aura() + this.auraModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(2);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(2);
|
|
}
|
|
num /= 4f;
|
|
return Mathf.Ceil(num);
|
|
}
|
|
|
|
// Token: 0x06000A21 RID: 2593 RVA: 0x000CE4C8 File Offset: 0x000CC6C8
|
|
public float PlayingResistSensory(bool forCharacterSheet)
|
|
{
|
|
float num = this.Sensory() + this.sensoryModFlat;
|
|
if (forCharacterSheet)
|
|
{
|
|
num += (float)this.GetDiceModifierAverage(5);
|
|
}
|
|
else
|
|
{
|
|
num += (float)this.GetDiceModifier(5);
|
|
}
|
|
num /= 5f;
|
|
return Mathf.Ceil(num);
|
|
}
|
|
|
|
// Token: 0x06000A22 RID: 2594 RVA: 0x000CE50C File Offset: 0x000CC70C
|
|
public string InstrumentResistCalculation(bool forCS, float luck)
|
|
{
|
|
this.str.Clear();
|
|
float num;
|
|
this.str.Append(this.character.stats.InstrumentResistance(true, out num));
|
|
this.SBP();
|
|
this.str.Append("AUR/4 + SEN/5");
|
|
if (this.musicResistMod != 0f)
|
|
{
|
|
this.str.Append(" + Bonuses & Ailments");
|
|
}
|
|
if (forCS)
|
|
{
|
|
this.CB();
|
|
}
|
|
else
|
|
{
|
|
if (luck > 0f)
|
|
{
|
|
this.CMin();
|
|
this.str.Append(luck);
|
|
}
|
|
if (luck < 0f)
|
|
{
|
|
this.CPlus();
|
|
this.str.Append(luck * -1f);
|
|
}
|
|
this.SBP();
|
|
this.str.Append("Resist Luck");
|
|
this.CB();
|
|
}
|
|
return this.str.ToString();
|
|
}
|
|
|
|
// Token: 0x06000A23 RID: 2595 RVA: 0x000CE5E8 File Offset: 0x000CC7E8
|
|
public float SongDifficulty(Library.Abilities song)
|
|
{
|
|
return song._Difficulty;
|
|
}
|
|
|
|
// Token: 0x06000A24 RID: 2596 RVA: 0x000CE5F0 File Offset: 0x000CC7F0
|
|
public float ElixirDifficulty(Library.Abilities elixir)
|
|
{
|
|
return elixir._Difficulty;
|
|
}
|
|
|
|
// Token: 0x06000A25 RID: 2597 RVA: 0x000CE5F8 File Offset: 0x000CC7F8
|
|
public int Stuck()
|
|
{
|
|
if (this.character.inventoryBag && this.character.inventoryBag.weight > (float)this.CarryingWeight())
|
|
{
|
|
return 1;
|
|
}
|
|
return this.stuck;
|
|
}
|
|
|
|
// Token: 0x06000A26 RID: 2598 RVA: 0x000CE62D File Offset: 0x000CC82D
|
|
public bool Overburdened()
|
|
{
|
|
return this.character.party && this.character.inventoryBag && this.character.inventoryBag.weight > (float)this.CarryingWeight();
|
|
}
|
|
|
|
// Token: 0x06000A27 RID: 2599 RVA: 0x000CE66C File Offset: 0x000CC86C
|
|
public int Silent()
|
|
{
|
|
return this.silent;
|
|
}
|
|
|
|
// Token: 0x06000A28 RID: 2600 RVA: 0x000CE674 File Offset: 0x000CC874
|
|
public int Confuse()
|
|
{
|
|
return this.confuse;
|
|
}
|
|
|
|
// Token: 0x06000A29 RID: 2601 RVA: 0x000CE67C File Offset: 0x000CC87C
|
|
public int Floating()
|
|
{
|
|
return this.floating;
|
|
}
|
|
|
|
// Token: 0x06000A2A RID: 2602 RVA: 0x000CE684 File Offset: 0x000CC884
|
|
public int Flee()
|
|
{
|
|
return this.flee;
|
|
}
|
|
|
|
// Token: 0x06000A2B RID: 2603 RVA: 0x000CE68C File Offset: 0x000CC88C
|
|
public int AttackAllies()
|
|
{
|
|
return this.attackAllies;
|
|
}
|
|
|
|
// Token: 0x06000A2C RID: 2604 RVA: 0x000CE694 File Offset: 0x000CC894
|
|
public float Blind()
|
|
{
|
|
return this.R1(this.blind);
|
|
}
|
|
|
|
// Token: 0x06000A2D RID: 2605 RVA: 0x000CE6A2 File Offset: 0x000CC8A2
|
|
public float ArmorReduction()
|
|
{
|
|
return this.R1(this.armorReduction);
|
|
}
|
|
|
|
// Token: 0x06000A2E RID: 2606 RVA: 0x000CE6B0 File Offset: 0x000CC8B0
|
|
public float EqArmorReduction()
|
|
{
|
|
return this.R1(this.eqArmorReduction);
|
|
}
|
|
|
|
// Token: 0x06000A2F RID: 2607 RVA: 0x000CE6BE File Offset: 0x000CC8BE
|
|
public float Deaf()
|
|
{
|
|
return this.R1(this.deaf);
|
|
}
|
|
|
|
// Token: 0x06000A30 RID: 2608 RVA: 0x000CE6CC File Offset: 0x000CC8CC
|
|
public int Invisible()
|
|
{
|
|
return this.invisible;
|
|
}
|
|
|
|
// Token: 0x06000A31 RID: 2609 RVA: 0x000CE6D4 File Offset: 0x000CC8D4
|
|
public int Stun()
|
|
{
|
|
return this.stun;
|
|
}
|
|
|
|
// Token: 0x06000A32 RID: 2610 RVA: 0x000CE6DC File Offset: 0x000CC8DC
|
|
public int Charming()
|
|
{
|
|
return this.charming;
|
|
}
|
|
|
|
// Token: 0x06000A33 RID: 2611 RVA: 0x000CE6E4 File Offset: 0x000CC8E4
|
|
public int Artistry()
|
|
{
|
|
return this.artistry;
|
|
}
|
|
|
|
// Token: 0x06000A34 RID: 2612 RVA: 0x000CE6EC File Offset: 0x000CC8EC
|
|
public int NimbleFingers()
|
|
{
|
|
return this.nimbleFingers;
|
|
}
|
|
|
|
// Token: 0x06000A35 RID: 2613 RVA: 0x000CE6F4 File Offset: 0x000CC8F4
|
|
public float MoveSpeedMod()
|
|
{
|
|
return this.R1(this.moveSpeedMod);
|
|
}
|
|
|
|
// Token: 0x06000A36 RID: 2614 RVA: 0x000CE702 File Offset: 0x000CC902
|
|
public float ActionSpeedMod()
|
|
{
|
|
return this.actionTimeMod;
|
|
}
|
|
|
|
// Token: 0x06000A37 RID: 2615 RVA: 0x000CE70C File Offset: 0x000CC90C
|
|
public void SetHealth(int amt, bool sendDeathEvent)
|
|
{
|
|
this.currLife = amt;
|
|
if (this.currLife > this.HealthMax())
|
|
{
|
|
this.currLife = this.HealthMax();
|
|
}
|
|
this.character.UpdateHealth();
|
|
if (this.currLife <= 0)
|
|
{
|
|
this.currLife = 0;
|
|
if (sendDeathEvent)
|
|
{
|
|
this.character.Dead(false, Records.x.combat, false);
|
|
}
|
|
}
|
|
if (this.character.party && this.character.portrait)
|
|
{
|
|
this.character.portrait.SetHealthColor();
|
|
}
|
|
if (this.character.summoned && this.character.dockFriend)
|
|
{
|
|
this.character.dockFriend.UpdateHealth();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A38 RID: 2616 RVA: 0x000CE7CD File Offset: 0x000CC9CD
|
|
public void SetMaxHealth(int amt)
|
|
{
|
|
this.lifeBase = amt;
|
|
}
|
|
|
|
// Token: 0x06000A39 RID: 2617 RVA: 0x000CE7D6 File Offset: 0x000CC9D6
|
|
public void SetSpirit(int amt)
|
|
{
|
|
this.magicPoints = amt;
|
|
if (this.magicPoints > this.SpiritMax() && this.character.party)
|
|
{
|
|
this.magicPoints = this.SpiritMax();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A3A RID: 2618 RVA: 0x000CE806 File Offset: 0x000CCA06
|
|
public void SetSpiritMax(int amt)
|
|
{
|
|
this.magicPointsBase = amt;
|
|
}
|
|
|
|
// Token: 0x06000A3B RID: 2619 RVA: 0x000CE810 File Offset: 0x000CCA10
|
|
public void AddHealth(int amt)
|
|
{
|
|
this.currLife += amt;
|
|
if (this.currLife > this.HealthMax())
|
|
{
|
|
this.currLife = this.HealthMax();
|
|
}
|
|
if (this.currLife < 0)
|
|
{
|
|
this.currLife = 0;
|
|
}
|
|
if (this.character.party)
|
|
{
|
|
this.character.portrait.SetHealthColor();
|
|
}
|
|
if (this.character.summoned && this.character.dockFriend)
|
|
{
|
|
this.character.dockFriend.UpdateHealth();
|
|
}
|
|
this.character.UpdateHealth();
|
|
}
|
|
|
|
// Token: 0x06000A3C RID: 2620 RVA: 0x000CE8AC File Offset: 0x000CCAAC
|
|
public void AddHealthMax(int amt)
|
|
{
|
|
this.maxHealthAdd += amt;
|
|
if (this.currLife > this.HealthMax())
|
|
{
|
|
this.currLife = this.HealthMax();
|
|
}
|
|
this.character.UpdateHealth();
|
|
}
|
|
|
|
// Token: 0x06000A3D RID: 2621 RVA: 0x000CE8E4 File Offset: 0x000CCAE4
|
|
public void AddSpiritFromKill(float amt)
|
|
{
|
|
if (this.HasSpellbook())
|
|
{
|
|
this.magicPoints += (int)amt;
|
|
if (this.magicPoints > this.SpiritMax() && this.character.party)
|
|
{
|
|
this.magicPoints = this.SpiritMax();
|
|
}
|
|
if (this.magicPoints < 0)
|
|
{
|
|
this.magicPoints = 0;
|
|
}
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.SetMagicColor();
|
|
}
|
|
this.UpdateAbilityTriggers();
|
|
if (this.character.party)
|
|
{
|
|
GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(62);
|
|
pooledGameObject.transform.position = this.character.body.HeadPosition(-0.5f);
|
|
pooledGameObject.transform.SetParent(this.character.tr);
|
|
pooledGameObject.SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A3E RID: 2622 RVA: 0x000CE9C4 File Offset: 0x000CCBC4
|
|
public void AddSpirit(int amt)
|
|
{
|
|
if (this.HasSpellbook())
|
|
{
|
|
this.magicPoints += amt;
|
|
if (this.magicPoints > this.SpiritMax() && this.character.party)
|
|
{
|
|
this.magicPoints = this.SpiritMax();
|
|
}
|
|
if (this.magicPoints < 0)
|
|
{
|
|
this.magicPoints = 0;
|
|
}
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.SetMagicColor();
|
|
}
|
|
this.UpdateAbilityTriggers();
|
|
if (amt > 0 && this.character.party)
|
|
{
|
|
GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(62);
|
|
pooledGameObject.transform.position = this.character.body.HeadPosition(-0.5f);
|
|
pooledGameObject.transform.SetParent(this.character.tr);
|
|
pooledGameObject.SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A3F RID: 2623 RVA: 0x000CEAA8 File Offset: 0x000CCCA8
|
|
public void AddStamina(float amt)
|
|
{
|
|
if (amt > 0f)
|
|
{
|
|
if (this.staminaRegenMod > 0f)
|
|
{
|
|
amt *= this.staminaRegenMod;
|
|
}
|
|
else if (this.staminaRegenMod < 0f)
|
|
{
|
|
amt /= this.staminaRegenMod * -1f;
|
|
}
|
|
}
|
|
else if (this.staminaReductionMultiplier > 0f)
|
|
{
|
|
amt *= this.staminaReductionMultiplier;
|
|
}
|
|
this.stamina += amt;
|
|
if (this.stamina > this.MaxStamina())
|
|
{
|
|
this.stamina = this.MaxStamina();
|
|
}
|
|
if (this.stamina < 0f)
|
|
{
|
|
this.stamina = 0f;
|
|
}
|
|
if (this.character.npc)
|
|
{
|
|
this.character.UpdateStamina();
|
|
}
|
|
if (this.character.party && this.character.portrait)
|
|
{
|
|
this.character.portrait.SetFatigue();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A40 RID: 2624 RVA: 0x000CEB93 File Offset: 0x000CCD93
|
|
public float MaxStamina()
|
|
{
|
|
return this.maxStamina + this.maxStaminaAdd;
|
|
}
|
|
|
|
// Token: 0x06000A41 RID: 2625 RVA: 0x000CEBA2 File Offset: 0x000CCDA2
|
|
public void AddStamimaSpeed(float amt)
|
|
{
|
|
this.staminaRegenMod += amt;
|
|
}
|
|
|
|
// Token: 0x06000A42 RID: 2626 RVA: 0x000CEBB2 File Offset: 0x000CCDB2
|
|
public void AddStamimaReductionMultipler(float amt)
|
|
{
|
|
this.staminaReductionMultiplier += amt;
|
|
}
|
|
|
|
// Token: 0x06000A43 RID: 2627 RVA: 0x000CEBC2 File Offset: 0x000CCDC2
|
|
public float RallySpeed()
|
|
{
|
|
return this.R1(this.rallyBase + this.rallySpeed);
|
|
}
|
|
|
|
// Token: 0x06000A44 RID: 2628 RVA: 0x000CEBD7 File Offset: 0x000CCDD7
|
|
public void SetStamina(float amt)
|
|
{
|
|
this.stamina = amt;
|
|
if (this.stamina > this.maxStamina)
|
|
{
|
|
this.stamina = this.maxStamina;
|
|
}
|
|
if (this.character.npc)
|
|
{
|
|
this.character.UpdateStamina();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A45 RID: 2629 RVA: 0x000CEC12 File Offset: 0x000CCE12
|
|
public float StaminaPercent()
|
|
{
|
|
return this.stamina / this.maxStamina;
|
|
}
|
|
|
|
// Token: 0x06000A46 RID: 2630 RVA: 0x000CEC21 File Offset: 0x000CCE21
|
|
public void AddActionTimeMod(float amt)
|
|
{
|
|
this.actionTimeMod += amt;
|
|
}
|
|
|
|
// Token: 0x06000A47 RID: 2631 RVA: 0x000CEC31 File Offset: 0x000CCE31
|
|
public void AddMoveSpeedMod(float amt)
|
|
{
|
|
this.moveSpeedMod += amt;
|
|
}
|
|
|
|
// Token: 0x06000A48 RID: 2632 RVA: 0x000CEC41 File Offset: 0x000CCE41
|
|
public void AddStrengthMod(float amt)
|
|
{
|
|
this.strengthModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A49 RID: 2633 RVA: 0x000CEC51 File Offset: 0x000CCE51
|
|
public void AddAgilityMod(float amt)
|
|
{
|
|
this.agilityModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A4A RID: 2634 RVA: 0x000CEC61 File Offset: 0x000CCE61
|
|
public void AddAuraMod(float amt)
|
|
{
|
|
this.auraModFlat += amt;
|
|
this.EnchantJewelryEffects(16, true);
|
|
this.EnchantJewelryEffects(20, true);
|
|
this.EnchantJewelryEffects(22, true);
|
|
this.EnchantJewelryEffects(24, true);
|
|
}
|
|
|
|
// Token: 0x06000A4B RID: 2635 RVA: 0x000CEC95 File Offset: 0x000CCE95
|
|
public void AddDexterityMod(float amt)
|
|
{
|
|
this.dexterityModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A4C RID: 2636 RVA: 0x000CECA5 File Offset: 0x000CCEA5
|
|
public void AddPaganMod(float amt)
|
|
{
|
|
this.paganModFlat += amt;
|
|
this.EnchantJewelryEffects(16, true);
|
|
this.EnchantJewelryEffects(20, true);
|
|
this.EnchantJewelryEffects(22, true);
|
|
this.EnchantJewelryEffects(24, true);
|
|
}
|
|
|
|
// Token: 0x06000A4D RID: 2637 RVA: 0x000CECD9 File Offset: 0x000CCED9
|
|
public void AddSensoryMod(float amt)
|
|
{
|
|
this.sensoryModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A4E RID: 2638 RVA: 0x000CECE9 File Offset: 0x000CCEE9
|
|
public void AddBalanceMod(float amt)
|
|
{
|
|
this.balance += amt;
|
|
}
|
|
|
|
// Token: 0x06000A4F RID: 2639 RVA: 0x000CECF9 File Offset: 0x000CCEF9
|
|
public void AddSilent(int amt)
|
|
{
|
|
this.silent += amt;
|
|
}
|
|
|
|
// Token: 0x06000A50 RID: 2640 RVA: 0x000CED09 File Offset: 0x000CCF09
|
|
public void AddConfuse(int amt)
|
|
{
|
|
this.confuse += amt;
|
|
}
|
|
|
|
// Token: 0x06000A51 RID: 2641 RVA: 0x000CED19 File Offset: 0x000CCF19
|
|
public void AddFloating(int amt)
|
|
{
|
|
this.floating += amt;
|
|
}
|
|
|
|
// Token: 0x06000A52 RID: 2642 RVA: 0x000CED29 File Offset: 0x000CCF29
|
|
public void AddAttackAllies(int amt)
|
|
{
|
|
this.attackAllies += amt;
|
|
}
|
|
|
|
// Token: 0x06000A53 RID: 2643 RVA: 0x000CED39 File Offset: 0x000CCF39
|
|
public void AddReduceStun(float amt)
|
|
{
|
|
this.reduceStun += amt;
|
|
}
|
|
|
|
// Token: 0x06000A54 RID: 2644 RVA: 0x000CED49 File Offset: 0x000CCF49
|
|
public void AddFlee(int amt)
|
|
{
|
|
this.flee += amt;
|
|
}
|
|
|
|
// Token: 0x06000A55 RID: 2645 RVA: 0x000CED59 File Offset: 0x000CCF59
|
|
public void AddBlind(float amt)
|
|
{
|
|
this.blind += amt;
|
|
}
|
|
|
|
// Token: 0x06000A56 RID: 2646 RVA: 0x000CED69 File Offset: 0x000CCF69
|
|
public void AddArmorReduction(float amt)
|
|
{
|
|
this.armorReduction += amt;
|
|
}
|
|
|
|
// Token: 0x06000A57 RID: 2647 RVA: 0x000CED79 File Offset: 0x000CCF79
|
|
public void AddEqArmorReduction(float amt)
|
|
{
|
|
this.eqArmorReduction += amt;
|
|
}
|
|
|
|
// Token: 0x06000A58 RID: 2648 RVA: 0x000CED89 File Offset: 0x000CCF89
|
|
public void AddDeaf(float amt)
|
|
{
|
|
this.deaf += amt;
|
|
}
|
|
|
|
// Token: 0x06000A59 RID: 2649 RVA: 0x000CED99 File Offset: 0x000CCF99
|
|
public void AddInvisible(int amt)
|
|
{
|
|
this.invisible += amt;
|
|
}
|
|
|
|
// Token: 0x06000A5A RID: 2650 RVA: 0x000CEDAC File Offset: 0x000CCFAC
|
|
public void AddStuck(int amt)
|
|
{
|
|
this.stuck += amt;
|
|
if (this.stuck != 0)
|
|
{
|
|
if (this.character.hasActions && this.character.moving && this.character.actions)
|
|
{
|
|
this.character.TargetReached();
|
|
this.character.actions.EndTurn(true);
|
|
}
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.SetSynergy(0f, 0f);
|
|
return;
|
|
}
|
|
}
|
|
else if (this.character.portrait)
|
|
{
|
|
this.UpdateRallyCount(false, 0f);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A5B RID: 2651 RVA: 0x000CEE62 File Offset: 0x000CD062
|
|
public void AddStun(int amt)
|
|
{
|
|
this.stun += amt;
|
|
}
|
|
|
|
// Token: 0x06000A5C RID: 2652 RVA: 0x000CEE72 File Offset: 0x000CD072
|
|
public void SetStun(int amt)
|
|
{
|
|
this.stun = amt;
|
|
}
|
|
|
|
// Token: 0x06000A5D RID: 2653 RVA: 0x000CEE7B File Offset: 0x000CD07B
|
|
public void AddCharming(int amt)
|
|
{
|
|
this.charming += amt;
|
|
}
|
|
|
|
// Token: 0x06000A5E RID: 2654 RVA: 0x000CEE8B File Offset: 0x000CD08B
|
|
public void AddArtistry(int amt)
|
|
{
|
|
this.artistry += amt;
|
|
}
|
|
|
|
// Token: 0x06000A5F RID: 2655 RVA: 0x000CEE9B File Offset: 0x000CD09B
|
|
public void AddNimbleFingers(int amt)
|
|
{
|
|
this.nimbleFingers += amt;
|
|
}
|
|
|
|
// Token: 0x06000A60 RID: 2656 RVA: 0x000CEEAB File Offset: 0x000CD0AB
|
|
public void AddStagger(int amt)
|
|
{
|
|
this.stagger += amt;
|
|
}
|
|
|
|
// Token: 0x06000A61 RID: 2657 RVA: 0x000CEEBB File Offset: 0x000CD0BB
|
|
public void AddLightAtks(int amt)
|
|
{
|
|
this.onlyLightAtks += amt;
|
|
}
|
|
|
|
// Token: 0x06000A62 RID: 2658 RVA: 0x000CEECB File Offset: 0x000CD0CB
|
|
public void AddDmgMod(float amt)
|
|
{
|
|
this.severityModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A63 RID: 2659 RVA: 0x000CEEDB File Offset: 0x000CD0DB
|
|
public void AddPaganDmgMod(float amt)
|
|
{
|
|
this.paganSeverityModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A64 RID: 2660 RVA: 0x000CEEEB File Offset: 0x000CD0EB
|
|
public void AddHitMod(float amt)
|
|
{
|
|
this.hitModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A65 RID: 2661 RVA: 0x000CEEFB File Offset: 0x000CD0FB
|
|
public void AddPaganHitMod(float amt)
|
|
{
|
|
this.paganHitModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A66 RID: 2662 RVA: 0x000CEF0B File Offset: 0x000CD10B
|
|
public void AddEvadeMod(float amt)
|
|
{
|
|
this.evadeModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A67 RID: 2663 RVA: 0x000CEF1B File Offset: 0x000CD11B
|
|
public void AddBlockMod(float amt)
|
|
{
|
|
this.blockModFlat += amt;
|
|
}
|
|
|
|
// Token: 0x06000A68 RID: 2664 RVA: 0x000CEF2B File Offset: 0x000CD12B
|
|
public void AddRallySpeed(float amt)
|
|
{
|
|
this.rallySpeed += amt;
|
|
}
|
|
|
|
// Token: 0x06000A69 RID: 2665 RVA: 0x000CEF3B File Offset: 0x000CD13B
|
|
public void AddSpiritAbsorption(float amt)
|
|
{
|
|
this.spiritAbsorption += amt;
|
|
}
|
|
|
|
// Token: 0x06000A6A RID: 2666 RVA: 0x000CEF4B File Offset: 0x000CD14B
|
|
public void ReduceAllSkills(float amt)
|
|
{
|
|
this.allSkillAdd += amt;
|
|
}
|
|
|
|
// Token: 0x06000A6B RID: 2667 RVA: 0x000CEF5B File Offset: 0x000CD15B
|
|
public void AddMusicResist(float amt)
|
|
{
|
|
this.musicResistMod += amt;
|
|
}
|
|
|
|
// Token: 0x06000A6C RID: 2668 RVA: 0x000CEF6C File Offset: 0x000CD16C
|
|
public void AddPaganResist(float amt, string type)
|
|
{
|
|
if (type == "Fauna")
|
|
{
|
|
this.paganResist.y = this.paganResist.y + amt;
|
|
return;
|
|
}
|
|
if (type == "Vines")
|
|
{
|
|
this.paganResist.x = this.paganResist.x + amt;
|
|
return;
|
|
}
|
|
if (type == "Spores")
|
|
{
|
|
this.paganResist.z = this.paganResist.z + amt;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A6D RID: 2669 RVA: 0x000CEFD2 File Offset: 0x000CD1D2
|
|
public void SetCompanionControl(string variableName, bool state, int num)
|
|
{
|
|
if (variableName == "Magic Tactics")
|
|
{
|
|
this.magicTactics = num;
|
|
}
|
|
if (variableName == "Use AI")
|
|
{
|
|
this.companionAI = num;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A6E RID: 2670 RVA: 0x000CEFFC File Offset: 0x000CD1FC
|
|
public void DoHitAI(Character target)
|
|
{
|
|
if (this.xmlName == "GoldShroomer" && this.character.actions && target.node != null && !target.summoned)
|
|
{
|
|
this.character.actions.SpellFromTrigger("MushroomWall", "Wall", target);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A6F RID: 2671 RVA: 0x000CF058 File Offset: 0x000CD258
|
|
public void LoadFromDB()
|
|
{
|
|
this.displayName = this.characterRow._DisplayName;
|
|
this.currLife = this.characterRow._Life;
|
|
this.lifeBase = this.currLife;
|
|
this.sex = this.characterRow._Sex;
|
|
this.race = this.characterRow._Race;
|
|
this.character.radius = (float)this.characterRow._Radius;
|
|
this.moveSpeed = this.characterRow._MoveSpeed;
|
|
this.summonSpeed = this.characterRow._SummonSpeed;
|
|
this.character.characterHeight = this.characterRow._Height - 0.5f;
|
|
this.soundID = this.characterRow._SoundID;
|
|
this.character.combatLevel = this.characterRow._CombatLevel;
|
|
this.dialogueFile = this.characterRow._DialogueFile;
|
|
this.initiateDialogue = this.characterRow._InitiateDialogue;
|
|
this.strength = (float)this.characterRow._Strength;
|
|
this.agility = (float)this.characterRow._Agility;
|
|
this.aura = (float)this.characterRow._Aura;
|
|
this.dexterity = (float)this.characterRow._Dexterity;
|
|
this.pagan = (float)this.characterRow._Pagan;
|
|
this.sensory = (float)this.characterRow._Sensory;
|
|
this.weightBase = this.characterRow._Weight;
|
|
this.sightRadiusBase = this.characterRow._Sight;
|
|
this.hearingRadiusBase = this.characterRow._Hearing;
|
|
this.flying = this.characterRow._Flying;
|
|
this.maxStamina = this.characterRow._Stamina;
|
|
this.stamina = this.maxStamina;
|
|
this.model = this.characterRow._Model;
|
|
this.headModel = this.characterRow._ModelHead;
|
|
this.magicPointsBase = this.characterRow._MaxMP;
|
|
if (this.magicPointsBase > 0)
|
|
{
|
|
this.canCastSpells = true;
|
|
}
|
|
else
|
|
{
|
|
this.canCastSpells = false;
|
|
}
|
|
this.formationGroup = this.characterRow._Formation;
|
|
this.skinTexture = this.characterRow._SkinTexture;
|
|
this.hairTexture = this.characterRow._HairTexture;
|
|
if (this.characterRow._CustomAI != "")
|
|
{
|
|
this.hasCustomAI = true;
|
|
this.customAI = this.characterRow._CustomAI;
|
|
}
|
|
if (this.characterRow._EveryAttackAI != "")
|
|
{
|
|
this.everyAttackAI = this.characterRow._EveryAttackAI;
|
|
this.hasEveryAttackAI = true;
|
|
}
|
|
if (this.characterRow._NonCombatAI != "")
|
|
{
|
|
this.hasNonCombatAI = true;
|
|
this.nonCombatAI = this.characterRow._NonCombatAI;
|
|
}
|
|
this.canJumpEvade = this.characterRow._CanJumpEvade;
|
|
this.canAggressionGroup = this.characterRow._CanAggressionGroup;
|
|
this.canSecretGroup = this.characterRow._CanSecretGroup;
|
|
this.canRecoverGroup = this.characterRow._CanRecoverGroup;
|
|
this.needsDefending = this.characterRow._NeedsDefending;
|
|
this.hasCircleAnims = this.characterRow._HasGroupAnims;
|
|
this.hasEnemies = this.characterRow._HasEnemies;
|
|
if (this.character.ghost)
|
|
{
|
|
this.hasEnemies = true;
|
|
}
|
|
else
|
|
{
|
|
this.SetAllegiance();
|
|
}
|
|
this.canJump = this.characterRow._CanJump;
|
|
if (this.race == "Yeti" || this.race == "Ameythevian" || this.race == "Bloodless Hunter" || this.race == "Taratorith" || this.race == "Lachovinian" || this.race == "Pasaaren" || this.race == "Varuchov" || this.race == "Ghost" || this.race == "Dryad" || this.race == "Dolki")
|
|
{
|
|
this.animal = false;
|
|
this.canCharge = true;
|
|
if (!(this.race == "Dryad") && !(this.characterRow._AnimationPrefix == "_GhostC") && !(this.characterRow._AnimationPrefix == "_ChildPaduri"))
|
|
{
|
|
this.canPin = true;
|
|
}
|
|
if ((float)this.magicPointsBase == 111111f || (float)this.magicPointsBase == 222222f)
|
|
{
|
|
this.semizenMagic = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.animal = true;
|
|
if ((float)this.magicPointsBase == 111111f || (float)this.magicPointsBase == 222222f)
|
|
{
|
|
this.semizenMagic = true;
|
|
}
|
|
}
|
|
this.savedBag.Clear();
|
|
this.savedDur.Clear();
|
|
this.hasBuffItem = false;
|
|
this.savedIntercesion = -1;
|
|
List<int> items = this.characterRow._Items;
|
|
if (!this.character.ghost)
|
|
{
|
|
for (int i = 0; i < items.Count; i++)
|
|
{
|
|
if (i % 3 == 0)
|
|
{
|
|
this.savedBag.Add(items[i]);
|
|
Library.Inventory invRow = Links.x.library.GetInvRow(items[i]);
|
|
if (invRow._Tag == "Consumable" && this.character.npc && (invRow._Effect.Contains("Spirit") || invRow._Effect.Contains("Stamina")))
|
|
{
|
|
this.hasBuffItem = true;
|
|
}
|
|
if (this.character.npc && !this.animal && invRow._Name == "RainGodEarring")
|
|
{
|
|
this.savedIntercessionA = new Vector3(48f, 1f, 0f);
|
|
this.savedIntercessionB = new Vector3(0f, 0f, 1f);
|
|
this.savedIntercesion = invRow._ID;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (i % 3 == 1)
|
|
{
|
|
this.savedBag.Add(items[i]);
|
|
}
|
|
if (i % 3 == 2)
|
|
{
|
|
float num = (float)items[i];
|
|
if (i == 29 && this.character.npc)
|
|
{
|
|
num /= 2f;
|
|
}
|
|
this.savedDur.Add(new Vector4(num, 0f, 0f, 0f));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.hasWordsOfPower = false;
|
|
List<int> skillLvl = this.characterRow._SkillLvl;
|
|
for (int j = 0; j < skillLvl.Count; j++)
|
|
{
|
|
this.skillsProgress.Add(0f);
|
|
this.skills.Add((float)skillLvl[j]);
|
|
if (this.character.npc && (j == 30 || j == 31 || j == 32))
|
|
{
|
|
this.hasWordsOfPower = true;
|
|
}
|
|
}
|
|
if (!this.character.npc && this.characterRow._Knowledge != "")
|
|
{
|
|
this.knowledge.Clear();
|
|
new string[0];
|
|
char c = ',';
|
|
string[] array = this.characterRow._Knowledge.Split(c, StringSplitOptions.None);
|
|
int num2 = 0;
|
|
foreach (string text in array)
|
|
{
|
|
if (text != "" && num2 % 2 == 0)
|
|
{
|
|
this.knowledge.Add(text);
|
|
}
|
|
}
|
|
}
|
|
this.SetVoiceID(true);
|
|
this.magicTactics = 3;
|
|
this.abilities = this.characterRow._Abilities;
|
|
this.abilityLevelsTemp = this.characterRow._AbilitiesLevels;
|
|
this.spellNamesTemp = this.characterRow._AbilitiesNames;
|
|
this.abilityCostTemp = null;
|
|
this.SetupAbilities(true);
|
|
this.UpdateStats();
|
|
if (this.character.party)
|
|
{
|
|
this.FormationTactics();
|
|
}
|
|
if (this.xmlName.Contains("Fish"))
|
|
{
|
|
this.isFishMonster = true;
|
|
}
|
|
if (!this.animal && (this.xmlName.Contains("Farmer") || this.xmlName.Contains("Dancer")))
|
|
{
|
|
this.hasCustomIdle = true;
|
|
if (this.character.animator)
|
|
{
|
|
this.character.animator.SetFloat("Idle Variation", 1f);
|
|
}
|
|
}
|
|
if (this.xmlName.Contains("Merchant") || this.xmlName.Contains("StoreGuard"))
|
|
{
|
|
this.merchant = true;
|
|
}
|
|
if (this.xmlName.Contains("Boro"))
|
|
{
|
|
this.boro = true;
|
|
if (!Records.x.BoroInParty())
|
|
{
|
|
this.dialogueFile = "";
|
|
this.canTalk = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A70 RID: 2672 RVA: 0x000CF920 File Offset: 0x000CDB20
|
|
public void SetVoiceID(bool fromDB)
|
|
{
|
|
float num = this.characterRow._Sex;
|
|
if (!fromDB)
|
|
{
|
|
num = this.sex;
|
|
}
|
|
string text = this.characterRow._Race;
|
|
if (!fromDB)
|
|
{
|
|
text = this.race;
|
|
}
|
|
if (this.characterRow._VoiceID == 0)
|
|
{
|
|
if (num < 0.5f)
|
|
{
|
|
if (text == "Taratorith")
|
|
{
|
|
this.voiceID = 0;
|
|
}
|
|
else if (text == "Pasaaren")
|
|
{
|
|
this.voiceID = 1;
|
|
}
|
|
else if (text == "Varuchov")
|
|
{
|
|
this.voiceID = 2;
|
|
}
|
|
else if (text == "Ameythevian")
|
|
{
|
|
this.voiceID = 3;
|
|
}
|
|
else if (text == "Yeti")
|
|
{
|
|
this.voiceID = 4;
|
|
}
|
|
else
|
|
{
|
|
this.voiceID = 0;
|
|
}
|
|
if (this.characterRow._Height < 3f)
|
|
{
|
|
this.voiceID = 9;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (text == "Taratorith")
|
|
{
|
|
this.voiceID = 5;
|
|
}
|
|
else if (text == "Pasaaren")
|
|
{
|
|
this.voiceID = 6;
|
|
}
|
|
else if (text == "Varuchov")
|
|
{
|
|
this.voiceID = 7;
|
|
}
|
|
else if (text == "Ameythevian")
|
|
{
|
|
this.voiceID = 8;
|
|
}
|
|
else if (text == "Yeti")
|
|
{
|
|
this.voiceID = 4;
|
|
}
|
|
else
|
|
{
|
|
this.voiceID = 5;
|
|
}
|
|
if (this.characterRow._Height < 3f)
|
|
{
|
|
this.voiceID = 10;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A71 RID: 2673 RVA: 0x000CFA98 File Offset: 0x000CDC98
|
|
public void SetAllegiance()
|
|
{
|
|
this.allegiance = this.characterRow._Allegiance;
|
|
if (this.allegiance == 1U || this.allegiance == 10U || this.allegiance == 11U)
|
|
{
|
|
this.isGuard = true;
|
|
}
|
|
if (this.allegiance == 1U || this.allegiance == 10U)
|
|
{
|
|
this.isHouseGuard = true;
|
|
}
|
|
if (this.allegiance == 1U)
|
|
{
|
|
this.isLazureGuard = true;
|
|
}
|
|
this.enemies = this.characterRow._Enemies;
|
|
for (int i = 0; i < this.enemies.Count; i++)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
this.enemy1 = this.enemies[i];
|
|
}
|
|
if (i == 1)
|
|
{
|
|
this.enemy2 = this.enemies[i];
|
|
}
|
|
if (i == 2)
|
|
{
|
|
this.enemy3 = this.enemies[i];
|
|
}
|
|
if (i == 3)
|
|
{
|
|
this.enemy4 = this.enemies[i];
|
|
}
|
|
if (i == 4)
|
|
{
|
|
this.enemy5 = this.enemies[i];
|
|
}
|
|
if (i == 5)
|
|
{
|
|
this.enemy6 = this.enemies[i];
|
|
}
|
|
if (i == 6)
|
|
{
|
|
this.enemy7 = this.enemies[i];
|
|
}
|
|
if (i == 7)
|
|
{
|
|
this.enemy8 = this.enemies[i];
|
|
}
|
|
if (i == 8)
|
|
{
|
|
this.enemy9 = this.enemies[i];
|
|
}
|
|
if (i > 8)
|
|
{
|
|
Debug.Log("Not enough faction enemy slots! " + this.characterRow._Name + " " + this.allegiance.ToString());
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A72 RID: 2674 RVA: 0x000CFC24 File Offset: 0x000CDE24
|
|
public void SetResurrectionFactions()
|
|
{
|
|
this.allegiance = 8U;
|
|
this.enemy1 = 1U;
|
|
this.enemy2 = 5U;
|
|
this.enemy3 = 6U;
|
|
this.enemy4 = 7U;
|
|
this.enemy5 = 10U;
|
|
this.enemy6 = 11U;
|
|
}
|
|
|
|
// Token: 0x06000A73 RID: 2675 RVA: 0x000CFC5C File Offset: 0x000CDE5C
|
|
public void SetSummonAllegiance()
|
|
{
|
|
this.allegiance = 0U;
|
|
this.enemy1 = 100U;
|
|
this.enemy2 = 100U;
|
|
this.enemy3 = 100U;
|
|
this.enemy4 = 100U;
|
|
this.enemy5 = 100U;
|
|
this.enemy6 = 100U;
|
|
this.enemy7 = 100U;
|
|
this.enemy8 = 100U;
|
|
this.enemy9 = 100U;
|
|
}
|
|
|
|
// Token: 0x06000A74 RID: 2676 RVA: 0x000CFCB8 File Offset: 0x000CDEB8
|
|
public void SetHostageAllegiance(bool afterRescue)
|
|
{
|
|
if (!afterRescue)
|
|
{
|
|
this.isGuard = false;
|
|
this.isHouseGuard = false;
|
|
this.isLazureGuard = false;
|
|
this.allegiance = 0U;
|
|
this.enemy1 = 100U;
|
|
this.enemy2 = 100U;
|
|
this.enemy3 = 100U;
|
|
this.enemy4 = 100U;
|
|
this.enemy5 = 100U;
|
|
this.enemy6 = 100U;
|
|
this.enemy7 = 100U;
|
|
this.enemy8 = 100U;
|
|
this.enemy9 = 100U;
|
|
return;
|
|
}
|
|
this.SetAllegiance();
|
|
}
|
|
|
|
// Token: 0x06000A75 RID: 2677 RVA: 0x000CFD33 File Offset: 0x000CDF33
|
|
public void Talk()
|
|
{
|
|
if ((this.dialogueFile != "" && this.initiateDialogue >= 1 && this.initiateDialogue < 10) || this.initiateDialogue >= 11)
|
|
{
|
|
this.canTalk = true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A76 RID: 2678 RVA: 0x000CFD6C File Offset: 0x000CDF6C
|
|
public void ClearAllAbilities()
|
|
{
|
|
int count = this.abilities.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
Debug.Log("clearing " + this.abilities[i]);
|
|
}
|
|
this.abilityNames.Clear();
|
|
this.abilityLevels.Clear();
|
|
this.uniqueNames.Clear();
|
|
this.abilityCost.Clear();
|
|
this.abilityRows.Clear();
|
|
this.abilityTriggers.Clear();
|
|
this.abilityTriggerCount.Clear();
|
|
this.abilityReady.Clear();
|
|
this.abilityEquipped.Clear();
|
|
this.abilities = new List<string>();
|
|
this.abilityLevelsTemp = new List<Vector4>();
|
|
this.spellNamesTemp = new List<string>();
|
|
}
|
|
|
|
// Token: 0x06000A77 RID: 2679 RVA: 0x000CFE30 File Offset: 0x000CE030
|
|
public void SetupAbilities(bool fromDB)
|
|
{
|
|
this.abilityNames.Clear();
|
|
this.abilityLevels.Clear();
|
|
this.uniqueNames.Clear();
|
|
this.abilityCost.Clear();
|
|
bool flag = false;
|
|
if (!fromDB && this.abilityCostTemp == null)
|
|
{
|
|
flag = true;
|
|
}
|
|
for (int i = 0; i < this.abilities.Count; i++)
|
|
{
|
|
this.abilityNames.Add(this.abilities[i]);
|
|
this.abilityLevels.Add(this.abilityLevelsTemp[i]);
|
|
this.uniqueNames.Add(this.spellNamesTemp[i]);
|
|
if (fromDB || flag)
|
|
{
|
|
this.abilityCost.Add(new Vector2((float)((int)this.abilityLevelsTemp[i].w), 0f));
|
|
}
|
|
else
|
|
{
|
|
this.abilityCost.Add(this.abilityCostTemp[i]);
|
|
}
|
|
}
|
|
this.abilityRows.Clear();
|
|
this.abilityTriggers.Clear();
|
|
this.abilityTriggerCount.Clear();
|
|
this.abilityReady.Clear();
|
|
this.abilityEquipped.Clear();
|
|
bool flag2 = false;
|
|
if (Records.x.editor && Records.x.useTestCharacters && !this.character.npc && this.equippedSongList.Count == 0)
|
|
{
|
|
flag2 = true;
|
|
}
|
|
int count = this.abilities.Count;
|
|
for (int j = 0; j < count; j++)
|
|
{
|
|
Library.Abilities abilityRow = Links.x.library.GetAbilityRow(this.abilityNames[j]);
|
|
string trigger = abilityRow._Trigger;
|
|
this.abilityRows.Add(abilityRow);
|
|
if (abilityRow._IsSpell)
|
|
{
|
|
this.abilityTriggers.Add("Spell");
|
|
this.abilityTriggerCount.Add(1);
|
|
this.abilityReady.Add(true);
|
|
this.abilityEquipped.Add(0);
|
|
if (!this.character.npc)
|
|
{
|
|
this.canCastSpells = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.abilityTriggers.Add(trigger);
|
|
this.abilityTriggerCount.Add(0);
|
|
this.abilityReady.Add(true);
|
|
if (this.equippedSongList.Contains(this.uniqueNames[j]))
|
|
{
|
|
this.abilityEquipped.Add(1);
|
|
}
|
|
else
|
|
{
|
|
string text = this.uniqueNames[j];
|
|
bool flag3 = false;
|
|
if (this.songPoints > 0 && (this.character.npc || flag2) && (abilityRow._SongCost <= this.songPoints || this.character.npc))
|
|
{
|
|
this.equippedSongList.Add(text);
|
|
flag3 = true;
|
|
this.songPoints -= abilityRow._SongCost;
|
|
}
|
|
if (flag3)
|
|
{
|
|
this.abilityEquipped.Add(1);
|
|
}
|
|
else
|
|
{
|
|
this.abilityEquipped.Add(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!fromDB && !flag2)
|
|
{
|
|
string[] array = new string[0];
|
|
char c = ',';
|
|
array = this.equippedAbilities.Split(c, StringSplitOptions.None);
|
|
this.equippedSongList.Clear();
|
|
foreach (string text2 in array)
|
|
{
|
|
if (text2 != "")
|
|
{
|
|
this.equippedSongList.Add(text2);
|
|
}
|
|
}
|
|
for (int l = 0; l < this.abilityEquipped.Count; l++)
|
|
{
|
|
this.abilityEquipped[l] = 0;
|
|
}
|
|
for (int m = 0; m < this.equippedSongList.Count; m++)
|
|
{
|
|
int num = this.uniqueNames.IndexOf(this.equippedSongList[m]);
|
|
this.songPoints -= this.abilityRows[num]._SongCost;
|
|
this.abilityEquipped[num] = 1;
|
|
}
|
|
string[] array3 = new string[0];
|
|
array3 = this.equippedCounts.Split(c, StringSplitOptions.None);
|
|
int num2 = 0;
|
|
foreach (string text3 in array)
|
|
{
|
|
int num3 = this.uniqueNames.IndexOf(text3);
|
|
if (text3 != "" && text3 != null && num3 != -1)
|
|
{
|
|
if (array3[num2] != "0")
|
|
{
|
|
this.abilityTriggerCount[num3] = int.Parse(array3[num2]);
|
|
}
|
|
else
|
|
{
|
|
this.abilityTriggerCount[num3] = 0;
|
|
}
|
|
}
|
|
num2++;
|
|
}
|
|
this.UpdateAbilityTriggers();
|
|
}
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.skillBag.SetTrinketGrid(true);
|
|
this.character.portrait.skillBag.SetSongGrid();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A78 RID: 2680 RVA: 0x000D02E8 File Offset: 0x000CE4E8
|
|
public bool HasTokenInSkill(string n, bool majorOnly, bool minorOnly)
|
|
{
|
|
if (this.majorSkill1 == null)
|
|
{
|
|
return false;
|
|
}
|
|
if (majorOnly)
|
|
{
|
|
return this.majorSkill1.Contains(n) || this.majorSkill2.Contains(n);
|
|
}
|
|
if (minorOnly)
|
|
{
|
|
return this.minorSkill3.Contains(n);
|
|
}
|
|
return this.majorSkill1.Contains(n) || this.majorSkill2.Contains(n) || this.minorSkill3.Contains(n);
|
|
}
|
|
|
|
// Token: 0x06000A79 RID: 2681 RVA: 0x000D036A File Offset: 0x000CE56A
|
|
public bool HasPaganToken()
|
|
{
|
|
return this.GetSkill(17) >= 50f || this.GetSkill(18) >= 50f || this.GetSkill(19) >= 50f;
|
|
}
|
|
|
|
// Token: 0x06000A7A RID: 2682 RVA: 0x000D03A0 File Offset: 0x000CE5A0
|
|
public void SetStartingFormation(out int choice1, out int choice2)
|
|
{
|
|
choice1 = 0;
|
|
choice2 = 0;
|
|
bool flag = false;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
if (this.HasTokenInSkill("ShortSword", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("LongSword", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Scepter", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Ax", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Pole", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Bow", true, false))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (this.HasTokenInSkill("Multi-Hand", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Sling", true, false))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (this.HasTokenInSkill("Elixir", true, false))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (this.HasTokenInSkill("Hand-to-Hand", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("LargeShield", false, false))
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (this.HasTokenInSkill("SmallShield", false, false))
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Whip", true, false))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Stonewood", false, false))
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Crimscale", false, false))
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Pearl", false, false))
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (this.HasTokenInSkill("ShortSword", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.HasTokenInSkill("LongSword", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Scepter", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Ax", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Pole", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Bow", false, true))
|
|
{
|
|
flag4 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Multi-Hand", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Sling", false, true))
|
|
{
|
|
flag4 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Elixir", false, true))
|
|
{
|
|
flag4 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Hand-to-Hand", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.HasTokenInSkill("Whip", false, true))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (!flag2 && !flag3 && !flag && !flag4)
|
|
{
|
|
choice1 = 8;
|
|
choice2 = 5;
|
|
return;
|
|
}
|
|
if (flag2 && !flag)
|
|
{
|
|
if (flag4)
|
|
{
|
|
int num;
|
|
int num2;
|
|
if (flag5 || this.Stat("Strength", false, out num) > 30f || this.Stat("Dexterity", false, out num2) > 30f)
|
|
{
|
|
choice1 = 2;
|
|
choice2 = 5;
|
|
if (this.partyID == 2)
|
|
{
|
|
choice1 = 3;
|
|
choice2 = 6;
|
|
}
|
|
if (this.partyID == 3)
|
|
{
|
|
choice1 = 1;
|
|
choice2 = 4;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
choice1 = 5;
|
|
choice2 = 2;
|
|
}
|
|
}
|
|
else if (flag5)
|
|
{
|
|
choice1 = 2;
|
|
choice2 = 5;
|
|
if (this.partyID == 2)
|
|
{
|
|
choice1 = 3;
|
|
choice2 = 6;
|
|
}
|
|
if (this.partyID == 3)
|
|
{
|
|
choice1 = 1;
|
|
choice2 = 4;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
choice1 = 5;
|
|
choice2 = 2;
|
|
if (this.partyID == 2)
|
|
{
|
|
choice1 = 3;
|
|
choice2 = 6;
|
|
}
|
|
if (this.partyID == 3)
|
|
{
|
|
choice1 = 1;
|
|
choice2 = 4;
|
|
}
|
|
}
|
|
}
|
|
if (!flag2 && flag)
|
|
{
|
|
if (flag3)
|
|
{
|
|
choice1 = 5;
|
|
choice2 = 8;
|
|
if (this.partyID == 2)
|
|
{
|
|
choice1 = 6;
|
|
choice2 = 9;
|
|
}
|
|
if (this.partyID == 3)
|
|
{
|
|
choice1 = 4;
|
|
choice2 = 7;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
choice1 = 8;
|
|
choice2 = 7;
|
|
if (this.partyID == 2)
|
|
{
|
|
choice1 = 9;
|
|
choice2 = 9;
|
|
}
|
|
if (this.partyID == 3)
|
|
{
|
|
choice1 = 7;
|
|
choice2 = 7;
|
|
}
|
|
}
|
|
}
|
|
if (flag2 && flag)
|
|
{
|
|
bool flag6 = false;
|
|
int num3;
|
|
int num4;
|
|
if (this.Stat("Strength", false, out num3) > 30f || this.Stat("Dexterity", false, out num4) > 30f)
|
|
{
|
|
flag6 = true;
|
|
}
|
|
if (flag5 || this.Stat("Strength", false, out num3) > 30f || this.Stat("Dexterity", false, out num4) > 30f)
|
|
{
|
|
choice1 = 2;
|
|
choice2 = 5;
|
|
}
|
|
else
|
|
{
|
|
choice1 = 5;
|
|
if (flag6)
|
|
{
|
|
choice2 = 2;
|
|
}
|
|
else
|
|
{
|
|
choice2 = 8;
|
|
}
|
|
}
|
|
}
|
|
if (choice1 == 0)
|
|
{
|
|
choice1 = 8;
|
|
choice2 = 5;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A7B RID: 2683 RVA: 0x000D0738 File Offset: 0x000CE938
|
|
public void SetStartingWeapons()
|
|
{
|
|
string text = "";
|
|
string text2 = "";
|
|
string text3 = "";
|
|
string text4 = "";
|
|
string text5 = "";
|
|
string text6 = "";
|
|
string text7 = "";
|
|
string text8 = "";
|
|
string text9 = "";
|
|
string text10 = "";
|
|
string text11 = "";
|
|
string text12 = "";
|
|
int num = 1;
|
|
int num2 = 1;
|
|
int num3 = 1;
|
|
int num4 = 1;
|
|
int num5 = 1;
|
|
int num6 = 1;
|
|
int num7 = 1;
|
|
int num8 = 1;
|
|
string text13 = "";
|
|
string text14 = "";
|
|
string text15 = "";
|
|
string text16 = "";
|
|
string text17 = "";
|
|
int num9 = 1;
|
|
int num10 = 1;
|
|
int num11 = 1;
|
|
int num12 = 1;
|
|
int num13 = 1;
|
|
string text18 = "";
|
|
string text19 = "";
|
|
bool flag = false;
|
|
bool flag2 = true;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
for (int i = 0; i < 4; i++)
|
|
{
|
|
string text20 = "Flute";
|
|
string text21 = "FluteUsed";
|
|
if (i == 1)
|
|
{
|
|
text20 = "Horn";
|
|
text21 = "HornUsed";
|
|
}
|
|
if (i == 2)
|
|
{
|
|
text20 = "Drum";
|
|
text21 = "DrumUsed";
|
|
}
|
|
if (i == 3)
|
|
{
|
|
text20 = "Pipe";
|
|
text21 = "PipeUsed";
|
|
}
|
|
if (this.HasTokenInSkill(text20, false, false))
|
|
{
|
|
if (text3 == "")
|
|
{
|
|
text3 = text21;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text21;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text21;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text21;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text21;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text21;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text21;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text21;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text21;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text21;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text21;
|
|
}
|
|
if (!flag3)
|
|
{
|
|
global::Item item;
|
|
ItemEquipped itemEquipped;
|
|
Links.x.inventory.AddFromGround(null, null, 0, false, 0f, Links.x.library.GetInvRowID("Songbook"), 1, new Vector3((float)this.partyID, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector4(0f, 0f, 0f, 0f), this.character, false, false, out item, out itemEquipped);
|
|
flag3 = true;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
Debug.Log(string.Concat(new string[] { text3, " ", text7, " ", text8, " ", text9, " ", text10 }));
|
|
}
|
|
}
|
|
if ((this.HasTokenInSkill("Fauna", false, false) || this.HasTokenInSkill("Vines", false, false) || this.HasTokenInSkill("Spores", false, false)) && !flag4)
|
|
{
|
|
global::Item item2;
|
|
ItemEquipped itemEquipped2;
|
|
Links.x.inventory.AddFromGround(null, null, 0, false, 0f, Links.x.library.GetInvRowID("Spellbook"), 1, new Vector3((float)this.partyID, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector4(0f, 0f, 0f, 0f), this.character, false, false, out item2, out itemEquipped2);
|
|
this.AddSpirit(30);
|
|
string text22 = "GemAmeythystGood";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text22;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text22;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text22;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text22;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text22;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text22;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text22;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text22;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text22;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text22;
|
|
}
|
|
text22 = "GemCitrinePoor";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text22;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text22;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text22;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text22;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text22;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text22;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text22;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text22;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text22;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text22;
|
|
}
|
|
text22 = "GemMortarPestle";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text22;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text22;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text22;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text22;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text22;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text22;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text22;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text22;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text22;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text22;
|
|
}
|
|
text22 = "FoodSpiritOk";
|
|
if (text3 == "")
|
|
{
|
|
text3 = text22;
|
|
}
|
|
else if (text18 == "")
|
|
{
|
|
text18 = text22;
|
|
}
|
|
else if (text19 == "")
|
|
{
|
|
text19 = text22;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text22;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text22;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text22;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text22;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text22;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text22;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text22;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text22;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text22;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text22;
|
|
}
|
|
}
|
|
if (this.HasTokenInSkill("Fish", false, false) || this.HasTokenInSkill("Forest", false, false) || this.HasTokenInSkill("Shroom", false, false))
|
|
{
|
|
string text23 = "Rosary";
|
|
if (text3 == "")
|
|
{
|
|
text3 = text23;
|
|
num = 10;
|
|
}
|
|
else if (text18 == "")
|
|
{
|
|
text18 = text23;
|
|
num2 = 10;
|
|
}
|
|
else if (text19 == "")
|
|
{
|
|
text19 = text23;
|
|
num3 = 10;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text23;
|
|
num4 = 10;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text23;
|
|
num5 = 10;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text23;
|
|
num6 = 10;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text23;
|
|
num7 = 10;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text23;
|
|
num8 = 10;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text23;
|
|
num9 = 10;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text23;
|
|
num10 = 10;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text23;
|
|
num11 = 10;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text23;
|
|
num12 = 10;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text23;
|
|
num13 = 10;
|
|
}
|
|
}
|
|
for (int j = 0; j < 9; j++)
|
|
{
|
|
bool flag5 = true;
|
|
string text24 = "ShortSword";
|
|
string text25 = "SwordBasic";
|
|
if (j == 1)
|
|
{
|
|
text24 = "LongSword";
|
|
text25 = "GreatSwordBasic";
|
|
flag5 = false;
|
|
}
|
|
if (j == 2)
|
|
{
|
|
text24 = "Scepter";
|
|
if (this.race == "Yeti")
|
|
{
|
|
text25 = "ScepterBasic";
|
|
flag5 = false;
|
|
}
|
|
else
|
|
{
|
|
text25 = "SceptorLightBasic";
|
|
}
|
|
}
|
|
if (j == 3)
|
|
{
|
|
text24 = "Ax";
|
|
text25 = "AxBasic";
|
|
}
|
|
if (j == 4)
|
|
{
|
|
text24 = "Pole";
|
|
text25 = "SpearBasic";
|
|
flag5 = false;
|
|
}
|
|
if (j == 5)
|
|
{
|
|
text24 = "Bow";
|
|
text25 = "BowBasic";
|
|
flag5 = false;
|
|
}
|
|
if (j == 6)
|
|
{
|
|
text24 = "Sling";
|
|
text25 = "BlowgunBasic";
|
|
flag5 = false;
|
|
}
|
|
if (j == 7)
|
|
{
|
|
text24 = "Elixir";
|
|
text25 = "ElixirsBasic";
|
|
flag5 = false;
|
|
}
|
|
if (j == 8)
|
|
{
|
|
text24 = "Whip";
|
|
text25 = "WhipBasic";
|
|
}
|
|
if (this.HasTokenInSkill(text24, false, false))
|
|
{
|
|
if (text == "")
|
|
{
|
|
text = text25;
|
|
flag2 = flag5;
|
|
}
|
|
else if (text12 == "")
|
|
{
|
|
text12 = text25;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
}
|
|
if (text24 == "Bow")
|
|
{
|
|
text25 = "Arrow";
|
|
if (text4 == "")
|
|
{
|
|
text4 = text25;
|
|
}
|
|
else if (text5 == "")
|
|
{
|
|
text5 = text25;
|
|
}
|
|
else if (text6 == "")
|
|
{
|
|
text6 = text25;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
}
|
|
text25 = "Stick";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
num4 = 25;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
num5 = 25;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
num6 = 25;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
num7 = 25;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
num8 = 25;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
num9 = 25;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
num10 = 25;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
num11 = 25;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
num12 = 25;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
num13 = 25;
|
|
}
|
|
}
|
|
if (text24 == "Sling")
|
|
{
|
|
text25 = "Dart";
|
|
if (text4 == "")
|
|
{
|
|
text4 = text25;
|
|
}
|
|
else if (text5 == "")
|
|
{
|
|
text5 = text25;
|
|
}
|
|
else if (text6 == "")
|
|
{
|
|
text6 = text25;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
}
|
|
text25 = "HollowStick";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
num4 = 25;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
num5 = 25;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
num6 = 25;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
num7 = 25;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
num8 = 25;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
num9 = 25;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
num10 = 25;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
num11 = 25;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
num12 = 25;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
num13 = 25;
|
|
}
|
|
}
|
|
if (text24 == "Elixir")
|
|
{
|
|
text25 = "Vial";
|
|
if (text4 == "")
|
|
{
|
|
text4 = text25;
|
|
}
|
|
else if (text5 == "")
|
|
{
|
|
text5 = text25;
|
|
}
|
|
else if (text6 == "")
|
|
{
|
|
text6 = text25;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
}
|
|
text25 = "Globe";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
num4 = 25;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
num5 = 25;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
num6 = 25;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
num7 = 25;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
num8 = 25;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
num9 = 25;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
num10 = 25;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
num11 = 25;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
num12 = 25;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
num13 = 25;
|
|
}
|
|
}
|
|
text25 = "Hammers";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text25;
|
|
num4 = 5;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text25;
|
|
num5 = 5;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text25;
|
|
num6 = 5;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text25;
|
|
num7 = 5;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text25;
|
|
num8 = 5;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text25;
|
|
num9 = 5;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text25;
|
|
num10 = 5;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text25;
|
|
num11 = 5;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text25;
|
|
num12 = 5;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text25;
|
|
num13 = 5;
|
|
}
|
|
}
|
|
}
|
|
for (int k = 0; k < 2; k++)
|
|
{
|
|
string text26 = "FoodHealthGood";
|
|
if (k == 1)
|
|
{
|
|
text26 = "FoodHealthOk";
|
|
}
|
|
if (text3 == "")
|
|
{
|
|
text3 = text26;
|
|
}
|
|
else if (text18 == "")
|
|
{
|
|
text18 = text26;
|
|
}
|
|
else if (text19 == "")
|
|
{
|
|
text19 = text26;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text26;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text26;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text26;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text26;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text26;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text26;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text26;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text26;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text26;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text26;
|
|
}
|
|
}
|
|
if (this.HasTokenInSkill("Bow", false, false) || this.HasTokenInSkill("Elixir", false, false) || this.HasTokenInSkill("Sling", false, false))
|
|
{
|
|
string text27 = "ArrowKit";
|
|
if (text7 == "")
|
|
{
|
|
text7 = text27;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text27;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text27;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text27;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text27;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text27;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text27;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text27;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text27;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text27;
|
|
}
|
|
}
|
|
for (int l = 0; l < 2; l++)
|
|
{
|
|
string text28 = "SmallShield";
|
|
string text29 = "ShieldBasic";
|
|
if (l == 1)
|
|
{
|
|
text28 = "LargeShield";
|
|
text29 = "ShieldLargeBasic";
|
|
}
|
|
if (this.HasTokenInSkill(text28, false, false))
|
|
{
|
|
if (text2 == "" && flag2)
|
|
{
|
|
text2 = text29;
|
|
}
|
|
else if (text7 == "")
|
|
{
|
|
text7 = text29;
|
|
}
|
|
else if (text8 == "")
|
|
{
|
|
text8 = text29;
|
|
}
|
|
else if (text9 == "")
|
|
{
|
|
text9 = text29;
|
|
}
|
|
else if (text10 == "")
|
|
{
|
|
text10 = text29;
|
|
}
|
|
else if (text11 == "")
|
|
{
|
|
text11 = text29;
|
|
}
|
|
else if (text13 == "")
|
|
{
|
|
text13 = text29;
|
|
}
|
|
else if (text14 == "")
|
|
{
|
|
text14 = text29;
|
|
}
|
|
else if (text15 == "")
|
|
{
|
|
text15 = text29;
|
|
}
|
|
else if (text16 == "")
|
|
{
|
|
text16 = text29;
|
|
}
|
|
else if (text17 == "")
|
|
{
|
|
text17 = text29;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
Debug.Log(string.Concat(new string[] { text2, " ", text7, " ", text8, " ", text9, " ", text10 }));
|
|
}
|
|
}
|
|
for (int m = 0; m < 21; m++)
|
|
{
|
|
string text30 = text;
|
|
int num14 = 0;
|
|
int num15 = 1;
|
|
if (m == 1)
|
|
{
|
|
text30 = text2;
|
|
num14 = 2;
|
|
}
|
|
if (m == 2)
|
|
{
|
|
text30 = text12;
|
|
num14 = 32;
|
|
}
|
|
if (m == 4)
|
|
{
|
|
text30 = text3;
|
|
num14 = 14;
|
|
num15 = num;
|
|
}
|
|
if (m == 5)
|
|
{
|
|
text30 = "";
|
|
num14 = 18;
|
|
}
|
|
if (m == 6)
|
|
{
|
|
text30 = text4;
|
|
num14 = 8;
|
|
}
|
|
if (m == 7)
|
|
{
|
|
text30 = text5;
|
|
num14 = 10;
|
|
}
|
|
if (m == 8)
|
|
{
|
|
text30 = text6;
|
|
num14 = 12;
|
|
}
|
|
if (m == 9)
|
|
{
|
|
text30 = text7;
|
|
num14 = 38;
|
|
num15 = num4;
|
|
}
|
|
if (m == 10)
|
|
{
|
|
text30 = text8;
|
|
num14 = 40;
|
|
num15 = num5;
|
|
}
|
|
if (m == 11)
|
|
{
|
|
text30 = text9;
|
|
num14 = 42;
|
|
num15 = num6;
|
|
}
|
|
if (m == 12)
|
|
{
|
|
text30 = text10;
|
|
num14 = 44;
|
|
num15 = num7;
|
|
}
|
|
if (m == 13)
|
|
{
|
|
text30 = text11;
|
|
num14 = 46;
|
|
num15 = num8;
|
|
}
|
|
if (m == 14)
|
|
{
|
|
text30 = text18;
|
|
num14 = 26;
|
|
num15 = num2;
|
|
}
|
|
if (m == 15)
|
|
{
|
|
text30 = text19;
|
|
num14 = 28;
|
|
num15 = num3;
|
|
}
|
|
if (m == 16)
|
|
{
|
|
text30 = text13;
|
|
num14 = 48;
|
|
num15 = num9;
|
|
}
|
|
if (m == 17)
|
|
{
|
|
text30 = text14;
|
|
num14 = 50;
|
|
num15 = num10;
|
|
}
|
|
if (m == 18)
|
|
{
|
|
text30 = text15;
|
|
num14 = 52;
|
|
num15 = num11;
|
|
}
|
|
if (m == 19)
|
|
{
|
|
text30 = text16;
|
|
num14 = 54;
|
|
num15 = num12;
|
|
}
|
|
if (m == 20)
|
|
{
|
|
text30 = text17;
|
|
num14 = 56;
|
|
num15 = num13;
|
|
}
|
|
if (text30 != "" && text30 != "Fist")
|
|
{
|
|
Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName(text30);
|
|
float num16 = 0f;
|
|
if (invRowFromName != null)
|
|
{
|
|
if (m >= 6 && m <= 8)
|
|
{
|
|
num15 = 50;
|
|
}
|
|
if (m >= 9 && m != 7 && m != 14 && m != 15)
|
|
{
|
|
global::Item item3;
|
|
ItemEquipped itemEquipped3;
|
|
Links.x.inventory.AddFromGround(null, null, 0, false, 0f, invRowFromName._ID, num15, Vector3.zero, Vector3.zero, new Vector4((float)invRowFromName._DurabilityMax, 0f, 0f, num16), this.character, false, false, out item3, out itemEquipped3);
|
|
}
|
|
else
|
|
{
|
|
this.character.UpdateInvLists("Add", num14 / 2, invRowFromName._ID, num15, new Vector4((float)invRowFromName._DurabilityMax, 0f, 0f, num16), Vector3.zero, Vector3.zero, null);
|
|
if (this.character.inventoryBag)
|
|
{
|
|
this.character.inventoryBag.UpdateBagItem(num14 / 2, invRowFromName._ID, num15, new Vector4((float)invRowFromName._DurabilityMax, 0f, 0f, num16), Vector3.zero, Vector3.zero, this.character);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.character.AddEquippedItems();
|
|
}
|
|
|
|
// Token: 0x06000A7C RID: 2684 RVA: 0x000D1FDF File Offset: 0x000D01DF
|
|
public void AddPaganKnowledge(string spellName)
|
|
{
|
|
if (!this.knowledge.Contains(spellName))
|
|
{
|
|
this.knowledge.Add(spellName);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A7D RID: 2685 RVA: 0x000D1FFB File Offset: 0x000D01FB
|
|
public bool HasPaganKnowledge(string spellName)
|
|
{
|
|
return this.knowledge.Contains(spellName);
|
|
}
|
|
|
|
// Token: 0x06000A7E RID: 2686 RVA: 0x000D200C File Offset: 0x000D020C
|
|
public void AddSong(string songName, string uniqueName, Vector3 l)
|
|
{
|
|
if (!this.abilities.Contains(songName))
|
|
{
|
|
this.abilities.Insert(0, songName);
|
|
Vector4 vector = new Vector4(0f, 0f, 0f, 0f);
|
|
vector.x = l.x;
|
|
vector.y = l.y;
|
|
vector.z = l.z;
|
|
vector.w = 0f;
|
|
this.abilityLevels.Insert(0, vector);
|
|
Library.Abilities abilityRow = Links.x.library.GetAbilityRow(songName);
|
|
string trigger = abilityRow._Trigger;
|
|
this.abilityNames.Insert(0, songName);
|
|
this.abilityReady.Insert(0, true);
|
|
this.abilityTriggers.Insert(0, trigger);
|
|
this.abilityTriggerCount.Insert(0, 0);
|
|
this.abilityCost.Insert(0, new Vector2(1f, 0f));
|
|
this.abilityRows.Insert(0, abilityRow);
|
|
this.abilityEquipped.Insert(0, 0);
|
|
this.uniqueNames.Insert(0, uniqueName);
|
|
this.character.portrait.skillBag.SetTrinketGrid(true);
|
|
this.character.portrait.skillBag.SetSongGrid();
|
|
this.UpdateAbilityTriggers();
|
|
if (this.songPoints > 0 && abilityRow._SongCost <= this.songPoints)
|
|
{
|
|
this.equippedSongList.Add(uniqueName);
|
|
this.songPoints -= abilityRow._SongCost;
|
|
this.abilityEquipped[0] = 1;
|
|
Debug.Log(((this != null) ? this.ToString() : null) + " " + this.songPoints.ToString());
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A7F RID: 2687 RVA: 0x000D21BC File Offset: 0x000D03BC
|
|
public void AddWord(string wordName, string uniqueName, Vector3 l)
|
|
{
|
|
if (!this.abilities.Contains(wordName))
|
|
{
|
|
this.abilities.Insert(0, wordName);
|
|
Vector4 vector = new Vector4(0f, 0f, 0f, 0f);
|
|
vector.x = l.x;
|
|
vector.y = l.y;
|
|
vector.z = l.z;
|
|
vector.w = 0f;
|
|
this.abilityLevels.Insert(0, vector);
|
|
Library.Abilities abilityRow = Links.x.library.GetAbilityRow(wordName);
|
|
string trigger = abilityRow._Trigger;
|
|
this.abilityNames.Insert(0, wordName);
|
|
this.abilityReady.Insert(0, true);
|
|
this.abilityTriggers.Insert(0, trigger);
|
|
this.abilityTriggerCount.Insert(0, 0);
|
|
this.abilityCost.Insert(0, new Vector2(1f, 0f));
|
|
this.abilityRows.Insert(0, abilityRow);
|
|
this.abilityEquipped.Insert(0, 0);
|
|
this.uniqueNames.Insert(0, wordName);
|
|
this.UpdateAbilityTriggers();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A80 RID: 2688 RVA: 0x000D22D8 File Offset: 0x000D04D8
|
|
public int SpellCount()
|
|
{
|
|
int num = 0;
|
|
for (int i = 0; i < this.uniqueNames.Count; i++)
|
|
{
|
|
if (this.abilityRows[i]._IsSpell)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000A81 RID: 2689 RVA: 0x000D2315 File Offset: 0x000D0515
|
|
public int SpellIndex(string s)
|
|
{
|
|
return this.abilityNames.IndexOf(s);
|
|
}
|
|
|
|
// Token: 0x06000A82 RID: 2690 RVA: 0x000D2324 File Offset: 0x000D0524
|
|
public void SaveSpell(string knowledgeName, string spellName, int slider1, int slider2, int slider3, int tether, Vector2 cost)
|
|
{
|
|
if (this.uniqueNames.IndexOf(spellName) == -1)
|
|
{
|
|
List<string> list = new List<string>();
|
|
list.Add(spellName);
|
|
for (int i = 0; i < this.uniqueNames.Count; i++)
|
|
{
|
|
if (!this.abilityRows[i]._IsSpell)
|
|
{
|
|
list.Add("");
|
|
}
|
|
else
|
|
{
|
|
list.Add(this.uniqueNames[i]);
|
|
}
|
|
}
|
|
list.Sort();
|
|
int num = list.IndexOf(spellName);
|
|
this.abilities.Insert(num, spellName);
|
|
Vector4 vector = new Vector4(0f, 0f, 0f, 0f);
|
|
vector.x = (float)slider1;
|
|
vector.y = (float)slider2;
|
|
vector.z = (float)slider3;
|
|
vector.w = (float)tether;
|
|
this.abilityLevels.Insert(num, vector);
|
|
this.abilityNames.Insert(num, knowledgeName);
|
|
Library.Abilities abilityRow = Links.x.library.GetAbilityRow(knowledgeName);
|
|
string trigger = abilityRow._Trigger;
|
|
this.uniqueNames.Insert(num, spellName);
|
|
this.abilityReady.Insert(num, true);
|
|
this.abilityTriggers.Insert(num, trigger);
|
|
this.abilityTriggerCount.Insert(num, 0);
|
|
this.abilityCost.Insert(num, cost);
|
|
this.abilityRows.Insert(num, abilityRow);
|
|
this.abilityEquipped.Insert(num, 0);
|
|
this.canCastSpells = true;
|
|
this.character.portrait.skillBag.SetTrinketGrid(true);
|
|
this.character.portrait.skillBag.SetSpellbookGrid();
|
|
this.UpdateAbilityTriggers();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A83 RID: 2691 RVA: 0x000D24C8 File Offset: 0x000D06C8
|
|
public void RemoveSpell(string spellName)
|
|
{
|
|
int num = this.uniqueNames.IndexOf(spellName);
|
|
if (num > -1)
|
|
{
|
|
this.abilities.RemoveAt(num);
|
|
this.abilityLevels.RemoveAt(num);
|
|
this.abilityNames.RemoveAt(num);
|
|
this.uniqueNames.RemoveAt(num);
|
|
this.abilityReady.RemoveAt(num);
|
|
this.abilityTriggers.RemoveAt(num);
|
|
this.abilityTriggerCount.RemoveAt(num);
|
|
this.abilityCost.RemoveAt(num);
|
|
this.abilityRows.RemoveAt(num);
|
|
this.abilityEquipped.RemoveAt(num);
|
|
this.character.portrait.skillBag.SetSpellbookGrid();
|
|
}
|
|
this.CheckFavoriteSpells();
|
|
}
|
|
|
|
// Token: 0x06000A84 RID: 2692 RVA: 0x000D257C File Offset: 0x000D077C
|
|
public int CheckJobNumber(string job)
|
|
{
|
|
int num = 0;
|
|
int count = this.abilityRows.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.abilityRows[i]._MainSkill == job)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000A85 RID: 2693 RVA: 0x000D25C4 File Offset: 0x000D07C4
|
|
public bool GetWordsOfPower()
|
|
{
|
|
int count = this.effects.Count;
|
|
if (this.wordCount > 0)
|
|
{
|
|
this.words.Clear();
|
|
}
|
|
if (count > 0)
|
|
{
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.effects[i].effect._Name.Contains("Word"))
|
|
{
|
|
this.words.Add(this.effects[i].effect._Name);
|
|
}
|
|
}
|
|
}
|
|
if (this.words.Count > 0)
|
|
{
|
|
this.wordCount = this.words.Count;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000A86 RID: 2694 RVA: 0x000D2668 File Offset: 0x000D0868
|
|
public void DoWordOfPower(string originalWord, string abilityName)
|
|
{
|
|
Effects effects = this.character.gameObject.AddComponent<Effects>();
|
|
Links.x.cellar.AddEffects(effects);
|
|
effects.gameObject.SetActive(true);
|
|
effects.source = this.character;
|
|
effects.target = this.character;
|
|
effects.fromLoad = false;
|
|
effects.effectName = abilityName + "Word";
|
|
effects.sourceLevel = 0f;
|
|
effects.Inflicted(false);
|
|
this.str.Clear();
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.character));
|
|
this.str.Append(this.GetName());
|
|
this.str.Append("</color>");
|
|
this.str.Append(" shouted word of power: ");
|
|
this.str.Append(originalWord);
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
}
|
|
|
|
// Token: 0x06000A87 RID: 2695 RVA: 0x000D276D File Offset: 0x000D096D
|
|
public bool HasAbility(string abilityName)
|
|
{
|
|
return this.abilityNames.Contains(abilityName);
|
|
}
|
|
|
|
// Token: 0x06000A88 RID: 2696 RVA: 0x000D277B File Offset: 0x000D097B
|
|
public Vector4 GetAbilityLevel(int index)
|
|
{
|
|
return this.abilityLevels[index];
|
|
}
|
|
|
|
// Token: 0x06000A89 RID: 2697 RVA: 0x000D2789 File Offset: 0x000D0989
|
|
public string GetAbilitySpellName(int index)
|
|
{
|
|
return this.uniqueNames[index];
|
|
}
|
|
|
|
// Token: 0x06000A8A RID: 2698 RVA: 0x000D2798 File Offset: 0x000D0998
|
|
public void CheckForAbilityBooleans()
|
|
{
|
|
this.hasHealingSongs = false;
|
|
this.hasDefenseAbilities = false;
|
|
this.hasUndeadAbilities = false;
|
|
this.hasBuffAbilities = false;
|
|
this.hasUtilityAbilities = false;
|
|
if (this.GetSkill(23) >= 50f || this.GetSkill(24) >= 50f || this.GetSkill(25) >= 50f)
|
|
{
|
|
this.canCharm = true;
|
|
return;
|
|
}
|
|
this.canCharm = false;
|
|
}
|
|
|
|
// Token: 0x06000A8B RID: 2699 RVA: 0x000D2804 File Offset: 0x000D0A04
|
|
public void UsedAbility(string s)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000A8C RID: 2700 RVA: 0x000D2806 File Offset: 0x000D0A06
|
|
public bool IsFavoriteSpell(string n)
|
|
{
|
|
return this.favoriteSpells.IndexOf(n) > -1;
|
|
}
|
|
|
|
// Token: 0x06000A8D RID: 2701 RVA: 0x000D281A File Offset: 0x000D0A1A
|
|
public void AddFavoriteSpell(string n)
|
|
{
|
|
if (this.favoriteSpells.IndexOf(n) == -1)
|
|
{
|
|
this.favoriteSpells.Add(n);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A8E RID: 2702 RVA: 0x000D2837 File Offset: 0x000D0A37
|
|
public void RemoveFavoriteSpell(string n)
|
|
{
|
|
if (this.favoriteSpells.IndexOf(n) > -1)
|
|
{
|
|
this.favoriteSpells.Remove(n);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A8F RID: 2703 RVA: 0x000D2858 File Offset: 0x000D0A58
|
|
public void CheckFavoriteSpells()
|
|
{
|
|
bool flag = false;
|
|
for (int i = 0; i < this.favoriteSpells.Count; i++)
|
|
{
|
|
if (this.uniqueNames.IndexOf(this.favoriteSpells[i]) == -1)
|
|
{
|
|
this.favoriteSpells[i] = null;
|
|
flag = true;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.favoriteSpells.RemoveAll((string item) => item == null);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A90 RID: 2704 RVA: 0x000D28D4 File Offset: 0x000D0AD4
|
|
public void CheckForSongsAndWords(string trigger, out int multiTargets)
|
|
{
|
|
multiTargets = 0;
|
|
if (Records.x.miniGame)
|
|
{
|
|
return;
|
|
}
|
|
int count = this.abilityNames.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
int num = multiTargets;
|
|
if (this.abilityReady[i] && this.abilityEquipped[i] == 1 && this.abilityTriggers[i] == trigger)
|
|
{
|
|
int x = this.abilityRows[i]._X;
|
|
if (x > 1)
|
|
{
|
|
List<int> list = this.abilityTriggerCount;
|
|
int num2 = i;
|
|
int num3 = list[num2];
|
|
list[num2] = num3 + 1;
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.skillBag.SongProcs();
|
|
}
|
|
}
|
|
if ((this.abilityTriggerCount[i] >= x || x <= 1) && this.character.actions)
|
|
{
|
|
this.character.actions.SongWordTriggered(this.uniqueNames[i], trigger, this.abilityRows[i], out multiTargets);
|
|
if (num > multiTargets)
|
|
{
|
|
multiTargets = num;
|
|
}
|
|
this.abilityTriggerCount[i] = 0;
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.skillBag.SongProcs();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A91 RID: 2705 RVA: 0x000D2A32 File Offset: 0x000D0C32
|
|
public void EnchantJewelryEffects(int index, bool intercessionsOnly)
|
|
{
|
|
if (this)
|
|
{
|
|
base.StartCoroutine(this.CheckJewelry(index, intercessionsOnly));
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A92 RID: 2706 RVA: 0x000D2A4B File Offset: 0x000D0C4B
|
|
private IEnumerator CheckJewelry(int index, bool intercessionsOnly)
|
|
{
|
|
Vector3 spellInfo = this.character.GetSocketNum(index);
|
|
Vector3 spellInfo2 = this.character.GetSocketNum(index + 1);
|
|
int originalIndex = index;
|
|
index /= 2;
|
|
bool debugJewelry = false;
|
|
if (debugJewelry)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"CHECKING JEWELRY ",
|
|
(this != null) ? this.ToString() : null,
|
|
" ",
|
|
index.ToString(),
|
|
" ",
|
|
spellInfo.x.ToString(),
|
|
" ",
|
|
this.character.GetDurabilityNum(index).x.ToString(),
|
|
" ",
|
|
intercessionsOnly.ToString()
|
|
}));
|
|
}
|
|
yield return new WaitForSecondsRealtime(0.1f);
|
|
if (!intercessionsOnly)
|
|
{
|
|
bool flag = false;
|
|
int num = this.effects.Count;
|
|
Effects effects = null;
|
|
for (int i = 0; i < num; i++)
|
|
{
|
|
if (this.effects[i] && this.effects[i].jewelrySlot == index)
|
|
{
|
|
effects = this.effects[i];
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
if (flag && effects)
|
|
{
|
|
effects.Healed(false, true);
|
|
if (debugJewelry)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Found existing, healing ",
|
|
(this != null) ? this.ToString() : null,
|
|
" ",
|
|
spellInfo.x.ToString(),
|
|
" ",
|
|
index.ToString()
|
|
}));
|
|
}
|
|
}
|
|
flag = false;
|
|
num = this.effects.Count;
|
|
effects = null;
|
|
for (int j = 0; j < num; j++)
|
|
{
|
|
if (this.effects[j] && this.effects[j].jewelrySlot == index)
|
|
{
|
|
effects = this.effects[j];
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
if (flag && effects)
|
|
{
|
|
effects.Healed(false, true);
|
|
if (debugJewelry)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Found existing, healing ",
|
|
(this != null) ? this.ToString() : null,
|
|
" ",
|
|
spellInfo.x.ToString(),
|
|
" ",
|
|
index.ToString()
|
|
}));
|
|
}
|
|
}
|
|
}
|
|
if (spellInfo.x > 0f)
|
|
{
|
|
Library.Pagan paganRowByID = Links.x.library.GetPaganRowByID((float)((int)spellInfo.x));
|
|
if (paganRowByID != null)
|
|
{
|
|
bool flag2 = false;
|
|
int count = this.effects.Count;
|
|
Effects effects2 = null;
|
|
for (int k = 0; k < this.effects.Count; k++)
|
|
{
|
|
if (this.effects[k].jewelrySlot == index && this.effects[k].effect._Name == paganRowByID._ID)
|
|
{
|
|
effects2 = this.effects[k];
|
|
flag2 = true;
|
|
break;
|
|
}
|
|
}
|
|
if (flag2 && effects2)
|
|
{
|
|
effects2.Healed(false, true);
|
|
if (debugJewelry)
|
|
{
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
"Found existing, healing ",
|
|
(this != null) ? this.ToString() : null,
|
|
" ",
|
|
spellInfo.x.ToString(),
|
|
" ",
|
|
index.ToString()
|
|
}));
|
|
}
|
|
}
|
|
if (this.CanWearEnchantedItem(spellInfo2.z) && paganRowByID != null)
|
|
{
|
|
if (debugJewelry)
|
|
{
|
|
Debug.Log("Updating enchanted jewelry " + index.ToString() + " " + paganRowByID._ID);
|
|
}
|
|
float num2 = 0f;
|
|
for (int l = 0; l < 3; l++)
|
|
{
|
|
string text = paganRowByID._Slider1;
|
|
float num3 = spellInfo.y;
|
|
if (l == 1)
|
|
{
|
|
text = paganRowByID._Slider2;
|
|
num3 = spellInfo.z;
|
|
}
|
|
if (l == 2)
|
|
{
|
|
text = paganRowByID._Slider3;
|
|
num3 = spellInfo2.x;
|
|
}
|
|
if (text != "" && (text.Contains("Potency") || text.Contains("Reduction")))
|
|
{
|
|
num2 = num3;
|
|
}
|
|
}
|
|
Effects effects3 = base.gameObject.AddComponent<Effects>();
|
|
Links.x.cellar.AddEffects(effects3);
|
|
effects3.gameObject.SetActive(true);
|
|
effects3.source = this.character;
|
|
effects3.target = this.character;
|
|
effects3.fromLoad = false;
|
|
effects3.effectName = paganRowByID._ID;
|
|
effects3.jewelrySlot = index;
|
|
effects3.sourceLevel = num2;
|
|
effects3.Inflicted(false);
|
|
}
|
|
}
|
|
}
|
|
if (!intercessionsOnly)
|
|
{
|
|
this.JewelryEffects(originalIndex, debugJewelry);
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000A93 RID: 2707 RVA: 0x000D2A68 File Offset: 0x000D0C68
|
|
public void JewelryEffects(int index, bool debugJewelry)
|
|
{
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.character.GetInvNum(index));
|
|
if (invRowByIndex != null && invRowByIndex._Effect != "" && !invRowByIndex._Effect.Contains("Cure"))
|
|
{
|
|
bool flag = false;
|
|
Effects effects = null;
|
|
if (flag && effects)
|
|
{
|
|
effects.Healed(false, true);
|
|
}
|
|
if (debugJewelry)
|
|
{
|
|
Debug.Log("Updating jewelry " + index.ToString() + " " + invRowByIndex._Effect);
|
|
}
|
|
Effects effects2 = base.gameObject.AddComponent<Effects>();
|
|
Links.x.cellar.AddEffects(effects2);
|
|
effects2.gameObject.SetActive(true);
|
|
effects2.source = this.character;
|
|
effects2.target = this.character;
|
|
effects2.fromLoad = false;
|
|
effects2.effectName = invRowByIndex._Effect;
|
|
effects2.jewelrySlot = index / 2;
|
|
effects2.sourceLevel = invRowByIndex._Level;
|
|
effects2.Inflicted(false);
|
|
}
|
|
if (Links.x.characterSheet.open)
|
|
{
|
|
Links.x.characterSheet.GetStats();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A94 RID: 2708 RVA: 0x000D2B8C File Offset: 0x000D0D8C
|
|
public bool WeaponRequired(int i)
|
|
{
|
|
string weaponReq = this.abilityRows[i]._WeaponReq;
|
|
bool flag = false;
|
|
if (weaponReq == "Any")
|
|
{
|
|
flag = true;
|
|
}
|
|
else if (weaponReq == "Melee")
|
|
{
|
|
if (this.character.invRow1 != null && this.character.invRow1._MeleeRangeEnd < 5f)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
else if (weaponReq == "Range")
|
|
{
|
|
if (this.character.invRow1 != null && this.character.invRow1._MeleeRangeEnd >= 5f)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
else if (weaponReq == "Two")
|
|
{
|
|
int num = 0;
|
|
if (this.character.invRow1 != null && this.character.invRow1._ID > 1)
|
|
{
|
|
num++;
|
|
}
|
|
if (this.character.invRow2 != null && this.character.invRow2._ID > 1 && this.character.invRow2._EquipSlotID == 0)
|
|
{
|
|
num++;
|
|
}
|
|
if (num == 2)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
else if (weaponReq == "Shield")
|
|
{
|
|
if (this.character.invRow2 != null && this.character.invRow2._WeaponType == weaponReq)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
else if (weaponReq == "None")
|
|
{
|
|
int num2 = 0;
|
|
if (this.character.invRow1 != null && this.character.invRow1._ID > 1)
|
|
{
|
|
num2++;
|
|
}
|
|
if (this.character.invRow2 != null && this.character.invRow2._ID > 1 && this.character.invRow2._EquipSlotID == 0)
|
|
{
|
|
num2++;
|
|
}
|
|
if (this.character.invRow3 != null && this.character.invRow3._ID > 1)
|
|
{
|
|
num2++;
|
|
}
|
|
if (this.character.invRow4 != null && this.character.invRow4._ID > 1)
|
|
{
|
|
num2++;
|
|
}
|
|
if (num2 == 0)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
else if (this.character.invRow1 != null && this.character.invRow1._WeaponType == weaponReq)
|
|
{
|
|
flag = true;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06000A95 RID: 2709 RVA: 0x000D2DD8 File Offset: 0x000D0FD8
|
|
public bool HasPowerDraw()
|
|
{
|
|
int count = this.abilityNames.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.abilityRows[i]._AddsToAttack && this.abilityRows[i]._AINotes.Contains("Distance") && this.abilityRows[i]._WeaponReq == this.character.invRow1._WeaponType)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000A96 RID: 2710 RVA: 0x000D2E58 File Offset: 0x000D1058
|
|
public void CheckTerrainAbilities(string currentTerrain)
|
|
{
|
|
int count = this.effects.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.effects[i] && this.effects[i].terrainDependent)
|
|
{
|
|
Library.Effects effect = this.effects[i].effect;
|
|
bool flag = false;
|
|
if (currentTerrain == effect._TerrainReq)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (this.effects[i].effectIsActive != flag)
|
|
{
|
|
if (flag)
|
|
{
|
|
this.effects[i].Set(false);
|
|
}
|
|
else
|
|
{
|
|
this.effects[i].Set(true);
|
|
}
|
|
this.effects[i].effectIsActive = flag;
|
|
if (Records.x.editor)
|
|
{
|
|
Debug.Log("Switching terrain effect " + this.effects[i].effect._Name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A97 RID: 2711 RVA: 0x000D2F58 File Offset: 0x000D1158
|
|
public bool HasSpellbook()
|
|
{
|
|
if (this.magicPointsBase > 0)
|
|
{
|
|
if (!this.character.party)
|
|
{
|
|
return true;
|
|
}
|
|
if (this.character.HasBook(Links.x.library.spellbookIndex) > -1)
|
|
{
|
|
this.canCastSpells = true;
|
|
return true;
|
|
}
|
|
}
|
|
this.canCastSpells = false;
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000A98 RID: 2712 RVA: 0x000D2FAB File Offset: 0x000D11AB
|
|
public bool HasSongbook()
|
|
{
|
|
return !this.character.party || this.character.HasBook(Links.x.library.songbookIndex) > -1;
|
|
}
|
|
|
|
// Token: 0x06000A99 RID: 2713 RVA: 0x000D2FDC File Offset: 0x000D11DC
|
|
public void UpdateAbilityTriggers()
|
|
{
|
|
bool flag = this.HasSongbook();
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
if (flag)
|
|
{
|
|
if (this.character.HasInstrumentType("Flute"))
|
|
{
|
|
flag2 = true;
|
|
}
|
|
if (this.character.HasInstrumentType("Horn"))
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if (this.character.HasInstrumentType("Pipe"))
|
|
{
|
|
flag4 = true;
|
|
}
|
|
}
|
|
int count = this.abilityNames.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.abilityEquipped[i] == 1)
|
|
{
|
|
if (this.abilityRows[i]._IsSong)
|
|
{
|
|
if (flag)
|
|
{
|
|
if ((this.abilityRows[i]._WeaponReq == "Flute" && flag2) || (this.abilityRows[i]._WeaponReq == "Horn" && flag3) || (this.abilityRows[i]._WeaponReq == "Pipe" && flag4))
|
|
{
|
|
this.abilityReady[i] = true;
|
|
}
|
|
else
|
|
{
|
|
this.abilityReady[i] = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.abilityReady[i] = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.abilityReady[i] = this.WeaponRequired(i);
|
|
}
|
|
}
|
|
else if (this.abilityRows[i]._IsSpell)
|
|
{
|
|
this.hasSpells = true;
|
|
if (this.HasSpellbook())
|
|
{
|
|
if (this.HasPaganCostForSpell(this.uniqueNames[i]))
|
|
{
|
|
if (this.character.sailing)
|
|
{
|
|
if (this.abilityRows[i]._UseOnBoat)
|
|
{
|
|
this.abilityReady[i] = true;
|
|
}
|
|
else
|
|
{
|
|
this.abilityReady[i] = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.abilityReady[i] = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.abilityReady[i] = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.abilityReady[i] = false;
|
|
}
|
|
}
|
|
}
|
|
if (this.character.party && this.character.portrait)
|
|
{
|
|
this.character.portrait.skillBag.UpdateAbilityTriggers();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A9A RID: 2714 RVA: 0x000D321C File Offset: 0x000D141C
|
|
public void CombatStartSpells()
|
|
{
|
|
this.spellDifficulties.Clear();
|
|
int count = this.abilityRows.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (this.abilityRows[i]._IsSpell)
|
|
{
|
|
float num;
|
|
this.spellDifficulties.Add((int)this.SpellDifficulty(this.uniqueNames[i], out num));
|
|
}
|
|
else
|
|
{
|
|
this.spellDifficulties.Add(0);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000A9B RID: 2715 RVA: 0x000D3290 File Offset: 0x000D1490
|
|
public Library.Abilities GetAbilityRow(string n)
|
|
{
|
|
int count = this.abilityRows.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (n == this.uniqueNames[i])
|
|
{
|
|
return this.abilityRows[i];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x06000A9C RID: 2716 RVA: 0x000D32D7 File Offset: 0x000D14D7
|
|
public bool GetAbilityReadyState(int index)
|
|
{
|
|
return this.abilityReady[index];
|
|
}
|
|
|
|
// Token: 0x06000A9D RID: 2717 RVA: 0x000D32E5 File Offset: 0x000D14E5
|
|
public int GetAbilityTriggerCount(int index)
|
|
{
|
|
return this.abilityTriggerCount[index];
|
|
}
|
|
|
|
// Token: 0x06000A9E RID: 2718 RVA: 0x000D32F4 File Offset: 0x000D14F4
|
|
public string GetAbilityTrigger(int index, bool plural)
|
|
{
|
|
string text = this.abilityTriggers[index];
|
|
return this.TriggerName(text, plural);
|
|
}
|
|
|
|
// Token: 0x06000A9F RID: 2719 RVA: 0x000D3318 File Offset: 0x000D1518
|
|
public string TriggerName(string s, bool plural)
|
|
{
|
|
if (s == "CombatStart")
|
|
{
|
|
return "combat start";
|
|
}
|
|
if (s == "Attack" || s == "PreAttack")
|
|
{
|
|
if (plural)
|
|
{
|
|
return "successful attacks";
|
|
}
|
|
return "successful attack";
|
|
}
|
|
else if (s == "OnBlock")
|
|
{
|
|
if (plural)
|
|
{
|
|
return "successful blocks";
|
|
}
|
|
return "successful block";
|
|
}
|
|
else if (s == "OnHit")
|
|
{
|
|
if (plural)
|
|
{
|
|
return "hits taken";
|
|
}
|
|
return "hit taken";
|
|
}
|
|
else if (s == "OnKill")
|
|
{
|
|
if (plural)
|
|
{
|
|
return "enemy deaths";
|
|
}
|
|
return "enemy death";
|
|
}
|
|
else if (s == "OnPartyKill")
|
|
{
|
|
if (plural)
|
|
{
|
|
return "enemy deaths from party";
|
|
}
|
|
return "enemy death from party";
|
|
}
|
|
else if (s == "OnEvade")
|
|
{
|
|
if (plural)
|
|
{
|
|
return "dodges/evasions";
|
|
}
|
|
return "dodge/evasion";
|
|
}
|
|
else
|
|
{
|
|
if (!(s == "OnFriendDown"))
|
|
{
|
|
return s;
|
|
}
|
|
if (plural)
|
|
{
|
|
return "friends down";
|
|
}
|
|
return "friend down";
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000AA0 RID: 2720 RVA: 0x000D340A File Offset: 0x000D160A
|
|
public int GetAbilityTriggerGoal(int index)
|
|
{
|
|
return this.abilityRows[index]._X;
|
|
}
|
|
|
|
// Token: 0x06000AA1 RID: 2721 RVA: 0x000D341D File Offset: 0x000D161D
|
|
public bool GetAbilityStatus(int index)
|
|
{
|
|
return this.abilityReady[index];
|
|
}
|
|
|
|
// Token: 0x06000AA2 RID: 2722 RVA: 0x000D342C File Offset: 0x000D162C
|
|
public int GetAbilityIndex(string s)
|
|
{
|
|
int count = this.abilityNames.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (s == this.abilityNames[i])
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
// Token: 0x06000AA3 RID: 2723 RVA: 0x000D3468 File Offset: 0x000D1668
|
|
public int GetIndex(string s, int c)
|
|
{
|
|
for (int i = 0; i < c; i++)
|
|
{
|
|
if (s == this.abilities[i])
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
// Token: 0x06000AA4 RID: 2724 RVA: 0x000D3498 File Offset: 0x000D1698
|
|
public int GetAbilityNumber(string s)
|
|
{
|
|
int count = this.abilityNames.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (s == this.abilityNames[i])
|
|
{
|
|
return (int)this.abilityLevels[i].x;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x06000AA5 RID: 2725 RVA: 0x000D34E5 File Offset: 0x000D16E5
|
|
public bool HasSpellName(string s)
|
|
{
|
|
return this.abilityNames.Contains(s);
|
|
}
|
|
|
|
// Token: 0x06000AA6 RID: 2726 RVA: 0x000D34F8 File Offset: 0x000D16F8
|
|
public bool IsTargetAnEnemy(uint num)
|
|
{
|
|
return num != 0U && (this.enemy1 == num || this.enemy2 == num || this.enemy3 == num || this.enemy4 == num || this.enemy5 == num || this.enemy6 == num || this.enemy7 == num || this.enemy8 == num || this.enemy9 == num);
|
|
}
|
|
|
|
// Token: 0x06000AA7 RID: 2727 RVA: 0x000D3570 File Offset: 0x000D1770
|
|
public void RemovedCompanionSave()
|
|
{
|
|
this.saveFile = new ES3File(string.Concat(new string[]
|
|
{
|
|
Records.x.openBook,
|
|
"/Creatures_",
|
|
this.originalMap,
|
|
"_",
|
|
this.creaturesName,
|
|
".es3"
|
|
}));
|
|
new List<string>().Add("Normal");
|
|
new List<int>().Add(this.currLife);
|
|
new List<string>().Add(Links.x.diorama.sceneName);
|
|
new List<Vector3>().Add(this.character.tr.position);
|
|
this.saveFile.Sync();
|
|
}
|
|
|
|
// Token: 0x06000AA8 RID: 2728 RVA: 0x000D3628 File Offset: 0x000D1828
|
|
public void CharacterSave()
|
|
{
|
|
string text = Records.x.openBook + "/Party_" + this.partyID.ToString() + ".es3";
|
|
this.saveFile = new ES3File(text);
|
|
this.saveFile.Save<float>("Strength", this.strength);
|
|
this.saveFile.Save<float>("Aura", this.aura);
|
|
this.saveFile.Save<float>("Dexterity", this.dexterity);
|
|
this.saveFile.Save<float>("Pagan", this.pagan);
|
|
this.saveFile.Save<float>("Sensory", this.sensory);
|
|
this.saveFile.Save<float>("Agility", this.agility);
|
|
this.saveFile.Save<float>("MoveRadius", this.maxStaminaAdd);
|
|
this.saveFile.Save<int>("CurrLife", this.currLife);
|
|
this.saveFile.Save<int>("LifeBase", this.lifeBase);
|
|
this.saveFile.Save<int>("WeightBase", this.weightBase);
|
|
this.saveFile.Save<float>("SightRadiusBase", this.sightRadiusBase);
|
|
this.saveFile.Save<float>("HearingRadiusBase", this.hearingRadiusBase);
|
|
this.saveFile.Save<float>("Sex", this.sex);
|
|
this.saveFile.Save<string>("SkinTexture", this.skinTexture);
|
|
this.saveFile.Save<string>("HairTexture", this.hairTexture);
|
|
this.RemoveNullAilments();
|
|
this.effectsNamesFromSave.Clear();
|
|
this.effectsTimesFromSave.Clear();
|
|
this.effectsVar2FromSave.Clear();
|
|
for (int i = 0; i < this.effects.Count; i++)
|
|
{
|
|
if (this.effects[i])
|
|
{
|
|
this.effectsNamesFromSave.Add(this.effects[i].effectName);
|
|
this.effectsTimesFromSave.Add(this.effects[i].effectStartTime);
|
|
this.effectsVar2FromSave.Add(this.effects[i].sourceLevel);
|
|
}
|
|
}
|
|
this.saveFile.Save<List<int>>("EffectsTimes", this.effectsTimesFromSave);
|
|
this.saveFile.Save<List<string>>("EffectsName", this.effectsNamesFromSave);
|
|
this.saveFile.Save<List<float>>("EffectsVar2", this.effectsVar2FromSave);
|
|
this.saveFile.Save<int>("XP", this.XP);
|
|
this.saveFile.Save<string>("DisplayName", this.displayName);
|
|
this.saveFile.Save<string>("DialogueFile", this.dialogueFile);
|
|
this.saveFile.Save<string>("Model", this.model);
|
|
this.saveFile.Save<string>("HeadModel", this.headModel);
|
|
this.saveFile.Save<string>("Indoor Scene", this.character.indoorID);
|
|
this.saveFile.Save<string>("Indoor Scene Door", this.character.doorID);
|
|
this.saveFile.Save<int>("Graph", this.character.desiredGraph);
|
|
this.saveFile.Save<float>("TimeOfDeath", this.character.timeOfDeath);
|
|
this.saveFile.Save<bool>("Stunned", this.character.stunned);
|
|
this.saveFile.Save<string>("LevelUps", this.levelUps);
|
|
this.saveFile.Save<int>("KillCount", this.killCount);
|
|
this.saveFile.Save<int>("Level", this.level);
|
|
if (this.character)
|
|
{
|
|
this.saveFile.Save<Vector3>("Position", this.character.tr.position);
|
|
this.saveFile.Save<Quaternion>("Rotation", this.character.tr.rotation);
|
|
this.saveFile.Save<bool>("Selected", this.character.selected);
|
|
this.saveFile.Save<bool>("MainSelected", this.character.mainSelected);
|
|
this.bagToSave.Clear();
|
|
this.bagStacksToSave.Clear();
|
|
this.bag = this.character.bag;
|
|
for (int j = 0; j < this.bag.Count; j++)
|
|
{
|
|
if (j % 2 == 0)
|
|
{
|
|
if (this.bag[j] == 0)
|
|
{
|
|
this.bagToSave.Add("Empty");
|
|
}
|
|
if (this.bag[j] == 1)
|
|
{
|
|
this.bagToSave.Add("Fist");
|
|
}
|
|
if (this.bag[j] > 1)
|
|
{
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(this.bag[j]);
|
|
this.bagToSave.Add(invRowByIndex._Name);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.bagStacksToSave.Add(this.bag[j]);
|
|
}
|
|
}
|
|
this.saveFile.Save<List<string>>("Bag", this.bagToSave);
|
|
this.saveFile.Save<List<Vector3>>("Sockets", this.character.sockets);
|
|
this.saveFile.Save<List<int>>("BagPositions", this.character.bagPositions);
|
|
this.saveFile.Save<List<Vector4>>("Durability", this.character.durability);
|
|
this.saveFile.Save<List<int>>("BagStacks", this.bagStacksToSave);
|
|
}
|
|
this.saveFile.Save<string>("MajorStat1", this.majorStat1);
|
|
this.saveFile.Save<string>("MajorStat2", this.majorStat2);
|
|
this.saveFile.Save<string>("MinorStat3", this.minorStat3);
|
|
this.saveFile.Save<string>("MajorSkill1", this.majorSkill1);
|
|
this.saveFile.Save<string>("MajorSkill2", this.majorSkill2);
|
|
this.saveFile.Save<string>("MinorSkill3", this.minorSkill3);
|
|
this.saveFile.Save<int>("TopStartingSkill1", this.topStartingSkill1);
|
|
this.saveFile.Save<int>("TopStartingSkill2", this.topStartingSkill2);
|
|
this.saveFile.Save<int>("TopStartingSkill3", this.topStartingSkill3);
|
|
this.saveFile.Save<string>("OriginalMap", this.originalMap);
|
|
this.saveFile.Save<bool>("Protagonist", this.protagonist);
|
|
this.saveFile.Save<string>("Race", this.race);
|
|
this.saveFile.Save<string>("RaceTrait", this.raceTrait);
|
|
this.saveFile.Save<int>("PartyColorID", this.character.partyColorID);
|
|
this.saveFile.Save<int>("MagicTactics", this.magicTactics);
|
|
this.saveFile.Save<int>("UseAI", this.companionAI);
|
|
this.saveFile.Save<List<string>>("PaganKnowledge", this.knowledge);
|
|
this.saveFile.Save<List<string>>("Abilities", this.uniqueNames);
|
|
this.saveFile.Save<List<Vector4>>("AbilityLevels", this.abilityLevels);
|
|
this.saveFile.Save<List<Vector2>>("AbilityCost", this.abilityCost);
|
|
this.saveFile.Save<List<string>>("AbilityNames", this.abilityNames);
|
|
this.equippedAbilities = "";
|
|
string text2 = "";
|
|
foreach (string text3 in this.equippedSongList)
|
|
{
|
|
this.equippedAbilities += text3;
|
|
this.equippedAbilities += ",";
|
|
int num = this.uniqueNames.IndexOf(text3);
|
|
if (num > -1)
|
|
{
|
|
text2 += this.abilityTriggerCount[num].ToString();
|
|
text2 += ",";
|
|
}
|
|
else
|
|
{
|
|
text2 += " ,";
|
|
}
|
|
}
|
|
this.saveFile.Save<string>("EquippedAbilities", this.equippedAbilities);
|
|
this.saveFile.Save<string>("EquippedAbilityCount", text2);
|
|
this.saveFile.Save<List<string>>("FavoriteSpells", this.favoriteSpells);
|
|
this.saveFile.Save<List<float>>("Skills", this.skills);
|
|
this.saveFile.Save<List<float>>("SkillsProgress", this.skillsProgress);
|
|
this.saveFile.Save<float>("RallyBase", this.rallyBase);
|
|
this.saveFile.Save<int>("MagicPoints", this.magicPoints);
|
|
this.saveFile.Save<int>("MagicPointsBase", this.magicPointsBase);
|
|
this.saveFile.Save<int>("Formation", this.formationGroup);
|
|
this.saveFile.Save<int>("SelectedAmmo", this.character.selectedAmmoIndex);
|
|
this.saveFile.Save<int>("SelectedWpnIndex", this.character.selectedWpnIndex);
|
|
this.saveFile.Save<int>("PartyID", this.partyID);
|
|
this.saveFile.Save<int>("UseItems", this.useItemsAI);
|
|
this.saveFile.Save<bool>("AutoCastAI", this.autoCastAI);
|
|
this.saveFile.Save<int>("AutoCrit", this.autoCritsAI);
|
|
this.saveFile.Save<int>("AutoBuff", this.autoBuffsAI);
|
|
this.saveFile.Save<bool>("IsLeader", this.isLeader);
|
|
if (this.character.portrait)
|
|
{
|
|
this.modalWindowsOpen = this.character.portrait.skillBag.modalWindowsOpen;
|
|
}
|
|
this.saveFile.Save<bool>("ModalWindowsOpen", this.modalWindowsOpen);
|
|
this.saveFile.Save<float>("RallyBoost", Links.x.fellowship.rallyBoost);
|
|
if (Records.x.demo)
|
|
{
|
|
this.saveFile.Save<float>("GameVersionForThisScene", Records.x.gameVersionDemo);
|
|
}
|
|
else
|
|
{
|
|
this.saveFile.Save<float>("GameVersionForThisScene", Records.x.gameVersion);
|
|
}
|
|
this.saveFile.Sync();
|
|
}
|
|
|
|
// Token: 0x06000AA9 RID: 2729 RVA: 0x000D4080 File Offset: 0x000D2280
|
|
public void CharacterLoad()
|
|
{
|
|
string text = Records.x.openBook + "/Party_" + this.partyID.ToString() + ".es3";
|
|
int num = 0;
|
|
if (ES3.FileExists(text))
|
|
{
|
|
this.saveFile = new ES3File(text);
|
|
this.strength = this.saveFile.Load<float>("Strength");
|
|
this.aura = this.saveFile.Load<float>("Aura");
|
|
this.dexterity = this.saveFile.Load<float>("Dexterity");
|
|
this.pagan = this.saveFile.Load<float>("Pagan");
|
|
this.sensory = this.saveFile.Load<float>("Sensory");
|
|
this.agility = this.saveFile.Load<float>("Agility");
|
|
this.maxStaminaAdd = this.saveFile.Load<float>("MoveRadius");
|
|
this.currLife = this.saveFile.Load<int>("CurrLife");
|
|
this.lifeBase = this.saveFile.Load<int>("LifeBase");
|
|
this.weightBase = this.saveFile.Load<int>("WeightBase");
|
|
this.sightRadiusBase = this.saveFile.Load<float>("SightRadiusBase");
|
|
this.hearingRadiusBase = this.saveFile.Load<float>("HearingRadiusBase");
|
|
this.sex = this.saveFile.Load<float>("Sex");
|
|
this.skinTexture = this.saveFile.Load<string>("SkinTexture");
|
|
this.hairTexture = this.saveFile.Load<string>("HairTexture");
|
|
this.effectsNamesFromSave.Clear();
|
|
this.effectsTimesFromSave.Clear();
|
|
this.effectsVar2FromSave.Clear();
|
|
this.effectsTimesFromSave = this.saveFile.Load<List<int>>("EffectsTimes");
|
|
this.effectsNamesFromSave = this.saveFile.Load<List<string>>("EffectsName");
|
|
this.effectsVar2FromSave = this.saveFile.Load<List<float>>("EffectsVar2");
|
|
this.XP = this.saveFile.Load<int>("XP");
|
|
this.displayName = this.saveFile.Load<string>("DisplayName");
|
|
this.dialogueFile = this.saveFile.Load<string>("DialogueFile");
|
|
this.model = this.saveFile.Load<string>("Model");
|
|
this.headModel = this.saveFile.Load<string>("HeadModel");
|
|
this.character.doorID = this.saveFile.Load<string>("Indoor Scene Door");
|
|
this.character.indoorID = this.saveFile.Load<string>("Indoor Scene");
|
|
this.character.desiredGraph = this.saveFile.Load<int>("Graph");
|
|
this.character.timeOfDeath = this.saveFile.Load<float>("TimeOfDeath");
|
|
this.character.stunned = this.saveFile.Load<bool>("Stunned");
|
|
this.levelUps = this.saveFile.Load<string>("LevelUps");
|
|
this.killCount = this.saveFile.Load<int>("KillCount");
|
|
this.level = this.saveFile.Load<int>("Level");
|
|
Vector3 vector = this.saveFile.Load<Vector3>("Position");
|
|
Quaternion quaternion = this.saveFile.Load<Quaternion>("Rotation");
|
|
bool flag = this.saveFile.Load<bool>("Selected");
|
|
bool flag2 = this.saveFile.Load<bool>("MainSelected");
|
|
this.bag = this.character.bag;
|
|
this.bagPositions = this.character.bagPositions;
|
|
this.sockets = this.character.sockets;
|
|
this.durability = this.character.durability;
|
|
this.savedStatsBag.Clear();
|
|
this.savedStatsBag = this.saveFile.Load<List<string>>("Bag");
|
|
this.bagStacksToSave.Clear();
|
|
this.bagStacksToSave = this.saveFile.Load<List<int>>("BagStacks");
|
|
this.savedStatsSockets = this.saveFile.Load<List<Vector3>>("Sockets");
|
|
this.savedStatsBagPositions = this.saveFile.Load<List<int>>("BagPositions");
|
|
this.savedStatsDurability = this.saveFile.Load<List<Vector4>>("Durability");
|
|
this.majorStat1 = this.saveFile.Load<string>("MajorStat1");
|
|
this.majorStat2 = this.saveFile.Load<string>("MajorStat2");
|
|
this.minorStat3 = this.saveFile.Load<string>("MinorStat3");
|
|
this.majorSkill1 = this.saveFile.Load<string>("MajorSkill1");
|
|
this.majorSkill2 = this.saveFile.Load<string>("MajorSkill2");
|
|
this.minorSkill3 = this.saveFile.Load<string>("MinorSkill3");
|
|
this.topStartingSkill1 = this.saveFile.Load<int>("TopStartingSkill1");
|
|
this.topStartingSkill2 = this.saveFile.Load<int>("TopStartingSkill2");
|
|
this.topStartingSkill3 = this.saveFile.Load<int>("TopStartingSkill3");
|
|
this.bag.Clear();
|
|
for (int i = 0; i < this.savedStatsBag.Count; i++)
|
|
{
|
|
if (this.savedStatsBag[i] == "Empty")
|
|
{
|
|
this.bag.Add(0);
|
|
this.bag.Add(0);
|
|
}
|
|
else if (this.savedStatsBag[i] == "Fist")
|
|
{
|
|
this.bag.Add(1);
|
|
this.bag.Add(0);
|
|
}
|
|
else
|
|
{
|
|
int invRowID = Links.x.library.GetInvRowID(this.savedStatsBag[i]);
|
|
this.bag.Add(invRowID);
|
|
this.bag.Add(0);
|
|
}
|
|
}
|
|
int num2 = 0;
|
|
for (int j = 0; j < this.bag.Count; j++)
|
|
{
|
|
if (j % 2 != 0)
|
|
{
|
|
this.bag[j] = this.bagStacksToSave[num2];
|
|
num2++;
|
|
}
|
|
}
|
|
for (int k = 0; k < this.sockets.Count; k++)
|
|
{
|
|
if (k < this.savedStatsSockets.Count)
|
|
{
|
|
this.sockets[k] = this.savedStatsSockets[k];
|
|
}
|
|
}
|
|
for (int l = 0; l < this.bagPositions.Count; l++)
|
|
{
|
|
if (l < this.savedStatsBagPositions.Count)
|
|
{
|
|
this.bagPositions[l] = this.savedStatsBagPositions[l];
|
|
}
|
|
}
|
|
for (int m = 0; m < this.durability.Count; m++)
|
|
{
|
|
if (m < this.savedStatsDurability.Count)
|
|
{
|
|
this.durability[m] = this.savedStatsDurability[m];
|
|
}
|
|
}
|
|
this.originalMap = this.saveFile.Load<string>("OriginalMap");
|
|
this.protagonist = this.saveFile.Load<bool>("Protagonist");
|
|
this.race = this.saveFile.Load<string>("Race");
|
|
if (this.race == "Yeti")
|
|
{
|
|
this.character.animationPrefix = "_VollingYeti";
|
|
}
|
|
this.raceTrait = this.saveFile.Load<string>("RaceTrait");
|
|
Links.x.ReturnPartyColor(this.character.partyColorID);
|
|
this.character.partyColorID = this.saveFile.Load<int>("PartyColorID");
|
|
this.character.portrait.UpdateBar();
|
|
Links.x.GetOpenPartyColorFromSave(this.character.partyColorID);
|
|
this.character.UpdateArrowColor();
|
|
this.character.CircleAnimation("");
|
|
this.magicTactics = this.saveFile.Load<int>("MagicTactics");
|
|
this.companionAI = this.saveFile.Load<int>("UseAI");
|
|
this.autoCastAI = this.saveFile.Load<bool>("AutoCastAI");
|
|
if (this.saveFile.KeyExists("UseItems"))
|
|
{
|
|
this.useItemsAI = this.saveFile.Load<int>("UseItems");
|
|
this.autoBuffsAI = this.saveFile.Load<int>("AutoBuff");
|
|
this.autoCritsAI = this.saveFile.Load<int>("AutoCrit");
|
|
}
|
|
this.isLeader = this.saveFile.Load<bool>("IsLeader");
|
|
this.knowledge = this.saveFile.Load<List<string>>("PaganKnowledge");
|
|
this.abilities = this.saveFile.Load<List<string>>("AbilityNames");
|
|
this.abilityLevelsTemp = this.saveFile.Load<List<Vector4>>("AbilityLevels");
|
|
this.spellNamesTemp = this.saveFile.Load<List<string>>("Abilities");
|
|
this.abilityCostTemp = this.saveFile.Load<List<Vector2>>("AbilityCost");
|
|
this.equippedAbilities = this.saveFile.Load<string>("EquippedAbilities");
|
|
for (int n = 0; n < this.abilityEquipped.Count; n++)
|
|
{
|
|
this.abilityEquipped[n] = 0;
|
|
}
|
|
this.equippedCounts = this.saveFile.Load<string>("EquippedAbilityCount");
|
|
this.skills.Clear();
|
|
this.skillsProgress.Clear();
|
|
this.skills = this.saveFile.Load<List<float>>("Skills");
|
|
this.skillsProgress = this.saveFile.Load<List<float>>("SkillsProgress");
|
|
this.modalWindowsOpen = this.saveFile.Load<bool>("ModalWindowsOpen");
|
|
this.rallyBase = this.saveFile.Load<float>("RallyBase");
|
|
this.magicPoints = this.saveFile.Load<int>("MagicPoints");
|
|
this.magicPointsBase = this.saveFile.Load<int>("MagicPointsBase");
|
|
this.formationGroup = this.saveFile.Load<int>("Formation");
|
|
this.character.selectedAmmoIndex = this.saveFile.Load<int>("SelectedAmmo");
|
|
this.character.selectedWpnIndex = this.saveFile.Load<int>("SelectedWpnIndex");
|
|
this.partyID = this.saveFile.Load<int>("PartyID");
|
|
num = this.character.selectedWpnIndex;
|
|
if (this.saveFile.KeyExists("GameVersionForThisScene"))
|
|
{
|
|
this.lastVersionForThisScene = this.saveFile.Load<float>("GameVersionForThisScene");
|
|
}
|
|
else
|
|
{
|
|
this.lastVersionForThisScene = 1.29f;
|
|
}
|
|
if (this.saveFile.KeyExists("FavoriteSpells"))
|
|
{
|
|
this.favoriteSpells = this.saveFile.Load<List<string>>("FavoriteSpells");
|
|
}
|
|
if (this.saveFile.KeyExists("RallyBoost"))
|
|
{
|
|
Links.x.fellowship.rallyBoost = (float)((int)this.saveFile.Load<float>("RallyBoost"));
|
|
}
|
|
this.character.SetPosition(vector, null);
|
|
this.character.SetRotation(quaternion, false, true);
|
|
this.character.FirstPosition(null);
|
|
if (flag)
|
|
{
|
|
this.character.AddToSelected(false, false);
|
|
}
|
|
else
|
|
{
|
|
this.character.RemoveFromSelected(true);
|
|
}
|
|
if (flag2)
|
|
{
|
|
this.character.SetAsLeader();
|
|
}
|
|
this.character.portrait.SetSelection();
|
|
this.character.characterSheetPortrait.SetSelection();
|
|
this.character.portrait.skillBag.SetSelectedAmmoIndex(this.character.selectedAmmoIndex);
|
|
Library.Inventory invRow = Links.x.library.GetInvRow(this.bag[18]);
|
|
if (invRow != null)
|
|
{
|
|
if (this.bag[18] <= 1 || invRow._ArmorID == -1)
|
|
{
|
|
this.character.SetupBody();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.character.SetupBody();
|
|
}
|
|
if (this.character.stunned)
|
|
{
|
|
this.character.Stunned(true);
|
|
}
|
|
this.SetupAbilities(false);
|
|
}
|
|
else if (Records.x.banquetIsle)
|
|
{
|
|
Links.x.main.SetAsLeader();
|
|
}
|
|
this.UpdateStats();
|
|
this.FormationTactics();
|
|
this.SetVoiceID(false);
|
|
this.character.protagonist = this.protagonist;
|
|
if (this.protagonist)
|
|
{
|
|
Links.x.protagonist = this.character;
|
|
}
|
|
this.character.portrait.skillBag.SetTrinketGrid(true);
|
|
this.character.portrait.skillBag.SetSpellbookGrid();
|
|
this.character.portrait.skillBag.SetSongGrid();
|
|
this.character.portrait.UpdateMP();
|
|
this.SpawnEffects();
|
|
this.character.SetupPartyAfterLoadedVariables();
|
|
this.UpdateRallyCount(false, 0f);
|
|
Links.x.hudControl.SetRallyBars();
|
|
this.character.portrait.skillBag.SetSelectedWpnIndex(num);
|
|
base.StartCoroutine(this.WaitForAnimator());
|
|
}
|
|
|
|
// Token: 0x06000AAA RID: 2730 RVA: 0x000D4D48 File Offset: 0x000D2F48
|
|
private IEnumerator WaitForAnimator()
|
|
{
|
|
float timeToLerp = 1f;
|
|
float percentage = 0f;
|
|
float startTime = Time.realtimeSinceStartup;
|
|
while (percentage < 1f)
|
|
{
|
|
percentage = (Time.realtimeSinceStartup - startTime) / timeToLerp;
|
|
if (this.character.animator)
|
|
{
|
|
this.character.animator.enabled = false;
|
|
}
|
|
yield return null;
|
|
}
|
|
if (this.character.animator)
|
|
{
|
|
this.character.animator.Rebind();
|
|
this.character.animator.Update(0f);
|
|
this.character.animator.enabled = true;
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000AAB RID: 2731 RVA: 0x000D4D57 File Offset: 0x000D2F57
|
|
public int SongPointsMax()
|
|
{
|
|
return 4;
|
|
}
|
|
|
|
// Token: 0x06000AAC RID: 2732 RVA: 0x000D4D5C File Offset: 0x000D2F5C
|
|
public void UpdateEquippedSongList(string n)
|
|
{
|
|
bool flag = false;
|
|
for (int i = 0; i < this.equippedSongList.Count; i++)
|
|
{
|
|
if (this.equippedSongList[i] == n && !flag)
|
|
{
|
|
int num = this.uniqueNames.IndexOf(n);
|
|
if (num > -1)
|
|
{
|
|
flag = true;
|
|
this.equippedSongList.RemoveAt(i);
|
|
this.songPoints += this.abilityRows[num]._SongCost;
|
|
this.abilityEquipped[num] = 0;
|
|
}
|
|
}
|
|
}
|
|
if (!flag)
|
|
{
|
|
int num2 = this.uniqueNames.IndexOf(n);
|
|
if (num2 > -1 && this.abilityRows[num2]._SongCost <= this.songPoints)
|
|
{
|
|
this.equippedSongList.Add(n);
|
|
this.songPoints -= this.abilityRows[num2]._SongCost;
|
|
this.abilityEquipped[num2] = 1;
|
|
}
|
|
}
|
|
if (this.character.portrait)
|
|
{
|
|
this.character.portrait.skillBag.SetSongGrid();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000AAD RID: 2733 RVA: 0x000D4E6D File Offset: 0x000D306D
|
|
public float GetSynergyNeeded(int x)
|
|
{
|
|
if (x == 1)
|
|
{
|
|
return this.synergy1;
|
|
}
|
|
return this.synergy2;
|
|
}
|
|
|
|
// Token: 0x06000AAE RID: 2734 RVA: 0x000D4E80 File Offset: 0x000D3080
|
|
public void UpdateRallyCount(bool add, float amt)
|
|
{
|
|
if (!this.character.party)
|
|
{
|
|
return;
|
|
}
|
|
if (add)
|
|
{
|
|
amt = 1.25f + this.rallyBase / 5f;
|
|
amt *= Mathf.Clamp(Links.x.fellowship.rallySpeed, 1f, 1000000f);
|
|
Links.x.hudControl.UpdateRally(amt);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000AAF RID: 2735 RVA: 0x000D4EE4 File Offset: 0x000D30E4
|
|
public void UsedSynergy()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000AB0 RID: 2736 RVA: 0x000D4EE6 File Offset: 0x000D30E6
|
|
public void ClearSynergies()
|
|
{
|
|
this.synergyAttackCount = 0f;
|
|
this.UpdateRallyCount(false, 0f);
|
|
}
|
|
|
|
// Token: 0x06000AB1 RID: 2737 RVA: 0x000D4F00 File Offset: 0x000D3100
|
|
public void FormationTactics()
|
|
{
|
|
this.defendMainInCombat = false;
|
|
if (this.formationGroup == 0 || this.formationGroup == 1 || this.formationGroup == 2 || this.formationGroup == 3)
|
|
{
|
|
this.kiteInCombat = false;
|
|
if (this.character.npc && this.character.creatures)
|
|
{
|
|
this.defendMainInCombat = false;
|
|
this.defendingCharacter = null;
|
|
if (this.character.creatures.creatures.hasLeader)
|
|
{
|
|
this.defendingCharacter = this.character.creatures.GetLeader();
|
|
if (this.defendingCharacter)
|
|
{
|
|
this.defendMainInCombat = true;
|
|
}
|
|
}
|
|
else if (this.character.creatures.creatures.pickOneLeader)
|
|
{
|
|
this.defendingCharacter = this.character.creatures.GetFirstAsLeader(this.character);
|
|
if (this.defendingCharacter)
|
|
{
|
|
this.defendMainInCombat = true;
|
|
}
|
|
else
|
|
{
|
|
this.defendMainInCombat = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.kiteInCombat = true;
|
|
}
|
|
if (this.character.party)
|
|
{
|
|
if (false)
|
|
{
|
|
this.defendingCharacter = Links.x.SharingFormation(this.character, this.formationGroup);
|
|
if (this.defendingCharacter && !this.character.summoned)
|
|
{
|
|
this.defendMainInCombat = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.defendMainInCombat = false;
|
|
this.defendingCharacter = null;
|
|
}
|
|
}
|
|
if (this.formationGroup == 1 || this.formationGroup == 4 || this.formationGroup == 7)
|
|
{
|
|
this.useUtilityAbilities = true;
|
|
return;
|
|
}
|
|
this.useUtilityAbilities = false;
|
|
}
|
|
|
|
// Token: 0x06000AB2 RID: 2738 RVA: 0x000D5098 File Offset: 0x000D3298
|
|
public void AddSkillProgress(int skillIndex, float difficulty, Character target)
|
|
{
|
|
if (this.character.npc || this.character.summoned)
|
|
{
|
|
return;
|
|
}
|
|
if (target && target.ghost)
|
|
{
|
|
return;
|
|
}
|
|
float num = Records.x.GetSkillWeight(skillIndex) + difficulty;
|
|
if (num < 0.5f)
|
|
{
|
|
num = 0.5f;
|
|
}
|
|
List<float> list = this.skillsProgress;
|
|
list[skillIndex] += num;
|
|
this.CheckProgress(skillIndex);
|
|
}
|
|
|
|
// Token: 0x06000AB3 RID: 2739 RVA: 0x000D510D File Offset: 0x000D330D
|
|
public void CheckProgress(int skillIndex)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000AB4 RID: 2740 RVA: 0x000D510F File Offset: 0x000D330F
|
|
public void FinishLevelUp()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000AB5 RID: 2741 RVA: 0x000D5114 File Offset: 0x000D3314
|
|
public void IncreaseSkill(int skillIndex, int amount)
|
|
{
|
|
List<float> list = this.skills;
|
|
list[skillIndex] += (float)amount;
|
|
}
|
|
|
|
// Token: 0x06000AB6 RID: 2742 RVA: 0x000D513B File Offset: 0x000D333B
|
|
public void SetSkill(int skillIndex, int amount)
|
|
{
|
|
this.skills[skillIndex] = (float)amount;
|
|
}
|
|
|
|
// Token: 0x06000AB7 RID: 2743 RVA: 0x000D514B File Offset: 0x000D334B
|
|
public float GetSkill(int skillIndex)
|
|
{
|
|
return this.skills[skillIndex] + this.allSkillAdd;
|
|
}
|
|
|
|
// Token: 0x06000AB8 RID: 2744 RVA: 0x000D5160 File Offset: 0x000D3360
|
|
public float GetSkillProgress(int skillIndex)
|
|
{
|
|
float num = 0f;
|
|
int count = this.skillsProgress.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
num += this.skillsProgress[i];
|
|
}
|
|
if (num == 0f)
|
|
{
|
|
return 0f;
|
|
}
|
|
return this.skillsProgress[skillIndex] / num;
|
|
}
|
|
|
|
// Token: 0x06000AB9 RID: 2745 RVA: 0x000D51B6 File Offset: 0x000D33B6
|
|
public int HasFamilyBackground(int index)
|
|
{
|
|
return this.familyBackgrounds[index];
|
|
}
|
|
|
|
// Token: 0x06000ABA RID: 2746 RVA: 0x000D51C0 File Offset: 0x000D33C0
|
|
public int HasFamilyBackgroundFromName(string n)
|
|
{
|
|
int num = 0;
|
|
if (n == "Merchant")
|
|
{
|
|
int num2 = 0;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 7;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 13;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 19;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Farmer")
|
|
{
|
|
int num2 = 1;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 9;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 14;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Cleric")
|
|
{
|
|
int num2 = 2;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 22;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 10;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Brewer")
|
|
{
|
|
int num2 = 3;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Sailor")
|
|
{
|
|
int num2 = 4;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Entertainer")
|
|
{
|
|
int num2 = 6;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Servant")
|
|
{
|
|
int num2 = 5;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Artisan")
|
|
{
|
|
int num2 = 8;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
num2 = 25;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Rider")
|
|
{
|
|
int num2 = 11;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Herder")
|
|
{
|
|
int num2 = 12;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Expeditioner")
|
|
{
|
|
int num2 = 15;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Miner")
|
|
{
|
|
int num2 = 1164;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Hunter")
|
|
{
|
|
int num2 = 17;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Weaver")
|
|
{
|
|
int num2 = 18;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Gardener")
|
|
{
|
|
int num2 = 20;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Hunter")
|
|
{
|
|
int num2 = 21;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Justice")
|
|
{
|
|
int num2 = 23;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Politician")
|
|
{
|
|
int num2 = 24;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Pine")
|
|
{
|
|
int num2 = 26;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Maple")
|
|
{
|
|
int num2 = 27;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Willow")
|
|
{
|
|
int num2 = 28;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Birch")
|
|
{
|
|
int num2 = 29;
|
|
num = this.familyBackgrounds[num2];
|
|
if (num > 0)
|
|
{
|
|
return num;
|
|
}
|
|
}
|
|
if (n == "Date")
|
|
{
|
|
int num2 = 30;
|
|
return this.familyBackgrounds[num2];
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x06000ABB RID: 2747 RVA: 0x000D5528 File Offset: 0x000D3728
|
|
public void SetFamilyBackground(string rank, string race)
|
|
{
|
|
int num = 0;
|
|
if (race == "Ameythevian")
|
|
{
|
|
if (rank == "Merchant")
|
|
{
|
|
num = 0;
|
|
}
|
|
if (rank == "Farmer")
|
|
{
|
|
num = 1;
|
|
}
|
|
if (rank == "Cleric")
|
|
{
|
|
num = 2;
|
|
}
|
|
if (rank == "Brewer")
|
|
{
|
|
num = 3;
|
|
}
|
|
if (rank == "Sailor")
|
|
{
|
|
num = 4;
|
|
}
|
|
if (rank == "Servant")
|
|
{
|
|
num = 5;
|
|
}
|
|
if (rank == "Entertainer")
|
|
{
|
|
num = 6;
|
|
}
|
|
}
|
|
if (race == "Taratorith")
|
|
{
|
|
if (rank == "Merchant")
|
|
{
|
|
num = 7;
|
|
}
|
|
if (rank == "Artisan")
|
|
{
|
|
num = 8;
|
|
}
|
|
if (rank == "Farmer")
|
|
{
|
|
num = 9;
|
|
}
|
|
if (rank == "Cleric")
|
|
{
|
|
num = 10;
|
|
}
|
|
if (rank == "Rider")
|
|
{
|
|
num = 11;
|
|
}
|
|
if (rank == "Herder")
|
|
{
|
|
num = 12;
|
|
}
|
|
}
|
|
if (race == "Varuchov")
|
|
{
|
|
if (rank == "Merchant")
|
|
{
|
|
num = 13;
|
|
}
|
|
if (rank == "Farmer")
|
|
{
|
|
num = 14;
|
|
}
|
|
if (rank == "Expeditioner")
|
|
{
|
|
num = 15;
|
|
}
|
|
if (rank == "Miner")
|
|
{
|
|
num = 16;
|
|
}
|
|
if (rank == "Hunter")
|
|
{
|
|
num = 17;
|
|
}
|
|
if (rank == "Weaver")
|
|
{
|
|
num = 18;
|
|
}
|
|
}
|
|
if (race == "Pasaaren")
|
|
{
|
|
if (rank == "Merchant")
|
|
{
|
|
num = 19;
|
|
}
|
|
if (rank == "Gardener")
|
|
{
|
|
num = 20;
|
|
}
|
|
if (rank == "Hunter")
|
|
{
|
|
num = 21;
|
|
}
|
|
if (rank == "Cleric")
|
|
{
|
|
num = 22;
|
|
}
|
|
if (rank == "Justice")
|
|
{
|
|
num = 23;
|
|
}
|
|
if (rank == "Politician")
|
|
{
|
|
num = 24;
|
|
}
|
|
if (rank == "Artisan")
|
|
{
|
|
num = 25;
|
|
}
|
|
}
|
|
if (race == "Yeti")
|
|
{
|
|
if (rank == "Pine")
|
|
{
|
|
num = 26;
|
|
}
|
|
if (rank == "Maple")
|
|
{
|
|
num = 27;
|
|
}
|
|
if (rank == "Willow")
|
|
{
|
|
num = 28;
|
|
}
|
|
if (rank == "Birch")
|
|
{
|
|
num = 29;
|
|
}
|
|
if (rank == "Date")
|
|
{
|
|
num = 30;
|
|
}
|
|
}
|
|
for (int i = 0; i < 30; i++)
|
|
{
|
|
if (i == num)
|
|
{
|
|
this.familyBackgrounds[i] = 1;
|
|
}
|
|
else
|
|
{
|
|
this.familyBackgrounds[i] = 0;
|
|
}
|
|
}
|
|
this.familyBackground = rank;
|
|
}
|
|
|
|
// Token: 0x06000ABC RID: 2748 RVA: 0x000D578C File Offset: 0x000D398C
|
|
public void SetMajorsMinors(string setMajorStat1, string setMajorStat2, string setMinorStat3, string setMajorSkill1, string setMajorSkill2, string setMinorSkill3, bool setChangedArchetype)
|
|
{
|
|
this.majorStat1 = setMajorStat1;
|
|
this.majorStat2 = setMajorStat2;
|
|
this.minorStat3 = setMinorStat3;
|
|
this.majorSkill1 = setMajorSkill1;
|
|
this.majorSkill2 = setMajorSkill2;
|
|
this.minorSkill3 = setMinorSkill3;
|
|
this.changedArchetype = setChangedArchetype;
|
|
int num = -1;
|
|
int num2 = -1;
|
|
int num3 = -1;
|
|
float skillAmount = this.GetSkillAmount(this.majorSkill1, out num);
|
|
float skillAmount2 = this.GetSkillAmount(this.majorSkill2, out num2);
|
|
this.GetSkillAmount(this.minorSkill3, out num3);
|
|
if (skillAmount > skillAmount2)
|
|
{
|
|
this.topStartingSkill1 = num;
|
|
this.topStartingSkill2 = num2;
|
|
}
|
|
else
|
|
{
|
|
this.topStartingSkill2 = num;
|
|
this.topStartingSkill1 = num2;
|
|
}
|
|
this.topStartingSkill3 = num3;
|
|
}
|
|
|
|
// Token: 0x06000ABD RID: 2749 RVA: 0x000D5828 File Offset: 0x000D3A28
|
|
public float GetSkillAmount(string n, out int skillIndex)
|
|
{
|
|
skillIndex = -1;
|
|
if (n == "Robes")
|
|
{
|
|
skillIndex = 0;
|
|
return this.GetSkill(0);
|
|
}
|
|
if (n == "Pearl")
|
|
{
|
|
skillIndex = 1;
|
|
return this.GetSkill(1);
|
|
}
|
|
if (n == "Crimscale")
|
|
{
|
|
skillIndex = 2;
|
|
return this.GetSkill(2);
|
|
}
|
|
if (n == "Stonewood")
|
|
{
|
|
skillIndex = 3;
|
|
return this.GetSkill(3);
|
|
}
|
|
if (n == "ShortSword")
|
|
{
|
|
skillIndex = 4;
|
|
return this.GetSkill(4);
|
|
}
|
|
if (n == "LongSword")
|
|
{
|
|
skillIndex = 5;
|
|
return this.GetSkill(5);
|
|
}
|
|
if (n == "Scepter")
|
|
{
|
|
skillIndex = 6;
|
|
return this.GetSkill(6);
|
|
}
|
|
if (n == "Ax")
|
|
{
|
|
skillIndex = 7;
|
|
return this.GetSkill(7);
|
|
}
|
|
if (n == "Pole")
|
|
{
|
|
skillIndex = 8;
|
|
return this.GetSkill(8);
|
|
}
|
|
if (n == "Multi-Hand")
|
|
{
|
|
skillIndex = 9;
|
|
return this.GetSkill(9);
|
|
}
|
|
if (n == "Bow")
|
|
{
|
|
skillIndex = 10;
|
|
return this.GetSkill(10);
|
|
}
|
|
if (n == "Sling")
|
|
{
|
|
skillIndex = 11;
|
|
return this.GetSkill(11);
|
|
}
|
|
if (n == "Elixir")
|
|
{
|
|
skillIndex = 12;
|
|
return this.GetSkill(12);
|
|
}
|
|
if (n == "Hand-to-Hand")
|
|
{
|
|
skillIndex = 13;
|
|
return this.GetSkill(13);
|
|
}
|
|
if (n == "LargeShield")
|
|
{
|
|
skillIndex = 14;
|
|
return this.GetSkill(14);
|
|
}
|
|
if (n == "SmallShield")
|
|
{
|
|
skillIndex = 15;
|
|
return this.GetSkill(15);
|
|
}
|
|
if (n == "Bindings")
|
|
{
|
|
skillIndex = 16;
|
|
return this.GetSkill(16);
|
|
}
|
|
if (n == "Fauna")
|
|
{
|
|
skillIndex = 17;
|
|
return this.GetSkill(17);
|
|
}
|
|
if (n == "Vines")
|
|
{
|
|
skillIndex = 18;
|
|
return this.GetSkill(18);
|
|
}
|
|
if (n == "Spores")
|
|
{
|
|
skillIndex = 19;
|
|
return this.GetSkill(19);
|
|
}
|
|
if (n == "Lockpick")
|
|
{
|
|
skillIndex = 20;
|
|
return this.GetSkill(20);
|
|
}
|
|
if (n == "Sneaking")
|
|
{
|
|
skillIndex = 21;
|
|
return this.GetSkill(21);
|
|
}
|
|
if (n == "Bartering")
|
|
{
|
|
skillIndex = 22;
|
|
return this.GetSkill(22);
|
|
}
|
|
if (n == "Fish")
|
|
{
|
|
skillIndex = 23;
|
|
return this.GetSkill(23);
|
|
}
|
|
if (n == "Forest")
|
|
{
|
|
skillIndex = 24;
|
|
return this.GetSkill(24);
|
|
}
|
|
if (n == "Shroom")
|
|
{
|
|
skillIndex = 25;
|
|
return this.GetSkill(25);
|
|
}
|
|
if (n == "Flute")
|
|
{
|
|
skillIndex = 26;
|
|
return this.GetSkill(26);
|
|
}
|
|
if (n == "Horn")
|
|
{
|
|
skillIndex = 27;
|
|
return this.GetSkill(27);
|
|
}
|
|
if (n == "Drum")
|
|
{
|
|
skillIndex = 28;
|
|
return this.GetSkill(28);
|
|
}
|
|
if (n == "Pipe")
|
|
{
|
|
skillIndex = 29;
|
|
return this.GetSkill(29);
|
|
}
|
|
if (n == "Melee")
|
|
{
|
|
skillIndex = 30;
|
|
return this.GetSkill(30);
|
|
}
|
|
if (n == "Range")
|
|
{
|
|
skillIndex = 31;
|
|
return this.GetSkill(31);
|
|
}
|
|
if (n == "Defense")
|
|
{
|
|
skillIndex = 32;
|
|
return this.GetSkill(32);
|
|
}
|
|
if (n == "Whip")
|
|
{
|
|
skillIndex = 35;
|
|
return this.GetSkill(35);
|
|
}
|
|
return 0f;
|
|
}
|
|
|
|
// Token: 0x06000ABE RID: 2750 RVA: 0x000D5BA0 File Offset: 0x000D3DA0
|
|
public string GetMajorsMinors(int index)
|
|
{
|
|
if (index == 0)
|
|
{
|
|
return this.majorStat1;
|
|
}
|
|
if (index == 1)
|
|
{
|
|
return this.majorStat2;
|
|
}
|
|
if (index == 2)
|
|
{
|
|
return this.minorStat3;
|
|
}
|
|
if (index == 3)
|
|
{
|
|
return this.majorSkill1;
|
|
}
|
|
if (index == 4)
|
|
{
|
|
return this.majorSkill2;
|
|
}
|
|
if (index == 5)
|
|
{
|
|
return this.minorSkill3;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
// Token: 0x06000ABF RID: 2751 RVA: 0x000D5BF3 File Offset: 0x000D3DF3
|
|
public bool GetChangeArchetype()
|
|
{
|
|
return this.changedArchetype;
|
|
}
|
|
|
|
// Token: 0x06000AC0 RID: 2752 RVA: 0x000D5BFC File Offset: 0x000D3DFC
|
|
public bool IsGoodWeaponMatch(Character c, global::Item item)
|
|
{
|
|
string mainSkill = item.invRow._MainSkill;
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
return c.stats.GetSkill(combatSkillID) > 100f;
|
|
}
|
|
|
|
// Token: 0x06000AC1 RID: 2753 RVA: 0x000D5C34 File Offset: 0x000D3E34
|
|
public bool IsGoodArmorMatch(Character c, global::Item item)
|
|
{
|
|
string mainSkill = item.invRow._MainSkill;
|
|
int armorSkillID = this.GetArmorSkillID(mainSkill);
|
|
return c.stats.GetSkill(armorSkillID) > 50f;
|
|
}
|
|
|
|
// Token: 0x06000AC2 RID: 2754 RVA: 0x000D5C6C File Offset: 0x000D3E6C
|
|
public bool IsGoodShieldMatch(Character c, global::Item item)
|
|
{
|
|
string mainSkill = item.invRow._MainSkill;
|
|
int combatSkillID = this.GetCombatSkillID(mainSkill);
|
|
return c.stats.GetSkill(combatSkillID) > 50f;
|
|
}
|
|
|
|
// Token: 0x06000AC3 RID: 2755 RVA: 0x000D5CA4 File Offset: 0x000D3EA4
|
|
public bool IsGoodAmmoMatch(Character c, global::Item item)
|
|
{
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
Library.Inventory inventory = null;
|
|
if (i == 0)
|
|
{
|
|
Links.x.library.GetInvRowByIndex(c.GetInvNum(0));
|
|
}
|
|
else
|
|
{
|
|
Links.x.library.GetInvRowByIndex(c.GetInvNum(32));
|
|
}
|
|
if (inventory._Ammo1 != "")
|
|
{
|
|
if (inventory._MainSkill == "Bow" && item.invRow._Ammo1 == "Bow")
|
|
{
|
|
if (item.ID >= Links.x.library.arrowsMin && item.ID <= Links.x.library.arrowsMax)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
else if (inventory._MainSkill == "Sling" && item.invRow._Ammo1 == "Dart")
|
|
{
|
|
if (item.ID >= Links.x.library.dartsMin && item.ID <= Links.x.library.dartsMax)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
else if (inventory._MainSkill.Contains("Elixir") || item.invRow._MainSkill.Contains("Elixir"))
|
|
{
|
|
if (item.ID >= Links.x.library.vialsMin && item.ID <= Links.x.library.vialsMax)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
else if (inventory._Name == item.invRow._Ammo1)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06000AC4 RID: 2756 RVA: 0x000D5E40 File Offset: 0x000D4040
|
|
public string GetBestSkill(string type, out float highestSkill)
|
|
{
|
|
float num = 0f;
|
|
string text = "";
|
|
string text2 = "";
|
|
highestSkill = 0f;
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
int num2 = 0;
|
|
if (i == 0)
|
|
{
|
|
num2 = 35;
|
|
text2 = "whips";
|
|
}
|
|
if (i == 1)
|
|
{
|
|
num2 = 8;
|
|
text2 = "polearms";
|
|
}
|
|
if (i == 2)
|
|
{
|
|
num2 = 6;
|
|
text2 = "scepters";
|
|
}
|
|
if (i == 3)
|
|
{
|
|
num2 = 5;
|
|
text2 = "swords";
|
|
}
|
|
if (i == 4)
|
|
{
|
|
num2 = 4;
|
|
text2 = "short swords";
|
|
}
|
|
if (i == 5)
|
|
{
|
|
num2 = 11;
|
|
text2 = "slings";
|
|
}
|
|
if (i == 6)
|
|
{
|
|
num2 = 7;
|
|
text2 = "axes";
|
|
}
|
|
if (i == 7)
|
|
{
|
|
num2 = 10;
|
|
text2 = "bows";
|
|
}
|
|
if (i == 8)
|
|
{
|
|
num2 = 12;
|
|
text2 = "elixir throwing";
|
|
}
|
|
if (i == 9)
|
|
{
|
|
num2 = 13;
|
|
text2 = "hand-to-hand fighting";
|
|
}
|
|
float skill = this.GetSkill(num2);
|
|
if (skill > num)
|
|
{
|
|
num = skill;
|
|
text = text2;
|
|
}
|
|
}
|
|
highestSkill = num;
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x06000AC5 RID: 2757 RVA: 0x000D5F1C File Offset: 0x000D411C
|
|
public int MatchBestSkillToDialogueName(string n)
|
|
{
|
|
if (n == "whips")
|
|
{
|
|
return 35;
|
|
}
|
|
if (n == "polearms")
|
|
{
|
|
return 8;
|
|
}
|
|
if (n == "scepters")
|
|
{
|
|
return 6;
|
|
}
|
|
if (n == "swords")
|
|
{
|
|
return 5;
|
|
}
|
|
if (n == "short swords")
|
|
{
|
|
return 4;
|
|
}
|
|
if (n == "slins")
|
|
{
|
|
return 11;
|
|
}
|
|
if (n == "axes")
|
|
{
|
|
return 7;
|
|
}
|
|
if (n == "bows")
|
|
{
|
|
return 10;
|
|
}
|
|
if (n == "elixir throwing")
|
|
{
|
|
return 12;
|
|
}
|
|
if (n == "hand-to-hand fighting")
|
|
{
|
|
return 13;
|
|
}
|
|
if (n == "slings")
|
|
{
|
|
return 11;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
// Token: 0x06000AC6 RID: 2758 RVA: 0x000D5FD8 File Offset: 0x000D41D8
|
|
public float HighestMusicSkill()
|
|
{
|
|
float skill = this.GetSkill(26);
|
|
float skill2 = this.GetSkill(27);
|
|
float skill3 = this.GetSkill(29);
|
|
if (skill > skill2 && skill > skill3)
|
|
{
|
|
return skill;
|
|
}
|
|
if (skill2 > skill && skill2 > skill3)
|
|
{
|
|
return skill2;
|
|
}
|
|
if (skill3 > skill && skill3 > skill2)
|
|
{
|
|
return skill3;
|
|
}
|
|
return skill;
|
|
}
|
|
|
|
// Token: 0x04000E65 RID: 3685
|
|
[Header("INFO")]
|
|
public Character character;
|
|
|
|
// Token: 0x04000E66 RID: 3686
|
|
public Library.Characters characterRow;
|
|
|
|
// Token: 0x04000E67 RID: 3687
|
|
public string xmlName;
|
|
|
|
// Token: 0x04000E68 RID: 3688
|
|
public string displayName;
|
|
|
|
// Token: 0x04000E69 RID: 3689
|
|
public string creaturesName;
|
|
|
|
// Token: 0x04000E6A RID: 3690
|
|
public string dialogueFile;
|
|
|
|
// Token: 0x04000E6B RID: 3691
|
|
public string model;
|
|
|
|
// Token: 0x04000E6C RID: 3692
|
|
public string headModel;
|
|
|
|
// Token: 0x04000E6D RID: 3693
|
|
public string originalMap;
|
|
|
|
// Token: 0x04000E6E RID: 3694
|
|
public string state;
|
|
|
|
// Token: 0x04000E6F RID: 3695
|
|
public int initiateDialogue;
|
|
|
|
// Token: 0x04000E70 RID: 3696
|
|
public int partyID;
|
|
|
|
// Token: 0x04000E71 RID: 3697
|
|
public int voiceID;
|
|
|
|
// Token: 0x04000E72 RID: 3698
|
|
public bool dead;
|
|
|
|
// Token: 0x04000E73 RID: 3699
|
|
public bool stunned;
|
|
|
|
// Token: 0x04000E74 RID: 3700
|
|
public float leaveTime;
|
|
|
|
// Token: 0x04000E75 RID: 3701
|
|
public float lastVersionForThisScene;
|
|
|
|
// Token: 0x04000E76 RID: 3702
|
|
[Header("EFFECTS")]
|
|
public string savedEffects = "";
|
|
|
|
// Token: 0x04000E77 RID: 3703
|
|
private List<string> effectsNamesFromSave = new List<string>();
|
|
|
|
// Token: 0x04000E78 RID: 3704
|
|
public List<Effects> effects = new List<Effects>();
|
|
|
|
// Token: 0x04000E79 RID: 3705
|
|
private List<int> effectsTimesFromSave = new List<int>();
|
|
|
|
// Token: 0x04000E7A RID: 3706
|
|
private List<float> effectsVar2FromSave = new List<float>();
|
|
|
|
// Token: 0x04000E7B RID: 3707
|
|
private List<Effects> temp = new List<Effects>();
|
|
|
|
// Token: 0x04000E7C RID: 3708
|
|
[Header("ABILITIES and SPELLS")]
|
|
public List<string> abilityNames = new List<string>();
|
|
|
|
// Token: 0x04000E7D RID: 3709
|
|
public List<bool> abilityReady = new List<bool>();
|
|
|
|
// Token: 0x04000E7E RID: 3710
|
|
public List<string> abilityTriggers = new List<string>();
|
|
|
|
// Token: 0x04000E7F RID: 3711
|
|
public List<int> abilityTriggerCount = new List<int>();
|
|
|
|
// Token: 0x04000E80 RID: 3712
|
|
public List<Vector2> abilityCost = new List<Vector2>();
|
|
|
|
// Token: 0x04000E81 RID: 3713
|
|
public List<Library.Abilities> abilityRows = new List<Library.Abilities>();
|
|
|
|
// Token: 0x04000E82 RID: 3714
|
|
public List<int> abilityEquipped = new List<int>();
|
|
|
|
// Token: 0x04000E83 RID: 3715
|
|
public List<Vector4> abilityLevels = new List<Vector4>();
|
|
|
|
// Token: 0x04000E84 RID: 3716
|
|
public List<string> knowledge = new List<string>();
|
|
|
|
// Token: 0x04000E85 RID: 3717
|
|
public List<string> uniqueNames = new List<string>();
|
|
|
|
// Token: 0x04000E86 RID: 3718
|
|
public List<float> skillsProgress = new List<float>();
|
|
|
|
// Token: 0x04000E87 RID: 3719
|
|
public List<float> skills = new List<float>();
|
|
|
|
// Token: 0x04000E88 RID: 3720
|
|
public List<int> spellDifficulties = new List<int>();
|
|
|
|
// Token: 0x04000E89 RID: 3721
|
|
public string equippedAbilities = "";
|
|
|
|
// Token: 0x04000E8A RID: 3722
|
|
private string equippedCounts = "";
|
|
|
|
// Token: 0x04000E8B RID: 3723
|
|
public string[] equippedWordList = new string[3];
|
|
|
|
// Token: 0x04000E8C RID: 3724
|
|
public List<string> equippedSongList = new List<string>();
|
|
|
|
// Token: 0x04000E8D RID: 3725
|
|
public List<string> favoriteSpells = new List<string>();
|
|
|
|
// Token: 0x04000E8E RID: 3726
|
|
public float synergyAttackCount;
|
|
|
|
// Token: 0x04000E8F RID: 3727
|
|
public bool flying;
|
|
|
|
// Token: 0x04000E90 RID: 3728
|
|
public bool canCastSpells;
|
|
|
|
// Token: 0x04000E91 RID: 3729
|
|
private List<Vector4> abilityLevelsTemp;
|
|
|
|
// Token: 0x04000E92 RID: 3730
|
|
private List<string> spellNamesTemp;
|
|
|
|
// Token: 0x04000E93 RID: 3731
|
|
private List<Vector2> abilityCostTemp;
|
|
|
|
// Token: 0x04000E94 RID: 3732
|
|
private List<string> abilities;
|
|
|
|
// Token: 0x04000E95 RID: 3733
|
|
private StringFast str = new StringFast(64);
|
|
|
|
// Token: 0x04000E96 RID: 3734
|
|
private StringFast str2 = new StringFast(64);
|
|
|
|
// Token: 0x04000E97 RID: 3735
|
|
[Header("STATS")]
|
|
public float moveSpeed = 0.5f;
|
|
|
|
// Token: 0x04000E98 RID: 3736
|
|
public float moveSpeedMod;
|
|
|
|
// Token: 0x04000E99 RID: 3737
|
|
public float sex;
|
|
|
|
// Token: 0x04000E9A RID: 3738
|
|
public float skin;
|
|
|
|
// Token: 0x04000E9B RID: 3739
|
|
public float hair;
|
|
|
|
// Token: 0x04000E9C RID: 3740
|
|
public float hairColor;
|
|
|
|
// Token: 0x04000E9D RID: 3741
|
|
public string skinTexture;
|
|
|
|
// Token: 0x04000E9E RID: 3742
|
|
public string hairTexture;
|
|
|
|
// Token: 0x04000E9F RID: 3743
|
|
public string archetype;
|
|
|
|
// Token: 0x04000EA0 RID: 3744
|
|
public string majorStat1;
|
|
|
|
// Token: 0x04000EA1 RID: 3745
|
|
public string majorStat2;
|
|
|
|
// Token: 0x04000EA2 RID: 3746
|
|
public string minorStat3;
|
|
|
|
// Token: 0x04000EA3 RID: 3747
|
|
public string majorSkill1;
|
|
|
|
// Token: 0x04000EA4 RID: 3748
|
|
public string majorSkill2;
|
|
|
|
// Token: 0x04000EA5 RID: 3749
|
|
public string minorSkill3;
|
|
|
|
// Token: 0x04000EA6 RID: 3750
|
|
public int topStartingSkill1;
|
|
|
|
// Token: 0x04000EA7 RID: 3751
|
|
public int topStartingSkill2;
|
|
|
|
// Token: 0x04000EA8 RID: 3752
|
|
public int topStartingSkill3;
|
|
|
|
// Token: 0x04000EA9 RID: 3753
|
|
private bool changedArchetype;
|
|
|
|
// Token: 0x04000EAA RID: 3754
|
|
public float sightRadiusBase;
|
|
|
|
// Token: 0x04000EAB RID: 3755
|
|
public float hearingRadiusBase;
|
|
|
|
// Token: 0x04000EAC RID: 3756
|
|
public float naturalArmorBase;
|
|
|
|
// Token: 0x04000EAD RID: 3757
|
|
public int lifeBase;
|
|
|
|
// Token: 0x04000EAE RID: 3758
|
|
public int magicPointsBase;
|
|
|
|
// Token: 0x04000EAF RID: 3759
|
|
public int weightBase;
|
|
|
|
// Token: 0x04000EB0 RID: 3760
|
|
public int maxHealthAdd;
|
|
|
|
// Token: 0x04000EB1 RID: 3761
|
|
public int currLife;
|
|
|
|
// Token: 0x04000EB2 RID: 3762
|
|
public int magicPoints;
|
|
|
|
// Token: 0x04000EB3 RID: 3763
|
|
public float rallyBase;
|
|
|
|
// Token: 0x04000EB4 RID: 3764
|
|
public bool animal;
|
|
|
|
// Token: 0x04000EB5 RID: 3765
|
|
public bool protagonist;
|
|
|
|
// Token: 0x04000EB6 RID: 3766
|
|
public bool canJump;
|
|
|
|
// Token: 0x04000EB7 RID: 3767
|
|
public int soundID;
|
|
|
|
// Token: 0x04000EB8 RID: 3768
|
|
public string race;
|
|
|
|
// Token: 0x04000EB9 RID: 3769
|
|
public string raceTrait;
|
|
|
|
// Token: 0x04000EBA RID: 3770
|
|
public bool canTalk;
|
|
|
|
// Token: 0x04000EBB RID: 3771
|
|
public bool hasEnemies;
|
|
|
|
// Token: 0x04000EBC RID: 3772
|
|
public int nextXP;
|
|
|
|
// Token: 0x04000EBD RID: 3773
|
|
public int XP;
|
|
|
|
// Token: 0x04000EBE RID: 3774
|
|
private List<uint> enemies;
|
|
|
|
// Token: 0x04000EBF RID: 3775
|
|
private uint enemy1;
|
|
|
|
// Token: 0x04000EC0 RID: 3776
|
|
private uint enemy2;
|
|
|
|
// Token: 0x04000EC1 RID: 3777
|
|
private uint enemy3;
|
|
|
|
// Token: 0x04000EC2 RID: 3778
|
|
private uint enemy4;
|
|
|
|
// Token: 0x04000EC3 RID: 3779
|
|
private uint enemy5;
|
|
|
|
// Token: 0x04000EC4 RID: 3780
|
|
private uint enemy6;
|
|
|
|
// Token: 0x04000EC5 RID: 3781
|
|
private uint enemy7;
|
|
|
|
// Token: 0x04000EC6 RID: 3782
|
|
private uint enemy8;
|
|
|
|
// Token: 0x04000EC7 RID: 3783
|
|
private uint enemy9;
|
|
|
|
// Token: 0x04000EC8 RID: 3784
|
|
public uint allegiance;
|
|
|
|
// Token: 0x04000EC9 RID: 3785
|
|
public int level = 1;
|
|
|
|
// Token: 0x04000ECA RID: 3786
|
|
public float strength;
|
|
|
|
// Token: 0x04000ECB RID: 3787
|
|
public float strengthModFlat;
|
|
|
|
// Token: 0x04000ECC RID: 3788
|
|
public float agility;
|
|
|
|
// Token: 0x04000ECD RID: 3789
|
|
public float agilityModFlat;
|
|
|
|
// Token: 0x04000ECE RID: 3790
|
|
public float dexterity;
|
|
|
|
// Token: 0x04000ECF RID: 3791
|
|
public float dexterityModFlat;
|
|
|
|
// Token: 0x04000ED0 RID: 3792
|
|
public float aura;
|
|
|
|
// Token: 0x04000ED1 RID: 3793
|
|
public float auraModFlat;
|
|
|
|
// Token: 0x04000ED2 RID: 3794
|
|
public float pagan;
|
|
|
|
// Token: 0x04000ED3 RID: 3795
|
|
public float paganModFlat;
|
|
|
|
// Token: 0x04000ED4 RID: 3796
|
|
public float sensory;
|
|
|
|
// Token: 0x04000ED5 RID: 3797
|
|
public float sensoryModFlat;
|
|
|
|
// Token: 0x04000ED6 RID: 3798
|
|
public float severityModFlat;
|
|
|
|
// Token: 0x04000ED7 RID: 3799
|
|
public float paganSeverityModFlat;
|
|
|
|
// Token: 0x04000ED8 RID: 3800
|
|
public float hitModFlat;
|
|
|
|
// Token: 0x04000ED9 RID: 3801
|
|
public float paganHitModFlat;
|
|
|
|
// Token: 0x04000EDA RID: 3802
|
|
public float evadeModFlat;
|
|
|
|
// Token: 0x04000EDB RID: 3803
|
|
public float balance;
|
|
|
|
// Token: 0x04000EDC RID: 3804
|
|
public float blockModFlat;
|
|
|
|
// Token: 0x04000EDD RID: 3805
|
|
public string levelUps = "";
|
|
|
|
// Token: 0x04000EDE RID: 3806
|
|
public List<int> diceCountMods = new List<int>();
|
|
|
|
// Token: 0x04000EDF RID: 3807
|
|
public List<int> diceSideMods = new List<int>();
|
|
|
|
// Token: 0x04000EE0 RID: 3808
|
|
public List<int> diceTypeMods = new List<int>();
|
|
|
|
// Token: 0x04000EE1 RID: 3809
|
|
public List<int> savedBag = new List<int>();
|
|
|
|
// Token: 0x04000EE2 RID: 3810
|
|
public List<Vector4> savedDur = new List<Vector4>();
|
|
|
|
// Token: 0x04000EE3 RID: 3811
|
|
private List<string> bagToSave = new List<string>();
|
|
|
|
// Token: 0x04000EE4 RID: 3812
|
|
public bool canUseTwoWeapons;
|
|
|
|
// Token: 0x04000EE5 RID: 3813
|
|
public bool knowsNames;
|
|
|
|
// Token: 0x04000EE6 RID: 3814
|
|
public string savedMerchantList = "";
|
|
|
|
// Token: 0x04000EE7 RID: 3815
|
|
public int savedMerchantTime;
|
|
|
|
// Token: 0x04000EE8 RID: 3816
|
|
public string savedMerchantHistory = "";
|
|
|
|
// Token: 0x04000EE9 RID: 3817
|
|
public bool modalWindowsOpen;
|
|
|
|
// Token: 0x04000EEA RID: 3818
|
|
public bool hasCustomIdle;
|
|
|
|
// Token: 0x04000EEB RID: 3819
|
|
public int currentHand;
|
|
|
|
// Token: 0x04000EEC RID: 3820
|
|
public string familyBackground;
|
|
|
|
// Token: 0x04000EED RID: 3821
|
|
private int[] familyBackgrounds = new int[31];
|
|
|
|
// Token: 0x04000EEE RID: 3822
|
|
private IEnumerator levelUpCorout;
|
|
|
|
// Token: 0x04000EEF RID: 3823
|
|
public int killCount;
|
|
|
|
// Token: 0x04000EF0 RID: 3824
|
|
public int attackCount;
|
|
|
|
// Token: 0x04000EF1 RID: 3825
|
|
public int hitCount;
|
|
|
|
// Token: 0x04000EF2 RID: 3826
|
|
public int songPoints;
|
|
|
|
// Token: 0x04000EF3 RID: 3827
|
|
public bool semizenMagic;
|
|
|
|
// Token: 0x04000EF4 RID: 3828
|
|
public float lastActionModifier;
|
|
|
|
// Token: 0x04000EF5 RID: 3829
|
|
public float stamina;
|
|
|
|
// Token: 0x04000EF6 RID: 3830
|
|
public float maxStamina;
|
|
|
|
// Token: 0x04000EF7 RID: 3831
|
|
public float maxStaminaAdd;
|
|
|
|
// Token: 0x04000EF8 RID: 3832
|
|
public float staminaRegenMod;
|
|
|
|
// Token: 0x04000EF9 RID: 3833
|
|
public float staminaReductionMultiplier;
|
|
|
|
// Token: 0x04000EFA RID: 3834
|
|
public Vector3 savedIntercessionA;
|
|
|
|
// Token: 0x04000EFB RID: 3835
|
|
public Vector3 savedIntercessionB;
|
|
|
|
// Token: 0x04000EFC RID: 3836
|
|
public int savedIntercesion;
|
|
|
|
// Token: 0x04000EFD RID: 3837
|
|
[Header("EFFECTS")]
|
|
public int stun;
|
|
|
|
// Token: 0x04000EFE RID: 3838
|
|
public int confuse;
|
|
|
|
// Token: 0x04000EFF RID: 3839
|
|
public int floating;
|
|
|
|
// Token: 0x04000F00 RID: 3840
|
|
public int flee;
|
|
|
|
// Token: 0x04000F01 RID: 3841
|
|
public int attackAllies;
|
|
|
|
// Token: 0x04000F02 RID: 3842
|
|
public int silent;
|
|
|
|
// Token: 0x04000F03 RID: 3843
|
|
public int invisible;
|
|
|
|
// Token: 0x04000F04 RID: 3844
|
|
public int stuck;
|
|
|
|
// Token: 0x04000F05 RID: 3845
|
|
public int charming;
|
|
|
|
// Token: 0x04000F06 RID: 3846
|
|
public int artistry;
|
|
|
|
// Token: 0x04000F07 RID: 3847
|
|
public int nimbleFingers;
|
|
|
|
// Token: 0x04000F08 RID: 3848
|
|
public int stagger;
|
|
|
|
// Token: 0x04000F09 RID: 3849
|
|
public int onlyLightAtks;
|
|
|
|
// Token: 0x04000F0A RID: 3850
|
|
public float actionTimeMod;
|
|
|
|
// Token: 0x04000F0B RID: 3851
|
|
public float rallySpeed;
|
|
|
|
// Token: 0x04000F0C RID: 3852
|
|
public float spiritAbsorption;
|
|
|
|
// Token: 0x04000F0D RID: 3853
|
|
public float allSkillAdd;
|
|
|
|
// Token: 0x04000F0E RID: 3854
|
|
public float deaf;
|
|
|
|
// Token: 0x04000F0F RID: 3855
|
|
public float blind;
|
|
|
|
// Token: 0x04000F10 RID: 3856
|
|
public float armorReduction;
|
|
|
|
// Token: 0x04000F11 RID: 3857
|
|
public float eqArmorReduction;
|
|
|
|
// Token: 0x04000F12 RID: 3858
|
|
public float reduceStun;
|
|
|
|
// Token: 0x04000F13 RID: 3859
|
|
public float musicResistMod;
|
|
|
|
// Token: 0x04000F14 RID: 3860
|
|
public Vector3 paganResist;
|
|
|
|
// Token: 0x04000F15 RID: 3861
|
|
public bool pinned;
|
|
|
|
// Token: 0x04000F16 RID: 3862
|
|
public bool pinning;
|
|
|
|
// Token: 0x04000F17 RID: 3863
|
|
public int pinHitCount;
|
|
|
|
// Token: 0x04000F18 RID: 3864
|
|
private ES3File saveFile;
|
|
|
|
// Token: 0x04000F19 RID: 3865
|
|
private List<string> savedStatsBag = new List<string>();
|
|
|
|
// Token: 0x04000F1A RID: 3866
|
|
private List<int> savedStatsBagPositions = new List<int>();
|
|
|
|
// Token: 0x04000F1B RID: 3867
|
|
private List<Vector3> savedStatsSockets = new List<Vector3>();
|
|
|
|
// Token: 0x04000F1C RID: 3868
|
|
private List<Vector4> savedStatsDurability = new List<Vector4>();
|
|
|
|
// Token: 0x04000F1D RID: 3869
|
|
private List<int> bagStacksToSave = new List<int>();
|
|
|
|
// Token: 0x04000F1E RID: 3870
|
|
private List<int> bag;
|
|
|
|
// Token: 0x04000F1F RID: 3871
|
|
private List<int> bagPositions;
|
|
|
|
// Token: 0x04000F20 RID: 3872
|
|
private List<Vector4> durability;
|
|
|
|
// Token: 0x04000F21 RID: 3873
|
|
private List<Vector3> sockets;
|
|
|
|
// Token: 0x04000F22 RID: 3874
|
|
public List<string> words = new List<string>();
|
|
|
|
// Token: 0x04000F23 RID: 3875
|
|
private int wordCount;
|
|
|
|
// Token: 0x04000F24 RID: 3876
|
|
public bool hasWordsOfPower;
|
|
|
|
// Token: 0x04000F25 RID: 3877
|
|
public bool hasSpells;
|
|
|
|
// Token: 0x04000F26 RID: 3878
|
|
private float lastGhostRoll;
|
|
|
|
// Token: 0x04000F27 RID: 3879
|
|
public bool hasCircleAnims;
|
|
|
|
// Token: 0x04000F28 RID: 3880
|
|
[Header("COMPANION AI")]
|
|
public int magicTactics;
|
|
|
|
// Token: 0x04000F29 RID: 3881
|
|
public bool kiteInCombat;
|
|
|
|
// Token: 0x04000F2A RID: 3882
|
|
public bool defendMainInCombat;
|
|
|
|
// Token: 0x04000F2B RID: 3883
|
|
public bool stayNearPatrol;
|
|
|
|
// Token: 0x04000F2C RID: 3884
|
|
public Character defendingCharacter;
|
|
|
|
// Token: 0x04000F2D RID: 3885
|
|
public GraphNode stayNearPoint;
|
|
|
|
// Token: 0x04000F2E RID: 3886
|
|
public bool useUtilityAbilities;
|
|
|
|
// Token: 0x04000F2F RID: 3887
|
|
public bool hasBuffItem;
|
|
|
|
// Token: 0x04000F30 RID: 3888
|
|
public bool hasDefenseAbilities;
|
|
|
|
// Token: 0x04000F31 RID: 3889
|
|
public bool hasHealingSongs;
|
|
|
|
// Token: 0x04000F32 RID: 3890
|
|
public bool hasUndeadAbilities;
|
|
|
|
// Token: 0x04000F33 RID: 3891
|
|
public bool hasBuffAbilities;
|
|
|
|
// Token: 0x04000F34 RID: 3892
|
|
public bool hasUtilityAbilities;
|
|
|
|
// Token: 0x04000F35 RID: 3893
|
|
public bool canCharm;
|
|
|
|
// Token: 0x04000F36 RID: 3894
|
|
public bool merchant;
|
|
|
|
// Token: 0x04000F37 RID: 3895
|
|
public int companionAI;
|
|
|
|
// Token: 0x04000F38 RID: 3896
|
|
public int formationGroup = 5;
|
|
|
|
// Token: 0x04000F39 RID: 3897
|
|
public bool isGuard;
|
|
|
|
// Token: 0x04000F3A RID: 3898
|
|
public bool isHouseGuard;
|
|
|
|
// Token: 0x04000F3B RID: 3899
|
|
public bool isLazureGuard;
|
|
|
|
// Token: 0x04000F3C RID: 3900
|
|
public int useItemsAI;
|
|
|
|
// Token: 0x04000F3D RID: 3901
|
|
public int autoBuffsAI;
|
|
|
|
// Token: 0x04000F3E RID: 3902
|
|
public int autoCritsAI;
|
|
|
|
// Token: 0x04000F3F RID: 3903
|
|
public bool isLeader;
|
|
|
|
// Token: 0x04000F40 RID: 3904
|
|
public bool autoCastAI;
|
|
|
|
// Token: 0x04000F41 RID: 3905
|
|
public float synergy1 = 10f;
|
|
|
|
// Token: 0x04000F42 RID: 3906
|
|
public float synergy2 = 20f;
|
|
|
|
// Token: 0x04000F43 RID: 3907
|
|
public bool isFishMonster;
|
|
|
|
// Token: 0x04000F44 RID: 3908
|
|
public bool hasHitAI;
|
|
|
|
// Token: 0x04000F45 RID: 3909
|
|
public bool hasNonCombatAI;
|
|
|
|
// Token: 0x04000F46 RID: 3910
|
|
public bool hasCustomAI;
|
|
|
|
// Token: 0x04000F47 RID: 3911
|
|
public bool hasEveryAttackAI;
|
|
|
|
// Token: 0x04000F48 RID: 3912
|
|
public bool canJumpEvade;
|
|
|
|
// Token: 0x04000F49 RID: 3913
|
|
public bool leaveBehindTiles;
|
|
|
|
// Token: 0x04000F4A RID: 3914
|
|
public bool canCharge;
|
|
|
|
// Token: 0x04000F4B RID: 3915
|
|
public bool canPin;
|
|
|
|
// Token: 0x04000F4C RID: 3916
|
|
public bool canAggressionGroup;
|
|
|
|
// Token: 0x04000F4D RID: 3917
|
|
public bool canSecretGroup;
|
|
|
|
// Token: 0x04000F4E RID: 3918
|
|
public bool canRecoverGroup;
|
|
|
|
// Token: 0x04000F4F RID: 3919
|
|
public bool needsDefending;
|
|
|
|
// Token: 0x04000F50 RID: 3920
|
|
public string customAI;
|
|
|
|
// Token: 0x04000F51 RID: 3921
|
|
public string everyAttackAI;
|
|
|
|
// Token: 0x04000F52 RID: 3922
|
|
public string nonCombatAI;
|
|
|
|
// Token: 0x04000F53 RID: 3923
|
|
public bool boro;
|
|
|
|
// Token: 0x04000F54 RID: 3924
|
|
private float summonSpeed;
|
|
}
|