diff --git a/scripts/managers/gauntlet_manager.gd b/scripts/managers/gauntlet_manager.gd index 22b16f4..0f2cf64 100644 --- a/scripts/managers/gauntlet_manager.gd +++ b/scripts/managers/gauntlet_manager.gd @@ -1824,9 +1824,6 @@ func _on_goal_count_updated(peer_id: int, count: int) -> void: emit_signal("cleanser_granted", peer_id) print("[Gauntlet] Player %d granted Cleanser (mission %d)" % [peer_id, completions]) - # Respawn mission tiles in non-sticky locations - _respawn_mission_tiles() - # Sync cleanser count to HUD rpc("sync_cleanser_count", peer_id, player_cleansers.get(peer_id, 0)) @@ -1834,51 +1831,7 @@ func _on_score_updated(peer_id: int, new_score: int) -> void: """Called when a player's score is updated.""" pass # Score sync handled by GoalsCycleManager -func _respawn_mission_tiles() -> void: - """Respawn mission tiles in non-sticky locations after mission completion.""" - if not gridmap: - gridmap = get_parent().get_node_or_null("EnhancedGridMap") - if not gridmap: - gridmap = get_node_or_null("/root/Main/EnhancedGridMap") - if not gridmap: return - - # Goal items: Heart(7), Diamond(8), Star(9), Coin(10) - var goal_items = [7, 8, 9, 10] - var tiles_spawned: int = 0 - - # Find empty non-sticky cells to place new tiles - var empty_cells: Array = [] - for x in range(ARENA_COLUMNS): - for z in range(ARENA_ROWS): - var pos = Vector2i(x, z) - if _is_npc_zone(pos): - continue - # Skip boundary walls - if x == 0 or x == ARENA_COLUMNS - 1 or z == 0 or z == ARENA_ROWS - 1: - continue - # Skip sticky cells - if sticky_cells.has(pos): - continue - # Check if cell is empty on Layer 1 - var current_item = gridmap.get_cell_item(Vector3i(x, 1, z)) - if current_item == -1: - empty_cells.append(pos) - - # Shuffle and place tiles - empty_cells.shuffle() - var tiles_to_place = min(empty_cells.size(), 6) # Light refill — avoid flooding the board while players collect - - for i in range(tiles_to_place): - var pos = empty_cells[i] - var tile_type = goal_items[randi() % goal_items.size()] - gridmap.set_cell_item(Vector3i(pos.x, 1, pos.y), tile_type) - tiles_spawned += 1 - - # Sync to clients - if main_scene: - main_scene.rpc("sync_grid_item", pos.x, 1, pos.y, tile_type) - - print("[Gauntlet] Respawned %d mission tiles" % tiles_spawned) + @rpc("authority", "call_local", "reliable") func sync_cleanser_count(peer_id: int, count: int) -> void: