--[[
	Lua by JugadorXEI:
		1. Different types of Call Lua Functions that give a different launch strength, miniturbo and sound
]]

-- IMPORTANT!! NEWER VERSION WILL OVERRIDE OLDER VERSIONS
local WIIMUSHROOMSVERSION = 1
if jug_mkwiimushrooms == nil then
	rawset(_G, "jug_mkwiimushrooms", {})
end

if jug_mkwiimushrooms.ver == nil or jug_mkwiimushrooms.ver < WIIMUSHROOMSVERSION then
-- start

freeslot("sfx_jugshb")

local MR_CENTER = 1 -- 2nd highest bounce
local MR_SLOPE	= 2 -- highest bounce
local MR_DIP	= 3 -- lowest bounce
local MR_PERIMETER = 4 -- 3rd highest bounce
local MR_EDGE	= 5 -- tas lowest bounce

local enableMushrooms = false

local function P_IsLocalPlayer(player)
	if player == consoleplayer then
		return true
	elseif splitscreen then
		for i = 1,#displayplayers do
			if player == displayplayers[i] then
				return true
			end
		end
	end

	return false
end

jug_mkwiimushrooms.wiiMushrooms = function(line, playerMo, sector, typeJump)
	if playerMo == nil or playerMo.valid == false 	then return end
	if playerMo.player == nil or playerMo.player.valid == false then return end
	if P_IsObjectOnGround(playerMo) == false 		then return end

	-- absolutely spitballing these values lol
	if typeJump == MR_SLOPE then
		playerMo.momz = (FRACUNIT * 25)
	elseif typeJump == MR_CENTER then
		playerMo.momz = (FRACUNIT * 22)
	elseif typeJump == MR_PERIMETER then
		playerMo.momz = (FRACUNIT * 19)
	elseif typeJump == MR_DIP then
		playerMo.momz = (FRACUNIT * 16)
	elseif typeJump == MR_EDGE then
		playerMo.momz = (FRACUNIT * 13)
	end

	-- Play a funny sound.
	S_StartSound(playerMo, sfx_jugshb)

	-- Add a full miniturbo.
	local player = playerMo.player
	local pks_charge = player.kartstuff[k_driftcharge]
	local chargegain = K_GetKartDriftSparkValue(player)
	player.kartstuff[k_driftcharge] = $ + chargegain

	-- Sound whenever you get a different tier of sparks
	local blueSpark 	= chargegain
	local redSpark 		= blueSpark * 2
	local rainbowSpark 	= redSpark * 2

	if P_IsLocalPlayer(player) and
		((pks_charge < blueSpark and pks_charge + chargegain >= blueSpark)
		or (pks_charge < redSpark and pks_charge + chargegain >= redSpark)
		or (pks_charge < rainbowSpark and pks_charge + chargegain >= rainbowSpark)) then

		S_StartSoundAtVolume(playerMo, sfx_s3ka2, 192)
	end

end

if jug_mkwiimushrooms.ver == nil then

	addHook("LinedefExecute",
	function(line, playerMo, sector)
		jug_mkwiimushrooms.wiiMushrooms(line, playerMo, sector, MR_CENTER)
	end, "MUSHROOMCENTER")
	
	addHook("LinedefExecute",
	function(line, playerMo, sector)
		jug_mkwiimushrooms.wiiMushrooms(line, playerMo, sector, MR_SLOPE)
	end, "MUSHROOMSLOPE")
	
	addHook("LinedefExecute",
	function(line, playerMo, sector)
		jug_mkwiimushrooms.wiiMushrooms(line, playerMo, sector, MR_DIP)
	end, "MUSHROOMDIP")
	
	addHook("LinedefExecute",
	function(line, playerMo, sector)
		jug_mkwiimushrooms.wiiMushrooms(line, playerMo, sector, MR_PERIMETER)
	end, "MUSHROOMPERIMETE")
	
	addHook("LinedefExecute",
	function(line, playerMo, sector)
		jug_mkwiimushrooms.wiiMushrooms(line, playerMo, sector, MR_EDGE)
	end, "MUSHROOMEDGE")

end

-- end
jug_mkwiimushrooms.ver = WIIMUSHROOMSVERSION

end