This commit is contained in:
Marek Lenczewski
2026-04-02 16:02:24 +02:00
parent e76c66eda6
commit 47f4fe3d90
106 changed files with 434 additions and 204 deletions

37
systems/buff_system.gd Normal file
View File

@@ -0,0 +1,37 @@
extends Node
func _ready() -> void:
EventBus.role_changed.connect(_on_role_changed)
func _on_role_changed(player: Node, _role_type: int) -> void:
var role: Node = player.get_node_or_null("Role")
if not role:
return
var ability_set: AbilitySet = role.get_ability_set()
if not ability_set:
return
var damage_mult := 1.0
var heal_mult := 1.0
var shield_mult := 1.0
for ability in ability_set.abilities:
if ability and ability.type == Ability.Type.PASSIVE:
var bonus: float = ability.damage / 100.0
match ability.passive_stat:
"damage":
damage_mult = 1.0 + bonus
"heal":
heal_mult = 1.0 + bonus
"shield":
shield_mult = 1.0 + bonus
Stats.set_stat(player, "buff_damage", damage_mult)
Stats.set_stat(player, "buff_heal", heal_mult)
Stats.set_stat(player, "buff_shield", shield_mult)
var base: BaseStats = Stats.get_base(player)
if base:
var new_max: float = base.max_shield * shield_mult
Stats.set_stat(player, "max_shield", new_max)
var shield: float = Stats.get_stat(player, "shield")
shield = min(shield, new_max)
Stats.set_stat(player, "shield", shield)
EventBus.shield_changed.emit(player, shield, new_max)
EventBus.buff_changed.emit(player, "damage", damage_mult)