local function sticker_wallmove(mobj)
if mobj.tracer != nil
if mobj.tracer.player.rot == 1
mobj.stickerfrm = $ | FF_PAPERSPRITE
elseif mobj.tracer.player.rot == -1
mobj.stickerfrm = $ | FF_PAPERSPRITE|FF_HORIZONTALFLIP
end
if mobj.touchwall != true
P_InstaThrust(mobj, mobj.pangle, 100*FRACUNIT)
P_RailThinker(mobj)
end
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 = mobj.stickerstate
mobj.frame = mobj.stickerfrm
mobj.flags = $ | MF_NOTHINK
end
end

addHook("MobjThinker", stickershow, MT_STICKER)

local function sticker_wall(mobj, thing, line)
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)