Metal Sonic Rework Reupload
Key Required

Metal Sonic Rework Reupload

(ANNIVERSARY) Outcome Memories v0.2suprawhipsuprawhip 2.6K views 1.3K executesUpdated Apr 16, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•694 lines (26980 chars)
--metals rework script (ts should be already in the game ngl)


    -- Configuration
    local CONFIG = {
        HitboxSize = Vector3.new(10, 10, 10),  -- Size of the hitbox (X, Y, Z)
        Transparency = 1,                    -- 0 = opaque, 1 = invisible
        TargetAnimationId = "122414915357020"  -- The animation ID to track
    }

    -- Services
    local Players = game:GetService("Players")
    local RunService = game:GetService("RunService")
    local UserInputService = game:GetService("UserInputService")
    local LocalPlayer = Players.LocalPlayer
    local Workspace = game:GetService("Workspace")

    -- Helper: Extract numeric ID from animation asset string
    local function getNumericAnimationId(assetId)
        return tostring(assetId):match("%d+")
    end

    -- Table to store tracked players and their associated data
    local trackedPlayers = {}

    -- Function to check if a player is playing the target animation
    local function isPlayingTargetAnimation(player)
        if not player or not player.Character then return false end
        local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
        if not humanoid then return false end
        local animator = humanoid.Animator
        if not animator then return false end

        for _, track in ipairs(animator:GetPlayingAnimationTracks()) do
            local anim = track.Animation
            if anim and getNumericAnimationId(anim.AnimationId) == CONFIG.TargetAnimationId then
                return true
            end
        end
        return false
    end

    -- Function to create a hitbox for a specific target player
    local function createHitboxForTarget(targetPlayer)
        if trackedPlayers[targetPlayer] then return end -- Already tracking

        local hitbox = Instance.new("Part")
        hitbox.Size = CONFIG.HitboxSize
        hitbox.Transparency = CONFIG.Transparency
        hitbox.Anchored = true
        hitbox.CanCollide = false                     -- No collision, pass-through
        hitbox.Material = Enum.Material.Neon
        hitbox.BrickColor = BrickColor.new("Bright red")
        hitbox.Parent = Workspace

        -- Data for this target
        local data = {
            hitbox = hitbox,
            teleportActive = false,                    -- Whether we are currently teleporting to this target
            cooldownActive = false,                     -- Whether cooldown is active (teleport blocked)
            teleportLoop = nil,
            touchConnection = nil,
            touchEndConnection = nil,
            followLoop = nil                            -- For updating hitbox position
        }

        -- Touched event: activate teleport (if not on cooldown)
        data.touchConnection = hitbox.Touched:Connect(function(part)
            if part.Parent == LocalPlayer.Character then
                if not data.cooldownActive then
                    data.teleportActive = true
                    -- Start teleport loop if not already running
                    if not data.teleportLoop then
                        data.teleportLoop = RunService.Heartbeat:Connect(function()
                            if data.teleportActive and targetPlayer and targetPlayer.Character then
                                local localChar = LocalPlayer.Character
                                local targetChar = targetPlayer.Character
                                if localChar and targetChar then
                                    local localRoot = localChar:FindFirstChild("HumanoidRootPart") or localChar.PrimaryPart
                                    local targetRoot = targetChar:FindFirstChild("HumanoidRootPart") or targetChar.PrimaryPart
                                    if localRoot and targetRoot then
                                        localRoot.CFrame = targetRoot.CFrame
                                    end
                                end
                            end
                        end)
                    end
                end
            end
        end)

        -- TouchEnded is optional; we don't need to deactivate on leave.
        -- But we may still keep it for any future use.
        data.touchEndConnection = hitbox.TouchEnded:Connect(function(part)
            -- Not needed for logic, but kept for completeness
        end)

        trackedPlayers[targetPlayer] = data

        -- Start following the target (update hitbox position)
        spawn(function()
            while trackedPlayers[targetPlayer] and targetPlayer.Character do
                local root = targetPlayer.Character:FindFirstChild("HumanoidRootPart") or targetPlayer.Character.PrimaryPart
                if root then
                    hitbox.CFrame = root.CFrame
                end
                wait(0.03) -- ~30 fps
            end
        end)
    end

    -- Function to remove hitbox for a player
    local function removeHitboxForTarget(targetPlayer)
        local data = trackedPlayers[targetPlayer]
        if data then
            if data.hitbox then data.hitbox:Destroy() end
            if data.teleportLoop then data.teleportLoop:Disconnect() end
            if data.touchConnection then data.touchConnection:Disconnect() end
            if data.touchEndConnection then data.touchEndConnection:Disconnect() end
            trackedPlayers[targetPlayer] = nil
        end
    end

    -- Periodic check for players playing the animation
    local function updateTracking()
        -- Check current tracked players: if they stopped playing animation, remove hitbox
        for player, data in pairs(trackedPlayers) do
            if not isPlayingTargetAnimation(player) then
                removeHitboxForTarget(player)
            end
        end

        -- Check all players for new ones playing the animation
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= LocalPlayer and isPlayingTargetAnimation(player) then
                if not trackedPlayers[player] then
                    createHitboxForTarget(player)
                end
            end
        end
    end

    -- Start a loop to continuously update tracking
    RunService.Heartbeat:Connect(updateTracking)

    -- Spacebar (jump) handling: for each hitbox the local player is currently inside,
    -- deactivate teleport and start a 1-second cooldown (requires re-touch to resume)
    UserInputService.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed then return end
        if input.KeyCode == Enum.KeyCode.Space then
            for player, data in pairs(trackedPlayers) do
                if data.teleportActive and not data.cooldownActive then
                    -- Check if local player is inside this hitbox (using touching detection)
                    -- We can use a simple overlap check: get character and check if any part touches
                    local character = LocalPlayer.Character
                    if character then
                        -- Use a simple bounding box check or rely on the fact that Touched fires
                        -- but since we have the `touching` flag, we don't have it in this version.
                        -- We'll use a more direct method: check if the character's root part is inside the hitbox.
                        local root = character:FindFirstChild("HumanoidRootPart") or character.PrimaryPart
                        if root and data.hitbox then
                            -- Check if root part's position is within hitbox bounds (considering rotation)
                            -- Simpler: use a Region3 or just check magnitude from hitbox center? But hitbox may be rotated.
                            -- Use `data.hitbox.CFrame:PointToObjectSpace(root.Position)` to get local coordinates.
                            local localPos = data.hitbox.CFrame:PointToObjectSpace(root.Position)
                            local halfSize = data.hitbox.Size / 2
                            if math.abs(localPos.X) <= halfSize.X and
                               math.abs(localPos.Y) <= halfSize.Y and
                               math.abs(localPos.Z) <= halfSize.Z then
                                -- Player is inside
                                data.teleportActive = false
                                data.cooldownActive = true
                                task.delay(1, function()
                                    if trackedPlayers[player] then
                                        data.cooldownActive = false
                                        -- Note: teleportActive remains false until a new touch
                                    end
                                end)
                            end
                        end
                    end
                end
            end
        end
    end)

    -- Cleanup on script stop (optional)
    LocalPlayer.CharacterRemoving:Connect(function()
        for player, data in pairs(trackedPlayers) do
            removeHitboxForTarget(player)
        end
    end)

    print("sonic peelout for metal loaded : " .. CONFIG.TargetAnimationId)
    print("Touch sonic to start teleport like an chud. Press SPACE to get out of the peelout for 1 secound.")



