rawset(_G, "SONICCURSES", {})

SONICCURSES.menu = {
	[0] = "GLASS SONIC",
	[1] = "GUI_CURSE1",
	[2] = "run head first into a wall",
	[3] = "TRIP SONIC",
	[4] = "GUI_CURSE2",
	[5] = "yo dude your shoes untied",
	[6] = "BLIND SONIC",
	[7] = "GUI_CURSE3",
	[8] = "beautiful sight aint it?"
}
//name
//patch
//description
SONICCURSES.curses = {
	[0] = 0,
	[1] = 0,
	[2] = 0
}
//its just a on or off


addHook("PlayerSpawn", function(p)
p.inhud = false
p.holdc3 = false
p.holdside = false
p.holdc1 = false
p.scroll = 1
if p.lock == nil
p.lock = server.lock
if p.lock == nil
p.lock = false
end
end
end)

addHook("PlayerThink", function(p)
if p.mo and p.mo.valid and (p.mo.skin == "sonic") and p.lock == false
if (p.cmd.buttons & BT_CUSTOM3) and p.holdc3 == false
if p.inhud == false
p.inhud = true
elseif p.inhud == true
p.inhud = false
end
p.holdc3 = true
end
if not (p.cmd.buttons & BT_CUSTOM3) and p.holdc3 == true
p.holdc3 = false
end
end
end)

addHook("PlayerThink", function(p) //toggle
if p.mo and p.mo.valid and (p.mo.skin == "sonic")
if p.inhud == true
if (p.cmd.buttons & BT_CUSTOM1) and p.holdc1 == false
p.holdc1 = true
if SONICCURSES.curses[p.scroll - 1] == 1
SONICCURSES.curses[p.scroll - 1] = 0
p.mo.state = S_PLAY_STND
S_StartSound(p.mo, sfx_notadd, p)
elseif SONICCURSES.curses[p.scroll - 1] == 0
SONICCURSES.curses[p.scroll - 1] = 1
A_set(p, p.scroll)
S_StartSound(p.mo, sfx_addfil, p)
end
end
if not (p.cmd.buttons & BT_CUSTOM1) and p.holdc1 == true
p.holdc1 = false
end
end
end
end)

addHook("PreThinkFrame", function() //scroll function
for p in players.iterate do
if p.mo and p.mo.valid
if p.inhud == true
if p.cmd.sidemove < 0 and p.holdside != true
S_StartSound(p.mo, sfx_s3kb7, p)
p.holdside = true
p.scroll = $ - 1
if p.scroll < 1
p.scroll = 3
end
elseif p.cmd.sidemove > 0 and p.holdside != true
S_StartSound(p.mo, sfx_s3kb7, p)
p.holdside = true
p.scroll = $ + 1
if p.scroll > 3
p.scroll = 1
end
end
if p.cmd.sidemove == 0 and p.holdside == true
p.holdside = false
end
p.powers[pw_nocontrol] = 1
end
end
end
end)

addHook("HUD", function(v, p)
if p.inhud == true
if SONICCURSES.curses[2] == 0
v.drawScaled(0*FRACUNIT, 0*FRACUNIT, FRACUNIT*2,v.cachePatch("GUI_BLACK"), V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_30TRANS)
elseif SONICCURSES.curses[2] == 1
v.drawScaled(0*FRACUNIT, 0*FRACUNIT, FRACUNIT*2,v.cachePatch("GUI_BLACK"), V_SNAPTOBOTTOM|V_SNAPTORIGHT)
end
v.drawString(158, 35, SONICCURSES.menu[p.scroll*3 - 3], V_ALLOWLOWERCASE, "center")
v.drawScaled(155*FRACUNIT, 110*FRACUNIT, FRACUNIT*1,v.cachePatch(SONICCURSES.menu[p.scroll*3 - 2]), V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_PERPLAYER)
v.drawString(170, 160, SONICCURSES.menu[p.scroll*3 - 1], V_ALLOWLOWERCASE, "center")
if SONICCURSES.curses[p.scroll - 1] == 0
v.drawString(159, 180, "curse off", V_ALLOWLOWERCASE, "center")
elseif SONICCURSES.curses[p.scroll - 1] == 1
v.drawString(158, 180, "curse on", V_ALLOWLOWERCASE|V_REDMAP, "center")
end
end
end)

function A_set(p, crs) //sets values 
if crs == 1
p.dieimpact = false
p.gibclean = true
p.gibnum = 0
p.explode = true
p.safeframes = 0
p.safefirst = true
end
if crs == 2
p.tripped = false
p.cooldownfall = 0
end
end