Files
SurvivalOfTheSnippest/level/scripts/boss_lobster.gd
T

36 lines
1.2 KiB
GDScript
Raw Normal View History

2026-07-02 22:27:14 +01:00
extends BasicEnemy
class_name BossLobster
## The Snippest itself: a lobster five times the size with five times the stats.
## Spawned by the EnemySpawner on boss milestone waves.
const BOSS_MULTIPLIER := 5.0
func _ready():
# 5x combat stats - applied BEFORE super._ready() so the hitbox
# picks them up via set_stats(attack_damage, attack_knockback)
max_health *= BOSS_MULTIPLIER
attack_damage *= BOSS_MULTIPLIER
attack_knockback *= BOSS_MULTIPLIER
attack_range *= BOSS_MULTIPLIER # A 5x lobster has 5x reach
# Deliberately NOT 5x: movement (17.5 speed would be inescapable).
# Big things lumber. Tune here if the boss should be faster.
move_speed *= 1.2
# Boss rewards: jackpot gold, guaranteed health orb
gold_reward = 250
health_orb_drop_chance = 1.0
super._ready()
_apply_boss_scale()
## Uniformly scale the visual and collision children 5x around the root.
## Child-node scaling (not root CharacterBody3D scale, not shared shape
## resources) keeps physics sane and other lobsters unaffected.
func _apply_boss_scale():
for child_name in ["Mesh", "CollisionShape3D", "HurtBox", "HitBox"]:
var child = get_node_or_null(child_name)
if child:
child.transform = child.transform.scaled(Vector3.ONE * BOSS_MULTIPLIER)