75 lines
2.2 KiB
GDScript
75 lines
2.2 KiB
GDScript
extends Node2D
|
|
|
|
@onready var witch = get_node("/root/Game/Witch")
|
|
@onready var player = get_node("/root/Game/Player")
|
|
var fireball = preload("res://scenes/fireball.tscn")
|
|
var throwing_knife = preload("res://scenes/throwing_knive.tscn")
|
|
var cauldron
|
|
var available_perks: Array[Perk] = []
|
|
var fireball_aoe_enabled = false
|
|
var throwing_knife_enabled = false
|
|
var throwing_knife_cooldown: float = 2.0
|
|
var _knife_timer: float = 0.0
|
|
|
|
func _ready() -> void:
|
|
cauldron = witch.get_node("CauldronBar")
|
|
var dsh = Perk.new()
|
|
dsh.name = "Double Shuriken"
|
|
dsh.description = "Throw two shurikens instead of one"
|
|
dsh.effect = double_shuriken
|
|
available_perks.append(dsh)
|
|
var faoe = Perk.new()
|
|
faoe.name = "AOE Fireball"
|
|
faoe.description = "Fireballs spawn an explosion on contact"
|
|
faoe.effect = fireball_aoe
|
|
available_perks.append(faoe)
|
|
var bexp = Perk.new()
|
|
bexp.name = "Brew Explosion"
|
|
bexp.description = "The Witch casts an explosion on finishing a brew"
|
|
bexp.effect = brew_explosion
|
|
available_perks.append(bexp)
|
|
var tk = Perk.new()
|
|
tk.name = "Throwing Knife"
|
|
tk.description = "Automatically throw a knife at the nearest enemy every second"
|
|
tk.effect = enable_throwing_knife
|
|
available_perks.append(tk)
|
|
|
|
func _process(delta: float) -> void:
|
|
if throwing_knife_enabled:
|
|
_knife_timer += delta
|
|
if _knife_timer >= throwing_knife_cooldown:
|
|
_knife_timer = 0.0
|
|
_shoot_throwing_knife()
|
|
|
|
func double_shuriken():
|
|
witch.shuriken_count = 2
|
|
|
|
func fireball_aoe():
|
|
fireball_aoe_enabled = true
|
|
|
|
func brew_explosion():
|
|
cauldron.brew_explosion = true
|
|
|
|
func enable_throwing_knife():
|
|
throwing_knife_enabled = true
|
|
var upg = Perk.new()
|
|
upg.name = "Knife Cooldown"
|
|
upg.description = "Reduce throwing knife cooldown by 0.2s (min 1s)"
|
|
upg.effect = knife_cooldown_upgrade
|
|
available_perks.append(upg)
|
|
|
|
func knife_cooldown_upgrade():
|
|
throwing_knife_cooldown = maxf(1.0, throwing_knife_cooldown - 0.2)
|
|
if throwing_knife_cooldown > 1.0:
|
|
var upg = Perk.new()
|
|
upg.name = "Knife Cooldown"
|
|
upg.description = "Reduce throwing knife cooldown by 0.2s (min 1s)"
|
|
upg.effect = knife_cooldown_upgrade
|
|
available_perks.append(upg)
|
|
|
|
func _shoot_throwing_knife() -> void:
|
|
var knife = throwing_knife.instantiate()
|
|
knife.global_position = witch.global_position
|
|
witch.get_parent().add_child(knife)
|
|
|