Project_WL/Assets/Script/Character/Projectile/Skill/Skill_Blizzard.cs

58 lines
1.8 KiB
C#

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_DamageInfo());
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);
}
}