//FIRST SET
addHook("MapLoad", function(mapNum)
local p = consoleplayer
if p.mo.skin == "cannycat"
p.repet = 0
p.staticdone = false
p.TVsec = 0
p.idlestart = 120
p.trans = false
A_setTV(p, "IDLE" + P_RandomRange(1, 6))
end
end)

//HUD
addHook("HUD", function(v)
local p = consoleplayer
v.playeriscanny = false
if p.mo.skin == "cannycat"  //CAT THOUGHT DISPLAYER 9000
if v.playeriscanny == false
v.playeriscanny = true
end
if v.resultsdown != nil
v.resultsdown = nil
end
if p.deaduncanny == false
if p.trans != true
v.drawScaled(265*FRACUNIT, 10*FRACUNIT, FRACUNIT*1,v.cachePatch(p.TVspr+"_"+p.TVfrm), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
v.drawScaled(253*FRACUNIT, 3*FRACUNIT, FRACUNIT*1, v.cachePatch("CTDA0"), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
end
if p.trans == true
v.drawScaled(-50*FRACUNIT, 0*FRACUNIT, FRACUNIT*5,v.cachePatch(p.TVspr+"_"+p.TVfrm), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
end
                            //STROKE COUNTER
v.drawString(250, 65, "Strokes:", V_MEDSCALEPATCH)
v.drawString(250, 80, p.strokes, V_MEDSCALEPATCH)
end
if p.speedbar == true      //SWING SPEEDBAR
v.drawString(120, 105, p.swingspeed, V_PERPLAYER)
end
if p.deaduncanny == true   //UNCANNY CAT JUMPSCARE
if p.hardmode != true
v.drawStretched(167*FRACUNIT,190*FRACUNIT, 6*FRACUNIT, 4*FRACUNIT, v.cachePatch("UCATA0"), V_PERPLAYER)
end
if p.hardmode == true
v.drawStretched(167*FRACUNIT,190*FRACUNIT, 6*FRACUNIT, 4*FRACUNIT, v.cachePatch("HCATA0"), V_PERPLAYER)
end
end
end
end)

//call jumpscare
function A_Jumpscare()
local p = consoleplayer
p.deaduncanny = true
end

//CUSTOM SET TV
function A_SetTV(actor, var1, var2)
local p = consoleplayer
p.idlestart = 120
if p.staticdone == false and p.repet == 0 and p.trans != true
p.staticdone = true
p.repet = 0
p.TVrmb = var1
var1 = "STATIC"
end
p.TVsec = 0
p.TVfrm = 0
if var1 == "IDLE1"
p.TVspr = "IDLE1"
p.TVmaxfrm = 5
p.TVtic = 20
end
p.TVsec = 0
p.TVfrm = 0
if var1 == "IDLE2"
p.TVspr = "IDLE2"
p.TVmaxfrm = 0
p.TVtic = 0
end
if var1 == "IDLE4"
p.TVspr = "IDLE4"
p.TVmaxfrm = 0
p.TVtic = 0
end
if var1 == "IDLE3"
p.TVspr = "IDLE3"
p.TVmaxfrm = 0
p.TVtic = 0
end
if var1 == "IDLE5"
p.TVspr = "IDLE5"
p.TVmaxfrm = 0
p.TVtic = 0
end
if var1 == "IDLE6"
p.TVspr = "IDLE6"
p.TVmaxfrm = 6
p.TVtic = 10
end
if var1 == "HURT1"
p.TVspr = "HURT1"
p.TVmaxfrm = 0
p.TVtic = 0
end
if var1 == "HURT2"
p.TVspr = "HURT2"
p.TVmaxfrm = 5
p.TVtic = 20
end
if var1 == "STATIC"
p.TVspr = "STATIC"
p.TVmaxfrm = 3
p.TVtic = 1
end
if var1 == "WIN1"
p.TVspr = "WIN1"
p.TVmaxfrm = 0
p.TVtic = 0
end
if var1 == "WIN2"
p.TVspr = "WIN2"
p.TVmaxfrm = 1
p.TVtic = 10
end
if var1 == "WIN3"
p.TVspr = "WIN3"
p.TVmaxfrm = 7
p.TVtic = 10
end
if var1 == "BURN1"
p.TVspr = "BURN1"
p.TVmaxfrm = 3
p.TVtic = 10
end
if var1 == "TRANS"
p.TVspr = "TRANS"
p.TVmaxfrm = 9
p.TVtic = 5
end
if p.resetstatic == true
p.TVdon = false
p.repet = 0
p.staticdone = false
p.resetstatic = false
end
end

//FRAME CODE
addHook("PlayerThink", function(p)
if p.TVsec == nil
p.TVsec = 0
end
p.TVsec = p.TVsec + 1
if p.TVsec == p.TVtic
p.TVsec = 0
p.TVfrm = p.TVfrm + 1
if p.TVfrm > p.TVmaxfrm
p.TVfrm = 0
if p.trans == true
p.trans = false
A_SetTV(p, "IDLE1")
end
if p.TVspr == "STATIC"
p.repet = p.repet + 1
end
end
end
end)

//STATIC CODE
addHook("PlayerThink", function(p)
if p.repet == nil
p.repet = 0
end
if p.repet > 1 and p.staticdone == true
p.repet = 0
p.resetstatic = true
A_SetTV(p, p.TVrmb)
end
end)

//IDLE BEGIN
addHook("PlayerThink", function(p)
if p.idlestart == nil
p.idlestart = 120
end
p.idlestart = p.idlestart - 1
if p.idlestart == 0 and p.trans != true
A_setTV(p, "IDLE" + P_RandomRange(1, 6))
end
end)

//RANK SCREEN
local function golfscreen(v, p)
if v.playeriscanny == true
local p = consoleplayer 
if v.resultsdown == nil
v.intertime = 0
//setting golf hit bonus
if p.strokes <= 25
v.bonus = 50000
v.winimage = 1
end
if p.strokes >= 25 and p.strokes <= 40
v.bonus = 10000
v.winimage = 2
end
if p.strokes >= 41 and p.strokes <= 60
v.bonus = 5000
v.winimage = 3
end
if p.strokes >= 61 and p.strokes <= 80
v.bonus = 1000
v.winimage = 4
end
if p.strokes >= 80 and p.strokes <= 100
v.bonus = 500
v.winimage = 5
end
if p.strokes >= 101
v.bonus = 0
v.winimage = 6
end
//end
v.resultsspeed = 10
v.resultsdown = 190
v.rings = p.rings * 100
v.score = p.oldscore
if v.score == nil
v.score = 0
end
if mapheaderinfo[gamemap].bonustype == 0
//setting time bonus because SRB2 doesnt have a variable for it
if p.realtime <= 29*TICRATE
v.time = 50000
end
if p.realtime >= 30*TICRATE and p.realtime <= 59*TICRATE
v.time = 10000
end
if p.realtime >= 60*TICRATE and p.realtime <= 89*TICRATE
v.time = 5000
end
if p.realtime >= 90*TICRATE and p.realtime <= 119*TICRATE
v.time = 4000
end
if p.realtime >= 120*TICRATE and p.realtime <= 179*TICRATE
v.time = 3000
end
if p.realtime >= 180*TICRATE and p.realtime <= 239*TICRATE
v.time = 2000
end
if p.realtime >= 240*TICRATE and p.realtime <= 299*TICRATE
v.time = 1000
end
if p.realtime >= 300*TICRATE and p.realtime <= 359*TICRATE
v.time = 500
end
if p.realtime >= 360*TICRATE and p.realtime <= 419*TICRATE
v.time = 400
end
if p.realtime >= 420*TICRATE and p.realtime <= 479*TICRATE
v.time = 300
end
if p.realtime >= 480*TICRATE and p.realtime <= 539*TICRATE
v.time = 200
end
if p.realtime >= 540*TICRATE and p.realtime <= 599*TICRATE
v.time = 100
end
if p.realtime >= 600*TICRATE
v.time = 0
end
end
//end of that 
//okey now for the GUARD bonus instead ughhhhh i hate you srb2
if mapheaderinfo[gamemap].bonustype == 1
if p.timeshit == 0 
v.time = 10000
end
if p.timeshit == 1 
v.time = 5000
end
if p.timeshit == 2 
v.time = 1000
end
if p.timeshit == 3
v.time = 500
end
if p.timeshit == 4
v.time = 100
end
if p.timeshit >= 5 
v.time = 0
end
end
//end of that hopefully
if p.canspawn == true
if p.hardmode != true
v.cannybonus = 500
elseif p.hardmode == true
v.cannybonus = 1000
end
elseif p.canspawn != true
v.cannybonus = 0
end
hud.disable("intermissiontally")
end
//IMAGES
v.drawScaled(40*FRACUNIT, 10*FRACUNIT - v.resultsdown*FRACUNIT, FRACUNIT*3,v.cachePatch("R_BGA0"), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
v.drawScaled(40*FRACUNIT, 10*FRACUNIT - v.resultsdown*FRACUNIT, FRACUNIT*3,v.cachePatch("R_TITLEA0"), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
if v.intertime > 109
v.drawScaled(157*FRACUNIT, 55*FRACUNIT - v.resultsdown*FRACUNIT, FRACUNIT*1,v.cachePatch("R_TEXTA0"), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
end
if v.intertime > 124
v.draw(170, 105, v.cachePatch("R_RESUL"+v.winimage), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
end
if p.canspawn == true
if p.hardmode != true
v.draw(250, 50  - v.resultsdown, v.cachePatch("R_RIB0"), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
elseif p.hardmode == true
v.draw(250, 50  - v.resultsdown, v.cachePatch("R_RIB1"), V_SNAPTOTOP|V_SNAPTORIGHT|V_PERPLAYER)
end
end
//TEXTS
if v.intertime > 49 
v.drawString(48, 70, "Golf Hit Bonus", V_PERPLAYER)
v.drawString(82, 80, v.bonus, V_PERPLAYER)
end
if v.intertime > 64
if mapheaderinfo[gamemap].bonustype == 1
v.drawString(60, 90, "Guard Bonus", V_PERPLAYER)
elseif mapheaderinfo[gamemap].bonustype == 0
v.drawString(60, 90, "Time Bonus", V_PERPLAYER)
end
v.drawString(82, 100, v.time, V_PERPLAYER)
end
if v.intertime > 79
v.drawString(60, 110, "Ring Bonus", V_PERPLAYER)
v.drawString(82, 120, v.rings, V_PERPLAYER)
end
if v.intertime > 94
v.drawString(79, 150, "TOTAL", V_PERPLAYER|V_YELLOWMAP)
v.drawString(82, 160, (v.rings + v.time + v.bonus + v.cannybonus + v.score), V_PERPLAYER|V_YELLOWMAP)
end
if menuactive == false
if v.resultsdown != 0
v.resultsdown = v.resultsdown - v.resultsspeed
if v.resultsdown >150
v.resultsspeed = v.resultsspeed + 4
elseif v.resultsdown <150
v.resultsspeed = v.resultsspeed - 1
end
if v.resultsdown < 0
v.resultsdown = 0
end
end
v.intertime = v.intertime + 1
//BANG sfx for results
if v.intertime == 50
S_StartSound(p.mo, sfx_rsbang)
end
if v.intertime == 65
S_StartSound(p.mo, sfx_rsbang)
end
if v.intertime == 80
S_StartSound(p.mo, sfx_rsbang)
end
if v.intertime == 95
S_StartSound(p.mo, sfx_rsbang)
end
if v.intertime == 110
S_StartSound(p.mo, sfx_rsbang)
end
if v.intertime == 125
if p.strokes <= 25
S_StartSound(p.mo, sfx_resul1)
end
if p.strokes >= 25 and p.strokes <= 40
S_StartSound(p.mo, sfx_resul2)
end
if p.strokes >= 41 and p.strokes <= 60
S_StartSound(p.mo, sfx_resul3)
end
if p.strokes >= 61 and p.strokes <= 80
S_StartSound(p.mo, sfx_resul4)
end
if p.strokes >= 80 and p.strokes <= 100
S_StartSound(p.mo, sfx_resul5)
end
if p.strokes >= 101
S_StartSound(p.mo, sfx_resul6)
end
end
end
if (p.cmd.buttons & BT_SPIN) then
v.intertime = 300
v.resultsdown = 0
end
end
end



hud.add(golfscreen,"intermission")