private void Attack() { AttackInfo myAttack; AttackTimer attackTimer = usm.attackTimer; BodyPartController myBody = usm.bodyController; CombatSkills mySkills = usm.combatSkills; if (Random.Range(0, 100) <= 75) { if (!myBody.PartTooInjured(attack1Parts)) { AttackAnimation(); myAttack = mySkills.RequestAttackInfo(attack1Parts[0].MyWeapon()); } else { string line = "<color=red>" + gameObject.name + " is too injured to attack with their " + attack1Parts[0].MyWeapon().name + "</color>"; FloatingTextController.CreateFloatingText("Too injured!", transform, Color.red); BattleReport.AddToBattleReport(line); attackTimer.ResetAttackTimer(7f); //arbitrarily reset attack timer to prevent attack //unit reactions -> run away if not player? return; } } else { if (!myBody.PartTooInjured(attack2Parts)) { AttackAnimation(); myAttack = mySkills.RequestAttackInfo(attack2Parts[0].MyWeapon()); } else { string line = "<color=red>" + gameObject.name + " is too injured to attack with their " + attack2Parts[0].MyWeapon().name + "</color>"; FloatingTextController.CreateFloatingText("Too injured!", transform, Color.red); BattleReport.AddToBattleReport(line); attackTimer.ResetAttackTimer(7f); //arbitrarily reset attack timer to prevent attack //unit reactions -> run away if not player? return; } } Debug.Log(gameObject.name + " attacking with reset timer of " + myAttack.speed); targetBody.RecieveAttack(myAttack, transform); //should reset back to whatever weapon was used attackTimer.ResetAttackTimer(myAttack.speed); }