Late November Merge

This commit is contained in:
Pal
2025-11-26 02:38:43 -08:00
177 changed files with 4935 additions and 4369 deletions

View File

@@ -1,30 +0,0 @@
using Godot;
namespace Zennysoft.Ma.Adapter;
public partial class AudioManager : Node
{
#pragma warning disable IDE0044 // Add readonly modifier
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
private static string _sfxPath = $"res://src/audio/sfx";
private AudioStreamPlayer _audioPlayer;
private IDictionary<SoundEffects, AudioStream> _sfxDictionary;
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
#pragma warning restore IDE0044 // Add readonly modifier
public override void _Ready()
{
_audioPlayer = new AudioStreamPlayer();
_sfxDictionary = new Dictionary<SoundEffects, AudioStream>();
var soundEffects = Enum.GetValues(typeof(SoundEffects));
foreach (var effect in soundEffects)
_sfxDictionary.Add((SoundEffects)effect, GD.Load<AudioStream>(_sfxPath + effect + ".ogg"));
}
public void Play(SoundEffects soundEffect)
{
_sfxDictionary.TryGetValue(soundEffect, out var stream);
_audioPlayer.Stream = stream;
_audioPlayer.Play();
}
}

View File

@@ -1,14 +0,0 @@
namespace Zennysoft.Ma.Adapter;
public enum SoundEffects
{
Cancel,
Equip,
Heal,
MenuBack,
MoveThroughOptions,
PlayerAttack,
PlayerHitWall,
Sort,
Unequip
}

View File

@@ -16,6 +16,10 @@ namespace Zennysoft.Ma.Adapter.Entity
public void ReturnToDefaultState(); public void ReturnToDefaultState();
public void OnAbsorb();
public void OnMorph();
public IDungeonRoom GetCurrentRoom(ImmutableList<IDungeonRoom> dungeonRooms); public IDungeonRoom GetCurrentRoom(ImmutableList<IDungeonRoom> dungeonRooms);
public void MoveEnemyToNewRoom(IDungeonRoom newRoom); public void MoveEnemyToNewRoom(IDungeonRoom newRoom);

View File

@@ -12,7 +12,7 @@ public interface IInventory
public void Remove(InventoryItem inventoryItem); public void Remove(InventoryItem inventoryItem);
public void Sort(EquipableItem currentWeapon, EquipableItem currentArmor, EquipableItem currentAccessory); public bool Sort(EquipableItem currentWeapon, EquipableItem currentArmor, EquipableItem currentAccessory);
public event Action<string> BroadcastMessage; public event Action<string> BroadcastMessage;
public event Action InventoryChanged; public event Action InventoryChanged;

View File

@@ -1,4 +1,4 @@
<Project Sdk="Godot.NET.Sdk/4.4.1"> <Project Sdk="Godot.NET.Sdk/4.4.0">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading> <EnableDynamicLoading>true</EnableDynamicLoading>

View File

@@ -1,38 +0,0 @@
<Project Sdk="Godot.NET.Sdk/4.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
<WarningsAsErrors>CS9057</WarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Chickensoft.AutoInject" Version="2.5.0" />
<PackageReference Include="Chickensoft.GodotNodeInterfaces" Version="2.4.0" />
<PackageReference Include="Chickensoft.Introspection" Version="2.2.0" />
<PackageReference Include="Chickensoft.Introspection.Generator" Version="2.2.0" />
<PackageReference Include="Chickensoft.LogicBlocks" Version="5.16.0" />
<PackageReference Include="Chickensoft.LogicBlocks.DiagramGenerator" Version="5.16.0" />
<PackageReference Include="Chickensoft.SaveFileBuilder" Version="1.1.0" />
<PackageReference Include="Chickensoft.Serialization.Godot" Version="0.7.6" />
<PackageReference Include="GodotSharp.SourceGenerators" Version="2.6.0-250131-2115.Release" />
<PackageReference Include="SimpleInjector" Version="5.5.0" />
<PackageReference Include="SSH.NET" Version="2024.2.0" />
<PackageReference Include="System.IO.Abstractions" Version="22.0.11" />
<PackageReference Include="Zeroconf" Version="3.7.16" />
</ItemGroup>
<ItemGroup>
<None Include=".editorconfig" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Zennysoft.Game.Godot.Implementation\Zennysoft.Game.Implementation.csproj" />
<ProjectReference Include="..\Zennysoft.Game.Ma.Implementation\Zennysoft.Ma.Adapter.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="Godot.SourceGenerators" Version="4.4.0-dev.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="GodotSharp" Version="4.4.0-dev.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="GodotSharpEditor" Version="4.4.0-dev.2" />
</ItemGroup>
</Project>

View File

