Setup empowered action as a Forge ability

This commit is contained in:
2026-03-10 09:22:39 +01:00
parent 9d612682ec
commit 14d29d68bb
10 changed files with 168 additions and 9 deletions

View File

@@ -0,0 +1,56 @@
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
}
}