4847 lines
124 KiB
C#
4847 lines
124 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using cakeslice;
|
|
using DarkTonic.MasterAudio;
|
|
using MagicaCloth2;
|
|
using PixelCrushers.DialogueSystem;
|
|
using RootMotion;
|
|
using RootMotion.FinalIK;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
// Token: 0x02000017 RID: 23
|
|
public class Body : MonoBehaviour
|
|
{
|
|
// Token: 0x06000257 RID: 599 RVA: 0x00030BC4 File Offset: 0x0002EDC4
|
|
private bool IsBiped(string n)
|
|
{
|
|
return n.Contains("Varu") || n.Contains("Yeti") || n.Contains("Pasa") || n.Contains("Ame") || n.Contains("Female") || n.Contains("Male") || n.Contains("Pearl") || n.Contains("female") || n.Contains("Player_") || n.Contains("male") || n.Contains("Child") || n.Contains("Lacho") || n.Contains("Hunter") || n.Contains("Chanter") || n.Contains("Witch") || n.Contains("Dryad");
|
|
}
|
|
|
|
// Token: 0x06000258 RID: 600 RVA: 0x00030CB8 File Offset: 0x0002EEB8
|
|
private void Awake()
|
|
{
|
|
this.tr = base.transform;
|
|
this.anim = base.GetComponent<Animator>();
|
|
this.originalScale = this.tr.localScale;
|
|
if (!this.inMenu)
|
|
{
|
|
this.GetHashes();
|
|
}
|
|
if (this.startScale == Vector3.zero)
|
|
{
|
|
this.startScale = this.tr.localScale;
|
|
}
|
|
this.tr.localPosition = new Vector3(0f, 0f, 0f);
|
|
this.grounder = base.gameObject.GetComponent<GrounderFBBIK>();
|
|
this.lookik = base.gameObject.GetComponent<LookAtIK>();
|
|
this.fbbik = base.gameObject.GetComponent<FullBodyBipedIK>();
|
|
string name = base.gameObject.name;
|
|
if (this.IsBiped(name))
|
|
{
|
|
this.originalScale = Vector3.one;
|
|
if (!this.fbbik)
|
|
{
|
|
this.fbbik = base.gameObject.AddComponent<FullBodyBipedIK>();
|
|
this.fbbik.AutoDetectReferences();
|
|
}
|
|
if (!this.lookik)
|
|
{
|
|
this.lookik = base.gameObject.AddComponent<LookAtIK>();
|
|
}
|
|
}
|
|
if (this.lookik && this.fbbik)
|
|
{
|
|
if (!this.grounder)
|
|
{
|
|
this.grounder = base.gameObject.AddComponent<GrounderFBBIK>();
|
|
}
|
|
BipedReferences references = this.fbbik.references;
|
|
Transform head = references.head;
|
|
IKSolverLookAt.LookAtBone lookAtBone = new IKSolverLookAt.LookAtBone();
|
|
lookAtBone.transform = head;
|
|
this.lookik.solver.head = lookAtBone;
|
|
Transform[] spine = references.spine;
|
|
if (spine.Length == 1)
|
|
{
|
|
Transform transform = spine[0];
|
|
lookAtBone = new IKSolverLookAt.LookAtBone();
|
|
IKSolverLookAt.LookAtBone[] array = this.lookik.solver.spine;
|
|
array = new IKSolverLookAt.LookAtBone[2];
|
|
lookAtBone.transform = transform;
|
|
array[0] = lookAtBone;
|
|
array[1] = new IKSolverLookAt.LookAtBone
|
|
{
|
|
transform = this.GetNeck()
|
|
};
|
|
this.lookik.solver.spine = array;
|
|
}
|
|
else if (spine.Length == 2)
|
|
{
|
|
Transform transform2 = spine[0];
|
|
lookAtBone = new IKSolverLookAt.LookAtBone();
|
|
IKSolverLookAt.LookAtBone[] array2 = this.lookik.solver.spine;
|
|
array2 = new IKSolverLookAt.LookAtBone[3];
|
|
lookAtBone.transform = transform2;
|
|
array2[0] = lookAtBone;
|
|
Transform transform3 = spine[1];
|
|
array2[1] = new IKSolverLookAt.LookAtBone
|
|
{
|
|
transform = transform3
|
|
};
|
|
array2[2] = new IKSolverLookAt.LookAtBone
|
|
{
|
|
transform = this.GetNeck()
|
|
};
|
|
this.lookik.solver.spine = array2;
|
|
}
|
|
this.lookik.solver.clampWeightHead = 0.5f;
|
|
this.lookik.solver.clampWeight = 0.25f;
|
|
this.lookik.solver.bodyWeight = 0.25f;
|
|
this.fbbik.solver.SetToReferences(references, null);
|
|
this.fbbik.enabled = false;
|
|
this.fbbik.solver.IKPositionWeight = 0f;
|
|
}
|
|
if (this.grounder)
|
|
{
|
|
this.grounder.enabled = false;
|
|
}
|
|
if (this.lookik)
|
|
{
|
|
this.lookik.enabled = false;
|
|
}
|
|
if (this.grounder)
|
|
{
|
|
this.hasGrounder = true;
|
|
}
|
|
else
|
|
{
|
|
this.hasGrounder = false;
|
|
}
|
|
if (this.hasGrounder)
|
|
{
|
|
this.fbbik.solver.iterations = 4;
|
|
this.grounder.solver.layers = 4194433;
|
|
this.grounder.solver.maxStep = 1.5f;
|
|
this.grounder.solver.footSpeed = 2.5f;
|
|
this.grounder.solver.footRadius = 0.25f;
|
|
this.grounder.solver.quality = Grounding.Quality.Simple;
|
|
this.grounder.ik = this.fbbik;
|
|
}
|
|
if (this.lookik)
|
|
{
|
|
this.headBone = this.lookik.solver.head.transform;
|
|
this.lookik.solver.Initiate(this.tr);
|
|
}
|
|
if (this.headBone == null)
|
|
{
|
|
this.headBone = this.GetHead();
|
|
}
|
|
this.colliders = base.gameObject.GetComponentsInChildren<Collider>();
|
|
foreach (Collider collider in this.colliders)
|
|
{
|
|
collider.gameObject.layer = 31;
|
|
if (!collider.gameObject.GetComponent<SelectionCircle>())
|
|
{
|
|
collider.gameObject.AddComponent<SelectionCircle>();
|
|
}
|
|
}
|
|
if (this.lookik)
|
|
{
|
|
this.lookik.enabled = false;
|
|
}
|
|
if (!this.lookAtController)
|
|
{
|
|
this.lookAtController = base.gameObject.AddComponent<global::LookAtController>();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000259 RID: 601 RVA: 0x00031178 File Offset: 0x0002F378
|
|
public Transform GetFootLower()
|
|
{
|
|
ref Vector3 position = this.fbbik.references.leftFoot.position;
|
|
Vector3 position2 = this.fbbik.references.rightFoot.position;
|
|
if (position.y < position2.y)
|
|
{
|
|
return this.fbbik.references.leftFoot;
|
|
}
|
|
return this.fbbik.references.rightFoot;
|
|
}
|
|
|
|
// Token: 0x0600025A RID: 602 RVA: 0x000311DE File Offset: 0x0002F3DE
|
|
private void Start()
|
|
{
|
|
if (this.inMenu)
|
|
{
|
|
this.SetGrounderState(false);
|
|
}
|
|
else
|
|
{
|
|
this.anim.updateMode = AnimatorUpdateMode.Normal;
|
|
}
|
|
this.needToUpdateItemColliders = 1;
|
|
}
|
|
|
|
// Token: 0x0600025B RID: 603 RVA: 0x00031204 File Offset: 0x0002F404
|
|
private void OnAnimatorMove()
|
|
{
|
|
if (this.character && !this.dead && !this.inMenu && !this.isPortrait)
|
|
{
|
|
if (this.nextFrameRotateToChild)
|
|
{
|
|
if (!this.character.turning)
|
|
{
|
|
this.character.RotateToChild();
|
|
}
|
|
this.nextFrameRotateToChild = false;
|
|
}
|
|
this.stateInfo = this.anim.GetCurrentAnimatorStateInfo(0);
|
|
this.currentHash = this.stateInfo.shortNameHash;
|
|
if (!this.character.stunned)
|
|
{
|
|
float deltaTime = Time.deltaTime;
|
|
bool flag = false;
|
|
if (Time.timeSinceLevelLoad < this.character.waitingForNewPathTime + 0.2f && this.character.waitingForNewPath && this.character.waitingForNewPathTime > 0f)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (!this.character.tempStop && !this.character.jumping && !this.character.isHit && this.character.IsSentient() && !this.character.pocketPaused && this.character.stats.Stuck() == 0 && !flag && ((this.character.physicsMove && !this.character.turningMain) || (this.character.CanMove() && this.character.moving)) && !this.character.boatNavigator && !this.character.jumpingAreas && deltaTime > 0f)
|
|
{
|
|
if (((this.character.physicsMove && this.character.IsWalking()) || ((this.character.mainSelected || this.character.npc || this.character.hasActions) && this.character.NodesCount() > 1) || (!this.character.npc && !this.character.hasActions && !this.character.mainSelected && this.character.NodesCount() > 0)) && this.character.IsWalking())
|
|
{
|
|
Vector3 rootPosition = this.anim.rootPosition;
|
|
float num = this.character.movePoint.y;
|
|
LayerMask layerMask = Links.x.floor;
|
|
if (this.character.movesOnWater)
|
|
{
|
|
layerMask = 16;
|
|
}
|
|
RaycastHit raycastHit;
|
|
if (Physics.Raycast(this.character.tr.position + new Vector3(0f, 3f, 0f), Vector3.up * -1f, out raycastHit, 6f, layerMask) && Mathf.Abs(raycastHit.point.y - this.character.movePoint.y) < 2f)
|
|
{
|
|
num = raycastHit.point.y;
|
|
}
|
|
rootPosition.y = Mathf.Lerp(this.character.tr.position.y, num, Time.deltaTime * 15f);
|
|
Vector3 vector = this.anim.deltaPosition / deltaTime;
|
|
vector *= deltaTime;
|
|
if (this.character.physicsMove && !this.character.turningMain && this.character.cc)
|
|
{
|
|
Vector3 vector2 = vector;
|
|
Vector3 currentPosition = this.character.currentPosition;
|
|
RaycastHit raycastHit2;
|
|
if (Physics.SphereCast(this.tr.position + new Vector3(0f, 4f, 0f), 0.25f, Vector3.up * -1f, out raycastHit2, 20f, layerMask))
|
|
{
|
|
Vector3 point = raycastHit2.point;
|
|
}
|
|
if (this.character.physicsY.y > 0f)
|
|
{
|
|
vector2.y = this.character.physicsY.y;
|
|
if (raycastHit2.collider)
|
|
{
|
|
vector2 *= Mathf.Clamp(Mathf.Abs(raycastHit2.normal.y), 0.75f, 1f);
|
|
}
|
|
}
|
|
else if (raycastHit2.collider)
|
|
{
|
|
vector2.y = this.character.physicsY.y * 1f;
|
|
vector2 *= Mathf.Clamp(Mathf.Abs(raycastHit2.normal.y * 0.95f), 0.9f, 1f);
|
|
}
|
|
else
|
|
{
|
|
vector2.y = this.character.physicsY.y * 1f;
|
|
}
|
|
vector2.y -= 2f;
|
|
this.character.cc.Move(vector2);
|
|
}
|
|
else
|
|
{
|
|
float num2 = Mathf.Lerp(this.character.tr.position.y, this.character.movePoint.y, Time.deltaTime * 7f);
|
|
Vector3 deltaPosition = this.anim.deltaPosition;
|
|
Vector3 vector3 = vector;
|
|
this.character.SetPosition(this.tr.position + vector3, null);
|
|
this.character.SetPosition(new Vector3(this.tr.position.x, num2, this.tr.position.z), null);
|
|
}
|
|
}
|
|
this.tr.localPosition = Vector3.Lerp(this.tr.localPosition, this.bodyOffset, Time.deltaTime * 50f);
|
|
}
|
|
else
|
|
{
|
|
if (this.character.animID > 0 && this.character.canSwitchBackToIdle && Time.timeSinceLevelLoad > this.waitForCrossFadeTime + 0.3f && (this.currentHash == this.idleHash || this.currentHash == this.combatIdleHash || this.currentHash == this.combatIdle2Hash))
|
|
{
|
|
if (this.character.dodging)
|
|
{
|
|
this.character.PlayAnimation("Defend", 0f);
|
|
}
|
|
if (this.character.IsSentient() && this.character.animID != 53)
|
|
{
|
|
this.character.animID = 0;
|
|
this.character.canSwitchBackToIdle = false;
|
|
this.character.SetAnimatorSpeed(1f);
|
|
}
|
|
}
|
|
if (this.anim.speed > 0f)
|
|
{
|
|
Vector3 deltaPosition2 = this.anim.deltaPosition;
|
|
if (float.IsNaN(deltaPosition2.x) || float.IsNaN(deltaPosition2.y) || float.IsNaN(deltaPosition2.z))
|
|
{
|
|
Debug.Log(this.character.animID.ToString() + " " + this.anim.speed.ToString());
|
|
}
|
|
else if (this.character.Pivoting())
|
|
{
|
|
Vector3 eulerAngles = this.anim.deltaRotation.eulerAngles;
|
|
this.tr.Rotate(eulerAngles);
|
|
this.tr.localPosition = Vector3.Lerp(this.tr.localPosition, this.bodyOffset, Time.deltaTime * 50f);
|
|
}
|
|
}
|
|
if (this.tr.localRotation.eulerAngles != Vector3.zero && !this.character.turning && !this.character.Pivoting())
|
|
{
|
|
this.nextFrameRotateToChild = true;
|
|
}
|
|
}
|
|
if (!this.inMenu)
|
|
{
|
|
if (this.character.IsAttacking(this.currentHash) || this.character.IsCasting(this.currentHash))
|
|
{
|
|
this.attacking = true;
|
|
}
|
|
else if (!Records.x.pocketPause && this.character.animID != 2)
|
|
{
|
|
this.attacking = false;
|
|
if (this.character && this.character.timelineIcon && !this.character.inQueuedAbility)
|
|
{
|
|
this.character.inAction = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!this.dithering && this.character.visible == 1 && this.fleshRenderers.Count > 0 && !this.character.isBoro && this.fleshRenderers[0] && !this.fleshRenderers[0].enabled)
|
|
{
|
|
this.MeshOn(true, true);
|
|
}
|
|
if (this.character.visible > 0 || this.character.party || this.turnOnMagicaClothNextFrame > 0)
|
|
{
|
|
float num3 = (float)this.character.stats.HealthCurrent() / (float)this.character.stats.HealthMax();
|
|
this.healthPercent = 0f;
|
|
if (num3 < 0.166f)
|
|
{
|
|
this.healthPercent = 5f;
|
|
}
|
|
if (num3 >= 0.166f && num3 < 0.33f)
|
|
{
|
|
this.healthPercent = 4f;
|
|
}
|
|
if (num3 >= 0.33f && num3 < 0.5f)
|
|
{
|
|
this.healthPercent = 3f;
|
|
}
|
|
if (num3 >= 0.5f && num3 < 0.667f)
|
|
{
|
|
this.healthPercent = 2f;
|
|
}
|
|
if ((double)num3 >= 0.667 && num3 < 0.883f)
|
|
{
|
|
this.healthPercent = 1f;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i] && this.fleshRenderers[i].gameObject.activeSelf)
|
|
{
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
Material[] array = this.mats;
|
|
for (int j = 0; j < array.Length; j++)
|
|
{
|
|
array[j].SetFloat("_Damaged", this.healthPercent);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.turnOnMagicaClothNextFrame > 0)
|
|
{
|
|
this.turnOnMagicaClothNextFrame--;
|
|
if (this.turnOnMagicaClothNextFrame == 0)
|
|
{
|
|
this.SetMagicaClothState(true);
|
|
}
|
|
else
|
|
{
|
|
this.SetMagicaClothState(false);
|
|
}
|
|
}
|
|
if (this.bracket)
|
|
{
|
|
this.BracketPosition();
|
|
}
|
|
this.Dither();
|
|
this.CheckBlink();
|
|
this.CheckBlink2();
|
|
}
|
|
|
|
// Token: 0x0600025C RID: 604 RVA: 0x00031C68 File Offset: 0x0002FE68
|
|
public void SetBlood(float healthPercent)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i] && this.fleshRenderers[i].gameObject.activeSelf)
|
|
{
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
Material[] array = this.mats;
|
|
for (int j = 0; j < array.Length; j++)
|
|
{
|
|
array[j].SetFloat("_Damaged", healthPercent);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600025D RID: 605 RVA: 0x00031CF0 File Offset: 0x0002FEF0
|
|
public void StartBlink(float totalTimeLength)
|
|
{
|
|
this.blinking = 1;
|
|
this.blinkTime = Time.timeSinceLevelLoad;
|
|
this.blinkInterval = totalTimeLength / 3f;
|
|
this.DoBlink(1f);
|
|
}
|
|
|
|
// Token: 0x0600025E RID: 606 RVA: 0x00031D1C File Offset: 0x0002FF1C
|
|
public void CheckBlink()
|
|
{
|
|
if (this.blinking > 0 && Time.timeSinceLevelLoad > this.blinkTime + this.blinkInterval)
|
|
{
|
|
this.blinkTime = Time.timeSinceLevelLoad;
|
|
this.blinking++;
|
|
if (this.blinking == 2)
|
|
{
|
|
this.DoBlink(0f);
|
|
}
|
|
if (this.blinking == 3)
|
|
{
|
|
this.DoBlink(1f);
|
|
}
|
|
if (this.blinking >= 4)
|
|
{
|
|
this.EndBlink();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600025F RID: 607 RVA: 0x00031D98 File Offset: 0x0002FF98
|
|
private void DoBlink(float state)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.materials = this.fleshRenderers[i].materials;
|
|
Material[] array = this.materials;
|
|
for (int j = 0; j < array.Length; j++)
|
|
{
|
|
array[j].SetFloat("_AttackBlink", state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000260 RID: 608 RVA: 0x00031E08 File Offset: 0x00030008
|
|
public void EndBlink()
|
|
{
|
|
if (this.blinking > 0)
|
|
{
|
|
this.blinking = 0;
|
|
this.DoBlink(0f);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000261 RID: 609 RVA: 0x00031E28 File Offset: 0x00030028
|
|
public void StartBlink2(int num, string type)
|
|
{
|
|
this.blinking2 = 1;
|
|
this.blink2Type = type;
|
|
if (num > 10)
|
|
{
|
|
this.blinkTime2 = Time.realtimeSinceStartup;
|
|
}
|
|
else
|
|
{
|
|
this.blinkTime2 = Time.timeSinceLevelLoad;
|
|
}
|
|
this.blinkInterval2 = 0.16f;
|
|
this.blinkNumber2 = num;
|
|
this.DoBlink2(1f);
|
|
}
|
|
|
|
// Token: 0x06000262 RID: 610 RVA: 0x00031E80 File Offset: 0x00030080
|
|
public void CheckBlink2()
|
|
{
|
|
if (this.blinking2 > 0)
|
|
{
|
|
float timeSinceLevelLoad = Time.timeSinceLevelLoad;
|
|
if (this.blinkNumber2 > 10)
|
|
{
|
|
this.blinkTime2 = Time.realtimeSinceStartup;
|
|
}
|
|
if (timeSinceLevelLoad > this.blinkTime2 + this.blinkInterval2)
|
|
{
|
|
if (this.blinkNumber2 > 10)
|
|
{
|
|
this.blinkTime2 = Time.realtimeSinceStartup;
|
|
}
|
|
else
|
|
{
|
|
this.blinkTime2 = Time.timeSinceLevelLoad;
|
|
}
|
|
this.blinking2++;
|
|
if (this.blinking2 == 2 && this.blinkNumber2 > 2)
|
|
{
|
|
this.DoBlink2(0f);
|
|
}
|
|
if (this.blinking2 == 3 && this.blinkNumber2 > 3)
|
|
{
|
|
this.DoBlink2(1f);
|
|
}
|
|
if (this.blinking2 == 4 && this.blinkNumber2 > 4)
|
|
{
|
|
this.DoBlink2(0f);
|
|
}
|
|
if (this.blinking2 == 5 && this.blinkNumber2 > 5)
|
|
{
|
|
this.DoBlink2(1f);
|
|
}
|
|
if (this.blinking2 == 6 && this.blinkNumber2 > 6)
|
|
{
|
|
this.DoBlink2(0f);
|
|
}
|
|
if (this.blinking2 == 7 && this.blinkNumber2 > 7)
|
|
{
|
|
this.DoBlink2(1f);
|
|
}
|
|
if (this.blinking2 == 8 && this.blinkNumber2 > 8)
|
|
{
|
|
this.DoBlink2(0f);
|
|
}
|
|
if (this.blinking2 == 9 && this.blinkNumber2 > 9)
|
|
{
|
|
this.DoBlink2(1f);
|
|
}
|
|
if (this.blinking2 == 10 && this.blinkNumber2 > 10)
|
|
{
|
|
this.DoBlink2(0f);
|
|
}
|
|
if (this.blinking2 == 11 && this.blinkNumber2 > 11)
|
|
{
|
|
this.DoBlink2(1f);
|
|
}
|
|
if (this.blinking2 >= 12 || this.blinkNumber2 == this.blinking2)
|
|
{
|
|
this.EndBlink2();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000263 RID: 611 RVA: 0x0003203C File Offset: 0x0003023C
|
|
private void DoBlink2(float state)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.materials = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.materials)
|
|
{
|
|
if (this.blink2Type == "Stamina")
|
|
{
|
|
material.SetVector("_AttackBlinkColor", new Color(0.9019608f, 0.8235294f, 0f, 1f));
|
|
}
|
|
else if (this.blink2Type == "Swarm")
|
|
{
|
|
material.SetVector("_AttackBlinkColor", new Color(0.9647059f, 0.36862746f, 0f, 1f));
|
|
}
|
|
else
|
|
{
|
|
material.SetVector("_AttackBlinkColor", new Color(1f, 1f, 1f, 1f));
|
|
}
|
|
material.SetFloat("_AttackBlink2", state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000264 RID: 612 RVA: 0x00032160 File Offset: 0x00030360
|
|
public void EndBlink2()
|
|
{
|
|
if (this.blinking2 > 0)
|
|
{
|
|
this.blinking2 = 0;
|
|
this.DoBlink2(0f);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000265 RID: 613 RVA: 0x00032180 File Offset: 0x00030380
|
|
public void UpdateMenuColliders(bool updateMain)
|
|
{
|
|
if (this.needToUpdateItemColliders > 0)
|
|
{
|
|
this.needToUpdateItemColliders++;
|
|
if (this.needToUpdateItemColliders == 2)
|
|
{
|
|
this.UpdateItemColliders(true, updateMain);
|
|
}
|
|
if (this.needToUpdateItemColliders == 3)
|
|
{
|
|
this.UpdateItemColliders(false, updateMain);
|
|
}
|
|
if (this.needToUpdateItemColliders == 4)
|
|
{
|
|
this.UpdateItemColliders(true, updateMain);
|
|
this.needToUpdateItemColliders = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000266 RID: 614 RVA: 0x000321E0 File Offset: 0x000303E0
|
|
public void AttackEvent()
|
|
{
|
|
this.character.PlaySoundFX(0, 4);
|
|
if (this.character.hasActions && this.character.actions)
|
|
{
|
|
if (this.ignoreAttackEvent)
|
|
{
|
|
this.character.actions.AddBlood();
|
|
}
|
|
else if (this.character.NeedsAmmo())
|
|
{
|
|
this.character.actions.FireRangeWeapon();
|
|
if (this.character.actions)
|
|
{
|
|
this.character.actions.AttackAnimationDone();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.character.actions.TriggerHitFromAttackAnimation();
|
|
if (this.character.actions)
|
|
{
|
|
this.character.actions.AttackAnimationDone();
|
|
}
|
|
}
|
|
}
|
|
this.ignoreAttackEvent = false;
|
|
}
|
|
|
|
// Token: 0x06000267 RID: 615 RVA: 0x000322B3 File Offset: 0x000304B3
|
|
public void CastEvent()
|
|
{
|
|
if (this.character.hasActions)
|
|
{
|
|
this.character.actions.TriggerCastFromCastAnimation();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000268 RID: 616 RVA: 0x000322D2 File Offset: 0x000304D2
|
|
public void TrinketEvent()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000269 RID: 617 RVA: 0x000322D4 File Offset: 0x000304D4
|
|
public void attack()
|
|
{
|
|
if (this.character)
|
|
{
|
|
if (this.character.oar)
|
|
{
|
|
this.Oar();
|
|
return;
|
|
}
|
|
if (!this.character.IsAttacking(this.currentHash))
|
|
{
|
|
return;
|
|
}
|
|
this.attacking = true;
|
|
this.AttackEvent();
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600026A RID: 618 RVA: 0x00032328 File Offset: 0x00030528
|
|
public void cast()
|
|
{
|
|
if (!this.character.IsCasting(this.currentHash))
|
|
{
|
|
return;
|
|
}
|
|
this.attacking = true;
|
|
this.CastEvent();
|
|
}
|
|
|
|
// Token: 0x0600026B RID: 619 RVA: 0x0003234B File Offset: 0x0003054B
|
|
public void trinket()
|
|
{
|
|
if (!this.character.IsTrinketing(this.currentHash))
|
|
{
|
|
return;
|
|
}
|
|
this.attacking = true;
|
|
this.TrinketEvent();
|
|
}
|
|
|
|
// Token: 0x0600026C RID: 620 RVA: 0x0003236E File Offset: 0x0003056E
|
|
public void hold()
|
|
{
|
|
this.animationHold = true;
|
|
this.anim.speed = 0f;
|
|
}
|
|
|
|
// Token: 0x0600026D RID: 621 RVA: 0x00032387 File Offset: 0x00030587
|
|
public void down()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600026E RID: 622 RVA: 0x00032389 File Offset: 0x00030589
|
|
public void EndHold()
|
|
{
|
|
this.animationHold = false;
|
|
this.anim.speed = 1f;
|
|
}
|
|
|
|
// Token: 0x0600026F RID: 623 RVA: 0x000323A2 File Offset: 0x000305A2
|
|
public void bounce()
|
|
{
|
|
if (!this.character.dead)
|
|
{
|
|
this.character.animID = 0;
|
|
this.character.Bounce(Links.x.main, "Knockback", 0f);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000270 RID: 624 RVA: 0x000323DC File Offset: 0x000305DC
|
|
public void Oar()
|
|
{
|
|
if (this.character.party)
|
|
{
|
|
Links.x.gaia.boat.PlayOarSplash(this.character);
|
|
}
|
|
if (this.character.boat && !this.character.party)
|
|
{
|
|
this.character.boat.PlayOarSplash(this.character);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000271 RID: 625 RVA: 0x00032445 File Offset: 0x00030645
|
|
public void Attack()
|
|
{
|
|
if (this.character.oar)
|
|
{
|
|
this.Oar();
|
|
return;
|
|
}
|
|
if (!this.character.IsAttacking(this.currentHash))
|
|
{
|
|
return;
|
|
}
|
|
this.attacking = true;
|
|
this.AttackEvent();
|
|
}
|
|
|
|
// Token: 0x06000272 RID: 626 RVA: 0x00032481 File Offset: 0x00030681
|
|
public void Cast()
|
|
{
|
|
if (!this.character.IsCasting(this.currentHash))
|
|
{
|
|
return;
|
|
}
|
|
this.attacking = true;
|
|
this.CastEvent();
|
|
}
|
|
|
|
// Token: 0x06000273 RID: 627 RVA: 0x000324A4 File Offset: 0x000306A4
|
|
public void Trinket()
|
|
{
|
|
if (!this.character.IsTrinketing(this.currentHash))
|
|
{
|
|
return;
|
|
}
|
|
this.attacking = true;
|
|
this.TrinketEvent();
|
|
}
|
|
|
|
// Token: 0x06000274 RID: 628 RVA: 0x000324C7 File Offset: 0x000306C7
|
|
public void special()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000275 RID: 629 RVA: 0x000324C9 File Offset: 0x000306C9
|
|
public void Step()
|
|
{
|
|
this.character.PlaySoundFX(0, 0);
|
|
}
|
|
|
|
// Token: 0x06000276 RID: 630 RVA: 0x000324D8 File Offset: 0x000306D8
|
|
public void step()
|
|
{
|
|
if (this.character)
|
|
{
|
|
if (this.character.party)
|
|
{
|
|
this.character.PlaySoundFX(0, 0);
|
|
return;
|
|
}
|
|
this.character.PlaySoundFX(0, 0);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000277 RID: 631 RVA: 0x0003250F File Offset: 0x0003070F
|
|
public void walk()
|
|
{
|
|
if (this.character)
|
|
{
|
|
if (this.character.party)
|
|
{
|
|
this.character.PlaySoundFX(0, 0);
|
|
return;
|
|
}
|
|
this.character.PlaySoundFX(0, 0);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000278 RID: 632 RVA: 0x00032546 File Offset: 0x00030746
|
|
public void Footstep1()
|
|
{
|
|
if (this.character)
|
|
{
|
|
if (this.character.party)
|
|
{
|
|
this.character.PlaySoundFX(0, 0);
|
|
return;
|
|
}
|
|
this.character.PlaySoundFX(0, 0);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000279 RID: 633 RVA: 0x0003257D File Offset: 0x0003077D
|
|
public void Footstep2()
|
|
{
|
|
if (this.character)
|
|
{
|
|
if (this.character.party)
|
|
{
|
|
this.character.PlaySoundFX(0, 0);
|
|
return;
|
|
}
|
|
this.character.PlaySoundFX(0, 0);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600027A RID: 634 RVA: 0x000325B4 File Offset: 0x000307B4
|
|
public void TurnOffIK()
|
|
{
|
|
this.SetGrounderState(false);
|
|
}
|
|
|
|
// Token: 0x0600027B RID: 635 RVA: 0x000325C0 File Offset: 0x000307C0
|
|
public void SetGrounderState(bool state)
|
|
{
|
|
if (!this.grounder)
|
|
{
|
|
this.grounderOn = state;
|
|
return;
|
|
}
|
|
if (this.dead && state)
|
|
{
|
|
return;
|
|
}
|
|
if (this.character)
|
|
{
|
|
if (!this.character.party)
|
|
{
|
|
state = false;
|
|
}
|
|
if (this.character.inactive || this.character.stunned || this.character.visible == 0 || this.character.stats.Floating() > 0)
|
|
{
|
|
state = false;
|
|
}
|
|
}
|
|
state = false;
|
|
if (state)
|
|
{
|
|
this.grounder.weight = 1f;
|
|
this.grounder.enabled = true;
|
|
if (this.fbbik)
|
|
{
|
|
this.fbbik.solver.IKPositionWeight = 1f;
|
|
this.fbbik.enabled = true;
|
|
}
|
|
this.grounderOn = true;
|
|
return;
|
|
}
|
|
this.grounder.weight = 0f;
|
|
this.grounder.enabled = false;
|
|
if (this.fbbik)
|
|
{
|
|
this.fbbik.solver.IKPositionWeight = 0f;
|
|
this.fbbik.enabled = false;
|
|
}
|
|
this.grounderOn = false;
|
|
}
|
|
|
|
// Token: 0x0600027C RID: 636 RVA: 0x000326F0 File Offset: 0x000308F0
|
|
public void StartDead(Vector3 dir)
|
|
{
|
|
this.CombatSheen(0);
|
|
this.EndBlink();
|
|
this.EndBlink2();
|
|
for (int i = 0; i < this.colliders.Length; i++)
|
|
{
|
|
if (this.colliders[i])
|
|
{
|
|
this.colliders[i].enabled = false;
|
|
}
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.headColl.enabled = false;
|
|
}
|
|
for (int j = 0; j < this.fleshRenderers.Count; j++)
|
|
{
|
|
if (this.fleshRenderers[j] && this.fleshRenderers[j].gameObject.activeSelf)
|
|
{
|
|
this.mats = this.fleshRenderers[j].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
if (material)
|
|
{
|
|
material.SetFloat("_Glow", 0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.goreStart = Links.x.gameplay.seconds;
|
|
if (this.ghost)
|
|
{
|
|
for (int l = 0; l < this.fleshRenderers.Count; l++)
|
|
{
|
|
if (this.fleshRenderers[l] && this.fleshRenderers[l].gameObject.activeSelf)
|
|
{
|
|
Links.x.cameraEffects.AddRemoveGhost(this.fleshRenderers[l], false);
|
|
}
|
|
}
|
|
}
|
|
this.TargetingOutline(false);
|
|
if (this.character)
|
|
{
|
|
this.goreObj = this.character.goreObj;
|
|
}
|
|
if (!this.goreObj)
|
|
{
|
|
this.dead = true;
|
|
this.makeBones = false;
|
|
if (this.character && !this.character.ghost && !this.character.party && !this.character.stats.xmlName.Contains("Fairy"))
|
|
{
|
|
this.makeBones = true;
|
|
}
|
|
for (int m = 0; m < this.colliders.Length; m++)
|
|
{
|
|
if (this.colliders[m])
|
|
{
|
|
this.colliders[m].enabled = false;
|
|
}
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.headColl.enabled = false;
|
|
}
|
|
if (this.makeBones)
|
|
{
|
|
int num = Random.Range(1, 3);
|
|
this.deadRenderers.Clear();
|
|
for (int n = 0; n < num; n++)
|
|
{
|
|
GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(67);
|
|
pooledGameObject.gameObject.SetActive(true);
|
|
pooledGameObject.transform.position = this.character.tr.position + new Vector3(0f, 1f, 0f);
|
|
if (pooledGameObject.transform.childCount > 0)
|
|
{
|
|
GameObject gameObject = pooledGameObject.transform.GetChild(0).gameObject;
|
|
gameObject.transform.localPosition = Vector3.zero;
|
|
MeshRenderer component = gameObject.GetComponent<MeshRenderer>();
|
|
if (component)
|
|
{
|
|
component.enabled = true;
|
|
this.deadRenderers.Add(component);
|
|
this.mats = component.materials;
|
|
Material[] array = this.mats;
|
|
for (int k = 0; k < array.Length; k++)
|
|
{
|
|
array[k].SetFloat("_Dither", 0f);
|
|
}
|
|
}
|
|
Rigidbody component2 = pooledGameObject.GetComponent<Rigidbody>();
|
|
component2.position = this.character.tr.position + new Vector3(0f, 1f, 0f);
|
|
this.SetMeshLayer(component.gameObject, false);
|
|
component2.interpolation = RigidbodyInterpolation.Interpolate;
|
|
this.deadRigidbodies.Add(component2);
|
|
component2.isKinematic = false;
|
|
}
|
|
else
|
|
{
|
|
string text = "Wrong cellar object for body bones ";
|
|
GameObject gameObject2 = pooledGameObject;
|
|
Debug.LogWarning(text + ((gameObject2 != null) ? gameObject2.ToString() : null));
|
|
}
|
|
}
|
|
if (this.character)
|
|
{
|
|
for (int num2 = 0; num2 < this.fleshRenderers.Count; num2++)
|
|
{
|
|
if (this.fleshRenderers[num2])
|
|
{
|
|
if (this.character.stats.animal && !this.model.Contains("GraveKeep"))
|
|
{
|
|
this.fleshRenderers[num2].enabled = false;
|
|
this.cannotTurnOn = true;
|
|
}
|
|
else
|
|
{
|
|
this.fleshRenderers[num2].enabled = true;
|
|
this.SetMeshLayer(this.fleshRenderers[num2].gameObject, false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.SetHeadAnim(false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.dead = true;
|
|
this.deadRenderers.Clear();
|
|
this.deadRigidbodies.Clear();
|
|
if (this.character && this.character.goreObj)
|
|
{
|
|
this.goreObj = this.character.goreObj;
|
|
}
|
|
bool flag = false;
|
|
if (this.character)
|
|
{
|
|
flag = this.character.movesOnWater;
|
|
}
|
|
if (this.goreObj)
|
|
{
|
|
SkinnedMeshRenderer[] componentsInChildren = this.goreObj.GetComponentsInChildren<SkinnedMeshRenderer>();
|
|
for (int num3 = 0; num3 < componentsInChildren.Length; num3++)
|
|
{
|
|
this.materials = componentsInChildren[num3].materials;
|
|
for (int num4 = 0; num4 < this.materials.Length; num4++)
|
|
{
|
|
this.materials[num4].SetFloat("_Race", (float)this.raceID);
|
|
this.materials[num4].SetFloat("_Hair", (float)this.hairID);
|
|
this.materials[num4].SetFloat("_Skin", (float)this.skinID);
|
|
this.materials[num4].SetFloat("_Outfit", (float)this.outfitID);
|
|
if (flag)
|
|
{
|
|
this.materials[num4].renderQueue = 2400;
|
|
}
|
|
else
|
|
{
|
|
this.materials[num4].renderQueue = 2454;
|
|
}
|
|
}
|
|
this.deadRenderers.Add(componentsInChildren[num3]);
|
|
componentsInChildren[num3].enabled = true;
|
|
foreach (Material material2 in this.materials)
|
|
{
|
|
if (this.inMenu)
|
|
{
|
|
if (this.CanSwitchMaterial(material2, "Menus"))
|
|
{
|
|
material2.shader = Links.x.characterMenu;
|
|
}
|
|
}
|
|
else if (this.CanSwitchMaterial(material2, "Motion"))
|
|
{
|
|
material2.shader = Links.x.characterGame;
|
|
}
|
|
material2.SetFloat("_Damaged", this.healthPercent);
|
|
material2.SetFloat("_Dither", 0f);
|
|
}
|
|
this.SetMeshLayer(componentsInChildren[num3].gameObject, true);
|
|
}
|
|
MeshRenderer[] componentsInChildren2 = this.goreObj.GetComponentsInChildren<MeshRenderer>();
|
|
for (int num5 = 0; num5 < componentsInChildren2.Length; num5++)
|
|
{
|
|
this.deadRenderers.Add(componentsInChildren2[num5]);
|
|
componentsInChildren2[num5].enabled = true;
|
|
this.mats = componentsInChildren2[num5].materials;
|
|
foreach (Material material3 in this.mats)
|
|
{
|
|
material3.SetFloat("_Dither", 0f);
|
|
material3.SetFloat("_Damaged", this.healthPercent);
|
|
material3.SetFloat("_BodyGone", 1f);
|
|
if (this.inMenu)
|
|
{
|
|
if (this.CanSwitchMaterial(material3, "Menus"))
|
|
{
|
|
material3.shader = Links.x.characterMenu;
|
|
}
|
|
}
|
|
else if (this.CanSwitchMaterial(material3, "Motion"))
|
|
{
|
|
material3.shader = Links.x.characterGame;
|
|
}
|
|
if (flag)
|
|
{
|
|
material3.renderQueue = 2400;
|
|
}
|
|
else
|
|
{
|
|
material3.renderQueue = 2454;
|
|
}
|
|
}
|
|
this.SetMeshLayer(componentsInChildren2[num5].gameObject, true);
|
|
}
|
|
Rigidbody[] componentsInChildren3 = this.goreObj.GetComponentsInChildren<Rigidbody>();
|
|
for (int num6 = 0; num6 < componentsInChildren3.Length; num6++)
|
|
{
|
|
componentsInChildren3[num6].interpolation = RigidbodyInterpolation.Interpolate;
|
|
this.deadRigidbodies.Add(componentsInChildren3[num6]);
|
|
this.SetMeshLayer(this.deadRigidbodies[num6].gameObject, false);
|
|
}
|
|
Collider[] componentsInChildren4 = this.goreObj.GetComponentsInChildren<Collider>();
|
|
for (int num7 = 0; num7 < componentsInChildren4.Length; num7++)
|
|
{
|
|
this.SetMeshLayer(componentsInChildren4[num7].gameObject, false);
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.SetMeshLayer(this.headColl.gameObject, false);
|
|
}
|
|
for (int num8 = 0; num8 < this.fleshRenderers.Count; num8++)
|
|
{
|
|
if (this.fleshRenderers[num8])
|
|
{
|
|
this.fleshRenderers[num8].enabled = false;
|
|
}
|
|
}
|
|
for (int num9 = 0; num9 < this.fleshAnimators.Count; num9++)
|
|
{
|
|
this.fleshAnimators[num9].enabled = false;
|
|
}
|
|
this.SetHeadAnim(false);
|
|
this.SetMeshLayer(this.goreObj, false);
|
|
}
|
|
}
|
|
this.dead = true;
|
|
}
|
|
|
|
// Token: 0x0600027D RID: 637 RVA: 0x00032FFB File Offset: 0x000311FB
|
|
public void SetGoreKinematic()
|
|
{
|
|
if (this.goreScript && !this.goreScript.setKinematic)
|
|
{
|
|
this.goreScript.SetKinematic();
|
|
this.EndDead(1);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600027E RID: 638 RVA: 0x0003302C File Offset: 0x0003122C
|
|
public void SetDeadRendererLayers(int layer)
|
|
{
|
|
if (this.dead)
|
|
{
|
|
for (int i = 0; i < this.deadRenderers.Count; i++)
|
|
{
|
|
this.deadRenderers[i].gameObject.layer = layer;
|
|
}
|
|
for (int j = 0; j < this.deadRigidbodies.Count; j++)
|
|
{
|
|
this.deadRigidbodies[j].gameObject.layer = layer;
|
|
}
|
|
for (int k = 0; k < this.fleshRenderers.Count; k++)
|
|
{
|
|
if (this.fleshRenderers[k])
|
|
{
|
|
this.fleshRenderers[k].gameObject.layer = layer;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600027F RID: 639 RVA: 0x000330E0 File Offset: 0x000312E0
|
|
public void PocketGore(bool state)
|
|
{
|
|
if (this.bonesRoutine != null)
|
|
{
|
|
return;
|
|
}
|
|
if (this.makeBones)
|
|
{
|
|
return;
|
|
}
|
|
if (this.savedVelocities == null)
|
|
{
|
|
this.savedVelocities = new List<Vector3>();
|
|
this.savedAngularVelocities = new List<Vector3>();
|
|
}
|
|
for (int i = 0; i < this.deadRigidbodies.Count; i++)
|
|
{
|
|
if (state)
|
|
{
|
|
this.deadRigidbodies[i].isKinematic = false;
|
|
this.deadRigidbodies[i].useGravity = true;
|
|
if (i < this.savedVelocities.Count && this.savedVelocities[i].sqrMagnitude > 0.02f && Links.x.gameplay.seconds > this.goreStart + 5f)
|
|
{
|
|
this.deadRigidbodies[i].AddForce(this.savedVelocities[i], ForceMode.VelocityChange);
|
|
this.deadRigidbodies[i].AddTorque(this.deadRigidbodies[i].angularVelocity, ForceMode.VelocityChange);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (i < this.savedVelocities.Count)
|
|
{
|
|
this.savedVelocities[i] = this.deadRigidbodies[i].linearVelocity;
|
|
this.savedAngularVelocities[i] = this.deadRigidbodies[i].angularVelocity;
|
|
}
|
|
this.deadRigidbodies[i].isKinematic = true;
|
|
this.deadRigidbodies[i].useGravity = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000280 RID: 640 RVA: 0x00033264 File Offset: 0x00031464
|
|
public void AddExplosionDeadForce()
|
|
{
|
|
if (this.bonesRoutine != null)
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < this.deadRigidbodies.Count; i++)
|
|
{
|
|
this.deadRigidbodies[i].isKinematic = false;
|
|
this.deadRigidbodies[i].useGravity = true;
|
|
this.deadRigidbodies[i].AddForce(new Vector3(Random.Range(-1f, 1f), 0f, Random.Range(-1f, 1f)) * 800f, ForceMode.Force);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000281 RID: 641 RVA: 0x000332F8 File Offset: 0x000314F8
|
|
public void AddDeadForce(Vector3 dir, float s)
|
|
{
|
|
if (this.bonesRoutine != null)
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < this.deadRigidbodies.Count; i++)
|
|
{
|
|
this.deadRigidbodies[i].isKinematic = false;
|
|
this.deadRigidbodies[i].useGravity = true;
|
|
this.deadRigidbodies[i].AddForce(dir * s, ForceMode.Force);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000282 RID: 642 RVA: 0x00033364 File Offset: 0x00031564
|
|
public void Missing()
|
|
{
|
|
this.dead = true;
|
|
for (int i = 0; i < this.colliders.Length; i++)
|
|
{
|
|
this.colliders[i].enabled = false;
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.headColl.enabled = false;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000283 RID: 643 RVA: 0x000333B4 File Offset: 0x000315B4
|
|
public void RemoveDeathParts()
|
|
{
|
|
if (this.character)
|
|
{
|
|
if (!this.character.goreObj)
|
|
{
|
|
if (this.makeBones)
|
|
{
|
|
for (int i = 0; i < this.deadRigidbodies.Count; i++)
|
|
{
|
|
this.deadRigidbodies[i].isKinematic = true;
|
|
Links.x.cellar.ReturnPooledGameObject(67, this.deadRigidbodies[i].gameObject);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int j = 0; j < this.deadRigidbodies.Count; j++)
|
|
{
|
|
this.deadRigidbodies[j].isKinematic = true;
|
|
}
|
|
Links.x.archives.RecycleDeath(this.character.goreObj, this.character.goreType, this.character.stats.characterRow._DeathID);
|
|
this.deadRigidbodies.Clear();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000284 RID: 644 RVA: 0x000334A6 File Offset: 0x000316A6
|
|
public void EndDead(int pass)
|
|
{
|
|
if (this.bonesRoutine == null)
|
|
{
|
|
this.bonesRoutine = this.GoToBones(pass);
|
|
base.StartCoroutine(this.bonesRoutine);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000285 RID: 645 RVA: 0x000334CA File Offset: 0x000316CA
|
|
private IEnumerator GoToBones(int pass)
|
|
{
|
|
if (pass == 2)
|
|
{
|
|
Links.x.ChangeDeadList(this.character, false);
|
|
}
|
|
string state = this.character.stats.state;
|
|
bool flag = false;
|
|
if (this.ghost && this.character.creatures)
|
|
{
|
|
flag = !Links.x.diorama.mapCanResurrect || !this.character.creatures.LeaderAliveOrNoLeader();
|
|
}
|
|
if (state == "Swallowed" || this.character.missing || flag)
|
|
{
|
|
if (pass == 2)
|
|
{
|
|
for (int i = 0; i < this.colliders.Length; i++)
|
|
{
|
|
this.colliders[i].enabled = false;
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.headColl.enabled = false;
|
|
}
|
|
}
|
|
float timeToLerp = 36f;
|
|
float percentage = 0f;
|
|
float startTime = Links.x.gameplay.seconds;
|
|
if (pass == 1)
|
|
{
|
|
timeToLerp = 100f;
|
|
}
|
|
bool half = false;
|
|
while (percentage < 0.95f)
|
|
{
|
|
percentage = (Links.x.gameplay.seconds - startTime) / timeToLerp;
|
|
for (int j = 0; j < this.deadRenderers.Count; j++)
|
|
{
|
|
if (this.deadRenderers[j])
|
|
{
|
|
this.mats = this.deadRenderers[j].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
if (percentage > 0.5f && pass == 1)
|
|
{
|
|
material.SetFloat("_BodyGone", 1f - percentage);
|
|
}
|
|
if (pass == 2)
|
|
{
|
|
material.SetFloat("_Dither", 1f);
|
|
material.SetFloat("_DitherAmount", 1f - percentage);
|
|
}
|
|
}
|
|
if (percentage > 0.5f && pass == 2 && !half)
|
|
{
|
|
Vector3 vector = this.deadRenderers[j].bounds.center;
|
|
RaycastHit raycastHit;
|
|
if (Physics.Raycast(vector + new Vector3(0f, 1f, 0f), Vector3.up * -1f, out raycastHit, 20f, 4194321))
|
|
{
|
|
vector = raycastHit.point;
|
|
}
|
|
GameObject gorePile = Links.x.cellar.GetGorePile();
|
|
gorePile.gameObject.SetActive(true);
|
|
gorePile.transform.position = vector;
|
|
Vector3 zero = Vector3.zero;
|
|
zero.x = Random.Range(0f, 360f);
|
|
zero.y = Random.Range(0f, 360f);
|
|
zero.z = Random.Range(0f, 360f);
|
|
gorePile.transform.rotation = Quaternion.Euler(zero);
|
|
this.bones.Add(gorePile);
|
|
}
|
|
}
|
|
}
|
|
if (percentage > 0.5f && !half)
|
|
{
|
|
half = true;
|
|
}
|
|
yield return null;
|
|
}
|
|
if (pass == 2)
|
|
{
|
|
this.SetMeshState(false, false);
|
|
for (int l = 0; l < this.deadRenderers.Count; l++)
|
|
{
|
|
if (this.deadRenderers[l])
|
|
{
|
|
this.mats = this.deadRenderers[l].materials;
|
|
Material[] array = this.mats;
|
|
for (int k = 0; k < array.Length; k++)
|
|
{
|
|
array[k].SetFloat("_BodyGone", 1f);
|
|
}
|
|
}
|
|
}
|
|
if (this.character.goreObj)
|
|
{
|
|
for (int m = 0; m < this.deadRigidbodies.Count; m++)
|
|
{
|
|
this.deadRigidbodies[m].isKinematic = true;
|
|
}
|
|
Links.x.archives.RecycleDeath(this.character.goreObj, this.character.goreType, this.character.stats.characterRow._DeathID);
|
|
this.deadRigidbodies.Clear();
|
|
this.deadRenderers.Clear();
|
|
}
|
|
else
|
|
{
|
|
if (this.makeBones)
|
|
{
|
|
for (int n = 0; n < this.deadRigidbodies.Count; n++)
|
|
{
|
|
this.deadRigidbodies[n].isKinematic = true;
|
|
Links.x.cellar.ReturnPooledGameObject(67, this.deadRigidbodies[n].gameObject);
|
|
}
|
|
}
|
|
GameObject gorePile2 = Links.x.cellar.GetGorePile();
|
|
gorePile2.gameObject.SetActive(true);
|
|
Vector3 vector2 = this.tr.position + new Vector3(Random.Range(-2f, 2f), 0f, Random.Range(-2f, 2f));
|
|
gorePile2.transform.position = vector2;
|
|
gorePile2.transform.rotation = this.character.tr.rotation;
|
|
this.bones.Add(gorePile2);
|
|
}
|
|
if (!this.character.party || (this.character.party && Records.x.banquetIsle))
|
|
{
|
|
this.character.DestroyCharacter();
|
|
}
|
|
}
|
|
this.bonesRoutine = null;
|
|
}
|
|
else if (state == "Gone")
|
|
{
|
|
this.bonesRoutine = null;
|
|
}
|
|
else if (state == "Purgatory" || state == "Purgatory2")
|
|
{
|
|
base.gameObject.transform.parent = null;
|
|
if (this.character.creatures || this.character.party)
|
|
{
|
|
base.gameObject.SetActive(true);
|
|
base.StartCoroutine(this.Resurrecting());
|
|
}
|
|
else
|
|
{
|
|
this.bonesRoutine = null;
|
|
}
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000286 RID: 646 RVA: 0x000334E0 File Offset: 0x000316E0
|
|
private IEnumerator Resurrecting()
|
|
{
|
|
for (int i = 0; i < this.colliders.Length; i++)
|
|
{
|
|
this.colliders[i].enabled = true;
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.headColl.enabled = false;
|
|
}
|
|
Vector3 currentPos = this.character.tr.position;
|
|
for (int j = 0; j < this.deadRigidbodies.Count; j++)
|
|
{
|
|
this.startDeadPositions.Add(this.deadRigidbodies[j].gameObject.transform.position);
|
|
this.deadRigidbodies[j].isKinematic = true;
|
|
this.deadRigidbodies[j].useGravity = false;
|
|
}
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Guts", this.character.transform.position, 0.7f, new float?(1f), 0.1f, "", null);
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Choking", this.character.transform.position, 0.6f, new float?(1f), 0.1f, "", null);
|
|
this.SetHeadAnim(false);
|
|
if (this.deadRigidbodies.Count > 0)
|
|
{
|
|
float timeToLerp = 20f;
|
|
if (Vector3.Distance(currentPos, this.deadRigidbodies[0].gameObject.transform.position) < 5f)
|
|
{
|
|
timeToLerp = 10f;
|
|
}
|
|
float percentage = 0f;
|
|
float startTime = Links.x.gameplay.seconds;
|
|
while (percentage < 1f)
|
|
{
|
|
percentage = (Links.x.gameplay.seconds - startTime) / timeToLerp;
|
|
for (int k = 0; k < this.fleshRenderers.Count; k++)
|
|
{
|
|
if (this.fleshRenderers[k])
|
|
{
|
|
this.fleshRenderers[k].enabled = false;
|
|
}
|
|
}
|
|
for (int l = 0; l < this.deadRigidbodies.Count; l++)
|
|
{
|
|
this.deadRigidbodies[l].isKinematic = true;
|
|
this.deadRigidbodies[l].useGravity = false;
|
|
this.deadRigidbodies[l].gameObject.transform.position = Vector3.Lerp(this.startDeadPositions[l], currentPos, percentage);
|
|
if (!Records.x.pocketPause)
|
|
{
|
|
this.deadRigidbodies[l].gameObject.transform.Rotate(new Vector3(0f, 0f, 4f));
|
|
}
|
|
}
|
|
yield return null;
|
|
}
|
|
if (this.goreObj)
|
|
{
|
|
Links.x.archives.RecycleDeath(this.goreObj, this.character.goreType, this.character.stats.characterRow._DeathID);
|
|
this.character.goreObj = null;
|
|
}
|
|
}
|
|
for (int m = 0; m < this.bones.Count; m++)
|
|
{
|
|
Links.x.cellar.ReturnGorePile(this.bones[m]);
|
|
}
|
|
for (int n = 0; n < this.fleshRenderers.Count; n++)
|
|
{
|
|
if (this.fleshRenderers[n])
|
|
{
|
|
this.fleshRenderers[n].enabled = false;
|
|
}
|
|
}
|
|
for (int num = 0; num < this.fleshAnimators.Count; num++)
|
|
{
|
|
this.fleshAnimators[num].enabled = false;
|
|
}
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Choking", this.character.transform.position, 0.6f, new float?(1f), 0.1f, "", null);
|
|
GameObject pooledGameObject = Links.x.cellar.GetPooledGameObject(7);
|
|
pooledGameObject.gameObject.SetActive(true);
|
|
pooledGameObject.transform.position = this.character.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 1f, Random.Range(-0.5f, 0.5f));
|
|
yield return new WaitForSeconds(0.25f);
|
|
MasterAudio.StopAllOfSound("Guts");
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Choking", this.character.transform.position, 0.5f, new float?(1f), 0.1f, "", null);
|
|
GameObject pooledGameObject2 = Links.x.cellar.GetPooledGameObject(6);
|
|
pooledGameObject2.gameObject.SetActive(true);
|
|
pooledGameObject2.transform.position = this.character.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 1f, Random.Range(-0.5f, 0.5f));
|
|
GameObject pooledGameObject3 = Links.x.cellar.GetPooledGameObject(7);
|
|
pooledGameObject3.gameObject.SetActive(true);
|
|
pooledGameObject3.transform.position = this.character.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 1f, Random.Range(-0.5f, 0.5f));
|
|
MasterAudio.PlaySound3DAtVector3AndForget("Explosion Flesh", this.character.transform.position, 0.5f, new float?(1f), 0.1f, "", null);
|
|
if (this.character.party)
|
|
{
|
|
Links.x.diorama.SetupTemporaryCreatures(this.character.stats.GetName(), 2, "Ghost", Records.x.GetCharacterCreatureIndex("Ghost"), "GhostMap", "", this.tr.position, "Resurrected", this.character.stats.HealthMax() / 2, "", 0, 0f);
|
|
}
|
|
else
|
|
{
|
|
this.character.creatures.SetState(this.character, "Resurrected");
|
|
this.character.creatures.ResurrectCreature(this.character, this.character.tr.position);
|
|
}
|
|
base.gameObject.transform.parent = this.character.gameObject.transform;
|
|
if (this.character.goreObj)
|
|
{
|
|
Links.x.archives.RecycleDeath(this.character.goreObj, this.character.goreType, this.character.stats.characterRow._DeathID);
|
|
}
|
|
base.gameObject.SetActive(false);
|
|
this.character.DestroyCharacter();
|
|
Links.x.combat.undeadCount++;
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000287 RID: 647 RVA: 0x000334F0 File Offset: 0x000316F0
|
|
public Transform GetHips()
|
|
{
|
|
Transform transform = null;
|
|
if (!this.tr)
|
|
{
|
|
return base.transform;
|
|
}
|
|
if (this.tr.childCount > 0)
|
|
{
|
|
if (this.points == null)
|
|
{
|
|
this.points = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
}
|
|
for (int i = 0; i < this.points.Length; i++)
|
|
{
|
|
if (this.points[i].name.Contains("hip") || this.points[i].name.Contains("Hip"))
|
|
{
|
|
transform = this.points[i];
|
|
}
|
|
}
|
|
if (transform == null)
|
|
{
|
|
transform = this.tr;
|
|
}
|
|
return transform;
|
|
}
|
|
return this.tr;
|
|
}
|
|
|
|
// Token: 0x06000288 RID: 648 RVA: 0x000335A4 File Offset: 0x000317A4
|
|
public Transform GetHand()
|
|
{
|
|
if (this.hand)
|
|
{
|
|
return this.hand;
|
|
}
|
|
if (!this.tr)
|
|
{
|
|
return base.transform;
|
|
}
|
|
if (this.tr.childCount <= 0)
|
|
{
|
|
return this.tr;
|
|
}
|
|
if (this.points == null)
|
|
{
|
|
this.points = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
}
|
|
for (int i = 0; i < this.points.Length; i++)
|
|
{
|
|
if (this.points[i] && (this.points[i].name.Contains("R_hand") || this.points[i].name.Contains("lr_hand") || this.points[i].name.Contains("R_Hand")))
|
|
{
|
|
this.hand = this.points[i];
|
|
}
|
|
}
|
|
if (this.hand == null)
|
|
{
|
|
return this.tr;
|
|
}
|
|
return this.hand;
|
|
}
|
|
|
|
// Token: 0x06000289 RID: 649 RVA: 0x000336A4 File Offset: 0x000318A4
|
|
public Transform GetHead()
|
|
{
|
|
if (this.headBone)
|
|
{
|
|
return this.headBone;
|
|
}
|
|
if (!this.tr)
|
|
{
|
|
return base.transform;
|
|
}
|
|
if (this.tr.childCount > 0)
|
|
{
|
|
Transform transform = null;
|
|
if (this.points == null)
|
|
{
|
|
this.points = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
}
|
|
for (int i = 0; i < this.points.Length; i++)
|
|
{
|
|
if (this.points[i].name == "head" || this.points[i].name == "_head" || this.points[i].name == "pasted___head" || this.points[i].name.Contains("HeadHolder"))
|
|
{
|
|
transform = this.points[i];
|
|
}
|
|
}
|
|
if (transform == null)
|
|
{
|
|
this.GetNeck();
|
|
if (this.neck && this.neck != this.tr)
|
|
{
|
|
transform = this.neck;
|
|
}
|
|
else
|
|
{
|
|
transform = this.tr;
|
|
}
|
|
}
|
|
return transform;
|
|
}
|
|
return this.tr;
|
|
}
|
|
|
|
// Token: 0x0600028A RID: 650 RVA: 0x000337D4 File Offset: 0x000319D4
|
|
public Vector3 GetAttackBone()
|
|
{
|
|
if (this.attackBone)
|
|
{
|
|
return this.attackBone.position;
|
|
}
|
|
if (this.tr)
|
|
{
|
|
if (this.character.stats.characterRow._AttacksWith == "Hands")
|
|
{
|
|
if (this.GetSlot(0))
|
|
{
|
|
this.attackBone = this.GetSlot(0);
|
|
}
|
|
else
|
|
{
|
|
if (this.points == null)
|
|
{
|
|
this.points = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
}
|
|
for (int i = 0; i < this.points.Length; i++)
|
|
{
|
|
if (this.points[i].name.Contains("hand") || this.points[i].name.Contains("Hand"))
|
|
{
|
|
this.attackBone = this.points[i];
|
|
}
|
|
}
|
|
if (this.attackBone == null)
|
|
{
|
|
this.GetNeck();
|
|
if (this.neck && this.neck != this.tr)
|
|
{
|
|
this.attackBone = this.neck;
|
|
}
|
|
else
|
|
{
|
|
this.attackBone = this.tr;
|
|
}
|
|
}
|
|
}
|
|
return this.attackBone.position;
|
|
}
|
|
if (this.character.stats.characterRow._AttacksWith == "Head")
|
|
{
|
|
return this.HeadPosition(0f);
|
|
}
|
|
}
|
|
return this.tr.position + new Vector3(0f, 0.5f, 0f);
|
|
}
|
|
|
|
// Token: 0x0600028B RID: 651 RVA: 0x00033968 File Offset: 0x00031B68
|
|
public Transform GetHip()
|
|
{
|
|
if (this.hipBone)
|
|
{
|
|
return this.hipBone;
|
|
}
|
|
if (this.tr)
|
|
{
|
|
if (this.points == null)
|
|
{
|
|
this.points = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
}
|
|
for (int i = 0; i < this.points.Length; i++)
|
|
{
|
|
if (this.points[i] && (this.points[i].name.Contains("hip") || this.points[i].name.Contains("Hip")))
|
|
{
|
|
this.hipBone = this.points[i];
|
|
}
|
|
}
|
|
if (this.hipBone == null)
|
|
{
|
|
this.GetNeck();
|
|
if (this.neck && this.neck != this.tr)
|
|
{
|
|
this.hipBone = this.neck;
|
|
}
|
|
else
|
|
{
|
|
this.hipBone = this.tr;
|
|
}
|
|
}
|
|
return this.hipBone;
|
|
}
|
|
return this.tr;
|
|
}
|
|
|
|
// Token: 0x0600028C RID: 652 RVA: 0x00033A74 File Offset: 0x00031C74
|
|
public Vector3 HeadPosition(float add)
|
|
{
|
|
Vector3 vector = this.tr.position;
|
|
if (this.GetNeck() != this.tr)
|
|
{
|
|
vector = this.neck.position + new Vector3(0f, 1f + add, 0f);
|
|
}
|
|
else if (this.headBone != this.tr && this.headBone)
|
|
{
|
|
if (!this.headBone)
|
|
{
|
|
Debug.Log("Head missing " + ((this != null) ? this.ToString() : null));
|
|
}
|
|
vector = this.headBone.position + new Vector3(0f, 0.5f + add, 0f);
|
|
}
|
|
else if (this.character)
|
|
{
|
|
vector = this.tr.position + new Vector3(0f, this.character.characterHeight + add, 0f);
|
|
}
|
|
else
|
|
{
|
|
vector = this.tr.position + new Vector3(0f, 2f + add, 0f);
|
|
}
|
|
return vector;
|
|
}
|
|
|
|
// Token: 0x0600028D RID: 653 RVA: 0x00033BA4 File Offset: 0x00031DA4
|
|
public Transform GetNeck()
|
|
{
|
|
if (this.neck)
|
|
{
|
|
return this.neck;
|
|
}
|
|
this.neck = this.headBone;
|
|
if (this.headBone && this.character && this.character.stats.xmlName.Contains("Dobra"))
|
|
{
|
|
this.neck = this.headBone;
|
|
return this.headBone;
|
|
}
|
|
if (this.points == null)
|
|
{
|
|
this.points = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
}
|
|
for (int i = 0; i < this.points.Length; i++)
|
|
{
|
|
string name = this.points[i].name;
|
|
if (name.Contains("neck") || name.Contains("Neck"))
|
|
{
|
|
this.neck = this.points[i];
|
|
break;
|
|
}
|
|
}
|
|
if (!this.neck && (this.neck = this.headBone))
|
|
{
|
|
return this.headBone;
|
|
}
|
|
return this.neck;
|
|
}
|
|
|
|
// Token: 0x0600028E RID: 654 RVA: 0x00033CB0 File Offset: 0x00031EB0
|
|
public Transform GetFoot()
|
|
{
|
|
if (this.points == null)
|
|
{
|
|
this.points = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
}
|
|
for (int i = 0; i < this.points.Length; i++)
|
|
{
|
|
string name = this.points[i].name;
|
|
if (name.Contains("toe") || name.Contains("Toe"))
|
|
{
|
|
return this.points[i];
|
|
}
|
|
}
|
|
return this.tr;
|
|
}
|
|
|
|
// Token: 0x0600028F RID: 655 RVA: 0x00033D24 File Offset: 0x00031F24
|
|
public void SetupTextures(string race, float sex, Library.Characters characterRow, string skinTexture, string hairTexture, bool isNPC)
|
|
{
|
|
if (race == "Yeti" || race == "Ameythevian" || race == "Varuchov" || race == "Pasaaren" || race == "Taratorith" || race == "Lachovinian" || race == "Possessed")
|
|
{
|
|
this.raceID = 0;
|
|
if (race == "Taratorith")
|
|
{
|
|
this.raceID = 3;
|
|
if (this.wings)
|
|
{
|
|
this.wings.SetActive(false);
|
|
}
|
|
if (this.birdFeet)
|
|
{
|
|
this.birdFeet.SetActive(false);
|
|
}
|
|
if (this.toeFeet)
|
|
{
|
|
this.toeFeet.SetActive(true);
|
|
}
|
|
}
|
|
if (race == "Ameythevian")
|
|
{
|
|
this.raceID = 2;
|
|
if (this.wings)
|
|
{
|
|
this.wings.SetActive(false);
|
|
}
|
|
if (this.birdFeet)
|
|
{
|
|
this.birdFeet.SetActive(false);
|
|
}
|
|
if (this.toeFeet)
|
|
{
|
|
this.toeFeet.SetActive(true);
|
|
}
|
|
}
|
|
if (race == "Varuchov")
|
|
{
|
|
this.raceID = 1;
|
|
if (this.wings)
|
|
{
|
|
this.wings.SetActive(true);
|
|
}
|
|
if (this.birdFeet)
|
|
{
|
|
this.birdFeet.SetActive(false);
|
|
}
|
|
if (this.toeFeet)
|
|
{
|
|
this.toeFeet.SetActive(true);
|
|
}
|
|
}
|
|
if (race == "Pasaaren" || race == "Lachovinian")
|
|
{
|
|
this.raceID = 0;
|
|
if (this.wings)
|
|
{
|
|
this.wings.SetActive(false);
|
|
}
|
|
if (this.birdFeet)
|
|
{
|
|
this.birdFeet.SetActive(true);
|
|
}
|
|
if (this.toeFeet)
|
|
{
|
|
this.toeFeet.SetActive(false);
|
|
}
|
|
}
|
|
if (race == "Yeti")
|
|
{
|
|
this.raceID = 4;
|
|
if (this.wings)
|
|
{
|
|
this.wings.SetActive(false);
|
|
}
|
|
if (this.birdFeet)
|
|
{
|
|
this.birdFeet.SetActive(false);
|
|
}
|
|
if (this.toeFeet)
|
|
{
|
|
this.toeFeet.SetActive(true);
|
|
}
|
|
}
|
|
if (race == "Possessed")
|
|
{
|
|
if (this.model.Contains("wings"))
|
|
{
|
|
this.raceID = 1;
|
|
}
|
|
else
|
|
{
|
|
this.raceID = 0;
|
|
}
|
|
}
|
|
string text = "armor1";
|
|
if (characterRow != null)
|
|
{
|
|
text = characterRow._ArmorTexture;
|
|
}
|
|
if (Records.x.banquetIsle && this.model.Contains("Companion"))
|
|
{
|
|
text = "armor3";
|
|
}
|
|
this.savedRace = race;
|
|
this.SetSexScale(sex);
|
|
this.hairID = 0;
|
|
this.skinID = 0;
|
|
if (skinTexture == "s2")
|
|
{
|
|
this.skinID = 1;
|
|
}
|
|
if (skinTexture == "s3")
|
|
{
|
|
this.skinID = 2;
|
|
}
|
|
if (skinTexture == "s4")
|
|
{
|
|
this.skinID = 3;
|
|
}
|
|
if (skinTexture == "s5")
|
|
{
|
|
this.skinID = 4;
|
|
}
|
|
if (hairTexture.Contains("1"))
|
|
{
|
|
this.hairID = 1;
|
|
}
|
|
if (hairTexture.Contains("2"))
|
|
{
|
|
this.hairID = 2;
|
|
}
|
|
if (hairTexture.Contains("3"))
|
|
{
|
|
this.hairID = 3;
|
|
}
|
|
if (hairTexture.Contains("4"))
|
|
{
|
|
this.hairID = 4;
|
|
}
|
|
this.outfitID = 0;
|
|
if (text == "armor2")
|
|
{
|
|
this.outfitID = 1;
|
|
}
|
|
if (text == "armor3")
|
|
{
|
|
this.outfitID = 2;
|
|
}
|
|
if (text == "armor4")
|
|
{
|
|
this.outfitID = 3;
|
|
}
|
|
if (text == "armor5")
|
|
{
|
|
this.outfitID = 4;
|
|
}
|
|
if (base.gameObject.name.Contains("Guard"))
|
|
{
|
|
this.outfitID = -1;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.materials = this.fleshRenderers[i].materials;
|
|
for (int j = 0; j < this.materials.Length; j++)
|
|
{
|
|
if (!this.materials[j].name.Contains("Item"))
|
|
{
|
|
this.materials[j].SetFloat("_Race", (float)this.raceID);
|
|
this.materials[j].SetFloat("_Hair", (float)this.hairID);
|
|
this.materials[j].SetFloat("_Skin", (float)this.skinID);
|
|
this.materials[j].SetFloat("_Outfit", (float)this.outfitID);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
if (this.startScale != Vector3.zero)
|
|
{
|
|
this.tr.localScale = this.startScale;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000290 RID: 656 RVA: 0x00034220 File Offset: 0x00032420
|
|
public void SetSexScale(float sex)
|
|
{
|
|
if (this.isPortrait || this.portrait)
|
|
{
|
|
sex = 0f;
|
|
}
|
|
string name = base.gameObject.name;
|
|
if (!this.IsBiped(name))
|
|
{
|
|
if (this.startScale != Vector3.zero)
|
|
{
|
|
this.tr.localScale = this.startScale;
|
|
}
|
|
return;
|
|
}
|
|
this.originalScale = new Vector3(1f, 1f, 1f);
|
|
if (sex > 1.1f)
|
|
{
|
|
this.tr.localScale = this.originalScale * 1.2f;
|
|
return;
|
|
}
|
|
if (sex > 0.75f && sex <= 1.1f)
|
|
{
|
|
this.tr.localScale = this.originalScale * 1.02f;
|
|
return;
|
|
}
|
|
if (sex <= 0.75f && sex > 0.5f)
|
|
{
|
|
this.tr.localScale = this.originalScale * 1.0125f;
|
|
return;
|
|
}
|
|
if (sex <= 0.5f && sex > 0.25f)
|
|
{
|
|
this.tr.localScale = this.originalScale * 1.0075f;
|
|
return;
|
|
}
|
|
this.tr.localScale = this.originalScale * 1f;
|
|
}
|
|
|
|
// Token: 0x06000291 RID: 657 RVA: 0x00034360 File Offset: 0x00032560
|
|
public void SetTexture(Texture tex, bool forHead, int matIndex, bool isYeti)
|
|
{
|
|
if (!this.ghost || this.ghost)
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.materials = this.fleshRenderers[i].materials;
|
|
for (int j = 0; j < this.materials.Length; j++)
|
|
{
|
|
this.materials[j].name.Contains("Item");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000292 RID: 658 RVA: 0x000343EC File Offset: 0x000325EC
|
|
public void SetupHead(string m)
|
|
{
|
|
if (this.headObject)
|
|
{
|
|
string text = "";
|
|
if (Records.x.editor)
|
|
{
|
|
text = base.gameObject.name;
|
|
}
|
|
this.SetMagicaClothHeadCollider(false);
|
|
Links.x.archives.RecycleHead(this.headObject, this.headModel, text);
|
|
this.headObject.SetActive(false);
|
|
this.headObject = null;
|
|
this.headColl = null;
|
|
this.headAnim = null;
|
|
this.magicaCloths = new MagicaCloth[0];
|
|
this.magicaCapsules = new MagicaCapsuleCollider[0];
|
|
}
|
|
this.headModel = m;
|
|
if (this.headModel != "")
|
|
{
|
|
if (!this.headBone)
|
|
{
|
|
this.headBone = this.GetHead();
|
|
}
|
|
this.headObject = Links.x.archives.InstantiateHead(this.headModel, this.headBone);
|
|
this.headObject.transform.localPosition = Vector3.zero;
|
|
this.headObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
float x = this.headObject.transform.localScale.x;
|
|
float y = this.headObject.transform.localScale.y;
|
|
float z = this.headObject.transform.localScale.z;
|
|
if (x > 1.1f || x < 0.9f || x != y || x != z || z != y)
|
|
{
|
|
this.headObject.transform.localScale = Vector3.one;
|
|
}
|
|
this.headColl = this.headObject.GetComponent<Collider>();
|
|
foreach (object obj in this.headObject.transform)
|
|
{
|
|
Transform transform = (Transform)obj;
|
|
if (transform.gameObject.GetComponent<Collider>())
|
|
{
|
|
this.headColl = transform.gameObject.GetComponent<Collider>();
|
|
}
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.headColl.gameObject.layer = 31;
|
|
SelectionCircle selectionCircle = this.headColl.gameObject.GetComponent<SelectionCircle>();
|
|
if (!selectionCircle)
|
|
{
|
|
selectionCircle = this.headColl.gameObject.AddComponent<SelectionCircle>();
|
|
}
|
|
selectionCircle.character = this.character;
|
|
}
|
|
this.newHead = true;
|
|
this.startColliders.Clear();
|
|
this.GetBounds();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000293 RID: 659 RVA: 0x00034674 File Offset: 0x00032874
|
|
public void GetHashes()
|
|
{
|
|
this.idleHash = Animator.StringToHash("Idle");
|
|
this.combatIdleHash = Animator.StringToHash("Combat_Idle_loop");
|
|
this.patrolLeftHash = Animator.StringToHash("Patrol_rotate_left");
|
|
this.patrolRightHash = Animator.StringToHash("Patrol_rotate_right");
|
|
this.patrolLeft45Hash = Animator.StringToHash("Patrol_rotate_left 45");
|
|
this.patrolRight45Hash = Animator.StringToHash("Patrol_rotate_right 45");
|
|
this.combatPivotLeftHash = Animator.StringToHash("Pivot Left 90");
|
|
this.combatPivotRightHash = Animator.StringToHash("Pivot Right 90");
|
|
this.combatPivotLeft45Hash = Animator.StringToHash("Pivot Left 45");
|
|
this.combatPivotRight45Hash = Animator.StringToHash("Pivot Right 45");
|
|
this.combatPivotLeftBackHash = Animator.StringToHash("Pivot Left 90 back");
|
|
this.combatPivotRightBackHash = Animator.StringToHash("Pivot Right 90 back");
|
|
this.combatPivotLeft45BackHash = Animator.StringToHash("Pivot Left 45 back");
|
|
this.combatPivotRight45BackHash = Animator.StringToHash("Pivot Right 45 back");
|
|
this.combatPivotBack180 = Animator.StringToHash("Pivot 180 back");
|
|
this.turnLeftHash = Animator.StringToHash("Turn_left");
|
|
this.turnRightHash = Animator.StringToHash("Turn_right");
|
|
this.combatIdle2Hash = Animator.StringToHash("Combat_idle_paused");
|
|
this.basicAttackHash = Animator.StringToHash("Combat_basic_attack");
|
|
this.defendHash = Animator.StringToHash("Defend");
|
|
this.channelHash = Animator.StringToHash("Cast");
|
|
this.special1Hash = Animator.StringToHash("Combat_synergy_1");
|
|
this.special2Hash = Animator.StringToHash("Combat_synergy_2");
|
|
this.special5Hash = Animator.StringToHash("Combat_synergy_normal_2");
|
|
this.special4Hash = Animator.StringToHash("Combat_synergy_normal_1");
|
|
this.special3Hash = Animator.StringToHash("Combat_skill_race_special_3");
|
|
this.kickHash = Animator.StringToHash("Kick");
|
|
this.useHash = Animator.StringToHash("Combat_use_trinket_or_potion");
|
|
this.walkHash = Animator.StringToHash("Walk");
|
|
this.walkPartyHash = Animator.StringToHash("Walk Party");
|
|
this.walkStartHash = Animator.StringToHash("Walk_start");
|
|
this.combatWalkHash = Animator.StringToHash("Combat_walk");
|
|
this.combatWalkStartHash = Animator.StringToHash("Combat_walk_start");
|
|
this.powerDraw = Animator.StringToHash("Combat_warbook_power_draw");
|
|
this.walkEndHash = Animator.StringToHash("Walk_end");
|
|
this.combatWalkEndHash = Animator.StringToHash("Combat_walk_end");
|
|
this.instrumentHash = Animator.StringToHash("Combat_instrument");
|
|
this.jumpStartHash = Animator.StringToHash("Jump_start");
|
|
this.jumpLoopHash = Animator.StringToHash("Jump_loop");
|
|
this.jumpEndHash = Animator.StringToHash("Jump_end");
|
|
this.creepStartHash = Animator.StringToHash("Creep_start");
|
|
this.creepHash = Animator.StringToHash("Creep");
|
|
this.creepEndHash = Animator.StringToHash("Creep_end");
|
|
this.charmHash = Animator.StringToHash("Combat_charm");
|
|
this.basicAttack2Hash = Animator.StringToHash("Combat_lefthand_attack");
|
|
this.basicAttack3Hash = Animator.StringToHash("Combat_righthand_lower_attack");
|
|
this.basicAttack4Hash = Animator.StringToHash("Combat_lefthand_lower_attack");
|
|
this.hitDownHash = Animator.StringToHash("Hit_down");
|
|
this.runHash = Animator.StringToHash("Run");
|
|
this.runStartHash = Animator.StringToHash("Run_start");
|
|
this.runEndHash = Animator.StringToHash("Run_end");
|
|
this.patrol180 = Animator.StringToHash("Patrol_rotate_180");
|
|
this.combatPivot180 = Animator.StringToHash("Pivot 180");
|
|
this.jumpStartHash = Animator.StringToHash("Jump_start");
|
|
this.quickAttackHash = Animator.StringToHash("Combat_small_attacks");
|
|
this.walkBackHash = Animator.StringToHash("Combat_walk_start_back");
|
|
this.walkBackStartHash = Animator.StringToHash("Combat_walk_back");
|
|
this.walkBackEndHash = Animator.StringToHash("Combat_walk_end_back");
|
|
this.getupHash = Animator.StringToHash("Get_up");
|
|
this.hitHash = Animator.StringToHash("Hit");
|
|
this.downHash = Animator.StringToHash("Hit_down");
|
|
this.downStartHash = Animator.StringToHash("Hit_down_start");
|
|
this.bounceHash = Animator.StringToHash("Hit_bounce");
|
|
}
|
|
|
|
// Token: 0x06000294 RID: 660 RVA: 0x00034A74 File Offset: 0x00032C74
|
|
public void GatherRenderers(bool first)
|
|
{
|
|
this.fleshRenderers.Clear();
|
|
this.fleshAnimators.Clear();
|
|
if (!this.inMenu && first)
|
|
{
|
|
this.GetHashes();
|
|
}
|
|
if (first)
|
|
{
|
|
this.slots.Clear();
|
|
this.slotNames.Clear();
|
|
Transform[] componentsInChildren = base.gameObject.GetComponentsInChildren<Transform>(true);
|
|
for (int i = 0; i < componentsInChildren.Length; i++)
|
|
{
|
|
string name = componentsInChildren[i].gameObject.name;
|
|
if (name.Contains("slot") || name.Contains("Slot"))
|
|
{
|
|
this.slots.Add(componentsInChildren[i]);
|
|
string text = componentsInChildren[i].gameObject.name.ToLower();
|
|
this.slotNames.Add(text);
|
|
if (componentsInChildren[i].childCount > 0)
|
|
{
|
|
Object.Destroy(componentsInChildren[i].GetChild(0).gameObject);
|
|
}
|
|
}
|
|
if (name.Contains("VaruWings"))
|
|
{
|
|
this.wings = componentsInChildren[i].gameObject;
|
|
}
|
|
if (name.Contains("pasa") || name.Contains("Pasa") || name.Contains("boots") || name.Contains("toes") || name.Contains("Toes"))
|
|
{
|
|
if (name.Contains("toes") || name.Contains("Toes") || name.Contains("boots") || name.Contains("Boots"))
|
|
{
|
|
this.toeFeet = componentsInChildren[i].gameObject;
|
|
}
|
|
else
|
|
{
|
|
this.birdFeet = componentsInChildren[i].gameObject;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.inMenu)
|
|
{
|
|
this.SetupCollider(false);
|
|
}
|
|
if (!this.tr)
|
|
{
|
|
this.tr = base.transform;
|
|
}
|
|
if (this.character && first)
|
|
{
|
|
foreach (Collider collider in this.colliders)
|
|
{
|
|
if (collider)
|
|
{
|
|
collider.gameObject.layer = 31;
|
|
collider.gameObject.GetComponent<SelectionCircle>().character = this.character;
|
|
}
|
|
}
|
|
if (this.colliders.Length == 0)
|
|
{
|
|
this.SetupCollider(true);
|
|
SelectionCircle selectionCircle = base.gameObject.GetComponent<SelectionCircle>();
|
|
if (!selectionCircle)
|
|
{
|
|
selectionCircle = base.gameObject.AddComponent<SelectionCircle>();
|
|
}
|
|
selectionCircle.character = this.character;
|
|
}
|
|
}
|
|
bool flag = false;
|
|
bool flag2 = false;
|
|
if (this.character)
|
|
{
|
|
flag = this.character.movesOnWater;
|
|
if (!this.character.stats.animal)
|
|
{
|
|
flag2 = true;
|
|
}
|
|
}
|
|
SkinnedMeshRenderer[] componentsInChildren2 = base.gameObject.GetComponentsInChildren<SkinnedMeshRenderer>(true);
|
|
for (int k = 0; k < componentsInChildren2.Length; k++)
|
|
{
|
|
this.fleshRenderers.Add(componentsInChildren2[k]);
|
|
componentsInChildren2[k].skinnedMotionVectors = false;
|
|
componentsInChildren2[k].lightProbeUsage = LightProbeUsage.Off;
|
|
componentsInChildren2[k].reflectionProbeUsage = ReflectionProbeUsage.Off;
|
|
if (this.inMenu)
|
|
{
|
|
this.materials = componentsInChildren2[k].materials;
|
|
foreach (Material material in this.materials)
|
|
{
|
|
if (this.CanSwitchMaterial(material, "Menus"))
|
|
{
|
|
material.shader = Links.x.characterMenu;
|
|
}
|
|
material.SetFloat("_BodyGone", 1f);
|
|
material.SetFloat("_Dither", 0f);
|
|
material.SetFloat("_DitherAmount", 0f);
|
|
material.SetFloat("_Glow", 0f);
|
|
}
|
|
}
|
|
else if (this.isPortrait)
|
|
{
|
|
this.materials = componentsInChildren2[k].materials;
|
|
foreach (Material material2 in this.materials)
|
|
{
|
|
if (this.CanSwitchMaterial(material2, "Portrait"))
|
|
{
|
|
material2.shader = Links.x.characterPortrait;
|
|
if (this.portrait)
|
|
{
|
|
material2.SetFloat("_Portrait", 1f);
|
|
}
|
|
else
|
|
{
|
|
material2.SetFloat("_Portrait", 0f);
|
|
}
|
|
material2.SetFloat("_BodyGone", 1f);
|
|
material2.SetFloat("_Dither", 0f);
|
|
material2.SetFloat("_DitherAmount", 0f);
|
|
material2.SetFloat("_Glow", 0f);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.materials = componentsInChildren2[k].materials;
|
|
foreach (Material material3 in this.materials)
|
|
{
|
|
if (this.CanSwitchMaterial(material3, "Motion"))
|
|
{
|
|
material3.shader = Links.x.characterGame;
|
|
}
|
|
material3.SetFloat("_BodyGone", 1f);
|
|
material3.SetFloat("_Dither", 0f);
|
|
material3.SetFloat("_DitherAmount", 0f);
|
|
material3.SetFloat("_Glow", 0f);
|
|
if (flag)
|
|
{
|
|
material3.renderQueue = 2400;
|
|
}
|
|
else
|
|
{
|
|
material3.renderQueue = 2454;
|
|
}
|
|
}
|
|
}
|
|
this.SetMeshLayer(componentsInChildren2[k].gameObject, true);
|
|
string name2 = componentsInChildren2[k].gameObject.name;
|
|
if (name2.Contains("Head") || name2.Contains("head"))
|
|
{
|
|
if (!this.headAnim)
|
|
{
|
|
bool flag3 = true;
|
|
if (this.character)
|
|
{
|
|
if (this.character.stats.xmlName.Contains("Dolki"))
|
|
{
|
|
flag3 = false;
|
|
}
|
|
}
|
|
else if (this.model.Contains("Dolki"))
|
|
{
|
|
flag3 = false;
|
|
}
|
|
if (flag3)
|
|
{
|
|
if (!componentsInChildren2[k].gameObject.GetComponent<FaceAnimations>())
|
|
{
|
|
this.headAnim = componentsInChildren2[k].gameObject.AddComponent<FaceAnimations>();
|
|
this.headAnim.body = base.gameObject;
|
|
}
|
|
else
|
|
{
|
|
this.headAnim = componentsInChildren2[k].gameObject.GetComponent<FaceAnimations>();
|
|
this.headAnim.body = base.gameObject;
|
|
}
|
|
}
|
|
}
|
|
if (!flag2 || (flag2 && !name2.Contains("hair") && !name2.Contains("Hair")))
|
|
{
|
|
this.faceRenderer = componentsInChildren2[k];
|
|
}
|
|
else
|
|
{
|
|
this.faceRenderer = componentsInChildren2[k];
|
|
}
|
|
if (Records.x.banquetIsle && this.model.Contains("Companion"))
|
|
{
|
|
if (QuestLog.GetQuestState("F5_BanquetFriend") == QuestState.Complete)
|
|
{
|
|
this.faceRenderer.material.SetTexture("_MainTex", Links.x.cinematicLachoTextureSwap2);
|
|
}
|
|
else
|
|
{
|
|
this.faceRenderer.material.SetTexture("_MainTex", Links.x.cinematicLachoTextureSwap3);
|
|
}
|
|
}
|
|
}
|
|
if (this.inMenu || this.isPortrait || flag2)
|
|
{
|
|
if (name2.Contains("hair") || name2.Contains("Hair"))
|
|
{
|
|
this.hairRenderer = componentsInChildren2[k];
|
|
}
|
|
else if ((name2.Contains("azure") || name2.Contains("armer")) && !name2.Contains("ead") && !name2.Contains("Yeti") && !this.model.Contains("Nude"))
|
|
{
|
|
this.materials = componentsInChildren2[k].materials;
|
|
foreach (Material material4 in this.materials)
|
|
{
|
|
if (name2.Contains("armer"))
|
|
{
|
|
material4.SetFloat("_Brighten", 0.25f);
|
|
}
|
|
else
|
|
{
|
|
material4.SetFloat("_Brighten", 1f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
MeshRenderer[] componentsInChildren3 = base.gameObject.GetComponentsInChildren<MeshRenderer>(true);
|
|
GameObject gameObject = null;
|
|
if (this.character)
|
|
{
|
|
gameObject = this.character.oar;
|
|
}
|
|
for (int l = 0; l < componentsInChildren3.Length; l++)
|
|
{
|
|
if (componentsInChildren3[l] && componentsInChildren3[l].gameObject != gameObject)
|
|
{
|
|
this.fleshRenderers.Add(componentsInChildren3[l]);
|
|
componentsInChildren3[l].lightProbeUsage = LightProbeUsage.Off;
|
|
componentsInChildren3[l].reflectionProbeUsage = ReflectionProbeUsage.Off;
|
|
string name3 = componentsInChildren3[l].gameObject.name;
|
|
if (this.inMenu)
|
|
{
|
|
this.materials = componentsInChildren3[l].materials;
|
|
foreach (Material material5 in this.materials)
|
|
{
|
|
if (this.CanSwitchMaterial(material5, "Menus"))
|
|
{
|
|
material5.shader = Links.x.characterMenu;
|
|
}
|
|
material5.SetFloat("_BodyGone", 1f);
|
|
material5.SetFloat("_Dither", 0f);
|
|
material5.SetFloat("_DitherAmount", 0f);
|
|
material5.SetFloat("_Glow", 0f);
|
|
}
|
|
if (name3.Contains("Head") || name3.Contains("head"))
|
|
{
|
|
this.faceRenderer = componentsInChildren3[l];
|
|
}
|
|
}
|
|
else if (this.isPortrait)
|
|
{
|
|
this.materials = componentsInChildren3[l].materials;
|
|
foreach (Material material6 in this.materials)
|
|
{
|
|
if (this.CanSwitchMaterial(material6, "Portrait"))
|
|
{
|
|
material6.shader = Links.x.characterPortrait;
|
|
}
|
|
material6.SetFloat("_BodyGone", 1f);
|
|
material6.SetFloat("_Dither", 0f);
|
|
material6.SetFloat("_DitherAmount", 0f);
|
|
material6.SetFloat("_Glow", 0f);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.materials = componentsInChildren3[l].materials;
|
|
foreach (Material material7 in this.materials)
|
|
{
|
|
if (this.CanSwitchMaterial(material7, "Motion"))
|
|
{
|
|
material7.shader = Links.x.characterGame;
|
|
}
|
|
material7.SetFloat("_BodyGone", 1f);
|
|
material7.SetFloat("_Dither", 0f);
|
|
material7.SetFloat("_DitherAmount", 0f);
|
|
material7.SetFloat("_Glow", 0f);
|
|
if (flag)
|
|
{
|
|
material7.renderQueue = 2400;
|
|
}
|
|
else
|
|
{
|
|
material7.renderQueue = 2454;
|
|
}
|
|
}
|
|
}
|
|
if (name3.Contains("Head") || name3.Contains("head"))
|
|
{
|
|
this.faceRenderer = componentsInChildren3[l];
|
|
if (Records.x.banquetIsle && this.model.Contains("Companion"))
|
|
{
|
|
if (QuestLog.GetQuestState("F5_BanquetFriend") == QuestState.Complete)
|
|
{
|
|
this.faceRenderer.material.SetTexture("_MainTex", Links.x.cinematicLachoTextureSwap2);
|
|
}
|
|
else
|
|
{
|
|
this.faceRenderer.material.SetTexture("_MainTex", Links.x.cinematicLachoTextureSwap3);
|
|
}
|
|
}
|
|
}
|
|
this.SetMeshLayer(componentsInChildren3[l].gameObject, true);
|
|
if ((this.isPortrait || this.inMenu || flag2) && (name3.Contains("azure") || name3.Contains("armer")) && !name3.Contains("ead") && !name3.Contains("Yeti"))
|
|
{
|
|
this.materials = componentsInChildren3[l].materials;
|
|
foreach (Material material8 in this.materials)
|
|
{
|
|
if (name3.Contains("armer"))
|
|
{
|
|
material8.SetFloat("_Brighten", 0.25f);
|
|
}
|
|
else
|
|
{
|
|
material8.SetFloat("_Brighten", 1f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.character && first)
|
|
{
|
|
this.GetBounds();
|
|
}
|
|
if (this.character)
|
|
{
|
|
bool flag4 = this.character.ghost;
|
|
}
|
|
this.magicaCloths = base.gameObject.GetComponentsInChildren<MagicaCloth>(true);
|
|
this.magicaCapsules = base.gameObject.GetComponentsInChildren<MagicaCapsuleCollider>(true);
|
|
this.SetMagicaClothMode();
|
|
this.SetMagicaClothState(true);
|
|
if (this.newHead)
|
|
{
|
|
this.SetMagicaClothHeadCollider(true);
|
|
this.newHead = false;
|
|
}
|
|
this.SetMagicaClothWind();
|
|
if (!this.inMenu && !this.portrait)
|
|
{
|
|
this.CombatSheen(0);
|
|
if (!this.dead)
|
|
{
|
|
base.gameObject.layer = 31;
|
|
}
|
|
else
|
|
{
|
|
base.gameObject.layer = 20;
|
|
}
|
|
}
|
|
if (this.inMenu)
|
|
{
|
|
if (this.character)
|
|
{
|
|
float num = (float)this.character.stats.HealthCurrent() / (float)this.character.stats.HealthMax();
|
|
this.healthPercent = 0f;
|
|
if (num < 0.166f)
|
|
{
|
|
this.healthPercent = 5f;
|
|
}
|
|
if (num >= 0.166f && num < 0.33f)
|
|
{
|
|
this.healthPercent = 4f;
|
|
}
|
|
if (num >= 0.33f && num < 0.5f)
|
|
{
|
|
this.healthPercent = 3f;
|
|
}
|
|
if (num >= 0.5f && num < 0.667f)
|
|
{
|
|
this.healthPercent = 2f;
|
|
}
|
|
if ((double)num >= 0.667 && num < 0.883f)
|
|
{
|
|
this.healthPercent = 1f;
|
|
}
|
|
this.SetBlood(this.healthPercent);
|
|
}
|
|
else
|
|
{
|
|
this.SetBlood(0f);
|
|
}
|
|
}
|
|
if (this.inMenu || this.isPortrait)
|
|
{
|
|
for (int m = 0; m < this.fleshRenderers.Count; m++)
|
|
{
|
|
if (this.fleshRenderers[m])
|
|
{
|
|
this.fleshRenderers[m].enabled = true;
|
|
this.mats = this.fleshRenderers[m].materials;
|
|
foreach (Material material9 in this.mats)
|
|
{
|
|
material9.SetFloat("_Dither", 0f);
|
|
material9.SetFloat("_DitherAmount", 0f);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
base.transform.localPosition = Vector3.zero;
|
|
}
|
|
|
|
// Token: 0x06000295 RID: 661 RVA: 0x000358D8 File Offset: 0x00033AD8
|
|
public void SetMagicaClothMode()
|
|
{
|
|
bool flag = true;
|
|
if (!this.character)
|
|
{
|
|
flag = false;
|
|
}
|
|
for (int i = 0; i < this.magicaCloths.Length; i++)
|
|
{
|
|
if (!flag || this.inMenu || this.isPortrait)
|
|
{
|
|
this.magicaCloths[i].SerializeData.updateMode = ClothUpdateMode.Unscaled;
|
|
}
|
|
else if (this.character.sailing)
|
|
{
|
|
this.magicaCloths[i].SerializeData.updateMode = ClothUpdateMode.Normal;
|
|
}
|
|
else
|
|
{
|
|
this.magicaCloths[i].SerializeData.updateMode = ClothUpdateMode.Normal;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000296 RID: 662 RVA: 0x00035968 File Offset: 0x00033B68
|
|
public void SetMagicaClothHeadCollider(bool adding)
|
|
{
|
|
for (int i = 0; i < this.magicaCapsules.Length; i++)
|
|
{
|
|
for (int j = 0; j < this.magicaCloths.Length; j++)
|
|
{
|
|
MagicaCloth magicaCloth = this.magicaCloths[j];
|
|
if (magicaCloth)
|
|
{
|
|
string name = magicaCloth.gameObject.transform.parent.name;
|
|
if (name.Contains("Head") || name.Contains("head") || name.Contains("Hair") || name.Contains("hair"))
|
|
{
|
|
ClothSerializeData serializeData = magicaCloth.SerializeData;
|
|
if (adding)
|
|
{
|
|
serializeData.colliderCollisionConstraint.colliderList.Add(this.magicaCapsules[i]);
|
|
}
|
|
else
|
|
{
|
|
serializeData.colliderCollisionConstraint.colliderList.Clear();
|
|
}
|
|
if (this.inMenu || this.isPortrait)
|
|
{
|
|
serializeData.inertiaConstraint.movementInertia = 1f;
|
|
serializeData.inertiaConstraint.rotationInertia = 1f;
|
|
}
|
|
else
|
|
{
|
|
serializeData.inertiaConstraint.movementInertia = 0.4f;
|
|
serializeData.inertiaConstraint.rotationInertia = 0.4f;
|
|
}
|
|
magicaCloth.SetParameterChange();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000297 RID: 663 RVA: 0x00035A9C File Offset: 0x00033C9C
|
|
public void SetMagicaClothWind()
|
|
{
|
|
bool flag = true;
|
|
if (this.inMenu || this.isPortrait)
|
|
{
|
|
flag = false;
|
|
}
|
|
if (this.character && this.character.indoorID != "")
|
|
{
|
|
flag = false;
|
|
}
|
|
for (int i = 0; i < this.magicaCloths.Length; i++)
|
|
{
|
|
MagicaCloth magicaCloth = this.magicaCloths[i];
|
|
if (magicaCloth)
|
|
{
|
|
ClothSerializeData serializeData = magicaCloth.SerializeData;
|
|
if (flag)
|
|
{
|
|
WindSettings wind = serializeData.wind;
|
|
wind.influence = 1f;
|
|
serializeData.wind = wind;
|
|
}
|
|
else
|
|
{
|
|
WindSettings wind2 = serializeData.wind;
|
|
wind2.influence = 0f;
|
|
serializeData.wind = wind2;
|
|
}
|
|
magicaCloth.SetParameterChange();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000298 RID: 664 RVA: 0x00035B54 File Offset: 0x00033D54
|
|
public bool CanSwitchMaterial(Material mat, string type)
|
|
{
|
|
return !this.ghost && !mat.shader.name.Contains(type) && !mat.name.Contains("Transparency") && !mat.name.Contains("Crystal") && !mat.shader.name.Contains("LightBeam") && !mat.name.Contains("Hannative") && !mat.shader.name.Contains("WorldClay");
|
|
}
|
|
|
|
// Token: 0x06000299 RID: 665 RVA: 0x00035BF0 File Offset: 0x00033DF0
|
|
public void SetGhost()
|
|
{
|
|
if (this.dead)
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i] && this.fleshRenderers[i].gameObject.activeSelf && this.fleshRenderers[i].gameObject.activeInHierarchy)
|
|
{
|
|
Links.x.cameraEffects.AddRemoveGhost(this.fleshRenderers[i], true);
|
|
}
|
|
}
|
|
this.anim.cullingMode = AnimatorCullingMode.AlwaysAnimate;
|
|
}
|
|
|
|
// Token: 0x0600029A RID: 666 RVA: 0x00035C87 File Offset: 0x00033E87
|
|
private void OnDisable()
|
|
{
|
|
if (this.dithering)
|
|
{
|
|
if (this.endDither == 0f)
|
|
{
|
|
this.MeshOff(true);
|
|
return;
|
|
}
|
|
this.MeshOn(true, true);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600029B RID: 667 RVA: 0x00035CB0 File Offset: 0x00033EB0
|
|
public void SetMeshState(bool on, bool doDither)
|
|
{
|
|
if (this.character)
|
|
{
|
|
this.ghost = this.character.ghost;
|
|
}
|
|
if (!this.character)
|
|
{
|
|
return;
|
|
}
|
|
if (this.character.ambushing && this.character.jumping)
|
|
{
|
|
on = true;
|
|
}
|
|
if (this.character.meshAlwaysOn && !this.character.missing)
|
|
{
|
|
on = true;
|
|
}
|
|
if (this.character.meshAlwaysOff)
|
|
{
|
|
on = false;
|
|
}
|
|
if (this.character.ambushing && !this.character.jumping)
|
|
{
|
|
on = false;
|
|
doDither = false;
|
|
}
|
|
if (this.character.vanished)
|
|
{
|
|
on = false;
|
|
}
|
|
if (this.character.inactive || !base.enabled)
|
|
{
|
|
doDither = false;
|
|
}
|
|
if (this.inMenu || this.isPortrait)
|
|
{
|
|
on = true;
|
|
doDither = false;
|
|
}
|
|
if (this.cannotTurnOn && on)
|
|
{
|
|
return;
|
|
}
|
|
if (this.character.isBoro && Links.x.gaia.boroControls.boroInvisible)
|
|
{
|
|
on = false;
|
|
}
|
|
if (doDither)
|
|
{
|
|
bool flag = false;
|
|
if (this.fleshRenderers.Count > 0 && this.fleshRenderers[0])
|
|
{
|
|
flag = this.fleshRenderers[0].enabled;
|
|
}
|
|
if (this.dithering)
|
|
{
|
|
flag = this.endDither != 0f;
|
|
}
|
|
if (!this.dithering && !on && flag)
|
|
{
|
|
this.currentDither = 1f;
|
|
}
|
|
if (flag != on)
|
|
{
|
|
if (on)
|
|
{
|
|
this.startDither = 0f;
|
|
this.endDither = 1f;
|
|
}
|
|
else
|
|
{
|
|
this.startDither = 1f;
|
|
this.endDither = 0f;
|
|
}
|
|
if (this.dithering)
|
|
{
|
|
this.startDither = this.currentDither;
|
|
}
|
|
this.t = 0f;
|
|
this.dithering = true;
|
|
}
|
|
}
|
|
if (!doDither || (doDither && on))
|
|
{
|
|
if (this.dead && this.character.goreObj && !this.makeBones)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.fleshRenderers[i].enabled = false;
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
material.SetFloat("_Dither", 0f);
|
|
material.SetFloat("_DitherAmount", 0f);
|
|
}
|
|
}
|
|
}
|
|
for (int k = 0; k < this.deadRenderers.Count; k++)
|
|
{
|
|
this.deadRenderers[k].enabled = on;
|
|
}
|
|
this.SetHeadAnim(false);
|
|
}
|
|
else if (on)
|
|
{
|
|
this.MeshOn(on, false);
|
|
}
|
|
else
|
|
{
|
|
this.MeshOff(true);
|
|
}
|
|
}
|
|
this.Dither();
|
|
}
|
|
|
|
// Token: 0x0600029C RID: 668 RVA: 0x00035FA4 File Offset: 0x000341A4
|
|
private void MeshOff(bool setDitherVariables)
|
|
{
|
|
if (this.inMenu || this.isPortrait)
|
|
{
|
|
return;
|
|
}
|
|
if (this.ghost)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.fleshRenderers[i].enabled = false;
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
if (material)
|
|
{
|
|
material.SetFloat("_Dither", 0f);
|
|
material.SetFloat("_DitherAmount", 0f);
|
|
}
|
|
}
|
|
if (this.fleshRenderers[i].gameObject.activeSelf)
|
|
{
|
|
Links.x.cameraEffects.AddRemoveGhost(this.fleshRenderers[i], false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int k = 0; k < this.fleshRenderers.Count; k++)
|
|
{
|
|
if (this.fleshRenderers[k] && !this.ghost)
|
|
{
|
|
this.fleshRenderers[k].enabled = false;
|
|
if (setDitherVariables)
|
|
{
|
|
this.mats = this.fleshRenderers[k].materials;
|
|
foreach (Material material2 in this.mats)
|
|
{
|
|
if (material2)
|
|
{
|
|
material2.SetFloat("_Dither", 1f);
|
|
material2.SetFloat("_DitherAmount", 0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int l = 0; l < this.fleshAnimators.Count; l++)
|
|
{
|
|
if (this.fleshAnimators[l])
|
|
{
|
|
this.fleshAnimators[l].enabled = false;
|
|
}
|
|
}
|
|
this.SetHeadAnim(false);
|
|
if (this.character && this.character.npc)
|
|
{
|
|
this.SetMagicaClothState(false);
|
|
}
|
|
foreach (Collider collider in this.colliders)
|
|
{
|
|
if (collider)
|
|
{
|
|
collider.enabled = false;
|
|
}
|
|
}
|
|
if (this.character && this.character.isBoro)
|
|
{
|
|
this.character.ToggleBoat(false);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600029D RID: 669 RVA: 0x0003620C File Offset: 0x0003440C
|
|
private void MeshOn(bool on, bool setDitherVariables)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
if (!this.ghost)
|
|
{
|
|
this.fleshRenderers[i].enabled = on;
|
|
}
|
|
else
|
|
{
|
|
this.fleshRenderers[i].enabled = on;
|
|
if (on && !this.dead && this.fleshRenderers[i].gameObject.activeSelf)
|
|
{
|
|
Links.x.cameraEffects.AddRemoveGhost(this.fleshRenderers[i], on);
|
|
}
|
|
}
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
material.SetFloat("_Dither", 0f);
|
|
material.SetFloat("_DitherAmount", 0f);
|
|
}
|
|
}
|
|
}
|
|
for (int k = 0; k < this.fleshAnimators.Count; k++)
|
|
{
|
|
this.fleshAnimators[k].enabled = on;
|
|
}
|
|
this.SetHeadAnim(on);
|
|
if (this.character)
|
|
{
|
|
this.SetMagicaClothState(on);
|
|
if (!this.character.party)
|
|
{
|
|
foreach (Collider collider in this.colliders)
|
|
{
|
|
if (collider)
|
|
{
|
|
collider.enabled = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.character && this.character.isBoro)
|
|
{
|
|
this.character.ToggleBoat(true);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600029E RID: 670 RVA: 0x000363AA File Offset: 0x000345AA
|
|
public void SetHeadAnim(bool on)
|
|
{
|
|
if (this.headAnim)
|
|
{
|
|
this.headAnim.enabled = on;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600029F RID: 671 RVA: 0x000363C8 File Offset: 0x000345C8
|
|
public void SetMagicaClothState(bool on)
|
|
{
|
|
if (this.turnOnMagicaClothNextFrame > 0 && on)
|
|
{
|
|
on = false;
|
|
}
|
|
for (int i = 0; i < this.magicaCapsules.Length; i++)
|
|
{
|
|
if (this.magicaCapsules[i])
|
|
{
|
|
this.magicaCapsules[i].enabled = on;
|
|
}
|
|
}
|
|
for (int j = 0; j < this.magicaCloths.Length; j++)
|
|
{
|
|
if (this.magicaCloths[j])
|
|
{
|
|
this.magicaCloths[j].enabled = on;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002A0 RID: 672 RVA: 0x00036448 File Offset: 0x00034648
|
|
public void SetMagicaClothMovingState(bool on)
|
|
{
|
|
for (int i = 0; i < this.magicaCloths.Length; i++)
|
|
{
|
|
this.magicaCloths[i].enabled = on;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002A1 RID: 673 RVA: 0x00036478 File Offset: 0x00034678
|
|
public void Dither()
|
|
{
|
|
if (this.dithering)
|
|
{
|
|
if ((this.endDither == 1f && this.currentDither >= 1f) || (this.endDither == 0f && this.currentDither <= 0f))
|
|
{
|
|
this.dithering = false;
|
|
if (this.endDither == 0f)
|
|
{
|
|
this.MeshOff(true);
|
|
return;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
material.SetFloat("_Dither", 0f);
|
|
material.SetFloat("_DitherAmount", 0f);
|
|
}
|
|
}
|
|
}
|
|
if (this.sneaking)
|
|
{
|
|
this.Sneaking(true);
|
|
}
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (Records.x.filming)
|
|
{
|
|
this.t += Time.unscaledDeltaTime * Records.x.filmingAnimatorSpeed;
|
|
}
|
|
else if (!Records.x.paused)
|
|
{
|
|
this.t += Time.deltaTime;
|
|
}
|
|
else
|
|
{
|
|
this.t += Time.unscaledDeltaTime;
|
|
}
|
|
this.currentDither = Mathf.Lerp(this.startDither, this.endDither, this.t * 1.5f);
|
|
for (int k = 0; k < this.fleshRenderers.Count; k++)
|
|
{
|
|
if (this.fleshRenderers[k])
|
|
{
|
|
this.mats = this.fleshRenderers[k].materials;
|
|
foreach (Material material2 in this.mats)
|
|
{
|
|
material2.SetFloat("_Dither", 1f);
|
|
material2.SetFloat("_DitherAmount", this.currentDither);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002A2 RID: 674 RVA: 0x00036668 File Offset: 0x00034868
|
|
public void SetSeeThroughAmount()
|
|
{
|
|
float num = 0.3f;
|
|
if (this.character.hasActions)
|
|
{
|
|
num = 0.5f;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i] && this.fleshRenderers[i].gameObject.activeSelf)
|
|
{
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
Material[] array = this.mats;
|
|
for (int j = 0; j < array.Length; j++)
|
|
{
|
|
array[j].SetFloat("_SeeThroughAmount1", num);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002A3 RID: 675 RVA: 0x0003670C File Offset: 0x0003490C
|
|
public void GetBounds()
|
|
{
|
|
if (this.character)
|
|
{
|
|
this.bounds = default(Bounds);
|
|
bool flag = false;
|
|
if (this.startColliders.Count == 0)
|
|
{
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
{
|
|
if (this.colliders.Length != 0)
|
|
{
|
|
int i = 0;
|
|
int num = this.colliders.Length;
|
|
while (i < num)
|
|
{
|
|
if (this.colliders[i])
|
|
{
|
|
this.startColliders.Add(this.colliders[i]);
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.startColliders.Add(this.headColl);
|
|
}
|
|
}
|
|
if (this.startColliders.Count > 0)
|
|
{
|
|
if (this.startColliders[0])
|
|
{
|
|
this.bounds = this.startColliders[0].bounds;
|
|
if (this.startColliders.Count > 1)
|
|
{
|
|
int j = 1;
|
|
int count = this.startColliders.Count;
|
|
while (j < count)
|
|
{
|
|
if (this.startColliders[j])
|
|
{
|
|
this.bounds.Encapsulate(this.startColliders[j].bounds);
|
|
}
|
|
j++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CapsuleCollider component = base.gameObject.GetComponent<CapsuleCollider>();
|
|
if (component)
|
|
{
|
|
this.bounds = component.bounds;
|
|
}
|
|
}
|
|
this.boundsOffset = this.bounds.center.y - this.character.tr.position.y;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002A4 RID: 676 RVA: 0x0003688D File Offset: 0x00034A8D
|
|
public void BracketPosition()
|
|
{
|
|
this.GetBounds();
|
|
Links.x.cellar.SetBracketSize(this.bounds, this.bracket);
|
|
}
|
|
|
|
// Token: 0x060002A5 RID: 677 RVA: 0x000368B0 File Offset: 0x00034AB0
|
|
public void Hover(bool state, bool canDoMulti)
|
|
{
|
|
if (this.character && ((this.dead || (!Records.x.kill && this.character.stunned)) && state))
|
|
{
|
|
return;
|
|
}
|
|
this.GetBounds();
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
float num = 0f;
|
|
if (state)
|
|
{
|
|
num = 1f;
|
|
}
|
|
this.fleshRenderers[i].material.SetFloat("_Hover", num);
|
|
}
|
|
}
|
|
int num2 = 0;
|
|
if (this.character)
|
|
{
|
|
if (Records.x.pocketPause && Links.x.combat.CanAttackTarget(this.character))
|
|
{
|
|
num2 = 2;
|
|
}
|
|
if (Records.x.pocketPause && Links.x.combat.CanAttackTarget(this.character) && this.character.hostility < 2 && !this.character.attackingUntilBribe && !Links.x.sensory.ProofState(this.character))
|
|
{
|
|
num2 = 1;
|
|
}
|
|
if (this.character.party)
|
|
{
|
|
num2 = 0;
|
|
}
|
|
}
|
|
if (state)
|
|
{
|
|
if (!this.bracket)
|
|
{
|
|
this.bracket = Links.x.cellar.GetBracket(num2, this.bounds);
|
|
}
|
|
else
|
|
{
|
|
Links.x.cellar.SetBracketMaterial(num2, this.bracket);
|
|
}
|
|
}
|
|
else if (this.bracket)
|
|
{
|
|
Links.x.cellar.ReturnPooledGameObject(61, this.bracket);
|
|
this.bracket = null;
|
|
}
|
|
this.hovering = state;
|
|
if (((Records.x.pocketPause && (Links.x.combat.inPocketAttack || Links.x.gameplay.attackingCharacter.CanAttack())) || this.multiHover) && canDoMulti)
|
|
{
|
|
bool npc = this.character.npc;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002A6 RID: 678 RVA: 0x00036AB0 File Offset: 0x00034CB0
|
|
public void MultiHover(bool state)
|
|
{
|
|
if (this.combatCharacters == null)
|
|
{
|
|
this.combatCharacters = Links.x.diorama.characters;
|
|
}
|
|
int count = this.combatCharacters.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if (i < this.combatCharacters.Count)
|
|
{
|
|
Character character = this.combatCharacters[i];
|
|
if (character && character != this.character && character != Links.x.gameplay.gameCardCharacter && character.npc && !character.inactive && character.InAttackShape(this.character, this.character.currentPosition, Links.x.gameplay.attackingCharacter, Links.x.gameplay.attackingCharacter.currentPosition, character.currentPosition, Links.x.gameplay.attackingCharacter.invRow1))
|
|
{
|
|
character.body.multiHit = state;
|
|
if (!state)
|
|
{
|
|
if (!Links.x.combat.InRangeTarget(character))
|
|
{
|
|
character.body.TargetingOutline(false);
|
|
}
|
|
else
|
|
{
|
|
character.body.TargetingOutlineColor(0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
character.body.TargetingOutline(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Links.x.combat.MultiHitObjects(state, this.character.currentPosition, null, null, null);
|
|
}
|
|
|
|
// Token: 0x060002A7 RID: 679 RVA: 0x00036C20 File Offset: 0x00034E20
|
|
public void TargetingOutline(bool state)
|
|
{
|
|
GameObject gameObject = null;
|
|
if (this.character)
|
|
{
|
|
gameObject = this.character.oar;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
GameObject gameObject2 = this.fleshRenderers[i].gameObject;
|
|
if (gameObject2.activeSelf && gameObject2 != gameObject)
|
|
{
|
|
Outline outline = gameObject2.GetComponent<Outline>();
|
|
if (state)
|
|
{
|
|
if (!outline)
|
|
{
|
|
outline = gameObject2.AddComponent<Outline>();
|
|
}
|
|
outline.color = 0;
|
|
}
|
|
if (state && this.multiHit && outline)
|
|
{
|
|
outline.color = 1;
|
|
}
|
|
if (!state && outline)
|
|
{
|
|
Object.Destroy(outline);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.targetOutline = state;
|
|
}
|
|
|
|
// Token: 0x060002A8 RID: 680 RVA: 0x00036CEC File Offset: 0x00034EEC
|
|
public void TargetingOutlineColor(int col)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i] && this.fleshRenderers[i].gameObject.activeSelf)
|
|
{
|
|
Outline component = this.fleshRenderers[i].gameObject.GetComponent<Outline>();
|
|
if (component)
|
|
{
|
|
component.color = col;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002A9 RID: 681 RVA: 0x00036D60 File Offset: 0x00034F60
|
|
public Collider GetFirstCollider()
|
|
{
|
|
if (this.colliders.Length == 0)
|
|
{
|
|
return null;
|
|
}
|
|
return this.colliders[0];
|
|
}
|
|
|
|
// Token: 0x060002AA RID: 682 RVA: 0x00036D78 File Offset: 0x00034F78
|
|
public void SeeThroughColliders(bool state)
|
|
{
|
|
if (this.character.isBoro)
|
|
{
|
|
state = !Links.x.gaia.boroControls.boroInvisible;
|
|
}
|
|
for (int i = 0; i < this.colliders.Length; i++)
|
|
{
|
|
if (this.colliders[i])
|
|
{
|
|
this.colliders[i].enabled = state;
|
|
}
|
|
}
|
|
if (this.headColl)
|
|
{
|
|
this.headColl.enabled = state;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002AB RID: 683 RVA: 0x00036DFC File Offset: 0x00034FFC
|
|
public void Dodge(bool state)
|
|
{
|
|
if (this.character && ((this.dead || (!Records.x.kill && this.character.stunned)) && state))
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
Links.x.cameraEffects.Dodging(this.fleshRenderers[i], state);
|
|
}
|
|
this.dodgeTime = 0f;
|
|
if (state)
|
|
{
|
|
this.dodgeTime = Time.timeSinceLevelLoad;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002AC RID: 684 RVA: 0x00036E8C File Offset: 0x0003508C
|
|
public void CombatSheen(int num)
|
|
{
|
|
if (!this.character)
|
|
{
|
|
return;
|
|
}
|
|
if ((this.dead || (!Records.x.kill && this.character.stunned)) && num == 3)
|
|
{
|
|
return;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i] && this.fleshRenderers[i].gameObject.activeSelf)
|
|
{
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
float num2 = 0f;
|
|
int num3 = 3;
|
|
if (num == 3)
|
|
{
|
|
num3 = 1;
|
|
if (this.character.party && !Links.x.gameplay.spellTargetingParty)
|
|
{
|
|
num2 = 1f;
|
|
}
|
|
else
|
|
{
|
|
num2 = 2f;
|
|
}
|
|
}
|
|
if (num == 1)
|
|
{
|
|
num3 = 1;
|
|
if (this.character.party && !Links.x.gameplay.spellTargetingParty)
|
|
{
|
|
num2 = 1f;
|
|
}
|
|
else
|
|
{
|
|
num2 = 2f;
|
|
}
|
|
}
|
|
if (this.character.party && !this.character.mainSelected && Records.x.pocketPause && num != 0 && Links.x.combat.CharacterHasSynergy(this.character))
|
|
{
|
|
if (Links.x.combat.pickingRally)
|
|
{
|
|
num2 = 3f;
|
|
num3 = 1;
|
|
}
|
|
else
|
|
{
|
|
num2 = 4f;
|
|
num3 = 1;
|
|
}
|
|
}
|
|
if (this.character.party && this.character.mainSelected && Records.x.pocketPause && num != 0 && !Links.x.gameplay.spellTargetingParty)
|
|
{
|
|
num2 = 0f;
|
|
}
|
|
material.SetFloat("_InCombatBubble", num2);
|
|
if (this.character.mainSelected)
|
|
{
|
|
num3 = 4;
|
|
}
|
|
material.SetFloat("_Stencil", (float)num3);
|
|
}
|
|
}
|
|
}
|
|
if (this.character.mainSelected)
|
|
{
|
|
if (num == 0)
|
|
{
|
|
Links.x.cameraEffects.mainCharacterInSheen = false;
|
|
return;
|
|
}
|
|
Links.x.cameraEffects.mainCharacterInSheen = true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002AD RID: 685 RVA: 0x000370C0 File Offset: 0x000352C0
|
|
public void Sneaking(bool state)
|
|
{
|
|
if (state)
|
|
{
|
|
this.sneaking = true;
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
material.SetFloat("_Dither", 1f);
|
|
material.SetFloat("_DitherAmount", 0.4f);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
this.sneaking = false;
|
|
for (int k = 0; k < this.fleshRenderers.Count; k++)
|
|
{
|
|
if (this.fleshRenderers[k])
|
|
{
|
|
this.mats = this.fleshRenderers[k].materials;
|
|
foreach (Material material2 in this.mats)
|
|
{
|
|
material2.SetFloat("_Dither", 0f);
|
|
material2.SetFloat("_DitherAmount", 0.4f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002AE RID: 686 RVA: 0x000371D0 File Offset: 0x000353D0
|
|
public void SetMeshLayer(GameObject m, bool isRenderer)
|
|
{
|
|
if (this.inMenu)
|
|
{
|
|
m.layer = 25;
|
|
return;
|
|
}
|
|
if (this.isPortrait)
|
|
{
|
|
m.layer = 26;
|
|
return;
|
|
}
|
|
if (this.dead)
|
|
{
|
|
m.layer = 20;
|
|
}
|
|
else
|
|
{
|
|
m.layer = 6;
|
|
}
|
|
if (isRenderer && this.character && this.character.movesOnWater)
|
|
{
|
|
m.layer = 0;
|
|
if (this.dead)
|
|
{
|
|
m.layer = 20;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002AF RID: 687 RVA: 0x0003724C File Offset: 0x0003544C
|
|
public void SetLayer(int layer)
|
|
{
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.fleshRenderers[i].gameObject.layer = layer;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002B0 RID: 688 RVA: 0x0003729C File Offset: 0x0003549C
|
|
public void SetupCollider(bool enable)
|
|
{
|
|
if (!base.gameObject.GetComponent<CapsuleCollider>())
|
|
{
|
|
CapsuleCollider capsuleCollider = base.gameObject.AddComponent<CapsuleCollider>();
|
|
capsuleCollider.center = new Vector3(0f, 1.75f, 0f);
|
|
capsuleCollider.radius = 0.6f;
|
|
capsuleCollider.height = 2.15f;
|
|
capsuleCollider.enabled = enable;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002B1 RID: 689 RVA: 0x000372FC File Offset: 0x000354FC
|
|
public void Reset()
|
|
{
|
|
this.EndBlink();
|
|
this.EndBlink2();
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
this.fleshRenderers[i].enabled = true;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
if (material)
|
|
{
|
|
material.SetFloat("_Dither", 0f);
|
|
material.SetFloat("_DitherAmount", 0f);
|
|
material.SetFloat("_Glow", 0f);
|
|
material.SetFloat("_BodyGone", 1f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int k = 0; k < this.colliders.Length; k++)
|
|
{
|
|
if (this.colliders[k])
|
|
{
|
|
Rigidbody component = this.colliders[k].gameObject.GetComponent<Rigidbody>();
|
|
if (component)
|
|
{
|
|
Object.Destroy(component);
|
|
}
|
|
}
|
|
}
|
|
this.fleshRenderers.Clear();
|
|
this.startColliders.Clear();
|
|
if (this.headAnim)
|
|
{
|
|
this.headAnim.emotion = "";
|
|
this.headAnim = null;
|
|
}
|
|
this.faceRenderer = null;
|
|
this.hairRenderer = null;
|
|
this.character = null;
|
|
this.dead = false;
|
|
this.animationHold = false;
|
|
this.ignoreAttackEvent = false;
|
|
this.inMenu = false;
|
|
this.isPortrait = false;
|
|
this.magicaCloths = new MagicaCloth[0];
|
|
this.magicaCapsules = new MagicaCapsuleCollider[0];
|
|
this.bonesRoutine = null;
|
|
this.cannotTurnOn = false;
|
|
this.goreObj = null;
|
|
if (this.anim)
|
|
{
|
|
this.anim.applyRootMotion = false;
|
|
}
|
|
this.bonesRoutine = null;
|
|
if (this.colliders != null)
|
|
{
|
|
for (int l = 0; l < this.colliders.Length; l++)
|
|
{
|
|
this.colliders[l].enabled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002B2 RID: 690 RVA: 0x0003750C File Offset: 0x0003570C
|
|
public bool IsHit()
|
|
{
|
|
return Links.x.gaia.sceneLoaded && this.character && (!this.character.resting || this.character.isHit) && (this.currentHash == this.getupHash || this.currentHash == this.hitHash || this.currentHash == this.downHash || this.currentHash == this.downStartHash || this.currentHash == this.bounceHash);
|
|
}
|
|
|
|
// Token: 0x060002B3 RID: 691 RVA: 0x000375A8 File Offset: 0x000357A8
|
|
public void SetMask(bool on)
|
|
{
|
|
}
|
|
|
|
// Token: 0x060002B4 RID: 692 RVA: 0x000375AC File Offset: 0x000357AC
|
|
public void SetMaskNumber(float x)
|
|
{
|
|
this.maskNumber = x / 255f;
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
this.fleshRenderers[i].material.SetFloat("_MaskNumber", this.maskNumber);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002B5 RID: 693 RVA: 0x000375FD File Offset: 0x000357FD
|
|
public LookAtIK GetLookIK()
|
|
{
|
|
return this.lookik;
|
|
}
|
|
|
|
// Token: 0x060002B6 RID: 694 RVA: 0x00037608 File Offset: 0x00035808
|
|
public Transform GetSlot(int n)
|
|
{
|
|
int num = n / 2;
|
|
Transform transform = null;
|
|
string text = "";
|
|
if (num == 0)
|
|
{
|
|
text = "slot_item_r";
|
|
}
|
|
if (num == 1)
|
|
{
|
|
text = "slot_item_l";
|
|
}
|
|
if (num == 2)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 3)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 4)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 5)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 6)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 7)
|
|
{
|
|
text = "slot_trinket";
|
|
}
|
|
if (num == 8)
|
|
{
|
|
text = "slot_circlet";
|
|
}
|
|
if (num == 9)
|
|
{
|
|
text = "slot_armor";
|
|
}
|
|
if (num == 10)
|
|
{
|
|
text = "slot_lring_middle";
|
|
}
|
|
if (num == 11)
|
|
{
|
|
text = "slot_rring_middle";
|
|
}
|
|
if (num == 12)
|
|
{
|
|
text = "slot_earring";
|
|
}
|
|
if (num == 13)
|
|
{
|
|
text = "slot_belt1";
|
|
}
|
|
if (num == 14)
|
|
{
|
|
text = "slot_belt2";
|
|
}
|
|
if (num == 15)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 16)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 17)
|
|
{
|
|
text = "";
|
|
}
|
|
if (num == 18)
|
|
{
|
|
text = "";
|
|
}
|
|
if (text != "")
|
|
{
|
|
for (int i = 0; i < this.slots.Count; i++)
|
|
{
|
|
if (this.slotNames[i].Contains(text))
|
|
{
|
|
transform = this.slots[i];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return transform;
|
|
}
|
|
|
|
// Token: 0x060002B7 RID: 695 RVA: 0x00037730 File Offset: 0x00035930
|
|
public void ReturnItems()
|
|
{
|
|
this.EndBlink();
|
|
this.EndBlink2();
|
|
this.RemoveDeathParts();
|
|
this.cannotTurnOn = false;
|
|
if (this.bonesRoutine != null)
|
|
{
|
|
base.StopCoroutine(this.bonesRoutine);
|
|
this.bonesRoutine = null;
|
|
}
|
|
for (int i = 0; i < this.fleshRenderers.Count; i++)
|
|
{
|
|
if (this.fleshRenderers[i])
|
|
{
|
|
OutlineGlow component = this.fleshRenderers[i].gameObject.GetComponent<OutlineGlow>();
|
|
if (component)
|
|
{
|
|
Object.Destroy(component);
|
|
}
|
|
this.fleshRenderers[i].enabled = true;
|
|
this.mats = this.fleshRenderers[i].materials;
|
|
foreach (Material material in this.mats)
|
|
{
|
|
material.SetFloat("_Dither", 0f);
|
|
material.SetFloat("_DitherAmount", 0f);
|
|
}
|
|
}
|
|
}
|
|
if (this.headObject)
|
|
{
|
|
string text = "";
|
|
if (Records.x.editor)
|
|
{
|
|
text = base.gameObject.name;
|
|
}
|
|
this.SetMagicaClothHeadCollider(false);
|
|
Links.x.archives.RecycleHead(this.headObject, this.headModel, text);
|
|
this.headObject.SetActive(false);
|
|
this.headObject = null;
|
|
this.headColl = null;
|
|
this.headAnim = null;
|
|
}
|
|
for (int k = 0; k < this.equippedItems.Length; k++)
|
|
{
|
|
if (this.equippedItems[k] && k != 9)
|
|
{
|
|
GameObject gameObject = this.equippedItems[k].gameObject;
|
|
string text2 = this.equippedItems[k].invRow._CharacterModel;
|
|
if (k == 4 || k == 5 || k == 6)
|
|
{
|
|
text2 += "_clump";
|
|
}
|
|
int num = k;
|
|
Equipment component2 = this.equippedItems[num].GetComponent<Equipment>();
|
|
GameObject gameObject2 = null;
|
|
this.equippedItems[num].GetComponent<ItemEquipped>();
|
|
string text3 = "";
|
|
if (component2)
|
|
{
|
|
gameObject2 = component2.ammoObject;
|
|
text3 = component2.ammoObjectName;
|
|
component2.ammoObject = null;
|
|
}
|
|
if (num == 4 || num == 5 || num == 6)
|
|
{
|
|
text2 += "_clump";
|
|
}
|
|
this.equippedItems[num].ReturnToArchives();
|
|
if (num != 9)
|
|
{
|
|
Links.x.archives.RecycleItemBody(gameObject, text2);
|
|
}
|
|
this.equippedItems[num] = null;
|
|
if (gameObject2)
|
|
{
|
|
Links.x.archives.RecycleItemBody(gameObject2, text3);
|
|
}
|
|
}
|
|
else if (this.equippedItems[9])
|
|
{
|
|
this.equippedItems[9].ReturnToArchives();
|
|
}
|
|
}
|
|
this.dead = false;
|
|
this.magicaCloths = new MagicaCloth[0];
|
|
this.magicaCapsules = new MagicaCapsuleCollider[0];
|
|
if (this.lookAtController)
|
|
{
|
|
this.lookAtController.EndLookFast(false);
|
|
}
|
|
this.character = null;
|
|
this.dead = false;
|
|
this.inMenu = false;
|
|
this.isPortrait = false;
|
|
this.Hover(false, false);
|
|
}
|
|
|
|
// Token: 0x060002B8 RID: 696 RVA: 0x00037A4B File Offset: 0x00035C4B
|
|
public void UpdateItemColliders(bool state, bool updateMain)
|
|
{
|
|
}
|
|
|
|
// Token: 0x060002B9 RID: 697 RVA: 0x00037A50 File Offset: 0x00035C50
|
|
public void CreateMenuItems(int ID, int stackSize, Vector3 socketA, Vector3 socketB, Vector4 itemTime, int slot, Transform slotParent)
|
|
{
|
|
bool flag = true;
|
|
if (ID == 0 && slot == 0)
|
|
{
|
|
ID = 1;
|
|
}
|
|
if (ID == -1)
|
|
{
|
|
return;
|
|
}
|
|
Library.Inventory invRowByIndex = Links.x.library.GetInvRowByIndex(ID);
|
|
int num = -1;
|
|
Vector3 zero = Vector3.zero;
|
|
Vector3 vector = Vector3.zero;
|
|
Vector4 durability = new Vector4(0f, 0f, 0f, 0f);
|
|
if (this.equippedItems[slot])
|
|
{
|
|
Equipment component = this.equippedItems[slot].GetComponent<Equipment>();
|
|
GameObject gameObject = null;
|
|
ItemEquipped component2 = this.equippedItems[slot].GetComponent<ItemEquipped>();
|
|
string text = "";
|
|
if (!component)
|
|
{
|
|
if (!component && component2)
|
|
{
|
|
num = component2.ID;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num = component.id;
|
|
gameObject = component.ammoObject;
|
|
text = component.ammoObjectName;
|
|
component.ammoObject = null;
|
|
}
|
|
bool flag2 = true;
|
|
if (component2)
|
|
{
|
|
Vector3 socketA2 = component2.socketA;
|
|
vector = component2.socketB;
|
|
durability = component2.durability;
|
|
int stackSize2 = component2.stackSize;
|
|
if (socketA2 != socketA)
|
|
{
|
|
flag2 = false;
|
|
}
|
|
if (vector != socketB)
|
|
{
|
|
flag2 = false;
|
|
}
|
|
if (durability != itemTime)
|
|
{
|
|
flag2 = false;
|
|
}
|
|
if (stackSize2 != stackSize)
|
|
{
|
|
flag2 = false;
|
|
}
|
|
}
|
|
if (num == ID && (!component2 || (component2 && flag2)))
|
|
{
|
|
flag = false;
|
|
if (this.equippedItems[slot])
|
|
{
|
|
GameObject gameObject2 = this.equippedItems[slot].gameObject;
|
|
this.SetMeshLayer(gameObject2.gameObject, false);
|
|
if (!slotParent)
|
|
{
|
|
if (invRowByIndex._Name.Contains("Bow"))
|
|
{
|
|
slotParent = this.GetSlot(2);
|
|
}
|
|
else
|
|
{
|
|
slotParent = this.GetSlot(slot * 2);
|
|
}
|
|
}
|
|
if (num != 9)
|
|
{
|
|
gameObject2.gameObject.transform.SetParent(slotParent, false);
|
|
gameObject2.gameObject.transform.localPosition = new Vector3(0f, 0f, 0f);
|
|
gameObject2.gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
}
|
|
if (!this.isPortrait)
|
|
{
|
|
this.equippedItems[slot].socketA = socketA;
|
|
this.equippedItems[slot].socketB = socketB;
|
|
this.equippedItems[slot].stackSize = stackSize;
|
|
this.equippedItems[slot].durability = itemTime;
|
|
this.equippedItems[slot].SetDurabilityVisual();
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
GameObject gameObject3 = this.equippedItems[slot].gameObject;
|
|
if (gameObject3)
|
|
{
|
|
OutlineGlow component3 = gameObject3.gameObject.GetComponent<OutlineGlow>();
|
|
if (component3)
|
|
{
|
|
Object.Destroy(component3);
|
|
}
|
|
}
|
|
string text2 = this.equippedItems[slot].invRow._CharacterModel;
|
|
if (slot == 4 || slot == 5 || slot == 6)
|
|
{
|
|
text2 += "_clump";
|
|
}
|
|
this.equippedItems[slot].ReturnToArchives();
|
|
if (slot != 9)
|
|
{
|
|
Links.x.archives.RecycleItemBody(gameObject3, text2);
|
|
}
|
|
this.equippedItems[slot] = null;
|
|
if (gameObject)
|
|
{
|
|
Links.x.archives.RecycleItemBody(gameObject, text);
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
if (ID > 1 && slot != 9)
|
|
{
|
|
bool flag3 = true;
|
|
bool flag4 = false;
|
|
int num2 = 2;
|
|
string text3 = "slingstone_ammo_clay";
|
|
if (invRowByIndex._MeleeRangeEnd >= 5f)
|
|
{
|
|
flag4 = true;
|
|
}
|
|
if (invRowByIndex._Name.Contains("Bow"))
|
|
{
|
|
num2 = 0;
|
|
text3 = "arrow_tier1";
|
|
}
|
|
if (invRowByIndex._MainSkill == "Elixir" && invRowByIndex._Tag == "Weapon")
|
|
{
|
|
text3 = "item_ammo_projectile_globe1";
|
|
}
|
|
if (!slotParent)
|
|
{
|
|
flag3 = false;
|
|
if (invRowByIndex._Name.Contains("Bow"))
|
|
{
|
|
slotParent = this.GetSlot(2);
|
|
}
|
|
else
|
|
{
|
|
slotParent = this.GetSlot(slot * 2);
|
|
}
|
|
}
|
|
string text4 = invRowByIndex._CharacterModel;
|
|
if (slot == 4 || slot == 5 || slot == 6)
|
|
{
|
|
text4 += "_clump";
|
|
}
|
|
GameObject itemPrefabBody = Links.x.archives.GetItemPrefabBody(text4);
|
|
if (itemPrefabBody)
|
|
{
|
|
itemPrefabBody.gameObject.transform.SetParent(slotParent, false);
|
|
itemPrefabBody.gameObject.transform.localPosition = new Vector3(0f, 0f, 0f);
|
|
itemPrefabBody.gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
if (invRowByIndex._Tag == "Weapon")
|
|
{
|
|
itemPrefabBody.name = invRowByIndex._MainSkill;
|
|
if (invRowByIndex._MainSkill == "Whip")
|
|
{
|
|
itemPrefabBody.name = "FlailWhip";
|
|
}
|
|
if (invRowByIndex._MainSkill == "Sling")
|
|
{
|
|
itemPrefabBody.name = "Sling_t-1_a_maya";
|
|
}
|
|
}
|
|
Equipment equipment = itemPrefabBody.GetComponent<Equipment>();
|
|
if (!equipment)
|
|
{
|
|
equipment = itemPrefabBody.AddComponent<Equipment>();
|
|
}
|
|
equipment.id = invRowByIndex._ID;
|
|
this.SetMeshLayer(itemPrefabBody, false);
|
|
if (flag3)
|
|
{
|
|
itemPrefabBody.layer = 25;
|
|
}
|
|
ItemEquipped itemEquipped = itemPrefabBody.GetComponent<ItemEquipped>();
|
|
if (!itemEquipped)
|
|
{
|
|
itemEquipped = itemPrefabBody.AddComponent<ItemEquipped>();
|
|
}
|
|
itemEquipped.inPortrait = this.isPortrait;
|
|
bool flag5 = false;
|
|
if (itemPrefabBody.GetComponent<MeshRenderer>())
|
|
{
|
|
itemPrefabBody.GetComponent<MeshRenderer>().material.shader = Links.x.characterMenu;
|
|
itemEquipped.itemRenderer = itemPrefabBody.GetComponent<MeshRenderer>();
|
|
this.materials = itemEquipped.itemRenderer.materials;
|
|
Material[] array = this.materials;
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
array[i].shader = Links.x.characterMenu;
|
|
}
|
|
flag5 = true;
|
|
}
|
|
if (!flag5 && invRowByIndex._Tag == "Weapon")
|
|
{
|
|
if (itemPrefabBody.gameObject.GetComponent<SkinnedMeshRenderer>())
|
|
{
|
|
itemPrefabBody.gameObject.GetComponent<SkinnedMeshRenderer>().material.shader = Links.x.characterMenu;
|
|
itemEquipped.itemRenderer = itemPrefabBody.gameObject.GetComponent<SkinnedMeshRenderer>();
|
|
this.materials = itemEquipped.itemRenderer.materials;
|
|
Material[] array = this.materials;
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
array[i].shader = Links.x.characterMenu;
|
|
}
|
|
this.SetMeshLayer(itemEquipped.itemRenderer.gameObject, false);
|
|
flag5 = true;
|
|
}
|
|
else if (itemPrefabBody.gameObject.transform.childCount >= 1)
|
|
{
|
|
if (itemPrefabBody.gameObject.transform.GetChild(0).GetComponent<SkinnedMeshRenderer>())
|
|
{
|
|
itemPrefabBody.gameObject.transform.GetChild(0).GetComponent<SkinnedMeshRenderer>().material.shader = Links.x.characterMenu;
|
|
itemEquipped.itemRenderer = itemPrefabBody.gameObject.transform.GetChild(0).GetComponent<SkinnedMeshRenderer>();
|
|
this.materials = itemEquipped.itemRenderer.materials;
|
|
Material[] array = this.materials;
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
array[i].shader = Links.x.characterMenu;
|
|
}
|
|
this.SetMeshLayer(itemEquipped.itemRenderer.gameObject, false);
|
|
flag5 = true;
|
|
}
|
|
if (!flag5 && itemPrefabBody.gameObject.transform.childCount > 1 && itemPrefabBody.gameObject.transform.GetChild(1).GetComponent<SkinnedMeshRenderer>())
|
|
{
|
|
itemPrefabBody.gameObject.transform.GetChild(1).GetComponent<SkinnedMeshRenderer>().material.shader = Links.x.characterMenu;
|
|
itemEquipped.itemRenderer = itemPrefabBody.gameObject.transform.GetChild(1).GetComponent<SkinnedMeshRenderer>();
|
|
this.materials = itemEquipped.itemRenderer.materials;
|
|
Material[] array = this.materials;
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
array[i].shader = Links.x.characterMenu;
|
|
}
|
|
this.SetMeshLayer(itemEquipped.itemRenderer.gameObject, false);
|
|
flag5 = true;
|
|
}
|
|
}
|
|
}
|
|
if (!flag5 && invRowByIndex._Tag != "Weapon" && itemPrefabBody.gameObject.transform.childCount > 0)
|
|
{
|
|
MeshRenderer component4 = itemPrefabBody.gameObject.transform.GetChild(0).GetComponent<MeshRenderer>();
|
|
if (component4)
|
|
{
|
|
component4.material.shader = Links.x.characterMenu;
|
|
itemEquipped.itemRenderer = component4;
|
|
this.materials = itemEquipped.itemRenderer.materials;
|
|
Material[] array = this.materials;
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
array[i].shader = Links.x.characterMenu;
|
|
}
|
|
this.SetMeshLayer(component4.gameObject, false);
|
|
}
|
|
else if (itemPrefabBody.gameObject.transform.GetChild(0).GetComponent<SkinnedMeshRenderer>())
|
|
{
|
|
itemPrefabBody.gameObject.transform.GetChild(0).GetComponent<SkinnedMeshRenderer>().material.shader = Links.x.characterMenu;
|
|
itemEquipped.itemRenderer = itemPrefabBody.gameObject.transform.GetChild(0).GetComponent<SkinnedMeshRenderer>();
|
|
this.materials = itemEquipped.itemRenderer.materials;
|
|
Material[] array = this.materials;
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
array[i].shader = Links.x.characterMenu;
|
|
}
|
|
this.SetMeshLayer(itemEquipped.itemRenderer.gameObject, false);
|
|
}
|
|
}
|
|
itemEquipped.ID = ID;
|
|
itemEquipped.invRow = Links.x.library.GetInvRowByIndex(ID);
|
|
itemEquipped.equipIndex = slot;
|
|
if (!this.isPortrait)
|
|
{
|
|
itemEquipped.socketA = socketA;
|
|
itemEquipped.socketB = socketB;
|
|
itemEquipped.stackSize = stackSize;
|
|
itemEquipped.durability = itemTime;
|
|
itemEquipped.SetDurabilityVisual();
|
|
itemEquipped.Setup();
|
|
}
|
|
this.equippedItems[slot] = itemEquipped;
|
|
if (flag4)
|
|
{
|
|
this.ammoItem = Links.x.archives.GetItemPrefabBody(text3);
|
|
this.ammoItem.gameObject.transform.SetParent(this.GetSlot(num2), false);
|
|
this.ammoItem.gameObject.transform.localPosition = new Vector3(0f, 0f, 0f);
|
|
this.ammoItem.gameObject.transform.localRotation = Quaternion.Euler(Vector3.zero);
|
|
equipment.ammoObject = this.ammoItem;
|
|
equipment.ammoObjectName = text3;
|
|
}
|
|
if (flag3)
|
|
{
|
|
itemPrefabBody.gameObject.layer = 25;
|
|
invRowByIndex._MainSkill == "Shield";
|
|
if (invRowByIndex._MainSkill == "Elixir")
|
|
{
|
|
if (invRowByIndex._Name.Contains("Bomb"))
|
|
{
|
|
itemPrefabBody.gameObject.transform.localRotation = Quaternion.Euler(new Vector3(121f, -180f, 0f));
|
|
itemPrefabBody.gameObject.transform.localPosition = new Vector3(-0.003f, 0.009f, -0.175f);
|
|
itemPrefabBody.gameObject.transform.localScale = Vector3.one * 0.8f;
|
|
}
|
|
else
|
|
{
|
|
itemPrefabBody.gameObject.transform.localRotation = Quaternion.Euler(new Vector3(128f, -180f, -360f));
|
|
itemPrefabBody.gameObject.transform.localPosition = new Vector3(-0.003f, 0.071f, -0.14f);
|
|
}
|
|
}
|
|
if (invRowByIndex._MainSkill == "Sling")
|
|
{
|
|
itemPrefabBody.gameObject.transform.localRotation = Quaternion.Euler(new Vector3(-125f, 14f, 0f));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (slot == 0 && !Records.x.dialogue)
|
|
{
|
|
Library.Inventory inventory = null;
|
|
Library.Inventory inventory2;
|
|
if (this.equippedItems[0])
|
|
{
|
|
inventory2 = this.equippedItems[0].invRow;
|
|
}
|
|
else
|
|
{
|
|
inventory2 = Links.x.library.GetInvRowFromName("Fist");
|
|
}
|
|
if (this.equippedItems[1])
|
|
{
|
|
inventory = this.equippedItems[1].invRow;
|
|
}
|
|
string weaponControllerPrefix = Records.x.GetWeaponControllerPrefix(inventory2, inventory, this.savedRace, false);
|
|
string text5 = this.animationPrefix + weaponControllerPrefix;
|
|
AnimatorOverrideController overrideController = Links.x.archives.GetOverrideController(text5);
|
|
if (overrideController != null)
|
|
{
|
|
this.anim.runtimeAnimatorController = overrideController;
|
|
}
|
|
this.anim.enabled = false;
|
|
this.anim.enabled = true;
|
|
this.anim.Rebind();
|
|
if (base.gameObject.activeInHierarchy)
|
|
{
|
|
this.anim.Update(0f);
|
|
}
|
|
}
|
|
if (slot == 1 && !Records.x.dialogue)
|
|
{
|
|
Library.Inventory inventory3 = null;
|
|
Library.Inventory inventory4;
|
|
if (this.equippedItems[0])
|
|
{
|
|
inventory4 = this.equippedItems[0].invRow;
|
|
}
|
|
else
|
|
{
|
|
inventory4 = Links.x.library.GetInvRowFromName("Fist");
|
|
}
|
|
if (this.equippedItems[1])
|
|
{
|
|
inventory3 = this.equippedItems[1].invRow;
|
|
}
|
|
string weaponControllerPrefix2 = Records.x.GetWeaponControllerPrefix(inventory4, inventory3, this.savedRace, false);
|
|
string text6 = this.animationPrefix + weaponControllerPrefix2;
|
|
AnimatorOverrideController overrideController2 = Links.x.archives.GetOverrideController(text6);
|
|
if (overrideController2 != null)
|
|
{
|
|
this.anim.runtimeAnimatorController = overrideController2;
|
|
}
|
|
this.anim.enabled = false;
|
|
this.anim.enabled = true;
|
|
this.anim.Rebind();
|
|
if (base.gameObject.activeInHierarchy)
|
|
{
|
|
this.anim.Update(0f);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else if (slot == 0 && ID <= 0 && !Records.x.dialogue)
|
|
{
|
|
Library.Inventory inventory5 = null;
|
|
Library.Inventory inventory6;
|
|
if (this.equippedItems[0])
|
|
{
|
|
inventory6 = this.equippedItems[0].invRow;
|
|
}
|
|
else
|
|
{
|
|
inventory6 = Links.x.library.GetInvRowFromName("Fist");
|
|
}
|
|
if (this.equippedItems[1])
|
|
{
|
|
inventory5 = this.equippedItems[1].invRow;
|
|
}
|
|
string weaponControllerPrefix3 = Records.x.GetWeaponControllerPrefix(inventory6, inventory5, this.savedRace, false);
|
|
string text7 = this.animationPrefix + weaponControllerPrefix3;
|
|
AnimatorOverrideController overrideController3 = Links.x.archives.GetOverrideController(text7);
|
|
if (overrideController3 != null)
|
|
{
|
|
this.anim.runtimeAnimatorController = overrideController3;
|
|
}
|
|
this.anim.enabled = false;
|
|
this.anim.enabled = true;
|
|
this.anim.Rebind();
|
|
if (base.gameObject.activeInHierarchy)
|
|
{
|
|
this.anim.Update(0f);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060002BA RID: 698 RVA: 0x00038966 File Offset: 0x00036B66
|
|
public void HoverArmor(bool state)
|
|
{
|
|
}
|
|
|
|
// Token: 0x060002BB RID: 699 RVA: 0x00038968 File Offset: 0x00036B68
|
|
public void SetupArmorForInventory(int ID, int stackSize, Vector3 socketA, Vector3 socketB, Vector4 itemTime, int slot)
|
|
{
|
|
if (ID > 0)
|
|
{
|
|
CapsuleCollider component = base.gameObject.GetComponent<CapsuleCollider>();
|
|
if (component)
|
|
{
|
|
component.enabled = true;
|
|
}
|
|
ItemEquipped itemEquipped = base.gameObject.GetComponent<ItemEquipped>();
|
|
if (!itemEquipped)
|
|
{
|
|
itemEquipped = base.gameObject.AddComponent<ItemEquipped>();
|
|
}
|
|
itemEquipped.inPortrait = this.isPortrait;
|
|
itemEquipped.ID = ID;
|
|
if (!this.isPortrait)
|
|
{
|
|
itemEquipped.socketA = socketA;
|
|
itemEquipped.socketB = socketB;
|
|
itemEquipped.stackSize = stackSize;
|
|
itemEquipped.durability = itemTime;
|
|
itemEquipped.equipIndex = slot;
|
|
itemEquipped.invRow = Links.x.library.GetInvRowByIndex(ID);
|
|
itemEquipped.SetDurabilityVisual();
|
|
itemEquipped.Setup();
|
|
}
|
|
this.equippedItems[slot] = itemEquipped;
|
|
return;
|
|
}
|
|
CapsuleCollider component2 = base.GetComponent<CapsuleCollider>();
|
|
if (component2)
|
|
{
|
|
component2.enabled = false;
|
|
}
|
|
ItemEquipped component3 = base.gameObject.GetComponent<ItemEquipped>();
|
|
if (component3)
|
|
{
|
|
Object.Destroy(component3);
|
|
}
|
|
this.equippedItems[slot] = null;
|
|
}
|
|
|
|
// Token: 0x060002BC RID: 700 RVA: 0x00038A5F File Offset: 0x00036C5F
|
|
public ItemEquipped GetItemEquipped(int index)
|
|
{
|
|
if (index < this.equippedItems.Length && index > -1 && this.equippedItems[index])
|
|
{
|
|
return this.equippedItems[index];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x04000444 RID: 1092
|
|
[Header("Objects")]
|
|
public Transform headBone;
|
|
|
|
// Token: 0x04000445 RID: 1093
|
|
public Transform hand;
|
|
|
|
// Token: 0x04000446 RID: 1094
|
|
public Animator anim;
|
|
|
|
// Token: 0x04000447 RID: 1095
|
|
public FaceAnimations headAnim;
|
|
|
|
// Token: 0x04000448 RID: 1096
|
|
public Transform tr;
|
|
|
|
// Token: 0x04000449 RID: 1097
|
|
public Character character;
|
|
|
|
// Token: 0x0400044A RID: 1098
|
|
private LookAtIK lookik;
|
|
|
|
// Token: 0x0400044B RID: 1099
|
|
public GrounderFBBIK grounder;
|
|
|
|
// Token: 0x0400044C RID: 1100
|
|
public global::LookAtController lookAtController;
|
|
|
|
// Token: 0x0400044D RID: 1101
|
|
private FullBodyBipedIK fbbik;
|
|
|
|
// Token: 0x0400044E RID: 1102
|
|
public Vector3 bodyOffset;
|
|
|
|
// Token: 0x0400044F RID: 1103
|
|
public Transform neck;
|
|
|
|
// Token: 0x04000450 RID: 1104
|
|
public GameObject headObject;
|
|
|
|
// Token: 0x04000451 RID: 1105
|
|
public GameObject wings;
|
|
|
|
// Token: 0x04000452 RID: 1106
|
|
public GameObject birdFeet;
|
|
|
|
// Token: 0x04000453 RID: 1107
|
|
public GameObject toeFeet;
|
|
|
|
// Token: 0x04000454 RID: 1108
|
|
private Collider headColl;
|
|
|
|
// Token: 0x04000455 RID: 1109
|
|
private Transform attackBone;
|
|
|
|
// Token: 0x04000456 RID: 1110
|
|
private Transform hipBone;
|
|
|
|
// Token: 0x04000457 RID: 1111
|
|
public GameObject goreObj;
|
|
|
|
// Token: 0x04000458 RID: 1112
|
|
public GameObject ammoItem;
|
|
|
|
// Token: 0x04000459 RID: 1113
|
|
public Gore goreScript;
|
|
|
|
// Token: 0x0400045A RID: 1114
|
|
[Header("Lists")]
|
|
public List<Renderer> fleshRenderers = new List<Renderer>();
|
|
|
|
// Token: 0x0400045B RID: 1115
|
|
public List<Collider> startColliders = new List<Collider>();
|
|
|
|
// Token: 0x0400045C RID: 1116
|
|
public List<Renderer> deadRenderers = new List<Renderer>();
|
|
|
|
// Token: 0x0400045D RID: 1117
|
|
public List<Rigidbody> deadRigidbodies = new List<Rigidbody>();
|
|
|
|
// Token: 0x0400045E RID: 1118
|
|
private List<Vector3> savedVelocities;
|
|
|
|
// Token: 0x0400045F RID: 1119
|
|
private List<Vector3> savedAngularVelocities;
|
|
|
|
// Token: 0x04000460 RID: 1120
|
|
private List<Vector3> startDeadPositions = new List<Vector3>();
|
|
|
|
// Token: 0x04000461 RID: 1121
|
|
public List<Animator> fleshAnimators = new List<Animator>();
|
|
|
|
// Token: 0x04000462 RID: 1122
|
|
public Collider[] colliders = new Collider[0];
|
|
|
|
// Token: 0x04000463 RID: 1123
|
|
private List<GameObject> bones = new List<GameObject>();
|
|
|
|
// Token: 0x04000464 RID: 1124
|
|
public List<Transform> slots = new List<Transform>();
|
|
|
|
// Token: 0x04000465 RID: 1125
|
|
public List<string> slotNames = new List<string>();
|
|
|
|
// Token: 0x04000466 RID: 1126
|
|
public ItemEquipped[] equippedItems = new ItemEquipped[19];
|
|
|
|
// Token: 0x04000467 RID: 1127
|
|
private Material[] materials;
|
|
|
|
// Token: 0x04000468 RID: 1128
|
|
public MagicaCloth[] magicaCloths = new MagicaCloth[0];
|
|
|
|
// Token: 0x04000469 RID: 1129
|
|
public MagicaCapsuleCollider[] magicaCapsules = new MagicaCapsuleCollider[0];
|
|
|
|
// Token: 0x0400046A RID: 1130
|
|
public Renderer faceRenderer;
|
|
|
|
// Token: 0x0400046B RID: 1131
|
|
public Renderer hairRenderer;
|
|
|
|
// Token: 0x0400046C RID: 1132
|
|
private Material[] mats;
|
|
|
|
// Token: 0x0400046D RID: 1133
|
|
private List<Character> combatCharacters;
|
|
|
|
// Token: 0x0400046E RID: 1134
|
|
public Bounds bounds;
|
|
|
|
// Token: 0x0400046F RID: 1135
|
|
private Transform[] points;
|
|
|
|
// Token: 0x04000470 RID: 1136
|
|
[Header("Info")]
|
|
public bool inMenu;
|
|
|
|
// Token: 0x04000471 RID: 1137
|
|
public bool isPortrait;
|
|
|
|
// Token: 0x04000472 RID: 1138
|
|
public bool portrait;
|
|
|
|
// Token: 0x04000473 RID: 1139
|
|
public float maskNumber;
|
|
|
|
// Token: 0x04000474 RID: 1140
|
|
public AnimatorStateInfo stateInfo;
|
|
|
|
// Token: 0x04000475 RID: 1141
|
|
public int currentHash;
|
|
|
|
// Token: 0x04000476 RID: 1142
|
|
public int idleHash;
|
|
|
|
// Token: 0x04000477 RID: 1143
|
|
public int combatIdleHash;
|
|
|
|
// Token: 0x04000478 RID: 1144
|
|
public int combatIdle2Hash;
|
|
|
|
// Token: 0x04000479 RID: 1145
|
|
public int patrolLeftHash;
|
|
|
|
// Token: 0x0400047A RID: 1146
|
|
public int patrolRightHash;
|
|
|
|
// Token: 0x0400047B RID: 1147
|
|
public int turnLeftHash;
|
|
|
|
// Token: 0x0400047C RID: 1148
|
|
public int turnRightHash;
|
|
|
|
// Token: 0x0400047D RID: 1149
|
|
public int basicAttackHash;
|
|
|
|
// Token: 0x0400047E RID: 1150
|
|
public int defendHash;
|
|
|
|
// Token: 0x0400047F RID: 1151
|
|
public int channelHash;
|
|
|
|
// Token: 0x04000480 RID: 1152
|
|
public int special1Hash;
|
|
|
|
// Token: 0x04000481 RID: 1153
|
|
public int special2Hash;
|
|
|
|
// Token: 0x04000482 RID: 1154
|
|
public int special5Hash;
|
|
|
|
// Token: 0x04000483 RID: 1155
|
|
public int special4Hash;
|
|
|
|
// Token: 0x04000484 RID: 1156
|
|
public int special3Hash;
|
|
|
|
// Token: 0x04000485 RID: 1157
|
|
public int kickHash;
|
|
|
|
// Token: 0x04000486 RID: 1158
|
|
public int useHash;
|
|
|
|
// Token: 0x04000487 RID: 1159
|
|
public int walkHash;
|
|
|
|
// Token: 0x04000488 RID: 1160
|
|
public int walkStartHash;
|
|
|
|
// Token: 0x04000489 RID: 1161
|
|
public int combatWalkHash;
|
|
|
|
// Token: 0x0400048A RID: 1162
|
|
public int combatWalkStartHash;
|
|
|
|
// Token: 0x0400048B RID: 1163
|
|
public int walkEndHash;
|
|
|
|
// Token: 0x0400048C RID: 1164
|
|
public int walkPartyHash;
|
|
|
|
// Token: 0x0400048D RID: 1165
|
|
public int combatWalkEndHash;
|
|
|
|
// Token: 0x0400048E RID: 1166
|
|
public int powerDraw;
|
|
|
|
// Token: 0x0400048F RID: 1167
|
|
public int instrumentHash;
|
|
|
|
// Token: 0x04000490 RID: 1168
|
|
public int jumpStartHash;
|
|
|
|
// Token: 0x04000491 RID: 1169
|
|
public int creepStartHash;
|
|
|
|
// Token: 0x04000492 RID: 1170
|
|
public int creepHash;
|
|
|
|
// Token: 0x04000493 RID: 1171
|
|
public int jumpLoopHash;
|
|
|
|
// Token: 0x04000494 RID: 1172
|
|
public int jumpEndHash;
|
|
|
|
// Token: 0x04000495 RID: 1173
|
|
public int charmHash;
|
|
|
|
// Token: 0x04000496 RID: 1174
|
|
public int basicAttack2Hash;
|
|
|
|
// Token: 0x04000497 RID: 1175
|
|
public int basicAttack3Hash;
|
|
|
|
// Token: 0x04000498 RID: 1176
|
|
public int basicAttack4Hash;
|
|
|
|
// Token: 0x04000499 RID: 1177
|
|
public int hitDownHash;
|
|
|
|
// Token: 0x0400049A RID: 1178
|
|
public int runHash;
|
|
|
|
// Token: 0x0400049B RID: 1179
|
|
public int runStartHash;
|
|
|
|
// Token: 0x0400049C RID: 1180
|
|
public int runEndHash;
|
|
|
|
// Token: 0x0400049D RID: 1181
|
|
public int patrolLeft45Hash;
|
|
|
|
// Token: 0x0400049E RID: 1182
|
|
public int patrolRight45Hash;
|
|
|
|
// Token: 0x0400049F RID: 1183
|
|
public int combatPivotLeftHash;
|
|
|
|
// Token: 0x040004A0 RID: 1184
|
|
public int combatPivotRightHash;
|
|
|
|
// Token: 0x040004A1 RID: 1185
|
|
public int combatPivotLeft45Hash;
|
|
|
|
// Token: 0x040004A2 RID: 1186
|
|
public int combatPivotRight45Hash;
|
|
|
|
// Token: 0x040004A3 RID: 1187
|
|
public int patrol180;
|
|
|
|
// Token: 0x040004A4 RID: 1188
|
|
public int combatPivot180;
|
|
|
|
// Token: 0x040004A5 RID: 1189
|
|
public int combatPivotLeftBackHash;
|
|
|
|
// Token: 0x040004A6 RID: 1190
|
|
public int combatPivotRightBackHash;
|
|
|
|
// Token: 0x040004A7 RID: 1191
|
|
public int combatPivotLeft45BackHash;
|
|
|
|
// Token: 0x040004A8 RID: 1192
|
|
public int combatPivotRight45BackHash;
|
|
|
|
// Token: 0x040004A9 RID: 1193
|
|
public int combatPivotBack180;
|
|
|
|
// Token: 0x040004AA RID: 1194
|
|
public int creepEndHash;
|
|
|
|
// Token: 0x040004AB RID: 1195
|
|
public int quickAttackHash;
|
|
|
|
// Token: 0x040004AC RID: 1196
|
|
public int walkBackHash;
|
|
|
|
// Token: 0x040004AD RID: 1197
|
|
public int walkBackStartHash;
|
|
|
|
// Token: 0x040004AE RID: 1198
|
|
public int walkBackEndHash;
|
|
|
|
// Token: 0x040004AF RID: 1199
|
|
public int getupHash;
|
|
|
|
// Token: 0x040004B0 RID: 1200
|
|
public int hitHash;
|
|
|
|
// Token: 0x040004B1 RID: 1201
|
|
public int downHash;
|
|
|
|
// Token: 0x040004B2 RID: 1202
|
|
public int downStartHash;
|
|
|
|
// Token: 0x040004B3 RID: 1203
|
|
public int bounceHash;
|
|
|
|
// Token: 0x040004B4 RID: 1204
|
|
public bool dead;
|
|
|
|
// Token: 0x040004B5 RID: 1205
|
|
public string animationPrefix;
|
|
|
|
// Token: 0x040004B6 RID: 1206
|
|
public bool grounderOn;
|
|
|
|
// Token: 0x040004B7 RID: 1207
|
|
public string model;
|
|
|
|
// Token: 0x040004B8 RID: 1208
|
|
public bool attacking;
|
|
|
|
// Token: 0x040004B9 RID: 1209
|
|
public bool sneaking;
|
|
|
|
// Token: 0x040004BA RID: 1210
|
|
public bool hasGrounder;
|
|
|
|
// Token: 0x040004BB RID: 1211
|
|
public bool dithering;
|
|
|
|
// Token: 0x040004BC RID: 1212
|
|
public float startDither;
|
|
|
|
// Token: 0x040004BD RID: 1213
|
|
public float endDither;
|
|
|
|
// Token: 0x040004BE RID: 1214
|
|
public float t;
|
|
|
|
// Token: 0x040004BF RID: 1215
|
|
public float currentDither;
|
|
|
|
// Token: 0x040004C0 RID: 1216
|
|
private bool evading;
|
|
|
|
// Token: 0x040004C1 RID: 1217
|
|
public string headModel;
|
|
|
|
// Token: 0x040004C2 RID: 1218
|
|
private bool ghost;
|
|
|
|
// Token: 0x040004C3 RID: 1219
|
|
private bool newHead;
|
|
|
|
// Token: 0x040004C4 RID: 1220
|
|
private bool setMagicaClothPortraits;
|
|
|
|
// Token: 0x040004C5 RID: 1221
|
|
private AngleConstraint.RestorationSerializeData magicaAngle;
|
|
|
|
// Token: 0x040004C6 RID: 1222
|
|
private CurveSerializeData magicaCurveDamp;
|
|
|
|
// Token: 0x040004C7 RID: 1223
|
|
public int turnOnMagicaClothNextFrame;
|
|
|
|
// Token: 0x040004C8 RID: 1224
|
|
public int specID;
|
|
|
|
// Token: 0x040004C9 RID: 1225
|
|
public int needToUpdateItemColliders;
|
|
|
|
// Token: 0x040004CA RID: 1226
|
|
public float dodgeTime;
|
|
|
|
// Token: 0x040004CB RID: 1227
|
|
public Vector3 originalScale;
|
|
|
|
// Token: 0x040004CC RID: 1228
|
|
public bool sameNode;
|
|
|
|
// Token: 0x040004CD RID: 1229
|
|
public bool nextFrameRotateToChild;
|
|
|
|
// Token: 0x040004CE RID: 1230
|
|
private float prevHealth;
|
|
|
|
// Token: 0x040004CF RID: 1231
|
|
private float jumpCurrent;
|
|
|
|
// Token: 0x040004D0 RID: 1232
|
|
public float waitForCrossFadeTime;
|
|
|
|
// Token: 0x040004D1 RID: 1233
|
|
private string savedRace;
|
|
|
|
// Token: 0x040004D2 RID: 1234
|
|
private int raceID;
|
|
|
|
// Token: 0x040004D3 RID: 1235
|
|
private int hairID;
|
|
|
|
// Token: 0x040004D4 RID: 1236
|
|
private int skinID;
|
|
|
|
// Token: 0x040004D5 RID: 1237
|
|
private int outfitID;
|
|
|
|
// Token: 0x040004D6 RID: 1238
|
|
private bool multiHover;
|
|
|
|
// Token: 0x040004D7 RID: 1239
|
|
private bool hovering;
|
|
|
|
// Token: 0x040004D8 RID: 1240
|
|
public GameObject bracket;
|
|
|
|
// Token: 0x040004D9 RID: 1241
|
|
private float boundsOffset;
|
|
|
|
// Token: 0x040004DA RID: 1242
|
|
public bool ignoreAttackEvent;
|
|
|
|
// Token: 0x040004DB RID: 1243
|
|
public bool animationHold;
|
|
|
|
// Token: 0x040004DC RID: 1244
|
|
public bool targetOutline;
|
|
|
|
// Token: 0x040004DD RID: 1245
|
|
public bool multiHit;
|
|
|
|
// Token: 0x040004DE RID: 1246
|
|
private IEnumerator bonesRoutine;
|
|
|
|
// Token: 0x040004DF RID: 1247
|
|
private float healthPercent;
|
|
|
|
// Token: 0x040004E0 RID: 1248
|
|
private float goreStart;
|
|
|
|
// Token: 0x040004E1 RID: 1249
|
|
private bool makeBones;
|
|
|
|
// Token: 0x040004E2 RID: 1250
|
|
private bool cannotTurnOn;
|
|
|
|
// Token: 0x040004E3 RID: 1251
|
|
[Header("Blinking")]
|
|
public int blinking;
|
|
|
|
// Token: 0x040004E4 RID: 1252
|
|
private float blinkTime;
|
|
|
|
// Token: 0x040004E5 RID: 1253
|
|
private float blinkInterval;
|
|
|
|
// Token: 0x040004E6 RID: 1254
|
|
public float recoveryTime;
|
|
|
|
// Token: 0x040004E7 RID: 1255
|
|
private string blink2Type;
|
|
|
|
// Token: 0x040004E8 RID: 1256
|
|
public int blinking2;
|
|
|
|
// Token: 0x040004E9 RID: 1257
|
|
public int blinkNumber2;
|
|
|
|
// Token: 0x040004EA RID: 1258
|
|
private float blinkTime2;
|
|
|
|
// Token: 0x040004EB RID: 1259
|
|
private float blinkInterval2;
|
|
|
|
// Token: 0x040004EC RID: 1260
|
|
public Vector3 startScale;
|
|
}
|