Change all enemy types to CharacterBody3D

This commit is contained in:
2025-02-25 19:55:04 -08:00
parent 0d7242c96d
commit 282a2eddb0
13 changed files with 179 additions and 207 deletions

View File

@@ -2,8 +2,8 @@
state "AppLogic State" as GameJamDungeon_AppLogic_State { state "AppLogic State" as GameJamDungeon_AppLogic_State {
state "SetupGameScene" as GameJamDungeon_AppLogic_State_SetupGameScene state "SetupGameScene" as GameJamDungeon_AppLogic_State_SetupGameScene
state "InGame" as GameJamDungeon_AppLogic_State_InGame state "InGame" as GameJamDungeon_AppLogic_State_InGame
state "LoadingScreen" as GameJamDungeon_AppLogic_State_LoadingScreen
state "MainMenu" as GameJamDungeon_AppLogic_State_MainMenu state "MainMenu" as GameJamDungeon_AppLogic_State_MainMenu
state "LoadingScreen" as GameJamDungeon_AppLogic_State_LoadingScreen
} }
GameJamDungeon_AppLogic_State_InGame --> GameJamDungeon_AppLogic_State_MainMenu : GameOver GameJamDungeon_AppLogic_State_InGame --> GameJamDungeon_AppLogic_State_MainMenu : GameOver

View File

@@ -30,6 +30,9 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
#region Exports #region Exports
[Export] protected EnemyStatResource _enemyStatResource { get; set; } = default!; [Export] protected EnemyStatResource _enemyStatResource { get; set; } = default!;
[Export]
private float _movementSpeed = 2f;
#endregion #endregion
#region Node Dependencies #region Node Dependencies
@@ -60,6 +63,7 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
private Timer _thinkTimer; private Timer _thinkTimer;
#region Godot methods
public void Setup() public void Setup()
{ {
_enemyLogic = new EnemyLogic(); _enemyLogic = new EnemyLogic();
@@ -81,93 +85,6 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
_thinkTimer.Start(); _thinkTimer.Start();
} }
private void NavAgent_TargetReached()
{
NavAgent.TargetPosition = _currentTarget;
}
private void NavAgent_VelocityComputed(Vector3 safeVelocity)
{
if (CurrentHP <= 0)
return;
_knockbackStrength = _knockbackStrength * 0.9f;
Velocity = safeVelocity + (_knockbackDirection * _knockbackStrength);
MoveAndSlide();
}
public void SetTarget(Vector3 target)
{
Task.Delay(TimeSpan.FromSeconds(1.5)).ContinueWith(_ => _currentTarget = new Vector3(target.X, -1.75f, target.Z));
}
public void TakeDamage(double damage, ElementType elementType, bool isCriticalHit = false, bool ignoreDefense = false, bool ignoreElementalResistance = false)
{
if (_currentHP.Value > 0)
{
if (!ignoreElementalResistance)
damage = CalculateElementalResistance(damage, elementType);
if (!ignoreDefense)
damage = CalculateDefenseResistance(damage);
if (isCriticalHit)
damage *= 2;
GD.Print($"Enemy Hit for {damage} damage.");
_currentHP.OnNext(_currentHP.Value - damage);
GD.Print("Current HP: " + _currentHP.Value);
if (_currentHP.Value <= 0)
return;
EnemyModelView.PlayHitAnimation();
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
NavAgent_TargetReached();
if (Player.EquippedWeapon.Value.WeaponTags.Contains(WeaponTag.SelfDamage))
Player.Stats.SetCurrentHP(Player.Stats.CurrentHP.Value - 5);
}
}
public override void _PhysicsProcess(double delta)
{
if (CurrentHP <= 0)
return;
if (_enemyLogic.Value is EnemyLogic.State.Attacking)
SetTarget(GlobalPosition);
var nextPathPosition = NavAgent.GetNextPathPosition();
var newVelocity = GlobalPosition.DirectionTo(nextPathPosition) * 2f;
if (NavAgent.AvoidanceEnabled)
NavAgent.Velocity = newVelocity;
else
NavAgent_VelocityComputed(newVelocity);
var lookDir = GlobalPosition + Velocity;
if (_enemyLogic.Value is not EnemyLogic.State.Attacking && (!lookDir.IsEqualApprox(GlobalPosition) || !Velocity.IsZeroApprox()))
LookAt(lookDir, Vector3.Up, true);
var isWalking = _enemyLogic.Value is EnemyLogic.State.Patrolling or EnemyLogic.State.FollowPlayer;
EnemyModelView.RotateModel(GlobalTransform.Basis, -Player.CurrentBasis.Z, isWalking);
}
public void Knockback(float impulse, Vector3 direction)
{
_knockbackDirection = direction;
_knockbackStrength = 0.3f;
}
public void Die()
{
_enemyLogic.Input(new EnemyLogic.Input.EnemyDefeated());
CollisionShape.SetDeferred("disabled", true);
EnemyModelView.PlayDeathAnimation();
var tweener = GetTree().CreateTween();
tweener.TweenInterval(1.0f);
tweener.TweenCallback(Callable.From(QueueFree));
GameEventDepot.OnEnemyDefeated(GlobalPosition, _enemyStatResource);
}
public void OnResolved() public void OnResolved()
{ {
EnemyBinding = _enemyLogic.Bind(); EnemyBinding = _enemyLogic.Bind();
@@ -194,10 +111,77 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
PatrolTimer.WaitTime = rng.RandfRange(7.0f, 15.0f); PatrolTimer.WaitTime = rng.RandfRange(7.0f, 15.0f);
} }
public void OnExitTree() public override void _PhysicsProcess(double delta)
{ {
_enemyLogic.Stop(); CalculateVelocity();
EnemyBinding.Dispose(); }
#endregion
public virtual void TakeAction()
{
}
public void SetTarget(Vector3 target)
{
Task.Delay(TimeSpan.FromSeconds(1.5)).ContinueWith(_ => _currentTarget = new Vector3(target.X, -1.75f, target.Z));
}
public virtual void TakeDamage(double damage, ElementType elementType, bool isCriticalHit = false, bool ignoreDefense = false, bool ignoreElementalResistance = false)
{
if (_currentHP.Value > 0)
{
if (!ignoreElementalResistance)
damage = CalculateElementalResistance(damage, elementType);
if (!ignoreDefense)
damage = CalculateDefenseResistance(damage);
if (isCriticalHit)
damage *= 2;
GD.Print($"Enemy Hit for {damage} damage.");
_currentHP.OnNext(_currentHP.Value - damage);
GD.Print("Current HP: " + _currentHP.Value);
if (_currentHP.Value <= 0)
return;
EnemyModelView.PlayHitAnimation();
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
NavAgent_TargetReached();
if (Player.EquippedWeapon.Value.WeaponTags.Contains(WeaponTag.SelfDamage))
Player.Stats.SetCurrentHP(Player.Stats.CurrentHP.Value - 5);
}
}
public void Knockback(float impulse, Vector3 direction)
{
_knockbackDirection = direction;
_knockbackStrength = 0.3f;
}
public void Die()
{
_enemyLogic.Input(new EnemyLogic.Input.EnemyDefeated());
CollisionShape.SetDeferred("disabled", true);
EnemyModelView.PlayDeathAnimation();
var tweener = GetTree().CreateTween();
tweener.TweenInterval(1.0f);
tweener.TweenCallback(Callable.From(QueueFree));
GameEventDepot.OnEnemyDefeated(GlobalPosition, _enemyStatResource);
}
private void NavAgent_TargetReached()
{
NavAgent.TargetPosition = _currentTarget;
}
private void NavAgent_VelocityComputed(Vector3 safeVelocity)
{
if (CurrentHP <= 0)
return;
_knockbackStrength = _knockbackStrength * 0.9f;
Velocity = safeVelocity + (_knockbackDirection * _knockbackStrength);
MoveAndSlide();
} }
private void OnPatrolTimeout() private void OnPatrolTimeout()
@@ -221,6 +205,30 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
} }
private void CalculateVelocity()
{
if (CurrentHP <= 0)
return;
if (_enemyLogic.Value is EnemyLogic.State.Attacking)
SetTarget(GlobalPosition);
var nextPathPosition = NavAgent.GetNextPathPosition();
var newVelocity = GlobalPosition.DirectionTo(nextPathPosition) * 2f;
if (NavAgent.AvoidanceEnabled)
NavAgent.Velocity = newVelocity;
else
NavAgent_VelocityComputed(newVelocity);
var lookDir = GlobalPosition + Velocity;
if (_enemyLogic.Value is not EnemyLogic.State.Attacking && (!lookDir.IsEqualApprox(GlobalPosition) || !Velocity.IsZeroApprox()))
LookAt(lookDir, Vector3.Up, true);
var isWalking = _enemyLogic.Value is EnemyLogic.State.Patrolling or EnemyLogic.State.FollowPlayer;
EnemyModelView.RotateModel(GlobalTransform.Basis, -Player.CurrentBasis.Z, isWalking);
}
private void OnAttackTimeout() private void OnAttackTimeout()
{ {
if (GlobalPosition.DistanceTo(Player.CurrentPosition) > 5f) if (GlobalPosition.DistanceTo(Player.CurrentPosition) > 5f)
@@ -284,7 +292,9 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
return Mathf.Max(incomingDamage - _enemyStatResource.CurrentDefense, 0.0); return Mathf.Max(incomingDamage - _enemyStatResource.CurrentDefense, 0.0);
} }
public virtual void TakeAction() public void OnExitTree()
{ {
_enemyLogic.Stop();
EnemyBinding.Dispose();
} }
} }

