repeat task.wait() until game:IsLoaded() getgenv().autofarm = true local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local ReplicatedStorage = game:GetService("ReplicatedStorage") local Services = ReplicatedStorage.ReplicatedStorage.Packages.Knit.Services local PartyService = Services.PartyService local GetPartyFromPlayer = PartyService.RF.GetPartyFromPlayer local VoteOn = PartyService.RF.VoteOn local StartDungeon = Services.DungeonService.RF.StartDungeon local UseSword = Services.WeaponService.RF.UseSword function createDungeon(name, difficulty, join, hardcore) CreateParty:InvokeServer(name, difficulty, join, not hardcore and "Normal") StartParty:InvokeServer(GetPartyFromPlayer:InvokeServer(LocalPlayer)['Data']['UUID']) end function retry() VoteOn:InvokeServer("Retry") end function goNext() VoteOn:InvokeServer("Next") end if game.PlaceId == 10515146389 then createDungeon("SnowCastle", "Hell", "All", "Normal") end function startDungeon() StartDungeon:InvokeServer() end function getAliveMobs() local mobs = {} for _,v in next, workspace.Mobs:GetChildren() do if v:FindFirstChild("Humanoid") and v.PrimaryPart and v.Humanoid.Health > 0 then table.insert(mobs, v) end end return mobs end function swing() UseSword:InvokeServer() end -- THIS IS FOR DODGE ATTACKS, DOESN'T WORK YET. FEEL FREE TO MAKE IT WORK function isPositionClear(position, obstacles) for _, obstacle in pairs(obstacles) do if obstacle.Parent and obstacle.Name == "Warning" and obstacle.Transparency ~= 1 then local distance = (Vector3.new(position.X, 0, position.Z) - Vector3.new(obstacle.Position.X, 0, obstacle.Position.Y)).Magnitude if distance - 1 < (obstacle.Size.Magnitude / 2) then return false end end end return true end function dogeAttacks(targetPosition, obstacles) for pos1 = 1,100 do for neg1 = -1, 1, 2 do for pos2 = 1,100 do for neg2 = -1, 1, 2 do local randomOffset = Vector3.new(pos1 * neg1, 0, pos2 * neg2) local newPosition = targetPosition + randomOffset if isPositionClear(newPosition, obstacles) then return newPosition end end end end end return nil end startDungeon() -- THIS IS FOR DODGE ATTACKS, DOESN'T WORK YET. FEEL FREE TO MAKE IT WORK --[[ local obstacles = {} workspace.Effects.ChildAdded:Connect(function(child) wait() if child:IsA("BasePart") then table.insert(obstacles, child) else for _,child in next, child:GetChildren() do if child:IsA("BasePart") then task.spawn(function() table.insert(obstacles, child) end) end end end end) workspace.Effects.ChildRemoved:Connect(function(child) if child:IsA("BasePart") then table.remove(obstacles, table.find(obstacles, child)) else for _,child in next, child:GetChildren() do if child:IsA("BasePart") then table.remove(obstacles, table.find(obstacles, child)) end end end end) ]] task.spawn(function() while task.wait() and getgenv().autofarm do if LocalPlayer.Character and LocalPlayer.Character.PrimaryPart then LocalPlayer.Character.PrimaryPart.Velocity = Vector3.new(0,0,0) end end end) function killMob(mob) task.wait() if LocalPlayer.Character and LocalPlayer.Character.PrimaryPart and mob.PrimaryPart and mob:FindFirstChild("Humanoid") and mob.Humanoid.Health > 0 then local targetPosition = (mob.PrimaryPart.CFrame).p + Vector3.new(0,4,0) if not targetPosition then LocalPlayer.Character.PrimaryPart.CFrame = CFrame.new(1000,100,1000) else local oldHealth = mob.Humanoid.Health repeat LocalPlayer.Character.PrimaryPart.CFrame = CFrame.new(targetPosition, mob.PrimaryPart.Position) task.wait() swing() until not LocalPlayer.Character or not LocalPlayer.Character.PrimaryPart or mob.Humanoid.Health ~= oldHealth or #mob.Humanoid:GetPlayingAnimationTracks() > 1 if LocalPlayer.Character and LocalPlayer.Character.PrimaryPart then LocalPlayer.Character.PrimaryPart.CFrame = LocalPlayer.Character.PrimaryPart.CFrame + Vector3.new(0,50,0) end end end end function pickupShit() for _,v in next, workspace.Camera.Drops:GetChildren() do if v:FindFirstChild("Center") and v.Center:FindFirstChild("ProximityPrompt") then fireproximityprompt(v.Center.ProximityPrompt) end end end while getgenv().autofarm and task.wait() do for _, mob in next, getAliveMobs() do killMob(mob) pickupShit() end if game:GetService("Players").LocalPlayer.PlayerGui.DungeonComplete.Main.Visible then retry() end end