2026-07-18 03:16:20 -04:00
|
|
|
using Cielonos.MainGame.Characters;
|
2026-07-26 09:42:03 -04:00
|
|
|
using Cielonos.MainGame.Effects.Feedback;
|
|
|
|
|
using SLSUtilities.Feedback;
|
|
|
|
|
using SLSUtilities.FunctionalAnimation;
|
2026-07-18 03:16:20 -04:00
|
|
|
|
|
|
|
|
namespace Cielonos.MainGame.Inventory.Collections
|
|
|
|
|
{
|
|
|
|
|
public partial class FutureWand
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 播放轻攻击连段动画,并消耗轻攻击功能。
|
|
|
|
|
/// </summary>
|
|
|
|
|
private bool PlayNormalAttackL(CharacterBase target, string nextNodeName)
|
|
|
|
|
{
|
|
|
|
|
bool played = PlayTargetedAnimation("Attack" + nextNodeName, target, 5f);
|
|
|
|
|
if (played)
|
|
|
|
|
{
|
|
|
|
|
functionSm["LightAttack"].Execute();
|
|
|
|
|
}
|
|
|
|
|
return played;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool PlayCubicAttack(CharacterBase target)
|
|
|
|
|
{
|
|
|
|
|
bool played = PlayTargetedAnimation("GenerateCubicBolts", target, 5f);
|
|
|
|
|
if (played)
|
|
|
|
|
{
|
|
|
|
|
functionSm["CubicAttack"].Execute();
|
|
|
|
|
}
|
|
|
|
|
return played;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool PlayHoldAttackStart(CharacterBase target)
|
|
|
|
|
{
|
|
|
|
|
bool played = PlayTargetedAnimation("HoldAttackStart", target);
|
|
|
|
|
return played;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool PlayHoldAttackEnd()
|
|
|
|
|
{
|
|
|
|
|
return PlayTargetedAnimation("HoldAttackEnd");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool PlayReleaseSpinArea()
|
|
|
|
|
{
|
|
|
|
|
if (PlayTargetedAnimation("ReleaseSpinArea"))
|
|
|
|
|
{
|
|
|
|
|
functionSm["SpinArea"].Execute();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 播放重攻击连段动画,并消耗重攻击功能。
|
|
|
|
|
/// </summary>
|
|
|
|
|
private bool PlayNormalAttackR(CharacterBase target, string nextNodeName)
|
|
|
|
|
{
|
|
|
|
|
bool played = PlayTargetedAnimation("Attack" + nextNodeName, target, 5f);
|
|
|
|
|
if (played)
|
|
|
|
|
{
|
|
|
|
|
functionSm["HeavyAttack"].Execute();
|
|
|
|
|
}
|
|
|
|
|
return played;
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-26 09:42:03 -04:00
|
|
|
private bool PlayLightning(CharacterBase target, bool playStartupFeedback = false)
|
2026-07-18 03:16:20 -04:00
|
|
|
{
|
|
|
|
|
bool played = PlayTargetedAnimation("GenerateLightning", target);
|
|
|
|
|
if (played)
|
|
|
|
|
{
|
2026-07-26 09:42:03 -04:00
|
|
|
if (_hasLightningConcentrator && playStartupFeedback)
|
|
|
|
|
{
|
|
|
|
|
float duration = fullBodyFuncAnimSm.collection["GenerateLightning"]
|
|
|
|
|
.Interval(IntervalType.Startup).Duration * 2f;
|
|
|
|
|
player.feedbackSc.PlayFeedback("DisruptionStartup", runtimeFeedback =>
|
|
|
|
|
{
|
|
|
|
|
FeedbackClip timeScaleModifierClip = runtimeFeedback.Clip<TimeScaleModifierAction>("Time");
|
|
|
|
|
if (timeScaleModifierClip != null)
|
|
|
|
|
{
|
|
|
|
|
timeScaleModifierClip.duration = duration;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-18 03:16:20 -04:00
|
|
|
functionSm["Lightning"].Execute();
|
|
|
|
|
}
|
|
|
|
|
return played;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|