
Key Required VerifiedUniversal
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Library = loadstring(game:HttpGet(
"https://raw.githubusercontent.com/theneutral0ne/wally-modified/refs/heads/main/wally-modified.lua"
))()
local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
LocalPlayer.CharacterAdded:Connect(function(NewCharacter)
Character = NewCharacter
end)
local Flags = {
AutoFill = false,
AutoPour = false,
AutoTake = false,
}
local Remotes = require(ReplicatedStorage.Verdant.Remotes)
local Drains = {}
local Chests = {}
for _, obj in pairs(getgc(true)) do
if type(obj) == "table" and rawget(obj, "_draining") ~= nil and rawget(obj, "_waterGen") ~= nil then
table.insert(Drains, obj)
end
if type(obj) == "table" and rawget(obj, "_opened") ~= nil and rawget(obj, "_instance") ~= nil then
table.insert(Chests, obj)
end
end
local Window = Library:CreateWindow("Drain the Lake", {
persistwindow = false,
itemspacing = 2,
underlinecolor = "rainbow",
togglestyle = "checkmark",
usehiddengui = true,
})
Window:Section("Main")
Window:Toggle("Auto Fill", {
location = flags,
flag = "AutoFill",
default = false,
}, function(State)
Flags.AutoFill = State
end)
Window:Toggle("Auto Pour", {
location = flags,
flag = "AutoPour",
default = false,
}, function(State)
Flags.AutoPour = State
end)
Window:Toggle("Auto Take", {
location = flags,
flag = "AutoTake",
default = false,
}, function(State)
Flags.AutoTake = State
end)
Window:Button("Collect Chests", {
flag = "CollectChests",
}, function()
local AutoPourApi = Library:GetControlApiByFlag("AutoPour")
AutoPourApi:SetEnabled(false)
local OldPosition = Character.HumanoidRootPart.CFrame
for _, Chest in Chests do
local success = pcall(function()
while not Chest._opened do
if Chest._instance:IsA("BasePart") then
task.wait()
Character.HumanoidRootPart.CFrame = Chest._instance.CFrame
Remotes:Fire("Chest.Open", Chest._instance)
else
break
end
end
end)
if not success then
break
end
end
Character.HumanoidRootPart.CFrame = OldPosition
local ButtonApi = Library:GetControlApiByFlag("CollectChests")
ButtonApi:SetVisible(false)
end)
function Pour()
if not Flags.AlreadyPouring then
Flags.AlreadyPouring = true
OldPosition = Character.HumanoidRootPart.CFrame
local TargetDrain
for _,Drain in Drains do
if not Drain._draining then
TargetDrain = Drain
break
end
end
while BucketFill >= 1 do
task.wait()
Character.HumanoidRootPart.CFrame = TargetDrain._vacuum.WorldPivot
Remotes:Fire("Bucket.Poured", TargetDrain._prompt)
end
Character.HumanoidRootPart.CFrame = OldPosition
Flags.AlreadyPouring = false
end
end
RunService.RenderStepped:Connect(function(Delta)
BucketFill = LocalPlayer:GetAttribute("BucketFill")
if not BucketFill then
return
end
if Flags.AutoTake then
for _,Drain in Drains do
if Drain._awaitingTake then
Remotes:Fire("Tokens.Take", Drain._prompt)
fireproximityprompt(Drain._takePrompt, Character.HumanoidRootPart, 0)
fireproximityprompt(Drain._takePrompt, Character.HumanoidRootPart, 1)
end
end
end
if Flags.AutoFill and BucketFill < 1 then
Remotes:Fire("Bucket.Used")
end
if Flags.AutoPour and BucketFill >= 1 then
if not Flags.AlreadyPouring then
Pour()
end
end
end)No comments yet for this script.



