freeslot("MT_STICKER")
freeslot("S_STCK_0")
freeslot("SPR_STCK")


local function sticker_wallmove(mobj)
local p = consoleplayer
if mobj.pangle == nil
mobj.pangle = p.mo.angle
if p.rot == 1
mobj.stickerfrm = FF_PAPERSPRITE|p.scrollpi - 1
elseif p.rot == -1
mobj.stickerfrm = FF_PAPERSPRITE|FF_HORIZONTALFLIP|p.scrollpi - 1
end
end
if mobj.touchwall != true
P_InstaThrust(mobj, mobj.pangle, 100*FRACUNIT)
P_RailThinker(mobj)
end
end

addHook("MobjThinker", sticker_wallmove, MT_STICKER)

local function stickershow(mobj)
if mobj.show == false
mobj.show = true
P_InstaThrust(mobj, mobj.pangle, -2*FRACUNIT)
mobj.wait = leveltime + 2
end
if leveltime == mobj.wait
mobj.momx = 0
mobj.momy = 0
mobj.state = S_STICKER
mobj.frame = mobj.stickerfrm
mobj.flags = $ | MF_NOTHINK
end
end

addHook("MobjThinker", stickershow, MT_STICKER)

local function sticker_wall(mobj, thing, line)
local p = consoleplayer
if mobj.touchwall != true
mobj.touchwall = true
mobj.flags = $ | MF_PAPERCOLLISION
mobj.flags = $ | MF_NOCLIP
mobj.flags = $ | MF_NOCLIPHEIGHT
local x, y = P_ClosestPointOnLine(mobj.x, mobj.y, line)
P_SetOrigin(mobj, x, y, mobj.z)
A_Thrust(mobj, 3*FRACUNIT, 1)
mobj.angle = line.angle
S_StartSound(mobj, sfx_stcker)
mobj.show = false
end
end

addHook("MobjMoveBlocked", sticker_wall, MT_STICKER)