Wave escalation and the Snippest boss

Escalation (EnemySpawner exports, all tunable):
- Wave size grows +1 enemy per wave, capped at 20
- Enemy health +15% and damage +10% per wave, applied identically on
  every peer via the spawn RPC before _ready (so hitbox stats and
  current_health pick them up)

Boss milestone every 5th wave: the Snippest - the basic lobster at
5x scale and 5x combat stats (50 HP, 25 damage, 5x knockback and
reach). Movement deliberately not 5x (1.2x - it lumbers). Pays 250
gold and always drops a health orb. Wave escalation multipliers stack
on top, so later bosses keep scaling.

Boss scene instances basic_enemy.tscn with the BossLobster script;
visual/collision children are scaled uniformly in code (not the
CharacterBody3D root, not shared shape resources).
This commit is contained in:
2026-07-02 22:27:14 +01:00
parent fb10f7b042
commit 8f28304d0f
4 changed files with 105 additions and 6 deletions
+3 -1
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://blm8lav3xh2yw"]
[gd_scene load_steps=5 format=3 uid="uid://blm8lav3xh2yw"]
[ext_resource type="Script" path="res://level/scripts/enemy_spawner.gd" id="1_spawner"]
[ext_resource type="PackedScene" uid="uid://byknup31d2b53" path="res://level/scenes/enemies/basic_enemy.tscn" id="2_basic_enemy"]
[ext_resource type="PackedScene" path="res://level/scenes/enemies/boss_lobster.tscn" id="3_boss"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_indicator"]
albedo_color = Color(1, 0.5, 0, 0.3)
@@ -17,6 +18,7 @@ enemies_per_wave = 10
auto_start_next_wave = false
wave_delay = 5.0
enemy_scenes = Array[PackedScene]([ExtResource("2_basic_enemy")])
boss_scene = ExtResource("3_boss")
[node name="SpawnRadiusIndicator" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)