From 83349707d57d185ead13e5fa360a39276d26e82b Mon Sep 17 00:00:00 2001 From: NOT_A_ROBOT <76723917+Not-A-Normal-Robot@users.noreply.github.com> Date: Fri, 28 Jan 2022 04:19:45 -0800 Subject: [PATCH] Add secret grade mode (#631) --- parts/eventsets/secret_grade.lua | 56 ++++++++++++++++++++++++++++++++ parts/modes/secret_grade.lua | 23 +++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 parts/eventsets/secret_grade.lua create mode 100644 parts/modes/secret_grade.lua diff --git a/parts/eventsets/secret_grade.lua b/parts/eventsets/secret_grade.lua new file mode 100644 index 00000000..3c736080 --- /dev/null +++ b/parts/eventsets/secret_grade.lua @@ -0,0 +1,56 @@ +local gc_setColor,gc_draw=love.graphics.setColor,love.graphics.draw +local ply_applyField=PLY.draw.applyField +local function GetOpenHole(num) + return -math.abs(((num-1) % 18)-9)+10 +end +local F={} +local ranks={"10","9","8","7","6","5","4","3","2","1","S1","S2","S3","S4","S5","S6","S7","S8","S9","GM","GM+","TM","TM+","TM+₂","TM+₃", "TM+₄","TM+₅"} +-- lines: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +return +{ + fkey1=function(P)P.modeData.showGuide=not P.modeData.showGuide end, + mesDisp=function(P) + mText(TEXTOBJ.grade,63,190) + setFont(55) + mStr(ranks[P.modeData.rankPts],63,125) + + ply_applyField(P) + local mark=TEXTURE.puzzleMark + gc_setColor(1,1,1) + if P.modeData.showGuide then + for y=1,P.modeData.rankPts+1 do for x=1,10 do + local T=F[y][x] + if T~=0 then + gc_draw(mark[T],30*x-30,600-30*y) + end + end end + end + PLY.draw.cancelField(P) + end, + task=function(P) + P.modeData.rankPts=1 + P.modeData.showGuide=true + for i=1,50 do + F[i] = {} + local h=GetOpenHole(i) + for j=1,10 do + F[i][j]=h==j and -1 or 21 + end + end + end, + hook_drop=function(P) + local Pf=P.field + local D=P.modeData + D.rankPts=1 + for i=1,#P.field do + local h=GetOpenHole(i) + for j=1,10 do + if P.field[i][j]>0 and h==j then return end + if P.field[i][j]==0 and h~=j then return end + end + if i==#P.field then return end + if P.field[i+1][h]==0 then return end + D.rankPts=D.rankPts+1 + end + end +} diff --git a/parts/modes/secret_grade.lua b/parts/modes/secret_grade.lua new file mode 100644 index 00000000..ce5cae25 --- /dev/null +++ b/parts/modes/secret_grade.lua @@ -0,0 +1,23 @@ +local ranks={"Grade 10","Grade 9","Grade 8","Grade 7","Grade 6","Grade 5","Grade 4","Grade 3","Grade 2","Grade 1","S1","S2","S3","S4","S5","S6","S7","S8","S9","GM","GM+","TM","TM+","TM+₂","TM+₃", "TM+₄","TM+₅"} +-- index: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 +return{ + env={ + drop=180,lock=180, + hang=15, + eventSet='secret_grade', + bg='bg2',bgm='race', + }, + score=function(P)return{P.modeData.rankPts,P.stat.piece}end, + scoreDisp=function(D)return ranks[D[1]].." "..D[2].." Pieces"end, + comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]=23 and 5 or + G>=21 and 4 or + G>=19 and 3 or + G>=15 and 2 or + G>=11 and 1 or + G>=7 and 0 + end, +}