View File

@@ -161,7 +161,7 @@ _surfaces = [{
blend_shape_mode = 0 blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_pocxj") shadow_mesh = SubResource("ArrayMesh_pocxj")
[node name="Node3D" type="Node3D"] [node name="Eden Pillar" type="CharacterBody3D"]
[node name="PILLAR EXPORT 1" type="Node3D" parent="."] [node name="PILLAR EXPORT 1" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -11.4755) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -11.4755)

View File

@@ -1,27 +1,24 @@
[gd_scene load_steps=23 format=4 uid="uid://d1lmftfty1qr6"] [gd_scene load_steps=23 format=4 uid="uid://d1lmftfty1qr6"]
[ext_resource type="Texture2D" uid="uid://2e4cp477ex0t" path="res://src/enemy/enemy_types/14. horse_head/Horse Head 1_Metal054C_1K-JPG_Color.jpg" id="1_1lmy0"] [ext_resource type="Texture2D" uid="uid://2e4cp477ex0t" path="res://src/enemy/enemy_types/14. horse_head/Horse Head 1_Metal054C_1K-JPG_Color.jpg" id="1_1lmy0"]
[ext_resource type="Texture2D" uid="uid://bv60n7epxktw5" path="res://src/enemy/enemy_types/14. horse_head/Metal054C_1K-JPG_NormalDX.jpg" id="2_ftgvu"]
[ext_resource type="Animation" uid="uid://bhsp32c05j2o5" path="res://src/enemy/enemy_types/14. horse_head/walking.res" id="3_4m0vj"] [ext_resource type="Animation" uid="uid://bhsp32c05j2o5" path="res://src/enemy/enemy_types/14. horse_head/walking.res" id="3_4m0vj"]
[ext_resource type="Animation" uid="uid://ccq41qrm1lduk" path="res://src/enemy/enemy_types/14. horse_head/walking2.res" id="4_jg316"] [ext_resource type="Animation" uid="uid://ccq41qrm1lduk" path="res://src/enemy/enemy_types/14. horse_head/walking2.res" id="4_jg316"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_pmi7e"]
radius = 3.98697
height = 25.6239
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tv6dm"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tv6dm"]
resource_name = "Material" resource_name = "Material"
cull_mode = 2 cull_mode = 2
albedo_texture = ExtResource("1_1lmy0")
roughness = 0.5
normal_enabled = true
normal_scale = 16.0
normal_texture = ExtResource("2_ftgvu")
shading_mode = 0 shading_mode = 0
albedo_texture = ExtResource("1_1lmy0")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hbmlb"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hbmlb"]
resource_name = "Material.004" resource_name = "Material.004"
cull_mode = 2 cull_mode = 2
albedo_color = Color(0.906414, 0.0490838, 0, 1)
metallic = 1.0
roughness = 0.0
shading_mode = 0 shading_mode = 0
albedo_color = Color(0.906414, 0.0490838, 0, 1)
[sub_resource type="ArrayMesh" id="ArrayMesh_e6ony"] [sub_resource type="ArrayMesh" id="ArrayMesh_e6ony"]
resource_name = "Horse Head 1_0_Cube_037" resource_name = "Horse Head 1_0_Cube_037"
@@ -1145,12 +1142,12 @@ tracks/38/keys = PackedFloat32Array(0, 1, -0.457231, -0.539389, 0.539388, 0.4572
[sub_resource type="AnimationLibrary" id="AnimationLibrary_h244y"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_h244y"]
_data = { _data = {
"ATTACK BIG": SubResource("Animation_nem1a"), &"ATTACK BIG": SubResource("Animation_nem1a"),
"ATTACK SMALLER": SubResource("Animation_wf6hu"), &"ATTACK SMALLER": SubResource("Animation_wf6hu"),
"IDLE": SubResource("Animation_bsekl"), &"IDLE": SubResource("Animation_bsekl"),
"walk": SubResource("Animation_xke0q"), &"walk": SubResource("Animation_xke0q"),
"walking": ExtResource("3_4m0vj"), &"walking": ExtResource("3_4m0vj"),
"walking2": ExtResource("4_jg316") &"walking2": ExtResource("4_jg316")
} }
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_y7trl"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_y7trl"]
@@ -1185,8 +1182,11 @@ states/IDLE/position = Vector2(361, 90)
states/Start/position = Vector2(188, 78) states/Start/position = Vector2(188, 78)
transitions = ["Start", "IDLE", SubResource("AnimationNodeStateMachineTransition_6wk5k"), "IDLE", "ATTACK SMALLER", SubResource("AnimationNodeStateMachineTransition_bo45h"), "ATTACK SMALLER", "IDLE", SubResource("AnimationNodeStateMachineTransition_xnlt1"), "ATTACK BIG", "IDLE", SubResource("AnimationNodeStateMachineTransition_0it21"), "IDLE", "ATTACK BIG", SubResource("AnimationNodeStateMachineTransition_2cju5")] transitions = ["Start", "IDLE", SubResource("AnimationNodeStateMachineTransition_6wk5k"), "IDLE", "ATTACK SMALLER", SubResource("AnimationNodeStateMachineTransition_bo45h"), "ATTACK SMALLER", "IDLE", SubResource("AnimationNodeStateMachineTransition_xnlt1"), "ATTACK BIG", "IDLE", SubResource("AnimationNodeStateMachineTransition_0it21"), "IDLE", "ATTACK BIG", SubResource("AnimationNodeStateMachineTransition_2cju5")]
[node name="Horse Head 1_0" type="Node3D"] [node name="Horse Head 1_0" type="CharacterBody3D"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -1, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 12.5281, 0)
shape = SubResource("CapsuleShape3D_pmi7e")
[node name="Armature" type="Node3D" parent="."] [node name="Armature" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.82093, 13.2705, 2.05488) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.82093, 13.2705, 2.05488)
@@ -1196,7 +1196,7 @@ bones/0/name = "spine1"
bones/0/parent = -1 bones/0/parent = -1
bones/0/rest = Transform3D(1.49012e-06, 0.00846654, -0.999964, 2.93367e-08, 0.999964, 0.00846654, 1, -4.23752e-08, 1.49012e-06, 0.000155807, -0.00105953, -2.01735) bones/0/rest = Transform3D(1.49012e-06, 0.00846654, -0.999964, 2.93367e-08, 0.999964, 0.00846654, 1, -4.23752e-08, 1.49012e-06, 0.000155807, -0.00105953, -2.01735)
bones/0/enabled = true bones/0/enabled = true
bones/0/position = Vector3(0.0996386, -0.286246, -1.53144) bones/0/position = Vector3(0.0996386, -0.327006, -1.53144)
bones/0/rotation = Quaternion(0.0256267, -0.805691, 0.0118477, 0.591662) bones/0/rotation = Quaternion(0.0256267, -0.805691, 0.0118477, 0.591662)
bones/0/scale = Vector3(1, 1, 1) bones/0/scale = Vector3(1, 1, 1)
bones/1/name = "spine0" bones/1/name = "spine0"
@@ -1225,7 +1225,7 @@ bones/4/parent = 3
bones/4/rest = Transform3D(0.901905, -0.410135, 0.135488, 0.412416, 0.910915, 0.0120912, -0.128377, 0.0449723, 0.990705, 2.5332e-07, 0.990515, -7.07805e-08) bones/4/rest = Transform3D(0.901905, -0.410135, 0.135488, 0.412416, 0.910915, 0.0120912, -0.128377, 0.0449723, 0.990705, 2.5332e-07, 0.990515, -7.07805e-08)
bones/4/enabled = true bones/4/enabled = true
bones/4/position = Vector3(2.5332e-07, 0.990515, -7.07805e-08) bones/4/position = Vector3(2.5332e-07, 0.990515, -7.07805e-08)
bones/4/rotation = Quaternion(0.00725459, 0.0669693, 0.208701, 0.975657) bones/4/rotation = Quaternion(0.00351221, 0.0648028, 0.201749, 0.977285)
bones/4/scale = Vector3(1, 1, 1) bones/4/scale = Vector3(1, 1, 1)
bones/5/name = "neck4" bones/5/name = "neck4"
bones/5/parent = 4 bones/5/parent = 4
@@ -1239,7 +1239,7 @@ bones/6/parent = 5
bones/6/rest = Transform3D(0.0598389, 0.98531, 0.15995, -0.975271, 0.0235553, 0.219755, 0.212759, -0.169144, 0.962353, 3.65078e-07, 1.40318, 0) bones/6/rest = Transform3D(0.0598389, 0.98531, 0.15995, -0.975271, 0.0235553, 0.219755, 0.212759, -0.169144, 0.962353, 3.65078e-07, 1.40318, 0)
bones/6/enabled = true bones/6/enabled = true
bones/6/position = Vector3(3.65078e-07, 1.40318, 0) bones/6/position = Vector3(3.65078e-07, 1.40318, 0)
bones/6/rotation = Quaternion(-0.342358, 0.0520427, -0.492847, 0.798238) bones/6/rotation = Quaternion(-0.338283, 0.0516599, -0.481248, 0.807029)
bones/6/scale = Vector3(1, 1, 1) bones/6/scale = Vector3(1, 1, 1)
bones/7/name = "Bone.007" bones/7/name = "Bone.007"
bones/7/parent = 6 bones/7/parent = 6
@@ -1274,7 +1274,7 @@ bones/11/parent = 1
bones/11/rest = Transform3D(0.981457, 0.0769315, -0.175568, 0.18837, -0.217537, 0.957703, 0.035485, -0.973015, -0.227995, -1.09896e-07, 3.84743, -2.10479e-07) bones/11/rest = Transform3D(0.981457, 0.0769315, -0.175568, 0.18837, -0.217537, 0.957703, 0.035485, -0.973015, -0.227995, -1.09896e-07, 3.84743, -2.10479e-07)
bones/11/enabled = true bones/11/enabled = true
bones/11/position = Vector3(-1.09896e-07, 3.84743, -2.10479e-07) bones/11/position = Vector3(-1.09896e-07, 3.84743, -2.10479e-07)
bones/11/rotation = Quaternion(-0.806446, -0.0804107, -0.0235047, 0.585343) bones/11/rotation = Quaternion(-0.808681, -0.0845387, -0.0236005, 0.581662)
bones/11/scale = Vector3(1, 1, 1) bones/11/scale = Vector3(1, 1, 1)
bones/12/name = "arm2_L" bones/12/name = "arm2_L"
bones/12/parent = 11 bones/12/parent = 11
@@ -1301,7 +1301,7 @@ bones/15/name = "arm1_R"
bones/15/parent = 1 bones/15/parent = 1
bones/15/rest = Transform3D(-0.98213, 0.0512573, -0.181089, -0.187541, -0.185921, 0.964501, 0.0157694, 0.981227, 0.192212, 0.00107862, 3.8461, -0.0821097) bones/15/rest = Transform3D(-0.98213, 0.0512573, -0.181089, -0.187541, -0.185921, 0.964501, 0.0157694, 0.981227, 0.192212, 0.00107862, 3.8461, -0.0821097)
bones/15/enabled = true bones/15/enabled = true
bones/15/position = Vector3(-0.201139, 3.63969, 0.0776347) bones/15/position = Vector3(-0.192226, 3.57115, 0.090595)
bones/15/rotation = Quaternion(-0.502686, 0.531044, 0.680821, -0.0422068) bones/15/rotation = Quaternion(-0.502686, 0.531044, 0.680821, -0.0422068)
bones/15/scale = Vector3(1, 1, 1) bones/15/scale = Vector3(1, 1, 1)
bones/16/name = "arm2_R" bones/16/name = "arm2_R"
@@ -1316,7 +1316,7 @@ bones/17/parent = 16
bones/17/rest = Transform3D(0.998789, 0.0488077, -0.00615137, -0.0491113, 0.996528, -0.0672226, 0.00284903, 0.0674433, 0.997719, -5.21541e-08, 3.04263, -1.31503e-06) bones/17/rest = Transform3D(0.998789, 0.0488077, -0.00615137, -0.0491113, 0.996528, -0.0672226, 0.00284903, 0.0674433, 0.997719, -5.21541e-08, 3.04263, -1.31503e-06)
bones/17/enabled = true bones/17/enabled = true
bones/17/position = Vector3(-5.21541e-08, 3.04263, -1.31503e-06) bones/17/position = Vector3(-5.21541e-08, 3.04263, -1.31503e-06)
bones/17/rotation = Quaternion(-0.0442975, 0.0973027, 0.265491, 0.958167) bones/17/rotation = Quaternion(-0.0342708, 0.0969672, 0.269013, 0.95763)
bones/17/scale = Vector3(1, 1, 1) bones/17/scale = Vector3(1, 1, 1)
bones/18/name = "hand_R" bones/18/name = "hand_R"
bones/18/parent = 17 bones/18/parent = 17
@@ -1329,7 +1329,7 @@ bones/19/name = "hip_L"
bones/19/parent = -1 bones/19/parent = -1
bones/19/rest = Transform3D(0.138486, 0.897208, 0.419333, -0.129033, -0.403458, 0.905854, 0.981923, -0.179556, 0.059896, 0.000155807, -0.00105953, -2.01735) bones/19/rest = Transform3D(0.138486, 0.897208, 0.419333, -0.129033, -0.403458, 0.905854, 0.981923, -0.179556, 0.059896, 0.000155807, -0.00105953, -2.01735)
bones/19/enabled = true bones/19/enabled = true
bones/19/position = Vector3(0.147751, -0.286156, -1.49267) bones/19/position = Vector3(0.147751, -0.309744, -1.49267)
bones/19/rotation = Quaternion(0.427793, 0.34021, 0.687061, -0.478745) bones/19/rotation = Quaternion(0.427793, 0.34021, 0.687061, -0.478745)
bones/19/scale = Vector3(1, 1, 1) bones/19/scale = Vector3(1, 1, 1)
bones/20/name = "leg1_L" bones/20/name = "leg1_L"
@@ -1337,14 +1337,14 @@ bones/20/parent = 19
bones/20/rest = Transform3D(0.945603, 0.113405, 0.304916, -0.324072, 0.410457, 0.852351, -0.0284943, -0.9048, 0.424881, 2.08616e-07, 2.00996, -7.1153e-07) bones/20/rest = Transform3D(0.945603, 0.113405, 0.304916, -0.324072, 0.410457, 0.852351, -0.0284943, -0.9048, 0.424881, 2.08616e-07, 2.00996, -7.1153e-07)
bones/20/enabled = true bones/20/enabled = true
bones/20/position = Vector3(2.08616e-07, 2.00996, -7.1153e-07) bones/20/position = Vector3(2.08616e-07, 2.00996, -7.1153e-07)
bones/20/rotation = Quaternion(-0.437515, -0.325624, -0.3698, 0.752195) bones/20/rotation = Quaternion(-0.436429, -0.326977, -0.371469, 0.751416)
bones/20/scale = Vector3(1, 1, 1) bones/20/scale = Vector3(1, 1, 1)
bones/21/name = "leg2_L" bones/21/name = "leg2_L"
bones/21/parent = 20 bones/21/parent = 20
bones/21/rest = Transform3D(0.990336, -0.138679, 0.00180777, 0.138628, 0.990193, 0.0173138, -0.00419111, -0.0168959, 0.999848, 5.96046e-08, 5.85994, -5.23403e-07) bones/21/rest = Transform3D(0.990336, -0.138679, 0.00180777, 0.138628, 0.990193, 0.0173138, -0.00419111, -0.0168959, 0.999848, 5.96046e-08, 5.85994, -5.23403e-07)
bones/21/enabled = true bones/21/enabled = true
bones/21/position = Vector3(5.96046e-08, 5.85994, -5.23403e-07) bones/21/position = Vector3(5.96046e-08, 5.85994, -5.23403e-07)
bones/21/rotation = Quaternion(-0.0475833, 0.0018895, 0.380622, 0.923504) bones/21/rotation = Quaternion(-0.0481117, 0.00188585, 0.384848, 0.921723)
bones/21/scale = Vector3(1, 1, 1) bones/21/scale = Vector3(1, 1, 1)
bones/22/name = "foot1_L" bones/22/name = "foot1_L"
bones/22/parent = 21 bones/22/parent = 21
@@ -1378,7 +1378,7 @@ bones/26/name = "hip_R"
bones/26/parent = -1 bones/26/parent = -1
bones/26/rest = Transform3D(0.138486, -0.897208, -0.419333, 0.129033, -0.403458, 0.905854, -0.981923, -0.179556, 0.059896, -0.000155807, -0.00105953, -2.01735) bones/26/rest = Transform3D(0.138486, -0.897208, -0.419333, 0.129033, -0.403458, 0.905854, -0.981923, -0.179556, 0.059896, -0.000155807, -0.00105953, -2.01735)
bones/26/enabled = true bones/26/enabled = true
bones/26/position = Vector3(0.0289172, -0.300728, -1.59603) bones/26/position = Vector3(0.0289171, -0.316454, -1.59603)
bones/26/rotation = Quaternion(0.695067, -0.09936, -0.377924, -0.603475) bones/26/rotation = Quaternion(0.695067, -0.09936, -0.377924, -0.603475)
bones/26/scale = Vector3(1, 1, 1) bones/26/scale = Vector3(1, 1, 1)
bones/27/name = "leg1_R" bones/27/name = "leg1_R"
@@ -1386,14 +1386,14 @@ bones/27/parent = 26
bones/27/rest = Transform3D(0.945603, -0.113405, -0.304916, 0.324072, 0.410457, 0.852351, 0.0284943, -0.9048, 0.424881, -9.54606e-09, 2.00996, -3.52971e-07) bones/27/rest = Transform3D(0.945603, -0.113405, -0.304916, 0.324072, 0.410457, 0.852351, 0.0284943, -0.9048, 0.424881, -9.54606e-09, 2.00996, -3.52971e-07)
bones/27/enabled = true bones/27/enabled = true
bones/27/position = Vector3(-9.54606e-09, 2.00996, -3.52971e-07) bones/27/position = Vector3(-9.54606e-09, 2.00996, -3.52971e-07)
bones/27/rotation = Quaternion(-0.317211, 0.174303, 0.18392, 0.913876) bones/27/rotation = Quaternion(-0.315472, 0.175536, 0.184059, 0.914214)
bones/27/scale = Vector3(1, 1, 1) bones/27/scale = Vector3(1, 1, 1)
bones/28/name = "leg2_R" bones/28/name = "leg2_R"
bones/28/parent = 27 bones/28/parent = 27
bones/28/rest = Transform3D(0.990336, 0.138679, -0.00180777, -0.138628, 0.990193, 0.0173138, 0.00419111, -0.0168959, 0.999848, 4.51691e-08, 5.85994, -3.72529e-09) bones/28/rest = Transform3D(0.990336, 0.138679, -0.00180777, -0.138628, 0.990193, 0.0173138, 0.00419111, -0.0168959, 0.999848, 4.51691e-08, 5.85994, -3.72529e-09)
bones/28/enabled = true bones/28/enabled = true
bones/28/position = Vector3(4.51691e-08, 5.85994, -3.72529e-09) bones/28/position = Vector3(4.51691e-08, 5.85994, -3.72529e-09)
bones/28/rotation = Quaternion(-0.268385, 0.0202194, -0.175117, 0.947046) bones/28/rotation = Quaternion(-0.271351, 0.0201937, -0.177053, 0.94584)
bones/28/scale = Vector3(1, 1, 1) bones/28/scale = Vector3(1, 1, 1)
bones/29/name = "foot1_R" bones/29/name = "foot1_R"
bones/29/parent = 28 bones/29/parent = 28
@@ -1429,20 +1429,20 @@ mesh = SubResource("ArrayMesh_e6ony")
skin = SubResource("Skin_k5bce") skin = SubResource("Skin_k5bce")
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D"] [node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D"]
transform = Transform3D(-0.370165, -0.13327, -0.919357, -0.260549, -0.935039, 0.240449, -0.891679, 0.328543, 0.311396, -2.00357, 8.78221, 6.14921) transform = Transform3D(-0.370164, -0.13327, -0.919357, -0.272599, -0.930504, 0.244644, -0.88807, 0.341175, 0.30811, -2.00357, 8.76587, 6.20064)
bone_name = "TOP OF SKULL" bone_name = "TOP OF SKULL"
bone_idx = 8 bone_idx = 8
[node name="OmniLight3D" type="OmniLight3D" parent="Armature/Skeleton3D/BoneAttachment3D"] [node name="OmniLight3D" type="OmniLight3D" parent="Armature/Skeleton3D/BoneAttachment3D"]
transform = Transform3D(9.98467, 0.548583, -0.0733516, -0.546831, 9.98256, 0.222701, 0.0854423, -0.218348, 9.99725, 0.544723, 0.32165, -0.26595) transform = Transform3D(0.998452, 0.0551334, -0.00736901, -0.0549564, 0.998238, 0.0223826, 0.00859013, -0.0219431, 0.999722, 0.583, 1.054, -0.174)
light_color = Color(0, 0.584314, 0.317647, 1) light_color = Color(0, 0.584314, 0.317647, 1)
light_energy = 10.187 light_energy = 1.442
omni_range = 0.309 omni_range = 3.003
omni_attenuation = 0.023 omni_attenuation = -3.04
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {
"": SubResource("AnimationLibrary_h244y") &"": SubResource("AnimationLibrary_h244y")
} }
[node name="AnimationTree" type="AnimationTree" parent="."] [node name="AnimationTree" type="AnimationTree" parent="."]

