addHook("PlayerThink", function(player)
	if player.mo.skin == "sonic"
	and player.dashmode > 3*TICRATE
	and player.canmach4 == 150
		player.ismach4 = true
		if player.ismach4 == true
			player.mo.state = S_PLAY_MACH4
			if player.canstartsound == true
				S_StartSound(player.mo, sfx_cdfm40)
				player.canstartsound = false
				if player.ismach4 == true
				and player.dashmode < 3*TICRATE 
					player.ismach4 = false
					if player.ismach4 == false
					   player.canstartsound = true
					end
				end
			end
		end
	end
end)

local function restoresound(p)
	if p.mo.skin == "sonic"
	and p.dashmode < 3*TICRATE
	or p.ismach4 == false
		p.canstartsound = true
	end
end

addHook("PlayerThink", restoresound)