From 2150fb8de8e6d854472ef94e689f95872021a729 Mon Sep 17 00:00:00 2001 From: luke358 Date: Fri, 22 May 2026 21:36:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=94=9F=E5=91=BD?= =?UTF-8?q?=E5=80=BC=E5=9B=9E=E5=A4=8D=E4=BA=8B=E4=BB=B6=EF=BC=8C=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=B5=AE=E5=8A=A8=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autoloads/global.gd | 1 + resources/units/players/stats_player_well_rounded.tres | 1 + resources/waves/data/wave_1_to_5.tres | 2 +- scenes/arena/arena.gd | 4 ++++ scenes/unit/players/player.gd | 9 +++++++++ scenes/unit/players/player_well_rounded.tscn | 5 +++++ 6 files changed, 21 insertions(+), 1 deletion(-) diff --git a/autoloads/global.gd b/autoloads/global.gd index 8acb548..8cbdacd 100644 --- a/autoloads/global.gd +++ b/autoloads/global.gd @@ -2,6 +2,7 @@ extends Node signal on_create_block_text(unit: Node2D) signal on_create_damage_text(unit: Node2D, hitbox: HitboxComponent) +signal on_create_heal_text(unit: Node2D, heal: float) signal on_upgrade_selected diff --git a/resources/units/players/stats_player_well_rounded.tres b/resources/units/players/stats_player_well_rounded.tres index 573cf95..304791f 100644 --- a/resources/units/players/stats_player_well_rounded.tres +++ b/resources/units/players/stats_player_well_rounded.tres @@ -14,4 +14,5 @@ damage_increase_per_wave = 0.0 luck = 5.0 block_chance = 50.0 gold_drop = 0 +hp_regen = 1.0 metadata/_custom_type_script = "uid://dgjdpmaiufhs6" diff --git a/resources/waves/data/wave_1_to_5.tres b/resources/waves/data/wave_1_to_5.tres index 25ebb2f..9bc7562 100644 --- a/resources/waves/data/wave_1_to_5.tres +++ b/resources/waves/data/wave_1_to_5.tres @@ -28,7 +28,7 @@ metadata/_custom_type_script = "uid://rw3gxqh858sr" script = ExtResource("1_cx7cn") from = 1 to = 5 -wave_time = 5.0 +wave_time = 15.0 units = Array[ExtResource("2_78wao")]([SubResource("Resource_3lh5k"), SubResource("Resource_aei4b"), SubResource("Resource_w8f67")]) spawn_type = 0 fixed_spawn_time = 0.5 diff --git a/scenes/arena/arena.gd b/scenes/arena/arena.gd index 8d20e58..84f5b86 100644 --- a/scenes/arena/arena.gd +++ b/scenes/arena/arena.gd @@ -19,6 +19,7 @@ func _ready() -> void: Global.on_create_block_text.connect(_on_create_block_text) Global.on_create_damage_text.connect(_on_create_damage_text) Global.on_upgrade_selected.connect(_on_upgrade_selected) + Global.on_create_heal_text.connect(_on_create_heal_text) spawner.start_wave() @@ -57,6 +58,9 @@ func _on_create_damage_text(unit: Node2D, hitbox: HitboxComponent) -> void: var color := critical_color if hitbox.critical else normal_color text.setup(str(hitbox.damage), color) +func _on_create_heal_text(unit: Node2D, heal: float) -> void: + var text := crteat_floating_text(unit) + text.setup("+ %s" % heal, hp_color) func _on_upgrade_selected() -> void: upgrade_panel.hide() diff --git a/scenes/unit/players/player.gd b/scenes/unit/players/player.gd index 50c95bf..0656554 100644 --- a/scenes/unit/players/player.gd +++ b/scenes/unit/players/player.gd @@ -107,3 +107,12 @@ func _on_dash_timer_timeout() -> void: move_dir = Vector2.ZERO collision.set_deferred("disabled", false) dash_cooldown_timer.start() + + +func _on_hp_regen_timer_timeout() -> void: + if health_component.current_health <= 0: + return + if health_component.current_health < stats.health: + var heal := stats.hp_regen + health_component.heal(heal) + Global.on_create_heal_text.emit(self, heal) diff --git a/scenes/unit/players/player_well_rounded.tscn b/scenes/unit/players/player_well_rounded.tscn index 552b563..19db190 100644 --- a/scenes/unit/players/player_well_rounded.tscn +++ b/scenes/unit/players/player_well_rounded.tscn @@ -152,5 +152,10 @@ shape = SubResource("CircleShape2D_ht2l1") back_color = Color(0.13725491, 0.019607844, 0.02745098, 1) fill_color = Color(1, 0.2901961, 0.45490196, 1) +[node name="HPRegenTimer" type="Timer" parent="." index="11" unique_id=884883148] +wait_time = 3.0 +autostart = true + [connection signal="timeout" from="DashTimer" to="." method="_on_dash_timer_timeout"] [connection signal="timeout" from="TrailTimer" to="Visuals/Trail" method="_on_trail_timer_timeout"] +[connection signal="timeout" from="HPRegenTimer" to="." method="_on_hp_regen_timer_timeout"]