IEnumerator freezeDuration() { //sfx, vfx audioz.freezeSFX.Play(); movementSpd.x *= 0.7f; dirAttkChargeSpd[0] *= 0.7f; yield return(new WaitForSeconds(3)); movementSpd.x /= 0.7f; dirAttkChargeSpd[0] /= 0.7f; debuff = Enemy.BuffMode.none; //cancels after duration }
public void triggerBuff(Enemy.BuffMode b) { if (currBuffProcess != null) { StopCoroutine(currBuffProcess); } debuff = b; GameObject explosionPrefab; bool parentToOther = false; switch (b) { case Enemy.BuffMode.burn: explosionPrefab = prefabHolder.palletExplosionRed; parentToOther = true; currBuffProcess = burnDuration(); StartCoroutine(currBuffProcess); break; case Enemy.BuffMode.freeze: explosionPrefab = prefabHolder.palletExplosionBlue; parentToOther = true; currBuffProcess = freezeDuration(); StartCoroutine(currBuffProcess); break; default: Debug.Log("buff case not recognized"); explosionPrefab = null; break; } GameObject effect = (explosionPrefab != null) ? Instantiate(explosionPrefab, transform.position, transform.rotation) : null; if (parentToOther) { effect.transform.parent = transform; } }