diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/base_crawler.gd | 2 | ||||
-rw-r--r-- | scripts/game_stats_config.gd | 15 | ||||
-rw-r--r-- | scripts/gnome.gd | 11 | ||||
-rw-r--r-- | scripts/gnome.gd.uid | 1 | ||||
-rw-r--r-- | scripts/morale.gd | 2 | ||||
-rw-r--r-- | scripts/wave_spawner.gd | 15 |
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) |