rework AOE Fireball as an impact archetype, add fireball-spawns-tornado

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main
Artur David 2026-06-23 08:46:22 +02:00
parent 83c8a61f14
commit 0ad1ce1ca0
2 changed files with 38 additions and 14 deletions

View File

@ -1,7 +1,7 @@
extends ProjectileBase
var fireball_aoe = false
var explosion_scene = preload("res://scenes/explosion.tscn")
var tornado_scene = preload("res://scenes/tornado.tscn")
@onready var perk_effects = get_node("/root/Game/PerkEffects")
func _ready() -> void:
@ -9,12 +9,23 @@ func _ready() -> void:
damage = 10
func _on_body_entered(body: Node2D) -> void:
fireball_aoe = perk_effects.fireball_aoe_enabled
if body.is_in_group("enemies"):
if not body.is_in_group("enemies"):
return
body.take_damage(damage)
if fireball_aoe:
match perk_effects.get_mode("fireball.impact"):
"explosion":
_spawn_explosion()
"spawn_tornado":
_spawn_tornado()
queue_free()
func _spawn_explosion() -> void:
var boom = explosion_scene.instantiate()
boom.global_position = global_position
get_parent().call_deferred("add_child", boom)
queue_free()
func _spawn_tornado() -> void:
var tw = tornado_scene.instantiate()
tw.global_position = global_position
get_parent().call_deferred("add_child", tw)

View File

@ -7,7 +7,6 @@ var throwing_knife = preload("res://scenes/throwing_knive.tscn")
var cauldron
var available_perks: Array[Perk] = []
var spell_modes: Dictionary = {}
var fireball_aoe_enabled = false
var laser_retarget_enabled = false
var throwing_knife_enabled = false
var throwing_knife_cooldown: float = 2.0
@ -85,13 +84,24 @@ func _ready() -> void:
var faoe = Perk.new()
faoe.name = "AOE Fireball"
faoe.description = "Fireballs explode on impact"
faoe.description = "Fireballs explode on impact instead of hitting a single enemy"
faoe.stats = _stat_toggle("AOE")
faoe.spell = SpellLibrary.FIREBALL
faoe.icon = _icon_fireball
faoe.effect = fireball_aoe
faoe.archetype_slot = "fireball.impact"
faoe.effect = fireball_set_impact_explosion
available_perks.append(faoe)
var ftor = Perk.new()
ftor.name = "Fireball: Spawn Tornado"
ftor.description = "Fireballs spawn a tornado on impact instead of exploding"
ftor.stats = _stat_toggle("Tornado")
ftor.spell = SpellLibrary.FIREBALL
ftor.icon = _icon_fireball
ftor.archetype_slot = "fireball.impact"
ftor.effect = fireball_set_impact_tornado
available_perks.append(ftor)
var fsp = Perk.new()
fsp.name = "Fireball Spread"
fsp.description = "Fireballs target more enemies"
@ -173,8 +183,11 @@ func laser_retarget():
func double_shuriken():
witch.shuriken_count += 2
func fireball_aoe():
fireball_aoe_enabled = true
func fireball_set_impact_explosion() -> void:
set_mode("fireball.impact", "explosion")
func fireball_set_impact_tornado() -> void:
set_mode("fireball.impact", "spawn_tornado")
func fireball_spread():
witch.fireball_max_targets = witch.fireball_max_targets * 1.5