using Cielonos.MainGame.Buffs.Character; using Cielonos.MainGame.Characters; using Cielonos.MainGame.UI; using SLSUtilities.General; using UnityEngine; namespace Cielonos.MainGame.Inventory.Collections { public partial class VoidAnchor : SupportEquipmentBase { public override void OnPress() { if (functionSm.mainFunction.IsAvailable()) { CharacterBase enemy = BattleManager.EnemySm.GetNearestEnemy(50f); if (enemy != null) { Vector3 vector = (enemy.centerPosition - player.centerPosition).Flatten(); float distance = vector.magnitude - enemy.collisionSc.mainColliderRadius - 1f; distance = Mathf.Max(distance, 0f); Vector3 direction = vector.normalized; player.animationSc.SetupDash(direction, false, distance); } else { player.animationSc.SetupDash(player.transform.forward, false, -1f); } player.eventSm.onDashEnd.Add("VoidAnchor", new PrioritizedAction(() => GenerateArea("WeakArea"), 0 , 1)); functionSm.mainFunction.Execute(); PlayerCanvas.Instance.supportEquipmentsUIArea[this].UseOutlineAnimation(); } else { PlayerCanvas.Instance.supportEquipmentsUIArea[this].CanNotUseOutlineAnimation(); } } } public partial class VoidAnchor { private void GenerateArea(string vfxName) { NormalArea weakArea = vfxData.SpawnVFX(vfxName).GetComponentInChildren(); weakArea.Initialize(player, this, Fraction.Enemy) .SetAttackSubmodule(attackData[vfxName]) .SetTimeSubmodule(3f, 0.25f) .SetHitSubmodule() .SetForceSubmodule(5f); weakArea.hitSm.AddHitEvent((hitTarget, hitPosition) => { new Weak(3).Apply(hitTarget);}); } } }