This commit is contained in:
2024-09-08 02:00:18 -07:00
parent 5240fd5f92
commit 29a6d1072c
36 changed files with 1194 additions and 203 deletions

View File

@@ -18,6 +18,7 @@
<PackageReference Include="Zeroconf" Version="3.6.11" />
</ItemGroup>
<ItemGroup>
<Folder Include="src\items\weapons\models\" />
<Folder Include="src\map\dungeon\corridor\" />
</ItemGroup>
<ItemGroup>

View File

@@ -109,7 +109,7 @@ Throw={
[internationalization]
locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialogue", "res://src/dialog/TestDialogue.dialogue")
locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialogue")
[layer_names]
@@ -132,4 +132,3 @@ locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialo
3d/run_on_separate_thread=true
common/physics_ticks_per_second=144
3d/default_gravity=0.0

View File

@@ -40,6 +40,8 @@ public interface IGameRepo : IDisposable
public AutoProp<int> VTBarValue { get; }
bool IsWithinDialogueSpace { get; set; }
public int MaxItemSize { get; }
}
public class GameRepo : IGameRepo
@@ -76,6 +78,8 @@ public class GameRepo : IGameRepo
public bool IsWithinDialogueSpace { get; set; }
public int MaxItemSize => 0;
private bool _disposedValue;
public GameRepo()

View File

@@ -101,6 +101,11 @@ public partial class InventoryMenu : Control, IInventoryMenu
SetCursorToNext();
if (Input.IsActionJustPressed(GameInputs.Attack))
EquipOrUnequipCurrentItem();
if (Input.IsActionJustPressed(GameInputs.Throw))
{
var selectedMenuItem = ItemList.GetChild<ItemLabel>(_currentSelection);
ItemList.RemoveChild(selectedMenuItem);
}
}
public void EquipOrUnequipCurrentItem()

View File

@@ -8,16 +8,26 @@ namespace GameJamDungeon
public interface IInventoryItem : INode3D
{
public IGameRepo GameRepo { get; }
public void DropItem();
}
[Meta(typeof(IAutoNode))]
public abstract partial class InventoryItem : Node3D, IInventoryItem
{
public override void _Notification(int what) => this.Notify(what);
[Dependency] public IGameRepo GameRepo => this.DependOn<IGameRepo>();
[Node] public Area3D Pickup { get; set; } = default!;
[Node] public AnimationPlayer AnimationPlayer { get; set; } = default!;
internal abstract InventoryItemInfo Info { get; set; }
[Node] public Area3D Pickup { get; set; } = default!;
public void DropItem()
{
AnimationPlayer.Play("drop");
}
}
}

View File

@@ -1,11 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://twrj4wixcbu7"]
[gd_scene load_steps=2 format=3 uid="uid://twrj4wixcbu7"]
[ext_resource type="Script" path="res://src/items/ItemDatabase.cs" id="1_7b315"]
[ext_resource type="PackedScene" uid="uid://b6atdgf2e6e2t" path="res://src/items/weapons/models/CommonSword.tscn" id="2_wan01"]
[ext_resource type="PackedScene" uid="uid://cbb1fxllrnlyr" path="res://src/items/weapons/models/UncommonSword.tscn" id="3_d4tq3"]
[ext_resource type="PackedScene" uid="uid://c10nhqq8su6pp" path="res://src/items/weapons/models/RareSword.tscn" id="4_q5drd"]
[node name="ItemDatabase" type="Node"]
script = ExtResource("1_7b315")
ItemScene = Array[PackedScene]([ExtResource("2_wan01"), ExtResource("3_d4tq3"), ExtResource("4_q5drd")])
DropRate = PackedFloat32Array(0.7, 0.25, 0.1)
ItemScene = Array[PackedScene]([])

View File