@@ -24,6 +24,7 @@ DialogueController="*res://src/game/DialogueController.cs"
AudioManager="*res://src/audio/AudioManager.cs" AudioManager="*res://src/audio/AudioManager.cs"
BgmPlayer="*res://src/audio/BGMPlayer.cs" BgmPlayer="*res://src/audio/BGMPlayer.cs"
InputHelper="*res://addons/input_helper/input_helper.gd" InputHelper="*res://addons/input_helper/input_helper.gd"
SfxDatabase="*res://src/audio/SFXDatabase.tscn"
[dialogue_manager] [dialogue_manager]
@@ -84,6 +85,7 @@ ui_cancel={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null) "events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
] ]
} }
ui_focus_next={ ui_focus_next={

View File

@@ -52,6 +52,7 @@ public class ExperiencePointsComponent : IExperiencePointsComponent
public void LevelUp() public void LevelUp()
{ {
SfxDatabase.Instance.Play(SoundEffect.LevelUp);
_level.OnNext(_level.Value + 1); _level.OnNext(_level.Value + 1);
var expToNextLevel = ExpToNextLevelCalculation(_level.Value); var expToNextLevel = ExpToNextLevelCalculation(_level.Value);
_currentExp.OnNext(_currentExp.Value - _expToNextLevel.Value); _currentExp.OnNext(_currentExp.Value - _expToNextLevel.Value);

View File

@@ -3,12 +3,12 @@
importer="wav" importer="wav"
type="AudioStreamWAV" type="AudioStreamWAV"
uid="uid://ddii3pi8x75xc" uid="uid://ddii3pi8x75xc"
path="res://.godot/imported/amb_beach.wav-e64adf8f733e6a108ae15edd5f0499ab.sample" path="res://.godot/imported/amb_beach.wav-046e4f838e50e43a1aba1a754b92aad6.sample"
[deps] [deps]
source_file="res://src/audio/amb/amb_beach.wav" source_file="res://src/audio/AMB/amb_beach.wav"
dest_files=["res://.godot/imported/amb_beach.wav-e64adf8f733e6a108ae15edd5f0499ab.sample"] dest_files=["res://.godot/imported/amb_beach.wav-046e4f838e50e43a1aba1a754b92aad6.sample"]
[params] [params]

View File

@@ -3,12 +3,12 @@
importer="wav" importer="wav"
type="AudioStreamWAV" type="AudioStreamWAV"
uid="uid://ym4ur8a2qxhp" uid="uid://ym4ur8a2qxhp"
path="res://.godot/imported/amb_perlin.wav-dea63667b2a56d37d48ba209f56f8900.sample" path="res://.godot/imported/amb_perlin.wav-ba6da0d5591f392e4aca7d2f85c4dfc2.sample"
[deps] [deps]
source_file="res://src/audio/amb/amb_perlin.wav" source_file="res://src/audio/AMB/amb_perlin.wav"
dest_files=["res://.godot/imported/amb_perlin.wav-dea63667b2a56d37d48ba209f56f8900.sample"] dest_files=["res://.godot/imported/amb_perlin.wav-ba6da0d5591f392e4aca7d2f85c4dfc2.sample"]
[params] [params]

View File

@@ -3,12 +3,12 @@
importer="wav" importer="wav"
type="AudioStreamWAV" type="AudioStreamWAV"
uid="uid://b7wxddjx3qw5o" uid="uid://b7wxddjx3qw5o"
path="res://.godot/imported/amb_white_noise.wav-c98b45aa94120bc0c660bf2d6af1c696.sample" path="res://.godot/imported/amb_white_noise.wav-d316dd05afe429f6bcdda594285ad718.sample"
[deps] [deps]
source_file="res://src/audio/amb/amb_white_noise.wav" source_file="res://src/audio/AMB/amb_white_noise.wav"
dest_files=["res://.godot/imported/amb_white_noise.wav-c98b45aa94120bc0c660bf2d6af1c696.sample"] dest_files=["res://.godot/imported/amb_white_noise.wav-d316dd05afe429f6bcdda594285ad718.sample"]
[params] [params]

View File

@@ -3,12 +3,12 @@
importer="wav" importer="wav"
type="AudioStreamWAV" type="AudioStreamWAV"
uid="uid://bmiitw4fcs68e" uid="uid://bmiitw4fcs68e"
path="res://.godot/imported/amb_wind_loop_altar.wav-b9d60e3c3c10ec00833903539a7f3796.sample" path="res://.godot/imported/amb_wind_loop_altar.wav-e766e3db29faa01ad6dbaa8cb18d7de6.sample"
[deps] [deps]
source_file="res://src/audio/amb/amb_wind_loop_altar.wav" source_file="res://src/audio/AMB/amb_wind_loop_altar.wav"
dest_files=["res://.godot/imported/amb_wind_loop_altar.wav-b9d60e3c3c10ec00833903539a7f3796.sample"] dest_files=["res://.godot/imported/amb_wind_loop_altar.wav-e766e3db29faa01ad6dbaa8cb18d7de6.sample"]
[params] [params]

View File

@@ -1,43 +1,21 @@
using Godot; using Godot;
using System;
using System.Collections.Generic;
namespace Zennysoft.Game.Ma; namespace Zennysoft.Game.Ma;
public partial class AudioManager : Node public partial class AudioManager : Node
{ {
private static string sfxPath = $"res://src/audio/sfx/"; private static AudioStreamPlayer _audioPlayer;
private AudioStreamPlayer _audioPlayer; private static AudioManager _instance;
private IDictionary<SoundEffect, AudioStream> _sfxDictionary;
public static AudioManager Instance => _instance;
public override void _Ready() public override void _Ready()
{ {
if (_instance != null)
QueueFree();
_instance = this;
_audioPlayer = new AudioStreamPlayer(); _audioPlayer = new AudioStreamPlayer();
AddChild(_audioPlayer); AddChild(_audioPlayer);
_sfxDictionary = new Dictionary<SoundEffect, AudioStream>();
var soundEffects = Enum.GetValues(typeof(SoundEffect));
foreach (var effect in soundEffects)
_sfxDictionary.Add((SoundEffect)effect, GD.Load<AudioStream>(sfxPath + effect + ".ogg"));
_audioPlayer.Bus = "SFX"; _audioPlayer.Bus = "SFX";
} }
public void Play(SoundEffect soundEffect)
{
_sfxDictionary.TryGetValue(soundEffect, out var stream);
_audioPlayer.Stream = stream;
_audioPlayer.Play();
}
}
public enum SoundEffect
{
Cancel,
Equip,
Heal,
MenuBack,
MoveThroughOptions,
PlayerAttack,
PlayerHitWall,
Select,
Sort,
Unequip
} }

View File

@@ -0,0 +1,150 @@
[gd_scene load_steps=25 format=3 uid="uid://brgi35xj3b4ud"]
[ext_resource type="Script" uid="uid://cw100tox0ufsy" path="res://src/audio/SfxDatabase.cs" id="1_ojkqd"]
[ext_resource type="AudioStream" uid="uid://cye8wlqbx66h4" path="res://src/audio/sfx/player_heal.ogg" id="2_158j8"]
[ext_resource type="AudioStream" uid="uid://1nuk6xpkwujl" path="res://src/audio/sfx/player_gain_VT.ogg" id="3_kac56"]
[ext_resource type="AudioStream" uid="uid://bfrp34y2m8b1l" path="res://src/audio/sfx/item_number_increase.ogg" id="4_fa8i8"]
[ext_resource type="AudioStream" uid="uid://xjdv23q5cqhm" path="res://src/audio/sfx/UI_PAUSE.ogg" id="5_p5cio"]
[ext_resource type="AudioStream" uid="uid://clhdcrs4dxt6h" path="res://src/audio/sfx/UI_MOVE.ogg" id="6_r16t0"]
[ext_resource type="AudioStream" uid="uid://c817txm4tmup7" path="res://src/audio/sfx/PLAYER_EQUIP.ogg" id="7_sew62"]
[ext_resource type="AudioStream" uid="uid://qxi7qto7hhgk" path="res://src/audio/sfx/PLAYER_UNEQUIP.ogg" id="8_rf1la"]
[ext_resource type="AudioStream" uid="uid://doeefxilh0luj" path="res://src/audio/sfx/ITEM_SORT.ogg" id="9_l6w22"]
[ext_resource type="AudioStream" uid="uid://4mk4hlse81if" path="res://src/audio/sfx/player_losehealth.ogg" id="10_kac56"]
[ext_resource type="AudioStream" uid="uid://dwp3ep3jddvrr" path="res://src/audio/sfx/UI_SELECT.ogg" id="10_nerso"]
[ext_resource type="AudioStream" uid="uid://oslvh60ec5gc" path="res://src/audio/sfx/UI_CANCEL_BACK.ogg" id="11_rloay"]
[ext_resource type="AudioStream" uid="uid://bo2u1ceci6k1i" path="res://src/audio/sfx/PLAYER_quicker_slash.ogg" id="13_fa8i8"]
[ext_resource type="AudioStream" uid="uid://na0lxb1lib11" path="res://src/audio/sfx/player_crit.ogg" id="14_p5cio"]
[ext_resource type="AudioStream" uid="uid://bsc83jkt7uisg" path="res://src/audio/sfx/PLAYER_GET_ITEM.ogg" id="15_r16t0"]
[ext_resource type="AudioStream" uid="uid://ckf3md1ujxhvm" path="res://src/audio/sfx/player_levelup.ogg" id="16_sew62"]
[ext_resource type="AudioStream" uid="uid://coeynqnn61c43" path="res://src/audio/sfx/ITEM_TRANSFER.ogg" id="18_l6w22"]
[ext_resource type="AudioStream" uid="uid://bfrmm07vthpwt" path="res://src/audio/sfx/item_divine_recall.ogg" id="19_nerso"]
[ext_resource type="AudioStream" uid="uid://bu8akh5uh3ioo" path="res://src/audio/sfx/item_devic_balance_element1.ogg" id="20_rloay"]
[ext_resource type="AudioStream" uid="uid://bjkn6s2xjxuji" path="res://src/audio/sfx/item_gospel_dimension.ogg" id="21_6hsck"]
[ext_resource type="AudioStream" uid="uid://c3ur4bgvmsidi" path="res://src/audio/sfx/item_gospel_escape.ogg" id="22_3wq6u"]
[ext_resource type="AudioStream" uid="uid://bc2pe0l5nr5ro" path="res://src/audio/sfx/ITEM_kyuu_hit.ogg" id="23_aaerj"]
[ext_resource type="AudioStream" uid="uid://ck0nc757t0jq5" path="res://src/audio/sfx/ITEM_PERSPECTIVE.ogg" id="23_jdwj3"]
[ext_resource type="AudioStream" uid="uid://dblijlgm8njjv" path="res://src/audio/sfx/item_sine_morphization.ogg" id="24_jdwj3"]
[node name="SfxDatabase" type="Node"]
script = ExtResource("1_ojkqd")
[node name="UI" type="Node" parent="."]
[node name="OpenInventorySound" type="AudioStreamPlayer" parent="UI"]
unique_name_in_owner = true
stream = ExtResource("5_p5cio")
bus = &"SFX"
[node name="MoveSound" type="AudioStreamPlayer" parent="UI"]
unique_name_in_owner = true
stream = ExtResource("6_r16t0")
bus = &"SFX"
[node name="SelectSound" type="AudioStreamPlayer" parent="UI"]
unique_name_in_owner = true
stream = ExtResource("10_nerso")
bus = &"SFX"
[node name="CancelSound" type="AudioStreamPlayer" parent="UI"]
unique_name_in_owner = true
stream = ExtResource("11_rloay")
bus = &"SFX"
[node name="Player" type="Node" parent="."]
[node name="HealHPSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("2_158j8")
bus = &"SFX"
[node name="TakeDamageSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("10_kac56")
bus = &"SFX"
[node name="HealVTSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("3_kac56")
bus = &"SFX"
[node name="WeaponSwingSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("13_fa8i8")
bus = &"SFX"
[node name="CritSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("14_p5cio")
bus = &"SFX"
[node name="PickupItemSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("15_r16t0")
bus = &"SFX"
[node name="LevelUpSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("16_sew62")
bus = &"SFX"
[node name="EquipSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("7_sew62")
bus = &"SFX"
[node name="UnequipSound" type="AudioStreamPlayer" parent="Player"]
unique_name_in_owner = true
stream = ExtResource("8_rf1la")
bus = &"SFX"
[node name="Item" type="Node" parent="."]
[node name="TransferItemSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("18_l6w22")
bus = &"SFX"
[node name="IncreaseStatSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("4_fa8i8")
bus = &"SFX"
[node name="SortSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("9_l6w22")
bus = &"SFX"
[node name="RecallEnemiesSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("19_nerso")
bus = &"SFX"
[node name="KillHalfEnemiesSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("20_rloay")
bus = &"SFX"
[node name="TeleportToRandomRoomSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("21_6hsck")
bus = &"SFX"
[node name="TeleportToExitSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("22_3wq6u")
bus = &"SFX"
[node name="AbsorbHPFromAllEnemiesSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("23_aaerj")
bus = &"SFX"
[node name="SwapHPAndVTSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("23_jdwj3")
bus = &"SFX"
[node name="TurnAllEnemiesIntoHealingItemsSound" type="AudioStreamPlayer" parent="Item"]
unique_name_in_owner = true
stream = ExtResource("24_jdwj3")
bus = &"SFX"

View File

@@ -0,0 +1,108 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Godot;
using System.Collections.Generic;
[Meta(typeof(IAutoNode)), Id("sfx_database")]
public partial class SfxDatabase : Node
{
public override void _Notification(int what) => this.Notify(what);
private static SfxDatabase _instance;
public static SfxDatabase Instance => _instance;
public void OnReady()
{
if (_instance != null)
QueueFree();
_instance = this;
_sfxMap = new Dictionary<SoundEffect, AudioStreamPlayer>
{
{SoundEffect.HealHP, HealHPSound },
{SoundEffect.TakeDamage, TakeDamageSound },
{SoundEffect.HealVT, HealVTSound },
{SoundEffect.IncreaseStat, IncreaseStatSound },
{SoundEffect.WeaponSwing, WeaponSwingSound },
{SoundEffect.Crit, CritSound },
{SoundEffect.PickupItem, PickupItemSound },
{SoundEffect.OpenInventory, OpenInventorySound },
{SoundEffect.MoveUI, MoveSound },
{SoundEffect.Equip, EquipSound },
{SoundEffect.Unequip, UnequipSound },
{SoundEffect.SortInventory, SortSound },
{SoundEffect.SelectUI, SelectSound },
{SoundEffect.CancelUI, CancelSound },
{SoundEffect.LevelUp, LevelUpSound },
{SoundEffect.Transfer, TransferItemSound },
{SoundEffect.RecallEnemies, RecallEnemiesSound},
{SoundEffect.KillHalfEnemies, KillHalfEnemiesSound},
{SoundEffect.TeleportToRandomRoom, TeleportToRandomRoomSound},
{SoundEffect.TeleportToExit, TeleportToExitSound},
{SoundEffect.AbsorbHPFromAllEnemies, AbsorbHPFromAllEnemiesSound},
{SoundEffect.TurnAllEnemiesIntoHealingItems, TurnAllEnemiesIntoHealingItemsSound},
};
}
[Node] private AudioStreamPlayer HealHPSound { get; set; } = default!;
[Node] private AudioStreamPlayer TakeDamageSound { get; set; } = default!;
[Node] private AudioStreamPlayer HealVTSound { get; set; } = default!;
[Node] private AudioStreamPlayer IncreaseStatSound { get; set; } = default!;
[Node] private AudioStreamPlayer WeaponSwingSound { get; set; } = default!;
[Node] private AudioStreamPlayer CritSound { get; set; } = default!;
[Node] private AudioStreamPlayer PickupItemSound { get; set; } = default!;
[Node] private AudioStreamPlayer OpenInventorySound { get; set; }
[Node] private AudioStreamPlayer MoveSound { get; set; }
[Node] private AudioStreamPlayer EquipSound { get; set; }
[Node] private AudioStreamPlayer UnequipSound { get; set; }
[Node] private AudioStreamPlayer SortSound { get; set; }
[Node] private AudioStreamPlayer SelectSound { get; set; }
[Node] private AudioStreamPlayer CancelSound { get; set; }
[Node] private AudioStreamPlayer LevelUpSound { get; set; }
[Node] private AudioStreamPlayer TransferItemSound { get; set; }
[Node] private AudioStreamPlayer RecallEnemiesSound { get; set; }
[Node] private AudioStreamPlayer KillHalfEnemiesSound { get; set; }
[Node] private AudioStreamPlayer TeleportToRandomRoomSound { get; set; }
[Node] private AudioStreamPlayer TeleportToExitSound { get; set; }
[Node] private AudioStreamPlayer AbsorbHPFromAllEnemiesSound { get; set; }
[Node] private AudioStreamPlayer SwapHPAndVTSound { get; set; }
[Node] private AudioStreamPlayer TurnAllEnemiesIntoHealingItemsSound { get; set; }
private Dictionary<SoundEffect, AudioStreamPlayer> _sfxMap;
public void Play(SoundEffect soundEffect)
{
_sfxMap.TryGetValue(soundEffect, out var audio);
if (audio != null)
audio.Play();
}
}
public enum SoundEffect
{
HealHP,
TakeDamage,
HealVT,
IncreaseStat,
WeaponSwing,
Crit,
PickupItem,
OpenInventory,
MoveUI,
Equip,
Unequip,
SortInventory,
SelectUI,
CancelUI,
LevelUp,
Transfer,
RecallEnemies,
KillHalfEnemies,
TeleportToRandomRoom,
TeleportToExit,
AbsorbHPFromAllEnemies,
SwapHPAndVT,
TurnAllEnemiesIntoHealingItems,
}

View File

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

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dci08kmwsu6k1"
path="res://.godot/imported/Cancel.ogg-90240069a266fcef76dd638dfd79efd5.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/Cancel.ogg"
dest_files=["res://.godot/imported/Cancel.ogg-90240069a266fcef76dd638dfd79efd5.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -12,8 +12,8 @@ dest_files=["res://.godot/imported/ENEMY_AGNI_AMBIENT_LOOP.ogg-c85d2b023556dd456
[params] [params]
loop=false loop=true
loop_offset=0 loop_offset=0.0
bpm=0 bpm=0.0
beat_count=0 beat_count=0
bar_beats=4 bar_beats=4

View File

@@ -12,8 +12,8 @@ dest_files=["res://.godot/imported/ENEMY_AQUEOS_LOOP.ogg-8237cb508a4b08073b02775
[params] [params]
loop=false loop=true
loop_offset=0 loop_offset=0.0
bpm=0 bpm=0.0
beat_count=0 beat_count=0
bar_beats=4 bar_beats=4

View File

@@ -12,8 +12,8 @@ dest_files=["res://.godot/imported/ENEMY_PILLAR_TURN.ogg-b699bc5922c503a73a9d924
[params] [params]
loop=false loop=true
loop_offset=0 loop_offset=0.0
bpm=0 bpm=0.0
beat_count=0 beat_count=0
bar_beats=4 bar_beats=4

View File

@@ -12,8 +12,8 @@ dest_files=["res://.godot/imported/ENEMY_golden_sproing_loop.ogg-127cd3900505921
[params] [params]
loop=false loop=true
loop_offset=0 loop_offset=0.0
bpm=0 bpm=0.0
beat_count=0 beat_count=0
bar_beats=4 bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://nebh8kbv638p"
path="res://.godot/imported/Equip.ogg-217f5d9ca98d54921c4ec31e13fb9ba4.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/Equip.ogg"
dest_files=["res://.godot/imported/Equip.ogg-217f5d9ca98d54921c4ec31e13fb9ba4.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://myx4s8lmarc2"
path="res://.godot/imported/Heal.ogg-05b7ed0ad880ef31e2dd13ac2428a53c.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/Heal.ogg"
dest_files=["res://.godot/imported/Heal.ogg-05b7ed0ad880ef31e2dd13ac2428a53c.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://r1tryiit38i8"
path="res://.godot/imported/MenuBack.ogg-4d59ead9ffd1dde11bf2c91a5ade19a4.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/MenuBack.ogg"
dest_files=["res://.godot/imported/MenuBack.ogg-4d59ead9ffd1dde11bf2c91a5ade19a4.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dor0in0x2fg48"
path="res://.godot/imported/MoveThroughOptions.ogg-d2ab68a21096bd510cf966df8d088ca2.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/MoveThroughOptions.ogg"
dest_files=["res://.godot/imported/MoveThroughOptions.ogg-d2ab68a21096bd510cf966df8d088ca2.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dl300ljxjccju"
path="res://.godot/imported/PlayerAttack.ogg-b72a90c320c3a6f764de2be3f71a8058.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/PlayerAttack.ogg"
dest_files=["res://.godot/imported/PlayerAttack.ogg-b72a90c320c3a6f764de2be3f71a8058.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dvv6wd7rtbc7b"
path="res://.godot/imported/PlayerHitWall.ogg-429bd11f2f509307596bb8d8ac73a08d.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/PlayerHitWall.ogg"
dest_files=["res://.godot/imported/PlayerHitWall.ogg-429bd11f2f509307596bb8d8ac73a08d.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bb5lchnrvacf8"
path="res://.godot/imported/Select.ogg-d9dd04507bb827ea76d34cbcda6e7708.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/Select.ogg"
dest_files=["res://.godot/imported/Select.ogg-d9dd04507bb827ea76d34cbcda6e7708.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://d3sn7c614uj2n"
path="res://.godot/imported/Sort.ogg-c7758aed01332fd8ea77a27c6593a8bb.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/Sort.ogg"
dest_files=["res://.godot/imported/Sort.ogg-c7758aed01332fd8ea77a27c6593a8bb.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bb1j3m60jns54"
path="res://.godot/imported/Unequip.ogg-b3c6ba8a77b0e6d2ec671cb12640c764.oggvorbisstr"
[deps]
source_file="res://src/audio/sfx/Unequip.ogg"
dest_files=["res://.godot/imported/Unequip.ogg-b3c6ba8a77b0e6d2ec671cb12640c764.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -12,8 +12,8 @@ dest_files=["res://.godot/imported/enemy_balos_rolling.ogg-296768b69ce64257364d9
[params] [params]
loop=false loop=true
loop_offset=0 loop_offset=0.0
bpm=0 bpm=0.0
beat_count=0 beat_count=0
bar_beats=4 bar_beats=4

View File

@@ -12,8 +12,8 @@ dest_files=["res://.godot/imported/player_steps_concrete.ogg-2210939b45b35c9b2fc
[params] [params]
loop=false loop=true
loop_offset=0 loop_offset=0.0
bpm=0 bpm=0.0
beat_count=0 beat_count=0
bar_beats=4 bar_beats=4

View File

@@ -6,7 +6,6 @@ using System.Collections.Immutable;
using System.Linq; using System.Linq;
using Zennysoft.Ma.Adapter; using Zennysoft.Ma.Adapter;
using Zennysoft.Ma.Adapter.Entity; using Zennysoft.Ma.Adapter.Entity;
using static Zennysoft.Ma.Adapter.AppLogic;
namespace Zennysoft.Game.Ma; namespace Zennysoft.Game.Ma;
@@ -46,6 +45,12 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
[Export] public int ExpGiven { get; set; } = 10; [Export] public int ExpGiven { get; set; } = 10;
[Node] private AudioStreamPlayer3D _absorbSFX { get; set; } = default!;
[Node] private AudioStreamPlayer3D _hitSFX { get; set; } = default!;
[Node] private AudioStreamPlayer3D _morphSFX { get; set; } = default!;
[Node] private AudioStreamPlayer3D _dieSFX { get; set; } = default!;
[Node] private AudioStreamPlayer3D _aggroSFX { get; set; } = default!;
protected bool _activated = false; protected bool _activated = false;
private Vector3 _previousPosition = Vector3.Zero; private Vector3 _previousPosition = Vector3.Zero;
@@ -77,6 +82,8 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
Activate(); Activate();
_activated = true; _activated = true;
_aggroSFX.Play();
if (this is IHaveFollowBehavior) if (this is IHaveFollowBehavior)
_enemyLogic.Input(new EnemyLogic.Input.Follow()); _enemyLogic.Input(new EnemyLogic.Input.Follow());
if (this is IHaveFleeBehavior) if (this is IHaveFleeBehavior)
@@ -130,6 +137,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
{ {
_enemyLogic.Input(new EnemyLogic.Input.Alert()); _enemyLogic.Input(new EnemyLogic.Input.Alert());
EnemyModelView.PlayHitAnimation(); EnemyModelView.PlayHitAnimation();
_hitSFX.Play();
} }
public virtual void Die() public virtual void Die()
@@ -138,11 +146,26 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
_enemyLogic.Input(new EnemyLogic.Input.Defeated()); _enemyLogic.Input(new EnemyLogic.Input.Defeated());
_player.ExperiencePointsComponent.Gain(ExpGiven); _player.ExperiencePointsComponent.Gain(ExpGiven);
EnemyModelView.PlayDeathAnimation(); EnemyModelView.PlayDeathAnimation();
_hitSFX.Play();
_dieSFX.Play();
var tweener = CreateTween(); var tweener = CreateTween();
tweener.TweenInterval(1.0f); tweener.TweenInterval(1.0f);
tweener.TweenCallback(Callable.From(QueueFree)); tweener.TweenCallback(Callable.From(QueueFree));
} }
public void OnAbsorb()
{
_absorbSFX.Play();
}
public void OnMorph()
{
_morphSFX.Play();
SetPhysicsProcess(false);
_enemyLogic.Input(new EnemyLogic.Input.Defeated());
Callable.From(QueueFree);
}
public IDungeonRoom GetCurrentRoom(ImmutableList<IDungeonRoom> roomList) public IDungeonRoom GetCurrentRoom(ImmutableList<IDungeonRoom> roomList)
{ {
foreach (var room in roomList) foreach (var room in roomList)
@@ -178,7 +201,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
_enemyLogic.Input(new EnemyLogic.Input.Reset()); _enemyLogic.Input(new EnemyLogic.Input.Reset());
} }
else
throw new NotImplementedException($"Only {nameof(MonsterRoom)} types are currently supported."); throw new NotImplementedException($"Only {nameof(MonsterRoom)} types are currently supported.");
} }
@@ -199,7 +222,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
protected void SetTarget(Vector3 targetPosition) => TargetPosition = targetPosition; protected void SetTarget(Vector3 targetPosition) => TargetPosition = targetPosition;
private void EnemyModelView_HitPlayer(object sender, System.EventArgs e) private void EnemyModelView_HitPlayer(object sender, EventArgs e)
{ {
_player.TakeDamage(new AttackData(AttackComponent.CurrentAttack.Value, ElementType.None)); _player.TakeDamage(new AttackData(AttackComponent.CurrentAttack.Value, ElementType.None));
} }

View File

@@ -2,6 +2,7 @@
using Chickensoft.Introspection; using Chickensoft.Introspection;
using Godot; using Godot;
using System; using System;
using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma; namespace Zennysoft.Game.Ma;
@@ -25,10 +26,12 @@ public abstract partial class EnemyModelView : Node3D, IEnemyModelView
[Node] public AnimationTree AnimationTree { get; set; } = default!; [Node] public AnimationTree AnimationTree { get; set; } = default!;
[Export] public AttackDataResource AttackData { get; set; } [Node] private AudioStreamPlayer3D _walkSFX { get; set; } = default!;
protected AnimationNodeStateMachinePlayback _stateMachine; protected AnimationNodeStateMachinePlayback _stateMachine;
public AttackData AttackData { get; set; }
public event EventHandler HitPlayer; public event EventHandler HitPlayer;
public event EventHandler ActivationFinished; public event EventHandler ActivationFinished;
@@ -39,24 +42,56 @@ public abstract partial class EnemyModelView : Node3D, IEnemyModelView
public bool CanMove { get; set; } = false; public bool CanMove { get; set; } = false;
public void OnReady() public void OnReady()
{
if (AnimationTree != null)
{ {
_stateMachine = (AnimationNodeStateMachinePlayback)AnimationTree.Get(_parametersPlayback); _stateMachine = (AnimationNodeStateMachinePlayback)AnimationTree.Get(_parametersPlayback);
AnimationTree.AnimationFinished += AnimationTree_AnimationFinished; AnimationTree.AnimationFinished += AnimationTree_AnimationFinished;
} }
}
public virtual void PlayPrimaryAttackAnimation() => _stateMachine.Travel(_primaryAttackName, false); public virtual void PlayPrimaryAttackAnimation()
{
_walkSFX.Stop();
_stateMachine.Travel(_primaryAttackName, false);
}
public virtual void PlaySecondaryAttackAnimation() => _stateMachine.Travel(_secondaryAttackName, false); public virtual void PlaySecondaryAttackAnimation()
{
_walkSFX.Stop();
_stateMachine.Travel(_secondaryAttackName, false);
}
public virtual void PlayPrimarySkillAnimation() => _stateMachine.Travel(_primarySkillName, false); public virtual void PlayPrimarySkillAnimation()
{
_walkSFX.Stop();
_stateMachine.Travel(_primarySkillName, false);
}
public virtual void PlayIdleAnimation() => _stateMachine.Travel(_idleName, false); public virtual void PlayIdleAnimation()
{
_walkSFX.Stop();
_stateMachine.Travel(_idleName, false);
}
public virtual void PlayWalkAnimation() => _stateMachine.Travel(_walkingName, false); public virtual void PlayWalkAnimation()
{
if (!_walkSFX.Playing)
_walkSFX.Play();
_stateMachine.Travel(_walkingName, false);
}
public virtual void PlayStopWalkAnimation() => _stateMachine.Travel(_stopWalkName, false); public virtual void PlayStopWalkAnimation()
{
_walkSFX.Stop();
_stateMachine.Travel(_stopWalkName, false);
}
public virtual void PlayActivateAnimation() => _stateMachine.Travel(_activateName, false); public virtual void PlayActivateAnimation()
{
_walkSFX.Stop();
_stateMachine.Travel(_activateName, false);
}
public virtual void PlayDeathAnimation() => throw new System.NotImplementedException(); public virtual void PlayDeathAnimation() => throw new System.NotImplementedException();
@@ -75,6 +110,7 @@ public abstract partial class EnemyModelView : Node3D, IEnemyModelView
public override void _ExitTree() public override void _ExitTree()
{ {
if (AnimationTree != null)
AnimationTree.Get(_parametersPlayback).As<AnimationNodeStateMachinePlayback>().Stop(); AnimationTree.Get(_parametersPlayback).As<AnimationNodeStateMachinePlayback>().Stop();
} }
} }

View File

@@ -26,13 +26,15 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView
EnemyDirection _enemyDirection { get; set; } = EnemyDirection.Forward; EnemyDirection _enemyDirection { get; set; } = EnemyDirection.Forward;
public AttackData AttackData { get; set; }
public new void OnReady() public new void OnReady()
{ {
Hitbox.AreaEntered += Hitbox_AreaEntered; Hitbox.AreaEntered += Hitbox_AreaEntered;
base.OnReady(); base.OnReady();
} }
private void Hitbox_AreaEntered(Area3D area) => OnPlayerHit(new AttackEventArgs(new AttackData(10, ElementType.None))); private void Hitbox_AreaEntered(Area3D area) => OnPlayerHit(new AttackEventArgs(AttackData));
public void SetCurrentDirection(Basis enemyBasis, Vector3 cameraDirection) => _enemyDirection = GetEnemyDirection(enemyBasis, cameraDirection, _upperThreshold, _lowerThreshold); public void SetCurrentDirection(Basis enemyBasis, Vector3 cameraDirection) => _enemyDirection = GetEnemyDirection(enemyBasis, cameraDirection, _upperThreshold, _lowerThreshold);

View File

@@ -9,7 +9,7 @@ public partial class EnemyModelView3D : EnemyModelView
{ {
public override void _Notification(int what) => this.Notify(what); public override void _Notification(int what) => this.Notify(what);
[Node] private AnimationPlayer _animationPlayer { get; set; } = default!; [Node] protected AnimationPlayer _animationPlayer { get; set; } = default!;
[Node] public MeshInstance3D MeshInstance { get; set; } = default!; [Node] public MeshInstance3D MeshInstance { get; set; } = default!;

View File

@@ -1,6 +1,7 @@
using Chickensoft.GodotNodeInterfaces; using Chickensoft.GodotNodeInterfaces;
using Godot; using Godot;
using System; using System;
using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma; namespace Zennysoft.Game.Ma;
@@ -24,6 +25,8 @@ public interface IEnemyModelView : INode3D
public void PlayDeathAnimation(); public void PlayDeathAnimation();
public AttackData AttackData { get; set; }
public event EventHandler HitPlayer; public event EventHandler HitPlayer;
public event EventHandler ActivationFinished; public event EventHandler ActivationFinished;

View File

@@ -1,10 +1,14 @@
[gd_scene load_steps=12 format=3 uid="uid://bs56ccgosmu47"] [gd_scene load_steps=16 format=3 uid="uid://bs56ccgosmu47"]
[ext_resource type="Script" uid="uid://cq6b4ma3sy1en" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.cs" id="1_xsluo"] [ext_resource type="Script" uid="uid://cq6b4ma3sy1en" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.cs" id="1_xsluo"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_drfkj"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_drfkj"]
[ext_resource type="PackedScene" uid="uid://bimjnsu52y3xi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="4_o3b7p"] [ext_resource type="PackedScene" uid="uid://bimjnsu52y3xi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="4_o3b7p"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="5_drfkj"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="5_drfkj"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_moun4"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_moun4"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_ungov"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_ungov"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_agkuf"]
[ext_resource type="AudioStream" uid="uid://bn6ns3jxkw03b" path="res://src/audio/sfx/ENEMY_SPROING_death.ogg" id="9_icstk"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.106078 radius = 0.106078
@@ -30,7 +34,7 @@ radius = 1.0
[node name="Sproingy" type="CharacterBody3D"] [node name="Sproingy" type="CharacterBody3D"]
process_mode = 1 process_mode = 1
collision_layer = 11 collision_layer = 10
axis_lock_linear_y = true axis_lock_linear_y = true
axis_lock_angular_x = true axis_lock_angular_x = true
axis_lock_angular_z = true axis_lock_angular_z = true
@@ -94,9 +98,37 @@ _followSpeed = 150.0
[node name="EngagePlayerBehavior" parent="Components" instance=ExtResource("5_drfkj")] [node name="EngagePlayerBehavior" parent="Components" instance=ExtResource("5_drfkj")]
unique_name_in_owner = true unique_name_in_owner = true
_minimumAttackTime = 3.0
_maximumAttackTime = 7.0
_acquireTargetTime = 2.0 _acquireTargetTime = 2.0
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"] [node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="SFX" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("6_ungov")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("7_ungov")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("8_agkuf")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("9_icstk")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -1,10 +1,9 @@
[gd_scene load_steps=81 format=3 uid="uid://bimjnsu52y3xi"] [gd_scene load_steps=79 format=3 uid="uid://bimjnsu52y3xi"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_oh25a"] [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://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://bs4ico5ouo5d3" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 2.png" id="2_0vbio"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_7hf3j"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_7hf3j"]
[ext_resource type="Script" uid="uid://ctshiyffvt4y5" path="res://src/system/AttackDataResource.cs" id="3_8wbs7"]
[ext_resource type="Material" uid="uid://x2bv1q51mcjq" path="res://src/enemy/PixelMelt.tres" id="3_ivy74"] [ext_resource type="Material" uid="uid://x2bv1q51mcjq" path="res://src/enemy/PixelMelt.tres" id="3_ivy74"]
[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://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://bwt1m2frb3r0e" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 4.png" id="4_53wuj"]
@@ -68,12 +67,6 @@ Name = "Sproingy"
Description = "He's smaller than I expected..." Description = "He's smaller than I expected..."
metadata/_custom_type_script = "uid://dlsgyx4i1jmp3" metadata/_custom_type_script = "uid://dlsgyx4i1jmp3"
[sub_resource type="Resource" id="Resource_8wbs7"]
script = ExtResource("3_8wbs7")
Damage = 10
ElementType = 0
metadata/_custom_type_script = "uid://ctshiyffvt4y5"
[sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"] [sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"]
viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport") viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport")
@@ -662,7 +655,6 @@ transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition
[node name="EnemyModelView" type="Node3D"] [node name="EnemyModelView" type="Node3D"]
script = ExtResource("1_oh25a") script = ExtResource("1_oh25a")
EnemyLoreInfo = SubResource("Resource_ivy74") EnemyLoreInfo = SubResource("Resource_ivy74")
AttackData = SubResource("Resource_8wbs7")
[node name="Sprite3D" type="Sprite3D" parent="."] [node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0) transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0)
@@ -718,3 +710,8 @@ root_node = NodePath("%AnimationTree/..")
tree_root = SubResource("AnimationNodeStateMachine_l2wq1") tree_root = SubResource("AnimationNodeStateMachine_l2wq1")
advance_expression_base_node = NodePath("..") advance_expression_base_node = NodePath("..")
anim_player = NodePath("../AnimationPlayer") anim_player = NodePath("../AnimationPlayer")
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,24 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://c08wbuumw6dk5"]
[ext_resource type="Script" path="res://src/enemy/EnemyStatResource.cs" id="1_2i74g"]
[resource]
script = ExtResource("1_2i74g")
CurrentHP = 0.0
MaximumHP = 50.0
CurrentAttack = 0
CurrentDefense = 0
MaxAttack = 0
MaxDefense = 0
Luck = 0.05
TelluricResistance = 0.0
AeolicResistance = 0.0
HydricResistance = 0.0
IgneousResistance = 0.0
FerrumResistance = 0.0
TelluricDamageBonus = 0.0
AeolicDamageBonus = 0.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
FerrumDamageBonus = 0.0
DropsSoulGemChance = 0.75

View File

@@ -1,10 +1,14 @@
[gd_scene load_steps=10 format=3 uid="uid://b0gwivt7cw7nd"] [gd_scene load_steps=14 format=3 uid="uid://b0gwivt7cw7nd"]
[ext_resource type="Script" uid="uid://c4pdledq3bll3" path="res://src/enemy/enemy_types/02. michael/Michael.cs" id="1_lb5oy"] [ext_resource type="Script" uid="uid://c4pdledq3bll3" path="res://src/enemy/enemy_types/02. michael/Michael.cs" id="1_lb5oy"]
[ext_resource type="PackedScene" uid="uid://bjg8wyvp8q6oc" path="res://src/enemy/enemy_types/02. michael/MichaelModelView.tscn" id="3_wrps7"] [ext_resource type="PackedScene" uid="uid://bjg8wyvp8q6oc" path="res://src/enemy/enemy_types/02. michael/MichaelModelView.tscn" id="3_wrps7"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_fkx5j"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_fkx5j"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_bun8r"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_bun8r"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_x8mrp"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_kwkfv"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_x8mrp"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_x8mrp"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_upf7y"]
[ext_resource type="AudioStream" uid="uid://bn6ns3jxkw03b" path="res://src/audio/sfx/ENEMY_SPROING_death.ogg" id="9_fm627"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
height = 5.0 height = 5.0
@@ -86,3 +90,29 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_x8mrp")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_kwkfv")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_upf7y")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("9_fm627")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -1241,3 +1241,8 @@ transform = Transform3D(0.72, 0, 0, 0, 0.72, 0, 0, 0, 0.72, -0.129818, 0.274447,
modulate = Color(0.977, 0.31, 1, 0.741176) modulate = Color(0.977, 0.31, 1, 0.741176)
billboard = 2 billboard = 2
sprite_frames = SubResource("SpriteFrames_suy1t") sprite_frames = SubResource("SpriteFrames_suy1t")
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=3 uid="uid://cvk007twac22c"] [gd_scene load_steps=16 format=3 uid="uid://cvk007twac22c"]
[ext_resource type="Script" uid="uid://cohal8w5ceneg" path="res://src/enemy/enemy_types/03. filth_eater/FilthEater.cs" id="1_p438s"] [ext_resource type="Script" uid="uid://cohal8w5ceneg" path="res://src/enemy/enemy_types/03. filth_eater/FilthEater.cs" id="1_p438s"]
[ext_resource type="PackedScene" uid="uid://bup8c4x1na3aw" path="res://src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn" id="3_rrwed"] [ext_resource type="PackedScene" uid="uid://bup8c4x1na3aw" path="res://src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn" id="3_rrwed"]
@@ -6,6 +6,10 @@
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_pvjvo"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_pvjvo"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_fccr3"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_fccr3"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_8l567"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_8l567"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="7_qbmfg"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="8_m7220"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="9_g602r"]
[ext_resource type="AudioStream" uid="uid://6r74nka4oh20" path="res://src/audio/sfx/ENEMY_filth_aggro.ogg" id="11_qbmfg"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
height = 5.0 height = 5.0
@@ -93,3 +97,29 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_qbmfg")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_m7220")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("9_g602r")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("11_qbmfg")
bus = &"SFX"

View File

@@ -3412,3 +3412,8 @@ libraries = {
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
bus = &"SFX" bus = &"SFX"
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://coyidduu5uhsp"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_o2ug3"]
[resource]
script = ExtResource("1_o2ug3")
CurrentHP = 60.0
MaximumHP = 60
CurrentAttack = 15
CurrentDefense = 5
MaxAttack = 15
MaxDefense = 5
ExpFromDefeat = 15
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = ExtResource("1_o2ug3")

View File

@@ -1,10 +1,14 @@
[gd_scene load_steps=10 format=3 uid="uid://bksq62muhk3h5"] [gd_scene load_steps=14 format=3 uid="uid://bksq62muhk3h5"]
[ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/04. sara/Sara.cs" id="1_3ejdn"] [ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/04. sara/Sara.cs" id="1_3ejdn"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_8ymq6"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_8ymq6"]
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/04. sara/SaraModelView.tscn" id="4_82s0m"] [ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/04. sara/SaraModelView.tscn" id="4_82s0m"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_lxgpb"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_lxgpb"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_ddchx"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_ddchx"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_lxgpb"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_ddchx"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_746fv"]
[ext_resource type="AudioStream" uid="uid://bemrovoemoq5u" path="res://src/audio/sfx/ENEMY_APSARA_AGGRO.ogg" id="10_ddchx"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.106078 radius = 0.106078
@@ -89,3 +93,29 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_lxgpb")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_ddchx")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_746fv")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("10_ddchx")
bus = &"SFX"

View File

@@ -1892,3 +1892,8 @@ libraries = {
[node name="Attacks" type="AudioStreamPlayer3D" parent="."] [node name="Attacks" type="AudioStreamPlayer3D" parent="."]
process_mode = 3 process_mode = 3
bus = &"SFX" bus = &"SFX"
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://b0e6yx54hhbw7"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_besl4"]
[resource]
script = ExtResource("1_besl4")
CurrentHP = 60.0
MaximumHP = 60
CurrentAttack = 15
CurrentDefense = 7
MaxAttack = 15
MaxDefense = 7
ExpFromDefeat = 5
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = ExtResource("1_besl4")

View File

@@ -1,10 +1,13 @@
[gd_scene load_steps=10 format=3 uid="uid://feegakykn3fv"] [gd_scene load_steps=13 format=3 uid="uid://feegakykn3fv"]
[ext_resource type="Script" uid="uid://dwfxs5yrf7i3v" path="res://src/enemy/enemy_types/05. ballos/Ballos.cs" id="1_iy2fp"] [ext_resource type="Script" uid="uid://dwfxs5yrf7i3v" path="res://src/enemy/enemy_types/05. ballos/Ballos.cs" id="1_iy2fp"]
[ext_resource type="PackedScene" uid="uid://c5xijwxkg4pf6" path="res://src/enemy/enemy_types/05. ballos/BallosModelView.tscn" id="2_v2urn"] [ext_resource type="PackedScene" uid="uid://c5xijwxkg4pf6" path="res://src/enemy/enemy_types/05. ballos/BallosModelView.tscn" id="2_v2urn"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_bjnvx"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_bjnvx"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_55sdf"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_55sdf"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_2xj0s"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_2xj0s"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_wpleu"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_vibb5"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_b4xgw"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.717471 radius = 0.717471
@@ -87,3 +90,28 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_wpleu")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_vibb5")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_b4xgw")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=171 format=3 uid="uid://c5xijwxkg4pf6"] [gd_scene load_steps=172 format=3 uid="uid://c5xijwxkg4pf6"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_ueqp5"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_ueqp5"]
[ext_resource type="Texture2D" uid="uid://bgkx485uy065" path="res://src/enemy/enemy_types/05. ballos/animations/WALK BACK/1.png" id="3_b3ny6"] [ext_resource type="Texture2D" uid="uid://bgkx485uy065" path="res://src/enemy/enemy_types/05. ballos/animations/WALK BACK/1.png" id="3_b3ny6"]
@@ -93,6 +93,7 @@
[ext_resource type="Texture2D" uid="uid://cuiwtl48d2rgo" path="res://src/enemy/enemy_types/05. ballos/animations/Ballos Side Attack Frames/ATTACK 2 SIDE/frame_23_delay-0.01s.png" id="72_3ev0n"] [ext_resource type="Texture2D" uid="uid://cuiwtl48d2rgo" path="res://src/enemy/enemy_types/05. ballos/animations/Ballos Side Attack Frames/ATTACK 2 SIDE/frame_23_delay-0.01s.png" id="72_3ev0n"]
[ext_resource type="Texture2D" uid="uid://jsknxkujml8k" path="res://src/enemy/enemy_types/05. ballos/animations/Ballos Side Attack Frames/ATTACK 2 BACK/frame_11_delay-0.01s.png" id="72_4q1uq"] [ext_resource type="Texture2D" uid="uid://jsknxkujml8k" path="res://src/enemy/enemy_types/05. ballos/animations/Ballos Side Attack Frames/ATTACK 2 BACK/frame_11_delay-0.01s.png" id="72_4q1uq"]
[ext_resource type="Texture2D" uid="uid://cejae00ramgdn" path="res://src/enemy/enemy_types/05. ballos/animations/Ballos Side Attack Frames/ATTACK 2 SIDE/frame_24_delay-0.01s.png" id="73_o6ljw"] [ext_resource type="Texture2D" uid="uid://cejae00ramgdn" path="res://src/enemy/enemy_types/05. ballos/animations/Ballos Side Attack Frames/ATTACK 2 SIDE/frame_24_delay-0.01s.png" id="73_o6ljw"]
[ext_resource type="AudioStream" uid="uid://s8weoqkpc155" path="res://src/audio/sfx/enemy_balos_rolling.ogg" id="94_i3hgg"]
[ext_resource type="Texture2D" uid="uid://dh0upso5h2agw" path="res://src/vfx/Enemy/ballos_SPELL.png" id="95_o6ljw"] [ext_resource type="Texture2D" uid="uid://dh0upso5h2agw" path="res://src/vfx/Enemy/ballos_SPELL.png" id="95_o6ljw"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="96_i3hgg"] [ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="96_i3hgg"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="97_i3hgg"] [ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="97_i3hgg"]
@@ -1527,4 +1528,8 @@ libraries = {
&"": SubResource("AnimationLibrary_tamk8") &"": SubResource("AnimationLibrary_tamk8")
} }
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] [node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = ExtResource("94_i3hgg")
autoplay = true
bus = &"SFX"

View File

@@ -1,10 +1,14 @@
[gd_scene load_steps=10 format=3 uid="uid://dlw5cvutvypxn"] [gd_scene load_steps=14 format=3 uid="uid://dlw5cvutvypxn"]
[ext_resource type="Script" uid="uid://djx5x5bhkku85" path="res://src/enemy/enemy_types/06. chariot/Chariot.cs" id="1_q1q0f"] [ext_resource type="Script" uid="uid://djx5x5bhkku85" path="res://src/enemy/enemy_types/06. chariot/Chariot.cs" id="1_q1q0f"]
[ext_resource type="PackedScene" uid="uid://dcm53j3rncxdm" path="res://src/enemy/enemy_types/06. chariot/ChariotModelView.tscn" id="3_q1q0f"] [ext_resource type="PackedScene" uid="uid://dcm53j3rncxdm" path="res://src/enemy/enemy_types/06. chariot/ChariotModelView.tscn" id="3_q1q0f"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_ee8v4"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_ee8v4"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_uv8in"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_uv8in"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_582pa"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_cfqmf"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_cfqmf"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_jemva"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_ave6n"]
[ext_resource type="AudioStream" uid="uid://daye7334d7rfe" path="res://src/audio/sfx/ENEMY_CHARIOT_DEATH.ogg" id="9_cfqmf"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 1.0 radius = 1.0
@@ -83,3 +87,29 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_582pa")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_jemva")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_ave6n")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("9_cfqmf")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -8093,3 +8093,8 @@ root_node = NodePath("../AnimatedSprite3D")
libraries = { libraries = {
&"": SubResource("AnimationLibrary_q8n6h") &"": SubResource("AnimationLibrary_q8n6h")
} }
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,10 +1,13 @@
[gd_scene load_steps=11 format=3 uid="uid://c6tqt27ql8s35"] [gd_scene load_steps=14 format=3 uid="uid://c6tqt27ql8s35"]
[ext_resource type="Script" uid="uid://fwtjthix6awv" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.cs" id="1_120m2"] [ext_resource type="Script" uid="uid://fwtjthix6awv" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.cs" id="1_120m2"]
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="3_567xa"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="3_567xa"]
[ext_resource type="PackedScene" uid="uid://byd7cwxq1be6f" path="res://src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn" id="3_ncr2e"] [ext_resource type="PackedScene" uid="uid://byd7cwxq1be6f" path="res://src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn" id="3_ncr2e"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_24q6i"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_t7elt"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_t7elt"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_24q6i"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_24q6i"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_q6h01"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_a4ku4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.226425 radius = 0.226425
@@ -84,3 +87,28 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_24q6i")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_q6h01")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_a4ku4")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -3569,3 +3569,8 @@ draw_pass_1 = SubResource("SphereMesh_xu4hf")
[node name="Chinthe SFX" type="AudioStreamPlayer3D" parent="."] [node name="Chinthe SFX" type="AudioStreamPlayer3D" parent="."]
max_distance = 25.0 max_distance = 25.0
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://c854s8bdil3"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_616yc"]
[resource]
script = ExtResource("1_616yc")
CurrentHP = 55.0
MaximumHP = 55
CurrentAttack = 10
CurrentDefense = 10
MaxAttack = 10
MaxDefense = 10
ExpFromDefeat = 100
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -1,10 +1,15 @@
[gd_scene load_steps=10 format=3 uid="uid://fosk3kt7vp8d"] [gd_scene load_steps=15 format=3 uid="uid://fosk3kt7vp8d"]
[ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_m2guv"] [ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_m2guv"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_hqy0f"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_hqy0f"]
[ext_resource type="PackedScene" uid="uid://c2i8ylr3y0bri" path="res://src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn" id="4_pjmem"] [ext_resource type="PackedScene" uid="uid://c2i8ylr3y0bri" path="res://src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn" id="4_pjmem"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_gy5yi"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_gy5yi"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_7f1qq"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_7f1qq"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_sjoyv"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_e5lq0"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_qyfut"]
[ext_resource type="AudioStream" uid="uid://bu3up7dn13xyo" path="res://src/audio/sfx/enemy_ambassador_death.ogg" id="9_7f1qq"]
[ext_resource type="AudioStream" uid="uid://6aje2myxas3d" path="res://src/audio/sfx/enemy_ambassador_aggro.ogg" id="10_sjoyv"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.106078 radius = 0.106078
@@ -89,3 +94,30 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_sjoyv")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_e5lq0")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_qyfut")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("9_7f1qq")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("10_sjoyv")
bus = &"SFX"

View File

@@ -2054,3 +2054,8 @@ advance_expression_base_node = NodePath("..")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
bus = &"SFX" bus = &"SFX"
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://bcpygpm2q5bpn"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_1vmbx"]
[resource]
script = ExtResource("1_1vmbx")
CurrentHP = 80.0
MaximumHP = 80
CurrentAttack = 10
CurrentDefense = 10
MaxAttack = 10
MaxDefense = 10
ExpFromDefeat = 0
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -1,10 +1,15 @@
[gd_scene load_steps=10 format=3 uid="uid://c5gbaybqm4cuk"] [gd_scene load_steps=15 format=3 uid="uid://c5gbaybqm4cuk"]
[ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_4nav4"] [ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_4nav4"]
[ext_resource type="PackedScene" uid="uid://72lbcmp4bcx4" path="res://src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn" id="4_hqkeq"] [ext_resource type="PackedScene" uid="uid://72lbcmp4bcx4" path="res://src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn" id="4_hqkeq"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_65xvc"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_65xvc"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_a21yr"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_v4xmn"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_v4xmn"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_a21yr"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_a21yr"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_o0cbq"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_u6pfl"]
[ext_resource type="AudioStream" uid="uid://bu3up7dn13xyo" path="res://src/audio/sfx/enemy_ambassador_death.ogg" id="9_v4xmn"]
[ext_resource type="AudioStream" uid="uid://6aje2myxas3d" path="res://src/audio/sfx/enemy_ambassador_aggro.ogg" id="10_a21yr"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.106078 radius = 0.106078
@@ -88,3 +93,30 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_a21yr")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_o0cbq")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_u6pfl")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("9_v4xmn")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("10_a21yr")
bus = &"SFX"

View File

@@ -2000,3 +2000,8 @@ advance_expression_base_node = NodePath("..")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
bus = &"SFX" bus = &"SFX"
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://doycpt2aqxnx"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_rf66x"]
[resource]
script = ExtResource("1_rf66x")
CurrentHP = 35.0
MaximumHP = 35
CurrentAttack = 10
CurrentDefense = 10
MaxAttack = 10
MaxDefense = 10
ExpFromDefeat = 0
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -1,10 +1,15 @@
[gd_scene load_steps=10 format=3 uid="uid://b4oliop60eghn"] [gd_scene load_steps=15 format=3 uid="uid://b4oliop60eghn"]
[ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_ln0kc"] [ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_ln0kc"]
[ext_resource type="PackedScene" uid="uid://lc5koiqn1sca" path="res://src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelModelView.tscn" id="4_kdt1g"] [ext_resource type="PackedScene" uid="uid://lc5koiqn1sca" path="res://src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelModelView.tscn" id="4_kdt1g"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_fmnae"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_fmnae"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_5r3ee"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_g5uri"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_g5uri"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_5r3ee"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_5r3ee"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_6o7lk"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_3p55n"]
[ext_resource type="AudioStream" uid="uid://bu3up7dn13xyo" path="res://src/audio/sfx/enemy_ambassador_death.ogg" id="9_g5uri"]
[ext_resource type="AudioStream" uid="uid://6aje2myxas3d" path="res://src/audio/sfx/enemy_ambassador_aggro.ogg" id="10_5r3ee"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.106078 radius = 0.106078
@@ -87,3 +92,30 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_5r3ee")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_6o7lk")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_3p55n")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("9_g5uri")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("10_5r3ee")
bus = &"SFX"

View File

@@ -2058,3 +2058,8 @@ advance_expression_base_node = NodePath("..")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.765249, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.765249, 0)
bus = &"SFX" bus = &"SFX"
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://dudtbfjfekkh1"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_wijuv"]
[resource]
script = ExtResource("1_wijuv")
CurrentHP = 100.0
MaximumHP = 100
CurrentAttack = 10
CurrentDefense = 10
MaxAttack = 10
MaxDefense = 10
ExpFromDefeat = 0
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -1,10 +1,13 @@
[gd_scene load_steps=10 format=3 uid="uid://b8ewfgcjv60es"] [gd_scene load_steps=13 format=3 uid="uid://b8ewfgcjv60es"]
[ext_resource type="Script" uid="uid://h6duv685n6eh" path="res://src/enemy/enemy_types/09. Agni/AgniDemon.cs" id="1_e2477"] [ext_resource type="Script" uid="uid://h6duv685n6eh" path="res://src/enemy/enemy_types/09. Agni/AgniDemon.cs" id="1_e2477"]
[ext_resource type="PackedScene" uid="uid://bls3mcsyld4vy" path="res://src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn" id="3_tbkej"] [ext_resource type="PackedScene" uid="uid://bls3mcsyld4vy" path="res://src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn" id="3_tbkej"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_dxxe5"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_dxxe5"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_j6ob5"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_j6ob5"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_58r4a"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_58r4a"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_j6ob5"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_58r4a"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_jvw36"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.226425 radius = 0.226425
@@ -84,3 +87,28 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_j6ob5")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_58r4a")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_jvw36")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=370 format=3 uid="uid://bls3mcsyld4vy"] [gd_scene load_steps=368 format=3 uid="uid://bls3mcsyld4vy"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_wl7dh"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_wl7dh"]
[ext_resource type="Texture2D" uid="uid://dsu48b5hf48xl" path="res://src/enemy/enemy_types/09. Agni/animations/B/frame_000_delay-0.01s.png" id="2_pt8gl"] [ext_resource type="Texture2D" uid="uid://dsu48b5hf48xl" path="res://src/enemy/enemy_types/09. Agni/animations/B/frame_000_delay-0.01s.png" id="2_pt8gl"]
@@ -332,8 +332,6 @@
[ext_resource type="Texture2D" uid="uid://5f115symdsmg" path="res://src/enemy/enemy_types/09. Agni/animations/LAVA LOOP/frame_327_delay-0.01s.png" id="329_72hkg"] [ext_resource type="Texture2D" uid="uid://5f115symdsmg" path="res://src/enemy/enemy_types/09. Agni/animations/LAVA LOOP/frame_327_delay-0.01s.png" id="329_72hkg"]
[ext_resource type="Texture2D" uid="uid://b6swecrctxcgy" path="res://src/enemy/enemy_types/09. Agni/animations/LAVA LOOP/frame_328_delay-0.01s.png" id="330_at3qg"] [ext_resource type="Texture2D" uid="uid://b6swecrctxcgy" path="res://src/enemy/enemy_types/09. Agni/animations/LAVA LOOP/frame_328_delay-0.01s.png" id="330_at3qg"]
[ext_resource type="Texture2D" uid="uid://b6batijegfqfe" path="res://src/enemy/enemy_types/09. Agni/animations/LAVA LOOP/frame_329_delay-0.01s.png" id="331_610d6"] [ext_resource type="Texture2D" uid="uid://b6batijegfqfe" path="res://src/enemy/enemy_types/09. Agni/animations/LAVA LOOP/frame_329_delay-0.01s.png" id="331_610d6"]
[ext_resource type="AudioStream" uid="uid://cc7g8awtomf45" path="res://src/audio/sfx/ENEMY_AGNI_ATTACK_1.ogg" id="333_3ax4w"]
[ext_resource type="AudioStream" uid="uid://c36ewcgnjtr7g" path="res://src/audio/sfx/ENEMY_AGNI_ATTACK_2_SWING.ogg" id="334_7fjet"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="334_kp6fv"] [ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="334_kp6fv"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="335_3ax4w"] [ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="335_3ax4w"]
[ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="336_7fjet"] [ext_resource type="AnimationNodeStateMachine" uid="uid://clybvwx3itfeo" path="res://src/enemy/animation_state_machines/SecondaryAttackStateMachine.tres" id="336_7fjet"]
@@ -1719,36 +1717,6 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [0, 15] "values": [0, 15]
} }
tracks/2/type = "audio"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SFX")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.376847)
}
tracks/2/use_blend = true
tracks/3/type = "audio"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SFX")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.597915)
}
tracks/3/use_blend = true
[sub_resource type="Animation" id="Animation_dc327"] [sub_resource type="Animation" id="Animation_dc327"]
resource_name = "primary_attack_back" resource_name = "primary_attack_back"
@@ -1778,36 +1746,6 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [0, 15] "values": [0, 15]
} }
tracks/2/type = "audio"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SFX")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.376847)
}
tracks/2/use_blend = true
tracks/3/type = "audio"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SFX")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.597915)
}
tracks/3/use_blend = true
[sub_resource type="Animation" id="Animation_vur8v"] [sub_resource type="Animation" id="Animation_vur8v"]
resource_name = "primary_attack_left" resource_name = "primary_attack_left"
@@ -1837,36 +1775,6 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [0, 15] "values": [0, 15]
} }
tracks/2/type = "audio"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SFX")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.376847)
}
tracks/2/use_blend = true
tracks/3/type = "audio"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SFX")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.597915)
}
tracks/3/use_blend = true
[sub_resource type="Animation" id="Animation_pa2sb"] [sub_resource type="Animation" id="Animation_pa2sb"]
resource_name = "primary_attack_right" resource_name = "primary_attack_right"
@@ -1896,36 +1804,6 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [0, 15] "values": [0, 15]
} }
tracks/2/type = "audio"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SFX")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.376847)
}
tracks/2/use_blend = true
tracks/3/type = "audio"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SFX")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("333_3ax4w")
}],
"times": PackedFloat32Array(0.597915)
}
tracks/3/use_blend = true
[sub_resource type="Animation" id="Animation_5y02v"] [sub_resource type="Animation" id="Animation_5y02v"]
resource_name = "secondary_attack" resource_name = "secondary_attack"
@@ -1967,21 +1845,6 @@ tracks/2/keys = {
"update": 1, "update": 1,
"values": [-1, 0] "values": [-1, 0]
} }
tracks/3/type = "audio"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SFX")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("334_7fjet")
}],
"times": PackedFloat32Array(0.590571)
}
tracks/3/use_blend = true
[sub_resource type="Animation" id="Animation_dlml7"] [sub_resource type="Animation" id="Animation_dlml7"]
resource_name = "secondary_attack_back" resource_name = "secondary_attack_back"
@@ -2011,21 +1874,6 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [0, 22] "values": [0, 22]
} }
tracks/2/type = "audio"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SFX")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("334_7fjet")
}],
"times": PackedFloat32Array(0.590571)
}
tracks/2/use_blend = true
[sub_resource type="Animation" id="Animation_mm0yx"] [sub_resource type="Animation" id="Animation_mm0yx"]
resource_name = "secondary_attack_left" resource_name = "secondary_attack_left"
@@ -2067,21 +1915,6 @@ tracks/2/keys = {
"update": 1, "update": 1,
"values": [-1, 0] "values": [-1, 0]
} }
tracks/3/type = "audio"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SFX")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("334_7fjet")
}],
"times": PackedFloat32Array(0.590571)
}
tracks/3/use_blend = true
[sub_resource type="Animation" id="Animation_x32v4"] [sub_resource type="Animation" id="Animation_x32v4"]
resource_name = "secondary_attack_right" resource_name = "secondary_attack_right"
@@ -2123,21 +1956,6 @@ tracks/2/keys = {
"update": 1, "update": 1,
"values": [-1, 0] "values": [-1, 0]
} }
tracks/3/type = "audio"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("SFX")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("334_7fjet")
}],
"times": PackedFloat32Array(0.590571)
}
tracks/3/use_blend = true
[sub_resource type="AnimationLibrary" id="AnimationLibrary_x0ep5"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_x0ep5"]
_data = { _data = {
@@ -2339,6 +2157,7 @@ max_distance = 10.0
bus = &"SFX" bus = &"SFX"
doppler_tracking = 1 doppler_tracking = 1
[node name="SFX" type="AudioStreamPlayer3D" parent="."] [node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
process_mode = 3 unique_name_in_owner = true
autoplay = true
bus = &"SFX" bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://2lflwab43lb0"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_ip8hu"]
[resource]
script = ExtResource("1_ip8hu")
CurrentHP = 60.0
MaximumHP = 60
CurrentAttack = 10
CurrentDefense = 10
MaxAttack = 10
MaxDefense = 10
ExpFromDefeat = 0
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -8,7 +8,7 @@ using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma; namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode))] [Meta(typeof(IAutoNode))]
public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttack, IHasTertiaryAttack public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttack, IHasTertiaryAttack, IHaveEngagePlayerBehavior
{ {
public override void _Notification(int what) => this.Notify(what); public override void _Notification(int what) => this.Notify(what);
@@ -32,12 +32,43 @@ public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttac
[Node] private Node3D _rotation { get; set; } = default!; [Node] private Node3D _rotation { get; set; } = default!;
[Node] private AudioStreamPlayer3D StoneRotation { get; set; } = default!;
[Node] private AudioStreamPlayer3D FireSFX { get; set; } = default!;
[Node] public Area3D PlayerDetector { get; set; } = default!;
[Node] public Area3D LoseTrackOfPlayer { get; set; } = default!;
[Node] public EngagePlayerBehavior EngagePlayerBehavior { get; set; } = default!;
private float _primaryAngle = 0; private float _primaryAngle = 0;
private float _secondaryAngle = -122; private float _secondaryAngle = -122;
private float _tertiaryAngle = 122; private float _tertiaryAngle = 122;
private float _targetAngle; private float _targetAngle;
public void OnReady()
{
PlayerDetector.BodyEntered += PlayerDetector_BodyEntered;
LoseTrackOfPlayer.BodyExited += LoseTrackOfPlayer_BodyExited;
EngagePlayerBehavior.TakeAction += PerformAction;
HealthComponent.HealthReachedZero += HealthComponent_HealthReachedZero;
}
private void LoseTrackOfPlayer_BodyExited(Node3D body) => EngagePlayerBehavior.Disengage();
private void HealthComponent_HealthReachedZero()
{
StoneRotation.Stop();
}
private void PlayerDetector_BodyEntered(Node3D body)
{
EngagePlayerBehavior.Engage();
}
public override void PerformAction() public override void PerformAction()
{ {
var rng = new RandomNumberGenerator(); var rng = new RandomNumberGenerator();
@@ -49,6 +80,8 @@ public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttac
public void PrimaryAttack() public void PrimaryAttack()
{ {
var rotationAngle = GetRotationAngle(Mathf.DegToRad(_primaryAngle)); var rotationAngle = GetRotationAngle(Mathf.DegToRad(_primaryAngle));
if (!StoneRotation.Playing && !Mathf.IsEqualApprox(Rotation.Y, rotationAngle))
StoneRotation.Play();
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenMethod(Callable.From((float x) => RotateTowardsPlayer(x)), Rotation.Y, rotationAngle, 5f); tweener.TweenMethod(Callable.From((float x) => RotateTowardsPlayer(x)), Rotation.Y, rotationAngle, 5f);
tweener.TweenCallback(Callable.From(FirePrimaryShot)); tweener.TweenCallback(Callable.From(FirePrimaryShot));
@@ -57,6 +90,8 @@ public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttac
public void SecondaryAttack() public void SecondaryAttack()
{ {
var rotationAngle = GetRotationAngle(Mathf.DegToRad(_secondaryAngle)); var rotationAngle = GetRotationAngle(Mathf.DegToRad(_secondaryAngle));
if (!StoneRotation.Playing && !Mathf.IsEqualApprox(Rotation.Y, rotationAngle))
StoneRotation.Play();
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenMethod(Callable.From((float x) => RotateTowardsPlayer(x)), Rotation.Y, rotationAngle, 5f); tweener.TweenMethod(Callable.From((float x) => RotateTowardsPlayer(x)), Rotation.Y, rotationAngle, 5f);
tweener.TweenCallback(Callable.From(FireSecondaryShot)); tweener.TweenCallback(Callable.From(FireSecondaryShot));
@@ -65,6 +100,8 @@ public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttac
public void TertiaryAttack() public void TertiaryAttack()
{ {
var rotationAngle = GetRotationAngle(Mathf.DegToRad(_tertiaryAngle)); var rotationAngle = GetRotationAngle(Mathf.DegToRad(_tertiaryAngle));
if (!StoneRotation.Playing && !Mathf.IsEqualApprox(Rotation.Y, rotationAngle))
StoneRotation.Play();
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenMethod(Callable.From((float x) => RotateTowardsPlayer(x)), Rotation.Y, rotationAngle, 5f); tweener.TweenMethod(Callable.From((float x) => RotateTowardsPlayer(x)), Rotation.Y, rotationAngle, 5f);
tweener.TweenCallback(Callable.From(FireTertiaryShot)); tweener.TweenCallback(Callable.From(FireTertiaryShot));
@@ -72,18 +109,30 @@ public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttac
private void FirePrimaryShot() private void FirePrimaryShot()
{ {
if (HealthComponent.CurrentHP.Value <= 0)
return;
StoneRotation.Stop();
FireSFX.Play();
GD.Print("Fire primary shot"); GD.Print("Fire primary shot");
Projectile1.Fire(); Projectile1.Fire();
} }
private void FireSecondaryShot() private void FireSecondaryShot()
{ {
if (HealthComponent.CurrentHP.Value <= 0)
return;
StoneRotation.Stop();
FireSFX.Play();
GD.Print("Fire secondary shot"); GD.Print("Fire secondary shot");
Projectile2.Fire(); Projectile2.Fire();
} }
private void FireTertiaryShot() private void FireTertiaryShot()
{ {
if (HealthComponent.CurrentHP.Value <= 0)
return;
StoneRotation.Stop();
FireSFX.Play();
GD.Print("Fire tertiary shot"); GD.Print("Fire tertiary shot");
Projectile3.Fire(); Projectile3.Fire();
} }
@@ -96,6 +145,10 @@ public partial class EdenPillar : Enemy3D, IHasPrimaryAttack, IHasSecondaryAttac
return _rotation.Rotation.Y; return _rotation.Rotation.Y;
} }
private void RotateTowardsPlayer(float angle) => Rotation = new Vector3(Rotation.X, angle, Rotation.Z); private void RotateTowardsPlayer(float angle)
{
if (HealthComponent.CurrentHP.Value <= 0)
return;
Rotation = new Vector3(Rotation.X, angle, Rotation.Z);
}
} }

View File

@@ -0,0 +1,24 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode))]
public partial class EdenPillarModelView : EnemyModelView3D
{
public override void _Notification(int what) => this.Notify(what);
public new void OnReady()
{
}
public override void PlayHitAnimation()
{
_animationPlayer.Play("take_damage");
}
public override void PlayDeathAnimation()
{
_animationPlayer.Play("defeated");
}
}

View File

@@ -0,0 +1 @@
uid://2kqcur5c32dr

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=22 format=4 uid="uid://cktycana6xxtp"] [gd_scene load_steps=22 format=4 uid="uid://cktycana6xxtp"]
[ext_resource type="Texture2D" uid="uid://cvst7yhbw0sxt" path="res://src/enemy/enemy_types/10. Eden Pillar/model/PILLAR EXPORT 1_ENEMY_PILLAR_TEXTURE2.jpg" id="1_1kpl1"] [ext_resource type="Texture2D" uid="uid://cvst7yhbw0sxt" path="res://src/enemy/enemy_types/10. Eden Pillar/model/PILLAR EXPORT 1_ENEMY_PILLAR_TEXTURE2.jpg" id="1_1kpl1"]
[ext_resource type="Script" uid="uid://ckv5dmrw6pvn6" path="res://src/enemy/EnemyModelView3D.cs" id="1_11eq8"] [ext_resource type="Script" uid="uid://2kqcur5c32dr" path="res://src/enemy/enemy_types/10. Eden Pillar/EdenPillarModelView.cs" id="1_qhmtu"]
[ext_resource type="Texture2D" uid="uid://bnbveonobhyhc" path="res://src/enemy/enemy_types/10. Eden Pillar/model/PILLAR EXPORT 1_cannon_edge.png" id="2_11eq8"] [ext_resource type="Texture2D" uid="uid://bnbveonobhyhc" path="res://src/enemy/enemy_types/10. Eden Pillar/model/PILLAR EXPORT 1_cannon_edge.png" id="2_11eq8"]
[ext_resource type="Material" uid="uid://brwu51ylevbmg" path="res://src/enemy/BossHit.tres" id="2_xf2ga"] [ext_resource type="Material" uid="uid://brwu51ylevbmg" path="res://src/enemy/BossHit.tres" id="2_xf2ga"]
[ext_resource type="Texture2D" uid="uid://by7k6crx6fmpv" path="res://src/enemy/enemy_types/10. Eden Pillar/model/PILLAR EXPORT 1_floral_single_tile.jpg" id="3_oxjs8"] [ext_resource type="Texture2D" uid="uid://by7k6crx6fmpv" path="res://src/enemy/enemy_types/10. Eden Pillar/model/PILLAR EXPORT 1_floral_single_tile.jpg" id="3_oxjs8"]
@@ -237,9 +237,6 @@ tracks/1/keys = {
"values": [ExtResource("2_xf2ga")] "values": [ExtResource("2_xf2ga")]
} }
[sub_resource type="Animation" id="Animation_6jr7s"]
resource_name = "primary_attack"
[sub_resource type="Animation" id="Animation_xf2ga"] [sub_resource type="Animation" id="Animation_xf2ga"]
resource_name = "take_damage" resource_name = "take_damage"
length = 0.250008 length = 0.250008
@@ -285,13 +282,14 @@ tracks/2/keys = {
_data = { _data = {
&"RESET": SubResource("Animation_qhmtu"), &"RESET": SubResource("Animation_qhmtu"),
&"defeated": SubResource("Animation_mi284"), &"defeated": SubResource("Animation_mi284"),
&"primary_attack": SubResource("Animation_6jr7s"),
&"take_damage": SubResource("Animation_xf2ga") &"take_damage": SubResource("Animation_xf2ga")
} }
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_qhmtu"]
[node name="EdenPillarModelView" type="Node3D"] [node name="EdenPillarModelView" type="Node3D"]
transform = Transform3D(0.9, 0, 0, 0, 0.9, 0, 0, 0, 0.9, 0, 0, 0) transform = Transform3D(0.9, 0, 0, 0, 0.9, 0, 0, 0, 0.9, 0, 0, 0)
script = ExtResource("1_11eq8") script = ExtResource("1_qhmtu")
[node name="MeshInstance" type="MeshInstance3D" parent="."] [node name="MeshInstance" type="MeshInstance3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
@@ -299,12 +297,19 @@ transform = Transform3D(-2.29567e-08, 0.525188, 0.290134, -0.6, -2.62268e-08, 0,
mesh = SubResource("ArrayMesh_8pgwy") mesh = SubResource("ArrayMesh_8pgwy")
skeleton = NodePath("") skeleton = NodePath("")
[node name="Firing" type="AudioStreamPlayer3D" parent="."]
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
libraries = { libraries = {
&"": SubResource("AnimationLibrary_mi284") &"": SubResource("AnimationLibrary_mi284")
} }
[node name="Stone Rotation" type="AudioStreamPlayer3D" parent="."] [node name="AnimationTree" type="AnimationTree" parent="."]
unique_name_in_owner = true
[node name="Firing" type="AudioStreamPlayer3D" parent="."] tree_root = SubResource("AnimationNodeStateMachine_qhmtu")

View File

@@ -0,0 +1,301 @@
[gd_scene load_steps=31 format=3 uid="uid://d2i6g73k8b8q6"]
[ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="1_120b0"]
[ext_resource type="Script" uid="uid://ctshiyffvt4y5" path="res://src/system/AttackDataResource.cs" id="2_120b0"]
[ext_resource type="Texture2D" uid="uid://bc2kcbo8hvpjo" path="res://src/vfx/Enemy/EDEN_FIREBALL.png" id="2_yk5wk"]
[ext_resource type="AudioStream" uid="uid://c0jveij17p14k" path="res://src/audio/sfx/ENEMY_EDEN_PILLAR_PROJECTILETRAVEL.ogg" id="3_c2pmi"]
[sub_resource type="Resource" id="Resource_yk5wk"]
script = ExtResource("2_120b0")
Damage = 10
ElementType = 4
metadata/_custom_type_script = "uid://ctshiyffvt4y5"
[sub_resource type="AtlasTexture" id="AtlasTexture_tahr6"]
atlas = ExtResource("2_yk5wk")
region = Rect2(1024, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_xdeci"]
atlas = ExtResource("2_yk5wk")
region = Rect2(1536, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_fa1bc"]
atlas = ExtResource("2_yk5wk")
region = Rect2(2048, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_g6ooq"]
atlas = ExtResource("2_yk5wk")
region = Rect2(2560, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_byyvj"]
atlas = ExtResource("2_yk5wk")
region = Rect2(3072, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_ggg1m"]
atlas = ExtResource("2_yk5wk")
region = Rect2(3584, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_q58bf"]
atlas = ExtResource("2_yk5wk")
region = Rect2(4096, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_1i765"]
atlas = ExtResource("2_yk5wk")
region = Rect2(4608, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_wafqm"]
atlas = ExtResource("2_yk5wk")
region = Rect2(5120, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_xyjyi"]
atlas = ExtResource("2_yk5wk")
region = Rect2(5632, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_ccyov"]
atlas = ExtResource("2_yk5wk")
region = Rect2(6144, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_72cq1"]
atlas = ExtResource("2_yk5wk")
region = Rect2(6656, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_3ch54"]
atlas = ExtResource("2_yk5wk")
region = Rect2(7168, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_1ldhx"]
atlas = ExtResource("2_yk5wk")
region = Rect2(7680, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_unl0i"]
atlas = ExtResource("2_yk5wk")
region = Rect2(8192, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_hvv26"]
atlas = ExtResource("2_yk5wk")
region = Rect2(8704, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0uin"]
atlas = ExtResource("2_yk5wk")
region = Rect2(9216, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_rxdj4"]
atlas = ExtResource("2_yk5wk")
region = Rect2(9728, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_3dd1k"]
atlas = ExtResource("2_yk5wk")
region = Rect2(10240, 0, 512, 502)
[sub_resource type="AtlasTexture" id="AtlasTexture_tgphi"]
atlas = ExtResource("2_yk5wk")
region = Rect2(10752, 0, 512, 502)
[sub_resource type="SpriteFrames" id="SpriteFrames_qfk3b"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_tahr6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xdeci")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fa1bc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g6ooq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_byyvj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ggg1m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q58bf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1i765")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wafqm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xyjyi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ccyov")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_72cq1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3ch54")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1ldhx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_unl0i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hvv26")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n0uin")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rxdj4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3dd1k")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tgphi")
}],
"loop": true,
"name": &"default",
"speed": 24.0
}]
[sub_resource type="SphereShape3D" id="SphereShape3D_kct8n"]
[sub_resource type="Animation" id="Animation_xrn7e"]
resource_name = "fire"
length = 2.13334
step = 0.0416667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2.125),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 30)]
}
tracks/1/type = "audio"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../BULLET TRAVEL")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": [{
"end_offset": 5.41597,
"start_offset": 0.0,
"stream": ExtResource("3_c2pmi")
}],
"times": PackedFloat32Array(0.0416667)
}
tracks/1/use_blend = true
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.0333333, 2.125),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [false, true, false]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("%ProjectileHitbox/CollisionShape3D:disabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.0416667),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
[sub_resource type="Animation" id="Animation_8qeb2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%ProjectileHitbox/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="AnimationLibrary" id="AnimationLibrary_q8n6h"]
_data = {
&"Fire": SubResource("Animation_xrn7e"),
&"RESET": SubResource("Animation_8qeb2")
}
[node name="Projectile1" type="Node3D"]
script = ExtResource("1_120b0")
AttackData = SubResource("Resource_yk5wk")
[node name="Bullet" type="Node3D" parent="."]
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Bullet"]
transform = Transform3D(0.45, 0, 0, 0, 0.45, 0, 0, 0, 0.45, 0, 1.195, 0)
visible = false
offset = Vector2(0, 150)
billboard = 1
sprite_frames = SubResource("SpriteFrames_qfk3b")
autoplay = "default"
frame_progress = 0.369929
[node name="ProjectileHitbox" type="Area3D" parent="Bullet/AnimatedSprite3D"]
unique_name_in_owner = true
transform = Transform3D(2.22222, 0, 0, 0, 2.22222, 0, 0, 0, 2.22222, 0, 1.21676, 0)
collision_layer = 0
collision_mask = 65
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bullet/AnimatedSprite3D/ProjectileHitbox"]
shape = SubResource("SphereShape3D_kct8n")
disabled = true
[node name="BULLET TRAVEL" type="AudioStreamPlayer3D" parent="Bullet"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.983215, 0)
max_distance = 35.0
max_polyphony = 3
bus = &"SFX"
[node name="AnimationPlayer" type="AnimationPlayer" parent="Bullet"]
unique_name_in_owner = true
root_node = NodePath("../AnimatedSprite3D")
libraries = {
&"": SubResource("AnimationLibrary_q8n6h")
}

View File

@@ -0,0 +1,656 @@
[gd_scene load_steps=82 format=3 uid="uid://e48b81yeuibd"]
[ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="1_4lakg"]
[ext_resource type="Script" uid="uid://ctshiyffvt4y5" path="res://src/system/AttackDataResource.cs" id="2_4lakg"]
[ext_resource type="Texture2D" uid="uid://f21bov0pvu84" path="res://src/vfx/Enemy/watersheet.png" id="2_umubt"]
[ext_resource type="AudioStream" uid="uid://c0jveij17p14k" path="res://src/audio/sfx/ENEMY_EDEN_PILLAR_PROJECTILETRAVEL.ogg" id="3_2jyax"]
[sub_resource type="Resource" id="Resource_umubt"]
script = ExtResource("2_4lakg")
Damage = 10
ElementType = 3
metadata/_custom_type_script = "uid://ctshiyffvt4y5"
[sub_resource type="AtlasTexture" id="AtlasTexture_nc31c"]
atlas = ExtResource("2_umubt")
region = Rect2(414, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_d0njh"]
atlas = ExtResource("2_umubt")
region = Rect2(828, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_t4xb3"]
atlas = ExtResource("2_umubt")
region = Rect2(1242, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_gf6oi"]
atlas = ExtResource("2_umubt")
region = Rect2(1656, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_qfk3b"]
atlas = ExtResource("2_umubt")
region = Rect2(2070, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_epyy8"]
atlas = ExtResource("2_umubt")
region = Rect2(2484, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_s4ne2"]
atlas = ExtResource("2_umubt")
region = Rect2(2898, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_ae3ee"]
atlas = ExtResource("2_umubt")
region = Rect2(3312, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_3lntq"]
atlas = ExtResource("2_umubt")
region = Rect2(3726, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_vlsab"]
atlas = ExtResource("2_umubt")
region = Rect2(4140, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_ap46q"]
atlas = ExtResource("2_umubt")
region = Rect2(4554, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_2j0d2"]
atlas = ExtResource("2_umubt")
region = Rect2(4968, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_ufubs"]
atlas = ExtResource("2_umubt")
region = Rect2(5382, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_1prl7"]
atlas = ExtResource("2_umubt")
region = Rect2(5796, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_kkds3"]
atlas = ExtResource("2_umubt")
region = Rect2(6210, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_0lybu"]
atlas = ExtResource("2_umubt")
region = Rect2(6624, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_7whtn"]
atlas = ExtResource("2_umubt")
region = Rect2(7038, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_iubf0"]
atlas = ExtResource("2_umubt")
region = Rect2(7452, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_stov8"]
atlas = ExtResource("2_umubt")
region = Rect2(7866, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_o45y3"]
atlas = ExtResource("2_umubt")
region = Rect2(8280, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_8l1oq"]
atlas = ExtResource("2_umubt")
region = Rect2(8694, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_66xhm"]
atlas = ExtResource("2_umubt")
region = Rect2(9108, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_bcurx"]
atlas = ExtResource("2_umubt")
region = Rect2(9522, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_7scby"]
atlas = ExtResource("2_umubt")
region = Rect2(9936, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_4bng3"]
atlas = ExtResource("2_umubt")
region = Rect2(10350, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_ond1d"]
atlas = ExtResource("2_umubt")
region = Rect2(10764, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_n5fit"]
atlas = ExtResource("2_umubt")
region = Rect2(11178, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_ls6p2"]
atlas = ExtResource("2_umubt")
region = Rect2(11592, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_283o8"]
atlas = ExtResource("2_umubt")
region = Rect2(12006, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_mpucc"]
atlas = ExtResource("2_umubt")
region = Rect2(12420, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_uc1qt"]
atlas = ExtResource("2_umubt")
region = Rect2(12834, 0, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_ru8ov"]
atlas = ExtResource("2_umubt")
region = Rect2(0, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_xknqr"]
atlas = ExtResource("2_umubt")
region = Rect2(414, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_j5v31"]
atlas = ExtResource("2_umubt")
region = Rect2(828, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_en4u6"]
atlas = ExtResource("2_umubt")
region = Rect2(1242, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_io5ic"]
atlas = ExtResource("2_umubt")
region = Rect2(1656, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_la7jn"]
atlas = ExtResource("2_umubt")
region = Rect2(2070, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_aprwe"]
atlas = ExtResource("2_umubt")
region = Rect2(2484, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_bjcvx"]
atlas = ExtResource("2_umubt")
region = Rect2(2898, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_m6grv"]
atlas = ExtResource("2_umubt")
region = Rect2(3312, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_p5nk1"]
atlas = ExtResource("2_umubt")
region = Rect2(3726, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_vtlyl"]
atlas = ExtResource("2_umubt")
region = Rect2(4140, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_krnds"]
atlas = ExtResource("2_umubt")
region = Rect2(4554, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_e41fr"]
atlas = ExtResource("2_umubt")
region = Rect2(4968, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_qfmrt"]
atlas = ExtResource("2_umubt")
region = Rect2(5382, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_gx33b"]
atlas = ExtResource("2_umubt")
region = Rect2(5796, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_gb8l4"]
atlas = ExtResource("2_umubt")
region = Rect2(6210, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_f2xl7"]
atlas = ExtResource("2_umubt")
region = Rect2(6624, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_dafv6"]
atlas = ExtResource("2_umubt")
region = Rect2(7038, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_r10xa"]
atlas = ExtResource("2_umubt")
region = Rect2(7452, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_mfrkm"]
atlas = ExtResource("2_umubt")
region = Rect2(7866, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_kjww1"]
atlas = ExtResource("2_umubt")
region = Rect2(8280, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_8b54y"]
atlas = ExtResource("2_umubt")
region = Rect2(8694, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_vphfl"]
atlas = ExtResource("2_umubt")
region = Rect2(9108, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_tqm3c"]
atlas = ExtResource("2_umubt")
region = Rect2(9522, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_lkkr8"]
atlas = ExtResource("2_umubt")
region = Rect2(9936, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_7qoig"]
atlas = ExtResource("2_umubt")
region = Rect2(10350, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_p5yh0"]
atlas = ExtResource("2_umubt")
region = Rect2(10764, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_a5060"]
atlas = ExtResource("2_umubt")
region = Rect2(11178, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_w2v4d"]
atlas = ExtResource("2_umubt")
region = Rect2(11592, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_fkrk4"]
atlas = ExtResource("2_umubt")
region = Rect2(12006, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_xfsjx"]
atlas = ExtResource("2_umubt")
region = Rect2(12420, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_g03gd"]
atlas = ExtResource("2_umubt")
region = Rect2(12834, 407, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_vs1dl"]
atlas = ExtResource("2_umubt")
region = Rect2(0, 814, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_5nevj"]
atlas = ExtResource("2_umubt")
region = Rect2(414, 814, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_e5y28"]
atlas = ExtResource("2_umubt")
region = Rect2(828, 814, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_ggenl"]
atlas = ExtResource("2_umubt")
region = Rect2(1242, 814, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_kugry"]
atlas = ExtResource("2_umubt")
region = Rect2(1656, 814, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_77yio"]
atlas = ExtResource("2_umubt")
region = Rect2(2070, 814, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_msbdd"]
atlas = ExtResource("2_umubt")
region = Rect2(2484, 814, 414, 407)
[sub_resource type="AtlasTexture" id="AtlasTexture_nd17a"]
atlas = ExtResource("2_umubt")
region = Rect2(2898, 814, 414, 407)
[sub_resource type="SpriteFrames" id="SpriteFrames_sqw6w"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_nc31c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_d0njh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_t4xb3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gf6oi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qfk3b")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_epyy8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s4ne2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ae3ee")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3lntq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vlsab")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ap46q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2j0d2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ufubs")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1prl7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kkds3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0lybu")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7whtn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iubf0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_stov8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_o45y3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8l1oq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_66xhm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bcurx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7scby")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4bng3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ond1d")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n5fit")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ls6p2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_283o8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mpucc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uc1qt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ru8ov")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xknqr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j5v31")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_en4u6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_io5ic")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_la7jn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_aprwe")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bjcvx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_m6grv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_p5nk1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vtlyl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_krnds")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e41fr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qfmrt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gx33b")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gb8l4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_f2xl7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dafv6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_r10xa")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mfrkm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kjww1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8b54y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vphfl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tqm3c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lkkr8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7qoig")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_p5yh0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a5060")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w2v4d")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fkrk4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xfsjx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g03gd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vs1dl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5nevj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e5y28")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ggenl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kugry")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_77yio")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_msbdd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nd17a")
}],
"loop": true,
"name": &"default",
"speed": 24.0
}]
[sub_resource type="SphereShape3D" id="SphereShape3D_kct8n"]
[sub_resource type="Animation" id="Animation_xrn7e"]
resource_name = "fire"
length = 2.13334
step = 0.0416667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2.125),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 30)]
}
tracks/1/type = "audio"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../BULLET TRAVEL")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": [{
"end_offset": 5.416,
"start_offset": 0.0,
"stream": ExtResource("3_2jyax")
}],
"times": PackedFloat32Array(0.0416667)
}
tracks/1/use_blend = true
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.0333333, 2.125),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [false, true, false]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("%ProjectileHitbox/CollisionShape3D:disabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_8qeb2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%ProjectileHitbox/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="AnimationLibrary" id="AnimationLibrary_q8n6h"]
_data = {
&"Fire": SubResource("Animation_xrn7e"),
&"RESET": SubResource("Animation_8qeb2")
}
[node name="Projectile2" type="Node3D"]
transform = Transform3D(-0.529919, 0, 0.848048, 0, 1, 0, -0.848048, 0, -0.529919, 0, 0, 0)
script = ExtResource("1_4lakg")
AttackData = SubResource("Resource_umubt")
[node name="Bullet" type="Node3D" parent="."]
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Bullet"]
transform = Transform3D(0.31, 0, 1.53979e-08, 0, 0.31, 0, -1.53979e-08, 0, 0.31, 0, 1.391, 0)
visible = false
offset = Vector2(0, 150)
billboard = 1
sprite_frames = SubResource("SpriteFrames_sqw6w")
autoplay = "default"
frame_progress = 0.973103
[node name="ProjectileHitbox" type="Area3D" parent="Bullet/AnimatedSprite3D"]
unique_name_in_owner = true
transform = Transform3D(3.22581, 0, -2.38419e-07, 0, 3.22581, 0, 2.38419e-07, 0, 3.22581, 0, 1.32135, 0)
collision_layer = 0
collision_mask = 65
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bullet/AnimatedSprite3D/ProjectileHitbox"]
shape = SubResource("SphereShape3D_kct8n")
disabled = true
[node name="BULLET TRAVEL" type="AudioStreamPlayer3D" parent="Bullet"]
bus = &"SFX"
[node name="AnimationPlayer" type="AnimationPlayer" parent="Bullet"]
unique_name_in_owner = true
root_node = NodePath("../AnimatedSprite3D")
libraries = {
&"": SubResource("AnimationLibrary_q8n6h")
}

View File

@@ -0,0 +1,992 @@
[gd_scene load_steps=130 format=3 uid="uid://of1sm4qwibga"]
[ext_resource type="Script" uid="uid://cqm6u7qa8japr" path="res://src/system/Projectile.cs" id="1_c6b2i"]
[ext_resource type="Script" uid="uid://ctshiyffvt4y5" path="res://src/system/AttackDataResource.cs" id="2_c6b2i"]
[ext_resource type="Texture2D" uid="uid://w5055g8ecnea" path="res://src/vfx/Enemy/EDEN_AERO.png" id="2_nsnf1"]
[ext_resource type="AudioStream" uid="uid://c0jveij17p14k" path="res://src/audio/sfx/ENEMY_EDEN_PILLAR_PROJECTILETRAVEL.ogg" id="3_1sxke"]
[sub_resource type="Resource" id="Resource_nsnf1"]
script = ExtResource("2_c6b2i")
Damage = 10
ElementType = 1
metadata/_custom_type_script = "uid://ctshiyffvt4y5"
[sub_resource type="AtlasTexture" id="AtlasTexture_okqig"]
atlas = ExtResource("2_nsnf1")
region = Rect2(256, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_l5xbl"]
atlas = ExtResource("2_nsnf1")
region = Rect2(512, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_6oxbo"]
atlas = ExtResource("2_nsnf1")
region = Rect2(768, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_2cug7"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1024, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ivyc"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1280, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_h6net"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1536, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_qttxr"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1792, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_vrfe3"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2048, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_8vskp"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2304, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_v736k"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2560, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_v8fei"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2816, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_5mvim"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3072, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_bxq2e"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3328, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_w7wbb"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3584, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_1v0wf"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3840, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_d7jyw"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4096, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_vme0y"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4352, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_1gq26"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4608, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_htj02"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4864, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_beua4"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5120, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_gelrx"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5376, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_5weok"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5632, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_u3cl3"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5888, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_aaygb"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6144, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_rng8d"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6400, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_jigs2"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6656, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_icafr"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6912, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_2hljj"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7168, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_y03bg"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7424, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_ahy42"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7680, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_nyi5w"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7936, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_mg51e"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8192, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_i2my7"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8448, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_hna3u"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8704, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_sldmi"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8960, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_flp6m"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9216, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_bf5v6"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9472, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_samc6"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9728, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_tixfw"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9984, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_etpwm"]
atlas = ExtResource("2_nsnf1")
region = Rect2(10240, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_jli65"]
atlas = ExtResource("2_nsnf1")
region = Rect2(10496, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_68dke"]
atlas = ExtResource("2_nsnf1")
region = Rect2(10752, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_iyvmf"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11008, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_oo5vp"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11264, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_sxmae"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11520, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_66xds"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11776, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_10dnw"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12032, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_gwg3k"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12288, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_xbhy1"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12544, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_k38ir"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12800, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_cd8f4"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13056, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_l3h6f"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13312, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_myng8"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13568, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_to5bb"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13824, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_hkpkl"]
atlas = ExtResource("2_nsnf1")
region = Rect2(14080, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_g0j4y"]
atlas = ExtResource("2_nsnf1")
region = Rect2(14336, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_ak6k7"]
atlas = ExtResource("2_nsnf1")
region = Rect2(14592, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_bp4ov"]
atlas = ExtResource("2_nsnf1")
region = Rect2(14848, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_658xg"]
atlas = ExtResource("2_nsnf1")
region = Rect2(15104, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_fbmbe"]
atlas = ExtResource("2_nsnf1")
region = Rect2(15360, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_hkls5"]
atlas = ExtResource("2_nsnf1")
region = Rect2(15616, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_tvap8"]
atlas = ExtResource("2_nsnf1")
region = Rect2(15872, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_67m1c"]
atlas = ExtResource("2_nsnf1")
region = Rect2(16128, 0, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_bxqys"]
atlas = ExtResource("2_nsnf1")
region = Rect2(0, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_w4bnl"]
atlas = ExtResource("2_nsnf1")
region = Rect2(256, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_gxqg3"]
atlas = ExtResource("2_nsnf1")
region = Rect2(512, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_pcumw"]
atlas = ExtResource("2_nsnf1")
region = Rect2(768, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_tus1t"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1024, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_8pptg"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1280, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_s6dvc"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1536, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_uv040"]
atlas = ExtResource("2_nsnf1")
region = Rect2(1792, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_i64l1"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2048, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_fqhkx"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2304, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_1ljbx"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2560, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_lhi4l"]
atlas = ExtResource("2_nsnf1")
region = Rect2(2816, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_4wges"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3072, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_4sgio"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3328, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_ito1g"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3584, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_cpwxr"]
atlas = ExtResource("2_nsnf1")
region = Rect2(3840, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_p1fwl"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4096, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_cdvkl"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4352, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_wpj5u"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4608, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_0x44a"]
atlas = ExtResource("2_nsnf1")
region = Rect2(4864, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_ijs33"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5120, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_na5up"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5376, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_6kx2h"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5632, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_eakun"]
atlas = ExtResource("2_nsnf1")
region = Rect2(5888, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_rx812"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6144, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_w4y0f"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6400, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_w1gyw"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6656, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_lrjdk"]
atlas = ExtResource("2_nsnf1")
region = Rect2(6912, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_p6y0v"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7168, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_a2cqm"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7424, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_7lkf4"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7680, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_07kus"]
atlas = ExtResource("2_nsnf1")
region = Rect2(7936, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_h7xtp"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8192, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_dbrmg"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8448, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_2jrrr"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8704, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_rkoi2"]
atlas = ExtResource("2_nsnf1")
region = Rect2(8960, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_o8ivu"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9216, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_6kmfo"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9472, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_iyo11"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9728, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_xmwnt"]
atlas = ExtResource("2_nsnf1")
region = Rect2(9984, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_7jhny"]
atlas = ExtResource("2_nsnf1")
region = Rect2(10240, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_uw7dc"]
atlas = ExtResource("2_nsnf1")
region = Rect2(10496, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_4u665"]
atlas = ExtResource("2_nsnf1")
region = Rect2(10752, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_fvfy2"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11008, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_oeabt"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11264, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_vh736"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11520, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_2p1wx"]
atlas = ExtResource("2_nsnf1")
region = Rect2(11776, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_hv6e3"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12032, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_l20x8"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12288, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_ce3r7"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12544, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_ysw4o"]
atlas = ExtResource("2_nsnf1")
region = Rect2(12800, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_j885m"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13056, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_v05tc"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13312, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_64j7e"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13568, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_vqlpt"]
atlas = ExtResource("2_nsnf1")
region = Rect2(13824, 256, 256, 256)
[sub_resource type="AtlasTexture" id="AtlasTexture_2iaor"]
atlas = ExtResource("2_nsnf1")
region = Rect2(14080, 256, 256, 256)
[sub_resource type="SpriteFrames" id="SpriteFrames_cu72w"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_okqig")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l5xbl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6oxbo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2cug7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4ivyc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h6net")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qttxr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vrfe3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8vskp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_v736k")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_v8fei")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5mvim")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bxq2e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w7wbb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1v0wf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_d7jyw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vme0y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1gq26")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_htj02")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_beua4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gelrx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5weok")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_u3cl3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_aaygb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rng8d")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jigs2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_icafr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2hljj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_y03bg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ahy42")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nyi5w")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mg51e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i2my7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hna3u")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_sldmi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_flp6m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bf5v6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_samc6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tixfw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_etpwm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jli65")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_68dke")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iyvmf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_oo5vp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_sxmae")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_66xds")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_10dnw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gwg3k")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xbhy1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_k38ir")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_cd8f4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l3h6f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_myng8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_to5bb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hkpkl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g0j4y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ak6k7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bp4ov")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_658xg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fbmbe")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hkls5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tvap8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_67m1c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bxqys")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w4bnl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gxqg3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pcumw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tus1t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8pptg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s6dvc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uv040")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i64l1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fqhkx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1ljbx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lhi4l")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4wges")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4sgio")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ito1g")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_cpwxr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_p1fwl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_cdvkl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wpj5u")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0x44a")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ijs33")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_na5up")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6kx2h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_eakun")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rx812")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w4y0f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w1gyw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lrjdk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_p6y0v")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a2cqm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7lkf4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_07kus")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h7xtp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dbrmg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2jrrr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rkoi2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_o8ivu")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6kmfo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iyo11")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xmwnt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7jhny")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uw7dc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4u665")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fvfy2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_oeabt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vh736")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2p1wx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hv6e3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l20x8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ce3r7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ysw4o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j885m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_v05tc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_64j7e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vqlpt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2iaor")
}],
"loop": true,
"name": &"default",
"speed": 24.0
}]
[sub_resource type="SphereShape3D" id="SphereShape3D_kct8n"]
[sub_resource type="Animation" id="Animation_xrn7e"]
resource_name = "fire"
length = 2.13334
step = 0.0416667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2.125),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 30)]
}
tracks/1/type = "audio"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../BULLET TRAVEL")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": [{
"end_offset": 5.416,
"start_offset": 0.0,
"stream": ExtResource("3_1sxke")
}],
"times": PackedFloat32Array(0.0416667)
}
tracks/1/use_blend = true
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.0333333, 2.125),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [false, true, false]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("%ProjectileHitbox/CollisionShape3D:disabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_8qeb2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("..:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%ProjectileHitbox/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="AnimationLibrary" id="AnimationLibrary_q8n6h"]
_data = {
&"Fire": SubResource("Animation_xrn7e"),
&"RESET": SubResource("Animation_8qeb2")
}
[node name="Projectile3" type="Node3D"]
transform = Transform3D(-0.529919, 0, -0.848048, 0, 1, 0, 0.848048, 0, -0.529919, 0, 0, 0)
script = ExtResource("1_c6b2i")
AttackData = SubResource("Resource_nsnf1")
[node name="Bullet" type="Node3D" parent="."]
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Bullet"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.26, 0)
visible = false
offset = Vector2(0, 150)
billboard = 1
sprite_frames = SubResource("SpriteFrames_cu72w")
autoplay = "default"
frame_progress = 0.897082
[node name="ProjectileHitbox" type="Area3D" parent="Bullet/AnimatedSprite3D"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.39633, 0)
collision_layer = 0
collision_mask = 65
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bullet/AnimatedSprite3D/ProjectileHitbox"]
shape = SubResource("SphereShape3D_kct8n")
disabled = true
[node name="BULLET TRAVEL" type="AudioStreamPlayer3D" parent="Bullet"]
bus = &"SFX"
[node name="AnimationPlayer" type="AnimationPlayer" parent="Bullet"]
unique_name_in_owner = true
root_node = NodePath("../AnimatedSprite3D")
libraries = {
&"": SubResource("AnimationLibrary_q8n6h")
}

View File

@@ -1,10 +1,14 @@
[gd_scene load_steps=10 format=3 uid="uid://boqjebx7yuiqy"] [gd_scene load_steps=14 format=3 uid="uid://boqjebx7yuiqy"]
[ext_resource type="Script" uid="uid://cjd7k1scp1am8" path="res://src/enemy/enemy_types/11. Palan/Palan.cs" id="1_2upgt"] [ext_resource type="Script" uid="uid://cjd7k1scp1am8" path="res://src/enemy/enemy_types/11. Palan/Palan.cs" id="1_2upgt"]
[ext_resource type="PackedScene" uid="uid://dxwwfbt2mtmer" path="res://src/enemy/enemy_types/11. Palan/PalanModelView.tscn" id="4_3ahu6"] [ext_resource type="PackedScene" uid="uid://dxwwfbt2mtmer" path="res://src/enemy/enemy_types/11. Palan/PalanModelView.tscn" id="4_3ahu6"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_3ogbp"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_3ogbp"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_6scof"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_6scof"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_6scof"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_oy46w"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_oy46w"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_oy46w"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_87wn4"]
[ext_resource type="AudioStream" uid="uid://mp00rngkpfjg" path="res://src/audio/sfx/enemy_palan_death.ogg" id="9_6scof"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.717471 radius = 0.717471
@@ -84,3 +88,29 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_6scof")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_oy46w")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_87wn4")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("9_6scof")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -2926,6 +2926,7 @@ libraries = {
[node name="Sunblast" type="AnimatedSprite3D" parent="Sprite3D/AnimationPlayer2"] [node name="Sunblast" type="AnimatedSprite3D" parent="Sprite3D/AnimationPlayer2"]
transform = Transform3D(0.335, 0, 0, 0, 0.335, 0, 0, 0, 0.335, -0.546079, 0.441674, 0) transform = Transform3D(0.335, 0, 0, 0, 0.335, 0, 0, 0, 0.335, -0.546079, 0.441674, 0)
sprite_frames = SubResource("SpriteFrames_skutu") sprite_frames = SubResource("SpriteFrames_skutu")
frame = 15
[node name="Primary Attack" type="AnimatedSprite3D" parent="Sprite3D/AnimationPlayer2"] [node name="Primary Attack" type="AnimatedSprite3D" parent="Sprite3D/AnimationPlayer2"]
transform = Transform3D(0.275, 0, 0, 0, 0.275, 0, 0, 0, 0.275, 0, 1.33811, -0.317864) transform = Transform3D(0.275, 0, 0, 0, 0.275, 0, 0, 0, 0.275, 0, 1.33811, -0.317864)
@@ -3019,3 +3020,8 @@ root_node = NodePath("../AnimatedSprite3D")
libraries = { libraries = {
&"": SubResource("AnimationLibrary_q8n6h") &"": SubResource("AnimationLibrary_q8n6h")
} }
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://dc1i06laolear"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_b6ynu"]
[resource]
script = ExtResource("1_b6ynu")
CurrentHP = 120.0
MaximumHP = 120
CurrentAttack = 10
CurrentDefense = 10
MaxAttack = 10
MaxDefense = 10
ExpFromDefeat = 0
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=582 format=3 uid="uid://drkaq6grim1fb"] [gd_scene load_steps=585 format=3 uid="uid://drkaq6grim1fb"]
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_h8pla"] [ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_h8pla"]
[ext_resource type="Texture2D" uid="uid://clwj6yknpw74n" path="res://src/enemy/enemy_types/12. Shield of Heaven/animations/New/Idle Back/0001.png" id="2_2eclh"] [ext_resource type="Texture2D" uid="uid://clwj6yknpw74n" path="res://src/enemy/enemy_types/12. Shield of Heaven/animations/New/Idle Back/0001.png" id="2_2eclh"]
@@ -2171,7 +2171,7 @@ tracks/3/keys = {
[sub_resource type="Animation" id="Animation_xt8vr"] [sub_resource type="Animation" id="Animation_xt8vr"]
resource_name = "idle_back" resource_name = "idle_back"
length = 6.16667 length = 6.08334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2213,7 +2213,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_yaauq"] [sub_resource type="Animation" id="Animation_yaauq"]
resource_name = "idle_back_walk" resource_name = "idle_back_walk"
length = 2.41667 length = 2.33334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2255,7 +2255,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_0p21q"] [sub_resource type="Animation" id="Animation_0p21q"]
resource_name = "idle_front" resource_name = "idle_front"
length = 6.16667 length = 6.08334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2297,7 +2297,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_r8ie6"] [sub_resource type="Animation" id="Animation_r8ie6"]
resource_name = "idle_front_walk" resource_name = "idle_front_walk"
length = 2.41667 length = 2.33334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2339,7 +2339,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_ft48v"] [sub_resource type="Animation" id="Animation_ft48v"]
resource_name = "idle_left" resource_name = "idle_left"
length = 6.16667 length = 6.08334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2381,7 +2381,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_yh3w6"] [sub_resource type="Animation" id="Animation_yh3w6"]
resource_name = "idle_left_walk" resource_name = "idle_left_walk"
length = 2.41667 length = 2.33334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2423,7 +2423,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_rq052"] [sub_resource type="Animation" id="Animation_rq052"]
resource_name = "idle_right" resource_name = "idle_right"
length = 6.16667 length = 6.08334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2465,7 +2465,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_fab8g"] [sub_resource type="Animation" id="Animation_fab8g"]
resource_name = "idle_right_walk" resource_name = "idle_right_walk"
length = 2.41667 length = 2.33334
loop_mode = 1 loop_mode = 1
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
@@ -2507,7 +2507,7 @@ tracks/2/keys = {
[sub_resource type="Animation" id="Animation_lulp4"] [sub_resource type="Animation" id="Animation_lulp4"]
resource_name = "primary_attack" resource_name = "primary_attack"
length = 1.91667 length = 1.83334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -2600,7 +2600,7 @@ tracks/6/use_blend = true
[sub_resource type="Animation" id="Animation_7g4jy"] [sub_resource type="Animation" id="Animation_7g4jy"]
resource_name = "primary_attack_back" resource_name = "primary_attack_back"
length = 1.91667 length = 1.83334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -2683,7 +2683,7 @@ tracks/5/use_blend = true
[sub_resource type="Animation" id="Animation_wc21g"] [sub_resource type="Animation" id="Animation_wc21g"]
resource_name = "primary_attack_left" resource_name = "primary_attack_left"
length = 1.91667 length = 1.83334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -2766,7 +2766,7 @@ tracks/5/use_blend = true
[sub_resource type="Animation" id="Animation_w7rrw"] [sub_resource type="Animation" id="Animation_w7rrw"]
resource_name = "primary_attack_right" resource_name = "primary_attack_right"
length = 1.91667 length = 1.83334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -2849,6 +2849,7 @@ tracks/5/use_blend = true
[sub_resource type="Animation" id="Animation_b727r"] [sub_resource type="Animation" id="Animation_b727r"]
resource_name = "secondary_attack" resource_name = "secondary_attack"
length = 3.58334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -2869,10 +2870,10 @@ tracks/1/path = NodePath("Sprite3D/SubViewportContainer/SubViewport/AnimatedSpri
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0, 3.58333),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 0,
"values": [0] "values": [0, 43]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
@@ -2931,6 +2932,7 @@ tracks/5/use_blend = true
[sub_resource type="Animation" id="Animation_2jibd"] [sub_resource type="Animation" id="Animation_2jibd"]
resource_name = "secondary_attack_back" resource_name = "secondary_attack_back"
length = 3.58334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -2942,7 +2944,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 1, "update": 1,
"values": [&"primary_attack"] "values": [&"secondary_back"]
} }
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
@@ -2951,10 +2953,10 @@ tracks/1/path = NodePath("Sprite3D/SubViewportContainer/SubViewport/AnimatedSpri
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0, 3.58333),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 0,
"values": [0] "values": [0, 43]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
@@ -2983,6 +2985,7 @@ tracks/3/keys = {
[sub_resource type="Animation" id="Animation_mva41"] [sub_resource type="Animation" id="Animation_mva41"]
resource_name = "secondary_attack_left" resource_name = "secondary_attack_left"
length = 3.58334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -2994,7 +2997,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 1, "update": 1,
"values": [&"primary_attack"] "values": [&"secondary_right"]
} }
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
@@ -3003,10 +3006,10 @@ tracks/1/path = NodePath("Sprite3D/SubViewportContainer/SubViewport/AnimatedSpri
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0, 3.58333),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 0,
"values": [0] "values": [0, 43]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
@@ -3030,11 +3033,12 @@ tracks/3/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 1, "update": 1,
"values": [false] "values": [true]
} }
[sub_resource type="Animation" id="Animation_dalxy"] [sub_resource type="Animation" id="Animation_dalxy"]
resource_name = "secondary_attack_right" resource_name = "secondary_attack_right"
length = 3.58334
step = 0.0833333 step = 0.0833333
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@@ -3046,7 +3050,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 1, "update": 1,
"values": [&"primary_attack"] "values": [&"secondary_right"]
} }
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
@@ -3055,10 +3059,10 @@ tracks/1/path = NodePath("Sprite3D/SubViewportContainer/SubViewport/AnimatedSpri
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0, 3.58333),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 0,
"values": [0] "values": [0, 43]
} }
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
@@ -3124,6 +3128,14 @@ advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_f1vvk"] [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_f1vvk"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0pum8"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vwlpl"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_l1ir8"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_mhdbq"] [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_mhdbq"]
states/Idle/node = ExtResource("166_yh3w6") states/Idle/node = ExtResource("166_yh3w6")
states/Idle/position = Vector2(359, 100) states/Idle/position = Vector2(359, 100)
@@ -3133,7 +3145,8 @@ states/Walking/node = ExtResource("169_w7rrw")
states/Walking/position = Vector2(687, 100) states/Walking/position = Vector2(687, 100)
states/secondary_attack/node = SubResource("AnimationNodeAnimation_j5so5") states/secondary_attack/node = SubResource("AnimationNodeAnimation_j5so5")
states/secondary_attack/position = Vector2(687, 263) states/secondary_attack/position = Vector2(687, 263)
transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_y7ljc"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_08dxp"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_yk2s3"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_mb5pg"), "Walking", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_olfsm"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_f1vvk")] transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_y7ljc"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_08dxp"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_yk2s3"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_mb5pg"), "Walking", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_olfsm"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_f1vvk"), "Idle", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_0pum8"), "Walking", "secondary_attack", SubResource("AnimationNodeStateMachineTransition_vwlpl"), "secondary_attack", "Idle", SubResource("AnimationNodeStateMachineTransition_l1ir8")]
graph_offset = Vector2(-16, 68)
[sub_resource type="Animation" id="Animation_v8s5q"] [sub_resource type="Animation" id="Animation_v8s5q"]
resource_name = "ATTACK VFX" resource_name = "ATTACK VFX"
@@ -3461,3 +3474,8 @@ sprite_frames = SubResource("SpriteFrames_ie7uh")
[node name="Attack 2 VFX" type="AnimatedSprite3D" parent="VFX Animation Player"] [node name="Attack 2 VFX" type="AnimatedSprite3D" parent="VFX Animation Player"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.74915, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.74915, 0)
sprite_frames = SubResource("SpriteFrames_lgwan") sprite_frames = SubResource("SpriteFrames_lgwan")
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,10 +1,13 @@
[gd_scene load_steps=10 format=3 uid="uid://5s7c4dsb1wwk"] [gd_scene load_steps=13 format=3 uid="uid://5s7c4dsb1wwk"]
[ext_resource type="Script" uid="uid://cjdivu0v1kfhy" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.cs" id="1_oxa5b"] [ext_resource type="Script" uid="uid://cjdivu0v1kfhy" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.cs" id="1_oxa5b"]
[ext_resource type="PackedScene" uid="uid://drkaq6grim1fb" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn" id="3_r2swr"] [ext_resource type="PackedScene" uid="uid://drkaq6grim1fb" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn" id="3_r2swr"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_jvpqg"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_jvpqg"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_s5x4o"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_s5x4o"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_cacc5"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_cacc5"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_uwf0x"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_8rh66"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_m1i5i"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.226425 radius = 0.226425
@@ -84,3 +87,28 @@ _acquireTargetTime = 2.0
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_uwf0x")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_8rh66")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("8_m1i5i")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://c5fgcsruq5gx6"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_e725b"]
[resource]
script = ExtResource("1_e725b")
CurrentHP = 100.0
MaximumHP = 100
CurrentAttack = 10
CurrentDefense = 10
MaxAttack = 10
MaxDefense = 10
ExpFromDefeat = 0
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -1,9 +1,14 @@
[gd_scene load_steps=11 format=3 uid="uid://c5ugpasira53m"] [gd_scene load_steps=16 format=3 uid="uid://c5ugpasira53m"]
[ext_resource type="Script" uid="uid://jjulhqd5g3be" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.cs" id="1_o1o4d"] [ext_resource type="Script" uid="uid://jjulhqd5g3be" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.cs" id="1_o1o4d"]
[ext_resource type="PackedScene" uid="uid://dobiqowi8mhfi" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingyModelView.tscn" id="2_o1o4d"] [ext_resource type="PackedScene" uid="uid://dobiqowi8mhfi" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingyModelView.tscn" id="2_o1o4d"]
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="3_dxqkk"] [ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="3_dxqkk"]
[ext_resource type="PackedScene" uid="uid://g4cupevu280j" path="res://src/enemy/behaviors/FleeBehavior.tscn" id="4_58d4o"] [ext_resource type="PackedScene" uid="uid://g4cupevu280j" path="res://src/enemy/behaviors/FleeBehavior.tscn" id="4_58d4o"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="5_pi08j"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="6_rct6y"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="7_5jcke"]
[ext_resource type="AudioStream" uid="uid://bn6ns3jxkw03b" path="res://src/audio/sfx/ENEMY_SPROING_death.ogg" id="8_6nc43"]
[ext_resource type="AudioStream" uid="uid://dyvsuj4isc5gg" path="res://src/audio/sfx/ENEMY_golden_sproing_loop.ogg" id="9_rct6y"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 0.106078 radius = 0.106078
@@ -94,3 +99,35 @@ unique_name_in_owner = true
unique_name_in_owner = true unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
[node name="SFX" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("5_pi08j")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("6_rct6y")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("7_5jcke")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = ExtResource("8_6nc43")
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AmbientSFX" type="AudioStreamPlayer3D" parent="SFX"]
stream = ExtResource("9_rct6y")
autoplay = true
max_distance = 25.0
bus = &"SFX"

View File

@@ -663,3 +663,8 @@ root_node = NodePath("%AnimationTree/..")
tree_root = SubResource("AnimationNodeStateMachine_l2wq1") tree_root = SubResource("AnimationNodeStateMachine_l2wq1")
advance_expression_base_node = NodePath("..") advance_expression_base_node = NodePath("..")
anim_player = NodePath("../AnimationPlayer") anim_player = NodePath("../AnimationPlayer")
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://m8wl23q4kr4t"]
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_dvrvn"]
[resource]
script = ExtResource("1_dvrvn")
CurrentHP = 55.0
MaximumHP = 55
CurrentAttack = 0
CurrentDefense = 0
MaxAttack = 0
MaxDefense = 0
ExpFromDefeat = 0
Luck = 0.05
_telluricResistance = 0.0
_aeolicResistance = 0.0
_hydricResistance = 0.0
_igneousResistance = 0.0
_ferrumResistance = 0.0
DropsSoulGemChance = 0.75
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"

View File

@@ -1,9 +1,12 @@
[gd_scene load_steps=8 format=3 uid="uid://2wibfnu2jvlv"] [gd_scene load_steps=11 format=3 uid="uid://2wibfnu2jvlv"]
[ext_resource type="Script" uid="uid://dveonnhcxcp08" path="res://src/enemy/BossTypeA.cs" id="1_x21p4"] [ext_resource type="Script" uid="uid://dveonnhcxcp08" path="res://src/enemy/BossTypeA.cs" id="1_x21p4"]
[ext_resource type="PackedScene" uid="uid://bid6f48l0q58o" path="res://src/enemy/enemy_types/14. horse_head/HorseFaceModelView.tscn" id="2_x21p4"] [ext_resource type="PackedScene" uid="uid://bid6f48l0q58o" path="res://src/enemy/enemy_types/14. horse_head/HorseFaceModelView.tscn" id="2_x21p4"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="3_wp4vi"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="3_wp4vi"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="4_fne8i"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="4_fne8i"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="5_dm428"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="6_fg0ds"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="7_exr8b"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_c0n4w"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_c0n4w"]
radius = 10.3283 radius = 10.3283
@@ -66,3 +69,28 @@ unique_name_in_owner = true
avoidance_enabled = true avoidance_enabled = true
radius = 1.0 radius = 1.0
debug_enabled = true debug_enabled = true
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("5_dm428")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_fg0ds")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_exr8b")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=34 format=4 uid="uid://bid6f48l0q58o"] [gd_scene load_steps=36 format=4 uid="uid://bid6f48l0q58o"]
[ext_resource type="Script" uid="uid://ckv5dmrw6pvn6" path="res://src/enemy/EnemyModelView3D.cs" id="1_oxssn"] [ext_resource type="Script" uid="uid://ckv5dmrw6pvn6" path="res://src/enemy/EnemyModelView3D.cs" id="1_oxssn"]
[ext_resource type="Texture2D" uid="uid://2e4cp477ex0t" path="res://src/enemy/enemy_types/14. horse_head/animation/Horse Head 1_Metal054C_1K-JPG_Color.jpg" id="1_vv6g0"] [ext_resource type="Texture2D" uid="uid://2e4cp477ex0t" path="res://src/enemy/enemy_types/14. horse_head/animation/Horse Head 1_Metal054C_1K-JPG_Color.jpg" id="1_vv6g0"]
@@ -8,6 +8,8 @@
[ext_resource type="Texture2D" uid="uid://d3nsmrs41cpxs" path="res://src/enemy/enemy_types/14. horse_head/animation/Metal054C_1K-JPG_Metalness.jpg" id="4_58wyj"] [ext_resource type="Texture2D" uid="uid://d3nsmrs41cpxs" path="res://src/enemy/enemy_types/14. horse_head/animation/Metal054C_1K-JPG_Metalness.jpg" id="4_58wyj"]
[ext_resource type="Texture2D" uid="uid://dhk7u4r608cby" path="res://src/enemy/enemy_types/14. horse_head/animation/Metal054C_1K-JPG_NormalGL.jpg" id="5_qhoxi"] [ext_resource type="Texture2D" uid="uid://dhk7u4r608cby" path="res://src/enemy/enemy_types/14. horse_head/animation/Metal054C_1K-JPG_NormalGL.jpg" id="5_qhoxi"]
[ext_resource type="Texture2D" uid="uid://qp3uycxaljcs" path="res://src/enemy/enemy_types/14. horse_head/animation/Metal054C_1K-JPG_Roughness.jpg" id="6_lj3cb"] [ext_resource type="Texture2D" uid="uid://qp3uycxaljcs" path="res://src/enemy/enemy_types/14. horse_head/animation/Metal054C_1K-JPG_Roughness.jpg" id="6_lj3cb"]
[ext_resource type="AudioStream" uid="uid://d3poou6ultswg" path="res://src/audio/sfx/ENEMY_HorseFace_ATK1.ogg" id="8_b3lw2"]
[ext_resource type="AudioStream" uid="uid://scp3556fn8wo" path="res://src/audio/sfx/ENEMY_UNIVERSAL_GROUND_SLAM.ogg" id="9_58wyj"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tv6dm"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tv6dm"]
resource_name = "Material" resource_name = "Material"
@@ -646,6 +648,21 @@ tracks/32/path = NodePath("Armature/Skeleton3D:heelIK_R")
tracks/32/interp = 0 tracks/32/interp = 0
tracks/32/loop_wrap = true tracks/32/loop_wrap = true
tracks/32/keys = PackedFloat32Array(0, 1, -0.514417, -0.701671, 0.342235, 0.354835) tracks/32/keys = PackedFloat32Array(0, 1, -0.514417, -0.701671, 0.342235, 0.354835)
tracks/33/type = "audio"
tracks/33/imported = false
tracks/33/enabled = true
tracks/33/path = NodePath("Armature/Skeleton3D/BoneAttachment3D2/AttackSFX")
tracks/33/interp = 1
tracks/33/loop_wrap = true
tracks/33/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("8_b3lw2")
}],
"times": PackedFloat32Array(0)
}
tracks/33/use_blend = true
[sub_resource type="Animation" id="Animation_nem1a"] [sub_resource type="Animation" id="Animation_nem1a"]
resource_name = "secondary_attack" resource_name = "secondary_attack"
@@ -881,6 +898,21 @@ tracks/32/path = NodePath("Armature/Skeleton3D:heelIK_R")
tracks/32/interp = 1 tracks/32/interp = 1
tracks/32/loop_wrap = true tracks/32/loop_wrap = true
tracks/32/keys = PackedFloat32Array(0, 1, -0.514417, -0.701671, 0.342235, 0.354835, 0.0333333, 1, -0.516575, -0.696077, 0.34818, 0.356928, 0.0666667, 1, -0.521046, -0.683648, 0.361099, 0.361585, 0.1, 1, -0.526802, -0.665825, 0.378966, 0.368161, 0.133333, 1, -0.532831, -0.644142, 0.399731, 0.376016, 0.166667, 1, -0.538235, -0.620345, 0.421387, 0.384587, 0.2, 1, -0.541623, -0.598138, 0.440584, 0.393398, 0.233333, 1, -0.543484, -0.578544, 0.457025, 0.401298, 0.266667, 1, -0.544416, -0.56113, 0.47147, 0.407996, 0.3, 1, -0.544778, -0.545632, 0.484336, 0.413427, 0.333333, 1, -0.544721, -0.531989, 0.495718, 0.417767, 0.366667, 1, -0.544377, -0.520646, 0.505311, 0.421002, 0.4, 1, -0.543924, -0.510791, 0.513622, 0.423594, 0.433333, 1, -0.543459, -0.502293, 0.520716, 0.425687, 0.466667, 1, -0.543068, -0.495006, 0.52665, 0.427418, 0.5, 1, -0.542828, -0.488779, 0.531472, 0.428917, 0.533333, 1, -0.542927, -0.483649, 0.534893, 0.430352, 0.566667, 1, -0.543361, -0.479085, 0.537304, 0.431904, 0.6, 1, -0.544186, -0.474919, 0.538729, 0.433686, 0.633333, 1, -0.545455, -0.470982, 0.539193, 0.435806, 0.666667, 1, -0.547213, -0.467098, 0.538712, 0.438368, 0.7, 1, -0.549718, -0.46294, 0.537006, 0.441725, 0.733333, 1, -0.552835, -0.458304, 0.534392, 0.445821, 0.766667, 1, -0.556593, -0.453005, 0.530871, 0.450742, 0.8, 1, -0.561009, -0.446855, 0.526438, 0.456567, 0.833333, 1, -0.566094, -0.43966, 0.521083, 0.463367, 0.866667, 1, -0.574512, -0.428383, 0.511969, 0.473617, 0.9, 1, -0.580739, -0.420013, 0.504981, 0.480963, 0.933333, 1, -0.583481, -0.416308, 0.501836, 0.484146, 1.5, 1, -0.583481, -0.416308, 0.501836, 0.484147, 1.53333, 1, -0.586926, -0.412707, 0.504724, 0.480046, 1.56667, 1, -0.593849, -0.405313, 0.510547, 0.4716, 1.6, 1, -0.602537, -0.395719, 0.517887, 0.460596, 1.63333, 1, -0.611371, -0.385577, 0.525409, 0.44889, 1.66667, 1, -0.618875, -0.376627, 0.531899, 0.43844, 1.7, 1, -0.62194, -0.372867, 0.534831, 0.433723, 1.73333, 1, -0.621975, -0.376239, 0.534019, 0.431758, 1.76667, 1, -0.620122, -0.387062, 0.529695, 0.430181, 1.8, 1, -0.616869, -0.404941, 0.52204, 0.42775, 1.83333, 1, -0.61211, -0.428794, 0.511234, 0.424379, 1.86667, 1, -0.605462, -0.458552, 0.496893, 0.419813, 1.9, 1, -0.597286, -0.490892, 0.480276, 0.414256, 1.93333, 1, -0.587653, -0.524555, 0.461789, 0.407745, 2, 1, -0.564883, -0.591093, 0.421348, 0.392406, 2.03333, 1, -0.552901, -0.620859, 0.401387, 0.384349, 2.06667, 1, -0.54137, -0.646947, 0.382828, 0.376592, 2.1, 1, -0.530904, -0.668795, 0.366451, 0.36955, 2.13333, 1, -0.522132, -0.685942, 0.353021, 0.363646, 2.16667, 1, -0.515661, -0.697975, 0.34327, 0.359292, 2.2, 1, -0.513299, -0.702245, 0.339742, 0.357704, 2.20833, 1, -0.512705, -0.703308, 0.338857, 0.357304) tracks/32/keys = PackedFloat32Array(0, 1, -0.514417, -0.701671, 0.342235, 0.354835, 0.0333333, 1, -0.516575, -0.696077, 0.34818, 0.356928, 0.0666667, 1, -0.521046, -0.683648, 0.361099, 0.361585, 0.1, 1, -0.526802, -0.665825, 0.378966, 0.368161, 0.133333, 1, -0.532831, -0.644142, 0.399731, 0.376016, 0.166667, 1, -0.538235, -0.620345, 0.421387, 0.384587, 0.2, 1, -0.541623, -0.598138, 0.440584, 0.393398, 0.233333, 1, -0.543484, -0.578544, 0.457025, 0.401298, 0.266667, 1, -0.544416, -0.56113, 0.47147, 0.407996, 0.3, 1, -0.544778, -0.545632, 0.484336, 0.413427, 0.333333, 1, -0.544721, -0.531989, 0.495718, 0.417767, 0.366667, 1, -0.544377, -0.520646, 0.505311, 0.421002, 0.4, 1, -0.543924, -0.510791, 0.513622, 0.423594, 0.433333, 1, -0.543459, -0.502293, 0.520716, 0.425687, 0.466667, 1, -0.543068, -0.495006, 0.52665, 0.427418, 0.5, 1, -0.542828, -0.488779, 0.531472, 0.428917, 0.533333, 1, -0.542927, -0.483649, 0.534893, 0.430352, 0.566667, 1, -0.543361, -0.479085, 0.537304, 0.431904, 0.6, 1, -0.544186, -0.474919, 0.538729, 0.433686, 0.633333, 1, -0.545455, -0.470982, 0.539193, 0.435806, 0.666667, 1, -0.547213, -0.467098, 0.538712, 0.438368, 0.7, 1, -0.549718, -0.46294, 0.537006, 0.441725, 0.733333, 1, -0.552835, -0.458304, 0.534392, 0.445821, 0.766667, 1, -0.556593, -0.453005, 0.530871, 0.450742, 0.8, 1, -0.561009, -0.446855, 0.526438, 0.456567, 0.833333, 1, -0.566094, -0.43966, 0.521083, 0.463367, 0.866667, 1, -0.574512, -0.428383, 0.511969, 0.473617, 0.9, 1, -0.580739, -0.420013, 0.504981, 0.480963, 0.933333, 1, -0.583481, -0.416308, 0.501836, 0.484146, 1.5, 1, -0.583481, -0.416308, 0.501836, 0.484147, 1.53333, 1, -0.586926, -0.412707, 0.504724, 0.480046, 1.56667, 1, -0.593849, -0.405313, 0.510547, 0.4716, 1.6, 1, -0.602537, -0.395719, 0.517887, 0.460596, 1.63333, 1, -0.611371, -0.385577, 0.525409, 0.44889, 1.66667, 1, -0.618875, -0.376627, 0.531899, 0.43844, 1.7, 1, -0.62194, -0.372867, 0.534831, 0.433723, 1.73333, 1, -0.621975, -0.376239, 0.534019, 0.431758, 1.76667, 1, -0.620122, -0.387062, 0.529695, 0.430181, 1.8, 1, -0.616869, -0.404941, 0.52204, 0.42775, 1.83333, 1, -0.61211, -0.428794, 0.511234, 0.424379, 1.86667, 1, -0.605462, -0.458552, 0.496893, 0.419813, 1.9, 1, -0.597286, -0.490892, 0.480276, 0.414256, 1.93333, 1, -0.587653, -0.524555, 0.461789, 0.407745, 2, 1, -0.564883, -0.591093, 0.421348, 0.392406, 2.03333, 1, -0.552901, -0.620859, 0.401387, 0.384349, 2.06667, 1, -0.54137, -0.646947, 0.382828, 0.376592, 2.1, 1, -0.530904, -0.668795, 0.366451, 0.36955, 2.13333, 1, -0.522132, -0.685942, 0.353021, 0.363646, 2.16667, 1, -0.515661, -0.697975, 0.34327, 0.359292, 2.2, 1, -0.513299, -0.702245, 0.339742, 0.357704, 2.20833, 1, -0.512705, -0.703308, 0.338857, 0.357304)
tracks/33/type = "audio"
tracks/33/imported = false
tracks/33/enabled = true
tracks/33/path = NodePath("Armature/Skeleton3D/BoneAttachment3D2/AttackSFX")
tracks/33/interp = 1
tracks/33/loop_wrap = true
tracks/33/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("9_58wyj")
}],
"times": PackedFloat32Array(0.966667)
}
tracks/33/use_blend = true
[sub_resource type="AnimationLibrary" id="AnimationLibrary_h244y"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_h244y"]
_data = { _data = {
@@ -944,7 +976,7 @@ states/Walking/position = Vector2(652, -44)
states/attack_walk/node = SubResource("AnimationNodeAnimation_b3lw2") states/attack_walk/node = SubResource("AnimationNodeAnimation_b3lw2")
states/attack_walk/position = Vector2(912, 42) states/attack_walk/position = Vector2(912, 42)
transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_b3lw2"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_oxssn"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_58wyj"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_qhoxi"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_lj3cb"), "Secondary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_agk0q"), "Idle", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_rv3ka"), "Idle", "attack_walk", SubResource("AnimationNodeStateMachineTransition_xl8ei"), "attack_walk", "Idle", SubResource("AnimationNodeStateMachineTransition_n4ran")] transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_b3lw2"), "Idle", "Walking", SubResource("AnimationNodeStateMachineTransition_oxssn"), "Walking", "Idle", SubResource("AnimationNodeStateMachineTransition_58wyj"), "Idle", "Primary Attack", SubResource("AnimationNodeStateMachineTransition_qhoxi"), "Primary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_lj3cb"), "Secondary Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_agk0q"), "Idle", "Secondary Attack", SubResource("AnimationNodeStateMachineTransition_rv3ka"), "Idle", "attack_walk", SubResource("AnimationNodeStateMachineTransition_xl8ei"), "attack_walk", "Idle", SubResource("AnimationNodeStateMachineTransition_n4ran")]
graph_offset = Vector2(0, -109.963) graph_offset = Vector2(-31, 161.037)
[node name="EnemyModelView" type="Node3D"] [node name="EnemyModelView" type="Node3D"]
script = ExtResource("1_oxssn") script = ExtResource("1_oxssn")
@@ -956,7 +988,7 @@ bones/0/name = "spine1"
bones/0/parent = -1 bones/0/parent = -1
bones/0/rest = Transform3D(1.49012e-06, 0.00846654, -0.999964, 2.93367e-08, 0.999964, 0.00846654, 1, -4.23752e-08, 1.49012e-06, 0.000155807, -0.00105953, -2.01735) bones/0/rest = Transform3D(1.49012e-06, 0.00846654, -0.999964, 2.93367e-08, 0.999964, 0.00846654, 1, -4.23752e-08, 1.49012e-06, 0.000155807, -0.00105953, -2.01735)
bones/0/enabled = true bones/0/enabled = true
bones/0/position = Vector3(0.0996387, -0.364802, -1.53144) bones/0/position = Vector3(0.0996386, -0.279526, -1.53144)
bones/0/rotation = Quaternion(0.0256267, -0.805691, 0.0118477, 0.591662) bones/0/rotation = Quaternion(0.0256267, -0.805691, 0.0118477, 0.591662)
bones/0/scale = Vector3(1, 1, 1) bones/0/scale = Vector3(1, 1, 1)
bones/1/name = "spine0" bones/1/name = "spine0"
@@ -985,7 +1017,7 @@ bones/4/parent = 3
bones/4/rest = Transform3D(0.901905, -0.410135, 0.135488, 0.412416, 0.910915, 0.0120912, -0.128377, 0.0449723, 0.990705, 2.5332e-07, 0.990515, -7.07805e-08) bones/4/rest = Transform3D(0.901905, -0.410135, 0.135488, 0.412416, 0.910915, 0.0120912, -0.128377, 0.0449723, 0.990705, 2.5332e-07, 0.990515, -7.07805e-08)
bones/4/enabled = true bones/4/enabled = true
bones/4/position = Vector3(2.5332e-07, 0.990515, -7.07805e-08) bones/4/position = Vector3(2.5332e-07, 0.990515, -7.07805e-08)
bones/4/rotation = Quaternion(4.1386e-05, 0.0627896, 0.195289, 0.978734) bones/4/rotation = Quaternion(0.00787143, 0.0673259, 0.209846, 0.975382)
bones/4/scale = Vector3(1, 1, 1) bones/4/scale = Vector3(1, 1, 1)
bones/5/name = "neck4" bones/5/name = "neck4"
bones/5/parent = 4 bones/5/parent = 4
@@ -999,7 +1031,7 @@ bones/6/parent = 5
bones/6/rest = Transform3D(0.0598389, 0.98531, 0.15995, -0.975271, 0.0235553, 0.219755, 0.212759, -0.169144, 0.962353, 3.65078e-07, 1.40318, 0) bones/6/rest = Transform3D(0.0598389, 0.98531, 0.15995, -0.975271, 0.0235553, 0.219755, 0.212759, -0.169144, 0.962353, 3.65078e-07, 1.40318, 0)
bones/6/enabled = true bones/6/enabled = true
bones/6/position = Vector3(3.65078e-07, 1.40318, 0) bones/6/position = Vector3(3.65078e-07, 1.40318, 0)
bones/6/rotation = Quaternion(-0.334434, 0.0512942, -0.470392, 0.815018) bones/6/rotation = Quaternion(-0.343022, 0.0521047, -0.494747, 0.796772)
bones/6/scale = Vector3(1, 1, 1) bones/6/scale = Vector3(1, 1, 1)
bones/7/name = "Bone.007" bones/7/name = "Bone.007"
bones/7/parent = 6 bones/7/parent = 6
@@ -1034,7 +1066,7 @@ bones/11/parent = 1
bones/11/rest = Transform3D(0.981457, 0.0769315, -0.175568, 0.18837, -0.217537, 0.957703, 0.035485, -0.973015, -0.227995, -1.09896e-07, 3.84743, -2.10479e-07) bones/11/rest = Transform3D(0.981457, 0.0769315, -0.175568, 0.18837, -0.217537, 0.957703, 0.035485, -0.973015, -0.227995, -1.09896e-07, 3.84743, -2.10479e-07)
bones/11/enabled = true bones/11/enabled = true
bones/11/position = Vector3(-1.09896e-07, 3.84743, -2.10479e-07) bones/11/position = Vector3(-1.09896e-07, 3.84743, -2.10479e-07)
bones/11/rotation = Quaternion(-0.810729, -0.0883641, -0.0236887, 0.578229) bones/11/rotation = Quaternion(-0.806075, -0.07973, -0.0234888, 0.585948)
bones/11/scale = Vector3(1, 1, 1) bones/11/scale = Vector3(1, 1, 1)
bones/12/name = "arm2_L" bones/12/name = "arm2_L"
bones/12/parent = 11 bones/12/parent = 11
@@ -1061,7 +1093,7 @@ bones/15/name = "arm1_R"
bones/15/parent = 1 bones/15/parent = 1
bones/15/rest = Transform3D(-0.98213, 0.0512573, -0.181089, -0.187541, -0.185921, 0.964501, 0.0157694, 0.981227, 0.192212, 0.00107862, 3.8461, -0.0821097) bones/15/rest = Transform3D(-0.98213, 0.0512573, -0.181089, -0.187541, -0.185921, 0.964501, 0.0157694, 0.981227, 0.192212, 0.00107862, 3.8461, -0.0821097)
bones/15/enabled = true bones/15/enabled = true
bones/15/position = Vector3(-0.183961, 3.50758, 0.102613) bones/15/position = Vector3(-0.202609, 3.65099, 0.0754982)
bones/15/rotation = Quaternion(-0.502686, 0.531044, 0.680821, -0.0422068) bones/15/rotation = Quaternion(-0.502686, 0.531044, 0.680821, -0.0422068)
bones/15/scale = Vector3(1, 1, 1) bones/15/scale = Vector3(1, 1, 1)
bones/16/name = "arm2_R" bones/16/name = "arm2_R"
@@ -1076,7 +1108,7 @@ bones/17/parent = 16
bones/17/rest = Transform3D(0.998789, 0.0488077, -0.00615137, -0.0491113, 0.996528, -0.0672226, 0.00284903, 0.0674433, 0.997719, -5.21541e-08, 3.04263, -1.31503e-06) bones/17/rest = Transform3D(0.998789, 0.0488077, -0.00615137, -0.0491113, 0.996528, -0.0672226, 0.00284903, 0.0674433, 0.997719, -5.21541e-08, 3.04263, -1.31503e-06)
bones/17/enabled = true bones/17/enabled = true
bones/17/position = Vector3(-5.21541e-08, 3.04263, -1.31503e-06) bones/17/position = Vector3(-5.21541e-08, 3.04263, -1.31503e-06)
bones/17/rotation = Quaternion(-0.0249682, 0.0966464, 0.272252, 0.957034) bones/17/rotation = Quaternion(-0.0459497, 0.097357, 0.264908, 0.958245)
bones/17/scale = Vector3(1, 1, 1) bones/17/scale = Vector3(1, 1, 1)
bones/18/name = "hand_R" bones/18/name = "hand_R"
bones/18/parent = 17 bones/18/parent = 17
@@ -1089,7 +1121,7 @@ bones/19/name = "hip_L"
bones/19/parent = -1 bones/19/parent = -1
bones/19/rest = Transform3D(0.138486, 0.897208, 0.419333, -0.129033, -0.403458, 0.905854, 0.981923, -0.179556, 0.059896, 0.000155807, -0.00105953, -2.01735) bones/19/rest = Transform3D(0.138486, 0.897208, 0.419333, -0.129033, -0.403458, 0.905854, 0.981923, -0.179556, 0.059896, 0.000155807, -0.00105953, -2.01735)
bones/19/enabled = true bones/19/enabled = true
bones/19/position = Vector3(0.147751, -0.331617, -1.49267) bones/19/position = Vector3(0.147751, -0.282267, -1.49267)
bones/19/rotation = Quaternion(0.427793, 0.34021, 0.687061, -0.478745) bones/19/rotation = Quaternion(0.427793, 0.34021, 0.687061, -0.478745)
bones/19/scale = Vector3(1, 1, 1) bones/19/scale = Vector3(1, 1, 1)
bones/20/name = "leg1_L" bones/20/name = "leg1_L"
@@ -1097,14 +1129,14 @@ bones/20/parent = 19
bones/20/rest = Transform3D(0.945603, 0.113405, 0.304916, -0.324072, 0.410457, 0.852351, -0.0284943, -0.9048, 0.424881, 2.08616e-07, 2.00996, -7.1153e-07) bones/20/rest = Transform3D(0.945603, 0.113405, 0.304916, -0.324072, 0.410457, 0.852351, -0.0284943, -0.9048, 0.424881, 2.08616e-07, 2.00996, -7.1153e-07)
bones/20/enabled = true bones/20/enabled = true
bones/20/position = Vector3(2.08616e-07, 2.00996, -7.1153e-07) bones/20/position = Vector3(2.08616e-07, 2.00996, -7.1153e-07)
bones/20/rotation = Quaternion(-0.435321, -0.328349, -0.373164, 0.75062) bones/20/rotation = Quaternion(-0.437808, -0.325257, -0.369348, 0.752405)
bones/20/scale = Vector3(1, 1, 1) bones/20/scale = Vector3(1, 1, 1)
bones/21/name = "leg2_L" bones/21/name = "leg2_L"
bones/21/parent = 20 bones/21/parent = 20
bones/21/rest = Transform3D(0.990336, -0.138679, 0.00180777, 0.138628, 0.990193, 0.0173138, -0.00419111, -0.0168959, 0.999848, 5.96046e-08, 5.85994, -5.23403e-07) bones/21/rest = Transform3D(0.990336, -0.138679, 0.00180777, 0.138628, 0.990193, 0.0173138, -0.00419111, -0.0168959, 0.999848, 5.96046e-08, 5.85994, -5.23403e-07)
bones/21/enabled = true bones/21/enabled = true
bones/21/position = Vector3(5.96046e-08, 5.85994, -5.23403e-07) bones/21/position = Vector3(5.96046e-08, 5.85994, -5.23403e-07)
bones/21/rotation = Quaternion(-0.048608, 0.00188239, 0.388818, 0.92003) bones/21/rotation = Quaternion(-0.0475168, 0.00188995, 0.38009, 0.923726)
bones/21/scale = Vector3(1, 1, 1) bones/21/scale = Vector3(1, 1, 1)
bones/22/name = "foot1_L" bones/22/name = "foot1_L"
bones/22/parent = 21 bones/22/parent = 21
@@ -1138,7 +1170,7 @@ bones/26/name = "hip_R"
bones/26/parent = -1 bones/26/parent = -1
bones/26/rest = Transform3D(0.138486, -0.897208, -0.419333, 0.129033, -0.403458, 0.905854, -0.981923, -0.179556, 0.059896, -0.000155807, -0.00105953, -2.01735) bones/26/rest = Transform3D(0.138486, -0.897208, -0.419333, 0.129033, -0.403458, 0.905854, -0.981923, -0.179556, 0.059896, -0.000155807, -0.00105953, -2.01735)
bones/26/enabled = true bones/26/enabled = true
bones/26/position = Vector3(0.0289171, -0.331035, -1.59603) bones/26/position = Vector3(0.0289172, -0.298136, -1.59603)
bones/26/rotation = Quaternion(0.695067, -0.09936, -0.377924, -0.603475) bones/26/rotation = Quaternion(0.695067, -0.09936, -0.377924, -0.603475)
bones/26/scale = Vector3(1, 1, 1) bones/26/scale = Vector3(1, 1, 1)
bones/27/name = "leg1_R" bones/27/name = "leg1_R"
@@ -1146,14 +1178,14 @@ bones/27/parent = 26
bones/27/rest = Transform3D(0.945603, -0.113405, -0.304916, 0.324072, 0.410457, 0.852351, 0.0284943, -0.9048, 0.424881, -9.54606e-09, 2.00996, -3.52971e-07) bones/27/rest = Transform3D(0.945603, -0.113405, -0.304916, 0.324072, 0.410457, 0.852351, 0.0284943, -0.9048, 0.424881, -9.54606e-09, 2.00996, -3.52971e-07)
bones/27/enabled = true bones/27/enabled = true
bones/27/position = Vector3(-9.54606e-09, 2.00996, -3.52971e-07) bones/27/position = Vector3(-9.54606e-09, 2.00996, -3.52971e-07)
bones/27/rotation = Quaternion(-0.313748, 0.176775, 0.184174, 0.914545) bones/27/rotation = Quaternion(-0.317636, 0.174004, 0.183885, 0.913793)
bones/27/scale = Vector3(1, 1, 1) bones/27/scale = Vector3(1, 1, 1)
bones/28/name = "leg2_R" bones/28/name = "leg2_R"
bones/28/parent = 27 bones/28/parent = 27
bones/28/rest = Transform3D(0.990336, 0.138679, -0.00180777, -0.138628, 0.990193, 0.0173138, 0.00419111, -0.0168959, 0.999848, 4.51691e-08, 5.85994, -3.72529e-09) bones/28/rest = Transform3D(0.990336, 0.138679, -0.00180777, -0.138628, 0.990193, 0.0173138, 0.00419111, -0.0168959, 0.999848, 4.51691e-08, 5.85994, -3.72529e-09)
bones/28/enabled = true bones/28/enabled = true
bones/28/position = Vector3(4.51691e-08, 5.85994, -3.72529e-09) bones/28/position = Vector3(4.51691e-08, 5.85994, -3.72529e-09)
bones/28/rotation = Quaternion(-0.273992, 0.0201705, -0.178776, 0.944754) bones/28/rotation = Quaternion(-0.268021, 0.0202226, -0.17488, 0.947192)
bones/28/scale = Vector3(1, 1, 1) bones/28/scale = Vector3(1, 1, 1)
bones/29/name = "foot1_R" bones/29/name = "foot1_R"
bones/29/parent = 28 bones/29/parent = 28
@@ -1190,10 +1222,18 @@ mesh = SubResource("ArrayMesh_6e63x")
skin = SubResource("Skin_yvw71") skin = SubResource("Skin_yvw71")
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D"] [node name="BoneAttachment3D" type="BoneAttachment3D" parent="Armature/Skeleton3D"]
transform = Transform3D(-0.370164, -0.13327, -0.919357, -0.283733, -0.926146, 0.248495, -0.884576, 0.352835, 0.305013, -2.00357, 8.75024, 6.24756) transform = Transform3D(-0.370165, -0.13327, -0.919357, -0.258559, -0.935769, 0.239755, -0.892258, 0.326457, 0.311931, -2.00356, 8.78487, 6.14065)
bone_name = "TOP OF SKULL" bone_name = "TOP OF SKULL"
bone_idx = 8 bone_idx = 8
[node name="BoneAttachment3D2" type="BoneAttachment3D" parent="Armature/Skeleton3D"]
transform = Transform3D(0.960238, 0.142738, 0.239935, -0.230152, -0.0817476, 0.969715, 0.158029, -0.986379, -0.0456457, -2.41576, 1.74228, -8.89334)
bone_name = "hand_R"
bone_idx = 18
[node name="AttackSFX" type="AudioStreamPlayer3D" parent="Armature/Skeleton3D/BoneAttachment3D2"]
transform = Transform3D(0.960238, -0.2437, 0.136211, 0.14274, 0.00925007, -0.989717, 0.239934, 0.969807, 0.043668, -8.82601, 7.03556, -0.84675)
[node name="Hitbox" type="Area3D" parent="."] [node name="Hitbox" type="Area3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0)
@@ -1216,3 +1256,10 @@ unique_name_in_owner = true
root_node = NodePath("%AnimationTree/..") root_node = NodePath("%AnimationTree/..")
tree_root = SubResource("AnimationNodeStateMachine_q3bfl") tree_root = SubResource("AnimationNodeStateMachine_q3bfl")
anim_player = NodePath("../AnimationPlayer") anim_player = NodePath("../AnimationPlayer")
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
autoplay = true
bus = &"SFX"
[node name="Walk2" type="AudioStreamPlayer3D" parent="."]

View File

@@ -1,4 +1,7 @@
[gd_resource type="AnimationLibrary" load_steps=6 format=3 uid="uid://dn4501qsypsu"] [gd_resource type="AnimationLibrary" load_steps=8 format=3 uid="uid://dn4501qsypsu"]
[ext_resource type="AudioStream" uid="uid://dm0tcrjmu1a05" path="res://src/audio/sfx/enemy_boss1_step.ogg" id="1_5mwcl"]
[ext_resource type="AudioStream" uid="uid://cbx3k6qk0wakg" path="res://src/audio/sfx/enemy_oxface_stab.ogg" id="1_il05d"]
[sub_resource type="Animation" id="Animation_ttkyx"] [sub_resource type="Animation" id="Animation_ttkyx"]
length = 0.001 length = 0.001
@@ -594,6 +597,21 @@ tracks/40/keys = {
"update": 1, "update": 1,
"values": [true, false, true] "values": [true, false, true]
} }
tracks/41/type = "audio"
tracks/41/imported = false
tracks/41/enabled = true
tracks/41/path = NodePath("Armature/Skeleton3D/BoneAttachment3D2/AttackSFX")
tracks/41/interp = 1
tracks/41/loop_wrap = true
tracks/41/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("1_il05d")
}],
"times": PackedFloat32Array(0)
}
tracks/41/use_blend = true
[sub_resource type="Animation" id="Animation_fdnqs"] [sub_resource type="Animation" id="Animation_fdnqs"]
resource_name = "SHIELD BASH" resource_name = "SHIELD BASH"
@@ -1163,6 +1181,25 @@ tracks/39/path = NodePath("Armature/Skeleton3D:heelIK_R")
tracks/39/interp = 1 tracks/39/interp = 1
tracks/39/loop_wrap = true tracks/39/loop_wrap = true
tracks/39/keys = PackedFloat32Array(0, 1, -0.457231, -0.539389, 0.539388, 0.45723, 0.0666667, 1, -0.456471, -0.540172, 0.539706, 0.45669, 0.133333, 1, -0.455804, -0.540868, 0.539961, 0.456231, 0.4, 1, -0.454791, -0.542094, 0.539951, 0.455799, 0.466667, 1, -0.453821, -0.543027, 0.540487, 0.455019, 0.533333, 1, -0.452851, -0.543959, 0.541021, 0.454237, 0.6, 1, -0.451879, -0.544889, 0.541553, 0.453455, 0.766667, 1, -0.452732, -0.543999, 0.541254, 0.454029, 0.866667, 1, -0.453591, -0.543123, 0.540901, 0.454641, 0.966667, 1, -0.454449, -0.542246, 0.540547, 0.455252, 1.1, 1, -0.455592, -0.541075, 0.540073, 0.456065, 1.16667, 1, -0.456281, -0.540367, 0.539786, 0.456555) tracks/39/keys = PackedFloat32Array(0, 1, -0.457231, -0.539389, 0.539388, 0.45723, 0.0666667, 1, -0.456471, -0.540172, 0.539706, 0.45669, 0.133333, 1, -0.455804, -0.540868, 0.539961, 0.456231, 0.4, 1, -0.454791, -0.542094, 0.539951, 0.455799, 0.466667, 1, -0.453821, -0.543027, 0.540487, 0.455019, 0.533333, 1, -0.452851, -0.543959, 0.541021, 0.454237, 0.6, 1, -0.451879, -0.544889, 0.541553, 0.453455, 0.766667, 1, -0.452732, -0.543999, 0.541254, 0.454029, 0.866667, 1, -0.453591, -0.543123, 0.540901, 0.454641, 0.966667, 1, -0.454449, -0.542246, 0.540547, 0.455252, 1.1, 1, -0.455592, -0.541075, 0.540073, 0.456065, 1.16667, 1, -0.456281, -0.540367, 0.539786, 0.456555)
tracks/40/type = "audio"
tracks/40/imported = false
tracks/40/enabled = true
tracks/40/path = NodePath("Walk2")
tracks/40/interp = 1
tracks/40/loop_wrap = true
tracks/40/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("1_5mwcl")
}, {
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("1_5mwcl")
}],
"times": PackedFloat32Array(0.133333, 0.733333)
}
tracks/40/use_blend = true
[resource] [resource]
_data = { _data = {

View File

@@ -1,9 +1,12 @@
[gd_scene load_steps=8 format=3 uid="uid://6dnsw37d1uw4"] [gd_scene load_steps=11 format=3 uid="uid://6dnsw37d1uw4"]
[ext_resource type="Script" uid="uid://dveonnhcxcp08" path="res://src/enemy/BossTypeA.cs" id="1_v6b2s"] [ext_resource type="Script" uid="uid://dveonnhcxcp08" path="res://src/enemy/BossTypeA.cs" id="1_v6b2s"]
[ext_resource type="PackedScene" uid="uid://dnomfbym36ivg" path="res://src/enemy/enemy_types/15. ox_face/OxFaceModelView.tscn" id="2_v6b2s"] [ext_resource type="PackedScene" uid="uid://dnomfbym36ivg" path="res://src/enemy/enemy_types/15. ox_face/OxFaceModelView.tscn" id="2_v6b2s"]
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="3_ow3fn"] [ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="3_ow3fn"]
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="4_lwyi7"] [ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="4_lwyi7"]
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="5_7w7wv"]
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="6_v0b2d"]
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="7_14j2x"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7uhtm"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7uhtm"]
radius = 12.4931 radius = 12.4931
@@ -33,22 +36,49 @@ shape = SubResource("CapsuleShape3D_7uhtm")
unique_name_in_owner = true unique_name_in_owner = true
[node name="Skeleton3D" parent="EnemyModelView/Armature" index="0"] [node name="Skeleton3D" parent="EnemyModelView/Armature" index="0"]
bones/0/position = Vector3(-0.260254, -1.05135, -1.96786) bones/0/position = Vector3(-0.259419, -0.955989, -1.97429)
bones/6/rotation = Quaternion(-0.0474983, -0.294201, -0.744151, 0.597854) bones/0/rotation = Quaternion(0.0915277, -0.692111, -0.0341586, 0.715149)
bones/11/rotation = Quaternion(-0.779814, -0.0573517, 0.0816353, 0.61801) bones/1/rotation = Quaternion(0.0828172, 0.0642671, -0.39627, 0.91213)
bones/15/rotation = Quaternion(-0.21544, 0.745303, 0.613567, -0.147118) bones/2/rotation = Quaternion(-0.137837, 0.137086, 0.403643, 0.894025)
bones/3/rotation = Quaternion(-0.00338816, 0.00852271, 0.0152662, 0.999842)
bones/4/rotation = Quaternion(0.037164, 0.133882, 0.101977, 0.985036)
bones/5/rotation = Quaternion(-0.0397875, -0.0104688, 0.0235613, 0.998875)
bones/6/rotation = Quaternion(-0.0748623, -0.304184, -0.744777, 0.589215)
bones/7/rotation = Quaternion(0.0788712, -0.0306685, -0.220772, 0.971647)
bones/8/rotation = Quaternion(-0.127286, 0.0273856, -0.425308, 0.895635)
bones/9/rotation = Quaternion(-0.0931654, 0.0493592, -0.752794, 0.649757)
bones/10/rotation = Quaternion(0.0429966, 0.0102923, 0.363547, 0.930526)
bones/11/rotation = Quaternion(-0.785185, -0.062058, 0.0709016, 0.612051)
bones/12/rotation = Quaternion(-0.607818, -0.670503, -0.284916, 0.31592)
bones/13/rotation = Quaternion(-0.255941, 0.586097, -0.127235, 0.758153)
bones/14/rotation = Quaternion(-0.513517, -0.227335, -0.228787, 0.795157)
bones/15/rotation = Quaternion(-0.210241, 0.737203, 0.62235, -0.158151)
bones/16/rotation = Quaternion(-0.486067, -0.16412, -0.362283, 0.778174) bones/16/rotation = Quaternion(-0.486067, -0.16412, -0.362283, 0.778174)
bones/17/rotation = Quaternion(-0.0553629, -0.0361614, 0.62832, 0.77514) bones/17/rotation = Quaternion(-0.0553629, -0.0361614, 0.62832, 0.77514)
bones/19/position = Vector3(-0.379519, -1.19848, -1.72293) bones/18/rotation = Quaternion(-0.119289, 0.0998131, -0.0173011, 0.987678)
bones/19/rotation = Quaternion(0.627358, 0.293207, 0.545673, -0.471903) bones/19/position = Vector3(-0.302718, -1.12582, -1.97598)
bones/20/rotation = Quaternion(-0.327492, -0.423093, -0.300135, 0.789722) bones/19/rotation = Quaternion(0.611408, 0.312413, 0.571405, -0.449527)
bones/21/rotation = Quaternion(-0.0604877, 0.00129843, 0.48965, 0.869818) bones/20/rotation = Quaternion(-0.310858, -0.441522, -0.272557, 0.796328)
bones/26/position = Vector3(-0.0278308, -1.11395, -2.01914) bones/21/rotation = Quaternion(-0.0601548, 0.0013007, 0.486955, 0.871352)
bones/27/rotation = Quaternion(-0.202309, 0.424634, 0.137996, 0.871616) bones/22/rotation = Quaternion(0.156218, 0.0483037, -0.624744, 0.763516)
bones/28/rotation = Quaternion(-0.0627943, -0.00116438, -0.501344, 0.862966) bones/23/rotation = Quaternion(0.123936, -0.00678731, -0.347765, 0.92933)
bones/24/rotation = Quaternion(0.427621, 0.561851, 0.530083, 0.469549)
bones/25/position = Vector3(4.82744, -12.3397, 0.183847)
bones/25/rotation = Quaternion(-0.400051, 0.463947, -0.598439, 0.516317)
bones/26/position = Vector3(-0.253573, -1.11395, -2.0176)
bones/26/rotation = Quaternion(0.608697, -0.3155, -0.575514, -0.445793)
bones/27/rotation = Quaternion(-0.208223, 0.421365, 0.142238, 0.871128)
bones/28/rotation = Quaternion(-0.0641552, -0.00115561, -0.51221, 0.85646)
bones/29/rotation = Quaternion(0.150998, -0.0515735, 0.668372, 0.726511)
bones/31/position = Vector3(-7.29038, -6.72226, -0.133983)
bones/31/rotation = Quaternion(-0.453784, 0.542292, 0.542291, -0.453784)
bones/32/rotation = Quaternion(0.456756, 0.539878, -0.539587, -0.456893)
[node name="BoneAttachment3D" parent="EnemyModelView/Armature/Skeleton3D" index="0"] [node name="BoneAttachment3D" parent="EnemyModelView/Armature/Skeleton3D" index="0"]
transform = Transform3D(-0.266252, -0.0359368, -0.963233, -0.333724, -0.934064, 0.127095, -0.904288, 0.355294, 0.236703, -1.68946, 8.20239, 4.95677) transform = Transform3D(-0.297606, -0.084924, -0.950904, -0.328725, -0.926012, 0.185582, -0.896309, 0.367817, 0.247669, -1.66129, 8.31029, 4.94733)
[node name="BoneAttachment3D2" parent="EnemyModelView/Armature/Skeleton3D" index="2"]
transform = Transform3D(-0.0446689, 0.0287099, -0.998588, -0.0869986, -0.9959, -0.0247414, -0.995205, 0.0857716, 0.0469831, -6.16044, -1.31467, -0.144618)
[node name="Collision" type="Area3D" parent="."] [node name="Collision" type="Area3D" parent="."]
collision_layer = 2048 collision_layer = 2048
@@ -85,4 +115,29 @@ avoidance_enabled = true
radius = 1.0 radius = 1.0
debug_enabled = true debug_enabled = true
[node name="HitSounds" type="Node3D" parent="."]
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("5_7w7wv")
bus = &"SFX"
[node name="HitSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("6_v0b2d")
bus = &"SFX"
[node name="MorphSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
stream = ExtResource("7_14j2x")
bus = &"SFX"
[node name="DieSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[node name="AggroSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true
bus = &"SFX"
[editable path="EnemyModelView"] [editable path="EnemyModelView"]

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