using System.Collections; using System.Collections.Generic; using UnityEngine; public class Skill_Golem : ProjectileBase { [Header("소환수 프리팹")] public string prefab = "Bear"; [Header("소환수 유지 시간")] public float lifeTime = 30f; ProjectileData pd_meteor; public override void Set(ProjectileData _data) { base.Set(_data); if (DSUtil.CheckNull(pd_meteor)) { pd_meteor = new ProjectileData(); pd_meteor.shooter = _data.shooter; pd_meteor.eStartPos = eProjectileStartPos.Custom; pd_meteor.e_SkillExtraType = eSkillExtraType.Stun; pd_meteor.m_SkillListTableData = new SkillListTableData { e_SkillExtraType = pd_meteor.e_SkillExtraType, f_ExtraValue1 = Get_AwakenData(2, 1), // 스턴 시간 f_ExtraValue4 = 1f, // 스턴 확률 }; pd_meteor.m_skillTypeConfigTable = table_skilltypeconfig.Ins.Get_Data_orNull(pd_meteor.e_SkillExtraType); } pd_meteor.v3_StartPos = _data.shooter.Get_CenterPositionFoward(1f); m_LifeTime = _data.LifeTime = lifeTime + (IsStep(1) ? Get_AwakenData(1, 1) : 0f); if (IsStep(2)) { ProjectileInfo.Ins.Shoot_Projectile("Projectile_Meteor", pd_meteor, proj => { proj.Set_CheckersSize(0f); }); } ActorInfo.Ins.Get_Summon(prefab, _data.shooter.IsEnemy() ? eRole.EnemySummon : eRole.Summon, eSummon.Golem, actor => { var summon = actor as SummonActor; var dmg = (float)Get_DamageInfo(false, false).Damage; summon.Set(_data.shooter.IsEnemy(), _data.shooter, _data.LifeTime, dmg, dmg, 1); if (IsStep(3)) StartCoroutine(Co_Step3(summon)); else Off(); }); } IEnumerator Co_Step3(Actor summon) { InGameInfo.Ins.Show_Effect("Effect_Burn", summon, eEffectLocation.Bottom, m_LifeTime); var area = Get_AwakenData(3, 1); var delay = Get_AwakenData(3, 2); m_ProjecTileData.AddDmgPercent = Get_AwakenData(3, 3); while (m_LifeTime > 0f) { yield return new WaitForSeconds(delay); var enemies = Get_Enemies(summon.transform, area); enemies.ForEach(f => f.Get_Damage(summon.Get_DamageInfo(m_ProjecTileData))); m_LifeTime -= delay; } Off(); } }