game: add bleed
This commit is contained in:
@@ -8,13 +8,14 @@ const WEAPON_SWORD_PROJECTILE = preload("res://scenes/weapons/weapon_sword_proje
|
||||
|
||||
signal projectile_hit(projectile: WeaponSwordProjectile, enemy: EnemyBase)
|
||||
|
||||
var _player: Player
|
||||
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
bleed_chance = 0.2
|
||||
targeting_range_shape.shape.radius = attack_range
|
||||
projectile_hit.connect(_on_projectile_hit)
|
||||
_player = get_tree().get_first_node_in_group(GlobalConst.GROUP_PLAYER)
|
||||
super._ready()
|
||||
|
||||
|
||||
func do_attack() -> void:
|
||||
@@ -44,13 +45,13 @@ func _do_active() -> void:
|
||||
|
||||
|
||||
func deal_damage(enemy: EnemyBase, damage_mult: float):
|
||||
var weapon_crit = get_calculated("attack_crit_chance")
|
||||
var player_crit = _player.player_stats.get_final("crit_chance", _player.modifiers)
|
||||
var damage = get_calculated("attack_damage")
|
||||
var is_crit = randf() >= 1 - weapon_crit + player_crit
|
||||
if is_crit:
|
||||
damage *= _player.player_stats.get_final("crit_multiplier", _player.modifiers)
|
||||
enemy.take_damage(damage * damage_mult, is_crit)
|
||||
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)
|
||||
|
||||
|
||||
func _on_projectile_hit(projectile: WeaponSwordProjectile, enemy: EnemyBase, damage_mult: float):
|
||||
|
Reference in New Issue
Block a user