代码规范:把所有的tab换成空格

This commit is contained in:
MrZ626
2021-08-25 04:28:52 +08:00
parent 8f910f95f4
commit 295e79984f
271 changed files with 35384 additions and 35379 deletions

View File

@@ -1,108 +1,108 @@
return{
{
{
{4,4,4,3,3,3,7,0,0,0},
{4,1,6,6,2,3,7,0,0,0},
{1,1,6,6,2,2,7,0,0,0},
{1,7,7,7,7,2,7,0,0,0},
},
{
{4,4,4,3,3,3,0,0,0,7},
{4,1,6,6,2,3,0,0,0,7},
{1,1,6,6,2,2,0,0,0,7},
{1,7,7,7,7,2,0,0,0,7},
},
{
{2,7,7,7,7,1,7,0,0,0},
{2,2,6,6,1,1,7,0,0,0},
{3,2,6,6,1,4,7,0,0,0},
{3,3,3,4,4,4,7,0,0,0},
},
{
{2,7,7,7,7,1,0,0,0,7},
{2,2,6,6,1,1,0,0,0,7},
{3,2,6,6,1,4,0,0,0,7},
{3,3,3,4,4,4,0,0,0,7},
},
},--3*4 shape
{
{
{1,1,0,0,0,0,0,3,3,3},
{5,1,1,0,0,0,0,6,6,3},
{5,5,2,2,0,0,0,6,6,4},
{5,2,2,0,0,0,0,4,4,4},
},
{
{1,1,0,0,0,0,0,4,4,4},
{5,1,1,0,0,0,0,4,6,6},
{5,5,2,2,0,0,0,3,6,6},
{5,2,2,0,0,0,0,3,3,3},
},
{
{3,3,3,1,1,0,0,0,0,0},
{6,6,3,5,1,1,0,0,0,0},
{6,6,4,5,5,2,2,0,0,0},
{4,4,4,5,2,2,0,0,0,0},
},
{
{4,4,4,1,1,0,0,0,0,0},
{4,6,6,5,1,1,0,0,0,0},
{3,6,6,5,5,2,2,0,0,0},
{3,3,3,5,2,2,0,0,0,0},
},
},--7 piece opener(right>)(without i)
{
{
{4,4,4,3,3,3,0,0,0,0},
{4,1,6,6,2,3,0,0,0,0},
{1,1,6,6,2,2,0,0,0,0},
{1,7,7,7,7,2,0,0,0,0},
},
{
{2,7,7,7,7,1,0,0,0,0},
{2,2,6,6,1,1,0,0,0,0},
{3,2,6,6,1,4,0,0,0,0},
{3,3,3,4,4,4,0,0,0,0},
},
},--6 piece opener
{
{
{0,0,0,0,0,1,3,5,6,7},
{0,0,0,0,0,1,3,5,6,7},
{0,0,0,0,0,1,3,5,6,7},
{0,0,0,0,0,1,3,5,6,7},
},
{
{1,0,0,0,0,0,3,5,6,7},
{1,0,0,0,0,0,3,5,6,7},
{1,0,0,0,0,0,3,5,6,7},
{1,0,0,0,0,0,3,5,6,7},
},
{
{1,3,0,0,0,0,0,5,6,7},
{1,3,0,0,0,0,0,5,6,7},
{1,3,0,0,0,0,0,5,6,7},
{1,3,0,0,0,0,0,5,6,7},
},
},--4*5
{
{
{0,0,0,0,0,0,1,3,5,7},
{0,0,0,0,0,0,7,1,3,5},
{0,0,0,0,0,0,5,7,1,3},
{0,0,0,0,0,0,3,5,7,1},
},
{
{7,0,0,0,0,0,0,5,3,1},
{7,0,0,0,0,0,0,5,3,1},
{7,0,0,0,0,0,0,5,3,1},
{7,0,0,0,0,0,0,5,3,1},
},
{
{1,3,0,0,0,0,0,0,6,5},
{5,6,0,0,0,0,0,0,3,1},
{5,7,0,0,0,0,0,0,3,1},
{1,3,0,0,0,0,0,0,7,5},
},
},--4*6
{
{
{4,4,4,3,3,3,7,0,0,0},
{4,1,6,6,2,3,7,0,0,0},
{1,1,6,6,2,2,7,0,0,0},
{1,7,7,7,7,2,7,0,0,0},
},
{
{4,4,4,3,3,3,0,0,0,7},
{4,1,6,6,2,3,0,0,0,7},
{1,1,6,6,2,2,0,0,0,7},
{1,7,7,7,7,2,0,0,0,7},
},
{
{2,7,7,7,7,1,7,0,0,0},
{2,2,6,6,1,1,7,0,0,0},
{3,2,6,6,1,4,7,0,0,0},
{3,3,3,4,4,4,7,0,0,0},
},
{
{2,7,7,7,7,1,0,0,0,7},
{2,2,6,6,1,1,0,0,0,7},
{3,2,6,6,1,4,0,0,0,7},
{3,3,3,4,4,4,0,0,0,7},
},
},--3*4 shape
{
{
{1,1,0,0,0,0,0,3,3,3},
{5,1,1,0,0,0,0,6,6,3},
{5,5,2,2,0,0,0,6,6,4},
{5,2,2,0,0,0,0,4,4,4},
},
{
{1,1,0,0,0,0,0,4,4,4},
{5,1,1,0,0,0,0,4,6,6},
{5,5,2,2,0,0,0,3,6,6},
{5,2,2,0,0,0,0,3,3,3},
},
{
{3,3,3,1,1,0,0,0,0,0},
{6,6,3,5,1,1,0,0,0,0},
{6,6,4,5,5,2,2,0,0,0},
{4,4,4,5,2,2,0,0,0,0},
},
{
{4,4,4,1,1,0,0,0,0,0},
{4,6,6,5,1,1,0,0,0,0},
{3,6,6,5,5,2,2,0,0,0},
{3,3,3,5,2,2,0,0,0,0},
},
},--7 piece opener(right>)(without i)
{
{
{4,4,4,3,3,3,0,0,0,0},
{4,1,6,6,2,3,0,0,0,0},
{1,1,6,6,2,2,0,0,0,0},
{1,7,7,7,7,2,0,0,0,0},
},
{
{2,7,7,7,7,1,0,0,0,0},
{2,2,6,6,1,1,0,0,0,0},
{3,2,6,6,1,4,0,0,0,0},
{3,3,3,4,4,4,0,0,0,0},
},
},--6 piece opener
{
{
{0,0,0,0,0,1,3,5,6,7},
{0,0,0,0,0,1,3,5,6,7},
{0,0,0,0,0,1,3,5,6,7},
{0,0,0,0,0,1,3,5,6,7},
},
{
{1,0,0,0,0,0,3,5,6,7},
{1,0,0,0,0,0,3,5,6,7},
{1,0,0,0,0,0,3,5,6,7},
{1,0,0,0,0,0,3,5,6,7},
},
{
{1,3,0,0,0,0,0,5,6,7},
{1,3,0,0,0,0,0,5,6,7},
{1,3,0,0,0,0,0,5,6,7},
{1,3,0,0,0,0,0,5,6,7},
},
},--4*5
{
{
{0,0,0,0,0,0,1,3,5,7},
{0,0,0,0,0,0,7,1,3,5},
{0,0,0,0,0,0,5,7,1,3},
{0,0,0,0,0,0,3,5,7,1},
},
{
{7,0,0,0,0,0,0,5,3,1},
{7,0,0,0,0,0,0,5,3,1},
{7,0,0,0,0,0,0,5,3,1},
{7,0,0,0,0,0,0,5,3,1},
},
{
{1,3,0,0,0,0,0,0,6,5},
{5,6,0,0,0,0,0,0,3,1},
{5,7,0,0,0,0,0,0,3,1},
{1,3,0,0,0,0,0,0,7,5},
},
},--4*6
}

File diff suppressed because one or more lines are too long

View File

@@ -1,58 +1,58 @@
return{
color=COLOR.magenta,
env={
drop=30,lock=60,
fall=12,
freshLimit=15,
pushSpeed=2,
task=function(P)
while true do
YIELD()
if P.control and P.atkBufferSum==0 then
local D=P.modeData
if D.wave<20 then
local t=1500-30*D.wave--1500~900
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=12,countdown=t,cd0=t,time=0,sent=false,lv=3})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(3,8)),amount=10,countdown=t,cd0=t,time=0,sent=false,lv=4})
else
local t=900-10*(D.wave-20)--900~600
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=4})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=8,countdown=t,cd0=t,time=0,sent=false,lv=5})
end
P.atkBufferSum=P.atkBufferSum+22
P.stat.recv=P.stat.recv+22
D.wave=D.wave+1
if D.wave%10==0 then
if D.wave==20 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
elseif D.wave==50 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end,
bg='rainbow2',bgm='shining terminal',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr("22",63,320)
mText(drawableText.wave,63,260)
mText(drawableText.nextWave,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=50 and 5 or
W>=40 and 4 or
W>=30 and 3 or
W>=20 and 2 or
W>=10 and 1 or
W>=5 and 0
end,
color=COLOR.magenta,
env={
drop=30,lock=60,
fall=12,
freshLimit=15,
pushSpeed=2,
task=function(P)
while true do
YIELD()
if P.control and P.atkBufferSum==0 then
local D=P.modeData
if D.wave<20 then
local t=1500-30*D.wave--1500~900
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=12,countdown=t,cd0=t,time=0,sent=false,lv=3})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(3,8)),amount=10,countdown=t,cd0=t,time=0,sent=false,lv=4})
else
local t=900-10*(D.wave-20)--900~600
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=4})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=8,countdown=t,cd0=t,time=0,sent=false,lv=5})
end
P.atkBufferSum=P.atkBufferSum+22
P.stat.recv=P.stat.recv+22
D.wave=D.wave+1
if D.wave%10==0 then
if D.wave==20 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
elseif D.wave==50 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end,
bg='rainbow2',bgm='shining terminal',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr("22",63,320)
mText(drawableText.wave,63,260)
mText(drawableText.nextWave,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=50 and 5 or
W>=40 and 4 or
W>=30 and 3 or
W>=20 and 2 or
W>=10 and 1 or
W>=5 and 0
end,
}

View File

@@ -1,66 +1,66 @@
return{
color=COLOR.lYellow,
env={
drop=5,lock=60,
fall=8,
freshLimit=15,
task=function(P)
while true do
YIELD()
if P.control and P.atkBufferSum<4 then
local D=P.modeData
local s
local t=800-10*D.wave--800~700~600~500
if D.wave<10 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(5,6)),amount=9,countdown=t,cd0=t,time=0,sent=false,lv=3})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=11,countdown=t,cd0=t+62,time=0,sent=false,lv=4})
s=20
elseif D.wave<20 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(3,8)),amount=11,countdown=t,cd0=t,time=0,sent=false,lv=4})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=13,countdown=t,cd0=t+62,time=0,sent=false,lv=5})
s=24
else
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(2)*9-8),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=5})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(3,8)),amount=14,countdown=t+62,cd0=t,time=0,sent=false,lv=5})
s=28
end
P.atkBufferSum=P.atkBufferSum+s
P.stat.recv=P.stat.recv+s
D.wave=D.wave+1
if D.wave%10==0 then
if D.wave==10 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=4
elseif D.wave==20 then
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=5
elseif D.wave==30 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end,
bg='rainbow2',bgm='shining terminal',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr(20+4*math.min(math.floor(P.modeData.wave/10),2),63,320)
mText(drawableText.wave,63,260)
mText(drawableText.nextWave,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=50 and 5 or
W>=40 and 4 or
W>=30 and 3 or
W>=20 and 2 or
W>=10 and 1 or
W>=5 and 0
end,
color=COLOR.lYellow,
env={
drop=5,lock=60,
fall=8,
freshLimit=15,
task=function(P)
while true do
YIELD()
if P.control and P.atkBufferSum<4 then
local D=P.modeData
local s
local t=800-10*D.wave--800~700~600~500
if D.wave<10 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(5,6)),amount=9,countdown=t,cd0=t,time=0,sent=false,lv=3})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=11,countdown=t,cd0=t+62,time=0,sent=false,lv=4})
s=20
elseif D.wave<20 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(3,8)),amount=11,countdown=t,cd0=t,time=0,sent=false,lv=4})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=13,countdown=t,cd0=t+62,time=0,sent=false,lv=5})
s=24
else
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(2)*9-8),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=5})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(3,8)),amount=14,countdown=t+62,cd0=t,time=0,sent=false,lv=5})
s=28
end
P.atkBufferSum=P.atkBufferSum+s
P.stat.recv=P.stat.recv+s
D.wave=D.wave+1
if D.wave%10==0 then
if D.wave==10 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=4
elseif D.wave==20 then
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=5
elseif D.wave==30 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end,
bg='rainbow2',bgm='shining terminal',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr(20+4*math.min(math.floor(P.modeData.wave/10),2),63,320)
mText(drawableText.wave,63,260)
mText(drawableText.nextWave,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=50 and 5 or
W>=40 and 4 or
W>=30 and 3 or
W>=20 and 2 or
W>=10 and 1 or
W>=5 and 0
end,
}

View File

