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(); 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(); this.lookik = base.gameObject.GetComponent(); this.fbbik = base.gameObject.GetComponent(); string name = base.gameObject.name; if (this.IsBiped(name)) { this.originalScale = Vector3.one; if (!this.fbbik) { this.fbbik = base.gameObject.AddComponent(); this.fbbik.AutoDetectReferences(); } if (!this.lookik) { this.lookik = base.gameObject.AddComponent(); } } if (this.lookik && this.fbbik) { if (!this.grounder) { this.grounder = base.gameObject.AddComponent(); } 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(); foreach (Collider collider in this.colliders) { collider.gameObject.layer = 31; if (!collider.gameObject.GetComponent()) { collider.gameObject.AddComponent(); } } if (this.lookik) { this.lookik.enabled = false; } if (!this.lookAtController) { this.lookAtController = base.gameObject.AddComponent(); } } // 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(); 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(); 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(); 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(); 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(); 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(); 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(); this.savedAngularVelocities = new List(); } 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(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(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(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(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(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(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(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(); foreach (object obj in this.headObject.transform) { Transform transform = (Transform)obj; if (transform.gameObject.GetComponent()) { this.headColl = transform.gameObject.GetComponent(); } } if (this.headColl) { this.headColl.gameObject.layer = 31; SelectionCircle selectionCircle = this.headColl.gameObject.GetComponent(); if (!selectionCircle) { selectionCircle = this.headColl.gameObject.AddComponent(); } 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(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().character = this.character; } } if (this.colliders.Length == 0) { this.SetupCollider(true); SelectionCircle selectionCircle = base.gameObject.GetComponent(); if (!selectionCircle) { selectionCircle = base.gameObject.AddComponent(); } 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(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()) { this.headAnim = componentsInChildren2[k].gameObject.AddComponent(); this.headAnim.body = base.gameObject; } else { this.headAnim = componentsInChildren2[k].gameObject.GetComponent(); 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(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(true); this.magicaCapsules = base.gameObject.GetComponentsInChildren(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(); 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(); if (state) { if (!outline) { outline = gameObject2.AddComponent(); } 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(); 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 = base.gameObject.AddComponent(); 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(); 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(); 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(); GameObject gameObject2 = null; this.equippedItems[num].GetComponent(); 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(); GameObject gameObject = null; ItemEquipped component2 = this.equippedItems[slot].GetComponent(); 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(); 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(); if (!equipment) { equipment = itemPrefabBody.AddComponent(); } equipment.id = invRowByIndex._ID; this.SetMeshLayer(itemPrefabBody, false); if (flag3) { itemPrefabBody.layer = 25; } ItemEquipped itemEquipped = itemPrefabBody.GetComponent(); if (!itemEquipped) { itemEquipped = itemPrefabBody.AddComponent(); } itemEquipped.inPortrait = this.isPortrait; bool flag5 = false; if (itemPrefabBody.GetComponent()) { itemPrefabBody.GetComponent().material.shader = Links.x.characterMenu; itemEquipped.itemRenderer = itemPrefabBody.GetComponent(); 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()) { itemPrefabBody.gameObject.GetComponent().material.shader = Links.x.characterMenu; itemEquipped.itemRenderer = itemPrefabBody.gameObject.GetComponent(); 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()) { itemPrefabBody.gameObject.transform.GetChild(0).GetComponent().material.shader = Links.x.characterMenu; itemEquipped.itemRenderer = itemPrefabBody.gameObject.transform.GetChild(0).GetComponent(); 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()) { itemPrefabBody.gameObject.transform.GetChild(1).GetComponent().material.shader = Links.x.characterMenu; itemEquipped.itemRenderer = itemPrefabBody.gameObject.transform.GetChild(1).GetComponent(); 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(); 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()) { itemPrefabBody.gameObject.transform.GetChild(0).GetComponent().material.shader = Links.x.characterMenu; itemEquipped.itemRenderer = itemPrefabBody.gameObject.transform.GetChild(0).GetComponent(); 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(); if (component) { component.enabled = true; } ItemEquipped itemEquipped = base.gameObject.GetComponent(); if (!itemEquipped) { itemEquipped = base.gameObject.AddComponent(); } 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(); if (component2) { component2.enabled = false; } ItemEquipped component3 = base.gameObject.GetComponent(); 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 fleshRenderers = new List(); // Token: 0x0400045B RID: 1115 public List startColliders = new List(); // Token: 0x0400045C RID: 1116 public List deadRenderers = new List(); // Token: 0x0400045D RID: 1117 public List deadRigidbodies = new List(); // Token: 0x0400045E RID: 1118 private List savedVelocities; // Token: 0x0400045F RID: 1119 private List savedAngularVelocities; // Token: 0x04000460 RID: 1120 private List startDeadPositions = new List(); // Token: 0x04000461 RID: 1121 public List fleshAnimators = new List(); // Token: 0x04000462 RID: 1122 public Collider[] colliders = new Collider[0]; // Token: 0x04000463 RID: 1123 private List bones = new List(); // Token: 0x04000464 RID: 1124 public List slots = new List(); // Token: 0x04000465 RID: 1125 public List slotNames = new List(); // 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 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; }