diff --git a/src/data_viewer/DataViewer.cs b/src/data_viewer/DataViewer.cs index ee574639..2d645e5d 100644 --- a/src/data_viewer/DataViewer.cs +++ b/src/data_viewer/DataViewer.cs @@ -51,7 +51,7 @@ public partial class DataViewer : Control Camera3D.Position = Camera3D.Position.Clamp(new Vector3(0, 0, 1), new Vector3(0, 0, 4)); ModelPivot.Rotation = ModelPivot.Rotation.Clamp(Mathf.DegToRad(-60), Mathf.DegToRad(60)); - _currentModel.RotateModel(_currentModel.Basis, CameraPivot.Basis.Z, 0.75f, 0.5f); + _currentModel.RotateModel(_currentModel.Basis, CameraPivot.Basis.Z, 0.75f, 0.5f, false); if (Input.IsActionJustPressed(GameInputs.Attack)) { diff --git a/src/enemy/Enemy.cs b/src/enemy/Enemy.cs index 96e1ff17..9993efd9 100644 --- a/src/enemy/Enemy.cs +++ b/src/enemy/Enemy.cs @@ -89,9 +89,13 @@ public partial class Enemy : RigidBody3D, IEnemy, IProvide var velocity = (targetPosition - GlobalTransform.Origin).Normalized() * 2f * delta; var lookAtDir = GlobalTransform.Origin - velocity; var lookAtPosition = new Vector3(lookAtDir.X, GlobalPosition.Y, lookAtDir.Z); + if (GlobalPosition.DistanceTo(target) > 1.0f && !velocity.IsEqualApprox(Vector3.Zero) && !Position.IsEqualApprox(lookAtPosition)) LookAt(lookAtPosition + new Vector3(0.001f, 0.001f, 0.001f), Vector3.Up); - EnemyModelView.RotateModel(GlobalTransform.Basis, -Player.CurrentBasis.Z); + + var isWalking = _enemyLogic.Value is EnemyLogic.State.Patrolling or EnemyLogic.State.FollowPlayer; + + EnemyModelView.RotateModel(GlobalTransform.Basis, -Player.CurrentBasis.Z, isWalking); _knockbackStrength = _knockbackStrength * 0.9f; MoveAndCollide(velocity + (_knockbackDirection * _knockbackStrength)); } @@ -133,7 +137,6 @@ public partial class Enemy : RigidBody3D, IEnemy, IProvide _currentHP.Sync += OnHPChanged; LineOfSight.BodyEntered += LineOfSight_BodyEntered; PatrolTimer.Timeout += OnPatrolTimeout; - AttackTimer.Timeout += OnAttackTimeout; var rng = new RandomNumberGenerator(); rng.Randomize(); PatrolTimer.WaitTime = rng.RandfRange(7.0f, 15.0f); @@ -151,18 +154,40 @@ public partial class Enemy : RigidBody3D, IEnemy, IProvide rng.Randomize(); var randomizedSpot = new Vector3(rng.RandfRange(-7.0f, 7.0f), 0, rng.RandfRange(-7.0f, 7.0f)); _enemyLogic.Input(new EnemyLogic.Input.PatrolToRandomSpot(GlobalPosition + randomizedSpot)); + _enemyLogic.Input(new EnemyLogic.Input.StartPatrol()); PatrolTimer.WaitTime = rng.RandfRange(5.0f, 10.0f); } public void OnPhysicsProcess(double delta) { _enemyLogic.Input(new EnemyLogic.Input.PhysicsTick(delta)); + + if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(Player.CurrentPosition) < 2.5f) + _enemyLogic.Input(new EnemyLogic.Input.StartAttacking()); + if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(Player.CurrentPosition) > 45f) + _enemyLogic.Input(new EnemyLogic.Input.LostPlayer()); + if (_enemyLogic.Value is EnemyLogic.State.Attacking && GlobalPosition.DistanceTo(Player.CurrentPosition) > 2.5f) + _enemyLogic.Input(new EnemyLogic.Input.Alerted()); + } + + public void StartAttackTimer() + { + AttackTimer.Timeout += OnAttackTimeout; + } + + public void StopAttackTimer() + { + AttackTimer.Timeout -= OnAttackTimeout; + } private void OnAttackTimeout() { if (GlobalPosition.DistanceTo(Player.CurrentPosition) > 2.5f) + { + _enemyLogic.Input(new EnemyLogic.Input.Alerted()); return; + } var rng = new RandomNumberGenerator(); rng.Randomize(); diff --git a/src/enemy/EnemyModelView.cs b/src/enemy/EnemyModelView.cs index 85e80fb1..ea06b231 100644 --- a/src/enemy/EnemyModelView.cs +++ b/src/enemy/EnemyModelView.cs @@ -17,9 +17,9 @@ public interface IEnemyModelView : INode3D public void PlayDeathAnimation(); - public void RotateModel(Basis enemyBasis, Vector3 cameraDirection); + public void RotateModel(Basis enemyBasis, Vector3 cameraDirection, bool isWalking); - public void RotateModel(Basis enemyBasis, Vector3 cameraDirection, float rotateUpperThreshold, float rotateLowerThreshold); + public void RotateModel(Basis enemyBasis, Vector3 cameraDirection, float rotateUpperThreshold, float rotateLowerThreshold, bool isWalking); } [Meta(typeof(IAutoNode))] @@ -28,9 +28,12 @@ public partial class EnemyModelView : Node3D, IEnemyModelView private const string PRIMARY_ATTACK = "primary_attack"; private const string SECONDARY_ATTACK = "secondary_attack"; private const string PRIMARY_SKILL = "primary_skill"; - private const string IDLE_FORWARD = "idle_front_walk"; - private const string IDLE_LEFT = "idle_left_walk"; - private const string IDLE_BACK = "idle_back_walk"; + private const string IDLE_FORWARD = "idle_front"; + private const string IDLE_LEFT = "idle_left"; + private const string IDLE_BACK = "idle_back"; + private const string IDLE_FORWARD_WALK = "idle_front_walk"; + private const string IDLE_LEFT_WALK = "idle_left_walk"; + private const string IDLE_BACK_WALK = "idle_back_walk"; private const string PARAMETERS_PLAYBACK = "parameters/playback"; public override void _Notification(int what) => this.Notify(what); @@ -81,9 +84,14 @@ public partial class EnemyModelView : Node3D, IEnemyModelView tweener.TweenCallback(Callable.From(QueueFree)); } - public void RotateModel(Basis enemyBasis, Vector3 cameraDirection) => RotateModel(enemyBasis, cameraDirection, 0.85f, 0.3f); + public void RotateModel(Basis enemyBasis, Vector3 cameraDirection, bool isWalking) => RotateModel(enemyBasis, cameraDirection, 0.85f, 0.3f, isWalking); - public void RotateModel(Basis enemyBasis, Vector3 cameraDirection, float rotateUpperThreshold, float rotateLowerThreshold) + public void RotateModel( + Basis enemyBasis, + Vector3 cameraDirection, + float rotateUpperThreshold, + float rotateLowerThreshold, + bool isWalking) { var enemyForwardDirection = enemyBasis.Z; var enemyLeftDirection = enemyBasis.X; @@ -93,17 +101,32 @@ public partial class EnemyModelView : Node3D, IEnemyModelView // Check if forward facing. If the dot product is -1, the enemy is facing the camera. if (forwardDotProduct < -rotateUpperThreshold) - AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_FORWARD); + { + if (isWalking) + AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_FORWARD_WALK); + else + AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_FORWARD); + } // Check if backward facing. If the dot product is 1, the enemy is facing the same direction as the camera. else if (forwardDotProduct > rotateUpperThreshold) - AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_BACK); + { + if (isWalking) + AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_BACK_WALK); + else + AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_BACK); + } else { // If the dot product of the perpendicular direction is positive (up to 1), the enemy is facing to the left (since it's mirrored). AnimatedSprite.FlipH = leftDotProduct > 0; // Check if side facing. If the dot product is close to zero in the positive or negative direction, its close to the threshold for turning. if (Mathf.Abs(forwardDotProduct) < rotateLowerThreshold) - AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_LEFT); + { + if (isWalking) + AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_LEFT_WALK); + else + AnimationTree.Get(PARAMETERS_PLAYBACK).As().Travel(IDLE_LEFT); + } } } @@ -117,8 +140,10 @@ public partial class EnemyModelView : Node3D, IEnemyModelView private void AnimationTree_AnimationFinished(StringName animName) { - if (animName == "attack") + if (animName == PRIMARY_ATTACK || animName == SECONDARY_ATTACK || animName == PRIMARY_SKILL) + { AnimationTree.Get("parameters/playback").As().Travel(IDLE_FORWARD); + } } private void SetShaderValue(float shaderValue) diff --git a/src/enemy/IEnemy.cs b/src/enemy/IEnemy.cs index 88011d1f..0662fa9b 100644 --- a/src/enemy/IEnemy.cs +++ b/src/enemy/IEnemy.cs @@ -13,4 +13,8 @@ public interface IEnemy : IKillable public void MoveToLocation(Vector3 target, float delta); public double CurrentHP { get; } + + public void StartAttackTimer(); + + public void StopAttackTimer(); } diff --git a/src/enemy/enemy_types/filth_eater/FilthEater.cs b/src/enemy/enemy_types/filth_eater/FilthEater.cs index e80091ec..5ddcb62c 100644 --- a/src/enemy/enemy_types/filth_eater/FilthEater.cs +++ b/src/enemy/enemy_types/filth_eater/FilthEater.cs @@ -19,6 +19,12 @@ public partial class FilthEater : Enemy, IHasPrimaryAttack, IHasSecondaryAttack [Export] public double SecondaryAttackElementalDamageBonus { get; set; } = 1.0; + public void OnReady() + { + SetPhysicsProcess(true); + EnemyModelView.Hitbox.AreaEntered += Hitbox_AreaEntered; + } + public override void TakeAction() { var rng = new RandomNumberGenerator(); @@ -35,4 +41,14 @@ public partial class FilthEater : Enemy, IHasPrimaryAttack, IHasSecondaryAttack { EnemyModelView.PlaySecondaryAttackAnimation(); } + + private void Hitbox_AreaEntered(Area3D area) + { + var target = area.GetOwner(); + if (target is IPlayer player) + { + var damage = _enemyStatResource.CurrentAttack * PrimaryAttackElementalDamageBonus; + player.TakeDamage(damage, PrimaryAttackElementalType, BattleExtensions.IsCriticalHit(_enemyStatResource.Luck)); + } + } } \ No newline at end of file diff --git a/src/enemy/enemy_types/filth_eater/FilthEater.tscn b/src/enemy/enemy_types/filth_eater/FilthEater.tscn index bfae64ce..46b31480 100644 --- a/src/enemy/enemy_types/filth_eater/FilthEater.tscn +++ b/src/enemy/enemy_types/filth_eater/FilthEater.tscn @@ -1,101 +1,17 @@ -[gd_scene load_steps=128 format=3 uid="uid://cvk007twac22c"] +[gd_scene load_steps=10 format=3 uid="uid://cvk007twac22c"] [ext_resource type="Script" uid="uid://cohal8w5ceneg" path="res://src/enemy/enemy_types/filth_eater/FilthEater.cs" id="1_fyc13"] [ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_mqiog"] -[ext_resource type="Script" uid="uid://6edayafleq8y" path="res://src/hitbox/Hitbox.cs" id="3_ipypc"] -[ext_resource type="Texture2D" uid="uid://cx1wk7n77hdpu" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 1.png" id="4_ag3g0"] -[ext_resource type="Texture2D" uid="uid://bv4du7bb3m6ug" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 1.png" id="4_qpdqy"] -[ext_resource type="Texture2D" uid="uid://bdl6xn7wskn2r" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 2.png" id="5_881nf"] -[ext_resource type="Texture2D" uid="uid://clop1gx0va5gr" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 2.png" id="5_yyxe5"] -[ext_resource type="Texture2D" uid="uid://5iax7vcyt8qt" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 3.png" id="6_b36gv"] -[ext_resource type="Texture2D" uid="uid://ci337oq1l44ho" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 3.png" id="6_syv0y"] -[ext_resource type="Texture2D" uid="uid://dgipkalbfs1f7" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 4.png" id="7_1qmf7"] -[ext_resource type="Texture2D" uid="uid://c8wivayhgj3nd" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 4.png" id="7_pwogy"] -[ext_resource type="Texture2D" uid="uid://d4lkimsumierr" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 5.png" id="8_ax8t2"] -[ext_resource type="Texture2D" uid="uid://bf40014pkwx42" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 5.png" id="8_hj3yj"] -[ext_resource type="Texture2D" uid="uid://cbfbew6sylfa2" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 6.png" id="9_hs56h"] -[ext_resource type="Texture2D" uid="uid://dgc6rf51fioyy" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 6.png" id="9_x3ej0"] -[ext_resource type="Texture2D" uid="uid://ikiiahlk73uc" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 7.png" id="10_bhjmg"] -[ext_resource type="Texture2D" uid="uid://5s13hrs5qkka" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 7.png" id="10_uu3sx"] -[ext_resource type="Texture2D" uid="uid://dfj7678uy2pvl" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 8.png" id="11_8dbcy"] -[ext_resource type="Texture2D" uid="uid://b8owhlm8bl01c" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 8.png" id="11_qr6yl"] -[ext_resource type="Texture2D" uid="uid://dlt0nnxj35n80" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 9.png" id="12_8js62"] -[ext_resource type="Texture2D" uid="uid://dh3uwftcjqyef" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 9.png" id="12_52gnj"] -[ext_resource type="Texture2D" uid="uid://bilk4yaup2s35" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 10.png" id="13_1we81"] -[ext_resource type="Texture2D" uid="uid://bk7wcnonh4jny" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 10.png" id="13_hb0co"] -[ext_resource type="Texture2D" uid="uid://bkl5fxkcekwmp" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 11.png" id="14_i6i7p"] -[ext_resource type="Texture2D" uid="uid://ck5agp22b8gf8" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 12.png" id="15_trgeg"] -[ext_resource type="Texture2D" uid="uid://epvsktx6naj7" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 13.png" id="16_xbrkw"] -[ext_resource type="Texture2D" uid="uid://ca51hi4l16715" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 14.png" id="17_7q6uh"] -[ext_resource type="Texture2D" uid="uid://cygkdbos7lkwp" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 15.png" id="18_hkxpi"] -[ext_resource type="Texture2D" uid="uid://d03m6olqj2w17" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 1.png" id="19_sbko7"] -[ext_resource type="Texture2D" uid="uid://t31ypmfyx5j3" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 2.png" id="20_x3iqd"] -[ext_resource type="Texture2D" uid="uid://dv1gs1w0n5wkg" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 3.png" id="21_767l2"] -[ext_resource type="Texture2D" uid="uid://c25m07wbjbbes" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 4.png" id="22_6e43k"] -[ext_resource type="Texture2D" uid="uid://cu1w0lx0upcqx" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 5.png" id="23_tr33v"] -[ext_resource type="Texture2D" uid="uid://culy6xkoj4qpp" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 6.png" id="24_ny7vm"] -[ext_resource type="Texture2D" uid="uid://dbdfgak3luyys" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 1.png" id="24_us7b5"] -[ext_resource type="Texture2D" uid="uid://cn7xwqx3ha6g6" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 7.png" id="25_k2cb6"] -[ext_resource type="Texture2D" uid="uid://btvjpj3aownnx" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 2.png" id="25_u8hmy"] -[ext_resource type="Texture2D" uid="uid://but1m3lh1bs0t" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 3.png" id="26_qkjhp"] -[ext_resource type="Texture2D" uid="uid://cd8iuk2kcls5a" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 8.png" id="26_w7faw"] -[ext_resource type="Texture2D" uid="uid://dvtoifuhrpyog" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 4.png" id="27_2xal1"] -[ext_resource type="Texture2D" uid="uid://cayeaturveyf" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 9.png" id="27_sl1r7"] -[ext_resource type="Texture2D" uid="uid://3oxlqj4455f8" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 5.png" id="28_7cvs7"] -[ext_resource type="Texture2D" uid="uid://ccvpfhpkue7vh" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 10.png" id="28_py2qk"] -[ext_resource type="Texture2D" uid="uid://d4lxgwn6rikvb" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 6.png" id="29_8402p"] -[ext_resource type="Texture2D" uid="uid://j8y2un2sivdv" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 11.png" id="29_jasni"] -[ext_resource type="Texture2D" uid="uid://v53lbiw8me5m" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 1.png" id="29_tqvh6"] -[ext_resource type="Texture2D" uid="uid://bg2xs2axaulm5" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 2.png" id="30_d6cs6"] -[ext_resource type="Texture2D" uid="uid://ww6k6t8y5ksp" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 7.png" id="30_itvqp"] -[ext_resource type="Texture2D" uid="uid://by2nkoei1mwpy" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 12.png" id="30_jcbck"] -[ext_resource type="Texture2D" uid="uid://vsdbtc6ba2eh" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 8.png" id="31_6jqkx"] -[ext_resource type="Texture2D" uid="uid://wbqtaldweh1m" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 13.png" id="31_ea8qb"] -[ext_resource type="Texture2D" uid="uid://cl6b81krcl604" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 3.png" id="31_xst2h"] -[ext_resource type="Texture2D" uid="uid://di8rpvj2hmsai" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 9.png" id="32_b655w"] -[ext_resource type="Texture2D" uid="uid://kqh1umtrh00a" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 14.png" id="32_h82fp"] -[ext_resource type="Texture2D" uid="uid://bs3h416iapkfp" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 4.png" id="32_qi1g0"] -[ext_resource type="Texture2D" uid="uid://cu5c3turddubn" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 5.png" id="33_b428r"] -[ext_resource type="Texture2D" uid="uid://bmt7tyt2iu2nb" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 15.png" id="33_dfndb"] -[ext_resource type="Texture2D" uid="uid://kiko1cme3emk" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 10.png" id="33_n5gl2"] -[ext_resource type="Texture2D" uid="uid://1keo4y5rylbv" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 6.png" id="34_moswi"] -[ext_resource type="Texture2D" uid="uid://t8hshsb7dm7o" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 16.png" id="34_xibve"] -[ext_resource type="Texture2D" uid="uid://bw7hqv3mry5eq" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 17.png" id="35_bx6l1"] -[ext_resource type="Texture2D" uid="uid://qj2746r20rek" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 7.png" id="35_d1q80"] -[ext_resource type="Texture2D" uid="uid://ntpw05kexehl" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 18.png" id="36_ttpm8"] -[ext_resource type="Texture2D" uid="uid://dxi670b1ja3hp" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 8.png" id="36_ykptl"] -[ext_resource type="Texture2D" uid="uid://bu6n2fxwqihhx" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 19.png" id="37_lwexn"] -[ext_resource type="Texture2D" uid="uid://cl1srhwevno7u" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 9.png" id="37_qw2oy"] -[ext_resource type="Texture2D" uid="uid://cisx7av366072" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 10.png" id="38_hlhq5"] -[ext_resource type="Texture2D" uid="uid://bmrb1ud156sb" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 20.png" id="38_w5c4w"] -[ext_resource type="Texture2D" uid="uid://duhs4f0lupkmv" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 21.png" id="39_8rhj7"] -[ext_resource type="Texture2D" uid="uid://llvv56omqv8a" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 22.png" id="40_cjjbw"] -[ext_resource type="Texture2D" uid="uid://birlvuiwu1yft" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 23.png" id="41_mg6yl"] -[ext_resource type="Texture2D" uid="uid://dwg7g0ehtgash" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 24.png" id="42_y7n5o"] -[ext_resource type="Texture2D" uid="uid://4d1qa2rkbbqv" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 25.png" id="43_ek6mm"] -[ext_resource type="Texture2D" uid="uid://bi3juww8n01r3" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 26.png" id="44_7ap51"] -[ext_resource type="Texture2D" uid="uid://t7xfmlom7cu" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 27.png" id="45_7uf6q"] -[ext_resource type="Texture2D" uid="uid://c86knltqhwlwu" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 28.png" id="46_kqrcm"] -[ext_resource type="Texture2D" uid="uid://eps1cucptmph" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 29.png" id="47_q15vg"] -[ext_resource type="Texture2D" uid="uid://14epu41pdqsj" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 30.png" id="48_0ameu"] -[ext_resource type="Texture2D" uid="uid://bc1ncvqgwlno0" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 31.png" id="49_o0yjx"] -[ext_resource type="Texture2D" uid="uid://cb1kqd4it5se1" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 32.png" id="50_46mal"] -[ext_resource type="Texture2D" uid="uid://bo5ckfudrx7fv" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 33.png" id="51_sumwx"] -[ext_resource type="Texture2D" uid="uid://bhnttvctkibde" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 34.png" id="52_xsekn"] -[ext_resource type="Texture2D" uid="uid://dttt1ykvp0b38" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 35.png" id="53_8ndjr"] -[ext_resource type="Texture2D" uid="uid://c4rgp13cnfa3l" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 36.png" id="54_88ycb"] -[ext_resource type="Texture2D" uid="uid://clpo0cltnnh66" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 37.png" id="55_au34h"] -[ext_resource type="Texture2D" uid="uid://c6c3hdmgd7rel" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 38.png" id="56_ie8y6"] -[ext_resource type="Texture2D" uid="uid://d32ej6fsx53io" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 39.png" id="57_o526l"] -[ext_resource type="Texture2D" uid="uid://cy5dacfrmsxwe" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 40.png" id="58_4tgv5"] +[ext_resource type="PackedScene" uid="uid://bup8c4x1na3aw" path="res://src/enemy/enemy_types/filth_eater/FilthEaterModelView.tscn" id="3_rrwed"] +[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="4_5eid5"] [sub_resource type="Resource" id="Resource_0y048"] script = ExtResource("2_mqiog") CurrentHP = 50.0 MaximumHP = 50.0 -CurrentAttack = 5 +CurrentAttack = 15 CurrentDefense = 5 -MaxAttack = 5 +MaxAttack = 15 MaxDefense = 5 ExpFromDefeat = 15 Luck = 0.05 @@ -114,496 +30,15 @@ radius = 1.0 height = 5.0 radius = 1.0 -[sub_resource type="BoxShape3D" id="BoxShape3D_0yire"] -size = Vector3(1, 0.565, 2) - -[sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"] -viewport_path = NodePath("Sprite3D/SubViewport") - -[sub_resource type="SpriteFrames" id="SpriteFrames_ttwal"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": ExtResource("4_qpdqy") -}, { -"duration": 1.0, -"texture": ExtResource("5_yyxe5") -}, { -"duration": 1.0, -"texture": ExtResource("6_b36gv") -}, { -"duration": 1.0, -"texture": ExtResource("7_pwogy") -}, { -"duration": 1.0, -"texture": ExtResource("8_hj3yj") -}, { -"duration": 1.0, -"texture": ExtResource("9_x3ej0") -}, { -"duration": 1.0, -"texture": ExtResource("10_bhjmg") -}, { -"duration": 1.0, -"texture": ExtResource("11_8dbcy") -}, { -"duration": 1.0, -"texture": ExtResource("12_52gnj") -}, { -"duration": 1.0, -"texture": ExtResource("13_hb0co") -}, { -"duration": 1.0, -"texture": ExtResource("14_i6i7p") -}, { -"duration": 1.0, -"texture": ExtResource("15_trgeg") -}, { -"duration": 1.0, -"texture": ExtResource("16_xbrkw") -}, { -"duration": 1.0, -"texture": ExtResource("17_7q6uh") -}, { -"duration": 1.0, -"texture": ExtResource("18_hkxpi") -}], -"loop": true, -"name": &"attack", -"speed": 12.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": ExtResource("19_sbko7") -}, { -"duration": 1.0, -"texture": ExtResource("20_x3iqd") -}, { -"duration": 1.0, -"texture": ExtResource("21_767l2") -}, { -"duration": 1.0, -"texture": ExtResource("22_6e43k") -}, { -"duration": 1.0, -"texture": ExtResource("23_tr33v") -}, { -"duration": 1.0, -"texture": ExtResource("24_ny7vm") -}, { -"duration": 1.0, -"texture": ExtResource("25_k2cb6") -}, { -"duration": 1.0, -"texture": ExtResource("26_w7faw") -}, { -"duration": 1.0, -"texture": ExtResource("27_sl1r7") -}, { -"duration": 1.0, -"texture": ExtResource("28_py2qk") -}, { -"duration": 1.0, -"texture": ExtResource("29_jasni") -}, { -"duration": 1.0, -"texture": ExtResource("30_jcbck") -}, { -"duration": 1.0, -"texture": ExtResource("31_ea8qb") -}, { -"duration": 1.0, -"texture": ExtResource("32_h82fp") -}, { -"duration": 1.0, -"texture": ExtResource("33_dfndb") -}, { -"duration": 1.0, -"texture": ExtResource("34_xibve") -}, { -"duration": 1.0, -"texture": ExtResource("35_bx6l1") -}, { -"duration": 1.0, -"texture": ExtResource("36_ttpm8") -}, { -"duration": 1.0, -"texture": ExtResource("37_lwexn") -}, { -"duration": 1.0, -"texture": ExtResource("38_w5c4w") -}, { -"duration": 1.0, -"texture": ExtResource("39_8rhj7") -}, { -"duration": 1.0, -"texture": ExtResource("40_cjjbw") -}, { -"duration": 1.0, -"texture": ExtResource("41_mg6yl") -}, { -"duration": 1.0, -"texture": ExtResource("42_y7n5o") -}, { -"duration": 1.0, -"texture": ExtResource("43_ek6mm") -}, { -"duration": 1.0, -"texture": ExtResource("44_7ap51") -}, { -"duration": 1.0, -"texture": ExtResource("45_7uf6q") -}, { -"duration": 1.0, -"texture": ExtResource("46_kqrcm") -}, { -"duration": 1.0, -"texture": ExtResource("47_q15vg") -}, { -"duration": 1.0, -"texture": ExtResource("48_0ameu") -}, { -"duration": 1.0, -"texture": ExtResource("49_o0yjx") -}, { -"duration": 1.0, -"texture": ExtResource("50_46mal") -}, { -"duration": 1.0, -"texture": ExtResource("51_sumwx") -}, { -"duration": 1.0, -"texture": ExtResource("52_xsekn") -}, { -"duration": 1.0, -"texture": ExtResource("53_8ndjr") -}, { -"duration": 1.0, -"texture": ExtResource("54_88ycb") -}, { -"duration": 1.0, -"texture": ExtResource("55_au34h") -}, { -"duration": 1.0, -"texture": ExtResource("56_ie8y6") -}, { -"duration": 1.0, -"texture": ExtResource("57_o526l") -}, { -"duration": 1.0, -"texture": ExtResource("58_4tgv5") -}], -"loop": true, -"name": &"attack2", -"speed": 12.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": ExtResource("4_ag3g0") -}, { -"duration": 1.0, -"texture": ExtResource("5_881nf") -}, { -"duration": 1.0, -"texture": ExtResource("6_syv0y") -}, { -"duration": 1.0, -"texture": ExtResource("7_1qmf7") -}, { -"duration": 1.0, -"texture": ExtResource("8_ax8t2") -}, { -"duration": 1.0, -"texture": ExtResource("9_hs56h") -}, { -"duration": 1.0, -"texture": ExtResource("10_uu3sx") -}, { -"duration": 1.0, -"texture": ExtResource("11_qr6yl") -}, { -"duration": 1.0, -"texture": ExtResource("12_8js62") -}, { -"duration": 1.0, -"texture": ExtResource("13_1we81") -}], -"loop": true, -"name": &"idle_back_walk", -"speed": 12.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": ExtResource("29_tqvh6") -}, { -"duration": 1.0, -"texture": ExtResource("30_d6cs6") -}, { -"duration": 1.0, -"texture": ExtResource("31_xst2h") -}, { -"duration": 1.0, -"texture": ExtResource("32_qi1g0") -}, { -"duration": 1.0, -"texture": ExtResource("33_b428r") -}, { -"duration": 1.0, -"texture": ExtResource("34_moswi") -}, { -"duration": 1.0, -"texture": ExtResource("35_d1q80") -}, { -"duration": 1.0, -"texture": ExtResource("36_ykptl") -}, { -"duration": 1.0, -"texture": ExtResource("37_qw2oy") -}, { -"duration": 1.0, -"texture": ExtResource("38_hlhq5") -}], -"loop": true, -"name": &"idle_front_walk", -"speed": 12.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": ExtResource("24_us7b5") -}, { -"duration": 1.0, -"texture": ExtResource("25_u8hmy") -}, { -"duration": 1.0, -"texture": ExtResource("26_qkjhp") -}, { -"duration": 1.0, -"texture": ExtResource("27_2xal1") -}, { -"duration": 1.0, -"texture": ExtResource("28_7cvs7") -}, { -"duration": 1.0, -"texture": ExtResource("29_8402p") -}, { -"duration": 1.0, -"texture": ExtResource("30_itvqp") -}, { -"duration": 1.0, -"texture": ExtResource("31_6jqkx") -}, { -"duration": 1.0, -"texture": ExtResource("32_b655w") -}, { -"duration": 1.0, -"texture": ExtResource("33_n5gl2") -}], -"loop": true, -"name": &"idle_left_walk", -"speed": 12.0 -}] - -[sub_resource type="Animation" id="Animation_ch8ic"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Hitbox/CollisionShape3D:disabled") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite2D:animation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [&"attack2"] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Sprite3D/SubViewport/AnimatedSprite2D:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [0] -} - -[sub_resource type="Animation" id="Animation_1tda5"] -resource_name = "idle_back_walk" -length = 1.25001 -loop_mode = 1 -step = 0.0833333 - -[sub_resource type="Animation" id="Animation_31nry"] -resource_name = "idle_front_walk" -length = 1.25001 -loop_mode = 1 -step = 0.0833333 - -[sub_resource type="Animation" id="Animation_1870e"] -resource_name = "idle_left_walk" -length = 1.25001 -loop_mode = 1 -step = 0.0833333 - -[sub_resource type="Animation" id="Animation_ruc6s"] -resource_name = "attack" -length = 0.750008 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Hitbox/CollisionShape3D:disabled") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.25, 0.666666), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 1, -"values": [true, false, true] -} - -[sub_resource type="Animation" id="Animation_wwl4v"] -resource_name = "attack2" -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite2D:animation") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [&"attack2"] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite2D:frame") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [0] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_6tj5r"] -_data = { -&"RESET": SubResource("Animation_ch8ic"), -&"idle_back_walk": SubResource("Animation_1tda5"), -&"idle_front_walk": SubResource("Animation_31nry"), -&"idle_left_walk": SubResource("Animation_1870e"), -&"primary_attack": SubResource("Animation_ruc6s"), -&"secondary_attack": SubResource("Animation_wwl4v") -} - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o0tmb"] -animation = &"idle_back_walk" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_a6s5c"] -animation = &"idle_front_walk" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dvj10"] -animation = &"idle_left_walk" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_erbrx"] -animation = &"primary_attack" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_fyc13"] -animation = &"secondary_attack" - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vljb2"] -advance_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3xv6a"] -switch_mode = 1 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0h1op"] -switch_mode = 1 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_361b7"] -switch_mode = 1 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_wftla"] -switch_mode = 1 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gqqkl"] -switch_mode = 1 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5cj36"] -switch_mode = 1 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4t05h"] - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8hgxu"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_fq2yw"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yqm0k"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bmy1k"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mxl7w"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0y048"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_uhpql"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_l7m4y"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_464kr"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_45of7"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_c482n"] -switch_mode = 2 - -[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_acrfn"] -states/End/position = Vector2(1464, 100) -states/idle_back_walk/node = SubResource("AnimationNodeAnimation_o0tmb") -states/idle_back_walk/position = Vector2(519, 75.9474) -states/idle_front_walk/node = SubResource("AnimationNodeAnimation_a6s5c") -states/idle_front_walk/position = Vector2(331, -12) -states/idle_left_walk/node = SubResource("AnimationNodeAnimation_dvj10") -states/idle_left_walk/position = Vector2(331, 196.947) -states/primary_attack/node = SubResource("AnimationNodeAnimation_erbrx") -states/primary_attack/position = Vector2(1067, 33.9474) -states/secondary_attack/node = SubResource("AnimationNodeAnimation_fyc13") -states/secondary_attack/position = Vector2(1057, 151.947) -transitions = ["Start", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_vljb2"), "idle_front_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_3xv6a"), "idle_left_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_0h1op"), "idle_front_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_361b7"), "idle_back_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_wftla"), "idle_back_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_gqqkl"), "idle_left_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_5cj36"), "idle_front_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_4t05h"), "primary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_8hgxu"), "primary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_fq2yw"), "primary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_yqm0k"), "idle_back_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_bmy1k"), "idle_left_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_mxl7w"), "idle_back_walk", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_0y048"), "idle_left_walk", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_uhpql"), "idle_front_walk", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_l7m4y"), "secondary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_464kr"), "secondary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_45of7"), "secondary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_c482n")] -graph_offset = Vector2(-121, -17.0526) - [sub_resource type="SphereShape3D" id="SphereShape3D_0y048"] radius = 1.0 +[sub_resource type="Resource" id="Resource_fv5vf"] +script = ExtResource("4_5eid5") +Name = "Filth Eater" +Description = "This guy grosses me out." +metadata/_custom_type_script = ExtResource("4_5eid5") + [node name="FilthEater" type="RigidBody3D"] process_mode = 1 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) @@ -647,55 +82,11 @@ unique_name_in_owner = true wait_time = 0.8 autostart = true -[node name="Hitbox" type="Area3D" parent="."] -unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0) -collision_layer = 64 -collision_mask = 64 -script = ExtResource("3_ipypc") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Hitbox"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.189337, 0.217529, -1.45579) -shape = SubResource("BoxShape3D_0yire") -disabled = true - [node name="Raycast" type="RayCast3D" parent="."] unique_name_in_owner = true target_position = Vector3(0, 0, -5) collision_mask = 3 -[node name="Sprite3D" type="Sprite3D" parent="."] -transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0.0862446, 0) -billboard = 2 -shaded = true -texture_filter = 0 -render_priority = 100 -texture = SubResource("ViewportTexture_h1kaf") - -[node name="SubViewport" type="SubViewport" parent="Sprite3D"] -disable_3d = true -transparent_bg = true -handle_input_locally = false -size = Vector2i(300, 300) -render_target_update_mode = 4 - -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Sprite3D/SubViewport"] -sprite_frames = SubResource("SpriteFrames_ttwal") -animation = &"attack2" -offset = Vector2(150, 150) - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -unique_name_in_owner = true -libraries = { -&"": SubResource("AnimationLibrary_6tj5r") -} - -[node name="AnimationTree" type="AnimationTree" parent="."] -unique_name_in_owner = true -root_node = NodePath("%AnimationTree/..") -tree_root = SubResource("AnimationNodeStateMachine_acrfn") -anim_player = NodePath("../AnimationPlayer") - [node name="Collision" type="Area3D" parent="."] collision_layer = 2048 collision_mask = 0 @@ -703,3 +94,7 @@ collision_mask = 0 [node name="CollisionShape3D" type="CollisionShape3D" parent="Collision"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.120117, 0.221246, 0) shape = SubResource("SphereShape3D_0y048") + +[node name="EnemyModelView" parent="." instance=ExtResource("3_rrwed")] +unique_name_in_owner = true +EnemyLoreInfo = SubResource("Resource_fv5vf") diff --git a/src/enemy/enemy_types/filth_eater/FilthEaterModelView.tscn b/src/enemy/enemy_types/filth_eater/FilthEaterModelView.tscn new file mode 100644 index 00000000..f4488d04 --- /dev/null +++ b/src/enemy/enemy_types/filth_eater/FilthEaterModelView.tscn @@ -0,0 +1,891 @@ +[gd_scene load_steps=156 format=3 uid="uid://bup8c4x1na3aw"] + +[ext_resource type="Script" uid="uid://chymnqdw7hibn" path="res://src/enemy/EnemyModelView.cs" id="1_jsdjt"] +[ext_resource type="Texture2D" uid="uid://bdar3daydbkge" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 1.png" id="2_vpn42"] +[ext_resource type="Texture2D" uid="uid://o214hr614jit" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 2.png" id="3_7tggm"] +[ext_resource type="Texture2D" uid="uid://hyipatqsvukp" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 3.png" id="4_usgpm"] +[ext_resource type="Texture2D" uid="uid://sgj8yf8vsocq" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 4.png" id="5_ovibr"] +[ext_resource type="Texture2D" uid="uid://x8opkqq25djn" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 5.png" id="6_bhity"] +[ext_resource type="Texture2D" uid="uid://bmet672yyne78" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 6.png" id="7_6vimm"] +[ext_resource type="Texture2D" uid="uid://bgusk0212nx0j" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 7.png" id="8_b1kem"] +[ext_resource type="Texture2D" uid="uid://dmntrmq3btkft" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 8.png" id="9_81s5h"] +[ext_resource type="Texture2D" uid="uid://ffj2hr4qqyln" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 9.png" id="10_gbkfe"] +[ext_resource type="Texture2D" uid="uid://bm1cbtx4kywo4" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 10.png" id="11_k1s5a"] +[ext_resource type="Texture2D" uid="uid://runh757ueg5f" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 11.png" id="12_lemlj"] +[ext_resource type="Texture2D" uid="uid://cx4h5q6wueqx8" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 12.png" id="13_pl2jt"] +[ext_resource type="Texture2D" uid="uid://tc64bxenok5l" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 13.png" id="14_ptf8k"] +[ext_resource type="Texture2D" uid="uid://dnbt4acfvo84o" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 14.png" id="15_loeab"] +[ext_resource type="Texture2D" uid="uid://dqb2opf4cabl3" path="res://src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 15.png" id="16_edhco"] +[ext_resource type="Texture2D" uid="uid://bmocc6xynyify" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 1.png" id="17_nwrau"] +[ext_resource type="Texture2D" uid="uid://ctac7m3x1lvwe" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 2.png" id="18_v2qih"] +[ext_resource type="Texture2D" uid="uid://ruvsc5a5gwf3" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 3.png" id="19_4c1md"] +[ext_resource type="Texture2D" uid="uid://dll3r3dqvpej3" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 4.png" id="20_goihn"] +[ext_resource type="Texture2D" uid="uid://b8s07qwgcda0d" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 5.png" id="21_icis1"] +[ext_resource type="Texture2D" uid="uid://btqbb8eyqiubk" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 6.png" id="22_8q25d"] +[ext_resource type="Texture2D" uid="uid://jd7dvnr00ylk" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 7.png" id="23_4a5ts"] +[ext_resource type="Texture2D" uid="uid://df2bufdndmlig" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 8.png" id="24_sqr7e"] +[ext_resource type="Texture2D" uid="uid://btoq431qn2yq0" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 9.png" id="25_a0xhj"] +[ext_resource type="Texture2D" uid="uid://exbmjfi0ic63" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 10.png" id="26_fgfpp"] +[ext_resource type="Texture2D" uid="uid://ca413xrf5rfef" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 11.png" id="27_s6aj5"] +[ext_resource type="Texture2D" uid="uid://713cp3mv6b4s" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 12.png" id="28_7fcax"] +[ext_resource type="Texture2D" uid="uid://bx3l2xl5lbnvr" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 13.png" id="29_fjekd"] +[ext_resource type="Texture2D" uid="uid://ctkqec7psl27x" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 14.png" id="30_kkltw"] +[ext_resource type="Texture2D" uid="uid://ou6aoq3157xc" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 15.png" id="31_wqsiy"] +[ext_resource type="Texture2D" uid="uid://dch5ap1kutysk" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 16.png" id="32_kfb12"] +[ext_resource type="Texture2D" uid="uid://wwk6carcrhkm" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 17.png" id="33_yruiq"] +[ext_resource type="Texture2D" uid="uid://jc3w7okwwul" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 18.png" id="34_otm43"] +[ext_resource type="Texture2D" uid="uid://dr6aw5o0dlm3h" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 19.png" id="35_uibxq"] +[ext_resource type="Texture2D" uid="uid://brhq8xdhcisee" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 20.png" id="36_se6s4"] +[ext_resource type="Texture2D" uid="uid://b0f4ywlw6qjg4" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 21.png" id="37_e8my8"] +[ext_resource type="Texture2D" uid="uid://d0s5rohemvg8q" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 22.png" id="38_h8cq6"] +[ext_resource type="Texture2D" uid="uid://dh2c7ikj6k25w" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 23.png" id="39_5ws5l"] +[ext_resource type="Texture2D" uid="uid://cxi0prctj4rca" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 24.png" id="40_6w02o"] +[ext_resource type="Texture2D" uid="uid://c8qtxhl4fuhae" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 25.png" id="41_baw20"] +[ext_resource type="Texture2D" uid="uid://m3dfoeh3fcnl" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 26.png" id="42_4f1dv"] +[ext_resource type="Texture2D" uid="uid://chb8ipvevxokv" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 27.png" id="43_xsqsu"] +[ext_resource type="Texture2D" uid="uid://c6oxhyqgxjuij" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 28.png" id="44_t7txr"] +[ext_resource type="Texture2D" uid="uid://crvgrtjyt08rf" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 29.png" id="45_mmwwm"] +[ext_resource type="Texture2D" uid="uid://1vyxpd413rxp" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 30.png" id="46_uoxil"] +[ext_resource type="Texture2D" uid="uid://dniodtxp2roo3" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 31.png" id="47_6nrom"] +[ext_resource type="Texture2D" uid="uid://capmyixro7vdr" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 32.png" id="48_ibce1"] +[ext_resource type="Texture2D" uid="uid://bjlgvnqp5n1a1" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 33.png" id="49_yghoo"] +[ext_resource type="Texture2D" uid="uid://04j4uotkqg3n" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 34.png" id="50_23jqc"] +[ext_resource type="Texture2D" uid="uid://buxebs8i5ool4" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 35.png" id="51_76ppw"] +[ext_resource type="Texture2D" uid="uid://nrqph1d3u4d" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 36.png" id="52_el40o"] +[ext_resource type="Texture2D" uid="uid://qyyl8x7b5url" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 37.png" id="53_qf8ap"] +[ext_resource type="Texture2D" uid="uid://bkm8w8qju6ojd" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 38.png" id="54_xxxgj"] +[ext_resource type="Texture2D" uid="uid://d2gfdhwnlpx44" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 39.png" id="55_0wpy5"] +[ext_resource type="Texture2D" uid="uid://dfinkpqoewvdo" path="res://src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 40.png" id="56_tnfhd"] +[ext_resource type="Texture2D" uid="uid://8k6jpchal0r7" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 1.png" id="57_8r0mm"] +[ext_resource type="Texture2D" uid="uid://djurx0km185ki" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 2.png" id="58_2yrab"] +[ext_resource type="Texture2D" uid="uid://b3fv4r6jqr0ln" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 3.png" id="59_7707u"] +[ext_resource type="Texture2D" uid="uid://cch7x848dymwt" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 4.png" id="60_uok4m"] +[ext_resource type="Texture2D" uid="uid://bpy7rgnlxn5yj" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 5.png" id="61_tm6xl"] +[ext_resource type="Texture2D" uid="uid://bhx3isrsanrsp" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 6.png" id="62_a4tm8"] +[ext_resource type="Texture2D" uid="uid://d2mroaaomar06" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 7.png" id="63_8q0bs"] +[ext_resource type="Texture2D" uid="uid://ckspslfap4ftr" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 8.png" id="64_6lwpr"] +[ext_resource type="Texture2D" uid="uid://dlgf7ybn22qxq" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 9.png" id="65_g8bx7"] +[ext_resource type="Texture2D" uid="uid://dth3ijcas0ik3" path="res://src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 10.png" id="66_mmiv6"] +[ext_resource type="Texture2D" uid="uid://cfsn43ur26cdm" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 1.png" id="67_aldps"] +[ext_resource type="Texture2D" uid="uid://bhvfn8ivbf4ft" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 2.png" id="68_ev7xu"] +[ext_resource type="Texture2D" uid="uid://dv3luun17uogb" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 3.png" id="69_48d2b"] +[ext_resource type="Texture2D" uid="uid://c3qps6ydrvlvb" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 4.png" id="70_mkjvr"] +[ext_resource type="Texture2D" uid="uid://l4xotnpkh1b1" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 5.png" id="71_bpq0n"] +[ext_resource type="Texture2D" uid="uid://cituuuichmghm" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 6.png" id="72_i3840"] +[ext_resource type="Texture2D" uid="uid://cskq44syg3ksp" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 7.png" id="73_dq6k8"] +[ext_resource type="Texture2D" uid="uid://d00a7mu16bm3n" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 8.png" id="74_gbdn0"] +[ext_resource type="Texture2D" uid="uid://dcq2q3n4enpf6" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 9.png" id="75_176fl"] +[ext_resource type="Texture2D" uid="uid://2p0hu703jem8" path="res://src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 10.png" id="76_eyg13"] +[ext_resource type="Texture2D" uid="uid://d038d3hf7652i" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 1.png" id="77_wcnf4"] +[ext_resource type="Texture2D" uid="uid://do1xtg4s3u88w" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 2.png" id="78_jkvs8"] +[ext_resource type="Texture2D" uid="uid://y6p4w8emisdp" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 3.png" id="79_1d7tg"] +[ext_resource type="Texture2D" uid="uid://d0s0vfqgxo4ch" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 4.png" id="80_kvegm"] +[ext_resource type="Texture2D" uid="uid://c1pgbp26wxpw2" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 5.png" id="81_238em"] +[ext_resource type="Texture2D" uid="uid://cnmxqnexnb6to" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 6.png" id="82_soorf"] +[ext_resource type="Texture2D" uid="uid://l6sj31rtfj0" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 7.png" id="83_yg0qa"] +[ext_resource type="Texture2D" uid="uid://nhbclk8h0vkm" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 8.png" id="84_iqg8f"] +[ext_resource type="Texture2D" uid="uid://kjq0epk60s5b" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 9.png" id="85_8eyuc"] +[ext_resource type="Texture2D" uid="uid://snhdh4kc60np" path="res://src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 10.png" id="86_k7dm5"] +[ext_resource type="Script" uid="uid://6edayafleq8y" path="res://src/hitbox/Hitbox.cs" id="87_7tggm"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_7tggm"] +viewport_path = NodePath("Sprite3D/SubViewport") + +[sub_resource type="SpriteFrames" id="SpriteFrames_673a4"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("57_8r0mm") +}, { +"duration": 1.0, +"texture": ExtResource("58_2yrab") +}, { +"duration": 1.0, +"texture": ExtResource("59_7707u") +}, { +"duration": 1.0, +"texture": ExtResource("60_uok4m") +}, { +"duration": 1.0, +"texture": ExtResource("61_tm6xl") +}, { +"duration": 1.0, +"texture": ExtResource("62_a4tm8") +}, { +"duration": 1.0, +"texture": ExtResource("63_8q0bs") +}, { +"duration": 1.0, +"texture": ExtResource("64_6lwpr") +}, { +"duration": 1.0, +"texture": ExtResource("65_g8bx7") +}, { +"duration": 1.0, +"texture": ExtResource("66_mmiv6") +}], +"loop": true, +"name": &"idle_back_walk", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("67_aldps") +}, { +"duration": 1.0, +"texture": ExtResource("68_ev7xu") +}, { +"duration": 1.0, +"texture": ExtResource("69_48d2b") +}, { +"duration": 1.0, +"texture": ExtResource("70_mkjvr") +}, { +"duration": 1.0, +"texture": ExtResource("71_bpq0n") +}, { +"duration": 1.0, +"texture": ExtResource("72_i3840") +}, { +"duration": 1.0, +"texture": ExtResource("73_dq6k8") +}, { +"duration": 1.0, +"texture": ExtResource("74_gbdn0") +}, { +"duration": 1.0, +"texture": ExtResource("75_176fl") +}, { +"duration": 1.0, +"texture": ExtResource("76_eyg13") +}], +"loop": true, +"name": &"idle_front_walk", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("77_wcnf4") +}, { +"duration": 1.0, +"texture": ExtResource("78_jkvs8") +}, { +"duration": 1.0, +"texture": ExtResource("79_1d7tg") +}, { +"duration": 1.0, +"texture": ExtResource("80_kvegm") +}, { +"duration": 1.0, +"texture": ExtResource("81_238em") +}, { +"duration": 1.0, +"texture": ExtResource("82_soorf") +}, { +"duration": 1.0, +"texture": ExtResource("83_yg0qa") +}, { +"duration": 1.0, +"texture": ExtResource("84_iqg8f") +}, { +"duration": 1.0, +"texture": ExtResource("85_8eyuc") +}, { +"duration": 1.0, +"texture": ExtResource("86_k7dm5") +}], +"loop": true, +"name": &"idle_side_walk", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_vpn42") +}, { +"duration": 1.0, +"texture": ExtResource("3_7tggm") +}, { +"duration": 1.0, +"texture": ExtResource("4_usgpm") +}, { +"duration": 1.0, +"texture": ExtResource("5_ovibr") +}, { +"duration": 1.0, +"texture": ExtResource("6_bhity") +}, { +"duration": 1.0, +"texture": ExtResource("7_6vimm") +}, { +"duration": 1.0, +"texture": ExtResource("8_b1kem") +}, { +"duration": 1.0, +"texture": ExtResource("9_81s5h") +}, { +"duration": 1.0, +"texture": ExtResource("10_gbkfe") +}, { +"duration": 1.0, +"texture": ExtResource("11_k1s5a") +}, { +"duration": 1.0, +"texture": ExtResource("12_lemlj") +}, { +"duration": 1.0, +"texture": ExtResource("13_pl2jt") +}, { +"duration": 1.0, +"texture": ExtResource("14_ptf8k") +}, { +"duration": 1.0, +"texture": ExtResource("15_loeab") +}, { +"duration": 1.0, +"texture": ExtResource("16_edhco") +}], +"loop": true, +"name": &"primary_attack", +"speed": 12.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("17_nwrau") +}, { +"duration": 1.0, +"texture": ExtResource("18_v2qih") +}, { +"duration": 1.0, +"texture": ExtResource("19_4c1md") +}, { +"duration": 1.0, +"texture": ExtResource("20_goihn") +}, { +"duration": 1.0, +"texture": ExtResource("21_icis1") +}, { +"duration": 1.0, +"texture": ExtResource("22_8q25d") +}, { +"duration": 1.0, +"texture": ExtResource("23_4a5ts") +}, { +"duration": 1.0, +"texture": ExtResource("24_sqr7e") +}, { +"duration": 1.0, +"texture": ExtResource("25_a0xhj") +}, { +"duration": 1.0, +"texture": ExtResource("26_fgfpp") +}, { +"duration": 1.0, +"texture": ExtResource("27_s6aj5") +}, { +"duration": 1.0, +"texture": ExtResource("28_7fcax") +}, { +"duration": 1.0, +"texture": ExtResource("29_fjekd") +}, { +"duration": 1.0, +"texture": ExtResource("30_kkltw") +}, { +"duration": 1.0, +"texture": ExtResource("31_wqsiy") +}, { +"duration": 1.0, +"texture": ExtResource("32_kfb12") +}, { +"duration": 1.0, +"texture": ExtResource("33_yruiq") +}, { +"duration": 1.0, +"texture": ExtResource("34_otm43") +}, { +"duration": 1.0, +"texture": ExtResource("35_uibxq") +}, { +"duration": 1.0, +"texture": ExtResource("36_se6s4") +}, { +"duration": 1.0, +"texture": ExtResource("37_e8my8") +}, { +"duration": 1.0, +"texture": ExtResource("38_h8cq6") +}, { +"duration": 1.0, +"texture": ExtResource("39_5ws5l") +}, { +"duration": 1.0, +"texture": ExtResource("40_6w02o") +}, { +"duration": 1.0, +"texture": ExtResource("41_baw20") +}, { +"duration": 1.0, +"texture": ExtResource("42_4f1dv") +}, { +"duration": 1.0, +"texture": ExtResource("43_xsqsu") +}, { +"duration": 1.0, +"texture": ExtResource("44_t7txr") +}, { +"duration": 1.0, +"texture": ExtResource("45_mmwwm") +}, { +"duration": 1.0, +"texture": ExtResource("46_uoxil") +}, { +"duration": 1.0, +"texture": ExtResource("47_6nrom") +}, { +"duration": 1.0, +"texture": ExtResource("48_ibce1") +}, { +"duration": 1.0, +"texture": ExtResource("49_yghoo") +}, { +"duration": 1.0, +"texture": ExtResource("50_23jqc") +}, { +"duration": 1.0, +"texture": ExtResource("51_76ppw") +}, { +"duration": 1.0, +"texture": ExtResource("52_el40o") +}, { +"duration": 1.0, +"texture": ExtResource("53_qf8ap") +}, { +"duration": 1.0, +"texture": ExtResource("54_xxxgj") +}, { +"duration": 1.0, +"texture": ExtResource("55_0wpy5") +}, { +"duration": 1.0, +"texture": ExtResource("56_tnfhd") +}], +"loop": true, +"name": &"secondary_attack", +"speed": 12.0 +}] + +[sub_resource type="BoxShape3D" id="BoxShape3D_usgpm"] +size = Vector3(1, 0.565, 2) + +[sub_resource type="Animation" id="Animation_b157j"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite: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("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_back_walk"] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Hitbox/CollisionShape3D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_b1kem"] +resource_name = "idle_back" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_back_walk"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_l5yrx"] +resource_name = "idle_walk_back" +length = 0.750008 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 5, 6, 7, 8, 9] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_back_walk"] +} + +[sub_resource type="Animation" id="Animation_bhity"] +resource_name = "idle_front" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite: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("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.0333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_front_walk"] +} + +[sub_resource type="Animation" id="Animation_ttnhl"] +resource_name = "idle_walk_front" +length = 0.833342 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_front_walk"] +} + +[sub_resource type="Animation" id="Animation_6vimm"] +resource_name = "idle_left" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_side_walk"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_ovibr"] +resource_name = "idle_side_walk" +length = 0.750008 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_side_walk"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +} + +[sub_resource type="Animation" id="Animation_7tggm"] +resource_name = "primary_attack" +length = 1.08334 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"primary_attack"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75, 0.833333, 0.916667, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Hitbox/CollisionShape3D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.588603, 0.833705), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [true, false, true] +} + +[sub_resource type="Animation" id="Animation_usgpm"] +resource_name = "secondary_attack" +length = 3.25001 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"secondary_attack"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75, 0.833333, 0.916667, 1, 1.08333, 1.16667, 1.25, 1.33333, 1.41667, 1.5, 1.58333, 1.66667, 1.75, 1.83333, 1.91667, 2, 2.08333, 2.16667, 2.25, 2.33333, 2.41667, 2.5, 2.58333, 2.66667, 2.75, 2.83333, 2.91667, 3, 3.08333, 3.17257, 3.25), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Hitbox/CollisionShape3D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1.75453, 2.16781), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [true, false, true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_tbr0l"] +_data = { +&"RESET": SubResource("Animation_b157j"), +&"idle_back": SubResource("Animation_b1kem"), +&"idle_back_walk": SubResource("Animation_l5yrx"), +&"idle_front": SubResource("Animation_bhity"), +&"idle_front_walk": SubResource("Animation_ttnhl"), +&"idle_left": SubResource("Animation_6vimm"), +&"idle_left_walk": SubResource("Animation_ovibr"), +&"primary_attack": SubResource("Animation_7tggm"), +&"secondary_attack": SubResource("Animation_usgpm") +} + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7tggm"] +animation = &"idle_back" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o0tmb"] +animation = &"idle_back_walk" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_usgpm"] +animation = &"idle_front" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_a6s5c"] +animation = &"idle_front_walk" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ovibr"] +animation = &"idle_left" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dvj10"] +animation = &"idle_left_walk" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_erbrx"] +animation = &"primary_attack" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_fyc13"] +animation = &"secondary_attack" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3xv6a"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0h1op"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_361b7"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_wftla"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gqqkl"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5cj36"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4t05h"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8hgxu"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_fq2yw"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yqm0k"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bmy1k"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mxl7w"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7tggm"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_usgpm"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ovibr"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bhity"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6vimm"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_b1kem"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_81s5h"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gbkfe"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_k1s5a"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_lemlj"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_pl2jt"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ptf8k"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_loeab"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_edhco"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nwrau"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_v2qih"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4c1md"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_goihn"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_icis1"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8q25d"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4a5ts"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sqr7e"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_a0xhj"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_fgfpp"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_s6aj5"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7fcax"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_fjekd"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kkltw"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_wqsiy"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kfb12"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yruiq"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_otm43"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_uibxq"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_se6s4"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_q1wiq"] +states/End/position = Vector2(1463, 100) +states/Start/position = Vector2(-63, 66) +states/idle_back/node = SubResource("AnimationNodeAnimation_7tggm") +states/idle_back/position = Vector2(20, 5.18198) +states/idle_back_walk/node = SubResource("AnimationNodeAnimation_o0tmb") +states/idle_back_walk/position = Vector2(636, 52.9474) +states/idle_front/node = SubResource("AnimationNodeAnimation_usgpm") +states/idle_front/position = Vector2(74, 156.947) +states/idle_front_walk/node = SubResource("AnimationNodeAnimation_a6s5c") +states/idle_front_walk/position = Vector2(359, -71) +states/idle_left/node = SubResource("AnimationNodeAnimation_ovibr") +states/idle_left/position = Vector2(108, -126) +states/idle_left_walk/node = SubResource("AnimationNodeAnimation_dvj10") +states/idle_left_walk/position = Vector2(347, 243.947) +states/primary_attack/node = SubResource("AnimationNodeAnimation_erbrx") +states/primary_attack/position = Vector2(1919, -71) +states/secondary_attack/node = SubResource("AnimationNodeAnimation_fyc13") +states/secondary_attack/position = Vector2(1933, 308.947) +transitions = ["idle_front_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_3xv6a"), "idle_left_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_0h1op"), "idle_front_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_361b7"), "idle_back_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_wftla"), "idle_back_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_gqqkl"), "idle_left_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_5cj36"), "idle_front_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_4t05h"), "primary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_8hgxu"), "primary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_fq2yw"), "primary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_yqm0k"), "idle_back_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_bmy1k"), "idle_left_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_mxl7w"), "idle_front_walk", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_7tggm"), "idle_back_walk", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_usgpm"), "idle_left_walk", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_ovibr"), "secondary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_bhity"), "secondary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_6vimm"), "secondary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_b1kem"), "Start", "idle_front", SubResource("AnimationNodeStateMachineTransition_81s5h"), "idle_front", "idle_left", SubResource("AnimationNodeStateMachineTransition_gbkfe"), "idle_front", "idle_back", SubResource("AnimationNodeStateMachineTransition_k1s5a"), "idle_left", "idle_front", SubResource("AnimationNodeStateMachineTransition_lemlj"), "idle_left", "idle_back", SubResource("AnimationNodeStateMachineTransition_pl2jt"), "idle_back", "idle_front", SubResource("AnimationNodeStateMachineTransition_ptf8k"), "idle_back", "idle_left", SubResource("AnimationNodeStateMachineTransition_loeab"), "idle_back", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_edhco"), "idle_back", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_nwrau"), "idle_back", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_v2qih"), "idle_left", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_4c1md"), "idle_left", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_goihn"), "idle_left", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_icis1"), "idle_front", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_8q25d"), "idle_front", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_4a5ts"), "idle_front", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_sqr7e"), "idle_front", "primary_attack", SubResource("AnimationNodeStateMachineTransition_a0xhj"), "idle_back", "primary_attack", SubResource("AnimationNodeStateMachineTransition_fgfpp"), "idle_left", "primary_attack", SubResource("AnimationNodeStateMachineTransition_s6aj5"), "primary_attack", "idle_back", SubResource("AnimationNodeStateMachineTransition_7fcax"), "primary_attack", "idle_left", SubResource("AnimationNodeStateMachineTransition_fjekd"), "primary_attack", "idle_front", SubResource("AnimationNodeStateMachineTransition_kkltw"), "idle_front", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_wqsiy"), "idle_left", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_kfb12"), "idle_back", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_yruiq"), "secondary_attack", "idle_back", SubResource("AnimationNodeStateMachineTransition_otm43"), "secondary_attack", "idle_left", SubResource("AnimationNodeStateMachineTransition_uibxq"), "secondary_attack", "idle_front", SubResource("AnimationNodeStateMachineTransition_se6s4")] +graph_offset = Vector2(-121, 94.2273) + +[node name="EnemyModelView" type="Node3D"] +script = ExtResource("1_jsdjt") + +[node name="Sprite3D" type="Sprite3D" parent="."] +transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0.0862446, 0) +billboard = 2 +shaded = true +texture_filter = 0 +render_priority = 100 +texture = SubResource("ViewportTexture_7tggm") + +[node name="SubViewport" type="SubViewport" parent="Sprite3D"] +disable_3d = true +transparent_bg = true +handle_input_locally = false +size = Vector2i(300, 300) +render_target_update_mode = 4 + +[node name="AnimatedSprite" type="AnimatedSprite2D" parent="Sprite3D/SubViewport"] +unique_name_in_owner = true +position = Vector2(150, 150) +sprite_frames = SubResource("SpriteFrames_673a4") +animation = &"idle_back_walk" + +[node name="Hitbox" type="Area3D" parent="."] +unique_name_in_owner = true +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0) +collision_layer = 64 +collision_mask = 64 +script = ExtResource("87_7tggm") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Hitbox"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.189337, 0.217529, -1.45579) +shape = SubResource("BoxShape3D_usgpm") +disabled = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +unique_name_in_owner = true +libraries = { +&"": SubResource("AnimationLibrary_tbr0l") +} + +[node name="AnimationTree" type="AnimationTree" parent="."] +unique_name_in_owner = true +root_node = NodePath("%AnimationTree/..") +tree_root = SubResource("AnimationNodeStateMachine_q1wiq") +anim_player = NodePath("../AnimationPlayer") diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 1.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 1.png.import index fe9b464f..84e7d1b2 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 1.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 1.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bv4du7bb3m6ug" +uid="uid://bdar3daydbkge" path="res://.godot/imported/Layer 1.png-6df3dd98cc9b3179807aae903731666d.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 10.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 10.png.import index c78bce83..db4681cc 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 10.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 10.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bk7wcnonh4jny" +uid="uid://bm1cbtx4kywo4" path="res://.godot/imported/Layer 10.png-d362cc35aa808124e03539ff3b9212f2.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 11.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 11.png.import index 4db2e808..a9a3a3fe 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 11.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 11.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bkl5fxkcekwmp" +uid="uid://runh757ueg5f" path="res://.godot/imported/Layer 11.png-0ae7fe13f924d5a6bba2a7b4b046da1f.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 12.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 12.png.import index ff45d76e..ada89e1b 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 12.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 12.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ck5agp22b8gf8" +uid="uid://cx4h5q6wueqx8" path="res://.godot/imported/Layer 12.png-68dbc39bd922beee27d7e1d667078d6c.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 13.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 13.png.import index a0410dfe..02094a53 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 13.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 13.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://epvsktx6naj7" +uid="uid://tc64bxenok5l" path="res://.godot/imported/Layer 13.png-4ce03ec7c10976e909aa14c97ec6fa93.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 14.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 14.png.import index 56e9b945..64b01f37 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 14.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 14.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ca51hi4l16715" +uid="uid://dnbt4acfvo84o" path="res://.godot/imported/Layer 14.png-23bcb1609577b6a6369edf178b4e7309.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 15.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 15.png.import index e5ff1913..f3fd0629 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 15.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 15.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cygkdbos7lkwp" +uid="uid://dqb2opf4cabl3" path="res://.godot/imported/Layer 15.png-adffb8fd5e148efa818d2fce32b57e94.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 2.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 2.png.import index 81f12481..c3a149b7 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 2.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 2.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://clop1gx0va5gr" +uid="uid://o214hr614jit" path="res://.godot/imported/Layer 2.png-7045832edf464fd4dd0418aa6e3bb1e2.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 3.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 3.png.import index 56288e13..48dd3cd4 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 3.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 3.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://5iax7vcyt8qt" +uid="uid://hyipatqsvukp" path="res://.godot/imported/Layer 3.png-21a1ff227e59da118df0874eeadde6b4.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 4.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 4.png.import index 6ad17335..d07053ee 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 4.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 4.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c8wivayhgj3nd" +uid="uid://sgj8yf8vsocq" path="res://.godot/imported/Layer 4.png-5dc4dc8398f07b7c30cab1c9ec30e8ae.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 5.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 5.png.import index c60ab698..93f86ba9 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 5.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 5.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bf40014pkwx42" +uid="uid://x8opkqq25djn" path="res://.godot/imported/Layer 5.png-53d3803755a0527f9e40920da3595d8c.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 6.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 6.png.import index 8512b6fd..cace0183 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 6.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 6.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dgc6rf51fioyy" +uid="uid://bmet672yyne78" path="res://.godot/imported/Layer 6.png-dd7ae15bdf8b762d9aba30338d70b916.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 7.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 7.png.import index 36b4280f..e59dfc44 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 7.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 7.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ikiiahlk73uc" +uid="uid://bgusk0212nx0j" path="res://.godot/imported/Layer 7.png-0a72eeed9b2ffe942521419b93f596d4.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 8.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 8.png.import index 9a8f6c36..a9faed5d 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 8.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 8.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dfj7678uy2pvl" +uid="uid://dmntrmq3btkft" path="res://.godot/imported/Layer 8.png-b58c658ebf9e6e6a00ef54bfdccd143f.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 9.png.import b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 9.png.import index 33c1c1d0..8dabedd3 100644 --- a/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 9.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/SWIPE/Layer 9.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dh3uwftcjqyef" +uid="uid://ffj2hr4qqyln" path="res://.godot/imported/Layer 9.png-a9cdc75ccb301c198fb92a5636c3adae.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 1.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 1.png.import index 79a1777e..56828814 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 1.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 1.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d03m6olqj2w17" +uid="uid://bmocc6xynyify" path="res://.godot/imported/Layer 1.png-d07e11351e6260f4d9af1590eea7ef1d.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 10.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 10.png.import index cc9246c2..07fb8215 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 10.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 10.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ccvpfhpkue7vh" +uid="uid://exbmjfi0ic63" path="res://.godot/imported/Layer 10.png-d6c946a827ce39563272afae63270733.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 11.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 11.png.import index ac038367..3c9d9d7b 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 11.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 11.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://j8y2un2sivdv" +uid="uid://ca413xrf5rfef" path="res://.godot/imported/Layer 11.png-26a7b42f29c6fc910f4060424b152075.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 12.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 12.png.import index d4bd6cc6..c804eb6d 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 12.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 12.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://by2nkoei1mwpy" +uid="uid://713cp3mv6b4s" path="res://.godot/imported/Layer 12.png-b81deb218d64464f74cfdef2aa311a81.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 13.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 13.png.import index 05ba3482..8c59c8b8 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 13.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 13.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://wbqtaldweh1m" +uid="uid://bx3l2xl5lbnvr" path="res://.godot/imported/Layer 13.png-c01657dee6c3351b2713a98394fb7f37.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 14.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 14.png.import index bcc0ea43..6c0388b9 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 14.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 14.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://kqh1umtrh00a" +uid="uid://ctkqec7psl27x" path="res://.godot/imported/Layer 14.png-36b2167a60d87f755be70da52222b7b3.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 15.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 15.png.import index df888c7c..cd4db57c 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 15.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 15.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bmt7tyt2iu2nb" +uid="uid://ou6aoq3157xc" path="res://.godot/imported/Layer 15.png-a0424091cebcec72043146ffe2200fa0.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 16.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 16.png.import index 5f0ea72c..855aa47c 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 16.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 16.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://t8hshsb7dm7o" +uid="uid://dch5ap1kutysk" path="res://.godot/imported/Layer 16.png-2905d8662e870f57ad5cd094bd0e6851.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 17.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 17.png.import index 2aaf3a4b..cc8bf856 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 17.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 17.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bw7hqv3mry5eq" +uid="uid://wwk6carcrhkm" path="res://.godot/imported/Layer 17.png-e865b9b48dc46fdd9bae865763a53221.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 18.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 18.png.import index c4508d91..034a3c44 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 18.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 18.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ntpw05kexehl" +uid="uid://jc3w7okwwul" path="res://.godot/imported/Layer 18.png-d7fa650b1830f31e634aef69735a7498.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 19.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 19.png.import index 43348411..a033b124 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 19.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 19.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bu6n2fxwqihhx" +uid="uid://dr6aw5o0dlm3h" path="res://.godot/imported/Layer 19.png-673ea0d3dce2d6cb8673a0f1206c53b1.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 2.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 2.png.import index 33e4effb..08b474be 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 2.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 2.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://t31ypmfyx5j3" +uid="uid://ctac7m3x1lvwe" path="res://.godot/imported/Layer 2.png-da316ffac7c63abedc13bd869bc5b43e.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 20.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 20.png.import index 951c50be..fbce10ae 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 20.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 20.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bmrb1ud156sb" +uid="uid://brhq8xdhcisee" path="res://.godot/imported/Layer 20.png-4281651de5f42244f4f845782400d157.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 21.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 21.png.import index 999e85b1..0ae37ed4 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 21.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 21.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://duhs4f0lupkmv" +uid="uid://b0f4ywlw6qjg4" path="res://.godot/imported/Layer 21.png-f9ef2445fafc97506bf8e36c8e22b538.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 22.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 22.png.import index 484871e6..e5cda964 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 22.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 22.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://llvv56omqv8a" +uid="uid://d0s5rohemvg8q" path="res://.godot/imported/Layer 22.png-3a7014d2efd2bbea339b8af5c49c0239.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 23.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 23.png.import index 7e15021f..e191c68c 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 23.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 23.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://birlvuiwu1yft" +uid="uid://dh2c7ikj6k25w" path="res://.godot/imported/Layer 23.png-73a4d52733c6be3574e43036764db5ae.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 24.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 24.png.import index e15e0019..e7893241 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 24.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 24.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dwg7g0ehtgash" +uid="uid://cxi0prctj4rca" path="res://.godot/imported/Layer 24.png-a708d480c8bbe17913c2e689426142d4.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 25.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 25.png.import index 07569d9e..9f989b08 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 25.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 25.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://4d1qa2rkbbqv" +uid="uid://c8qtxhl4fuhae" path="res://.godot/imported/Layer 25.png-9d2f645da262c031751a7b2314364a1a.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 26.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 26.png.import index e2791acd..a3c26347 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 26.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 26.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bi3juww8n01r3" +uid="uid://m3dfoeh3fcnl" path="res://.godot/imported/Layer 26.png-e29dce7342c3060b5023d6fc09042386.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 27.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 27.png.import index 453b61fe..2c2babaf 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 27.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 27.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://t7xfmlom7cu" +uid="uid://chb8ipvevxokv" path="res://.godot/imported/Layer 27.png-bad2ab85dc1e731c01ba0ab2cfb51dc6.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 28.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 28.png.import index f7f1b502..63e9a26e 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 28.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 28.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c86knltqhwlwu" +uid="uid://c6oxhyqgxjuij" path="res://.godot/imported/Layer 28.png-09fb2b108de714a173bfb0e9fcf5615e.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 29.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 29.png.import index 1001a995..d63226b7 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 29.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 29.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://eps1cucptmph" +uid="uid://crvgrtjyt08rf" path="res://.godot/imported/Layer 29.png-b9b2dce66adaa07d0e40f9eb7ac4f5a9.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 3.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 3.png.import index 0cf192cc..e6857509 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 3.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 3.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dv1gs1w0n5wkg" +uid="uid://ruvsc5a5gwf3" path="res://.godot/imported/Layer 3.png-ea7baa985541a01282c499379b5056a8.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 30.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 30.png.import index dda61238..b753fa67 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 30.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 30.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://14epu41pdqsj" +uid="uid://1vyxpd413rxp" path="res://.godot/imported/Layer 30.png-cea791142ec87bcb8e6c72d425b64715.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 31.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 31.png.import index c8cbf0cc..924c32ef 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 31.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 31.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bc1ncvqgwlno0" +uid="uid://dniodtxp2roo3" path="res://.godot/imported/Layer 31.png-b4f496c35a19f812d0e403692d0e8b3c.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 32.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 32.png.import index 227fd24e..460213f1 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 32.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 32.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cb1kqd4it5se1" +uid="uid://capmyixro7vdr" path="res://.godot/imported/Layer 32.png-d23b18ff504aa9af6459ee1cefd3cede.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 33.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 33.png.import index d2c72b53..69cee81d 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 33.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 33.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bo5ckfudrx7fv" +uid="uid://bjlgvnqp5n1a1" path="res://.godot/imported/Layer 33.png-e2328d3fa8fde7cc5f6b7dfcd0775b8c.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 34.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 34.png.import index 082bb94f..d137d1ac 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 34.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 34.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bhnttvctkibde" +uid="uid://04j4uotkqg3n" path="res://.godot/imported/Layer 34.png-93bc22f843335b125259e844b7c85840.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 35.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 35.png.import index 2ddc469e..5bdf0c6c 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 35.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 35.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dttt1ykvp0b38" +uid="uid://buxebs8i5ool4" path="res://.godot/imported/Layer 35.png-8e5f997bfbd105ff454dfa4e72dd9283.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 36.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 36.png.import index 16d35195..afb49cac 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 36.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 36.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c4rgp13cnfa3l" +uid="uid://nrqph1d3u4d" path="res://.godot/imported/Layer 36.png-ff0342aaeff7ad5226ab5c9f351a57ee.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 37.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 37.png.import index ed1d9370..01197f26 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 37.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 37.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://clpo0cltnnh66" +uid="uid://qyyl8x7b5url" path="res://.godot/imported/Layer 37.png-599f31ef81c93d2a1eff81dadf21d1d2.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 38.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 38.png.import index 98c526fe..7d38e385 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 38.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 38.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c6c3hdmgd7rel" +uid="uid://bkm8w8qju6ojd" path="res://.godot/imported/Layer 38.png-68217dec623edcd5f7f8a3223b16f39f.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 39.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 39.png.import index d31ee687..8dcf6151 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 39.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 39.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d32ej6fsx53io" +uid="uid://d2gfdhwnlpx44" path="res://.godot/imported/Layer 39.png-bad3d689861dd5d1fa8b9f4e7fcb079f.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 4.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 4.png.import index 9c5a281c..3c5261ab 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 4.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 4.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c25m07wbjbbes" +uid="uid://dll3r3dqvpej3" path="res://.godot/imported/Layer 4.png-3c01c4f44683f912a20909dbff7b21c5.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 40.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 40.png.import index ee8ed173..41cef0bf 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 40.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 40.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cy5dacfrmsxwe" +uid="uid://dfinkpqoewvdo" path="res://.godot/imported/Layer 40.png-e9fb78e0d68cbfdbdf7109ed3322915f.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 5.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 5.png.import index a50eb94b..162f46e2 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 5.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 5.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cu1w0lx0upcqx" +uid="uid://b8s07qwgcda0d" path="res://.godot/imported/Layer 5.png-87c3db9613295416a0ecc8559b1ca433.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 6.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 6.png.import index 0cecec2c..1bafa3cc 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 6.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 6.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://culy6xkoj4qpp" +uid="uid://btqbb8eyqiubk" path="res://.godot/imported/Layer 6.png-7eacdb0d93225b15ea9e6d4bf9cea57c.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 7.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 7.png.import index 13712ae4..b501ae9f 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 7.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 7.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cn7xwqx3ha6g6" +uid="uid://jd7dvnr00ylk" path="res://.godot/imported/Layer 7.png-072424e6af0afa2f8acee700b8cf8355.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 8.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 8.png.import index cb6815b9..0252d81b 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 8.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 8.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cd8iuk2kcls5a" +uid="uid://df2bufdndmlig" path="res://.godot/imported/Layer 8.png-5739701c8d79114f329a0dbb41d4dcb5.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 9.png.import b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 9.png.import index f17e0f22..41a9c556 100644 --- a/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 9.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/TELLERIC ATTACK/Layer 9.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cayeaturveyf" +uid="uid://btoq431qn2yq0" path="res://.godot/imported/Layer 9.png-9998235fa0be6f1e351f290d7a16ebc3.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 1.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 1.png.import index 5eea8c94..4f5789c5 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 1.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 1.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cx1wk7n77hdpu" +uid="uid://8k6jpchal0r7" path="res://.godot/imported/Layer 1.png-61623fbdabecec48b58faad4301f0cf0.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 10.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 10.png.import index 0fccae7f..36960a63 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 10.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 10.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bilk4yaup2s35" +uid="uid://dth3ijcas0ik3" path="res://.godot/imported/Layer 10.png-9b0a47c1fb8363d5b6dd27d160d4571b.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 2.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 2.png.import index 4ade1717..4862f0a8 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 2.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 2.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bdl6xn7wskn2r" +uid="uid://djurx0km185ki" path="res://.godot/imported/Layer 2.png-95550d2410448800f59774868e97bdc8.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 3.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 3.png.import index 4efe2458..da670909 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 3.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 3.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ci337oq1l44ho" +uid="uid://b3fv4r6jqr0ln" path="res://.godot/imported/Layer 3.png-234616afc795fd2b64b38bfc40aa4d7e.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 4.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 4.png.import index 1a8a7b81..448b9a82 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 4.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 4.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dgipkalbfs1f7" +uid="uid://cch7x848dymwt" path="res://.godot/imported/Layer 4.png-1c60ae0e1a838bc89cf53d9171e74b4a.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 5.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 5.png.import index 90169d5e..b815624b 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 5.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 5.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d4lkimsumierr" +uid="uid://bpy7rgnlxn5yj" path="res://.godot/imported/Layer 5.png-75e2efc54d4e7fd18b5e1abe774207e4.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 6.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 6.png.import index 0344c064..6c4a7bf4 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 6.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 6.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cbfbew6sylfa2" +uid="uid://bhx3isrsanrsp" path="res://.godot/imported/Layer 6.png-e0e0ed0bbab709ce5f7203b1f965fbf6.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 7.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 7.png.import index eca1ac2f..d20c6fbe 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 7.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 7.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://5s13hrs5qkka" +uid="uid://d2mroaaomar06" path="res://.godot/imported/Layer 7.png-9170971ef16ae62ce8fbe314948888b1.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 8.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 8.png.import index 43806348..1ef89ca8 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 8.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 8.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b8owhlm8bl01c" +uid="uid://ckspslfap4ftr" path="res://.godot/imported/Layer 8.png-b6eb2127ab6a71e5ba70196c6bbb5b6c.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 9.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 9.png.import index e2baeda6..ccf263f1 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 9.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK BACK/Layer 9.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dlt0nnxj35n80" +uid="uid://dlgf7ybn22qxq" path="res://.godot/imported/Layer 9.png-be1f39071c30907306bd621b1f6e565a.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 1.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 1.png.import index 5100cda4..24eef575 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 1.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 1.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://v53lbiw8me5m" +uid="uid://cfsn43ur26cdm" path="res://.godot/imported/Layer 1.png-0fc715e6d24fb606d38d98dbad8b389b.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 10.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 10.png.import index 68ce5616..2606673f 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 10.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 10.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cisx7av366072" +uid="uid://2p0hu703jem8" path="res://.godot/imported/Layer 10.png-331a47a5ae4ee326a65ca851f7f14bad.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 2.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 2.png.import index ee8bc228..1199a507 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 2.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 2.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bg2xs2axaulm5" +uid="uid://bhvfn8ivbf4ft" path="res://.godot/imported/Layer 2.png-722912ed068caf19a674d5723b998880.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 3.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 3.png.import index 18a18072..332acbb6 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 3.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 3.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cl6b81krcl604" +uid="uid://dv3luun17uogb" path="res://.godot/imported/Layer 3.png-e5d6eef5a4f3fce7e3623f68bfe58960.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 4.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 4.png.import index 24dc1f3e..2b679c07 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 4.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 4.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bs3h416iapkfp" +uid="uid://c3qps6ydrvlvb" path="res://.godot/imported/Layer 4.png-900106d391e489efca608517c8276d22.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 5.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 5.png.import index 0dc44ee4..45921b81 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 5.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 5.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cu5c3turddubn" +uid="uid://l4xotnpkh1b1" path="res://.godot/imported/Layer 5.png-ccaf7fda30e11414d007c994aeec0fba.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 6.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 6.png.import index 59480492..83921c36 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 6.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 6.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://1keo4y5rylbv" +uid="uid://cituuuichmghm" path="res://.godot/imported/Layer 6.png-b61805ab50d4963587c6eec969a9b1e2.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 7.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 7.png.import index 039e9027..4d5916c6 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 7.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 7.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://qj2746r20rek" +uid="uid://cskq44syg3ksp" path="res://.godot/imported/Layer 7.png-a67edf8ad847814920b162e0ba196c2b.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 8.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 8.png.import index 925502c5..b67fa0bf 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 8.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 8.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dxi670b1ja3hp" +uid="uid://d00a7mu16bm3n" path="res://.godot/imported/Layer 8.png-c224a88034d316e2a05bcf1acf06c80b.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 9.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 9.png.import index 5eae07c5..c9408cfe 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 9.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK FRONT/Layer 9.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cl1srhwevno7u" +uid="uid://dcq2q3n4enpf6" path="res://.godot/imported/Layer 9.png-129f31fa23ab007c34b9784fdad7d140.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 1.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 1.png.import index 9001a09c..b60b4157 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 1.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 1.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dbdfgak3luyys" +uid="uid://d038d3hf7652i" path="res://.godot/imported/Layer 1.png-2af52a93fe130f87eee4f702b270eb81.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 10.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 10.png.import index 10448018..3e5613dd 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 10.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 10.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://kiko1cme3emk" +uid="uid://snhdh4kc60np" path="res://.godot/imported/Layer 10.png-535dcc86e13e1b5bcefffaa908977c61.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 2.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 2.png.import index 489af953..cf650ab8 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 2.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 2.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://btvjpj3aownnx" +uid="uid://do1xtg4s3u88w" path="res://.godot/imported/Layer 2.png-2048fc08985f8df1b35bcc7f2d215056.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 3.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 3.png.import index 796b5b90..2eb98a98 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 3.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 3.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://but1m3lh1bs0t" +uid="uid://y6p4w8emisdp" path="res://.godot/imported/Layer 3.png-f29c8d8f9ac40599c2c68d07983d57a9.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 4.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 4.png.import index e832609a..3367245a 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 4.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 4.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dvtoifuhrpyog" +uid="uid://d0s0vfqgxo4ch" path="res://.godot/imported/Layer 4.png-464735584d136537153e04d6fa29ae0b.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 5.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 5.png.import index d4e242f2..a15582db 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 5.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 5.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://3oxlqj4455f8" +uid="uid://c1pgbp26wxpw2" path="res://.godot/imported/Layer 5.png-181f77cb2889ea376fab331b073c3f3a.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 6.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 6.png.import index 8f5107d4..6da04c4e 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 6.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 6.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d4lxgwn6rikvb" +uid="uid://cnmxqnexnb6to" path="res://.godot/imported/Layer 6.png-55432acb8f8504b93cfde4dee5fc78e0.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 7.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 7.png.import index 8409f0b1..423d5644 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 7.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 7.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ww6k6t8y5ksp" +uid="uid://l6sj31rtfj0" path="res://.godot/imported/Layer 7.png-d1a7631694b6d71fd9d56b118601ee40.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 8.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 8.png.import index a4a5b107..ac7e1549 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 8.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 8.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://vsdbtc6ba2eh" +uid="uid://nhbclk8h0vkm" path="res://.godot/imported/Layer 8.png-11394063c51446c140df4ca66a3e3783.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 9.png.import b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 9.png.import index 0feaaa04..4482c6fb 100644 --- a/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 9.png.import +++ b/src/enemy/enemy_types/filth_eater/animations/WALK SIDE/Layer 9.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://di8rpvj2hmsai" +uid="uid://kjq0epk60s5b" path="res://.godot/imported/Layer 9.png-e25d454cdf437d36eacdabaf8d7bc473.ctex" metadata={ "vram_texture": false diff --git a/src/enemy/enemy_types/michael/Michael.cs b/src/enemy/enemy_types/michael/Michael.cs index d78c36b8..153dd443 100644 --- a/src/enemy/enemy_types/michael/Michael.cs +++ b/src/enemy/enemy_types/michael/Michael.cs @@ -15,13 +15,7 @@ public partial class Michael : Enemy, IHasPrimaryAttack public void OnReady() { SetPhysicsProcess(true); - EnemyModelView.AnimationTree.AnimationFinished += AnimationPlayer_AnimationFinished; - } - - private void AnimationPlayer_AnimationFinished(StringName animName) - { - if (animName == "primary_attack") - EnemyModelView.Hitbox.AreaEntered -= Hitbox_AreaEntered; + EnemyModelView.Hitbox.AreaEntered += Hitbox_AreaEntered; } public override void TakeAction() @@ -30,7 +24,6 @@ public partial class Michael : Enemy, IHasPrimaryAttack } public void PrimaryAttack() { - EnemyModelView.Hitbox.AreaEntered += Hitbox_AreaEntered; EnemyModelView.PlayPrimaryAttackAnimation(); } diff --git a/src/enemy/enemy_types/michael/MichaelModelView.tscn b/src/enemy/enemy_types/michael/MichaelModelView.tscn index bc847104..7d55ab45 100644 --- a/src/enemy/enemy_types/michael/MichaelModelView.tscn +++ b/src/enemy/enemy_types/michael/MichaelModelView.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=101 format=3 uid="uid://bjg8wyvp8q6oc"] +[gd_scene load_steps=129 format=3 uid="uid://bjg8wyvp8q6oc"] [ext_resource type="Script" uid="uid://chymnqdw7hibn" path="res://src/enemy/EnemyModelView.cs" id="1_iajg3"] [ext_resource type="Texture2D" uid="uid://clpqh2pyqljkn" path="res://src/enemy/enemy_types/michael/animations/IDLE_WALK/BACK/Michael_Walk_Idle_Back (1).png" id="2_3g180"] @@ -476,30 +476,129 @@ tracks/2/keys = { "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] } +[sub_resource type="Animation" id="Animation_3g180"] +resource_name = "idle_back" +length = 1.91667 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite/SubViewport/AnimatedSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667, 1.25, 1.33333, 1.41667, 1.5, 1.58333, 1.66667, 1.75, 1.83333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_back_walk"] +} + +[sub_resource type="Animation" id="Animation_fssmb"] +resource_name = "idle_front" +length = 1.91667 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite/SubViewport/AnimatedSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667, 1.25, 1.33333, 1.41667, 1.5, 1.58333, 1.66667, 1.75, 1.8333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_front_walk"] +} + +[sub_resource type="Animation" id="Animation_oy7vk"] +resource_name = "idle_left" +length = 1.91667 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite/SubViewport/AnimatedSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667, 1.25, 1.33333, 1.41667, 1.5, 1.58333, 1.66667, 1.75, 1.83333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_left_walk"] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_346xs"] _data = { &"RESET": SubResource("Animation_41ppy"), +&"idle_back": SubResource("Animation_3g180"), &"idle_back_walk": SubResource("Animation_ppbeh"), +&"idle_front": SubResource("Animation_fssmb"), &"idle_front_walk": SubResource("Animation_3dffb"), +&"idle_left": SubResource("Animation_oy7vk"), &"idle_left_walk": SubResource("Animation_0qxqf"), &"primary_attack": SubResource("Animation_0k3e8") } +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_3g180"] +animation = &"idle_back" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o0tmb"] animation = &"idle_back_walk" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_fssmb"] +animation = &"idle_front" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_a6s5c"] animation = &"idle_front_walk" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_oy7vk"] +animation = &"idle_left" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dvj10"] animation = &"idle_left_walk" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_erbrx"] animation = &"primary_attack" -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vljb2"] -advance_mode = 2 - [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3xv6a"] switch_mode = 1 @@ -535,18 +634,91 @@ switch_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mxl7w"] switch_mode = 2 +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7jsk6"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nntdb"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_1br6i"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2m7tq"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_d2pq5"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_p18ld"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8kbdd"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nb2qv"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nqbx0"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4depw"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_fegyx"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_eh46c"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_dgujy"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6ogef"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_cvhi5"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_e3x3h"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mqikf"] +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ide2k"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_114qx"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_smnr6"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g6ih4"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_odtr7"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_off5l"] +switch_mode = 1 + [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_r23qr"] states/End/position = Vector2(1464, 100) +states/Start/position = Vector2(-44, 64) +states/idle_back/node = SubResource("AnimationNodeAnimation_3g180") +states/idle_back/position = Vector2(414, -131.053) states/idle_back_walk/node = SubResource("AnimationNodeAnimation_o0tmb") -states/idle_back_walk/position = Vector2(490, 92.9474) +states/idle_back_walk/position = Vector2(542, 140.947) +states/idle_front/node = SubResource("AnimationNodeAnimation_fssmb") +states/idle_front/position = Vector2(14, 10.9474) states/idle_front_walk/node = SubResource("AnimationNodeAnimation_a6s5c") -states/idle_front_walk/position = Vector2(331, -12) +states/idle_front_walk/position = Vector2(509, -31) +states/idle_left/node = SubResource("AnimationNodeAnimation_oy7vk") +states/idle_left/position = Vector2(77, 151.947) states/idle_left_walk/node = SubResource("AnimationNodeAnimation_dvj10") -states/idle_left_walk/position = Vector2(331, 196.947) +states/idle_left_walk/position = Vector2(318, 248.947) states/primary_attack/node = SubResource("AnimationNodeAnimation_erbrx") states/primary_attack/position = Vector2(1151, 86.9474) -transitions = ["Start", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_vljb2"), "idle_front_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_3xv6a"), "idle_left_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_0h1op"), "idle_front_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_361b7"), "idle_back_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_wftla"), "idle_back_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_gqqkl"), "idle_left_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_5cj36"), "idle_front_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_4t05h"), "primary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_8hgxu"), "primary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_fq2yw"), "primary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_yqm0k"), "idle_back_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_bmy1k"), "idle_left_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_mxl7w")] -graph_offset = Vector2(-190, -62.0526) +transitions = ["idle_front_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_3xv6a"), "idle_left_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_0h1op"), "idle_front_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_361b7"), "idle_back_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_wftla"), "idle_back_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_gqqkl"), "idle_left_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_5cj36"), "idle_front_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_4t05h"), "primary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_8hgxu"), "primary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_fq2yw"), "primary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_yqm0k"), "idle_back_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_bmy1k"), "idle_left_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_mxl7w"), "Start", "idle_front", SubResource("AnimationNodeStateMachineTransition_7jsk6"), "idle_front", "idle_back", SubResource("AnimationNodeStateMachineTransition_nntdb"), "idle_front", "idle_left", SubResource("AnimationNodeStateMachineTransition_1br6i"), "idle_left", "idle_front", SubResource("AnimationNodeStateMachineTransition_2m7tq"), "idle_back", "idle_front", SubResource("AnimationNodeStateMachineTransition_d2pq5"), "idle_back", "idle_left", SubResource("AnimationNodeStateMachineTransition_p18ld"), "idle_left", "idle_back", SubResource("AnimationNodeStateMachineTransition_8kbdd"), "idle_front", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_nb2qv"), "idle_front_walk", "idle_front", SubResource("AnimationNodeStateMachineTransition_nqbx0"), "idle_front", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_4depw"), "idle_back_walk", "idle_front", SubResource("AnimationNodeStateMachineTransition_fegyx"), "idle_front", "primary_attack", SubResource("AnimationNodeStateMachineTransition_eh46c"), "primary_attack", "idle_front", SubResource("AnimationNodeStateMachineTransition_dgujy"), "idle_back", "primary_attack", SubResource("AnimationNodeStateMachineTransition_6ogef"), "primary_attack", "idle_back", SubResource("AnimationNodeStateMachineTransition_cvhi5"), "idle_left", "primary_attack", SubResource("AnimationNodeStateMachineTransition_e3x3h"), "primary_attack", "idle_left", SubResource("AnimationNodeStateMachineTransition_mqikf"), "idle_left", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_ide2k"), "idle_left_walk", "idle_left", SubResource("AnimationNodeStateMachineTransition_114qx"), "idle_left", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_smnr6"), "idle_back_walk", "idle_left", SubResource("AnimationNodeStateMachineTransition_g6ih4"), "idle_left", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_odtr7"), "idle_front_walk", "idle_left", SubResource("AnimationNodeStateMachineTransition_off5l")] +graph_offset = Vector2(-190, -100.703) [node name="EnemyModelView" type="Node3D"] script = ExtResource("1_iajg3") diff --git a/src/enemy/enemy_types/sproingy/Sproingy.cs b/src/enemy/enemy_types/sproingy/Sproingy.cs index 68834944..6c157f08 100644 --- a/src/enemy/enemy_types/sproingy/Sproingy.cs +++ b/src/enemy/enemy_types/sproingy/Sproingy.cs @@ -17,13 +17,7 @@ public partial class Sproingy : Enemy, IHasPrimaryAttack public void OnReady() { SetPhysicsProcess(true); - EnemyModelView.AnimationTree.AnimationFinished += AnimationPlayer_AnimationFinished; - } - - private void AnimationPlayer_AnimationFinished(StringName animName) - { - if (animName == "primary_attack") - EnemyModelView.Hitbox.AreaEntered -= Hitbox_AreaEntered; + EnemyModelView.Hitbox.AreaEntered += Hitbox_AreaEntered; } public override void TakeAction() @@ -32,7 +26,6 @@ public partial class Sproingy : Enemy, IHasPrimaryAttack } public void PrimaryAttack() { - EnemyModelView.Hitbox.AreaEntered += Hitbox_AreaEntered; EnemyModelView.PlayPrimaryAttackAnimation(); } diff --git a/src/enemy/enemy_types/sproingy/SproingyModelView.tscn b/src/enemy/enemy_types/sproingy/SproingyModelView.tscn index c24e8c69..6f49d6ad 100644 --- a/src/enemy/enemy_types/sproingy/SproingyModelView.tscn +++ b/src/enemy/enemy_types/sproingy/SproingyModelView.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=86 format=3 uid="uid://bli0t0d6ommvi"] +[gd_scene load_steps=122 format=3 uid="uid://bli0t0d6ommvi"] [ext_resource type="Script" uid="uid://chymnqdw7hibn" path="res://src/enemy/EnemyModelView.cs" id="1_0vbio"] [ext_resource type="Texture2D" uid="uid://dd0ia6isdqg61" path="res://src/enemy/enemy_types/sproingy/animations/ATTACK/Layer 1.png" id="1_pbx41"] @@ -293,6 +293,36 @@ tracks/2/keys = { "values": [true] } +[sub_resource type="Animation" id="Animation_d5bmw"] +resource_name = "idle_back" +length = 1.16667 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [&"idle_back_walk"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] +} + [sub_resource type="Animation" id="Animation_1tda5"] resource_name = "idle_back_walk" length = 1.16667 @@ -323,6 +353,36 @@ tracks/1/keys = { "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] } +[sub_resource type="Animation" id="Animation_53wuj"] +resource_name = "idle_front" +length = 1.16667 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [&"idle_front_walk"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75, 0.833333, 0.916667, 1, 1.08333, 1.16667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] +} + [sub_resource type="Animation" id="Animation_31nry"] resource_name = "idle_front_walk" length = 1.16667 @@ -353,6 +413,36 @@ tracks/1/keys = { "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] } +[sub_resource type="Animation" id="Animation_fpvxl"] +resource_name = "idle_left" +length = 1.25001 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [&"idle_left_walk"] +} + [sub_resource type="Animation" id="Animation_1870e"] resource_name = "idle_left_walk" length = 1.25001 @@ -427,27 +517,36 @@ tracks/2/keys = { [sub_resource type="AnimationLibrary" id="AnimationLibrary_6tj5r"] _data = { &"RESET": SubResource("Animation_ch8ic"), +&"idle_back": SubResource("Animation_d5bmw"), &"idle_back_walk": SubResource("Animation_1tda5"), +&"idle_front": SubResource("Animation_53wuj"), &"idle_front_walk": SubResource("Animation_31nry"), +&"idle_left": SubResource("Animation_fpvxl"), &"idle_left_walk": SubResource("Animation_1870e"), &"primary_attack": SubResource("Animation_ruc6s") } +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_53wuj"] +animation = &"idle_back" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o0tmb"] animation = &"idle_back_walk" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_d5bmw"] +animation = &"idle_front" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_a6s5c"] animation = &"idle_front_walk" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_fpvxl"] +animation = &"idle_left" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dvj10"] animation = &"idle_left_walk" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_erbrx"] animation = &"primary_attack" -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vljb2"] -advance_mode = 2 - [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3xv6a"] switch_mode = 1 @@ -483,18 +582,107 @@ switch_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mxl7w"] switch_mode = 2 +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_qq0ru"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_c54uj"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_qmo72"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_jyt1n"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5un2v"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2x3nl"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6a5nw"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0jqty"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yjcrh"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2ybyh"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n454k"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vrcjv"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_h1yxw"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kg6hd"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_25i3y"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5g722"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_a6y4x"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7y7m4"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ldcvv"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_aalmk"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2le5t"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4nmgu"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mw5r6"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_jbtxi"] +switch_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mjxlk"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_al2xs"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_afa0q"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_irq32"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2khaq"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_k7x0x"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_noc6c"] + [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_d5bmw"] -states/End/position = Vector2(1464, 100) +states/End/position = Vector2(1466, 104) +states/Start/position = Vector2(92, 119) +states/idle_back/node = SubResource("AnimationNodeAnimation_53wuj") +states/idle_back/position = Vector2(180.116, -34) states/idle_back_walk/node = SubResource("AnimationNodeAnimation_o0tmb") -states/idle_back_walk/position = Vector2(491, 92.9474) +states/idle_back_walk/position = Vector2(676, -8.0526) +states/idle_front/node = SubResource("AnimationNodeAnimation_d5bmw") +states/idle_front/position = Vector2(403.116, 43.9474) states/idle_front_walk/node = SubResource("AnimationNodeAnimation_a6s5c") -states/idle_front_walk/position = Vector2(331, -12) +states/idle_front_walk/position = Vector2(644, -100) +states/idle_left/node = SubResource("AnimationNodeAnimation_fpvxl") +states/idle_left/position = Vector2(367.116, 119) states/idle_left_walk/node = SubResource("AnimationNodeAnimation_dvj10") -states/idle_left_walk/position = Vector2(331, 196.947) +states/idle_left_walk/position = Vector2(438, 242.947) states/primary_attack/node = SubResource("AnimationNodeAnimation_erbrx") states/primary_attack/position = Vector2(1024, 92.9474) -transitions = ["Start", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_vljb2"), "idle_front_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_3xv6a"), "idle_left_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_0h1op"), "idle_front_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_361b7"), "idle_back_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_wftla"), "idle_back_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_gqqkl"), "idle_left_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_5cj36"), "idle_front_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_4t05h"), "primary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_8hgxu"), "primary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_fq2yw"), "primary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_yqm0k"), "idle_back_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_bmy1k"), "idle_left_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_mxl7w")] -graph_offset = Vector2(46.1163, -62.0526) +transitions = ["idle_front_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_3xv6a"), "idle_left_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_0h1op"), "idle_front_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_361b7"), "idle_back_walk", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_wftla"), "idle_back_walk", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_gqqkl"), "idle_left_walk", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_5cj36"), "idle_front_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_4t05h"), "primary_attack", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_8hgxu"), "primary_attack", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_fq2yw"), "primary_attack", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_yqm0k"), "idle_back_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_bmy1k"), "idle_left_walk", "primary_attack", SubResource("AnimationNodeStateMachineTransition_mxl7w"), "Start", "idle_front", SubResource("AnimationNodeStateMachineTransition_qq0ru"), "idle_front", "idle_back", SubResource("AnimationNodeStateMachineTransition_c54uj"), "idle_back", "idle_left", SubResource("AnimationNodeStateMachineTransition_qmo72"), "idle_left", "idle_front", SubResource("AnimationNodeStateMachineTransition_jyt1n"), "idle_left", "idle_back", SubResource("AnimationNodeStateMachineTransition_5un2v"), "idle_back", "idle_front", SubResource("AnimationNodeStateMachineTransition_2x3nl"), "idle_front", "idle_left", SubResource("AnimationNodeStateMachineTransition_6a5nw"), "idle_back", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_0jqty"), "idle_front", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_yjcrh"), "idle_back", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_2ybyh"), "idle_left", "idle_back_walk", SubResource("AnimationNodeStateMachineTransition_n454k"), "idle_back_walk", "idle_left", SubResource("AnimationNodeStateMachineTransition_vrcjv"), "idle_back_walk", "idle_front", SubResource("AnimationNodeStateMachineTransition_h1yxw"), "idle_back_walk", "idle_back", SubResource("AnimationNodeStateMachineTransition_kg6hd"), "idle_back", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_25i3y"), "idle_left", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_5g722"), "idle_front", "idle_left_walk", SubResource("AnimationNodeStateMachineTransition_a6y4x"), "idle_left_walk", "idle_front", SubResource("AnimationNodeStateMachineTransition_7y7m4"), "idle_left_walk", "idle_left", SubResource("AnimationNodeStateMachineTransition_ldcvv"), "idle_left_walk", "idle_back", SubResource("AnimationNodeStateMachineTransition_aalmk"), "idle_front_walk", "idle_back", SubResource("AnimationNodeStateMachineTransition_2le5t"), "idle_front_walk", "idle_front", SubResource("AnimationNodeStateMachineTransition_4nmgu"), "idle_front_walk", "idle_left", SubResource("AnimationNodeStateMachineTransition_mw5r6"), "idle_front", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_jbtxi"), "idle_left", "idle_front_walk", SubResource("AnimationNodeStateMachineTransition_mjxlk"), "idle_back", "primary_attack", SubResource("AnimationNodeStateMachineTransition_al2xs"), "primary_attack", "idle_back", SubResource("AnimationNodeStateMachineTransition_afa0q"), "idle_front", "primary_attack", SubResource("AnimationNodeStateMachineTransition_irq32"), "primary_attack", "idle_front", SubResource("AnimationNodeStateMachineTransition_2khaq"), "idle_left", "primary_attack", SubResource("AnimationNodeStateMachineTransition_k7x0x"), "primary_attack", "idle_left", SubResource("AnimationNodeStateMachineTransition_noc6c")] +graph_offset = Vector2(46.1163, -73.3694) [node name="EnemyModelView" type="Node3D"] script = ExtResource("1_0vbio") diff --git a/src/enemy/state/EnemyLogic.Input.cs b/src/enemy/state/EnemyLogic.Input.cs index 86898bea..e17ca21a 100644 --- a/src/enemy/state/EnemyLogic.Input.cs +++ b/src/enemy/state/EnemyLogic.Input.cs @@ -15,8 +15,14 @@ public partial class EnemyLogic public readonly record struct EnemyDefeated(); + public readonly record struct StartPatrol; + + public readonly record struct StopMoving; + public readonly record struct PatrolToRandomSpot(Vector3 PatrolTarget); public readonly record struct AttackTimer; + + public readonly record struct StartAttacking; } } diff --git a/src/enemy/state/EnemyLogic.g.puml b/src/enemy/state/EnemyLogic.g.puml index e03deecc..9c5a6682 100644 --- a/src/enemy/state/EnemyLogic.g.puml +++ b/src/enemy/state/EnemyLogic.g.puml @@ -1,19 +1,27 @@ @startuml EnemyLogic state "EnemyLogic State" as GameJamDungeon_EnemyLogic_State { state "Alive" as GameJamDungeon_EnemyLogic_State_Alive { + state "Attacking" as GameJamDungeon_EnemyLogic_State_Attacking state "FollowPlayer" as GameJamDungeon_EnemyLogic_State_FollowPlayer state "Idle" as GameJamDungeon_EnemyLogic_State_Idle + state "Patrolling" as GameJamDungeon_EnemyLogic_State_Patrolling } state "Defeated" as GameJamDungeon_EnemyLogic_State_Defeated } -GameJamDungeon_EnemyLogic_State_Alive --> GameJamDungeon_EnemyLogic_State_Alive : AttackTimer +GameJamDungeon_EnemyLogic_State_Alive --> GameJamDungeon_EnemyLogic_State_Attacking : AttackTimer +GameJamDungeon_EnemyLogic_State_Alive --> GameJamDungeon_EnemyLogic_State_Attacking : StartAttacking GameJamDungeon_EnemyLogic_State_Alive --> GameJamDungeon_EnemyLogic_State_Defeated : EnemyDefeated +GameJamDungeon_EnemyLogic_State_Alive --> GameJamDungeon_EnemyLogic_State_FollowPlayer : Alerted +GameJamDungeon_EnemyLogic_State_Alive --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving +GameJamDungeon_EnemyLogic_State_Attacking --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_FollowPlayer : PhysicsTick GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_Idle : LostPlayer -GameJamDungeon_EnemyLogic_State_Idle --> GameJamDungeon_EnemyLogic_State_FollowPlayer : Alerted -GameJamDungeon_EnemyLogic_State_Idle --> GameJamDungeon_EnemyLogic_State_Idle : PatrolToRandomSpot -GameJamDungeon_EnemyLogic_State_Idle --> GameJamDungeon_EnemyLogic_State_Idle : PhysicsTick +GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving +GameJamDungeon_EnemyLogic_State_Idle --> GameJamDungeon_EnemyLogic_State_Patrolling : StartPatrol +GameJamDungeon_EnemyLogic_State_Patrolling --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving +GameJamDungeon_EnemyLogic_State_Patrolling --> GameJamDungeon_EnemyLogic_State_Patrolling : PatrolToRandomSpot +GameJamDungeon_EnemyLogic_State_Patrolling --> GameJamDungeon_EnemyLogic_State_Patrolling : PhysicsTick GameJamDungeon_EnemyLogic_State_Alive : OnAttackTimer → TakeAction GameJamDungeon_EnemyLogic_State_Alive : OnEnemyDefeated → Defeated diff --git a/src/enemy/state/states/EnemyLogic.State.Alive.cs b/src/enemy/state/states/EnemyLogic.State.Alive.cs index ab4e51e7..253bd073 100644 --- a/src/enemy/state/states/EnemyLogic.State.Alive.cs +++ b/src/enemy/state/states/EnemyLogic.State.Alive.cs @@ -7,12 +7,12 @@ public partial class EnemyLogic public partial record State { [Meta, Id("enemy_logic_state_alive")] - public abstract partial record Alive : State, IGet, IGet + public abstract partial record Alive : State, IGet, IGet, IGet, IGet, IGet { public Transition On(in Input.AttackTimer input) { Output(new Output.TakeAction()); - return ToSelf(); + return To(); } public Transition On(in Input.EnemyDefeated input) @@ -20,6 +20,21 @@ public partial class EnemyLogic Output(new Output.Defeated()); return To(); } + + public Transition On(in Input.StopMoving input) + { + return To(); + } + + public Transition On(in Input.StartAttacking input) + { + return To(); + } + + public Transition On(in Input.Alerted _) + { + return To(); + } } } } diff --git a/src/enemy/state/states/EnemyLogic.State.Attacking.cs b/src/enemy/state/states/EnemyLogic.State.Attacking.cs new file mode 100644 index 00000000..86e0055f --- /dev/null +++ b/src/enemy/state/states/EnemyLogic.State.Attacking.cs @@ -0,0 +1,19 @@ +using Chickensoft.Introspection; + +namespace GameJamDungeon; + +public partial class EnemyLogic +{ + public partial record State + { + [Meta, Id("enemy_logic_state_attacking")] + public partial record Attacking : Alive, IGet + { + public Attacking() + { + OnAttach(() => Get().StartAttackTimer()); + OnDetach(() => Get().StopAttackTimer()); + } + } + } +} \ No newline at end of file diff --git a/src/enemy/state/states/EnemyLogic.State.FollowPlayer.cs b/src/enemy/state/states/EnemyLogic.State.FollowPlayer.cs index 039c0679..8d01d5a6 100644 --- a/src/enemy/state/states/EnemyLogic.State.FollowPlayer.cs +++ b/src/enemy/state/states/EnemyLogic.State.FollowPlayer.cs @@ -7,7 +7,7 @@ public partial class EnemyLogic public partial record State { [Meta, Id("enemy_logic_state_followplayer")] - public partial record FollowPlayer : Alive, IGet, IGet + public partial record FollowPlayer : Alive, IGet, IGet, IGet { public Transition On(in Input.PhysicsTick input) { @@ -23,6 +23,11 @@ public partial class EnemyLogic { return To(); } + + public Transition On(in Input.StopMoving _) + { + return To(); + } } } } diff --git a/src/enemy/state/states/EnemyLogic.State.Idle.cs b/src/enemy/state/states/EnemyLogic.State.Idle.cs index b3c610d9..63ada4c4 100644 --- a/src/enemy/state/states/EnemyLogic.State.Idle.cs +++ b/src/enemy/state/states/EnemyLogic.State.Idle.cs @@ -8,26 +8,11 @@ public partial class EnemyLogic public partial record State { [Meta, Id("enemy_logic_state_idle")] - public partial record Idle : Alive, IGet, IGet, IGet + public partial record Idle : Alive, IGet { - private Vector3 _patrolTarget { get; set; } - public Transition On(in Input.Alerted _) + public Transition On(in Input.StartPatrol _) { - return To(); - } - - public Transition On(in Input.PhysicsTick input) - { - var delta = input.Delta; - var enemy = Get(); - enemy.MoveToLocation(_patrolTarget, (float)delta); - return ToSelf(); - } - - public Transition On(in Input.PatrolToRandomSpot input) - { - _patrolTarget = input.PatrolTarget; - return ToSelf(); + return To(); } } } diff --git a/src/enemy/state/states/EnemyLogic.State.Patrolling.cs b/src/enemy/state/states/EnemyLogic.State.Patrolling.cs new file mode 100644 index 00000000..e0a4dfd1 --- /dev/null +++ b/src/enemy/state/states/EnemyLogic.State.Patrolling.cs @@ -0,0 +1,30 @@ +using Chickensoft.Introspection; +using Godot; + +namespace GameJamDungeon; + +public partial class EnemyLogic +{ + public partial record State + { + [Meta, Id("enemy_logic_state_patrolling")] + public partial record Patrolling : Alive, IGet, IGet, IGet + { + private Vector3 _patrolTarget { get; set; } + + public Transition On(in Input.PhysicsTick input) + { + var delta = input.Delta; + var enemy = Get(); + enemy.MoveToLocation(_patrolTarget, (float)delta); + return ToSelf(); + } + + public Transition On(in Input.PatrolToRandomSpot input) + { + _patrolTarget = input.PatrolTarget; + return ToSelf(); + } + } + } +} \ No newline at end of file diff --git a/src/enemy/state/states/EnemyLogic.State.Patrolling.cs.uid b/src/enemy/state/states/EnemyLogic.State.Patrolling.cs.uid new file mode 100644 index 00000000..b9a0b6fc --- /dev/null +++ b/src/enemy/state/states/EnemyLogic.State.Patrolling.cs.uid @@ -0,0 +1 @@ +uid://bl1wq25d7in2j diff --git a/src/map/dungeon/floors/Floor01.tscn b/src/map/dungeon/floors/Floor01.tscn index a6ecf17a..a8606a01 100644 --- a/src/map/dungeon/floors/Floor01.tscn +++ b/src/map/dungeon/floors/Floor01.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://bc1sp6xwe0j65"] +[gd_scene load_steps=17 format=3 uid="uid://bc1sp6xwe0j65"] [ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_0ecnn"] [ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_cxmwa"] @@ -14,6 +14,7 @@ [ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="12_aw26s"] [ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/sproingy/Sproingy.tscn" id="13_kwaga"] [ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/michael/Michael.tscn" id="14_gkkr3"] +[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/filth_eater/FilthEater.tscn" id="15_kwaga"] [sub_resource type="NavigationMesh" id="NavigationMesh_4d8mx"] sample_partition_type = 2 @@ -40,4 +41,5 @@ hide_debug_visuals_for_all_generated_rooms = false [node name="EnemyDatabase" parent="." instance=ExtResource("12_aw26s")] unique_name_in_owner = true -EnemyList = Array[PackedScene]([ExtResource("13_kwaga"), ExtResource("14_gkkr3")]) +EnemyList = Array[PackedScene]([ExtResource("13_kwaga"), ExtResource("14_gkkr3"), ExtResource("15_kwaga")]) +SpawnRate = PackedFloat32Array(1, 1, 10) diff --git a/src/map/overworld/Floor0.tscn b/src/map/overworld/Floor0.tscn index 18bcc5a3..d6909688 100644 --- a/src/map/overworld/Floor0.tscn +++ b/src/map/overworld/Floor0.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://dl6h1djc27ddl"] +[gd_scene load_steps=8 format=3 uid="uid://dl6h1djc27ddl"] [ext_resource type="Script" uid="uid://cuhfkyh3d7noa" path="res://src/map/dungeon/code/Overworld.cs" id="1_2ce63"] [ext_resource type="PackedScene" uid="uid://duis2vhf5ojy3" path="res://src/item_rescue/ItemRescue.tscn" id="2_4ixnb"] [ext_resource type="PackedScene" uid="uid://tc5kdfoggrng" path="res://src/item_rescue/RescuedItems.tscn" id="3_tbcl3"] +[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/filth_eater/FilthEater.tscn" id="4_nboba"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pb22g"] @@ -56,4 +57,7 @@ collision_mask = 3 [node name="CollisionShape3D" type="CollisionShape3D" parent="Spawn Rescued Items/Area3D"] shape = SubResource("SphereShape3D_tbcl3") +[node name="FilthEater" parent="." instance=ExtResource("4_nboba")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.4748, -0.874058, -4.64349) + [connection signal="body_entered" from="Spawn Rescued Items/Area3D" to="Rescued Items" method="OnSpawnItemsEntered"]