public IEnumerator _SheathWeapon(int weaponNumber, int weaponTo) { //Debug.Log("Sheath Weapon: " + weaponNumber + " - Weapon To: " + weaponTo); //Reset for animation events. isWeaponSwitching = true; //Use Dual switch. if (dualSwitch) { StartCoroutine(_DualSheath(weaponNumber, weaponTo)); yield break; } //Set LeftRight hand for 1handed switching. if (IsLeftWeapon(weaponNumber)) { animator.SetInteger("LeftRight", 1); } else if (IsRightWeapon(weaponNumber)) { animator.SetInteger("LeftRight", 2); } //Switching to Unarmed or Relaxed. if (weaponTo < 1) { //Have at least 1 weapon. if (rightWeapon != 0 || leftWeapon != 0) { //Sheath 1handed weapon. if (Is1HandedWeapon(weaponNumber)) { //If sheathing both weapons, go to Armed first. if (rightWeapon != 0 && leftWeapon != 0) { DoWeaponSwitch(7, weaponNumber, 7, -1, true); } else { DoWeaponSwitch(weaponTo, weaponNumber, 7, -1, true); } yield return(new WaitForSeconds(0.5f)); if (IsLeftWeapon(weaponNumber)) { animator.SetInteger("LeftWeapon", 0); SetAnimator(weaponTo, -2, 0, -1, -1); } else if (IsRightWeapon(weaponNumber)) { animator.SetInteger("RightWeapon", 0); SetAnimator(weaponTo, -2, -1, 0, -1); } animator.SetBool("Shield", false); } //Sheath 2handed weapon. else if (Is2HandedWeapon(weaponNumber)) { DoWeaponSwitch(weaponTo, weaponNumber, animator.GetInteger("Weapon"), -1, true); yield return(new WaitForSeconds(0.5f)); SetAnimator(weaponTo, -2, 0, 0, -1); } } //Unarmed, switching to Relax. else if (rightWeapon == 0 && leftWeapon == 0) { DoWeaponSwitch(weaponTo, weaponNumber, animator.GetInteger("Weapon"), 0, true); yield return(new WaitForSeconds(0.5f)); SetAnimator(weaponTo, -2, 0, 0, -1); } } //Switching to 2handed weapon. else if (Is2HandedWeapon(weaponTo)) { //Switching from 1handed weapons. if (animator.GetInteger("Weapon") == 7) { //Dual weilding, switch to Armed if first switch. if (leftWeapon != 0 && rightWeapon != 0) { DoWeaponSwitch(7, weaponNumber, 7, -1, true); if (IsLeftWeapon(weaponNumber)) { SetAnimator(7, -2, 0, -1, -1); } else if (IsRightWeapon(weaponNumber)) { SetAnimator(7, -2, -1, 0, -1); } } else { DoWeaponSwitch(0, weaponNumber, 7, -1, true); yield return(new WaitForSeconds(0.5f)); SetAnimator(0, -2, 0, 0, -1); } } //Switching from 2handed weapons. else { DoWeaponSwitch(0, weaponNumber, animator.GetInteger("Weapon"), -1, true); yield return(new WaitForSeconds(0.5f)); SetAnimator(weaponNumber, -2, weaponNumber, 0, -1); } } //Switching to 1handed weapons. else { //Switching from 2handed weapons, go to Unarmed before next switch. if (Is2HandedWeapon(animator.GetInteger("Weapon"))) { DoWeaponSwitch(0, weaponNumber, animator.GetInteger("Weapon"), 0, true); yield return(new WaitForSeconds(0.5f)); SetAnimator(0, -2, 0, 0, 0); } //Switching from 1handed weapon(s), go to Armed before next switch. else if (Is1HandedWeapon(animator.GetInteger("Weapon"))) { if (IsRightWeapon(weaponNumber)) { animator.SetBool("Shield", false); } DoWeaponSwitch(7, weaponNumber, 7, -1, true); yield return(new WaitForSeconds(0.1f)); if (weaponNumber == 7) { animator.SetBool("Shield", false); } if (IsLeftWeapon(weaponNumber)) { SetAnimator(7, 7, 0, -1, 0); } else { SetAnimator(7, 7, -1, 0, 0); } } } rpgCharacterController.SetWeaponState(weaponTo); yield return(null); }