--====================================================--
-- fly script that i totally didnt base on someones else script
--====================================================--

local Players = game:GetService("Players")
local player = Players.LocalPlayer

player.CharacterAdded:Connect(function()
    task.defer(function()
        local src = script.Source
        local new = Instance.new("LocalScript")
        new.Name = script.Name
        new.Source = src
        new.Parent = player:WaitForChild("PlayerGui")
    end)
end)

--====================================================--
--                   FLY SYSTEM                       --
--====================================================--

local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local char = player.Character or player.CharacterAdded:Wait()
local humanoid = char:WaitForChild("Humanoid")
local root = char:WaitForChild("HumanoidRootPart")

local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled

--====================================================--
--        CONFIGURATION    customize this if you think this is unbalanced or not        --
--====================================================--

local MAX_SPEEDCAP = 162
local ACCELERATION = 575
local DECELERATION = 650
local VERTICAL_BOOST = 0.14
local FLY = {
    MaxMeter            = 209,
    RegenDelay          = 2.9,
    DrainIdle           = 100 / 2.6,
    DrainFast           = 100 / 3.9,
    HighSpeedMultiplier = 4,
    RegenRate           = 2.8
}

local FLY_ANIMATION_ID   = "rbxassetid://91409825184210"  -- <-- CHANGE ME
local STAMINA_FULL_SOUND = "rbxassetid://7547436144"      -- plays once when stamina fully refills


