From 9981ed1ae3403f04ad53a5ea91c2fe4470d2be3f Mon Sep 17 00:00:00 2001 From: Nikolai Fedorov Date: Thu, 23 Apr 2026 13:08:44 +0300 Subject: [PATCH] fix metal plate pickup --- scenes/Level.tscn | 30 +++++++++++++++++------------- scenes/MetalPlate.tscn | 7 +++++++ scripts/MetalPlate.gd | 28 ++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/scenes/Level.tscn b/scenes/Level.tscn index 3ecccb6..dcd53ef 100644 --- a/scenes/Level.tscn +++ b/scenes/Level.tscn @@ -5,6 +5,7 @@ [ext_resource type="Texture2D" uid="uid://bjfuko7rdmax" path="res://assets/stone_big.png" id="3_klq6b"] [ext_resource type="ArrayMesh" uid="uid://b5do7gjnxif80" path="res://assets/stonewall_long.obj" id="4_b121j"] [ext_resource type="ArrayMesh" uid="uid://ul1cypdhef5a" path="res://assets/stone_big.obj" id="5_8c41q"] +[ext_resource type="PackedScene" uid="uid://g7iron5etp8u" path="res://scenes/Iron.tscn" id="6_dke22"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ppgk2"] @@ -78,21 +79,21 @@ size = Vector3(0.6, 1, 0.6) [sub_resource type="BoxShape3D" id="BoxShape3D_forge"] size = Vector3(2, 1.8, 2) -[sub_resource type="BoxMesh" id="BoxMesh_etable"] -size = Vector3(1.4, 0.9, 1.4) - -[sub_resource type="BoxMesh" id="BoxMesh_ebook"] -size = Vector3(0.7, 0.12, 0.5) - [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_etable"] albedo_color = Color(0.12, 0.08, 0.22, 1) -roughness = 0.6 metallic = 0.2 +roughness = 0.6 + +[sub_resource type="BoxMesh" id="BoxMesh_etable"] +size = Vector3(1.4, 0.9, 1.4) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ebook"] albedo_color = Color(0.55, 0.08, 0.08, 1) roughness = 0.9 +[sub_resource type="BoxMesh" id="BoxMesh_ebook"] +size = Vector3(0.7, 0.12, 0.5) + [sub_resource type="BoxShape3D" id="BoxShape3D_etable"] size = Vector3(1.4, 0.9, 1.4) @@ -261,18 +262,21 @@ mesh = SubResource("BoxMesh_chimney") [node name="CollisionShape3D" type="CollisionShape3D" parent="Forge" unique_id=726531191] shape = SubResource("BoxShape3D_forge") -[node name="EnchantingTable" type="StaticBody3D" parent="."] +[node name="EnchantingTable" type="StaticBody3D" parent="." unique_id=242813005] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8, 0.45, -8) metadata/is_enchanting_table = true -[node name="TableMesh" type="MeshInstance3D" parent="EnchantingTable"] -mesh = SubResource("BoxMesh_etable") +[node name="TableMesh" type="MeshInstance3D" parent="EnchantingTable" unique_id=1719378953] material_override = SubResource("StandardMaterial3D_etable") +mesh = SubResource("BoxMesh_etable") -[node name="BookMesh" type="MeshInstance3D" parent="EnchantingTable"] +[node name="BookMesh" type="MeshInstance3D" parent="EnchantingTable" unique_id=444214832] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.51, 0) -mesh = SubResource("BoxMesh_ebook") material_override = SubResource("StandardMaterial3D_ebook") +mesh = SubResource("BoxMesh_ebook") -[node name="CollisionShape3D" type="CollisionShape3D" parent="EnchantingTable"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="EnchantingTable" unique_id=352273224] shape = SubResource("BoxShape3D_etable") + +[node name="Iron" parent="." unique_id=611454609 instance=ExtResource("6_dke22")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.4976616, 0.104292765, -5.8715014) diff --git a/scenes/MetalPlate.tscn b/scenes/MetalPlate.tscn index 7c111e4..860d32b 100644 --- a/scenes/MetalPlate.tscn +++ b/scenes/MetalPlate.tscn @@ -25,3 +25,10 @@ mesh = SubResource("BoxMesh_1") [node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1642999883] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.005560264, 0.16739155, 0.003918484) shape = SubResource("BoxShape3D_1") + +[node name="Tooltip" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0) +billboard = 1 +text = "[E] Metal Plate ++1 Kick Tier" +outline_size = 6 diff --git a/scripts/MetalPlate.gd b/scripts/MetalPlate.gd index 5f841fc..e886349 100644 --- a/scripts/MetalPlate.gd +++ b/scripts/MetalPlate.gd @@ -19,6 +19,7 @@ var dead: bool = false var damage_modifier: float = 1.2 @onready var mesh_node: MeshInstance3D = $PlateMesh +@onready var tooltip: Label3D = $Tooltip var plate_mat: StandardMaterial3D const COLOR_IDLE := Color(0.6, 0.65, 0.72) @@ -26,8 +27,35 @@ const COLOR_IMPACT := Color(1.0, 1.0, 1.0) func _ready() -> void: add_to_group("kickable") + add_to_group("interactable") plate_mat = mesh_node.material_override.duplicate() as StandardMaterial3D mesh_node.material_override = plate_mat + tooltip.visible = false + +func _process(_delta: float) -> void: + if dead: + tooltip.visible = false + return + var players := get_tree().get_nodes_in_group("player") + if players.is_empty(): + tooltip.visible = false + return + var p := players[0] as Node3D + tooltip.visible = p != null and global_position.distance_to(p.global_position) < 2.5 + +func interact(player: Node) -> void: + if dead: + return + player.call("apply_upgrade_armor") + dead = true + set_physics_process(false) + tooltip.visible = false + remove_from_group("interactable") + remove_from_group("kickable") + var tw := create_tween() + tw.tween_property(self, "scale", Vector3(1.4, 0.1, 1.4), 0.15) + tw.tween_property(self, "scale", Vector3(0.0, 0.0, 0.0), 0.1) + tw.tween_callback(queue_free) func apply_collision_damage(dmg: float) -> void: _take_damage(dmg)