Josiahiscool73

Purgatory best script

Jan 7th, 2026
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.55 KB | None | 0 0
  1. -- // Purgatory Script | Velocity v5 // --
  2. -- // Library: Kavo UI // --
  3. -- // Open Source Version // --
  4.  
  5. local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/xHeptc/Kavo-UI-Library/main/source.lua"))()
  6. local Window = Library.CreateLib("Purgatory | Velocity v5", "Midnight")
  7.  
  8. -- // Services // --
  9. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  10. local Players = game:GetService("Players")
  11. local Workspace = game:GetService("Workspace")
  12. local RunService = game:GetService("RunService")
  13.  
  14. -- // Variables // --
  15. local LocalPlayer = Players.LocalPlayer
  16. local Remotes = ReplicatedStorage:WaitForChild("OnServerEvents")
  17.  
  18. local CombatRemote = Remotes:WaitForChild("CombatServer", 5)
  19. local DodgeRemote = Remotes:WaitForChild("DodgeServer", 5)
  20. local VisualRemote = Remotes:WaitForChild("PlrFxRelay", 5)
  21. local UpgradeRemote = Remotes:WaitForChild("UpgradeSelected", 5)
  22.  
  23. -- // Settings // --
  24. local Settings = {
  25. AutoAttack = false,
  26. AttackDist = 15,
  27.  
  28. AutoDodge = false,
  29. DodgeSpeed = 0.1,
  30. DodgeID = 5,
  31. RandomizeDodge = false,
  32.  
  33. SpeedEnabled = false,
  34. WalkSpeed = 50,
  35.  
  36. SelectedUpgrade = "Power" -- Default
  37. }
  38.  
  39. -- // Upgrade List // --
  40. -- Sourced from Game Wiki & Data
  41. local UpgradeList = {
  42. -- Basic / Common
  43. "Power",
  44. "Agility",
  45. "Vitality",
  46. "Force",
  47. "Regeneration",
  48.  
  49. -- Advanced / Rare
  50. "Fleetfoot",
  51. "Perfect Dodge",
  52. "Shatter",
  53. "Brute Force",
  54. "Maestro",
  55. "Health Pack",
  56. "Survivor",
  57.  
  58. -- Legendary
  59. "Giantslayer",
  60. "Blackhole",
  61. "Cataclysm",
  62. "Reaper",
  63. "Juggernaut",
  64. "Second Wind",
  65. "Assassin",
  66.  
  67. -- Divine / Special
  68. "Cleave",
  69. "Glass Cannon",
  70. "Turtle",
  71. "The Force in Reverse"
  72. }
  73.  
  74. -- // Tabs // --
  75. local CombatTab = Window:NewTab("Combat")
  76. local CombatSection = CombatTab:NewSection("Offense")
  77. local DodgeSection = CombatTab:NewSection("Auto Dodge")
  78.  
  79. local MoveTab = Window:NewTab("Movement")
  80. local MoveSection = MoveTab:NewSection("Speed Logic")
  81.  
  82. local MiscTab = Window:NewTab("Misc")
  83. local MiscSection = MiscTab:NewSection("Bypass Upgrades")
  84.  
  85. -- // Functions // --
  86.  
  87. local function GetClosestEnemy()
  88. local Character = LocalPlayer.Character
  89. local Root = Character and Character:FindFirstChild("HumanoidRootPart")
  90. if not Root then return nil end
  91.  
  92. local ClosestDist = Settings.AttackDist
  93. local ClosestEnemy = nil
  94.  
  95. local EnemiesFolder = Workspace:FindFirstChild("Enemies")
  96. if EnemiesFolder then
  97. for _, Enemy in pairs(EnemiesFolder:GetChildren()) do
  98. if Enemy:FindFirstChild("HumanoidRootPart") and Enemy:FindFirstChild("Humanoid") then
  99. if Enemy.Humanoid.Health > 0 then
  100. local Dist = (Root.Position - Enemy.HumanoidRootPart.Position).Magnitude
  101. if Dist < ClosestDist then
  102. ClosestDist = Dist
  103. ClosestEnemy = Enemy
  104. end
  105. end
  106. end
  107. end
  108. end
  109. return ClosestEnemy
  110. end
  111.  
  112. local function Attack(Target)
  113. if not CombatRemote then return end
  114.  
  115. local args = {
  116. Target.HumanoidRootPart,
  117. "Melee",
  118. {
  119. ["dismantle"] = true,
  120. ["riposte"] = false,
  121. ["backstab"] = true
  122. }
  123. }
  124.  
  125. pcall(function()
  126. CombatRemote:FireServer(unpack(args))
  127. end)
  128. end
  129.  
  130. -- // Combat UI // --
  131.  
  132. CombatSection:NewToggle("Kill Aura (OP)", "Instantly kills enemies in range.", function(state)
  133. Settings.AutoAttack = state
  134. end)
  135.  
  136. CombatSection:NewSlider("Attack Range", "Range to start killing.", 50, 5, function(value)
  137. Settings.AttackDist = value
  138. end)
  139.  
  140. -- // Dodge UI // --
  141.  
  142. DodgeSection:NewToggle("Auto Dodge", "Enable the dodge loop.", function(state)
  143. Settings.AutoDodge = state
  144. end)
  145.  
  146. DodgeSection:NewToggle("Randomize ID", "Cycles random IDs (1-6) automatically.", function(state)
  147. Settings.RandomizeDodge = state
  148. end)
  149.  
  150. DodgeSection:NewSlider("Dodge Speed", "How fast to spam (Lower = Faster)", 20, 1, function(value)
  151. Settings.DodgeSpeed = value / 20
  152. end)
  153.  
  154. DodgeSection:NewSlider("Manual ID", "Only used if Randomize is OFF.", 10, 1, function(value)
  155. Settings.DodgeID = value
  156. end)
  157.  
  158. -- // Movement UI // --
  159.  
  160. MoveSection:NewToggle("Enable Speed Loop", "Forces your WalkSpeed constantly.", function(state)
  161. Settings.SpeedEnabled = state
  162. end)
  163.  
  164. MoveSection:NewSlider("WalkSpeed Amount", "Set your speed.", 100, 16, function(value)
  165. Settings.WalkSpeed = value
  166. end)
  167.  
  168. -- // Misc UI // --
  169.  
  170. MiscSection:NewDropdown("Select Upgrade", "Choose from the Full Wiki List", UpgradeList, function(currentOption)
  171. Settings.SelectedUpgrade = currentOption
  172. end)
  173.  
  174. MiscSection:NewTextBox("Custom Name", "Type a name here to override (e.g. Vampirism)", function(txt)
  175. if txt and txt ~= "" then
  176. Settings.SelectedUpgrade = txt
  177. end
  178. end)
  179.  
  180. MiscSection:NewButton("Apply Upgrade", "Spam this to force the upgrade.", function()
  181. if UpgradeRemote then
  182. -- This fires whatever is currently set in Settings.SelectedUpgrade
  183. local args = {
  184. Settings.SelectedUpgrade,
  185. {},
  186. 1
  187. }
  188. UpgradeRemote:FireServer(unpack(args))
  189. end
  190. end)
  191.  
  192. MiscSection:NewLabel("Current Selection: Check Console (F9) if unsure")
  193.  
  194. -- // Loops // --
  195.  
  196. -- Attack Loop
  197. task.spawn(function()
  198. while true do
  199. task.wait()
  200. if Settings.AutoAttack then
  201. local Target = GetClosestEnemy()
  202. if Target then
  203. Attack(Target)
  204. end
  205. end
  206. end
  207. end)
  208.  
  209. -- Dodge Loop
  210. task.spawn(function()
  211. while true do
  212. if Settings.AutoDodge then
  213. pcall(function()
  214. local currentID = Settings.DodgeID
  215. if Settings.RandomizeDodge then
  216. currentID = math.random(1, 6)
  217. end
  218.  
  219. DodgeRemote:FireServer(currentID)
  220.  
  221. if VisualRemote then
  222. VisualRemote:FireServer("Dash")
  223. end
  224. end)
  225. end
  226. task.wait(Settings.DodgeSpeed)
  227. end
  228. end)
  229.  
  230. -- Speed Loop
  231. RunService.RenderStepped:Connect(function()
  232. if Settings.SpeedEnabled then
  233. pcall(function()
  234. local char = LocalPlayer.Character
  235. if char and char:FindFirstChild("Humanoid") then
  236. char.Humanoid.WalkSpeed = Settings.WalkSpeed
  237. end
  238. end)
  239. end
  240. end)
Advertisement
Add Comment
Please, Sign In to add comment