// Character tries to attack // Checks every possible outcome of a single attack: // 1. Enemy can Dodge or Block // 2. Character can deal Critical Damage public void AttackAttempt() { if (!enemy.DodgeHit()) // Checks enemy dodging { if (!enemy.BlockHit()) // Checks enemy blocking { // If hit isn't blocked // Check dmg amount and apply to enemy health // Check if this character deals critical damage if (SpellBook_script.InstaCrit.isActive == true && Time.time > SpellBook_script.InstaCrit.lastUse) { if (weaponToggle == "Melee") { damage = meleeDmgMax + 5f; } else { damage = rangedDmgMax + 5f; } // Apply the damage to enemy enemy.TakesHit(damage); if (SpellBook_script.DoubleStrike.isActive == true && Time.time > SpellBook_script.DoubleStrike.lastUse) { enemy.TakesHit(damage); Debug.Log("Double strike hit!"); SpellBook_script.DoubleStrike.isActive = false; SpellBook_script.DoubleStrike.lastUse = Time.time + SpellBook_script.InstaCrit.GetCooldown(); } lastAttack = Time.time + attackCooldown; Debug.Log("InstaCrit hit! Damage dealt : " + damage); // Apply cooldown to Spell SpellBook_script.InstaCrit.isActive = false; SpellBook_script.InstaCrit.lastUse = Time.time + SpellBook_script.InstaCrit.GetCooldown(); } else if (CriticalHit()) // <--------------------------- Add Insta Crit Spell check { // Check which weapon is equipped // & applies its Maximum Damage if (weaponToggle == "Melee") { damage = meleeDmgMax + 5f; } else { damage = rangedDmgMax + 5f; } // Apply the damage to enemy enemy.TakesHit(damage); if (SpellBook_script.DoubleStrike.isActive == true && Time.time > SpellBook_script.DoubleStrike.lastUse) { enemy.TakesHit(damage); Debug.Log("Double strike hit!"); SpellBook_script.DoubleStrike.isActive = false; SpellBook_script.DoubleStrike.lastUse = Time.time + SpellBook_script.InstaCrit.GetCooldown(); } lastAttack = Time.time + attackCooldown; } else { // apply regular damage damage = RollDamage(); if (SpellBook_script.DoubleStrike.isActive == true && Time.time > SpellBook_script.DoubleStrike.lastUse) { enemy.TakesHit(damage); Debug.Log("Double strike hit!"); SpellBook_script.DoubleStrike.isActive = false; SpellBook_script.DoubleStrike.lastUse = Time.time + SpellBook_script.InstaCrit.GetCooldown(); } enemy.TakesHit(damage); lastAttack = Time.time + attackCooldown; } } else { // Hit was blocked // Apply the damage to the opponent's shield damage = RollDamage(); if (SpellBook_script.DoubleStrike.isActive == true && Time.time > SpellBook_script.DoubleStrike.lastUse) { enemy.TakesHit(damage); Debug.Log("Double strike hit!"); SpellBook_script.DoubleStrike.isActive = false; SpellBook_script.DoubleStrike.lastUse = Time.time + SpellBook_script.InstaCrit.GetCooldown(); } enemy.TakesBlockedHit(damage); lastAttack = Time.time + attackCooldown; } } }