freeslot(
"S_OVAHATFOLLOW1",
"S_OVAHATFOLLOW2",
"MT_OVAHAT")

states[S_OVAHATFOLLOW1] = {SPR_OVAH, 0, 1, A_CapeChase, FRACUNIT*33, FRACUNIT*-7, S_OVAHATFOLLOW1}
states[S_OVAHATFOLLOW2] = {SPR_OVAH, 0, 1, A_CapeChase, FRACUNIT*23, FRACUNIT*-7, S_OVAHATFOLLOW2}

addHook("ThinkFrame", do
	for player in players.iterate
		if not (player.powers[pw_carry] == CR_NIGHTSMODE) and player.mo
			if player.health and not player.mo.hat
				if (player.mo.skin == "hms123311" and (mapheaderinfo[1].lvlttl:sub(1,13) == "THE NINGTMARE")) then
					player.mo.hat = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z+player.mo.height, MT_OVAHAT)
					player.mo.hat.target = player.mo
				end
			end
			if (player.mo.hat and player.mo.hat.valid and player.mo.skin ~= "hms123311") then
				P_RemoveMobj(player.mo.hat)
			end
		end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
		if player.health and player.mo.hat and player.mo.hat.valid
			if (player.pflags & PF_JUMPED)
			or (player.pflags & PF_MACESPIN)
			or (player.mo.tracer and player.mo.tracer.type == MT_TUBEWAYPOINT)
			or (player.pflags & PF_STARTDASH)
			or (player.pflags & PF_SPINNING)
			then
				P_SetMobjStateNF(player.mo.hat, S_OVAHATFOLLOW2)
			else
				P_SetMobjStateNF(player.mo.hat, S_OVAHATFOLLOW1)
			end
		end
	end
end)
