Script Do Simulador De Lavagem De Pressao -

// 4. Visual & Audio feedback if dirt_removed > 0: SpawnDirtParticles(hit_point, dirt_removed) PlaySound("pressure_hiss", volume = cleaning_power / 100) UpdateComboSystem(dirt_removed) player_score += dirt_removed * 10

function PurchaseUpgrade(upgrade_id): int cost = GetUpgradeCost(upgrade_id) if coins >= cost: coins -= cost switch upgrade_id: case "Pressure+": pressure_upgrade += 0.2 current_psi = 1200 * pressure_upgrade case "Heater+": heat_upgrade += 0.25 max_temp = 100 * heat_upgrade case "Fuel Tank": fuel_capacity += 0.3 max_fuel = 100 * fuel_capacity SaveProgress() return true else: PlaySound("error_deny") return false // Called when a surface reaches 100% clean function OnSurfaceCleaned(surface): PlaySound("achievement_ding") SpawnParticles("sparkle", surface.center) player_score += 500 // Completion bonus CheckAllSurfaces() // See if level is done // Debug console commands function DebugCommand(command): if command == "refill": RefillResources() if command == "max_power": current_psi = 5000 if command == "complete_level": for each surface in scene_surfaces: surface.dirt_amount = 0.0 10. Conclusion This script provides a robust foundation for a Pressure Washer Simulator. It balances arcade feedback (combo system, score) with mechanical simulation (overheating, fuel, nozzle selection). The modular design allows easy expansion for new dirt types (chewing gum, graffiti) or power-ups (turbo boost, foam cannon).

// 5. Thermal buildup UpdateTemperature(delta_time, cleaning_power) function CalculateCleaningPower(): // Base PSI * Nozzle Modifier * Temperature Bonus * Impact distance float base = current_psi

function IsFullyClean(): return GetAverageDirt() < 0.01 To reward continuous cleaning without stopping. Script do Simulador de Lavagem de Pressao

int combo_counter = 0 float combo_multiplier = 1.0 function UpdateComboSystem(dirt_removed): if dirt_removed > 0: combo_timer = 3.0 // Reset timer to 3 seconds combo_counter += 1

class CleanableSurface: float dirt_map[1024][1024] // Virtual texture for dirt (0=clean, 1=mud) float base_resistance // 0.2 (dust) to 0.9 (caked mud) float stain_type // Enum: MUD, OIL, RUST, MOSS function Clean(power, hit_point, angle): // Convert world hit to UV coordinate Vector2 uv = WorldToUV(hit_point) float radius = CalculateSplashRadius(angle) // Inches float total_cleaned = 0.0 for x in -radius to +radius: for y in -radius to +radius: float current_dirt = dirt_map[uv.x + x][uv.y + y] if current_dirt > 0: // Effective cleaning per tick float cleaning_rate = power * delta_time * 0.01 if stain_type == OIL and current_temp > 70: cleaning_rate *= 2.0 // Hot water melts oil float removed = Min(current_dirt, cleaning_rate) dirt_map[uv.x + x][uv.y + y] -= removed total_cleaned += removed // Update visual mesh/material UpdateDecalTexture(dirt_map) return total_cleaned

return final_power Prevents infinite spraying and simulates engine wear. It balances arcade feedback (combo system, score) with

function OnTriggerHeld(delta_time, hit_point, hit_surface): if fuel_level <= 0.0: PlaySound("engine_sputter") ShowWarning("Out of Fuel!") return if is_overheated == true: return // Block spraying until cooldown

function InitializeSimulator(): current_psi = 300.0 // Start with medium pressure current_temp = 20.0 // Cold water active_nozzle = NozzleType.GREEN fuel_level = 100.0 soap_level = 100.0 is_overheated = false combo_timer = 0.0 // Reset all dirt decals on surfaces for each surface in scene_surfaces: surface.dirt_amount = GetInitialDirtByLevel(current_level)

// --- UI & Progression --- int player_score = 0 int current_level = 1 float combo_timer = 0.0 // Timer for consecutive cleaning bool is_overheated = false Executed when the level loads or the simulator resets. Thermal buildup UpdateTemperature(delta_time

// --- Cleaning System --- float dirt_resistance = 0.0 to 1.0 (0 = clean, 1 = muddy) float heat_effectiveness = 0.5 // Hotter water cleans grease faster

if IsSpraying(): current_temp += heat_generated else: current_temp -= cooling

if combo_counter >= 10: combo_multiplier = 1.5 if combo_counter >= 25: combo_multiplier = 2.0 if combo_counter >= 50: combo_multiplier = 3.0 else: // Called every frame: decrement timer combo_timer -= delta_time if combo_timer <= 0.0: combo_counter = 0 combo_multiplier = 1.0 function OnLevelComplete(): int bonus = player_score * (fuel_level / 100) // Fuel efficiency bonus int total = player_score + bonus UnlockNextLevel() ShowScoreScreen(total) class UpgradeManager: int coins = 0 // Upgrade paths float pressure_upgrade = 1.0 // Multiplier: 1.0, 1.2, 1.5, 2.0 float heat_upgrade = 1.0 // Max temp: 100, 120, 150°C float fuel_capacity = 1.0 // Multiplier

function UpdateTemperature(delta_time, cleaning_power): // Heat generation: more power = more heat float heat_generated = cleaning_power * 0.05 * delta_time // Passive cooling float cooling = 15.0 * delta_time // 15°C per second idle