Пример #1
0
 public void Use(AbilityUseParams useParams)
 {
     DealRadialDamage(useParams);
     PlayParticleEffect();
     audioSource.clip = config.GetAudioClip();
     audioSource.Play();
 }
Пример #2
0
    private void DealRadialDamage(AbilityUseParams useParams)
    {
        // Static sphere cast for targets
        RaycastHit[] hits = Physics.SphereCastAll(
            transform.position,
            config.GetRadius(),
            Vector3.up,
            config.GetRadius()
            );

        foreach (RaycastHit hit in hits)
        {
            var  damageable = hit.collider.gameObject.GetComponent <IDamageable>();
            bool hitPlayer  = hit.collider.gameObject.GetComponent <Player>();
            if (damageable != null && !hitPlayer)
            {
                float damageToDeal = useParams.baseDamage + config.GetDamageToEachTarget(); // TODO ok Rick?
                damageable.TakeDamage(damageToDeal);
            }
        }
    }
Пример #3
0
    public void Use(AbilityUseParams useParams)
    {
        print("Area Effect used by " + gameObject.name);
        // Static sphere cast for targets
        RaycastHit[] hits = Physics.SphereCastAll(
            transform.position,
            config.GetRadius(),
            Vector3.up,
            config.GetRadius()
            );

        foreach (RaycastHit hit in hits)
        {
            var damageable = hit.collider.gameObject.GetComponent <IDamageable>();
            if (damageable != null)
            {
                float damageToDeal = useParams.baseDamage + config.GetDamageToEachTarget(); // TODO ok Rick?
                damageable.TakeDamage(damageToDeal);
            }
        }
    }
Пример #4
0
    public void UseAbility(int abilityIndex) //TODO change to individual ability casts per PlayerInput assignment
    {
        var energyComponent = GetComponent <Energy>();
        var energyCost      = abilities[abilityIndex].GetEnergyCost();

        if (energyComponent.IsEnergyAvailable(energyCost))
        {
            energyComponent.ConsumeEnergy(energyCost);
            if (UnityEngine.Random.Range(1.0f, 100.0f) < critChance && UnityEngine.Random.Range(1, 100) > enemy.dodgechance)
            {
                var abilityParams = new AbilityUseParams(enemy, critDamage);
                abilities[abilityIndex].Use(abilityParams);
            }
            else if (UnityEngine.Random.Range(1, 100) > enemy.dodgechance)
            {
                var abilityParams = new AbilityUseParams(enemy, damage);
                abilities[abilityIndex].Use(abilityParams);
            }
        }
        else
        {
            DamageTextController.CreateFloatingNotEnoughEnergyText("Not Enough Energy.", transform);
        }
    }