feat(gameplay): perles collectibles + recette amulette de soin
Area3D Pearl flottant/tournant qui émet une couleur nacrée, spawned périodiquement près du joueur (PearlSpawner, 3 max, intervalle 9s, zone haute du seafloor). Collecte automatique au contact, ajout à l'inventaire (item 105 Perle). Nouvelle recette : 2 perles + 1 corail rouge → Amulette de soin (item 106, consommable). Spawner désactivé sur serveur dédié headless. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,10 @@ func _ready() -> void:
|
||||
_chat_manager.name = "ChatManager"
|
||||
add_child(_chat_manager)
|
||||
|
||||
# Pearl spawner — skip on dedicated headless (no local player)
|
||||
if not (mode == NetworkManager.Mode.DEDICATED and DisplayServer.get_name() == "headless"):
|
||||
_spawn_pearl_system()
|
||||
|
||||
# Audio
|
||||
AudioManager.play_ambient_loop("underwater_ambient")
|
||||
AudioManager.play_music("underwater_theme")
|
||||
@@ -158,6 +162,18 @@ func _spawn_mobs() -> void:
|
||||
mob_spawner.player = mob_spawner.get_path_to(_my_dolphin)
|
||||
|
||||
|
||||
func _spawn_pearl_system() -> void:
|
||||
var spawner_script: Script = load("res://scripts/world/PearlSpawner.gd")
|
||||
if spawner_script == null:
|
||||
return
|
||||
var spawner := Node3D.new()
|
||||
spawner.name = "PearlSpawner"
|
||||
spawner.set_script(spawner_script)
|
||||
add_child(spawner)
|
||||
if is_instance_valid(_my_dolphin):
|
||||
spawner.player = spawner.get_path_to(_my_dolphin)
|
||||
|
||||
|
||||
func _connect_dolphin_signals(dolphin: CharacterBody3D) -> void:
|
||||
if dolphin.has_signal("block_break_requested"):
|
||||
dolphin.block_break_requested.connect(_on_block_break)
|
||||
|
||||
Reference in New Issue
Block a user