View File

@@ -1,33 +1,10 @@
[gd_scene load_steps=33 format=4 uid="uid://6dnsw37d1uw4"] [gd_scene load_steps=30 format=4 uid="uid://6dnsw37d1uw4"]
[ext_resource type="Texture2D" uid="uid://dp6hwvuhfkji8" path="res://src/enemy/enemy_types/15. ox_face/models/OX FACE_Metal054C_1K-JPG_Color.jpg" id="1_iwcva"] [ext_resource type="Texture2D" uid="uid://dp6hwvuhfkji8" path="res://src/enemy/enemy_types/15. ox_face/models/OX FACE_Metal054C_1K-JPG_Color.jpg" id="1_iwcva"]
[ext_resource type="Script" uid="uid://dwpswg0xufxa7" path="res://src/boss/Boss.cs" id="1_xakg1"] [ext_resource type="Script" uid="uid://dwpswg0xufxa7" path="res://src/boss/Boss.cs" id="1_xakg1"]
[ext_resource type="Texture2D" uid="uid://cqmo71mabu36n" path="res://src/enemy/enemy_types/15. ox_face/models/OX FACE_Metal054C_1K-JPG_Displacement.jpg" id="2_cgb4w"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_hdr5w"]
[ext_resource type="Material" uid="uid://brwu51ylevbmg" path="res://src/enemy/enemy_types/14. horse_head/BossHit.tres" id="3_hub8w"] [ext_resource type="Material" uid="uid://brwu51ylevbmg" path="res://src/enemy/enemy_types/14. horse_head/BossHit.tres" id="3_hub8w"]
[ext_resource type="AnimationLibrary" uid="uid://bw3wtqy3lcbfi" path="res://src/enemy/enemy_types/14. horse_head/OxFace.res" id="4_4vicn"] [ext_resource type="AnimationLibrary" uid="uid://bw3wtqy3lcbfi" path="res://src/enemy/enemy_types/14. horse_head/OxFace.res" id="4_4vicn"]
[sub_resource type="Resource" id="Resource_xpwds"]
script = ExtResource("2_hdr5w")
CurrentHP = 80.0
MaximumHP = 80.0
CurrentAttack = 20
CurrentDefense = 3
MaxAttack = 20
MaxDefense = 3
Luck = 0.05
TelluricResistance = 0.0
AeolicResistance = 0.0
HydricResistance = 0.0
IgneousResistance = 0.0
FerrumResistance = 0.0
TelluricDamageBonus = 0.0
AeolicDamageBonus = 0.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
FerrumDamageBonus = 0.0
DropsSoulGemChance = 0.75
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7uhtm"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7uhtm"]
radius = 9.4071 radius = 9.4071
height = 34.1332 height = 34.1332
@@ -35,11 +12,8 @@ height = 34.1332
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y7226"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y7226"]
resource_name = "Material" resource_name = "Material"
cull_mode = 2 cull_mode = 2
albedo_texture = ExtResource("1_iwcva")
roughness = 0.5
normal_enabled = true
normal_texture = ExtResource("2_cgb4w")
shading_mode = 0 shading_mode = 0
albedo_texture = ExtResource("1_iwcva")
[sub_resource type="ArrayMesh" id="ArrayMesh_5ew54"] [sub_resource type="ArrayMesh" id="ArrayMesh_5ew54"]
resource_name = "OX FACE_Cube_037" resource_name = "OX FACE_Cube_037"
@@ -302,9 +276,9 @@ tracks/1/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_q1mdo"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_q1mdo"]
_data = { _data = {
"Defeated": SubResource("Animation_o4lik"), &"Defeated": SubResource("Animation_o4lik"),
"Hit": SubResource("Animation_g7bmo"), &"Hit": SubResource("Animation_g7bmo"),
"RESET": SubResource("Animation_kml6n") &"RESET": SubResource("Animation_kml6n")
} }
[sub_resource type="BoxShape3D" id="BoxShape3D_hcxtl"] [sub_resource type="BoxShape3D" id="BoxShape3D_hcxtl"]
@@ -314,10 +288,8 @@ size = Vector3(14.6793, 34.6932, 15.6199)
size = Vector3(17.7339, 22.0363, 19.9701) size = Vector3(17.7339, 22.0363, 19.9701)
[node name="OX FACE" type="CharacterBody3D"] [node name="OX FACE" type="CharacterBody3D"]
transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, 0, -1, 0)
axis_lock_linear_y = true axis_lock_linear_y = true
script = ExtResource("1_xakg1") script = ExtResource("1_xakg1")
BossResource = SubResource("Resource_xpwds")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.212402, 16.2998, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.212402, 16.2998, 0)
@@ -331,7 +303,7 @@ bones/0/name = "spine1"
bones/0/parent = -1 bones/0/parent = -1
bones/0/rest = Transform3D(1.49012e-06, 0.00846654, -0.999964, 2.93367e-08, 0.999964, 0.00846654, 1, -4.23752e-08, 1.49012e-06, 0.000155807, -0.00105953, -2.01735) bones/0/rest = Transform3D(1.49012e-06, 0.00846654, -0.999964, 2.93367e-08, 0.999964, 0.00846654, 1, -4.23752e-08, 1.49012e-06, 0.000155807, -0.00105953, -2.01735)
bones/0/enabled = true bones/0/enabled = true
bones/0/position = Vector3(-0.259283, -0.9404, -1.97534) bones/0/position = Vector3(-0.259495, -0.964674, -1.97371)
bones/0/rotation = Quaternion(0.0915277, -0.692111, -0.0341586, 0.715149) bones/0/rotation = Quaternion(0.0915277, -0.692111, -0.0341586, 0.715149)
bones/0/scale = Vector3(1, 1, 1) bones/0/scale = Vector3(1, 1, 1)
bones/1/name = "spine0" bones/1/name = "spine0"
@@ -374,7 +346,7 @@ bones/6/parent = 5
bones/6/rest = Transform3D(0.0598389, 0.98531, 0.15995, -0.975271, 0.0235553, 0.219755, 0.212759, -0.169144, 0.962353, 3.65078e-07, 1.40318, 0) bones/6/rest = Transform3D(0.0598389, 0.98531, 0.15995, -0.975271, 0.0235553, 0.219755, 0.212759, -0.169144, 0.962353, 3.65078e-07, 1.40318, 0)
bones/6/enabled = true bones/6/enabled = true
bones/6/position = Vector3(3.65078e-07, 1.40318, 0) bones/6/position = Vector3(3.65078e-07, 1.40318, 0)
bones/6/rotation = Quaternion(-0.0777813, -0.305234, -0.744803, 0.58826) bones/6/rotation = Quaternion(-0.0695106, -0.302252, -0.744709, 0.590949)
bones/6/scale = Vector3(1, 1, 1) bones/6/scale = Vector3(1, 1, 1)
bones/7/name = "Bone.007" bones/7/name = "Bone.007"
bones/7/parent = 6 bones/7/parent = 6
@@ -409,7 +381,7 @@ bones/11/parent = 1
bones/11/rest = Transform3D(0.981457, 0.0769315, -0.175568, 0.18837, -0.217537, 0.957703, 0.035485, -0.973015, -0.227995, -1.09896e-07, 3.84743, -2.10479e-07) bones/11/rest = Transform3D(0.981457, 0.0769315, -0.175568, 0.18837, -0.217537, 0.957703, 0.035485, -0.973015, -0.227995, -1.09896e-07, 3.84743, -2.10479e-07)
bones/11/enabled = true bones/11/enabled = true
bones/11/position = Vector3(-1.09896e-07, 3.84743, -2.10479e-07) bones/11/position = Vector3(-1.09896e-07, 3.84743, -2.10479e-07)
bones/11/rotation = Quaternion(-0.786087, -0.0628615, 0.0690646, 0.61102) bones/11/rotation = Quaternion(-0.784678, -0.0616085, 0.0719287, 0.612626)
bones/11/scale = Vector3(1, 0.999999, 1) bones/11/scale = Vector3(1, 0.999999, 1)
bones/12/name = "arm2_L" bones/12/name = "arm2_L"
bones/12/parent = 11 bones/12/parent = 11
@@ -437,21 +409,21 @@ bones/15/parent = 1
bones/15/rest = Transform3D(-0.98213, 0.0512573, -0.181089, -0.187541, -0.185921, 0.964501, 0.0157694, 0.981227, 0.192212, 0.00107862, 3.8461, -0.0821097) bones/15/rest = Transform3D(-0.98213, 0.0512573, -0.181089, -0.187541, -0.185921, 0.964501, 0.0157694, 0.981227, 0.192212, 0.00107862, 3.8461, -0.0821097)
bones/15/enabled = true bones/15/enabled = true
bones/15/position = Vector3(0.00107886, 3.8461, -0.0821095) bones/15/position = Vector3(0.00107886, 3.8461, -0.0821095)
bones/15/rotation = Quaternion(-0.209386, 0.735858, 0.623768, -0.15995) bones/15/rotation = Quaternion(-0.210717, 0.737949, 0.621558, -0.157148)
bones/15/scale = Vector3(1, 1, 1) bones/15/scale = Vector3(1, 1, 1)
bones/16/name = "arm2_R" bones/16/name = "arm2_R"
bones/16/parent = 15 bones/16/parent = 15
bones/16/rest = Transform3D(0.999962, -0.00846545, 0.00203661, 0.00853768, 0.99922, -0.0385481, -0.0017087, 0.038564, 0.999254, -4.28408e-07, 3.65838, -2.16067e-06) bones/16/rest = Transform3D(0.999962, -0.00846545, 0.00203661, 0.00853768, 0.99922, -0.0385481, -0.0017087, 0.038564, 0.999254, -4.28408e-07, 3.65838, -2.16067e-06)
bones/16/enabled = true bones/16/enabled = true
bones/16/position = Vector3(-4.28408e-07, 3.65838, -2.16067e-06) bones/16/position = Vector3(-4.28408e-07, 3.65838, -2.16067e-06)
bones/16/rotation = Quaternion(-0.424022, 0.233298, -0.489444, 0.725412) bones/16/rotation = Quaternion(-0.486067, -0.16412, -0.362283, 0.778174)
bones/16/scale = Vector3(1, 1, 0.999999) bones/16/scale = Vector3(1, 1, 0.999999)
bones/17/name = "arm3_R" bones/17/name = "arm3_R"
bones/17/parent = 16 bones/17/parent = 16
bones/17/rest = Transform3D(0.998789, 0.0488077, -0.00615137, -0.0491113, 0.996528, -0.0672226, 0.00284903, 0.0674433, 0.997719, -5.21541e-08, 3.04263, -1.31503e-06) bones/17/rest = Transform3D(0.998789, 0.0488077, -0.00615137, -0.0491113, 0.996528, -0.0672226, 0.00284903, 0.0674433, 0.997719, -5.21541e-08, 3.04263, -1.31503e-06)
bones/17/enabled = true bones/17/enabled = true
bones/17/position = Vector3(-5.21541e-08, 3.04263, -1.31503e-06) bones/17/position = Vector3(-5.21541e-08, 3.04263, -1.31503e-06)
bones/17/rotation = Quaternion(-0.0553628, -0.0361614, 0.62832, 0.77514) bones/17/rotation = Quaternion(-0.0553629, -0.0361614, 0.62832, 0.77514)
bones/17/scale = Vector3(1, 0.999999, 1) bones/17/scale = Vector3(1, 0.999999, 1)
bones/18/name = "hand_R" bones/18/name = "hand_R"
bones/18/parent = 17 bones/18/parent = 17
@@ -464,22 +436,22 @@ bones/19/name = "hip_L"
bones/19/parent = -1 bones/19/parent = -1
bones/19/rest = Transform3D(0.138486, 0.897208, 0.419333, -0.129033, -0.403458, 0.905854, 0.981923, -0.179556, 0.059896, 0.000155807, -0.00105953, -2.01735) bones/19/rest = Transform3D(0.138486, 0.897208, 0.419333, -0.129033, -0.403458, 0.905854, 0.981923, -0.179556, 0.059896, 0.000155807, -0.00105953, -2.01735)
bones/19/enabled = true bones/19/enabled = true
bones/19/position = Vector3(-0.290163, -1.11395, -2.01735) bones/19/position = Vector3(-0.309713, -1.13244, -1.95293)
bones/19/rotation = Quaternion(0.608697, 0.3155, 0.575514, -0.445793) bones/19/rotation = Quaternion(0.612907, 0.310686, 0.569103, -0.451598)
bones/19/scale = Vector3(1, 1, 1) bones/19/scale = Vector3(1, 1, 1)
bones/20/name = "leg1_L" bones/20/name = "leg1_L"
bones/20/parent = 19 bones/20/parent = 19
bones/20/rest = Transform3D(0.945603, 0.113405, 0.304916, -0.324072, 0.410457, 0.852351, -0.0284943, -0.9048, 0.424881, 2.08616e-07, 2.00996, -7.1153e-07) bones/20/rest = Transform3D(0.945603, 0.113405, 0.304916, -0.324072, 0.410457, 0.852351, -0.0284943, -0.9048, 0.424881, 2.08616e-07, 2.00996, -7.1153e-07)
bones/20/enabled = true bones/20/enabled = true
bones/20/position = Vector3(2.08616e-07, 2.00996, -7.1153e-07) bones/20/position = Vector3(2.08616e-07, 2.00996, -7.1153e-07)
bones/20/rotation = Quaternion(-0.30808, -0.444485, -0.267974, 0.797314) bones/20/rotation = Quaternion(-0.312383, -0.439877, -0.275127, 0.795758)
bones/20/scale = Vector3(1, 0.999999, 1) bones/20/scale = Vector3(1, 0.999999, 1)
bones/21/name = "leg2_L" bones/21/name = "leg2_L"
bones/21/parent = 20 bones/21/parent = 20
bones/21/rest = Transform3D(0.990336, -0.138679, 0.00180777, 0.138628, 0.990193, 0.0173138, -0.00419111, -0.0168959, 0.999848, 5.96046e-08, 5.85994, -5.23403e-07) bones/21/rest = Transform3D(0.990336, -0.138679, 0.00180777, 0.138628, 0.990193, 0.0173138, -0.00419111, -0.0168959, 0.999848, 5.96046e-08, 5.85994, -5.23403e-07)
bones/21/enabled = true bones/21/enabled = true
bones/21/position = Vector3(5.96046e-08, 5.85994, -5.23403e-07) bones/21/position = Vector3(5.96046e-08, 5.85994, -5.23403e-07)
bones/21/rotation = Quaternion(-0.060049, 0.00130142, 0.4861, 0.871837) bones/21/rotation = Quaternion(-0.0601787, 0.00130054, 0.487149, 0.871242)
bones/21/scale = Vector3(1, 1, 1) bones/21/scale = Vector3(1, 1, 1)
bones/22/name = "foot1_L" bones/22/name = "foot1_L"
bones/22/parent = 21 bones/22/parent = 21
@@ -513,7 +485,7 @@ bones/26/name = "hip_R"
bones/26/parent = -1 bones/26/parent = -1
bones/26/rest = Transform3D(0.138486, -0.897208, -0.419333, 0.129033, -0.403458, 0.905854, -0.981923, -0.179556, 0.059896, -0.000155807, -0.00105953, -2.01735) bones/26/rest = Transform3D(0.138486, -0.897208, -0.419333, 0.129033, -0.403458, 0.905854, -0.981923, -0.179556, 0.059896, -0.000155807, -0.00105953, -2.01735)
bones/26/enabled = true bones/26/enabled = true
bones/26/position = Vector3(-0.290475, -1.11395, -2.01735) bones/26/position = Vector3(-0.233013, -1.11395, -2.01774)
bones/26/rotation = Quaternion(0.608697, -0.3155, -0.575514, -0.445793) bones/26/rotation = Quaternion(0.608697, -0.3155, -0.575514, -0.445793)
bones/26/scale = Vector3(1, 1, 1) bones/26/scale = Vector3(1, 1, 1)
bones/27/name = "leg1_R" bones/27/name = "leg1_R"
@@ -521,14 +493,14 @@ bones/27/parent = 26
bones/27/rest = Transform3D(0.945603, -0.113405, -0.304916, 0.324072, 0.410457, 0.852351, 0.0284943, -0.9048, 0.424881, -9.54606e-09, 2.00996, -3.52971e-07) bones/27/rest = Transform3D(0.945603, -0.113405, -0.304916, 0.324072, 0.410457, 0.852351, 0.0284943, -0.9048, 0.424881, -9.54606e-09, 2.00996, -3.52971e-07)
bones/27/enabled = true bones/27/enabled = true
bones/27/position = Vector3(-9.54606e-09, 2.00996, -3.52971e-07) bones/27/position = Vector3(-9.54606e-09, 2.00996, -3.52971e-07)
bones/27/rotation = Quaternion(-0.209385, 0.420724, 0.143017, 0.871031) bones/27/rotation = Quaternion(-0.20765, 0.421681, 0.141851, 0.871175)
bones/27/scale = Vector3(1, 0.999999, 1) bones/27/scale = Vector3(1, 0.999999, 1)
bones/28/name = "leg2_R" bones/28/name = "leg2_R"
bones/28/parent = 27 bones/28/parent = 27
bones/28/rest = Transform3D(0.990336, 0.138679, -0.00180777, -0.138628, 0.990193, 0.0173138, 0.00419111, -0.0168959, 0.999848, 4.51691e-08, 5.85994, -3.72529e-09) bones/28/rest = Transform3D(0.990336, 0.138679, -0.00180777, -0.138628, 0.990193, 0.0173138, 0.00419111, -0.0168959, 0.999848, 4.51691e-08, 5.85994, -3.72529e-09)
bones/28/enabled = true bones/28/enabled = true
bones/28/position = Vector3(4.51691e-08, 5.85994, -3.72529e-09) bones/28/position = Vector3(4.51691e-08, 5.85994, -3.72529e-09)
bones/28/rotation = Quaternion(-0.0643786, -0.00115414, -0.513993, 0.855374) bones/28/rotation = Quaternion(-0.0640299, -0.00115644, -0.51121, 0.857067)
bones/28/scale = Vector3(1, 1, 1) bones/28/scale = Vector3(1, 1, 1)
bones/29/name = "foot1_R" bones/29/name = "foot1_R"
bones/29/parent = 28 bones/29/parent = 28
@@ -560,7 +532,7 @@ bones/32/rotation = Quaternion(0.456756, 0.539878, -0.539587, -0.456893)
bones/32/scale = Vector3(1, 1, 1) bones/32/scale = Vector3(1, 1, 1)
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D"] [node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D"]
transform = Transform3D(-0.300929, -0.0901167, -0.949379, -0.328078, -0.924976, 0.191792, -0.895436, 0.369186, 0.248787, -1.6582, 8.32712, 4.94593) transform = Transform3D(-0.291501, -0.0753865, -0.953595, -0.329854, -0.927824, 0.174181, -0.897899, 0.365322, 0.245594, -1.66677, 8.29928, 4.94854)
bone_name = "TOP OF SKULL" bone_name = "TOP OF SKULL"
bone_idx = 8 bone_idx = 8
@@ -577,7 +549,7 @@ skin = SubResource("Skin_e330f")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {
"": ExtResource("4_4vicn") &"": ExtResource("4_4vicn")
} }
[node name="AnimationTree" type="AnimationTree" parent="."] [node name="AnimationTree" type="AnimationTree" parent="."]
@@ -593,7 +565,7 @@ wait_time = 3.5
[node name="HitAnimation" type="AnimationPlayer" parent="."] [node name="HitAnimation" type="AnimationPlayer" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
libraries = { libraries = {
"": SubResource("AnimationLibrary_q1mdo") &"": SubResource("AnimationLibrary_q1mdo")
} }
[node name="Hitbox" type="Area3D" parent="."] [node name="Hitbox" type="Area3D" parent="."]

View File

@@ -39,15 +39,13 @@ Name = "Filth Eater"
Description = "This guy grosses me out." Description = "This guy grosses me out."
metadata/_custom_type_script = ExtResource("4_5eid5") metadata/_custom_type_script = ExtResource("4_5eid5")
[node name="FilthEater" type="RigidBody3D"] [node name="FilthEater" type="CharacterBody3D"]
process_mode = 1 process_mode = 1
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
collision_layer = 10 collision_layer = 10
collision_mask = 11 collision_mask = 11
axis_lock_linear_y = true axis_lock_linear_y = true
axis_lock_angular_x = true axis_lock_angular_x = true
contact_monitor = true
max_contacts_reported = 1
script = ExtResource("1_fyc13") script = ExtResource("1_fyc13")
SecondaryAttackElementalType = 2 SecondaryAttackElementalType = 2
SecondaryAttackElementalDamageBonus = 1.15 SecondaryAttackElementalDamageBonus = 1.15

View File

@@ -14,15 +14,13 @@ radius = 1.0
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"] [sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
radius = 1.20703 radius = 1.20703
[node name="Ballos" type="RigidBody3D"] [node name="Ballos" type="CharacterBody3D"]
process_mode = 1 process_mode = 1
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
collision_layer = 10 collision_layer = 10
collision_mask = 11 collision_mask = 11
axis_lock_linear_y = true axis_lock_linear_y = true
axis_lock_angular_x = true axis_lock_angular_x = true
contact_monitor = true
max_contacts_reported = 1
script = ExtResource("1_v2urn") script = ExtResource("1_v2urn")
[node name="CollisionShape" type="CollisionShape3D" parent="."] [node name="CollisionShape" type="CollisionShape3D" parent="."]

View File

@@ -31,15 +31,13 @@ radius = 1.0
[sub_resource type="SphereShape3D" id="SphereShape3D_lqifn"] [sub_resource type="SphereShape3D" id="SphereShape3D_lqifn"]
radius = 1.20703 radius = 1.20703
[node name="Chariot" type="RigidBody3D"] [node name="Chariot" type="CharacterBody3D"]
process_mode = 1 process_mode = 1
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
collision_layer = 10 collision_layer = 10
collision_mask = 11 collision_mask = 11
axis_lock_linear_y = true axis_lock_linear_y = true
axis_lock_angular_x = true axis_lock_angular_x = true
contact_monitor = true
max_contacts_reported = 1
script = ExtResource("1_hqeyd") script = ExtResource("1_hqeyd")
_enemyStatResource = SubResource("Resource_dvne1") _enemyStatResource = SubResource("Resource_dvne1")

View File

@@ -14,14 +14,12 @@ radius = 1.0
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"] [sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
radius = 1.20703 radius = 1.20703
[node name="Chinthe" type="RigidBody3D"] [node name="Chinthe" type="CharacterBody3D"]
process_mode = 1 process_mode = 1
collision_layer = 10 collision_layer = 10
collision_mask = 11 collision_mask = 11
axis_lock_linear_y = true axis_lock_linear_y = true
axis_lock_angular_x = true axis_lock_angular_x = true
contact_monitor = true
max_contacts_reported = 1
script = ExtResource("1_vw2ww") script = ExtResource("1_vw2ww")
[node name="CollisionShape" type="CollisionShape3D" parent="."] [node name="CollisionShape" type="CollisionShape3D" parent="."]

View File

@@ -33,15 +33,13 @@ radius = 1.0
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"] [sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
radius = 1.20703 radius = 1.20703
[node name="Agi" type="RigidBody3D"] [node name="Agi" type="CharacterBody3D"]
process_mode = 1 process_mode = 1
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
collision_layer = 10 collision_layer = 10
collision_mask = 11 collision_mask = 11
axis_lock_linear_y = true axis_lock_linear_y = true
axis_lock_angular_x = true axis_lock_angular_x = true
contact_monitor = true
max_contacts_reported = 1
script = ExtResource("1_2bycu") script = ExtResource("1_2bycu")
_enemyStatResource = SubResource("Resource_o3b7p") _enemyStatResource = SubResource("Resource_o3b7p")

View File

@@ -1,12 +1,12 @@
@startuml EnemyLogic @startuml EnemyLogic
state "EnemyLogic State" as GameJamDungeon_EnemyLogic_State { state "EnemyLogic State" as GameJamDungeon_EnemyLogic_State {
state "Alive" as GameJamDungeon_EnemyLogic_State_Alive { state "Alive" as GameJamDungeon_EnemyLogic_State_Alive {
state "Activated" as GameJamDungeon_EnemyLogic_State_Activated {
state "Attacking" as GameJamDungeon_EnemyLogic_State_Attacking
state "FollowPlayer" as GameJamDungeon_EnemyLogic_State_FollowPlayer
state "Patrolling" as GameJamDungeon_EnemyLogic_State_Patrolling
}
state "Idle" as GameJamDungeon_EnemyLogic_State_Idle state "Idle" as GameJamDungeon_EnemyLogic_State_Idle
state "Activated" as GameJamDungeon_EnemyLogic_State_Activated {
state "Patrolling" as GameJamDungeon_EnemyLogic_State_Patrolling
state "FollowPlayer" as GameJamDungeon_EnemyLogic_State_FollowPlayer
state "Attacking" as GameJamDungeon_EnemyLogic_State_Attacking
}
} }
state "Defeated" as GameJamDungeon_EnemyLogic_State_Defeated state "Defeated" as GameJamDungeon_EnemyLogic_State_Defeated
} }

View File

@@ -1,15 +1,15 @@
@startuml GameLogic @startuml GameLogic
state "GameLogic State" as GameJamDungeon_GameLogic_State { state "GameLogic State" as GameJamDungeon_GameLogic_State {
state "GameStarted" as GameJamDungeon_GameLogic_State_GameStarted
state "Playing" as GameJamDungeon_GameLogic_State_Playing { state "Playing" as GameJamDungeon_GameLogic_State_Playing {
state "AskForTeleport" as GameJamDungeon_GameLogic_State_AskForTeleport
state "FloorClearedDecisionState" as GameJamDungeon_GameLogic_State_FloorClearedDecisionState state "FloorClearedDecisionState" as GameJamDungeon_GameLogic_State_FloorClearedDecisionState
state "InventoryOpened" as GameJamDungeon_GameLogic_State_InventoryOpened
state "MinimapOpen" as GameJamDungeon_GameLogic_State_MinimapOpen
state "Paused" as GameJamDungeon_GameLogic_State_Paused
state "Resuming" as GameJamDungeon_GameLogic_State_Resuming state "Resuming" as GameJamDungeon_GameLogic_State_Resuming
state "AskForTeleport" as GameJamDungeon_GameLogic_State_AskForTeleport
state "InventoryOpened" as GameJamDungeon_GameLogic_State_InventoryOpened
state "Paused" as GameJamDungeon_GameLogic_State_Paused
state "MinimapOpen" as GameJamDungeon_GameLogic_State_MinimapOpen
} }
state "Quit" as GameJamDungeon_GameLogic_State_Quit state "Quit" as GameJamDungeon_GameLogic_State_Quit
state "GameStarted" as GameJamDungeon_GameLogic_State_GameStarted
} }
GameJamDungeon_GameLogic_State_AskForTeleport --> GameJamDungeon_GameLogic_State_FloorClearedDecisionState : FloorExitReached GameJamDungeon_GameLogic_State_AskForTeleport --> GameJamDungeon_GameLogic_State_FloorClearedDecisionState : FloorExitReached

View File

@@ -1,11 +1,11 @@
@startuml PlayerLogic @startuml PlayerLogic
state "PlayerLogic State" as GameJamDungeon_PlayerLogic_State { state "PlayerLogic State" as GameJamDungeon_PlayerLogic_State {
state "Alive" as GameJamDungeon_PlayerLogic_State_Alive {
state "Attacking" as GameJamDungeon_PlayerLogic_State_Attacking
state "Idle" as GameJamDungeon_PlayerLogic_State_Idle
}
state "Dead" as GameJamDungeon_PlayerLogic_State_Dead
state "Disabled" as GameJamDungeon_PlayerLogic_State_Disabled state "Disabled" as GameJamDungeon_PlayerLogic_State_Disabled
state "Dead" as GameJamDungeon_PlayerLogic_State_Dead
state "Alive" as GameJamDungeon_PlayerLogic_State_Alive {
state "Idle" as GameJamDungeon_PlayerLogic_State_Idle
state "Attacking" as GameJamDungeon_PlayerLogic_State_Attacking
}
} }
GameJamDungeon_PlayerLogic_State_Alive --> GameJamDungeon_PlayerLogic_State_Alive : PhysicsTick GameJamDungeon_PlayerLogic_State_Alive --> GameJamDungeon_PlayerLogic_State_Alive : PhysicsTick