local tut = game:GetService("Players").LocalPlayer local char = tut.Character or tut.CharacterAdded:Wait() local h = char:FindFirstChildOfClass("Humanoid") if not h then return end function getCustom(filepath, url) if not isfile(filepath) then writefile(filepath, game:HttpGet(url)) end return getcustomasset(filepath) end local run = h:FindFirstChildOfClass("Animator") or Instance.new("Animator", h) local animations = { {id = "rbxassetid://159223413", stopTime = 2, speed = 1, FT={S=0.2,E=0.1}}, --//UR ANIM ID\\ {id = "rbxassetid://243663079", stopTime = 3, speed = 1/3, FT={S=0.3,E=0.3}}, --//UR ANIM ID\\ } local function anim() for _, anm in ipairs(animations) do local animation = Instance.new("Animation") animation.AnimationId = anm.id local track = run:LoadAnimation(animation) track:Play(anm.FT.S) track:AdjustSpeed(anm.speed) task.wait(anm.stopTime) track:Stop(anm.FT.E) end end local flinging={} function fling(enemy) if not flinging[enemy] then spawn(function() local chr=game.Players.LocalPlayer.Character flinging[enemy]=enemy local og=chr.HumanoidRootPart.CFrame local humRP=chr.HumanoidRootPart local enemyhumRP=enemy.HumanoidRootPart local yNeededStop=enemyhumRP.Position.Y+30 local negativeyNeededStop=enemyhumRP.Position.Y-30 spawn(function() while enemyhumRP.Position.YnegativeyNeededStop and flinging[enemy] ~= nil do game.Players.LocalPlayer.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Swimming) task.wait(.5) game.Players.LocalPlayer.Character.Humanoid:ChangeState(Enum.HumanoidStateType.GettingUp) task.wait(.5) end end) while enemyhumRP.Position.YnegativeyNeededStop and flinging[enemy] ~= nil do humRP.CFrame=CFrame.new(enemyhumRP.Position+Vector3.new(math.random(-1,1),math.random(-1,1), math.random(-1,1)), enemyhumRP.Position+Vector3.new(math.random(-1,1),math.random(-1,1), math.random(-1,1))) game.Players.LocalPlayer.Character.HumanoidRootPart.AssemblyAngularVelocity = Vector3.new(10000,9999,-9999) game.Players.LocalPlayer.Character.HumanoidRootPart.AssemblyLinearVelocity = Vector3.new(-17.7,500,17.7) task.wait() end flinging[enemy]=nil humRP.AssemblyAngularVelocity=Vector3.new(0,0,0) humRP.AssemblyLinearVelocity=Vector3.new(0,0,0) humRP.CFrame=og end) end end local T=Instance.new("Tool", game.Players.LocalPlayer.Backpack) T.Name="Hollow Purple" T.RequiresHandle=false local cd=false local c=game.Players.LocalPlayer.Character local purpleRadius = 20 -- Adjust for final hitbox size local purpleOrbStartSize = UDim2.new(5, 0, 5, 0) local purpleOrbBillboardSize = UDim2.new(purpleRadius * 2, 0, purpleRadius * 2, 0) local slowSpeed = 20 -- Initial slow speed local fastSpeed = 100 -- Speed after 15 studs local blueImg=getCustom("gojoAssetsFE/blue.png", "https://raw.githubusercontent.com/softbf395/Script-assets/refs/heads/main/lb.png") local redImg=getCustom("gojoAssetsFE/red.png", "https://raw.githubusercontent.com/softbf395/Script-assets/refs/heads/main/rr.png") local purpleImg=getCustom("gojoAssetsFE/purple.png", "https://raw.githubusercontent.com/softbf395/Script-assets/refs/heads/main/hp.png") local cam=workspace.CurrentCamera function camC(Offset, lookAt: Vector3?) return CFrame.new((c.Head.CFrame * Offset).Position, lookAt or c.Head.Position) end T.Activated:Connect(function() if cd==false then cd = true c.HumanoidRootPart.Anchored=true --cam.CameraType=Enum.CameraType.Scriptable --cam.CFrame = camC(CFrame.new(0,3,-5), nil) spawn(anim) wait(0.5) local bAttachment = Instance.new("Attachment", c.Head) local bP = Instance.new("BillboardGui", bAttachment) bP.Size = UDim2.new(5,0,5,0) local bI = Instance.new("ImageLabel", bP) bI.BackgroundTransparency = 1 bI.Image = blueImg bI.Size = UDim2.new(1,0,1,0) bAttachment.CFrame = CFrame.new(-10,2,-5) wait(0.5) local rAttachment = Instance.new("Attachment", c.Head) local rP = Instance.new("BillboardGui", rAttachment) rP.Size = UDim2.new(5,0,5,0) local rI = Instance.new("ImageLabel", rP) rI.BackgroundTransparency = 1 rI.Image = redImg rI.Size = UDim2.new(1,0,1,0) rAttachment.CFrame = CFrame.new(10,2,-5) local TS = game:GetService("TweenService") local ti = TweenInfo.new(1) local targetCFrameOffset = CFrame.new(0, 2, -5) -- Offset from the head local bTween = TS:Create(bAttachment, ti, {CFrame = targetCFrameOffset}) -- Tween local CFrame local rTween = TS:Create(rAttachment, ti, {CFrame = targetCFrameOffset}) -- Tween local CFrame local connections = {} local purpleOrbPart = nil local purpleOrbBillboard = nil local currentSpeed = slowSpeed local hasReachedFastSpeed = false local function shootPurpleOrb(spawnOffsetCFrame) -- Expecting an offset CFrame --cam.CFrame = camC(CFrame.new(0,3,15), c.Head.Position+Vector3.new(0,3,0)) -- Create the Attachment in the Head local purpleOrbAttachment = Instance.new("Attachment", c.Head) purpleOrbAttachment.CFrame = spawnOffsetCFrame -- Set the initial offset -- Create the Part parented to the Attachment purpleOrbPart = Instance.new("Part", purpleOrbAttachment) purpleOrbPart.Name = "HollowPurpleOrb" purpleOrbPart.Size = Vector3.new(purpleRadius, purpleRadius, purpleRadius) purpleOrbPart.Anchored = true -- It's anchored due to bugs purpleOrbPart.CanCollide = true purpleOrbPart.Transparency = 1 purpleOrbPart.Material = Enum.Material.Neon purpleOrbPart.Color = Color3.fromRGB(128, 0, 128) purpleOrbPart.CFrame = c.Head.CFrame * spawnOffsetCFrame -- Initial position -- Create the BillboardGui on the Part local billboardAttachment = Instance.new("Attachment", purpleOrbPart) purpleOrbBillboard = Instance.new("BillboardGui", billboardAttachment) purpleOrbBillboard.Size = purpleOrbStartSize --workspace.CurrentCamera.CFrame=CFrame.new(workspace.CurrentCamera.CFrame.Position, purpleOrbPart.Position) local imageLabel = Instance.new("ImageLabel", purpleOrbBillboard) imageLabel.BackgroundTransparency = 1 imageLabel.Image = purpleImg imageLabel.Size = UDim2.new(1, 0, 1, 0) local shootDirection = c.Head.CFrame.LookVector -- Use the head's forward direction local travelledDistance = 0 connections["updateOrb"] = game:GetService("RunService").Heartbeat:Connect(function(deltaTime) if purpleOrbPart and purpleOrbAttachment then for _, thing in ipairs(workspace:GetDescendants()) do if thing.Parent:FindFirstChildOfClass("Humanoid") and (thing.Parent.HumanoidRootPart.Position-purpleOrbPart.Position).Magnitude<=purpleRadius then local otherPlayer = game:GetService("Players"):GetPlayerFromCharacter(thing.Parent) if otherPlayer and thing.Parent ~= c then print(otherPlayer.Name .. " Got hit by Hollow Purple") fling(thing.Parent) elseif thing.Parent~=c then fling(thing.Parent) end end end local moveAmount = currentSpeed * deltaTime purpleOrbPart.CFrame = purpleOrbPart.CFrame + shootDirection * moveAmount travelledDistance += moveAmount if travelledDistance > 15 and not hasReachedFastSpeed then currentSpeed = fastSpeed if purpleOrbBillboard then purpleOrbBillboard.Size = purpleOrbBillboardSize end hasReachedFastSpeed = true elseif purpleOrbBillboard then purpleOrbBillboard.Size = purpleOrbBillboardSize end if travelledDistance > 4000 then purpleOrbPart:Destroy() purpleOrbAttachment:Destroy() if purpleOrbBillboard then purpleOrbBillboard:Destroy() end if connections["updateOrb"] then connections["updateOrb"]:Disconnect() connections["updateOrb"] = nil end end end end) task.wait(5) if purpleOrbPart then purpleOrbPart:Destroy() end if purpleOrbAttachment then purpleOrbAttachment:Destroy() end if purpleOrbBillboard then purpleOrbBillboard:Destroy() end if connections["updateOrb"] then connections["updateOrb"]:Disconnect() end end connections["bTweenCompleted"] = bTween.Completed:Connect(function(playbackState) if playbackState == Enum.TweenStatus.Completed then end end) connections["rTweenCompleted"] = rTween.Completed:Connect(function(playbackState) if playbackState == Enum.TweenStatus.Completed then shootPurpleOrb(CFrame.new(0, 2, -10)) -- Pass the offset CFrame end end) bTween:Play() rTween:Play() wait(1) bAttachment:Destroy() rAttachment:Destroy() spawn(function() shootPurpleOrb(CFrame.new(0, 2, -10)) -- Pass the offset CFrame end) task.wait(1) cd = false --cam.CameraType=Enum.CameraType.Custom c.HumanoidRootPart.Anchored=false end end)