3724 lines
91 KiB
C#
3724 lines
91 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Text.RegularExpressions;
|
|
using DarkTonic.MasterAudio;
|
|
using Pathfinding;
|
|
using PixelCrushers.DialogueSystem;
|
|
using UnityEngine;
|
|
|
|
// Token: 0x02000029 RID: 41
|
|
public class Effects : MonoBehaviour
|
|
{
|
|
// Token: 0x0600069A RID: 1690 RVA: 0x000880E6 File Offset: 0x000862E6
|
|
private void Start()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600069B RID: 1691 RVA: 0x000880E8 File Offset: 0x000862E8
|
|
public void IncreaseTimeToFull()
|
|
{
|
|
this.effectStartTime = (int)Links.x.gameplay.seconds;
|
|
}
|
|
|
|
// Token: 0x0600069C RID: 1692 RVA: 0x00088100 File Offset: 0x00086300
|
|
public void UpdateEffectTime()
|
|
{
|
|
if (this.ready && !this.resetHeal)
|
|
{
|
|
if (this.waitingToReturnObject > 0)
|
|
{
|
|
this.waitingToReturnObject++;
|
|
if (this.waitingToReturnObject >= 4)
|
|
{
|
|
this.DestroyAfterHealedParticle();
|
|
return;
|
|
}
|
|
}
|
|
if (this.overTimeCount > 0 && !Records.x.pocketPause)
|
|
{
|
|
int num = Mathf.RoundToInt(this.overallTime / (float)this.overTimeTotal);
|
|
if ((int)Links.x.gameplay.seconds > num + this.effectStartTime)
|
|
{
|
|
this.Inflicted(false);
|
|
this.effectStartTime = (int)Links.x.gameplay.seconds;
|
|
}
|
|
}
|
|
if (this.overallTime > 0f && this.waitingToReturnObject == 0 && this.overTimeCount <= 0)
|
|
{
|
|
bool flag = false;
|
|
if (!this.interactive)
|
|
{
|
|
flag = this.target.dead;
|
|
if (!flag)
|
|
{
|
|
flag = this.target.stunned;
|
|
}
|
|
if (this.target.party)
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
this.currentTime = Links.x.gameplay.seconds;
|
|
int num2 = this.effectStartTime + this.timeToWait - (int)this.currentTime;
|
|
if (num2 < 0)
|
|
{
|
|
num2 *= -1;
|
|
}
|
|
num2 = (int)Records.x.ShowSeconds(num2);
|
|
if ((int)this.currentTime > this.timeToWait + this.effectStartTime || flag)
|
|
{
|
|
if (this.interactive)
|
|
{
|
|
this.Healed(false, true);
|
|
}
|
|
else
|
|
{
|
|
this.Healed(this.target.dead, true);
|
|
}
|
|
}
|
|
}
|
|
if (this.effect._WhileOnTile && this.tileEffect == null)
|
|
{
|
|
Character character = this.target;
|
|
Debug.Log(((character != null) ? character.ToString() : null) + " healing because tile effect is gone");
|
|
this.Healed(false, true);
|
|
}
|
|
if (this.effect._StunTime > 0f && ((float)((int)Links.x.gameplay.seconds) > this.effect._StunTime + (float)this.effectStartTime || this.target.dead))
|
|
{
|
|
this.removedStun = true;
|
|
this.target.stats.AddStun(-1);
|
|
if (this.target.stats.Stun() <= 0)
|
|
{
|
|
this.target.stats.SetStun(0);
|
|
this.target.GetUp();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600069D RID: 1693 RVA: 0x00088358 File Offset: 0x00086558
|
|
public void UpdateEffectDurability(float amt)
|
|
{
|
|
if (this.maxDurability == 0f)
|
|
{
|
|
this.maxDurability = this.durability;
|
|
}
|
|
this.durability -= amt;
|
|
if (this.effect._Name.Contains("Vine"))
|
|
{
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Skills", this.target.tr.position, 0.8f, new float?(1f), 0f, this.effect._Sound, null);
|
|
}
|
|
if (this.effect._Name.Contains("Cocoon"))
|
|
{
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Vine", this.target.tr.position, 0.8f, new float?(1f), 0f, "", null);
|
|
for (int i = 0; i < this.pooledEffects.Count; i++)
|
|
{
|
|
if (this.pooledEffects[i])
|
|
{
|
|
this.pooledEffects[i].GetComponent<SetSpellMaterial>().Set(this.durability, this.maxDurability);
|
|
}
|
|
}
|
|
if (this.tileEffect)
|
|
{
|
|
this.tileEffect.SetSpellMaterial(this.durability, this.maxDurability);
|
|
}
|
|
}
|
|
if (this.durability <= 0f)
|
|
{
|
|
this.Healed(this.target.dead, true);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600069E RID: 1694 RVA: 0x000884CC File Offset: 0x000866CC
|
|
private void AddRecord()
|
|
{
|
|
if (this.recordEffects)
|
|
{
|
|
if (this.foundOne)
|
|
{
|
|
this.str.Append("<color ");
|
|
this.str.Append(Links.x.characterSheet.hoverColor);
|
|
this.str.Append(">");
|
|
this.str.Append(", </color>");
|
|
}
|
|
this.foundOne = true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600069F RID: 1695 RVA: 0x00088540 File Offset: 0x00086740
|
|
public string Set(bool healed)
|
|
{
|
|
if (this.source)
|
|
{
|
|
this.sourcePosition = this.source.tr.position;
|
|
}
|
|
if (!healed && this.effect._Name != "PukeSpores" && !this.effect._Script.Contains("AmplifyWound") && this.target)
|
|
{
|
|
float amplifyEffects = this.target.stats.GetAmplifyEffects();
|
|
if (amplifyEffects > 0f && !this.effect._IsBuff)
|
|
{
|
|
this.sourceLevel += amplifyEffects;
|
|
this.str.Clear();
|
|
if (!this.target.npc)
|
|
{
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.target));
|
|
}
|
|
this.str.Append(this.target.stats.GetName());
|
|
if (!this.target.npc)
|
|
{
|
|
this.str.Append("</color>");
|
|
}
|
|
this.str.Append("'s ");
|
|
this.str.Append(this.effect._DisplayName);
|
|
this.str.Append(" amplified");
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
}
|
|
}
|
|
int num = 0;
|
|
if (this.jewelrySlot > 0 || this.effect._IsIntercession)
|
|
{
|
|
num = 1;
|
|
}
|
|
this.str.Clear();
|
|
if (!this.interactive && (this.target.party || !this.fromLoad))
|
|
{
|
|
this.recordEffects = true;
|
|
}
|
|
if (this.effect == null)
|
|
{
|
|
Debug.Log("Effect is null " + this.effectName);
|
|
}
|
|
this.foundOne = false;
|
|
this.overallTime = this.effect._OverallTime;
|
|
if (!healed && !this.resetHeal && (this.effect._FX > 0 || this.effect._Stun > 0 || this.effect._Confuse > 0 || this.effect._Flee > 0 || this.effect._MoveSpeed != 0f || this.effect._ActionTime != 0f) && this.target)
|
|
{
|
|
if (this.interactive)
|
|
{
|
|
GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(this.effect._FX);
|
|
this.pooledEffects.Add(pooledGameObject);
|
|
pooledGameObject.transform.position = this.targetInteractive.transform.position + new Vector3(0f, 1.3f + this.effect._FXOffset, 0f);
|
|
pooledGameObject.SetActive(true);
|
|
}
|
|
else
|
|
{
|
|
if (this.effect._Stun > 0 && !this.effect._NoIcon)
|
|
{
|
|
this.target.AddEffect(40, "");
|
|
}
|
|
if (this.effect._Confuse > 0 && !this.effect._NoIcon)
|
|
{
|
|
this.target.AddEffect(44, "");
|
|
}
|
|
if (this.effect._Flee > 0 && !this.effect._NoIcon)
|
|
{
|
|
this.target.AddEffect(44, "");
|
|
}
|
|
if (this.effect._MoveSpeed != 0f && !this.effect._NoIcon)
|
|
{
|
|
if (this.effect._MoveSpeed > 0f)
|
|
{
|
|
this.target.AddEffect(46, "");
|
|
}
|
|
else
|
|
{
|
|
this.target.AddEffect(48, "");
|
|
}
|
|
}
|
|
if (this.effect._FX > 0 && (!this.target.stats.HasEffect(this.effectName) || this.effect._FX == 92))
|
|
{
|
|
if (this.effect._FXType == "Head" && this.effect._FX != 92 && this.effect._FX != 98 && this.effect._FX != 44 && this.effect._FX != 113)
|
|
{
|
|
GameObject gameObject = this.target.AddEffect(this.effect._FX, "");
|
|
if (gameObject)
|
|
{
|
|
this.pooledEffects.Add(gameObject);
|
|
}
|
|
}
|
|
else if (this.effect._FXType == "Head" && (this.effect._FX == 92 || this.effect._FX == 98 || this.effect._FX == 44 || this.effect._FX == 113))
|
|
{
|
|
GameObject pooledGameObject2 = Links.x.cellar.GetPooledGameObject(this.effect._FX);
|
|
if (pooledGameObject2)
|
|
{
|
|
this.pooledEffects.Add(pooledGameObject2);
|
|
if (this.effect._FX == 98 || this.effect._FX == 44)
|
|
{
|
|
pooledGameObject2.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
|
|
}
|
|
pooledGameObject2.transform.position = this.target.body.GetNeck().position + new Vector3(0f, this.effect._FXOffset, 0f);
|
|
pooledGameObject2.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
if (this.effect._FX == 98 || this.effect._FX == 44 || this.effect._FX == 113)
|
|
{
|
|
pooledGameObject2.transform.SetParent(this.target.body.GetNeck(), true);
|
|
}
|
|
if (this.effect._FX == 113)
|
|
{
|
|
this.target.body.GatherRenderers(false);
|
|
}
|
|
pooledGameObject2.SetActive(true);
|
|
}
|
|
}
|
|
else if (this.effect._FXType == "Tile")
|
|
{
|
|
GameObject pooledGameObject3 = Links.x.cellar.GetPooledGameObject(this.effect._FX);
|
|
if (pooledGameObject3)
|
|
{
|
|
this.pooledEffects.Add(pooledGameObject3);
|
|
pooledGameObject3.transform.position = this.target.tr.position + new Vector3(0f, 1.3f + this.effect._FXOffset, 0f);
|
|
pooledGameObject3.transform.parent = this.target.tr;
|
|
pooledGameObject3.SetActive(true);
|
|
this.effectAnimator = pooledGameObject3.GetComponent<HannahAnimator>();
|
|
}
|
|
}
|
|
else if (this.effect._FXType == "InTile")
|
|
{
|
|
GameObject pooledGameObject4 = Links.x.cellar.GetPooledGameObject(this.effect._FX);
|
|
if (pooledGameObject4)
|
|
{
|
|
this.pooledEffects.Add(pooledGameObject4);
|
|
pooledGameObject4.transform.position = this.target.tr.position + new Vector3(0f, -0.25f + this.effect._FXOffset, 0f);
|
|
if (this.effect._StuckInPlace == 0)
|
|
{
|
|
pooledGameObject4.transform.parent = this.target.tr;
|
|
}
|
|
pooledGameObject4.SetActive(true);
|
|
this.effectAnimator = pooledGameObject4.GetComponent<HannahAnimator>();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
GameObject pooledGameObject5 = Links.x.cellar.GetPooledGameObject(this.effect._FX);
|
|
if (pooledGameObject5)
|
|
{
|
|
this.pooledEffects.Add(pooledGameObject5);
|
|
pooledGameObject5.transform.position = this.target.tr.position;
|
|
pooledGameObject5.SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
if (this.effectAnimator)
|
|
{
|
|
this.effectAnimator.Play("Start");
|
|
}
|
|
}
|
|
}
|
|
if (this.overTimeCount == this.overTimeTotal || !this.effect._OverTime || healed)
|
|
{
|
|
if (this.effect._Knockback > 0f)
|
|
{
|
|
if (!this.fromLoad && !healed && !this.interactive && !this.resetHeal && this.target.isHit && this.target.hitTime > 0f)
|
|
{
|
|
float num2 = (this.effect._Knockback + this.sourceLevel) * 8f;
|
|
this.target.hitTime += num2;
|
|
if (Records.x.editor)
|
|
{
|
|
Debug.Log("Knockback time increased by " + num2.ToString());
|
|
}
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Knocked back");
|
|
}
|
|
}
|
|
if (this.effect._TerrainReq != "")
|
|
{
|
|
this.terrainDependent = true;
|
|
}
|
|
if (this.effect._Stun > 0 && !this.interactive)
|
|
{
|
|
if (healed && !this.resetHeal)
|
|
{
|
|
if (!this.removedStun)
|
|
{
|
|
this.target.stats.AddStun(-1);
|
|
if (this.target.stats.GetStatusCount(this, "Stun") <= 0 || this.target.stats.Stun() <= 0)
|
|
{
|
|
this.target.stats.SetStun(0);
|
|
this.target.GetUp();
|
|
}
|
|
}
|
|
if (this.effect._Name == "Stunned" && this.target.party)
|
|
{
|
|
this.target.EndStun();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.AddStun(1);
|
|
if (!this.target.downed)
|
|
{
|
|
float num3 = this.overallTime;
|
|
if (this.effect._StunTime > 0f)
|
|
{
|
|
num3 = this.effect._StunTime;
|
|
}
|
|
if (this.target.stats.reduceStun > 0f)
|
|
{
|
|
num3 *= 1f - this.target.stats.reduceStun / 100f;
|
|
}
|
|
this.target.Fall((int)num3);
|
|
}
|
|
}
|
|
if (this.recordEffects && this.effect._StunTime <= 0f)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Stunned");
|
|
}
|
|
this.Icon("Stunned", healed, 1);
|
|
}
|
|
if (this.effect._AddActionTime != 0f)
|
|
{
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (this.effect._AddActionTime > 0f)
|
|
{
|
|
this.str.Append("Stall Action Time");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Bump Action Time");
|
|
}
|
|
}
|
|
float num4 = this.effect._AddActionTime;
|
|
float num5 = Records.x.GetPotencyAdd("AddActionTime", this.sourceLevel, num);
|
|
if (this.effect._AddActionTime < 0f)
|
|
{
|
|
num5 *= -1f;
|
|
}
|
|
num4 += num5;
|
|
string[] array = new string[7];
|
|
int num6 = 0;
|
|
Character character = this.target;
|
|
array[num6] = ((character != null) ? character.ToString() : null);
|
|
array[1] = " add action time ";
|
|
array[2] = num4.ToString();
|
|
array[3] = " ";
|
|
array[4] = this.effect._AddActionTime.ToString();
|
|
array[5] = " ";
|
|
array[6] = num5.ToString();
|
|
Debug.Log(string.Concat(array));
|
|
if (this.effect._AddActionTime < 0f)
|
|
{
|
|
this.Icon("ActionTimeUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("ActionTimeDown", healed, 1);
|
|
}
|
|
if (!healed)
|
|
{
|
|
this.target.UpdateAtkTime(num4);
|
|
}
|
|
}
|
|
if (this.effect._Confuse > 0 && !this.interactive)
|
|
{
|
|
if (healed)
|
|
{
|
|
this.target.stats.AddConfuse(-1);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.AddConfuse(1);
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Confused");
|
|
}
|
|
if (this.target.stats.Confuse() > 0 && !healed)
|
|
{
|
|
if (this.target.actions)
|
|
{
|
|
this.target.actions.Interrupt();
|
|
}
|
|
GraphNode graphNode;
|
|
if (this.source)
|
|
{
|
|
graphNode = this.source.node;
|
|
}
|
|
else
|
|
{
|
|
graphNode = this.target.node;
|
|
}
|
|
this.target.Flee(graphNode, false, Links.x.gameplay.seconds, this.effect._OverallTime);
|
|
}
|
|
int statusCount = this.target.stats.GetStatusCount(this, "Confuse");
|
|
if (healed && (statusCount <= 0 || this.target.stats.Confuse() <= 0) && !this.resetHeal)
|
|
{
|
|
if (statusCount <= 0)
|
|
{
|
|
this.target.stats.confuse = 0;
|
|
}
|
|
this.target.EndFleeFromEffect();
|
|
}
|
|
this.Icon("Confused", healed, 1);
|
|
}
|
|
if (this.effect._StuckInPlace > 0 && !this.interactive)
|
|
{
|
|
if (healed)
|
|
{
|
|
this.target.stats.AddStuck(-1);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.AddStuck(1);
|
|
}
|
|
if (healed && (this.target.stats.GetStatusCount(this, "Stuck") <= 0 || this.target.stats.Stuck() <= 0))
|
|
{
|
|
this.target.stats.stuck = 0;
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Stuck");
|
|
}
|
|
this.Icon("Stuck", healed, 1);
|
|
}
|
|
if (this.effect._Script == "Float" && !this.interactive)
|
|
{
|
|
if (healed)
|
|
{
|
|
this.target.stats.AddFloating(-1);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.AddFloating(1);
|
|
}
|
|
if (this.target.stats.Floating() > 0)
|
|
{
|
|
this.target.body.bodyOffset = new Vector3(0f, 1.5f, 0f);
|
|
this.target.body.SetGrounderState(false);
|
|
}
|
|
else if (this.target.stats.Floating() <= 0 && !this.resetHeal)
|
|
{
|
|
this.target.body.bodyOffset = new Vector3(0f, 0f, 0f);
|
|
this.target.body.SetGrounderState(true);
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Floating a half-pole off the ground");
|
|
}
|
|
this.Icon("Float", healed, 1);
|
|
}
|
|
if (this.effect._Flee > 0 && !this.interactive)
|
|
{
|
|
if (healed)
|
|
{
|
|
this.target.stats.AddFlee(-1);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.AddFlee(1);
|
|
}
|
|
if (this.target.stats.GetStatusCount(this, "Flee") <= 0 && healed)
|
|
{
|
|
this.target.stats.flee = 0;
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Fleeing");
|
|
}
|
|
this.Icon("Fleeing", healed, 1);
|
|
}
|
|
if (this.effect._Invisible > 0f && !this.interactive)
|
|
{
|
|
if (healed)
|
|
{
|
|
this.target.stats.AddInvisible(-1);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.AddInvisible(1);
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Invisibility");
|
|
}
|
|
}
|
|
if (this.effect._Charming > 0f && !this.interactive)
|
|
{
|
|
float num7 = Records.x.GetPotencyAdd("Charming", this.sourceLevel, num);
|
|
if (this.effect._Charming < 0f)
|
|
{
|
|
num7 *= -1f;
|
|
}
|
|
float num8 = this.effect._Charming + num7;
|
|
if (num8 > 0f)
|
|
{
|
|
this.Icon("CharmingUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("CharmingDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num8 *= -1f;
|
|
}
|
|
this.target.stats.AddCharming((int)num8);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (num8 > 0f)
|
|
{
|
|
this.str.Append("Charming +");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Charming ");
|
|
}
|
|
this.str.Append(num8);
|
|
}
|
|
}
|
|
if (this.effect._NimbleFingers != 0f && !this.interactive)
|
|
{
|
|
float num9 = Records.x.GetPotencyAdd("NimbleFingers", this.sourceLevel, num);
|
|
if (this.effect._NimbleFingers < 0f)
|
|
{
|
|
num9 *= -1f;
|
|
}
|
|
float num10 = this.effect._NimbleFingers + num9;
|
|
if (num10 > 0f)
|
|
{
|
|
this.Icon("NimbleUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("NimbleDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num10 *= -1f;
|
|
}
|
|
this.target.stats.AddNimbleFingers((int)num10);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (num10 > 0f)
|
|
{
|
|
this.str.Append("Nimble Fingers +");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Nimble Fingers ");
|
|
}
|
|
this.str.Append(num10);
|
|
}
|
|
}
|
|
if (this.effect._Silent != 0f && !this.interactive)
|
|
{
|
|
if (healed)
|
|
{
|
|
this.target.stats.AddSilent(-1);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.AddSilent(1);
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Silent");
|
|
}
|
|
this.Icon("Silent", healed, 1);
|
|
}
|
|
if (this.effect._Deaf != 0f && !this.interactive)
|
|
{
|
|
float num11 = Records.x.GetPotencyAdd("SightHearing", this.sourceLevel, num);
|
|
if (this.effect._Deaf < 0f)
|
|
{
|
|
num11 *= -1f;
|
|
}
|
|
float num12 = this.effect._Deaf + num11;
|
|
if (num12 > 0f)
|
|
{
|
|
this.Icon("Deaf", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("Deaf", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num12 *= -1f;
|
|
}
|
|
this.target.stats.AddDeaf(num12);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Hearing");
|
|
}
|
|
}
|
|
if (this.effect._Blind != 0f && !this.interactive)
|
|
{
|
|
float num13 = Records.x.GetPotencyAdd("SightHearing", this.sourceLevel, num);
|
|
if (this.effect._Blind < 0f)
|
|
{
|
|
num13 *= -1f;
|
|
}
|
|
float num14 = this.effect._Blind + num13;
|
|
if (num14 > 0f)
|
|
{
|
|
this.Icon("Blind", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("Blind", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num14 *= -1f;
|
|
}
|
|
this.target.stats.AddBlind(num14);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Vision");
|
|
}
|
|
}
|
|
if (this.effect._ReduceArmor != 0f && !this.interactive)
|
|
{
|
|
float num15 = Records.x.GetPotencyAdd("ReduceArmor", this.sourceLevel, num);
|
|
if (this.effect._ReduceArmor < 0f)
|
|
{
|
|
num15 *= -1f;
|
|
}
|
|
float num16 = this.effect._ReduceArmor + num15;
|
|
if (healed)
|
|
{
|
|
num16 *= -1f;
|
|
}
|
|
if (num == 0)
|
|
{
|
|
if (num16 > 0f)
|
|
{
|
|
num16 = Mathf.Ceil(num16);
|
|
}
|
|
else
|
|
{
|
|
num16 = Mathf.Floor(num16);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num16 = Mathf.Round(num16);
|
|
}
|
|
this.target.UpdateArmor((int)num16);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (num16 > 0f)
|
|
{
|
|
this.str.Append("Armor Durability -");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Armor Durability +");
|
|
}
|
|
this.str.Append(num16);
|
|
}
|
|
}
|
|
if (this.effect._ReduceEqArmor != 0f && !this.interactive)
|
|
{
|
|
float num17 = Records.x.GetPotencyAdd("ReduceEqArmor", this.sourceLevel, num);
|
|
if (this.effect._ReduceEqArmor < 0f)
|
|
{
|
|
num17 *= -1f;
|
|
}
|
|
float num18 = this.effect._ReduceEqArmor + num17;
|
|
if (healed)
|
|
{
|
|
num18 *= -1f;
|
|
}
|
|
this.target.stats.AddEqArmorReduction(num18);
|
|
if (!healed)
|
|
{
|
|
if (this.target.stamina && this.target.stamina.hasArmor)
|
|
{
|
|
if (num18 < 0f)
|
|
{
|
|
this.target.stamina.BuffArmor();
|
|
}
|
|
else
|
|
{
|
|
this.target.stamina.DebuffArmor();
|
|
}
|
|
}
|
|
}
|
|
else if (this.target.stamina && this.target.stamina.hasArmor)
|
|
{
|
|
if (num18 < 0f)
|
|
{
|
|
this.target.stamina.RemoveArmorBuff();
|
|
}
|
|
else
|
|
{
|
|
this.target.stamina.RemoveArmorDebuff();
|
|
}
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (num18 > 0f)
|
|
{
|
|
num18 *= -1f;
|
|
this.str.Append("Soften Armor ");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Harden Armor ");
|
|
}
|
|
this.str.Append(num18);
|
|
}
|
|
}
|
|
if (this.effect._AddStamina != 0f && !this.interactive && !healed)
|
|
{
|
|
float num19 = Records.x.GetPotencyAdd("Stamina", this.sourceLevel, num);
|
|
if (this.effect._AddStamina < 0f)
|
|
{
|
|
num19 *= -1f;
|
|
}
|
|
float num20 = this.effect._AddStamina + num19;
|
|
if (healed)
|
|
{
|
|
num20 *= -1f;
|
|
}
|
|
if (!healed)
|
|
{
|
|
this.target.stats.AddStamina(num20);
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (num20 < 0f)
|
|
{
|
|
this.str.Append("Stamina ");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Stamina +");
|
|
}
|
|
this.str.Append(num20);
|
|
}
|
|
}
|
|
if (this.effect._ReduceStun != 0f && !this.interactive)
|
|
{
|
|
float num21 = Records.x.GetPotencyAdd("ReduceStun", this.sourceLevel, num);
|
|
if (this.effect._ReduceStun < 0f)
|
|
{
|
|
num21 *= -1f;
|
|
}
|
|
float num22 = this.effect._ReduceStun + num21;
|
|
if (healed)
|
|
{
|
|
num22 *= -1f;
|
|
}
|
|
this.target.stats.AddReduceStun(num22);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append(Mathf.RoundToInt(num22));
|
|
this.str.Append("% Stun Reduction");
|
|
}
|
|
}
|
|
if (this.effect._ActionTime > 0f && !this.interactive)
|
|
{
|
|
float num23 = Records.x.GetPotencyAdd("ActionTime", this.sourceLevel, num);
|
|
if (this.effect._ActionTime < 0f)
|
|
{
|
|
num23 *= -1f;
|
|
}
|
|
float num24 = this.effect._ActionTime + num23;
|
|
if (num24 > 0f)
|
|
{
|
|
this.Icon("ActionTimeUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("ActionTimeDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num24 *= -1f;
|
|
}
|
|
this.target.stats.AddActionTimeMod(num24 * -1f);
|
|
if (this.target.mainSelected)
|
|
{
|
|
Links.x.hudControl.UpdateAttackTimeMods();
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (num24 > 0f)
|
|
{
|
|
this.str.Append("Action Speed -");
|
|
this.str.Append(Mathf.Round(num24 * 10f) / 10f);
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Action Time +");
|
|
this.str.Append(Mathf.Round(num24 * -1f * 10f) / 10f);
|
|
}
|
|
}
|
|
}
|
|
if (this.effect._MoveSpeed != 0f && !this.interactive)
|
|
{
|
|
float num25 = Records.x.GetPotencyAdd("MoveSpeed", this.sourceLevel, num);
|
|
if (this.effect._MoveSpeed < 0f)
|
|
{
|
|
num25 *= -3f;
|
|
}
|
|
float num26 = this.effect._MoveSpeed + num25;
|
|
if (num26 > 0f)
|
|
{
|
|
this.Icon("MoveSpeedUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("MoveSpeedDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num26 *= -1f;
|
|
}
|
|
this.target.stats.AddMoveSpeedMod(num26);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Move Speed ");
|
|
if (num26 > 0f)
|
|
{
|
|
this.str.Append("increased ");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("reduced ");
|
|
}
|
|
this.str.Append(Mathf.Round(Mathf.Abs(num26) * 10f));
|
|
this.str.Append("%");
|
|
}
|
|
}
|
|
if (this.effect._StrFlat != 0f && !this.interactive)
|
|
{
|
|
float num27 = Records.x.GetPotencyAdd("Stats", this.sourceLevel, num);
|
|
if (this.effect._StrFlat < 0f)
|
|
{
|
|
num27 *= -1f;
|
|
}
|
|
float num28 = this.effect._StrFlat + num27;
|
|
if (num == 0)
|
|
{
|
|
if (num28 > 0f)
|
|
{
|
|
num28 = Mathf.Ceil(num28);
|
|
}
|
|
else
|
|
{
|
|
num28 = Mathf.Floor(num28);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num28 = Mathf.Round(num28);
|
|
}
|
|
int arrowsForStat = this.GetArrowsForStat("Strength", num28);
|
|
if (num28 > 0f)
|
|
{
|
|
this.Icon("StrUp", healed, arrowsForStat);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("StrDown", healed, arrowsForStat);
|
|
}
|
|
if (healed)
|
|
{
|
|
num28 *= -1f;
|
|
}
|
|
this.target.stats.AddStrengthMod(num28);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Strength ");
|
|
if (num28 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num28);
|
|
}
|
|
}
|
|
if (this.effect._StrDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd = Records.x.GetPotencyAdd("StatsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(0, (int)this.effect._StrDC, (int)this.effect._StrDS + (int)potencyAdd, healed);
|
|
int arrowsForStat2 = this.GetArrowsForStat("Strength", (float)this.GetDiceModifierAverage((int)this.effect._StrDC, (int)this.effect._StrDS + (int)potencyAdd));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Strength dice ");
|
|
if (this.effect._StrDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._StrDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._StrDS);
|
|
}
|
|
if (this.effect._StrDC > 0f)
|
|
{
|
|
this.Icon("StrUp", healed, arrowsForStat2);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("StrDown", healed, arrowsForStat2);
|
|
}
|
|
}
|
|
if (this.effect._DexFlat != 0f && !this.interactive)
|
|
{
|
|
float num29 = Records.x.GetPotencyAdd("Stats", this.sourceLevel, num);
|
|
if (this.effect._DexFlat < 0f)
|
|
{
|
|
num29 *= -1f;
|
|
}
|
|
float num30 = this.effect._DexFlat + num29;
|
|
if (num == 0)
|
|
{
|
|
if (num30 > 0f)
|
|
{
|
|
num30 = Mathf.Ceil(num30);
|
|
}
|
|
else
|
|
{
|
|
num30 = Mathf.Floor(num30);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num30 = Mathf.Round(num30);
|
|
}
|
|
int arrowsForStat3 = this.GetArrowsForStat("Dexterity", num30);
|
|
if (num30 > 0f)
|
|
{
|
|
this.Icon("DexUp", healed, arrowsForStat3);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("DexDown", healed, arrowsForStat3);
|
|
}
|
|
if (healed)
|
|
{
|
|
num30 *= -1f;
|
|
}
|
|
this.target.stats.AddDexterityMod(num30);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Dexterity ");
|
|
if (num30 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num30);
|
|
}
|
|
}
|
|
if (this.effect._DexDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd2 = Records.x.GetPotencyAdd("StatsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(4, (int)this.effect._DexDC, (int)this.effect._DexDS + (int)potencyAdd2, healed);
|
|
int arrowsForStat4 = this.GetArrowsForStat("Dexterity", (float)this.GetDiceModifierAverage((int)this.effect._DexDC, (int)this.effect._DexDS + (int)potencyAdd2));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Dexterity dice ");
|
|
if (this.effect._DexDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._DexDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._DexDS);
|
|
}
|
|
if (this.effect._DexDC > 0f)
|
|
{
|
|
this.Icon("DexUp", healed, arrowsForStat4);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("DexDown", healed, arrowsForStat4);
|
|
}
|
|
}
|
|
if (this.effect._AglFlat != 0f && !this.interactive)
|
|
{
|
|
float num31 = Records.x.GetPotencyAdd("Stats", this.sourceLevel, num);
|
|
if (this.effect._AglFlat < 0f)
|
|
{
|
|
num31 *= -1f;
|
|
}
|
|
float num32 = this.effect._AglFlat + num31;
|
|
if (num == 0)
|
|
{
|
|
if (num32 > 0f)
|
|
{
|
|
num32 = Mathf.Ceil(num32);
|
|
}
|
|
else
|
|
{
|
|
num32 = Mathf.Floor(num32);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num32 = Mathf.Round(num32);
|
|
}
|
|
int arrowsForStat5 = this.GetArrowsForStat("Agility", num32);
|
|
if (num32 > 0f)
|
|
{
|
|
this.Icon("AglUp", healed, arrowsForStat5);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("AglDown", healed, arrowsForStat5);
|
|
}
|
|
if (healed)
|
|
{
|
|
num32 *= -1f;
|
|
}
|
|
this.target.stats.AddAgilityMod(num32);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Agility ");
|
|
if (num32 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num32);
|
|
}
|
|
}
|
|
if (this.effect._AglDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd3 = Records.x.GetPotencyAdd("StatsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(1, (int)this.effect._AglDC, (int)this.effect._AglDS + (int)potencyAdd3, healed);
|
|
int arrowsForStat6 = this.GetArrowsForStat("Agility", (float)this.GetDiceModifierAverage((int)this.effect._AglDC, (int)this.effect._AglDS + (int)potencyAdd3));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Strength dice ");
|
|
if (this.effect._AglDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._AglDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._AglDS);
|
|
}
|
|
if (this.effect._AglDC > 0f)
|
|
{
|
|
this.Icon("AglUp", healed, arrowsForStat6);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("AglDown", healed, arrowsForStat6);
|
|
}
|
|
}
|
|
if (this.effect._AurFlat != 0f && !this.interactive)
|
|
{
|
|
float num33 = Records.x.GetPotencyAdd("Stats", this.sourceLevel, num);
|
|
if (this.effect._AurFlat < 0f)
|
|
{
|
|
num33 *= -1f;
|
|
}
|
|
float num34 = this.effect._AurFlat + num33;
|
|
if (num == 0)
|
|
{
|
|
if (num34 > 0f)
|
|
{
|
|
num34 = Mathf.Ceil(num34);
|
|
}
|
|
else
|
|
{
|
|
num34 = Mathf.Floor(num34);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num34 = Mathf.Round(num34);
|
|
}
|
|
int arrowsForStat7 = this.GetArrowsForStat("Aura", num34);
|
|
if (num34 > 0f)
|
|
{
|
|
this.Icon("AurUp", healed, arrowsForStat7);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("AurDown", healed, arrowsForStat7);
|
|
}
|
|
if (healed)
|
|
{
|
|
num34 *= -1f;
|
|
}
|
|
this.target.stats.AddAuraMod(num34);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Aura ");
|
|
if (num34 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num34);
|
|
}
|
|
}
|
|
if (this.effect._AurDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd4 = Records.x.GetPotencyAdd("StatsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(2, (int)this.effect._AurDC, (int)this.effect._AurDS + (int)potencyAdd4, healed);
|
|
int arrowsForStat8 = this.GetArrowsForStat("Aura", (float)this.GetDiceModifierAverage((int)this.effect._AurDC, (int)this.effect._AurDS + (int)potencyAdd4));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Aura dice ");
|
|
if (this.effect._AurDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._AurDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._AurDS);
|
|
}
|
|
if (this.effect._AurDC > 0f)
|
|
{
|
|
this.Icon("AurUp", healed, arrowsForStat8);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("AurDown", healed, arrowsForStat8);
|
|
}
|
|
}
|
|
if (this.effect._PagFlat != 0f && !this.interactive && !this.target.stats.semizenMagic)
|
|
{
|
|
float num35 = Records.x.GetPotencyAdd("Stats", this.sourceLevel, num);
|
|
if (this.effect._PagFlat < 0f)
|
|
{
|
|
num35 *= -1f;
|
|
}
|
|
float num36 = this.effect._PagFlat + num35;
|
|
if (num == 0)
|
|
{
|
|
if (num36 > 0f)
|
|
{
|
|
num36 = Mathf.Ceil(num36);
|
|
}
|
|
else
|
|
{
|
|
num36 = Mathf.Floor(num36);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num36 = Mathf.Round(num36);
|
|
}
|
|
int arrowsForStat9 = this.GetArrowsForStat("Pagan", num36);
|
|
if (num36 > 0f)
|
|
{
|
|
this.Icon("PagUp", healed, arrowsForStat9);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("PagDown", healed, arrowsForStat9);
|
|
}
|
|
if (healed)
|
|
{
|
|
num36 *= -1f;
|
|
}
|
|
this.target.stats.AddPaganMod(num36);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Pagan ");
|
|
if (num36 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num36);
|
|
}
|
|
}
|
|
if (this.effect._PagDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd5 = Records.x.GetPotencyAdd("StatsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(3, (int)this.effect._PagDC, (int)this.effect._PagDS + (int)potencyAdd5, healed);
|
|
int arrowsForStat10 = this.GetArrowsForStat("Pagan", (float)this.GetDiceModifierAverage((int)this.effect._PagDC, (int)this.effect._PagDS + (int)potencyAdd5));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Pagan dice ");
|
|
if (this.effect._PagDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._PagDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._PagDS);
|
|
}
|
|
if (this.effect._PagDC > 0f)
|
|
{
|
|
this.Icon("PagUp", healed, arrowsForStat10);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("PagDown", healed, arrowsForStat10);
|
|
}
|
|
}
|
|
if (this.effect._SenFlat != 0f && !this.interactive)
|
|
{
|
|
float num37 = Records.x.GetPotencyAdd("Stats", this.sourceLevel, num);
|
|
if (this.effect._SenFlat < 0f)
|
|
{
|
|
num37 *= -1f;
|
|
}
|
|
float num38 = this.effect._SenFlat + num37;
|
|
if (num == 0)
|
|
{
|
|
if (num38 > 0f)
|
|
{
|
|
num38 = Mathf.Ceil(num38);
|
|
}
|
|
else
|
|
{
|
|
num38 = Mathf.Floor(num38);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num38 = Mathf.Round(num38);
|
|
}
|
|
int arrowsForStat11 = this.GetArrowsForStat("Sensory", num38);
|
|
if (num38 > 0f)
|
|
{
|
|
this.Icon("SenUp", healed, arrowsForStat11);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("SenDown", healed, arrowsForStat11);
|
|
}
|
|
if (healed)
|
|
{
|
|
num38 *= -1f;
|
|
}
|
|
this.target.stats.AddSensoryMod(num38);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Sensory ");
|
|
if (num38 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num38);
|
|
}
|
|
}
|
|
if (this.effect._SenDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd6 = Records.x.GetPotencyAdd("StatsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(5, (int)this.effect._SenDC, (int)this.effect._SenDS + (int)potencyAdd6, healed);
|
|
int arrowsForStat12 = this.GetArrowsForStat("Sensory", (float)this.GetDiceModifierAverage((int)this.effect._SenDC, (int)this.effect._SenDS + (int)potencyAdd6));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Strength dice ");
|
|
if (this.effect._SenDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._SenDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._SenDS);
|
|
}
|
|
if (this.effect._SenDC > 0f)
|
|
{
|
|
this.Icon("SenUp", healed, arrowsForStat12);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("SenDown", healed, arrowsForStat12);
|
|
}
|
|
}
|
|
if (this.effect._DmgFlat != 0f && !this.interactive)
|
|
{
|
|
float num39 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._DmgFlat < 0f)
|
|
{
|
|
num39 *= -1f;
|
|
}
|
|
float num40 = this.effect._DmgFlat + num39;
|
|
if (num == 0)
|
|
{
|
|
if (num40 > 0f)
|
|
{
|
|
num40 = Mathf.Ceil(num40);
|
|
}
|
|
else
|
|
{
|
|
num40 = Mathf.Floor(num40);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num40 = Mathf.Round(num40);
|
|
}
|
|
int arrowsForMod = this.GetArrowsForMod("Severity", num40);
|
|
if (num40 > 0f)
|
|
{
|
|
this.Icon("SeverityUp", healed, arrowsForMod);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("SeverityDown", healed, arrowsForMod);
|
|
}
|
|
if (healed)
|
|
{
|
|
num40 *= -1f;
|
|
}
|
|
this.target.stats.AddDmgMod(num40);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Damage ");
|
|
if (num40 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(Mathf.Round(num40));
|
|
}
|
|
}
|
|
if (this.effect._DmgDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd7 = Records.x.GetPotencyAdd("ModsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(6, (int)this.effect._DmgDC, (int)this.effect._DmgDS + (int)potencyAdd7, healed);
|
|
int arrowsForMod2 = this.GetArrowsForMod("Severity", (float)this.GetDiceModifierAverage((int)this.effect._DmgDC, (int)this.effect._DmgDS + (int)potencyAdd7));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Damage dice ");
|
|
if (this.effect._DmgDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._DmgDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._DmgDS);
|
|
}
|
|
if (this.effect._DmgDC > 0f)
|
|
{
|
|
this.Icon("SeverityUp", healed, arrowsForMod2);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("SeverityDown", healed, arrowsForMod2);
|
|
}
|
|
}
|
|
if (this.effect._MPotencyFlat != 0f && !this.interactive)
|
|
{
|
|
float num41 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._MPotencyFlat < 0f)
|
|
{
|
|
num41 *= -1f;
|
|
}
|
|
float num42 = this.effect._MPotencyFlat + num41;
|
|
if (num == 0)
|
|
{
|
|
if (num42 > 0f)
|
|
{
|
|
num42 = Mathf.Ceil(num42);
|
|
}
|
|
else
|
|
{
|
|
num42 = Mathf.Floor(num42);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num42 = Mathf.Round(num42);
|
|
}
|
|
int arrowsForMod3 = this.GetArrowsForMod("PaganSeverity", num42);
|
|
if (num42 > 0f)
|
|
{
|
|
this.Icon("PaganSeverityUp", healed, arrowsForMod3);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("PaganSeverityDown", healed, arrowsForMod3);
|
|
}
|
|
if (healed)
|
|
{
|
|
num42 *= -1f;
|
|
}
|
|
this.target.stats.AddPaganDmgMod(num42);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Pagan Potency ");
|
|
if (num42 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num42);
|
|
}
|
|
}
|
|
if (this.effect._MPotencyDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd8 = Records.x.GetPotencyAdd("ModsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(7, (int)this.effect._MPotencyDC, (int)this.effect._MPotencyDS + (int)potencyAdd8, healed);
|
|
int arrowsForMod4 = this.GetArrowsForMod("PaganSeverity", (float)this.GetDiceModifierAverage((int)this.effect._MPotencyDC, (int)this.effect._MPotencyDS + (int)potencyAdd8));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Pagan Potency dice ");
|
|
if (this.effect._MPotencyDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._MPotencyDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._MPotencyDS);
|
|
}
|
|
if (this.effect._MPotencyDC > 0f)
|
|
{
|
|
this.Icon("PaganSeverityUp", healed, arrowsForMod4);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("PaganSeverityDown", healed, arrowsForMod4);
|
|
}
|
|
}
|
|
if (this.effect._HitFlat != 0f && !this.interactive)
|
|
{
|
|
float num43 = Records.x.GetPotencyAdd("HitChance", this.sourceLevel, num);
|
|
if (this.effect._HitFlat < 0f)
|
|
{
|
|
num43 *= -1f;
|
|
}
|
|
float num44 = this.effect._HitFlat + num43;
|
|
num44 = Mathf.Round(num44 * 10f) * 0.1f;
|
|
int arrowsForMod5 = this.GetArrowsForMod("HitChance", num44);
|
|
if (num44 > 0f)
|
|
{
|
|
this.Icon("HitChanceUp", healed, arrowsForMod5);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("HitChanceDown", healed, arrowsForMod5);
|
|
}
|
|
if (healed)
|
|
{
|
|
num44 *= -1f;
|
|
}
|
|
this.target.stats.AddHitMod(num44);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Hit Chance ");
|
|
if (num44 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(Mathf.Round(num44));
|
|
}
|
|
}
|
|
if (this.effect._HitDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd9 = Records.x.GetPotencyAdd("ModsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(8, (int)this.effect._HitDC, (int)this.effect._HitDS + (int)potencyAdd9, healed);
|
|
int arrowsForMod6 = this.GetArrowsForMod("HitChance", (float)this.GetDiceModifierAverage((int)this.effect._HitDC, (int)this.effect._HitDS + (int)potencyAdd9));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Hit Chance dice ");
|
|
if (this.effect._HitDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._HitDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._HitDS);
|
|
}
|
|
if (this.effect._HitDC > 0f)
|
|
{
|
|
this.Icon("HitChanceUp", healed, arrowsForMod6);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("HitChanceDown", healed, arrowsForMod6);
|
|
}
|
|
}
|
|
if (this.effect._MHitFlat != 0f && !this.interactive)
|
|
{
|
|
float num45 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._MHitFlat < 0f)
|
|
{
|
|
num45 *= -1f;
|
|
}
|
|
float num46 = this.effect._MHitFlat + num45;
|
|
num46 = Mathf.Round(num46 * 10f) * 0.1f;
|
|
if (num46 > 0f)
|
|
{
|
|
this.Icon("HitChanceUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("HitChanceDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num46 *= -1f;
|
|
}
|
|
this.target.stats.AddPaganHitMod(num46);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Pagan Hit Chance ");
|
|
if (num46 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num46);
|
|
}
|
|
}
|
|
if (this.effect._MHitDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd10 = Records.x.GetPotencyAdd("ModsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(9, (int)this.effect._MHitDC, (int)this.effect._MHitDS + (int)potencyAdd10, healed);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Pagan Hit Chance dice ");
|
|
if (this.effect._MHitDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._MHitDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._MHitDS);
|
|
}
|
|
if (this.effect._MHitDC > 0f)
|
|
{
|
|
this.Icon("HitChanceUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("HitChanceDown", healed, 1);
|
|
}
|
|
}
|
|
if (this.effect._EvadeFlat != 0f && !this.interactive)
|
|
{
|
|
float num47 = Records.x.GetPotencyAdd("EvadeChance", this.sourceLevel, num);
|
|
if (this.effect._EvadeFlat < 0f)
|
|
{
|
|
num47 *= -1f;
|
|
}
|
|
float num48 = this.R2(this.effect._EvadeFlat + num47);
|
|
num48 = Mathf.Round(num48 * 10f) * 0.1f;
|
|
int arrowsForMod7 = this.GetArrowsForMod("Evasion", num48);
|
|
if (num48 > 0f)
|
|
{
|
|
this.Icon("EvasionChanceUp", healed, arrowsForMod7);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("EvasionChanceDown", healed, arrowsForMod7);
|
|
}
|
|
if (healed)
|
|
{
|
|
num48 *= -1f;
|
|
}
|
|
this.target.stats.AddEvadeMod(num48);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Evade Chance ");
|
|
if (num48 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(Mathf.Round(num48));
|
|
}
|
|
}
|
|
if (this.effect._EvadeDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd11 = Records.x.GetPotencyAdd("ModsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(10, (int)this.effect._EvadeDC, (int)this.effect._EvadeDS + (int)potencyAdd11, healed);
|
|
int arrowsForMod8 = this.GetArrowsForMod("Evasion", (float)this.GetDiceModifierAverage((int)this.effect._EvadeDC, (int)this.effect._EvadeDS + (int)potencyAdd11));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Evade Chance dice ");
|
|
if (this.effect._EvadeDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._EvadeDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._EvadeDS);
|
|
}
|
|
if (this.effect._EvadeDC > 0f)
|
|
{
|
|
this.Icon("EvasionChanceUp", healed, arrowsForMod8);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("EvasionChanceDown", healed, arrowsForMod8);
|
|
}
|
|
}
|
|
if (this.effect._BlockFlat != 0f && !this.interactive)
|
|
{
|
|
float num49 = Records.x.GetPotencyAdd("BlockChance", this.sourceLevel, num);
|
|
if (this.effect._BlockFlat < 0f)
|
|
{
|
|
num49 *= -1f;
|
|
}
|
|
float num50 = this.effect._BlockFlat + num49;
|
|
num50 = Mathf.Round(num50 * 10f) * 0.1f;
|
|
int arrowsForMod9 = this.GetArrowsForMod("BlockChance", num50);
|
|
if (num50 > 0f)
|
|
{
|
|
this.Icon("BlockChanceUp", healed, arrowsForMod9);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("BlockChanceDown", healed, arrowsForMod9);
|
|
}
|
|
if (healed)
|
|
{
|
|
num50 *= -1f;
|
|
}
|
|
this.target.stats.AddBlockMod(num50);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Block Chance ");
|
|
if (num50 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(Mathf.Round(num50));
|
|
}
|
|
}
|
|
if (this.effect._BlockDC != 0f && !this.interactive)
|
|
{
|
|
float potencyAdd12 = Records.x.GetPotencyAdd("ModsDice", this.sourceLevel, num);
|
|
this.target.stats.UpdateDiceModifiers(10, (int)this.effect._BlockDC, (int)this.effect._BlockDS + (int)potencyAdd12, healed);
|
|
int arrowsForMod10 = this.GetArrowsForMod("BlockChance", (float)this.GetDiceModifierAverage((int)this.effect._BlockDC, (int)this.effect._BlockDS + (int)potencyAdd12));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Block Chance dice ");
|
|
if (this.effect._BlockDC > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(this.effect._BlockDC);
|
|
this.str.Append("d");
|
|
this.str.Append(this.effect._BlockDS);
|
|
}
|
|
if (this.effect._BlockDC > 0f)
|
|
{
|
|
this.Icon("BlockChanceUp", healed, arrowsForMod10);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("BlockChanceDown", healed, arrowsForMod10);
|
|
}
|
|
}
|
|
if (this.effect._MusicResistance != 0f && !this.interactive)
|
|
{
|
|
float num51 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._MusicResistance < 0f)
|
|
{
|
|
num51 *= -1f;
|
|
}
|
|
float num52 = this.effect._MusicResistance + num51;
|
|
if (num == 0)
|
|
{
|
|
if (num52 > 0f)
|
|
{
|
|
num52 = Mathf.Ceil(num52);
|
|
}
|
|
else
|
|
{
|
|
num52 = Mathf.Floor(num52);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num52 = Mathf.Round(num52);
|
|
}
|
|
int arrowsForMod11 = this.GetArrowsForMod("MusicResist", num52);
|
|
if (num52 > 0f)
|
|
{
|
|
this.Icon("MusicResistUp", healed, arrowsForMod11);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("MusicResistDown", healed, arrowsForMod11);
|
|
}
|
|
if (healed)
|
|
{
|
|
num52 *= -1f;
|
|
}
|
|
this.target.stats.AddMusicResist(num52);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Resist Pagan Vine Spells ");
|
|
if (num52 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num52);
|
|
}
|
|
}
|
|
if (this.effect._Artistry > 0f && !this.interactive)
|
|
{
|
|
float num53 = Records.x.GetPotencyAdd("Artistry", this.sourceLevel, num);
|
|
if (this.effect._Artistry < 0f)
|
|
{
|
|
num53 *= -1f;
|
|
}
|
|
float num54 = this.effect._Artistry + num53;
|
|
int arrowsForMod12 = this.GetArrowsForMod("Artistry", num54);
|
|
if (num54 > 0f)
|
|
{
|
|
this.Icon("ArtistryUp", healed, arrowsForMod12);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("ArtistryDown", healed, arrowsForMod12);
|
|
}
|
|
if (healed)
|
|
{
|
|
num54 *= -1f;
|
|
}
|
|
this.target.stats.AddArtistry((int)num54);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (num54 > 0f)
|
|
{
|
|
this.str.Append("Artistry +");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Artistry ");
|
|
}
|
|
this.str.Append(num54);
|
|
}
|
|
}
|
|
if (this.effect._PaganResistVines != 0f && !this.interactive)
|
|
{
|
|
float num55 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._PaganResistVines < 0f)
|
|
{
|
|
num55 *= -1f;
|
|
}
|
|
float num56 = this.effect._PaganResistVines + num55;
|
|
if (num == 0)
|
|
{
|
|
if (num56 > 0f)
|
|
{
|
|
num56 = Mathf.Ceil(num56);
|
|
}
|
|
else
|
|
{
|
|
num56 = Mathf.Floor(num56);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num56 = Mathf.Round(num56);
|
|
}
|
|
int arrowsForMod13 = this.GetArrowsForMod("PaganResistVines", num56);
|
|
if (num56 > 0f)
|
|
{
|
|
this.Icon("PaganResistUp", healed, arrowsForMod13);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("PaganResistDown", healed, arrowsForMod13);
|
|
}
|
|
if (healed)
|
|
{
|
|
num56 *= -1f;
|
|
}
|
|
this.target.stats.AddPaganResist(num56, "Vines");
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Resist Pagan Vine Spells ");
|
|
if (num56 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num56);
|
|
}
|
|
}
|
|
if (this.effect._PaganResistSpores != 0f && !this.interactive)
|
|
{
|
|
float num57 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._PaganResistSpores < 0f)
|
|
{
|
|
num57 *= -1f;
|
|
}
|
|
float num58 = this.effect._PaganResistSpores + num57;
|
|
if (num == 0)
|
|
{
|
|
if (num58 > 0f)
|
|
{
|
|
num58 = Mathf.Ceil(num58);
|
|
}
|
|
else
|
|
{
|
|
num58 = Mathf.Floor(num58);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num58 = Mathf.Round(num58);
|
|
}
|
|
int arrowsForMod14 = this.GetArrowsForMod("PaganResistSpores", num58);
|
|
if (num58 > 0f)
|
|
{
|
|
this.Icon("PaganResistUp", healed, arrowsForMod14);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("PaganResistDown", healed, arrowsForMod14);
|
|
}
|
|
if (healed)
|
|
{
|
|
num58 *= -1f;
|
|
}
|
|
this.target.stats.AddPaganResist(num58, "Spores");
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Resist Pagan Spore Spells ");
|
|
if (num58 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num58);
|
|
}
|
|
}
|
|
if (this.effect._PaganResistFauna != 0f && !this.interactive)
|
|
{
|
|
float num59 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._PaganResistFauna < 0f)
|
|
{
|
|
num59 *= -1f;
|
|
}
|
|
float num60 = this.effect._PaganResistFauna + num59;
|
|
if (num == 0)
|
|
{
|
|
if (num60 > 0f)
|
|
{
|
|
num60 = Mathf.Ceil(num60);
|
|
}
|
|
else
|
|
{
|
|
num60 = Mathf.Floor(num60);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num60 = Mathf.Round(num60);
|
|
}
|
|
int arrowsForMod15 = this.GetArrowsForMod("PaganResistFauna", num60);
|
|
if (num60 > 0f)
|
|
{
|
|
this.Icon("PaganResistUp", healed, arrowsForMod15);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("PaganResistDown", healed, arrowsForMod15);
|
|
}
|
|
if (healed)
|
|
{
|
|
num60 *= -1f;
|
|
}
|
|
this.target.stats.AddPaganResist(num60, "Fauna");
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Resist Pagan Vine Spells ");
|
|
if (num60 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num60);
|
|
}
|
|
}
|
|
if (this.effect._Balance != 0f && !this.interactive)
|
|
{
|
|
float num61 = Records.x.GetPotencyAdd("FlatMods", this.sourceLevel, num);
|
|
if (this.effect._Balance < 0f)
|
|
{
|
|
num61 *= -1f;
|
|
}
|
|
float num62 = this.effect._Balance + num61;
|
|
num62 = Mathf.Round(num62 * 10f) * 0.1f;
|
|
if (num62 > 0f)
|
|
{
|
|
this.Icon("BalanceUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("BalanceDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num62 *= -1f;
|
|
}
|
|
this.target.stats.AddBalanceMod(num62);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Balance ");
|
|
if (num62 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num62);
|
|
}
|
|
}
|
|
if (this.effect._SpiritAbsorption != 0f && !this.interactive)
|
|
{
|
|
float num63 = Records.x.GetPotencyAdd("SpiritAbsorb", this.sourceLevel, num);
|
|
if (this.effect._SpiritAbsorption < 0f)
|
|
{
|
|
num63 *= -1f;
|
|
}
|
|
float num64 = this.effect._SpiritAbsorption + num63;
|
|
num64 = Mathf.Round(num64 * 10f) * 0.1f;
|
|
if (num64 > 0f)
|
|
{
|
|
this.Icon("SpiritAbsorptionUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("SpiritAbsorptionDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num64 *= -1f;
|
|
}
|
|
if (!healed)
|
|
{
|
|
this.target.stats.AddSpiritAbsorption(num64);
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Spirit Absorption");
|
|
if (num64 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num64);
|
|
}
|
|
}
|
|
}
|
|
if (this.effect._RallySpeed != 0f && !this.interactive)
|
|
{
|
|
float num65 = Records.x.GetPotencyAdd("RallySpeed", this.sourceLevel, num);
|
|
if (this.effect._RallySpeed < 0f)
|
|
{
|
|
num65 *= -1f;
|
|
}
|
|
float num66 = this.effect._RallySpeed + num65;
|
|
if (healed)
|
|
{
|
|
num66 *= -1f;
|
|
}
|
|
num66 = Mathf.Round(num66 * 100f) * 0.01f;
|
|
Links.x.fellowship.rallySpeed += num66;
|
|
if (!healed && this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Rally Speed ");
|
|
if (num66 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num66);
|
|
}
|
|
if ((double)Links.x.fellowship.rallySpeed > 0.01)
|
|
{
|
|
Links.x.hudControl.RallyBuffToggle(true);
|
|
}
|
|
else
|
|
{
|
|
Links.x.hudControl.RallyBuffToggle(false);
|
|
}
|
|
}
|
|
if (this.effect._StaminaSpeed != 0f && !this.interactive)
|
|
{
|
|
float num67 = Records.x.GetPotencyAdd("StaminaSpeed", this.sourceLevel, num);
|
|
if (this.effect._StaminaSpeed < 0f)
|
|
{
|
|
num67 *= -1f;
|
|
}
|
|
float num68 = this.effect._StaminaSpeed + num67;
|
|
if (num68 > 0f)
|
|
{
|
|
this.Icon("StaminaRegenUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("StaminaRegenDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num68 *= -1f;
|
|
}
|
|
this.target.stats.AddStamimaSpeed(num68);
|
|
num68 = Mathf.Round(num68 * 10f) / 10f;
|
|
if (this.target.stamina)
|
|
{
|
|
if (this.target.stats.staminaRegenMod >= 0f)
|
|
{
|
|
this.target.stamina.RemoveStaminaDebuff();
|
|
}
|
|
else
|
|
{
|
|
this.target.stamina.DebuffStamina();
|
|
}
|
|
}
|
|
else if (this.target.party && this.target.portrait)
|
|
{
|
|
this.target.portrait.SetStaminaBuff();
|
|
}
|
|
if (!healed && this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
if (this.effect._StaminaSpeed % 1f != 0f)
|
|
{
|
|
this.str.Append("Stamina Regeneration Speed x");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append("Fatigue Recovery Speed x");
|
|
}
|
|
this.str.Append(num68);
|
|
}
|
|
}
|
|
if (this.effect._StaminaReduceMult != 0f && !this.interactive)
|
|
{
|
|
float num69 = Records.x.GetPotencyAdd("StaminaReduce", this.sourceLevel, num);
|
|
if (this.effect._StaminaReduceMult < 0f)
|
|
{
|
|
num69 *= -1f;
|
|
}
|
|
float num70 = this.effect._StaminaReduceMult + num69;
|
|
if (num70 > 0f)
|
|
{
|
|
this.Icon("StaminaRegenUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("StaminaRegenDown", healed, 1);
|
|
}
|
|
if (healed)
|
|
{
|
|
num70 *= -1f;
|
|
}
|
|
this.target.stats.AddStamimaReductionMultipler(num70);
|
|
num70 = Mathf.Round(num70 * 10f) / 10f;
|
|
if (!healed && this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Extra Fatigue x ");
|
|
this.str.Append(num70);
|
|
}
|
|
}
|
|
if (this.effect._RallyFill != 0f && !this.interactive)
|
|
{
|
|
float num71 = this.effect._FatigueMax;
|
|
if (healed)
|
|
{
|
|
num71 *= -1f;
|
|
}
|
|
if (!healed)
|
|
{
|
|
if (this.effect._RallyFill >= 1f)
|
|
{
|
|
float rallyInterval = Links.x.hudControl.rallyInterval;
|
|
float num72 = rallyInterval;
|
|
if (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost + rallyInterval > rallyInterval * 3f)
|
|
{
|
|
num72 = rallyInterval * 3f - (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost);
|
|
}
|
|
Links.x.fellowship.rallyBoost += num72;
|
|
Links.x.hudControl.SetRallyBars();
|
|
}
|
|
if (this.effect._RallyFill == 2f)
|
|
{
|
|
float rallyInterval2 = Links.x.hudControl.rallyInterval;
|
|
float num73 = rallyInterval2;
|
|
if (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost + rallyInterval2 > rallyInterval2 * 3f)
|
|
{
|
|
num73 = rallyInterval2 * 3f - (Links.x.fellowship.rally + Links.x.fellowship.rallyBoost);
|
|
}
|
|
Links.x.fellowship.rallyBoost += num73;
|
|
Links.x.hudControl.SetRallyBars();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.effect._Spirit != 0f && !healed && !this.interactive && ((this.effect._OverTime && !Records.x.pocketPause) || !this.effect._OverTime || Links.x.combat.inRally))
|
|
{
|
|
float num74 = Records.x.GetPotencyAdd("Spirit", this.sourceLevel, num);
|
|
if (this.effect._Spirit < 0f)
|
|
{
|
|
num74 *= -1f;
|
|
}
|
|
float num75 = this.effect._Spirit + num74;
|
|
if (healed)
|
|
{
|
|
num75 *= -1f;
|
|
}
|
|
if (num == 0)
|
|
{
|
|
if (num75 > 0f)
|
|
{
|
|
num75 = Mathf.Ceil(num75);
|
|
}
|
|
else
|
|
{
|
|
num75 = Mathf.Floor(num75);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num75 = Mathf.Round(num75);
|
|
}
|
|
if (this.effect._OverTime)
|
|
{
|
|
float num76 = this.effect._Spirit + num74;
|
|
if (num75 > 0f)
|
|
{
|
|
num75 = (float)Mathf.RoundToInt(num75 / (float)this.overTimeTotal);
|
|
float num77 = this.savedSpiritTotal;
|
|
this.savedSpiritTotal += num75;
|
|
if (this.savedSpiritTotal >= num76)
|
|
{
|
|
num75 = num76 - num77;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.overTimeTotal = 3;
|
|
num75 = (float)Mathf.RoundToInt(num75 / (float)this.overTimeTotal);
|
|
float num78 = this.savedSpiritTotal;
|
|
this.savedSpiritTotal += num75;
|
|
if (this.savedSpiritTotal <= num76)
|
|
{
|
|
num75 = num76 - num78;
|
|
}
|
|
}
|
|
}
|
|
this.target.stats.AddSpirit(Mathf.RoundToInt(num75));
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Spirit ");
|
|
if (num75 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(num75);
|
|
}
|
|
if (!healed && this.effect._Permanent && !this.effect._Name.Contains("HealthSpiritStamina"))
|
|
{
|
|
MasterAudio.PlaySoundAndForget("Potion", 0.8f, new float?(1f), 0f, "", null);
|
|
}
|
|
}
|
|
if (this.effect._HealthMax != 0f && !this.interactive)
|
|
{
|
|
float num79 = Records.x.GetPotencyAdd("Health", this.sourceLevel, num);
|
|
if (this.effect._HealthMax < 0f)
|
|
{
|
|
num79 *= -1f;
|
|
}
|
|
float num80 = this.effect._HealthMax + num79;
|
|
if (healed)
|
|
{
|
|
num80 *= -1f;
|
|
}
|
|
this.target.stats.AddHealthMax(Mathf.RoundToInt(num80));
|
|
if (this.effect._Name.Contains("Ghost") || this.effect._Name.Contains("Circle"))
|
|
{
|
|
if (num80 > 0f)
|
|
{
|
|
this.Icon("Ghost", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("Ghost", healed, 1);
|
|
}
|
|
if (!healed)
|
|
{
|
|
this.target.AddEffect(85, "");
|
|
}
|
|
else
|
|
{
|
|
this.target.RemoveEffect(85, "", true);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (num80 > 0f)
|
|
{
|
|
this.target.stats.AddHealth(Mathf.RoundToInt(num80));
|
|
}
|
|
if (num80 > 0f)
|
|
{
|
|
this.Icon("MaxHealthUp", healed, 1);
|
|
}
|
|
else
|
|
{
|
|
this.Icon("MaxHealthDown", healed, 1);
|
|
}
|
|
}
|
|
if (!healed && this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Max Health");
|
|
if (num80 > 0f)
|
|
{
|
|
this.str.Append("+");
|
|
}
|
|
this.str.Append(Mathf.Round(num80));
|
|
}
|
|
}
|
|
if ((this.healthOverride != 0f || this.effect._Health != 0f) && !healed)
|
|
{
|
|
float num81 = Records.x.GetPotencyAdd("Health", this.sourceLevel, num);
|
|
if (this.effect._Health < 0f)
|
|
{
|
|
num81 *= -1f;
|
|
}
|
|
float num82 = this.effect._Health + num81;
|
|
if (healed)
|
|
{
|
|
num82 *= -1f;
|
|
}
|
|
if (this.healthOverride != 0f)
|
|
{
|
|
num82 = this.healthOverride;
|
|
}
|
|
if (num == 0)
|
|
{
|
|
if (num82 > 0f)
|
|
{
|
|
num82 = Mathf.Ceil(num82);
|
|
}
|
|
else
|
|
{
|
|
num82 = Mathf.Floor(num82);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num82 = Mathf.Round(num82);
|
|
}
|
|
if (this.effect._OverTime)
|
|
{
|
|
float num83 = this.effect._Health + num81;
|
|
if (this.healthOverride != 0f)
|
|
{
|
|
num83 = this.healthOverride;
|
|
}
|
|
if (num82 > 0f)
|
|
{
|
|
num82 = (float)Mathf.RoundToInt(num82 / (float)this.overTimeTotal);
|
|
float num84 = this.savedHealthTotal;
|
|
this.savedHealthTotal += num82;
|
|
if (this.savedHealthTotal >= num83)
|
|
{
|
|
num82 = num83 - num84;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.overTimeTotal = 3;
|
|
if (this.overTimeCount == this.overTimeTotal && Mathf.Abs(num82) < (float)this.overTimeTotal)
|
|
{
|
|
this.overTimeCount = 0;
|
|
}
|
|
else
|
|
{
|
|
num82 = (float)Mathf.RoundToInt(num82 / (float)this.overTimeTotal);
|
|
float num85 = this.savedHealthTotal;
|
|
this.savedHealthTotal += num82;
|
|
if (this.savedHealthTotal <= num83)
|
|
{
|
|
num82 = num83 - num85;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
float num86 = 0f;
|
|
if (num82 < 0f)
|
|
{
|
|
bool flag = false;
|
|
bool flag2 = false;
|
|
if (this.ability != null && !this.effect._Name.Contains("Frog") && !this.effect._Name.Contains("Poison"))
|
|
{
|
|
flag2 = this.ability._IsSpell;
|
|
}
|
|
if (this.effect._Name.Contains("Impact") || flag2)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (this.effect._OverTime)
|
|
{
|
|
flag = false;
|
|
}
|
|
if (flag && this.target)
|
|
{
|
|
num86 = this.target.stats.ArmorNumber(false, true) / 2f;
|
|
num86 /= 10f;
|
|
num86 = this.target.stats.R1(num86 + this.target.stats.ArmorPaganAura(1) / 100f);
|
|
num86 = 1f - num86;
|
|
num82 *= num86;
|
|
}
|
|
}
|
|
if (num82 != 0f)
|
|
{
|
|
if (num == 0)
|
|
{
|
|
if (num82 > 0f)
|
|
{
|
|
num82 = Mathf.Ceil(num82);
|
|
}
|
|
else
|
|
{
|
|
num82 = Mathf.Floor(num82);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num82 = Mathf.Round(num82);
|
|
}
|
|
if (!this.interactive)
|
|
{
|
|
float num87 = this.target.stats.AddPotionBoosts();
|
|
if (num82 > 0f)
|
|
{
|
|
this.target.stats.AddHealth((int)num82 + (int)num87);
|
|
}
|
|
this.AddRecord();
|
|
}
|
|
if (!healed)
|
|
{
|
|
if (num82 > 0f)
|
|
{
|
|
if (this.jewelrySlot <= 0 && !this.effect._IsIntercession)
|
|
{
|
|
if (this.effect._Name.Contains("HealthSpiritStamina"))
|
|
{
|
|
MasterAudio.PlaySoundAndForget("Interactives", 0.8f, new float?(1f), 0f, "Eating", null);
|
|
}
|
|
else if (this.effect._Name.Contains("Health") || this.effect._Name.Contains("Berry"))
|
|
{
|
|
MasterAudio.PlaySoundAndForget("Potion", 0.8f, new float?(1f), 0f, "", null);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bool flag3 = false;
|
|
if (this.target && this.target.npc)
|
|
{
|
|
flag3 = true;
|
|
}
|
|
bool flag4 = false;
|
|
if (this.source && this.target)
|
|
{
|
|
flag4 = Records.x.IsTextLeft(this.source, this.target);
|
|
}
|
|
Animator animator;
|
|
if (this.interactive || flag3)
|
|
{
|
|
bool flag5 = false;
|
|
if (this.source && this.source.mainSelected)
|
|
{
|
|
flag5 = true;
|
|
}
|
|
if (!this.interactive && flag5)
|
|
{
|
|
animator = Links.x.cellar.GetAnimatedText("PocketDmg", (num82 * -1f).ToString(), flag4);
|
|
}
|
|
else
|
|
{
|
|
animator = Links.x.cellar.GetAnimatedText("NPCDmg", (num82 * -1f).ToString(), flag4);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
animator = Links.x.cellar.GetAnimatedText("PartyDmg", (num82 * -1f).ToString(), flag4);
|
|
}
|
|
if ((this.effect._Name.Contains("Frog") || this.effect._Name.Contains("Poison")) && this.target)
|
|
{
|
|
this.target.body.StartBlink(0.25f);
|
|
}
|
|
if (this.interactive)
|
|
{
|
|
animator.gameObject.transform.position = this.targetInteractive.transform.position + new Vector3(Random.Range(0f, 0.1f), Random.Range(0.5f, 1.1f), 0f);
|
|
}
|
|
else
|
|
{
|
|
animator.gameObject.transform.position = this.target.body.HeadPosition(0f) + new Vector3(Random.Range(0f, 1f), Random.Range(2f, 3f), 0f);
|
|
}
|
|
animator.gameObject.SetActive(true);
|
|
if (this.interactive)
|
|
{
|
|
Breakable.BreakableEffectRequired breakableEffectRequired = Breakable.BreakableEffectRequired.Damage;
|
|
if (this.chestTarget)
|
|
{
|
|
breakableEffectRequired = this.chestTarget.chest.effectRequired;
|
|
}
|
|
if (this.doorTarget)
|
|
{
|
|
breakableEffectRequired = this.doorTarget.door.effectRequired;
|
|
}
|
|
if (this.breakableTarget)
|
|
{
|
|
breakableEffectRequired = this.breakableTarget.breakable.effectRequired;
|
|
}
|
|
if (this.effect._InteractiveType.Contains(breakableEffectRequired.ToString()))
|
|
{
|
|
if (this.chestTarget)
|
|
{
|
|
this.chestTarget.currentHealth += Mathf.RoundToInt(num82);
|
|
if (this.chestTarget.currentHealth <= 0)
|
|
{
|
|
this.chestTarget.ClickToBreak(this.source, false);
|
|
}
|
|
this.chestTarget.AlertOwner(true, this.source);
|
|
}
|
|
if (this.doorTarget)
|
|
{
|
|
this.doorTarget.currentHealth += Mathf.RoundToInt(num82);
|
|
if (this.doorTarget.currentHealth <= 0)
|
|
{
|
|
this.doorTarget.ClickToBreak(this.source, false);
|
|
}
|
|
this.doorTarget.AlertOwner(true, this.source);
|
|
}
|
|
if (this.breakableTarget)
|
|
{
|
|
this.breakableTarget.currentHealth += Mathf.RoundToInt(num82);
|
|
if (this.breakableTarget.currentHealth <= 0)
|
|
{
|
|
this.breakableTarget.ClickToBreak(this.source, false, false);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
StringFast stringFast = new StringFast(32);
|
|
stringFast.Clear();
|
|
stringFast.Append(this.effect._DisplayName);
|
|
stringFast.Append(" has no effect");
|
|
Links.x.gameFeed.AddFeed(stringFast.ToString());
|
|
}
|
|
}
|
|
else if (this.target)
|
|
{
|
|
StringFast stringFast2 = new StringFast(32);
|
|
stringFast2.Clear();
|
|
if (!this.target.npc)
|
|
{
|
|
stringFast2.Append(Links.x.gameFeed.GetPartyColorText(this.target));
|
|
}
|
|
stringFast2.Append(this.target.stats.GetName());
|
|
if (!this.target.npc)
|
|
{
|
|
stringFast2.Append("</color>");
|
|
}
|
|
stringFast2.Append(" lost ");
|
|
stringFast2.Append(Mathf.Round(num82 * -1f));
|
|
stringFast2.Append(" health from ");
|
|
stringFast2.Append(this.effect._DisplayName);
|
|
if (num86 > 0f)
|
|
{
|
|
stringFast2.Append(" (armor blocked ");
|
|
stringFast2.Append(Mathf.Round((1f - num86) * 100f));
|
|
stringFast2.Append("%)");
|
|
}
|
|
if (!Records.x.miniGame)
|
|
{
|
|
Links.x.gameFeed.AddFeed(stringFast2.ToString());
|
|
}
|
|
if (this.source)
|
|
{
|
|
if (this.effect._Name.Contains("Explode"))
|
|
{
|
|
this.source.AddDamage(this.target, num82 * -1f, true, true, true, "Bounce", 0f, 0f);
|
|
}
|
|
else if (this.source.npc && this.target.npc)
|
|
{
|
|
this.source.AddDamage(this.target, num82 * -1f, true, this.interrupt, true, "Small Bounce", 0f, 0f);
|
|
}
|
|
else
|
|
{
|
|
this.source.AddDamage(this.target, num82 * -1f, true, this.interrupt, true, "None", 0f, 0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.effect._Script != "" && !this.interactive)
|
|
{
|
|
if (this.effect._Script == "PukeSpore" || this.effect._Script.Contains("AmplifyWounds"))
|
|
{
|
|
if (this.effect._Script.Contains("AmplifyWounds"))
|
|
{
|
|
if (this.effect._Script.Contains("1"))
|
|
{
|
|
this.sourceLevel = 1f;
|
|
}
|
|
else
|
|
{
|
|
this.sourceLevel = 2f;
|
|
}
|
|
}
|
|
if (healed)
|
|
{
|
|
this.target.stats.ChangeAilmentMultiplier(this.sourceLevel, false, healed);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.ChangeAilmentMultiplier(this.sourceLevel, false, healed);
|
|
}
|
|
this.AddRecord();
|
|
if (this.recordEffects)
|
|
{
|
|
this.str.Append("Increase existing ailments");
|
|
}
|
|
}
|
|
this.effect._Script == "BoneSpikes";
|
|
if (this.effect._Script == "VineCocoon")
|
|
{
|
|
if (this.maxDurability == 0f)
|
|
{
|
|
this.maxDurability = this.durability;
|
|
}
|
|
this.AddRecord();
|
|
if (this.recordEffects)
|
|
{
|
|
this.str.Append("In a shield of a vines with a durability of ");
|
|
this.str.Append(this.durability);
|
|
}
|
|
}
|
|
if (this.effect._Script == "AttractionSpore")
|
|
{
|
|
if (!healed)
|
|
{
|
|
this.target.StartFleeAroundPoint(this.tileEffect.startNode);
|
|
}
|
|
else
|
|
{
|
|
this.target.EndFleeAroundPoint();
|
|
}
|
|
this.AddRecord();
|
|
if (this.recordEffects)
|
|
{
|
|
this.str.Append("Attracted to a enemy-selected location");
|
|
}
|
|
this.Icon("Compelled", healed, 1);
|
|
if (!healed)
|
|
{
|
|
GameObject gameObject2 = this.target.AddEffect(44, "");
|
|
if (gameObject2)
|
|
{
|
|
this.pooledEffects.Add(gameObject2);
|
|
}
|
|
}
|
|
}
|
|
if (this.effect._Script == "SkillsDown")
|
|
{
|
|
float num88 = (float)this.effect._Level;
|
|
float potencyAdd13 = Records.x.GetPotencyAdd("SkillsDown", this.sourceLevel, num);
|
|
num88 += potencyAdd13;
|
|
num88 *= -1f;
|
|
this.Icon("SkillsDown", healed, 1);
|
|
if (!healed)
|
|
{
|
|
this.target.stats.ReduceAllSkills(num88);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.ReduceAllSkills(num88 * -1f);
|
|
}
|
|
this.AddRecord();
|
|
if (this.recordEffects)
|
|
{
|
|
this.str.Append("Reduce all skills");
|
|
}
|
|
}
|
|
}
|
|
if (!healed && !this.resetHeal)
|
|
{
|
|
if (this.effect._Sound != "" && !this.fromLoad)
|
|
{
|
|
if (!this.interactive)
|
|
{
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Skills", this.target.tr.position, 0.8f, new float?(1f), 0f, this.effect._Sound, null);
|
|
}
|
|
else
|
|
{
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Skills", this.targetInteractive.transform.position, 0.8f, new float?(1f), 0f, this.effect._Sound, null);
|
|
}
|
|
}
|
|
if (this.overallTime == 0f && !this.effect._WhileOnTile)
|
|
{
|
|
this.RemoveEffect();
|
|
}
|
|
else if (this.overallTime == -1f)
|
|
{
|
|
this.overallTime = 0f;
|
|
}
|
|
else
|
|
{
|
|
this.effectStartTime = (int)Links.x.gameplay.seconds;
|
|
if (this.overallTime > 0f)
|
|
{
|
|
this.timeToWait = (int)this.overallTime;
|
|
}
|
|
if (this.effect._IsSong)
|
|
{
|
|
this.overallTime += (float)Mathf.RoundToInt(Records.x.GetPotencyAdd("Time", this.sourceLevel, num));
|
|
}
|
|
if (this.overrideDuration > 0f)
|
|
{
|
|
this.timeToWait = (int)this.overrideDuration;
|
|
}
|
|
}
|
|
this.ready = true;
|
|
}
|
|
if (this.effect._RemoveAilments && !this.interactive && !this.resetHeal)
|
|
{
|
|
if (!healed)
|
|
{
|
|
this.target.stats.RemoveAllAilments();
|
|
return "Status effects removed";
|
|
}
|
|
if (this.recordEffects)
|
|
{
|
|
this.AddRecord();
|
|
this.str.Append("Remove harmful ailments");
|
|
}
|
|
}
|
|
string text = "";
|
|
if (this.recordEffects)
|
|
{
|
|
this.displayEffects = this.str.ToString();
|
|
text = this.displayEffects;
|
|
if (this.target.party && this.displayEffects != null)
|
|
{
|
|
string text2 = Regex.Replace(this.displayEffects, ", ", "\n");
|
|
this.displayEffects = text2;
|
|
}
|
|
if (text != null && text.Length > 10 && text.Substring(text.Length - 10) == ", </color>")
|
|
{
|
|
text = text.Substring(0, text.Length - 10) + "</color>";
|
|
}
|
|
if (this.target.party && Links.x.characterSheet.open)
|
|
{
|
|
Links.x.characterSheet.SetupStatusIcons();
|
|
}
|
|
}
|
|
if (this.effect._OverTime && !this.resetHeal)
|
|
{
|
|
this.overTimeCount--;
|
|
if (this.overTimeCount <= 0 && !healed && this.overallTime <= 1f)
|
|
{
|
|
this.Healed(false, true);
|
|
}
|
|
else if (this.target && this.target.party && this.recordEffects)
|
|
{
|
|
this.displayEffects += "\nEffects are granted over a period of time";
|
|
}
|
|
}
|
|
if (healed && this.target && this.target.party && Links.x.characterSheet.open)
|
|
{
|
|
Links.x.characterSheet.SetupStatusIcons();
|
|
}
|
|
if (this.effect._Name.Contains("Resting") && !healed)
|
|
{
|
|
this.target.resting = true;
|
|
}
|
|
if (this.effect._Name.Contains("Quest") && !this.resetHeal)
|
|
{
|
|
this.RunQuestCode(this.effect._Name, healed);
|
|
}
|
|
if (this.effect._Name.Contains("EquipItem") && !this.resetHeal)
|
|
{
|
|
this.RunEqiupItemCode(healed);
|
|
}
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x060006A0 RID: 1696 RVA: 0x0008DDD4 File Offset: 0x0008BFD4
|
|
private void Icon(string n, bool healing, int arrows)
|
|
{
|
|
if (this.interactive)
|
|
{
|
|
return;
|
|
}
|
|
if (!this.effect._ShowInStatus)
|
|
{
|
|
return;
|
|
}
|
|
if (this.effect._NoIcon)
|
|
{
|
|
return;
|
|
}
|
|
if (!this.target.npc && this.target.portrait)
|
|
{
|
|
if (!healing)
|
|
{
|
|
this.target.portrait.AddEffect(n, this);
|
|
this.iconNames.Add(n);
|
|
}
|
|
else
|
|
{
|
|
this.target.portrait.RemoveEffect(this);
|
|
}
|
|
}
|
|
if (this.source == this.target && ((this.effect._IsIntercession && this.effect._OverallTime < 1f) || this.jewelrySlot > 0))
|
|
{
|
|
return;
|
|
}
|
|
if (n != "Stunned" && !this.resetHeal)
|
|
{
|
|
bool flag = false;
|
|
if (n.Contains("Severity"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("HitChance"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Pag"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Agl"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Str"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Aur"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Dex"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Sen"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Evasion"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Block"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Resist"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Silent"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Skills"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("ActionTime"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (n.Contains("Stuck"))
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (!healing)
|
|
{
|
|
this.target.CreateStatusRing(this, n, arrows);
|
|
return;
|
|
}
|
|
this.target.HealStatusRing(this, n);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060006A1 RID: 1697 RVA: 0x0008DFB8 File Offset: 0x0008C1B8
|
|
public void ChangeAilmentMultiplier(float amt, bool isBuff, bool healing)
|
|
{
|
|
if (this.interactive)
|
|
{
|
|
return;
|
|
}
|
|
if (isBuff && !this.effect._IsBuff)
|
|
{
|
|
return;
|
|
}
|
|
if (!isBuff && this.effect._IsBuff)
|
|
{
|
|
return;
|
|
}
|
|
if (this.effect._Script == "PukeSpore" || this.effect._Script.Contains("AmplifyWounds"))
|
|
{
|
|
return;
|
|
}
|
|
this.str.Clear();
|
|
if (!this.target.npc)
|
|
{
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.target));
|
|
}
|
|
this.str.Append(this.target.stats.GetName());
|
|
if (!this.target.npc)
|
|
{
|
|
this.str.Append("</color>");
|
|
}
|
|
this.str.Append("'s ");
|
|
this.str.Append(this.effect._DisplayName);
|
|
this.str.Append(" amplified");
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
this.resetHeal = true;
|
|
this.Set(true);
|
|
if (!healing)
|
|
{
|
|
this.sourceLevel += amt;
|
|
}
|
|
this.Set(false);
|
|
this.resetHeal = false;
|
|
}
|
|
|
|
// Token: 0x060006A2 RID: 1698 RVA: 0x0008E118 File Offset: 0x0008C318
|
|
public string Inflicted(bool fromTile)
|
|
{
|
|
if (!this)
|
|
{
|
|
return "";
|
|
}
|
|
string text = "";
|
|
base.enabled = false;
|
|
this.effect = Links.x.library.GetEffectRow(this.effectName);
|
|
this.ability = Links.x.library.GetAbilityRow(this.effectName);
|
|
if (this.ability != null)
|
|
{
|
|
this.hasAbility = true;
|
|
}
|
|
if (this.effect != null)
|
|
{
|
|
if (this.effect._OverTime && this.effectStartTime == 0)
|
|
{
|
|
this.effectStartTime = (int)Links.x.gameplay.seconds;
|
|
this.overTimeCount = 5;
|
|
this.overTimeTotal = 5;
|
|
if (this.effect._Health < 0f || this.effect._Name.Contains("Dart"))
|
|
{
|
|
this.overTimeCount = 3;
|
|
this.overTimeTotal = 3;
|
|
}
|
|
}
|
|
if (this.fromLoad)
|
|
{
|
|
if (this.effect._Permanent)
|
|
{
|
|
Object.Destroy(this);
|
|
return text;
|
|
}
|
|
}
|
|
else if (this.target && !this.effect._CanStack && this.target.stats.HasEffect(this.effect._Name))
|
|
{
|
|
if (Records.x.editor)
|
|
{
|
|
string text2 = "Found duplicate effect ";
|
|
string name = this.effect._Name;
|
|
string text3 = " for ";
|
|
Character character = this.target;
|
|
Debug.Log(text2 + name + text3 + ((character != null) ? character.ToString() : null));
|
|
}
|
|
this.target.stats.HealEffectExcept(this.effect._Name, this);
|
|
}
|
|
if (this.target && !this.fromLoad)
|
|
{
|
|
if (this.target.isBoro)
|
|
{
|
|
return "";
|
|
}
|
|
if (this.target.stats.GetExistingEffect("HealingSpores") && this.effect._Name != "HealingSpores" && !this.effect._IsBuff)
|
|
{
|
|
string text4 = "Found healing spores for ";
|
|
Character character2 = this.target;
|
|
Debug.Log(text4 + ((character2 != null) ? character2.ToString() : null));
|
|
Object.Destroy(this);
|
|
return text;
|
|
}
|
|
}
|
|
if (this.targetInteractive)
|
|
{
|
|
this.interactive = true;
|
|
this.breakableTarget = this.targetInteractive.GetComponent<BreakableActions>();
|
|
this.chestTarget = this.targetInteractive.GetComponent<ChestActions>();
|
|
this.doorTarget = this.targetInteractive.GetComponent<DoorActions>();
|
|
}
|
|
string text5 = "";
|
|
if (!this.effectIsActive)
|
|
{
|
|
text5 = this.Set(false);
|
|
}
|
|
this.inflicted = true;
|
|
this.effectIsActive = true;
|
|
if (!this.fromLoad)
|
|
{
|
|
if (!this.interactive)
|
|
{
|
|
this.target.stats.AddEffect(this, 0, this.sourceLevel);
|
|
if (this.effect._ShowInStatus && this.jewelrySlot == 0)
|
|
{
|
|
bool flag = true;
|
|
if (this.ability != null && (this.ability._ShowText == "" || this.ability._ShowText == "-"))
|
|
{
|
|
flag = false;
|
|
}
|
|
if (this.effect._Name.Contains("Dart"))
|
|
{
|
|
flag = false;
|
|
}
|
|
if (this.effect._NoIcon)
|
|
{
|
|
flag = false;
|
|
}
|
|
if (flag)
|
|
{
|
|
this.str.Clear();
|
|
if (!fromTile)
|
|
{
|
|
if (!this.target.npc)
|
|
{
|
|
this.str.Append(Links.x.gameFeed.GetPartyColorText(this.target));
|
|
}
|
|
this.str.Append(this.target.stats.GetName());
|
|
if (!this.target.npc)
|
|
{
|
|
this.str.Append("</color>");
|
|
}
|
|
this.str.Append(": ");
|
|
if (this.ability != null)
|
|
{
|
|
this.str.Append(this.ability._DisplayName);
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(this.effect._DisplayName);
|
|
}
|
|
}
|
|
if (Records.x.showRulesetInfo && text5 != "")
|
|
{
|
|
if (!fromTile)
|
|
{
|
|
this.str.Append(" <color #857C6C>... ");
|
|
}
|
|
this.str.Append(text5);
|
|
if (this.effect._OverallTime > 0f && !this.effect._Permanent)
|
|
{
|
|
int num = this.effectStartTime + this.timeToWait - (int)Links.x.gameplay.seconds;
|
|
num = (int)Mathf.Ceil(Records.x.ShowSeconds(num));
|
|
if (text5 != "")
|
|
{
|
|
this.str.Append("</color>");
|
|
}
|
|
this.str.Append(" for ");
|
|
if ((float)num < 60f)
|
|
{
|
|
this.str.Append(num);
|
|
if ((float)num != 1f)
|
|
{
|
|
this.str.Append(" seconds");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" second");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
float num2 = (float)num / 60f;
|
|
num2 = Mathf.Round(num2);
|
|
this.str.Append(num2);
|
|
if (num2 != 1f)
|
|
{
|
|
this.str.Append(" minutes");
|
|
}
|
|
else
|
|
{
|
|
this.str.Append(" minute");
|
|
}
|
|
}
|
|
}
|
|
if (!fromTile)
|
|
{
|
|
this.str.Append("</color>");
|
|
}
|
|
}
|
|
if (fromTile)
|
|
{
|
|
text = this.str.ToString();
|
|
}
|
|
else
|
|
{
|
|
Links.x.gameFeed.AddFeed(this.str.ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (!fromTile)
|
|
{
|
|
bool showInStatus = this.effect._ShowInStatus;
|
|
}
|
|
}
|
|
if (this.target && this.terrainDependent)
|
|
{
|
|
this.target.stats.CheckTerrainAbilities(this.target.terrain);
|
|
}
|
|
return text;
|
|
}
|
|
if (Records.x.editor)
|
|
{
|
|
Debug.Log("Effect is empty " + ((this != null) ? this.ToString() : null));
|
|
}
|
|
this.RemoveEffect();
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x060006A3 RID: 1699 RVA: 0x0008E730 File Offset: 0x0008C930
|
|
public void Healed(bool dead, bool doRemove)
|
|
{
|
|
if (this.effect == null)
|
|
{
|
|
return;
|
|
}
|
|
if (this.target && this.target.party)
|
|
{
|
|
dead = false;
|
|
}
|
|
if (!this.interactive && (!dead || !this.target.npc))
|
|
{
|
|
this.target.stats.UpdateStats();
|
|
}
|
|
if (!this.inflicted)
|
|
{
|
|
return;
|
|
}
|
|
this.healingEffect = true;
|
|
if (!this.effect._Permanent && this.effectIsActive)
|
|
{
|
|
this.Set(true);
|
|
}
|
|
this.effectIsActive = false;
|
|
if (doRemove && !this.interactive)
|
|
{
|
|
this.target.stats.RemoveEffect(this, this.effect._Name);
|
|
this.target.stats.SaveEffects();
|
|
}
|
|
this.ReturnPooledEffects();
|
|
if (!dead && (this.effect._OverallTime > 1f || this.effect._WhileOnTile || this.effectAnimator) && !this.interactive)
|
|
{
|
|
if (this.tileEffect && !this.interactive && !this.effect._WhileOnTile)
|
|
{
|
|
this.tileEffect.RemoveCharacterEffect(this.target, this);
|
|
}
|
|
if (!this.interactive && !this.effect._Permanent && !this.effect._Name.Contains("Elixir"))
|
|
{
|
|
if (this.effect._IsBuff)
|
|
{
|
|
this.healedObject = Links.x.cellar.GetPooledGameObject(15);
|
|
}
|
|
else
|
|
{
|
|
this.healedObject = Links.x.cellar.GetPooledGameObject(15);
|
|
}
|
|
if (this.healedObject && this.target)
|
|
{
|
|
this.healedObject.transform.position = this.target.body.HeadPosition(0f);
|
|
this.healedObject.SetActive(true);
|
|
}
|
|
}
|
|
if (this.effectAnimator)
|
|
{
|
|
this.healedObject = this.effectAnimator.gameObject;
|
|
this.effectAnimator.Play("End");
|
|
}
|
|
this.waitingToReturnObject = 1;
|
|
if (this.target && !this.effect._Permanent)
|
|
{
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Effect Removed", this.target.tr.position, 1f, new float?(1f), 0f, null, null);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this.effectAnimator)
|
|
{
|
|
this.healedObject = this.effectAnimator.gameObject;
|
|
this.effectAnimator.Play("End");
|
|
}
|
|
Links.x.cellar.ReturnEffects(this);
|
|
this.ReturnPooledEffects();
|
|
Object.Destroy(this);
|
|
}
|
|
this.inflicted = false;
|
|
}
|
|
|
|
// Token: 0x060006A4 RID: 1700 RVA: 0x0008EA10 File Offset: 0x0008CC10
|
|
public void DestroyAfterHealedParticle()
|
|
{
|
|
Links.x.cellar.ReturnEffects(this);
|
|
if (this.healedObject && !this.effectAnimator)
|
|
{
|
|
this.healedObject.SetActive(false);
|
|
}
|
|
if (this.effectAnimator)
|
|
{
|
|
this.ReturnPooledEffects();
|
|
}
|
|
Object.Destroy(this);
|
|
}
|
|
|
|
// Token: 0x060006A5 RID: 1701 RVA: 0x0008EA6C File Offset: 0x0008CC6C
|
|
public void ReturnPooledEffects()
|
|
{
|
|
for (int i = 0; i < this.pooledEffects.Count; i++)
|
|
{
|
|
if (this.pooledEffects[i])
|
|
{
|
|
this.pooledEffects[i].transform.parent = Links.x.cellar.tr;
|
|
Links.x.cellar.ReturnPooledGameObject(this.effect._FX, this.pooledEffects[i]);
|
|
if (this.pooledEffects[i].activeSelf)
|
|
{
|
|
this.pooledEffects[i].SetActive(false);
|
|
}
|
|
if (this.effect._FXType == "Head")
|
|
{
|
|
this.target.RemoveEffect(this.effect._FX, "", false);
|
|
}
|
|
}
|
|
}
|
|
this.pooledEffects.Clear();
|
|
if (this.effect != null)
|
|
{
|
|
if (this.effect._Stun > 0 && !this.effect._NoIcon && this.target)
|
|
{
|
|
this.target.RemoveEffect(40, "", true);
|
|
}
|
|
if ((this.effect._Confuse > 0 || this.effect._Script == "AttractionSpore") && !this.effect._NoIcon && this.target)
|
|
{
|
|
this.target.RemoveEffect(44, "", true);
|
|
}
|
|
if (this.effect._Flee > 0 && !this.effect._NoIcon && this.target)
|
|
{
|
|
this.target.RemoveEffect(44, "", true);
|
|
}
|
|
if (this.effect._MoveSpeed != 0f && !this.effect._NoIcon && this.target)
|
|
{
|
|
if (this.effect._MoveSpeed > 0f)
|
|
{
|
|
this.target.RemoveEffect(46, "", true);
|
|
return;
|
|
}
|
|
this.target.RemoveEffect(48, "", true);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060006A6 RID: 1702 RVA: 0x0008EC94 File Offset: 0x0008CE94
|
|
public void RemoveEffect()
|
|
{
|
|
this.ReturnPooledEffects();
|
|
if (!this.interactive)
|
|
{
|
|
if (this.effect != null)
|
|
{
|
|
this.target.stats.RemoveEffect(this, this.effect._Name);
|
|
}
|
|
else
|
|
{
|
|
this.target.stats.RemoveEffect(this, "");
|
|
}
|
|
this.target.stats.SaveEffects();
|
|
}
|
|
Links.x.cellar.ReturnEffects(this);
|
|
if (this.healedObject)
|
|
{
|
|
this.healedObject.SetActive(false);
|
|
}
|
|
Object.Destroy(this);
|
|
}
|
|
|
|
// Token: 0x060006A7 RID: 1703 RVA: 0x0008ED2C File Offset: 0x0008CF2C
|
|
public void RunQuestCode(string n, bool healed)
|
|
{
|
|
if (n == "QuestTimerChanterC6")
|
|
{
|
|
Debug.Log(n + " " + healed.ToString());
|
|
if (!healed)
|
|
{
|
|
Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName("GhostScrollCirclet");
|
|
int num = this.target.HasItem(invRowFromName._ID);
|
|
if (this.fromLoad || num == -1)
|
|
{
|
|
this.target.GiveItem(invRowFromName._ID, 1, Vector3.zero, Vector3.zero, new Vector4(0f, 0f, 0f, 0f), false);
|
|
num = this.target.HasItem(invRowFromName._ID);
|
|
}
|
|
this.target.EquipNPC(num / 2, 8);
|
|
int num2 = 0;
|
|
if (QuestLog.GetQuestState("C6_SickGuardA") == QuestState.Active || QuestLog.GetQuestState("C6_SickGuardA") == QuestState.Success)
|
|
{
|
|
num2++;
|
|
}
|
|
if (QuestLog.GetQuestState("C6_SickGuardB") == QuestState.Active || QuestLog.GetQuestState("C6_SickGuardB") == QuestState.Success)
|
|
{
|
|
num2++;
|
|
}
|
|
if (QuestLog.GetQuestState("C6_SickGuardC") == QuestState.Active || QuestLog.GetQuestState("C6_SickGuardC") == QuestState.Success)
|
|
{
|
|
num2++;
|
|
}
|
|
Debug.Log(string.Concat(new string[]
|
|
{
|
|
num2.ToString(),
|
|
" ",
|
|
QuestLog.GetQuestState("C6_SickGuardA").ToString(),
|
|
" ",
|
|
QuestLog.GetQuestState("C6_SickGuardB").ToString(),
|
|
" ",
|
|
QuestLog.GetQuestState("C6_SickGuardC").ToString()
|
|
}));
|
|
if (QuestLog.GetQuestState("C6_Chanter") == QuestState.Active && num2 >= 3)
|
|
{
|
|
QuestLog.SetQuestState("C6_Chanter", QuestState.ActivePart2);
|
|
}
|
|
if (QuestLog.GetQuestState("C6_Chanter") == QuestState.Unassigned && num2 >= 3)
|
|
{
|
|
QuestLog.SetQuestState("C6_Chanter", QuestState.ActivePart3);
|
|
}
|
|
if (QuestLog.GetQuestState("C6_Chanter") == QuestState.Discussed && num2 >= 3)
|
|
{
|
|
QuestLog.SetQuestState("C6_Chanter", QuestState.ActivePart3);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Library.Inventory invRowFromName2 = Links.x.library.GetInvRowFromName("GhostScrollCirclet");
|
|
this.target.RemoveItem(invRowFromName2._ID, 1);
|
|
this.target.UnequipNPC(8);
|
|
if (this.target.stats.HasEffectAndCure("Resting"))
|
|
{
|
|
Links.x.gameFeed.AddFeed(invRowFromName2._DisplayName + " has cured " + this.target.stats.GetName());
|
|
}
|
|
string text = "C6_SickGuardA";
|
|
if (this.target.stats.xmlName.Contains("SickB"))
|
|
{
|
|
text = "C6_SickGuardB";
|
|
}
|
|
if (this.target.stats.xmlName.Contains("SickC"))
|
|
{
|
|
text = "C6_SickGuardC";
|
|
}
|
|
QuestLog.SetQuestState(text, QuestState.Success);
|
|
this.target.creatures.GetPoints(true, true);
|
|
this.target.resting = false;
|
|
this.target.GetUp();
|
|
int num3 = DialogueLua.GetVariable("C6_SickGuardsHealed").asInt;
|
|
num3++;
|
|
DialogueLua.SetVariable("C6_SickGuardsHealed", num3);
|
|
if (num3 >= 3 && (QuestLog.GetQuestState("C6_Chanter") == QuestState.ActivePart2 || QuestLog.GetQuestState("C6_Chanter") == QuestState.Active))
|
|
{
|
|
QuestLog.SetQuestState("C6_Chanter", QuestState.ReturnToNPC);
|
|
}
|
|
}
|
|
}
|
|
if (n == "QuestTimerBlessedC5")
|
|
{
|
|
Debug.Log(n + " " + healed.ToString());
|
|
if (!healed)
|
|
{
|
|
Library.Inventory invRowFromName3 = Links.x.library.GetInvRowFromName("BlessedCirclet");
|
|
int num4 = this.target.HasItem(invRowFromName3._ID);
|
|
if (this.fromLoad || num4 == -1)
|
|
{
|
|
this.target.GiveItem(invRowFromName3._ID, 1, Vector3.zero, Vector3.zero, new Vector4(0f, 0f, 0f, 0f), false);
|
|
num4 = this.target.HasItem(invRowFromName3._ID);
|
|
}
|
|
this.target.EquipNPC(num4 / 2, 8);
|
|
return;
|
|
}
|
|
Library.Inventory invRowFromName4 = Links.x.library.GetInvRowFromName("BlessedCirclet");
|
|
if (this.target.stats.HasEffectAndCure("RestingFood"))
|
|
{
|
|
Links.x.gameFeed.AddFeed(invRowFromName4._DisplayName + " has cured " + this.target.stats.GetName());
|
|
}
|
|
QuestLog.SetQuestState("C5_Blessed", QuestState.Complete);
|
|
this.target.creatures.GetPoints(true, true);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060006A8 RID: 1704 RVA: 0x0008F1D4 File Offset: 0x0008D3D4
|
|
private void RunEqiupItemCode(bool healed)
|
|
{
|
|
string text = "EquipItem";
|
|
string text2 = "";
|
|
int num = this.effect._Name.IndexOf(text);
|
|
if (num != -1)
|
|
{
|
|
text2 = this.effect._Name.Substring(num + text.Length);
|
|
}
|
|
if (healed)
|
|
{
|
|
Library.Inventory invRowFromName = Links.x.library.GetInvRowFromName(text2);
|
|
this.target.RemoveItem(invRowFromName._ID, 1);
|
|
this.target.UnequipNPC(invRowFromName._EquipSlotID);
|
|
return;
|
|
}
|
|
Library.Inventory invRowFromName2 = Links.x.library.GetInvRowFromName(text2);
|
|
int num2 = this.target.HasItem(invRowFromName2._ID);
|
|
if (this.fromLoad || num2 == -1)
|
|
{
|
|
this.target.GiveItem(invRowFromName2._ID, 1, Vector3.zero, Vector3.zero, new Vector4(0f, 0f, 0f, 0f), false);
|
|
num2 = this.target.HasItem(invRowFromName2._ID);
|
|
}
|
|
this.target.EquipNPC(num2 / 2, invRowFromName2._EquipSlotID);
|
|
}
|
|
|
|
// Token: 0x060006A9 RID: 1705 RVA: 0x0008F2EA File Offset: 0x0008D4EA
|
|
public float R2(float x)
|
|
{
|
|
return Mathf.Round(x * 100f) / 100f;
|
|
}
|
|
|
|
// Token: 0x060006AA RID: 1706 RVA: 0x0008F2FE File Offset: 0x0008D4FE
|
|
private IEnumerator KnockbackRoutine()
|
|
{
|
|
yield return new WaitForSeconds(0.1f);
|
|
Quaternion quaternion = Quaternion.LookRotation(this.target.currentPosition - this.source.currentPosition);
|
|
float num = -1f;
|
|
if (Random.Range(0, 2) == 0)
|
|
{
|
|
num = 1f;
|
|
}
|
|
Vector3 vector = this.target.currentPosition + quaternion * Vector3.right * Records.x.nodeSize * num;
|
|
this.target.Knockback(vector, 1, false, false, false);
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x060006AB RID: 1707 RVA: 0x0008F310 File Offset: 0x0008D510
|
|
private int GetArrowsForStat(string s, float added)
|
|
{
|
|
if (this.healingEffect)
|
|
{
|
|
return 1;
|
|
}
|
|
int num2;
|
|
float num = this.target.stats.Stat(s, false, out num2);
|
|
if (added < 0f)
|
|
{
|
|
added *= -1f;
|
|
}
|
|
float num3 = (num + added) / num;
|
|
num3 -= 1f;
|
|
if (num3 < 1f)
|
|
{
|
|
return 1;
|
|
}
|
|
if (num3 >= 1f && num3 < 2f)
|
|
{
|
|
return 2;
|
|
}
|
|
if (num3 >= 2f)
|
|
{
|
|
return 3;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
// Token: 0x060006AC RID: 1708 RVA: 0x0008F384 File Offset: 0x0008D584
|
|
private int GetArrowsForMod(string s, float added)
|
|
{
|
|
if (this.healingEffect)
|
|
{
|
|
return 1;
|
|
}
|
|
float num = 0f;
|
|
if (s == "Severity")
|
|
{
|
|
this.target.stats.DamageRollString(this.target.stats.GetCurrentHand(), out num);
|
|
}
|
|
if (s == "PaganSeverity")
|
|
{
|
|
num = this.target.stats.PaganRollString();
|
|
}
|
|
if (s == "HitChance")
|
|
{
|
|
num = this.target.stats.WeaponHitChance(true, this.target.stats.GetCurrentHand());
|
|
}
|
|
if (s == "Evasion")
|
|
{
|
|
float num2;
|
|
num = this.target.stats.EvasionChance(true, 0f, out num2);
|
|
}
|
|
if (s == "BlockChance")
|
|
{
|
|
float num3 = 0f;
|
|
bool flag = false;
|
|
bool flag2 = false;
|
|
if (this.target.GetInvNum(2) > 1 && Links.x.library.GetInvRowByIndex(this.target.GetInvNum(2))._Tag == "Shield")
|
|
{
|
|
flag2 = true;
|
|
}
|
|
float num4;
|
|
float num5;
|
|
this.target.stats.EvadeArmorTotal(out num4, out num3, out num5, false, flag2);
|
|
if (num3 > -1f)
|
|
{
|
|
flag = true;
|
|
}
|
|
float num6;
|
|
float num7;
|
|
this.target.stats.BlockTotal(out num6, out num, out num7, false, flag);
|
|
}
|
|
if (s.Contains("PaganResist"))
|
|
{
|
|
float num8;
|
|
float num9;
|
|
num = this.target.stats.PaganResistance(true, "", out num8, out num9);
|
|
}
|
|
if (s.Contains("MusicResist"))
|
|
{
|
|
float num10;
|
|
num = this.target.stats.InstrumentResistance(true, out num10);
|
|
}
|
|
if (s == "Artistry")
|
|
{
|
|
num = this.target.stats.MusicPowerString();
|
|
}
|
|
if (added < 0f)
|
|
{
|
|
added *= -1f;
|
|
}
|
|
float num11 = (num + added) / num;
|
|
num11 -= 1f;
|
|
if (num11 < 1f)
|
|
{
|
|
return 1;
|
|
}
|
|
if (num11 >= 1f && num11 < 2f)
|
|
{
|
|
return 2;
|
|
}
|
|
if (num11 >= 2f)
|
|
{
|
|
return 3;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
// Token: 0x060006AD RID: 1709 RVA: 0x0008F588 File Offset: 0x0008D788
|
|
private int GetDiceModifierAverage(int diceCount, int diceSides)
|
|
{
|
|
int num = diceCount;
|
|
if (num < 0)
|
|
{
|
|
num *= -1;
|
|
}
|
|
int num2 = Records.x.GetRollMean(num, diceSides);
|
|
if (diceCount < 0)
|
|
{
|
|
num2 *= -1;
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
// Token: 0x04000959 RID: 2393
|
|
[Header("SETUP")]
|
|
public Character target;
|
|
|
|
// Token: 0x0400095A RID: 2394
|
|
public Character source;
|
|
|
|
// Token: 0x0400095B RID: 2395
|
|
public GameObject targetInteractive;
|
|
|
|
// Token: 0x0400095C RID: 2396
|
|
public Vector3 sourcePosition;
|
|
|
|
// Token: 0x0400095D RID: 2397
|
|
public bool inflicted;
|
|
|
|
// Token: 0x0400095E RID: 2398
|
|
public bool ready;
|
|
|
|
// Token: 0x0400095F RID: 2399
|
|
public float sourceLevel;
|
|
|
|
// Token: 0x04000960 RID: 2400
|
|
private bool interactive;
|
|
|
|
// Token: 0x04000961 RID: 2401
|
|
private ChestActions chestTarget;
|
|
|
|
// Token: 0x04000962 RID: 2402
|
|
private DoorActions doorTarget;
|
|
|
|
// Token: 0x04000963 RID: 2403
|
|
private BreakableActions breakableTarget;
|
|
|
|
// Token: 0x04000964 RID: 2404
|
|
[Header("SAVE/LOAD")]
|
|
public bool fromLoad;
|
|
|
|
// Token: 0x04000965 RID: 2405
|
|
[Header("DATA")]
|
|
public string effectName;
|
|
|
|
// Token: 0x04000966 RID: 2406
|
|
public Library.Effects effect;
|
|
|
|
// Token: 0x04000967 RID: 2407
|
|
public List<GameObject> pooledEffects = new List<GameObject>();
|
|
|
|
// Token: 0x04000968 RID: 2408
|
|
public TileEffects tileEffect;
|
|
|
|
// Token: 0x04000969 RID: 2409
|
|
public Library.Abilities ability;
|
|
|
|
// Token: 0x0400096A RID: 2410
|
|
public string displayEffects;
|
|
|
|
// Token: 0x0400096B RID: 2411
|
|
private bool recordEffects;
|
|
|
|
// Token: 0x0400096C RID: 2412
|
|
private bool foundOne;
|
|
|
|
// Token: 0x0400096D RID: 2413
|
|
public float overrideDuration;
|
|
|
|
// Token: 0x0400096E RID: 2414
|
|
public float songDuration;
|
|
|
|
// Token: 0x0400096F RID: 2415
|
|
public int jewelrySlot;
|
|
|
|
// Token: 0x04000970 RID: 2416
|
|
public bool resetHeal;
|
|
|
|
// Token: 0x04000971 RID: 2417
|
|
public bool hasAbility;
|
|
|
|
// Token: 0x04000972 RID: 2418
|
|
public float healthOverride;
|
|
|
|
// Token: 0x04000973 RID: 2419
|
|
public List<string> iconNames = new List<string>();
|
|
|
|
// Token: 0x04000974 RID: 2420
|
|
[Header("PROGRESS")]
|
|
public int timeToWait;
|
|
|
|
// Token: 0x04000975 RID: 2421
|
|
public float currentTime;
|
|
|
|
// Token: 0x04000976 RID: 2422
|
|
public int turnsToWait;
|
|
|
|
// Token: 0x04000977 RID: 2423
|
|
public float overallTime;
|
|
|
|
// Token: 0x04000978 RID: 2424
|
|
public int effectStartTime;
|
|
|
|
// Token: 0x04000979 RID: 2425
|
|
public bool removeAtSceneSwitch;
|
|
|
|
// Token: 0x0400097A RID: 2426
|
|
public bool whileOnTile;
|
|
|
|
// Token: 0x0400097B RID: 2427
|
|
private GameObject healedObject;
|
|
|
|
// Token: 0x0400097C RID: 2428
|
|
public int waitingToReturnObject;
|
|
|
|
// Token: 0x0400097D RID: 2429
|
|
private StringFast str = new StringFast(64);
|
|
|
|
// Token: 0x0400097E RID: 2430
|
|
private bool removedStun;
|
|
|
|
// Token: 0x0400097F RID: 2431
|
|
private float savedHealthTotal;
|
|
|
|
// Token: 0x04000980 RID: 2432
|
|
private float savedSpiritTotal;
|
|
|
|
// Token: 0x04000981 RID: 2433
|
|
public int overTimeCount;
|
|
|
|
// Token: 0x04000982 RID: 2434
|
|
private int overTimeTotal = 5;
|
|
|
|
// Token: 0x04000983 RID: 2435
|
|
public float durability;
|
|
|
|
// Token: 0x04000984 RID: 2436
|
|
private float maxDurability;
|
|
|
|
// Token: 0x04000985 RID: 2437
|
|
private HannahAnimator effectAnimator;
|
|
|
|
// Token: 0x04000986 RID: 2438
|
|
public bool interrupt;
|
|
|
|
// Token: 0x04000987 RID: 2439
|
|
public bool healingEffect;
|
|
|
|
// Token: 0x04000988 RID: 2440
|
|
public bool effectIsActive;
|
|
|
|
// Token: 0x04000989 RID: 2441
|
|
public bool terrainDependent;
|
|
}
|