Пример #1
0
    public override void Clear()
    {
        if (target == null)
        {
            return;
        }

        for (int i = 0; i < stacks; i++)
        {
            target.health -= poisonDmg;
            DamagePopUpManager.RequestDamagePopUp(poisonDmg, false, GetComponentInParent <Transform>());
        }

        for (int i = 0; i < timers.Length; i++)
        {
            timers[i] = 0;
        }

        target.renderer.color = initialColor;

        particleLight.SetActive(false);
        var e = particles.emission;

        e.enabled = false;

        this.enabled = false;
    }
Пример #2
0
    protected override void Update()
    {
        if (target == null)
        {
            return;
        }

        for (int i = 0; i < timers.Length; i++)
        {
            if (timers[i] > 0)
            {
                timers[i] -= Time.deltaTime;

                if (timers[i] < 0)
                {
                    target.health -= poisonDmg;
                    DamagePopUpManager.RequestDamagePopUp(poisonDmg, false, GetComponentInParent <Transform>());
                }

                if (stacks <= 0)
                {
                    target.renderer.color = initialColor;
                    particleLight.SetActive(false);
                    var e = particles.emission;
                    e.enabled    = false;
                    this.enabled = false;
                }
            }
        }
    }
Пример #3
0
 //! A bit messy to have both a public health property and `TakeDamage`, but unsure how to address
 public virtual void TakeDamage(float damage, bool isCritical)
 {
     if (!isInvulnerable)
     {
         health -= damage;
         DamagePopUpManager.RequestDamagePopUp(damage, isCritical, transform);
         iframes?.TriggerInvulnerability();
     }
 }
Пример #4
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }
Пример #5
0
    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Destroy(gameObject);
        }

        GCManager.RegisterObject(DAMAGE_POPUP_GC_KEY, damage_popup_prefab);
    }
Пример #6
0
    private IEnumerator TakeAoeDamage(Character hit)
    {
        while (charactersInAreaList.Contains(hit))
        {
            if (hit != null)
            {
                DamagePopUpManager.RequestDamagePopUp(tickDamage, hit.transform);
                hit.health -= tickDamage;
                yield return(new WaitForSeconds(tickDuration));

                Debug.Log("Character took dmg from AOE");
            }
        }
    }
Пример #7
0
    private IEnumerator DamageOverTimeCo(Character hit)
    {
        DamagePopUpManager.RequestDamagePopUp(tickDamage, hit.transform);
        hit.health -= tickDamage; // Tick once on hit
        for (int i = 1; i < ticks; i++)
        {
            if (hit != null)
            {
                yield return(new WaitForSeconds(tickDuration));

                DamagePopUpManager.RequestDamagePopUp(tickDamage, hit.transform);
                hit.health -= tickDamage;
            }
        }
    }
    protected override IEnumerator TakeAoeDamage(Character hit)
    {
        while (charactersInAreaList.Contains(hit))
        {
            if (hit != null)
            {
                hit.health -= tickDamage;                                           // This means DMG WITHOUT ARMOR and No iFrames!
                DamagePopUpManager.RequestDamagePopUp(tickDamage, hit.transform);
                hit.RequestGotHitSound();
                yield return(new WaitForSeconds(tickDuration));

                Debug.Log("Character took dmg from AOE");
            }
        }
    }
Пример #9
0
 IEnumerator SelfHealCo()
 {
     if (canHeal == true)
     {
         if (currentHealth < maxHealth)
         {
             if (currentHealth + selfHealAmount > maxHealth)
             {
                 GetComponent <Enemy>().health = maxHealth;
             }
             GetComponent <Enemy>().health += selfHealAmount;
             DamagePopUpManager.RequestHealPopUp(selfHealAmount, this.transform);
         }
         yield return(new WaitForSeconds(0));
     }
     canHeal = false;
 }
Пример #10
0
    public override void Trigger()
    {
        if (target == null)
        {
            return;
        }

        particleLight.SetActive(true);
        var e = particles.emission;

        e.enabled = true;

        if (stacks < maxStacks)
        {
            for (int i = 0; i < timers.Length; i++)
            {
                if (timers[i] <= 0)
                {
                    timers[i] = duration;
                    break;
                }
            }

            target.health -= poisonDmg;
            DamagePopUpManager.RequestDamagePopUp(poisonDmg, false, GetComponentInParent <Transform>());

            if (target.renderer.color != colorChange)
            {
                target.renderer.color = colorChange;
            }
        }

        if (stacks > 0)
        {
            this.enabled = true;
        }
    }
Пример #11
0
 void Awake()
 {
     instance = this;
 }