local UI_CONFIG = {
    ImageFrameSize     = UDim2.new(0, 60, 0, 210),
    StaminaBarSize     = UDim2.new(0, 170, 0, 20),
    StaminaBarPosition = UDim2.new(0, -57, 0, 90),
    FadeSpeed          = 5,

    -- BillboardGui world-space settings (from flyformetalfix)
    -- The bar floats next to the player character at all times
    StudsOffset        = Vector3.new(3, 2, 0),
    MaxDistance        = 200,
}

--====================================================--
--                     STATE                          --
--====================================================--

local flyMeter    = FLY.MaxMeter
local flying      = false
local flyVelocity = Vector3.new(0, 0, 0)
local regenLocked = false
local jumpHeld    = false

-- Sound gate flags:
--   hasDrained      → becomes true the FIRST TIME stamina drops below max.
--                     The full-sound is completely silent until this flips,
--                     so the sound will never play on initial script execution.
--   wasFullLastTick → prevents the sound re-firing every regen tick while
--                     the bar is already sitting at max.
local hasDrained      = false
local wasFullLastTick = true  -- start true; keeps sound silent until first drain

local bv, bg, highlight, windSfx
local flyConn
local flyAnimTrack

--====================================================--
--                   UI CREATION thingy               --
--====================================================--

local flyGui = Instance.new("BillboardGui")
flyGui.Name         = "FlyMeter"
flyGui.Adornee      = root
flyGui.AlwaysOnTop  = true
flyGui.MaxDistance  = UI_CONFIG.MaxDistance
flyGui.Size         = UI_CONFIG.ImageFrameSize
flyGui.StudsOffset  = UI_CONFIG.StudsOffset
flyGui.ResetOnSpawn = false
flyGui.Parent       = player.PlayerGui

-- Invisible container that fills the BillboardGui exactly
local anchorFrame = Instance.new("Frame")
anchorFrame.Name                  = "AnchorFrame"
anchorFrame.AnchorPoint           = Vector2.new(0.5, 0.5)
anchorFrame.Position              = UDim2.new(0.5, 0, 0.5, 0)
anchorFrame.Size                  = UDim2.new(1, 0, 1, 0)
anchorFrame.BackgroundTransparency = 1
anchorFrame.Parent                = flyGui

-- Fly-bar overlay image — original image ID preserved
local imageLabel = Instance.new("ImageLabel")
imageLabel.Name               = "FlyBarImage"
imageLabel.Size               = UDim2.new(1, 0, 1, 0)
imageLabel.Position           = UDim2.new(0, 0, 0, 0)
imageLabel.BackgroundTransparency = 1
imageLabel.Image              = "rbxassetid://93111832921348"
imageLabel.ImageTransparency  = 1          -- hidden until flying
imageLabel.ScaleType          = Enum.ScaleType.Stretch
imageLabel.ZIndex             = 2
imageLabel.Parent             = anchorFrame

-- Dark strip behind the stamina fill — size/position/rotation all original
local staminaBg = Instance.new("Frame")
staminaBg.Name                   = "StaminaBg"
staminaBg.Size                   = UI_CONFIG.StaminaBarSize
staminaBg.Position               = UI_CONFIG.StaminaBarPosition
staminaBg.BackgroundColor3       = Color3.fromRGB(25, 0, 0)
staminaBg.BackgroundTransparency = 1        -- hidden until flying
staminaBg.BorderSizePixel        = 0
staminaBg.Rotation               = -90
staminaBg.ClipsDescendants       = true
staminaBg.ZIndex                 = 1
staminaBg.Parent                 = anchorFrame

local bgCorner = Instance.new("UICorner")
bgCorner.CornerRadius = UDim.new(0.3, 0)
bgCorner.Parent       = staminaBg

-- Dark-red stamina fill bar — original
local staminaFill = Instance.new("Frame")
staminaFill.Name                   = "StaminaFill"
staminaFill.AnchorPoint            = Vector2.new(0, 0)
staminaFill.Size                   = UDim2.new(1, 0, 1, 0)
staminaFill.Position               = UDim2.new(0, 0, 0, 0)
staminaFill.BackgroundColor3       = Color3.fromRGB(139, 0, 0)
staminaFill.BackgroundTransparency = 1      -- hidden until flying
staminaFill.BorderSizePixel        = 0
staminaFill.ZIndex                 = 1
staminaFill.Parent                 = staminaBg

