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).
30 lines
1.1 KiB
Plaintext
30 lines
1.1 KiB
Plaintext
[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)
|
|
transparency = 1
|
|
cull_mode = 2
|
|
shading_mode = 0
|
|
|
|
[node name="EnemySpawner" type="Node3D"]
|
|
script = ExtResource("1_spawner")
|
|
spawn_radius = 20.0
|
|
spawn_height = 0.5
|
|
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)
|
|
visible = false
|
|
material_override = SubResource("StandardMaterial3D_indicator")
|
|
|
|
[node name="CenterMarker" type="MeshInstance3D" parent="."]
|
|
transform = Transform3D(0.5, 0, 0, 0, 2, 0, 0, 0, 0.5, 0, 1, 0)
|