prototype vibe

This commit is contained in:
Marek Lenczewski
2026-04-16 17:20:57 +02:00
parent cf5979803e
commit f21e30eb55
72 changed files with 1330 additions and 70 deletions

View File

@@ -45,7 +45,7 @@ func _apply_passive(base: float, stat: String) -> float:
match stat:
"damage": mult = PlayerData.buff_damage
"heal": mult = PlayerData.buff_heal
return base * mult
return base * mult * PlayerData.level_scale
func _in_range(ability: Ability) -> bool:
if ability.ability_range <= 0 or ability.is_heal:
@@ -77,12 +77,13 @@ func _execute_aoe(player: Node, ability: Ability, dmg: float) -> bool:
EventBus.attack_executed.emit(player, player.global_position, -player.global_transform.basis.z, dmg)
return true
var hit := false
for enemy in get_tree().get_nodes_in_group("enemies"):
var dist: float = player.global_position.distance_to(enemy.global_position)
var targets: Array = get_tree().get_nodes_in_group("enemies") + get_tree().get_nodes_in_group("portals")
for target in targets:
var dist: float = player.global_position.distance_to(target.global_position)
if dist <= ability.ability_range:
EventBus.damage_requested.emit(player, enemy, dmg)
EventBus.damage_requested.emit(player, target, dmg)
if ability.element != 0:
EventBus.element_damage_dealt.emit(player, enemy, dmg, ability.element)
EventBus.element_damage_dealt.emit(player, target, dmg, ability.element)
hit = true
if hit:
EventBus.attack_executed.emit(player, player.global_position, -player.global_transform.basis.z, dmg)
@@ -116,12 +117,13 @@ func _execute_ult(player: Node, ability: Ability, dmg: float) -> bool:
if ability.element != 0:
EventBus.element_damage_dealt.emit(player, target, dmg * 5.0, ability.element)
var splash_range: float = ability.aoe_radius if ability.aoe_radius > 0 else ability.ability_range
for enemy in get_tree().get_nodes_in_group("enemies"):
if enemy != target and is_instance_valid(enemy):
var enemy_dist: float = target.global_position.distance_to(enemy.global_position)
if enemy_dist <= splash_range:
EventBus.damage_requested.emit(player, enemy, dmg * 2.0)
var splash_targets: Array = get_tree().get_nodes_in_group("enemies") + get_tree().get_nodes_in_group("portals")
for other in splash_targets:
if other != target and is_instance_valid(other):
var other_dist: float = target.global_position.distance_to(other.global_position)
if other_dist <= splash_range:
EventBus.damage_requested.emit(player, other, dmg * 2.0)
if ability.element != 0:
EventBus.element_damage_dealt.emit(player, enemy, dmg * 2.0, ability.element)
EventBus.element_damage_dealt.emit(player, other, dmg * 2.0, ability.element)
EventBus.attack_executed.emit(player, player.global_position, -player.global_transform.basis.z, dmg * 5.0)
return true