@@ -10,6 +10,8 @@ public partial class Accessory : InventoryItem
{
public override void _Notification(int what) => this.Notify(what);
[Dependency] IGameRepo GameRepo => this.DependOn<IGameRepo>();
public AccessoryInfo AccessoryInfo { get => (AccessoryInfo)Info; }
[Export]
@@ -20,8 +22,14 @@ public partial class Accessory : InventoryItem
Pickup.BodyEntered += OnEntered;
}
public void OnEntered(Node3D body)
public void OnEntered(Node body)
{
if (GameRepo.InventoryItems.Value.Count() >= GameRepo.MaxItemSize)
{
AnimationPlayer.Play("drop");
return;
}
var inventoryList = GameRepo.InventoryItems.Value.Append(this).ToList();
GameRepo.InventoryItems.OnNext(inventoryList);
QueueFree();

View File

@@ -1,25 +1,117 @@
[gd_scene load_steps=5 format=3 uid="uid://b07srt3lckt4e"]
[gd_scene load_steps=8 format=3 uid="uid://b07srt3lckt4e"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_nt2vh"]
[ext_resource type="Resource" uid="uid://cvkwmart5y51r" path="res://src/items/accessory/resources/MaskAvarice.tres" id="2_mqmr0"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_3gice"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_1ceef"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_nt2vh")
Info = ExtResource("2_mqmr0")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
billboard = 2
texture_filter = 0
texture = ExtResource("3_3gice")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
shape = SubResource("CapsuleShape3D_1ceef")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -1,25 +1,117 @@
[gd_scene load_steps=5 format=3 uid="uid://ppc2hk1j3c8q"]
[gd_scene load_steps=8 format=3 uid="uid://ppc2hk1j3c8q"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_2qbgs"]
[ext_resource type="Resource" uid="uid://d4bcem2nup7ef" path="res://src/items/accessory/resources/MaskDestruction.tres" id="2_ox523"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_mpoqw"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7a007"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_2qbgs")
Info = ExtResource("2_ox523")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
billboard = 2
texture_filter = 0
texture = ExtResource("3_mpoqw")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
shape = SubResource("CapsuleShape3D_7a007")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -1,25 +1,117 @@
[gd_scene load_steps=5 format=3 uid="uid://2fn4u1xs4olr"]
[gd_scene load_steps=8 format=3 uid="uid://2fn4u1xs4olr"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_5bb7n"]
[ext_resource type="Resource" uid="uid://bejy3lpudgawg" path="res://src/items/accessory/resources/MaskGuilt.tres" id="2_sxbjd"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_s14b0"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_c1t1u"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_5bb7n")
Info = ExtResource("2_sxbjd")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
billboard = 2
texture_filter = 0
texture = ExtResource("3_s14b0")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
shape = SubResource("CapsuleShape3D_c1t1u")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -1,25 +1,117 @@
[gd_scene load_steps=5 format=3 uid="uid://cnbrkvf5a7uui"]
[gd_scene load_steps=8 format=3 uid="uid://cnbrkvf5a7uui"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_xrfro"]
[ext_resource type="Resource" uid="uid://ddwyaxxqvk52h" path="res://src/items/accessory/resources/MaskObstinance.tres" id="2_7yen7"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_872p4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3eyaw"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_xrfro")
Info = ExtResource("2_7yen7")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
billboard = 2
texture_filter = 0
texture = ExtResource("3_872p4")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
shape = SubResource("CapsuleShape3D_3eyaw")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -1,25 +1,117 @@
[gd_scene load_steps=5 format=3 uid="uid://dkovupyyshhqf"]
[gd_scene load_steps=8 format=3 uid="uid://dkovupyyshhqf"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_4kwcj"]
[ext_resource type="Resource" uid="uid://c3v6r8s8yruag" path="res://src/items/accessory/resources/MaskShunned.tres" id="2_w1o11"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_yp2bu"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_p17h2"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_4kwcj")
Info = ExtResource("2_w1o11")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
billboard = 2
texture_filter = 0
texture = ExtResource("3_yp2bu")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
shape = SubResource("CapsuleShape3D_p17h2")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -1,25 +1,117 @@
[gd_scene load_steps=5 format=3 uid="uid://61sfg1w2v2ik"]
[gd_scene load_steps=8 format=3 uid="uid://61sfg1w2v2ik"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_xsflr"]
[ext_resource type="Resource" uid="uid://ct8iply3dwssv" path="res://src/items/accessory/resources/MaskSloth.tres" id="2_0vfxq"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_xie0c"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_sdah2"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_xsflr")
Info = ExtResource("2_0vfxq")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
billboard = 2
texture_filter = 0
texture = ExtResource("3_xie0c")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
shape = SubResource("CapsuleShape3D_sdah2")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -1,25 +1,117 @@
[gd_scene load_steps=5 format=3 uid="uid://rv7ix62scqf3"]
[gd_scene load_steps=8 format=3 uid="uid://rv7ix62scqf3"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_vo33u"]
[ext_resource type="Resource" uid="uid://d02kuxaus43mk" path="res://src/items/accessory/resources/MaskSuffering.tres" id="2_v4jvr"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_e24rs"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_vm186"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_vo33u")
Info = ExtResource("2_v4jvr")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
billboard = 2
texture_filter = 0
texture = ExtResource("3_e24rs")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
shape = SubResource("CapsuleShape3D_vm186")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -1,25 +1,116 @@
[gd_scene load_steps=5 format=3 uid="uid://dxcn4cvs18ned"]
[gd_scene load_steps=7 format=3 uid="uid://dxcn4cvs18ned"]
[ext_resource type="Script" path="res://src/items/accessory/Accessory.cs" id="1_ifbys"]
[ext_resource type="Resource" uid="uid://b0bxwp55mcyyp" path="res://src/items/accessory/resources/MaskZeal.tres" id="2_2o6x1"]
[ext_resource type="Texture2D" uid="uid://d0yqm7ars827b" path="res://src/items/accessory/accessory.png" id="3_6jkm4"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uavx4"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Accessory" type="Node3D"]
script = ExtResource("1_ifbys")
Info = ExtResource("2_2o6x1")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
unique_name_in_owner = true
billboard = 2
texture_filter = 0
texture = ExtResource("3_6jkm4")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_uavx4")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -19,8 +19,14 @@ public partial class Armor : InventoryItem
Pickup.BodyEntered += OnEntered;
}
public void OnEntered(Node3D body)
public void OnEntered(Node body)
{
if (GameRepo.InventoryItems.Value.Count() >= GameRepo.MaxItemSize)
{
AnimationPlayer.Play("drop");
return;
}
var inventoryList = GameRepo.InventoryItems.Value.Append(this).ToList();
GameRepo.InventoryItems.OnNext(inventoryList);
QueueFree();

View File

@@ -1,27 +1,118 @@
[gd_scene load_steps=5 format=3 uid="uid://dorr7v1tkeiy0"]
[gd_scene load_steps=7 format=3 uid="uid://dorr7v1tkeiy0"]
[ext_resource type="Script" path="res://src/items/armor/Armor.cs" id="1_cmjpq"]
[ext_resource type="Texture2D" uid="uid://cgoubcl86pib4" path="res://src/items/armor/armor.png" id="1_vpnem"]
[ext_resource type="Resource" uid="uid://chjmkb3aiomvr" path="res://src/items/armor/resources/PatheticCoat.tres" id="2_eftit"]
[sub_resource type="BoxShape3D" id="BoxShape3D_qdeu2"]
size = Vector3(0.778381, 0.929947, 0.731567)
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="Armor" type="Node3D"]
script = ExtResource("1_cmjpq")
Info = ExtResource("2_eftit")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
unique_name_in_owner = true
billboard = 2
alpha_cut = 1
texture_filter = 0
texture = ExtResource("1_vpnem")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0600509, 0.26725, 0.180481)
shape = SubResource("BoxShape3D_qdeu2")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -28,3 +28,30 @@ public partial class ThrowableItem : Node3D, IThrowableItem
QueueFree();
}
}
public enum ThrowableItemTag
{
InflictTelluricDamage,
InflictAeolicDamage,
InflictHydricDamage,
InflictIgneousDamage,
InflictFerrumDamage,
DoubleEXP,
RandomWarp,
LowerTargetTo1HP,
IdentifyAllItemsCostHP,
WarpToExitIfFound,
RandomNewItem,
BasicItem,
SwapHPandVTWithEntitiesInRoom,
TeleportAllEnemiesToRoom,
TurnAllEnemiesIntoHealingItem,
KillHalfEnemiesInRoom,
AbsorbHPFromAllEnemiesInRoom,
HealsAllInRoomToMaxHP,
RandomEffect,
Add1ATK,
Add1DEF,
RaiseLevelBy1,
BriefImmunity
}

View File

@@ -0,0 +1,9 @@
using Godot;
namespace GameJamDungeon;
public partial class ThrowableItemInfo : InventoryItemInfo
{
[Export]
public Godot.Collections.Array<ThrowableItemTag> ThrowableItemTags { get; set; }
}

View File

@@ -1,17 +1,107 @@
[gd_scene load_steps=5 format=3 uid="uid://cgwtjleqvgubc"]
[gd_scene load_steps=7 format=3 uid="uid://cgwtjleqvgubc"]
[ext_resource type="Script" path="res://src/items/weapons/Weapon.cs" id="1_7pkyf"]
[ext_resource type="Resource" uid="uid://cgbbc4mavlwn1" path="res://src/items/weapons/resources/SealingRod.tres" id="2_0p7rx"]
[ext_resource type="Texture2D" uid="uid://wd6jh5q51e4k" path="res://src/items/weapons/models/sword.png" id="2_bwl3y"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_wll7p"]
radius = 0.470016
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Pickup:position")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 1, 0), Vector3(-0.752, 0.8, 0), Vector3(-1.50473, 0.09512, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Pickup:monitoring")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Pickup:monitorable")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[node name="SealingRod" type="Node3D"]
script = ExtResource("1_7pkyf")
Info = ExtResource("2_0p7rx")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
monitoring = false
monitorable = false
[node name="Sprite" type="Sprite3D" parent="Pickup"]
unique_name_in_owner = true
billboard = 2
double_sided = false
alpha_cut = 1
@@ -20,10 +110,11 @@ alpha_antialiasing_mode = 1
texture_filter = 0
texture = ExtResource("2_bwl3y")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_wll7p")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}

View File

@@ -17,8 +17,13 @@ public partial class Weapon : InventoryItem
[Export]
internal override InventoryItemInfo Info { get; set; }
[Node]
public RigidBody3D Rigid { get; set; } = default!;
public WeaponInfo WeaponInfo { get => (WeaponInfo)Info; }
private Vector3 _targetPosition = Vector3.Zero;
public void OnReady()
{
Pickup.BodyEntered += OnEntered;
@@ -26,6 +31,9 @@ public partial class Weapon : InventoryItem
public void OnEntered(Node3D body)
{
if (GameRepo.InventoryItems.Value.Count() >= GameRepo.MaxItemSize)
return;
var inventoryList = GameRepo.InventoryItems.Value.Append(this).ToList();
GameRepo.InventoryItems.OnNext(inventoryList);
QueueFree();

View File

@@ -1,29 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://b6atdgf2e6e2t"]
[ext_resource type="Script" path="res://src/items/weapons/Weapon.cs" id="1_sr3bh"]
[ext_resource type="Resource" uid="uid://dq8tdmjhrqsrh" path="res://src/items/weapons/resources/CommonSword.tres" id="2_krjts"]
[ext_resource type="Texture2D" uid="uid://wd6jh5q51e4k" path="res://src/items/weapons/models/sword.png" id="3_ixjdd"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_j2it8"]
radius = 0.470016
[node name="CommonSword" type="Node3D"]
script = ExtResource("1_sr3bh")
Info = ExtResource("2_krjts")
[node name="Sprite3D" type="Sprite3D" parent="."]
billboard = 2
double_sided = false
alpha_cut = 1
alpha_scissor_threshold = 0.511
alpha_antialiasing_mode = 1
texture_filter = 0
texture = ExtResource("3_ixjdd")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_j2it8")

View File

@@ -1,9 +1,53 @@
[gd_scene load_steps=5 format=3 uid="uid://c10nhqq8su6pp"]
[gd_scene load_steps=10 format=3 uid="uid://c10nhqq8su6pp"]
[ext_resource type="Script" path="res://src/items/weapons/Weapon.cs" id="1_f8v7v"]
[ext_resource type="Resource" uid="uid://b4oxsf4k3nr43" path="res://src/items/weapons/resources/RareSword.tres" id="2_6nmyd"]
[ext_resource type="Texture2D" uid="uid://wd6jh5q51e4k" path="res://src/items/weapons/models/sword.png" id="3_meaac"]
[sub_resource type="Animation" id="Animation_w4iur"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Rigid/Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_gkdye"]
resource_name = "drop"
length = 0.75
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Rigid/Pickup:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.0333333, 0.3, 0.733333),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 2, 0), Vector3(0, 1, -2), Vector3(0, 0, -4)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2htf"]
_data = {
"RESET": SubResource("Animation_w4iur"),
"drop": SubResource("Animation_gkdye")
}
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_n11ob"]
rough = true
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_uhvnd"]
radius = 0.4
height = 1.4
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_4ic28"]
radius = 0.470016
@@ -11,7 +55,30 @@ radius = 0.470016
script = ExtResource("1_f8v7v")
Info = ExtResource("2_6nmyd")
[node name="Sprite3D" type="Sprite3D" parent="."]
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_s2htf")
}
[node name="Rigid" type="RigidBody3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4)
mass = 50.0
physics_material_override = SubResource("PhysicsMaterial_n11ob")
sleeping = true
lock_rotation = true
[node name="CollisionShape3D" type="CollisionShape3D" parent="Rigid"]
shape = SubResource("CapsuleShape3D_uhvnd")
[node name="Pickup" type="Area3D" parent="Rigid"]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="Sprite" type="Sprite3D" parent="Rigid/Pickup"]
unique_name_in_owner = true
billboard = 2
double_sided = false
alpha_cut = 1
@@ -20,10 +87,5 @@ alpha_antialiasing_mode = 1
texture_filter = 0
texture = ExtResource("3_meaac")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Rigid/Pickup"]
shape = SubResource("CapsuleShape3D_4ic28")

View File

@@ -0,0 +1,7 @@
using Godot;
using System;
public partial class Rigid : RigidBody3D
{
}

View File

@@ -1,29 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://cbb1fxllrnlyr"]
[ext_resource type="Script" path="res://src/items/weapons/Weapon.cs" id="1_3o4dy"]
[ext_resource type="Resource" uid="uid://e0t7swnl2sfd" path="res://src/items/weapons/resources/UncommonSword.tres" id="2_ga52m"]
[ext_resource type="Texture2D" uid="uid://wd6jh5q51e4k" path="res://src/items/weapons/models/sword.png" id="3_r8wg3"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cbafi"]
radius = 0.470016
[node name="UncommonSword" type="Node3D"]
script = ExtResource("1_3o4dy")
Info = ExtResource("2_ga52m")
[node name="Sprite3D" type="Sprite3D" parent="."]
billboard = 2
double_sided = false
alpha_cut = 1
alpha_scissor_threshold = 0.511
alpha_antialiasing_mode = 1
texture_filter = 0
texture = ExtResource("3_r8wg3")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_cbafi")

View File

@@ -1,13 +0,0 @@
[gd_resource type="Resource" script_class="WeaponInfo" load_steps=2 format=3 uid="uid://dq8tdmjhrqsrh"]
[ext_resource type="Script" path="res://src/items/weapons/WeaponInfo.cs" id="1_k7yyo"]
[resource]
script = ExtResource("1_k7yyo")
Damage = 3
TelluricDamageBonus = 0.0
AeolicDamageBonus = 0.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
Name = "Common sword"
Description = "Common"

View File

@@ -5,10 +5,13 @@
[resource]
script = ExtResource("1_re512")
Damage = 5
Luck = 0.05
AttackSpeed = 1.0
TelluricDamageBonus = 0.0
AeolicDamageBonus = 0.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
FerrumDamageBonus = 0.0
WeaponTags = Array[int]([])
Name = "Jiblett"
Description = "A halberd for the tasteful."

View File

@@ -5,10 +5,13 @@
[resource]
script = ExtResource("1_vroib")
Damage = 12
Luck = 0.05
AttackSpeed = 1.0
TelluricDamageBonus = 0.0
AeolicDamageBonus = 25.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
FerrumDamageBonus = 0.0
WeaponTags = Array[int]([])
Name = "Love Judgement"
Description = "A mace only wieldable by the strong of heart."

View File

@@ -12,5 +12,6 @@ AeolicDamageBonus = 0.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
FerrumDamageBonus = 0.0
WeaponTags = Array[int]([])
Name = "Rare sword"
Description = "Rare"

View File

@@ -5,11 +5,14 @@
[resource]
script = ExtResource("1_40b5j")
Damage = 2
Luck = 0.05
AttackSpeed = 1.0
TelluricDamageBonus = 0.0
AeolicDamageBonus = 0.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
FerrumDamageBonus = 0.0
WeaponTags = Array[int]([])
Name = "Sealing Rod"
Description = "A wand fitted with charms said to cleanse and purify that which belongs to other worlds.

View File

@@ -1,13 +0,0 @@
[gd_resource type="Resource" script_class="WeaponInfo" load_steps=2 format=3 uid="uid://e0t7swnl2sfd"]
[ext_resource type="Script" path="res://src/items/weapons/WeaponInfo.cs" id="1_8os8m"]
[resource]
script = ExtResource("1_8os8m")
Damage = 5
TelluricDamageBonus = 0.0
AeolicDamageBonus = 0.0
BaseHydricDamageBonus = 0.0
IgneousDamageBonus = 0.0
Name = "Uncommon sword"
Description = "Uncommon"

View File

@@ -16,6 +16,7 @@ Dialogue = ExtResource("2_k62pf")
[node name="CSGBox3D" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.82007, 0.766602, -1.46094)
use_collision = true
flip_faces = true
size = Vector3(20, 10, 20)
@@ -27,9 +28,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.03633, -4.09327, 6.89279)
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.49531, -3.12363, 0)
[node name="RareSword" parent="." instance=ExtResource("2_ni2nx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.8356, -2.30799)
[node name="Goddess" parent="." instance=ExtResource("3_4sm8u")]
transform = Transform3D(1.4, 0, 0, 0, 1.4, 0, 0, 0, 1.4, -8.84798, -2.93175, -3.9493)
@@ -44,3 +42,6 @@ collision_mask = 128
[node name="CollisionShape3D" type="CollisionShape3D" parent="Goddess/Panel/NPCBox"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.8395, -1.94114, -8.99061)
shape = SubResource("BoxShape3D_46qk4")
[node name="RareSword" parent="." instance=ExtResource("2_ni2nx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.62022, 1.16685)

View File

@@ -1,9 +1,10 @@
[gd_scene load_steps=13 format=3 uid="uid://dhpwwqow1ahrc"]
[gd_scene load_steps=14 format=3 uid="uid://dhpwwqow1ahrc"]
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_0tfda"]
[ext_resource type="Script" path="res://src/map/dungeon/rooms/DungeonRoom.cs" id="1_ti7ur"]
[ext_resource type="PackedScene" uid="uid://ckaw6wjmi0fom" path="res://src/map/dungeon/door/Door.tscn" id="2_mdawx"]
[ext_resource type="PackedScene" uid="uid://twrj4wixcbu7" path="res://src/items/ItemDatabase.tscn" id="4_2mnb7"]
[ext_resource type="PackedScene" uid="uid://cgwtjleqvgubc" path="res://src/items/weapons/SealingRod.tscn" id="4_ivbn2"]
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="5_owpbq"]
[sub_resource type="PlaneMesh" id="PlaneMesh_luhnj"]
@@ -60,8 +61,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.053, -3, 0)
[node name="ItemDatabase" parent="." instance=ExtResource("4_2mnb7")]
unique_name_in_owner = true
ItemScene = Array[PackedScene]([])
DropRate = PackedFloat32Array()
ItemScene = Array[PackedScene]([ExtResource("4_ivbn2")])
DropRate = PackedFloat32Array(0)
[node name="EnemyDatabase" parent="." instance=ExtResource("5_owpbq")]
unique_name_in_owner = true

View File

@@ -1,8 +1,9 @@
[gd_scene load_steps=14 format=3 uid="uid://bbwgmqy3evhh2"]
[gd_scene load_steps=15 format=3 uid="uid://bbwgmqy3evhh2"]
[ext_resource type="Script" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_o02dd"]
[ext_resource type="Script" path="res://src/map/dungeon/rooms/DungeonRoom.cs" id="2_jrlll"]
[ext_resource type="PackedScene" uid="uid://twrj4wixcbu7" path="res://src/items/ItemDatabase.tscn" id="4_c51bx"]
[ext_resource type="PackedScene" uid="uid://cgwtjleqvgubc" path="res://src/items/weapons/SealingRod.tscn" id="4_n2mpv"]
[ext_resource type="PackedScene" uid="uid://ckaw6wjmi0fom" path="res://src/map/dungeon/door/Door.tscn" id="4_nh0nj"]
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="5_fabiq"]
@@ -76,8 +77,8 @@ mesh = SubResource("PlaneMesh_j8q3j")
[node name="ItemDatabase" parent="." instance=ExtResource("4_c51bx")]
unique_name_in_owner = true
ItemScene = Array[PackedScene]([])
DropRate = PackedFloat32Array()
ItemScene = Array[PackedScene]([ExtResource("4_n2mpv")])
DropRate = PackedFloat32Array(1)
[node name="EnemyDatabase" parent="." instance=ExtResource("5_fabiq")]
unique_name_in_owner = true

View File

@@ -221,3 +221,6 @@ custom_minimum_size = Vector2(0, 25)
layout_mode = 2
theme_override_styles/background = SubResource("StyleBoxFlat_onron")
show_percentage = false
[node name="Marker3D" type="Marker3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -2.70201)

View File

@@ -17,7 +17,7 @@ namespace GameJamDungeon
public required IAutoProp<WeaponInfo> EquippedWeapon { get; set; }
[Save("PlayerInventory")]
public required IEnumerable<InventoryItemInfo> Inventory { get; set; }
public required InventoryItemInfo[] Inventory { get; set; } = new InventoryItemInfo[5];
[Save("PlayerStats")]
public required PlayerStatInfo PlayerStats { get; set; }