Fix ambassador walk animations to only move while moving arms, fix attack animation hitboxes for them too
Make Chinthe check for safe landing zone before teleporting behind player Adjust size of Palan/Agni/Shield
This commit is contained in:
@@ -3,6 +3,7 @@ using Chickensoft.Introspection;
|
|||||||
using Godot;
|
using Godot;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using Zennysoft.Game.Ma;
|
using Zennysoft.Game.Ma;
|
||||||
|
|
||||||
[Meta(typeof(IAutoNode))]
|
[Meta(typeof(IAutoNode))]
|
||||||
@@ -70,7 +71,9 @@ public partial class Chinthe : Enemy2D, IHaveEngagePlayerBehavior, IHaveFollowBe
|
|||||||
var dot = _player.GlobalBasis.Z.Dot(GlobalBasis.Z);
|
var dot = _player.GlobalBasis.Z.Dot(GlobalBasis.Z);
|
||||||
var currentDirection = GlobalBasis.Z.Normalized();
|
var currentDirection = GlobalBasis.Z.Normalized();
|
||||||
var amountToTeleportBy = dot > 0 ? 5 : -5;
|
var amountToTeleportBy = dot > 0 ? 5 : -5;
|
||||||
GlobalPosition = GlobalPosition + new Vector3(amountToTeleportBy * targetPosition.X, 0, amountToTeleportBy * targetPosition.Z);
|
var target = GlobalPosition + new Vector3(amountToTeleportBy * targetPosition.X, 0, amountToTeleportBy * targetPosition.Z);
|
||||||
|
var safeSpot = NavigationServer3D.MapGetClosestPoint(NavigationServer3D.GetMaps().Single(), target);
|
||||||
|
GlobalPosition = new Vector3(safeSpot.X, 0, safeSpot.Z);
|
||||||
ResetPhysicsInterpolation();
|
ResetPhysicsInterpolation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ public partial class Ambassador : Enemy2D, IHavePatrolBehavior, IHaveEngagePlaye
|
|||||||
FollowBehavior.Init(NavigationAgent);
|
FollowBehavior.Init(NavigationAgent);
|
||||||
PatrolBehavior.Init(NavigationAgent);
|
PatrolBehavior.Init(NavigationAgent);
|
||||||
PatrolBehavior.HomePosition = GlobalPosition;
|
PatrolBehavior.HomePosition = GlobalPosition;
|
||||||
PatrolBehavior.OnVelocityComputed += OnVelocityComputed;
|
PatrolBehavior.OnVelocityComputed += OnAmbassadorVelocityComputed;
|
||||||
FollowBehavior.OnVelocityComputed += OnVelocityComputed;
|
FollowBehavior.OnVelocityComputed += OnAmbassadorVelocityComputed;
|
||||||
EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction;
|
EngagePlayerBehavior.TakeAction += EngagePlayerBehavior_TakeAction;
|
||||||
EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget;
|
EngagePlayerBehavior.AcquireTarget += EngagePlayerBehavior_AcquireTarget;
|
||||||
PlayerDetector.BodyEntered += PlayerDetector_BodyEntered;
|
PlayerDetector.BodyEntered += PlayerDetector_BodyEntered;
|
||||||
@@ -37,6 +37,7 @@ public partial class Ambassador : Enemy2D, IHavePatrolBehavior, IHaveEngagePlaye
|
|||||||
public void OnResolved()
|
public void OnResolved()
|
||||||
{
|
{
|
||||||
_enemyLogic.Input(new EnemyLogic.Input.Patrol());
|
_enemyLogic.Input(new EnemyLogic.Input.Patrol());
|
||||||
|
_enemyLogic.Input(new EnemyLogic.Input.Move());
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void PerformAction()
|
public override void PerformAction()
|
||||||
@@ -46,4 +47,22 @@ public partial class Ambassador : Enemy2D, IHavePatrolBehavior, IHaveEngagePlaye
|
|||||||
var selection = rng.RandWeighted([PrimaryAttackChance, SecondaryAttackChance]);
|
var selection = rng.RandWeighted([PrimaryAttackChance, SecondaryAttackChance]);
|
||||||
options[(int)selection].Invoke();
|
options[(int)selection].Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void _Process(double delta)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnAmbassadorVelocityComputed(Vector3 safeVelocity)
|
||||||
|
{
|
||||||
|
Velocity = safeVelocity;
|
||||||
|
if (Velocity.Length() > 0.15f)
|
||||||
|
EnemyModelView.PlayWalkAnimation();
|
||||||
|
else
|
||||||
|
EnemyModelView.PlayIdleAnimation();
|
||||||
|
|
||||||
|
LookAtTarget(safeVelocity);
|
||||||
|
if (((EnemyModelView)EnemyModelView).CanMove)
|
||||||
|
MoveAndSlide();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1169,6 +1169,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0.0333333),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_o5mvi"]
|
[sub_resource type="Animation" id="Animation_o5mvi"]
|
||||||
resource_name = "idle_back"
|
resource_name = "idle_back"
|
||||||
@@ -1252,6 +1264,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_7j3of"]
|
[sub_resource type="Animation" id="Animation_7j3of"]
|
||||||
resource_name = "idle_front"
|
resource_name = "idle_front"
|
||||||
@@ -1335,6 +1359,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_a705x"]
|
[sub_resource type="Animation" id="Animation_a705x"]
|
||||||
resource_name = "idle_left"
|
resource_name = "idle_left"
|
||||||
@@ -1418,6 +1454,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_vm8m6"]
|
[sub_resource type="Animation" id="Animation_vm8m6"]
|
||||||
resource_name = "idle_right"
|
resource_name = "idle_right"
|
||||||
@@ -1501,6 +1549,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true]
|
"values": [true]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_u0g5s"]
|
[sub_resource type="Animation" id="Animation_u0g5s"]
|
||||||
resource_name = "primary_attack"
|
resource_name = "primary_attack"
|
||||||
@@ -2073,6 +2133,7 @@ collision_mask = 64
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Hitbox"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Hitbox"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.189337, 0.217529, -1.45579)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.189337, 0.217529, -1.45579)
|
||||||
shape = SubResource("BoxShape3D_53wuj")
|
shape = SubResource("BoxShape3D_53wuj")
|
||||||
|
disabled = true
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -1184,6 +1184,18 @@ tracks/3/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true]
|
"values": [true]
|
||||||
}
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath(".:CanMove")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_o5mvi"]
|
[sub_resource type="Animation" id="Animation_o5mvi"]
|
||||||
resource_name = "idle_back"
|
resource_name = "idle_back"
|
||||||
@@ -1267,6 +1279,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_7j3of"]
|
[sub_resource type="Animation" id="Animation_7j3of"]
|
||||||
resource_name = "idle_front"
|
resource_name = "idle_front"
|
||||||
@@ -1350,6 +1374,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_a705x"]
|
[sub_resource type="Animation" id="Animation_a705x"]
|
||||||
resource_name = "idle_left"
|
resource_name = "idle_left"
|
||||||
@@ -1433,6 +1469,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_vm8m6"]
|
[sub_resource type="Animation" id="Animation_vm8m6"]
|
||||||
resource_name = "idle_right"
|
resource_name = "idle_right"
|
||||||
@@ -1516,6 +1564,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true]
|
"values": [true]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_u0g5s"]
|
[sub_resource type="Animation" id="Animation_u0g5s"]
|
||||||
resource_name = "primary_attack"
|
resource_name = "primary_attack"
|
||||||
@@ -1983,6 +2043,7 @@ states/Idle/position = Vector2(375, 100)
|
|||||||
states/Walking/node = ExtResource("266_0cp06")
|
states/Walking/node = ExtResource("266_0cp06")
|
||||||
states/Walking/position = Vector2(652, 100)
|
states/Walking/position = Vector2(652, 100)
|
||||||
transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_oceba"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_yqco6"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_ikyxn"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_2y5m2"), "Walking", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_dyptf"), "Walking", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_7vwa6"), "Idle", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_i3uxw"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_ig6n6"), "Secondary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_8fqp0")]
|
transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_oceba"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_yqco6"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_ikyxn"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_2y5m2"), "Walking", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_dyptf"), "Walking", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_7vwa6"), "Idle", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_i3uxw"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_ig6n6"), "Secondary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_8fqp0")]
|
||||||
|
graph_offset = Vector2(-132, 68)
|
||||||
|
|
||||||
[node name="EnemyModelView" type="Node3D"]
|
[node name="EnemyModelView" type="Node3D"]
|
||||||
script = ExtResource("1_a8qtn")
|
script = ExtResource("1_a8qtn")
|
||||||
|
|||||||
@@ -1173,6 +1173,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_o5mvi"]
|
[sub_resource type="Animation" id="Animation_o5mvi"]
|
||||||
resource_name = "idle_back"
|
resource_name = "idle_back"
|
||||||
@@ -1256,6 +1268,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_7j3of"]
|
[sub_resource type="Animation" id="Animation_7j3of"]
|
||||||
resource_name = "idle_front"
|
resource_name = "idle_front"
|
||||||
@@ -1339,6 +1363,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_a705x"]
|
[sub_resource type="Animation" id="Animation_a705x"]
|
||||||
resource_name = "idle_left"
|
resource_name = "idle_left"
|
||||||
@@ -1422,6 +1458,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_vm8m6"]
|
[sub_resource type="Animation" id="Animation_vm8m6"]
|
||||||
resource_name = "idle_right"
|
resource_name = "idle_right"
|
||||||
@@ -1505,6 +1553,18 @@ tracks/2/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true]
|
"values": [true]
|
||||||
}
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath(".:CanMove")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.916667, 1.25, 1.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false, true, false, true, false]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_u0g5s"]
|
[sub_resource type="Animation" id="Animation_u0g5s"]
|
||||||
resource_name = "primary_attack"
|
resource_name = "primary_attack"
|
||||||
@@ -1561,6 +1621,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.166667, 0.333333),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_s5aqg"]
|
[sub_resource type="Animation" id="Animation_s5aqg"]
|
||||||
resource_name = "primary_attack_back"
|
resource_name = "primary_attack_back"
|
||||||
@@ -1617,6 +1689,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.166667, 0.333333),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_fmw6u"]
|
[sub_resource type="Animation" id="Animation_fmw6u"]
|
||||||
resource_name = "primary_attack_left"
|
resource_name = "primary_attack_left"
|
||||||
@@ -1673,6 +1757,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.166667, 0.333333),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_psv15"]
|
[sub_resource type="Animation" id="Animation_psv15"]
|
||||||
resource_name = "primary_attack_right"
|
resource_name = "primary_attack_right"
|
||||||
@@ -1729,6 +1825,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.166667, 0.333333),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_5y02v"]
|
[sub_resource type="Animation" id="Animation_5y02v"]
|
||||||
resource_name = "secondary_attack"
|
resource_name = "secondary_attack"
|
||||||
@@ -1785,6 +1893,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.583333, 0.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_tlm8w"]
|
[sub_resource type="Animation" id="Animation_tlm8w"]
|
||||||
resource_name = "secondary_attack_back"
|
resource_name = "secondary_attack_back"
|
||||||
@@ -1841,6 +1961,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.583333, 0.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_m347f"]
|
[sub_resource type="Animation" id="Animation_m347f"]
|
||||||
resource_name = "secondary_attack_left"
|
resource_name = "secondary_attack_left"
|
||||||
@@ -1897,6 +2029,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.583333, 0.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_xe0e6"]
|
[sub_resource type="Animation" id="Animation_xe0e6"]
|
||||||
resource_name = "secondary_attack_right"
|
resource_name = "secondary_attack_right"
|
||||||
@@ -1953,6 +2097,18 @@ tracks/3/keys = {
|
|||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
tracks/3/use_blend = true
|
tracks/3/use_blend = true
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Hitbox/CollisionShape3D:disabled")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.583333, 0.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false, true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_x0ep5"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_x0ep5"]
|
||||||
_data = {
|
_data = {
|
||||||
|
|||||||
@@ -2126,7 +2126,8 @@ EnemyLoreInfo = SubResource("Resource_f45wt")
|
|||||||
|
|
||||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0250915, 1.985, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0250915, 2.95966, 0)
|
||||||
|
pixel_size = 0.015
|
||||||
billboard = 2
|
billboard = 2
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
render_priority = 100
|
render_priority = 100
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -516,25 +516,17 @@ _data = {
|
|||||||
script = ExtResource("1_mm1vd")
|
script = ExtResource("1_mm1vd")
|
||||||
|
|
||||||
[node name="Bullet" type="Node3D" parent="."]
|
[node name="Bullet" type="Node3D" parent="."]
|
||||||
visible = false
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.547908)
|
||||||
|
|
||||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Bullet"]
|
|
||||||
transform = Transform3D(4.3946e-16, -1.00536e-08, -0.23, -0.23, -1.00536e-08, -2.06464e-21, -1.00536e-08, 0.23, -1.00536e-08, 0, 0, 0)
|
|
||||||
visible = false
|
|
||||||
offset = Vector2(0, 150)
|
|
||||||
sprite_frames = SubResource("SpriteFrames_brsyt")
|
|
||||||
autoplay = "default"
|
|
||||||
frame_progress = 0.347379
|
|
||||||
|
|
||||||
[node name="AnimatedSprite3D3" type="AnimatedSprite3D" parent="Bullet"]
|
[node name="AnimatedSprite3D3" type="AnimatedSprite3D" parent="Bullet"]
|
||||||
transform = Transform3D(4.3946e-16, -1.00536e-08, -0.23, -0.23, -1.00536e-08, -2.06464e-21, -1.00536e-08, 0.23, -1.00536e-08, -0.110128, 0, 0)
|
transform = Transform3D(4.3946e-16, -1.00536e-08, -0.23, -0.23, -1.00536e-08, -2.06464e-21, -1.00536e-08, 0.23, -1.00536e-08, -0.0494268, 0, 0)
|
||||||
offset = Vector2(0, 150)
|
offset = Vector2(0, 150)
|
||||||
sprite_frames = SubResource("SpriteFrames_brsyt")
|
sprite_frames = SubResource("SpriteFrames_brsyt")
|
||||||
autoplay = "default"
|
autoplay = "default"
|
||||||
frame_progress = 0.365901
|
frame_progress = 0.365901
|
||||||
|
|
||||||
[node name="AnimatedSprite3D2" type="AnimatedSprite3D" parent="Bullet"]
|
[node name="AnimatedSprite3D2" type="AnimatedSprite3D" parent="Bullet"]
|
||||||
transform = Transform3D(0.23, 0, 1.00536e-08, 1.00536e-08, 4.39458e-16, -0.23, 0, 0.23, 4.39458e-16, -0.0667875, 0.0385479, 0)
|
transform = Transform3D(0.23, 0, 1.00536e-08, 1.00536e-08, 4.39458e-16, -0.23, 0, 0.23, 4.39458e-16, -0.0599805, -0.0069199, 0)
|
||||||
offset = Vector2(0, 150)
|
offset = Vector2(0, 150)
|
||||||
sprite_frames = SubResource("SpriteFrames_brsyt")
|
sprite_frames = SubResource("SpriteFrames_brsyt")
|
||||||
autoplay = "default"
|
autoplay = "default"
|
||||||
@@ -554,7 +546,7 @@ shape = SubResource("SphereShape3D_kct8n")
|
|||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Bullet"]
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="Bullet"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
root_node = NodePath("../AnimatedSprite3D")
|
root_node = NodePath("")
|
||||||
libraries = {
|
libraries = {
|
||||||
&"": SubResource("AnimationLibrary_q8n6h")
|
&"": SubResource("AnimationLibrary_q8n6h")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -493,17 +493,11 @@ _data = {
|
|||||||
script = ExtResource("1_k72x7")
|
script = ExtResource("1_k72x7")
|
||||||
|
|
||||||
[node name="Bullet" type="Node3D" parent="."]
|
[node name="Bullet" type="Node3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.42531)
|
||||||
visible = false
|
visible = false
|
||||||
|
|
||||||
[node name="AnimatedSprite3D2" type="AnimatedSprite3D" parent="Bullet"]
|
[node name="AnimatedSprite3D2" type="AnimatedSprite3D" parent="Bullet"]
|
||||||
transform = Transform3D(4.3946e-16, -1.00536e-08, -0.23, -0.23, -1.00536e-08, -2.06464e-21, -1.00536e-08, 0.23, -1.00536e-08, 0, 0, 0)
|
transform = Transform3D(4.3946e-16, -1.00536e-08, -0.23, -0.23, -1.00536e-08, -2.06464e-21, -1.00536e-08, 0.23, -1.00536e-08, -0.0569987, 0.0446073, 0)
|
||||||
offset = Vector2(0, 150)
|
|
||||||
sprite_frames = SubResource("SpriteFrames_aistn")
|
|
||||||
autoplay = "default"
|
|
||||||
|
|
||||||
[node name="AnimatedSprite3D3" type="AnimatedSprite3D" parent="Bullet"]
|
|
||||||
transform = Transform3D(4.3946e-16, -1.00536e-08, -0.23, -0.23, -1.00536e-08, -2.06464e-21, -1.00536e-08, 0.23, -1.00536e-08, -0.110128, 0, 0)
|
|
||||||
offset = Vector2(0, 150)
|
offset = Vector2(0, 150)
|
||||||
sprite_frames = SubResource("SpriteFrames_aistn")
|
sprite_frames = SubResource("SpriteFrames_aistn")
|
||||||
autoplay = "default"
|
autoplay = "default"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=585 format=3 uid="uid://bochx2nfql67q"]
|
[gd_scene load_steps=584 format=3 uid="uid://bochx2nfql67q"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_h8pla"]
|
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_h8pla"]
|
||||||
[ext_resource type="Texture2D" uid="uid://clwj6yknpw74n" path="res://src/enemy/enemy_types/12. Shield of Heaven/animations/New/Idle Back/0001.png" id="2_2eclh"]
|
[ext_resource type="Texture2D" uid="uid://clwj6yknpw74n" path="res://src/enemy/enemy_types/12. Shield of Heaven/animations/New/Idle Back/0001.png" id="2_2eclh"]
|
||||||
@@ -2168,6 +2168,18 @@ tracks/3/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Attack 1 VFX:frame")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_xt8vr"]
|
[sub_resource type="Animation" id="Animation_xt8vr"]
|
||||||
resource_name = "idle_back"
|
resource_name = "idle_back"
|
||||||
@@ -2564,8 +2576,8 @@ tracks/4/path = NodePath("VFX Animation Player")
|
|||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
"clips": PackedStringArray("[stop]", "ATTACK VFX", "[stop]"),
|
"clips": PackedStringArray("ATTACK VFX"),
|
||||||
"times": PackedFloat32Array(0, 0.666667, 1.66667)
|
"times": PackedFloat32Array(0.666667)
|
||||||
}
|
}
|
||||||
tracks/5/type = "audio"
|
tracks/5/type = "audio"
|
||||||
tracks/5/imported = false
|
tracks/5/imported = false
|
||||||
@@ -3141,49 +3153,13 @@ states/Idle/node = ExtResource("166_yh3w6")
|
|||||||
states/Idle/position = Vector2(359, 100)
|
states/Idle/position = Vector2(359, 100)
|
||||||
"states/Primary Attack/node" = ExtResource("167_fab8g")
|
"states/Primary Attack/node" = ExtResource("167_fab8g")
|
||||||
"states/Primary Attack/position" = Vector2(359, 263)
|
"states/Primary Attack/position" = Vector2(359, 263)
|
||||||
|
"states/Secondary Attack/node" = SubResource("AnimationNodeAnimation_j5so5")
|
||||||
|
"states/Secondary Attack/position" = Vector2(687, 263)
|
||||||
states/Walking/node = ExtResource("169_w7rrw")
|
states/Walking/node = ExtResource("169_w7rrw")
|
||||||
states/Walking/position = Vector2(687, 100)
|
states/Walking/position = Vector2(687, 100)
|
||||||
states/secondary_attack/node = SubResource("AnimationNodeAnimation_j5so5")
|
transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_y7ljc"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_08dxp"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_yk2s3"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_mb5pg"), "Walking", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_olfsm"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_f1vvk"), "Idle", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_0pum8"), "Walking", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_vwlpl"), "Secondary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_l1ir8")]
|
||||||
states/secondary_attack/position = Vector2(687, 263)
|
|
||||||
transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_y7ljc"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_08dxp"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_yk2s3"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_mb5pg"), "Walking", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_olfsm"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_f1vvk"), "Idle", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_0pum8"), "Walking", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_vwlpl"), "secondary_attack", "Idle", SubResource("AnimationNodeStateMachineTransition_l1ir8")]
|
|
||||||
graph_offset = Vector2(-16, 68)
|
graph_offset = Vector2(-16, 68)
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_v8s5q"]
|
|
||||||
resource_name = "ATTACK VFX"
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath(".:frame")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(-5.96046e-08, 0.966667),
|
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [0, 29]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_jd3bx"]
|
|
||||||
length = 0.001
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath(".:frame")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [0]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_yuosm"]
|
|
||||||
_data = {
|
|
||||||
&"ATTACK VFX": SubResource("Animation_v8s5q"),
|
|
||||||
&"RESET": SubResource("Animation_jd3bx")
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_iv5px"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_iv5px"]
|
||||||
atlas = ExtResource("381_moqrm")
|
atlas = ExtResource("381_moqrm")
|
||||||
region = Rect2(0, 0, 512, 512)
|
region = Rect2(0, 0, 512, 512)
|
||||||
@@ -3398,15 +3374,73 @@ animations = [{
|
|||||||
"speed": 24.0
|
"speed": 24.0
|
||||||
}]
|
}]
|
||||||
|
|
||||||
[sub_resource type="SpriteFrames" id="SpriteFrames_lgwan"]
|
[sub_resource type="Animation" id="Animation_v8s5q"]
|
||||||
|
resource_name = "ATTACK VFX"
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(-5.96046e-08, 0.966667),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0, 29]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:animation")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [&"default"]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_jd3bx"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:animation")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [&"default"]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_yuosm"]
|
||||||
|
_data = {
|
||||||
|
&"ATTACK VFX": SubResource("Animation_v8s5q"),
|
||||||
|
&"RESET": SubResource("Animation_jd3bx")
|
||||||
|
}
|
||||||
|
|
||||||
[node name="EnemyModelView" type="Node3D"]
|
[node name="EnemyModelView" type="Node3D"]
|
||||||
script = ExtResource("1_h8pla")
|
script = ExtResource("1_h8pla")
|
||||||
|
|
||||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 1.70362, 0)
|
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 2.56856, 0)
|
||||||
pixel_size = 0.005
|
pixel_size = 0.007
|
||||||
billboard = 2
|
billboard = 2
|
||||||
alpha_cut = 1
|
alpha_cut = 1
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
@@ -3460,22 +3494,19 @@ process_mode = 3
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0455525, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0455525, 0)
|
||||||
bus = &"SFX"
|
bus = &"SFX"
|
||||||
|
|
||||||
[node name="VFX Animation Player" type="AnimationPlayer" parent="."]
|
[node name="Attack 1 VFX" type="AnimatedSprite3D" parent="."]
|
||||||
root_node = NodePath("Attack 1 VFX")
|
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 2.01189, 0.733219)
|
||||||
libraries = {
|
|
||||||
&"": SubResource("AnimationLibrary_yuosm")
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="Attack 1 VFX" type="AnimatedSprite3D" parent="VFX Animation Player"]
|
|
||||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 1.14695, 0.733219)
|
|
||||||
modulate = Color(1, 1, 1, 0.788235)
|
modulate = Color(1, 1, 1, 0.788235)
|
||||||
|
pixel_size = 0.007
|
||||||
billboard = 1
|
billboard = 1
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
sprite_frames = SubResource("SpriteFrames_ie7uh")
|
sprite_frames = SubResource("SpriteFrames_ie7uh")
|
||||||
|
|
||||||
[node name="Attack 2 VFX" type="AnimatedSprite3D" parent="VFX Animation Player"]
|
[node name="VFX Animation Player" type="AnimationPlayer" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.74915, 0)
|
root_node = NodePath("../Attack 1 VFX")
|
||||||
sprite_frames = SubResource("SpriteFrames_lgwan")
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_yuosm")
|
||||||
|
}
|
||||||
|
|
||||||
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
using Chickensoft.AutoInject;
|
using Chickensoft.AutoInject;
|
||||||
using Chickensoft.Introspection;
|
using Chickensoft.Introspection;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Zennysoft.Game.Ma;
|
using Zennysoft.Game.Ma;
|
||||||
|
|
||||||
@@ -9,6 +11,11 @@ public partial class ShieldOfHeaven : Enemy2D, IHavePatrolBehavior, IHaveEngageP
|
|||||||
{
|
{
|
||||||
public override void _Notification(int what) => this.Notify(what);
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
|
|
||||||
|
[Export] private float PrimaryAttackChance { get; set; } = 0.75f;
|
||||||
|
|
||||||
|
[Export] private float SecondaryAttackChance { get; set; } = 0.25f;
|
||||||
|
|
||||||
[Node] public NavigationAgent3D NavigationAgent { get; set; }
|
[Node] public NavigationAgent3D NavigationAgent { get; set; }
|
||||||
[Node] public PatrolBehavior PatrolBehavior { get; set; } = default!;
|
[Node] public PatrolBehavior PatrolBehavior { get; set; } = default!;
|
||||||
[Node] public FollowBehavior FollowBehavior { get; set; } = default!;
|
[Node] public FollowBehavior FollowBehavior { get; set; } = default!;
|
||||||
@@ -16,6 +23,7 @@ public partial class ShieldOfHeaven : Enemy2D, IHavePatrolBehavior, IHaveEngageP
|
|||||||
|
|
||||||
[Node] public Area3D PlayerDetector { get; set; } = default!;
|
[Node] public Area3D PlayerDetector { get; set; } = default!;
|
||||||
|
|
||||||
|
|
||||||
public void OnReady()
|
public void OnReady()
|
||||||
{
|
{
|
||||||
FollowBehavior.Init(NavigationAgent);
|
FollowBehavior.Init(NavigationAgent);
|
||||||
@@ -39,4 +47,12 @@ public partial class ShieldOfHeaven : Enemy2D, IHavePatrolBehavior, IHaveEngageP
|
|||||||
PlayerDetector.BodyEntered -= PlayerDetector_BodyEntered;
|
PlayerDetector.BodyEntered -= PlayerDetector_BodyEntered;
|
||||||
PlayerDetector.BodyExited -= PlayerDetector_BodyExited;
|
PlayerDetector.BodyExited -= PlayerDetector_BodyExited;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void PerformAction()
|
||||||
|
{
|
||||||
|
var rng = new RandomNumberGenerator();
|
||||||
|
var options = new List<Action>() { EnemyModelView.PlayPrimaryAttackAnimation, EnemyModelView.PlaySecondaryAttackAnimation };
|
||||||
|
var selection = rng.RandWeighted([PrimaryAttackChance, SecondaryAttackChance]);
|
||||||
|
options[(int)selection].Invoke();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,12 +34,12 @@ script = ExtResource("1_oxa5b")
|
|||||||
|
|
||||||
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.1154, 0)
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.71346, 0)
|
||||||
shape = SubResource("CapsuleShape3D_cwfph")
|
shape = SubResource("CapsuleShape3D_cwfph")
|
||||||
|
|
||||||
[node name="LineOfSight" type="Area3D" parent="."]
|
[node name="LineOfSight" type="Area3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.1154, 0)
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.71346, 0)
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
collision_mask = 2
|
collision_mask = 2
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ collision_mask = 3
|
|||||||
|
|
||||||
[node name="PlayerDetector" type="Area3D" parent="."]
|
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1154, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71346, 0)
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 34
|
collision_mask = 34
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ collision_mask = 34
|
|||||||
shape = SubResource("CylinderShape3D_d5a6t")
|
shape = SubResource("CylinderShape3D_d5a6t")
|
||||||
|
|
||||||
[node name="Collision" type="Area3D" parent="."]
|
[node name="Collision" type="Area3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1154, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71346, 0)
|
||||||
collision_layer = 2048
|
collision_layer = 2048
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ unique_name_in_owner = true
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.110944, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.110944, 0)
|
||||||
|
|
||||||
[node name="Components" type="Node3D" parent="."]
|
[node name="Components" type="Node3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1154, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71346, 0)
|
||||||
|
|
||||||
[node name="PatrolBehavior" parent="Components" instance=ExtResource("4_jvpqg")]
|
[node name="PatrolBehavior" parent="Components" instance=ExtResource("4_jvpqg")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -94,7 +94,7 @@ avoidance_enabled = true
|
|||||||
radius = 1.0
|
radius = 1.0
|
||||||
|
|
||||||
[node name="HitSounds" type="Node3D" parent="."]
|
[node name="HitSounds" type="Node3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1154, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71346, 0)
|
||||||
|
|
||||||
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
|
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
Reference in New Issue
Block a user