using Gamesmiths.Forge.Abilities; using Gamesmiths.Forge.Effects; using Gamesmiths.Forge.Godot.Resources; using Gamesmiths.Forge.Godot.Resources.Abilities; using Godot; namespace Movementtests.forge.abilities; public class InstantEndBehavior(ForgeEffectData? effectData) : IAbilityBehavior { public void OnStarted(AbilityBehaviorContext context) { if (effectData != null) { var effect = new Effect(effectData.GetEffectData(), new EffectOwnership(context.Owner, context.Owner)); context.Owner.EffectsManager.ApplyEffect(effect); } context.AbilityHandle.CommitAbility(); context.InstanceHandle.End(); } public void OnEnded(AbilityBehaviorContext context) {} } [Tool] [GlobalClass] public partial class ForgeInstantEndBehavior : ForgeAbilityBehavior { [Export] public ForgeEffectData? OptionalEffectData { get; set; } public override IAbilityBehavior GetBehavior() => new InstantEndBehavior(OptionalEffectData); }