Compare commits

...

2 Commits

Author SHA1 Message Date
221ade11e3 Split 2D and 3D enemy concepts 2025-02-25 22:02:02 -08:00
282a2eddb0 Change all enemy types to CharacterBody3D 2025-02-25 19:55:04 -08:00
1317 changed files with 3809 additions and 3566 deletions

View File

@@ -28,7 +28,7 @@ public partial class DataViewer : Control
[Node] public RichTextLabel Description { get; set; } = default!;
#endregion
private EnemyModelView _currentModel;
private EnemyModelView2D _currentModel;
private int _modelIndex = 0;
@@ -77,7 +77,7 @@ public partial class DataViewer : Control
private void LoadModel()
{
var modelScene = DataViewerRepository.ModelRepository.ElementAt(_modelIndex);
_currentModel = modelScene.Instantiate<EnemyModelView>();
_currentModel = modelScene.Instantiate<EnemyModelView2D>();
ModelPivot.AddChild(_currentModel);
EnemyName.Text = _currentModel.EnemyLoreInfo.Name;
Description.Text = _currentModel.EnemyLoreInfo.Description;

View File

@@ -3,9 +3,9 @@
[ext_resource type="Script" uid="uid://bgaflnnur26vk" path="res://src/data_viewer/DataViewer.cs" id="1_1qako"]
[ext_resource type="Theme" uid="uid://daxuhpmyxwxck" path="res://src/inventory_menu/InventoryDialogueSelectionStyle.tres" id="2_bef6s"]
[ext_resource type="PackedScene" uid="uid://c16i1gmg6yu5a" path="res://src/data_viewer/DataViewerRepository.tscn" id="3_ejdn0"]
[ext_resource type="Texture2D" uid="uid://djvga5kh0ncqa" path="res://src/map/dungeon/models/Set A/03. Antechamber A/ANTECHAMBER_TYPE1_VER2_8311.png" id="3_hpkd1"]
[ext_resource type="PackedScene" uid="uid://bjg8wyvp8q6oc" path="res://src/enemy/enemy_types/2. michael/MichaelModelView.tscn" id="4_bef6s"]
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/1. sproingy/SproingyModelView.tscn" id="5_hpkd1"]
[ext_resource type="Texture2D" uid="uid://bh0crf4qonrh5" path="res://src/map/dungeon/models/Set A/03. Antechamber A/ANTECHAMBER_TYPE1_VER2_8311.png" id="3_hpkd1"]
[ext_resource type="PackedScene" uid="uid://bjg8wyvp8q6oc" path="res://src/enemy/enemy_types/02. michael/MichaelModelView.tscn" id="4_bef6s"]
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="5_hpkd1"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dvixg"]
albedo_texture = ExtResource("3_hpkd1")

View File

@@ -1,8 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://c16i1gmg6yu5a"]
[ext_resource type="Script" uid="uid://03k48fke03vu" path="res://src/data_viewer/DataViewerRepository.cs" id="1_1cvot"]
[ext_resource type="PackedScene" uid="uid://bjg8wyvp8q6oc" path="res://src/enemy/enemy_types/2. michael/MichaelModelView.tscn" id="2_8autu"]
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/1. sproingy/SproingyModelView.tscn" id="3_0bpmu"]
[ext_resource type="PackedScene" uid="uid://bjg8wyvp8q6oc" path="res://src/enemy/enemy_types/02. michael/MichaelModelView.tscn" id="2_8autu"]
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="3_0bpmu"]
[node name="DataViewerRepository" type="Node"]
script = ExtResource("1_1cvot")

View File

