From 1c54f7f2db6d8a42648a83563f3f45a5030b5ed6 Mon Sep 17 00:00:00 2001 From: Artur David Date: Tue, 7 Jul 2026 13:59:58 +0200 Subject: [PATCH] chain kill: laser spawns a shuriken at every enemy it kills Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_017NTjSa2VgCtWZWVm573NB6 --- scripts/laser.gd | 5 +++++ scripts/perk_effects.gd | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/scripts/laser.gd b/scripts/laser.gd index 9d87aac..a4b96aa 100644 --- a/scripts/laser.gd +++ b/scripts/laser.gd @@ -14,6 +14,7 @@ const FADE_OUT := 0.5 @onready var perk_effects = get_node("/root/Game/PerkEffects") var beam_seg := preload("res://scenes/beam.tscn") +var shuriken_scene := preload("res://scenes/shuriken.tscn") var target: Node2D = null var all_segs: Array = [] var mid_segs: Array = [] @@ -123,6 +124,10 @@ func retarget(new_target: Node2D) -> void: func do_damage_tick() -> void: if is_instance_valid(target) and not target.is_dying: target.take_damage(PRIMARY_TICK_DMG) + if perk_effects.laser_shuriken_on_kill and target.is_dying: + var sh = shuriken_scene.instantiate() + sh.global_position = target.global_position + get_parent().add_child(sh) var hit: Array = [] for seg in mid_segs: diff --git a/scripts/perk_effects.gd b/scripts/perk_effects.gd index d8e2d65..cae6bfa 100644 --- a/scripts/perk_effects.gd +++ b/scripts/perk_effects.gd @@ -11,6 +11,7 @@ var laser_retarget_enabled = false var shuriken_tag_enabled = false var tornado_push_on_cast = false var tornado_fruit_collect = false +var laser_shuriken_on_kill = false var throwing_knife_enabled = false var throwing_knife_cooldown: float = 2.0 var throwing_knife_count: int = 1 @@ -223,6 +224,15 @@ func _ready() -> void: rw.effect = enable_tornado_push available_perks.append(rw) + var lsk = Perk.new() + lsk.name = "Chain Kill" + lsk.description = "Laser spawns a free Shuriken at every enemy it kills" + lsk.stats = _stat_toggle("Shuriken on Kill") + lsk.spell = SpellLibrary.LASER + lsk.icon = _icon_laser + lsk.effect = enable_laser_shuriken_on_kill + available_perks.append(lsk) + var mp = Perk.new() mp.name = "Marked Prey" mp.description = "Shuriken marks enemies. The next spell that hits them triggers an extra explosion" @@ -265,6 +275,9 @@ func enable_tornado_push() -> void: func enable_tornado_fruit_collect() -> void: tornado_fruit_collect = true +func enable_laser_shuriken_on_kill() -> void: + laser_shuriken_on_kill = true + func double_shuriken(): witch.shuriken_count += 2