--hi im sonic, welcome to my schoolhouse
--click on me for help!
local animnumbers = 1
local animtimer = TICRATE/7
hud.disable("score")
hud.disable("time")
hud.disable("lives")
hud.disable("rings")


addHook("ThinkFrame", function()
	for players in players.iterate do
	
	if animnumbers == 1
		if animtimer ~= 0
			animtimer = $-1
		elseif animtimer == 0
			animtimer = TICRATE/7
			animnumbers = 2
		end
	elseif animnumbers == 2
		if animtimer ~= 0
			animtimer = $-1
		elseif animtimer == 0
			animtimer = TICRATE/7
			animnumbers = 3
		end
	elseif animnumbers == 3
		if animtimer ~= 0
			animtimer = $-1
		elseif animtimer == 0
			animtimer = TICRATE/7
			animnumbers = 4
		end
	elseif animnumbers == 4
		if animtimer ~= 0
			animtimer = $-1
		elseif animtimer == 0
			animtimer = TICRATE/7
			animnumbers = 1
			end
		end
	end
end)

-- basically everything on the hud
local function SCHOOLHUD(v, player, camera)

--funny animated numbers for score help me please
	local zerogfx = v.cachePatch("SHAN0"+tostring(animnumbers))
	local shhud1 = v.cachePatch("SCHOOLHUD1")
	local shhud2 = v.cachePatch("SCHOOLHUD2")
	local shhud3 = v.cachePatch("SCHOOLHUD3")
	local shhud4 = v.cachePatch("SCHOOLHUD4")
	local ring = v.cachePatch("SSHRING")
	local SSHZERO = v.cachePatch("SSHN0")
	local force = v.cachePatch("TVFOICON")
	local pity = v.cachePatch("TVPIICON")
	local pink = v.cachePatch("TVPPICON")
	local magnet = v.cachePatch("TVATICON")
	local wind = v.cachePatch("TVWWICON")
	local elemental = v.cachePatch("TVELICON")
	local speed = v.cachePatch("TVSSICON")
	local invuln = v.cachePatch("TVIVICON")
	local upside = v.cachePatch("TVGVICON")
	local fire = v.cachePatch("TVFLICON")
	local water = v.cachePatch("TVBBICON")
	local thunder = v.cachePatch("TVZPICON")
	local redf = v.cachePatch("GOTRFLAG")
	local bluf = v.cachePatch("GOTBFLAG")
	local armag = v.cachePatch("TVARICON")
	local dash = v.cachePatch("TVDMICON")
	local livesx = v.cachePatch("SHLX")
	
	--why am i even doing schoolhouse's hud
	
	--funny borders from when the hud isnt going to be properly cut
	--them existing when you dont use the damn green resolutions
	v.drawFill(-100, -50, 158, 400, 31)
	v.drawFill(260, -50, 150, 400, 31)
	v.drawFill(-100, 159, 400, 100, 31)
	v.drawFill(-100, -50, 400, 50, 31)
	
	v.draw(0, 0, shhud1, V_PERPLAYER)
	v.draw(59, 159, shhud2, V_PERPLAYER)
	v.draw(260, 0, shhud3, V_PERPLAYER)
	v.draw(59, 0, shhud4, V_PERPLAYER)
	if string.len(player.name) <= 9
		v.drawString(60, 165, player.name)
	elseif string.len(player.name) > 9
		if player.animalheads == 0
			v.drawString(60, 165, "Elephant")
		elseif player.animalheads == 1
			v.drawString(60, 165, "Crocodile")
		elseif player.animalheads == 2
			v.drawString(60, 165, "Bull")
		elseif player.animalheads == 3
			v.drawString(60, 165, "Pig")
		elseif player.animalheads == 4
			v.drawString(60, 165, "Hippo")
		elseif player.animalheads == 5
			v.drawString(60, 165, "Rabbit")
		elseif player.animalheads == 6
			v.drawString(60, 165, "Kangaroo")
		elseif player.animalheads == 7
			v.drawString(60, 165, "PolarBear")
		elseif player.animalheads == 8
			v.drawString(60, 165, "Zebra")
		elseif player.animalheads == 9
			v.drawString(60, 165, "Monkey")
		end
	end
	
	--funny shield thing show idk
		if (player.powers[pw_shield] & SH_FORCE)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, force, V_PERPLAYER)
			if (player.powers[pw_shield] & SH_FORCEHP)
				v.drawScaled(33*FRACUNIT, 53*FRACUNIT, FRACUNIT/4, force, V_PERPLAYER)
			end
		elseif (player.powers[pw_shield] == SH_ARMAGEDDON)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, armag, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_PINK)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, pink, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_WHIRLWIND)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, wind, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_ELEMENTAL)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, elemental, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_ATTRACT)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, magnet, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_FLAMEAURA)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, fire, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_BUBBLEWRAP)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, water, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_THUNDERCOIN)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, thunder, V_PERPLAYER)
		elseif (player.powers[pw_shield] == SH_PITY)
			v.drawScaled(21*FRACUNIT, 44*FRACUNIT, FRACUNIT/2, pity, V_PERPLAYER)
		end
		
		--haha the powerup things :D
			if player.powers[pw_invulnerability]
				v.drawScaled(21*FRACUNIT, 63*FRACUNIT, FRACUNIT/2, invuln, V_PERPLAYER)
			end
			
			if player.powers[pw_sneakers]
				v.drawScaled(21*FRACUNIT, 82*FRACUNIT, FRACUNIT/2, speed, V_PERPLAYER)
			end
			
			if player.powers[pw_gravityboots]
				v.drawScaled(21*FRACUNIT, 101*FRACUNIT, FRACUNIT/2, upside, V_PERPLAYER)
			end
			
			if player.dashmode > 3*TICRATE
				v.drawScaled(21*FRACUNIT, 120*FRACUNIT, FRACUNIT/2, dash, V_PERPLAYER)
			end
		
		--funny ctf support or something
		if player.gotflag == 1
			v.drawScaled(21*FRACUNIT, 138*FRACUNIT, FRACUNIT/2, redf, V_PERPLAYER)
		elseif player.gotflag == 2
			v.drawScaled(21*FRACUNIT, 138*FRACUNIT, FRACUNIT/2, bluf, V_PERPLAYER)
		end
		
	--funny score hahahughkkhelpme
		if player.score < 10
			v.drawScaled(104*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(120*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(136*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(152*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(168*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(183*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(199*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+player.score+tostring(animnumbers)), V_PERPLAYER)
		elseif player.score > 9 and player.score < 100
			v.drawScaled(104*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(120*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(136*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(152*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(168*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(183*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 1, 1)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(199*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 2, 2)+tostring(animnumbers)), V_PERPLAYER)
		elseif player.score > 99 and player.score < 1000
			v.drawScaled(104*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(120*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(136*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(152*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(168*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 1, 1)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(183*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 2, 2)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(199*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 3, 3)+tostring(animnumbers)), V_PERPLAYER)
		elseif player.score > 999 and player.score < 10000
			v.drawScaled(104*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(120*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(136*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(152*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 1, 1)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(168*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 2, 2)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(183*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 3, 3)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(199*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 4, 4)+tostring(animnumbers)), V_PERPLAYER)
		elseif player.score > 9999 and player.score < 100000
			v.drawScaled(104*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(120*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(136*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 1, 1)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(152*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 2, 2)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(168*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 3, 3)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(183*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 4, 4)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(199*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 5, 5)+tostring(animnumbers)), V_PERPLAYER)
		elseif player.score > 99999 and player.score < 1000000
			v.drawScaled(104*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, zerogfx, V_PERPLAYER)
			v.drawScaled(120*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 1, 1)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(136*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 2, 2)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(152*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 3, 3)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(168*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 4, 4)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(183*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 5, 5)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(199*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 6, 6)+tostring(animnumbers)), V_PERPLAYER)
		elseif player.score > 999999 and player.score < 10000000
			v.drawScaled(104*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 1, 1)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(120*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 2, 2)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(136*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 3, 3)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(152*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 4, 4)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(168*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 5, 5)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(183*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 6, 6)+tostring(animnumbers)), V_PERPLAYER)
			v.drawScaled(199*FRACUNIT, 5*FRACUNIT, FRACUNIT/8, v.cachePatch("SHAN"+string.sub(tonumber(player.score), 7, 7)+tostring(animnumbers)), V_PERPLAYER)
		end
		
	--lives (or lifes idk) icon
	if G_GametypeUsesLives()
		v.draw(260, 189, livesx, V_PERPLAYER)
		if player.lives < 10
			v.draw(272, 183, SSHZERO, V_PERPLAYER)
			v.draw(284, 183, v.cachePatch("SSHN"+player.lives), V_PERPLAYER)
		elseif player.lives >= 10
			v.draw(272, 183, v.cachePatch("SSHN"+string.sub(tonumber(player.lives), 1, 1)), V_PERPLAYER)
			v.draw(284, 183, v.cachePatch("SSHN"+string.sub(tonumber(player.lives), 2, 2)), V_PERPLAYER)
		end
	end
		
	--insert funny sonic boom rings quote
		v.draw(59, 176, ring, V_PERPLAYER)
		if player.rings < 10
			v.draw(76, 176, SSHZERO, V_PERPLAYER)
			v.draw(88, 176, SSHZERO, V_PERPLAYER)
			v.draw(100, 176, SSHZERO, V_PERPLAYER)
			v.draw(112, 176, v.cachePatch("SSHN"+player.rings), V_PERPLAYER)
		elseif player.rings >= 10 and player.rings < 100
			v.draw(76, 176, SSHZERO, V_PERPLAYER)
			v.draw(88, 176, SSHZERO, V_PERPLAYER)
			v.draw(100, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 1, 1)), V_PERPLAYER)
			v.draw(112, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 2, 2)), V_PERPLAYER)
		elseif player.rings >= 100 and player.rings < 1000
			v.draw(76, 176, SSHZERO, V_PERPLAYER)
			v.draw(88, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 1, 1)), V_PERPLAYER)
			v.draw(100, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 2, 2)), V_PERPLAYER)
			v.draw(112, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 3, 3)), V_PERPLAYER)
		elseif player.rings >= 1000
			v.draw(76, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 1, 1)), V_PERPLAYER)
			v.draw(88, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 2, 2)), V_PERPLAYER)
			v.draw(100, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 3, 3)), V_PERPLAYER)
			v.draw(112, 176, v.cachePatch("SSHN"+string.sub(tonumber(player.rings), 4, 4)), V_PERPLAYER)
		end
		
	--funny life icon or animal head idk
		if player.animalheads >= 0 and player.animalheads <= 9
			v.draw(197, 160, v.cachePatch("HEAD0"+tostring(player.animalheads)), V_PERPLAYER)
		end
	end

hud.add(SCHOOLHUD, "game")
