Esempio n. 1
0
    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
        }
    }