rework AOE Fireball as an impact archetype, add fireball-spawns-tornado
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>main
parent
83c8a61f14
commit
0ad1ce1ca0
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue