_G.Toggle = true _G.DipOnLowHealth = true _G.PrefferedInnKeeper = "Keeper" -- ^ don't use this for now _G.MaxDistance = 2500 -- change this variable to the max distance the character can venture to the mob to slay it local vu = game:GetService("VirtualUser") game:GetService("Players").LocalPlayer.Idled:Connect(function() vu:Button2Down(Vector2.new(0,0),workspace.CurrentCamera.CFrame) wait(1) vu:Button2Up(Vector2.new(0,0),workspace.CurrentCamera.CFrame) end) local Events = game.ReplicatedStorage.Events local Keeper = workspace.NPCS.Keeper local Heal = game.Players.LocalPlayer.PlayerGui.CoreGUI.Events.DialogEffect local Sleep = Keeper.ChatInfo.Chats.Sleep local AttackEvent = Events.Event1 local NPCs = workspace.NPCS local Player = game.Players.LocalPlayer local Character = Player.Character local HRP = Character.HumanoidRootPart local PlayerHum = Character.Humanoid local TweenService = game:GetService("TweenService") local SpawnLocation = Keeper.CFrame * CFrame.new(2, 0, 0) Player.CharacterAdded:Connect(function(char) HRP = char:WaitForChild("HumanoidRootPart") PlayerHum = char:WaitForChild("Humanoid") end) local Mobs = { "Buni", "DireBuni", "Bumblz", "Budboy", "Drone", "Woof", "WinterWoof" } local AllowedTools = { "BasicSword", "LongSword", "SharpSword", "ManaSword", "GreatSword", "Dagger" } while wait() do PlayerHum:ChangeState(11) if _G.Toggle == false then PlayerHum:ChangeState(7) break end for _, v in pairs(NPCs:GetChildren()) do if table.find(Mobs, v.Name) then for i = 1, 1000 do if _G.Toggle == false then PlayerHum:ChangeState(7) break end local ActualNPC = v:FindFirstChild(v.Name) for _, v in pairs(Player.Character:GetChildren()) do if table.find(AllowedTools, v.Name) then break else for _, v in pairs(Player.Backpack:GetChildren()) do if table.find(AllowedTools, v.Name) then PlayerHum:EquipTool(v) break end end end end if ActualNPC then local Humanoid = ActualNPC:FindFirstChild("Humanoid") if not Humanoid or not ActualNPC:FindFirstChild("HumanoidRootPart") then break end repeat wait() until HRP repeat wait() until HRP.Anchored == false if Humanoid.Health <= 0 then break end if _G.DipOnLowHealth == true then if PlayerHum.Health / PlayerHum.MaxHealth <= 0.15 then local dist = (SpawnLocation.Position - HRP.Position).Magnitude local velocity = 160 local info = TweenInfo.new(dist / velocity, Enum.EasingStyle.Linear) local g = {} g.CFrame = SpawnLocation local Tween = TweenService:Create(HRP, info, g) Tween:Play() Tween.Completed:Wait() Heal:InvokeServer(workspace.NPCS.Keeper, Sleep) end end local dist = (v.Position - HRP.Position).Magnitude if dist > _G.MaxDistance then break end local velocity = 160 local info = TweenInfo.new(dist / velocity, Enum.EasingStyle.Linear) if not ActualNPC:FindFirstChild("HumanoidRootPart") then return end local g = {} g.CFrame = ActualNPC.HumanoidRootPart.CFrame local Tween = TweenService:Create(HRP, info, g) Tween:Play() Tween.Completed:Wait() AttackEvent:InvokeServer("L") else PlayerHum:ChangeState(7) break end end end end end