Working on item rescue
@@ -209,6 +209,7 @@ locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialo
|
||||
3d_physics/layer_8="Dialogue"
|
||||
3d_physics/layer_9="Teleport"
|
||||
3d_physics/layer_10="Minimap"
|
||||
3d_physics/layer_11="ItemRescue"
|
||||
|
||||
[physics]
|
||||
|
||||
|
||||
@@ -6,3 +6,4 @@
|
||||
shader = ExtResource("1_fbp5a")
|
||||
shader_parameter/progress = 0.0
|
||||
shader_parameter/meltiness = 1.0
|
||||
shader_parameter/reverse = false
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace GameJamDungeon;
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.GodotNodeInterfaces;
|
||||
using Chickensoft.Introspection;
|
||||
using GameJamDungeon.src.item_rescue;
|
||||
using Godot;
|
||||
|
||||
public interface IGame : IProvide<IGameRepo>, IProvide<IGameEventDepot>, IProvide<IGame>, INode3D
|
||||
@@ -12,6 +13,8 @@ public interface IGame : IProvide<IGameRepo>, IProvide<IGameEventDepot>, IProvid
|
||||
|
||||
public IPlayer Player { get; }
|
||||
|
||||
public RescuedItemDatabase RescuedItems { get; }
|
||||
|
||||
public void DropItem(IInventoryItem item);
|
||||
|
||||
public void ThrowItem(IInventoryItem item);
|
||||
@@ -65,6 +68,8 @@ public partial class Game : Node3D, IGame
|
||||
[Node] public InGameAudio InGameAudio { get; set; } = default!;
|
||||
#endregion
|
||||
|
||||
public RescuedItemDatabase RescuedItems { get; set; } = default!;
|
||||
|
||||
public void Setup()
|
||||
{
|
||||
GameRepo = new GameRepo();
|
||||
@@ -74,6 +79,7 @@ public partial class Game : Node3D, IGame
|
||||
GameLogic.Set(AppRepo);
|
||||
GameLogic.Set(GameEventDepot);
|
||||
Instantiator = new Instantiator(GetTree());
|
||||
RescuedItems = new RescuedItemDatabase();
|
||||
}
|
||||
|
||||
public void OnResolved()
|
||||
@@ -234,15 +240,8 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
private void Inventory_RaiseStatRequest(InventoryItemStats itemStats)
|
||||
{
|
||||
//if (itemStats.RaiseHPAmount > 0 && GameRepo.PlayerData.CurrentHP.Value.Equals(GameRepo.PlayerData.MaximumHP.Value))
|
||||
// RaiseHP(itemStats.RaiseHPAmount);
|
||||
//else if (itemStats.HealHPAmount > 0)
|
||||
HealHP(itemStats.HealHPAmount);
|
||||
HealVT(itemStats.HealVTAmount);
|
||||
|
||||
//if (itemStats.RaiseVTAmount > 0 && GameRepo.PlayerData.CurrentVT.Value.Equals(GameRepo.PlayerData.MaximumVT.Value))
|
||||
// RaiseVT(itemStats.RaiseVTAmount);
|
||||
//else if (itemStats.HealVTAmount > 0)
|
||||
}
|
||||
|
||||
private void SetPauseMode(bool isPaused)
|
||||
|
||||
22
src/item_rescue/ItemRescue.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using GameJamDungeon;
|
||||
using Godot;
|
||||
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class ItemRescue : Area3D
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
BodyEntered += OnItemRescueEntered;
|
||||
}
|
||||
|
||||
public void OnItemRescueEntered(Node3D item)
|
||||
{
|
||||
GD.Print("Item rescue entered");
|
||||
if (item is IDroppedItem droppedItem)
|
||||
droppedItem.RescueItem();
|
||||
}
|
||||
}
|
||||
20
src/item_rescue/ItemRescue.tscn
Normal file
@@ -0,0 +1,20 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://duis2vhf5ojy3"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/item_rescue/ItemRescue.cs" id="1_j1jha"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ykgmd"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_j1jha"]
|
||||
transparency = 1
|
||||
albedo_color = Color(0.486275, 1, 0.443137, 0.309804)
|
||||
|
||||
[node name="Item Rescue" type="Area3D"]
|
||||
collision_layer = 0
|
||||
collision_mask = 1024
|
||||
script = ExtResource("1_j1jha")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_ykgmd")
|
||||
|
||||
[node name="SenseSphere" type="CSGSphere3D" parent="."]
|
||||
material = SubResource("StandardMaterial3D_j1jha")
|
||||
14
src/item_rescue/RescuedItemDatabase.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GameJamDungeon.src.item_rescue
|
||||
{
|
||||
public class RescuedItemDatabase
|
||||
{
|
||||
public List<IInventoryItem> Items;
|
||||
|
||||
public RescuedItemDatabase()
|
||||
{
|
||||
Items = new List<IInventoryItem>();
|
||||
}
|
||||
}
|
||||
}
|
||||
32
src/item_rescue/RescuedItems.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using GameJamDungeon;
|
||||
using Godot;
|
||||
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class RescuedItems : Marker3D
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
[Dependency] public IGame Game => this.DependOn<IGame>();
|
||||
|
||||
public void SpawnRescuedItems()
|
||||
{
|
||||
foreach (var item in Game.RescuedItems.Items)
|
||||
{
|
||||
var droppedScene = GD.Load<PackedScene>("res://src/items/dropped/DroppedItem.tscn");
|
||||
var dropped = droppedScene.Instantiate<DroppedItem>();
|
||||
dropped.Item = item;
|
||||
dropped.GlobalPosition = GlobalPosition;
|
||||
AddChild(dropped);
|
||||
}
|
||||
|
||||
Game.RescuedItems.Items.Clear();
|
||||
}
|
||||
|
||||
public void OnSpawnItemsEntered(Node3D body)
|
||||
{
|
||||
GD.Print("Spawn items");
|
||||
SpawnRescuedItems();
|
||||
}
|
||||
}
|
||||
6
src/item_rescue/RescuedItems.tscn
Normal file
@@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://tc5kdfoggrng"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/item_rescue/RescuedItems.cs" id="1_m08l5"]
|
||||
|
||||
[node name="Rescued Items" type="Marker3D"]
|
||||
script = ExtResource("1_m08l5")
|
||||
@@ -1,11 +1,17 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.GodotNodeInterfaces;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
|
||||
namespace GameJamDungeon
|
||||
{
|
||||
public interface IDroppedItem : IRigidBody3D
|
||||
{
|
||||
void RescueItem();
|
||||
}
|
||||
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class DroppedItem : RigidBody3D
|
||||
public partial class DroppedItem : RigidBody3D, IDroppedItem
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
@@ -13,7 +19,7 @@ namespace GameJamDungeon
|
||||
|
||||
[Dependency] public IGame Game => this.DependOn<IGame>();
|
||||
|
||||
[Node] public Sprite3D Sprite { get; set; } = default!;
|
||||
[Node] public Sprite2D Sprite { get; set; } = default!;
|
||||
|
||||
public IInventoryItem Item { get; set; }
|
||||
|
||||
@@ -32,6 +38,42 @@ namespace GameJamDungeon
|
||||
RemoveCollisionExceptionWith((Node)Game.Player);
|
||||
}
|
||||
|
||||
public void RescueItem()
|
||||
{
|
||||
ContactMonitor = false;
|
||||
PlayRescueAnimation();
|
||||
Game.RescuedItems.Items.Add(Item);
|
||||
}
|
||||
|
||||
private void PlayRescueAnimation()
|
||||
{
|
||||
LoadShader("res://src/vfx/shaders/PixelMelt.gdshader");
|
||||
var tweener = GetTree().CreateTween();
|
||||
SetShaderValue(true);
|
||||
tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 0.3f, 2f);
|
||||
tweener.TweenCallback(Callable.From(QueueFree));
|
||||
}
|
||||
|
||||
private void LoadShader(string shaderPath)
|
||||
{
|
||||
var shader = GD.Load<Shader>(shaderPath);
|
||||
Sprite.Material = new ShaderMaterial();
|
||||
var shaderMaterial = (ShaderMaterial)Sprite.Material;
|
||||
shaderMaterial.Shader = shader;
|
||||
}
|
||||
|
||||
private void SetShaderValue(float shaderValue)
|
||||
{
|
||||
var shaderMaterial = (ShaderMaterial)Sprite.Material;
|
||||
shaderMaterial.SetShaderParameter("progress", shaderValue);
|
||||
}
|
||||
|
||||
private void SetShaderValue(bool shaderValue)
|
||||
{
|
||||
var shaderMaterial = (ShaderMaterial)Sprite.Material;
|
||||
shaderMaterial.SetShaderParameter("reverse", shaderValue);
|
||||
}
|
||||
|
||||
private void DroppedItem_BodyEntered(Node body)
|
||||
{
|
||||
if (body is IPlayer player)
|
||||
|
||||
@@ -1,12 +1,54 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://brq11lswpqxei"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://brq11lswpqxei"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/items/dropped/DroppedItem.cs" id="1_67jk4"]
|
||||
[ext_resource type="Texture2D" uid="uid://mi70lolgtf3n" path="res://src/items/throwable/textures/GEOMANCER-DICE.png" id="2_cu1v3"]
|
||||
[ext_resource type="Material" uid="uid://x2bv1q51mcjq" path="res://src/enemy/PixelMelt.tres" id="2_eat5q"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_28r8g"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_x5q15"]
|
||||
resource_name = "ItemRescued"
|
||||
length = 2.0
|
||||
step = 0.0666667
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite3D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 1.99543),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.0207178, 0.192374, 0), Vector3(0.0207178, 1.26338, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_eat5q"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite3D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.0207178, 0.192374, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_eat5q"]
|
||||
_data = {
|
||||
&"ItemRescued": SubResource("Animation_x5q15"),
|
||||
&"RESET": SubResource("Animation_eat5q")
|
||||
}
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_x5q15"]
|
||||
viewport_path = NodePath("Sprite3D/SubViewport")
|
||||
|
||||
[node name="DroppedItem" type="RigidBody3D"]
|
||||
collision_layer = 0
|
||||
collision_layer = 1024
|
||||
collision_mask = 5
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
@@ -19,8 +61,29 @@ script = ExtResource("1_67jk4")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("SphereShape3D_28r8g")
|
||||
|
||||
[node name="Sprite" type="Sprite3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
pixel_size = 0.0005
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_eat5q")
|
||||
}
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(0.41, 0, 0, 0, 0.41, 0, 0, 0, 0.41, 0.0207178, 0.192374, 0)
|
||||
billboard = 2
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
render_priority = 100
|
||||
texture = SubResource("ViewportTexture_x5q15")
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="Sprite3D"]
|
||||
disable_3d = true
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="Sprite3D/SubViewport"]
|
||||
unique_name_in_owner = true
|
||||
material = ExtResource("2_eat5q")
|
||||
scale = Vector2(0.1, 0.1)
|
||||
texture = ExtResource("2_cu1v3")
|
||||
centered = false
|
||||
offset = Vector2(2000, 2000)
|
||||
|
||||
@@ -20,3 +20,7 @@ A wand fitted with charms said to cleanse and purify that which belongs to other
|
||||
It's unaligned nature has the power to balance all that it comes into contact with, should the wielder have the will."
|
||||
Texture = ExtResource("1_wiylj")
|
||||
SpawnRate = 0.5
|
||||
ThrowSpeed = 12.0
|
||||
HealHPAmount = 0
|
||||
HealVTAmount = 0
|
||||
ThrowDamage = 5
|
||||
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA1.glb
Normal file
37
src/map/dungeon/corridor/CORRIDOR_AREA1.glb.import
Normal file
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://8vb66kepiclk"
|
||||
path="res://.godot/imported/CORRIDOR_AREA1.glb-6fdba59bbcd327a9dc80fb62b7803496.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA1.glb"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA1.glb-6fdba59bbcd327a9dc80fb62b7803496.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=1
|
||||
gltf/embedded_image_handling=1
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA1_TILE4.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
37
src/map/dungeon/corridor/CORRIDOR_AREA1_TILE4.png.import
Normal file
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cl1jm7jmlse6t"
|
||||
path="res://.godot/imported/CORRIDOR_AREA1_TILE4.png-301ebf3004322ed19d27efa27f8141b6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "7b53babe76d0484b408a519f8fc329b5"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA1_TILE4.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA1_TILE4.png-301ebf3004322ed19d27efa27f8141b6.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA1_WALL TILE 1.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dtrlc04s8t5du"
|
||||
path="res://.godot/imported/CORRIDOR_AREA1_WALL TILE 1.jpg-4e527f52fe3bab40c9844a512bc5ad0a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "c591bfa502b4a13cdf376c08035fb58d"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA1_WALL TILE 1.jpg"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA1_WALL TILE 1.jpg-4e527f52fe3bab40c9844a512bc5ad0a.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=true
|
||||
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
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://2r1jcblfvu82"
|
||||
path="res://.godot/imported/CORRIDOR_AREA1_brick_corridor_corrected.png-55c207dc9993a6b38c34daf432efcc77.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "01d2dbbb6734168b9ef81eb42bfdb764"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA1_brick_corridor_corrected.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA1_brick_corridor_corrected.png-55c207dc9993a6b38c34daf432efcc77.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=true
|
||||
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
|
||||
|
After Width: | Height: | Size: 44 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c7p8vhnu2st23"
|
||||
path="res://.godot/imported/CORRIDOR_AREA1_concrete_0003_color_1k.png-b4b7d53bf6107f1df3921eca3ba2ca2b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "e9d0d15dfb27e2595fee02f430f1a3df"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA1_concrete_0003_color_1k.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA1_concrete_0003_color_1k.png-b4b7d53bf6107f1df3921eca3ba2ca2b.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA1_darkbrick.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
37
src/map/dungeon/corridor/CORRIDOR_AREA1_darkbrick.png.import
Normal file
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dix0or3fxli6x"
|
||||
path="res://.godot/imported/CORRIDOR_AREA1_darkbrick.png-bf23a1b304b04732f26606bb6bbadefd.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "68c10aa0eb12d3ce4e6477c9edb3c294"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA1_darkbrick.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA1_darkbrick.png-bf23a1b304b04732f26606bb6bbadefd.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA1_lower_corridor_lower.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://kkumn4qfoifs"
|
||||
path="res://.godot/imported/CORRIDOR_AREA1_lower_corridor_lower.png-14e40e95e00bb260a0c1bbb6cb073698.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "11718783be351bc85b6cb01552e92311"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA1_lower_corridor_lower.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA1_lower_corridor_lower.png-14e40e95e00bb260a0c1bbb6cb073698.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA2.glb
Normal file
37
src/map/dungeon/corridor/CORRIDOR_AREA2.glb.import
Normal file
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://r31exqbqjee4"
|
||||
path="res://.godot/imported/CORRIDOR_AREA2.glb-f6e3876102bc7577a4e90420f1f27624.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA2.glb"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA2.glb-f6e3876102bc7577a4e90420f1f27624.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=1
|
||||
gltf/embedded_image_handling=1
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA2_AREA_2_MAIN_222STONE.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bf86sqft20ggu"
|
||||
path="res://.godot/imported/CORRIDOR_AREA2_AREA_2_MAIN_222STONE.png-4dbe0e4f9c8915825ea70fd9b2ec1c9e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "11027637ea8e7d257bd13c57efd3b5b4"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA2_AREA_2_MAIN_222STONE.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA2_AREA_2_MAIN_222STONE.png-4dbe0e4f9c8915825ea70fd9b2ec1c9e.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA2_COLUMN_WHITE.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://lahpftigxu6s"
|
||||
path="res://.godot/imported/CORRIDOR_AREA2_COLUMN_WHITE.png-f2f34e6940fe73a3b416a4393145cfb4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "0e8fa39a22324fd5345ebb4d3f1deeec"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA2_COLUMN_WHITE.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA2_COLUMN_WHITE.png-f2f34e6940fe73a3b416a4393145cfb4.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA2_CORRIDOR_PANEL_UPPER.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cdbhdxctjtinw"
|
||||
path="res://.godot/imported/CORRIDOR_AREA2_CORRIDOR_PANEL_UPPER.png-be379b89b73b909eab481203be68cdb6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "7a00947386bf978ae4a905d05098510a"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA2_CORRIDOR_PANEL_UPPER.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA2_CORRIDOR_PANEL_UPPER.png-be379b89b73b909eab481203be68cdb6.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA2_WHITE_TILE2.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cijco1lyolksn"
|
||||
path="res://.godot/imported/CORRIDOR_AREA2_WHITE_TILE2.png-1cf9ea4ebb93d2b8957a8b7bc98b22a5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "c01abbdce6f043b60cd28e6f386bf90d"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA2_WHITE_TILE2.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA2_WHITE_TILE2.png-1cf9ea4ebb93d2b8957a8b7bc98b22a5.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA2_WHITE_layer_brick1.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dyy6sau430drq"
|
||||
path="res://.godot/imported/CORRIDOR_AREA2_WHITE_layer_brick1.png-7d99d7c32f339debdf92d3b0c902721f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "e5a6977947c858572c0564e939e8513c"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA2_WHITE_layer_brick1.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA2_WHITE_layer_brick1.png-7d99d7c32f339debdf92d3b0c902721f.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=true
|
||||
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
|
||||
BIN
src/map/dungeon/corridor/CORRIDOR_AREA2_area_2_tile_3.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://l75ustywh8jm"
|
||||
path="res://.godot/imported/CORRIDOR_AREA2_area_2_tile_3.png-0d919f933b74d0b7a29afa311c4e7d51.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "819a5d534963bc6ec1b5baf551805ca8"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/corridor/CORRIDOR_AREA2_area_2_tile_3.png"
|
||||
dest_files=["res://.godot/imported/CORRIDOR_AREA2_area_2_tile_3.png-0d919f933b74d0b7a29afa311c4e7d51.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=true
|
||||
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
|
||||
@@ -1,9 +1,17 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dl6h1djc27ddl"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://dl6h1djc27ddl"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/map/dungeon/code/Overworld.cs" id="1_2ce63"]
|
||||
[ext_resource type="PackedScene" uid="uid://duis2vhf5ojy3" path="res://src/item_rescue/ItemRescue.tscn" id="2_4ixnb"]
|
||||
[ext_resource type="PackedScene" uid="uid://tc5kdfoggrng" path="res://src/item_rescue/RescuedItems.tscn" id="3_tbcl3"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pb22g"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tbcl3"]
|
||||
transparency = 1
|
||||
albedo_color = Color(0.129412, 1, 1, 0.8)
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_tbcl3"]
|
||||
|
||||
[node name="Floor0" type="Node3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.63488, -5.13176)
|
||||
script = ExtResource("1_2ce63")
|
||||
@@ -18,17 +26,34 @@ shadow_opacity = 0.75
|
||||
shadow_blur = 4.224
|
||||
directional_shadow_fade_start = 0.63
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
|
||||
[node name="PlayerSpawnPoint" type="Marker3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-0.0104718, 0, 0.999945, 0, 1, 0, -0.999945, 0, -0.0104718, 3.6247, 1.51594, 2.81014)
|
||||
transform = Transform3D(-0.0104718, 0, 0.999945, 0, 1, 0, -0.999945, 0, -0.0104718, 3.6247, -0.688422, 2.81014)
|
||||
|
||||
[node name="ExitSpawnPoint" type="Marker3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.05854, -1.04714, 1.38579)
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.84864, 0)
|
||||
size = Vector3(10, 1, 10)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.01065, 0)
|
||||
use_collision = true
|
||||
size = Vector3(20, 1, 20)
|
||||
material = SubResource("StandardMaterial3D_pb22g")
|
||||
|
||||
[node name="Item Rescue" parent="." instance=ExtResource("2_4ixnb")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.669859, -4.39116)
|
||||
|
||||
[node name="Rescued Items" parent="." instance=ExtResource("3_tbcl3")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.34283, -0.312653, -4.84554)
|
||||
|
||||
[node name="Spawn Rescued Items" type="CSGSphere3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.602379, 2.09154)
|
||||
material = SubResource("StandardMaterial3D_tbcl3")
|
||||
|
||||
[node name="Area3D" type="Area3D" parent="Spawn Rescued Items"]
|
||||
collision_mask = 3
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Spawn Rescued Items/Area3D"]
|
||||
shape = SubResource("SphereShape3D_tbcl3")
|
||||
|
||||
[connection signal="body_entered" from="Spawn Rescued Items/Area3D" to="Rescued Items" method="OnSpawnItemsEntered"]
|
||||
|
||||
@@ -49,6 +49,11 @@ namespace GameJamDungeon
|
||||
[Export]
|
||||
public PlayerStatResource PlayerStatResource { get; set; } = default!;
|
||||
|
||||
[Export]
|
||||
private WeaponStats _defaultWeapon { get; set; } = default!;
|
||||
[Export]
|
||||
private ArmorStats _defaultArmor { get; set; } = default!;
|
||||
|
||||
public PlayerLogic.Settings Settings { get; set; } = default!;
|
||||
|
||||
public PlayerLogic PlayerLogic { get; set; } = default!;
|
||||
@@ -113,6 +118,14 @@ namespace GameJamDungeon
|
||||
PlayerLogic.Set(GameRepo);
|
||||
PlayerLogic.Set(PlayerData);
|
||||
|
||||
var defaultWeapon = new Weapon() { WeaponStats = _defaultWeapon };
|
||||
var defaultArmor = new Armor() { ArmorStats = _defaultArmor };
|
||||
PlayerData.Inventory.TryAdd(defaultWeapon);
|
||||
PlayerData.Inventory.TryAdd(defaultArmor);
|
||||
|
||||
PlayerData.Inventory.Equip(defaultWeapon);
|
||||
PlayerData.Inventory.Equip(defaultArmor);
|
||||
|
||||
PlayerData.Inventory.EquippedAccessory.Sync += EquippedAccessory_Sync;
|
||||
PlayerData.CurrentHP.Sync += CurrentHP_Sync;
|
||||
|
||||
@@ -256,11 +269,11 @@ namespace GameJamDungeon
|
||||
{
|
||||
if (PlayerData.Inventory.EquippedAccessory.Value.AccessoryStats.AccessoryTags.Contains(AccessoryTag.HalfVTConsumption))
|
||||
{
|
||||
if (reduceOnTick)
|
||||
PlayerData.SetCurrentVT(PlayerData.CurrentVT.Value - 1);
|
||||
reduceOnTick = !reduceOnTick;
|
||||
}
|
||||
PlayerData.SetCurrentHP(PlayerData.CurrentHP.Value + 1);
|
||||
if (reduceOnTick)
|
||||
PlayerData.SetCurrentVT(PlayerData.CurrentVT.Value - 1);
|
||||
}
|
||||
else
|
||||
PlayerData.SetCurrentHP(PlayerData.CurrentHP.Value - 1);
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
[gd_scene load_steps=47 format=3 uid="uid://cfecvvav8kkp6"]
|
||||
[gd_scene load_steps=49 format=3 uid="uid://cfecvvav8kkp6"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/player/Player.cs" id="1_xcol5"]
|
||||
[ext_resource type="Script" path="res://src/hitbox/Hitbox.cs" id="2_lb3qc"]
|
||||
[ext_resource type="Script" path="res://src/player/PlayerStatResource.cs" id="2_xq68d"]
|
||||
[ext_resource type="Resource" uid="uid://b7xr0l4a8g1gk" path="res://src/items/weapons/resources/SealingRod.tres" id="3_ebyyx"]
|
||||
[ext_resource type="Resource" uid="uid://ce2vfa2t3io67" path="res://src/items/armor/resources/AtonersAdornments.tres" id="4_bj1ma"]
|
||||
[ext_resource type="Texture2D" uid="uid://c6r3dhnkuw22w" path="res://src/vfx/hit_effects/FIRE_STRIKE_1.0.png" id="5_wr6lo"]
|
||||
[ext_resource type="Texture2D" uid="uid://b5qjlbcesth53" path="res://src/vfx/Weapon Strikes/NON ELEMENTAL SLASH.png" id="6_p34sl"]
|
||||
[ext_resource type="Texture2D" uid="uid://mjobx7ph7hf1" path="res://src/vfx/playerdot.png" id="7_8hi2n"]
|
||||
@@ -347,6 +349,8 @@ collision_layer = 806
|
||||
collision_mask = 775
|
||||
script = ExtResource("1_xcol5")
|
||||
PlayerStatResource = SubResource("Resource_btp2w")
|
||||
_defaultWeapon = ExtResource("3_ebyyx")
|
||||
_defaultArmor = ExtResource("4_bj1ma")
|
||||
|
||||
[node name="Hitbox" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -6,6 +6,8 @@ uniform float progress: hint_range(0.0, 1.0) = 0.0;
|
||||
// How jagged each band of melting pixels are
|
||||
uniform float meltiness: hint_range(0.0, 16.0) = 1.0;
|
||||
|
||||
uniform bool reverse = false;
|
||||
|
||||
float psuedo_rand(float x) {
|
||||
return mod(x * 2048103.0 + cos(x * 1912.0), 1.0);
|
||||
}
|
||||
@@ -14,6 +16,9 @@ void fragment() {
|
||||
vec2 uv = UV;
|
||||
|
||||
// Move pixels near the top faster
|
||||
if (reverse)
|
||||
uv.y += progress / UV.y;
|
||||
else
|
||||
uv.y -= progress / UV.y;
|
||||
|
||||
// Created jagged edges for each pixel on the x-axis
|
||||
|
||||