From 55c521db3a5328822074b4271718438d3d0bd3e8 Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 16 Sep 2024 01:05:15 -0700 Subject: [PATCH] Update items --- .../debug_visuals/WireframeColorMat.tres | 10 ++- src/enemy/Enemy.cs | 6 +- src/enemy/EnemyStatResource.cs | 3 + src/enemy/enemy_types/michael/Michael.tscn | 65 +++++++------- src/enemy/enemy_types/sproingy/Sproingy.tscn | 79 +++++++++--------- src/game/Game.cs | 8 ++ src/game/GameEventDepot.cs | 11 +-- src/items/PickupItem.gdshader | 16 ++++ src/items/armor/Armor.tscn | 2 +- src/items/armor/armor.png | Bin 2954 -> 0 bytes src/items/consumable/ConsumableItem.tscn | 2 +- .../consumable/resources/AmritShard.tres | 16 ++++ .../consumable/resources/PastSelfRemnant.tres | 16 ++++ .../consumable/resources/PastSelfSpirit.tres | 15 ++++ .../consumable/resources/SunaFragment.tres | 16 ++++ .../consumable/resources/YdunicShard.tres | 15 ++++ src/items/consumable/textures/amrit shard.PNG | Bin 0 -> 7271 bytes .../textures/amrit shard.PNG.import} | 15 ++-- .../consumable/textures/past self remnant.PNG | Bin 0 -> 7271 bytes .../textures/past self remnant.PNG.import | 34 ++++++++ .../consumable/textures/past self spirit.PNG | Bin 0 -> 8224 bytes .../textures/past self spirit.PNG.import | 34 ++++++++ .../consumable/textures/suna fragment.PNG | Bin 0 -> 7349 bytes .../textures/suna fragment.PNG.import | 34 ++++++++ .../consumable/textures/ydunic fragment.PNG | Bin 0 -> 6922 bytes .../textures/ydunic fragment.PNG.import | 34 ++++++++ src/items/throwable/ThrowableItem.tscn | 48 +---------- src/items/weapons/Weapon.tscn | 9 +- src/player/Player.cs | 8 ++ src/vfx/shaders/2DPostProcessing.gdshader | 72 ++++++++++++++++ src/vfx/shaders/PixelMelt.gdshader | 10 +-- src/vfx/shaders/PostProcessing.gdshader | 44 ++++++++++ 32 files changed, 480 insertions(+), 142 deletions(-) create mode 100644 src/items/PickupItem.gdshader delete mode 100644 src/items/armor/armor.png create mode 100644 src/items/consumable/resources/AmritShard.tres create mode 100644 src/items/consumable/resources/PastSelfRemnant.tres create mode 100644 src/items/consumable/resources/PastSelfSpirit.tres create mode 100644 src/items/consumable/resources/SunaFragment.tres create mode 100644 src/items/consumable/resources/YdunicShard.tres create mode 100644 src/items/consumable/textures/amrit shard.PNG rename src/items/{armor/armor.png.import => consumable/textures/amrit shard.PNG.import} (57%) create mode 100644 src/items/consumable/textures/past self remnant.PNG create mode 100644 src/items/consumable/textures/past self remnant.PNG.import create mode 100644 src/items/consumable/textures/past self spirit.PNG create mode 100644 src/items/consumable/textures/past self spirit.PNG.import create mode 100644 src/items/consumable/textures/suna fragment.PNG create mode 100644 src/items/consumable/textures/suna fragment.PNG.import create mode 100644 src/items/consumable/textures/ydunic fragment.PNG create mode 100644 src/items/consumable/textures/ydunic fragment.PNG.import create mode 100644 src/vfx/shaders/2DPostProcessing.gdshader create mode 100644 src/vfx/shaders/PostProcessing.gdshader diff --git a/addons/SimpleDungeons/debug_visuals/WireframeColorMat.tres b/addons/SimpleDungeons/debug_visuals/WireframeColorMat.tres index 9078f816..ffa3783e 100644 --- a/addons/SimpleDungeons/debug_visuals/WireframeColorMat.tres +++ b/addons/SimpleDungeons/debug_visuals/WireframeColorMat.tres @@ -1,4 +1,12 @@ -[gd_resource type="ShaderMaterial" format=3 uid="uid://pq2fqq4ophsy"] +[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://pq2fqq4ophsy"] + +[ext_resource type="Shader" path="res://src/items/PickupItem.gdshader" id="1_hcihy"] [resource] resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("1_hcihy") +shader_parameter/shine_color = Color(1, 1, 1, 1) +shader_parameter/cycle_interval = 1.0 +shader_parameter/shine_speed = 3.0 +shader_parameter/shine_width = 3.0 diff --git a/src/enemy/Enemy.cs b/src/enemy/Enemy.cs index 8dd8e3f8..c805fd69 100644 --- a/src/enemy/Enemy.cs +++ b/src/enemy/Enemy.cs @@ -103,10 +103,12 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide }) .Handle((in EnemyLogic.Output.Attack _) => { + AnimationPlayer.Stop(); AnimationPlayer.Play("attack"); }) .Handle((in EnemyLogic.Output.Defeated output) => { + AnimationPlayer.Stop(); AnimationPlayer.Play("defeated"); }); @@ -225,13 +227,15 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide if (newHP <= 0) { EnemyLogic.Input(new EnemyLogic.Input.EnemyDefeated()); - GameEventDepot.OnEnemyDefeated(EnemyStatResource); } } private void AnimationPlayer_AnimationFinished(StringName animName) { if (animName == "defeated") + { + GameEventDepot.OnEnemyDefeated(GlobalPosition, EnemyStatResource); QueueFree(); + } } } diff --git a/src/enemy/EnemyStatResource.cs b/src/enemy/EnemyStatResource.cs index 347611c3..0fc7420e 100644 --- a/src/enemy/EnemyStatResource.cs +++ b/src/enemy/EnemyStatResource.cs @@ -55,5 +55,8 @@ namespace GameJamDungeon [Export] public double FerrumDamageBonus { get; set; } + + [Export] + public float DropsSoulGemChance { get; set; } = 0.75f; } } diff --git a/src/enemy/enemy_types/michael/Michael.tscn b/src/enemy/enemy_types/michael/Michael.tscn index 0b41b48a..53e57b7c 100644 --- a/src/enemy/enemy_types/michael/Michael.tscn +++ b/src/enemy/enemy_types/michael/Michael.tscn @@ -95,6 +95,7 @@ AeolicDamageBonus = 0.0 BaseHydricDamageBonus = 0.0 IgneousDamageBonus = 0.0 FerrumDamageBonus = 0.0 +DropsSoulGemChance = 0.75 [sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"] height = 4.83757 @@ -104,7 +105,7 @@ radius = 1.0 size = Vector3(1, 0.564941, 1.14453) [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] -height = 1.0 +radius = 1.0 [sub_resource type="Animation" id="Animation_41ppy"] length = 0.001 @@ -219,6 +220,36 @@ tracks/1/keys = { "values": [-1.0, 1.0] } +[sub_resource type="Animation" id="Animation_ppbeh"] +resource_name = "idle_back_walk" +length = 1.91667 +loop_mode = 1 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Michael/Sprite/SubViewport/AnimatedSprite:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle_back_walk"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Michael/Sprite/SubViewport/AnimatedSprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667, 1.25, 1.33333, 1.41667, 1.5, 1.58333, 1.66667, 1.75, 1.83333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] +} + [sub_resource type="Animation" id="Animation_3dffb"] resource_name = "idle_front_walk" length = 1.91667 @@ -279,36 +310,6 @@ tracks/1/keys = { "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] } -[sub_resource type="Animation" id="Animation_ppbeh"] -resource_name = "idle_back_walk" -length = 1.91667 -loop_mode = 1 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Michael/Sprite/SubViewport/AnimatedSprite:animation") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [&"idle_back_walk"] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Michael/Sprite/SubViewport/AnimatedSprite:frame") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667, 1.25, 1.33333, 1.41667, 1.5, 1.58333, 1.66667, 1.75, 1.83333), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_346xs"] _data = { "RESET": SubResource("Animation_41ppy"), @@ -623,4 +624,4 @@ unique_name_in_owner = true material = ExtResource("4_01npl") position = Vector2(45, 45) sprite_frames = SubResource("SpriteFrames_8xwq0") -animation = &"idle_front_walk" +animation = &"idle_left_walk" diff --git a/src/enemy/enemy_types/sproingy/Sproingy.tscn b/src/enemy/enemy_types/sproingy/Sproingy.tscn index 09a6983c..cef44083 100644 --- a/src/enemy/enemy_types/sproingy/Sproingy.tscn +++ b/src/enemy/enemy_types/sproingy/Sproingy.tscn @@ -81,6 +81,7 @@ AeolicDamageBonus = 0.0 BaseHydricDamageBonus = 0.0 IgneousDamageBonus = 0.0 FerrumDamageBonus = 0.0 +DropsSoulGemChance = 0.9 [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] radius = 1.0 @@ -334,6 +335,35 @@ tracks/3/keys = { "values": [&"idle_left_walk"] } +[sub_resource type="Animation" id="Animation_ruc6s"] +resource_name = "attack" +length = 0.750008 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"attack"] +} + [sub_resource type="Animation" id="Animation_lkjbu"] resource_name = "defeated" length = 1.00001 @@ -392,9 +422,10 @@ tracks/1/keys = { "values": [0.0, 1.0] } -[sub_resource type="Animation" id="Animation_ruc6s"] -resource_name = "attack" -length = 0.750008 +[sub_resource type="Animation" id="Animation_1tda5"] +resource_name = "idle_back_walk" +length = 1.25001 +loop_mode = 1 step = 0.0833333 tracks/0/type = "value" tracks/0/imported = false @@ -403,10 +434,10 @@ tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] } tracks/1/type = "value" tracks/1/imported = false @@ -418,7 +449,7 @@ tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [&"attack"] +"values": [&"idle_back_walk"] } [sub_resource type="Animation" id="Animation_31nry"] @@ -481,36 +512,6 @@ tracks/1/keys = { "values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] } -[sub_resource type="Animation" id="Animation_1tda5"] -resource_name = "idle_back_walk" -length = 1.25001 -loop_mode = 1 -step = 0.0833333 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:frame") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666666, 0.75, 0.833333, 0.916666, 1, 1.08333, 1.16667), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite3D/SubViewport/AnimatedSprite:animation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [&"idle_back_walk"] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_6tj5r"] _data = { "RESET": SubResource("Animation_ch8ic"), @@ -557,7 +558,7 @@ autostart = true [node name="AttackTimer" type="Timer" parent="."] unique_name_in_owner = true -wait_time = 1.8 +wait_time = 0.8 autostart = true [node name="Hitbox" type="Area3D" parent="."] @@ -585,7 +586,9 @@ texture = SubResource("ViewportTexture_moptw") [node name="SubViewport" type="SubViewport" parent="Sprite3D"] disable_3d = true transparent_bg = true +handle_input_locally = false size = Vector2i(95, 95) +render_target_update_mode = 4 [node name="AnimatedSprite" type="AnimatedSprite2D" parent="Sprite3D/SubViewport"] unique_name_in_owner = true diff --git a/src/game/Game.cs b/src/game/Game.cs index 2f06eaf0..afa40227 100644 --- a/src/game/Game.cs +++ b/src/game/Game.cs @@ -5,6 +5,7 @@ using Chickensoft.AutoInject; using Chickensoft.GodotNodeInterfaces; using Chickensoft.Introspection; using Godot; +using System; public interface IGame : IProvide, IProvide, IProvide, INode3D { @@ -129,6 +130,13 @@ public partial class Game : Node3D, IGame Player.PauseButtonPressed += Player_PauseButtonPressed; GameRepo.PlayerData.Inventory.EquippedItem += Inventory_EquippedItem; + + GameEventDepot.EnemyDefeated += OnEnemyDefeated; + } + + private void OnEnemyDefeated(Vector3 vector, EnemyStatResource resource) + { + } private void Inventory_EquippedItem() diff --git a/src/game/GameEventDepot.cs b/src/game/GameEventDepot.cs index 4e925748..757ab600 100644 --- a/src/game/GameEventDepot.cs +++ b/src/game/GameEventDepot.cs @@ -1,4 +1,5 @@ -using System; +using Godot; +using System; namespace GameJamDungeon { @@ -37,8 +38,8 @@ namespace GameJamDungeon event Action? HealingItemConsumed; public void OnHealingItemConsumed(ConsumableItemStats item); - event Action? EnemyDefeated; - public void OnEnemyDefeated(EnemyStatResource enemyStatResource); + event Action? EnemyDefeated; + public void OnEnemyDefeated(Vector3 position, EnemyStatResource enemyStatResource); } public class GameEventDepot : IGameEventDepot @@ -57,7 +58,7 @@ namespace GameJamDungeon public event Action? UnequippedItem; public event Action? InventorySorted; public event Action? HealingItemConsumed; - public event Action? EnemyDefeated; + public event Action? EnemyDefeated; public void OnOverworldEntered() => OverworldEntered?.Invoke(); public void OnDungeonAThemeAreaEntered() => DungeonAThemeAreaEntered?.Invoke(); @@ -73,7 +74,7 @@ namespace GameJamDungeon public void OnInventorySorted() => InventorySorted?.Invoke(); public void OnHealingItemConsumed(ConsumableItemStats item) => HealingItemConsumed?.Invoke(item); - public void OnEnemyDefeated(EnemyStatResource enemyStatResource) => EnemyDefeated?.Invoke(enemyStatResource); + public void OnEnemyDefeated(Vector3 position, EnemyStatResource enemyStatResource) => EnemyDefeated?.Invoke(position, enemyStatResource); public void Dispose() { diff --git a/src/items/PickupItem.gdshader b/src/items/PickupItem.gdshader new file mode 100644 index 00000000..40257d24 --- /dev/null +++ b/src/items/PickupItem.gdshader @@ -0,0 +1,16 @@ +shader_type spatial; +render_mode unshaded, depth_draw_never; + +uniform vec4 shine_color : source_color = vec4( 1.0, 1.0, 1.0, 1.0 ); +uniform float cycle_interval : hint_range(0.5, 5.0) = 1.0; +uniform float shine_speed : hint_range(1.0, 5.0) = 3.0; +uniform float shine_width : hint_range(1.0, 100.0) = 3.0; + +void fragment( ) +{ + vec3 vertex = ( INV_VIEW_MATRIX * vec4( VERTEX, 1.0 ) ).xyz; + float width = shine_width * 0.001 * cycle_interval; + float frequency = floor( sin( vertex.z * cycle_interval + TIME * shine_speed * cycle_interval ) + width ); + ALBEDO = shine_color.rgb; + ALPHA = clamp( ( 1.0 - dot( NORMAL, VIEW ) ) * frequency * shine_color.a, 0.0, 1.0 ); +} \ No newline at end of file diff --git a/src/items/armor/Armor.tscn b/src/items/armor/Armor.tscn index d097d856..5f960176 100644 --- a/src/items/armor/Armor.tscn +++ b/src/items/armor/Armor.tscn @@ -16,7 +16,7 @@ collision_mask = 4 [node name="Sprite" type="Sprite3D" parent="Pickup"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0322805, 0) -pixel_size = 0.0003 +pixel_size = 0.0006 billboard = 2 double_sided = false alpha_cut = 1 diff --git a/src/items/armor/armor.png b/src/items/armor/armor.png deleted file mode 100644 index 76ad0b9b289a64d2ea9ec77ef603e9ee4febf8de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2954 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 Ar2qf` diff --git a/src/items/consumable/ConsumableItem.tscn b/src/items/consumable/ConsumableItem.tscn index 3975275b..3c12697b 100644 --- a/src/items/consumable/ConsumableItem.tscn +++ b/src/items/consumable/ConsumableItem.tscn @@ -28,7 +28,7 @@ collision_mask = 4 [node name="Sprite" type="Sprite3D" parent="Pickup"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0322805, 0) -pixel_size = 0.001 +pixel_size = 0.002 billboard = 2 double_sided = false alpha_cut = 1 diff --git a/src/items/consumable/resources/AmritShard.tres b/src/items/consumable/resources/AmritShard.tres new file mode 100644 index 00000000..34ef998f --- /dev/null +++ b/src/items/consumable/resources/AmritShard.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="ConsumableItemStats" load_steps=3 format=3 uid="uid://d0cxrf0nldona"] + +[ext_resource type="Texture2D" uid="uid://ttmu3vttq8yo" path="res://src/items/consumable/textures/amrit shard.PNG" id="1_f1n30"] +[ext_resource type="Script" path="res://src/items/consumable/ConsumableItemStats.cs" id="2_riwik"] + +[resource] +script = ExtResource("2_riwik") +HealHPAmount = 60 +RaiseHPAmount = 16 +HealVTAmount = 0 +RaiseVTAmount = 0 +Name = "Amrit Shard" +Description = "A droplet of the heavenly elixir, frozen in time. +Restores 60 HP. If HP full, raises MAX HP by 16." +Texture = ExtResource("1_f1n30") +SpawnRate = 0.5 diff --git a/src/items/consumable/resources/PastSelfRemnant.tres b/src/items/consumable/resources/PastSelfRemnant.tres new file mode 100644 index 00000000..5d533d93 --- /dev/null +++ b/src/items/consumable/resources/PastSelfRemnant.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="ConsumableItemStats" load_steps=3 format=3 uid="uid://dns281deffo6q"] + +[ext_resource type="Texture2D" uid="uid://bg47n2tmintm0" path="res://src/items/consumable/textures/past self remnant.PNG" id="1_rc8t1"] +[ext_resource type="Script" path="res://src/items/consumable/ConsumableItemStats.cs" id="2_e61q8"] + +[resource] +script = ExtResource("2_e61q8") +HealHPAmount = 30 +RaiseHPAmount = 8 +HealVTAmount = 0 +RaiseVTAmount = 0 +Name = "Ydunic Shard" +Description = "A fragment of the divine fruit, frozen in time. +Restores 30 HP. If HP full, raises MAX HP by 8." +Texture = ExtResource("1_rc8t1") +SpawnRate = 0.5 diff --git a/src/items/consumable/resources/PastSelfSpirit.tres b/src/items/consumable/resources/PastSelfSpirit.tres new file mode 100644 index 00000000..86806fcf --- /dev/null +++ b/src/items/consumable/resources/PastSelfSpirit.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" script_class="ConsumableItemStats" load_steps=3 format=3 uid="uid://bnec53frgyue8"] + +[ext_resource type="Texture2D" uid="uid://cj0x1u7rknrvy" path="res://src/items/consumable/textures/past self spirit.PNG" id="1_jx43p"] +[ext_resource type="Script" path="res://src/items/consumable/ConsumableItemStats.cs" id="2_wmtl1"] + +[resource] +script = ExtResource("2_wmtl1") +HealHPAmount = 0 +RaiseHPAmount = 0 +HealVTAmount = 1000 +RaiseVTAmount = 25 +Name = "Past Self's Spirit" +Description = "Restores all VT. If VT full, raises MAX VT by 20." +Texture = ExtResource("1_jx43p") +SpawnRate = 0.5 diff --git a/src/items/consumable/resources/SunaFragment.tres b/src/items/consumable/resources/SunaFragment.tres new file mode 100644 index 00000000..1f315c26 --- /dev/null +++ b/src/items/consumable/resources/SunaFragment.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="ConsumableItemStats" load_steps=3 format=3 uid="uid://ypw2yg10430p"] + +[ext_resource type="Texture2D" uid="uid://dbl5v5i1s3m2u" path="res://src/items/consumable/textures/stelo fragment.PNG" id="1_2qtta"] +[ext_resource type="Script" path="res://src/items/consumable/ConsumableItemStats.cs" id="2_41hue"] + +[resource] +script = ExtResource("2_41hue") +HealHPAmount = 0 +RaiseHPAmount = 0 +HealVTAmount = 60 +RaiseVTAmount = 20 +Name = "Suna Fragment" +Description = "A large gathered piece of the former heavens. +Restores 30 VT. If VT full, raises MAX VT by 10." +Texture = ExtResource("1_2qtta") +SpawnRate = 0.5 diff --git a/src/items/consumable/resources/YdunicShard.tres b/src/items/consumable/resources/YdunicShard.tres new file mode 100644 index 00000000..4bc13e73 --- /dev/null +++ b/src/items/consumable/resources/YdunicShard.tres @@ -0,0 +1,15 @@ +[gd_resource type="Resource" script_class="ConsumableItemStats" load_steps=3 format=3 uid="uid://lu0ddu3538p6"] + +[ext_resource type="Texture2D" uid="uid://dw06kkltgk3sv" path="res://src/items/consumable/textures/ydunic fragment.PNG" id="1_4llax"] +[ext_resource type="Script" path="res://src/items/consumable/ConsumableItemStats.cs" id="2_q4pyq"] + +[resource] +script = ExtResource("2_q4pyq") +HealHPAmount = 1000 +RaiseHPAmount = 25 +HealVTAmount = 0 +RaiseVTAmount = 0 +Name = "Ydunic Shard" +Description = "Restores all HP. If HP full, raises MAX HP by 8." +Texture = ExtResource("1_4llax") +SpawnRate = 0.5 diff --git a/src/items/consumable/textures/amrit shard.PNG b/src/items/consumable/textures/amrit shard.PNG new file mode 100644 index 0000000000000000000000000000000000000000..be54371fa4ff75d47d89f36ab25045643114dea0 GIT binary patch literal 7271 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 YHh%S@E7P3e2Sl`DX@KvU#Swe|2?O^gt^fc4 literal 0 HcmV?d00001 diff --git a/src/items/armor/armor.png.import b/src/items/consumable/textures/amrit shard.PNG.import similarity index 57% rename from src/items/armor/armor.png.import rename to src/items/consumable/textures/amrit shard.PNG.import index ac60b3ff..b9ea91ec 100644 --- a/src/items/armor/armor.png.import +++ b/src/items/consumable/textures/amrit shard.PNG.import @@ -2,27 +2,26 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cgoubcl86pib4" -path.s3tc="res://.godot/imported/armor.png-09542d6705cb16e2f3946b1b9613fb06.s3tc.ctex" +uid="uid://ttmu3vttq8yo" +path="res://.godot/imported/amrit shard.PNG-23a55a1bb7d06a5be7415aa697551420.ctex" metadata={ -"imported_formats": ["s3tc_bptc"], -"vram_texture": true +"vram_texture": false } [deps] -source_file="res://src/items/armor/armor.png" -dest_files=["res://.godot/imported/armor.png-09542d6705cb16e2f3946b1b9613fb06.s3tc.ctex"] +source_file="res://src/items/consumable/textures/amrit shard.PNG" +dest_files=["res://.godot/imported/amrit shard.PNG-23a55a1bb7d06a5be7415aa697551420.ctex"] [params] -compress/mode=2 +compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/src/items/consumable/textures/past self remnant.PNG b/src/items/consumable/textures/past self remnant.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a1470e0897dfc29bc7126e356c69b951e7b0fa1b GIT binary patch literal 7271 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 literal 0 HcmV?d00001 diff --git a/src/items/consumable/textures/past self remnant.PNG.import b/src/items/consumable/textures/past self remnant.PNG.import new file mode 100644 index 00000000..793226c8 --- /dev/null +++ b/src/items/consumable/textures/past self remnant.PNG.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bg47n2tmintm0" +path="res://.godot/imported/past self remnant.PNG-ea5a4a4ccf2107f35ad1f867c61e12ee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/items/consumable/textures/past self remnant.PNG" +dest_files=["res://.godot/imported/past self remnant.PNG-ea5a4a4ccf2107f35ad1f867c61e12ee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/src/items/consumable/textures/past self spirit.PNG b/src/items/consumable/textures/past self spirit.PNG new file mode 100644 index 0000000000000000000000000000000000000000..4d648225dec9316b4081622238fc66bda559f7b5 GIT binary patch literal 8224 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 KSd;JUd-UJG5F>H` literal 0 HcmV?d00001 diff --git a/src/items/consumable/textures/past self spirit.PNG.import b/src/items/consumable/textures/past self spirit.PNG.import new file mode 100644 index 00000000..b4ea7be4 --- /dev/null +++ b/src/items/consumable/textures/past self spirit.PNG.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cj0x1u7rknrvy" +path="res://.godot/imported/past self spirit.PNG-75c61955a4c45cf77c3086abe5fb7c7f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/items/consumable/textures/past self spirit.PNG" +dest_files=["res://.godot/imported/past self spirit.PNG-75c61955a4c45cf77c3086abe5fb7c7f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/src/items/consumable/textures/suna fragment.PNG b/src/items/consumable/textures/suna fragment.PNG new file mode 100644 index 0000000000000000000000000000000000000000..caba7e26f6236f427007756204f8d761dc498373 GIT binary patch literal 7349 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 literal 0 HcmV?d00001 diff --git a/src/items/consumable/textures/ydunic fragment.PNG.import b/src/items/consumable/textures/ydunic fragment.PNG.import new file mode 100644 index 00000000..e069745a --- /dev/null +++ b/src/items/consumable/textures/ydunic fragment.PNG.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dw06kkltgk3sv" +path="res://.godot/imported/ydunic fragment.PNG-fc040e7fba1c332c8770eb9e76f5206b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/items/consumable/textures/ydunic fragment.PNG" +dest_files=["res://.godot/imported/ydunic fragment.PNG-fc040e7fba1c332c8770eb9e76f5206b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/src/items/throwable/ThrowableItem.tscn b/src/items/throwable/ThrowableItem.tscn index 60ef7869..e00444b2 100644 --- a/src/items/throwable/ThrowableItem.tscn +++ b/src/items/throwable/ThrowableItem.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://1fl6s352e2ej"] +[gd_scene load_steps=6 format=3 uid="uid://1fl6s352e2ej"] [ext_resource type="Script" path="res://src/items/throwable/ThrowableItem.cs" id="1_nac2l"] [ext_resource type="Resource" uid="uid://bph8c6by4s047" path="res://src/items/throwable/resources/GeomanticDice.tres" id="2_pefeg"] @@ -10,57 +10,19 @@ size = Vector3(0.371643, 0.289612, 0.286743) [sub_resource type="BoxShape3D" id="BoxShape3D_03cqg"] size = Vector3(0.778381, 0.929947, 0.731567) -[sub_resource type="Animation" id="Animation_d22ed"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Hitbox:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 1, 0)] -} - -[sub_resource type="Animation" id="Animation_7gvmx"] -resource_name = "throw" -length = 2.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Hitbox:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 2), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Vector3(0, 1, 0), Vector3(0, 1, -15)] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_qfght"] -_data = { -"RESET": SubResource("Animation_d22ed"), -"throw": SubResource("Animation_7gvmx") -} - [node name="ThrowableItem" type="Node3D"] script = ExtResource("1_nac2l") ThrowableItemInfo = ExtResource("2_pefeg") [node name="Hitbox" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) collision_layer = 16 collision_mask = 16 script = ExtResource("3_qpunu") [node name="Sprite" type="Sprite3D" parent="Hitbox"] unique_name_in_owner = true -pixel_size = 0.0005 +pixel_size = 0.001 billboard = 2 [node name="CollisionShape3D" type="CollisionShape3D" parent="Hitbox"] @@ -74,9 +36,3 @@ collision_mask = 4 [node name="CollisionShape3D" type="CollisionShape3D" parent="Hitbox/Pickup"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0600509, 0.26725, 0.180481) shape = SubResource("BoxShape3D_03cqg") - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -unique_name_in_owner = true -libraries = { -"": SubResource("AnimationLibrary_qfght") -} diff --git a/src/items/weapons/Weapon.tscn b/src/items/weapons/Weapon.tscn index 5c8f64cf..7313cf22 100644 --- a/src/items/weapons/Weapon.tscn +++ b/src/items/weapons/Weapon.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://db206brufi83s"] +[gd_scene load_steps=4 format=3 uid="uid://db206brufi83s"] [ext_resource type="Script" path="res://src/items/weapons/Weapon.cs" id="1_7pkyf"] +[ext_resource type="Texture2D" uid="uid://cvtcsi2sagfwm" path="res://src/items/weapons/textures/SWAN SWORD.PNG" id="2_qxo05"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_wll7p"] radius = 0.470016 @@ -15,13 +16,13 @@ collision_mask = 4 [node name="Sprite" type="Sprite3D" parent="Pickup"] unique_name_in_owner = true -pixel_size = 0.0003 +transform = Transform3D(0.0978955, 0, 0.995197, 0, 1, 0, -0.995197, 0, 0.0978955, 0, 0.271026, 0) +pixel_size = 0.0006 billboard = 2 double_sided = false -alpha_cut = 1 -alpha_scissor_threshold = 0.511 alpha_antialiasing_mode = 1 texture_filter = 0 +texture = ExtResource("2_qxo05") [node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"] shape = SubResource("CapsuleShape3D_wll7p") diff --git a/src/player/Player.cs b/src/player/Player.cs index 01df739a..d150afa8 100644 --- a/src/player/Player.cs +++ b/src/player/Player.cs @@ -67,6 +67,8 @@ namespace GameJamDungeon private bool flipAttack = false; + private float _healthTimerWaitTime = 3.0f; + public void Initialize() { AnimationPlayer.AnimationFinished += OnAnimationFinished; @@ -106,6 +108,8 @@ namespace GameJamDungeon PlayerData.Inventory.EquippedAccessory.Sync += EquippedAccessory_Sync; PlayerData.CurrentHP.Sync += CurrentHP_Sync; + + HealthTimer.WaitTime = _healthTimerWaitTime; } public void OnResolved() @@ -251,6 +255,8 @@ namespace GameJamDungeon PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value + equippedItem.AccessoryStats.MaxHPUp); PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value + equippedItem.AccessoryStats.MaxVTUp); PlayerData.SetLuck(PlayerData.Luck.Value + equippedItem.AccessoryStats.LUCKUp); + if (equippedItem.AccessoryStats.AccessoryTags.Contains(AccessoryTag.HalfVTConsumption)) + HealthTimer.WaitTime = _healthTimerWaitTime * 2; } private void Inventory_AccessoryUnequipped(AccessoryStats unequippedAccessory) @@ -258,6 +264,8 @@ namespace GameJamDungeon PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value - unequippedAccessory.MaxHPUp); PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value - unequippedAccessory.MaxVTUp); PlayerData.SetLuck(PlayerData.Luck.Value - unequippedAccessory.LUCKUp); + if (unequippedAccessory.AccessoryTags.Contains(AccessoryTag.HalfVTConsumption)) + HealthTimer.WaitTime = _healthTimerWaitTime; } private void OnEnemyHitBoxEntered(Area3D area) diff --git a/src/vfx/shaders/2DPostProcessing.gdshader b/src/vfx/shaders/2DPostProcessing.gdshader new file mode 100644 index 00000000..2f5acaff --- /dev/null +++ b/src/vfx/shaders/2DPostProcessing.gdshader @@ -0,0 +1,72 @@ +shader_type canvas_item; + +render_mode unshaded; + +#define MAXCOLORS 16 + +uniform bool enabled = true; +uniform bool dithering = true; +uniform int colors : hint_range(1, MAXCOLORS) = 12; +uniform int dither_size: hint_range(1, 8) = 1; + +float dithering_pattern(ivec2 fragcoord) { + const float pattern[] = { + 0.00, 0.50, 0.10, 0.65, + 0.75, 0.25, 0.90, 0.35, + 0.20, 0.70, 0.05, 0.50, + 0.95, 0.40, 0.80, 0.30 + }; + + int x = fragcoord.x % 4; + int y = fragcoord.y % 4; + + return pattern[y * 4 + x]; +} + +float reduce_color(float raw, float dither, int depth) { + float div = 1.0 / float(depth); + float val = 0.0; + int i = 0; + + while (i <= MAXCOLORS) + { + if (raw > div * (float(i + 1))) { + i = i + 1; + continue; + } + + if (raw * float(depth) - float(i) <= dither * 0.999) + { + val = div * float(i); + } + else + { + val = div * float(i + 1); + } + return val; + + i = i+1; + } + + return val; +} + +void fragment() { + vec4 raw = texture(TEXTURE, SCREEN_UV); + ivec2 uv = ivec2(FRAGCOORD.xy / float(dither_size)); + + if (enabled == true){ + float dithering_value = 1.0; + if (dithering) + { + dithering_value = dithering_pattern(uv); + } + + COLOR.r = reduce_color(raw.r, (dithering_value - 0.5) * dithering_value + 0.5, colors - 1); + COLOR.g = reduce_color(raw.g, (dithering_value - 0.5) * dithering_value + 0.5, colors - 1); + COLOR.b = reduce_color(raw.b, (dithering_value - 0.5) * dithering_value + 0.5, colors - 1); + + } else { + COLOR.rgb = raw.rgb; + } +} \ No newline at end of file diff --git a/src/vfx/shaders/PixelMelt.gdshader b/src/vfx/shaders/PixelMelt.gdshader index d5183d0b..55f8d5e9 100644 --- a/src/vfx/shaders/PixelMelt.gdshader +++ b/src/vfx/shaders/PixelMelt.gdshader @@ -12,15 +12,15 @@ float psuedo_rand(float x) { void fragment() { vec2 uv = UV; - + // Move pixels near the top faster uv.y -= progress / UV.y; - - // Created jagged edges for each pixel on the x-axis + + // Created jagged edges for each pixel on the x-axis uv.y -= progress * meltiness * psuedo_rand(UV.x - mod(UV.x, TEXTURE_PIXEL_SIZE.x)); - + COLOR = texture(TEXTURE, uv); - + // "delete" pixels out of range if (uv.y <= 0.0) { COLOR.a = 0.0; diff --git a/src/vfx/shaders/PostProcessing.gdshader b/src/vfx/shaders/PostProcessing.gdshader new file mode 100644 index 00000000..36ac52f1 --- /dev/null +++ b/src/vfx/shaders/PostProcessing.gdshader @@ -0,0 +1,44 @@ +shader_type spatial; +render_mode unshaded, shadows_disabled, depth_test_disabled, depth_draw_never; +uniform sampler2D SCREEN_TEXTURE: hint_screen_texture, filter_linear_mipmap; + +uniform int color_depth : hint_range(1, 8) = 5; +uniform bool dithering = true; +uniform int resolution_scale = 4; + +int dithering_pattern(ivec2 fragcoord) { + const int pattern[] = { + -4, +0, -3, +1, + +2, -2, +3, -1, + -3, +1, -4, +0, + +3, -1, +2, -2 + }; + + int x = fragcoord.x % 4; + int y = fragcoord.y % 4; + + return pattern[y * 4 + x]; +} + +void vertex() { + POSITION = vec4(VERTEX.xy, 1.0, 1.0); +} + +void fragment() { + ivec2 uv = ivec2(FRAGCOORD.xy / float(resolution_scale)); + vec3 color = texelFetch(SCREEN_TEXTURE, uv * resolution_scale, 0).rgb; + + // Convert from [0.0, 1.0] range to [0, 255] range + ivec3 c = ivec3(round(color * 255.0)); + + // Apply the dithering pattern + if (dithering) { + c += ivec3(dithering_pattern(uv)); + } + + // Truncate from 8 bits to color_depth bits + c >>= (8 - color_depth); + + // Convert back to [0.0, 1.0] range + ALBEDO = vec3(c) / float(1 << color_depth); +} \ No newline at end of file