From d74831df5611c1e300eec90e8d06c2fc360c0e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torjus=20H=C3=A5kestad?= Date: Sat, 23 Aug 2025 20:52:29 +0200 Subject: [PATCH] chore: gdformat bleed changes --- scenes/enemies/effects/enemy_effect_base.gd | 1 + scenes/enemies/effects/enemy_effect_bleed.gd | 3 +++ scenes/enemies/enemy_base.gd | 5 +++-- scenes/player.gd | 1 - scenes/puddle.gd | 1 + scenes/weapons/weapon_base.gd | 5 +++++ scenes/weapons/weapon_sword.gd | 4 +--- 7 files changed, 14 insertions(+), 6 deletions(-) diff --git a/scenes/enemies/effects/enemy_effect_base.gd b/scenes/enemies/effects/enemy_effect_base.gd index 4f3eeab..afa368e 100644 --- a/scenes/enemies/effects/enemy_effect_base.gd +++ b/scenes/enemies/effects/enemy_effect_base.gd @@ -3,5 +3,6 @@ extends Resource var enemy: EnemyBase + func apply(enemy: EnemyBase) -> void: push_error("%s does not implement apply" % self) diff --git a/scenes/enemies/effects/enemy_effect_bleed.gd b/scenes/enemies/effects/enemy_effect_bleed.gd index 1cd2601..ac8cf5d 100644 --- a/scenes/enemies/effects/enemy_effect_bleed.gd +++ b/scenes/enemies/effects/enemy_effect_bleed.gd @@ -11,10 +11,12 @@ var _enemy: EnemyBase const PUDDLE = preload("res://scenes/puddle.tscn") + func _init(enemy: EnemyBase, bleed_damage: float, duration: float): damage = bleed_damage _timer = Timer.new() + func apply(enemy: EnemyBase) -> void: enemy.effects.append(self) while _remaining_ticks > 0: @@ -26,5 +28,6 @@ func apply(enemy: EnemyBase) -> void: p.global_position = enemy.global_position enemy.effects.erase(self) + static func _is_bleeding(enemy: EnemyBase) -> bool: return false diff --git a/scenes/enemies/enemy_base.gd b/scenes/enemies/enemy_base.gd index 3afef25..f1a4327 100644 --- a/scenes/enemies/enemy_base.gd +++ b/scenes/enemies/enemy_base.gd @@ -20,7 +20,6 @@ var modifiers: Array[EnemyMod] = [] @onready var label: Label = $HBoxContainer/Label @onready var effect_container: HBoxContainer = $HBoxContainer/EffectContainer - var player: Player var enemy_name: String var target: Node2D @@ -34,6 +33,7 @@ var _path_update_timer: float = 0.0 var _compute_cache: KeyedCache = KeyedCache.new() var _effects_visible = [] + func _ready() -> void: enemy_name = _gen_name() match enemy_rarity: @@ -67,6 +67,7 @@ func _find_player(): func _gen_name() -> String: return "Unnamed enemy" + func _process(delta: float) -> void: for effect in effects: if effect in _effects_visible: @@ -75,7 +76,7 @@ func _process(delta: float) -> void: effect_sprite.texture = preload("res://assets/sprites/small_bleed_icon.png") effect_container.add_child(effect_sprite) _effects_visible.append(effect) - + func _physics_process(delta: float) -> void: if not target: diff --git a/scenes/player.gd b/scenes/player.gd index 44f1d40..3d3c373 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -31,7 +31,6 @@ func _ready() -> void: add_child(weapon) - func _physics_process(delta: float) -> void: if dead: return diff --git a/scenes/puddle.gd b/scenes/puddle.gd index ec96434..e359bed 100644 --- a/scenes/puddle.gd +++ b/scenes/puddle.gd @@ -4,6 +4,7 @@ extends Node2D @export var color: Color = Color.CRIMSON @onready var base: Sprite2D = $Base + func _ready() -> void: var player: Player = get_tree().get_first_node_in_group(GlobalConst.GROUP_PLAYER) var shader = preload("res://assets/shaders/base_color_tint.gdshader") diff --git a/scenes/weapons/weapon_base.gd b/scenes/weapons/weapon_base.gd index cb6f7a3..6f22270 100644 --- a/scenes/weapons/weapon_base.gd +++ b/scenes/weapons/weapon_base.gd @@ -25,9 +25,11 @@ enum WeaponTag { var _player: Player + func _ready() -> void: _player = get_tree().get_first_node_in_group(GlobalConst.GROUP_PLAYER) + func _on_attack_cd_timer_timeout() -> void: do_attack() @@ -87,15 +89,18 @@ func has_property(key: String) -> bool: return true return false + func did_crit() -> bool: var weapon_crit = get_calculated("attack_crit_chance") var player_crit = _player.player_stats.get_final("crit_chance", _player.modifiers) return randf() >= 1 - weapon_crit + player_crit + func did_bleed() -> bool: return randf() >= 1 - bleed_chance + func base_damage() -> Array[Variant]: var damage = get_calculated("attack_damage") var is_crit := did_crit() diff --git a/scenes/weapons/weapon_sword.gd b/scenes/weapons/weapon_sword.gd index c3dce36..2979fbe 100644 --- a/scenes/weapons/weapon_sword.gd +++ b/scenes/weapons/weapon_sword.gd @@ -9,8 +9,6 @@ const WEAPON_SWORD_PROJECTILE = preload("res://scenes/weapons/weapon_sword_proje signal projectile_hit(projectile: WeaponSwordProjectile, enemy: EnemyBase) - - func _ready() -> void: bleed_chance = 0.2 targeting_range_shape.shape.radius = attack_range @@ -48,7 +46,7 @@ func deal_damage(enemy: EnemyBase, damage_mult: float): var damage_and_crit = base_damage() # TODO: Fix crit value enemy.take_damage(damage_and_crit[0], damage_and_crit[1]) - + if did_bleed(): var bleed = EnemyEffectBleed.new(enemy, damage_and_crit[0], bleed_duration) bleed.apply(enemy)