Files
Cielonos/Assets/Scripts/MainGame/Characters/Automata/Enemies/NexusCrab.cs
SoulliesOfficial ef7b479712 initial
2025-11-25 08:19:33 -05:00

58 lines
2.6 KiB
C#

using DG.Tweening;
using UnityEngine;
namespace Cielonos.MainGame.Characters
{
public class NexusCrab : Automata
{
protected override void Start()
{
base.Start();
RegisterFunctionsToAnimSc(SingleSwing, ThreeSwings_0, ThreeSwings_1, ThreeSwings_2,
ImpaleWave_Blast, ImpaleWave_Wave, JumpAttack_Blast);
}
private void SingleSwing() => GenerateSlash("SingleSwing");
private void ThreeSwings_0() => GenerateSlash("ThreeSwings_0");
private void ThreeSwings_1() => GenerateSlash("ThreeSwings_1");
private void ThreeSwings_2() => GenerateSlash("ThreeSwings_2");
private void ImpaleWave_Blast() => GenerateBlast("ImpaleWave_Blast", 4);
private void ImpaleWave_Wave() => GenerateWave("ImpaleWave_Wave");
private void JumpAttack_Blast() => GenerateBlast("JumpAttack_Blast", 24);
private void GenerateSlash(string vfxName)
{
NormalArea slash = vfxData.SpawnVFX(vfxName).GetComponentInChildren<NormalArea>();
slash.Initialize<NormalArea>(this, null, Fraction.Player)
.SetAttackSubmodule<NormalArea>(attackData["LightAttack"])
.SetTimeSubmodule<NormalArea>(1.5f)
.SetHitSubmodule<NormalArea>()
.SetForceSubmodule<NormalArea>(8f, true);
}
private void GenerateBlast(string vfxName, float force)
{
NormalArea slash = vfxData.SpawnVFX(vfxName).GetComponentInChildren<NormalArea>();
slash.Initialize<NormalArea>(this, null, Fraction.Player)
.SetAttackSubmodule<NormalArea>(attackData["LightAttack"])
.SetTimeSubmodule<NormalArea>(1.2f)
.SetHitSubmodule<NormalArea>()
.SetForceSubmodule<NormalArea>(force, true)
.SetReactionSubmodule<NormalArea>(false, false, false, true, true, false);
}
private void GenerateWave(string vfxName)
{
NormalArea slash = vfxData.SpawnVFX(vfxName).GetComponentInChildren<NormalArea>();
slash.Initialize<NormalArea>(this, null, Fraction.Player)
.SetAttackSubmodule<NormalArea>(attackData["LightAttack"])
.SetTimeSubmodule<NormalArea>(1.5f)
.SetHitSubmodule<NormalArea>()
.SetForceSubmodule<NormalArea>(16f, true)
.SetReactionSubmodule<NormalArea>(false, false, false, true, true, false);
slash.transform.DOLocalMoveZ(8f, 0.8f).From(0f).Play();
slash.transform.DOScale(1.5f, 0.8f).From(1f).Play();
}
}
}