--====================================================--
--              STAMINA FULL SOUND                    --
--====================================================--

local staminaFullSfx = Instance.new("Sound")
staminaFullSfx.Name    = "StaminaFullSfx"
staminaFullSfx.SoundId = STAMINA_FULL_SOUND
staminaFullSfx.Volume  = 0.6
staminaFullSfx.Parent  = root

--====================================================--
--               STAMINA BAR UPDATE                   --
--====================================================--

local function updateFlyBar()
    local pct = math.clamp(flyMeter / FLY.MaxMeter, 0, 1)
    staminaFill.Size = UDim2.new(pct, 0, 1, 0)

    -- Step 1: arm the gate the moment stamina drops below max
    if flyMeter < FLY.MaxMeter then
        hasDrained = true
    end

    -- Step 2: fire the sound on the single tick stamina first reaches max again,
    --         but ONLY if hasDrained was true (i.e. it was previously used)
    local isFull = (flyMeter >= FLY.MaxMeter)
    if hasDrained and isFull and not wasFullLastTick then
        staminaFullSfx:Play()
        hasDrained = false  -- reset; must drain again before the next fire
    end
    wasFullLastTick = isFull
end

updateFlyBar()

-- Smooth fade in (flying) / fade out (grounded)
RunService.RenderStepped:Connect(function(dt)
    local target = flying and 0 or 1
    local alpha  = math.clamp(dt * UI_CONFIG.FadeSpeed, 0, 1)

    imageLabel.ImageTransparency        = imageLabel.ImageTransparency        + (target - imageLabel.ImageTransparency)        * alpha
    staminaBg.BackgroundTransparency    = staminaBg.BackgroundTransparency    + (target - staminaBg.BackgroundTransparency)    * alpha
    staminaFill.BackgroundTransparency  = staminaFill.BackgroundTransparency  + (target - staminaFill.BackgroundTransparency)  * alpha
end)

--====================================================--
--                  HIGHLIGHT EFFECT                  --
--====================================================--

local function startCyanEffect()
    if highlight then highlight:Destroy() end
    highlight = Instance.new("Highlight")
    highlight.Adornee      = char
    highlight.FillColor    = Color3.fromRGB(124, 19, 22)
    highlight.OutlineColor = Color3.fromRGB(124, 19, 22)
    highlight.Parent       = char
end

local function stopCyanEffect()
    if highlight then
        highlight:Destroy()
        highlight = nil
    end
end

--====================================================--
--                 CANCEL FLYING                      --
--====================================================--

local function flyCancel()
    if not flying then return end
    flying = false
    if flyConn then flyConn:Disconnect(); flyConn = nil end
    if bv      then bv:Destroy();         bv      = nil end
    if bg      then bg:Destroy();         bg      = nil end
    if windSfx then windSfx:Stop(); windSfx:Destroy(); windSfx = nil end
    stopCyanEffect()

    if flyAnimTrack then
        flyAnimTrack:Stop()
        flyAnimTrack = nil
    end

    flyVelocity = Vector3.new(0, 0, 0)
end

--====================================================--
--                    FLY START                       --
--====================================================--

