local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") local Player = Players.LocalPlayer local Backpack = Player:WaitForChild("Backpack") local CONFIG = { Name = "Mischievous Jug", MeshId = "rbxassetid://138938087560751", TextureId = "rbxassetid://113866484959663", ParticleTexture = "rbxassetid://95001390542167", MeshSize = Vector3.new(1.226, 1.187, 1.267), FirstUseDamageMin = 30, FirstUseDamageMax = 50, SpeedBoost = 8, EffectDuration = 10, TargetFOV = 110, ShakeStrength = 0.35, Saturation = 1, Contrast = -0.1, Brightness = 0.4, RedTint = Color3.fromRGB(255, 35, 35), DarkRedTint = Color3.fromRGB(120, 0, 0), HighlightFill = Color3.fromRGB(255, 0, 0), HighlightOutline = Color3.fromRGB(255, 45, 45), HighlightFillTransparency = 0.55, EntityScanInterval = 0.4, MaxNotifications = 4, } local MONSTER_NAMES = { "RushMoving", "AmbushMoving", "Eyes", "Halt", "SeekMoving", "A60", "A120", } local ITEM_NAMES = { "Crucifix", "Flashlight", "Lighter", "Lockpick", "SkeletonKey", "Battery", "Vitamins", "Smoothie", "Candle", "Bandage", } local DANGER_ENTITIES = { "A60", "A-60", "A120", "A-120", "A160", "A-160", "RushMoving", "AmbushMoving", "BackdoorRush", "FrozenAmbush", "BashMoving", "Bash", "BushMoving", "Bush", "ScribblesMoving", "ScribbleMoving", "Scribbles", "Eyes", "Halt", "SeekMoving", } local UsedFirstTime = false local JugUsed = false local EffectToken = 0 local Destroyed = false local Connections = {} local HighlightedObjects = {} local ActiveNotifications = {} local ActiveHumanoid local OriginalSpeed local OriginalFOV local ColorEffect local Tool local NotificationGui local NotificationContainer local WarningFrame local WarningVisible = false local Controller = { Enabled = true, UsedFirstTime = false, HighlightsEnabled = true, WarningEnabled = true, ParticlesEnabled = true, } _G.MischievousJug = Controller local function Disconnect(Name) if Connections[Name] then Connections[Name]:Disconnect() Connections[Name] = nil end end local function GetPivotPosition(Object) if Object:IsA("BasePart") then return Object.Position elseif Object:IsA("Model") then return Object:GetPivot().Position end return nil end local function IsListedObject(Object) for _, Name in ipairs(MONSTER_NAMES) do if Object.Name == Name then return true end end for _, Name in ipairs(ITEM_NAMES) do if Object.Name == Name then return true end end return false end local function IsDangerEntity(Object) return table.find(DANGER_ENTITIES, Object.Name) ~= nil end local function AddHighlight(Target) if not Controller.HighlightsEnabled then return end if not Target or HighlightedObjects[Target] then return end if not Target:IsA("Model") and not Target:IsA("BasePart") then return end local Highlight = Instance.new("Highlight") Highlight.Name = "MischievousJugHighlight" Highlight.Adornee = Target Highlight.FillColor = CONFIG.HighlightFill Highlight.OutlineColor = CONFIG.HighlightOutline Highlight.FillTransparency = CONFIG.HighlightFillTransparency Highlight.OutlineTransparency = 0 Highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop Highlight.Parent = Target HighlightedObjects[Target] = Highlight Target.Destroying:Connect(function() HighlightedObjects[Target] = nil end) end local function HighlightListedObject(Object) if not Controller.HighlightsEnabled then return end if IsListedObject(Object) then if Object:IsA("Model") or Object:IsA("BasePart") then AddHighlight(Object) elseif Object:IsA("Tool") then for _, Descendant in ipairs(Object:GetDescendants()) do if Descendant:IsA("BasePart") then AddHighlight(Descendant) end end end return end local Parent = Object.Parent if Parent and Parent:IsA("Tool") and IsListedObject(Parent) then if Object:IsA("BasePart") then AddHighlight(Object) end end end local function ScanObjects() if not Controller.HighlightsEnabled then return end for _, Object in ipairs(Workspace:GetDescendants()) do HighlightListedObject(Object) end local Character = Player.Character if Character then for _, Object in ipairs(Character:GetDescendants()) do HighlightListedObject(Object) end end for _, Object in ipairs(Backpack:GetDescendants()) do HighlightListedObject(Object) end end local function SetHighlights(State) Controller.HighlightsEnabled = State == true if Controller.HighlightsEnabled then ScanObjects() else for Object, Highlight in pairs(HighlightedObjects) do if Highlight then Highlight:Destroy() end HighlightedObjects[Object] = nil end end end local function GetCurrentRoomNumber() local Rooms = Workspace:FindFirstChild("CurrentRooms") local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if not Rooms or not Root then return nil end local ClosestNumber local ClosestDistance = math.huge for _, Room in ipairs(Rooms:GetChildren()) do local RoomNumber = tonumber(Room.Name) if RoomNumber then local Position = GetPivotPosition(Room) if Position then local Distance = (Position - Root.Position).Magnitude if Distance < ClosestDistance then ClosestDistance = Distance ClosestNumber = RoomNumber end end end end return ClosestNumber end local function CheckEntity() local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if not Root then return false, "None", 0 end local FoundName local ClosestDistance = math.huge local Checked = {} local function CheckContainer(Container) if not Container or Checked[Container] then return end Checked[Container] = true for _, Object in ipairs(Container:GetDescendants()) do if IsDangerEntity(Object) then local Position = GetPivotPosition(Object) if Position then local Distance = (Position - Root.Position).Magnitude if Distance < ClosestDistance then ClosestDistance = Distance FoundName = Object.Name end end end end for _, Object in ipairs(Container:GetChildren()) do if IsDangerEntity(Object) then local Position = GetPivotPosition(Object) if Position then local Distance = (Position - Root.Position).Magnitude if Distance < ClosestDistance then ClosestDistance = Distance FoundName = Object.Name end end end end end CheckContainer(Workspace) local Rooms = Workspace:FindFirstChild("CurrentRooms") local CurrentRoom = GetCurrentRoomNumber() if Rooms and CurrentRoom then for RoomNumber = CurrentRoom - 1, CurrentRoom + 3 do local Room = Rooms:FindFirstChild(tostring(RoomNumber)) if Room then CheckContainer(Room) end end end if FoundName then return true, FoundName, ClosestDistance end return false, "None", 0 end local function CreateLabel(Parent, Name, Text, Position, Size, FontSize, Color, Font) local Label = Instance.new("TextLabel") Label.Name = Name Label.BackgroundTransparency = 1 Label.Text = Text Label.Position = Position Label.Size = Size Label.Font = Font or Enum.Font.GothamMedium Label.TextSize = FontSize Label.TextColor3 = Color Label.TextXAlignment = Enum.TextXAlignment.Left Label.Parent = Parent return Label end local function CreateUI() local PlayerGui = Player:WaitForChild("PlayerGui") local Existing = PlayerGui:FindFirstChild("MischievousJugUI") if Existing then Existing:Destroy() end NotificationGui = Instance.new("ScreenGui") NotificationGui.Name = "MischievousJugUI" NotificationGui.ResetOnSpawn = false NotificationGui.IgnoreGuiInset = true NotificationGui.DisplayOrder = 100 NotificationGui.Parent = PlayerGui WarningFrame = Instance.new("Frame") WarningFrame.Name = "EntityWarning" WarningFrame.AnchorPoint = Vector2.new(1, 0) WarningFrame.Size = UDim2.fromOffset(320, 76) WarningFrame.Position = UDim2.new(1, 340, 0, 25) WarningFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 25) WarningFrame.BorderSizePixel = 0 WarningFrame.Visible = false WarningFrame.Parent = NotificationGui local WarningCorner = Instance.new("UICorner") WarningCorner.CornerRadius = UDim.new(0, 8) WarningCorner.Parent = WarningFrame CreateLabel( WarningFrame, "Title", "ENTITY DETECTED", UDim2.fromOffset(15, 9), UDim2.new(1, -25, 0, 20), 13, Color3.fromRGB(255, 90, 90), Enum.Font.GothamBold ) CreateLabel( WarningFrame, "Description", "An entity is nearby.", UDim2.fromOffset(15, 32), UDim2.new(1, -25, 0, 20), 12, Color3.fromRGB(225, 225, 230) ) CreateLabel( WarningFrame, "Status", "THREAT PRESENT", UDim2.fromOffset(15, 54), UDim2.new(1, -25, 0, 13), 9, Color3.fromRGB(140, 140, 150) ) NotificationContainer = Instance.new("Frame") NotificationContainer.Name = "NotificationContainer" NotificationContainer.AnchorPoint = Vector2.new(1, 0) NotificationContainer.Position = UDim2.new(1, -20, 0, 115) NotificationContainer.Size = UDim2.fromOffset(320, 0) NotificationContainer.AutomaticSize = Enum.AutomaticSize.Y NotificationContainer.BackgroundTransparency = 1 NotificationContainer.Parent = NotificationGui local ListLayout = Instance.new("UIListLayout") ListLayout.SortOrder = Enum.SortOrder.LayoutOrder ListLayout.Padding = UDim.new(0, 8) ListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right ListLayout.VerticalAlignment = Enum.VerticalAlignment.Top ListLayout.Parent = NotificationContainer end local function ShowNotification(Message, Type, Duration) if Destroyed or not NotificationContainer or not NotificationContainer.Parent then return end Duration = Duration or 4 local Colors = { Warning = Color3.fromRGB(255, 170, 45), Error = Color3.fromRGB(255, 110, 110), Success = Color3.fromRGB(140, 220, 170), Info = Color3.fromRGB(180, 190, 210), } local AccentColor = Colors[Type] or Colors.Info if #ActiveNotifications >= CONFIG.MaxNotifications then local Oldest = table.remove(ActiveNotifications, 1) if Oldest then Oldest:Destroy() end end local Frame = Instance.new("Frame") Frame.Name = "Notification" Frame.Size = UDim2.fromOffset(320, 70) Frame.BackgroundColor3 = Color3.fromRGB(22, 22, 25) Frame.BackgroundTransparency = 1 Frame.BorderSizePixel = 0 Frame.ClipsDescendants = true Frame.Parent = NotificationContainer local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 8) Corner.Parent = Frame CreateLabel( Frame, "Title", Type == "Error" and "MISCHIEVOUS JUG" or Type == "Success" and "SPEED BOOST" or Type == "Warning" and "ENTITY WARNING" or "MISCHIEVOUS JUG", UDim2.fromOffset(13, 8), UDim2.new(1, -25, 0, 20), 13, AccentColor, Enum.Font.GothamBold ) local Description = CreateLabel( Frame, "Description", tostring(Message), UDim2.fromOffset(13, 30), UDim2.new(1, -25, 0, 30), 11, Color3.fromRGB(225, 225, 230) ) Description.TextWrapped = true table.insert(ActiveNotifications, Frame) TweenService:Create( Frame, TweenInfo.new(0.22, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {BackgroundTransparency = 0} ):Play() task.delay(Duration, function() local Index = table.find(ActiveNotifications, Frame) if Index then table.remove(ActiveNotifications, Index) end if Frame.Parent then local Tween = TweenService:Create( Frame, TweenInfo.new(0.2, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {BackgroundTransparency = 1} ) Tween:Play() Tween.Completed:Wait() if Frame.Parent then Frame:Destroy() end end end) end local function UpdateWarningUI(Detected, EntityName, Distance) if not WarningFrame or not WarningFrame.Parent then return end if not Controller.WarningEnabled or not JugUsed then WarningVisible = false WarningFrame.Visible = false return end if Detected then WarningFrame.Description.Text = string.format( "Mischievious Light detected %s • %d studs away", EntityName, math.floor(Distance) ) if not WarningVisible then WarningVisible = true WarningFrame.Visible = true WarningFrame.Position = UDim2.new(1, 340, 0, 25) TweenService:Create( WarningFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Position = UDim2.new(1, -20, 0, 25)} ):Play() end else if WarningVisible then WarningVisible = false local Tween = TweenService:Create( WarningFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {Position = UDim2.new(1, 340, 0, 25)} ) Tween:Play() Tween.Completed:Once(function() if not WarningVisible and WarningFrame and WarningFrame.Parent then WarningFrame.Visible = false end end) end end end local function SetWarnings(State) Controller.WarningEnabled = State == true if not Controller.WarningEnabled and WarningFrame then WarningVisible = false WarningFrame.Visible = false end end local function SetParticles(State) Controller.ParticlesEnabled = State == true if Tool then local Handle = Tool:FindFirstChild("Handle") local Particles = Handle and Handle:FindFirstChild("RedJugParticles") if Particles then Particles.Enabled = Controller.ParticlesEnabled end end end local function CleanupEffect(RestoreMovement) Disconnect("Render") if RestoreMovement and ActiveHumanoid and ActiveHumanoid.Parent then if OriginalSpeed then ActiveHumanoid.WalkSpeed = OriginalSpeed end ActiveHumanoid.CameraOffset = Vector3.zero end if ColorEffect then ColorEffect:Destroy() ColorEffect = nil end local Camera = Workspace.CurrentCamera if Camera and OriginalFOV then Camera.FieldOfView = OriginalFOV end ActiveHumanoid = nil OriginalSpeed = nil OriginalFOV = nil end local function StartEffect() local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") local Root = Character and Character:FindFirstChild("HumanoidRootPart") local Camera = Workspace.CurrentCamera if not Humanoid or not Root or not Camera then return end EffectToken += 1 local CurrentToken = EffectToken if ActiveHumanoid ~= Humanoid then CleanupEffect(true) ActiveHumanoid = Humanoid OriginalSpeed = Humanoid.WalkSpeed OriginalFOV = Camera.FieldOfView else Disconnect("Render") end if ColorEffect then ColorEffect:Destroy() end ColorEffect = Instance.new("ColorCorrectionEffect") ColorEffect.Name = "MischievousJugEffect" ColorEffect.Saturation = CONFIG.Saturation ColorEffect.Contrast = CONFIG.Contrast ColorEffect.Brightness = CONFIG.Brightness ColorEffect.TintColor = CONFIG.RedTint ColorEffect.Parent = Lighting local StartTime = os.clock() Connections.Render = RunService.RenderStepped:Connect(function() if Destroyed or CurrentToken ~= EffectToken then return end if not Humanoid.Parent or not Root.Parent then EffectToken += 1 CleanupEffect(false) return end local Alpha = math.clamp( (os.clock() - StartTime) / CONFIG.EffectDuration, 0, 1 ) local Remaining = 1 - Alpha Humanoid.WalkSpeed = OriginalSpeed + CONFIG.SpeedBoost * Remaining local Shake = CONFIG.ShakeStrength * Remaining Humanoid.CameraOffset = Vector3.new( (math.random() - 0.5) * Shake, (math.random() - 0.5) * Shake, 0 ) local Wave = (math.sin(os.clock() * 4) + 1) / 2 if ColorEffect then ColorEffect.TintColor = CONFIG.DarkRedTint:Lerp(CONFIG.RedTint, Wave) ColorEffect.Saturation = CONFIG.Saturation * Remaining ColorEffect.Contrast = CONFIG.Contrast * Remaining ColorEffect.Brightness = CONFIG.Brightness * Remaining end Camera.FieldOfView = OriginalFOV + (CONFIG.TargetFOV - OriginalFOV) * Remaining if Alpha >= 1 then Humanoid.WalkSpeed = OriginalSpeed Humanoid.CameraOffset = Vector3.zero Camera.FieldOfView = OriginalFOV EffectToken += 1 CleanupEffect(false) end end) end local function ActivateJug() if Destroyed or not Controller.Enabled then return end local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if not Humanoid or Humanoid.Health <= 0 then return end JugUsed = true StartEffect() if not UsedFirstTime then UsedFirstTime = true Controller.UsedFirstTime = true local EntityPresent, EntityName, EntityDistance = CheckEntity() if EntityPresent then ShowNotification( " Mischievous Light Detected ENTITY " .. EntityName .. " At" .. math.floor(EntityDistance) .. " studs away.", "Warning", 5 ) end if Humanoid.Health > 60 then local Damage = math.random( CONFIG.FirstUseDamageMin, CONFIG.FirstUseDamageMax ) Damage = math.min(Damage, Humanoid.Health - 1) Humanoid:TakeDamage(Damage) ShowNotification( "Mischievous Light Took Away " .. Damage .. " HP.", "Error", 4 ) else ShowNotification( "ERROR.", "Success", 4 ) end else ShowNotification( "Mischievous Light, Gave You +8 Speed.", "Success", 4 ) end end local function CreateJug() local NewTool = Instance.new("Tool") NewTool.Name = CONFIG.Name NewTool.RequiresHandle = true NewTool.TextureId = "rbxassetid://81858007906366" NewTool.CanBeDropped = false NewTool.ToolTip = "whatever. you choose others." local Handle = Instance.new("Part") Handle.Name = "Handle" Handle.Size = Vector3.new(1, 1, 1) Handle.Transparency = 0 Handle.Color = Color3.fromRGB(110, 0, 0) Handle.Material = Enum.Material.SmoothPlastic Handle.CanCollide = false Handle.Massless = true Handle.CastShadow = false Handle.Parent = NewTool local Mesh = Instance.new("SpecialMesh") Mesh.MeshType = Enum.MeshType.FileMesh Mesh.MeshId = CONFIG.MeshId Mesh.TextureId = CONFIG.TextureId Mesh.Scale = CONFIG.MeshSize Mesh.Offset = Vector3.zero Mesh.Parent = Handle local Particles = Instance.new("ParticleEmitter") Particles.Name = "RedJugParticles" Particles.Texture = CONFIG.ParticleTexture Particles.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(120, 0, 0)), }) Particles.LightEmission = 0.7 Particles.Rate = 35 Particles.Lifetime = NumberRange.new(0.5, 1.2) Particles.Speed = NumberRange.new(1, 3) Particles.SpreadAngle = Vector2.new(180, 180) Particles.Rotation = NumberRange.new(0, 360) Particles.RotSpeed = NumberRange.new(-90, 90) Particles.Size = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.35), NumberSequenceKeypoint.new(0.5, 0.2), NumberSequenceKeypoint.new(1, 0), }) Particles.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.1), NumberSequenceKeypoint.new(1, 1), }) Particles.Enabled = Controller.ParticlesEnabled Particles.Parent = Handle NewTool.Parent = Backpack return NewTool end local function DestroyJugSystem() if Destroyed then return end Destroyed = true Controller.Enabled = false EffectToken += 1 CleanupEffect(true) for _, Connection in pairs(Connections) do Connection:Disconnect() end table.clear(Connections) for Object, Highlight in pairs(HighlightedObjects) do if Highlight then Highlight:Destroy() end HighlightedObjects[Object] = nil end if Tool and Tool.Parent then Tool:Destroy() end if NotificationGui and NotificationGui.Parent then NotificationGui:Destroy() end if _G.MischievousJug == Controller then _G.MischievousJug = nil end end Controller.Activate = ActivateJug Controller.SetHighlights = SetHighlights Controller.SetWarnings = SetWarnings Controller.SetParticles = SetParticles Controller.Destroy = DestroyJugSystem CreateUI() ScanObjects() Connections.HighlightAdded = Workspace.DescendantAdded:Connect(function(Object) HighlightListedObject(Object) local Parent = Object.Parent if Parent and IsListedObject(Parent) then HighlightListedObject(Parent) end end) Connections.BackpackAdded = Backpack.DescendantAdded:Connect(function(Object) HighlightListedObject(Object) local Parent = Object.Parent if Parent and IsListedObject(Parent) then HighlightListedObject(Parent) end end) task.spawn(function() while not Destroyed and NotificationGui and NotificationGui.Parent do if JugUsed then local Detected, EntityName, Distance = CheckEntity() UpdateWarningUI(Detected, EntityName, Distance) else UpdateWarningUI(false, "None", 0) end task.wait(CONFIG.EntityScanInterval) end end) Tool = CreateJug() Connections.Activated = Tool.Activated:Connect(ActivateJug) Connections.Character = Player.CharacterAdded:Connect(function() EffectToken += 1 CleanupEffect(false) task.wait(0.5) if not Destroyed then ScanObjects() end end) Connections.Destroying = Tool.Destroying:Connect(function() if not Destroyed then DestroyJugSystem() end end)