Merge branch 'main' into main
This commit is contained in:
@@ -2,14 +2,11 @@ local data=love.data
|
||||
|
||||
local gc=love.graphics
|
||||
local gc_setColor,gc_setLineWidth,gc_setShader=gc.setColor,gc.setLineWidth,gc.setShader
|
||||
local gc_push,gc_pop,gc_origin=gc.push,gc.pop,gc.origin
|
||||
local gc_push,gc_pop,gc_origin,gc_translate=gc.push,gc.pop,gc.origin,gc.translate
|
||||
local gc_draw,gc_rectangle,gc_circle=gc.draw,gc.rectangle,gc.circle
|
||||
local max,int,rnd=math.max,math.floor,math.random
|
||||
local sin=math.sin
|
||||
local sub=string.sub
|
||||
local int,rnd=math.floor,math.random
|
||||
local char,byte=string.char,string.byte
|
||||
local ins,rem=table.insert,table.remove
|
||||
local YIELD=YIELD
|
||||
|
||||
|
||||
|
||||
@@ -257,14 +254,17 @@ function copyQuestArgs()
|
||||
ENV.sequence
|
||||
return str
|
||||
end
|
||||
function pasteQuestArgs(str)
|
||||
if #str<4 then return end
|
||||
local ENV=CUSTOMENV
|
||||
ENV.holdCount= byte(str,1)-48
|
||||
ENV.ospin= byte(str,2)~=90
|
||||
ENV.missionKill= byte(str,3)~=90
|
||||
ENV.sequence= sub(str,4)
|
||||
return true
|
||||
do--function pasteQuestArgs(str)
|
||||
local sub=string.sub
|
||||
function pasteQuestArgs(str)
|
||||
if #str<4 then return end
|
||||
local ENV=CUSTOMENV
|
||||
ENV.holdCount= byte(str,1)-48
|
||||
ENV.ospin= byte(str,2)~=90
|
||||
ENV.missionKill= byte(str,3)~=90
|
||||
ENV.sequence= sub(str,4)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -467,7 +467,6 @@ end
|
||||
|
||||
--Game
|
||||
function generateLine(hole)
|
||||
-- return 2^10-1-2^(hole-1)
|
||||
return 1023-2^(hole-1)
|
||||
end
|
||||
function freshDate(mode)
|
||||
@@ -500,16 +499,6 @@ function legalGameTime()--Check if today's playtime is legal
|
||||
end
|
||||
return true
|
||||
end
|
||||
function legalEmail(e)
|
||||
e=SPLITSTR(e,"@")
|
||||
if #e~=2 then return false end
|
||||
if e[1]:sub(-1)=="."or e[2]:sub(-1)=="."then return false end
|
||||
local e1,e2=SPLITSTR(e[1],"."),SPLITSTR(e[2],".")
|
||||
if #e1*#e2==0 then return false end
|
||||
for _,v in next,e1 do if #v==0 then return false end end
|
||||
for _,v in next,e2 do if #v==0 then return false end end
|
||||
return true
|
||||
end
|
||||
|
||||
function mergeStat(stat,delta)--Merge delta stat. to global stat.
|
||||
for k,v in next,delta do
|
||||
@@ -690,6 +679,7 @@ do--function dumpBasicConfig()
|
||||
end
|
||||
end
|
||||
do--function resetGameData(args)
|
||||
local YIELD=YIELD
|
||||
local function tick_showMods()
|
||||
local time=0
|
||||
while true do
|
||||
@@ -790,36 +780,39 @@ do--function resetGameData(args)
|
||||
collectgarbage()
|
||||
end
|
||||
end
|
||||
function checkWarning()
|
||||
local P1=PLAYERS[1]
|
||||
if P1.alive then
|
||||
if P1.frameRun%26==0 then
|
||||
local F=P1.field
|
||||
local height=0--Max height of row 4~7
|
||||
for x=4,7 do
|
||||
for y=#F,1,-1 do
|
||||
if F[y][x]>0 then
|
||||
if y>height then
|
||||
height=y
|
||||
do--function checkWarning()
|
||||
local max=math.max
|
||||
function checkWarning()
|
||||
local P1=PLAYERS[1]
|
||||
if P1.alive then
|
||||
if P1.frameRun%26==0 then
|
||||
local F=P1.field
|
||||
local height=0--Max height of row 4~7
|
||||
for x=4,7 do
|
||||
for y=#F,1,-1 do
|
||||
if F[y][x]>0 then
|
||||
if y>height then
|
||||
height=y
|
||||
end
|
||||
break
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
GAME.warnLVL0=math.log(height-(P1.gameEnv.fieldH-5)+P1.atkBuffer.sum*.8)
|
||||
end
|
||||
GAME.warnLVL0=math.log(height-(P1.gameEnv.fieldH-5)+P1.atkBuffer.sum*.8)
|
||||
local _=GAME.warnLVL
|
||||
if _<GAME.warnLVL0 then
|
||||
_=_*.95+GAME.warnLVL0*.05
|
||||
elseif _>0 then
|
||||
_=max(_-.026,0)
|
||||
end
|
||||
GAME.warnLVL=_
|
||||
elseif GAME.warnLVL>0 then
|
||||
GAME.warnLVL=max(GAME.warnLVL-.026,0)
|
||||
end
|
||||
local _=GAME.warnLVL
|
||||
if _<GAME.warnLVL0 then
|
||||
_=_*.95+GAME.warnLVL0*.05
|
||||
elseif _>0 then
|
||||
_=max(_-.026,0)
|
||||
if GAME.warnLVL>1.126 and P1.frameRun%30==0 then
|
||||
SFX.fplay("warning",SETTING.sfx_warn)
|
||||
end
|
||||
GAME.warnLVL=_
|
||||
elseif GAME.warnLVL>0 then
|
||||
GAME.warnLVL=max(GAME.warnLVL-.026,0)
|
||||
end
|
||||
if GAME.warnLVL>1.126 and P1.frameRun%30==0 then
|
||||
SFX.fplay("warning",SETTING.sfx_warn)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -933,7 +926,7 @@ do--function saveRecording()
|
||||
--Filtering modes that cannot be saved
|
||||
for _,v in next,noRecList do
|
||||
if GAME.curModeName:find(v)then
|
||||
LOG.print("Cannot save recording of this mode now!",COLOR.sky)
|
||||
LOG.print("Cannot save recording of this mode now!",COLOR.N)
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -987,6 +980,7 @@ do--function drawFWM()
|
||||
--等Techmino发展到一定程度之后会解除这个限制
|
||||
--最后,别把藏在这里的东西截图/复制出去哦~
|
||||
--感谢您对Techmino的支持!!!
|
||||
local sin=math.sin
|
||||
local setFont,TIME,mStr=setFont,TIME,mStr
|
||||
function drawFWM()
|
||||
local t=TIME()
|
||||
@@ -995,6 +989,22 @@ do--function drawFWM()
|
||||
mStr(m[_G["\83\69\84\84\73\78\71"]["\108\97\110\103"]or m[1]],240,60+26*sin(t))
|
||||
end
|
||||
end
|
||||
do--function drawSelfProfile()
|
||||
function drawSelfProfile()
|
||||
local selfAvatar=USERS.getAvatar(USER.uid)
|
||||
gc_push("transform")
|
||||
gc_translate(1280,0)
|
||||
|
||||
--Draw avatar
|
||||
gc_setLineWidth(2)
|
||||
gc_setColor(.3,.3,.3,.8)gc_rectangle("fill",-260,0,260,80)
|
||||
gc_setColor(1,1,1)gc_rectangle("line",-260,0,260,80)
|
||||
gc_rectangle("line",-73,7,66,66,2)
|
||||
gc_draw(selfAvatar,-72,8,nil,.5)
|
||||
|
||||
gc_pop()
|
||||
end
|
||||
end
|
||||
function drawWarning()
|
||||
if SETTING.warn and GAME.warnLVL>0 then
|
||||
gc_push("transform")
|
||||
|
||||
@@ -4,94 +4,94 @@ local function disableKey(P,key)
|
||||
end
|
||||
MODOPT={--Mod options
|
||||
{no=0,id="NX",name="next",
|
||||
key="q",x=80,y=230,color="orange",
|
||||
key="q",x=80,y=230,color="O",
|
||||
list={0,1,2,3,4,5,6},
|
||||
func=function(P,O)P.gameEnv.nextCount=O end,
|
||||
},
|
||||
{no=1,id="HL",name="hold",
|
||||
key="w",x=200,y=230,color="orange",
|
||||
key="w",x=200,y=230,color="O",
|
||||
list={0,1,2,3,4,5,6},
|
||||
func=function(P,O)P.gameEnv.holdCount=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=2,id="FL",name="hideNext",
|
||||
key="e",x=320,y=230,color="aqua",
|
||||
key="e",x=320,y=230,color="A",
|
||||
list={1,2,3,4,5},
|
||||
func=function(P,O)P.gameEnv.nextStartPos=O +1 end,
|
||||
},
|
||||
{no=3,id="IH",name="infHold",
|
||||
key="r",x=440,y=230,color="aqua",
|
||||
key="r",x=440,y=230,color="A",
|
||||
func=function(P)P.gameEnv.infHold=true end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=4,id="HB",name="hideBlock",
|
||||
key="y",x=680,y=230,color="purple",
|
||||
key="y",x=680,y=230,color="V",
|
||||
func=function(P)P.gameEnv.block=false end,
|
||||
},
|
||||
{no=5,id="HG",name="hideGhost",
|
||||
key="u",x=800,y=230,color="purple",
|
||||
key="u",x=800,y=230,color="V",
|
||||
func=function(P)P.gameEnv.ghost=false end,
|
||||
},
|
||||
{no=6,id="HD",name="hidden",
|
||||
key="i",x=920,y=230,color="grape",
|
||||
key="i",x=920,y=230,color="P",
|
||||
list={"easy","slow","medium","fast","none"},
|
||||
func=function(P,O)P.gameEnv.visible=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=7,id="HB",name="hideBoard",
|
||||
key="o",x=1040,y=230,color="grape",
|
||||
key="o",x=1040,y=230,color="P",
|
||||
list={"down","up","all"},
|
||||
func=function(P,O)P.gameEnv.hideBoard=O end,
|
||||
},
|
||||
{no=8,id="FB",name="flipBoard",
|
||||
key="p",x=1160,y=230,color="grass",
|
||||
key="p",x=1160,y=230,color="J",
|
||||
list={"U-D","L-R","180"},
|
||||
func=function(P,O)P.gameEnv.flipBoard=O end,
|
||||
},
|
||||
|
||||
{no=9,id="DT",name="dropDelay",
|
||||
key="a",x=140,y=350,color="red",
|
||||
key="a",x=140,y=350,color="R",
|
||||
list={0,.125,.25,.5,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
|
||||
func=function(P,O)P.gameEnv.drop=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=10,id="LT",name="lockDelay",
|
||||
key="s",x=260,y=350,color="red",
|
||||
key="s",x=260,y=350,color="R",
|
||||
list={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
|
||||
func=function(P,O)P.gameEnv.lock=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=11,id="ST",name="waitDelay",
|
||||
key="d",x=380,y=350,color="red",
|
||||
key="d",x=380,y=350,color="R",
|
||||
list={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
||||
func=function(P,O)P.gameEnv.wait=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=12,id="CT",name="fallDelay",
|
||||
key="f",x=500,y=350,color="red",
|
||||
key="f",x=500,y=350,color="R",
|
||||
list={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
||||
func=function(P,O)P.gameEnv.fall=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=13,id="LF",name="life",
|
||||
key="j",x=860,y=350,color="yellow",
|
||||
key="j",x=860,y=350,color="Y",
|
||||
list={0,1,2,3,5,10,15,26,42,87,500},
|
||||
func=function(P,O)P.gameEnv.life=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=14,id="FB",name="forceB2B",
|
||||
key="k",x=980,y=350,color="yellow",
|
||||
key="k",x=980,y=350,color="Y",
|
||||
func=function(P)P.gameEnv.b2bKill=true end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=15,id="PF",name="forceFinesse",
|
||||
key="l",x=1100,y=350,color="yellow",
|
||||
key="l",x=1100,y=350,color="Y",
|
||||
func=function(P)P.gameEnv.fineKill=true end,
|
||||
unranked=true,
|
||||
},
|
||||
|
||||
{no=16,id="TL",name="tele",
|
||||
key="z",x=200,y=470,color="lGray",
|
||||
key="z",x=200,y=470,color="lH",
|
||||
func=function(P)
|
||||
P.gameEnv.das,P.gameEnv.arr=0,0
|
||||
P.gameEnv.sddas,P.gameEnv.sdarr=0,0
|
||||
@@ -99,7 +99,7 @@ MODOPT={--Mod options
|
||||
unranked=true,
|
||||
},
|
||||
{no=17,id="FX",name="noRotation",
|
||||
key="x",x=320,y=470,color="lGray",
|
||||
key="x",x=320,y=470,color="lH",
|
||||
func=function(P)
|
||||
disableKey(P,3)
|
||||
disableKey(P,4)
|
||||
@@ -108,7 +108,7 @@ MODOPT={--Mod options
|
||||
unranked=true,
|
||||
},
|
||||
{no=18,id="GL",name="noMove",
|
||||
key="c",x=440,y=470,color="lGray",
|
||||
key="c",x=440,y=470,color="lH",
|
||||
func=function(P)
|
||||
disableKey(P,1)disableKey(P,2)
|
||||
disableKey(P,11)disableKey(P,12)
|
||||
@@ -118,19 +118,19 @@ MODOPT={--Mod options
|
||||
unranked=true,
|
||||
},
|
||||
{no=19,id="CS",name="customSeq",
|
||||
key="b",x=680,y=470,color="blue",
|
||||
key="b",x=680,y=470,color="B",
|
||||
list={"bag","his4","c2","rnd","mess","reverb"},
|
||||
func=function(P,O)P.gameEnv.sequence=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=20,id="PS",name="pushSpeed",
|
||||
key="n",x=800,y=470,color="blue",
|
||||
key="n",x=800,y=470,color="B",
|
||||
list={.5,1,2,3,5,15,1e99},
|
||||
func=function(P,O)P.gameEnv.pushSpeed=O end,
|
||||
unranked=true,
|
||||
},
|
||||
{no=21,id="BN",name="boneBlock",
|
||||
key="m",x=920,y=470,color="blue",
|
||||
key="m",x=920,y=470,color="B",
|
||||
list={"on","off"},
|
||||
func=function(P,O)P.gameEnv.bone=O=="on"end,
|
||||
},
|
||||
@@ -148,44 +148,6 @@ PLY_NET={}
|
||||
FIELD={}--Field(s) for custom game
|
||||
BAG={}--Sequence for custom game
|
||||
MISSION={}--Clearing mission for custom game
|
||||
CUSTOMENV={--gameEnv for cutsom game
|
||||
--Basic
|
||||
drop=60,
|
||||
lock=60,
|
||||
wait=0,
|
||||
fall=0,
|
||||
|
||||
--Control
|
||||
nextCount=6,
|
||||
holdCount=1,
|
||||
infHold=false,
|
||||
phyHold=false,
|
||||
|
||||
--Visual
|
||||
bone=false,
|
||||
|
||||
--Rule
|
||||
sequence="bag",
|
||||
fieldH=20,
|
||||
|
||||
ospin=true,
|
||||
fineKill=false,
|
||||
b2bKill=false,
|
||||
easyFresh=true,
|
||||
deepDrop=false,
|
||||
visible="show",
|
||||
freshLimit=1e99,
|
||||
|
||||
|
||||
opponent="X",
|
||||
life=0,
|
||||
pushSpeed=3,
|
||||
missionKill=false,
|
||||
|
||||
--Else
|
||||
bg="none",
|
||||
bgm="race",
|
||||
}
|
||||
GAME={--Global game data
|
||||
init=false, --If need initializing game when enter scene-play
|
||||
net=false, --If play net game
|
||||
@@ -227,6 +189,47 @@ USER=FILE.load("conf/user")or{--User infomation
|
||||
--Local data
|
||||
xp=0,lv=1,
|
||||
}
|
||||
CUSTOMENV=FILE.load("conf/customEnv")
|
||||
if not CUSTOMENV or CUSTOMENV.version~=VERSION.code then CUSTOMENV={--gameEnv for cutsom game
|
||||
version=VERSION.code,
|
||||
|
||||
--Basic
|
||||
drop=1e99,
|
||||
lock=1e99,
|
||||
wait=0,
|
||||
fall=0,
|
||||
|
||||
--Control
|
||||
nextCount=6,
|
||||
holdCount=1,
|
||||
infHold=true,
|
||||
phyHold=false,
|
||||
|
||||
--Visual
|
||||
bone=false,
|
||||
|
||||
--Rule
|
||||
sequence="bag",
|
||||
fieldH=20,
|
||||
|
||||
ospin=true,
|
||||
fineKill=false,
|
||||
b2bKill=false,
|
||||
easyFresh=true,
|
||||
deepDrop=false,
|
||||
visible="show",
|
||||
freshLimit=1e99,
|
||||
|
||||
|
||||
opponent="X",
|
||||
life=0,
|
||||
pushSpeed=3,
|
||||
missionKill=false,
|
||||
|
||||
--Else
|
||||
bg="none",
|
||||
bgm="infinite",
|
||||
}end
|
||||
SETTING={--Settings
|
||||
--Tuning
|
||||
das=10,arr=2,dascut=0,
|
||||
@@ -331,26 +334,26 @@ keyMap=FILE.load("conf/key")or{--Key setting
|
||||
},
|
||||
}
|
||||
VK_org=FILE.load("conf/virtualkey")or{--Virtualkey layout, refresh all VKs' position with this before each game
|
||||
{ava=true, x=80, y=720-200, r=80,color=COLOR.lime},--moveLeft
|
||||
{ava=true, x=320, y=720-200, r=80,color=COLOR.lime},--moveRight
|
||||
{ava=true, x=1280-80, y=720-200, r=80,color=COLOR.red},--rotRight
|
||||
{ava=true, x=1280-200, y=720-80, r=80,color=COLOR.orange},--rotLeft
|
||||
{ava=true, x=1280-200, y=720-320, r=80,color=COLOR.magenta},--rot180
|
||||
{ava=true, x=200, y=720-320, r=80,color=COLOR.cyan},--hardDrop
|
||||
{ava=true, x=200, y=720-80, r=80,color=COLOR.sea},--softDrop
|
||||
{ava=true, x=1280-320, y=720-200, r=80,color=COLOR.yellow},--hold
|
||||
{ava=true, x=1280-80, y=280, r=80,color=COLOR.lRed},--func1
|
||||
{ava=true, x=80, y=280, r=80,color=COLOR.lMagenta},--func2
|
||||
{ava=false, x=100, y=50, r=80,color=COLOR.aqua},--insLeft
|
||||
{ava=false, x=200, y=50, r=80,color=COLOR.aqua},--insRight
|
||||
{ava=true, x=80, y=720-200, r=80,color=COLOR.L},--moveLeft
|
||||
{ava=true, x=320, y=720-200, r=80,color=COLOR.L},--moveRight
|
||||
{ava=true, x=1280-80, y=720-200, r=80,color=COLOR.R},--rotRight
|
||||
{ava=true, x=1280-200, y=720-80, r=80,color=COLOR.O},--rotLeft
|
||||
{ava=true, x=1280-200, y=720-320, r=80,color=COLOR.M},--rot180
|
||||
{ava=true, x=200, y=720-320, r=80,color=COLOR.C},--hardDrop
|
||||
{ava=true, x=200, y=720-80, r=80,color=COLOR.S},--softDrop
|
||||
{ava=true, x=1280-320, y=720-200, r=80,color=COLOR.Y},--hold
|
||||
{ava=true, x=1280-80, y=280, r=80,color=COLOR.lR},--func1
|
||||
{ava=true, x=80, y=280, r=80,color=COLOR.lM},--func2
|
||||
{ava=false, x=100, y=50, r=80,color=COLOR.A},--insLeft
|
||||
{ava=false, x=200, y=50, r=80,color=COLOR.A},--insRight
|
||||
{ava=false, x=300, y=50, r=80,color={COLOR.rainbow(3.5)}},--insDown
|
||||
{ava=false, x=400, y=50, r=80,color={COLOR.rainbow(3.3)}},--down1
|
||||
{ava=false, x=500, y=50, r=80,color={COLOR.rainbow(3.1)}},--down4
|
||||
{ava=false, x=600, y=50, r=80,color={COLOR.rainbow(2.9)}},--down10
|
||||
{ava=false, x=700, y=50, r=80,color=COLOR.lLime},--dropLeft
|
||||
{ava=false, x=800, y=50, r=80,color=COLOR.lLime},--dropRight
|
||||
{ava=false, x=900, y=50, r=80,color=COLOR.laqua},--addToLeft
|
||||
{ava=false, x=1000, y=50, r=80,color=COLOR.laqua},--addToRight
|
||||
{ava=false, x=700, y=50, r=80,color=COLOR.lL},--dropLeft
|
||||
{ava=false, x=800, y=50, r=80,color=COLOR.lL},--dropRight
|
||||
{ava=false, x=900, y=50, r=80,color=COLOR.lA},--addToLeft
|
||||
{ava=false, x=1000, y=50, r=80,color=COLOR.lA},--addToRight
|
||||
}
|
||||
virtualkey={}for i=1,#VK_org do virtualkey[i]={}end--In-game virtualkey layout
|
||||
REPLAY=FILE.load("conf/replay")or{}
|
||||
@@ -47,19 +47,19 @@ return{
|
||||
"ttt tetris trainer tres bien",
|
||||
"game",
|
||||
"*Web-based, no mobile support | Single player*\nTetris Trainer Tres-Bien. A hands-on tutorial of advanced techniques in modern Tetris.\nRecommended for players that can complete a 40-line Sprint with all Tetris line clears and no hold.\nCovered topics include T-Spin, finesse, SRS, and some battle setups.\nLinked is translated to Simplified Chinese; original in Japanese.",
|
||||
"http://121.4.147.128/ttt",
|
||||
"http://teatube.ltd/ttt",
|
||||
},
|
||||
{"TTPC",
|
||||
"ttpc tetris perfect clear challenge",
|
||||
"game",
|
||||
"*Web-based, no mobile support | Single player*\nTetris Perfect Clear Challenge. The PC opener tutorial for SRS+bag7.\nRecommended for players that have completed TTT. You need to know SRS to play this.\nIncludes only the basic PC opener.\nLinked is translated to Simplified Chinese; original in Japanese.",
|
||||
"http://121.4.147.128/ttpc",
|
||||
"http://teatube.ltd/ttpc",
|
||||
},
|
||||
{"NAZO",
|
||||
"nazo",
|
||||
"game",
|
||||
"*Web-based, no mobile support | Single player*\nAll sorts of SRS puzzles. Recommended for players that have completed TTT.\nHas T-Spin and all spin puzzles of all difficulties.\nLinked is translated to Simplified Chinese; original in Japanese.",
|
||||
"http://121.4.147.128/nazo",
|
||||
"http://teatube.ltd/nazo",
|
||||
},
|
||||
|
||||
{"King of Stackers",
|
||||
@@ -228,9 +228,9 @@ return{
|
||||
"Dig/Defend per minute\n\tSometimes can reflect how well a player can survive garbage.",
|
||||
},
|
||||
{"ADPM",
|
||||
"adpm attackdigperminute",
|
||||
"adpm attackdigperminute vs",
|
||||
"term",
|
||||
"Attack&Dig per minute\n\tUsed to compare skill differences between the two players within one match; slightly more accurate than APM.",
|
||||
"Attack&Dig per minute\n\tUsed to compare skill differences between the two players within one match; slightly more accurate than APM.\n\"vs\" in TETR.IO is Atk+Dig per 100s",
|
||||
},
|
||||
{"APL",
|
||||
"apl attackperline efficiency",
|
||||
@@ -772,7 +772,7 @@ return{
|
||||
"tetrisonline servers",
|
||||
"other",
|
||||
"Google \"Tetris Online Poland\" for the Poland server.\nClick \"Open URL\" for information about the Tetris Online Study server.",
|
||||
"http://121.4.147.128/tos",
|
||||
"http://teatube.ltd/tos",
|
||||
},
|
||||
{"Github Repository",
|
||||
"githubrepository sourcecode",
|
||||
|
||||
@@ -42,19 +42,19 @@ return{
|
||||
"教程 ttt",
|
||||
"game",
|
||||
"现代方块特殊操作手把手教程(推荐使用电脑,移动设备需要外接键盘)\n\t推荐能无hold纯消四完成40行挑战的人学习\n\t内含T-spin、极简、SRS、部分对战定式介绍等教程\n\t完全吃透了话就可以成为教练啦!\n注:提供的链接是翻译后挂在茶服的版本",
|
||||
"http://121.4.147.128/ttt",
|
||||
"http://teatube.ltd/ttt",
|
||||
},
|
||||
{"TTPC",
|
||||
"pc教程 ttpc",
|
||||
"game",
|
||||
"SRS+bag7方块游戏开局PC教程(推荐使用电脑,移动设备需要外接键盘)\n\t推荐完成了ttt的人学习(必须先学会SRS)\n\t(不包括六巧板等其它PC定式)\n\n注:提供的链接是翻译后挂在茶服的版本",
|
||||
"http://121.4.147.128/ttpc",
|
||||
"http://teatube.ltd/ttpc",
|
||||
},
|
||||
{"NAZO",
|
||||
"题库 nazo",
|
||||
"game",
|
||||
"各类SRS试题(手机触屏玩不了)\n\t推荐能通过ttt的玩家尝试。\n\t内含各种t-spin/all-spin题目,简单到极难题目都有。\n\n注:提供的链接是翻译后挂在茶服的版本",
|
||||
"http://121.4.147.128/nazo",
|
||||
"http://teatube.ltd/nazo",
|
||||
},
|
||||
|
||||
--游戏(网页)
|
||||
@@ -106,7 +106,7 @@ return{
|
||||
"俄罗斯方块大师 tgm tetrisgrandmaster",
|
||||
"game",
|
||||
"一个街机平台方块系列,S13/GM等称号出自该系列,可以在win平台运行\n\n其中TGM3目前玩得最普遍,部分模式说明:\nMaster:大师模式,有段位评价,拿到更高段位点的要求:非消一的连击和消四,字幕战中消除和通关,每100的前70小于【标准时间,上一个0~70秒数+2】中小的一个,每100总用时不能超过限定值(不然取消上一个方法的加分并反扣点数);到500若没有进标准时间会强制结束游戏(称为铁门);字幕战有两个难度,半隐和全隐,后者必须拿到几乎全部的段位点才能进,消除奖励的段位点也更多。\nShirase:死亡模式,类似于techmino中的20G-极限,开局就是高速20G,500和1000有铁门,500开始底下开始涨垃圾行,1000开始出现骨块,1300通关进入大方块字幕战;段位结算:每通100加1段从S1到S13,如果通关了字幕战就会有金色的S13\n\n更多内容详见链接",
|
||||
"http://121.4.147.128/TGMGUIDE/",
|
||||
"http://teatube.ltd/TGMGUIDE/",
|
||||
},
|
||||
{"DTET",
|
||||
"dtet",
|
||||
@@ -228,9 +228,9 @@ return{
|
||||
"Dig/Defend per Minute\n挖掘每分,即玩家每分钟向下挖掘的垃圾行数。\n某些时候可以体现玩家生存能力\n\n或:防御(抵消+挖掘)每分",
|
||||
},
|
||||
{"ADPM",
|
||||
"adpm attack defend",
|
||||
"adpm attack defend vs",
|
||||
"term",
|
||||
"Atk+Dig per Minute\n攻击+挖掘每分,用于在同一局游戏内对比玩家间水平差距,比apm更准确一些。\n在TETR.IO中有一个叫vs的数据就是ADPM(调整了比例)",--TODO
|
||||
"Atk+Dig per Minute\n攻击+挖掘每分,用于在同一局游戏内对比玩家间水平差距,比apm更准确一些。\n在TETR.IO中叫vs的数据就是ADPM(调整过比例,具体是Atk+Dig per 100s)",
|
||||
},
|
||||
{"APL",
|
||||
"apl xiaolv",
|
||||
@@ -262,7 +262,7 @@ return{
|
||||
{"Tetris",
|
||||
"tetris xiaosi",
|
||||
"term",
|
||||
"商标,Tetris游戏名,同时也是别的方块游戏里消四行的名字。\n含义是Tetra(古希腊语 四)+Tennis(游戏原作者喜欢的运动)。",
|
||||
"商标,Tetris游戏名,同时也是别的方块游戏里消四行的名字。\n含义是Tetra(古希腊语 四)+Tennis(游戏原作者喜欢的运动)。\n现在版权在TTC(The Tetris Company)手上,任天堂和世嘉开发游戏是TTC授权的,本身并没有版权。",
|
||||
},
|
||||
{"PC",
|
||||
"pc perfectclear ac allclear quanxiao quanqing",
|
||||
@@ -523,12 +523,12 @@ return{
|
||||
{"DAS & ARR",
|
||||
"灵敏度 das arr",
|
||||
"term",
|
||||
"DAS(Delay-auto-shift,延迟自动移动)系统。\n\nDAS,自动移动延迟,指从<按下移动键时动了一格>到<开始自动移动>之间的时间\nARR(Auto-repeat-rate),自动重复速率,指<每次自动移动>之间的时间\n\n单位都是f(帧,1帧=1/60秒)\n新人不会调的话推荐用das=8~10,arr=1~2\n对自己能力比较自信或者是已经有一定水平想提速推荐用das=4~6,arr=0\n(如果是别的游戏单位是ms(毫秒),那么乘16.7就可算出对应的数值)\n\n最佳调整方法:das越小越好,小到玩家依然能精准区分单点/长按为止;arr能0就0,游戏不允许的话就能拉多小拉多小\n\n这套系统也被叫作DAS系统",
|
||||
"DAS(Delay-auto-shift,自动加速延迟)系统。\n\nDAS,具体指从<按下移动键时动了一格>到<开始自动移动>之间的时间\nARR(Auto-repeat-rate),自动重复速率,指<每次自动移动>之间的时间\n\n单位都是f(帧,1帧=1/60秒)\n新人不会调的话推荐用das=8~10,arr=1~2\n对自己能力比较自信或者是已经有一定水平想提速推荐用das=4~6,arr=0\n(如果是别的游戏单位是ms(毫秒),那么乘16.7就可算出对应的数值)\n\n最佳调整方法:das越小越好,小到依然能准确区分单点/长按为止;arr能0就0,游戏不允许的话就能拉多小拉多小\n\n这套系统也被叫作DAS系统",
|
||||
},
|
||||
{"DAS通俗",
|
||||
"das arr",
|
||||
"term",
|
||||
"打字时按住o,你会看到:Ooooooooooo\n在时间轴上:O-----------o-o-o-o-o-o-o-o-o-o\n-----------就是das长度,-就是arr长度",
|
||||
"打字时按住o,你会看到:ooooooooooo\n在时间轴上:o-----------o-o-o-o-o-o-o-o-o-o\n-----------就是das长度,-就是arr长度",
|
||||
},
|
||||
{"DAS打断",
|
||||
"dascut",
|
||||
@@ -781,7 +781,7 @@ return{
|
||||
"茶服 chafu study",
|
||||
"other",
|
||||
"TO-S的添加方法、说明等关于茶服的一切",
|
||||
"http://121.4.147.128/tos",
|
||||
"http://teatube.ltd/tos",
|
||||
},
|
||||
{"Github仓库",
|
||||
"源代码 github sourcecode yuandaima",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
local c=COLOR
|
||||
local C=COLOR
|
||||
return{
|
||||
back="Back",
|
||||
anykey="Press a key!",
|
||||
@@ -219,7 +219,6 @@ return{
|
||||
music="Music & SE",
|
||||
about="About",
|
||||
dict="Zictionary",
|
||||
lang="言/A",
|
||||
manual="Manual",
|
||||
quit="Exit",
|
||||
},
|
||||
@@ -852,30 +851,30 @@ return{
|
||||
"You can perform a spin with 28 of the 29 minoes in this game; the exception being O1.",
|
||||
"You can set the spawning orientation for each tetromino.",
|
||||
"ZS JL T O I",
|
||||
{c.C,"Also try 15puzzle!"},
|
||||
{c.C,"Also try Minecraft!"},
|
||||
{c.C,"Also try Minesweeper!"},
|
||||
{c.C,"Also try osu!"},
|
||||
{c.C,"Also try Phigros!"},
|
||||
{c.C,"Also try Rubic's cube!"},
|
||||
{c.C,"Also try Terraria!"},
|
||||
{c.C,"Also try VVVVVV!"},
|
||||
{c.fire,"Also try Cultris II!"},
|
||||
{c.fire,"Also try Jstris"},
|
||||
{c.fire,"Also try NullpoMino!"},
|
||||
{c.fire,"Also try TETR.IO!"},
|
||||
{c.fire,"Also try Tetr.js!"},
|
||||
{c.fire,"Also try Tetra Legends!"},
|
||||
{c.grape,"T-spin!"},
|
||||
{c.gray,"REGRET!!"},
|
||||
{c.lR,"Z ",c.lG,"S ",c.lSea,"J ",c.lOrange,"L ",c.lGrape,"T ",c.lY,"O ",c.lC,"I"},
|
||||
{c.lY,"COOL!!"},
|
||||
{c.R,"\"DMCA abusing\""},
|
||||
{c.R,"\"Intellectual property law\""},
|
||||
{c.R,"DT",c.W," Cannon=",c.grape,"TS",c.R,"D",c.W,"+",c.grape,"TS",c.R,"T",c.W," Cannon"},
|
||||
{c.R,"LrL ",c.G,"RlR ",c.B,"LLr ",c.orange,"RRl ",c.grape,"RRR ",c.grape,"LLL ",c.C,"FFF ",c.Y,"RfR ",c.Y,"RRf ",c.Y,"rFF"},
|
||||
{c.sky,"Lua",c.W," No.1"},
|
||||
{c.W,"What is an ",c.lC,"X-Spin"?},
|
||||
{c.Y,"O-Spin Triple!"},
|
||||
{C.C,"Also try 15puzzle!"},
|
||||
{C.C,"Also try Minecraft!"},
|
||||
{C.C,"Also try Minesweeper!"},
|
||||
{C.C,"Also try osu!"},
|
||||
{C.C,"Also try Phigros!"},
|
||||
{C.C,"Also try Rubic's cube!"},
|
||||
{C.C,"Also try Terraria!"},
|
||||
{C.C,"Also try VVVVVV!"},
|
||||
{C.fire,"Also try Cultris II!"},
|
||||
{C.fire,"Also try Jstris"},
|
||||
{C.fire,"Also try NullpoMino!"},
|
||||
{C.fire,"Also try TETR.IO!"},
|
||||
{C.fire,"Also try Tetr.js!"},
|
||||
{C.fire,"Also try Tetra Legends!"},
|
||||
{C.purple,"T-spin!"},
|
||||
{C.H,"REGRET!!"},
|
||||
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
|
||||
{C.lY,"COOL!!"},
|
||||
{C.R,"\"DMCA abusing\""},
|
||||
{C.R,"\"Intellectual property law\""},
|
||||
{C.R,"DT",C.Z," Cannon=",C.purple,"TS",C.R,"D",C.Z,"+",C.purple,"TS",C.R,"T",C.Z," Cannon"},
|
||||
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.orange,"RRl ",C.purple,"RRR ",C.purple,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},
|
||||
{C.navy,"Lua",C.Z," No.1"},
|
||||
{C.Z,"What is an ",c.lC,"X-Spin"?},
|
||||
{C.Y,"O-Spin Triple!"},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,7 +196,6 @@ return{
|
||||
-- music="Music & SE",
|
||||
-- about="About",
|
||||
dict="Zictionary",
|
||||
lang="言/A",
|
||||
manual="Manuel",
|
||||
quit="Quitter",
|
||||
},
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
fallback=4,
|
||||
back="Voltar",
|
||||
@@ -219,7 +220,6 @@ return{
|
||||
-- music="Music & SE",
|
||||
-- about="About",
|
||||
dict="Zictionary",
|
||||
lang="言/A",
|
||||
manual="Manual",
|
||||
quit="Saída",
|
||||
},
|
||||
@@ -609,7 +609,7 @@ return{
|
||||
},
|
||||
app_15p={
|
||||
reset="Embaralhar",
|
||||
color="Cor",
|
||||
C="Cor",
|
||||
blind="Cego",
|
||||
slide="Deslizar",
|
||||
pathVis="Mostrar caminho",
|
||||
@@ -843,37 +843,37 @@ return{
|
||||
"Você pode abrir o diretório de save na pagina de Stats.",
|
||||
"Você pode escolher uma orientação pra cada blococan.",
|
||||
"ZS JL T O I",
|
||||
{COLOR.cyan,"Tente também 15puzzle"},
|
||||
{COLOR.cyan,"Tente também Minecraft"},
|
||||
{COLOR.cyan,"Tente também Minesweeper"},
|
||||
{COLOR.cyan,"Tente também osu!"},
|
||||
{COLOR.cyan,"Tente também Phigros"},
|
||||
{COLOR.cyan,"Tente também Rubic's cube"},
|
||||
{COLOR.cyan,"Tente também Terraria"},
|
||||
{COLOR.cyan,"Tente também VVVVVV"},
|
||||
{COLOR.fire,"Tente também Cultris II"},
|
||||
{COLOR.fire,"Tente também Jstris"},
|
||||
{COLOR.fire,"Tente também Nullpomino"},
|
||||
{COLOR.fire,"Tente também Tetr.io"},
|
||||
{COLOR.fire,"Tente também Tetr.js"},
|
||||
{COLOR.fire,"Tente também Tetralegends"},
|
||||
{COLOR.grape,"T-spin!"},
|
||||
{COLOR.gray,"暫定段位:9"},
|
||||
{COLOR.gray,"REGRET!!"},
|
||||
{COLOR.lR,"Z ",COLOR.lG,"S ",COLOR.lSea,"J ",COLOR.lOrange,"L ",COLOR.lGrape,"T ",COLOR.lY,"O ",COLOR.lC,"I"},
|
||||
{COLOR.lY,"LEGAL!!"},
|
||||
{COLOR.R,"\"DMCA abusing\""},
|
||||
{COLOR.R,"\"Intellectual property law\""},
|
||||
{COLOR.R,"DT",COLOR.W," Cannon=",COLOR.grape,"TS",COLOR.R,"D",COLOR.W,"+",COLOR.grape,"TS",COLOR.R,"T",COLOR.W," Cannon"},
|
||||
{COLOR.R,"LrL ",COLOR.G,"RlR ",COLOR.B,"LLr ",COLOR.orange,"RRl ",COLOR.grape,"RRR ",COLOR.grape,"LLL ",COLOR.C,"FFF ",COLOR.Y,"RfR ",COLOR.Y,"RRf ",COLOR.Y,"rFF"},
|
||||
{COLOR.sky,"Lua",COLOR.W," No.1"},
|
||||
{COLOR.W,"What is ",COLOR.lC,"Xspin"},
|
||||
{COLOR.Y,"暫定段位:GM"},
|
||||
{COLOR.Y,"暫定段位:M"},
|
||||
{COLOR.Y,"暫定段位:MK"},
|
||||
{COLOR.Y,"暫定段位:MM"},
|
||||
{COLOR.Y,"暫定段位:MO"},
|
||||
{COLOR.Y,"暫定段位:MV"},
|
||||
{COLOR.Y,"O-spin Triple!"},
|
||||
{C.C,"Tente também 15puzzle"},
|
||||
{C.C,"Tente também Minecraft"},
|
||||
{C.C,"Tente também Minesweeper"},
|
||||
{C.C,"Tente também osu!"},
|
||||
{C.C,"Tente também Phigros"},
|
||||
{C.C,"Tente também Rubic's cube"},
|
||||
{C.C,"Tente também Terraria"},
|
||||
{C.C,"Tente também VVVVVV"},
|
||||
{C.F,"Tente também Cultris II"},
|
||||
{C.F,"Tente também Jstris"},
|
||||
{C.F,"Tente também Nullpomino"},
|
||||
{C.F,"Tente também Tetr.io"},
|
||||
{C.F,"Tente também Tetr.js"},
|
||||
{C.F,"Tente também Tetralegends"},
|
||||
{C.H,"暫定段位:9"},
|
||||
{C.H,"REGRET!!"},
|
||||
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
|
||||
{C.lY,"LEGAL!!"},
|
||||
{C.N,"Lua",C.Z," No.1"},
|
||||
{C.P,"T-spin!"},
|
||||
{C.R,"\"DMCA abusing\""},
|
||||
{C.R,"\"Intellectual property law\""},
|
||||
{C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"},
|
||||
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},
|
||||
{C.Z,"What is ",C.lC,"Xspin"},
|
||||
{C.Y,"暫定段位:GM"},
|
||||
{C.Y,"暫定段位:M"},
|
||||
{C.Y,"暫定段位:MK"},
|
||||
{C.Y,"暫定段位:MM"},
|
||||
{C.Y,"暫定段位:MO"},
|
||||
{C.Y,"暫定段位:MV"},
|
||||
{C.Y,"O-spin Triple!"},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,7 +197,6 @@ return{
|
||||
music="Música y SFX",
|
||||
about="Acerca del Juego",
|
||||
dict="Zictionary",
|
||||
lang="言/A",
|
||||
manual="Manual",
|
||||
quit="Salir",
|
||||
},
|
||||
|
||||
@@ -101,7 +101,6 @@ return{
|
||||
music="~~~ & =><=",
|
||||
about="?",
|
||||
dict="z",
|
||||
lang="言/A",
|
||||
manual="???",
|
||||
quit="X",
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
local c=COLOR
|
||||
local C=COLOR
|
||||
return{
|
||||
back="返回",
|
||||
anykey="按任意键继续",
|
||||
@@ -219,7 +219,6 @@ return{
|
||||
music="音乐&音效",
|
||||
about="关于",
|
||||
dict="小Z词典",
|
||||
lang="言/A",
|
||||
manual="说明书",
|
||||
quit="退出",
|
||||
},
|
||||
@@ -1013,91 +1012,91 @@ return{
|
||||
"Z酱累了,Z酱不想更新",
|
||||
"Z酱只是个写代码的,懂什么方块",
|
||||
"Z块等身抱枕来一个(x",
|
||||
{c.aqua,"AQUA"},
|
||||
{c.B,"BLUE"},
|
||||
{c.C,"<PURE ",c.grape,"MEMORY>"},
|
||||
{c.C,"15puzzle好玩!"},
|
||||
{c.C,"魔方好玩!"},
|
||||
{c.C,"扫雷好玩!"},
|
||||
{c.C,"泰拉瑞亚好玩!"},
|
||||
{c.C,"我的世界好玩!"},
|
||||
{c.C,"CYAN"},
|
||||
{c.C,"Orzmic好玩!"},
|
||||
{c.C,"Osu!好玩!"},
|
||||
{c.C,"Phigros好玩!"},
|
||||
{c.C,"VVVVVV好玩!"},
|
||||
{c.fire,"Cultris II也很好玩!"},
|
||||
{c.fire,"FIRE"},
|
||||
{c.fire,"Jstris也很好玩!"},
|
||||
{c.fire,"Nullpomino也很好玩!"},
|
||||
{c.fire,"Tetr.io也很好玩!"},
|
||||
{c.fire,"Tetr.js也很好玩!"},
|
||||
{c.fire,"Tetralegends也很好玩!"},
|
||||
{c.G,"快捷键: Alt+F4=关闭当前窗口"},
|
||||
{c.G,"快捷键: Alt+Tab=切换窗口"},
|
||||
{c.G,"快捷键: backspace=返回上一个文件目录"},
|
||||
{c.G,"快捷键: Ctrl+鼠标滚轮=缩放"},
|
||||
{c.G,"快捷键: Ctrl+A=全选"},
|
||||
{c.G,"快捷键: Ctrl+Alt+Z=查看所有qq消息"},
|
||||
{c.G,"快捷键: Ctrl+D=复制一份"},
|
||||
{c.G,"快捷键: Ctrl+F=查找"},
|
||||
{c.G,"快捷键: Ctrl+Tab=切换标签页"},
|
||||
{c.G,"快捷键: Ctrl+W=关闭当前标签页"},
|
||||
{c.G,"快捷键: shift+del=永久删除文件 (技术人员别杠)"},
|
||||
{c.G,"GREEN"},
|
||||
{c.grape,"GRAPE"},
|
||||
{c.grape,"T-spin!"},
|
||||
{c.grass,"GRASS"},
|
||||
{c.gray,"感谢Phigros提供部分tip模板("},
|
||||
{c.gray,"暂定段位:9"},
|
||||
{c.gray,"REGRET!!"},
|
||||
{c.lime,"LIME"},
|
||||
{c.lC,"26连T2来一个?"},
|
||||
{c.lC,"Xspin",c.W,"是啥"},
|
||||
{c.lGrape,"Naki",c.W," 可爱!"},
|
||||
{c.lGray,"腱鞘炎警告"},
|
||||
{c.lGray,"看起来是个计算器,其实…"},
|
||||
{c.lGray,"没学过编曲,音乐都是自己瞎写的,觉得不好听就去设置关了吧"},
|
||||
{c.lGray,"秘密数字:626"},
|
||||
{c.lGray,"你有一个好"},
|
||||
{c.lGray,"STSD必死"},
|
||||
{c.lGray,"Techmino没有抽卡没有氪金,太良心了"},
|
||||
{c.lR,"Z ",c.lG,"S ",c.lSea,"J ",c.lOrange,"L ",c.lGrape,"T ",c.lY,"O ",c.lC,"I"},
|
||||
{c.lSea,"茶娘",c.W," 可爱!"},
|
||||
{c.lY,"COOL!!"},
|
||||
{c.magenta,"MAGENTA"},
|
||||
{c.orange,"ORANGE"},
|
||||
{c.pink,"PINK"},
|
||||
{c.pink,"uid:225238922"},
|
||||
{c.purple,"PURPLE"},
|
||||
{c.R,"《滥用DMCA》"},
|
||||
{c.R,"《知识产权法》"},
|
||||
{c.R,"本游戏难度上限很高,做好心理准备。"},
|
||||
{c.R,"不要向不感兴趣的路人推荐!!!!!!!!"},
|
||||
{c.R,"不要在上课时玩游戏!"},
|
||||
{c.R,"光敏性癫痫警告"},
|
||||
{c.R,"请在有一定游戏基础之后再学Tspin!不然副作用非常大!"},
|
||||
{c.R,"新人请千万记住,打好基础,不要太早学那些花里胡哨的。"},
|
||||
{c.R,"长时间游戏状态会越来越差!玩久了记得放松一下~"},
|
||||
{c.R,"DD",c.W,"炮=",c.grape,"TS",c.R,"D",c.W,"+",c.grape,"TS",c.R,"D",c.W,"炮"},
|
||||
{c.R,"DT",c.W,"炮=",c.grape,"TS",c.R,"D",c.W,"+",c.grape,"TS",c.R,"T",c.W,"炮"},
|
||||
{c.R,"LrL ",c.G,"RlR ",c.B,"LLr ",c.orange,"RRl ",c.grape,"RRR LLL ",c.C,"FFF ",c.Y,"RfR RRf rFF"},
|
||||
{c.R,"RED"},
|
||||
{c.sea,"SEA"},
|
||||
{c.sky,"Lua",c.W,"天下第一"},
|
||||
{c.sky,"SKY"},
|
||||
{c.W,"1, 2, ",c.C,"⑨",c.W,"!!!!!"},
|
||||
{c.W,"效率药水",c.gray," 效率提升 (8:00)"},
|
||||
{c.W,"协调药水",c.gray," MD减少 II(1:30)"},
|
||||
{c.Y,"暂定段位:GM"},
|
||||
{c.Y,"暂定段位:M"},
|
||||
{c.Y,"暂定段位:MK"},
|
||||
{c.Y,"暂定段位:MM"},
|
||||
{c.Y,"暂定段位:MO"},
|
||||
{c.Y,"暂定段位:MV"},
|
||||
{c.Y,"Miya",c.W," 可爱!"},
|
||||
{c.Y,"O-spin Triple!"},
|
||||
{c.Y,"YELLOW"},
|
||||
{C.A,"AQUA"},
|
||||
{C.B,"BLUE"},
|
||||
{C.C,"<PURE ",C.purple,"MEMORY>"},
|
||||
{C.C,"15puzzle好玩!"},
|
||||
{C.C,"魔方好玩!"},
|
||||
{C.C,"扫雷好玩!"},
|
||||
{C.C,"泰拉瑞亚好玩!"},
|
||||
{C.C,"我的世界好玩!"},
|
||||
{C.C,"CYAN"},
|
||||
{C.C,"Orzmic好玩!"},
|
||||
{C.C,"Osu!好玩!"},
|
||||
{C.C,"Phigros好玩!"},
|
||||
{C.C,"VVVVVV好玩!"},
|
||||
{C.F,"Cultris II也很好玩!"},
|
||||
{C.F,"FIRE"},
|
||||
{C.F,"Jstris也很好玩!"},
|
||||
{C.F,"Nullpomino也很好玩!"},
|
||||
{C.F,"Tetr.io也很好玩!"},
|
||||
{C.F,"Tetr.js也很好玩!"},
|
||||
{C.F,"Tetralegends也很好玩!"},
|
||||
{C.G,"快捷键: Alt+F4=关闭当前窗口"},
|
||||
{C.G,"快捷键: Alt+Tab=切换窗口"},
|
||||
{C.G,"快捷键: backspace=返回上一个文件目录"},
|
||||
{C.G,"快捷键: Ctrl+鼠标滚轮=缩放"},
|
||||
{C.G,"快捷键: Ctrl+A=全选"},
|
||||
{C.G,"快捷键: Ctrl+Alt+Z=查看所有qq消息"},
|
||||
{C.G,"快捷键: Ctrl+D=复制一份"},
|
||||
{C.G,"快捷键: Ctrl+F=查找"},
|
||||
{C.G,"快捷键: Ctrl+Tab=切换标签页"},
|
||||
{C.G,"快捷键: Ctrl+W=关闭当前标签页"},
|
||||
{C.G,"快捷键: shift+del=永久删除文件 (技术人员别杠)"},
|
||||
{C.G,"GREEN"},
|
||||
{C.H,"感谢Phigros提供部分tip模板("},
|
||||
{C.H,"暂定段位:9"},
|
||||
{C.H,"REGRET!!"},
|
||||
{C.jade,"JADE"},
|
||||
{C.lC,"26连T2来一个?"},
|
||||
{C.lC,"Xspin",C.Z,"是啥"},
|
||||
{C.lH,"腱鞘炎警告"},
|
||||
{C.lH,"看起来是个计算器,其实…"},
|
||||
{C.lH,"没学过编曲,音乐都是自己瞎写的,觉得不好听就去设置关了吧"},
|
||||
{C.lH,"秘密数字:626"},
|
||||
{C.lH,"你有一个好"},
|
||||
{C.lH,"STSD必死"},
|
||||
{C.lH,"Techmino没有抽卡没有氪金,太良心了"},
|
||||
{C.L,"LIME"},
|
||||
{C.lP,"Naki",C.Z," 可爱!"},
|
||||
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
|
||||
{C.lS,"茶娘",C.Z," 可爱!"},
|
||||
{C.lY,"COOL!!"},
|
||||
{C.M,"MAGENTA"},
|
||||
{C.N,"Lua",C.Z,"天下第一"},
|
||||
{C.N,"NAVY"},
|
||||
{C.O,"ORANGE"},
|
||||
{C.P,"PURPLE"},
|
||||
{C.P,"T-spin!"},
|
||||
{C.R,"《滥用DMCA》"},
|
||||
{C.R,"《知识产权法》"},
|
||||
{C.R,"本游戏难度上限很高,做好心理准备。"},
|
||||
{C.R,"不要向不感兴趣的路人推荐!!!!!!!!"},
|
||||
{C.R,"不要在上课时玩游戏!"},
|
||||
{C.R,"光敏性癫痫警告"},
|
||||
{C.R,"请在有一定游戏基础之后再学Tspin!不然副作用非常大!"},
|
||||
{C.R,"新人请千万记住,打好基础,不要太早学那些花里胡哨的。"},
|
||||
{C.R,"长时间游戏状态会越来越差!玩久了记得放松一下~"},
|
||||
{C.R,"DD",C.Z,"炮=",C.purple,"TS",C.R,"D",C.Z,"+",C.purple,"TS",C.R,"D",C.Z,"炮"},
|
||||
{C.R,"DT",C.Z,"炮=",C.purple,"TS",C.R,"D",C.Z,"+",C.purple,"TS",C.R,"T",C.Z,"炮"},
|
||||
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.orange,"RRl ",C.purple,"RRR LLL ",C.C,"FFF ",C.Y,"RfR RRf rFF"},
|
||||
{C.R,"RED"},
|
||||
{C.S,"SEA"},
|
||||
{C.V,"VIOLET"},
|
||||
{C.W,"uid:225238922"},
|
||||
{C.W,"WINE"},
|
||||
{C.Y,"暂定段位:GM"},
|
||||
{C.Y,"暂定段位:M"},
|
||||
{C.Y,"暂定段位:MK"},
|
||||
{C.Y,"暂定段位:MM"},
|
||||
{C.Y,"暂定段位:MO"},
|
||||
{C.Y,"暂定段位:MV"},
|
||||
{C.Y,"Miya",C.Z," 可爱!"},
|
||||
{C.Y,"O-spin Triple!"},
|
||||
{C.Y,"YELLOW"},
|
||||
{C.Z,"1, 2, ",C.C,"⑨",C.Z,"!!!!!"},
|
||||
{C.Z,"效率药水",C.H," 效率提升 (8:00)"},
|
||||
{C.Z,"协调药水",C.H," MD减少 II(1:30)"},
|
||||
-- "Z酱 可爱!",
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
return SPLITSTR([=[
|
||||
return STRING.split([=[
|
||||
Gameplay:
|
||||
The system will provide you with tetrominoes (4-block pieces),
|
||||
with a total of 7 types, and the player needs to control them
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return SPLITSTR([=[
|
||||
return STRING.split([=[
|
||||
游戏方法:
|
||||
系统会提供的一个个四连骨牌("方块",总共7种)
|
||||
玩家需要控制(左右移动和旋转90,180,270度)这些骨牌直到下落到场地底部,锁定
|
||||
|
||||
@@ -302,7 +302,7 @@ rankColor={
|
||||
}
|
||||
|
||||
minoColor={
|
||||
COLOR.red, COLOR.fire, COLOR.orange, COLOR.yellow, COLOR.lime, COLOR.grass, COLOR.green, COLOR.aqua,
|
||||
COLOR.cyan, COLOR.sky, COLOR.sea, COLOR.blue, COLOR.purple, COLOR.grape, COLOR.magenta, COLOR.pink,
|
||||
COLOR.dGray,COLOR.black,COLOR.lYellow, COLOR.gray, COLOR.lGray, COLOR.dPurple, COLOR.dRed, COLOR.dGreen,
|
||||
COLOR.R,COLOR.F,COLOR.O,COLOR.Y,COLOR.L,COLOR.J,COLOR.G,COLOR.A,
|
||||
COLOR.C,COLOR.N,COLOR.S,COLOR.B,COLOR.V,COLOR.P,COLOR.M,COLOR.W,
|
||||
COLOR.dH,COLOR.D,COLOR.lY,COLOR.H,COLOR.lH,COLOR.dV,COLOR.dR,COLOR.dG,
|
||||
}
|
||||
@@ -49,7 +49,7 @@ return{
|
||||
mText(drawableText.nextWave,69,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -56,7 +56,7 @@ return{
|
||||
mText(drawableText.nextWave,69,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -23,7 +23,7 @@ return{
|
||||
mText(drawableText.atk,69,380)
|
||||
end,
|
||||
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -23,7 +23,7 @@ return{
|
||||
mText(drawableText.atk,69,380)
|
||||
end,
|
||||
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -22,7 +22,7 @@ return{
|
||||
mText(drawableText.atk,69,380)
|
||||
end,
|
||||
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -23,7 +23,7 @@ return{
|
||||
mText(drawableText.atk,69,380)
|
||||
end,
|
||||
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local format=string.format
|
||||
return{
|
||||
color=COLOR.lGray,
|
||||
color=COLOR.lH,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
holdCount=0,
|
||||
|
||||
@@ -20,7 +20,7 @@ return{
|
||||
mStr(P.stat.clears[4],69,340)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -26,7 +26,7 @@ return{
|
||||
gc.draw(IMG.electric,124,106,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -27,7 +27,7 @@ return{
|
||||
gc.draw(IMG.electric,124,106,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -23,7 +23,7 @@ return{
|
||||
gc.draw(IMG.electric,124,106,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row,200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -26,7 +26,7 @@ return{
|
||||
gc.draw(IMG.electric,124,106,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row,100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -16,7 +16,7 @@ return{
|
||||
load=function()
|
||||
PLY.newPlayer(1)
|
||||
if SETTING.sfx_spawn==0 then
|
||||
LOG.print(text.switchSpawnSFX,COLOR.yellow)
|
||||
LOG.print(text.switchSpawnSFX,COLOR.Y)
|
||||
end
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
@@ -55,7 +55,7 @@ return{
|
||||
mStr(P.stat.clears[4],69,340)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row,40),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -61,7 +61,7 @@ return{
|
||||
mText(drawableText.maxcmb,69,450)
|
||||
end,
|
||||
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Combo "..TIMESTR(D[2])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
|
||||
|
||||
@@ -59,7 +59,7 @@ return{
|
||||
mText(drawableText.maxcmb,69,450)
|
||||
end,
|
||||
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Combo "..TIMESTR(D[2])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
|
||||
|
||||
@@ -54,7 +54,7 @@ return{
|
||||
mText(drawableText.rpm,69,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -54,7 +54,7 @@ return{
|
||||
mText(drawableText.rpm,69,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -27,7 +27,7 @@ return{
|
||||
mStr(100-P.stat.dig,69,265)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -24,7 +24,7 @@ return{
|
||||
mStr(10-P.stat.dig,69,265)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -27,7 +27,7 @@ return{
|
||||
mStr(400-P.stat.dig,69,265)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -27,7 +27,7 @@ return{
|
||||
mStr(40-P.stat.dig,69,265)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -91,7 +91,7 @@ return{
|
||||
mStr(R>=0 and R or 0,69,265)
|
||||
end,
|
||||
score=function(P)return{math.min(P.stat.row,100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
mStr(R>=0 and R or 0,69,265)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row,100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -36,7 +36,7 @@ return{
|
||||
gc.rectangle("fill",25,375,90,4)
|
||||
end,
|
||||
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
gc.rectangle("fill",25,375,90,4)
|
||||
end,
|
||||
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..TIMESTR(D[2])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
|
||||
|
||||
@@ -66,7 +66,7 @@ return{
|
||||
gc.rectangle("fill",25,375,90,4)
|
||||
end,
|
||||
score=function(P)return{P.modeData.pt,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."P "..TIMESTR(D[2])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,
|
||||
|
||||
@@ -68,7 +68,7 @@ return{
|
||||
gc.rectangle("fill",25,375,90,4)
|
||||
end,
|
||||
score=function(P)return{P.modeData.pt,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."P "..TIMESTR(D[2])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,
|
||||
|
||||
@@ -40,7 +40,7 @@ local function score(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=COLOR.lGray,
|
||||
color=COLOR.lH,
|
||||
env={
|
||||
noTele=true,
|
||||
das=5,arr=1,
|
||||
@@ -66,7 +66,7 @@ return{
|
||||
gc.rectangle("fill",25,375,90,4)
|
||||
end,
|
||||
score=function(P)return{P.modeData.pt,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."P "..TIMESTR(D[2])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
|
||||
|
||||
@@ -155,7 +155,7 @@ return{
|
||||
gc.rectangle("fill",25,375,90,4)
|
||||
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 "..TIMESTR(D[2])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
|
||||
|
||||
@@ -6,7 +6,7 @@ return{
|
||||
pushSpeed=5,
|
||||
garbageSpeed=2,
|
||||
noMod=true,
|
||||
bgm={"race","push","secret8th","secret7th","waterfall","oxygen","shining terminal","storm","rockblock","magicblock","cruelty"},
|
||||
bgm={"race","battle","push","secret8th","secret7th","waterfall","oxygen","shining terminal","storm","rockblock","magicblock","cruelty"},
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1)
|
||||
|
||||
@@ -22,7 +22,7 @@ return{
|
||||
mText(drawableText.pc,69,432)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..TIMESTR(D[2])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
|
||||
|
||||
@@ -22,7 +22,7 @@ return{
|
||||
mText(drawableText.pc,69,432)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..TIMESTR(D[2])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
|
||||
|
||||
@@ -20,7 +20,7 @@ return{
|
||||
mText(drawableText.pc,69,432)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..TIMESTR(D[2])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
|
||||
|
||||
@@ -68,7 +68,7 @@ return{
|
||||
mText(drawableText.pc,69,412)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..TIMESTR(D[2])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
|
||||
|
||||
@@ -59,7 +59,7 @@ return{
|
||||
mText(drawableText.pc,69,412)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..TIMESTR(D[2])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
|
||||
|
||||
@@ -66,7 +66,7 @@ return{
|
||||
gc.circle("line",69,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 "..TIMESTR(D[2])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
|
||||
|
||||
@@ -66,7 +66,7 @@ return{
|
||||
gc.circle("line",69,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 "..TIMESTR(D[2])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
|
||||
|
||||
@@ -72,7 +72,7 @@ return{
|
||||
gc.circle("line",69,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 "..TIMESTR(D[2])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
|
||||
|
||||
@@ -25,7 +25,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("CC",7,1,true,10000))
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..TIMESTR(D[2])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
|
||||
|
||||
@@ -25,7 +25,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("CC",7,2,true,16000))
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..TIMESTR(D[2])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
|
||||
|
||||
@@ -25,7 +25,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("CC",7,3,true,26000))
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..TIMESTR(D[2])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
|
||||
|
||||
@@ -25,7 +25,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("CC",7,1,true,13000))
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..TIMESTR(D[2])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
|
||||
|
||||
@@ -25,7 +25,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("CC",7,3,true,40000))
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..TIMESTR(D[2])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
|
||||
|
||||
@@ -12,7 +12,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("9S",4))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1])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
|
||||
|
||||
@@ -12,7 +12,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("9S",6))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1])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
|
||||
|
||||
@@ -4,7 +4,7 @@ return{
|
||||
life=2,
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="bg2",bgm="race",
|
||||
bg="bg2",bgm="battle",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
@@ -12,7 +12,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("CC",6,2,true,30000))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1])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
|
||||
|
||||
@@ -12,7 +12,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("9S",5))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1])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
|
||||
|
||||
@@ -4,7 +4,7 @@ return{
|
||||
life=2,
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="bg2",bgm="race",
|
||||
bg="bg2",bgm="battle",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
@@ -12,7 +12,7 @@ return{
|
||||
PLY.newAIPlayer(2,AIBUILDER("CC",7,3,true,50000))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1])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
|
||||
|
||||
@@ -18,7 +18,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -17,7 +17,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
return{
|
||||
color=COLOR.lGray,
|
||||
color=COLOR.lH,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
dropPiece=function(P)if P.stat.row>=1000 then P:win("finish")end end, bg="rainbow",bgm="push",
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -16,7 +16,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -16,7 +16,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -16,7 +16,7 @@ return{
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return TIMESTR(D[1]).." "..D[2].." Pieces"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
|
||||
|
||||
@@ -32,7 +32,7 @@ return{
|
||||
mText(drawableText.wave,69,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -38,7 +38,7 @@ return{
|
||||
mText(drawableText.wave,69,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
mText(drawableText.wave,69,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -37,7 +37,7 @@ return{
|
||||
mText(drawableText.wave,69,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -39,7 +39,7 @@ return{
|
||||
mText(drawableText.wave,69,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.wave,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..TIMESTR(D[2])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
|
||||
|
||||
@@ -22,7 +22,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -34,7 +34,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -20,7 +20,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -31,7 +31,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -20,7 +20,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -31,7 +31,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -20,7 +20,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -31,7 +31,7 @@ return{
|
||||
mText(drawableText.eff,69,363)
|
||||
end,
|
||||
score=function(P)return{P.stat.atk<=200 and math.floor(P.stat.atk)or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Attack "..TIMESTR(D[2])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
|
||||
|
||||
@@ -27,7 +27,7 @@ return{
|
||||
mText(drawableText.tsd,69,315)
|
||||
end,
|
||||
score=function(P)return{P.modeData.tsd,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."TSD "..TIMESTR(D[2])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
|
||||
|
||||
@@ -28,7 +28,7 @@ return{
|
||||
mText(drawableText.tsd,69,315)
|
||||
end,
|
||||
score=function(P)return{P.modeData.tsd,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."TSD "..TIMESTR(D[2])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
|
||||
|
||||
@@ -28,7 +28,7 @@ return{
|
||||
mText(drawableText.tsd,69,315)
|
||||
end,
|
||||
score=function(P)return{P.modeData.tsd,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."TSD "..TIMESTR(D[2])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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local gc=love.graphics
|
||||
local warnTime={60,90,105,115,116,117,118,119,120}
|
||||
return{
|
||||
color=COLOR.lGray,
|
||||
color=COLOR.lH,
|
||||
env={
|
||||
noTele=true,
|
||||
minarr=1,minsdarr=1,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
return{
|
||||
color=COLOR.lGray,
|
||||
color=COLOR.lH,
|
||||
env={
|
||||
drop=120,lock=120,
|
||||
infHold=true,
|
||||
|
||||
@@ -218,11 +218,9 @@ end
|
||||
|
||||
--WS tick funcs
|
||||
function NET.updateWS_app()
|
||||
local retryTime=3
|
||||
while true do
|
||||
YIELD()
|
||||
local status=WS.status("app")
|
||||
if status=="running"then
|
||||
if WS.status("app")=="running"then
|
||||
local message,op=WS.read("app")
|
||||
if message then
|
||||
if op=="ping"then
|
||||
@@ -243,15 +241,15 @@ function NET.updateWS_app()
|
||||
end
|
||||
end
|
||||
if VERSION.code<res.newestCode then
|
||||
LOG.print(text.oldVersion:gsub("$1",res.newestName),180,COLOR.sky)
|
||||
LOG.print(text.oldVersion:gsub("$1",res.newestName),180,COLOR.N)
|
||||
end
|
||||
LOG.print(res.notice,300,COLOR.sky)
|
||||
LOG.print(res.notice,300,COLOR.N)
|
||||
elseif res.action==0 then--Get new version info
|
||||
--?
|
||||
elseif res.action==1 then--Get notice
|
||||
--?
|
||||
elseif res.action==2 then--Register
|
||||
LOG.print(res.data.message,300,COLOR.sky)
|
||||
LOG.print(res.data.message,300,COLOR.N)
|
||||
if SCN.cur=="register"then SCN.back()end
|
||||
NET.unlock("register")
|
||||
end
|
||||
@@ -260,11 +258,6 @@ function NET.updateWS_app()
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif status=="dead"then
|
||||
retryTime=retryTime-1
|
||||
if retryTime==0 then return end
|
||||
for _=1,180 do YIELD()end
|
||||
WS.connect("app","/app")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
167
parts/patron.lua
167
parts/patron.lua
@@ -106,410 +106,415 @@ return{
|
||||
font=65,
|
||||
color=C.rainbow_dark,
|
||||
},
|
||||
{
|
||||
name="Notypey",
|
||||
font=65,
|
||||
color=C.rainbow_dark,
|
||||
},
|
||||
|
||||
{
|
||||
name="八零哥",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="蕴空之灵",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="gggf127",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="solainu",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="ThTsOd",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="Fireboos",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="星月千雪",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="10元",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="立斐",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="Deep_Sea",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="时雪",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="yyangdid",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="sfqr",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="心痕",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="Sasoric",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="夏小亚",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="仁参",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="乐↗乐↘",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="喜欢c4w的ztcjoin",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="面包",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="蠢熏",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="潘一栗",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="Lied",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="星街书婉",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="祝西",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="829",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="e m*12",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="我永远爱白银诺艾尔(鹏",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="PCX",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="kagura77",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="呆喂",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="GlowingEmbers",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="轩辕辚",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="HimuroAki",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="TCV100",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="tech有养成系统了@7065",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="HAGE KANOBU",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="闪电和拐棍",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="葡萄味的曼妥思",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="蓝绿",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="天生的魔法师",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="琳雨空",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="T8779.易缄",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="诗情画意",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="星姐阿夸双推Man暗炎",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="[*炎]",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="[*Y]",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="aaa222",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="[**城]",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="cnDD",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="红桃老给",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="昭庭玲秋",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="旋树墩",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="火花工作室",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="Cosine",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="沁音的芝麻王",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="SuperJH",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="天上_飞",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="uiro",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="宇酱",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="[W*N]",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="[Z*.]",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="[*之]",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="白衣",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="给虫",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="我永远喜欢樱花小姐",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="xb",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="flaribbit",
|
||||
font=25,
|
||||
color=C.dY,
|
||||
color=C.dYellow,
|
||||
},
|
||||
{
|
||||
name="工口发动机",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="金海星",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="tatianyi",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="[*瞳]",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="彼方云城",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="pm250",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="nanaya",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="黑红蓝白",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="细胞",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="流光梦",
|
||||
font=25,
|
||||
color=C.dSky,
|
||||
color=C.dNavy,
|
||||
},
|
||||
{
|
||||
name="George2003",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="竹月可安",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
{
|
||||
name="T7887库德里尔",
|
||||
font=25,
|
||||
color=C.gray,
|
||||
color=C.H,
|
||||
},
|
||||
}
|
||||
@@ -13,11 +13,11 @@ local setFont,mStr=setFont,mStr
|
||||
local TIME=TIME
|
||||
|
||||
local frameColorList={
|
||||
[0]=COLOR.white,
|
||||
COLOR.lGreen,
|
||||
COLOR.lBlue,
|
||||
COLOR.lPurple,
|
||||
COLOR.lOrange,
|
||||
[0]=COLOR.Z,
|
||||
COLOR.lG,
|
||||
COLOR.lB,
|
||||
COLOR.lV,
|
||||
COLOR.lO,
|
||||
}
|
||||
--local function drawCell(y,x,id)gc_draw(SKIN.curText[id],30*x-30,-30*y)end
|
||||
local function stencilBoard()gc_rectangle("fill",0,-10,300,610)end
|
||||
@@ -218,11 +218,11 @@ local function drawBoarders(P)
|
||||
gc_rectangle("line",-16,-3,15,604)--B2b bar boarder
|
||||
end
|
||||
local attackColor={
|
||||
{COLOR.dGray,COLOR.white},
|
||||
{COLOR.gray,COLOR.white},
|
||||
{COLOR.lPurple,COLOR.white},
|
||||
{COLOR.lRed,COLOR.white},
|
||||
{COLOR.dGreen,COLOR.cyan},
|
||||
{COLOR.dH,COLOR.Z},
|
||||
{COLOR.H,COLOR.Z},
|
||||
{COLOR.lV,COLOR.Z},
|
||||
{COLOR.lR,COLOR.Z},
|
||||
{COLOR.dG,COLOR.C},
|
||||
}
|
||||
local function drawBuffer(P)
|
||||
local h=0
|
||||
@@ -261,7 +261,7 @@ local function drawB2Bbar(P)
|
||||
local a,b=P.b2b,P.b2b1 if a>b then a,b=b,a end
|
||||
gc_setColor(.8,1,.2)
|
||||
gc_rectangle("fill",-14,599,11,-b*.6)
|
||||
gc_setColor(P.b2b<40 and COLOR.white or P.b2b<=800 and COLOR.lRed or COLOR.lBlue)
|
||||
gc_setColor(P.b2b<40 and COLOR.Z or P.b2b<=800 and COLOR.lR or COLOR.lB)
|
||||
gc_rectangle("fill",-14,599,11,-a*.6)
|
||||
if TIME()%.5<.3 then
|
||||
gc_setColor(1,1,1)
|
||||
@@ -684,8 +684,8 @@ function draw.norm(P)
|
||||
gc_setColor(0,0,0,.3)
|
||||
gc_print(P.score1,18,509)
|
||||
gc_print(tm,18,539)
|
||||
gc_setColor(COLOR.lYellow)gc_print(P.score1,20,510)
|
||||
gc_setColor(COLOR.sky)gc_print(tm,20,540)
|
||||
gc_setColor(COLOR.lY)gc_print(P.score1,20,510)
|
||||
gc_setColor(COLOR.N)gc_print(tm,20,540)
|
||||
|
||||
drawFinesseCombo_norm(P)
|
||||
drawLife(P.life)
|
||||
@@ -825,8 +825,8 @@ function draw.norm_remote(P)
|
||||
gc_setColor(0,0,0,.3)
|
||||
gc_print(P.score1,18,509)
|
||||
gc_print(tm,18,539)
|
||||
gc_setColor(COLOR.lYellow)gc_print(P.score1,20,510)
|
||||
gc_setColor(COLOR.sky)gc_print(tm,20,540)
|
||||
gc_setColor(COLOR.lY)gc_print(P.score1,20,510)
|
||||
gc_setColor(COLOR.N)gc_print(tm,20,540)
|
||||
|
||||
drawFinesseCombo_remote(P)
|
||||
drawLife(P.life)
|
||||
|
||||
@@ -117,16 +117,16 @@ local function tapBoard(x,y,key)
|
||||
if checkBoard(b)then
|
||||
state=2
|
||||
time=TIME()-startTime
|
||||
if time<1 then LOG.print("不是人",COLOR.lBlue)
|
||||
elseif time<2 then LOG.print("还是人",COLOR.lBlue)
|
||||
elseif time<3 then LOG.print("神仙",COLOR.lBlue)
|
||||
elseif time<5 then LOG.print("太强了",COLOR.lBlue)
|
||||
elseif time<7.5 then LOG.print("很强",COLOR.lBlue)
|
||||
elseif time<10 then LOG.print("可以的",COLOR.lBlue)
|
||||
elseif time<20 then LOG.print("马上入门了",COLOR.lBlue)
|
||||
elseif time<30 then LOG.print("入门不远了",COLOR.lBlue)
|
||||
elseif time<60 then LOG.print("多加练习",COLOR.lBlue)
|
||||
else LOG.print("第一次玩?加油",COLOR.lBlue)
|
||||
if time<1 then LOG.print("不是人",COLOR.lB)
|
||||
elseif time<2 then LOG.print("还是人",COLOR.lB)
|
||||
elseif time<3 then LOG.print("神仙",COLOR.lB)
|
||||
elseif time<5 then LOG.print("太强了",COLOR.lB)
|
||||
elseif time<7.5 then LOG.print("很强",COLOR.lB)
|
||||
elseif time<10 then LOG.print("可以的",COLOR.lB)
|
||||
elseif time<20 then LOG.print("马上入门了",COLOR.lB)
|
||||
elseif time<30 then LOG.print("入门不远了",COLOR.lB)
|
||||
elseif time<60 then LOG.print("多加练习",COLOR.lB)
|
||||
else LOG.print("第一次玩?加油",COLOR.lB)
|
||||
end
|
||||
SFX.play("win")
|
||||
return
|
||||
@@ -201,66 +201,66 @@ end
|
||||
|
||||
local frontColor={
|
||||
[0]={
|
||||
COLOR.lRed,COLOR.lRed,COLOR.lRed,COLOR.lRed,
|
||||
COLOR.lGreen,COLOR.lBlue,COLOR.lBlue,COLOR.lBlue,
|
||||
COLOR.lGreen,COLOR.lYellow,COLOR.lPurple,COLOR.lPurple,
|
||||
COLOR.lGreen,COLOR.lYellow,COLOR.lPurple,COLOR.lPurple,
|
||||
COLOR.lR,COLOR.lR,COLOR.lR,COLOR.lR,
|
||||
COLOR.lG,COLOR.lB,COLOR.lB,COLOR.lB,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
},--Colored(rank)
|
||||
{
|
||||
COLOR.lRed,COLOR.lRed,COLOR.lRed,COLOR.lRed,
|
||||
COLOR.lOrange,COLOR.lYellow,COLOR.lYellow,COLOR.lYellow,
|
||||
COLOR.lOrange,COLOR.lGreen,COLOR.lBlue,COLOR.lBlue,
|
||||
COLOR.lOrange,COLOR.lGreen,COLOR.lBlue,COLOR.lBlue,
|
||||
COLOR.lR,COLOR.lR,COLOR.lR,COLOR.lR,
|
||||
COLOR.lO,COLOR.lY,COLOR.lY,COLOR.lY,
|
||||
COLOR.lO,COLOR.lG,COLOR.lB,COLOR.lB,
|
||||
COLOR.lO,COLOR.lG,COLOR.lB,COLOR.lB,
|
||||
},--Rainbow(rank)
|
||||
{
|
||||
COLOR.lRed,COLOR.lRed,COLOR.lRed,COLOR.lRed,
|
||||
COLOR.lBlue,COLOR.lBlue,COLOR.lBlue,COLOR.lBlue,
|
||||
COLOR.lGreen,COLOR.lYellow,COLOR.lPurple,COLOR.lPurple,
|
||||
COLOR.lGreen,COLOR.lYellow,COLOR.lPurple,COLOR.lPurple,
|
||||
COLOR.lR,COLOR.lR,COLOR.lR,COLOR.lR,
|
||||
COLOR.lB,COLOR.lB,COLOR.lB,COLOR.lB,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV,
|
||||
},--Colored(row)
|
||||
{
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
},--Gray
|
||||
{
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.white,COLOR.white,COLOR.white,COLOR.white,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z,
|
||||
},--Black
|
||||
}
|
||||
local backColor={
|
||||
[0]={
|
||||
COLOR.dRed,COLOR.dRed,COLOR.dRed,COLOR.dRed,
|
||||
COLOR.dGreen,COLOR.dBlue,COLOR.dBlue,COLOR.dBlue,
|
||||
COLOR.dGreen,COLOR.dYellow,COLOR.dPurple,COLOR.dPurple,
|
||||
COLOR.dGreen,COLOR.dYellow,COLOR.dPurple,COLOR.dPurple,
|
||||
COLOR.dR,COLOR.dR,COLOR.dR,COLOR.dR,
|
||||
COLOR.dG,COLOR.dB,COLOR.dB,COLOR.dB,
|
||||
COLOR.dG,COLOR.dY,COLOR.dV,COLOR.dV,
|
||||
COLOR.dG,COLOR.dY,COLOR.dV,COLOR.dV,
|
||||
},--Colored(rank)
|
||||
{
|
||||
COLOR.dRed,COLOR.dRed,COLOR.dRed,COLOR.dRed,
|
||||
COLOR.dOrange,COLOR.dYellow,COLOR.dYellow,COLOR.dYellow,
|
||||
COLOR.dOrange,COLOR.dGreen,COLOR.dBlue,COLOR.dBlue,
|
||||
COLOR.dOrange,COLOR.dGreen,COLOR.dBlue,COLOR.dBlue,
|
||||
COLOR.dR,COLOR.dR,COLOR.dR,COLOR.dR,
|
||||
COLOR.dO,COLOR.dY,COLOR.dY,COLOR.dY,
|
||||
COLOR.dO,COLOR.dG,COLOR.dB,COLOR.dB,
|
||||
COLOR.dO,COLOR.dG,COLOR.dB,COLOR.dB,
|
||||
},--Rainbow(rank)
|
||||
{
|
||||
COLOR.dRed,COLOR.dRed,COLOR.dRed,COLOR.dRed,
|
||||
COLOR.dBlue,COLOR.dBlue,COLOR.dBlue,COLOR.dBlue,
|
||||
COLOR.dGreen,COLOR.dYellow,COLOR.dPurple,COLOR.dPurple,
|
||||
COLOR.dGreen,COLOR.dYellow,COLOR.dPurple,COLOR.dPurple,
|
||||
COLOR.dR,COLOR.dR,COLOR.dR,COLOR.dR,
|
||||
COLOR.dB,COLOR.dB,COLOR.dB,COLOR.dB,
|
||||
COLOR.dG,COLOR.dY,COLOR.dV,COLOR.dV,
|
||||
COLOR.dG,COLOR.dY,COLOR.dV,COLOR.dV,
|
||||
},--Colored(row)
|
||||
{
|
||||
COLOR.dGray,COLOR.dGray,COLOR.dGray,COLOR.dGray,
|
||||
COLOR.dGray,COLOR.dGray,COLOR.dGray,COLOR.dGray,
|
||||
COLOR.dGray,COLOR.dGray,COLOR.dGray,COLOR.dGray,
|
||||
COLOR.dGray,COLOR.dGray,COLOR.dGray,COLOR.dGray,
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH,
|
||||
},--Gray
|
||||
{
|
||||
COLOR.black,COLOR.black,COLOR.black,COLOR.black,
|
||||
COLOR.black,COLOR.black,COLOR.black,COLOR.black,
|
||||
COLOR.black,COLOR.black,COLOR.black,COLOR.black,
|
||||
COLOR.black,COLOR.black,COLOR.black,COLOR.black,
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
COLOR.D,COLOR.D,COLOR.D,COLOR.D,
|
||||
},--Black
|
||||
}
|
||||
function scene.draw()
|
||||
@@ -316,7 +316,7 @@ end
|
||||
|
||||
local function Gaming()return state==1 end
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="reset", x=160,y=100,w=180,h=100,color="lGreen",font=40,code=pressKey"space"},
|
||||
WIDGET.newButton{name="reset", x=160,y=100,w=180,h=100,color="lG", font=40,code=pressKey"space"},
|
||||
WIDGET.newSlider{name="color", x=110,y=250,w=170,unit=4,show=false,font=30,disp=function()return color end, code=function(v)if state~=1 then color=v end end,hide=Gaming},
|
||||
WIDGET.newSwitch{name="blind", x=240,y=330,w=60, font=40,disp=function()return blind end, code=pressKey"w", hide=Gaming},
|
||||
WIDGET.newSwitch{name="slide", x=240,y=420,w=60, font=40,disp=function()return slide end, code=pressKey"e", hide=Gaming},
|
||||
|
||||
@@ -38,7 +38,7 @@ local score
|
||||
1/2/3/...: 2/4/8/... tile
|
||||
]]
|
||||
local tileColor={
|
||||
[-1]=COLOR.black,
|
||||
[-1]=COLOR.D,
|
||||
[0]={.5,.3,.3},
|
||||
{.93,.89,.85},
|
||||
{.93,.88,.78},
|
||||
@@ -370,8 +370,8 @@ function scene.draw()
|
||||
"Y"
|
||||
)or(
|
||||
repeater.seq[i]==repeater.last[i]and
|
||||
"gray"or
|
||||
"white"
|
||||
"H"or
|
||||
"Z"
|
||||
)
|
||||
])
|
||||
rectangle("line",990,305+60*i,220,50)
|
||||
@@ -405,16 +405,16 @@ function scene.draw()
|
||||
local N=board[i]
|
||||
if i~=prevPos or prevSpawnTime==1 then
|
||||
if not blind or i==prevPos then
|
||||
setColor(tileColor[N]or COLOR.black)
|
||||
setColor(tileColor[N]or COLOR.D)
|
||||
rectangle("fill",x*160+163,y*160-117,154,154,15)
|
||||
if N>=0 then
|
||||
setColor(N<3 and COLOR.black or COLOR.W)
|
||||
setColor(N<3 and COLOR.D or COLOR.Z)
|
||||
local fontSize=tileFont[N]
|
||||
setFont(fontSize)
|
||||
mStr(tileName[N],320+(x-.5)*160,40+(y-.5)*160-fontSize*.7)
|
||||
end
|
||||
else
|
||||
setColor(COLOR.gray)
|
||||
setColor(COLOR.H)
|
||||
rectangle("fill",x*160+163,y*160-117,154,154,15)
|
||||
end
|
||||
else
|
||||
@@ -480,19 +480,19 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="reset", x=155,y=100,w=180,h=100,color="lGreen",font=40,code=pressKey"r"},
|
||||
WIDGET.newButton{name="reset", x=155,y=100,w=180,h=100,color="lG",font=40,code=pressKey"r"},
|
||||
WIDGET.newSwitch{name="blind", x=240,y=300,w=60, font=40,disp=function()return blind end, code=pressKey"q",hide=function()return state==1 end},
|
||||
WIDGET.newSwitch{name="tapControl", x=240,y=370,w=60, font=40,disp=function()return tapControl end, code=pressKey"w",hide=function()return state==1 end},
|
||||
|
||||
WIDGET.newKey{name="up", x=155,y=460,w=100,fText="↑",font=50,color="yellow",code=pressKey"up",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="down", x=155,y=660,w=100,fText="↓",font=50,color="yellow",code=pressKey"down",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="left", x=55,y=560,w=100,fText="←",font=50,color="yellow",code=pressKey"left",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="right", x=255,y=560,w=100,fText="→",font=50,color="yellow",code=pressKey"right",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="skip", x=155,y=400,w=100,font=20,color="yellow",code=pressKey"space",hide=function()return state~=1 or not skipper.cd or skipper.cd>0 end},
|
||||
WIDGET.newKey{name="record1", x=1100,y=390,w=220,h=50,fText="",color="gray",code=pressKey"1",hide=function()return state==2 end},
|
||||
WIDGET.newKey{name="record2", x=1100,y=450,w=220,h=50,fText="",color="gray",code=pressKey"2",hide=function()return state==2 end},
|
||||
WIDGET.newKey{name="replay1", x=1245,y=390,w=50,fText="!",color="green",code=pressKey"c1",hide=function()return state==2 or #repeater.seq[1]==0 end},
|
||||
WIDGET.newKey{name="replay2", x=1245,y=450,w=50,fText="!",color="green",code=pressKey"c2",hide=function()return state==2 or #repeater.seq[2]==0 end},
|
||||
WIDGET.newKey{name="up", x=155,y=460,w=100,fText="↑",font=50,color="Y",code=pressKey"up",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="down", x=155,y=660,w=100,fText="↓",font=50,color="Y",code=pressKey"down",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="left", x=55,y=560,w=100,fText="←",font=50,color="Y",code=pressKey"left",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="right", x=255,y=560,w=100,fText="→",font=50,color="Y",code=pressKey"right",hide=function()return tapControl end},
|
||||
WIDGET.newKey{name="skip", x=155,y=400,w=100,font=20,color="Y",code=pressKey"space",hide=function()return state~=1 or not skipper.cd or skipper.cd>0 end},
|
||||
WIDGET.newKey{name="record1", x=1100,y=390,w=220,h=50,fText="",color="H",code=pressKey"1",hide=function()return state==2 end},
|
||||
WIDGET.newKey{name="record2", x=1100,y=450,w=220,h=50,fText="",color="H",code=pressKey"2",hide=function()return state==2 end},
|
||||
WIDGET.newKey{name="replay1", x=1245,y=390,w=50,fText="!",color="G",code=pressKey"c1",hide=function()return state==2 or #repeater.seq[1]==0 end},
|
||||
WIDGET.newKey{name="replay2", x=1245,y=450,w=50,fText="!",color="G",code=pressKey"c2",hide=function()return state==2 or #repeater.seq[2]==0 end},
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=40,code=backScene},
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newSelector{name="level", x=640,y=640,w=200,list={"A_Z","Z_A","Tech1","Tech2","KeyTest1","KeyTest2","Hello","Roll1","Roll2","Roll3","ZZZ","ZXZX","ZMZM","Stair","Stair2","Stair3","BPW"},disp=function()return levelName end,code=function(i)levelName=i;targetString=levels[i]end,hide=function()return state>0 end},
|
||||
WIDGET.newButton{name="reset", x=160,y=100,w=180,h=100,color="lGreen",font=40,code=pressKey"space"},
|
||||
WIDGET.newButton{name="reset", x=160,y=100,w=180,h=100,color="lG",font=40,code=pressKey"space"},
|
||||
WIDGET.newButton{name="keyboard", x=160,y=210,w=180,h=100,code=function()love.keyboard.setTextInput(true,0,select(2,SCR.xOy:transformPoint(0,500)),1,1)end,hide=not MOBILE},
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=40,code=backScene},
|
||||
}
|
||||
|
||||
@@ -235,7 +235,7 @@ function scene.mouseDown(x,y)
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="reset",x=1140,y=540,w=170,h=80,font=40,color="lGreen",code=restart},
|
||||
WIDGET.newButton{name="reset",x=1140,y=540,w=170,h=80,font=40,color="lG",code=restart},
|
||||
WIDGET.newButton{name="back",x=1140,y=640,w=170,h=80,font=40,code=backScene},
|
||||
}
|
||||
|
||||
|
||||
@@ -83,15 +83,15 @@ end
|
||||
local scoreColor={
|
||||
"white",--0
|
||||
"aqua",--20
|
||||
"sky",--40
|
||||
"navy",--40
|
||||
"blue",--60
|
||||
"grape",--80
|
||||
"pink",--100
|
||||
"purple",--80
|
||||
"wine",--100
|
||||
"red","fire","orange","yellow","lAqua",--200
|
||||
"lSky","lBlue","lGrape","lPink","lRed",--300
|
||||
"lFire","lOrange","lYellow","dAqua","dSky",--400
|
||||
"dBlue","dGrape","dPink","dRed","dFire",--500
|
||||
"dYellow","lGray","gray","dGray",--before 600, black after
|
||||
"lNavy","lBlue","lPurple","lWine","lRed",--300
|
||||
"lFire","lOrange","lYellow","dAqua","dNavy",--400
|
||||
"dBlue","dPurple","dWine","dRed","dFire",--500
|
||||
"dYellow","lH","H","dH",--before 600, black after
|
||||
}
|
||||
function scene.draw()
|
||||
--Spawn area
|
||||
|
||||
@@ -6,9 +6,9 @@ local C=COLOR
|
||||
local inputBox=WIDGET.newInputBox{name="input",x=40,y=650,w=1200,h=50}
|
||||
local outputBox=WIDGET.newTextBox{name="output",x=40,y=30,w=1200,h=600,font=25,lineH=25,fix=true}
|
||||
local function log(str)outputBox:push(str)end
|
||||
log{C.lGrape,"Techmino Console"}
|
||||
log{C.lBlue,"©2020 26F Studio some rights reserved"}
|
||||
log{C.dRed,"DO NOT RUN ANY CODE YOU DON'T UNDERSTAND"}
|
||||
log{C.lP,"Techmino Console"}
|
||||
log{C.lB,"©2020 26F Studio some rights reserved"}
|
||||
log{C.dR,"DO NOT RUN ANY CODE YOU DON'T UNDERSTAND"}
|
||||
|
||||
local history,hisPtr={"?"}
|
||||
local the_secret=(14^2*10)..(2*11)
|
||||
@@ -196,7 +196,7 @@ do--commands.help(arg)
|
||||
details={
|
||||
"Set background.",
|
||||
"",
|
||||
"Usage: setbg <classic|xmas|sprfes|zday1/2/3>",
|
||||
"Usage: setbg [bgName]",
|
||||
},
|
||||
},
|
||||
theme={
|
||||
@@ -272,10 +272,10 @@ do--commands.help(arg)
|
||||
log"Use help [page] to view more commands,"
|
||||
log"or help [command_name] for details of a command."
|
||||
log""
|
||||
log{C.lPink,"Page ",C.lG,page,C.lPink," of ",C.lG,maxPage}
|
||||
log{C.lW,"Page ",C.lG,page,C.lW," of ",C.lG,maxPage}
|
||||
for i=pageSize*(page-1)+1,math.min(pageSize*page,#command_help_list)do
|
||||
local cmd=command_help_list[i]
|
||||
log{C.W,cmd,C.gray," "..command_help_messages[cmd].description}
|
||||
log{C.Z,cmd,C.H," "..command_help_messages[cmd].description}
|
||||
end
|
||||
else
|
||||
log{C.R,"Invalid page number. Must be between 1 and "..maxPage.." (inclusive)."}
|
||||
@@ -313,7 +313,7 @@ function commands.url(url)
|
||||
if url~=""then
|
||||
local res,err=pcall(love.system.openURL,url)
|
||||
if not res then
|
||||
log{C.R,"[ERR] ",C.W,err}
|
||||
log{C.R,"[ERR] ",C.Z,err}
|
||||
end
|
||||
else
|
||||
log{C.aqua,"Usage: url [url]"}
|
||||
@@ -631,14 +631,14 @@ function scene.keyDown(k)
|
||||
setfenv(code,userG)
|
||||
code,err=pcall(code)
|
||||
if not code then
|
||||
log{C.R,"[ERR] ",C.W,err}
|
||||
log{C.R,"[ERR] ",C.Z,err}
|
||||
end
|
||||
else
|
||||
log{C.R,"[SYNTAX ERR] ",C.W,err}
|
||||
log{C.R,"[SYNTAX ERR] ",C.Z,err}
|
||||
end
|
||||
else
|
||||
--Execute builtin command
|
||||
log{C.lSea,"> "..input}
|
||||
log{C.lS,"> "..input}
|
||||
local p=input:find(" ")
|
||||
local cmd,arg
|
||||
if p then
|
||||
@@ -689,7 +689,7 @@ function scene.keyDown(k)
|
||||
log(">Commands start with '"..str.."' :")
|
||||
table.sort(res)
|
||||
for i=1,#res do
|
||||
log{COLOR.lGray,res[i]}
|
||||
log{COLOR.lH,res[i]}
|
||||
end
|
||||
elseif #res==1 then
|
||||
inputBox.value=res[1]
|
||||
|
||||
@@ -174,12 +174,12 @@ setmetatable(backColor,backColor)
|
||||
function scene.draw()
|
||||
--Background
|
||||
local lv,height=int(camY/700),camY%700
|
||||
gc.setColor(backColor[lv+1]or COLOR.black)
|
||||
gc.setColor(backColor[lv+1]or COLOR.D)
|
||||
gc.rectangle("fill",0,720,1280,height-700)
|
||||
gc.setColor(backColor[lv+2]or COLOR.black)
|
||||
gc.setColor(backColor[lv+2]or COLOR.D)
|
||||
gc.rectangle("fill",0,height+20,1280,-height-20)
|
||||
if height-680>0 then
|
||||
gc.setColor(backColor[lv+3]or COLOR.black)
|
||||
gc.setColor(backColor[lv+3]or COLOR.D)
|
||||
gc.rectangle("fill",0,height-680,1280,680-height)
|
||||
end
|
||||
|
||||
|
||||
@@ -277,7 +277,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="reset", x=155,y=100,w=180,h=100,color="lGreen",font=40,code=pressKey"r"},
|
||||
WIDGET.newButton{name="reset", x=155,y=100,w=180,h=100,color="lG",font=40,code=pressKey"r"},
|
||||
WIDGET.newButton{name="mode", x=155,y=220,w=180,h=100,font=40,code=pressKey"q",hide=function()return state~=0 end},
|
||||
WIDGET.newSwitch{name="arcade", x=230,y=330,font=40,disp=function()return arcade end,code=pressKey"w",hide=function()return state~=0 end},
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=40,code=backScene},
|
||||
|
||||
@@ -165,7 +165,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name="back",x=1140,y=60,w=170,h=80,color="black",font=40,code=pressKey"escape"},
|
||||
WIDGET.newKey{name="back",x=1140,y=60,w=170,h=80,color="D",font=40,code=pressKey"escape"},
|
||||
}
|
||||
|
||||
return scene
|
||||
@@ -168,7 +168,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="reset", x=160,y=100,w=180,h=100,color="lGreen",font=40,code=pressKey"space",hide=function()return state==0 end},
|
||||
WIDGET.newButton{name="reset", x=160,y=100,w=180,h=100,color="lG",font=40,code=pressKey"space",hide=function()return state==0 end},
|
||||
WIDGET.newSlider{name="rank", x=130,y=250,w=150,unit=3,show=false,font=40,disp=function()return rank-3 end,code=function(v)rank=v+3 end,hide=function()return state>0 end},
|
||||
WIDGET.newSwitch{name="blind", x=240,y=330,w=60, font=40,disp=function()return blind end, code=pressKey"q",hide=function()return state==1 end},
|
||||
WIDGET.newSwitch{name="disappear", x=240,y=420,w=60, font=40,disp=function()return disappear end,code=pressKey"w",hide=function()return state==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