代码规范:把所有的tab换成空格
This commit is contained in:
@@ -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
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user