addHook("MobjDeath", function(mo, inflictor, source)
    if not source or not source.player then return end

    -- Vérifie si l'objet détruit est une boîte de 1-Up
    if mo.type == MT_1UP_BOX then
        local player = source.player

        -- Ajoute 25 rings
        player.rings = $ + 25

        -- Ajoute une vie supplémentaire
        player.lives = $ + 1

        -- Effets sonores et message
        S_StartSound(nil, sfx_itemup)
    end
end)

local SPEED_MULTIPLIER = 1.5 
local JUMP_MULTIPLIER = 1.5 

addHook("PlayerThink", function(player)
    if not (player.mo and player.mo.valid) then return end
    
    -- Vérifie si le joueur est Sonic et a un bouclier
    if player.mo.skin == "sonic" and player.powers[pw_shield] then
        -- Applique les multiplicateurs
        player.normalspeed = skins[sonic].normalspeed * SPEED_MULTIPLIER
        player.jumpfactor = skins[sonic].jumpfactor * JUMP_MULTIPLIER
    else
        -- Rétablit les valeurs par défaut
        player.normalspeed = skins[sonic].normalspeed
        player.jumpfactor = skins[sonic].jumpfactor
    end
end)