Add Construct modes
This commit is contained in:
1
main.lua
1
main.lua
@@ -462,6 +462,7 @@ do
|
|||||||
if not RANKS.sprint_10l then RANKS.sprint_10l=0 end
|
if not RANKS.sprint_10l then RANKS.sprint_10l=0 end
|
||||||
if RANKS.master_l then RANKS.master_n,RANKS.master_l=RANKS.master_l end
|
if RANKS.master_l then RANKS.master_n,RANKS.master_l=RANKS.master_l end
|
||||||
if RANKS.master_u then RANKS.master_h,RANKS.master_u=RANKS.master_u end
|
if RANKS.master_u then RANKS.master_h,RANKS.master_u=RANKS.master_u end
|
||||||
|
if RANKS.secret_grade then RANKS.construct_sg,RANKS.secret_grade=RANKS.secret_grade end
|
||||||
for _,v in next,VK_ORG do v.color=nil end
|
for _,v in next,VK_ORG do v.color=nil end
|
||||||
for name,rank in next,RANKS do
|
for name,rank in next,RANKS do
|
||||||
if type(name)=='number' or type(rank)~='number' then
|
if type(name)=='number' or type(rank)~='number' then
|
||||||
|
|||||||
117
parts/eventsets/construct_checker.lua
Normal file
117
parts/eventsets/construct_checker.lua
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
local gc_setColor,gc_draw=love.graphics.setColor,love.graphics.draw
|
||||||
|
local ply_applyField=PLY.draw.applyField
|
||||||
|
|
||||||
|
local holePatterns={
|
||||||
|
{-1,21,-1,21,-1,21,-1,21,-1,21},
|
||||||
|
{21,-1,21,-1,21,-1,21,-1,21,-1}
|
||||||
|
}
|
||||||
|
|
||||||
|
local targetField={}
|
||||||
|
|
||||||
|
local function generateGuide(y,mirror)
|
||||||
|
local tfLength=#targetField
|
||||||
|
if tfLength>y then return end
|
||||||
|
mirror=mirror and 1 or 0
|
||||||
|
for i=tfLength,y do
|
||||||
|
table.insert(targetField,TABLE.shift(
|
||||||
|
holePatterns[(i+mirror)%2+1]
|
||||||
|
))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function calculateRankPts(P)
|
||||||
|
local points=1
|
||||||
|
for y=1,#P.field do
|
||||||
|
local flag
|
||||||
|
for x=1,10 do
|
||||||
|
-- X guide is filled
|
||||||
|
if P.field[y][x]>0 and targetField[y][x]<0 then flag=true break end
|
||||||
|
-- Block guide is empty
|
||||||
|
if P.field[y][x]==0 and targetField[y][x]>0 then flag=true break end
|
||||||
|
end
|
||||||
|
if flag then break end
|
||||||
|
points=points+1
|
||||||
|
end
|
||||||
|
P.modeData.rankPts=points
|
||||||
|
P.modeData.maxRankPts=math.max(points,P.modeData.maxRankPts)
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
fkey1=function(P) P.modeData.showGuide=not P.modeData.showGuide end,
|
||||||
|
fkey2=function(P)
|
||||||
|
P.modeData.mirror=not P.modeData.mirror
|
||||||
|
TABLE.cut(targetField)
|
||||||
|
generateGuide(#P.field+10,P.modeData.mirror)
|
||||||
|
calculateRankPts(P)
|
||||||
|
end,
|
||||||
|
mesDisp=function(P)
|
||||||
|
local D=P.modeData
|
||||||
|
mText(TEXTOBJ.grade,63,190)
|
||||||
|
mText(TEXTOBJ.line,63,310)
|
||||||
|
setFont(55)
|
||||||
|
GC.mStr(getConstructGrade(D.rankPts),63,125)
|
||||||
|
GC.mStr(D.rankPts-1,63,245)
|
||||||
|
|
||||||
|
-- Display highest grade
|
||||||
|
if D.maxRankPts>D.rankPts then
|
||||||
|
gc_setColor(COLOR.lX)
|
||||||
|
setFont(20)
|
||||||
|
GC.mStr(text.highest:repD(getConstructGrade(D.maxRankPts)),63,216)
|
||||||
|
GC.mStr(text.highest:repD(D.maxRankPts+1),63,336)
|
||||||
|
end
|
||||||
|
|
||||||
|
ply_applyField(P)
|
||||||
|
local mark=TEXTURE.puzzleMark
|
||||||
|
if D.showGuide then
|
||||||
|
local firstMistake=nil
|
||||||
|
for y=1,D.rankPts+1 do
|
||||||
|
for x=1,10 do
|
||||||
|
local texture=targetField[y][x]
|
||||||
|
-- Missing blocks
|
||||||
|
if not P:solid(x,y) and texture>0 then
|
||||||
|
|
||||||
|
-- Missing block under overhang
|
||||||
|
if P:solid(x,y+1) then
|
||||||
|
firstMistake=firstMistake or y
|
||||||
|
gc_setColor(COLOR.R)
|
||||||
|
else
|
||||||
|
gc_setColor(COLOR.Z)
|
||||||
|
end
|
||||||
|
|
||||||
|
gc_draw(mark[texture],30*x-30,600-30*y)
|
||||||
|
elseif texture<0 then
|
||||||
|
-- X always gets displayed, color changes based on whether there is a block there
|
||||||
|
if P:solid(x,y) then
|
||||||
|
gc_setColor(COLOR.R)
|
||||||
|
firstMistake=firstMistake or y
|
||||||
|
elseif D.rankPts>y then
|
||||||
|
gc_setColor(COLOR.G)
|
||||||
|
else
|
||||||
|
gc_setColor(COLOR.Z)
|
||||||
|
end
|
||||||
|
gc_draw(mark[texture],30*x-30,600-30*y)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if y==firstMistake then
|
||||||
|
gc_setColor(1,0,0,.2*(math.sin(2*TIME())+1))
|
||||||
|
love.graphics.rectangle("fill",0,600-30*y,300,30)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
PLY.draw.cancelField()
|
||||||
|
end,
|
||||||
|
task=function(P)
|
||||||
|
local D=P.modeData
|
||||||
|
D.rankPts=1
|
||||||
|
D.maxRankPts=1
|
||||||
|
D.showGuide=true
|
||||||
|
D.mirror=false
|
||||||
|
TABLE.cut(targetField)
|
||||||
|
generateGuide(10)
|
||||||
|
end,
|
||||||
|
hook_drop=function(P)
|
||||||
|
local D=P.modeData
|
||||||
|
calculateRankPts(P)
|
||||||
|
generateGuide(#P.field+10)
|
||||||
|
end
|
||||||
|
}
|
||||||
117
parts/eventsets/construct_invsg.lua
Normal file
117
parts/eventsets/construct_invsg.lua
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
local gc_setColor,gc_draw=love.graphics.setColor,love.graphics.draw
|
||||||
|
local ply_applyField=PLY.draw.applyField
|
||||||
|
|
||||||
|
local targetField={}
|
||||||
|
|
||||||
|
local function getOpenHole(y,mirror)
|
||||||
|
if mirror then y=y+9 end
|
||||||
|
return -math.abs(((y-1) % 18)-9)+10
|
||||||
|
end
|
||||||
|
local function generateGuide(y,mirror)
|
||||||
|
local l=#targetField
|
||||||
|
if l>y then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
for i=l,y do
|
||||||
|
targetField[i] = {}
|
||||||
|
local h=getOpenHole(i,mirror)
|
||||||
|
for j=1,10 do
|
||||||
|
targetField[i][j]=h==j and 21 or -1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function calculateRankPts(P)
|
||||||
|
local points=1
|
||||||
|
for y=1,#P.field do
|
||||||
|
local holePos=getOpenHole(y,P.modeData.mirror)
|
||||||
|
local flag
|
||||||
|
for x=1,10 do
|
||||||
|
if P.field[y][x]>0 and holePos~=x then flag=true break end
|
||||||
|
if P.field[y][x]==0 and holePos==x then flag=true break end
|
||||||
|
end
|
||||||
|
if flag then break end
|
||||||
|
if P:solid(holePos,y+1) then break end
|
||||||
|
points=points+1
|
||||||
|
end
|
||||||
|
P.modeData.rankPts=points
|
||||||
|
P.modeData.maxRankPts=math.max(points,P.modeData.maxRankPts)
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
fkey1=function(P) P.modeData.showGuide=not P.modeData.showGuide end,
|
||||||
|
fkey2=function(P)
|
||||||
|
P.modeData.mirror=not P.modeData.mirror
|
||||||
|
TABLE.cut(targetField)
|
||||||
|
generateGuide(#P.field+10,P.modeData.mirror)
|
||||||
|
calculateRankPts(P)
|
||||||
|
end,
|
||||||
|
mesDisp=function(P)
|
||||||
|
local D=P.modeData
|
||||||
|
mText(TEXTOBJ.grade,63,190)
|
||||||
|
mText(TEXTOBJ.line,63,310)
|
||||||
|
setFont(55)
|
||||||
|
GC.mStr(getConstructGrade(D.rankPts),63,125)
|
||||||
|
GC.mStr(D.rankPts-1,63,245)
|
||||||
|
|
||||||
|
-- Display highest grade
|
||||||
|
if D.maxRankPts>D.rankPts then
|
||||||
|
gc_setColor(COLOR.lX)
|
||||||
|
setFont(20)
|
||||||
|
GC.mStr(text.highest:repD(getConstructGrade(D.maxRankPts)),63,216)
|
||||||
|
GC.mStr(text.highest:repD(D.maxRankPts+1),63,336)
|
||||||
|
end
|
||||||
|
|
||||||
|
ply_applyField(P)
|
||||||
|
local mark=TEXTURE.puzzleMark
|
||||||
|
if D.showGuide then
|
||||||
|
local firstMistake=nil
|
||||||
|
for y=1,D.rankPts+1 do
|
||||||
|
for x=1,10 do
|
||||||
|
local texture=targetField[y][x]
|
||||||
|
-- Missing blocks
|
||||||
|
if not P:solid(x,y) and texture>0 then
|
||||||
|
|
||||||
|
-- Missing block under overhang
|
||||||
|
if P:solid(x,y+1) then
|
||||||
|
firstMistake=firstMistake or y
|
||||||
|
gc_setColor(COLOR.R)
|
||||||
|
else
|
||||||
|
gc_setColor(COLOR.Z)
|
||||||
|
end
|
||||||
|
|
||||||
|
gc_draw(mark[texture],30*x-30,600-30*y)
|
||||||
|
elseif texture<0 then
|
||||||
|
-- X always gets displayed, color changes based on whether there is a block there
|
||||||
|
if P:solid(x,y) then
|
||||||
|
gc_setColor(COLOR.R)
|
||||||
|
firstMistake=firstMistake or y
|
||||||
|
elseif D.rankPts>y then
|
||||||
|
gc_setColor(COLOR.G)
|
||||||
|
else
|
||||||
|
gc_setColor(COLOR.Z)
|
||||||
|
end
|
||||||
|
gc_draw(mark[texture],30*x-30,600-30*y)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if y==firstMistake then
|
||||||
|
gc_setColor(1,0,0,.2*(math.sin(2*TIME())+1))
|
||||||
|
love.graphics.rectangle("fill",0,600-30*y,300,30)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
PLY.draw.cancelField()
|
||||||
|
end,
|
||||||
|
task=function(P)
|
||||||
|
local D=P.modeData
|
||||||
|
D.rankPts=1
|
||||||
|
D.showGuide=true
|
||||||
|
D.maxRankPts=1
|
||||||
|
D.mirror=false
|
||||||
|
TABLE.cut(targetField)
|
||||||
|
generateGuide(10,D.mirror)
|
||||||
|
end,
|
||||||
|
hook_drop=function(P)
|
||||||
|
calculateRankPts(P)
|
||||||
|
generateGuide(#P.field+10,P.modeData.mirror)
|
||||||
|
end
|
||||||
|
}
|
||||||
117
parts/eventsets/construct_sg.lua
Normal file
117
parts/eventsets/construct_sg.lua
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
local gc_setColor,gc_draw=love.graphics.setColor,love.graphics.draw
|
||||||
|
local ply_applyField=PLY.draw.applyField
|
||||||
|
|
||||||
|
local targetField={}
|
||||||
|
|
||||||
|
local function getOpenHole(y,mirror)
|
||||||
|
if mirror then y=y+9 end
|
||||||
|
return -math.abs(((y-1) % 18)-9)+10
|
||||||
|
end
|
||||||
|
local function generateGuide(y,mirror)
|
||||||
|
local l=#targetField
|
||||||
|
if l>y then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
for i=l,y do
|
||||||
|
targetField[i] = {}
|
||||||
|
local h=getOpenHole(i,mirror)
|
||||||
|
for j=1,10 do
|
||||||
|
targetField[i][j]=h==j and -1 or 21
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function calculateRankPts(P)
|
||||||
|
local points=1
|
||||||
|
for y=1,#P.field do
|
||||||
|
local holePos=getOpenHole(y,P.modeData.mirror)
|
||||||
|
local flag
|
||||||
|
for x=1,10 do
|
||||||
|
if P.field[y][x]>0 and holePos==x then flag=true break end
|
||||||
|
if P.field[y][x]==0 and holePos~=x then flag=true break end
|
||||||
|
end
|
||||||
|
if flag then break end
|
||||||
|
if not P:solid(holePos,y+1) then break end
|
||||||
|
points=points+1
|
||||||
|
end
|
||||||
|
P.modeData.rankPts=points
|
||||||
|
P.modeData.maxRankPts=math.max(points,P.modeData.maxRankPts)
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
fkey1=function(P) P.modeData.showGuide=not P.modeData.showGuide end,
|
||||||
|
fkey2=function(P)
|
||||||
|
P.modeData.mirror=not P.modeData.mirror
|
||||||
|
TABLE.cut(targetField)
|
||||||
|
generateGuide(#P.field+10,P.modeData.mirror)
|
||||||
|
calculateRankPts(P)
|
||||||
|
end,
|
||||||
|
mesDisp=function(P)
|
||||||
|
local D=P.modeData
|
||||||
|
mText(TEXTOBJ.grade,63,190)
|
||||||
|
mText(TEXTOBJ.line,63,310)
|
||||||
|
setFont(55)
|
||||||
|
GC.mStr(getConstructGrade(D.rankPts),63,125)
|
||||||
|
GC.mStr(D.rankPts-1,63,245)
|
||||||
|
|
||||||
|
-- Display highest grade
|
||||||
|
if D.maxRankPts>D.rankPts then
|
||||||
|
gc_setColor(COLOR.lX)
|
||||||
|
setFont(20)
|
||||||
|
GC.mStr(text.highest:repD(getConstructGrade(D.maxRankPts)),63,216)
|
||||||
|
GC.mStr(text.highest:repD(D.maxRankPts+1),63,336)
|
||||||
|
end
|
||||||
|
|
||||||
|
ply_applyField(P)
|
||||||
|
local mark=TEXTURE.puzzleMark
|
||||||
|
if D.showGuide then
|
||||||
|
local firstMistake=nil
|
||||||
|
for y=1,D.rankPts+1 do
|
||||||
|
for x=1,10 do
|
||||||
|
local texture=targetField[y][x]
|
||||||
|
-- Missing blocks
|
||||||
|
if not P:solid(x,y) and texture>0 then
|
||||||
|
|
||||||
|
-- Missing block under overhang
|
||||||
|
if P:solid(x,y+1) then
|
||||||
|
firstMistake=firstMistake or y
|
||||||
|
gc_setColor(COLOR.R)
|
||||||
|
else
|
||||||
|
gc_setColor(COLOR.Z)
|
||||||
|
end
|
||||||
|
|
||||||
|
gc_draw(mark[texture],30*x-30,600-30*y)
|
||||||
|
elseif texture<0 then
|
||||||
|
-- X always gets displayed, color changes based on whether there is a block there
|
||||||
|
if P:solid(x,y) then
|
||||||
|
gc_setColor(COLOR.R)
|
||||||
|
firstMistake=firstMistake or y
|
||||||
|
elseif D.rankPts>y then
|
||||||
|
gc_setColor(COLOR.G)
|
||||||
|
else
|
||||||
|
gc_setColor(COLOR.Z)
|
||||||
|
end
|
||||||
|
gc_draw(mark[texture],30*x-30,600-30*y)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if y==firstMistake then
|
||||||
|
gc_setColor(1,0,0,.2*(math.sin(2*TIME())+1))
|
||||||
|
love.graphics.rectangle("fill",0,600-30*y,300,30)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
PLY.draw.cancelField()
|
||||||
|
end,
|
||||||
|
task=function(P)
|
||||||
|
local D=P.modeData
|
||||||
|
D.rankPts=1
|
||||||
|
D.showGuide=true
|
||||||
|
D.maxRankPts=1
|
||||||
|
D.mirror=false
|
||||||
|
TABLE.cut(targetField)
|
||||||
|
generateGuide(10,D.mirror)
|
||||||
|
end,
|
||||||
|
hook_drop=function(P)
|
||||||
|
calculateRankPts(P)
|
||||||
|
generateGuide(#P.field+10,P.modeData.mirror)
|
||||||
|
end
|
||||||
|
}
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
||||||
local function generateGuide(num)
|
|
||||||
local l=#F
|
|
||||||
if l>num then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
for i=l,num do
|
|
||||||
F[i] = {}
|
|
||||||
local h=getOpenHole(i)
|
|
||||||
for j=1,10 do
|
|
||||||
F[i][j]=h==j and -1 or 21
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
fkey1=function(P) P.modeData.showGuide=not P.modeData.showGuide end,
|
|
||||||
mesDisp=function(P)
|
|
||||||
mText(TEXTOBJ.grade,63,190)
|
|
||||||
mText(TEXTOBJ.line,63,310)
|
|
||||||
setFont(55)
|
|
||||||
GC.mStr(getSecretGrade(P.modeData.rankPts),63,125)
|
|
||||||
GC.mStr(P.modeData.rankPts-1,63,245)
|
|
||||||
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()
|
|
||||||
end,
|
|
||||||
task=function(P)
|
|
||||||
P.modeData.rankPts=1
|
|
||||||
P.modeData.showGuide=true
|
|
||||||
generateGuide(10)
|
|
||||||
end,
|
|
||||||
hook_drop=function(P)
|
|
||||||
local D=P.modeData
|
|
||||||
D.rankPts=0
|
|
||||||
for i=1,#P.field do
|
|
||||||
local h=getOpenHole(i)
|
|
||||||
local flag
|
|
||||||
for j=1,10 do
|
|
||||||
if P.field[i][j]>0 and h==j then flag=true break end-- goto post_pts_calc
|
|
||||||
if P.field[i][j]==0 and h~=j then flag=true break end-- goto post_pts_calc
|
|
||||||
end
|
|
||||||
if flag then break end
|
|
||||||
if i==#P.field then break end-- goto post_pts_calc
|
|
||||||
if P.field[i+1][h]==0 then break end-- goto post_pts_calc
|
|
||||||
D.rankPts=D.rankPts+1
|
|
||||||
end
|
|
||||||
-- ::post_pts_calc::
|
|
||||||
generateGuide(D.rankPts+20)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
@@ -198,7 +198,7 @@ local function getSmallNum(num)
|
|||||||
end
|
end
|
||||||
do -- Secret Grade
|
do -- Secret Grade
|
||||||
local r={"GM","GM+","TM","TM+"}
|
local r={"GM","GM+","TM","TM+"}
|
||||||
function getSecretGrade(index)
|
function getConstructGrade(index)
|
||||||
if index<11 then -- rank 10 - 1
|
if index<11 then -- rank 10 - 1
|
||||||
return tostring(11-index)
|
return tostring(11-index)
|
||||||
elseif index<20 then -- S1 - S9 ranks
|
elseif index<20 then -- S1 - S9 ranks
|
||||||
@@ -210,11 +210,11 @@ do -- Secret Grade
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function getSecretGradeText(index)
|
function getConstructGradeText(index)
|
||||||
if index<11 then
|
if index<11 then
|
||||||
return "Grade "..tostring(11-index)
|
return "Grade "..tostring(11-index)
|
||||||
else
|
else
|
||||||
return getSecretGrade(index)
|
return getConstructGrade(index)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ return {
|
|||||||
infHeightOn="Infinite Height ON",
|
infHeightOn="Infinite Height ON",
|
||||||
infHeightOff="Infinite Height OFF",
|
infHeightOff="Infinite Height OFF",
|
||||||
infHeightHint="Toggle with Function 1 key",
|
infHeightHint="Toggle with Function 1 key",
|
||||||
|
highest="(highest: $1)",
|
||||||
|
|
||||||
speedLV="Speed Level",
|
speedLV="Speed Level",
|
||||||
piece="Piece",line="Lines",atk="Attack",eff="Efficiency",
|
piece="Piece",line="Lines",atk="Attack",eff="Efficiency",
|
||||||
@@ -866,7 +867,9 @@ C. Gamepad
|
|||||||
['sprintPenta']= {"Sprint", "PENTOMINO", "40L with the 18 pentominoes"},
|
['sprintPenta']= {"Sprint", "PENTOMINO", "40L with the 18 pentominoes"},
|
||||||
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
||||||
['sprint123']= {"Sprint", "M123", "40L with only monominoes, dominoes, and triminoes"},
|
['sprint123']= {"Sprint", "M123", "40L with only monominoes, dominoes, and triminoes"},
|
||||||
['secret_grade']= {"Secret Grade", "", "Building a zigzag shape by following the guide!"},
|
['construct_sg']= {"Construct", "SECRET GRADE", "Build a zigzag pattern by following the guide!"},
|
||||||
|
['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['dig_10l']= {"Dig", "10L", "Dig 10 garbage lines as fast as you can!"},
|
['dig_10l']= {"Dig", "10L", "Dig 10 garbage lines as fast as you can!"},
|
||||||
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines as fast as you can!"},
|
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines as fast as you can!"},
|
||||||
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines as fast as you can!"},
|
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines as fast as you can!"},
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ return {
|
|||||||
-- infHeightOn="Infinite Height ON",
|
-- infHeightOn="Infinite Height ON",
|
||||||
-- infHeightOff="Infinite Height OFF",
|
-- infHeightOff="Infinite Height OFF",
|
||||||
-- infHeightHint="Toggle with Function 1 key",
|
-- infHeightHint="Toggle with Function 1 key",
|
||||||
|
-- highestGrade="(highest: $1)",
|
||||||
|
|
||||||
speedLV="Veloc. de juego",
|
speedLV="Veloc. de juego",
|
||||||
piece="Piezas",line="Líneas",atk="Ataque",eff="Eficiencia",
|
piece="Piezas",line="Líneas",atk="Ataque",eff="Eficiencia",
|
||||||
@@ -818,7 +819,9 @@ return {
|
|||||||
['sprintPenta']= {"Sprint", "Pentominos", "¡Limpia 40 líneas con los 18 pentominos distintos!"},
|
['sprintPenta']= {"Sprint", "Pentominos", "¡Limpia 40 líneas con los 18 pentominos distintos!"},
|
||||||
['sprintMPH']= {"Sprint", "MPH", "Memoryless (sin memoria)\nPreviewless (sin pzas. siguientes)\nHoldless (sin reserva)."},
|
['sprintMPH']= {"Sprint", "MPH", "Memoryless (sin memoria)\nPreviewless (sin pzas. siguientes)\nHoldless (sin reserva)."},
|
||||||
['sprint123']= {"Sprint", "M123", "Limpia 40 líneas con monominos, biminos y triminos"},
|
['sprint123']= {"Sprint", "M123", "Limpia 40 líneas con monominos, biminos y triminos"},
|
||||||
['secret_grade']= {"Secret Grade", "", "¡Arma dejando huecos en escalera, sigue la guía!"},
|
['construct_sg']= {"Construir", "SECRET GRADE", "¡Arma dejando huecos en escalera, sigue la guía!"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['dig_10l']= {"Dig", "10L", "¡Limpia 10 líneas de queso lo más rápido que puedas!"},
|
['dig_10l']= {"Dig", "10L", "¡Limpia 10 líneas de queso lo más rápido que puedas!"},
|
||||||
['dig_40l']= {"Dig", "40L", "¡Limpia 40 líneas de queso lo más rápido que puedas!"},
|
['dig_40l']= {"Dig", "40L", "¡Limpia 40 líneas de queso lo más rápido que puedas!"},
|
||||||
['dig_100l']= {"Dig", "100L", "¡Limpia 100 líneas de queso lo más rápido que puedas!"},
|
['dig_100l']= {"Dig", "100L", "¡Limpia 100 líneas de queso lo más rápido que puedas!"},
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ return {
|
|||||||
-- infHeightOn="Infinite Height ON",
|
-- infHeightOn="Infinite Height ON",
|
||||||
-- infHeightOff="Infinite Height OFF",
|
-- infHeightOff="Infinite Height OFF",
|
||||||
-- infHeightHint="Toggle with Function 1 key",
|
-- infHeightHint="Toggle with Function 1 key",
|
||||||
|
-- highestGrade="(highest: $1)",
|
||||||
|
|
||||||
speedLV="niveau de vitesse",
|
speedLV="niveau de vitesse",
|
||||||
piece="Pièce",line="Lignes",atk="Attaque",eff="Efficacité",
|
piece="Pièce",line="Lignes",atk="Attaque",eff="Efficacité",
|
||||||
@@ -796,6 +797,10 @@ return {
|
|||||||
['sprint_1000l']= {"Sprint", "1000L", "Nettoyez 1000 lignes !"},
|
['sprint_1000l']= {"Sprint", "1000L", "Nettoyez 1000 lignes !"},
|
||||||
['sprintPenta']= {"Sprint", "Pentomino", "40 lignes avec 18 pentominos."},
|
['sprintPenta']= {"Sprint", "Pentomino", "40 lignes avec 18 pentominos."},
|
||||||
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
||||||
|
-- ['sprint123']= {"Sprint", "M123", "40L with only monominoes, dominoes, and triminoes"},
|
||||||
|
-- ['construct_sg']= {"Construct", "SECRET GRADE", "Build a zigzag shape by following the guide!"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['dig_10l']= {"Dig", "10L", "Creusez 10 lignes"},
|
['dig_10l']= {"Dig", "10L", "Creusez 10 lignes"},
|
||||||
['dig_40l']= {"Dig", "40L", "Creusez 40 lignes"},
|
['dig_40l']= {"Dig", "40L", "Creusez 40 lignes"},
|
||||||
['dig_100l']= {"Dig", "100L", "Creusez 100 lignes"},
|
['dig_100l']= {"Dig", "100L", "Creusez 100 lignes"},
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ return {
|
|||||||
infHeightOn="Ketinggian Tak Terhingga ON",
|
infHeightOn="Ketinggian Tak Terhingga ON",
|
||||||
infHeightOff="Ketinggian Tak Terhingga OFF",
|
infHeightOff="Ketinggian Tak Terhingga OFF",
|
||||||
infHeightHint="Ubah dengan tombol Fungsi 1",
|
infHeightHint="Ubah dengan tombol Fungsi 1",
|
||||||
|
highestGrade="(tertinggi: $1)",
|
||||||
|
|
||||||
speedLV="Kecptn lvl",
|
speedLV="Kecptn lvl",
|
||||||
piece="Blok",line="Baris",atk="Baris Terkirim",eff="Efisiensi",
|
piece="Blok",line="Baris",atk="Baris Terkirim",eff="Efisiensi",
|
||||||
@@ -828,7 +829,9 @@ return {
|
|||||||
['sprintPenta']= {"Balapan", "PENTOMINO", "40L dengan pentomino!"},
|
['sprintPenta']= {"Balapan", "PENTOMINO", "40L dengan pentomino!"},
|
||||||
['sprintMPH']= {"Balapan", "MPH", "Tanpa ingatan\nTanpa pratinjau\nTanpa simpan"},
|
['sprintMPH']= {"Balapan", "MPH", "Tanpa ingatan\nTanpa pratinjau\nTanpa simpan"},
|
||||||
['sprint123']= {"Balapan", "M123", "40L dengan hanya monomino, domino, dan trimino"},
|
['sprint123']= {"Balapan", "M123", "40L dengan hanya monomino, domino, dan trimino"},
|
||||||
['secret_grade']= {"Secret Grade", "", "Buatlah formasi lubang zigzag, menuruti panduannya!"},
|
['construct_sg']= {"Membangun", "SECRET GRADE", "Buatlah formasi lubang zigzag, menuruti panduannya!"},
|
||||||
|
['construct_checker']= {"Membangun", "KOTAK-KOTAK", "Buatlah pola kotak-kotak!"},
|
||||||
|
['construct_invsg']= {"Membangun", "SG TERBALIK", "Buatlah pola zigzag terbalik!"},
|
||||||
['dig_10l']= {"Gali", "10L", "Gali 10 baris!"},
|
['dig_10l']= {"Gali", "10L", "Gali 10 baris!"},
|
||||||
['dig_40l']= {"Gali", "40L", "Gali 40 baris!"},
|
['dig_40l']= {"Gali", "40L", "Gali 40 baris!"},
|
||||||
['dig_100l']= {"Gali", "100L", "Gali 100 baris!"},
|
['dig_100l']= {"Gali", "100L", "Gali 100 baris!"},
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ return {
|
|||||||
-- infHeightOn="Infinite Height ON",
|
-- infHeightOn="Infinite Height ON",
|
||||||
-- infHeightOff="Infinite Height OFF",
|
-- infHeightOff="Infinite Height OFF",
|
||||||
-- infHeightHint="Toggle with Function 1 key",
|
-- infHeightHint="Toggle with Function 1 key",
|
||||||
|
-- highestGrade="(highest: $1)",
|
||||||
|
|
||||||
speedLV="レベル",
|
speedLV="レベル",
|
||||||
piece="ミノ数",line="line数",atk="火力",eff="効率",
|
piece="ミノ数",line="line数",atk="火力",eff="効率",
|
||||||
@@ -871,7 +872,9 @@ C. ゲームパッド
|
|||||||
['sprintPenta']= {"スプリント", "PENTOMINO", "ペントミノで40line"},
|
['sprintPenta']= {"スプリント", "PENTOMINO", "ペントミノで40line"},
|
||||||
['sprintMPH']= {"スプリント", "MPH", "ミノ順なし\nネクストなし\nホールドなし!"},
|
['sprintMPH']= {"スプリント", "MPH", "ミノ順なし\nネクストなし\nホールドなし!"},
|
||||||
['sprint123']= {"スプリント", "M123", "モノミノ、ドミノ、トリミノで40line"},
|
['sprint123']= {"スプリント", "M123", "モノミノ、ドミノ、トリミノで40line"},
|
||||||
['secret_grade']= {"裏GM", "", "ガイドに従ってジグザグに穴を作れ!"},
|
['construct_sg']= {"コンストラクト", "裏GM", "ガイドに従ってジグザグに穴を作れ!"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['dig_10l']= {"掘り", "10L", "10line下穴を掘れ!"},
|
['dig_10l']= {"掘り", "10L", "10line下穴を掘れ!"},
|
||||||
['dig_40l']= {"掘り", "40L", "40line下穴を掘れ!"},
|
['dig_40l']= {"掘り", "40L", "40line下穴を掘れ!"},
|
||||||
['dig_100l']= {"掘り", "100L", "100line下穴を掘れ!"},
|
['dig_100l']= {"掘り", "100L", "100line下穴を掘れ!"},
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ return {
|
|||||||
-- infHeightOn="Infinite Height ON",
|
-- infHeightOn="Infinite Height ON",
|
||||||
-- infHeightOff="Infinite Height OFF",
|
-- infHeightOff="Infinite Height OFF",
|
||||||
-- infHeightHint="Toggle with Function 1 key",
|
-- infHeightHint="Toggle with Function 1 key",
|
||||||
|
-- highestGrade="(highest: $1)",
|
||||||
|
|
||||||
speedLV="Nível de velocidade",
|
speedLV="Nível de velocidade",
|
||||||
piece="Peça",line="Linhas",atk="Ataque",eff="Eficiência",
|
piece="Peça",line="Linhas",atk="Ataque",eff="Eficiência",
|
||||||
@@ -815,6 +816,10 @@ return {
|
|||||||
['sprint_1000l']= {"Sprint", "1000L", "Limpe 1000 linhas!"},
|
['sprint_1000l']= {"Sprint", "1000L", "Limpe 1000 linhas!"},
|
||||||
['sprintPenta']= {"Sprint", "PENTOMINO", "Limpe 40 linhas com 18 pentominoes."},
|
['sprintPenta']= {"Sprint", "PENTOMINO", "Limpe 40 linhas com 18 pentominoes."},
|
||||||
['sprintMPH']= {"Sprint", "MPH", "SemMem.\nSemPrévia\nSemSegurar"},
|
['sprintMPH']= {"Sprint", "MPH", "SemMem.\nSemPrévia\nSemSegurar"},
|
||||||
|
-- ['sprint123']= {"Sprint", "M123", "40L with only monominoes, dominoes, and triminoes"},
|
||||||
|
-- ['construct_sg']= {"Construct", "SECRET GRADE", "Build a zigzag shape by following the guide!"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['dig_10l']= {"Cave", "10L", "Cave 10 linhas de lixo."},
|
['dig_10l']= {"Cave", "10L", "Cave 10 linhas de lixo."},
|
||||||
['dig_40l']= {"Cave", "40L", "Cave 40 linhas de lixo."},
|
['dig_40l']= {"Cave", "40L", "Cave 40 linhas de lixo."},
|
||||||
['dig_100l']= {"Cave", "100L", "Cave 100 linhas de lixo."},
|
['dig_100l']= {"Cave", "100L", "Cave 100 linhas de lixo."},
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ return {
|
|||||||
infHeightOn="∞↑ "..CHAR.icon.checkMark,
|
infHeightOn="∞↑ "..CHAR.icon.checkMark,
|
||||||
infHeightOff="∞↑ "..CHAR.icon.crossMark,
|
infHeightOff="∞↑ "..CHAR.icon.crossMark,
|
||||||
infHeightHint=CHAR.icon.checkMark.."/"..CHAR.icon.crossMark..": F₁",
|
infHeightHint=CHAR.icon.checkMark.."/"..CHAR.icon.crossMark..": F₁",
|
||||||
|
highestGrade="(↑: $1)",
|
||||||
|
|
||||||
win=": )",
|
win=": )",
|
||||||
lose=": (",
|
lose=": (",
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ return {
|
|||||||
infHeightOn="Infinite Height ON",
|
infHeightOn="Infinite Height ON",
|
||||||
infHeightOff="Infinite Height OFF",
|
infHeightOff="Infinite Height OFF",
|
||||||
infHeightHint="Toggle with Function 1 key",
|
infHeightHint="Toggle with Function 1 key",
|
||||||
|
highestGrade="(highest: $1)",
|
||||||
|
|
||||||
speedLV="Tốc độ rơi",
|
speedLV="Tốc độ rơi",
|
||||||
piece="Gạch",line="Hàng",atk="Attack",eff="Efficiency",
|
piece="Gạch",line="Hàng",atk="Attack",eff="Efficiency",
|
||||||
@@ -894,7 +895,9 @@ C. Tay cầm chơi game (Gamepad):
|
|||||||
['sprintPenta']= {"Sprint", "PENTOMINO", "Xoá 40 hàng với 18 pentomino"},
|
['sprintPenta']= {"Sprint", "PENTOMINO", "Xoá 40 hàng với 18 pentomino"},
|
||||||
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
||||||
['sprint123']= {"Sprint", "M123", "Xoá 40 hàng chỉ với monomino, domino, và trimino"},
|
['sprint123']= {"Sprint", "M123", "Xoá 40 hàng chỉ với monomino, domino, và trimino"},
|
||||||
['secret_grade']= {"Secret Grade", "", "Xây một đường lỗ theo hình dích dắc!"},
|
['construct_sg']= {"Construct", "SECRET GRADE", "Xây một đường lỗ theo hình dích dắc!"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['dig_10l']= {"Dig", "10L", "Đào 10 hàng rác càng nhanh càng tốt"},
|
['dig_10l']= {"Dig", "10L", "Đào 10 hàng rác càng nhanh càng tốt"},
|
||||||
['dig_40l']= {"Dig", "40L", "Đào 40 hàng rác càng nhanh càng tốt!"},
|
['dig_40l']= {"Dig", "40L", "Đào 40 hàng rác càng nhanh càng tốt!"},
|
||||||
['dig_100l']= {"Dig", "100L", "Đào 100 hàng rác càng nhanh càng tốt!"},
|
['dig_100l']= {"Dig", "100L", "Đào 100 hàng rác càng nhanh càng tốt!"},
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ return {
|
|||||||
infHeightOn="无限高度 开",
|
infHeightOn="无限高度 开",
|
||||||
infHeightOff="无限高度 关",
|
infHeightOff="无限高度 关",
|
||||||
infHeightHint="用功能键1切换",
|
infHeightHint="用功能键1切换",
|
||||||
|
-- highestGrade="(highest: $1)",
|
||||||
|
|
||||||
speedLV="速度等级",
|
speedLV="速度等级",
|
||||||
piece="块数",line="行数",atk="攻击",eff="效率",
|
piece="块数",line="行数",atk="攻击",eff="效率",
|
||||||
@@ -853,7 +854,9 @@ return {
|
|||||||
['sprint_100l']= {"竞速", "100L", "消除100行"},
|
['sprint_100l']= {"竞速", "100L", "消除100行"},
|
||||||
['sprint_400l']= {"竞速", "400L", "消除400行"},
|
['sprint_400l']= {"竞速", "400L", "消除400行"},
|
||||||
['sprint_1000l']= {"竞速", "1000L", "消除1000行"},
|
['sprint_1000l']= {"竞速", "1000L", "消除1000行"},
|
||||||
['secret_grade']= {"秘密段位", "", "按照提示完成经典的“大于号”拼图"},
|
['construct_sg']= {"建设", "秘密段位", "按照提示完成经典的“大于号”拼图"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['sprintPenta']= {"竞速", "五连块", "伤脑筋十八块"},
|
['sprintPenta']= {"竞速", "五连块", "伤脑筋十八块"},
|
||||||
['sprintMPH']= {"竞速", "MPH", "纯随机\n无预览\n无暂存"},
|
['sprintMPH']= {"竞速", "MPH", "纯随机\n无预览\n无暂存"},
|
||||||
['sprint123']= {"竞速", "M123", "40L,但只有1~3连块"},
|
['sprint123']= {"竞速", "M123", "40L,但只有1~3连块"},
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ return {
|
|||||||
infHeightOn="infHeight=true",
|
infHeightOn="infHeight=true",
|
||||||
infHeightOff="infHeight=false",
|
infHeightOff="infHeight=false",
|
||||||
infHeightHint="F1:!infHeight",
|
infHeightHint="F1:!infHeight",
|
||||||
|
highestGrade="(max=$1)",
|
||||||
|
|
||||||
speedLV="P.SpeedLV",
|
speedLV="P.SpeedLV",
|
||||||
piece="P.Piece",line="P.Line",atk="P.ATK",eff="P.EFF",
|
piece="P.Piece",line="P.Line",atk="P.ATK",eff="P.EFF",
|
||||||
@@ -772,7 +773,9 @@ return {
|
|||||||
['sprint_100l']= {"Sprint(100L);", "", "消除100行"},
|
['sprint_100l']= {"Sprint(100L);", "", "消除100行"},
|
||||||
['sprint_400l']= {"Sprint(400L);", "", "消除400行"},
|
['sprint_400l']= {"Sprint(400L);", "", "消除400行"},
|
||||||
['sprint_1000l']= {"Sprint(1000L);", "", "消除1000行"},
|
['sprint_1000l']= {"Sprint(1000L);", "", "消除1000行"},
|
||||||
['secret_grade']= {"SecretGrade();", "", "按照提示完成经典的“大于号”拼图"},
|
['construct_sg']= {"Construct(SecretGrade);", "", "按照提示完成经典的“大于号”拼图"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['sprintPenta']= {"Sprint(Penta);", "", "伤脑筋十八块"},
|
['sprintPenta']= {"Sprint(Penta);", "", "伤脑筋十八块"},
|
||||||
['sprintMPH']= {"Sprint(MPH);", "", "纯随机\n无预览\n无暂存"},
|
['sprintMPH']= {"Sprint(MPH);", "", "纯随机\n无预览\n无暂存"},
|
||||||
['sprint123']= {"Sprint(M123);", "", "40L,但只有1~3连块"},
|
['sprint123']= {"Sprint(M123);", "", "40L,但只有1~3连块"},
|
||||||
@@ -875,7 +878,7 @@ return {
|
|||||||
['infinite_dig']= {"InfDig();", "", "挖呀挖呀挖"},
|
['infinite_dig']= {"InfDig();", "", "挖呀挖呀挖"},
|
||||||
['marathon_inf']= {"Marathon(Inf);", "", "无尽马拉松"},
|
['marathon_inf']= {"Marathon(Inf);", "", "无尽马拉松"},
|
||||||
|
|
||||||
['custom_clear']= {"Ctm(Clear);", ""},
|
['custom_clear']= {"Custom(Clear);", ""},
|
||||||
['custom_puzzle']= {"Ctm(Puzzle);", ""},
|
['custom_puzzle']= {"Custom(Puzzle);", ""},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ return {
|
|||||||
infHeightOn="無限高度 開",
|
infHeightOn="無限高度 開",
|
||||||
infHeightOff="無限高度 關",
|
infHeightOff="無限高度 關",
|
||||||
infHeightHint="用功能鍵1切換",
|
infHeightHint="用功能鍵1切換",
|
||||||
|
-- highestGrade="(highest: $1)",
|
||||||
|
|
||||||
speedLV="速度等級",
|
speedLV="速度等級",
|
||||||
piece="塊數",line="行數",atk="攻擊",eff="效率",
|
piece="塊數",line="行數",atk="攻擊",eff="效率",
|
||||||
@@ -824,7 +825,9 @@ return {
|
|||||||
['sprint_100l']= {"競速", "100L", "清除100行"},
|
['sprint_100l']= {"競速", "100L", "清除100行"},
|
||||||
['sprint_400l']= {"競速", "400L", "清除400行"},
|
['sprint_400l']= {"競速", "400L", "清除400行"},
|
||||||
['sprint_1000l']= {"競速", "1000L", "清除1000行"},
|
['sprint_1000l']= {"競速", "1000L", "清除1000行"},
|
||||||
['secret_grade']= {"秘密段位", "", "按照提示完成經典的“大於號”拼圖"},
|
['construct_sg']= {"建設", "秘密段位", "按照提示完成經典的“大於號”拼圖"},
|
||||||
|
-- ['construct_checker']= {"Construct", "CHECKERBOARD", "Build a checkerboard pattern!"},
|
||||||
|
-- ['construct_invsg']= {"Construct", "INV. SG", "Build an inverted zigzag pattern!"},
|
||||||
['sprintPenta']= {"競速", "五連塊", "傷腦筋十八塊"},
|
['sprintPenta']= {"競速", "五連塊", "傷腦筋十八塊"},
|
||||||
['sprintMPH']= {"競速", "MPH", "純隨機\n無Next\n無Hold"},
|
['sprintMPH']= {"競速", "MPH", "純隨機\n無Next\n無Hold"},
|
||||||
['sprint123']= {"競速", "M123", "清除40行,但只有一至三連塊"},
|
['sprint123']= {"競速", "M123", "清除40行,但只有一至三連塊"},
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
|
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
|
||||||
{name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"},
|
{name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"},
|
||||||
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH','sprint123','secret_grade'}},
|
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH','sprint123','construct_sg'}},
|
||||||
{name='sprint_100l', x=-400, y=200, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
|
{name='sprint_100l', x=-400, y=200, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
|
||||||
{name='sprint_400l', x=-600, y=200, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
|
{name='sprint_400l', x=-600, y=200, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
|
||||||
{name='sprint_1000l', x=-800, y=200, size=40,shape=1,icon="sprint3"},
|
{name='sprint_1000l', x=-800, y=200, size=40,shape=1,icon="sprint3"},
|
||||||
@@ -10,7 +10,7 @@ return {
|
|||||||
{name='sprintMPH', x=200, y=-260, size=40,shape=3,icon="sprint2"},
|
{name='sprintMPH', x=200, y=-260, size=40,shape=3,icon="sprint2"},
|
||||||
{name='sprintPenta', x=130, y=-140, size=40,shape=3,icon="sprint_pento"},
|
{name='sprintPenta', x=130, y=-140, size=40,shape=3,icon="sprint_pento"},
|
||||||
|
|
||||||
{name='secret_grade', x=-200, y=-400, size=40,shape=1,icon="secret_grade"},
|
{name='construct_sg', x=-200, y=-400, size=40,shape=1,icon="secret_grade"},
|
||||||
|
|
||||||
{name='drought_n', x=-600, y=400, size=40,shape=1,icon="drought", unlock={'drought_l'}},
|
{name='drought_n', x=-600, y=400, size=40,shape=1,icon="drought", unlock={'drought_l'}},
|
||||||
{name='drought_l', x=-800, y=400, size=40,shape=1,icon="drought"},
|
{name='drought_l', x=-800, y=400, size=40,shape=1,icon="drought"},
|
||||||
|
|||||||
22
parts/modes/construct_checker.lua
Normal file
22
parts/modes/construct_checker.lua
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
return {
|
||||||
|
env={
|
||||||
|
drop=180,lock=600,
|
||||||
|
hang=40,
|
||||||
|
infHold=true,
|
||||||
|
eventSet='construct_checker',
|
||||||
|
bg='bg2',bgm='race',
|
||||||
|
},
|
||||||
|
score=function(P) return {P.modeData.maxRankPts,P.stat.piece} end,
|
||||||
|
scoreDisp=function(D) return getConstructGradeText(D[1]).." "..D[2].." Pieces" end,
|
||||||
|
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||||
|
getRank=function(P)
|
||||||
|
local G=P.modeData.maxRankPts
|
||||||
|
return
|
||||||
|
G>=18 and 5 or
|
||||||
|
G>=15 and 4 or
|
||||||
|
G>=12 and 3 or
|
||||||
|
G>=8 and 2 or
|
||||||
|
G>=4 and 1 or
|
||||||
|
G>=2 and 0
|
||||||
|
end,
|
||||||
|
}
|
||||||
22
parts/modes/construct_invsg.lua
Normal file
22
parts/modes/construct_invsg.lua
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
return {
|
||||||
|
env={
|
||||||
|
drop=180,lock=600,
|
||||||
|
hang=40,
|
||||||
|
infHold=true,
|
||||||
|
eventSet='construct_invsg',
|
||||||
|
bg='bg2',bgm='race',
|
||||||
|
},
|
||||||
|
score=function(P) return {P.modeData.rankPts,P.stat.piece} end,
|
||||||
|
scoreDisp=function(D) return getConstructGradeText(D[1]).." "..D[2].." Pieces" end,
|
||||||
|
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||||
|
getRank=function(P)
|
||||||
|
local G=P.modeData.maxRankPts
|
||||||
|
return
|
||||||
|
G>=10 and 5 or
|
||||||
|
G>=8 and 4 or
|
||||||
|
G>=6 and 3 or
|
||||||
|
G>=4 and 2 or
|
||||||
|
G>=3 and 1 or
|
||||||
|
G>=2 and 0
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -2,14 +2,14 @@ return {
|
|||||||
env={
|
env={
|
||||||
drop=180,lock=180,
|
drop=180,lock=180,
|
||||||
hang=15,
|
hang=15,
|
||||||
eventSet='secret_grade',
|
eventSet='construct_sg',
|
||||||
bg='bg2',bgm='race',
|
bg='bg2',bgm='race',
|
||||||
},
|
},
|
||||||
score=function(P) return {P.modeData.rankPts,P.stat.piece} end,
|
score=function(P) return {P.modeData.maxRankPts,P.stat.piece} end,
|
||||||
scoreDisp=function(D) return getSecretGradeText(D[1]).." "..D[2].." Pieces" end,
|
scoreDisp=function(D) return getConstructGradeText(D[1]).." "..D[2].." Pieces" end,
|
||||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||||
getRank=function(P)
|
getRank=function(P)
|
||||||
local G=P.modeData.rankPts
|
local G=P.modeData.maxRankPts
|
||||||
return
|
return
|
||||||
G>=23 and 5 or
|
G>=23 and 5 or
|
||||||
G>=21 and 4 or
|
G>=21 and 4 or
|
||||||
Reference in New Issue
Block a user