using System.Collections; using UnityEngine; public class Skill_Blizzard : ProjectileBase { [Header("눈보라 지속 시간")] public float lifeTime = 5f; [Header("눈보라 효과 범위")] public float effectArea = 3f; [Header("눈보라 데미지 간격")] public float dmgDelay = 0.5f; public override void Set(ProjectileData _data) { if (!DSUtil.CheckNull(_data.target)) { _data.eStartPos = eProjectileStartPos.Custom; _data.v3_StartPos = _data.target.Get_position(); base.Set(_data); m_LifeTime = lifeTime + (IsStep(1) ? Get_AwakenData(1, 1) : 0f); transform.eulerAngles = Vector3.zero; StartCoroutine(Co_Update()); } else Off(); } IEnumerator Co_Update() { float area = effectArea + (IsStep(2) ? Get_AwakenData(2, 1) : 0f); bool step3 = IsStep(3); var step3_val1 = Get_AwakenData(3, 1); var step3_val2 = Get_AwakenData(3, 1); while (m_LifeTime > 0f) { yield return new WaitForSeconds(dmgDelay); m_LifeTime -= dmgDelay; var enemies = Get_Enemies(transform, area); for (int i = 0; i < enemies.Count; i++) { if (DSUtil.CheckNull(enemies[i])) continue; if (i >= enemies.Count) break; enemies[i].Get_Damage(Get_NewDamageInfo()); if (step3) { var ccData = enemies[i].Get_CCData(eCC.MOVSPD_Down); if (ccData.CCTime > 0f) ccData.CCDmg += step3_val1; ccData = enemies[i].Get_CCData(eCC.ATKSPD_Down); if (ccData.CCTime > 0f) ccData.CCDmg += step3_val2; } } } Off(true); } }