freeslot("S_PLAY_SPECCYHUGS", "SPR2_HUG_", "S_SoundPlaying", "sfx_bdiv", "sfx_bfuc2", "sfx_bwina", "sfx_baoa1", "sfx_baof1", "sfx_bred1", "sfx_bwin1", "sfx_bwin2", "sfx_bgot1", "sfx_bmed2", "sfx_bmed1", "sfx_bus1", "sfx_bded", "sfx_bfuk1", "sfx_bfuk2", "sfx_bsum1", "sfx_bfuk3", "sfx_baof1", "sfx_bskl2", "sfx_bnop1", "sfx_bmor2", "sfx_bmor1",  "sfx_bnic1", "sfx_bskl3", "sfx_bskl1", "sfx_blv1", "S_PLAY_BDOVE")
states[S_PLAY_BDOVE] = {SPR_PLAY, SPR2_FALL|FF_ANIMATE, 3, nil, 0, 0, S_PLAY_BDOVE}

//This is for the Hard Drop
addHook("ThinkFrame", function()
for player in players.iterate do
-- initialize custom variables
player.bwaitduration = player.bwaitduration or 15 -- 1 second (35 tics)
player.bdown = player.bdown or -25 * FRACUNIT
player.blilup = player.blilup or 10 * FRACUNIT
player.bwait = player.bwait or false
player.bdivetimer = player.bdivetimer or 0
player.haswaited = player.haswaited or false

if P_IsObjectOnGround(player.mo) then
player.bwait = false -- reset the stalling flag when the player touches down again
player.bdivetimer = 0
player.haswaited = false
end

if player.mo and player.mo.valid  and not (gametype == GT_LTMMURDERMYSTERY) and player.mo.skin == "bob" then
local custom1_used = (player.cmd.buttons & BT_CUSTOM1) ~= 0

if custom1_used and not player.bwait and not player.haswaited then
player.bwait = true
player.mo.momz = player.blilup -- stall vertical movement
player.bdivetimer = player.bwaitduration
player.haswaited = true

-- play the start sound effect for stalling
S_StartSound(player.mo, sfx_bhol)
end

if player.bwait then
player.mo.state = S_PLAY_SPRING

player.bdivetimer = player.bdivetimer - 1

if player.bdivetimer <= 0 then
player.bwait = false
player.mo.momz = player.bdown
P_SpawnThokMobj(player)
player.mo.state = S_PLAY_BDOVE

-- play the end sound effect when stalling ends
S_StartSound(player.mo, sfx_bdiv)
player.mo.state = S_PLAY_BDOVE
end	
end

end
end
end)