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 SimpleHitBehavior(ForgeEffectData? damage) : IAbilityBehavior { public void OnStarted(AbilityBehaviorContext context) { if (context.Target == null || damage == null) return; var effect = new Effect(damage.GetEffectData(), new EffectOwnership(context.Owner, context.Owner)); context.Target.EffectsManager.ApplyEffect(effect); context.AbilityHandle.CommitAbility(); context.InstanceHandle.End(); } public void OnEnded(AbilityBehaviorContext context) {} } [Tool] [GlobalClass] public partial class ForgeSimpleHitBehavior : ForgeAbilityBehavior { [Export] public ForgeEffectData? DamageEffect { get; set; } public override IAbilityBehavior GetBehavior() => new SimpleHitBehavior(DamageEffect); }