From 8368a55d7cdeddabda3daada431e0234e193e03f Mon Sep 17 00:00:00 2001 From: Zenny Date: Sun, 10 Aug 2025 22:48:44 -0700 Subject: [PATCH] Add SFX to node and code --- Zennysoft.Game.Ma/src/audio/InGameAudio.cs | 257 ++++++--- Zennysoft.Game.Ma/src/audio/InGameAudio.tscn | 511 ++++++++++++++++-- Zennysoft.Game.Ma/src/game/Game.tscn | 28 +- .../src/map/dungeon/floors/Floor01.tscn | 179 ++---- .../rooms/Set A/03. Antechamber A.tscn | 21 +- .../dungeon/rooms/Set A/14. Ran's Room.tscn | 29 +- .../dungeon/rooms/Set A/18. Corridor A.tscn | 3 +- .../map/dungeon/textures/MinimapTexture.tres | 14 +- .../src/vfx/shaders/MinimapShader.gdshader | 28 + .../vfx/shaders/MinimapShader.gdshader.uid | 1 + .../src/vfx/shaders/n64_1.gdshader | 65 +++ .../src/vfx/shaders/n64_1.gdshader.uid | 1 + .../src/vfx/shaders/n64_2.gdshader | 82 +++ .../src/vfx/shaders/n64_2.gdshader.uid | 1 + 14 files changed, 916 insertions(+), 304 deletions(-) create mode 100644 Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader create mode 100644 Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader.uid create mode 100644 Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader create mode 100644 Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader.uid create mode 100644 Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader create mode 100644 Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader.uid diff --git a/Zennysoft.Game.Ma/src/audio/InGameAudio.cs b/Zennysoft.Game.Ma/src/audio/InGameAudio.cs index d131805b..fda1f778 100644 --- a/Zennysoft.Game.Ma/src/audio/InGameAudio.cs +++ b/Zennysoft.Game.Ma/src/audio/InGameAudio.cs @@ -33,25 +33,181 @@ public partial class InGameAudio : Node #endregion #region SFX Nodes - [Node] public IAudioStreamPlayer PlayerAttackSFX { get; set; } = default!; + #region System/UI + [Node] public IAudioStreamPlayer MoveThroughOptions { get; set; } = default!; + [Node] public IAudioStreamPlayer Textflow { get; set; } = default!; + [Node] public IAudioStreamPlayer Select { get; set; } = default!; + [Node] public IAudioStreamPlayer Cancel { get; set; } = default!; + [Node] public IAudioStreamPlayer Pause { get; set; } = default!; + #endregion + #region PlayerGeneral + [Node] public IAudioStreamPlayer Equip { get; set; } = default!; - [Node] public IAudioStreamPlayer PlayerAttackWallSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer Unequip { get; set; } = default!; - [Node] public IAudioStreamPlayer PlayerAttackEnemySFX { get; set; } = default!; + [Node] public IAudioStreamPlayer GainHealth { get; set; } = default!; - [Node] public IAudioStreamPlayer MenuScrollSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer GainHealthLarge { get; set; } = default!; - [Node] public IAudioStreamPlayer EquipSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer GainVT { get; set; } = default!; - [Node] public IAudioStreamPlayer UnequipSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer GainVTLarge { get; set; } = default!; - [Node] public IAudioStreamPlayer MenuBackSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer TakeCriticalDamage { get; set; } = default!; - [Node] public IAudioStreamPlayer InventorySortedSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer TakeDamage { get; set; } = default!; - [Node] public IAudioStreamPlayer HealingItemSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer Buff { get; set; } = default!; - [Node] public IAudioStreamPlayer TeleportSFX { get; set; } = default!; + [Node] public IAudioStreamPlayer Debuff { get; set; } = default!; + + [Node] public IAudioStreamPlayer StatusEnding { get; set; } = default!; + + [Node] public IAudioStreamPlayer WalkCycle { get; set; } = default!; + + [Node] public IAudioStreamPlayer PickUpItem { get; set; } = default!; + + [Node] public IAudioStreamPlayer LevelUp { get; set; } = default!; + + [Node] public IAudioStreamPlayer HitWall { get; set; } = default!; + + [Node] public IAudioStreamPlayer DealCriticalDamage { get; set; } = default!; + + [Node] public IAudioStreamPlayer PlayerDying { get; set; } = default!; + + [Node] public IAudioStreamPlayer AffinitySwitch { get; set; } = default!; + + [Node] public IAudioStreamPlayer ItemThrow { get; set; } = default!; + + [Node] public IAudioStreamPlayer ItemBreak { get; set; } = default!; + + [Node] public IAudioStreamPlayer WeaponSwingRegular { get; set; } = default!; + + [Node] public IAudioStreamPlayer WeaponSwingHeavy { get; set; } = default!; + + [Node] public IAudioStreamPlayer WeaponSwingFast { get; set; } = default!; + + [Node] public IAudioStreamPlayer WeaponStab { get; set; } = default!; + + #endregion + #region Environment + [Node] public IAudioStreamPlayer StoneMoving { get; set; } = default!; + + [Node] public IAudioStreamPlayer FlameAmbient { get; set; } = default!; + + [Node] public IAudioStreamPlayer ItemTransfer { get; set; } = default!; + #endregion + #region Enemy + [Node] public IAudioStreamPlayer AgniAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer AgniAmbient { get; set; } = default!; + [Node] public IAudioStreamPlayer AmbassadorAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer AmbassadorAttack2 { get; set; } = default!; + [Node] public IAudioStreamPlayer AmbassadorAttackAlert { get; set; } = default!; + [Node] public IAudioStreamPlayer AqueosAmbient { get; set; } = default!; + [Node] public IAudioStreamPlayer BallosMagicAttack { get; set; } = default!; + [Node] public IAudioStreamPlayer BallosSpikeAttack { get; set; } = default!; + [Node] public IAudioStreamPlayer BallosHover { get; set; } = default!; + [Node] public IAudioStreamPlayer ChariotAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer ChariotAttack2 { get; set; } = default!; + [Node] public IAudioStreamPlayer ChariotProjectile { get; set; } = default!; + [Node] public IAudioStreamPlayer ChariotDeath { get; set; } = default!; + [Node] public IAudioStreamPlayer ChintheTeleport { get; set; } = default!; + [Node] public IAudioStreamPlayer ChintheAttack { get; set; } = default!; + [Node] public IAudioStreamPlayer ChintheLand { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallOrb { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallOrbTravel { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallLaser { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallStatusEffector { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallPull { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallHolyElectric { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallFlamethrower { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallDeath { get; set; } = default!; + [Node] public IAudioStreamPlayer DemonWallSlam { get; set; } = default!; + + [Node] public IAudioStreamPlayer Boss1Death { get; set; } = default!; + [Node] public IAudioStreamPlayer EnemyDeathSoundSmall { get; set; } = default!; + [Node] public IAudioStreamPlayer EnemyDeathSounMedium { get; set; } = default!; + [Node] public IAudioStreamPlayer EnemyDeathSoundLarge { get; set; } = default!; + [Node] public IAudioStreamPlayer FilthEaterAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer FilthEaterAttack2 { get; set; } = default!; + [Node] public IAudioStreamPlayer FilthEaterAggro { get; set; } = default!; + + [Node] public IAudioStreamPlayer HorseHeadHowl { get; set; } = default!; + [Node] public IAudioStreamPlayer HorseHeadAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer HorseHeadAttack2 { get; set; } = default!; + + [Node] public IAudioStreamPlayer OxFaceAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer OxFaceAttack2 { get; set; } = default!; + [Node] public IAudioStreamPlayer OxFaceHowl { get; set; } = default!; + [Node] public IAudioStreamPlayer Boss1TakeDamage { get; set; } = default!; + + [Node] public IAudioStreamPlayer Boss1Step { get; set; } = default!; + + [Node] public IAudioStreamPlayer MichaelAttack { get; set; } = default!; + [Node] public IAudioStreamPlayer PalanquinAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer PalanquinAttack2 { get; set; } = default!; + [Node] public IAudioStreamPlayer PillarShoot { get; set; } = default!; + [Node] public IAudioStreamPlayer PillarProjectileTravel { get; set; } = default!; + [Node] public IAudioStreamPlayer SaraAttack { get; set; } = default!; + [Node] public IAudioStreamPlayer SaraMagicAttack { get; set; } = default!; + + [Node] public IAudioStreamPlayer ShieldOfHeavenAttack1 { get; set; } = default!; + [Node] public IAudioStreamPlayer ShieldOfHeavenAttack2 { get; set; } = default!; + + [Node] public IAudioStreamPlayer ShieldOfHeavenAggro { get; set; } = default!; + [Node] public IAudioStreamPlayer ShieldOfHeavenDeath { get; set; } = default!; + + [Node] public IAudioStreamPlayer SproingDeath { get; set; } = default!; + + [Node] public IAudioStreamPlayer SproingAttack { get; set; } = default!; + + + #endregion + #region Item + [Node] public IAudioStreamPlayer SealingRod { get; set; } = default!; + [Node] public IAudioStreamPlayer TellericComponent { get; set; } = default!; + [Node] public IAudioStreamPlayer AeolicComponent { get; set; } = default!; + [Node] public IAudioStreamPlayer HydricComponent { get; set; } = default!; + [Node] public IAudioStreamPlayer IgneousComponent { get; set; } = default!; + [Node] public IAudioStreamPlayer FerrumComponent { get; set; } = default!; + [Node] public IAudioStreamPlayer GeomanticDiceUse { get; set; } = default!; + + [Node] public IAudioStreamPlayer IdentifyItem { get; set; } = default!; + + [Node] public IAudioStreamPlayer Perspective { get; set; } = default!; + + [Node] public IAudioStreamPlayer Caster { get; set; } = default!; + + [Node] public IAudioStreamPlayer DivinityRecall { get; set; } = default!; + + [Node] public IAudioStreamPlayer SineMorphization { get; set; } = default!; + + [Node] public IAudioStreamPlayer EnemyMorph { get; set; } = default!; + + [Node] public IAudioStreamPlayer DevicBalance { get; set; } = default!; + + [Node] public IAudioStreamPlayer Kyuuketsuki { get; set; } = default!; + + [Node] public IAudioStreamPlayer Persiko { get; set; } = default!; + + [Node] public IAudioStreamPlayer HeavensRebellion { get; set; } = default!; + + [Node] public IAudioStreamPlayer EntropicSeal { get; set; } = default!; + + [Node] public IAudioStreamPlayer Boost { get; set; } = default!; + #endregion + #region Ambience + [Node] public IAudioStreamPlayer FinalRoomAmbience { get; set; } = default!; + [Node] public IAudioStreamPlayer WaterLarge { get; set; } = default!; + [Node] public IAudioStreamPlayer Ocean { get; set; } = default!; + [Node] public IAudioStreamPlayer WindAltar { get; set; } = default!; + [Node] public IAudioStreamPlayer WindBalcony1 { get; set; } = default!; + [Node] public IAudioStreamPlayer WindBalcony2 { get; set; } = default!; + [Node] public IAudioStreamPlayer DungeonAmbience1 { get; set; } = default!; + [Node] public IAudioStreamPlayer DungeonAmbience2 { get; set; } = default!; + [Node] public IAudioStreamPlayer DungeonAmbience3 { get; set; } = default!; + [Node] public IAudioStreamPlayer DungeonAmbience4 { get; set; } = default!; + #endregion #endregion public IInGameAudioLogic InGameAudioLogic { get; set; } = default!; @@ -71,19 +227,19 @@ public partial class InGameAudio : Node InGameAudioBinding = InGameAudioLogic.Bind(); - InGameAudioBinding - .Handle((in InGameAudioLogic.Output.PlayOverworldMusic _) => StartOverworldMusic()) - .Handle((in InGameAudioLogic.Output.PlayDungeonThemeAMusic _) => StartDungeonThemeA()) - .Handle((in InGameAudioLogic.Output.PlayMenuScrollSound _) => PlayMenuScrollSound()) - .Handle((in InGameAudioLogic.Output.PlayEquipSound _) => PlayEquipSound()) - .Handle((in InGameAudioLogic.Output.PlayUnequipSound _) => PlayUnequipSound()) - .Handle((in InGameAudioLogic.Output.PlayMenuBackSound _) => PlayMenuBackSound()) - .Handle((in InGameAudioLogic.Output.PlayInventorySortedSound _) => PlayInventorySortedSound()) - .Handle((in InGameAudioLogic.Output.PlayHealingItemSound _) => PlayHealingItemSound()) - .Handle((in InGameAudioLogic.Output.PlayTeleportSound _) => PlayTeleportSound()) - .Handle((in InGameAudioLogic.Output.PlayPlayerAttackSound _) => { PlayerAttackSFX.Stop(); PlayerAttackSFX.Play(); }) - .Handle((in InGameAudioLogic.Output.PlayPlayerAttackWallSound _) => { PlayerAttackWallSFX.Stop(); PlayerAttackWallSFX.Play(); }) - .Handle((in InGameAudioLogic.Output.PlayPlayerAttackEnemySound _) => { PlayerAttackEnemySFX.Stop(); PlayerAttackEnemySFX.Play(); }); + //InGameAudioBinding + // .Handle((in InGameAudioLogic.Output.PlayOverworldMusic _) => StartOverworldMusic()) + // .Handle((in InGameAudioLogic.Output.PlayDungeonThemeAMusic _) => StartDungeonThemeA()) + // .Handle((in InGameAudioLogic.Output.PlayMenuScrollSound _) => PlayMenuScrollSound()) + // .Handle((in InGameAudioLogic.Output.PlayEquipSound _) => PlayEquipSound()) + // .Handle((in InGameAudioLogic.Output.PlayUnequipSound _) => PlayUnequipSound()) + // .Handle((in InGameAudioLogic.Output.PlayMenuBackSound _) => PlayMenuBackSound()) + // .Handle((in InGameAudioLogic.Output.PlayInventorySortedSound _) => PlayInventorySortedSound()) + // .Handle((in InGameAudioLogic.Output.PlayHealingItemSound _) => PlayHealingItemSound()) + // .Handle((in InGameAudioLogic.Output.PlayTeleportSound _) => PlayTeleportSound()) + // .Handle((in InGameAudioLogic.Output.PlayPlayerAttackSound _) => { PlayerAttackSFX.Stop(); PlayerAttackSFX.Play(); }) + // .Handle((in InGameAudioLogic.Output.PlayPlayerAttackWallSound _) => { PlayerAttackWallSFX.Stop(); PlayerAttackWallSFX.Play(); }) + // .Handle((in InGameAudioLogic.Output.PlayPlayerAttackEnemySound _) => { PlayerAttackEnemySFX.Stop(); PlayerAttackEnemySFX.Play(); }); InGameAudioLogic.Start(); } @@ -93,59 +249,4 @@ public partial class InGameAudio : Node InGameAudioLogic.Stop(); InGameAudioBinding.Dispose(); } - - private void StartOverworldMusic() - { - OverworldBgm.Stop(); - OverworldBgm.FadeIn(); - } - - private void StartDungeonThemeA() - { - OverworldBgm.FadeOut(); - DungeonThemeABgm.Stop(); - DungeonThemeABgm.FadeIn(); - } - - private void PlayMenuScrollSound() - { - MenuScrollSFX.Stop(); - MenuScrollSFX.Play(); - } - - private void PlayEquipSound() - { - EquipSFX.Stop(); - EquipSFX.Play(); - } - - private void PlayUnequipSound() - { - UnequipSFX.Stop(); - UnequipSFX.Play(); - } - - private void PlayMenuBackSound() - { - MenuBackSFX.Stop(); - MenuBackSFX.Play(); - } - - private void PlayInventorySortedSound() - { - InventorySortedSFX.Stop(); - InventorySortedSFX.Play(); - } - - private void PlayHealingItemSound() - { - HealingItemSFX.Stop(); - HealingItemSFX.Play(); - } - - private void PlayTeleportSound() - { - TeleportSFX.Stop(); - TeleportSFX.Play(); - } } diff --git a/Zennysoft.Game.Ma/src/audio/InGameAudio.tscn b/Zennysoft.Game.Ma/src/audio/InGameAudio.tscn index 8dd53c20..9a459898 100644 --- a/Zennysoft.Game.Ma/src/audio/InGameAudio.tscn +++ b/Zennysoft.Game.Ma/src/audio/InGameAudio.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=17 format=3 uid="uid://b16ejcwanod72"] +[gd_scene load_steps=12 format=3 uid="uid://b16ejcwanod72"] [ext_resource type="Script" uid="uid://2mnouyn1jcqs" path="res://src/audio/InGameAudio.cs" id="1_gpmcr"] [ext_resource type="AudioStream" uid="uid://dfu0fksb6slhx" path="res://src/audio/music/droney.mp3" id="2_8hfyr"] @@ -6,15 +6,10 @@ [ext_resource type="Script" uid="uid://d2usinntpmcry" path="res://src/audio/BGMPlayer.cs" id="3_wtvpb"] [ext_resource type="AudioStream" uid="uid://dn2e2hqujlia1" path="res://src/audio/music/tar-winds.mp3" id="4_surnl"] [ext_resource type="AudioStream" uid="uid://t3g04u722f2k" path="res://src/audio/music/useless immune system-1.mp3" id="6_agr3r"] -[ext_resource type="AudioStream" uid="uid://cn8cugshq3o8k" path="res://src/audio/sfx/PlayerHitWallSFX.wav" id="7_8vh2f"] [ext_resource type="AudioStream" uid="uid://dor0in0x2fg48" path="res://src/audio/sfx/MenuScrollSFX.ogg" id="7_777nl"] -[ext_resource type="AudioStream" uid="uid://d1mlduwauechv" path="res://src/audio/sfx/PlayerAttackSFX.wav" id="7_wtvpb"] [ext_resource type="AudioStream" uid="uid://r1tryiit38i8" path="res://src/audio/sfx/MenuBackSFX.ogg" id="8_1xcgo"] -[ext_resource type="AudioStream" uid="uid://4u8f1tpgs08b" path="res://src/audio/sfx/PlayerHitEnemySFX.wav" id="9_hertr"] [ext_resource type="AudioStream" uid="uid://myx4s8lmarc2" path="res://src/audio/sfx/HealSFX.ogg" id="10_3lcw5"] -[ext_resource type="AudioStream" uid="uid://dci08kmwsu6k1" path="res://src/audio/sfx/ExitSFX.ogg" id="11_offhc"] [ext_resource type="AudioStream" uid="uid://d0wd6xgjoadbc" path="res://src/audio/sfx/EquipSFX.wav" id="12_hertr"] -[ext_resource type="AudioStream" uid="uid://d3sn7c614uj2n" path="res://src/audio/sfx/SortSFX.ogg" id="12_wprjr"] [ext_resource type="AudioStream" uid="uid://f5agx4ewe04d" path="res://src/audio/sfx/UnequipSFX.wav" id="13_y7w0c"] [node name="InGameAudio" type="Node"] @@ -62,55 +57,497 @@ script = ExtResource("3_wtvpb") [node name="SFX" type="Node" parent="."] -[node name="PlayerAttackSFX" type="AudioStreamPlayer" parent="SFX"] -unique_name_in_owner = true -stream = ExtResource("7_wtvpb") -volume_db = -5.0 +[node name="System_UI" type="Node" parent="SFX"] -[node name="PlayerAttackWallSFX" type="AudioStreamPlayer" parent="SFX"] -unique_name_in_owner = true -stream = ExtResource("7_8vh2f") -volume_db = -5.0 - -[node name="PlayerAttackEnemySFX" type="AudioStreamPlayer" parent="SFX"] -unique_name_in_owner = true -stream = ExtResource("9_hertr") -volume_db = -5.0 - -[node name="MenuScrollSFX" type="AudioStreamPlayer" parent="SFX"] +[node name="MoveThroughOptions" type="AudioStreamPlayer" parent="SFX/System_UI"] unique_name_in_owner = true stream = ExtResource("7_777nl") volume_db = -10.0 -[node name="MenuBackSFX" type="AudioStreamPlayer" parent="SFX"] +[node name="Textflow" type="AudioStreamPlayer" parent="SFX/System_UI"] unique_name_in_owner = true stream = ExtResource("8_1xcgo") volume_db = -10.0 -[node name="EquipSFX" type="AudioStreamPlayer" parent="SFX"] +[node name="Select" type="AudioStreamPlayer" parent="SFX/System_UI"] +unique_name_in_owner = true +stream = ExtResource("8_1xcgo") +volume_db = -10.0 + +[node name="Cancel" type="AudioStreamPlayer" parent="SFX/System_UI"] +unique_name_in_owner = true +stream = ExtResource("8_1xcgo") +volume_db = -10.0 + +[node name="Pause" type="AudioStreamPlayer" parent="SFX/System_UI"] +unique_name_in_owner = true +stream = ExtResource("8_1xcgo") +volume_db = -10.0 + +[node name="PlayerGeneral" type="Node" parent="SFX"] + +[node name="Equip" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] unique_name_in_owner = true stream = ExtResource("12_hertr") -[node name="UnequipSFX" type="AudioStreamPlayer" parent="SFX"] +[node name="Unequip" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] unique_name_in_owner = true stream = ExtResource("13_y7w0c") -[node name="HealSFX" type="AudioStreamPlayer" parent="SFX"] +[node name="GainHealth" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] unique_name_in_owner = true stream = ExtResource("10_3lcw5") volume_db = -10.0 -[node name="TeleportSFX" type="AudioStreamPlayer" parent="SFX"] -unique_name_in_owner = true -stream = ExtResource("11_offhc") -volume_db = -18.0 - -[node name="InventorySortedSFX" type="AudioStreamPlayer" parent="SFX"] -unique_name_in_owner = true -stream = ExtResource("12_wprjr") -volume_db = -15.0 - -[node name="HealingItemSFX" type="AudioStreamPlayer" parent="SFX"] +[node name="GainHealthLarge" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] unique_name_in_owner = true stream = ExtResource("10_3lcw5") -volume_db = -15.0 +volume_db = -10.0 + +[node name="GainVT" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="GainVTLarge" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="TakeCriticalDamage" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="TakeDamage" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Buff" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Debuff" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="StatusEnding" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WalkCycle" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="PickUpItem" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="LevelUp" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="HitWall" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DealCriticalDamage" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="PlayerDying" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="AffinitySwitch" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ItemThrow" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ItemBreak" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WeaponSwingRegular" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WeaponSwingHeavy" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WeaponSwingFast" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WeaponStab" type="AudioStreamPlayer" parent="SFX/PlayerGeneral"] +unique_name_in_owner = true +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Environment" type="Node" parent="SFX"] + +[node name="StoneMoving" type="AudioStreamPlayer" parent="SFX/Environment"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="FlameAmbient" type="AudioStreamPlayer" parent="SFX/Environment"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ItemTransfer" type="AudioStreamPlayer" parent="SFX/Environment"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Enemy" type="Node" parent="SFX"] + +[node name="AgniAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="AgniAmbient" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="AmbassadorAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="AmbassadorAttack2" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="AmbassadorAlert" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="AqueosAmbient" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="BallosMagicAttack" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="BallosSpikeAttack" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="BallosHover" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ChariotAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ChariotAttack2" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ChariotProjectile" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ChariotDeath" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ChintheTeleport" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ChintheAttack" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ChintheLand" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallOrb" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallOrbTravel" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallLaser" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallStatusEffector" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallPull" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallHolyElectric" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallFlamethrower" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallDeath" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DemonWallSlam" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Boss1Death" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="EnemyDeathSoundSmall" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="EnemyDeathSoundMedium" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="EnemyDeathSoundLarge" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="FilthEaterAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="FilthEaterAttack2" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="FilthEaterAggro" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="HorseHeadHowl" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="HorseHeadAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="HorseHeadAttack2" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="OxFaceAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="OxFaceAttack2" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="OxFaceHowl" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Boss1TakeDamage" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Boss1Step" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="MichaelAttack" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="PalanquinAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="PalanquinAttack2" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="PillarShoot" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="PillarProjectileTravel" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="SaraAttack" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="SaraMagicAttack" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ShieldOfHeavenAttack1" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ShieldOfHeavenAttack2" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ShieldOfHeavenAggro" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="ShieldOfHeavenDeath" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="SproingDeath" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="SproingAttack" type="AudioStreamPlayer" parent="SFX/Enemy"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Item" type="Node" parent="SFX"] + +[node name="SealingRod" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="TellericComponent" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="AeolicComponent" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="HydricComponent" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="IgneousComponent" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="FerrumComponent" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="GeomanticDiceUse" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="IdentifyItem" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Perspective" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Caster" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DivinityRecall" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="SineMorphization" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="EnemyMorph" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DevicBalance" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Kyuuketsuki" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Persiko" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="HeavensRebellion" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="EntropicSeal" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Boost" type="AudioStreamPlayer" parent="SFX/Item"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Ambience" type="Node" parent="SFX"] + +[node name="FinalRoomAmbience" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WaterLarge" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="Ocean" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WindAltar" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WindBalcony1" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="WindBalcony2" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DungeonAmbience1" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DungeonAmbience2" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DungeonAmbience3" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 + +[node name="DungeonAmbience4" type="AudioStreamPlayer" parent="SFX/Ambience"] +stream = ExtResource("10_3lcw5") +volume_db = -10.0 diff --git a/Zennysoft.Game.Ma/src/game/Game.tscn b/Zennysoft.Game.Ma/src/game/Game.tscn index afcb59bc..3998fb02 100644 --- a/Zennysoft.Game.Ma/src/game/Game.tscn +++ b/Zennysoft.Game.Ma/src/game/Game.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=19 format=3 uid="uid://33ek675mfb5n"] +[gd_scene load_steps=23 format=3 uid="uid://33ek675mfb5n"] [ext_resource type="Script" uid="uid://chftlu4proh3d" path="res://src/game/Game.cs" id="1_ytcii"] [ext_resource type="Shader" uid="uid://dmjxo4k2rx1an" path="res://src/app/App.gdshader" id="2_6ifxs"] +[ext_resource type="Shader" uid="uid://d0gs1s20khrwv" path="res://src/vfx/shaders/n64_1.gdshader" id="3_2d5qb"] [ext_resource type="PackedScene" uid="uid://by67pn7fdsg1m" path="res://src/map/Map.tscn" id="3_d8awv"] [ext_resource type="PackedScene" uid="uid://cfecvvav8kkp6" path="res://src/player/Player.tscn" id="3_kk6ly"] +[ext_resource type="Shader" uid="uid://cqnxipgknqhru" path="res://src/vfx/shaders/n64_2.gdshader" id="4_k6vbj"] [ext_resource type="PackedScene" uid="uid://b1muxus5qdbeu" path="res://src/ui/in_game_ui/InGameUI.tscn" id="5_lxtnp"] [ext_resource type="PackedScene" uid="uid://b16ejcwanod72" path="res://src/audio/InGameAudio.tscn" id="6_qc71l"] [ext_resource type="Script" uid="uid://daphxl6vvsbjm" path="res://src/game/DialogueController.cs" id="10_58pbt"] @@ -23,6 +25,17 @@ shader_parameter/scale_resolution = false shader_parameter/target_resolution_scale = 4 shader_parameter/enable_recolor = false +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ywcj3"] +shader = ExtResource("3_2d5qb") +shader_parameter/dither_mode = 0 +shader_parameter/enable_dither = true +shader_parameter/random_dither_animate = true + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_t07yl"] +shader = ExtResource("4_k6vbj") +shader_parameter/enable_dither_filter = true +shader_parameter/enable_horizontal_blur = true + [sub_resource type="Animation" id="Animation_3st5l"] length = 0.001 tracks/0/type = "value" @@ -98,6 +111,19 @@ handle_input_locally = false size = Vector2i(1440, 1080) render_target_update_mode = 4 +[node name="BackBufferCopy" type="BackBufferCopy" parent="SubViewportContainer/SubViewport"] +material = SubResource("ShaderMaterial_ywcj3") +position = Vector2(959.5, 540) +scale = Vector2(9.605, 5.35) +copy_mode = 2 + +[node name="ColorRect" type="ColorRect" parent="SubViewportContainer/SubViewport/BackBufferCopy"] +material = SubResource("ShaderMaterial_t07yl") +offset_left = 99.0 +offset_top = 90.0 +offset_right = 2016.0 +offset_bottom = 1172.0 + [node name="PauseContainer" type="Node3D" parent="SubViewportContainer/SubViewport"] unique_name_in_owner = true process_mode = 1 diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn index bb9a167a..ffd3c255 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=55 format=4 uid="uid://bc1sp6xwe0j65"] +[gd_scene load_steps=54 format=4 uid="uid://bc1sp6xwe0j65"] [ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_0ecnn"] [ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_cxmwa"] [ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/rooms/Set A/03. Antechamber A.tscn" id="3_gkkr3"] [ext_resource type="PackedScene" uid="uid://dn5546yqyntfr" path="res://src/map/dungeon/rooms/Set A/10. Item Transfer Room.tscn" id="6_atq1f"] -[ext_resource type="Script" uid="uid://ce73fuh74l81l" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="8_1l8yt"] [ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/rooms/Set A/08. Basin Room.tscn" id="8_5rblf"] [ext_resource type="PackedScene" uid="uid://bs56ccgosmu47" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.tscn" id="9_atq1f"] [ext_resource type="Script" uid="uid://fk3jis6rsipv" path="res://src/map/dungeon/code/corridor.gd" id="9_lcc45"] @@ -626,222 +625,128 @@ corridor_cost_multiplier = 0.1 show_debug_in_editor = false hide_debug_visuals_for_all_generated_rooms = false -[node name="Antechamber A_0" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("3_gkkr3")] +[node name="Antechamber A_0" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("3_gkkr3")] transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, -14) -script = ExtResource("8_1l8yt") -size_in_voxels = Vector3i(5, 1, 4) -voxel_scale = Vector3(4, 4, 4) -min_count = 1 -max_count = 2 -[node name="Item Transfer Room_1" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("6_atq1f")] +[node name="Item Transfer Room_1" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("6_atq1f")] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -22, 0, 8) -script = ExtResource("8_1l8yt") -size_in_voxels = Vector3i(3, 1, 4) -voxel_scale = Vector3(4, 4, 4) -min_count = 1 -max_count = 1 -[node name="Floor Exit A_2" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("12_n02rw")] +[node name="Floor Exit A_2" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("12_n02rw")] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 30, 0, -18) -script = ExtResource("8_1l8yt") -size_in_voxels = Vector3i(5, 1, 9) -voxel_scale = Vector3(4, 4, 4) -min_count = 1 -max_count = 1 -[node name="BasinRoom_3" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("8_5rblf")] +[node name="BasinRoom_3" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("8_5rblf")] transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 16, 0, 10) -script = ExtResource("8_1l8yt") -size_in_voxels = Vector3i(5, 1, 4) -voxel_scale = Vector3(4, 4, 4) -min_count = 1 -max_count = 2 -[node name="Corridor_4" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_4" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -18) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_5" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_5" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -14) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_6" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_6" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -10) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_7" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_7" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -10) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_8" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_8" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -6) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_9" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_9" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -2) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_10" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_10" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, 2) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_11" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_11" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, 6) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_12" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_12" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, 10) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_13" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_13" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, 14) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_14" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_14" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, 18) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_15" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_15" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, 18) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_16" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_16" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, 18) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_17" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_17" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -10) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_18" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_18" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -14) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_19" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_19" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -18) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_20" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_20" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -22) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_21" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_21" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -26) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_22" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_22" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, -26) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_23" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_23" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -26) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_24" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_24" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -30) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_25" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_25" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -34) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_26" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_26" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -38) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_27" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_27" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -38) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_28" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_28" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, -38) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_29" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_29" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, -38) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_30" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_30" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -22) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_31" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_31" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -18) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_32" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_32" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -14) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_33" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_33" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -10) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_34" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_34" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -6) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_35" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_35" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -2) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_36" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_36" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, -2) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_37" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_37" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -2) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_38" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_38" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -2) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_39" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_39" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 2) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) -[node name="Corridor_40" type="Node3D" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +[node name="Corridor_40" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 6) -script = ExtResource("9_lcc45") -voxel_scale = Vector3(4, 4, 4) [node name="Corridor_41" type="Node3D" parent="NavigationRegion3D/DungeonGenerator"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 10) diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn index dfee5a3c..e480b9f0 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn @@ -24,7 +24,6 @@ [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3hnk1"] resource_name = "Material.041" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("3_isaec") texture_filter = 2 @@ -37,26 +36,22 @@ texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_srhh0"] resource_name = "Material.043" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("5_4tpx2") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0j5tl"] resource_name = "Material.045" -shading_mode = 1 albedo_texture = ExtResource("6_3qp86") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e3sbv"] resource_name = "Material.271" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("7_qkfun") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qftx6"] resource_name = "Material.286" -shading_mode = 1 albedo_texture = ExtResource("8_2ku5s") texture_filter = 2 @@ -209,7 +204,6 @@ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_e52k0") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1evlp"] -shading_mode = 1 [sub_resource type="ArrayMesh" id="ArrayMesh_fb770"] _surfaces = [{ @@ -244,7 +238,6 @@ shadow_mesh = SubResource("ArrayMesh_fb770") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7hp4f"] resource_name = "Material.066" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("9_in1qt") [sub_resource type="ArrayMesh" id="ArrayMesh_bwlbs"] @@ -323,48 +316,40 @@ shadow_mesh = SubResource("ArrayMesh_deqkc") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rym51"] resource_name = "Material.014" -shading_mode = 1 albedo_texture = ExtResource("10_samxx") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_axuq8"] resource_name = "Material.015" -shading_mode = 1 albedo_texture = ExtResource("6_3qp86") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fgian"] resource_name = "Material.016" -shading_mode = 1 albedo_texture = ExtResource("7_qkfun") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ww7p6"] resource_name = "Material.004" -shading_mode = 1 albedo_texture = ExtResource("6_3qp86") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i5eo7"] resource_name = "Material.018" -shading_mode = 1 albedo_texture = ExtResource("11_8vx4l") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ifqna"] resource_name = "Material.019" -shading_mode = 1 albedo_texture = ExtResource("6_3qp86") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a77mp"] resource_name = "Material.005" -shading_mode = 1 albedo_texture = ExtResource("12_4vvce") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cxi3y"] resource_name = "Material.022" -shading_mode = 1 albedo_texture = ExtResource("13_tv8gm") texture_filter = 2 @@ -373,12 +358,10 @@ resource_name = "Material.023" transparency = 2 alpha_scissor_threshold = 0.5 alpha_antialiasing_mode = 0 -shading_mode = 1 albedo_texture = ExtResource("14_1wlp7") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4v8kw"] resource_name = "Material.026" -shading_mode = 1 albedo_texture = ExtResource("15_rowg2") [sub_resource type="ArrayMesh" id="ArrayMesh_i3ffh"] @@ -629,7 +612,6 @@ data = PackedVector3Array(34.7912, -0.0011, 13.9165, 34.7912, 13.9165, 27.833, 3 data = PackedVector3Array(-1.0001, -1, 1, -1.0001, 1, -1, -1.0001, 1, 1, -1.0001, -1, 1, -1.0001, -1, -1, -1.0001, 1, -1, -1.0001, -1, -1, 1, 1, -1, -1.0001, 1, -1, -1.0001, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, 1, -1.0001, 1, 1, 1, 1, 1, 1, -1, 1, -1.0001, -1, 1, -1.0001, 1, 1, -1.0001, -1, -1, 1, -1, 1, 1, -1, -1, -1.0001, -1, -1, -1.0001, -1, 1, 1, -1, 1, 1, 1, -1, -1.0001, 1, 1, -1.0001, 1, -1, 1, 1, -1, 1, 1, 1, -1.0001, 1, 1, -10.917, -1, 1, -10.917, 1, -1, -10.917, 1, 1, -10.917, -1, 1, -10.917, -1, -1, -10.917, 1, -1, -10.917, -1, -1, -8.9171, 1, -1, -10.917, 1, -1, -10.917, -1, -1, -8.9171, -1, -1, -8.9171, 1, -1, -8.9171, -1, -1, -8.9171, 1, 1, -8.9171, 1, -1, -8.9171, -1, -1, -8.9171, -1, 1, -8.9171, 1, 1, -8.9171, -1, 1, -10.917, 1, 1, -8.9171, 1, 1, -8.9171, -1, 1, -10.917, -1, 1, -10.917, 1, 1, -10.917, -1, -1, -8.9171, -1, 1, -8.9171, -1, -1, -10.917, -1, -1, -10.917, -1, 1, -8.9171, -1, 1, -8.9171, 1, -1, -10.917, 1, 1, -10.917, 1, -1, -8.9171, 1, -1, -8.9171, 1, 1, -10.917, 1, 1, -10.917, -1, 8.4565, -10.917, 1, 6.4564, -10.917, 1, 8.4565, -10.917, -1, 8.4565, -10.917, -1, 6.4564, -10.917, 1, 6.4564, -10.917, -1, 6.4564, -8.9171, 1, 6.4564, -10.917, 1, 6.4564, -10.917, -1, 6.4564, -8.9171, -1, 6.4564, -8.9171, 1, 6.4564, -8.9171, -1, 6.4564, -8.9171, 1, 8.4565, -8.9171, 1, 6.4564, -8.9171, -1, 6.4564, -8.9171, -1, 8.4565, -8.9171, 1, 8.4565, -8.9171, -1, 8.4565, -10.917, 1, 8.4565, -8.9171, 1, 8.4565, -8.9171, -1, 8.4565, -10.917, -1, 8.4565, -10.917, 1, 8.4565, -10.917, -1, 6.4564, -8.9171, -1, 8.4565, -8.9171, -1, 6.4564, -10.917, -1, 6.4564, -10.917, -1, 8.4565, -8.9171, -1, 8.4565, -8.9171, 1, 6.4564, -10.917, 1, 8.4565, -10.917, 1, 6.4564, -8.9171, 1, 6.4564, -8.9171, 1, 8.4565, -10.917, 1, 8.4565, -1.0001, -1, 8.4565, -1.0001, 1, 6.4564, -1.0001, 1, 8.4565, -1.0001, -1, 8.4565, -1.0001, -1, 6.4564, -1.0001, 1, 6.4564, -1.0001, -1, 6.4564, 1, 1, 6.4564, -1.0001, 1, 6.4564, -1.0001, -1, 6.4564, 1, -1, 6.4564, 1, 1, 6.4564, 1, -1, 6.4564, 1, 1, 8.4565, 1, 1, 6.4564, 1, -1, 6.4564, 1, -1, 8.4565, 1, 1, 8.4565, 1, -1, 8.4565, -1.0001, 1, 8.4565, 1, 1, 8.4565, 1, -1, 8.4565, -1.0001, -1, 8.4565, -1.0001, 1, 8.4565, -1.0001, -1, 6.4564, 1, -1, 8.4565, 1, -1, 6.4564, -1.0001, -1, 6.4564, -1.0001, -1, 8.4565, 1, -1, 8.4565, 1, 1, 6.4564, -1.0001, 1, 8.4565, -1.0001, 1, 6.4564, 1, 1, 6.4564, 1, 1, 8.4565, -1.0001, 1, 8.4565) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e81mq"] -shading_mode = 1 albedo_texture = ExtResource("20_le1vp") texture_filter = 0 @@ -637,7 +619,6 @@ texture_filter = 0 albedo_texture = ExtResource("17_jig7d") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cnaww"] -shading_mode = 1 albedo_texture = ExtResource("17_jig7d") [sub_resource type="BoxShape3D" id="BoxShape3D_e81mq"] @@ -818,7 +799,7 @@ shape = SubResource("BoxShape3D_e81mq") [node name="Minimap" type="MeshInstance3D" parent="Minimap"] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.03602, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.0941, 0) visible = false layers = 2 mesh = SubResource("PlaneMesh_s0txx") diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn index 1a57b9f1..474f61eb 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn @@ -28,48 +28,40 @@ [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mfl8b"] resource_name = "Material.167" -shading_mode = 1 albedo_texture = ExtResource("3_dvdmk") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_utxrf"] resource_name = "Material.168" -shading_mode = 1 albedo_texture = ExtResource("4_xr0ya") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hrnb5"] resource_name = "Material.169" -shading_mode = 1 albedo_texture = ExtResource("5_xqhts") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s65gv"] resource_name = "Material.170" -shading_mode = 1 albedo_texture = ExtResource("4_xr0ya") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8m125"] resource_name = "Material.171" -shading_mode = 1 albedo_texture = ExtResource("6_ejt5t") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ofdga"] resource_name = "Material.172" -shading_mode = 1 albedo_texture = ExtResource("4_xr0ya") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nvou8"] resource_name = "Material.173" -shading_mode = 1 albedo_texture = ExtResource("7_m7te4") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xyotm"] resource_name = "Material.174" -shading_mode = 1 albedo_texture = ExtResource("8_rx4kw") texture_filter = 2 @@ -78,12 +70,10 @@ resource_name = "Material.175" transparency = 2 alpha_scissor_threshold = 0.5 alpha_antialiasing_mode = 0 -shading_mode = 1 albedo_texture = ExtResource("9_36bwq") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pfyg7"] resource_name = "Material.176" -shading_mode = 1 albedo_texture = ExtResource("10_scvv2") [sub_resource type="ArrayMesh" id="ArrayMesh_dhwls"] @@ -328,7 +318,6 @@ shadow_mesh = SubResource("ArrayMesh_dhwls") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jgck2"] resource_name = "Material.138" -shading_mode = 1 albedo_texture = ExtResource("11_ry0d8") [sub_resource type="ArrayMesh" id="ArrayMesh_oeu6u"] @@ -368,21 +357,18 @@ shadow_mesh = SubResource("ArrayMesh_oeu6u") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ddet5"] resource_name = "Material.008" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("12_a26qe") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p8g20"] resource_name = "Material.042" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("13_h5dbc") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_32e64"] resource_name = "Material.002" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("6_ejt5t") texture_filter = 2 @@ -469,7 +455,6 @@ shadow_mesh = SubResource("ArrayMesh_mb5ws") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qm5r5"] resource_name = "Material.340" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("14_ob58u") [sub_resource type="ArrayMesh" id="ArrayMesh_wr0du"] @@ -587,13 +572,11 @@ shadow_mesh = SubResource("ArrayMesh_lky2l") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3867c"] resource_name = "Material.001" transparency = 4 -shading_mode = 1 albedo_texture = ExtResource("15_p34cj") texture_filter = 2 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wy8vx"] resource_name = "Material.009" -shading_mode = 1 albedo_texture = ExtResource("3_dvdmk") [sub_resource type="ArrayMesh" id="ArrayMesh_dfvij"] @@ -654,7 +637,6 @@ shadow_mesh = SubResource("ArrayMesh_dfvij") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vfs08"] resource_name = "Material.017" -shading_mode = 1 albedo_texture = ExtResource("16_5p7is") [sub_resource type="ArrayMesh" id="ArrayMesh_u0gyj"] @@ -694,7 +676,6 @@ resource_name = "Material.007" transparency = 2 alpha_scissor_threshold = 0.5 alpha_antialiasing_mode = 0 -shading_mode = 1 albedo_texture = ExtResource("17_exjai") [sub_resource type="ArrayMesh" id="ArrayMesh_uxdi6"] @@ -731,7 +712,6 @@ shadow_mesh = SubResource("ArrayMesh_uxdi6") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_36x1w"] resource_name = "Material.249" -shading_mode = 1 albedo_color = Color(0.939213, 0.910197, 0.850957, 1) [sub_resource type="ArrayMesh" id="ArrayMesh_po8o0"] @@ -1330,17 +1310,14 @@ shadow_mesh = SubResource("ArrayMesh_w62e3") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8yimn"] resource_name = "Material" -shading_mode = 1 albedo_color = Color(0.271061, 0, 0.0059478, 1) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m0yuu"] resource_name = "Material.004" -shading_mode = 1 albedo_color = Color(0.643956, 0.590136, 0.484243, 1) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r30ig"] resource_name = "Material.005" -shading_mode = 1 albedo_texture = ExtResource("18_kb1j0") [sub_resource type="ArrayMesh" id="ArrayMesh_qpl5j"] @@ -1423,7 +1400,6 @@ shadow_mesh = SubResource("ArrayMesh_qpl5j") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qnyln"] resource_name = "Material.006" -shading_mode = 1 albedo_texture = ExtResource("19_phu6g") [sub_resource type="ArrayMesh" id="ArrayMesh_7gxrp"] @@ -1475,16 +1451,13 @@ height = 18.3783 radius = 5.48291 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_51rrf"] -shading_mode = 1 albedo_texture = ExtResource("21_hshrs") texture_filter = 0 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_alrge"] -shading_mode = 1 albedo_texture = ExtResource("22_gbtai") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x3ul8"] -shading_mode = 1 albedo_texture = ExtResource("22_gbtai") [sub_resource type="BoxShape3D" id="BoxShape3D_81jou"] @@ -1864,7 +1837,7 @@ material = SubResource("StandardMaterial3D_x3ul8") [node name="PlayerSpawn" type="Marker3D" parent="Spawn Points"] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.61757, -1.72347, 0.580412) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.33753, -1.72347, 0.580412) [node name="ItemSpawnPoints" type="Node3D" parent="Spawn Points"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn index 0d82c049..e693a81d 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn @@ -845,8 +845,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0586098, 0) [node name="Minimap" type="MeshInstance3D" parent="Minimap"] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.03602, 0) -visible = false +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.50431, 0) layers = 2 mesh = SubResource("PlaneMesh_adgr5") skeleton = NodePath("../..") diff --git a/Zennysoft.Game.Ma/src/map/dungeon/textures/MinimapTexture.tres b/Zennysoft.Game.Ma/src/map/dungeon/textures/MinimapTexture.tres index f770abed..b5d19af9 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/textures/MinimapTexture.tres +++ b/Zennysoft.Game.Ma/src/map/dungeon/textures/MinimapTexture.tres @@ -1,6 +1,18 @@ -[gd_resource type="StandardMaterial3D" format=3 uid="uid://bsafm3t4drpl"] +[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://bsafm3t4drpl"] + +[ext_resource type="Shader" uid="uid://dcx6kdi1s2ueh" path="res://src/vfx/shaders/MinimapShader.gdshader" id="1_51rab"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_51rab"] +render_priority = 0 +shader = ExtResource("1_51rab") +shader_parameter/border_thickness = 0.075 +shader_parameter/dot_spacing = 0.0 +shader_parameter/opacity = 1.0 +shader_parameter/line_color = Color(1, 1, 1, 1) +shader_parameter/rotation_speed = 0.0 [resource] +next_pass = SubResource("ShaderMaterial_51rab") transparency = 1 depth_draw_mode = 1 shading_mode = 0 diff --git a/Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader b/Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader new file mode 100644 index 00000000..464127af --- /dev/null +++ b/Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader @@ -0,0 +1,28 @@ +shader_type spatial; + +// Editable parameters in the inspector +uniform float border_thickness : hint_range(0.01, 0.1) = 0.05; +uniform float dot_spacing : hint_range(0.0, 100.0) = 10.0; +uniform float opacity : hint_range(0.0, 1.0) = 1.0; // Controls the opacity of lines +uniform vec3 line_color : source_color = vec3(1.0, 1.0, 1.0); // Color of the lines +uniform float rotation_speed : hint_range(0.0, 5.0) = 1.0; // Rotation speed + +void fragment() { + // Use the time to shift the lines clockwise + float time_offset = -TIME * rotation_speed; + + // Calculate edge distance with UV + float edge_dist = min(min(UV.x, 1.0 - UV.x), min(UV.y, 1.0 - UV.y)); + + // Apply the effect to the edges only + if (edge_dist < border_thickness) { + // Dotted pattern with a time shift to simulate rotation + float dotted_pattern = step(0.5, 0.5 + 0.5 * sin(dot_spacing * (UV.x + UV.y + time_offset))); + + // Apply colour and opacity to points + ALBEDO = line_color * dotted_pattern; + ALPHA = opacity * dotted_pattern; + } else { + discard; // Total transparency outside the edges + } +} diff --git a/Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader.uid b/Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader.uid new file mode 100644 index 00000000..a60632c2 --- /dev/null +++ b/Zennysoft.Game.Ma/src/vfx/shaders/MinimapShader.gdshader.uid @@ -0,0 +1 @@ +uid://dcx6kdi1s2ueh diff --git a/Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader b/Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader new file mode 100644 index 00000000..7b9c40ce --- /dev/null +++ b/Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader @@ -0,0 +1,65 @@ +shader_type canvas_item; + +/** 0 = Magic Matrix + * 1 = Bayer Matrix + * 2 = Random Threshold Dither + */ +uniform int dither_mode : hint_range(0, 2) = 0; +uniform bool enable_dither = true; +/** The random dither pattern can be animated over time + * or frozen if preferred + */ +uniform bool random_dither_animate = true; + +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, repeat_disable, filter_nearest; + +const vec4 magic_matrix[4] = vec4[]( + vec4(0.0, 0.857, 0.143, 1.0), + vec4(0.571, 0.286, 0.714, 0.429), + vec4(0.429, 0.714, 0.286, 0.571), + vec4(1.0, 0.143, 0.857, 0.0) +); + +const vec4 bayer_matrix[4] = vec4[]( + vec4(0.0, 0.571, 0.143, 0.714), + vec4(0.571, 0.0, 0.714, 0.143), + vec4(0.429, 1.0, 0.286, 0.857), + vec4(1.0, 0.429, 0.857, 0.286) +); + +vec3 random_noise_vec3(vec2 pos) { + float time_offset = random_dither_animate ? TIME : 0.0; + return vec3( + fract(sin(dot(pos, vec2(12.9898, 78.233)) + time_offset * 1.0) * 43758.5453), + fract(sin(dot(pos, vec2(4.898, 63.233)) + time_offset * 1.2) * 23421.3453), + fract(sin(dot(pos, vec2(9.298, 28.233)) + time_offset * 1.4) * 54325.5453) + ); +} + +vec3 apply_dithering(vec3 color, vec2 screen_pos) { + const float PALETTE_STEP = 8.0 / 255.0; + vec3 color_scaled = color * 255.0; + + if (dither_mode == 2) { + vec3 threshold = random_noise_vec3(screen_pos); + vec3 error = fract(color_scaled / 8.0); + return color + step(threshold, error) * PALETTE_STEP; + } + else { + float threshold = (dither_mode == 0) ? + magic_matrix[int(mod(screen_pos.y, 4.0))][int(mod(screen_pos.x, 4.0))] : + bayer_matrix[int(mod(screen_pos.y, 4.0))][int(mod(screen_pos.x, 4.0))]; + vec3 quantized = floor(color_scaled / 8.0) * 8.0; + vec3 can_dither = step(quantized, vec3(247.0)) * step(vec3(1.0), color_scaled); + return color + (step(threshold, fract(color_scaled / 8.0)) * PALETTE_STEP * can_dither); + } +} + +void fragment() { + vec3 color = texture(SCREEN_TEXTURE, SCREEN_UV).rgb; + if (enable_dither) { + color = apply_dithering(color, FRAGCOORD.xy); + } + color = clamp(color, 0.0, 248.0 / 255.0); + COLOR = vec4(floor(color * 255.0 / 8.0) * (8.0/255.0), 1.0); +} \ No newline at end of file diff --git a/Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader.uid b/Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader.uid new file mode 100644 index 00000000..4e0613af --- /dev/null +++ b/Zennysoft.Game.Ma/src/vfx/shaders/n64_1.gdshader.uid @@ -0,0 +1 @@ +uid://d0gs1s20khrwv diff --git a/Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader b/Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader new file mode 100644 index 00000000..bb092e04 --- /dev/null +++ b/Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader @@ -0,0 +1,82 @@ +shader_type canvas_item; + +uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; +uniform bool enable_dither_filter = true; +uniform bool enable_horizontal_blur = true; + +const vec3 LUMINANCE_VECTOR = vec3(0.299, 0.587, 0.114); +const float QUANTIZATION_FACTOR = 32.0; +const float COLOR_SCALE = 255.0; +const float INV_COLOR_SCALE = 1.0 / 255.0; +const float BLUR_MIX = 0.65; +const float BRIGHTNESS_FALLOFF = 0.5; +const float BRIGHTEN_FACTOR = 0.4; + +ivec3 quantize_color(vec3 color) { + return ivec3(clamp(color * QUANTIZATION_FACTOR - 0.0001, 0.0, 31.0)); +} + +vec3 get_restore_adjustment(ivec3 center_quantized, vec3 neighbor_color) { + return vec3(sign(quantize_color(neighbor_color) - center_quantized)); +} + +vec3 restore_filter(vec2 uv, vec2 pixel_size) { + vec3 center = texture(screen_texture, uv).rgb; + if (!enable_dither_filter) { + return center; + } + + vec2 offsets[8]; + offsets[0] = uv + vec2(-pixel_size.x, -pixel_size.y); + offsets[1] = uv + vec2( 0.0, -pixel_size.y); + offsets[2] = uv + vec2( pixel_size.x, -pixel_size.y); + offsets[3] = uv + vec2(-pixel_size.x, 0.0); + offsets[4] = uv + vec2( pixel_size.x, 0.0); + offsets[5] = uv + vec2(-pixel_size.x, pixel_size.y); + offsets[6] = uv + vec2( 0.0, pixel_size.y); + offsets[7] = uv + vec2( pixel_size.x, pixel_size.y); + + ivec3 center_quantized = quantize_color(center); + vec3 total_adjustment = vec3(0.0); + + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[0]).rgb); + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[1]).rgb); + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[2]).rgb); + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[3]).rgb); + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[4]).rgb); + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[5]).rgb); + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[6]).rgb); + total_adjustment += get_restore_adjustment(center_quantized, texture(screen_texture, offsets[7]).rgb); + + return (center * COLOR_SCALE + total_adjustment) * INV_COLOR_SCALE; +} + +vec3 apply_horizontal_blur(vec3 base_color, vec2 uv, vec2 pixel_size) { + if (!enable_horizontal_blur) { + return base_color; + } + + vec2 right_uv = uv + vec2(pixel_size.x, 0.0); + vec3 right_color = restore_filter(right_uv, pixel_size); + + float base_lum = dot(base_color, LUMINANCE_VECTOR); + float right_lum = dot(right_color, LUMINANCE_VECTOR); + + if (base_lum < right_lum) { + vec3 blur_target = mix(base_color, right_color, BLUR_MIX); + vec3 brighten = max(blur_target - base_color, vec3(0.0)); + return base_color + brighten * BRIGHTEN_FACTOR; // Stronger brightening + } else { + vec3 dark_smear = mix(base_color, right_color, BLUR_MIX); + return mix(dark_smear, base_color, BRIGHTNESS_FALLOFF); + } +} + +void fragment() { + vec2 pixel_size = 1.0 / vec2(textureSize(screen_texture, 0)); + + vec3 restored_color = restore_filter(SCREEN_UV, pixel_size); + vec3 final_color = apply_horizontal_blur(restored_color, SCREEN_UV, pixel_size); + + COLOR = vec4(final_color, 1.0); +} \ No newline at end of file diff --git a/Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader.uid b/Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader.uid new file mode 100644 index 00000000..62cd7864 --- /dev/null +++ b/Zennysoft.Game.Ma/src/vfx/shaders/n64_2.gdshader.uid @@ -0,0 +1 @@ +uid://cqnxipgknqhru