@@ -2,9 +2,7 @@ using Chickensoft.AutoInject;
using Chickensoft.Collections;
using Chickensoft.Introspection;
using Godot;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace GameJamDungeon;
@@ -30,22 +28,21 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
#region Exports
[Export] protected EnemyStatResource _enemyStatResource { get; set; } = default!;
[Export]
private float _movementSpeed = 2f;
#endregion
#region Node Dependencies
[Node] private CollisionShape3D CollisionShape { get; set; } = default!;
[Node] private CollisionShape3D _collisionShape { get; set; } = default!;
[Node] private NavigationAgent3D NavAgent { get; set; } = default!;
[Node] private Area3D _lineOfSight { get; set; } = default!;
[Node] private Area3D LineOfSight { get; set; } = default!;
[Node] private Timer _attackTimer { get; set; } = default!;
[Node] private Timer PatrolTimer { get; set; } = default!;
[Node] private RayCast3D _raycast { get; set; } = default!;
[Node] private Timer AttackTimer { get; set; } = default!;
[Node] private RayCast3D Raycast { get; set; } = default!;
[Node] protected EnemyModelView EnemyModelView { get; set; } = default!;
[Node] protected IEnemyModelView _enemyModelView { get; set; } = default!;
#endregion
public double CurrentHP => _currentHP.Value;
@@ -56,116 +53,13 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
private Vector3 _knockbackDirection = Vector3.Zero;
private Vector3 _currentTarget = Vector3.Zero;
private Timer _thinkTimer;
#region Godot methods
public void Setup()
{
_enemyLogic = new EnemyLogic();
_enemyLogic.Set(_enemyStatResource);
_enemyLogic.Set(this as IEnemy);
_enemyLogic.Set(Player);
_currentTarget = GlobalPosition;
NavAgent.VelocityComputed += NavAgent_VelocityComputed;
NavAgent.TargetReached += NavAgent_TargetReached;
_thinkTimer = new Timer
{
WaitTime = 0.4f
};
AddChild(_thinkTimer);
_thinkTimer.Timeout += NavAgent_TargetReached;
_thinkTimer.Start();
}
private void NavAgent_TargetReached()
{
NavAgent.TargetPosition = _currentTarget;
}
private void NavAgent_VelocityComputed(Vector3 safeVelocity)
{
if (CurrentHP <= 0)
return;
_knockbackStrength = _knockbackStrength * 0.9f;
Velocity = safeVelocity + (_knockbackDirection * _knockbackStrength);
MoveAndSlide();
}
public void SetTarget(Vector3 target)
{
Task.Delay(TimeSpan.FromSeconds(1.5)).ContinueWith(_ => _currentTarget = new Vector3(target.X, -1.75f, target.Z));
}
public void TakeDamage(double damage, ElementType elementType, bool isCriticalHit = false, bool ignoreDefense = false, bool ignoreElementalResistance = false)
{
if (_currentHP.Value > 0)
{
if (!ignoreElementalResistance)
damage = CalculateElementalResistance(damage, elementType);
if (!ignoreDefense)
damage = CalculateDefenseResistance(damage);
if (isCriticalHit)
damage *= 2;
GD.Print($"Enemy Hit for {damage} damage.");
_currentHP.OnNext(_currentHP.Value - damage);
GD.Print("Current HP: " + _currentHP.Value);
if (_currentHP.Value <= 0)
return;
EnemyModelView.PlayHitAnimation();
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
NavAgent_TargetReached();
if (Player.EquippedWeapon.Value.WeaponTags.Contains(WeaponTag.SelfDamage))
Player.Stats.SetCurrentHP(Player.Stats.CurrentHP.Value - 5);
}
}
public override void _PhysicsProcess(double delta)
{
if (CurrentHP <= 0)
return;
if (_enemyLogic.Value is EnemyLogic.State.Attacking)
SetTarget(GlobalPosition);
var nextPathPosition = NavAgent.GetNextPathPosition();
var newVelocity = GlobalPosition.DirectionTo(nextPathPosition) * 2f;
if (NavAgent.AvoidanceEnabled)
NavAgent.Velocity = newVelocity;
else
NavAgent_VelocityComputed(newVelocity);
var lookDir = GlobalPosition + Velocity;
if (_enemyLogic.Value is not EnemyLogic.State.Attacking && (!lookDir.IsEqualApprox(GlobalPosition) || !Velocity.IsZeroApprox()))
LookAt(lookDir, Vector3.Up, true);
var isWalking = _enemyLogic.Value is EnemyLogic.State.Patrolling or EnemyLogic.State.FollowPlayer;
EnemyModelView.RotateModel(GlobalTransform.Basis, -Player.CurrentBasis.Z, isWalking);
}
public void Knockback(float impulse, Vector3 direction)
{
_knockbackDirection = direction;
_knockbackStrength = 0.3f;
}
public void Die()
{
_enemyLogic.Input(new EnemyLogic.Input.EnemyDefeated());
CollisionShape.SetDeferred("disabled", true);
EnemyModelView.PlayDeathAnimation();
var tweener = GetTree().CreateTween();
tweener.TweenInterval(1.0f);
tweener.TweenCallback(Callable.From(QueueFree));
GameEventDepot.OnEnemyDefeated(GlobalPosition, _enemyStatResource);
}
public void OnResolved()
@@ -187,37 +81,90 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
_currentHP = new AutoProp<double>(_enemyStatResource.MaximumHP);
_currentHP.Sync += OnHPChanged;
LineOfSight.BodyEntered += LineOfSight_BodyEntered;
PatrolTimer.Timeout += OnPatrolTimeout;
var rng = new RandomNumberGenerator();
rng.Randomize();
PatrolTimer.WaitTime = rng.RandfRange(7.0f, 15.0f);
_lineOfSight.BodyEntered += LineOfSight_BodyEntered;
}
public void OnExitTree()
public override void _PhysicsProcess(double delta)
{
if (CurrentHP <= 0)
return;
var lookDir = GlobalPosition + Velocity;
if (_enemyLogic.Value is not EnemyLogic.State.Attacking && (!lookDir.IsEqualApprox(GlobalPosition) || !Velocity.IsZeroApprox()))
LookAt(lookDir, Vector3.Up, true);
var isWalking = _enemyLogic.Value is EnemyLogic.State.Patrolling or EnemyLogic.State.FollowPlayer;
if (_enemyModelView is EnemyModelView2D enemyModelView2D)
enemyModelView2D.RotateModel(GlobalTransform.Basis, -Player.CurrentBasis.Z, isWalking);
}
#endregion
public virtual void TakeAction()
{
_enemyLogic.Stop();
EnemyBinding.Dispose();
}
private void OnPatrolTimeout()
public virtual void SetTarget(Vector3 target)
{
var rng = new RandomNumberGenerator();
rng.Randomize();
var randomizedSpot = new Vector3(rng.RandfRange(-5.0f, 5.0f), 0, rng.RandfRange(-5.0f, 5.0f));
_enemyLogic.Input(new EnemyLogic.Input.PatrolToRandomSpot(GlobalPosition + randomizedSpot));
_enemyLogic.Input(new EnemyLogic.Input.StartPatrol());
PatrolTimer.WaitTime = rng.RandfRange(5.0f, 10.0f);
}
public virtual void Move(Vector3 velocity)
{
_knockbackStrength = _knockbackStrength * 0.9f;
Velocity = velocity + (_knockbackDirection * _knockbackStrength);
MoveAndSlide();
}
public virtual void TakeDamage(double damage, ElementType elementType, bool isCriticalHit = false, bool ignoreDefense = false, bool ignoreElementalResistance = false)
{
if (_currentHP.Value > 0)
{
if (!ignoreElementalResistance)
damage = CalculateElementalResistance(damage, elementType);
if (!ignoreDefense)
damage = CalculateDefenseResistance(damage);
if (isCriticalHit)
damage *= 2;
GD.Print($"Enemy Hit for {damage} damage.");
_currentHP.OnNext(_currentHP.Value - damage);
GD.Print("Current HP: " + _currentHP.Value);
if (_currentHP.Value <= 0)
return;
_enemyModelView.PlayHitAnimation();
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
if (Player.EquippedWeapon.Value.WeaponTags.Contains(WeaponTag.SelfDamage))
Player.Stats.SetCurrentHP(Player.Stats.CurrentHP.Value - 5);
}
}
public void Knockback(float impulse, Vector3 direction)
{
_knockbackDirection = direction;
_knockbackStrength = 0.3f;
}
public void Die()
{
_enemyLogic.Input(new EnemyLogic.Input.EnemyDefeated());
_collisionShape.SetDeferred("disabled", true);
_enemyModelView.PlayDeathAnimation();
var tweener = GetTree().CreateTween();
tweener.TweenInterval(1.0f);
tweener.TweenCallback(Callable.From(QueueFree));
GameEventDepot.OnEnemyDefeated(GlobalPosition, _enemyStatResource);
}
public void StartAttackTimer()
{
AttackTimer.Timeout += OnAttackTimeout;
_attackTimer.Timeout += OnAttackTimeout;
}
public void StopAttackTimer()
{
AttackTimer.Timeout -= OnAttackTimeout;
_attackTimer.Timeout -= OnAttackTimeout;
}
@@ -232,25 +179,25 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
var rng = new RandomNumberGenerator();
rng.Randomize();
_enemyLogic.Input(new EnemyLogic.Input.AttackTimer());
AttackTimer.Stop();
AttackTimer.WaitTime = rng.RandfRange(2f, 5.0f);
AttackTimer.Start();
_attackTimer.Stop();
_attackTimer.WaitTime = rng.RandfRange(2f, 5.0f);
_attackTimer.Start();
}
private void LineOfSight_BodyEntered(Node3D body)
{
var overlappingBodies = LineOfSight.GetOverlappingBodies();
var overlappingBodies = _lineOfSight.GetOverlappingBodies();
foreach (var _ in overlappingBodies)
{
if (Raycast.GlobalPosition != Player.CurrentPosition)
Raycast.LookAt(Player.CurrentPosition, Vector3.Up);
Raycast.ForceRaycastUpdate();
if (Raycast.IsColliding())
if (_raycast.GlobalPosition != Player.CurrentPosition)
_raycast.LookAt(Player.CurrentPosition, Vector3.Up);
_raycast.ForceRaycastUpdate();
if (_raycast.IsColliding())
{
var collider = Raycast.GetCollider();
var collider = _raycast.GetCollider();
if (collider is IPlayer)
{
Raycast.DebugShapeCustomColor = Color.FromString("Purple", Colors.Purple);
_raycast.DebugShapeCustomColor = Color.FromString("Purple", Colors.Purple);
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
}
}
@@ -284,7 +231,9 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
return Mathf.Max(incomingDamage - _enemyStatResource.CurrentDefense, 0.0);
}
public virtual void TakeAction()
public void OnExitTree()
{
_enemyLogic.Stop();
EnemyBinding.Dispose();
}
}

View File

