private void ShotPlayer() { float damage = baseDamage; float evade = 0; foreach (var m in DamageModifiers) { m.ModifyDamage(ref damage, ref evade); } float random = GetRandom(0); if (random > evade) { List <ShipModule> viableModules = new List <ShipModule>(); foreach (var m in modules) { if (!m.Broken) { viableModules.Add(m); } } if (GetRandom(1) < moduleHitChance && viableModules.Count > 0) { viableModules.Shuffle(); ShipModule shipModule = viableModules[0]; ShotAt(shipModule.transform.position) .OnComplete(() => shipModule.Attack(damage)); } else { Transform hitpoint = randomHitpoints[UnityEngine.Random.Range(0, randomHitpoints.Length)]; ShotAt(hitpoint.position) .OnComplete(() => PlayersShip.Damage(damage)); } } else { // Attacking nothing } }