@@ -1,39 +1,39 @@
return{
color=COLOR.magenta,
env={
drop=10,lock=60,
freshLimit=15,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,60,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='tunnel',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<65 and 4 or
T<100 and 3 or
T<130 and 2 or
1
else
return
L>=50 and 0
end
end,
color=COLOR.magenta,
env={
drop=10,lock=60,
freshLimit=15,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,60,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='tunnel',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<65 and 4 or
T<100 and 3 or
T<130 and 2 or
1
else
return
L>=50 and 0
end
end,
}

View File

@@ -1,39 +1,39 @@
return{
color=COLOR.red,
env={
drop=5,lock=45,
freshLimit=15,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,30,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='blackhole',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<55 and 5 or
T<70 and 4 or
T<110 and 3 or
T<150 and 2 or
1
else
return
L>=50 and 0
end
end,
color=COLOR.red,
env={
drop=5,lock=45,
freshLimit=15,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,30,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='blackhole',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<55 and 5 or
T<70 and 4 or
T<110 and 3 or
T<150 and 2 or
1
else
return
L>=50 and 0
end
end,
}

View File

@@ -1,38 +1,38 @@
return{
color=COLOR.green,
env={
drop=30,lock=60,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,120,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='tunnel',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<45 and 5 or
T<60 and 4 or
T<90 and 3 or
T<120 and 2 or
1
else
return
L>=50 and 0
end
end,
color=COLOR.green,
env={
drop=30,lock=60,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,120,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='tunnel',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<45 and 5 or
T<60 and 4 or
T<90 and 3 or
T<120 and 2 or
1
else
return
L>=50 and 0
end
end,
}

View File

@@ -1,39 +1,39 @@
return{
color=COLOR.lYellow,
env={
drop=2,lock=30,
freshLimit=10,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,0,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='blackhole',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<60 and 5 or
T<80 and 4 or
T<120 and 3 or
T<180 and 2 or
1
else
return
L>=50 and 0
end
end,
color=COLOR.lYellow,
env={
drop=2,lock=30,
freshLimit=10,
dropPiece=function(P)
if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,0,generateLine(P.holeRND:random(10)))
end
if P.stat.atk>=100 then
P:win('finish')
end
end,
bg='blackhole',bgm='echo',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.atk,63,280)
mText(drawableText.atk,63,350)
end,
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local L=P.stat.atk
if L>=100 then
local T=P.stat.time
return
T<60 and 5 or
T<80 and 4 or
T<120 and 3 or
T<180 and 2 or
1
else
return
L>=50 and 0
end
end,
}

View File

@@ -1,19 +1,19 @@
return{
color=COLOR.lGray,
env={
drop=1e99,lock=1e99,
holdCount=0,
task=function(P)
while not P.control do YIELD()end
P:pressKey(6)
P:lose()
end,
bg='bg1',bgm='new era',
},
score=function(P)return{P.modeData.event,P.stat.finesseRate*.2/P.stat.piece}end,
scoreDisp=function(D)return("%d Stage %.2f%%"):format(D[1],D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]>b[2]end,
getRank=function()
return 1
end,
color=COLOR.lGray,
env={
drop=1e99,lock=1e99,
holdCount=0,
task=function(P)
while not P.control do YIELD()end
P:pressKey(6)
P:lose()
end,
bg='bg1',bgm='new era',
},
score=function(P)return{P.modeData.event,P.stat.finesseRate*.2/P.stat.piece}end,
scoreDisp=function(D)return("%d Stage %.2f%%"):format(D[1],D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]>b[2]end,
getRank=function()
return 1
end,
}

View File

@@ -1,37 +1,37 @@
local min=math.min
return{
color=COLOR.cyan,
env={
drop=30,lock=45,
visible='easy',
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=10,
bg='glow',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=140 and 5 or
T<=200 and 4 or
3
else
return
L>=150 and 3 or
L>=100 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
color=COLOR.cyan,
env={
drop=30,lock=45,
visible='easy',
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=10,
bg='glow',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=140 and 5 or
T<=200 and 4 or
3
else
return
L>=150 and 3 or
L>=100 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
}

View File

@@ -1,45 +1,45 @@
local gc=love.graphics
local min=math.min
return{
color=COLOR.magenta,
env={
drop=15,lock=45,
fall=10,
dropFX=0,lockFX=0,
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=15,
bg='rgb',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=180 and 5 or
T<=240 and 4 or
3
else
return
L>=150 and 3 or
L>=90 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
color=COLOR.magenta,
env={
drop=15,lock=45,
fall=10,
dropFX=0,lockFX=0,
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=15,
bg='rgb',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=180 and 5 or
T<=240 and 4 or
3
else
return
L>=150 and 3 or
L>=90 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
}

View File

@@ -1,46 +1,46 @@
local gc=love.graphics
local min=math.min
return{
color=COLOR.red,
env={
drop=10,lock=60,
fall=5,
ghost=0,
dropFX=0,lockFX=0,
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=15,
bg='rgb',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=200 and 5 or
T<=250 and 4 or
3
else
return
L>=150 and 3 or
L>=100 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
color=COLOR.red,
env={
drop=10,lock=60,
fall=5,
ghost=0,
dropFX=0,lockFX=0,
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=15,
bg='rgb',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=200 and 5 or
T<=250 and 4 or
3
else
return
L>=150 and 3 or
L>=100 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
}

View File

@@ -1,42 +1,42 @@
local gc=love.graphics
local min=math.min
return{
color=COLOR.green,
env={
drop=15,lock=45,
freshLimit=10,
visible='fast',
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
bg='glow',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=180 and 5 or
T<=220 and 4 or
3
else
return
L>=126 and 3 or
L>=80 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
color=COLOR.green,
env={
drop=15,lock=45,
freshLimit=10,
visible='fast',
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
bg='glow',bgm='push',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=180 and 5 or
T<=220 and 4 or
3
else
return
L>=126 and 3 or
L>=80 and 2 or
L>=40 and 1 or
L>=1 and 0
end
end,
}

View File

@@ -1,39 +1,39 @@
local gc=love.graphics
local min=math.min
return{
color=COLOR.red,
env={
drop=30,lock=60,
block=false,center=0,ghost=0,
dropFX=0,lockFX=0,
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
bg='rgb',bgm='far',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=100 and 5 or
L>=75 and 4 or
L>=50 and 3 or
L>=26 and 2 or
L>=10 and 1 or
L>=1 and 0
end,
color=COLOR.red,
env={
drop=30,lock=60,
block=false,center=0,ghost=0,
dropFX=0,lockFX=0,
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
bg='rgb',bgm='far',
},
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
PLY.draw.applyField(P)
gc.setColor(1,1,1,.1)
gc.draw(IMG.electric,0,106,0,2.6)
PLY.draw.cancelField(P)
end,
score=function(P)return{min(P.stat.row,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=100 and 5 or
L>=75 and 4 or
L>=50 and 3 or
L>=26 and 2 or
L>=10 and 1 or
L>=1 and 0
end,
}

View File

@@ -9,65 +9,65 @@ local boarder=GC.DO{334,620,
local gc=love.graphics
local sin,min=math.sin,math.min
return{
color=COLOR.red,
env={
drop=30,lock=60,
nextCount=1,
block=false,center=0,ghost=0,
dropFX=0,lockFX=0,
visible='none',
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
freshLimit=15,
bg='none',bgm='far',
},
load=function()
PLY.newPlayer(1)
if SETTING.sfx_spawn==0 then
MES.new('warn',text.switchSpawnSFX)
end
end,
mesDisp=function(P,repMode)
if not GAME.result then
gc.push('transform')
if repMode then
gc.origin()
gc.setColor(.3,.3,.3,.7)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
else
gc.clear(.2,.2,.2)
gc.translate(150,0)
gc.setColor(.5,.5,.5)
--Frame
gc.draw(boarder,-17,-12)
end
gc.pop()
end
color=COLOR.red,
env={
drop=30,lock=60,
nextCount=1,
block=false,center=0,ghost=0,
dropFX=0,lockFX=0,
visible='none',
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
freshLimit=15,
bg='none',bgm='far',
},
load=function()
PLY.newPlayer(1)
if SETTING.sfx_spawn==0 then
MES.new('warn',text.switchSpawnSFX)
end
end,
mesDisp=function(P,repMode)
if not GAME.result then
gc.push('transform')
if repMode then
gc.origin()
gc.setColor(.3,.3,.3,.7)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
else
gc.clear(.2,.2,.2)
gc.translate(150,0)
gc.setColor(.5,.5,.5)
--Frame
gc.draw(boarder,-17,-12)
end
gc.pop()
end
--Figures
local t=TIME()
gc.setColor(1,1,1,.5+.2*sin(t))
gc.draw(IMG.hbm,-276,-86,0,1.5)
gc.draw(IMG.electric,476,152,0,2.6)
--Figures
local t=TIME()
gc.setColor(1,1,1,.5+.2*sin(t))
gc.draw(IMG.hbm,-276,-86,0,1.5)
gc.draw(IMG.electric,476,152,0,2.6)
--Texts
gc.setColor(.8,.8,.8)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
end,
score=function(P)return{min(P.stat.row,40),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=40 and 5 or
L>=30 and 4 or
L>=20 and 3 or
L>=10 and 2 or
L>=5 and 1 or
L>=2 and 0
end,
--Texts
gc.setColor(.8,.8,.8)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
end,
score=function(P)return{min(P.stat.row,40),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=40 and 5 or
L>=30 and 4 or
L>=20 and 3 or
L>=10 and 2 or
L>=5 and 1 or
L>=2 and 0
end,
}

View File

@@ -1,81 +1,81 @@
local rem=table.remove
local function check_c4w(P)
if P.lastPiece.row==0 then
P:lose()
else
for _=1,P.lastPiece.row do
local h=#P.field
P.field[h+1]=FREEROW.get(20)
P.visTime[h+1]=FREEROW.get(20)
for i=4,7 do P.field[h+1][i]=0 end
end
if P.combo>P.modeData.maxCombo then
P.modeData.maxCombo=P.combo
end
if P.stat.row>=100 then
P:win('finish')
end
end
if P.lastPiece.row==0 then
P:lose()
else
for _=1,P.lastPiece.row do
local h=#P.field
P.field[h+1]=FREEROW.get(20)
P.visTime[h+1]=FREEROW.get(20)
for i=4,7 do P.field[h+1][i]=0 end
end
if P.combo>P.modeData.maxCombo then
P.modeData.maxCombo=P.combo
end
if P.stat.row>=100 then
P:win('finish')
end
end
end
return{
color=COLOR.red,
env={
drop=5,lock=30,
task=function(P)P.modeData.maxCombo=0 end,
dropPiece=check_c4w,
freshLimit=15,ospin=false,
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
local F=P.field
for i=1,24 do
F[i]=FREEROW.get(20)
P.visTime[i]=FREEROW.get(20)
for x=4,7 do F[i][x]=0 end
end
if P.holeRND:random()<.6 then
local initCell={11,14,12,13,21,24}
for _=1,3 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
else
local initCell={11,12,13,14,21,22,23,24}
rem(initCell,P.holeRND:random(5,8))
rem(initCell,P.holeRND:random(1,4))
for _=1,6 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
end
end,
mesDisp=function(P)
setFont(45)
mStr(P.combo,63,310)
mStr(P.modeData.maxCombo,63,400)
mText(drawableText.combo,63,358)
mText(drawableText.maxcmb,63,450)
end,
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Combo "..STRING.time(D[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)
local L=P.modeData.maxCombo
if L==100 then
local T=P.stat.time
return
T<=40 and 5 or
T<=60 and 4 or
3
else
return
L>=70 and 3 or
L>=40 and 2 or
L>=20 and 1 or
L>=5 and 0
end
end,
color=COLOR.red,
env={
drop=5,lock=30,
task=function(P)P.modeData.maxCombo=0 end,
dropPiece=check_c4w,
freshLimit=15,ospin=false,
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
local F=P.field
for i=1,24 do
F[i]=FREEROW.get(20)
P.visTime[i]=FREEROW.get(20)
for x=4,7 do F[i][x]=0 end
end
if P.holeRND:random()<.6 then
local initCell={11,14,12,13,21,24}
for _=1,3 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
else
local initCell={11,12,13,14,21,22,23,24}
rem(initCell,P.holeRND:random(5,8))
rem(initCell,P.holeRND:random(1,4))
for _=1,6 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
end
end,
mesDisp=function(P)
setFont(45)
mStr(P.combo,63,310)
mStr(P.modeData.maxCombo,63,400)
mText(drawableText.combo,63,358)
mText(drawableText.maxcmb,63,450)
end,
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Combo "..STRING.time(D[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)
local L=P.modeData.maxCombo
if L==100 then
local T=P.stat.time
return
T<=40 and 5 or
T<=60 and 4 or
3
else
return
L>=70 and 3 or
L>=40 and 2 or
L>=20 and 1 or
L>=5 and 0
end
end,
}

View File

@@ -1,79 +1,79 @@
local rem=table.remove
local function check_c4w(P)
if P.lastPiece.row>0 then
for _=1,#P.clearedRow do
local h=#P.field
P.field[h+1]=FREEROW.get(20)
P.visTime[h+1]=FREEROW.get(20)
for i=4,7 do P.field[h+1][i]=0 end
end
if P.combo>P.modeData.maxCombo then
P.modeData.maxCombo=P.combo
end
if P.stat.row>=100 then
P:win('finish')
end
end
if P.lastPiece.row>0 then
for _=1,#P.clearedRow do
local h=#P.field
P.field[h+1]=FREEROW.get(20)
P.visTime[h+1]=FREEROW.get(20)
for i=4,7 do P.field[h+1][i]=0 end
end
if P.combo>P.modeData.maxCombo then
P.modeData.maxCombo=P.combo
end
if P.stat.row>=100 then
P:win('finish')
end
end
end
return{
color=COLOR.green,
env={
drop=30,lock=60,infHold=true,
task=function(P)P.modeData.maxCombo=0 end,
dropPiece=check_c4w,
freshLimit=15,ospin=false,
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
local F=P.field
for i=1,24 do
F[i]=FREEROW.get(20)
P.visTime[i]=FREEROW.get(20)
for x=4,7 do F[i][x]=0 end
end
if P.holeRND:random()<.6 then
local initCell={11,14,12,13,21,24}
for _=1,3 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
else
local initCell={11,12,13,14,21,22,23,24}
rem(initCell,P.holeRND:random(5,8))
rem(initCell,P.holeRND:random(1,4))
for _=1,6 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
end
end,
mesDisp=function(P)
setFont(45)
mStr(P.combo,63,310)
mStr(P.modeData.maxCombo,63,400)
mText(drawableText.combo,63,358)
mText(drawableText.maxcmb,63,450)
end,
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Combo "..STRING.time(D[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)
local L=P.stat.row
if L==100 then
local T=P.stat.time
return
T<=32 and 5 or
T<=50 and 4 or
T<=80 and 3 or
2
else
return
L>=60 and 2 or
L>=30 and 1 or
L>=10 and 0
end
end,
color=COLOR.green,
env={
drop=30,lock=60,infHold=true,
task=function(P)P.modeData.maxCombo=0 end,
dropPiece=check_c4w,
freshLimit=15,ospin=false,
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
local F=P.field
for i=1,24 do
F[i]=FREEROW.get(20)
P.visTime[i]=FREEROW.get(20)
for x=4,7 do F[i][x]=0 end
end
if P.holeRND:random()<.6 then
local initCell={11,14,12,13,21,24}
for _=1,3 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
else
local initCell={11,12,13,14,21,22,23,24}
rem(initCell,P.holeRND:random(5,8))
rem(initCell,P.holeRND:random(1,4))
for _=1,6 do
_=rem(initCell,P.holeRND:random(#initCell))
F[math.floor(_/10)][3+_%10]=20
end
end
end,
mesDisp=function(P)
setFont(45)
mStr(P.combo,63,310)
mStr(P.modeData.maxCombo,63,400)
mText(drawableText.combo,63,358)
mText(drawableText.maxcmb,63,450)
end,
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Combo "..STRING.time(D[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)
local L=P.stat.row
if L==100 then
local T=P.stat.time
return
T<=32 and 5 or
T<=50 and 4 or
T<=80 and 3 or
2
else
return
L>=60 and 2 or
L>=30 and 1 or
L>=10 and 0
end
end,
}

View File

@@ -1,55 +1,55 @@
return{
color=COLOR.lBlue,
env={
das=16,arr=6,sddas=2,sdarr=2,
irs=false,ims=false,
center=0,ghost=0,
smooth=false,
drop=3,lock=3,wait=10,fall=25,
fieldH=19,
nextCount=1,holdCount=false,
RS='Classic',
sequence='rnd',
freshLimit=0,
face={0,0,2,2,2,0,0},
noTele=true,keyCancel={5,6},
task=function(P)P.modeData.target=10 end,
dropPiece=function(P)
local D=P.modeData
if P.stat.row>=D.target then
D.target=D.target+10
if D.target==110 then
P.gameEnv.drop,P.gameEnv.lock=2,2
SFX.play('blip_1')
elseif D.target==200 then
P.gameEnv.drop,P.gameEnv.lock=1,1
SFX.play('blip_1')
else
SFX.play('reach')
end
end
end,
bg='rgb',bgm='magicblock',
},
slowMark=true,
mesDisp=function(P)
setFont(75)
local r=P.modeData.target*.1
mStr(r<11 and 18 or r<22 and r+8 or("%02x"):format(r*10-220),63,210)
mText(drawableText.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
end,
score=function(P)return{P.stat.score,P.stat.row}end,
scoreDisp=function(D)return D[1].." "..D[2].." Lines"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 L=P.stat.row
return
L>=200 and 5 or
L>=191 and 4 or
L>=110 and 3 or
L>=50 and 2 or
L>=5 and 1 or
L>=1 and 0
end,
color=COLOR.lBlue,
env={
das=16,arr=6,sddas=2,sdarr=2,
irs=false,ims=false,
center=0,ghost=0,
smooth=false,
drop=3,lock=3,wait=10,fall=25,
fieldH=19,
nextCount=1,holdCount=false,
RS='Classic',
sequence='rnd',
freshLimit=0,
face={0,0,2,2,2,0,0},
noTele=true,keyCancel={5,6},
task=function(P)P.modeData.target=10 end,
dropPiece=function(P)
local D=P.modeData
if P.stat.row>=D.target then
D.target=D.target+10
if D.target==110 then
P.gameEnv.drop,P.gameEnv.lock=2,2
SFX.play('blip_1')
elseif D.target==200 then
P.gameEnv.drop,P.gameEnv.lock=1,1
SFX.play('blip_1')
else
SFX.play('reach')
end
end
end,
bg='rgb',bgm='magicblock',
},
slowMark=true,
mesDisp=function(P)
setFont(75)
local r=P.modeData.target*.1
mStr(r<11 and 18 or r<22 and r+8 or("%02x"):format(r*10-220),63,210)
mText(drawableText.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
end,
score=function(P)return{P.stat.score,P.stat.row}end,
scoreDisp=function(D)return D[1].." "..D[2].." Lines"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 L=P.stat.row
return
L>=200 and 5 or
L>=191 and 4 or
L>=110 and 3 or
L>=50 and 2 or
L>=5 and 1 or
L>=1 and 0
end,
}

View File

@@ -1,80 +1,80 @@
local function notAir(L)
for i=1,10 do
if L[i]>0 then return true end
end
for i=1,10 do
if L[i]>0 then return true end
end
end
local function setField(P,page)
local F=FIELD[page]
local height=0
for y=20,1,-1 do
if notAir(F[y])then
height=y
break
end
end
local t=P.showTime*3
for y=1,height do
local solid=notAir(F[y])
P.field[y]=FREEROW.get(0,solid)
P.visTime[y]=FREEROW.get(t)
if solid then
for x=1,10 do
P.field[y][x]=F[y][x]
end
P.garbageBeneath=P.garbageBeneath+1
end
end
local F=FIELD[page]
local height=0
for y=20,1,-1 do
if notAir(F[y])then
height=y
break
end
end
local t=P.showTime*3
for y=1,height do
local solid=notAir(F[y])
P.field[y]=FREEROW.get(0,solid)
P.visTime[y]=FREEROW.get(t)
if solid then
for x=1,10 do
P.field[y][x]=F[y][x]
end
P.garbageBeneath=P.garbageBeneath+1
end
end
end
local function checkClear(P)
if P.garbageBeneath==0 then
local D=P.modeData
D.finished=D.finished+1
if FIELD[D.finished+1]then
P.waiting=26
for i=#P.field,1,-1 do
FREEROW.discard(P.field[i])
FREEROW.discard(P.visTime[i])
P.field[i],P.visTime[i]=nil
end
setField(P,D.finished+1)
SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.6,.8,.6)
SFX.play('blip_1')
else
P:win('finish')
end
end
if P.garbageBeneath==0 then
local D=P.modeData
D.finished=D.finished+1
if FIELD[D.finished+1]then
P.waiting=26
for i=#P.field,1,-1 do
FREEROW.discard(P.field[i])
FREEROW.discard(P.visTime[i])
P.field[i],P.visTime[i]=nil
end
setField(P,D.finished+1)
SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.6,.8,.6)
SFX.play('blip_1')
else
P:win('finish')
end
end
end
return{
color=COLOR.white,
env={},
load=function()
applyCustomGame()
color=COLOR.white,
env={},
load=function()
applyCustomGame()
for y=1,20 do
if notAir(FIELD[1][y])then
--Switch clear sprint mode on
GAME.modeEnv.dropPiece=checkClear
goto BREAK_clearMode
end
end
GAME.modeEnv.dropPiece=NULL
::BREAK_clearMode::
PLY.newPlayer(1)
local AItype=GAME.modeEnv.opponent:sub(1,2)
local AIlevel=tonumber(GAME.modeEnv.opponent:sub(-1))
if AItype=='9S'then
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=2*AIlevel,hold=true})
elseif AItype=='CC'then
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=2*AIlevel-1,next=math.floor(AIlevel*.5+1),hold=true,node=20000+5000*AIlevel})
end
for y=1,20 do
if notAir(FIELD[1][y])then
--Switch clear sprint mode on
GAME.modeEnv.dropPiece=checkClear
goto BREAK_clearMode
end
end
GAME.modeEnv.dropPiece=NULL
::BREAK_clearMode::
PLY.newPlayer(1)
local AItype=GAME.modeEnv.opponent:sub(1,2)
local AIlevel=tonumber(GAME.modeEnv.opponent:sub(-1))
if AItype=='9S'then
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=2*AIlevel,hold=true})
elseif AItype=='CC'then
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=2*AIlevel-1,next=math.floor(AIlevel*.5+1),hold=true,node=20000+5000*AIlevel})
end
for _,P in next,PLY_ALIVE do
setField(P,1)
end
end,
mesDisp=function(P)
setFont(55)
mStr(P.stat.row,63,225)
mText(drawableText.line,63,290)
end,
for _,P in next,PLY_ALIVE do
setField(P,1)
end
end,
mesDisp=function(P)
setFont(55)
mStr(P.stat.row,63,225)
mText(drawableText.line,63,290)
end,
}

View File

@@ -1,70 +1,70 @@
local gc=love.graphics
local gc_draw=gc.draw
local function puzzleCheck(P)
local D=P.modeData
local F=FIELD[D.finished+1]
for y=1,20 do
local L=P.field[y]
for x=1,10 do
local a,b=F[y][x],L and L[x]or 0
if a~=0 then
if a==-1 then if b>0 then return end
elseif a<12 then if a~=b then return end
elseif a>7 then if b==0 then return end
end
end
end
end
D.finished=D.finished+1
if FIELD[D.finished+1]then
P.waiting=26
for _=#P.field,1,-1 do
FREEROW.discard(P.field[_])
FREEROW.discard(P.visTime[_])
P.field[_],P.visTime[_]=nil
end
SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.3,1,.3)
SFX.play('reach')
D.showMark=0
else
D.showMark=1
P:win('finish')
end
local D=P.modeData
local F=FIELD[D.finished+1]
for y=1,20 do
local L=P.field[y]
for x=1,10 do
local a,b=F[y][x],L and L[x]or 0
if a~=0 then
if a==-1 then if b>0 then return end
elseif a<12 then if a~=b then return end
elseif a>7 then if b==0 then return end
end
end
end
end
D.finished=D.finished+1
if FIELD[D.finished+1]then
P.waiting=26
for _=#P.field,1,-1 do
FREEROW.discard(P.field[_])
FREEROW.discard(P.visTime[_])
P.field[_],P.visTime[_]=nil
end
SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.3,1,.3)
SFX.play('reach')
D.showMark=0
else
D.showMark=1
P:win('finish')
end
end
return{
color=COLOR.white,
env={
fkey1=function(P)P.modeData.showMark=1-P.modeData.showMark end,
dropPiece=puzzleCheck,
},
load=function()
applyCustomGame()
local AItype=GAME.modeEnv.opponent:sub(1,2)
local AIlevel=tonumber(GAME.modeEnv.opponent:sub(-1))
PLY.newPlayer(1)
if AItype=='9S'then
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=2*AIlevel,hold=true})
elseif AItype=='CC'then
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=2*AIlevel-1,next=math.floor(AIlevel*.5+1),hold=true,node=20000+5000*AIlevel})
end
end,
mesDisp=function(P)
setFont(55)
mStr(P.stat.row,63,225)
mText(drawableText.line,63,290)
PLY.draw.applyField(P)
if P.modeData.showMark==0 then
local mark=TEXTURE.puzzleMark
local F=FIELD[P.modeData.finished+1]
gc.setColor(1,1,1)
for y=1,20 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,
color=COLOR.white,
env={
fkey1=function(P)P.modeData.showMark=1-P.modeData.showMark end,
dropPiece=puzzleCheck,
},
load=function()
applyCustomGame()
local AItype=GAME.modeEnv.opponent:sub(1,2)
local AIlevel=tonumber(GAME.modeEnv.opponent:sub(-1))
PLY.newPlayer(1)
if AItype=='9S'then
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=2*AIlevel,hold=true})
elseif AItype=='CC'then
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=2*AIlevel-1,next=math.floor(AIlevel*.5+1),hold=true,node=20000+5000*AIlevel})
end
end,
mesDisp=function(P)
setFont(55)
mStr(P.stat.row,63,225)
mText(drawableText.line,63,290)
PLY.draw.applyField(P)
if P.modeData.showMark==0 then
local mark=TEXTURE.puzzleMark
local F=FIELD[P.modeData.finished+1]
gc.setColor(1,1,1)
for y=1,20 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,
}

View File

@@ -1,65 +1,65 @@
return{
color=COLOR.red,
env={
drop=5,lock=60,
fall=6,
nextCount=3,
freshLimit=15,
pushSpeed=2,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.counter=D.counter+1
local t=math.max(240-2*D.wave,40)
if D.counter>=t then
D.counter=0
for _=1,4 do
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=5*t,cd0=5*t,time=0,sent=false,lv=2})
end
P.atkBufferSum=P.atkBufferSum+4
P.stat.recv=P.stat.recv+4
D.wave=D.wave+1
if D.wave<=75 then
D.rpm=math.floor(144e3/t)*.1
if D.wave==25 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=4,4
elseif D.wave==50 then
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=4
P.dropDelay,P.gameEnv.drop=3,3
elseif D.wave==75 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
P.dropDelay,P.gameEnv.drop=2,2
end
end
end
end
end
end,
bg='rainbow2',bgm='storm',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr(P.modeData.rpm,63,320)
mText(drawableText.wave,63,260)
mText(drawableText.rpm,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=100 and 5 or
W>=80 and 4 or
W>=55 and 3 or
W>=30 and 2 or
W>=20 and 1 or
W>=5 and 0
end,
color=COLOR.red,
env={
drop=5,lock=60,
fall=6,
nextCount=3,
freshLimit=15,
pushSpeed=2,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.counter=D.counter+1
local t=math.max(240-2*D.wave,40)
if D.counter>=t then
D.counter=0
for _=1,4 do
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=5*t,cd0=5*t,time=0,sent=false,lv=2})
end
P.atkBufferSum=P.atkBufferSum+4
P.stat.recv=P.stat.recv+4
D.wave=D.wave+1
if D.wave<=75 then
D.rpm=math.floor(144e3/t)*.1
if D.wave==25 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=4,4
elseif D.wave==50 then
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=4
P.dropDelay,P.gameEnv.drop=3,3
elseif D.wave==75 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
P.dropDelay,P.gameEnv.drop=2,2
end
end
end
end
end
end,
bg='rainbow2',bgm='storm',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr(P.modeData.rpm,63,320)
mText(drawableText.wave,63,260)
mText(drawableText.rpm,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=100 and 5 or
W>=80 and 4 or
W>=55 and 3 or
W>=30 and 2 or
W>=20 and 1 or
W>=5 and 0
end,
}

View File

@@ -1,65 +1,65 @@
return{
color=COLOR.green,
env={
drop=30,lock=60,
fall=10,
nextCount=3,
freshLimit=15,
pushSpeed=1,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.counter=D.counter+1
local t=math.max(360-D.wave*2,60)
if D.counter>=t then
D.counter=0
for _=1,3 do
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=2*t,cd0=2*t,time=0,sent=false,lv=1})
end
P.atkBufferSum=P.atkBufferSum+3
P.stat.recv=P.stat.recv+3
D.wave=D.wave+1
if D.wave<=90 then
D.rpm=math.floor(108e3/t)*.1
if D.wave==25 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=2
P.dropDelay,P.gameEnv.drop=20,20
elseif D.wave==50 then
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=10,10
elseif D.wave==90 then
P.dropDelay,P.gameEnv.drop=5,5
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end
end,
bg='rainbow2',bgm='storm',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr(P.modeData.rpm,63,320)
mText(drawableText.wave,63,260)
mText(drawableText.rpm,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=120 and 5 or
W>=100 and 4 or
W>=70 and 3 or
W>=40 and 2 or
W>=10 and 1 or
W>=3 and 0
end,
color=COLOR.green,
env={
drop=30,lock=60,
fall=10,
nextCount=3,
freshLimit=15,
pushSpeed=1,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.counter=D.counter+1
local t=math.max(360-D.wave*2,60)
if D.counter>=t then
D.counter=0
for _=1,3 do
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=2*t,cd0=2*t,time=0,sent=false,lv=1})
end
P.atkBufferSum=P.atkBufferSum+3
P.stat.recv=P.stat.recv+3
D.wave=D.wave+1
if D.wave<=90 then
D.rpm=math.floor(108e3/t)*.1
if D.wave==25 then
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=2
P.dropDelay,P.gameEnv.drop=20,20
elseif D.wave==50 then
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=10,10
elseif D.wave==90 then
P.dropDelay,P.gameEnv.drop=5,5
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end
end,
bg='rainbow2',bgm='storm',
},
mesDisp=function(P)
setFont(55)
mStr(P.modeData.wave,63,200)
mStr(P.modeData.rpm,63,320)
mText(drawableText.wave,63,260)
mText(drawableText.rpm,63,380)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=120 and 5 or
W>=100 and 4 or
W>=70 and 3 or
W>=40 and 2 or
W>=10 and 1 or
W>=3 and 0
end,
}

View File

@@ -1,43 +1,43 @@
local function check_rise(P)
for _=1,math.min(8,100-P.stat.dig)-P.garbageBeneath do
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==100 then
P:win('finish')
end
for _=1,math.min(8,100-P.stat.dig)-P.garbageBeneath do
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==100 then
P:win('finish')
end
end
return{
color=COLOR.green,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg2',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(100-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<100 then return end
local T=P.stat.time
return
T<=120 and 5 or
T<=160 and 4 or
T<=240 and 3 or
T<=360 and 2 or
T<=480 and 1 or
0
end,
color=COLOR.green,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg2',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(100-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<100 then return end
local T=P.stat.time
return
T<=120 and 5 or
T<=160 and 4 or
T<=240 and 3 or
T<=360 and 2 or
T<=480 and 1 or
0
end,
}

View File

@@ -1,40 +1,40 @@
local function check_rise(P)
if P.stat.dig==10 then
P:win('finish')
end
if P.stat.dig==10 then
P:win('finish')
end
end
return{
color=COLOR.cyan,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg1',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(10-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<10 then return end
local T=P.stat.time
return
T<=7 and 5 or
T<=12 and 4 or
T<=20 and 3 or
T<=40 and 2 or
T<=60 and 1 or
0
end,
color=COLOR.cyan,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg1',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(10-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<10 then return end
local T=P.stat.time
return
T<=7 and 5 or
T<=12 and 4 or
T<=20 and 3 or
T<=40 and 2 or
T<=60 and 1 or
0
end,
}

View File

@@ -1,43 +1,43 @@
local function check_rise(P)
for _=1,math.min(8,400-P.stat.dig)-P.garbageBeneath do
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==400 then
P:win('finish')
end
for _=1,math.min(8,400-P.stat.dig)-P.garbageBeneath do
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==400 then
P:win('finish')
end
end
return{
color=COLOR.orange,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg2',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(400-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<400 then return end
local T=P.stat.time
return
T<=540 and 5 or
T<=720 and 4 or
T<=960 and 3 or
T<=1500 and 2 or
T<=1800 and 1 or
0
end,
color=COLOR.orange,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg2',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(400-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<400 then return end
local T=P.stat.time
return
T<=540 and 5 or
T<=720 and 4 or
T<=960 and 3 or
T<=1500 and 2 or
T<=1800 and 1 or
0
end,
}

View File

@@ -1,43 +1,43 @@
local function check_rise(P)
for _=1,math.min(8,40-P.stat.dig)-P.garbageBeneath do
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==40 then
P:win('finish')
end
for _=1,math.min(8,40-P.stat.dig)-P.garbageBeneath do
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==40 then
P:win('finish')
end
end
return{
color=COLOR.lBlue,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg1',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(40-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<40 then return end
local T=P.stat.time
return
T<=50 and 5 or
T<=70 and 4 or
T<=90 and 3 or
T<=120 and 2 or
T<=180 and 1 or
0
end,
color=COLOR.lBlue,
env={
pushSpeed=6,
dropPiece=check_rise,
bg='bg1',bgm='way',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,10 do
P:garbageRise(21,1,P:getHolePos())
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(55)
mStr(40-P.stat.dig,63,265)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.dig<40 then return end
local T=P.stat.time
return
T<=50 and 5 or
T<=70 and 4 or
T<=90 and 3 or
T<=120 and 2 or
T<=180 and 1 or
0
end,
}

View File

@@ -1,42 +1,42 @@
return{
color=COLOR.magenta,
env={
drop=60,lock=120,
fall=20,
freshLimit=15,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(90,180-D.wave)then
P:garbageRise(21,1,P:getHolePos())
P.stat.recv=P.stat.recv+1
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='bg2',bgm='shift',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.row}end,
scoreDisp=function(D)return D[1].." Waves "..D[2].." Lines"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 W=P.modeData.wave
return
W>=150 and 5 or
W>=110 and 4 or
W>=80 and 3 or
W>=50 and 2 or
W>=20 and 1 or
P.stat.row>=5 and 0
end,
color=COLOR.magenta,
env={
drop=60,lock=120,
fall=20,
freshLimit=15,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(90,180-D.wave)then
P:garbageRise(21,1,P:getHolePos())
P.stat.recv=P.stat.recv+1
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='bg2',bgm='shift',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.row}end,
scoreDisp=function(D)return D[1].." Waves "..D[2].." Lines"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 W=P.modeData.wave
return
W>=150 and 5 or
W>=110 and 4 or
W>=80 and 3 or
W>=50 and 2 or
W>=20 and 1 or
P.stat.row>=5 and 0
end,
}

View File

@@ -1,41 +1,41 @@
return{
color=COLOR.lYellow,
env={
drop=10,lock=30,
freshLimit=15,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(30,80-.3*D.wave)then
P:garbageRise(20+D.wave%5,1,P:getHolePos())
P.stat.recv=P.stat.recv+1
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='bg2',bgm='shift',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.row}end,
scoreDisp=function(D)return D[1].." Waves "..D[2].." Lines"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 W=P.modeData.wave
return
W>=150 and 5 or
W>=110 and 4 or
W>=80 and 3 or
W>=50 and 2 or
W>=20 and 1 or
P.stat.row>=5 and 0
end,
color=COLOR.lYellow,
env={
drop=10,lock=30,
freshLimit=15,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(30,80-.3*D.wave)then
P:garbageRise(20+D.wave%5,1,P:getHolePos())
P.stat.recv=P.stat.recv+1
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='bg2',bgm='shift',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.row}end,
scoreDisp=function(D)return D[1].." Waves "..D[2].." Lines"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 W=P.modeData.wave
return
W>=150 and 5 or
W>=110 and 4 or
W>=80 and 3 or
W>=50 and 2 or
W>=20 and 1 or
P.stat.row>=5 and 0
end,
}

View File

@@ -1,110 +1,110 @@
local ins=table.insert
return{
color=COLOR.red,
env={
drop=20,lock=60,
sequence=function(P)
for _=1,3 do P:getNext(7)end
while true do
YIELD()
if not P.nextQueue[1]then
local height=FREEROW.get(0)
local max=#P.field
if max>0 then
--Get heights
for x=1,10 do
local h=max
while P.field[h][x]==0 and h>1 do
h=h-1
end
height[x]=h
end
else
for x=1,10 do
height[x]=0
end
end
height[11]=999
color=COLOR.red,
env={
drop=20,lock=60,
sequence=function(P)
for _=1,3 do P:getNext(7)end
while true do
YIELD()
if not P.nextQueue[1]then
local height=FREEROW.get(0)
local max=#P.field
if max>0 then
--Get heights
for x=1,10 do
local h=max
while P.field[h][x]==0 and h>1 do
h=h-1
end
height[x]=h
end
else
for x=1,10 do
height[x]=0
end
end
height[11]=999
local wei={1,1,2,2,3,4}
local d=0
for i=1,10 do
d=d+height[i]
end
if d<40 or P.stat.row>2*42 then--Low field or almost win, give SZO
for _=1,4 do
ins(wei,1)
ins(wei,2)
ins(wei,6)
end
else
--Give I when no hole
local tempDeltaHei=-999--Height difference
for x=2,11 do
local deltaHei=height[x]-height[x-1]
if tempDeltaHei<-2 and deltaHei>2 then
break
elseif x==11 then
for _=1,3 do ins(wei,7)end
else
tempDeltaHei=deltaHei
end
end
local wei={1,1,2,2,3,4}
local d=0
for i=1,10 do
d=d+height[i]
end
if d<40 or P.stat.row>2*42 then--Low field or almost win, give SZO
for _=1,4 do
ins(wei,1)
ins(wei,2)
ins(wei,6)
end
else
--Give I when no hole
local tempDeltaHei=-999--Height difference
for x=2,11 do
local deltaHei=height[x]-height[x-1]
if tempDeltaHei<-2 and deltaHei>2 then
break
elseif x==11 then
for _=1,3 do ins(wei,7)end
else
tempDeltaHei=deltaHei
end
end
--Give O when no d=0/give T when no d=1
local flatCount=0--d=0 count
local stairCount=0--d=1 count
for x=2,10 do
local _=height[x]-height[x-1]
if _==0 then
flatCount=flatCount+1
elseif _==1 or _==-1 then
stairCount=stairCount+1
end
end
if flatCount<3 then
for _=1,3 do ins(wei,6)end
end
if stairCount<3 then
for _=1,4 do ins(wei,5)end
end
end
--Give O when no d=0/give T when no d=1
local flatCount=0--d=0 count
local stairCount=0--d=1 count
for x=2,10 do
local _=height[x]-height[x-1]
if _==0 then
flatCount=flatCount+1
elseif _==1 or _==-1 then
stairCount=stairCount+1
end
end
if flatCount<3 then
for _=1,3 do ins(wei,6)end
end
if stairCount<3 then
for _=1,4 do ins(wei,5)end
end
end
FREEROW.discard(height)
P:getNext(wei[P.seqRND:random(#wei)])
end
end
end,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
nextCount=1,holdCount=0,
ospin=false,
freshLimit=15,
bg='blockfall',bgm='reason',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{math.min(P.stat.row,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=100 then
local T=P.stat.time
return
T<=110 and 5 or
T<=126 and 4 or
T<=160 and 3 or
T<=240 and 2 or
1
else
return
L>=50 and 1 or
L>=10 and 0
end
end,
FREEROW.discard(height)
P:getNext(wei[P.seqRND:random(#wei)])
end
end
end,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
nextCount=1,holdCount=0,
ospin=false,
freshLimit=15,
bg='blockfall',bgm='reason',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{math.min(P.stat.row,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=100 then
local T=P.stat.time
return
T<=110 and 5 or
T<=126 and 4 or
T<=160 and 3 or
T<=240 and 2 or
1
else
return
L>=50 and 1 or
L>=10 and 0
end
end,
}

View File

@@ -1,40 +1,40 @@
local min=math.min
return{
color=COLOR.green,
env={
drop=20,lock=60,
sequence='bag',
seqData={1,1,2,2,3,3,4,4,5,5,6,6},
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
nextCount=3,
ospin=false,
freshLimit=15,
bg='blockfall',bgm='reason',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{min(P.stat.row,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=100 then
local T=P.stat.time
return
T<=80 and 5 or
T<=100 and 4 or
T<=150 and 3 or
T<=210 and 2 or
1
else
return
L>=50 and 1 or
L>=10 and 0
end
end,
color=COLOR.green,
env={
drop=20,lock=60,
sequence='bag',
seqData={1,1,2,2,3,3,4,4,5,5,6,6},
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
nextCount=3,
ospin=false,
freshLimit=15,
bg='blockfall',bgm='reason',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{min(P.stat.row,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=100 then
local T=P.stat.time
return
T<=80 and 5 or
T<=100 and 4 or
T<=150 and 3 or
T<=210 and 2 or
1
else
return
L>=50 and 1 or
L>=10 and 0
end
end,
}

View File

@@ -1,15 +1,15 @@
return{
color=COLOR.white,
env={
drop=1e99,lock=1e99,
infHold=true,
bg='blockfall',bgm='infinite',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
color=COLOR.white,
env={
drop=1e99,lock=1e99,
infHold=true,
bg='blockfall',bgm='infinite',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
}

View File

@@ -1,54 +1,54 @@
local function check_rise(P)
local L=P.garbageBeneath
if #P.clearedRow==0 then
if L>0 then
if L<3 then
P:showTextF(text.almost,0,-120,80,'beat',.8)
elseif L<5 then
P:showTextF(text.great,0,-120,80,'fly',.8)
end
end
for _=1,8-L do
P:garbageRise(13,1,generateLine(P.holeRND:random(10)))
end
else
if L==0 then
P:showTextF(text.awesome,0,-120,80,'beat',.6)
SFX.play('clear')
BG.send(26)
for _=1,8 do
P:garbageRise(13,1,generateLine(P.holeRND:random(10)))
end
else
BG.send(#P.clearedRow)
end
end
local L=P.garbageBeneath
if #P.clearedRow==0 then
if L>0 then
if L<3 then
P:showTextF(text.almost,0,-120,80,'beat',.8)
elseif L<5 then
P:showTextF(text.great,0,-120,80,'fly',.8)
end
end
for _=1,8-L do
P:garbageRise(13,1,generateLine(P.holeRND:random(10)))
end
else
if L==0 then
P:showTextF(text.awesome,0,-120,80,'beat',.6)
SFX.play('clear')
BG.send(26)
for _=1,8 do
P:garbageRise(13,1,generateLine(P.holeRND:random(10)))
end
else
BG.send(#P.clearedRow)
end
end
end
return{
color=COLOR.white,
env={
drop=1e99,lock=1e99,
infHold=true,
dropPiece=check_rise,
pushSpeed=1.2,
bg='wing',bgm='dream',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,8 do
P:garbageRise(13,1,generateLine(P.holeRND:random(10)))
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(45)
mStr(P.stat.dig,63,190)
mStr(P.stat.atk,63,310)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,420)
mText(drawableText.line,63,243)
mText(drawableText.atk,63,363)
mText(drawableText.eff,63,475)
end,
color=COLOR.white,
env={
drop=1e99,lock=1e99,
infHold=true,
dropPiece=check_rise,
pushSpeed=1.2,
bg='wing',bgm='dream',
},
load=function()
PLY.newPlayer(1)
local P=PLAYERS[1]
for _=1,8 do
P:garbageRise(13,1,generateLine(P.holeRND:random(10)))
end
P.fieldBeneath=0
end,
mesDisp=function(P)
setFont(45)
mStr(P.stat.dig,63,190)
mStr(P.stat.atk,63,310)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,420)
mText(drawableText.line,63,243)
mText(drawableText.atk,63,363)
mText(drawableText.eff,63,475)
end,
}

View File

@@ -1,56 +1,56 @@
local dropSpeed={50,40,30,25,20,15,12,9,7,5,4,3,2,1,1,.5,.5,.25,.25}
return{
color=COLOR.yellow,
env={
noTele=true,
drop=60,wait=8,fall=20,
task=function(P)P.modeData.target=10 end,
dropPiece=function(P)
local flag
local l=P.lastPiece
if P.combo>1 then flag=true;P:showText("2x",0,-220,40,'flicker',.3)end
if l.spin then flag=true;P:showText("spin",0,-180,40,'flicker',.3)end
if l.row>1 then flag=true;P:showText("1+",0,-140,40,'flicker',.3)end
if l.pc then flag=true;P:showText("PC",0,-100,40,'flicker',.3)end
if l.hpc then flag=true;P:showText("HPC",0,-100,40,'flicker',.3)end
if flag then
P:lose()
else
local T=P.modeData.target
if P.stat.row>=T then
if T==200 then
P:win('finish')
else
T=T+10
P.gameEnv.drop=dropSpeed[T/10]
P.modeData.target=T
SFX.play('reach')
end
end
end
end,
mindas=7,minarr=1,minsdarr=1,
bg='bg2',bgm='blank',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
getRank=function(P)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=400 and 5 or
T<=600 and 4 or
3
else
return
L>=150 and 2 or
L>=80 and 1 or
L>=20 and 0
end
end,
color=COLOR.yellow,
env={
noTele=true,
drop=60,wait=8,fall=20,
task=function(P)P.modeData.target=10 end,
dropPiece=function(P)
local flag
local l=P.lastPiece
if P.combo>1 then flag=true;P:showText("2x",0,-220,40,'flicker',.3)end
if l.spin then flag=true;P:showText("spin",0,-180,40,'flicker',.3)end
if l.row>1 then flag=true;P:showText("1+",0,-140,40,'flicker',.3)end
if l.pc then flag=true;P:showText("PC",0,-100,40,'flicker',.3)end
if l.hpc then flag=true;P:showText("HPC",0,-100,40,'flicker',.3)end
if flag then
P:lose()
else
local T=P.modeData.target
if P.stat.row>=T then
if T==200 then
P:win('finish')
else
T=T+10
P.gameEnv.drop=dropSpeed[T/10]
P.modeData.target=T
SFX.play('reach')
end
end
end
end,
mindas=7,minarr=1,minsdarr=1,
bg='bg2',bgm='blank',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
getRank=function(P)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=400 and 5 or
T<=600 and 4 or
3
else
return
L>=150 and 2 or
L>=80 and 1 or
L>=20 and 0
end
end,
}

View File

@@ -1,49 +1,49 @@
return{
color=COLOR.magenta,
env={
noTele=true,
mindas=7,minarr=1,minsdarr=1,
drop=.5,wait=8,fall=20,
task=function(P)P.modeData.target=50 end,
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==50 then
P.gameEnv.drop=.25
P.modeData.target=100
SFX.play('reach')
elseif P.modeData.target==100 then
P:set20G(true)
P.modeData.target=200
SFX.play('reach')
else
P:win('finish')
end
end
end,
noInitSZO=true,
bg='cubes',bgm='push',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=240 and 5 or
T<=360 and 4 or
3
else
return
L>=100 and 2 or
L>=50 and 1 or
L>=10 and 0
end
end,
color=COLOR.magenta,
env={
noTele=true,
mindas=7,minarr=1,minsdarr=1,
drop=.5,wait=8,fall=20,
task=function(P)P.modeData.target=50 end,
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==50 then
P.gameEnv.drop=.25
P.modeData.target=100
SFX.play('reach')
elseif P.modeData.target==100 then
P:set20G(true)
P.modeData.target=200
SFX.play('reach')
else
P:win('finish')
end
end
end,
noInitSZO=true,
bg='cubes',bgm='push',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=240 and 5 or
T<=360 and 4 or
3
else
return
L>=100 and 2 or
L>=50 and 1 or
L>=10 and 0
end
end,
}

View File

@@ -1,47 +1,47 @@
local dropSpeed={50,40,30,24,18,14,10,8,6,5,4,3,2,1,1,.5,.5,.25,.25}
return{
color=COLOR.green,
env={
noTele=true,
mindas=7,minarr=1,minsdarr=1,
drop=60,wait=8,fall=20,
task=function(P)P.modeData.target=10 end,
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
noInitSZO=true,
bg='bg2',bgm='push',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=240 and 5 or
T<=360 and 4 or
3
else
return
L>=150 and 2 or
L>=100 and 1 or
L>=20 and 0
end
end,
color=COLOR.green,
env={
noTele=true,
mindas=7,minarr=1,minsdarr=1,
drop=60,wait=8,fall=20,
task=function(P)P.modeData.target=10 end,
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
noInitSZO=true,
bg='bg2',bgm='push',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=240 and 5 or
T<=360 and 4 or
3
else
return
L>=150 and 2 or
L>=100 and 1 or
L>=20 and 0
end
end,
}

View File

@@ -1,68 +1,68 @@
local sectionName={"D","C","B","A","A+","S-","S","S+","S+","SS","SS","U","U","X","X+"}
local passPoint=16
local function score(P)
if P.modeData.rankPoint<140-passPoint then--If Less then X
local R=#P.clearedRow
if R>0 then
if R==4 then R=10 end--Techrash +10
P.modeData.rankPoint=math.min(P.modeData.rankPoint+R,140-passPoint)
P.modeData.rankName=sectionName[math.floor(P.modeData.rankPoint/10)+1]
end
end
if P.modeData.rankPoint<140-passPoint then--If Less then X
local R=#P.clearedRow
if R>0 then
if R==4 then R=10 end--Techrash +10
P.modeData.rankPoint=math.min(P.modeData.rankPoint+R,140-passPoint)
P.modeData.rankName=sectionName[math.floor(P.modeData.rankPoint/10)+1]
end
end
end
return{
color=COLOR.lBlue,
env={
noTele=true,
minarr=1,
drop=0,lock=15,
wait=15,fall=6,
nextCount=3,
sequence='hisPool',
visible='fast',
freshLimit=15,
dropPiece=score,
noInitSZO=true,
task=function(P)
P.modeData.rankPoint=0
P.modeData.rankName=sectionName[1]
while true do
YIELD()
if P.stat.frame>=3600 then
P.modeData.rankPoint=math.min(P.modeData.rankPoint+passPoint,140)
P.modeData.rankName=sectionName[math.floor(P.modeData.rankPoint/10)+1]
P:win('finish')
return
end
end
end,
bg='blockspace',bgm='hope',
},
slowMark=true,
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
mText(drawableText.grade,63,170)
setFont(55)
mStr(P.modeData.rankName,63,110)
setFont(20)
mStr(("%.1f"):format(P.modeData.rankPoint/10),63,198)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
end,
score=function(P)return{P.modeData.rankPoint,P.stat.score}end,
scoreDisp=function(D)return sectionName[math.floor(D[1]/10)+1].." "..D[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)
P=P.modeData.rankPoint
return
P==140 and 5 or
P>=110 and 4 or
P>=80 and 3 or
P>=50 and 2 or
P>=30 and 1 or
P>=10 and 0
end,
color=COLOR.lBlue,
env={
noTele=true,
minarr=1,
drop=0,lock=15,
wait=15,fall=6,
nextCount=3,
sequence='hisPool',
visible='fast',
freshLimit=15,
dropPiece=score,
noInitSZO=true,
task=function(P)
P.modeData.rankPoint=0
P.modeData.rankName=sectionName[1]
while true do
YIELD()
if P.stat.frame>=3600 then
P.modeData.rankPoint=math.min(P.modeData.rankPoint+passPoint,140)
P.modeData.rankName=sectionName[math.floor(P.modeData.rankPoint/10)+1]
P:win('finish')
return
end
end
end,
bg='blockspace',bgm='hope',
},
slowMark=true,
mesDisp=function(P)
mText(drawableText.line,63,300)
mText(drawableText.techrash,63,420)
mText(drawableText.grade,63,170)
setFont(55)
mStr(P.modeData.rankName,63,110)
setFont(20)
mStr(("%.1f"):format(P.modeData.rankPoint/10),63,198)
setFont(75)
mStr(P.stat.row,63,220)
mStr(P.stat.clears[4],63,340)
end,
score=function(P)return{P.modeData.rankPoint,P.stat.score}end,
scoreDisp=function(D)return sectionName[math.floor(D[1]/10)+1].." "..D[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)
P=P.modeData.rankPoint
return
P==140 and 5 or
P>=110 and 4 or
P>=80 and 3 or
P>=50 and 2 or
P>=30 and 1 or
P>=10 and 0
end,
}

View File

@@ -1,75 +1,75 @@
local function score(P)
local D=P.modeData
local D=P.modeData
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100--range from 1 to 9
local E=P.gameEnv
if s<4 then
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
--First 300
if s~=1 then E.lock=E.lock-1 end
if s~=2 then E.wait=E.wait-1 end
if s~=3 then E.fall=E.fall-1 end
D.target=D.target+100
elseif s<10 then
if s==5 then BGM.play('distortion')end
P:showTextF(text.stage:gsub("$1",s),0,-120,60,'fly',1.26)
if s==4 or s==7 then E.das=E.das-1 end
if s%3==0 then E.lock=E.lock-1
elseif s%3==1 then E.wait=E.wait-1
elseif s%3==2 then E.fall=E.fall-1
end
D.target=D.target+100
else
D.pt=1000
P:win('finish')
end
SFX.play('reach')
end
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100--range from 1 to 9
local E=P.gameEnv
if s<4 then
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
--First 300
if s~=1 then E.lock=E.lock-1 end
if s~=2 then E.wait=E.wait-1 end
if s~=3 then E.fall=E.fall-1 end
D.target=D.target+100
elseif s<10 then
if s==5 then BGM.play('distortion')end
P:showTextF(text.stage:gsub("$1",s),0,-120,60,'fly',1.26)
if s==4 or s==7 then E.das=E.das-1 end
if s%3==0 then E.lock=E.lock-1
elseif s%3==1 then E.wait=E.wait-1
elseif s%3==2 then E.fall=E.fall-1
end
D.target=D.target+100
else
D.pt=1000
P:win('finish')
end
SFX.play('reach')
end
end
return{
color=COLOR.lGray,
env={
noTele=true,
das=5,arr=1,
drop=0,lock=12,
wait=10,fall=10,
dropPiece=score,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
easyFresh=false,bone=true,
noInitSZO=true,
bg='lightning',bgm='rectification',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=600 and 3 or
S>=400 and 2 or
S>=200 and 1 or
S>=50 and 0
end,
color=COLOR.lGray,
env={
noTele=true,
das=5,arr=1,
drop=0,lock=12,
wait=10,fall=10,
dropPiece=score,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
easyFresh=false,bone=true,
noInitSZO=true,
bg='lightning',bgm='rectification',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=600 and 3 or
S>=400 and 2 or
S>=200 and 1 or
S>=50 and 0
end,
}

View File

@@ -1,93 +1,93 @@
local death_lock={12,11,10,9,8, 7,7,7,7,6}
local death_wait={10,9, 8, 7,6, 6,6,5,5,4}
local death_fall={10,9, 8, 7,6, 6,5,5,4,4}
local death_lock={12,11,10,9,8, 7,7,7,7,6}
local death_wait={10,9, 8, 7,6, 6,6,5,5,4}
local death_fall={10,9, 8, 7,6, 6,5,5,4,4}
local function score(P)
local D=P.modeData
local D=P.modeData
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
E.lock=death_lock[s]
E.wait=death_wait[s]
E.fall=death_fall[s]
if s==2 then
E.das=5
BG.set('rainbow')
elseif s==4 then
E.das=4
BG.set('rainbow2')
elseif s==5 then
if P.stat.frame>183*60 then
D.pt=500
P:win('finish')
return
else
E.bone=true
P.gameEnv.freshLimit=10
BG.set('glow')
BGM.play('secret7th remix')
end
elseif s==6 then
E.das=3
BG.set('lightning')
elseif s==7 then
E.bone=true
elseif s==10 then
D.pt=1000
P:win('finish')
return
end
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'beat')
SFX.play('reach')
end
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
E.lock=death_lock[s]
E.wait=death_wait[s]
E.fall=death_fall[s]
if s==2 then
E.das=5
BG.set('rainbow')
elseif s==4 then
E.das=4
BG.set('rainbow2')
elseif s==5 then
if P.stat.frame>183*60 then
D.pt=500
P:win('finish')
return
else
E.bone=true
P.gameEnv.freshLimit=10
BG.set('glow')
BGM.play('secret7th remix')
end
elseif s==6 then
E.das=3
BG.set('lightning')
elseif s==7 then
E.bone=true
elseif s==10 then
D.pt=1000
P:win('finish')
return
end
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'beat')
SFX.play('reach')
end
end
return{
color=COLOR.red,
env={
noTele=true,
das=6,arr=1,
drop=0,
lock=death_lock[1],
wait=death_wait[1],
fall=death_fall[1],
dropPiece=score,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
noInitSZO=true,
bg='bg2',bgm='secret7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=500 and 3 or
S>=300 and 2 or
S>=100 and 1 or
S>=60 and 0
end,
color=COLOR.red,
env={
noTele=true,
das=6,arr=1,
drop=0,
lock=death_lock[1],
wait=death_wait[1],
fall=death_fall[1],
dropPiece=score,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
noInitSZO=true,
bg='bg2',bgm='secret7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=500 and 3 or
S>=300 and 2 or
S>=100 and 1 or
S>=60 and 0
end,
}

View File

@@ -2,84 +2,84 @@ local rush_lock={20,18,16,15,14}
local rush_wait={12,10, 9, 8, 7}
local rush_fall={18,16,14,13,12}
local function score(P)
local D=P.modeData
local D=P.modeData
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
BG.set(s==1 and'bg1'or s==2 and'bg2'or s==3 and'rainbow'or 'rainbow2')
E.lock=rush_lock[s]
E.wait=rush_wait[s]
E.fall=rush_fall[s]
E.das=10-s
if s==2 then
E.arr=2
elseif s==4 then
E.bone=true
end
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
BG.set(s==1 and'bg1'or s==2 and'bg2'or s==3 and'rainbow'or 'rainbow2')
E.lock=rush_lock[s]
E.wait=rush_wait[s]
E.fall=rush_fall[s]
E.das=10-s
if s==2 then
E.arr=2
elseif s==4 then
E.bone=true
end
if s==5 then
D.pt=500
P:win('finish')
else
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
end
SFX.play('reach')
end
if s==5 then
D.pt=500
P:win('finish')
else
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
end
SFX.play('reach')
end
end
return{
color=COLOR.red,
env={
noTele=true,
das=9,arr=3,
drop=0,
lock=rush_lock[1],
wait=rush_wait[1],
fall=rush_fall[1],
dropPiece=score,
noInitSZO=true,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
bg='bg1',bgm='secret8th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
if S==500 then
local T=P.stat.time
return
T<=170 and 5 or
T<=200 and 4 or
3
else
return
S>=460 and 3 or
S>=350 and 2 or
S>=200 and 1 or
S>=50 and 0
end
end,
color=COLOR.red,
env={
noTele=true,
das=9,arr=3,
drop=0,
lock=rush_lock[1],
wait=rush_wait[1],
fall=rush_fall[1],
dropPiece=score,
noInitSZO=true,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
bg='bg1',bgm='secret8th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
if S==500 then
local T=P.stat.time
return
T<=170 and 5 or
T<=200 and 4 or
3
else
return
S>=460 and 3 or
S>=350 and 2 or
S>=200 and 1 or
S>=50 and 0
end
end,
}

View File

@@ -1,93 +1,93 @@
local rush_lock={20,18,16,15,14, 14,13,12,11,11}
local rush_wait={12,11,11,10,10, 10,10, 9, 9, 9}
local rush_fall={18,16,14,13,12, 12,11,11,10,10}
local rush_lock={20,18,16,15,14, 14,13,12,11,11}
local rush_wait={12,11,11,10,10, 10,10, 9, 9, 9}
local rush_fall={18,16,14,13,12, 12,11,11,10,10}
local function score(P)
local D=P.modeData
local D=P.modeData
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
E.lock=rush_lock[s]
E.wait=rush_wait[s]
E.fall=rush_fall[s]
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
E.lock=rush_lock[s]
E.wait=rush_wait[s]
E.fall=rush_fall[s]
if s==2 then
E.das=8
BG.set('rainbow')
elseif s==4 then
BG.set('rainbow2')
elseif s==5 then
if P.stat.frame>260*60 then
D.pt=500
P:win('finish')
return
else
P.gameEnv.freshLimit=10
E.das=7
BG.set('glow')
BGM.play('secret8th remix')
end
elseif s==7 then
E.das=6
BG.set('lightning')
elseif s==9 then
E.bone=true
elseif s==10 then
D.pt=1000
P:win('finish')
return
end
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
SFX.play('reach')
end
if s==2 then
E.das=8
BG.set('rainbow')
elseif s==4 then
BG.set('rainbow2')
elseif s==5 then
if P.stat.frame>260*60 then
D.pt=500
P:win('finish')
return
else
P.gameEnv.freshLimit=10
E.das=7
BG.set('glow')
BGM.play('secret8th remix')
end
elseif s==7 then
E.das=6
BG.set('lightning')
elseif s==9 then
E.bone=true
elseif s==10 then
D.pt=1000
P:win('finish')
return
end
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
SFX.play('reach')
end
end
return{
color=COLOR.red,
env={
noTele=true,
das=10,arr=3,
drop=0,
lock=rush_lock[1],
wait=rush_wait[1],
fall=rush_fall[1],
dropPiece=score,
noInitSZO=true,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
bg='bg1',bgm='secret8th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=500 and 3 or
S>=300 and 2 or
S>=100 and 1 or
S>=60 and 0
end,
color=COLOR.red,
env={
noTele=true,
das=10,arr=3,
drop=0,
lock=rush_lock[1],
wait=rush_wait[1],
fall=rush_fall[1],
dropPiece=score,
noInitSZO=true,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
bg='bg1',bgm='secret8th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=500 and 3 or
S>=300 and 2 or
S>=100 and 1 or
S>=60 and 0
end,
}

View File

@@ -1,163 +1,163 @@
return{
color=COLOR.black,
env={
noTele=true,
das=5,arr=1,
drop=0,lock=15,
wait=10,fall=10,
nextCount=2,
sequence='his',
task=function(P)P.modeData.target=12 end,
dropPiece=function(P)
local p=P.modeData.pt+P.lastPiece.row
if p>=P.modeData.target then
local ENV=P.gameEnv
local T=P.modeData.target
--Stage 1: clear 3 techrash
if T==12 then--Stage 2: swap color of S/Z & J/L
P.waiting=30
P.curMission=false
color=COLOR.black,
env={
noTele=true,
das=5,arr=1,
drop=0,lock=15,
wait=10,fall=10,
nextCount=2,
sequence='his',
task=function(P)P.modeData.target=12 end,
dropPiece=function(P)
local p=P.modeData.pt+P.lastPiece.row
if p>=P.modeData.target then
local ENV=P.gameEnv
local T=P.modeData.target
--Stage 1: clear 3 techrash
if T==12 then--Stage 2: swap color of S/Z & J/L
P.waiting=30
P.curMission=false
ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1]
ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3]
ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1]
ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3]
ENV.lock=14
ENV.wait=7
ENV.fall=7
P:setNext(4)
ENV.lock=14
ENV.wait=7
ENV.fall=7
P:setNext(4)
P.modeData.target=26
SFX.play('reach')
elseif T==26 then--Stage 3: dig to bottom
if not P.holdQueue[1]then P.life=P.life+1 end--1 up if ban hold
P.waiting=45
ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1]
ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3]
P.modeData.target=26
SFX.play('reach')
elseif T==26 then--Stage 3: dig to bottom
if not P.holdQueue[1]then P.life=P.life+1 end--1 up if ban hold
P.waiting=45
ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1]
ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3]
for i=1,10 do
if P.field[i]then
for j=1,10 do
if P.field[i][j]>0 then
P.field[i][j]=17
P.visTime[i][j]=15
end
end
for _=1,5 do
P.field[i][P.holeRND:random(10)]=0
end
else
P.field[i]=FREEROW.get(0)
P.visTime[i]=FREEROW.get(30)
for j=1,10 do
if P.holeRND:random()>.9 then
P.field[i][j]=P.holeRND:random(16)
end
end
P.field[i][P.holeRND:random(10)]=0
end
P.field[i].garbage=true
end
P.garbageBeneath=10
for i=1,10 do
P:createClearingFX(i,1.5)
end
SYSFX.newShade(2.5,P.absFieldX,P.y+300*P.size,300*P.size,300*P.size)
for i=1,10 do
if P.field[i]then
for j=1,10 do
if P.field[i][j]>0 then
P.field[i][j]=17
P.visTime[i][j]=15
end
end
for _=1,5 do
P.field[i][P.holeRND:random(10)]=0
end
else
P.field[i]=FREEROW.get(0)
P.visTime[i]=FREEROW.get(30)
for j=1,10 do
if P.holeRND:random()>.9 then
P.field[i][j]=P.holeRND:random(16)
end
end
P.field[i][P.holeRND:random(10)]=0
end
P.field[i].garbage=true
end
P.garbageBeneath=10
for i=1,10 do
P:createClearingFX(i,1.5)
end
SYSFX.newShade(2.5,P.absFieldX,P.y+300*P.size,300*P.size,300*P.size)
ENV.lock=13
ENV.wait=6
ENV.fall=6
P:setNext(5)
ENV.lock=13
ENV.wait=6
ENV.fall=6
P:setNext(5)
P.modeData.target=42
SFX.play('reach')
elseif T==42 then--Stage 4: survive in high speed
if P.garbageBeneath==0 then
P.waiting=30
ENV.lock=11
P:setNext(6)
P:setHold(false)
ENV.bone=true
P.modeData.target=42
SFX.play('reach')
elseif T==42 then--Stage 4: survive in high speed
if P.garbageBeneath==0 then
P.waiting=30
ENV.lock=11
P:setNext(6)
P:setHold(false)
ENV.bone=true
P.modeData.target=62
else
p=41
end
elseif T==62 then--Stage 5: survive without easy-fresh rule
P.life=P.life+1
ENV.lock=13
ENV.wait=5
ENV.fall=5
P.modeData.target=62
else
p=41
end
elseif T==62 then--Stage 5: survive without easy-fresh rule
P.life=P.life+1
ENV.lock=13
ENV.wait=5
ENV.fall=5
ENV.easyFresh=false
ENV.easyFresh=false
P.modeData.target=126
SFX.play('reach')
elseif T==126 then--Stage 6: speed up
P.life=P.life+1
P.modeData.target=126
SFX.play('reach')
elseif T==126 then--Stage 6: speed up
P.life=P.life+1
ENV.lock=11
ENV.wait=4
ENV.fall=4
ENV.lock=11
ENV.wait=4
ENV.fall=4
P.modeData.target=162
elseif T==162 then--Stage 7: speed up+++
P.life=P.life+1
P.modeData.target=162
elseif T==162 then--Stage 7: speed up+++
P.life=P.life+1
ENV.lock=10
ENV.lock=10
P:setHold(true)
P:setInvisible(180)
P:setHold(true)
P:setInvisible(180)
P.modeData.target=226
SFX.play('reach')
elseif T==226 then--Stage 8: final invisible
P.life=P.life+1
P.modeData.target=226
SFX.play('reach')
elseif T==226 then--Stage 8: final invisible
P.life=P.life+1
ENV.bone=false
P:setInvisible(90)
ENV.bone=false
P:setInvisible(90)
P.modeData.target=259
SFX.play('reach')
elseif T==259 then--Stage 9: ending
P.life=P.life+1
for i=1,7 do ENV.skin[i]=P.holeRND:random(16)end
P.modeData.target=259
SFX.play('reach')
elseif T==259 then--Stage 9: ending
P.life=P.life+1
for i=1,7 do ENV.skin[i]=P.holeRND:random(16)end
P:setInvisible(40)
ENV.lock=15
P.curMission=1
ENV.mission={4,4,4,4,4,4,4,4}
ENV.missionKill=false
P:setInvisible(40)
ENV.lock=15
P.curMission=1
ENV.mission={4,4,4,4,4,4,4,4}
ENV.missionKill=false
P.modeData.target=260
p=260
SFX.play('blip_2')
else
p=260
end
end
P.modeData.pt=p
end,
mission={4,4,4,64},
missionKill=true,
freshLimit=12,
noInitSZO=true,
bg='blockspace',bgm='super7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.result=='win'and 260 or P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local p=P.modeData.pt
return
P.result=='win'and 5 or
p>=226 and 4 or
p>=162 and 3 or
p>=62 and 2 or
p>=42 and 1 or
p>=26 and 0
end,
P.modeData.target=260
p=260
SFX.play('blip_2')
else
p=260
end
end
P.modeData.pt=p
end,
mission={4,4,4,64},
missionKill=true,
freshLimit=12,
noInitSZO=true,
bg='blockspace',bgm='super7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.result=='win'and 260 or P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local p=P.modeData.pt
return
P.result=='win'and 5 or
p>=226 and 4 or
p>=162 and 3 or
p>=62 and 2 or
p>=42 and 1 or
p>=26 and 0
end,
}

View File

@@ -1,88 +1,88 @@
local death_lock={12,11,10,9,8, 7,7,7,6,6}
local death_wait={10, 9, 8,7,6, 6,5,4,4,3}
local death_fall={10, 9, 8,7,6, 5,5,4,3,3}
local death_lock={12,11,10,9,8, 7,7,7,6,6}
local death_wait={10, 9, 8,7,6, 6,5,4,4,3}
local death_fall={10, 9, 8,7,6, 5,5,4,3,3}
local function score(P)
local D=P.modeData
local D=P.modeData
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
SFX.play('reach')
E.lock=death_lock[s]
E.wait=death_wait[s]
E.fall=death_fall[s]
E.das=math.floor(6.9-s*.4)
if s==1 then
BG.set('rainbow')
elseif s==2 then
BG.set('rainbow2')
elseif s==3 then
BG.set('glow')
elseif s==5 then
if P.stat.frame>183*60 then
D.pt=500
P:win('finish')
return
else
P.gameEnv.freshLimit=10
BG.set('lightning')
BGM.play('secret7th remix')
end
elseif s==10 then
D.pt=1000
P:win('finish')
return
end
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
end
if D.pt%100==99 then
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
SFX.play('reach')
E.lock=death_lock[s]
E.wait=death_wait[s]
E.fall=death_fall[s]
E.das=math.floor(6.9-s*.4)
if s==1 then
BG.set('rainbow')
elseif s==2 then
BG.set('rainbow2')
elseif s==3 then
BG.set('glow')
elseif s==5 then
if P.stat.frame>183*60 then
D.pt=500
P:win('finish')
return
else
P.gameEnv.freshLimit=10
BG.set('lightning')
BGM.play('secret7th remix')
end
elseif s==10 then
D.pt=1000
P:win('finish')
return
end
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
end
end
return{
color=COLOR.red,
env={
noTele=true,
das=6,arr=1,
drop=0,
lock=death_lock[1],
wait=death_wait[1],
fall=death_fall[1],
dropPiece=score,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
noInitSZO=true,
bg='bg2',bgm='secret7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=500 and 3 or
S>=300 and 2 or
S>=100 and 1 or
S>=50 and 0
end,
color=COLOR.red,
env={
noTele=true,
das=6,arr=1,
drop=0,
lock=death_lock[1],
wait=death_wait[1],
fall=death_fall[1],
dropPiece=score,
task=function(P)
P.modeData.pt=0
P.modeData.target=100
end,
freshLimit=15,
noInitSZO=true,
bg='bg2',bgm='secret7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end,
score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[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)
local S=P.modeData.pt
return
S>=1000 and 5 or
S>=800 and 4 or
S>=500 and 3 or
S>=300 and 2 or
S>=100 and 1 or
S>=50 and 0
end,
}

View File

@@ -1,42 +1,42 @@
local yield=YIELD
local function marginTask(P)
local S=P.stat
while true do yield()if S.frame>90*60 then P.strength=1;P:setFrameColor(1)break end end
while true do yield()if S.frame>135*60 then P.strength=2;P:setFrameColor(2)break end end
while true do yield()if S.frame>180*60 then P.strength=3;P:setFrameColor(3)break end end
while true do yield()if S.frame>260*60 then P.strength=4;P:setFrameColor(4)break end end
local S=P.stat
while true do yield()if S.frame>90*60 then P.strength=1;P:setFrameColor(1)break end end
while true do yield()if S.frame>135*60 then P.strength=2;P:setFrameColor(2)break end end
while true do yield()if S.frame>180*60 then P.strength=3;P:setFrameColor(3)break end end
while true do yield()if S.frame>260*60 then P.strength=4;P:setFrameColor(4)break end end
end
return{
color=COLOR.white,
env={
bg={'bg1','bg2','blackhole','blockfall','blockrain','blockspace','cubes','fan','flink','glow','matrix','rainbow','rainbow2','tunnel'},
bgm={'battle','beat5th','cruelty','distortion','echo','far','final','here','hope','memory','moonbeam','push','rectification','secret7th remix','secret7th','secret8th remix','secret8th','shift','shining terminal','storm','super7th','there','truth','vapor','waterfall'},
},
load=function()
for k,v in next,NET.roomState.roomData do
GAME.modeEnv[k]=v
end
GAME.modeEnv.allowMod=false
GAME.modeEnv.task=marginTask
color=COLOR.white,
env={
bg={'bg1','bg2','blackhole','blockfall','blockrain','blockspace','cubes','fan','flink','glow','matrix','rainbow','rainbow2','tunnel'},
bgm={'battle','beat5th','cruelty','distortion','echo','far','final','here','hope','memory','moonbeam','push','rectification','secret7th remix','secret7th','secret8th remix','secret8th','shift','shining terminal','storm','super7th','there','truth','vapor','waterfall'},
},
load=function()
for k,v in next,NET.roomState.roomData do
GAME.modeEnv[k]=v
end
GAME.modeEnv.allowMod=false
GAME.modeEnv.task=marginTask
local L=TABLE.copy(netPLY.list)
local N=1
for i,p in next,L do
if p.uid==USER.uid then
if p.connected then
PLY.newPlayer(1)
PLAYERS[1].sid=netPLY.getSID(USER.uid)
N=2
end
table.remove(L,i)
break
end
end
for _,p in next,L do
if p.connected then
PLY.newRemotePlayer(N,false,p)
N=N+1
end
end
end,
local L=TABLE.copy(netPLY.list)
local N=1
for i,p in next,L do
if p.uid==USER.uid then
if p.connected then
PLY.newPlayer(1)
PLAYERS[1].sid=netPLY.getSID(USER.uid)
N=2
end
table.remove(L,i)
break
end
end
for _,p in next,L do
if p.connected then
PLY.newRemotePlayer(N,false,p)
N=N+1
end
end
end,
}

View File

@@ -1,35 +1,35 @@
return{
color=COLOR.magenta,
env={
drop=60,lock=120,
fall=10,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
ospin=false,
bg='rgb',bgm='truth',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,220)
PLY.draw.drawTargetLine(P,r)
color=COLOR.magenta,
env={
drop=60,lock=120,
fall=10,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
ospin=false,
bg='rgb',bgm='truth',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,220)
PLY.draw.drawTargetLine(P,r)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=24 and 5 or
L>=20 and 4 or
L>=16 and 3 or
L>=12 and 2 or
L>=8 and 1 or
L>=1 and 0
end,
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=24 and 5 or
L>=20 and 4 or
L>=16 and 3 or
L>=12 and 2 or
L>=8 and 1 or
L>=1 and 0
end,
}

View File

@@ -1,42 +1,42 @@
return{
color=COLOR.red,
env={
drop=20,lock=60,
fall=10,
dropPiece=function(P)
if P.lastPiece.pc then
P.gameEnv.heightLimit=4
if P.stat.pc%5==0 then
P.gameEnv.drop=math.max(P.gameEnv.drop-1,1)
end
else
P.gameEnv.heightLimit=P.gameEnv.heightLimit-P.lastPiece.row
end
if #P.field>P.gameEnv.heightLimit then
P:lose()
end
end,
freshLimit=8,
heightLimit=4,
ospin=false,
bg='rgb',bgm='moonbeam',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=50 and 5 or
L>=40 and 4 or
L>=30 and 3 or
L>=20 and 2 or
L>=10 and 1 or
L>=5 and 0
end,
color=COLOR.red,
env={
drop=20,lock=60,
fall=10,
dropPiece=function(P)
if P.lastPiece.pc then
P.gameEnv.heightLimit=4
if P.stat.pc%5==0 then
P.gameEnv.drop=math.max(P.gameEnv.drop-1,1)
end
else
P.gameEnv.heightLimit=P.gameEnv.heightLimit-P.lastPiece.row
end
if #P.field>P.gameEnv.heightLimit then
P:lose()
end
end,
freshLimit=8,
heightLimit=4,
ospin=false,
bg='rgb',bgm='moonbeam',
},
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=50 and 5 or
L>=40 and 4 or
L>=30 and 3 or
L>=20 and 2 or
L>=10 and 1 or
L>=5 and 0
end,
}

View File

@@ -1,35 +1,35 @@
return{
color=COLOR.red,
env={
drop=20,lock=60,
fall=20,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
ospin=false,
bg='rgb',bgm='moonbeam',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,220)
PLY.draw.drawTargetLine(P,r)
color=COLOR.red,
env={
drop=20,lock=60,
fall=20,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
ospin=false,
bg='rgb',bgm='moonbeam',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,220)
PLY.draw.drawTargetLine(P,r)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=24 and 5 or
L>=20 and 4 or
L>=16 and 3 or
L>=12 and 2 or
L>=8 and 1 or
L>=1 and 0
end,
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=24 and 5 or
L>=20 and 4 or
L>=16 and 3 or
L>=12 and 2 or
L>=8 and 1 or
L>=1 and 0
end,
}

View File

@@ -1,33 +1,33 @@
return{
color=COLOR.green,
env={
infHold=true,
drop=150,lock=1e99,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
bg='rgb',bgm='truth',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,220)
PLY.draw.drawTargetLine(P,r)
color=COLOR.green,
env={
infHold=true,
drop=150,lock=1e99,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
bg='rgb',bgm='truth',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,220)
PLY.draw.drawTargetLine(P,r)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=24 and 5 or
L>=20 and 4 or
L>=16 and 3 or
L>=12 and 2 or
L>=8 and 1 or
L>=1 and 0
end,
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=24 and 5 or
L>=20 and 4 or
L>=16 and 3 or
L>=12 and 2 or
L>=8 and 1 or
L>=1 and 0
end,
}

View File

@@ -5,73 +5,73 @@ local PCbase=require"parts.modes.PCbase"
local PClist=require"parts.modes.PClist"
local function task_PC(P)
P.control=false
for _=1,26 do YIELD()end
P.control=true
local base=PCbase[P.modeData.type]
P:pushLineList(base[P.holeRND:random(#base)],P.modeData.symmetry)
P.control=false
for _=1,26 do YIELD()end
P.control=true
local base=PCbase[P.modeData.type]
P:pushLineList(base[P.holeRND:random(#base)],P.modeData.symmetry)
end
local function check(P)
local f=P.field
if #f>0 then
if #f+P.stat.row%4>4 then
P:lose()
end
else
local type=P.stat.pc<10 and 4 or 5
local L=PClist[type][P.holeRND:random(#PClist[type])]
local symmetry=P.holeRND:random()>.5
P.modeData.type=type
P.modeData.symmetry=symmetry
P:pushNextList(L,symmetry)
P.modeData.counter=P.stat.piece==0 and 20 or 0
P:newTask(task_PC)
local f=P.field
if #f>0 then
if #f+P.stat.row%4>4 then
P:lose()
end
else
local type=P.stat.pc<10 and 4 or 5
local L=PClist[type][P.holeRND:random(#PClist[type])]
local symmetry=P.holeRND:random()>.5
P.modeData.type=type
P.modeData.symmetry=symmetry
P:pushNextList(L,symmetry)
P.modeData.counter=P.stat.piece==0 and 20 or 0
P:newTask(task_PC)
local s=P.stat.pc*.25
if math.floor(s)==s and s>0 then
P.gameEnv.drop=pc_drop[s]or 10
P.gameEnv.lock=pc_lock[s]or 25
P.gameEnv.fall=pc_fall[s]or 4
if s==10 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
local s=P.stat.pc*.25
if math.floor(s)==s and s>0 then
P.gameEnv.drop=pc_drop[s]or 10
P.gameEnv.lock=pc_lock[s]or 25
P.gameEnv.fall=pc_fall[s]or 4
if s==10 then
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
return{
color=COLOR.red,
env={
nextCount=5,
holdCount=0,
drop=60,lock=60,
fall=20,
sequence='none',
freshLimit=15,
dropPiece=check,
RS="SRS",
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
check(PLAYERS[1])
end,
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=50 and 5 or
L>=42 and 4 or
L>=26 and 3 or
L>=18 and 2 or
L>=10 and 1 or
L>=3 and 0
end,
color=COLOR.red,
env={
nextCount=5,
holdCount=0,
drop=60,lock=60,
fall=20,
sequence='none',
freshLimit=15,
dropPiece=check,
RS="SRS",
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
check(PLAYERS[1])
end,
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=50 and 5 or
L>=42 and 4 or
L>=26 and 3 or
L>=18 and 2 or
L>=10 and 1 or
L>=3 and 0
end,
}

View File

@@ -1,68 +1,68 @@
local PCbase=require"parts.modes.PCbase"
local PClist=require"parts.modes.PClist"
local PCtype={
1,1,1,1,2,
1,1,1,1,3,
1,1,1,2,
1,2,1,3,
1,2,3,
1,1,1,1,2,
1,1,1,1,3,
1,1,1,2,
1,2,1,3,
1,2,3,
}
local function task_PC(P)
P.control=false
for _=1,26 do YIELD()end
P.control=true
local base=PCbase[P.modeData.type]
P:pushLineList(base[P.holeRND:random(#base)],P.modeData.symmetry)
P.control=false
for _=1,26 do YIELD()end
P.control=true
local base=PCbase[P.modeData.type]
P:pushLineList(base[P.holeRND:random(#base)],P.modeData.symmetry)
end
local function check(P)
local r=P.field
if #r>0 then
if #r+P.stat.row%4>4 then
P:lose()
end
else
local type=PCtype[P.stat.pc+1]or 3
local L=PClist[type][P.holeRND:random(#PClist[type])]
local symmetry=P.holeRND:random()>.5
P.modeData.type=type
P.modeData.symmetry=symmetry
P:pushNextList(L,symmetry)
P.modeData.counter=P.stat.piece==0 and 20 or 0
P:newTask(task_PC)
end
local r=P.field
if #r>0 then
if #r+P.stat.row%4>4 then
P:lose()
end
else
local type=PCtype[P.stat.pc+1]or 3
local L=PClist[type][P.holeRND:random(#PClist[type])]
local symmetry=P.holeRND:random()>.5
P.modeData.type=type
P.modeData.symmetry=symmetry
P:pushNextList(L,symmetry)
P.modeData.counter=P.stat.piece==0 and 20 or 0
P:newTask(task_PC)
end
end
return{
color=COLOR.green,
env={
nextCount=4,
holdCount=0,
drop=120,lock=180,
fall=20,
sequence='none',
dropPiece=check,
RS="SRS",
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
check(PLAYERS[1])
end,
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=62 and 5 or
L>=42 and 4 or
L>=26 and 3 or
L>=18 and 2 or
L>=10 and 1 or
L>=2 and 0
end,
color=COLOR.green,
env={
nextCount=4,
holdCount=0,
drop=120,lock=180,
fall=20,
sequence='none',
dropPiece=check,
RS="SRS",
bg='rgb',bgm='oxygen',
},
load=function()
PLY.newPlayer(1)
check(PLAYERS[1])
end,
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,300)
mText(drawableText.pc,63,370)
end,
score=function(P)return{P.stat.pc,P.stat.time}end,
scoreDisp=function(D)return D[1].." PCs "..STRING.time(D[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)
local L=P.stat.pc
return
L>=62 and 5 or
L>=42 and 4 or
L>=26 and 3 or
L>=18 and 2 or
L>=10 and 1 or
L>=2 and 0
end,
}

View File

@@ -2,73 +2,73 @@ local gc=love.graphics
local dropSpeed={[0]=40,33,27,20,16,12,11,10,9,8,7,6,5,4,3,3,2,2,1,1}
return{
color=COLOR.green,
env={
noTele=true,
lock=1e99,
wait=20,fall=90,
mindas=7,minarr=1,minsdarr=1,
keyCancel={6},
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.modeData.bpm=40+2*P.modeData.target/10
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
P.gameEnv.fall=P.modeData.beatFrame
P.gameEnv.wait=math.max(P.gameEnv.wait-2,0)
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
task=function(P)
P.modeData.target=10
P.modeData.bpm=40
P.modeData.beatFrame=90
P.modeData.counter=90
while true do
YIELD()
P.modeData.counter=P.modeData.counter-1
if P.modeData.counter==0 then
P.modeData.counter=P.modeData.beatFrame
SFX.play('click',.3)
P:switchKey(6,true)
P:pressKey(6)
P:switchKey(6,false)
end
end
end,
bg='bg2',bgm='push',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
color=COLOR.green,
env={
noTele=true,
lock=1e99,
wait=20,fall=90,
mindas=7,minarr=1,minsdarr=1,
keyCancel={6},
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.modeData.bpm=40+2*P.modeData.target/10
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
P.gameEnv.fall=P.modeData.beatFrame
P.gameEnv.wait=math.max(P.gameEnv.wait-2,0)
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
task=function(P)
P.modeData.target=10
P.modeData.bpm=40
P.modeData.beatFrame=90
P.modeData.counter=90
while true do
YIELD()
P.modeData.counter=P.modeData.counter-1
if P.modeData.counter==0 then
P.modeData.counter=P.modeData.beatFrame
SFX.play('click',.3)
P:switchKey(6,true)
P:pressKey(6)
P:switchKey(6,false)
end
end
end,
bg='bg2',bgm='push',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
setFont(30)
mStr(P.modeData.bpm,63,178)
setFont(30)
mStr(P.modeData.bpm,63,178)
gc.setLineWidth(4)
gc.circle('line',63,200,30)
gc.setLineWidth(4)
gc.circle('line',63,200,30)
local beat=P.modeData.counter/P.modeData.beatFrame
gc.setColor(1,1,1,1-beat)
gc.setLineWidth(3)
gc.circle('line',63,200,30+45*beat)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=200 and 5 or
L>=170 and 4 or
L>=140 and 3 or
L>=100 and 2 or
L>=50 and 1 or
L>=20 and 0
end,
local beat=P.modeData.counter/P.modeData.beatFrame
gc.setColor(1,1,1,1-beat)
gc.setLineWidth(3)
gc.circle('line',63,200,30+45*beat)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=200 and 5 or
L>=170 and 4 or
L>=140 and 3 or
L>=100 and 2 or
L>=50 and 1 or
L>=20 and 0
end,
}

View File

@@ -2,73 +2,73 @@ local gc=love.graphics
local dropSpeed={[0]=60,50,40,30,24,18,14,10,8,6,5,4,3,2,1,1,.5,.5,.25,.25}
return{
color=COLOR.magenta,
env={
noTele=true,
lock=1e99,
wait=10,fall=60,
mindas=7,minarr=1,minsdarr=1,
keyCancel={6},
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.modeData.bpm=60+3*P.modeData.target/10
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
P.gameEnv.fall=P.modeData.beatFrame
P.gameEnv.wait=math.max(P.gameEnv.wait-1,0)
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
task=function(P)
P.modeData.target=10
P.modeData.bpm=60
P.modeData.beatFrame=60
P.modeData.counter=60
while true do
YIELD()
P.modeData.counter=P.modeData.counter-1
if P.modeData.counter==0 then
P.modeData.counter=P.modeData.beatFrame
SFX.play('click',.3)
P:switchKey(6,true)
P:pressKey(6)
P:switchKey(6,false)
end
end
end,
bg='bg2',bgm='secret8th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
color=COLOR.magenta,
env={
noTele=true,
lock=1e99,
wait=10,fall=60,
mindas=7,minarr=1,minsdarr=1,
keyCancel={6},
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.modeData.bpm=60+3*P.modeData.target/10
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
P.gameEnv.fall=P.modeData.beatFrame
P.gameEnv.wait=math.max(P.gameEnv.wait-1,0)
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
task=function(P)
P.modeData.target=10
P.modeData.bpm=60
P.modeData.beatFrame=60
P.modeData.counter=60
while true do
YIELD()
P.modeData.counter=P.modeData.counter-1
if P.modeData.counter==0 then
P.modeData.counter=P.modeData.beatFrame
SFX.play('click',.3)
P:switchKey(6,true)
P:pressKey(6)
P:switchKey(6,false)
end
end
end,
bg='bg2',bgm='secret8th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
setFont(30)
mStr(P.modeData.bpm,63,178)
setFont(30)
mStr(P.modeData.bpm,63,178)
gc.setLineWidth(4)
gc.circle('line',63,200,30)
gc.setLineWidth(4)
gc.circle('line',63,200,30)
local beat=P.modeData.counter/P.modeData.beatFrame
gc.setColor(1,1,1,1-beat)
gc.setLineWidth(3)
gc.circle('line',63,200,30+45*beat)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=200 and 5 or
L>=170 and 4 or
L>=140 and 3 or
L>=100 and 2 or
L>=50 and 1 or
L>=20 and 0
end,
local beat=P.modeData.counter/P.modeData.beatFrame
gc.setColor(1,1,1,1-beat)
gc.setLineWidth(3)
gc.circle('line',63,200,30+45*beat)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=200 and 5 or
L>=170 and 4 or
L>=140 and 3 or
L>=100 and 2 or
L>=50 and 1 or
L>=20 and 0
end,
}

View File

@@ -1,80 +1,80 @@
local gc=love.graphics
return{
color=COLOR.magenta,
env={
noTele=true,
lock=1e99,
drop=.5,
wait=5,fall=30,
das=6,minarr=1,minsdarr=1,
keyCancel={6},
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.modeData.bpm=120+2*P.modeData.target/10
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
P.gameEnv.fall=P.modeData.beatFrame
P.gameEnv.wait=math.max(P.gameEnv.wait-1,0)
if P.modeData.target==50 then
P.gameEnv.das=5
P.gameEnv.drop=.25
elseif P.modeData.target==100 then
P.gameEnv.das=4
P:set20G(true)
end
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
task=function(P)
P.modeData.target=10
P.modeData.bpm=120
P.modeData.beatFrame=30
P.modeData.counter=30
while true do
YIELD()
P.modeData.counter=P.modeData.counter-1
if P.modeData.counter==0 then
P.modeData.counter=P.modeData.beatFrame
SFX.play('click',.3)
P:switchKey(6,true)
P:pressKey(6)
P:switchKey(6,false)
end
end
end,
bg='bg2',bgm='secret7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
color=COLOR.magenta,
env={
noTele=true,
lock=1e99,
drop=.5,
wait=5,fall=30,
das=6,minarr=1,minsdarr=1,
keyCancel={6},
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
P.modeData.bpm=120+2*P.modeData.target/10
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
P.gameEnv.fall=P.modeData.beatFrame
P.gameEnv.wait=math.max(P.gameEnv.wait-1,0)
if P.modeData.target==50 then
P.gameEnv.das=5
P.gameEnv.drop=.25
elseif P.modeData.target==100 then
P.gameEnv.das=4
P:set20G(true)
end
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end,
task=function(P)
P.modeData.target=10
P.modeData.bpm=120
P.modeData.beatFrame=30
P.modeData.counter=30
while true do
YIELD()
P.modeData.counter=P.modeData.counter-1
if P.modeData.counter==0 then
P.modeData.counter=P.modeData.beatFrame
SFX.play('click',.3)
P:switchKey(6,true)
P:pressKey(6)
P:switchKey(6,false)
end
end
end,
bg='bg2',bgm='secret7th',
},
slowMark=true,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
setFont(30)
mStr(P.modeData.bpm,63,178)
setFont(30)
mStr(P.modeData.bpm,63,178)
gc.setLineWidth(4)
gc.circle('line',63,200,30)
gc.setLineWidth(4)
gc.circle('line',63,200,30)
local beat=P.modeData.counter/P.modeData.beatFrame
gc.setColor(1,1,1,1-beat)
gc.setLineWidth(3)
gc.circle('line',63,200,30+45*beat)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=200 and 5 or
L>=170 and 4 or
L>=140 and 3 or
L>=100 and 2 or
L>=50 and 1 or
L>=20 and 0
end,
local beat=P.modeData.counter/P.modeData.beatFrame
gc.setColor(1,1,1,1-beat)
gc.setLineWidth(3)
gc.circle('line',63,200,30+45*beat)
end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[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)
local L=P.stat.row
return
L>=200 and 5 or
L>=170 and 4 or
L>=140 and 3 or
L>=100 and 2 or
L>=50 and 1 or
L>=20 and 0
end,
}

View File

@@ -1,42 +1,42 @@
local function update_round(P)
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
end
return{
color=COLOR.cyan,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=1,hold=true,node=8000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
color=COLOR.cyan,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=1,hold=true,node=8000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
}

View File

@@ -1,42 +1,42 @@
local function update_round(P)
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
end
return{
color=COLOR.magenta,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=2,hold=true,node=16000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
color=COLOR.magenta,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=2,hold=true,node=16000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
}

View File

@@ -1,42 +1,42 @@
local function update_round(P)
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
end
return{
color=COLOR.red,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=3,hold=true,node=26000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
color=COLOR.red,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=3,hold=true,node=26000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
}

View File

@@ -1,42 +1,42 @@
local function update_round(P)
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
end
return{
color=COLOR.green,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=1,hold=true,node=13000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
color=COLOR.green,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=1,hold=true,node=13000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
}

View File

@@ -1,42 +1,42 @@
local function update_round(P)
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false
local ID=P.id
repeat
ID=ID+1
if not PLAYERS[ID]then ID=1 end
until PLAYERS[ID].alive or ID==P.id
PLAYERS[ID].control=true
end
end
return{
color=COLOR.lYellow,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=4,hold=true,node=40000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
color=COLOR.lYellow,
env={
life=1,
drop=300,lock=300,
infHold=true,
dropPiece=update_round,
pushSpeed=15,
garbageSpeed=1e99,
bg='rainbow',bgm='push',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=8,next=4,hold=true,node=40000})
end,
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[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)
if P.result=='win'then
local T=P.stat.piece
return
T<=7*8 and 5 or
T<=7*10 and 4 or
T<=7*15 and 3 or
T<=7*26 and 2 or
1
end
end,
}

View File

@@ -1,28 +1,28 @@
return{
color=COLOR.cyan,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=3,hold=true})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=50 and 5 or
T<=80 and 4 or
T<=120 and 3 or
T<=180 and 2 or
1
end
end,
color=COLOR.cyan,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=3,hold=true})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=50 and 5 or
T<=80 and 4 or
T<=120 and 3 or
T<=180 and 2 or
1
end
end,
}

View File

@@ -1,28 +1,28 @@
return{
color=COLOR.magenta,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=6,hold=true})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=50 and 5 or
T<=80 and 4 or
T<=120 and 3 or
T<=180 and 2 or
1
end
end,
color=COLOR.magenta,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=6,hold=true})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=50 and 5 or
T<=80 and 4 or
T<=120 and 3 or
T<=180 and 2 or
1
end
end,
}

View File

@@ -1,28 +1,28 @@
return{
color=COLOR.red,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=6,next=2,hold=true,node=30000})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=60 and 5 or
T<=90 and 4 or
T<=130 and 3 or
T<=200 and 2 or
1
end
end,
color=COLOR.red,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=6,next=2,hold=true,node=30000})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=60 and 5 or
T<=90 and 4 or
T<=130 and 3 or
T<=200 and 2 or
1
end
end,
}

View File

@@ -1,28 +1,28 @@
return{
color=COLOR.green,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=5,hold=true})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=50 and 5 or
T<=80 and 4 or
T<=120 and 3 or
T<=180 and 2 or
1
end
end,
color=COLOR.green,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='9S',speedLV=5,hold=true})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=50 and 5 or
T<=80 and 4 or
T<=120 and 3 or
T<=180 and 2 or
1
end
end,
}

View File

@@ -1,28 +1,28 @@
return{
color=COLOR.lYellow,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=7,next=3,hold=true,node=50000})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=80 and 5 or
T<=110 and 4 or
T<=150 and 3 or
T<=240 and 2 or
1
end
end,
color=COLOR.lYellow,
env={
life=2,
drop=60,lock=60,
freshLimit=15,
bufferLimit=20,
bg='bg2',bgm='battle',
},
load=function()
PLY.newPlayer(1)
PLY.newAIPlayer(2,BOT.template{type='CC',speedLV=7,next=3,hold=true,node=50000})
end,
score=function(P)return{P.stat.time}end,
scoreDisp=function(D)return STRING.time(D[1])end,
comp=function(a,b)return a[1]<b[1]end,
getRank=function(P)
if P.result=='win'then
local T=P.stat.time
return
T<=80 and 5 or
T<=110 and 4 or
T<=150 and 3 or
T<=240 and 2 or
1
end
end,
}

View File

@@ -1,30 +1,30 @@
return{
color=COLOR.green,
env={
infHold=true,
drop=1e99,lock=1e99,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='new era',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
if P.stat.atk<40 then return end
local T=P.stat.time
return
T<40 and 5 or
T<50 and 4 or
T<70 and 3 or
T<100 and 2 or
T<150 and 1 or
0
end,
color=COLOR.green,
env={
infHold=true,
drop=1e99,lock=1e99,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='new era',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
if P.stat.atk<40 then return end
local T=P.stat.time
return
T<40 and 5 or
T<50 and 4 or
T<70 and 3 or
T<100 and 2 or
T<150 and 1 or
0
end,
}

View File

@@ -1,31 +1,31 @@
return{
color=COLOR.green,
env={
drop=60,lock=180,
noTele=true,
keyCancel={1,2},
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
getRank=function(P)
local L=P.stat.row
if L<40 then
return
L>25 and 2 or
L>10 and 1 or
L>5 and 0
end
local T=P.stat.time
return
T<=260 and 5 or
T<=420 and 4 or
3
end,
color=COLOR.green,
env={
drop=60,lock=180,
noTele=true,
keyCancel={1,2},
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
getRank=function(P)
local L=P.stat.row
if L<40 then
return
L>25 and 2 or
L>10 and 1 or
L>5 and 0
end
local T=P.stat.time
return
T<=260 and 5 or
T<=420 and 4 or
3
end,
}

View File

@@ -1,30 +1,30 @@
return{
color=COLOR.green,
env={
drop=60,lock=180,
keyCancel={3,4,5},
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
getRank=function(P)
local L=P.stat.row
if L<40 then
return
L>25 and 2 or
L>10 and 1 or
L>2 and 0
end
local T=P.stat.time
return
T<=60 and 5 or
T<=100 and 4 or
3
end,
color=COLOR.green,
env={
drop=60,lock=180,
keyCancel={3,4,5},
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
getRank=function(P)
local L=P.stat.row
if L<40 then
return
L>25 and 2 or
L>10 and 1 or
L>2 and 0
end
local T=P.stat.time
return
T<=60 and 5 or
T<=100 and 4 or
3
end,
}

View File

@@ -1,31 +1,31 @@
return{
color=COLOR.green,
env={
drop=60,lock=60,
nextCount=0,holdCount=0,
sequence='rnd',
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=60 and 5 or
T<=70 and 4 or
T<=90 and 3 or
T<=110 and 2 or
T<=140 and 1 or
0
end,
color=COLOR.green,
env={
drop=60,lock=60,
nextCount=0,holdCount=0,
sequence='rnd',
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=60 and 5 or
T<=70 and 4 or
T<=90 and 3 or
T<=110 and 2 or
T<=140 and 1 or
0
end,
}

View File

@@ -1,30 +1,30 @@
return{
color=COLOR.green,
env={
drop=60,lock=60,
sequence='bag',seqData={8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='beat5th',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=76 and 5 or
T<=90 and 4 or
T<=150 and 3 or
T<=260 and 2 or
T<=500 and 1 or
0
end,
color=COLOR.green,
env={
drop=60,lock=60,
sequence='bag',seqData={8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='beat5th',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=76 and 5 or
T<=90 and 4 or
T<=150 and 3 or
T<=260 and 2 or
T<=500 and 1 or
0
end,
}

View File

@@ -1,28 +1,28 @@
return{
color=COLOR.green,
env={
drop=0,lock=120,
nextCount=3,
das=0,arr=0,
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
getRank=function(P)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=30 and 5 or
T<=45 and 4 or
T<=60 and 3 or
T<=90 and 2 or
T<=150 and 1 or
0
end,
color=COLOR.green,
env={
drop=0,lock=120,
nextCount=3,
das=0,arr=0,
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='aura',bgm='waterfall',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
getRank=function(P)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=30 and 5 or
T<=45 and 4 or
T<=60 and 3 or
T<=90 and 2 or
T<=150 and 1 or
0
end,
}

View File

@@ -1,29 +1,29 @@
return{
color=COLOR.lGray,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=1000 then P:win('finish')end end,
bg='rainbow',bgm='push',
},
mesDisp=function(P)
setFont(55)
local r=1000-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<1000 then return end
local T=P.stat.time
return
T<=750 and 5 or
T<=900 and 4 or
T<=1260 and 3 or
T<=1620 and 2 or
T<=2000 and 1 or
0
end,
color=COLOR.lGray,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=1000 then P:win('finish')end end,
bg='rainbow',bgm='push',
},
mesDisp=function(P)
setFont(55)
local r=1000-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<1000 then return end
local T=P.stat.time
return
T<=750 and 5 or
T<=900 and 4 or
T<=1260 and 3 or
T<=1620 and 2 or
T<=2000 and 1 or
0
end,
}

View File

@@ -1,29 +1,29 @@
return{
color=COLOR.red,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<100 then return end
local T=P.stat.time
return
T<=70 and 5 or
T<=90 and 4 or
T<=126 and 3 or
T<=162 and 2 or
T<=226 and 1 or
0
end,
color=COLOR.red,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=100-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<100 then return end
local T=P.stat.time
return
T<=70 and 5 or
T<=90 and 4 or
T<=126 and 3 or
T<=162 and 2 or
T<=226 and 1 or
0
end,
}

View File

@@ -1,29 +1,29 @@
return{
color=COLOR.cyan,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=10 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=10-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<10 then return end
local T=P.stat.time
return
T<=7 and 5 or
T<=10 and 4 or
T<=25 and 3 or
T<=40 and 2 or
T<=62 and 1 or
0
end,
color=COLOR.cyan,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=10 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=10-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<10 then return end
local T=P.stat.time
return
T<=7 and 5 or
T<=10 and 4 or
T<=25 and 3 or
T<=40 and 2 or
T<=62 and 1 or
0
end,
}

View File

@@ -1,29 +1,29 @@
return{
color=COLOR.lBlue,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=20 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=20-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<20 then return end
local T=P.stat.time
return
T<=13 and 5 or
T<=18 and 4 or
T<=32.6 and 3 or
T<=62.6 and 2 or
T<=126 and 1 or
0
end,
color=COLOR.lBlue,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=20 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=20-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<20 then return end
local T=P.stat.time
return
T<=13 and 5 or
T<=18 and 4 or
T<=32.6 and 3 or
T<=62.6 and 2 or
T<=126 and 1 or
0
end,
}

View File

@@ -1,29 +1,29 @@
return{
color=COLOR.dRed,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=400 then P:win('finish')end end,
bg='rainbow',bgm='push',
},
mesDisp=function(P)
setFont(55)
local r=400-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<400 then return end
local T=P.stat.time
return
T<=300 and 5 or
T<=380 and 4 or
T<=500 and 3 or
T<=626 and 2 or
T<=800 and 1 or
0
end,
color=COLOR.dRed,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=400 then P:win('finish')end end,
bg='rainbow',bgm='push',
},
mesDisp=function(P)
setFont(55)
local r=400-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<400 then return end
local T=P.stat.time
return
T<=300 and 5 or
T<=380 and 4 or
T<=500 and 3 or
T<=626 and 2 or
T<=800 and 1 or
0
end,
}

View File

@@ -1,29 +1,29 @@
return{
color=COLOR.green,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=26 and 5 or
T<=36 and 4 or
T<=52.6 and 3 or
T<=92.9 and 2 or
T<=183 and 1 or
0
end,
color=COLOR.green,
env={
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='bg2',bgm='race',
},
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,265)
PLY.draw.drawTargetLine(P,r)
end,
score=function(P)return{P.stat.time,P.stat.piece}end,
scoreDisp=function(D)return STRING.time(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)
if P.stat.row<40 then return end
local T=P.stat.time
return
T<=26 and 5 or
T<=36 and 4 or
T<=52.6 and 3 or
T<=92.9 and 2 or
T<=183 and 1 or
0
end,
}

View File

@@ -1,36 +1,36 @@
local function getHoleCount(P)
local hole=0
for x=1,10 do
for y=1,100 do
if not P:solid(x,y)then
hole=hole+1
end
end
end
return hole
local hole=0
for x=1,10 do
for y=1,100 do
if not P:solid(x,y)then
hole=hole+1
end
end
end
return hole
end
return{
color=COLOR.cyan,
env={
drop=60,lock=60,
fieldH=100,
highCam=true,
fillClear=false,
seqData={1,2,3,4,5,6,7},
bg='blockrain',bgm='there',
},
mesDisp=function(P)PLY.draw.drawTargetLine(P,100)end,
score=function(P)return{getHoleCount(P),P.stat.time}end,
scoreDisp=function(D)return D[1].." Holes".." "..STRING.time(D[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)
local H=getHoleCount(P)
return
H==0 and 5 or
H<=1 and 4 or
H<=2 and 3 or
H<=5 and 2 or
H<=10 and 1 or
H<=26 and 0
end,
color=COLOR.cyan,
env={
drop=60,lock=60,
fieldH=100,
highCam=true,
fillClear=false,
seqData={1,2,3,4,5,6,7},
bg='blockrain',bgm='there',
},
mesDisp=function(P)PLY.draw.drawTargetLine(P,100)end,
score=function(P)return{getHoleCount(P),P.stat.time}end,
scoreDisp=function(D)return D[1].." Holes".." "..STRING.time(D[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)
local H=getHoleCount(P)
return
H==0 and 5 or
H<=1 and 4 or
H<=2 and 3 or
H<=5 and 2 or
H<=10 and 1 or
H<=26 and 0
end,
}

View File

@@ -1,36 +1,36 @@
local function getHoleCount(P)
local hole=0
for x=1,10 do
for y=1,98 do
if not P:solid(x,y)then
hole=hole+1
end
end
end
return hole
local hole=0
for x=1,10 do
for y=1,98 do
if not P:solid(x,y)then
hole=hole+1
end
end
end
return hole
end
return{
color=COLOR.magenta,
env={
drop=60,lock=60,
fieldH=100,
highCam=true,
fillClear=false,
seqData={1,2,3,4,5,6,7,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},
bg='blockrain',bgm='there',
},
mesDisp=function(P)PLY.draw.drawTargetLine(P,98)end,
score=function(P)return{getHoleCount(P),P.stat.time}end,
scoreDisp=function(D)return D[1].." Holes".." "..STRING.time(D[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)
local H=getHoleCount(P)
return
H==0 and 5 or
H<=2 and 4 or
H<=4 and 3 or
H<=10 and 2 or
H<=26 and 1 or
H<=62 and 0
end,
color=COLOR.magenta,
env={
drop=60,lock=60,
fieldH=100,
highCam=true,
fillClear=false,
seqData={1,2,3,4,5,6,7,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},
bg='blockrain',bgm='there',
},
mesDisp=function(P)PLY.draw.drawTargetLine(P,98)end,
score=function(P)return{getHoleCount(P),P.stat.time}end,
scoreDisp=function(D)return D[1].." Holes".." "..STRING.time(D[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)
local H=getHoleCount(P)
return
H==0 and 5 or
H<=2 and 4 or
H<=4 and 3 or
H<=10 and 2 or
H<=26 and 1 or
H<=62 and 0
end,
}

View File

@@ -1,36 +1,36 @@
local function getHoleCount(P)
local hole=0
for x=1,10 do
for y=1,97 do
if not P:solid(x,y)then
hole=hole+1
end
end
end
return hole
local hole=0
for x=1,10 do
for y=1,97 do
if not P:solid(x,y)then
hole=hole+1
end
end
end
return hole
end
return{
color=COLOR.yellow,
env={
drop=60,lock=60,
fieldH=100,
highCam=true,
fillClear=false,
seqData={8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
bg='blockrain',bgm='there',
},
mesDisp=function(P)PLY.draw.drawTargetLine(P,97)end,
score=function(P)return{getHoleCount(P),P.stat.time}end,
scoreDisp=function(D)return D[1].." Holes".." "..STRING.time(D[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)
local H=getHoleCount(P)
return
H<=2 and 5 or
H<=5 and 4 or
H<=10 and 3 or
H<=26 and 2 or
H<=62 and 1 or
H<=126 and 0
end,
color=COLOR.yellow,
env={
drop=60,lock=60,
fieldH=100,
highCam=true,
fillClear=false,
seqData={8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
bg='blockrain',bgm='there',
},
mesDisp=function(P)PLY.draw.drawTargetLine(P,97)end,
score=function(P)return{getHoleCount(P),P.stat.time}end,
scoreDisp=function(D)return D[1].." Holes".." "..STRING.time(D[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)
local H=getHoleCount(P)
return
H<=2 and 5 or
H<=5 and 4 or
H<=10 and 3 or
H<=26 and 2 or
H<=62 and 1 or
H<=126 and 0
end,
}

View File

@@ -1,43 +1,43 @@
return{
color=COLOR.cyan,
env={
drop=30,lock=45,
freshLimit=10,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(60,150-2*D.wave)and P.atkBufferSum<4 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1})
P.atkBufferSum=P.atkBufferSum+1
P.stat.recv=P.stat.recv+1
if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='glow',bgm='new era',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=100 and 5 or
W>=60 and 4 or
W>=45 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
color=COLOR.cyan,
env={
drop=30,lock=45,
freshLimit=10,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(60,150-2*D.wave)and P.atkBufferSum<4 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1})
P.atkBufferSum=P.atkBufferSum+1
P.stat.recv=P.stat.recv+1
if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='glow',bgm='new era',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=100 and 5 or
W>=60 and 4 or
W>=45 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
}

View File

@@ -1,50 +1,50 @@
return{
color=COLOR.magenta,
env={
drop=30,lock=60,
freshLimit=5,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(60,180-2*D.wave)and P.atkBufferSum<15 then
local s
if D.wave%3<2 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1})
s=1
else
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=3,countdown=60,cd0=60,time=0,sent=false,lv=2})
s=3
end
P.atkBufferSum=P.atkBufferSum+s
P.stat.recv=P.stat.recv+s
if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='glow',bgm='new era',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=90 and 5 or
W>=60 and 4 or
W>=45 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
color=COLOR.magenta,
env={
drop=30,lock=60,
freshLimit=5,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(60,180-2*D.wave)and P.atkBufferSum<15 then
local s
if D.wave%3<2 then
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1})
s=1
else
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=3,countdown=60,cd0=60,time=0,sent=false,lv=2})
s=3
end
P.atkBufferSum=P.atkBufferSum+s
P.stat.recv=P.stat.recv+s
if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='glow',bgm='new era',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=90 and 5 or
W>=60 and 4 or
W>=45 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
}

View File

@@ -1,44 +1,44 @@
return{
color=COLOR.red,
env={
drop=30,lock=60,
freshLimit=5,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(60,150-D.wave)and P.atkBufferSum<20 then
local t=math.max(60,90-D.wave)
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
P.atkBufferSum=P.atkBufferSum+4
P.stat.recv=P.stat.recv+4
if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='glow',bgm='here',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=110 and 5 or
W>=80 and 4 or
W>=55 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
color=COLOR.red,
env={
drop=30,lock=60,
freshLimit=5,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(60,150-D.wave)and P.atkBufferSum<20 then
local t=math.max(60,90-D.wave)
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
P.atkBufferSum=P.atkBufferSum+4
P.stat.recv=P.stat.recv+4
if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='glow',bgm='here',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=110 and 5 or
W>=80 and 4 or
W>=55 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
}

View File

@@ -1,49 +1,49 @@
return{
color=COLOR.green,
env={
drop=30,lock=60,
freshLimit=10,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(90,180-2*D.wave)and P.atkBufferSum<8 then
local d=D.wave+1
table.insert(P.atkBuffer,
d%4==0 and{line=generateLine(P.holeRND:random(10)),amount=1,countdown=60,cd0=60,time=0,sent=false,lv=1}or
d%4==1 and{line=generateLine(P.holeRND:random(10)),amount=2,countdown=70,cd0=70,time=0,sent=false,lv=1}or
d%4==2 and{line=generateLine(P.holeRND:random(10)),amount=3,countdown=80,cd0=80,time=0,sent=false,lv=2}or
d%4==3 and{line=generateLine(P.holeRND:random(10)),amount=4,countdown=90,cd0=90,time=0,sent=false,lv=3}
)
P.atkBufferSum=P.atkBufferSum+d%4+1
P.stat.recv=P.stat.recv+d%4+1
if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=d
end
end
end
end,
bg='glow',bgm='new era',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=80 and 5 or
W>=55 and 4 or
W>=45 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
color=COLOR.green,
env={
drop=30,lock=60,
freshLimit=10,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(90,180-2*D.wave)and P.atkBufferSum<8 then
local d=D.wave+1
table.insert(P.atkBuffer,
d%4==0 and{line=generateLine(P.holeRND:random(10)),amount=1,countdown=60,cd0=60,time=0,sent=false,lv=1}or
d%4==1 and{line=generateLine(P.holeRND:random(10)),amount=2,countdown=70,cd0=70,time=0,sent=false,lv=1}or
d%4==2 and{line=generateLine(P.holeRND:random(10)),amount=3,countdown=80,cd0=80,time=0,sent=false,lv=2}or
d%4==3 and{line=generateLine(P.holeRND:random(10)),amount=4,countdown=90,cd0=90,time=0,sent=false,lv=3}
)
P.atkBufferSum=P.atkBufferSum+d%4+1
P.stat.recv=P.stat.recv+d%4+1
if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=d
end
end
end
end,
bg='glow',bgm='new era',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=80 and 5 or
W>=55 and 4 or
W>=45 and 3 or
W>=30 and 2 or
W>=15 and 1 or
W>=5 and 0
end,
}

View File

@@ -1,49 +1,49 @@
return{
color=COLOR.lYellow,
env={
drop=5,lock=60,
fall=10,
freshLimit=15,
pushSpeed=2,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(300,600-10*D.wave)and P.atkBufferSum<20 then
local t=math.max(300,480-12*D.wave)
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=2})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=6,countdown=1.2*t,cd0=1.2*t,time=0,sent=false,lv=4})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=6,countdown=1.5*t,cd0=1.5*t,time=0,sent=false,lv=5})
P.atkBufferSum=P.atkBufferSum+20
P.stat.recv=P.stat.recv+20
if D.wave==31 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='welcome',bgm='here',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=35 and 5 or
W>=26 and 4 or
W>=20 and 3 or
W>=10 and 2 or
W>=5 and 1 or
W>=1 and 0
end,
color=COLOR.lYellow,
env={
drop=5,lock=60,
fall=10,
freshLimit=15,
pushSpeed=2,
task=function(P)
while true do
YIELD()
if P.control then
local D=P.modeData
D.timer=D.timer+1
if D.timer>=math.max(300,600-10*D.wave)and P.atkBufferSum<20 then
local t=math.max(300,480-12*D.wave)
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=2})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=6,countdown=1.2*t,cd0=1.2*t,time=0,sent=false,lv=4})
table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=6,countdown=1.5*t,cd0=1.5*t,time=0,sent=false,lv=5})
P.atkBufferSum=P.atkBufferSum+20
P.stat.recv=P.stat.recv+20
if D.wave==31 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0
D.wave=D.wave+1
end
end
end
end,
bg='welcome',bgm='here',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.wave,63,310)
mText(drawableText.wave,63,375)
end,
score=function(P)return{P.modeData.wave,P.stat.time}end,
scoreDisp=function(D)return D[1].." Waves "..STRING.time(D[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)
local W=P.modeData.wave
return
W>=35 and 5 or
W>=26 and 4 or
W>=20 and 3 or
W>=10 and 2 or
W>=5 and 1 or
W>=1 and 0
end,
}

View File

@@ -1,37 +1,37 @@
return{
color=COLOR.lYellow,
env={
arr=0,
drop=1e99,lock=60,
freshLimit=15,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
fineKill=true,
bg='flink',bgm='infinite',
},
slowMark=true,
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.lYellow,
env={
arr=0,
drop=1e99,lock=60,
freshLimit=15,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
fineKill=true,
bg='flink',bgm='infinite',
},
slowMark=true,
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,50 +1,50 @@
local function tech_check_hard(P)
local C=P.lastPiece
if C.row>0 then
if not C.special then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
local C=P.lastPiece
if C.row>0 then
if not C.special then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
end
return{
color=COLOR.gray,
env={
arr=0,
drop=1e99,lock=60,
freshLimit=15,
fineKill=true,
dropPiece=tech_check_hard,
bg='flink',bgm='infinite',
},
slowMark=true,
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.gray,
env={
arr=0,
drop=1e99,lock=60,
freshLimit=15,
fineKill=true,
dropPiece=tech_check_hard,
bg='flink',bgm='infinite',
},
slowMark=true,
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,35 +1,35 @@
return{
color=COLOR.magenta,
env={
drop=20,lock=60,
freshLimit=15,
b2bKill=true,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='down',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.magenta,
env={
drop=20,lock=60,
freshLimit=15,
b2bKill=true,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='down',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,47 +1,47 @@
local function tech_check_hard(P)
local C=P.lastPiece
if C.row>0 then
if not(C.spin or C.pc)then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
local C=P.lastPiece
if C.row>0 then
if not(C.spin or C.pc)then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
end
return{
color=COLOR.dMagenta,
env={
drop=30,lock=60,
freshLimit=15,
dropPiece=tech_check_hard,
bg='matrix',bgm='down',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.dMagenta,
env={
drop=30,lock=60,
freshLimit=15,
dropPiece=tech_check_hard,
bg='matrix',bgm='down',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,35 +1,35 @@
return{
color=COLOR.red,
env={
drop=0,lock=60,
freshLimit=15,
b2bKill=true,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='warped',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.red,
env={
drop=0,lock=60,
freshLimit=15,
b2bKill=true,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='warped',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,47 +1,47 @@
local function tech_check_hard(P)
local C=P.lastPiece
if C.row>0 then
if not(C.spin or C.pc)then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
local C=P.lastPiece
if C.row>0 then
if not(C.spin or C.pc)then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
end
return{
color=COLOR.dRed,
env={
drop=0,lock=60,
freshLimit=15,
dropPiece=tech_check_hard,
bg='matrix',bgm='warped',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.dRed,
env={
drop=0,lock=60,
freshLimit=15,
dropPiece=tech_check_hard,
bg='matrix',bgm='warped',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,35 +1,35 @@
return{
color=COLOR.green,
env={
infHold=true,
drop=1e99,lock=1e99,
b2bKill=true,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='new era',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.green,
env={
infHold=true,
drop=1e99,lock=1e99,
b2bKill=true,
dropPiece=function(P)if P.stat.atk>=100 then P:win('finish')end end,
bg='matrix',bgm='new era',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,47 +1,47 @@
local function tech_check_hard(P)
local C=P.lastPiece
if C.row>0 then
if not(C.spin or C.pc)then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
local C=P.lastPiece
if C.row>0 then
if not(C.spin or C.pc)then
P:lose()
return
end
end
if P.stat.atk>=100 then
P:win('finish')
end
end
return{
color=COLOR.dGreen,
env={
infHold=true,
drop=1e99,lock=1e99,
dropPiece=tech_check_hard,
bg='matrix',bgm='new era',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
color=COLOR.dGreen,
env={
infHold=true,
drop=1e99,lock=1e99,
dropPiece=tech_check_hard,
bg='matrix',bgm='new era',
},
mesDisp=function(P)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,190)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
mText(drawableText.atk,63,243)
mText(drawableText.eff,63,363)
end,
score=function(P)return{P.stat.atk<=100 and math.floor(P.stat.atk)or 100,P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[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)
local A=P.stat.atk
if A>=100 then
local T=P.stat.time
return
T<50 and 5 or
T<70 and 4 or
T<100 and 3 or
2
else
return
A>=60 and 1 or
A>=30 and 0
end
end,
}

View File

@@ -1,71 +1,71 @@
local function selectTarget(P)
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
end
return{
color=COLOR.cyan,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='sugar fairy',
},
load=function()
ROYALEDATA.powerUp={2,5,10,20}
ROYALEDATA.stage={30,20,15,10,5}
PLY.newPlayer(1)
local L={}for i=1,49 do L[i]=true end
local t=2
while t>0 do
local r=math.random(2,49)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,4 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,6),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(2,4),next=2,hold=true,node=20000},true)
end
n=n+1
end end
for _=9,12 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,5),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,5),next=2,hold=true,node=20000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R<=3 and 4 or
R<=5 and 3 or
R<=10 and 2 or
R<=15 and 1 or
R<=45 and 0
end,
color=COLOR.cyan,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='sugar fairy',
},
load=function()
ROYALEDATA.powerUp={2,5,10,20}
ROYALEDATA.stage={30,20,15,10,5}
PLY.newPlayer(1)
local L={}for i=1,49 do L[i]=true end
local t=2
while t>0 do
local r=math.random(2,49)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,4 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,6),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(2,4),next=2,hold=true,node=20000},true)
end
n=n+1
end end
for _=9,12 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,5),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,5),next=2,hold=true,node=20000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R<=3 and 4 or
R<=5 and 3 or
R<=10 and 2 or
R<=15 and 1 or
R<=45 and 0
end,
}

View File

@@ -1,71 +1,71 @@
local function selectTarget(P)
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
end
return{
color=COLOR.magenta,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='rockblock',
},
load=function()
ROYALEDATA.powerUp={2,5,10,20}
ROYALEDATA.stage={30,20,15,10,5}
PLY.newPlayer(1)
local L={}for i=1,49 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,49)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,4 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,8),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
for _=9,12 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,7),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R==2 and 4 or
R<=4 and 3 or
R<=6 and 2 or
R<=8 and 1 or
R<=45 and 0
end,
color=COLOR.magenta,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='rockblock',
},
load=function()
ROYALEDATA.powerUp={2,5,10,20}
ROYALEDATA.stage={30,20,15,10,5}
PLY.newPlayer(1)
local L={}for i=1,49 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,49)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,4 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,8),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
for _=9,12 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,7),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R==2 and 4 or
R<=4 and 3 or
R<=6 and 2 or
R<=8 and 1 or
R<=45 and 0
end,
}

View File

@@ -1,71 +1,71 @@
local function selectTarget(P)
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
end
return{
color=COLOR.lYellow,
env={
drop=15,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='magicblock',
},
load=function()
ROYALEDATA.powerUp={2,5,10,20}
ROYALEDATA.stage={30,20,15,10,5}
PLY.newPlayer(1)
local L={}for i=1,49 do L[i]=true end
local t=6
while t>0 do
local r=math.random(2,49)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,4 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,10),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,7),next=3,hold=true,node=40000},true)
end
n=n+1
end end
for _=9,12 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,9),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(5,8),next=3,hold=true,node=40000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R==2 and 4 or
R==3 and 3 or
R==4 and 2 or
R<=6 and 1 or
R<=45 and 0
end,
color=COLOR.lYellow,
env={
drop=15,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='magicblock',
},
load=function()
ROYALEDATA.powerUp={2,5,10,20}
ROYALEDATA.stage={30,20,15,10,5}
PLY.newPlayer(1)
local L={}for i=1,49 do L[i]=true end
local t=6
while t>0 do
local r=math.random(2,49)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,4 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,10),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,7),next=3,hold=true,node=40000},true)
end
n=n+1
end end
for _=9,12 do for _=1,6 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,9),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(5,8),next=3,hold=true,node=40000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R==2 and 4 or
R==3 and 3 or
R==4 and 2 or
R<=6 and 1 or
R<=45 and 0
end,
}

View File

@@ -1,71 +1,71 @@
local function selectTarget(P)
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
end
return{
color=COLOR.cyan,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='sugar fairy',
},
load=function()
ROYALEDATA.powerUp={2,6,14,30}
ROYALEDATA.stage={75,50,35,20,10}
PLY.newPlayer(1)
local L={}for i=1,100 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,99)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,7 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,6),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(2,4),next=2,hold=true,node=20000},true)
end
n=n+1
end end
for _=15,21 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,5),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,5),next=2,hold=true,node=20000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R<=3 and 4 or
R<=6 and 3 or
R<=10 and 2 or
R<=20 and 1 or
R<=90 and 0
end,
color=COLOR.cyan,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='sugar fairy',
},
load=function()
ROYALEDATA.powerUp={2,6,14,30}
ROYALEDATA.stage={75,50,35,20,10}
PLY.newPlayer(1)
local L={}for i=1,100 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,99)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,7 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,6),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(2,4),next=2,hold=true,node=20000},true)
end
n=n+1
end end
for _=15,21 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,5),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,5),next=2,hold=true,node=20000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R<=3 and 4 or
R<=6 and 3 or
R<=10 and 2 or
R<=20 and 1 or
R<=90 and 0
end,
}

View File

@@ -1,71 +1,71 @@
local function selectTarget(P)
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
end
return{
color=COLOR.magenta,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='rockblock',
},
load=function()
ROYALEDATA.powerUp={2,6,14,30}
ROYALEDATA.stage={75,50,35,20,10}
PLY.newPlayer(1)
local L={}for i=1,100 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,99)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,7 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,8),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
for _=15,21 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,7),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R<=3 and 4 or
R<=6 and 3 or
R<=8 and 2 or
R<=10 and 1 or
R<=90 and 0
end,
color=COLOR.magenta,
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='rockblock',
},
load=function()
ROYALEDATA.powerUp={2,6,14,30}
ROYALEDATA.stage={75,50,35,20,10}
PLY.newPlayer(1)
local L={}for i=1,100 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,99)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,7 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,8),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(3,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
for _=15,21 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(4,7),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,6),next=3,hold=true,node=30000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R<=3 and 4 or
R<=6 and 3 or
R<=8 and 2 or
R<=10 and 1 or
R<=90 and 0
end,
}

View File

@@ -1,71 +1,71 @@
local function selectTarget(P)
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
if SETTING.swap then
for i=1,#P.keyPressing do
if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
P.keyPressing[9]=true
else
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
end
return{
color=COLOR.lYellow,
env={
drop=15,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='magicblock',
},
load=function()
ROYALEDATA.powerUp={2,6,14,30}
ROYALEDATA.stage={75,50,35,20,10}
PLY.newPlayer(1)
local L={}for i=1,100 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,99)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,7 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,10),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,7),next=3,hold=true,node=40000},true)
end
n=n+1
end end
for _=15,21 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,9),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(5,8),next=3,hold=true,node=40000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R==2 and 4 or
R==3 and 3 or
R<=5 and 2 or
R<=7 and 1 or
R<=90 and 0
end,
color=COLOR.lYellow,
env={
drop=15,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,
bg='rainbow',bgm='magicblock',
},
load=function()
ROYALEDATA.powerUp={2,6,14,30}
ROYALEDATA.stage={75,50,35,20,10}
PLY.newPlayer(1)
local L={}for i=1,100 do L[i]=true end
local t=4
while t>0 do
local r=math.random(2,99)
if L[r]then L[r],t=false,t-1 end
end
local n=2
for _=1,7 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,10),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(4,7),next=3,hold=true,node=40000},true)
end
n=n+1
end end
for _=15,21 do for _=1,7 do
if L[n]then
PLY.newAIPlayer(n,BOT.template{type='9S',speedLV=math.random(8,9),hold=true})
else
PLY.newAIPlayer(n,BOT.template{type='CC',speedLV=math.random(5,8),next=3,hold=true,node=40000},true)
end
n=n+1
end end
end,
mesDisp=function(P)
PLY.draw.drawRoyaleInfo(P)
end,
score=function(P)return{P.modeData.place,P.modeData.ko}end,
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[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)
local R=P.modeData.place
return
R==1 and 5 or
R==2 and 4 or
R==3 and 3 or
R<=5 and 2 or
R<=7 and 1 or
R<=90 and 0
end,
}

View File

@@ -1,39 +1,39 @@
local function check_tsd(P)
local C=P.lastPiece
if C.row>0 then
if C.id==5 and C.row==2 and C.spin then
P.modeData.tsd=P.modeData.tsd+1
else
P:lose()
end
end
local C=P.lastPiece
if C.row>0 then
if C.id==5 and C.row==2 and C.spin then
P.modeData.tsd=P.modeData.tsd+1
else
P:lose()
end
end
end
return{
color=COLOR.green,
env={
drop=1e99,lock=1e99,
infHold=true,
dropPiece=check_tsd,
ospin=false,
bg='matrix',bgm='vapor',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.tsd,63,250)
mText(drawableText.tsd,63,315)
end,
score=function(P)return{P.modeData.tsd,P.stat.time}end,
scoreDisp=function(D)return D[1].."TSD "..STRING.time(D[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)
local T=P.modeData.tsd
return
T>=20 and 5 or
T>=18 and 4 or
T>=15 and 3 or
T>=10 and 2 or
T>=4 and 1 or
T>=1 and 0
end,
color=COLOR.green,
env={
drop=1e99,lock=1e99,
infHold=true,
dropPiece=check_tsd,
ospin=false,
bg='matrix',bgm='vapor',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.tsd,63,250)
mText(drawableText.tsd,63,315)
end,
score=function(P)return{P.modeData.tsd,P.stat.time}end,
scoreDisp=function(D)return D[1].."TSD "..STRING.time(D[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)
local T=P.modeData.tsd
return
T>=20 and 5 or
T>=18 and 4 or
T>=15 and 3 or
T>=10 and 2 or
T>=4 and 1 or
T>=1 and 0
end,
}

View File

@@ -1,56 +1,56 @@
local gc=love.graphics
local function check_tsd(P)
local C=P.lastPiece
if C.row>0 then
if C.id==5 and C.row==2 and C.spin then
local L=P.modeData.history
if L[1]==C.centX and L[1]==L[2]and L[1]==L[3]then
P:showText("STACK",0,-140,40,'flicker',.3)
P:lose()
else
P.modeData.tsd=P.modeData.tsd+1
table.insert(L,1,C.centX)
L[4]=nil
end
else
P:lose()
end
end
local C=P.lastPiece
if C.row>0 then
if C.id==5 and C.row==2 and C.spin then
local L=P.modeData.history
if L[1]==C.centX and L[1]==L[2]and L[1]==L[3]then
P:showText("STACK",0,-140,40,'flicker',.3)
P:lose()
else
P.modeData.tsd=P.modeData.tsd+1
table.insert(L,1,C.centX)
L[4]=nil
end
else
P:lose()
end
end
end
return{
color=COLOR.magenta,
env={
drop=30,lock=60,
freshLimit=15,
dropPiece=check_tsd,
task=function(P)P.modeData.history={}end,
ospin=false,
bg='matrix',bgm='vapor',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.tsd,63,250)
mText(drawableText.tsd,63,315)
local L=P.modeData.history
if L[1]and L[1]==L[2]and L[1]==L[3]then
PLY.draw.applyField(P)
gc.setColor(1,.5,.5,.2)
gc.rectangle('fill',30*L[1]-30,0,30,600)
PLY.draw.cancelField(P)
end
end,
score=function(P)return{P.modeData.tsd,P.stat.time}end,
scoreDisp=function(D)return D[1].."TSD "..STRING.time(D[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)
local T=P.modeData.tsd
return
T>=20 and 5 or
T>=18 and 4 or
T>=15 and 3 or
T>=11 and 2 or
T>=7 and 1 or
T>=3 and 0
end,
color=COLOR.magenta,
env={
drop=30,lock=60,
freshLimit=15,
dropPiece=check_tsd,
task=function(P)P.modeData.history={}end,
ospin=false,
bg='matrix',bgm='vapor',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.tsd,63,250)
mText(drawableText.tsd,63,315)
local L=P.modeData.history
if L[1]and L[1]==L[2]and L[1]==L[3]then
PLY.draw.applyField(P)
gc.setColor(1,.5,.5,.2)
gc.rectangle('fill',30*L[1]-30,0,30,600)
PLY.draw.cancelField(P)
end
end,
score=function(P)return{P.modeData.tsd,P.stat.time}end,
scoreDisp=function(D)return D[1].."TSD "..STRING.time(D[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)
local T=P.modeData.tsd
return
T>=20 and 5 or
T>=18 and 4 or
T>=15 and 3 or
T>=11 and 2 or
T>=7 and 1 or
T>=3 and 0
end,
}

View File

@@ -1,55 +1,55 @@
local gc=love.graphics
local function check_tsd(P)
local C=P.lastPiece
if C.row>0 then
if C.id==5 and C.row==2 and C.spin then
if TABLE.find(P.modeData.history,C.centX)then
P:showText("STACK",0,-140,40,'flicker',.3)
P:lose()
else
P.modeData.tsd=P.modeData.tsd+1
table.insert(P.modeData.history,1,C.centX)
P.modeData.history[5]=nil
end
else
P:lose()
end
end
local C=P.lastPiece
if C.row>0 then
if C.id==5 and C.row==2 and C.spin then
if TABLE.find(P.modeData.history,C.centX)then
P:showText("STACK",0,-140,40,'flicker',.3)
P:lose()
else
P.modeData.tsd=P.modeData.tsd+1
table.insert(P.modeData.history,1,C.centX)
P.modeData.history[5]=nil
end
else
P:lose()
end
end
end
return{
color=COLOR.lYellow,
env={
drop=60,lock=60,
freshLimit=15,
dropPiece=check_tsd,
task=function(P)P.modeData.history={}end,
ospin=false,
bg='matrix',bgm='vapor',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.tsd,63,250)
mText(drawableText.tsd,63,315)
PLY.draw.applyField(P)
local L=P.modeData.history
for i=1,#L do
gc.setColor(1,.5,.5,.3-i*.05)
gc.rectangle('fill',30*L[i]-30,0,30,600)
end
PLY.draw.cancelField(P)
end,
score=function(P)return{P.modeData.tsd,P.stat.time}end,
scoreDisp=function(D)return D[1].."TSD "..STRING.time(D[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)
local T=P.modeData.tsd
return
T>=20 and 5 or
T>=18 and 4 or
T>=16 and 3 or
T>=13 and 2 or
T>=10 and 1 or
T>=4 and 0
end,
color=COLOR.lYellow,
env={
drop=60,lock=60,
freshLimit=15,
dropPiece=check_tsd,
task=function(P)P.modeData.history={}end,
ospin=false,
bg='matrix',bgm='vapor',
},
mesDisp=function(P)
setFont(60)
mStr(P.modeData.tsd,63,250)
mText(drawableText.tsd,63,315)
PLY.draw.applyField(P)
local L=P.modeData.history
for i=1,#L do
gc.setColor(1,.5,.5,.3-i*.05)
gc.rectangle('fill',30*L[i]-30,0,30,600)
end
PLY.draw.cancelField(P)
end,
score=function(P)return{P.modeData.tsd,P.stat.time}end,
scoreDisp=function(D)return D[1].."TSD "..STRING.time(D[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)
local T=P.modeData.tsd
return
T>=20 and 5 or
T>=18 and 4 or
T>=16 and 3 or
T>=13 and 2 or
T>=10 and 1 or
T>=4 and 0
end,
}

View File

@@ -1,48 +1,48 @@
local gc=love.graphics
local warnTime={60,90,105,115,116,117,118,119,120}
return{
color=COLOR.lGray,
env={
noTele=true,
minarr=1,minsdarr=1,
drop=60,lock=60,
fall=20,
task=function(P)
P.modeData.stage=1
while true do
YIELD()
if P.stat.frame/60>=warnTime[P.modeData.stage]then
if P.modeData.stage<9 then
P.modeData.stage=P.modeData.stage+1
SFX.play('ready',.7+P.modeData.stage*.03)
else
SFX.play('start')
P:win('finish')
return
end
end
end
end,
bg='fan',bgm='memory',
},
slowMark=true,
mesDisp=function(P)
gc.setLineWidth(2)
gc.rectangle('line',55,110,32,402)
local T=P.stat.frame/60/120
gc.setColor(2*T,2-2*T,.2)
gc.rectangle('fill',56,511,30,(T-1)*400)
end,
score=function(P)return{P.stat.score}end,
scoreDisp=function(D)return tostring(D[1])end,
comp=function(a,b)return a[1]>b[1]end,
getRank=function(P)
local T=P.stat.score
return
T>=62000 and 5 or
T>=50000 and 4 or
T>=26000 and 3 or
T>=10000 and 2 or
T>=6200 and 1
end,
color=COLOR.lGray,
env={
noTele=true,
minarr=1,minsdarr=1,
drop=60,lock=60,
fall=20,
task=function(P)
P.modeData.stage=1
while true do
YIELD()
if P.stat.frame/60>=warnTime[P.modeData.stage]then
if P.modeData.stage<9 then
P.modeData.stage=P.modeData.stage+1
SFX.play('ready',.7+P.modeData.stage*.03)
else
SFX.play('start')
P:win('finish')
return
end
end
end
end,
bg='fan',bgm='memory',
},
slowMark=true,
mesDisp=function(P)
gc.setLineWidth(2)
gc.rectangle('line',55,110,32,402)
local T=P.stat.frame/60/120
gc.setColor(2*T,2-2*T,.2)
gc.rectangle('fill',56,511,30,(T-1)*400)
end,
score=function(P)return{P.stat.score}end,
scoreDisp=function(D)return tostring(D[1])end,
comp=function(a,b)return a[1]>b[1]end,
getRank=function(P)
local T=P.stat.score
return
T>=62000 and 5 or
T>=50000 and 4 or
T>=26000 and 3 or
T>=10000 and 2 or
T>=6200 and 1
end,
}

Some files were not shown because too many files have changed in this diff Show More