made explosion forge compliant

This commit is contained in:
2026-05-05 10:55:12 +02:00
parent a139990390
commit 33f55d04f3
10 changed files with 223 additions and 35 deletions

View File

@@ -31,7 +31,7 @@ public class ExplodingSwordBehavior(PackedScene explosion, float radius) : IAbil
}
explo.Radius = radius;
owner.GetTree().GetRoot().CallDeferred(Node.MethodName.AddChild, explo);
owner.GetTree().GetCurrentScene().CallDeferred(Node.MethodName.AddChild, explo);
explo.CallDeferred(Node3D.MethodName.SetGlobalPosition, owner.GlobalPosition);
context.AbilityHandle.CommitAbility();

View File

@@ -6,7 +6,7 @@ using Godot;
namespace Movementtests.forge.abilities;
public record SimpleHitEffectData(Vector3 SourceLocation, Vector3 TargetLocation);
public record SimpleHitEffectData(Vector3 SourceLocation, Vector3 TargetLocation, float Magnitude = 1);
public class SimpleHitBehavior(ForgeEffectData? damage) : IAbilityBehavior
{
@@ -16,9 +16,10 @@ public class SimpleHitBehavior(ForgeEffectData? damage) : IAbilityBehavior
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));
context.Target.EffectsManager.ApplyEffect(effect, new SimpleHitEffectData(sourceLocation, targetLocation, magnitude));
// context.InstanceHandle.End();
}