using Gamesmiths.Forge.Abilities; using Gamesmiths.Forge.Effects; using Gamesmiths.Forge.Effects.Components; using Gamesmiths.Forge.Effects.Duration; using Gamesmiths.Forge.Effects.Magnitudes; using Gamesmiths.Forge.Effects.Modifiers; using Gamesmiths.Forge.Tags; namespace Movementtests.forge.abilities; public class EmpoweredAction(TagsManager tagsManager) { public EffectData EmpoweredActionCostEffect = new( "Empowered Action Mana Cost", new DurationData(DurationType.Instant), new[] { new Modifier( "PlayerAttributeSet.Mana", ModifierOperation.FlatBonus, new ModifierMagnitude( MagnitudeCalculationType.ScalableFloat, new ScalableFloat(-20) ) ) }); public EffectData EmpoweredActionCooldown = new( "Empowered Action Cooldown", new DurationData( DurationType.HasDuration, new ModifierMagnitude( MagnitudeCalculationType.ScalableFloat, new ScalableFloat(1.0f))), effectComponents: new[] { new ModifierTagsEffectComponent( tagsManager.RequestTagContainer(new[] { "cooldown.empoweredAction" }) ) }); } public class EmpoweredActionBehavior : IAbilityBehavior { public void OnStarted(AbilityBehaviorContext context) { // Apply costs and cooldowns context.AbilityHandle.CommitAbility(); context.InstanceHandle.End(); } public void OnEnded(AbilityBehaviorContext context) { // Do any necessary cleanups } }