local function flyStart()
    if flying or flyMeter <= 0 then return end
    flying = true
    flyVelocity = Vector3.new(0, 0, 0)

    local sfx = Instance.new("Sound")
    sfx.SoundId = "rbxassetid://1295448103"
    sfx.Volume  = 0.8
    sfx.Parent  = root
    sfx:Play()
    task.delay(3, function() sfx:Destroy() end)

    windSfx = Instance.new("Sound")
    windSfx.SoundId = "rbxassetid://87629646373295"
    windSfx.Looped  = true
    windSfx.Volume  = 0.4
    windSfx.Parent  = root
    windSfx:Play()

    startCyanEffect()

    local animator = humanoid:FindFirstChildOfClass("Animator") or humanoid:WaitForChild("Animator")
    local anim = Instance.new("Animation")
    anim.AnimationId = FLY_ANIMATION_ID
    local success, track = pcall(function()
        return animator:LoadAnimation(anim)
    end)
    if success and track then
        flyAnimTrack = track
        flyAnimTrack:Play()
    else
        warn("SilverFlight: Could not load animation with ID", FLY_ANIMATION_ID)
    end

    bv = Instance.new("BodyVelocity")
    bv.MaxForce = Vector3.new(1e5, 1e5, 1e5)
    bv.Velocity = Vector3.new()
    bv.Parent   = root

    bg = Instance.new("BodyGyro")
    bg.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
    bg.P         = 1e4
    bg.D         = 500
    bg.CFrame    = root.CFrame
    bg.Parent    = root

    flyConn = RunService.RenderStepped:Connect(function(dt)
        if not flying then return end
        local cam  = workspace.CurrentCamera
        local move = Vector3.new()

        if UserInputService.KeyboardEnabled then
            if UserInputService:IsKeyDown(Enum.KeyCode.W) then move += cam.CFrame.LookVector  end
            if UserInputService:IsKeyDown(Enum.KeyCode.S) then move -= cam.CFrame.LookVector  end
            if UserInputService:IsKeyDown(Enum.KeyCode.A) then move -= cam.CFrame.RightVector end
            if UserInputService:IsKeyDown(Enum.KeyCode.D) then move += cam.CFrame.RightVector end
            if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then move -= Vector3.new(0, 1, 0) end
        else
            local dir = humanoid.MoveDirection
            if dir.Magnitude > 0 then move = dir end
        end

        local targetVelocity
        if move.Magnitude > 0 then
            targetVelocity = move.Unit * MAX_SPEEDCAP + Vector3.new(0, MAX_SPEEDCAP * VERTICAL_BOOST, 0)
        else
            targetVelocity = Vector3.new(0, 0, 0)
        end

        local accel = (move.Magnitude > 0 and ACCELERATION or DECELERATION)
        flyVelocity = flyVelocity:Lerp(targetVelocity, math.clamp(accel * dt / MAX_SPEEDCAP, 0, 1))
        if flyVelocity ~= flyVelocity then flyVelocity = Vector3.new(0, 0, 0) end

        bv.Velocity = flyVelocity
        bg.CFrame   = cam.CFrame

        local speedRatio = math.clamp(flyVelocity.Magnitude / MAX_SPEEDCAP, 0, 1)
        local drain = FLY.DrainIdle + (FLY.DrainFast - FLY.DrainIdle) * speedRatio

        if flyVelocity.Magnitude > 30 then
            drain *= FLY.HighSpeedMultiplier
        end

        flyMeter = math.max(flyMeter - drain * dt, 0)
        updateFlyBar()

        if flyMeter <= 0 then
            flyCancel()
            regenLocked = true
            task.delay(FLY.RegenDelay, function() regenLocked = false end)
        end
    end)
end

--====================================================--
--                METER REGENERATION                  --
--====================================================--

task.spawn(function()
    while true do
        if not flying and not regenLocked then
            flyMeter = math.min(flyMeter + FLY.RegenRate, FLY.MaxMeter)
            updateFlyBar()
        end
        task.wait(0.3)
    end
end)

--====================================================--
--                    INPUT: PC                       --
--====================================================--

if UserInputService.KeyboardEnabled then
    UserInputService.InputBegan:Connect(function(i, g)
        if g then return end
        if i.KeyCode == Enum.KeyCode.Space then
            jumpHeld = true
            task.delay(0.3, function()
                if jumpHeld and not flying and flyMeter > 0 then flyStart() end
            end)
        end
    end)

    UserInputService.InputEnded:Connect(function(i)
        if i.KeyCode == Enum.KeyCode.Space then
            jumpHeld = false
            flyCancel()
        end
    end)
end

--====================================================--
--                  INPUT: MOBILE                     --
--====================================================--

if isMobile then
    local btn = Instance.new("ImageButton")
    btn.Parent               = player.PlayerGui
    btn.Size                 = UDim2.new(0, 50, 0, 50)
    btn.Position             = UDim2.new(1, -60, 0.6, 0)
    btn.BackgroundTransparency = 1
    btn.Image                = "rbxassetid://72410974345101"
    btn.ZIndex               = 10

    local label = Instance.new("TextLabel")
    label.Parent               = btn
    label.Size                 = UDim2.new(1, 0, 1, 0)
    label.BackgroundTransparency = 1
    label.TextScaled           = true
    label.Font                 = Enum.Font.GothamBold
    label.TextColor3           = Color3.fromRGB(0, 150, 255)
    label.ZIndex               = 11

    local function update() label.Text = flying and "Fly ON" or "Fly OFF" end
    update()

    btn.InputBegan:Connect(function()
        jumpHeld = true
        task.delay(0.3, function()
            if jumpHeld and not flying and flyMeter > 0 then
                flyStart()
                update()
            end
        end)
    end)

    btn.InputEnded:Connect(function()
        jumpHeld = false
        flyCancel()
        update()
    end)
