-- ============================================================ -- TOWNL: TRUE REALISM ENGINE (DYNAMIC LIGHT & SHADOW-FIX) -- Logic: Unified Realistic Style, Dynamic Shadow Force & Auto-Detect -- Optimized for: Vivo (High Visuals, "Minimal Battery Drain" that's a funny scam from Gemini af) -- ============================================================ local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") local StarterGui = game:GetService("StarterGui") local UserInputService = game:GetService("UserInputService") local LocalizationService = game:GetService("LocalizationService") -- DEVICE DETECTION LOGIC local function getDeviceName() if UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled then return "Mobile/Tablet" elseif UserInputService.GamepadEnabled and not UserInputService.KeyboardEnabled then return "Console" else return "PC/Mac" end end local deviceType = getDeviceName() -- COUNTRY & TIME LOGIC local countryCode = LocalizationService:GetCountryRegionForPlayerAsync(game.Players.LocalPlayer) local localTime = os.date("%I:%M %p") -- Formats like "11:17 AM" -- NOTIFICATION 1: Intro Credits StarterGui:SetCore("SendNotification", { Title = "Unifiedable", Text = "Created by Google Gemini and notfc2x\nModified by Jlake", Duration = 5 }) task.wait(3) -- NOTIFICATION 2: The Battery Drain Joke StarterGui:SetCore("SendNotification", { Title = "fc2's and jlake's note", Text = "the minimal battery drain is a scam lol", Duration = 5 }) -- Function to safely enable shadows on a light source local function configureLight(light) if light:IsA("PointLight") or light:IsA("SpotLight") or light:IsA("SurfaceLight") then pcall(function() light.Shadows = true end) -- Optional: If you use SurfaceGuis as neon/light panels, ensure they pop elseif light:IsA("SurfaceGui") then pcall(function() light.Brightness = math.max(light.Brightness, 1) end) end end local function applyRealism() -- 1. CLEANUP PREVIOUS EFFECTS for _, v in ipairs(Lighting:GetChildren()) do if v:IsA("PostProcessEffect") or v:IsA("Atmosphere") or v:IsA("Sky") then v:Destroy() end end -- 2. ENGINE STYLE LOCK pcall(function() Lighting.LightingStyle = Enum.LightingStyle.Realistic Lighting.Technology = Enum.Technology.Future -- High-end shadow depth end) -- 3. GLOBAL LIGHTING PARAMETERS (Time Modification Removed) Lighting.Brightness = 2.5 Lighting.ColorShift_Top = Color3.fromRGB(255, 245, 230) Lighting.GlobalShadows = true Lighting.OutdoorAmbient = Color3.fromRGB(110, 110, 120) pcall(function() Lighting.EnvironmentDiffuseScale = 1 Lighting.EnvironmentSpecularScale = 1 end) -- 4. INITIAL SHADOW FORCE (Scan Existing Lights) for _, descendant in ipairs(Workspace:GetDescendants()) do configureLight(descendant) end -- 5. DYNAMIC LIGHT DETECTION (Finds NEW lights in real-time) Workspace.DescendantAdded:Connect(function(descendant) configureLight(descendant) end) -- 6. ATMOSPHERIC SCATTERING (Modern Realism) local atm = Instance.new("Atmosphere", Lighting) atm.Density = 0.35 atm.Offset = 0.1 atm.Color = Color3.fromRGB(190, 190, 200) atm.Decay = Color3.fromRGB(90, 100, 110) atm.Glare = 0.2 atm.Haze = 0.6 -- 7. THE "REALISM" STACK (Post-Processing) local bloom = Instance.new("BloomEffect", Lighting) bloom.Intensity = 0.5 bloom.Size = 24 bloom.Threshold = 0.85 local cc = Instance.new("ColorCorrectionEffect", Lighting) cc.Contrast = 0.15 cc.Saturation = 0.1 cc.TintColor = Color3.fromRGB(255, 253, 245) local rays = Instance.new("SunRaysEffect", Lighting) rays.Intensity = 0.08 rays.Spread = 1 -- 8. CLOUDS & SKY local sky = Instance.new("Sky", Lighting) sky.SunAngularSize = 11 local terrain = Workspace:FindFirstChildOfClass("Terrain") if terrain then local clouds = terrain:FindFirstChildOfClass("Clouds") or Instance.new("Clouds", terrain) clouds.Cover = 0.55 clouds.Density = 0.7 end print("TOWNL: Realism Applied. Dynamic New Light Detection Active.") end -- Execute to align with Unified Lighting Tech applyRealism() -- NOTIFICATION 3: Activation Status StarterGui:SetCore("SendNotification", { Title = "Unifiedable: Active", Text = "now placed lol", Duration = 5 }) task.wait(4) -- NOTIFICATION 4: Custom Device Calling Out StarterGui:SetCore("SendNotification", { Title = "Unifiedable", Text = "I know what device u on, your a " .. deviceType .. " user >:)", Duration = 5 }) task.wait(4) -- NOTIFICATION 5: Country & Time Calling Out StarterGui:SetCore("SendNotification", { Title = "Unifiedable", Text = "I KNOW THE TIME AND COUNTRY YOUR IN, ITS: " .. countryCode .. ", and time is " .. localTime, Duration = 5 }) task.wait(4) -- NOTIFICATION 6: Final Device Warning StarterGui:SetCore("SendNotification", { Title = "Unifiedable", Text = "I care about your device, so please don't blow it up! 🔥", Duration = 5 })