made explosion forge compliant
This commit is contained in:
@@ -22,9 +22,9 @@ public partial class ForgeEntityNode : Node3D, IForgeEntity
|
|||||||
public override void _Notification(int what) => this.Notify(what);
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
[Dependency]
|
[Dependency]
|
||||||
public TagsManager TagsManager => this.DependOn<TagsManager>();
|
public TagsManager TagsManager => this.DependOn(() => ForgeManagers.Instance.TagsManager);
|
||||||
[Dependency]
|
[Dependency]
|
||||||
public CuesManager CuesManager => this.DependOn<CuesManager>();
|
public CuesManager CuesManager => this.DependOn(() => ForgeManagers.Instance.CuesManager);
|
||||||
|
|
||||||
[Export]
|
[Export]
|
||||||
public ForgeTagContainer? BaseTags { get; set; }
|
public ForgeTagContainer? BaseTags { get; set; }
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class ExplodingSwordBehavior(PackedScene explosion, float radius) : IAbil
|
|||||||
}
|
}
|
||||||
explo.Radius = radius;
|
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);
|
explo.CallDeferred(Node3D.MethodName.SetGlobalPosition, owner.GlobalPosition);
|
||||||
|
|
||||||
context.AbilityHandle.CommitAbility();
|
context.AbilityHandle.CommitAbility();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ using Godot;
|
|||||||
|
|
||||||
namespace Movementtests.forge.abilities;
|
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
|
public class SimpleHitBehavior(ForgeEffectData? damage) : IAbilityBehavior
|
||||||
{
|
{
|
||||||
@@ -17,8 +17,9 @@ public class SimpleHitBehavior(ForgeEffectData? damage) : IAbilityBehavior
|
|||||||
var sourceLocation = (context.Source as Node3D)?.GlobalPosition ?? Vector3.Zero;
|
var sourceLocation = (context.Source as Node3D)?.GlobalPosition ?? Vector3.Zero;
|
||||||
var targetLocation = (context.Target 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));
|
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();
|
// context.InstanceHandle.End();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ namespace Movementtests.scenes.enemies;
|
|||||||
public class MetaAttributeSet : AttributeSet
|
public class MetaAttributeSet : AttributeSet
|
||||||
{
|
{
|
||||||
public EntityAttribute IncomingDamage { get; private set; }
|
public EntityAttribute IncomingDamage { get; private set; }
|
||||||
|
public EntityAttribute Level { get; private set; }
|
||||||
|
|
||||||
public MetaAttributeSet()
|
public MetaAttributeSet()
|
||||||
{
|
{
|
||||||
IncomingDamage = InitializeAttribute(nameof(IncomingDamage), 0, 0, 1000, channels: 4);
|
IncomingDamage = InitializeAttribute(nameof(IncomingDamage), 0, 0, 1000, channels: 4);
|
||||||
|
Level = InitializeAttribute(nameof(Level), 1, 1, 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,18 +2,8 @@ namespace Movementtests.tools.calculators;
|
|||||||
|
|
||||||
public enum DamageType
|
public enum DamageType
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Physical damage.
|
|
||||||
/// </summary>
|
|
||||||
Physical = 0,
|
Physical = 0,
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Magical damage.
|
|
||||||
/// </summary>
|
|
||||||
Magical = 1,
|
Magical = 1,
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Elemental damage.
|
|
||||||
/// </summary>
|
|
||||||
Elemental = 2,
|
Elemental = 2,
|
||||||
|
Explosive = 3,
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,7 @@ using Gamesmiths.Forge.Godot.Resources;
|
|||||||
using Gamesmiths.Forge.Godot.Resources.Calculators;
|
using Gamesmiths.Forge.Godot.Resources.Calculators;
|
||||||
using Gamesmiths.Forge.Tags;
|
using Gamesmiths.Forge.Tags;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
using Movementtests.forge.abilities;
|
||||||
|
|
||||||
namespace Movementtests.tools.calculators;
|
namespace Movementtests.tools.calculators;
|
||||||
|
|
||||||
@@ -64,9 +65,9 @@ public class DamageExecution : CustomExecution
|
|||||||
return [.. results];
|
return [.. results];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (effectEvaluatedData?.TryGetContextData(out float multiplier) == true)
|
if (effectEvaluatedData?.TryGetContextData(out SimpleHitEffectData? hitEffectData) == true)
|
||||||
{
|
{
|
||||||
targetIncomingDamage *= multiplier;
|
targetIncomingDamage *= hitEffectData.Magnitude;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply health reduction to target if attribute exists
|
// Apply health reduction to target if attribute exists
|
||||||
|
|||||||
113
forge/resources/ability_datas/explosion_hit.tres
Normal file
113
forge/resources/ability_datas/explosion_hit.tres
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
[gd_resource type="Resource" script_class="ForgeAbilityData" format=3 uid="uid://nns16d5uhtl8"]
|
||||||
|
|
||||||
|
[ext_resource type="Resource" uid="uid://bpovqvlqv5bs5" path="res://forge/resources/effect_components/damageable.tres" id="1_w36j6"]
|
||||||
|
[ext_resource type="Resource" uid="uid://sn6kndc6ukic" path="res://forge/resources/tag_containers/on_damage_dealt.tres" id="2_3ma4g"]
|
||||||
|
[ext_resource type="Resource" uid="uid://5tr54q0rdpho" path="res://forge/resources/tag_containers/on_damage_taken.tres" id="3_kyfqu"]
|
||||||
|
[ext_resource type="Script" uid="uid://cfx62w40nd84v" path="res://forge/calculators/ForgeDamageExecution.cs" id="4_xfamx"]
|
||||||
|
[ext_resource type="Script" uid="uid://b44cse62qru7j" path="res://scenes/components/knockback/RKnockback.cs" id="5_tw4gc"]
|
||||||
|
[ext_resource type="Resource" uid="uid://bhn27s8ne0uyg" path="res://forge/resources/tag_containers/on_knockback_dealt.tres" id="6_nq3a0"]
|
||||||
|
[ext_resource type="Resource" uid="uid://bkr6uu57wm3o3" path="res://forge/resources/tag_containers/on_knockback_received.tres" id="7_3utx7"]
|
||||||
|
[ext_resource type="Resource" uid="uid://45l7vnfs72b" path="res://forge/resources/tag_containers/knockbackable_tag.tres" id="8_7hfxb"]
|
||||||
|
[ext_resource type="Script" uid="uid://diondfg5xp78h" path="res://forge/calculators/ForgeKnockbackExecution.cs" id="9_lysxe"]
|
||||||
|
[ext_resource type="Script" uid="uid://1hgogislo1l6" path="res://addons/forge/resources/magnitudes/ForgeScalableInt.cs" id="10_sd7ih"]
|
||||||
|
[ext_resource type="Script" uid="uid://cn3b4ya15fg7e" path="res://addons/forge/resources/magnitudes/ForgeScalableFloat.cs" id="11_bs6rs"]
|
||||||
|
[ext_resource type="Script" uid="uid://bdfcavbjyhxxa" path="res://addons/forge/resources/ForgeModifier.cs" id="12_a6jts"]
|
||||||
|
[ext_resource type="Script" uid="uid://b83hf13nj37k3" path="res://addons/forge/resources/ForgeEffectData.cs" id="13_c85am"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c2akxlg7tdb67" path="res://assets/ui/IconGodotNode/node/icon_projectile.png" id="14_ow2i8"]
|
||||||
|
[ext_resource type="Script" uid="uid://n6efm5o4uxvr" path="res://forge/abilities/ForgeSimpleHitBehavior.cs" id="15_ki7ct"]
|
||||||
|
[ext_resource type="Script" uid="uid://dhxfbxh54pyxp" path="res://addons/forge/resources/abilities/ForgeAbilityData.cs" id="16_hhyju"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_vy8wr"]
|
||||||
|
script = ExtResource("4_xfamx")
|
||||||
|
DamageType = 3
|
||||||
|
DamageDealerEventTags = ExtResource("2_3ma4g")
|
||||||
|
DamageReceiverEventTags = ExtResource("3_kyfqu")
|
||||||
|
metadata/_custom_type_script = "uid://cfx62w40nd84v"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ndb8p"]
|
||||||
|
script = ExtResource("5_tw4gc")
|
||||||
|
Modifier = 100.0
|
||||||
|
metadata/_custom_type_script = "uid://b44cse62qru7j"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_dy671"]
|
||||||
|
script = ExtResource("9_lysxe")
|
||||||
|
KnockbackableTag = ExtResource("8_7hfxb")
|
||||||
|
Knockback = SubResource("Resource_ndb8p")
|
||||||
|
KnockbackDealerEventTags = ExtResource("6_nq3a0")
|
||||||
|
KnockbackReceiverEventTags = ExtResource("7_3utx7")
|
||||||
|
metadata/_custom_type_script = "uid://diondfg5xp78h"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_i0sj3"]
|
||||||
|
script = ExtResource("10_sd7ih")
|
||||||
|
BaseValue = 1
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_1mvp7"]
|
||||||
|
script = ExtResource("11_bs6rs")
|
||||||
|
BaseValue = 1.0
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_jxdlf"]
|
||||||
|
script = ExtResource("11_bs6rs")
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_rslib"]
|
||||||
|
script = ExtResource("11_bs6rs")
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_3l3du"]
|
||||||
|
script = ExtResource("11_bs6rs")
|
||||||
|
BaseValue = 1.0
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_qqpg8"]
|
||||||
|
script = ExtResource("11_bs6rs")
|
||||||
|
BaseValue = 10.0
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_igmn0"]
|
||||||
|
script = ExtResource("11_bs6rs")
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_acqnn"]
|
||||||
|
script = ExtResource("11_bs6rs")
|
||||||
|
BaseValue = 50.0
|
||||||
|
metadata/_custom_type_script = "uid://cn3b4ya15fg7e"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_xwtie"]
|
||||||
|
script = ExtResource("12_a6jts")
|
||||||
|
Attribute = "MetaAttributeSet.IncomingDamage"
|
||||||
|
CalculationType = 1
|
||||||
|
ScalableFloat = SubResource("Resource_acqnn")
|
||||||
|
CapturedAttribute = "MetaAttributeSet.Level"
|
||||||
|
Coefficient = SubResource("Resource_3l3du")
|
||||||
|
PreMultiplyAdditiveValue = SubResource("Resource_igmn0")
|
||||||
|
PostMultiplyAdditiveValue = SubResource("Resource_qqpg8")
|
||||||
|
CalculatorCoefficient = SubResource("Resource_1mvp7")
|
||||||
|
CalculatorPreMultiplyAdditiveValue = SubResource("Resource_rslib")
|
||||||
|
CalculatorPostMultiplyAdditiveValue = SubResource("Resource_jxdlf")
|
||||||
|
metadata/_custom_type_script = "uid://bdfcavbjyhxxa"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ikb7l"]
|
||||||
|
script = ExtResource("10_sd7ih")
|
||||||
|
BaseValue = 1
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_jdvg8"]
|
||||||
|
script = ExtResource("13_c85am")
|
||||||
|
Name = "Explosion hit"
|
||||||
|
Modifiers = Array[Object]([SubResource("Resource_xwtie")])
|
||||||
|
Components = Array[Object]([ExtResource("1_w36j6")])
|
||||||
|
Executions = Array[Object]([SubResource("Resource_vy8wr"), SubResource("Resource_dy671")])
|
||||||
|
StackLimit = SubResource("Resource_ikb7l")
|
||||||
|
InitialStack = SubResource("Resource_i0sj3")
|
||||||
|
Cues = []
|
||||||
|
metadata/_custom_type_script = "uid://b83hf13nj37k3"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ba5lh"]
|
||||||
|
script = ExtResource("15_ki7ct")
|
||||||
|
DamageEffect = SubResource("Resource_jdvg8")
|
||||||
|
Name = "Explostion hit"
|
||||||
|
Description = "Called by explosion scene"
|
||||||
|
Icon = ExtResource("14_ow2i8")
|
||||||
|
metadata/_custom_type_script = "uid://n6efm5o4uxvr"
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("16_hhyju")
|
||||||
|
Name = "Explosion "
|
||||||
|
InstancingPolicy = 1
|
||||||
|
CooldownEffects = []
|
||||||
|
AbilityBehavior = SubResource("Resource_ba5lh")
|
||||||
|
metadata/_custom_type_script = "uid://dhxfbxh54pyxp"
|
||||||
@@ -1,22 +1,42 @@
|
|||||||
using Godot;
|
using Godot;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using Chickensoft.AutoInject;
|
||||||
|
using Chickensoft.Introspection;
|
||||||
|
using Gamesmiths.Forge.Core;
|
||||||
|
using Gamesmiths.Forge.Cues;
|
||||||
|
using Gamesmiths.Forge.Tags;
|
||||||
using Movementtests.interfaces;
|
using Movementtests.interfaces;
|
||||||
|
using Movementtests.tools;
|
||||||
|
|
||||||
[GlobalClass, Icon("res://assets/ui/IconGodotNode/node_3D/icon_projectile.png")]
|
[GlobalClass, Icon("res://assets/ui/IconGodotNode/node_3D/icon_projectile.png"), Meta(typeof(IAutoNode))]
|
||||||
public partial class Explosion : Area3D, IDamageDealer
|
public partial class Explosion : Area3D, IDamageDealer, IProvide<CuesManager>
|
||||||
{
|
{
|
||||||
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
|
[Dependency]
|
||||||
|
public CuesManager CuesManager => this.DependOn<CuesManager>();
|
||||||
|
CuesManager IProvide<CuesManager>.Value() => CuesManager;
|
||||||
|
|
||||||
[Export] public RDamage RDamage { get; set; }
|
[Export] public RDamage RDamage { get; set; }
|
||||||
[Export] public float Radius { get; set;}
|
[Export] public float Radius { get; set; } = 1.0f;
|
||||||
[Export] public float ExplosionTime { get; set; } = 0.2f;
|
[Export] public float ExplosionTime { get; set; } = 0.2f;
|
||||||
|
|
||||||
public override void _Ready()
|
[Node("CollisionShape3D")] public required CollisionShape3D CollisionShape { get; set; }
|
||||||
{
|
[Node("MeshInstance3D")] public required MeshInstance3D CollisionMesh { get; set; }
|
||||||
var sphereShape = GetNode<CollisionShape3D>("CollisionShape3D").Shape as SphereShape3D;
|
[Node("ForgeEntityNode")] public required ForgeEntityNode ForgeEntityNode { get; set; }
|
||||||
sphereShape!.Radius = Radius;
|
|
||||||
var sphereMesh = GetNode<MeshInstance3D>("MeshInstance3D").Mesh as SphereMesh;
|
|
||||||
sphereMesh!.Radius = Radius;
|
|
||||||
sphereMesh!.Height = Radius*2f;
|
|
||||||
|
|
||||||
|
public void OnReady()
|
||||||
|
{
|
||||||
|
if (CollisionShape.Shape is SphereShape3D sphereShape) sphereShape.Radius = Radius;
|
||||||
|
if (CollisionMesh.Mesh is not SphereMesh sphereMesh) return;
|
||||||
|
sphereMesh.Radius = Radius;
|
||||||
|
sphereMesh.Height = Radius * 2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnResolved()
|
||||||
|
{
|
||||||
|
this.Provide();
|
||||||
GetTree().CreateTimer(ExplosionTime).Timeout += TriggerExplosion;
|
GetTree().CreateTimer(ExplosionTime).Timeout += TriggerExplosion;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,12 +45,10 @@ public partial class Explosion : Area3D, IDamageDealer
|
|||||||
var bodies = GetOverlappingBodies();
|
var bodies = GetOverlappingBodies();
|
||||||
foreach (var body in bodies)
|
foreach (var body in bodies)
|
||||||
{
|
{
|
||||||
if (body is IDamageable damageable)
|
if (body is not IForgeEntity target) continue;
|
||||||
damageable.TakeDamage(new DamageRecord(GlobalPosition, RDamage));
|
foreach (var ability in ForgeEntityNode.Abilities.GrantedAbilities.Where(ability => ability.CanActivate(out _, target)))
|
||||||
if (body is IStunnable stunnable)
|
ability.Activate(out _, target, RDamage.DamageDealt);
|
||||||
stunnable.Stun();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QueueFree();
|
QueueFree();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,15 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cnlu64l7oxvv3" path="res://scenes/explosion/Explosion.cs" id="1_82hkh"]
|
[ext_resource type="Script" uid="uid://cnlu64l7oxvv3" path="res://scenes/explosion/Explosion.cs" id="1_82hkh"]
|
||||||
[ext_resource type="Script" uid="uid://jitubgv6judn" path="res://scenes/components/damage/RDamage.cs" id="2_hys74"]
|
[ext_resource type="Script" uid="uid://jitubgv6judn" path="res://scenes/components/damage/RDamage.cs" id="2_hys74"]
|
||||||
|
[ext_resource type="Script" uid="uid://rpcbb54q4atx" path="res://forge/ForgeEntityNode.cs" id="3_wikc1"]
|
||||||
|
[ext_resource type="Script" uid="uid://dps0oef50noil" path="res://addons/forge/nodes/ForgeEffect.cs" id="4_f5lqq"]
|
||||||
|
[ext_resource type="Resource" uid="uid://nns16d5uhtl8" path="res://forge/resources/ability_datas/explosion_hit.tres" id="5_nphml"]
|
||||||
|
[ext_resource type="Script" uid="uid://1hgogislo1l6" path="res://addons/forge/resources/magnitudes/ForgeScalableInt.cs" id="5_nqbbv"]
|
||||||
|
[ext_resource type="Script" uid="uid://b83hf13nj37k3" path="res://addons/forge/resources/ForgeEffectData.cs" id="8_qslwq"]
|
||||||
|
[ext_resource type="Script" uid="uid://cxihb42t2mfqi" path="res://addons/forge/nodes/ForgeAttributeSet.cs" id="10_1ve7p"]
|
||||||
|
[ext_resource type="Script" uid="uid://72kj3n4lm1em" path="res://addons/forge/resources/components/ForgeGrantAbilityConfig.cs" id="11_l63t1"]
|
||||||
|
[ext_resource type="Script" uid="uid://ccovd5i0wr3kk" path="res://addons/forge/editor/attributes/AttributeValues.cs" id="11_nqbbv"]
|
||||||
|
[ext_resource type="Script" uid="uid://b3wo2uge4ddnj" path="res://addons/forge/resources/components/GrantAbility.cs" id="12_e6gfx"]
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_ffdh3"]
|
[sub_resource type="Resource" id="Resource_ffdh3"]
|
||||||
script = ExtResource("2_hys74")
|
script = ExtResource("2_hys74")
|
||||||
@@ -19,6 +28,40 @@ transparency = 1
|
|||||||
cull_mode = 2
|
cull_mode = 2
|
||||||
albedo_color = Color(0.9607843, 0.27058825, 0, 0.7176471)
|
albedo_color = Color(0.9607843, 0.27058825, 0, 0.7176471)
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_5c2oj"]
|
||||||
|
script = ExtResource("5_nqbbv")
|
||||||
|
BaseValue = 1
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_17s7w"]
|
||||||
|
script = ExtResource("11_l63t1")
|
||||||
|
AbilityData = ExtResource("5_nphml")
|
||||||
|
AbilityLevel = SubResource("Resource_5c2oj")
|
||||||
|
metadata/_custom_type_script = "uid://72kj3n4lm1em"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_pmtlp"]
|
||||||
|
script = ExtResource("12_e6gfx")
|
||||||
|
GrantAbilityConfigs = [SubResource("Resource_17s7w")]
|
||||||
|
metadata/_custom_type_script = "uid://b3wo2uge4ddnj"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_pvvi5"]
|
||||||
|
script = ExtResource("5_nqbbv")
|
||||||
|
BaseValue = 1
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_4lkfq"]
|
||||||
|
script = ExtResource("5_nqbbv")
|
||||||
|
BaseValue = 1
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_pjqsn"]
|
||||||
|
script = ExtResource("8_qslwq")
|
||||||
|
Name = "Grant Explosion Ability"
|
||||||
|
Modifiers = []
|
||||||
|
Components = Array[Object]([SubResource("Resource_pmtlp")])
|
||||||
|
Executions = []
|
||||||
|
StackLimit = SubResource("Resource_4lkfq")
|
||||||
|
InitialStack = SubResource("Resource_pvvi5")
|
||||||
|
Cues = []
|
||||||
|
metadata/_custom_type_script = "uid://b83hf13nj37k3"
|
||||||
|
|
||||||
[node name="Explosion" type="Area3D" unique_id=1876014452]
|
[node name="Explosion" type="Area3D" unique_id=1876014452]
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 16
|
collision_mask = 16
|
||||||
@@ -32,3 +75,23 @@ shape = SubResource("SphereShape3D_82hkh")
|
|||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1864409522]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1864409522]
|
||||||
mesh = SubResource("SphereMesh_82hkh")
|
mesh = SubResource("SphereMesh_82hkh")
|
||||||
surface_material_override/0 = SubResource("StandardMaterial3D_hys74")
|
surface_material_override/0 = SubResource("StandardMaterial3D_hys74")
|
||||||
|
|
||||||
|
[node name="ForgeEntityNode" type="Node3D" parent="." unique_id=806020391]
|
||||||
|
script = ExtResource("3_wikc1")
|
||||||
|
metadata/_custom_type_script = "uid://rpcbb54q4atx"
|
||||||
|
|
||||||
|
[node name="ForgeEffect" type="Node" parent="ForgeEntityNode" unique_id=2068515708]
|
||||||
|
script = ExtResource("4_f5lqq")
|
||||||
|
EffectData = SubResource("Resource_pjqsn")
|
||||||
|
metadata/_custom_type_script = "uid://dps0oef50noil"
|
||||||
|
|
||||||
|
[node name="ForgeAttributeSet" type="Node" parent="ForgeEntityNode" unique_id=813420941]
|
||||||
|
script = ExtResource("10_1ve7p")
|
||||||
|
AttributeSetClass = "MetaAttributeSet"
|
||||||
|
InitialAttributeValues = Dictionary[String, ExtResource("11_nqbbv")]({
|
||||||
|
"IncomingDamage": Object(RefCounted,"script":ExtResource("11_nqbbv"),"Default":0,"Min":0,"Max":1000)
|
||||||
|
,
|
||||||
|
"Level": Object(RefCounted,"script":ExtResource("11_nqbbv"),"Default":1,"Min":1,"Max":1000)
|
||||||
|
|
||||||
|
})
|
||||||
|
metadata/_custom_type_script = "uid://cxihb42t2mfqi"
|
||||||
|
|||||||
@@ -2019,7 +2019,7 @@ public partial class PlayerController : CharacterBody3D, IForgeEntity, ICueHandl
|
|||||||
explosion.Radius = distanceTraveled;
|
explosion.Radius = distanceTraveled;
|
||||||
explosion.RDamage.DamageDealt = distanceTraveled;
|
explosion.RDamage.DamageDealt = distanceTraveled;
|
||||||
|
|
||||||
GetTree().GetRoot().AddChild(explosion);
|
GetTree().GetCurrentScene().AddChild(explosion);
|
||||||
explosion.GlobalPosition = GlobalPosition;
|
explosion.GlobalPosition = GlobalPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user