basic projectiles
This commit is contained in:
@@ -116,8 +116,6 @@ public partial class Enemy : CharacterBody3D,
|
||||
CMovement.RMovement = RMovement;
|
||||
CKnockback = GetNode<Node>("CKnockback") as IKnockbackable ?? throw new Exception("Knockback component not found");
|
||||
CKnockback.RKnockback = RKnockback;
|
||||
|
||||
// _hitAbilityHandle = Abilities.GrantAbilityPermanently(HitAbility.GetAbilityData(), 1, LevelComparison.None, this);
|
||||
}
|
||||
|
||||
public void OnResolved()
|
||||
@@ -126,20 +124,25 @@ public partial class Enemy : CharacterBody3D,
|
||||
HealthBarWrapper.ResourceBar.Init(healthAttribute);
|
||||
healthAttribute.OnValueChanged += OnHealthChanged;
|
||||
|
||||
Events.Subscribe(Tag.RequestTag(TagsManager, "events.combat.hit"),
|
||||
data => {GD.Print("Hit!");});
|
||||
// Events.Subscribe(Tag.RequestTag(TagsManager, "events.combat.hit"), data => {GD.Print("Hit!");});
|
||||
Events.Subscribe<DamageDone>(Tag.RequestTag(TagsManager, "events.combat.damage"), OnDamageReceived);
|
||||
Events.Subscribe<KnockbackDone>(Tag.RequestTag(TagsManager, "events.combat.knockback_received"), OnKnockbackReceived);
|
||||
Events.Subscribe(Tag.RequestTag(TagsManager, "events.combat.death"), OnDeath);
|
||||
Events.Subscribe(Tag.RequestTag(TagsManager, "events.enemy.request_projectile"), ProjectileTokenRequested);
|
||||
|
||||
GetTree().CreateTimer(3).Timeout += () => Events.Raise(new EventData
|
||||
}
|
||||
|
||||
private void ProjectileTokenRequested(EventData obj)
|
||||
{
|
||||
// TODO: replace with token manager
|
||||
Events.Raise(new EventData
|
||||
{
|
||||
EventTags = Tag.RequestTag(TagsManager, "events.enemy.launch_projectile").GetSingleTagContainer()!,
|
||||
Source = this,
|
||||
Target = Target as IForgeEntity
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void OnKnockbackReceived(EventData<KnockbackDone> data)
|
||||
{
|
||||
RegisterKnockback(new KnockbackRecord(data.Payload.knockbackDirection, data.EventMagnitude));
|
||||
|
||||
@@ -15,12 +15,18 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dbr7ioio158ew" path="res://scenes/components/movement/CGroundedMovement.tscn" id="10_d3cra"]
|
||||
[ext_resource type="Script" uid="uid://1hgogislo1l6" path="res://addons/forge/resources/magnitudes/ForgeScalableInt.cs" id="11_f6vvi"]
|
||||
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://scenes/components/movement/RMovement.cs" id="11_fi4yv"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhp6qunnwhncf" path="res://scenes/projectile/Projectile.tscn" id="12_5ac6t"]
|
||||
[ext_resource type="PackedScene" uid="uid://bctpe34ddamg5" path="res://scenes/components/knockback/CKnockback.tscn" id="12_7k8no"]
|
||||
[ext_resource type="Resource" uid="uid://ifeavnlps7hy" path="res://forge/resources/behaviors/exploding_sword.tres" id="12_f6vvi"]
|
||||
[ext_resource type="Texture2D" uid="uid://g0u88alm6hcb" path="res://assets/ui/IconGodotNode/node/icon_bullet.png" id="12_rlvdp"]
|
||||
[ext_resource type="Script" uid="uid://72kj3n4lm1em" path="res://addons/forge/resources/components/ForgeGrantAbilityConfig.cs" id="12_ssnfc"]
|
||||
[ext_resource type="Script" uid="uid://b3wo2uge4ddnj" path="res://addons/forge/resources/components/GrantAbility.cs" id="13_5ac6t"]
|
||||
[ext_resource type="Script" uid="uid://dxtjifb8hv8k4" path="res://forge/abilities/ForgeSpawnProjectileBehavior.cs" id="13_rlvdp"]
|
||||
[ext_resource type="Resource" uid="uid://bkr1xfokymvp4" path="res://forge/resources/tag_containers/on_enemy_lauch_project.tres" id="13_ssnfc"]
|
||||
[ext_resource type="Script" uid="uid://b83hf13nj37k3" path="res://addons/forge/resources/ForgeEffectData.cs" id="14_rlvdp"]
|
||||
[ext_resource type="Script" uid="uid://cw525n4mjqgw0" path="res://addons/forge/resources/ForgeTagContainer.cs" id="17_xabdf"]
|
||||
[ext_resource type="Script" uid="uid://br7ut4lbau66w" path="res://forge/calculators/ForgeRaiseEventTagExecution.cs" id="18_ufku3"]
|
||||
[ext_resource type="Script" uid="uid://cn3b4ya15fg7e" path="res://addons/forge/resources/magnitudes/ForgeScalableFloat.cs" id="19_hgi6f"]
|
||||
[ext_resource type="Script" uid="uid://cl5hudinl1rex" path="res://forge/abilities/ForgeEffectApplicationBehavior.cs" id="21_17f1o"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_x50ya"]
|
||||
script = ExtResource("8_ti0v2")
|
||||
@@ -44,11 +50,18 @@ AbilityData = ExtResource("2_nbf6l")
|
||||
AbilityLevel = SubResource("Resource_55uge")
|
||||
metadata/_custom_type_script = "uid://72kj3n4lm1em"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_idpl5"]
|
||||
script = ExtResource("13_rlvdp")
|
||||
Projectile = ExtResource("12_5ac6t")
|
||||
Name = "Spawn projectile"
|
||||
Icon = ExtResource("12_rlvdp")
|
||||
metadata/_custom_type_script = "uid://dxtjifb8hv8k4"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_5ac6t"]
|
||||
script = ExtResource("10_b62xo")
|
||||
Name = "Test projectile"
|
||||
Name = "Launch projectile"
|
||||
CooldownEffects = []
|
||||
AbilityBehavior = ExtResource("12_f6vvi")
|
||||
AbilityBehavior = SubResource("Resource_idpl5")
|
||||
TriggerSource = 1
|
||||
TriggerTag = ExtResource("13_ssnfc")
|
||||
metadata/_custom_type_script = "uid://dhxfbxh54pyxp"
|
||||
@@ -63,9 +76,69 @@ AbilityData = SubResource("Resource_5ac6t")
|
||||
AbilityLevel = SubResource("Resource_rlvdp")
|
||||
metadata/_custom_type_script = "uid://72kj3n4lm1em"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_5xe4r"]
|
||||
script = ExtResource("17_xabdf")
|
||||
ContainerTags = Array[String](["events.enemy.request_projectile"])
|
||||
metadata/_custom_type_script = "uid://cw525n4mjqgw0"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_5hctm"]
|
||||
script = ExtResource("18_ufku3")
|
||||
EventTags = SubResource("Resource_5xe4r")
|
||||
metadata/_custom_type_script = "uid://br7ut4lbau66w"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_xq5v1"]
|
||||
script = ExtResource("11_f6vvi")
|
||||
BaseValue = 1
|
||||
|
||||
[sub_resource type="Resource" id="Resource_s7hsu"]
|
||||
script = ExtResource("19_hgi6f")
|
||||
BaseValue = 1.0
|
||||
metadata/_custom_type_script = "uid://cn3b4ya15fg7e"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_xuuuu"]
|
||||
script = ExtResource("11_f6vvi")
|
||||
BaseValue = 1
|
||||
|
||||
[sub_resource type="Resource" id="Resource_nr327"]
|
||||
script = ExtResource("14_rlvdp")
|
||||
Name = "Raise request projectile event periodically"
|
||||
Modifiers = []
|
||||
Components = []
|
||||
Executions = Array[Object]([SubResource("Resource_5hctm")])
|
||||
DurationType = 1
|
||||
HasPeriodicApplication = true
|
||||
Period = SubResource("Resource_s7hsu")
|
||||
StackLimit = SubResource("Resource_xuuuu")
|
||||
InitialStack = SubResource("Resource_xq5v1")
|
||||
Cues = []
|
||||
metadata/_custom_type_script = "uid://b83hf13nj37k3"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ov8t2"]
|
||||
script = ExtResource("21_17f1o")
|
||||
EffectData = SubResource("Resource_nr327")
|
||||
metadata/_custom_type_script = "uid://cl5hudinl1rex"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gg1oy"]
|
||||
script = ExtResource("10_b62xo")
|
||||
Name = "Request projectile token event raise"
|
||||
CooldownEffects = []
|
||||
AbilityBehavior = SubResource("Resource_ov8t2")
|
||||
metadata/_custom_type_script = "uid://dhxfbxh54pyxp"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_r40oc"]
|
||||
script = ExtResource("11_f6vvi")
|
||||
BaseValue = 1
|
||||
|
||||
[sub_resource type="Resource" id="Resource_nu2lf"]
|
||||
script = ExtResource("12_ssnfc")
|
||||
AbilityData = SubResource("Resource_gg1oy")
|
||||
AbilityLevel = SubResource("Resource_r40oc")
|
||||
TryActivateOnGrant = true
|
||||
metadata/_custom_type_script = "uid://72kj3n4lm1em"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ufku3"]
|
||||
script = ExtResource("13_5ac6t")
|
||||
GrantAbilityConfigs = [SubResource("Resource_xabdf"), SubResource("Resource_ei7hs")]
|
||||
GrantAbilityConfigs = [SubResource("Resource_xabdf"), SubResource("Resource_ei7hs"), SubResource("Resource_nu2lf")]
|
||||
metadata/_custom_type_script = "uid://b3wo2uge4ddnj"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_hgi6f"]
|
||||
@@ -79,15 +152,15 @@ BaseValue = 1
|
||||
[sub_resource type="Resource" id="Resource_ytrix"]
|
||||
script = ExtResource("14_rlvdp")
|
||||
Name = "Grant abilities"
|
||||
Modifiers = null
|
||||
Modifiers = []
|
||||
Components = Array[Object]([SubResource("Resource_ufku3")])
|
||||
Executions = null
|
||||
Executions = []
|
||||
StackLimit = SubResource("Resource_17f1o")
|
||||
InitialStack = SubResource("Resource_hgi6f")
|
||||
Cues = null
|
||||
Cues = []
|
||||
metadata/_custom_type_script = "uid://b83hf13nj37k3"
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_3kqd1"]
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_f6vvi"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_6d4gl"]
|
||||
@@ -122,7 +195,6 @@ radius = 2.0
|
||||
collision_layer = 16
|
||||
collision_mask = 273
|
||||
script = ExtResource("1_ha67n")
|
||||
HitAbility = ExtResource("2_nbf6l")
|
||||
EnemyHeight = 2.0
|
||||
RKnockback = ExtResource("3_ymgar")
|
||||
RMovement = ExtResource("4_0f52b")
|
||||
@@ -168,7 +240,7 @@ metadata/_custom_type_script = "uid://dps0oef50noil"
|
||||
|
||||
[node name="CHealthBar" parent="." unique_id=1278247727 instance=ExtResource("9_6ew2r")]
|
||||
transform = Transform3D(0.4, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2, 0)
|
||||
texture = SubResource("ViewportTexture_3kqd1")
|
||||
texture = SubResource("ViewportTexture_f6vvi")
|
||||
|
||||
[node name="CMovement" parent="." unique_id=1080640834 node_paths=PackedStringArray("WallInFrontRayCast") instance=ExtResource("10_d3cra")]
|
||||
RMovement = SubResource("Resource_6d4gl")
|
||||
|
||||
Reference in New Issue
Block a user