freeslot("MT_PIANTACROWD")

local function CustomAudience(mobj,defualtcolor, winsound, winstate, losestate) --Port of audience code. Use to make custom Audience members!
	if(mobj.movecount == 0) --Ported from audience member's mobjspawn. Players/players.iterate does not work when players are unitiallized.
		mobj.movecount = 1
		local randu = P_RandomFixed()
		mobj.scale = FRACUNIT*150/100
		if (randu< (FRACUNIT/9) ) --a fan of someone?
			local pcount = 1
			local i = 0
			local pnum = {} --MAXPLAYERS

			for p in players.iterate
				if not p.mo
				continue
				end
			pnum[pcount] = i
			pcount = $1 + 1
			i = $1 + 1
			end
			if (pcount > 1)
				mobj.threshold = pnum[P_RandomRange(1,pcount-1)]
				mobj.color = players[mobj.threshold].skincolor
				mobj.isfan = true
				return
			end
		end
		if (randu > (FRACUNIT/2))
			mobj.color = P_RandomKey(MAXSKINCOLORS-1)+1
			return
		end
		mobj.color = defualtcolor
		return
	end
	if (not mobj.isfan) --a fan of someone?
				return
	end
	if (mobj.threshold >= 0) --not already happy or sad?
		if ( not players[mobj.threshold].valid or players[mobj.threshold].spectator) --focused on a valid player?
			return
		end
		if ((players[mobj.threshold].exiting == 0) and !(players[mobj.threshold].pflags & PF_TIMEOVER)) --not finished yet?
			return
		end
		if (K_IsPlayerLosing(players[mobj.threshold]))
			mobj.threshold = -2
		else
			mobj.threshold = -1
		end
	end
	if (mobj.threshold == -1)
		mobj.angle = $1 + ANGLE_22h
	end
	--TODO: Expand to grounded check for audience members.
	if ((mobj.state != S_PIANTACROWDHOP) or (mobj.tics != states[S_PIANTACROWDHOP].tics)) --not at the start of your cheer jump?
		return
	end
	mobj.momz = 0
	if (mobj.threshold == -1)
		mobj.state = S_PIANTACROWDWIN
	else
		mobj.state = S_PIANTACROWDLOSE
	end	
end

addHook("MobjThinker", function(mobj)
	CustomAudience(mobj,SKINCOLOR_RED, sfx_chaooo, S_PIANTACROWDWIN, S_PIANTACROWDLOSE)
end
,MT_PIANTACROWD) --bush tree
