summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-23 14:54:48 -0400
committerbd <bdunahu@operationnull.com>2025-05-23 14:54:48 -0400
commitc278c21c5019b2e82651fec10b819c3b29b8ff7d (patch)
tree3806d4f4510e8f64df3ca15da024e905e163da74 /scripts
parent3e15dfe033217d16e3198f044dd717408553218c (diff)
Add gnome enemy, re-sprite wyvern
Diffstat (limited to 'scripts')
-rw-r--r--scripts/base_crawler.gd2
-rw-r--r--scripts/game_stats_config.gd15
-rw-r--r--scripts/gnome.gd11
-rw-r--r--scripts/gnome.gd.uid1
-rw-r--r--scripts/morale.gd2
-rw-r--r--scripts/wave_spawner.gd15
6 files changed, 32 insertions, 14 deletions
diff --git a/scripts/base_crawler.gd b/scripts/base_crawler.gd
index 3525e97..ffc726c 100644
--- a/scripts/base_crawler.gd
+++ b/scripts/base_crawler.gd
@@ -22,7 +22,7 @@ func _ready() -> void:
func _process(delta):
get_parent().set_progress(get_parent().get_progress() + speed * delta)
- if get_parent().get_progress_ratio() == 1:
+ if get_parent().get_progress_ratio() >= 1:
GameData.subtract_morale(damage)
queue_free()
diff --git a/scripts/game_stats_config.gd b/scripts/game_stats_config.gd
index ccbcd16..bc79bdd 100644
--- a/scripts/game_stats_config.gd
+++ b/scripts/game_stats_config.gd
@@ -4,17 +4,17 @@ class_name GameStatsConfig
# game stats
@export var starting_life : int = 15
@export var starting_morale : int = 10
-@export var max_wave : int = 1
# waves
-@export var wave_time : float = 40.0
+@export var max_wave : int = 3
+@export var wave_time : float = 30.0
@export var wave_targets = [
- 25, 65
+ 15, 40, 120
]
# defenders
-@export var warlock_damage : float = 5.0
-@export var warlock_fire_rate : float = 1.0
+@export var warlock_damage : float = 4.0
+@export var warlock_fire_rate : float = 1.2
@export var warlock_defender_range : float = 75.0
@export var warlock_defender_cost : int = 10
@@ -34,3 +34,8 @@ class_name GameStatsConfig
@export var soldier_speed : float = 30.0
@export var soldier_health : float = 35.0
@export var soldier_worth : float = 5.0
+
+@export var gnome_damage : float = 1.0
+@export var gnome_speed : float = 90
+@export var gnome_health : float = 8.0
+@export var gnome_worth : float = 3.0
diff --git a/scripts/gnome.gd b/scripts/gnome.gd
new file mode 100644
index 0000000..308e5fc
--- /dev/null
+++ b/scripts/gnome.gd
@@ -0,0 +1,11 @@
+extends "res://scripts/base_crawler.gd"
+
+var game_stats_config = preload("res://resources/game_stats_config.tres")
+
+func _ready() -> void:
+ damage = game_stats_config.gnome_damage
+ speed = game_stats_config.gnome_speed
+ max_health = game_stats_config.gnome_health
+ worth = game_stats_config.gnome_worth
+
+ super()
diff --git a/scripts/gnome.gd.uid b/scripts/gnome.gd.uid
new file mode 100644
index 0000000..1253706
--- /dev/null
+++ b/scripts/gnome.gd.uid
@@ -0,0 +1 @@
+uid://ctq24sn8yo6me
diff --git a/scripts/morale.gd b/scripts/morale.gd
index d5a8046..613c7f5 100644
--- a/scripts/morale.gd
+++ b/scripts/morale.gd
@@ -4,7 +4,7 @@ func _ready():
GameData.connect("morale_changed", Callable(self, "_on_morale_changed"))
update_label(GameData.get_morale())
-func _on_life_changed(new_morale: int) -> void:
+func _on_morale_changed(new_morale: int) -> void:
update_label(new_morale)
func update_label(new_morale: int) -> void:
diff --git a/scripts/wave_spawner.gd b/scripts/wave_spawner.gd
index eea656f..725f3e1 100644
--- a/scripts/wave_spawner.gd
+++ b/scripts/wave_spawner.gd
@@ -4,6 +4,7 @@ extends Node2D
@onready var game_stats_config = preload("res://resources/game_stats_config.tres")
@onready var fodder_enemy = preload("res://scenes/fodder.tscn")
@onready var soldier_enemy = preload("res://scenes/soldier.tscn")
+@onready var gnome_enemy = preload("res://scenes/gnome.tscn")
@onready var map = get_node("../Map")
@onready var _wave_timer = $Timer
@@ -12,9 +13,11 @@ extends Node2D
func _ready() -> void:
_wave_pool = [
- [fodder_enemy , soldier_enemy],
+ [fodder_enemy, soldier_enemy],
+ [soldier_enemy, fodder_enemy, gnome_enemy],
+ [gnome_enemy, gnome_enemy],
]
- _wave_timer = game_stats_config.wave_time
+ _wave_timer.wait_time = game_stats_config.wave_time
var curve : Curve2D = Curve2D.new()
var points : Array[Vector2i] = map.get_enemy_path()
@@ -32,7 +35,7 @@ func _ready() -> void:
func _on_timer_timeout():
var current_wave : int = GameData.get_current_wave()
# TODO win screen should play instead
- if current_wave > 1:
+ if current_wave > game_stats_config.max_wave:
return
spawn_wave(current_wave)
@@ -41,7 +44,7 @@ func _on_timer_timeout():
func spawn_wave(current_wave):
var selected_crawlers: Array = []
var total_worth : int = 0
- var target_worth : int = game_stats_config.wave_targets[current_wave]
+ var target_worth : int = game_stats_config.wave_targets[current_wave - 1]
while total_worth < target_worth:
var crawler_type = _select_crawler(current_wave)
@@ -58,8 +61,7 @@ func spawn_wave(current_wave):
func _select_crawler(current_wave) -> PackedScene:
var curr_wave_pool = _wave_pool[current_wave - 1]
- print(curr_wave_pool)
- if randi() % 100 < 70:
+ if randi() % 100 < 80:
# spawn fodder
return curr_wave_pool[0]
else:
@@ -68,7 +70,6 @@ func _select_crawler(current_wave) -> PackedScene:
func _spawn_crawler(crawler : PackedScene):
var follow_path : PathFollow2D = PathFollow2D.new()
- follow_path.set_progress(0)
follow_path.rotates = false
follow_path.loop = false
_path.add_child(follow_path)