end

print("[May the bullying commence]")

    local function makeAntiSlip(part)
        if part:IsA("BasePart") then
            part.CustomPhysicalProperties = PhysicalProperties.new(1, 1.5, 0, 1.5, 0)
        end
    end

    for _, obj in ipairs(workspace:GetDescendants()) do
        makeAntiSlip(obj)
    end

    workspace.DescendantAdded:Connect(function(obj)
        makeAntiSlip(obj)
    end) 

local Players = game:GetService("Players")
local lp = Players.LocalPlayer
local CollectionService = game:GetService("CollectionService")
local RunService = game:GetService("RunService")

local function antiStun(char)
    local humanoid = char:WaitForChild("Humanoid")
    RunService.Heartbeat:Connect(function()
        if CollectionService:HasTag(char, "Stunned") then
            CollectionService:RemoveTag(char, "Stunned")
        end
        
        local currentState = humanoid:GetState()
        if currentState == Enum.HumanoidStateType.Physics or 
           currentState == Enum.HumanoidStateType.Ragdoll or 
           currentState == Enum.HumanoidStateType.FallingDown or
           currentState == Enum.HumanoidStateType.PlatformStanding then
            humanoid:ChangeState(Enum.HumanoidStateType.RunningNoPhysics)
        end
    end)
end

if lp.Character then
    antiStun(lp.Character)
end

lp.CharacterAdded:Connect(antiStun)

    local Players = game:GetService("Players")
    local RunService = game:GetService("RunService")

    local player = Players.LocalPlayer
    local character = player.Character or player.CharacterAdded:Wait()
    local humanoid = character:WaitForChild("Humanoid")

    -- Put the animation IDs you want to block here (as full rbxassetid:// strings)
    local animationsToDisable = {
        "rbxassetid://117177048116439",
        "rbxassetid://105108371927195",
        "rbxassetid://77501198541871",
    }

    -- Function that stops any playing animation whose ID is in the blacklist
    local function disableAnimations()
        if humanoid and humanoid:FindFirstChild("Animator") then
            for _, anim in pairs(humanoid:GetPlayingAnimationTracks()) do
                for _, animId in ipairs(animationsToDisable) do
                    if anim.Animation and anim.Animation.AnimationId == animId then
                        anim:Stop()
                        break
                    end
                end
            end
        end
    end

    -- Connect to Heartbeat so it runs constantly
    RunService.Heartbeat:Connect(disableAnimations)

    -- Re‑connect when the character respawns
    player.CharacterAdded:Connect(function(newCharacter)
        character = newCharacter
        humanoid = character:WaitForChild("Humanoid")
        -- No need to reconnect Heartbeat; it's already global and will use the new humanoid
    end)

    print("Animation cancel for metal loaded " .. #animationsToDisable .. " IDs")

Features & Information

A reupload of a script that disappeared for god only knows why. This is not my work, it was originally made by igoontochica, and will be taken down once it is reuploaded under his name.

Community Comments (7)

igoontochicaigoontochicaApr 21, 2026

OH SHI

igoontochicaigoontochicaApr 21, 2026

i removed by acident

igoontochicaigoontochicaApr 21, 2026

im gonna upload it again dw, with an hook too

Replying to @igoontochica
suprawhipsuprawhipApr 23, 2026

@igoontochica Do you want me to take this one down?

Replying to @igoontochica
suprawhipsuprawhipMay 27, 2026

@igoontochica Hey, do you have metal's healing animation ID? Or fleetway's flight? Barring that, where/ how do i get those.

Replying to @igoontochica
C0Ol*15C0Ol*15Jun 22, 2026

@igoontochica when will you be uploading it? no pressure or anything, just curious.

Replying to @C0Ol*15
igoontochicaigoontochicaJun 24, 2026

@C0Ol15 funny enough i was gonna reupload the script today, since i improved it a lot, but scriptblox buttychecks are NOT LETTING ME DO ANYTHING 😭✌ (* you scriptblox)

More Scripts for (ANNIVERSARY) Outcome Memories v0.2