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
|
extends ProjectileBase
|
||||||
|
|
||||||
var fireball_aoe = false
|
|
||||||
var explosion_scene = preload("res://scenes/explosion.tscn")
|
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")
|
@onready var perk_effects = get_node("/root/Game/PerkEffects")
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
@ -9,12 +9,23 @@ func _ready() -> void:
|
||||||
damage = 10
|
damage = 10
|
||||||
|
|
||||||
func _on_body_entered(body: Node2D) -> void:
|
func _on_body_entered(body: Node2D) -> void:
|
||||||
fireball_aoe = perk_effects.fireball_aoe_enabled
|
if not body.is_in_group("enemies"):
|
||||||
if body.is_in_group("enemies"):
|
return
|
||||||
body.take_damage(damage)
|
body.take_damage(damage)
|
||||||
if fireball_aoe:
|
match perk_effects.get_mode("fireball.impact"):
|
||||||
var boom = explosion_scene.instantiate()
|
"explosion":
|
||||||
boom.global_position = global_position
|
_spawn_explosion()
|
||||||
get_parent().call_deferred("add_child", boom)
|
"spawn_tornado":
|
||||||
queue_free()
|
_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)
|
||||||
|
|
||||||
|
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 cauldron
|
||||||
var available_perks: Array[Perk] = []
|
var available_perks: Array[Perk] = []
|
||||||
var spell_modes: Dictionary = {}
|
var spell_modes: Dictionary = {}
|
||||||
var fireball_aoe_enabled = false
|
|
||||||
var laser_retarget_enabled = false
|
var laser_retarget_enabled = false
|
||||||
var throwing_knife_enabled = false
|
var throwing_knife_enabled = false
|
||||||
var throwing_knife_cooldown: float = 2.0
|
var throwing_knife_cooldown: float = 2.0
|
||||||
|
|
@ -85,13 +84,24 @@ func _ready() -> void:
|
||||||
|
|
||||||
var faoe = Perk.new()
|
var faoe = Perk.new()
|
||||||
faoe.name = "AOE Fireball"
|
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.stats = _stat_toggle("AOE")
|
||||||
faoe.spell = SpellLibrary.FIREBALL
|
faoe.spell = SpellLibrary.FIREBALL
|
||||||
faoe.icon = _icon_fireball
|
faoe.icon = _icon_fireball
|
||||||
faoe.effect = fireball_aoe
|
faoe.archetype_slot = "fireball.impact"
|
||||||
|
faoe.effect = fireball_set_impact_explosion
|
||||||
available_perks.append(faoe)
|
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()
|
var fsp = Perk.new()
|
||||||
fsp.name = "Fireball Spread"
|
fsp.name = "Fireball Spread"
|
||||||
fsp.description = "Fireballs target more enemies"
|
fsp.description = "Fireballs target more enemies"
|
||||||
|
|
@ -173,8 +183,11 @@ func laser_retarget():
|
||||||
func double_shuriken():
|
func double_shuriken():
|
||||||
witch.shuriken_count += 2
|
witch.shuriken_count += 2
|
||||||
|
|
||||||
func fireball_aoe():
|
func fireball_set_impact_explosion() -> void:
|
||||||
fireball_aoe_enabled = true
|
set_mode("fireball.impact", "explosion")
|
||||||
|
|
||||||
|
func fireball_set_impact_tornado() -> void:
|
||||||
|
set_mode("fireball.impact", "spawn_tornado")
|
||||||
|
|
||||||
func fireball_spread():
|
func fireball_spread():
|
||||||
witch.fireball_max_targets = witch.fireball_max_targets * 1.5
|
witch.fireball_max_targets = witch.fireball_max_targets * 1.5
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue