56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
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
|
|
}
|
|
} |