fixed a few issues
This commit is contained in:
35
forge/abilities/ForgeManualCancelHitBehavior.cs
Normal file
35
forge/abilities/ForgeManualCancelHitBehavior.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
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 ManualCancelHitBehavior(ForgeEffectData? damage) : IAbilityBehavior
|
||||
{
|
||||
public void OnStarted(AbilityBehaviorContext context)
|
||||
{
|
||||
if (context.Target == null || damage == null) return;
|
||||
|
||||
var sourceLocation = (context.Source as Node3D)?.GlobalPosition ?? Vector3.Zero;
|
||||
var targetLocation = (context.Target as Node3D)?.GlobalPosition ?? Vector3.Zero;
|
||||
|
||||
var magnitude = context.Magnitude == 0 ? 1 : context.Magnitude;
|
||||
var effect = new Effect(damage.GetEffectData(), new EffectOwnership(context.Owner, context.Owner));
|
||||
context.Target.EffectsManager.ApplyEffect(effect, new SimpleHitEffectData(sourceLocation, targetLocation, magnitude));
|
||||
}
|
||||
|
||||
public void OnEnded(AbilityBehaviorContext context)
|
||||
{
|
||||
context.AbilityHandle.CommitAbility();
|
||||
}
|
||||
}
|
||||
|
||||
[Tool]
|
||||
[GlobalClass]
|
||||
public partial class ForgeManualCancelHitBehavior : ForgeAbilityBehavior
|
||||
{
|
||||
[Export] public ForgeEffectData? DamageEffect { get; set; }
|
||||
public override IAbilityBehavior GetBehavior() => new ManualCancelHitBehavior(DamageEffect);
|
||||
}
|
||||
Reference in New Issue
Block a user