extends Node class_name ScarcityManager # ScarcityManager - Handles weighted random, tile generation for gameplay balance const TILES = [7, 8, 9, 10] const SPECIAL_TILES = [11, 12, 13, 14] # Weights (higher = more common) # Standard tiles: Heart, Diamond, Star, Coin const TILE_WEIGHTS = { 7: 100, # Heart 8: 100, # Diamond 9: 100, # Star 10: 100 # Coin } # Special tiles: Burn, Spawn, Freeze, Block, Invisible const SPECIAL_WEIGHTS = { 11: 5, 12: 5, 13: 5, 14: 5 } static func get_random_tile_id() -> int: var rng = RandomNumberGenerator.new() rng.randomize() var total_weight = 0 var pool = {} # Add standard tiles for id in TILE_WEIGHTS: pool[id] = TILE_WEIGHTS[id] total_weight += TILE_WEIGHTS[id] # Add special tiles for id in SPECIAL_WEIGHTS: pool[id] = SPECIAL_WEIGHTS[id] total_weight += SPECIAL_WEIGHTS[id] var roll = rng.randi_range(0, total_weight - 1) var current = 0 for id in pool: current += pool[id] if roll < current: return id return 7 # Fallback to Heart