void Update() { CharacterController controller = GetComponent <CharacterController>(); StatusC stat = GetComponent <StatusC>(); if (!master) { stat.Death(); return; } if (meleefwd && !stat.freeze) { Vector3 lui = transform.TransformDirection(Vector3.forward); controller.Move(lui * 5 * Time.deltaTime); return; } if (freeze || stat.freeze || GlobalConditionC.freezeAll) { return; } if (useMecanim) { animator.SetBool("hurt", flinch); } if (flinch) { cancelAttack = true; Vector3 lui = transform.TransformDirection(Vector3.back); controller.SimpleMove(lui * 5); return; } if ((master.position - transform.position).magnitude > 30.0f) { Vector3 pos = master.position; pos.y += 1.7f; transform.position = pos; } FindClosest(); if (followState == AIStatef.FollowMaster) { //--------------------------------- if ((master.position - transform.position).magnitude <= 3.0f) { followState = AIStatef.Idle; //mainModel.animation.CrossFade(idleAnimation.name, 0.2ff); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(idleAnimation.name, 0.2f); } else { animator.SetBool("run", false); } } else { Vector3 forward = transform.TransformDirection(Vector3.forward); controller.Move(forward * speed * Time.deltaTime); Vector3 mas = master.position; mas.y = transform.position.y; transform.LookAt(mas); } //--------------------------------- } else if (followState == AIStatef.Moving) { masterDistance = (transform.position - GetMasterPosition()).magnitude; if (masterDistance > detectRange + 5.0f) //////////////////GetMasterPosition { followState = AIStatef.FollowMaster; //mainModel.animation.CrossFade(movingAnimation.name, 0.2f); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(movingAnimation.name, 0.2f); } else { animator.SetBool("run", true); } } else if ((followTarget.position - transform.position).magnitude <= approachDistance) { followState = AIStatef.Pausing; //mainModel.animation.CrossFade(idleAnimation.name, 0.2f); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(idleAnimation.name, 0.2f); } else { animator.SetBool("run", false); } //----Attack---- //Attack(); StartCoroutine(Attack()); } else if ((followTarget.position - transform.position).magnitude >= lostSight) { //Lost Sight GetComponent <StatusC>().health = GetComponent <StatusC>().maxHealth; followState = AIStatef.Idle; //mainModel.animation.CrossFade(idleAnimation.name, 0.2ff); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(idleAnimation.name, 0.2f); } else { animator.SetBool("run", false); } } else { Vector3 forward = transform.TransformDirection(Vector3.forward); controller.Move(forward * speed * Time.deltaTime); Vector3 destiny = followTarget.position; destiny.y = transform.position.y; transform.LookAt(destiny); } } else if (followState == AIStatef.Pausing) { Vector3 destinya = followTarget.position; destinya.y = transform.position.y; transform.LookAt(destinya); distance = (transform.position - GetDestination()).magnitude; masterDistance = (transform.position - GetMasterPosition()).magnitude; if (masterDistance > 12.0f) //////////////////GetMasterPosition { followState = AIStatef.FollowMaster; //mainModel.animation.CrossFade(movingAnimation.name, 0.2f); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(movingAnimation.name, 0.2f); } else { animator.SetBool("run", true); } } else if (distance > approachDistance) { followState = AIStatef.Moving; //mainModel.animation.CrossFade(movingAnimation.name, 0.2f); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(movingAnimation.name, 0.2f); } else { animator.SetBool("run", true); } } } //----------------Idle Mode-------------- else if (followState == AIStatef.Idle) { Vector3 destinyheight = Vector3.zero; if (followTarget) { destinyheight = followTarget.position; destinyheight.y = transform.position.y - destinyheight.y; distance = (transform.position - GetDestination()).magnitude; } masterDistance = (transform.position - GetMasterPosition()).magnitude; if (distance < detectRange && Mathf.Abs(destinyheight.y) <= 4 && followTarget) { followState = AIStatef.Moving; //mainModel.animation.CrossFade(movingAnimation.name, 0.2f); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(movingAnimation.name, 0.2f); } else { animator.SetBool("run", true); } } else if (masterDistance > 3.0f) //////////////////GetMasterPosition { followState = AIStatef.FollowMaster; //mainModel.animation.CrossFade(movingAnimation.name, 0.2f); if (!useMecanim) { //If using Legacy Animation mainModel.GetComponent <Animation>().CrossFade(movingAnimation.name, 0.2f); } else { animator.SetBool("run", true); } } } //----------------------------------- }
// Token: 0x06000318 RID: 792 RVA: 0x0000C020 File Offset: 0x0000A420 private void Update() { CharacterController component = base.GetComponent <CharacterController>(); StatusC component2 = base.GetComponent <StatusC>(); if (!this.master) { component2.Death(); return; } if (this.meleefwd && !component2.freeze) { Vector3 a = base.transform.TransformDirection(Vector3.forward); component.Move(a * 5f * Time.deltaTime); return; } if (this.freeze || component2.freeze) { return; } if (this.useMecanim) { this.animator.SetBool("hurt", this.flinch); } if (this.flinch) { this.cancelAttack = true; Vector3 a2 = base.transform.TransformDirection(Vector3.back); component.SimpleMove(a2 * 5f); return; } if (this.allowFollowing && (this.master.position - base.transform.position).magnitude > 40f) { Vector3 position = this.master.position; position.y += 0.4f; position.x += UnityEngine.Random.Range(3f, 9f); position.z += UnityEngine.Random.Range(3f, 9f); base.transform.position = position; } if (this.searchEnemy) { this.FindClosest(); } if (!this.followTarget) { this.FindClosest(); } if (this.allowFollowing) { if (this.followState == AIfriendC.AIStatef.FollowMaster && this.allowFollowing) { if ((this.master.position - base.transform.position).magnitude <= this.minMasterDistance) { this.followState = AIfriendC.AIStatef.Idle; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.idleAnimation.name, 0.2f); } else { this.animator.SetBool("run", false); } } else { Vector3 a3 = base.transform.TransformDirection(Vector3.forward); component.Move(a3 * this.speed * Time.deltaTime); Vector3 position2 = this.master.position; position2.y = base.transform.position.y; base.transform.LookAt(position2); } } else if (this.followState == AIfriendC.AIStatef.Moving) { this.masterDistance = (base.transform.position - this.GetMasterPosition()).magnitude; if (this.masterDistance > this.detectRange + 5f) { this.followState = AIfriendC.AIStatef.FollowMaster; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.movingAnimation.name, 0.2f); } else { this.animator.SetBool("run", true); } } else if ((this.followTarget.position - base.transform.position).magnitude <= this.approachDistance) { this.followState = AIfriendC.AIStatef.Pausing; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.idleAnimation.name, 0.2f); } else { this.animator.SetBool("run", false); } if (this.followTarget.tag != "Player") { base.StartCoroutine(this.Attack()); MonoBehaviour.print("Attacking"); } } else if ((this.followTarget.position - base.transform.position).magnitude >= this.lostSight) { base.GetComponent <StatusC>().health = base.GetComponent <StatusC>().maxHealth; this.followState = AIfriendC.AIStatef.Idle; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.idleAnimation.name, 0.2f); } else { this.animator.SetBool("run", false); } } else { Vector3 a4 = base.transform.TransformDirection(Vector3.forward); component.Move(a4 * this.speed * Time.deltaTime); Vector3 position3 = this.followTarget.position; position3.y = base.transform.position.y; base.transform.LookAt(position3); } } else if (this.followState == AIfriendC.AIStatef.Pausing) { Vector3 position4 = this.followTarget.position; position4.y = base.transform.position.y; base.transform.LookAt(position4); this.distance = (base.transform.position - this.GetDestination()).magnitude; this.masterDistance = (base.transform.position - this.GetMasterPosition()).magnitude; if (this.masterDistance > 12f) { this.followState = AIfriendC.AIStatef.FollowMaster; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.movingAnimation.name, 0.2f); } else { this.animator.SetBool("run", true); } } else if (this.distance > this.approachDistance + 10f) { this.followState = AIfriendC.AIStatef.Moving; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.movingAnimation.name, 0.2f); } else { this.animator.SetBool("run", true); } } } else if (this.followState == AIfriendC.AIStatef.Idle) { Vector3 position5 = this.followTarget.position; position5.y = base.transform.position.y - position5.y; this.distance = (base.transform.position - this.GetDestination()).magnitude; this.masterDistance = (base.transform.position - this.GetMasterPosition()).magnitude; if (this.distance < this.detectRange && Mathf.Abs(position5.y) <= 4f && this.followTarget) { this.followState = AIfriendC.AIStatef.Moving; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.movingAnimation.name, 0.2f); } else { this.animator.SetBool("run", true); } } else if (this.masterDistance > this.maxMasterDistance) { this.followState = AIfriendC.AIStatef.FollowMaster; if (!this.useMecanim) { this.mainModel.GetComponent <Animation>().CrossFade(this.movingAnimation.name, 0.2f); } else { this.animator.SetBool("run", true); } } } } else if (this.useMecanim) { this.animator.SetBool("run", false); } else { this.mainModel.GetComponent <Animation>().CrossFade(this.idleAnimation.name, 0.2f); } }