// Dynamic Signposts OMG

addHook("MobjThinker", function(mobj)
	if mobj.tracer.tracer
		if mobj.tracer.tracer.skin == "dark"
		or mobj.tracer.tracer.skin == "xkz"
			for player in players.iterate
				if player.mo.skin == mobj.tracer.tracer.skin
					mobj.d94xkzsignpostplayer = player.mo
				end
			end
			mobj.tracer.tracer.tics = -1
			if mobj.d94xkzsignpostplayer
				if (mobj.tracer.tracer.skin == "dark" and mobj.tracer.tracer.color == R_GetColorByName(skins["sonic"].prefcolor))
				or (mobj.tracer.tracer.skin == "xkz" and mobj.tracer.tracer.color == R_GetColorByName(skins["tails"].prefcolor))
					mobj.tracer.tracer.frame = D|FF_PAPERSPRITE
				elseif (gamemap == 10 and not multiplayer)
				or (mobj.d94xkzsignpostplayer.player.lives < 2 and mobj.d94xkzsignpostplayer.player.rings < 1)
					mobj.tracer.tracer.frame = C|FF_PAPERSPRITE
				elseif not (mobj.d94xkzsignpostplayer.player.pflags & PF_FINISHED)
				or (mobj.d94xkzsignpostplayer.state == S_D94XKZ_VICTORY1)
					mobj.tracer.tracer.frame = B|FF_PAPERSPRITE
				elseif (mobj.tracer.tracer.skin == "dark" and mobj.d94xkzsignpostplayer.player.name == "Dark94")
				or (mobj.tracer.tracer.skin == "xkz" and mobj.d94xkzsignpostplayer.player.name == "[@xkz_17]")
					mobj.tracer.tracer.frame = E|FF_PAPERSPRITE
				else
					mobj.tracer.tracer.frame = A|FF_PAPERSPRITE
				end
			else
				mobj.tracer.tracer.frame = A|FF_PAPERSPRITE
			end
		elseif mobj.tracer.tracer.skin
			mobj.tracer.tracer.tics = -1
			mobj.tracer.tracer.frame = A|FF_PAPERSPRITE
		end
	end
end, MT_SIGN)