diff --git a/ruf-der-pilze/scripts/network_manager.gd b/ruf-der-pilze/scripts/network_manager.gd index 2d4143b..b45c638 100644 --- a/ruf-der-pilze/scripts/network_manager.gd +++ b/ruf-der-pilze/scripts/network_manager.gd @@ -169,6 +169,21 @@ func sync_player_position(player_id: int, position: Vector3, rotation: Vector3) GameState.update_player_transform(player_id, position, rotation) +# DM calls this on server only via rpc_id(1, level) +@rpc("any_peer", "call_remote", "reliable") +func request_spore_level(level: float) -> void: + if not multiplayer.is_server(): return + var requester_id := multiplayer.get_remote_sender_id() + if players.get(requester_id, {}).get("role", "") != "dm": return + _relay_spore_level.rpc(level) + + +# Server broadcasts to all clients including itself +@rpc("authority", "call_local", "reliable") +func _relay_spore_level(level: float) -> void: + SporeLevel.current_level = level + + # Client calls this on server only (rpc_id(1, ...)) @rpc("any_peer", "call_remote", "reliable") func broadcast_roll(roller_peer_id: int, d20_result: int, modifier: int) -> void: