freeslot("MT_MRGOSIGN", "MT_BIGSHROOM", "MT_BIGHAT", "MT_RCWYTREE", "MT_RCWYPIRANHA")
freeslot("S_RWETR", "SPR_RCET");
freeslot("sfx_k64lap", "sfx_rwphit");
local cv_kartencore = CV_FindVar("kartencore")
local numlaps = CV_FindVar("numlaps")
local playModernFL = false -- for those who want the key-shift on the last lap

states[S_RWETR] = {SPR_RCET, 0, -1, nil, 0, 0, nil}

local function doBestLapTaunt(p)
	local mo = p.mo
	if (not modeattacking)
		if (p.kartstuff[k_position] == 1)
			K_PlayHitEmSound(mo)
		end
	else
		if (p.mrBestLap ~= nil)
		and (p.mrLapTime > p.mrBestLap)
			K_PlayHitEmSound(mo)
		end
	end
end

addHook("MapLoad", do
    for mo in thinkers.iterate("mobj") do
        if mo and mo.valid then
			if mo.type == MT_MRGOSIGN
				mo.scale = $*3
				mo.radius = $/3
				mo.height = $/3
			elseif mo.type == MT_BIGSHROOM
				mo.scale = $*7
				mo.radius = $/7
				mo.height = $/7
			elseif (mo.type == MT_RCWYBILYOSHI or mo.type == MT_RCWYBILTENDO)
				mo.scale = $*4
				mo.radius = $/4
				mo.height = $/4
			elseif mo.type == MT_RCWYBILKPAIR
				mo.scale = $*6
				mo.radius = $/6
				mo.height = $/6
			elseif mo.type == MT_BIGHAT
				mo.scale = $*6
				mo.radius = $/6
				mo.height = $/6
				mo.color = SKINCOLOR_RED
			elseif mo.type == MT_RCWYTREE
				mo.scale = $*8
				mo.radius = $/4
				mo.height = $/8
			elseif (mo.type == MT_RCWYPIRANHA or mo.type == MT_RCWYFLOWER)
				mo.scale = $*3
				mo.radius = $/3
				mo.height = $/3
			end
		end
    end    
end)

addHook("MobjThinker", function(mo)
	mo.angle = $1 + 2*ANG1;
end, MT_MRGOSIGN)

addHook("MobjThinker", function(mo)
	local p = mo.player
	if (p.mrLapTime == nil)
		p.mrLapTime = 0
		p.mrBestLap = 0
	else
		if (leveltime >= 235) 
			p.mrLapTime = $1 + 1
		end
	end
	if (p.laps == numlaps.value - 1)
	and (gamemap == 790)
		if (splitscreen == 0)
			if (p.playK64Fanfare ~= true)
				S_ChangeMusic("K64FLF", true, p)
				p.fnFreTimer = 0
				p.playK64Fanfare = true
			end
			if (p.fnFreTimer ~= nil)
				if (p.fnFreTimer < 126)
					p.fnFreTimer = $1 + 1
				end
				if (p.fnFreTimer >= 126)
					if (p.playRacewayFLMusic ~= true)
						if (cv_kartencore.value ~= 0)
							S_ChangeMusic("KET6FL", true, p)
						elseif (playModernFL == true)
							S_ChangeMusic("KRT6FL", true, p)
						else
							S_ChangeMusic("KAT6FL", true, p)
						end
						p.playRacewayFLMusic = true
					end
				end
			end
		end
	end
	if (p.lastRecordedLap == nil)
		p.lastRecordedLap = 0
	end
	if (p.laps > p.lastRecordedLap)
	and (p.laps > 0)
	and (tonumber(gamemap) == 790)
	and (p.laps ~= numlaps.value)
		doBestLapTaunt(p)
		if (p.rcwCountLap ~= true)
			p.currentLap = p.laps+1;
			p.rcwCountLap = true;
		end
		if (p.lkNumLaps == nil)
			p.lkNumLaps = numlaps.value; -- for lakitu
		end
		if (p.mrLapTime > p.mrBestLap)
			p.mrBestLap = p.mrLapTime
		end
		p.mrLapTime = 0
		if (p.laps ~= numlaps.value - 1)
			S_StartSound(nil, sfx_k64lap, p)
		end
		p.lastRecordedLap = p.laps
	end
end, MT_PLAYER)


// funny piranha plant sound yes indeed
addHook("MobjCollide", function(mo, t)
	if (t.type == MT_PLAYER) and (S_SoundPlaying(mo, sfx_rwphit) == false)
		S_StartSound(mo, sfx_rwphit)
	end
end, MT_RCWYPIRANHA)

addHook("MapLoad", function()
	for p in players.iterate
		p.lastRecordedLap = nil
		p.playK64Fanfare = nil
		p.playRacewayFLMusic = nil
		p.fnFreTimer = nil
		p.lkNumLaps = nil
	end
end)