@@ -1,8 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://dbvr8ewajja6a"]
[ext_resource type="Script" uid="uid://cp02ufnj6c7kg" path="res://src/enemy/EnemyDatabase.cs" id="1_ywy58"]
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/2. michael/Michael.tscn" id="2_tja3j"]
[ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/1. sproingy/Sproingy.tscn" id="3_cpupr"]
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/02. michael/Michael.tscn" id="2_tja3j"]
[ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.tscn" id="3_cpupr"]
[node name="EnemyDatabase" type="Node"]
script = ExtResource("1_ywy58")

View File

@@ -1,29 +1,10 @@
using Chickensoft.AutoInject;
using Chickensoft.GodotNodeInterfaces;
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Godot;
namespace GameJamDungeon;
public interface IEnemyModelView : INode3D
{
public void PlayPrimaryAttackAnimation();
public void PlaySecondaryAttackAnimation();
public void PlayPrimarySkillAnimation();
public void PlayHitAnimation();
public void PlayDeathAnimation();
public void RotateModel(Basis enemyBasis, Vector3 cameraDirection, bool isWalking);
public void RotateModel(Basis enemyBasis, Vector3 cameraDirection, float rotateUpperThreshold, float rotateLowerThreshold, bool isWalking);
}
[Meta(typeof(IAutoNode))]
public partial class EnemyModelView : Node3D, IEnemyModelView
public partial class EnemyModelView2D : Node3D, IEnemyModelView
{
private const string PRIMARY_ATTACK = "primary_attack";
private const string SECONDARY_ATTACK = "secondary_attack";

View File

@@ -0,0 +1 @@
uid://cvr1qimxpignl

View File

@@ -0,0 +1,58 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Godot;
namespace GameJamDungeon;
[Meta(typeof(IAutoNode))]
public partial class EnemyModelView3D : 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";
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 TAKE_DAMAGE = "take_damage";
private const string DEFEATED = "defeated";
private const string PARAMETERS_PLAYBACK = "parameters/playback";
public override void _Notification(int what) => this.Notify(what);
[Export] public EnemyLoreInfo EnemyLoreInfo { get; set; } = default!;
[Node] public IHitbox Hitbox { get; set; } = default!;
[Node] private MeshInstance3D _meshInstance { get; set; } = default!;
[Node] private AnimationPlayer _animationPlayer { get; set; } = default!;
public void Setup()
{
}
public void PlayPrimaryAttackAnimation()
{
}
public void PlaySecondaryAttackAnimation()
{
}
public void PlayPrimarySkillAnimation()
{
}
public void PlayHitAnimation()
{
_animationPlayer.Play(TAKE_DAMAGE);
}
public void PlayDeathAnimation()
{
_animationPlayer.Play(DEFEATED);
}
}

View File

@@ -0,0 +1 @@
uid://ckv5dmrw6pvn6

7
src/enemy/ICanPatrol.cs Normal file
View File

@@ -0,0 +1,7 @@
namespace GameJamDungeon.src.enemy
{
public interface ICanPatrol
{
public void Patrol();
}
}

View File

@@ -0,0 +1 @@
uid://b6n54dayg1bvt

View File

@@ -6,6 +6,8 @@ public interface IEnemy : IKillable
{
public void TakeAction();
public void Move(Vector3 velocity);
public void TakeDamage(double damage, ElementType elementType = ElementType.None, bool isCriticalHit = false, bool ignoreDefense = false, bool ignoreElementalResistance = false);
public void Knockback(float impulse, Vector3 direction);
@@ -16,5 +18,5 @@ public interface IEnemy : IKillable
public void StopAttackTimer();
public void SetTarget(Vector3 target);
public abstract void SetTarget(Vector3 target);
}

View File

@@ -0,0 +1,19 @@
using Chickensoft.GodotNodeInterfaces;
using Godot;
namespace GameJamDungeon;
public interface IEnemyModelView : INode3D
{
public void PlayPrimaryAttackAnimation();
public void PlaySecondaryAttackAnimation();
public void PlayPrimarySkillAnimation();
public void PlayHitAnimation();
public void PlayDeathAnimation();
public IHitbox Hitbox { get; }
}

View File

@@ -0,0 +1,12 @@
using Godot;
namespace GameJamDungeon;
public interface INavigationAgentClient
{
public void CalculateVelocity(Vector3 currentPosition);
public void SetTarget(Vector3 target);
public bool IsAvoidanceEnabled { get; }
}

View File

@@ -0,0 +1 @@
uid://71hjyrgwnvxx

View File

@@ -0,0 +1,72 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using GameJamDungeon.src.enemy;
using Godot;
using System;
using System.Threading.Tasks;
namespace GameJamDungeon;
[Meta(typeof(IAutoNode))]
public partial class NavigationAgentClient : Node3D, INavigationAgentClient
{
public override void _Notification(int what) => this.Notify(what);
[Node] private NavigationAgent3D NavAgent { get; set; } = default!;
[Node] private Timer _patrolTimer { get; set; } = default!;
private Vector3 _currentTarget = Vector3.Zero;
private Timer _thinkTimer;
public void Setup()
{
NavAgent.VelocityComputed += NavAgent_VelocityComputed;
NavAgent.TargetReached += NavAgent_TargetReached;
var rng = new RandomNumberGenerator();
rng.Randomize();
_patrolTimer.Timeout += OnPatrolTimeout;
_patrolTimer.WaitTime = rng.RandfRange(7.0f, 15.0f);
_thinkTimer = new Timer
{
WaitTime = 0.4f
};
AddChild(_thinkTimer);
_thinkTimer.Timeout += NavAgent_TargetReached;
_thinkTimer.Start();
}
private void NavAgent_VelocityComputed(Vector3 safeVelocity)
{
var enemy = GetParent() as IEnemy;
enemy.Move(safeVelocity);
}
public void CalculateVelocity(Vector3 currentPosition)
{
var nextPathPosition = NavAgent.GetNextPathPosition();
var newVelocity = currentPosition.DirectionTo(nextPathPosition) * 2f;
NavAgent.Velocity = newVelocity;
}
public void SetTarget(Vector3 target) => Task.Delay(TimeSpan.FromSeconds(0.4)).ContinueWith(_ => _currentTarget = new Vector3(target.X, -1.75f, target.Z));
public bool IsAvoidanceEnabled => NavAgent.AvoidanceEnabled;
private void NavAgent_TargetReached()
{
NavAgent.TargetPosition = _currentTarget;
}
private void OnPatrolTimeout()
{
var rng = new RandomNumberGenerator();
rng.Randomize();
_patrolTimer.WaitTime = rng.RandfRange(5.0f, 10.0f);
var enemy = GetParent() as ICanPatrol;
enemy.Patrol();
}
}

View File

@@ -0,0 +1 @@
uid://rcnriaxfld2h

View File

@@ -0,0 +1,14 @@
[gd_scene load_steps=2 format=3 uid="uid://pbnsngx5jvrh"]
[ext_resource type="Script" uid="uid://rcnriaxfld2h" path="res://src/enemy/NavigationAgentClient.cs" id="1_qwonp"]
[node name="NavigationAgentClient" type="Node3D"]
script = ExtResource("1_qwonp")
[node name="NavAgent" type="NavigationAgent3D" parent="."]
unique_name_in_owner = true
path_desired_distance = 2.0
target_desired_distance = 2.5
avoidance_enabled = true
radius = 1.5
time_horizon_obstacles = 1.0

View File

@@ -1,11 +1,12 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using GameJamDungeon.src.enemy;
using Godot;
namespace GameJamDungeon;
[Meta(typeof(IAutoNode))]
public partial class Sproingy : Enemy, IHasPrimaryAttack
public partial class Sproingy : Enemy, IHasPrimaryAttack, ICanPatrol
{
public override void _Notification(int what) => this.Notify(what);
@@ -14,10 +15,12 @@ public partial class Sproingy : Enemy, IHasPrimaryAttack
[Export]
public double PrimaryAttackElementalDamageBonus { get; set; } = 1.0;
[Node] private INavigationAgentClient _navigationAgentClient { get; set; } = default!;
public void OnReady()
{
SetPhysicsProcess(true);
EnemyModelView.Hitbox.AreaEntered += Hitbox_AreaEntered;
_enemyModelView.Hitbox.AreaEntered += Hitbox_AreaEntered;
}
public void OnPhysicsProcess(double delta)
@@ -30,15 +33,31 @@ public partial class Sproingy : Enemy, IHasPrimaryAttack
_enemyLogic.Input(new EnemyLogic.Input.LostPlayer());
if (_enemyLogic.Value is EnemyLogic.State.Attacking && GlobalPosition.DistanceTo(Player.CurrentPosition) > 5f)
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
_navigationAgentClient.CalculateVelocity(GlobalPosition);
base._PhysicsProcess(delta);
}
public override void TakeAction()
{
PrimaryAttack();
}
public void PrimaryAttack()
{
EnemyModelView.PlayPrimaryAttackAnimation();
_enemyModelView.PlayPrimaryAttackAnimation();
}
public override void SetTarget(Vector3 target) => _navigationAgentClient.SetTarget(target);
public void Patrol()
{
var rng = new RandomNumberGenerator();
rng.Randomize();
var randomizedSpot = new Vector3(rng.RandfRange(-5.0f, 5.0f), 0, rng.RandfRange(-5.0f, 5.0f));
_enemyLogic.Input(new EnemyLogic.Input.PatrolToRandomSpot(GlobalPosition + randomizedSpot));
_enemyLogic.Input(new EnemyLogic.Input.StartPatrol());
}
private void Hitbox_AreaEntered(Area3D area)

View File

@@ -1,8 +1,9 @@
[gd_scene load_steps=8 format=3 uid="uid://bksq62muhk3h5"]
[gd_scene load_steps=9 format=3 uid="uid://bksq62muhk3h5"]
[ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/1. sproingy/Sproingy.cs" id="1_xsluo"]
[ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.cs" id="1_xsluo"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_oln85"]
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/1. sproingy/SproingyModelView.tscn" id="4_o3b7p"]
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_ut5m2"]
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="4_o3b7p"]
[sub_resource type="Resource" id="Resource_oln85"]
script = ExtResource("2_oln85")
@@ -41,23 +42,14 @@ axis_lock_angular_z = true
script = ExtResource("1_xsluo")
_enemyStatResource = SubResource("Resource_oln85")
[node name="NavigationAgentClient" parent="." instance=ExtResource("3_ut5m2")]
unique_name_in_owner = true
[node name="CollisionShape" type="CollisionShape3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
shape = SubResource("CapsuleShape3D_cwfph")
[node name="NavAgent" type="NavigationAgent3D" parent="."]
unique_name_in_owner = true
path_desired_distance = 2.0
target_desired_distance = 2.5
avoidance_enabled = true
radius = 1.5
time_horizon_obstacles = 1.0
debug_enabled = true
debug_use_custom = true
debug_path_custom_color = Color(0.388717, 0.273656, 0.30701, 1)
debug_path_custom_point_size = 10.0
[node name="LineOfSight" type="Area3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)

View File

@@ -1,62 +1,61 @@
[gd_scene load_steps=122 format=3 uid="uid://bli0t0d6ommvi"]
[gd_scene load_steps=121 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/1. sproingy/animations/ATTACK/Layer 1.png" id="1_pbx41"]
[ext_resource type="Texture2D" uid="uid://bs4ico5ouo5d3" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 2.png" id="2_0vbio"]
[ext_resource type="Resource" uid="uid://bctxs1jlkhgmc" path="res://src/enemy/enemy_types/1. sproingy/SproingyLoreInfo.tres" id="2_53wuj"]
[ext_resource type="Texture2D" uid="uid://85ki5mc4h0vs" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 3.png" id="3_lae8t"]
[ext_resource type="Texture2D" uid="uid://bwt1m2frb3r0e" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 4.png" id="4_53wuj"]
[ext_resource type="Texture2D" uid="uid://ckssl1np6vnlu" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 5.png" id="5_d5bmw"]
[ext_resource type="Texture2D" uid="uid://c4sqc6i3xcfac" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 6.png" id="6_fpvxl"]
[ext_resource type="Texture2D" uid="uid://cawexe4wkosc8" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 7.png" id="7_qq0ru"]
[ext_resource type="Texture2D" uid="uid://d0j1vrx7xdnxl" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 8.png" id="8_c54uj"]
[ext_resource type="Texture2D" uid="uid://d0qhndaukki7c" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 9.png" id="9_qmo72"]
[ext_resource type="Texture2D" uid="uid://cnd08q34wa7ww" path="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 10.png" id="10_jyt1n"]
[ext_resource type="Texture2D" uid="uid://b8ntr7hh6rr5h" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 1.png" id="11_5un2v"]
[ext_resource type="Texture2D" uid="uid://csgthlou2tnvb" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 2.png" id="12_2x3nl"]
[ext_resource type="Texture2D" uid="uid://cfyxuk85350gn" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 3.png" id="13_6a5nw"]
[ext_resource type="Texture2D" uid="uid://dufdb5gc0gfkr" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 4.png" id="14_0jqty"]
[ext_resource type="Texture2D" uid="uid://buu4btd3adrr4" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 5.png" id="15_yjcrh"]
[ext_resource type="Texture2D" uid="uid://ddgctjau0dnmh" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 6.png" id="16_2ybyh"]
[ext_resource type="Texture2D" uid="uid://2jwaacvarrha" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 7.png" id="17_n454k"]
[ext_resource type="Texture2D" uid="uid://8837jm7f78uo" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 8.png" id="18_vrcjv"]
[ext_resource type="Texture2D" uid="uid://devt1gmwduo5h" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 9.png" id="19_h1yxw"]
[ext_resource type="Texture2D" uid="uid://cj3m4eyagiye6" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 10.png" id="20_kg6hd"]
[ext_resource type="Texture2D" uid="uid://cyigr4eip1mxt" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 11.png" id="21_25i3y"]
[ext_resource type="Texture2D" uid="uid://kavqjxq17m0p" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 12.png" id="22_5g722"]
[ext_resource type="Texture2D" uid="uid://bcce7b4wp6a4v" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 13.png" id="23_a6y4x"]
[ext_resource type="Texture2D" uid="uid://doiu8sug4t8ki" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 14.png" id="24_7y7m4"]
[ext_resource type="Texture2D" uid="uid://dqymhvgu03xpl" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 15.png" id="25_ldcvv"]
[ext_resource type="Texture2D" uid="uid://cjk1vjjk3gnjl" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 1.png" id="26_aalmk"]
[ext_resource type="Texture2D" uid="uid://1nv7dlxcqlia" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 2.png" id="27_2le5t"]
[ext_resource type="Texture2D" uid="uid://bniq2b1phbjk5" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 3.png" id="28_4nmgu"]
[ext_resource type="Texture2D" uid="uid://ba846rlx4phr2" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 4.png" id="29_mw5r6"]
[ext_resource type="Texture2D" uid="uid://b76dai3g8nh2a" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 5.png" id="30_jbtxi"]
[ext_resource type="Texture2D" uid="uid://wqec5p5xahew" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 6.png" id="31_mjxlk"]
[ext_resource type="Texture2D" uid="uid://sl7fel3muw2y" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 7.png" id="32_al2xs"]
[ext_resource type="Texture2D" uid="uid://cucixinggd5s2" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 8.png" id="33_afa0q"]
[ext_resource type="Texture2D" uid="uid://ccn6vymd07kd2" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 9.png" id="34_irq32"]
[ext_resource type="Texture2D" uid="uid://b7jqturu5jm2c" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 10.png" id="35_2khaq"]
[ext_resource type="Texture2D" uid="uid://c1m065dts364p" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 11.png" id="36_k7x0x"]
[ext_resource type="Texture2D" uid="uid://qsm43ovrbr7m" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 12.png" id="37_noc6c"]
[ext_resource type="Texture2D" uid="uid://bslsx7k6aa4tf" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 13.png" id="38_tfygr"]
[ext_resource type="Texture2D" uid="uid://cefke0gsokfi1" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 14.png" id="39_fpoao"]
[ext_resource type="Texture2D" uid="uid://blmpd2lu84ppt" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 15.png" id="40_s4c8e"]
[ext_resource type="Texture2D" uid="uid://kwaf2jj5oyu4" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 1.png" id="41_d3ufd"]
[ext_resource type="Texture2D" uid="uid://ul0q834bwd6" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 2.png" id="42_ap0nr"]
[ext_resource type="Texture2D" uid="uid://bpohl3uqutcyb" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 3.png" id="43_snwjc"]
[ext_resource type="Texture2D" uid="uid://dlbt7lj5ryl0v" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 4.png" id="44_wba7a"]
[ext_resource type="Texture2D" uid="uid://bkhn4ck7bx6tt" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 5.png" id="45_v1iqd"]
[ext_resource type="Texture2D" uid="uid://c8uw6qdsi1720" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 6.png" id="46_mylxl"]
[ext_resource type="Texture2D" uid="uid://cnoouhy7p3gi3" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 7.png" id="47_gg0cg"]
[ext_resource type="Texture2D" uid="uid://b1xldymngql00" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 8.png" id="48_33r3i"]
[ext_resource type="Texture2D" uid="uid://btuxhmmb6ikvf" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 9.png" id="49_r4mim"]
[ext_resource type="Texture2D" uid="uid://dlrn3cbdubg5s" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 10.png" id="50_r2i8l"]
[ext_resource type="Texture2D" uid="uid://oukshrxpgscg" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 11.png" id="51_xbv86"]
[ext_resource type="Texture2D" uid="uid://buk3stdgcg44w" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 12.png" id="52_rtp20"]
[ext_resource type="Texture2D" uid="uid://b3gndmrlrvexy" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 13.png" id="53_nr2vc"]
[ext_resource type="Texture2D" uid="uid://b1cmx8l4ia3fv" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 14.png" id="54_jdvn0"]
[ext_resource type="Texture2D" uid="uid://c7t4626rox02s" path="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_SIDE/Layer 15.png" id="55_2eqor"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_oh25a"]
[ext_resource type="Texture2D" uid="uid://dd0ia6isdqg61" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 1.png" id="1_pbx41"]
[ext_resource type="Texture2D" uid="uid://bs4ico5ouo5d3" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 2.png" id="2_0vbio"]
[ext_resource type="Texture2D" uid="uid://85ki5mc4h0vs" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 3.png" id="3_lae8t"]
[ext_resource type="Texture2D" uid="uid://bwt1m2frb3r0e" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 4.png" id="4_53wuj"]
[ext_resource type="Texture2D" uid="uid://ckssl1np6vnlu" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 5.png" id="5_d5bmw"]
[ext_resource type="Texture2D" uid="uid://c4sqc6i3xcfac" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 6.png" id="6_fpvxl"]
[ext_resource type="Texture2D" uid="uid://cawexe4wkosc8" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 7.png" id="7_qq0ru"]
[ext_resource type="Texture2D" uid="uid://d0j1vrx7xdnxl" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 8.png" id="8_c54uj"]
[ext_resource type="Texture2D" uid="uid://d0qhndaukki7c" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 9.png" id="9_qmo72"]
[ext_resource type="Texture2D" uid="uid://cnd08q34wa7ww" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 10.png" id="10_jyt1n"]
[ext_resource type="Texture2D" uid="uid://b8ntr7hh6rr5h" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 1.png" id="11_5un2v"]
[ext_resource type="Texture2D" uid="uid://csgthlou2tnvb" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 2.png" id="12_2x3nl"]
[ext_resource type="Texture2D" uid="uid://cfyxuk85350gn" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 3.png" id="13_6a5nw"]
[ext_resource type="Texture2D" uid="uid://dufdb5gc0gfkr" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 4.png" id="14_0jqty"]
[ext_resource type="Texture2D" uid="uid://buu4btd3adrr4" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 5.png" id="15_yjcrh"]
[ext_resource type="Texture2D" uid="uid://ddgctjau0dnmh" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 6.png" id="16_2ybyh"]
[ext_resource type="Texture2D" uid="uid://2jwaacvarrha" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 7.png" id="17_n454k"]
[ext_resource type="Texture2D" uid="uid://8837jm7f78uo" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 8.png" id="18_vrcjv"]
[ext_resource type="Texture2D" uid="uid://devt1gmwduo5h" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 9.png" id="19_h1yxw"]
[ext_resource type="Texture2D" uid="uid://cj3m4eyagiye6" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 10.png" id="20_kg6hd"]
[ext_resource type="Texture2D" uid="uid://cyigr4eip1mxt" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 11.png" id="21_25i3y"]
[ext_resource type="Texture2D" uid="uid://kavqjxq17m0p" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 12.png" id="22_5g722"]
[ext_resource type="Texture2D" uid="uid://bcce7b4wp6a4v" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 13.png" id="23_a6y4x"]
[ext_resource type="Texture2D" uid="uid://doiu8sug4t8ki" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 14.png" id="24_7y7m4"]
[ext_resource type="Texture2D" uid="uid://dqymhvgu03xpl" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 15.png" id="25_ldcvv"]
[ext_resource type="Texture2D" uid="uid://cjk1vjjk3gnjl" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 1.png" id="26_aalmk"]
[ext_resource type="Texture2D" uid="uid://1nv7dlxcqlia" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 2.png" id="27_2le5t"]
[ext_resource type="Texture2D" uid="uid://bniq2b1phbjk5" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 3.png" id="28_4nmgu"]
[ext_resource type="Texture2D" uid="uid://ba846rlx4phr2" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 4.png" id="29_mw5r6"]
[ext_resource type="Texture2D" uid="uid://b76dai3g8nh2a" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 5.png" id="30_jbtxi"]
[ext_resource type="Texture2D" uid="uid://wqec5p5xahew" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 6.png" id="31_mjxlk"]
[ext_resource type="Texture2D" uid="uid://sl7fel3muw2y" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 7.png" id="32_al2xs"]
[ext_resource type="Texture2D" uid="uid://cucixinggd5s2" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 8.png" id="33_afa0q"]
[ext_resource type="Texture2D" uid="uid://ccn6vymd07kd2" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 9.png" id="34_irq32"]
[ext_resource type="Texture2D" uid="uid://b7jqturu5jm2c" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 10.png" id="35_2khaq"]
[ext_resource type="Texture2D" uid="uid://c1m065dts364p" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 11.png" id="36_k7x0x"]
[ext_resource type="Texture2D" uid="uid://qsm43ovrbr7m" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 12.png" id="37_noc6c"]
[ext_resource type="Texture2D" uid="uid://bslsx7k6aa4tf" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 13.png" id="38_tfygr"]
[ext_resource type="Texture2D" uid="uid://cefke0gsokfi1" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 14.png" id="39_fpoao"]
[ext_resource type="Texture2D" uid="uid://blmpd2lu84ppt" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 15.png" id="40_s4c8e"]
[ext_resource type="Texture2D" uid="uid://kwaf2jj5oyu4" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 1.png" id="41_d3ufd"]
[ext_resource type="Texture2D" uid="uid://ul0q834bwd6" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 2.png" id="42_ap0nr"]
[ext_resource type="Texture2D" uid="uid://bpohl3uqutcyb" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 3.png" id="43_snwjc"]
[ext_resource type="Texture2D" uid="uid://dlbt7lj5ryl0v" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 4.png" id="44_wba7a"]
[ext_resource type="Texture2D" uid="uid://bkhn4ck7bx6tt" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 5.png" id="45_v1iqd"]
[ext_resource type="Texture2D" uid="uid://c8uw6qdsi1720" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 6.png" id="46_mylxl"]
[ext_resource type="Texture2D" uid="uid://cnoouhy7p3gi3" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 7.png" id="47_gg0cg"]
[ext_resource type="Texture2D" uid="uid://b1xldymngql00" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 8.png" id="48_33r3i"]
[ext_resource type="Texture2D" uid="uid://btuxhmmb6ikvf" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 9.png" id="49_r4mim"]
[ext_resource type="Texture2D" uid="uid://dlrn3cbdubg5s" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 10.png" id="50_r2i8l"]
[ext_resource type="Texture2D" uid="uid://oukshrxpgscg" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 11.png" id="51_xbv86"]
[ext_resource type="Texture2D" uid="uid://buk3stdgcg44w" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 12.png" id="52_rtp20"]
[ext_resource type="Texture2D" uid="uid://b3gndmrlrvexy" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 13.png" id="53_nr2vc"]
[ext_resource type="Texture2D" uid="uid://b1cmx8l4ia3fv" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 14.png" id="54_jdvn0"]
[ext_resource type="Texture2D" uid="uid://c7t4626rox02s" path="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_SIDE/Layer 15.png" id="55_2eqor"]
[ext_resource type="Script" uid="uid://6edayafleq8y" path="res://src/hitbox/Hitbox.cs" id="57_lae8t"]
[sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"]
@@ -690,8 +689,7 @@ transitions = ["idle_front_walk", "idle_left_walk", SubResource("AnimationNodeSt
graph_offset = Vector2(495.706, -34.8579)
[node name="EnemyModelView" type="Node3D"]
script = ExtResource("1_0vbio")
EnemyLoreInfo = ExtResource("2_53wuj")
script = ExtResource("1_oh25a")
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0, 0)

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dd0ia6isdqg61"
path="res://.godot/imported/Layer 1.png-5b9fe66235ef77b00745deff3625b602.ctex"
path="res://.godot/imported/Layer 1.png-bd8d0a308ff3daec4b133fe53712d0f8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 1.png"
dest_files=["res://.godot/imported/Layer 1.png-5b9fe66235ef77b00745deff3625b602.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 1.png"
dest_files=["res://.godot/imported/Layer 1.png-bd8d0a308ff3daec4b133fe53712d0f8.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cnd08q34wa7ww"
path="res://.godot/imported/Layer 10.png-c175c66a28a6cd1f5b29ce6b0800367f.ctex"
path="res://.godot/imported/Layer 10.png-5bf815a3d9112f8b0f5c1d296d4c79d5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 10.png"
dest_files=["res://.godot/imported/Layer 10.png-c175c66a28a6cd1f5b29ce6b0800367f.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 10.png"
dest_files=["res://.godot/imported/Layer 10.png-5bf815a3d9112f8b0f5c1d296d4c79d5.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bs4ico5ouo5d3"
path="res://.godot/imported/Layer 2.png-81868ef3cdd23bde0e487d9ef0938e0b.ctex"
path="res://.godot/imported/Layer 2.png-ad4263d32cc8125e5db988e6008f1261.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 2.png"
dest_files=["res://.godot/imported/Layer 2.png-81868ef3cdd23bde0e487d9ef0938e0b.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 2.png"
dest_files=["res://.godot/imported/Layer 2.png-ad4263d32cc8125e5db988e6008f1261.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://85ki5mc4h0vs"
path="res://.godot/imported/Layer 3.png-ddb98d9b5346cb4de4ba5ce0ab332f74.ctex"
path="res://.godot/imported/Layer 3.png-1664f998445a2cf068e7ca8f3d037c03.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 3.png"
dest_files=["res://.godot/imported/Layer 3.png-ddb98d9b5346cb4de4ba5ce0ab332f74.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 3.png"
dest_files=["res://.godot/imported/Layer 3.png-1664f998445a2cf068e7ca8f3d037c03.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bwt1m2frb3r0e"
path="res://.godot/imported/Layer 4.png-8435898b081e57af61cf1c1aa776d9e7.ctex"
path="res://.godot/imported/Layer 4.png-4fa071fc5d0751880691269fd66e4a38.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 4.png"
dest_files=["res://.godot/imported/Layer 4.png-8435898b081e57af61cf1c1aa776d9e7.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 4.png"
dest_files=["res://.godot/imported/Layer 4.png-4fa071fc5d0751880691269fd66e4a38.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ckssl1np6vnlu"
path="res://.godot/imported/Layer 5.png-2239cf447db71740a2613f7ceaae85c2.ctex"
path="res://.godot/imported/Layer 5.png-6605d9488d5f0dd4dfc3db6d6a436cde.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 5.png"
dest_files=["res://.godot/imported/Layer 5.png-2239cf447db71740a2613f7ceaae85c2.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 5.png"
dest_files=["res://.godot/imported/Layer 5.png-6605d9488d5f0dd4dfc3db6d6a436cde.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c4sqc6i3xcfac"
path="res://.godot/imported/Layer 6.png-caea54bf0971b2b1feac3472facfd241.ctex"
path="res://.godot/imported/Layer 6.png-b4a8ec7de19cfe292d93ce32d6ec9ee3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 6.png"
dest_files=["res://.godot/imported/Layer 6.png-caea54bf0971b2b1feac3472facfd241.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 6.png"
dest_files=["res://.godot/imported/Layer 6.png-b4a8ec7de19cfe292d93ce32d6ec9ee3.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cawexe4wkosc8"
path="res://.godot/imported/Layer 7.png-5fe0455b76c0cf1128699c0f6b058aff.ctex"
path="res://.godot/imported/Layer 7.png-488d3fb32cd66da8971597d23bd04ba8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 7.png"
dest_files=["res://.godot/imported/Layer 7.png-5fe0455b76c0cf1128699c0f6b058aff.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 7.png"
dest_files=["res://.godot/imported/Layer 7.png-488d3fb32cd66da8971597d23bd04ba8.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d0j1vrx7xdnxl"
path="res://.godot/imported/Layer 8.png-f7fb26baec479643d61259af33d78eb1.ctex"
path="res://.godot/imported/Layer 8.png-f8c8423b6ef9e0c3d6ca5229445d34a6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 8.png"
dest_files=["res://.godot/imported/Layer 8.png-f7fb26baec479643d61259af33d78eb1.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 8.png"
dest_files=["res://.godot/imported/Layer 8.png-f8c8423b6ef9e0c3d6ca5229445d34a6.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d0qhndaukki7c"
path="res://.godot/imported/Layer 9.png-dec39fd87ec117cd8cb03aa4e6494af8.ctex"
path="res://.godot/imported/Layer 9.png-caabc67ddb2476f5761c0554d0b4b68d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/ATTACK/Layer 9.png"
dest_files=["res://.godot/imported/Layer 9.png-dec39fd87ec117cd8cb03aa4e6494af8.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 9.png"
dest_files=["res://.godot/imported/Layer 9.png-caabc67ddb2476f5761c0554d0b4b68d.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b8ntr7hh6rr5h"
path="res://.godot/imported/Layer 1.png-60d7fdbbac434630cf32e9a0aab33fa3.ctex"
path="res://.godot/imported/Layer 1.png-1af20796814e6cbd19ad152136cda4bf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 1.png"
dest_files=["res://.godot/imported/Layer 1.png-60d7fdbbac434630cf32e9a0aab33fa3.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 1.png"
dest_files=["res://.godot/imported/Layer 1.png-1af20796814e6cbd19ad152136cda4bf.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cj3m4eyagiye6"
path="res://.godot/imported/Layer 10.png-ae95b6e132950c357a13d945d6249aff.ctex"
path="res://.godot/imported/Layer 10.png-90e454e5b43acbf1f2a8a10b75127361.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 10.png"
dest_files=["res://.godot/imported/Layer 10.png-ae95b6e132950c357a13d945d6249aff.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 10.png"
dest_files=["res://.godot/imported/Layer 10.png-90e454e5b43acbf1f2a8a10b75127361.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cyigr4eip1mxt"
path="res://.godot/imported/Layer 11.png-1e36e7ed97ee937b1b65866da3da8cf4.ctex"
path="res://.godot/imported/Layer 11.png-dbe72027bf9e28d92151e3eb5302a235.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 11.png"
dest_files=["res://.godot/imported/Layer 11.png-1e36e7ed97ee937b1b65866da3da8cf4.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 11.png"
dest_files=["res://.godot/imported/Layer 11.png-dbe72027bf9e28d92151e3eb5302a235.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://kavqjxq17m0p"
path="res://.godot/imported/Layer 12.png-5cc25f739d71b51d0d03067c83a31ffb.ctex"
path="res://.godot/imported/Layer 12.png-d451de2058e6cabf245a4e14055ca3ff.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 12.png"
dest_files=["res://.godot/imported/Layer 12.png-5cc25f739d71b51d0d03067c83a31ffb.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 12.png"
dest_files=["res://.godot/imported/Layer 12.png-d451de2058e6cabf245a4e14055ca3ff.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bcce7b4wp6a4v"
path="res://.godot/imported/Layer 13.png-039b76ac83350c62c5d491299b2cd4e7.ctex"
path="res://.godot/imported/Layer 13.png-1670c6688dbe65fb29a169a6d186e0b8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 13.png"
dest_files=["res://.godot/imported/Layer 13.png-039b76ac83350c62c5d491299b2cd4e7.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 13.png"
dest_files=["res://.godot/imported/Layer 13.png-1670c6688dbe65fb29a169a6d186e0b8.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://doiu8sug4t8ki"
path="res://.godot/imported/Layer 14.png-2fa8256307e46de387b692a4c87e94f9.ctex"
path="res://.godot/imported/Layer 14.png-e35d02a2d0d59dec0fd9b289c503195f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 14.png"
dest_files=["res://.godot/imported/Layer 14.png-2fa8256307e46de387b692a4c87e94f9.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 14.png"
dest_files=["res://.godot/imported/Layer 14.png-e35d02a2d0d59dec0fd9b289c503195f.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dqymhvgu03xpl"
path="res://.godot/imported/Layer 15.png-3ed5689c3217d3740c4d735b5c3d33f7.ctex"
path="res://.godot/imported/Layer 15.png-4b38e38c90b8333b6dc347487db05eec.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 15.png"
dest_files=["res://.godot/imported/Layer 15.png-3ed5689c3217d3740c4d735b5c3d33f7.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 15.png"
dest_files=["res://.godot/imported/Layer 15.png-4b38e38c90b8333b6dc347487db05eec.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://csgthlou2tnvb"
path="res://.godot/imported/Layer 2.png-148b13578b66a152f67257601e69749b.ctex"
path="res://.godot/imported/Layer 2.png-ca42949b60502fbe8427c1345eb19d2c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 2.png"
dest_files=["res://.godot/imported/Layer 2.png-148b13578b66a152f67257601e69749b.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 2.png"
dest_files=["res://.godot/imported/Layer 2.png-ca42949b60502fbe8427c1345eb19d2c.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cfyxuk85350gn"
path="res://.godot/imported/Layer 3.png-03bc4d180da3f3a5dec81643f529245b.ctex"
path="res://.godot/imported/Layer 3.png-3a515f85c9b04eb7a48348228229101a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 3.png"
dest_files=["res://.godot/imported/Layer 3.png-03bc4d180da3f3a5dec81643f529245b.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 3.png"
dest_files=["res://.godot/imported/Layer 3.png-3a515f85c9b04eb7a48348228229101a.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dufdb5gc0gfkr"
path="res://.godot/imported/Layer 4.png-127401bbc96da77eb91c82d6aae30cd7.ctex"
path="res://.godot/imported/Layer 4.png-c7bf5b449416964c0b42e32b468194e8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 4.png"
dest_files=["res://.godot/imported/Layer 4.png-127401bbc96da77eb91c82d6aae30cd7.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 4.png"
dest_files=["res://.godot/imported/Layer 4.png-c7bf5b449416964c0b42e32b468194e8.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://buu4btd3adrr4"
path="res://.godot/imported/Layer 5.png-3a161158dc6fd41d5a9db942dfafccfd.ctex"
path="res://.godot/imported/Layer 5.png-4910e8406f750016c64e9645ece384cd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 5.png"
dest_files=["res://.godot/imported/Layer 5.png-3a161158dc6fd41d5a9db942dfafccfd.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 5.png"
dest_files=["res://.godot/imported/Layer 5.png-4910e8406f750016c64e9645ece384cd.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ddgctjau0dnmh"
path="res://.godot/imported/Layer 6.png-9c8bcdbce8670a62871a8ebf12db69dc.ctex"
path="res://.godot/imported/Layer 6.png-5089fecd867d9797ab7d87b3a86569e2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 6.png"
dest_files=["res://.godot/imported/Layer 6.png-9c8bcdbce8670a62871a8ebf12db69dc.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 6.png"
dest_files=["res://.godot/imported/Layer 6.png-5089fecd867d9797ab7d87b3a86569e2.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://2jwaacvarrha"
path="res://.godot/imported/Layer 7.png-eff930047da751da9f216d75ff8e4b56.ctex"
path="res://.godot/imported/Layer 7.png-f2b0baf1eb6fc935d3bf1495fadacd18.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 7.png"
dest_files=["res://.godot/imported/Layer 7.png-eff930047da751da9f216d75ff8e4b56.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 7.png"
dest_files=["res://.godot/imported/Layer 7.png-f2b0baf1eb6fc935d3bf1495fadacd18.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://8837jm7f78uo"
path="res://.godot/imported/Layer 8.png-38696d7852cdcceb3457b0022e66e26b.ctex"
path="res://.godot/imported/Layer 8.png-e0bdbc12588d1ae397cea9d3adbd1fdd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 8.png"
dest_files=["res://.godot/imported/Layer 8.png-38696d7852cdcceb3457b0022e66e26b.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 8.png"
dest_files=["res://.godot/imported/Layer 8.png-e0bdbc12588d1ae397cea9d3adbd1fdd.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://devt1gmwduo5h"
path="res://.godot/imported/Layer 9.png-aa787b39f1b4576b4a1d0ccd255d81c8.ctex"
path="res://.godot/imported/Layer 9.png-b190ba9434fb36fff1b9cab779b8a036.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_BACK/Layer 9.png"
dest_files=["res://.godot/imported/Layer 9.png-aa787b39f1b4576b4a1d0ccd255d81c8.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_BACK/Layer 9.png"
dest_files=["res://.godot/imported/Layer 9.png-b190ba9434fb36fff1b9cab779b8a036.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cjk1vjjk3gnjl"
path="res://.godot/imported/Layer 1.png-3d480eb3614fc3acfd090150b6daad83.ctex"
path="res://.godot/imported/Layer 1.png-7f29af16ec032c588522b621e002a939.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 1.png"
dest_files=["res://.godot/imported/Layer 1.png-3d480eb3614fc3acfd090150b6daad83.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 1.png"
dest_files=["res://.godot/imported/Layer 1.png-7f29af16ec032c588522b621e002a939.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b7jqturu5jm2c"
path="res://.godot/imported/Layer 10.png-938b9ce83355463a9d90e83c1030dec4.ctex"
path="res://.godot/imported/Layer 10.png-223f47f08d11bf248ea4275a7450872c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 10.png"
dest_files=["res://.godot/imported/Layer 10.png-938b9ce83355463a9d90e83c1030dec4.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 10.png"
dest_files=["res://.godot/imported/Layer 10.png-223f47f08d11bf248ea4275a7450872c.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c1m065dts364p"
path="res://.godot/imported/Layer 11.png-ea5eb04ead813d69448bfbf4d3eea19f.ctex"
path="res://.godot/imported/Layer 11.png-b3a00dc973dc225a9b63ae1553a28222.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 11.png"
dest_files=["res://.godot/imported/Layer 11.png-ea5eb04ead813d69448bfbf4d3eea19f.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 11.png"
dest_files=["res://.godot/imported/Layer 11.png-b3a00dc973dc225a9b63ae1553a28222.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://qsm43ovrbr7m"
path="res://.godot/imported/Layer 12.png-8400acd03d2bed037f1171d02b7c06ab.ctex"
path="res://.godot/imported/Layer 12.png-3da1bcbfa1c3b6d30e34b2aaada99851.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 12.png"
dest_files=["res://.godot/imported/Layer 12.png-8400acd03d2bed037f1171d02b7c06ab.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 12.png"
dest_files=["res://.godot/imported/Layer 12.png-3da1bcbfa1c3b6d30e34b2aaada99851.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bslsx7k6aa4tf"
path="res://.godot/imported/Layer 13.png-3db0976880b54ac956319b27aa1c55da.ctex"
path="res://.godot/imported/Layer 13.png-ce3a789a697eb33d735f02d4953753f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 13.png"
dest_files=["res://.godot/imported/Layer 13.png-3db0976880b54ac956319b27aa1c55da.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 13.png"
dest_files=["res://.godot/imported/Layer 13.png-ce3a789a697eb33d735f02d4953753f6.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cefke0gsokfi1"
path="res://.godot/imported/Layer 14.png-93f662eb1bb7b5769d7a973534acc7c0.ctex"
path="res://.godot/imported/Layer 14.png-5604097342d06aa8360b94f5c6119e81.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 14.png"
dest_files=["res://.godot/imported/Layer 14.png-93f662eb1bb7b5769d7a973534acc7c0.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 14.png"
dest_files=["res://.godot/imported/Layer 14.png-5604097342d06aa8360b94f5c6119e81.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://blmpd2lu84ppt"
path="res://.godot/imported/Layer 15.png-81773cfcee2d00e9bd21897aa90f0c95.ctex"
path="res://.godot/imported/Layer 15.png-bdd608137238311f3d2ef8db75cf015c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 15.png"
dest_files=["res://.godot/imported/Layer 15.png-81773cfcee2d00e9bd21897aa90f0c95.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 15.png"
dest_files=["res://.godot/imported/Layer 15.png-bdd608137238311f3d2ef8db75cf015c.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://1nv7dlxcqlia"
path="res://.godot/imported/Layer 2.png-50bc09237ea069ae5ec832b8fc175c65.ctex"
path="res://.godot/imported/Layer 2.png-5cb9d2a194768dc1674bb54c811e2cbb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 2.png"
dest_files=["res://.godot/imported/Layer 2.png-50bc09237ea069ae5ec832b8fc175c65.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 2.png"
dest_files=["res://.godot/imported/Layer 2.png-5cb9d2a194768dc1674bb54c811e2cbb.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bniq2b1phbjk5"
path="res://.godot/imported/Layer 3.png-694bf1d166b4939b08cd6ffeefad8ac4.ctex"
path="res://.godot/imported/Layer 3.png-2a70da4a5edb45d22671dcbc70b844fd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 3.png"
dest_files=["res://.godot/imported/Layer 3.png-694bf1d166b4939b08cd6ffeefad8ac4.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 3.png"
dest_files=["res://.godot/imported/Layer 3.png-2a70da4a5edb45d22671dcbc70b844fd.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ba846rlx4phr2"
path="res://.godot/imported/Layer 4.png-290810013ad37018643ae3bef23de34e.ctex"
path="res://.godot/imported/Layer 4.png-b056eb2e1553caa85cdf5fda5d0acad6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 4.png"
dest_files=["res://.godot/imported/Layer 4.png-290810013ad37018643ae3bef23de34e.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 4.png"
dest_files=["res://.godot/imported/Layer 4.png-b056eb2e1553caa85cdf5fda5d0acad6.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b76dai3g8nh2a"
path="res://.godot/imported/Layer 5.png-5f868ec0ad17dd70a5de6e9df0a485da.ctex"
path="res://.godot/imported/Layer 5.png-4a036339615aeede1b6d2302a98cbbce.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 5.png"
dest_files=["res://.godot/imported/Layer 5.png-5f868ec0ad17dd70a5de6e9df0a485da.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 5.png"
dest_files=["res://.godot/imported/Layer 5.png-4a036339615aeede1b6d2302a98cbbce.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://wqec5p5xahew"
path="res://.godot/imported/Layer 6.png-fa02975097a390dea36b1907030cdf4a.ctex"
path="res://.godot/imported/Layer 6.png-7d05fcaf82da03a919d93056ca38350c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 6.png"
dest_files=["res://.godot/imported/Layer 6.png-fa02975097a390dea36b1907030cdf4a.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 6.png"
dest_files=["res://.godot/imported/Layer 6.png-7d05fcaf82da03a919d93056ca38350c.ctex"]
[params]

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://sl7fel3muw2y"
path="res://.godot/imported/Layer 7.png-6025f3f3cb810208b467730a0ff13479.ctex"
path="res://.godot/imported/Layer 7.png-2afc78e3f52e46f06d927a16a4ec0cb8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/enemy/enemy_types/1. sproingy/animations/IDLE_WALK_FRONT/Layer 7.png"
dest_files=["res://.godot/imported/Layer 7.png-6025f3f3cb810208b467730a0ff13479.ctex"]
source_file="res://src/enemy/enemy_types/01. sproingy/animations/IDLE_WALK_FRONT/Layer 7.png"
dest_files=["res://.godot/imported/Layer 7.png-2afc78e3f52e46f06d927a16a4ec0cb8.ctex"]
[params]

Some files were not shown because too many files have changed in this diff Show More