using System; using System.Collections; using System.Linq; using CodeStage.AntiCheat.ObscuredTypes; using UnityEngine; using Random = UnityEngine.Random; public class SelectFairyBase : ProjectileBase { public eCC m_Status; public GameObject[] gos; // 0 요정, 1 cc 이펙트 public float CCTime = 3f; bool MobLoad; public override void Set(ProjectileData _data) { base.Set(_data); StartCoroutine(Co_Update()); } IEnumerator Co_Update() { float delay = CCTime; ObscuredInt FairyCount = 1; FairyCount.RandomizeCryptoKey(); while (true) { gos[1].SetActive(false); gos[0].transform.position = gos[1].transform.position = MyValue.MyPC.Get_Center_position() + Random.insideUnitSphere * 1f + Vector3.up; yield return new WaitForSeconds(delay); if (MobLoad) { MobLoad = false; yield return new WaitForSeconds(0.1f); } if (FairyCount == 1) { switch (m_Status) { case eCC.Freeze: FairyCount = Get_FairyCount(eEffect.Select_FrostFairy2); break; case eCC.KnockedAirborne: FairyCount = Get_FairyCount(eEffect.Select_WindFairy2); break; case eCC.KnockBack: FairyCount = Get_FairyCount(eEffect.Select_HikikomoriFairy2); break; } if (FairyCount > 1) FairyCount.RandomizeCryptoKey(); } gos[1].SetActive(true); if (FairyCount == 1) { var mob = ActorInfo.Ins.Get_Nearest_EnemyActor_orNull(m_ProjectTileData.shooter.IsEnemy(), transform.position); if (mob != null && !mob.IsDead()) Set_CC(mob); } else { for (int i = 0; i < FairyCount; i++) { var mobs = Get_Enemies(); mobs = mobs.OrderBy(o => Guid.NewGuid()).ToList(); if (mobs.Count > i) Set_CC(mobs[i]); } } yield return new WaitForSeconds(1f); delay = CCTime - 1f; } } void Set_CC(Actor _actor) { switch (m_Status) { case eCC.Freeze: _actor.Freeze(2f); break; case eCC.KnockedAirborne: _actor.KnockedAirborne(1f); break; case eCC.KnockBack: _actor.KnockBack(0.75f); break; } } }