Files
Cielonos/Assets/Scripts/MainGame/Items/SupportEquipments/VoidAnchor.cs
SoulliesOfficial 50ee502684 完善
2026-02-13 09:22:11 -05:00

57 lines
2.1 KiB
C#

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<NormalArea>();
weakArea.Initialize<NormalArea>(player, this, Fraction.Enemy)
.SetAttackSubmodule<NormalArea>(attackData[vfxName])
.SetTimeSubmodule<NormalArea>(3f, 0.25f)
.SetHitSubmodule<NormalArea>()
.SetForceSubmodule<NormalArea>(5f);
weakArea.hitSm.AddHitEvent((hitTarget, hitPosition) => { new Weak(3).Apply(hitTarget);});
}
}
}