整理代码习惯,常量字符串改用单引号,可能有遗漏

This commit is contained in:
MrZ626
2021-04-30 01:00:22 +08:00
parent 7676f32cf2
commit eda6c0d746
213 changed files with 2503 additions and 2499 deletions

View File

@@ -1,7 +1,7 @@
local printf=love.graphics.printf
local draw=love.graphics.draw
local aDraw={}
function aDraw.str(obj,x,y)printf(obj,x-626,y,1252,"center")end
function aDraw.str(obj,x,y)printf(obj,x-626,y,1252,'center')end
function aDraw.simpX(obj,x,y)draw(obj,x-obj:getWidth()*.5,y)end
function aDraw.simpY(obj,x,y)draw(obj,x,y-obj:getHeight()*.5)end
function aDraw.X(obj,x,y,a,k)draw(obj,x,y,a,k,nil,obj:getWidth()*.5,0)end

View File

@@ -46,7 +46,7 @@ function BGM.init(list)
for i=1,count do
local file="media/BGM/"..list[i]..".ogg"
if love.filesystem.getInfo(file)then
Sources[list[i]]=love.audio.newSource(file,"stream")
Sources[list[i]]=love.audio.newSource(file,'stream')
Sources[list[i]]:setLooping(true)
Sources[list[i]]:setVolume(0)
else

View File

@@ -19,19 +19,19 @@ local cmds={
draw="draw",
dLine="line",
fRect=function(...)gc.rectangle("fill",...)end,
dRect=function(...)gc.rectangle("line",...)end,
fCirc=function(...)gc.circle("fill",...)end,
dCirc=function(...)gc.circle("line",...)end,
fPoly=function(...)gc.polygon("fill",...)end,
dPoly=function(...)gc.polygon("line",...)end,
fRect=function(...)gc.rectangle('fill',...)end,
dRect=function(...)gc.rectangle('line',...)end,
fCirc=function(...)gc.circle('fill',...)end,
dCirc=function(...)gc.circle('line',...)end,
fPoly=function(...)gc.polygon('fill',...)end,
dPoly=function(...)gc.polygon('line',...)end,
dPie=function(...)gc.arc("line",...)end,
dArc=function(...)gc.arc("line","open",...)end,
dBow=function(...)gc.arc("line","closed",...)end,
fPie=function(...)gc.arc("fill",...)end,
fArc=function(...)gc.arc("fill","open",...)end,
fBow=function(...)gc.arc("fill","closed",...)end,
dPie=function(...)gc.arc('line',...)end,
dArc=function(...)gc.arc('line','open',...)end,
dBow=function(...)gc.arc('line','closed',...)end,
fPie=function(...)gc.arc('fill',...)end,
fArc=function(...)gc.arc('fill','open',...)end,
fBow=function(...)gc.arc('fill','closed',...)end,
}
return function(L)
gc.push()
@@ -42,13 +42,13 @@ return function(L)
gc.setLineWidth(1)
for i=3,#L do
local cmd=L[i][1]
if type(cmd)=="boolean"and cmd then
if type(cmd)=='boolean'and cmd then
table.remove(L[i],1)
cmd=L[i][1]
end
if type(cmd)=="string"then
if type(cmd)=='string'then
local func=cmds[cmd]
if type(func)=="string"then func=gc[func]end
if type(func)=='string'then func=gc[func]end
if func then
func(unpack(L[i],2))
else

View File

@@ -14,34 +14,34 @@ return function(L,t)
else
s="return{\n"
t=1
if type(L)~="table"then
if type(L)~='table'then
return
end
end
local count=1
for k,v in next,L do
local T=type(k)
if T=="number"then
if T=='number'then
if k==count then
k=""
count=count+1
else
k="["..k.."]="
end
elseif T=="string"then
elseif T=='string'then
if find(k,"[^0-9a-zA-Z_]")then
k="[\""..k.."\"]="
else
k=k.."="
end
elseif T=="boolean"then k="["..k.."]="
elseif T=='boolean'then k="["..k.."]="
else error("Error key type!")
end
T=type(v)
if T=="number"then v=tostring(v)
elseif T=="string"then v="\""..v.."\""
elseif T=="table"then v=TABLE.dump(v,t+1)
elseif T=="boolean"then v=tostring(v)
if T=='number'then v=tostring(v)
elseif T=='string'then v="\""..v.."\""
elseif T=='table'then v=TABLE.dump(v,t+1)
elseif T=='boolean'then v=tostring(v)
else error("Error data type!")
end
s=s..tabs[t]..k..v..",\n"

View File

@@ -3,7 +3,7 @@ local FILE={}
function FILE.load(name)
if fs.getInfo(name)then
local F=fs.newFile(name)
if F:open("r")then
if F:open'r'then
local s=F:read()
F:close()
if s:sub(1,6)=="return"then
@@ -26,17 +26,17 @@ function FILE.load(name)
end
function FILE.save(data,name,mode)
if not mode then mode=""end
if type(data)=="table"then
if mode:find("l")then
if type(data)=='table'then
if mode:find'l'then
data=TABLE.dump(data)
if not data then
LOG.print(name.." "..text.saveError.."dump error","error")
LOG.print(name.." "..text.saveError.."dump error",'error')
return
end
else
data=JSON.encode(data)
if not data then
LOG.print(name.." "..text.saveError.."json error","error")
LOG.print(name.." "..text.saveError.."json error",'error')
return
end
end
@@ -45,16 +45,16 @@ function FILE.save(data,name,mode)
end
local F=fs.newFile(name)
F:open("w")
F:open'w'
local success,mes=F:write(data)
F:flush()F:close()
if success then
if not mode:find("q")then
if not mode:find'q'then
LOG.print(text.saveDone,COLOR.G)
end
else
LOG.print(text.saveError..(mes or"unknown error"),"error")
LOG.print(debug.traceback(),"error")
LOG.print(text.saveError..(mes or"unknown error"),'error')
LOG.print(debug.traceback(),'error')
end
end
return FILE

View File

@@ -12,7 +12,7 @@ function IMG.init(list)
local function load(skip)
local loaded=0
for k,v in next,list do
if type(v)=="string"then
if type(v)=='string'then
IMG[k]=love.graphics.newImage("media/image/"..v)
else
for i=1,#v do

View File

@@ -66,12 +66,12 @@ local devMode
local infoCanvas=gc.newCanvas(108,27)
local function updatePowerInfo()
local state,pow=love.system.getPowerInfo()
gc.setCanvas(infoCanvas)gc_push("transform")gc.origin()
gc.setCanvas(infoCanvas)gc_push('transform')gc.origin()
gc.clear(0,0,0,.25)
if state~="unknown"then
if state~='unknown'then
gc.setLineWidth(4)
local charging=state=="charging"
if state=="nobattery"then
local charging=state=='charging'
if state=='nobattery'then
gc_setColor(1,1,1)
gc.setLineWidth(2)
gc.line(74,SCR.safeX+5,100,22)
@@ -82,7 +82,7 @@ local function updatePowerInfo()
elseif pow<26 then gc_setColor(1,0,0)
else gc_setColor(.5,0,1)
end
gc_rectangle("fill",76,6,pow*.22,14)
gc_rectangle('fill',76,6,pow*.22,14)
if pow<100 then
setFont(15)
gc_setColor(0,0,0)
@@ -281,12 +281,12 @@ function love.joystickremoved(JS)
end
end
local keyMirror={
dpup="up",
dpdown="down",
dpleft="left",
dpright="right",
start="return",
back="escape",
dpup='up',
dpdown='down',
dpleft='left',
dpright='right',
start='return',
back='escape',
}
function love.gamepadpressed(_,i)
mouseShow=false
@@ -330,7 +330,7 @@ function love.lowmemory()
if TIME()-lastGCtime>6.26 then
collectgarbage()
lastGCtime=TIME()
LOG.print("[auto GC] low MEM 设备内存过低","warn")
LOG.print("[auto GC] low MEM 设备内存过低",'warn')
end
end
function love.resize(w,h)
@@ -343,7 +343,7 @@ end
function love.focus(f)
if f then
love.timer.step()
elseif SCN.cur=="game"and SETTING.autoPause then
elseif SCN.cur=='game'and SETTING.autoPause then
pauseGame()
end
end
@@ -377,7 +377,7 @@ function love.errorhandler(msg)
gc.reset()
if LOADED and #ERRDATA<3 then
BG.set("none")
BG.set('none')
local scn=SCN and SCN.cur or"NULL"
ERRDATA[#ERRDATA+1]={mes=err,scene=scn}
@@ -398,7 +398,7 @@ function love.errorhandler(msg)
local res,threadErr
repeat
res,threadErr=resume(loopThread)
until status(loopThread)=="dead"
until status(loopThread)=='dead'
if not res then
love.errorhandler(threadErr)
return
@@ -413,15 +413,15 @@ function love.errorhandler(msg)
while true do
love.event.pump()
for E,a,b in love.event.poll()do
if E=="quit"or a=="escape"then
if E=='quit'or a=='escape'then
destroyPlayers()
return true
elseif E=="resize"then
elseif E=='resize'then
SCR.resize(a,b)
end
end
gc.clear(.3,.5,.9)
gc_push("transform")
gc_push('transform')
gc.replaceTransform(xOy)
setFont(100)gc_print(":(",100,0,0,1.2)
setFont(40)gc.printf(errorMsg,100,160,SCR.w0-100)
@@ -439,7 +439,7 @@ function love.errorhandler(msg)
end
end
local WS=WS
local WSnames={"app","user","play","stream","chat"}
local WSnames={'app','user','play','stream','chat'}
local WScolor={
{1,.5,.5,.7},
{1,.8,.3,.7},
@@ -479,8 +479,8 @@ function love.run()
--Scene Launch
while #SCN.stack>0 do SCN.pop()end
SCN.push("quit","slowFade")
SCN.init(#ERRDATA==0 and"load"or"error")
SCN.push('quit','slowFade')
SCN.init(#ERRDATA==0 and'load'or'error')
return function()
local _
@@ -494,7 +494,7 @@ function love.run()
for N,a,b,c,d,e in POLL()do
if love[N]then
love[N](a,b,c,d,e)
elseif N=="quit"then
elseif N=='quit'then
destroyPlayers()
return a or true
end
@@ -522,7 +522,7 @@ function love.run()
--Draw background
BG.draw()
gc_push("transform")
gc_push('transform')
gc.replaceTransform(xOy)
--Draw scene contents
@@ -539,7 +539,7 @@ function love.run()
_=SCS[R][0]
gc_draw(TEXTURE.miniBlock[R],mx,my,t%3.14159265359*4,16,16,_[2]+.5,#BLOCKS[R][0]-_[1]-.5)
gc_setColor(1,1,1)
gc_draw(TEXTURE[ms.isDown(1)and"cursor_hold"or"cursor"],mx,my,nil,nil,nil,8,8)
gc_draw(TEXTURE[ms.isDown(1)and'cursor_hold'or'cursor'],mx,my,nil,nil,nil,8,8)
end
SYSFX.draw()
TEXT.draw()
@@ -577,31 +577,31 @@ function love.run()
ins(frameTimeList,1,dt)rem(frameTimeList,126)
gc_setColor(1,1,1,.3)
for i=1,#frameTimeList do
gc_rectangle("fill",150+2*i,_-20,2,-frameTimeList[i]*4000)
gc_rectangle('fill',150+2*i,_-20,2,-frameTimeList[i]*4000)
end
--Websocket status
gc_push("transform")
gc_push('transform')
gc.translate(SCR.w,SCR.h-100)
gc.scale(SCR.k)
for i=1,5 do
local status=WS.status(WSnames[i])
gc_setColor(WScolor[i])
gc_rectangle("fill",0,20*i,-80,-20)
if status=="dead"then
gc_rectangle('fill',0,20*i,-80,-20)
if status=='dead'then
gc_setColor(1,1,1)
gc_draw(TEXTURE.ws_dead,-20,20*i-20)
elseif status=="connecting"then
elseif status=='connecting'then
gc_setColor(1,1,1,.5+.3*sin(t*6.26))
gc_draw(TEXTURE.ws_connecting,-20,20*i-20)
elseif status=="running"then
elseif status=='running'then
gc_setColor(1,1,1)
gc_draw(TEXTURE.ws_running,-20,20*i-20)
end
local t1,t2,t3=WS.getTimers(WSnames[i])
gc_setColor(1,1,1,t1)gc_rectangle("fill",-60,20*i,-20,-20)
gc_setColor(0,1,0,t2)gc_rectangle("fill",-40,20*i,-20,-20)
gc_setColor(1,0,0,t3)gc_rectangle("fill",-20,20*i,-20,-20)
gc_setColor(1,1,1,t1)gc_rectangle('fill',-60,20*i,-20,-20)
gc_setColor(0,1,0,t2)gc_rectangle('fill',-40,20*i,-20,-20)
gc_setColor(1,0,0,t3)gc_rectangle('fill',-20,20*i,-20,-20)
end
gc_pop()

View File

@@ -63,7 +63,7 @@ local function encode_table(val, stack)
-- Treat as array -- check keys are valid and it is not sparse
local n = 0
for k in pairs(val) do
if type(k) ~= "number" then
if type(k) ~= 'number' then
error("invalid table: mixed or invalid key types")
end
n = n + 1
@@ -77,7 +77,7 @@ local function encode_table(val, stack)
else
-- Treat as an object
for k, v in pairs(val) do
if type(k) ~= "string" then
if type(k) ~= 'string' then
error("invalid table: mixed or invalid key types")
end
ins(res, encode(k, stack) .. ":" .. encode(v, stack))
@@ -100,11 +100,11 @@ local function encode_number(val)
end
local type_func_map = {
["nil"] = encode_nil,
["table"] = encode_table,
["string"] = encode_string,
["number"] = encode_number,
["boolean"] = tostring
['nil'] = encode_nil,
['table'] = encode_table,
['string'] = encode_string,
['number'] = encode_number,
['boolean'] = tostring
}
encode = function(val, stack)
@@ -119,7 +119,7 @@ function json.encode(val)
if a then
return b
elseif LOG then
LOG.print(text.jsonError..": "..(b or"uknErr"),"warn")
LOG.print(text.jsonError..": "..(b or"uknErr"),'warn')
end
end
@@ -336,7 +336,7 @@ function parse(str, idx)
end
local function decode(str)
if type(str) ~= "string" then
if type(str) ~= 'string' then
error("expected argument of type string, got " .. type(str))
end
local res, idx = parse(str, next_char(str, 1, space_chars, true))
@@ -349,7 +349,7 @@ function json.decode(str)
if a then
return b
elseif LOG then
LOG.print(text.jsonError..": "..(b or"uknErr"),"warn")
LOG.print(text.jsonError..": "..(b or"uknErr"),'warn')
end
end
return json

View File

@@ -2,9 +2,9 @@ local LANG={}
function LANG.init(langList,publicText)--Attention, calling this will destory all initializing methods, create a LANG.set()!
local function langFallback(T0,T)
for k,v in next,T0 do
if type(v)=="table"and not v.refuseCopy then--refuseCopy: just copy pointer, not contents
if type(v)=='table'and not v.refuseCopy then--refuseCopy: just copy pointer, not contents
if not T[k]then T[k]={}end
if type(T[k])=="table"then langFallback(v,T[k])end
if type(T[k])=='table'then langFallback(v,T[k])end
elseif not T[k]then
T[k]=v
end
@@ -26,7 +26,7 @@ function LANG.init(langList,publicText)--Attention, calling this will destory al
end
--Metatable:__call for table:getTip
if type(rawget(L,"getTip"))=="table"then
if type(rawget(L,"getTip"))=='table'then
setmetatable(L.getTip,tipMeta)
end

View File

@@ -49,14 +49,14 @@ local function draw(L)
render(L.shadowCanvas,0,0,0,1,L.size)
--Ready to final render
setShader()setCanvas()gc.setBlendMode("add")
setShader()setCanvas()gc.setBlendMode('add')
--Render to screes
gc.setColor(r,g,b,a)
render(L.renderCanvas,X,Y+L.size,0,1,-1)
--Reset
gc.setBlendMode("alpha")
gc.setBlendMode('alpha')
end
local LIGHT={}

View File

@@ -4,7 +4,7 @@ return function(name,libName)
if r1 and r2 then
return r2
else
LOG.print("Cannot load "..name..": "..(r2 or r3),"warn",COLOR.R)
LOG.print("Cannot load "..name..": "..(r2 or r3),'warn',COLOR.R)
end
elseif SYSTEM=="Android"then
local fs=love.filesystem
@@ -12,35 +12,35 @@ return function(name,libName)
local libFunc=package.loadlib(SAVEDIR.."/lib/"..libName.Android,libName.libFunc)
if libFunc then
LOG.print(name.." lib loaded","warn",COLOR.G)
LOG.print(name.." lib loaded",'warn',COLOR.G)
else
for i=1,#platform do
local soFile=fs.read("data","libAndroid/"..platform[i].."/"..libName.Android)
local soFile=fs.read('data',"libAndroid/"..platform[i].."/"..libName.Android)
if soFile then
local success,message=fs.write("lib/"..libName.Android,soFile)
if success then
libFunc,message=package.loadlib(SAVEDIR.."/lib/"..libName.Android,libName.libFunc)
if libFunc then
LOG.print(name.." lib loaded","warn",COLOR.G)
LOG.print(name.." lib loaded",'warn',COLOR.G)
break
else
LOG.print("Cannot load "..name..": "..message,"warn",COLOR.R)
LOG.print("Cannot load "..name..": "..message,'warn',COLOR.R)
end
else
LOG.print("Write "..name.."-"..platform[i].." to saving failed: "..message,"warn",COLOR.R)
LOG.print("Write "..name.."-"..platform[i].." to saving failed: "..message,'warn',COLOR.R)
end
else
LOG.print("Read "..name.."-"..platform[i].." failed","warn",COLOR.R)
LOG.print("Read "..name.."-"..platform[i].." failed",'warn',COLOR.R)
end
end
if not libFunc then
LOG.print("Cannot load "..name,"warn",COLOR.R)
LOG.print("Cannot load "..name,'warn',COLOR.R)
return
end
end
return libFunc()
else
LOG.print("No "..name.." for "..SYSTEM,"warn",COLOR.R)
LOG.print("No "..name.." for "..SYSTEM,'warn',COLOR.R)
return
end
return true

View File

@@ -38,21 +38,21 @@ end
function LOG.print(text,T,C)--text,type/time,color
local time
local his
if T=="warn"then
if T=='warn'then
C=C or COLOR.Y
his=true
time=180
elseif T=="error"then
elseif T=='error'then
C=C or COLOR.R
his=true
time=210
elseif T=="message"then
elseif T=='message'then
C=C or COLOR.N
his=true
elseif type(T)=="number"then
elseif type(T)=='number'then
C=C or COLOR.Z
time=T
elseif type(T)=="table"then
elseif type(T)=='table'then
C=T
elseif not C then
C=COLOR.Z

View File

@@ -11,7 +11,7 @@ local _internal={}-- list of internal profiler functions
local getInfo=debug.getinfo
function profile.hooker(event,line,info)
info=info or getInfo(2,"fnS")
info=info or getInfo(2,'fnS')
local f=info.func
if _internal[f]then return end-- ignore the profiler itself
if info.name then _labeled[f]=info.name end-- get the function name if available
@@ -27,10 +27,10 @@ function profile.hooker(event,line,info)
_tcalled[f]=nil
end
if event=="tail call"then
local prev=getInfo(3,"fnS")
profile.hooker("return",line,prev)
profile.hooker("call",line,info)
elseif event=="call"then
local prev=getInfo(3,'fnS')
profile.hooker('return',line,prev)
profile.hooker('call',line,info)
elseif event=='call'then
_tcalled[f]=clock()
else
_ncalls[f]=_ncalls[f]+1
@@ -43,7 +43,7 @@ function profile.start()
jit.off()
jit.flush()
end
debug.sethook(profile.hooker,"cr")
debug.sethook(profile.hooker,'cr')
end
--- Stops collecting data.
@@ -68,7 +68,7 @@ function profile.stop()
lookup[id]=f
end
end
collectgarbage("collect")
collectgarbage()
end
--- Resets all collected data.
@@ -78,7 +78,7 @@ function profile.reset()
_telapsed[f]=0
_tcalled[f]=nil
end
collectgarbage("collect")
collectgarbage()
end
local function _comp(a,b)
@@ -151,7 +151,7 @@ end
-- store all internal profiler functions
for _,v in next,profile do
_internal[v]=type(v)=="function"
_internal[v]=type(v)=='function'
end
return profile

View File

@@ -85,7 +85,7 @@ function SCN.push(tar,style)
if not SCN.swapping then
local m=#SCN.stack
SCN.stack[m+1]=tar or SCN.cur
SCN.stack[m+2]=style or"fade"
SCN.stack[m+2]=style or'fade'
end
end
function SCN.pop()
@@ -94,46 +94,46 @@ function SCN.pop()
end
local swap={
none={1,0,NULL},--swapTime, changeTime, drawFunction
none={1,0,function()end},--swapTime, changeTime, drawFunction
flash={8,1,function()gc.clear(1,1,1)end},
fade={30,15,function(t)
t=t>15 and 2-t/15 or t/15
gc.setColor(0,0,0,t)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
end},
fade_togame={120,20,function(t)
t=t>20 and(120-t)/100 or t/20
gc.setColor(0,0,0,t)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
end},
slowFade={180,90,function(t)
t=t>90 and 2-t/90 or t/90
gc.setColor(0,0,0,t)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
end},
swipeL={30,15,function(t)
t=t/30
gc.setColor(.1,.1,.1,1-abs(t-.5))
t=t*t*(3-2*t)*2-1
gc.rectangle("fill",t*SCR.w,0,SCR.w,SCR.h)
gc.rectangle('fill',t*SCR.w,0,SCR.w,SCR.h)
end},
swipeR={30,15,function(t)
t=t/30
gc.setColor(.1,.1,.1,1-abs(t-.5))
t=t*t*(2*t-3)*2+1
gc.rectangle("fill",t*SCR.w,0,SCR.w,SCR.h)
gc.rectangle('fill',t*SCR.w,0,SCR.w,SCR.h)
end},
swipeD={30,15,function(t)
t=t/30
gc.setColor(.1,.1,.1,1-abs(t-.5))
t=t*t*(2*t-3)*2+1
gc.rectangle("fill",0,t*SCR.h,SCR.w,SCR.h)
gc.rectangle('fill',0,t*SCR.h,SCR.w,SCR.h)
end},
}--Scene swapping animations
function SCN.swapTo(tar,style)--Parallel scene swapping, cannot back
if scenes[tar]then
if not SCN.swapping and tar~=SCN.cur then
if not style then style="fade"end
if not style then style='fade'end
SCN.swapping=true
local S=SCN.stat
S.tar,S.style=tar,style
@@ -141,7 +141,7 @@ function SCN.swapTo(tar,style)--Parallel scene swapping, cannot back
S.time,S.mid,S.draw=s[1],s[2],s[3]
end
else
LOG.print("No Scene: "..tar,"warn")
LOG.print("No Scene: "..tar,'warn')
end
end
function SCN.go(tar,style)--Normal scene swapping, can back
@@ -149,7 +149,7 @@ function SCN.go(tar,style)--Normal scene swapping, can back
SCN.push()
SCN.swapTo(tar,style)
else
LOG.print("No Scene: "..tar,"warn")
LOG.print("No Scene: "..tar,'warn')
end
end
function SCN.back()

View File

@@ -15,7 +15,7 @@ function SFX.init(list)
for i=1,count do
local N="media/SFX/"..list[i]..".ogg"
if love.filesystem.getInfo(N)then
Sources[list[i]]={love.audio.newSource(N,"static")}
Sources[list[i]]={love.audio.newSource(N,'static')}
else
LOG.print("No SFX file: "..N,5,COLOR.O)
end
@@ -76,7 +76,7 @@ function SFX.init(list)
end
function SFX.reset()
for _,L in next,Sources do
if type(L)=="table"then
if type(L)=='table'then
for i=#L,1,-1 do
if not L[i]:isPlaying()then
rem(L,i)

View File

@@ -75,32 +75,32 @@ function FXdraw.tap(S)
local t=S.t
setWidth(2)
setColor(1,1,1,1-t)
gc.circle("line",S.x,S.y,t*(2-t)*30)
gc.circle('line',S.x,S.y,t*(2-t)*30)
setColor(1,1,1,(1-t)*.5)
gc.circle("fill",S.x,S.y,t*30)
gc.circle('fill',S.x,S.y,t*30)
setColor(1,1,1,1-t)
for i=1,10 do
local p=S.ptc[i]
local T=t^.5
gc.rectangle("fill",p[1]*(1-T)+p[3]*T-5,p[2]*(1-T)+p[4]*T-5,11,11)
gc.rectangle('fill',p[1]*(1-T)+p[3]*T-5,p[2]*(1-T)+p[4]*T-5,11,11)
end
end
function FXdraw.ripple(S)
local t=S.t
setWidth(2)
setColor(1,1,1,1-t)
gc.circle("line",S.x,S.y,t*(2-t)*S.r)
gc.circle('line',S.x,S.y,t*(2-t)*S.r)
end
function FXdraw.rectRipple(S)
setWidth(6)
setColor(1,1,1,1-S.t)
local r=(10*S.t)^1.2
gc.rectangle("line",S.x-r,S.y-r,S.w+2*r,S.h+2*r)
gc.rectangle('line',S.x-r,S.y-r,S.w+2*r,S.h+2*r)
end
function FXdraw.shade(S)
setColor(S.r,S.g,S.b,1-S.t)
gc.rectangle("fill",S.x,S.y,S.w,S.h,2)
gc.rectangle('fill',S.x,S.y,S.w,S.h,2)
end
function FXdraw.cell(S)
setColor(1,1,1,1-S.t)

View File

@@ -5,7 +5,7 @@ local TABLE={}
function TABLE.shift(org)
local L={}
for i=1,#org do
if type(org[i])~="table"then
if type(org[i])~='table'then
L[i]=org[i]
else
L[i]=TABLE.shift(org[i])
@@ -18,7 +18,7 @@ end
function TABLE.copy(org)
local L={}
for k,v in next,org do
if type(v)~="table"then
if type(v)~='table'then
L[k]=v
else
L[k]=TABLE.copy(v)
@@ -31,7 +31,7 @@ end
function TABLE.update(new,old)
for k,v in next,new do
if type(v)==type(old[k])then
if type(v)=="table"then
if type(v)=='table'then
TABLE.update(v,old[k])
else
old[k]=v
@@ -45,7 +45,7 @@ function TABLE.complete(new,old)
for k,v in next,new do
if old[k]==nil then
old[k]=v
elseif type(v)=="table"and type(old[k])=="table"then
elseif type(v)=='table'and type(old[k])=='table'then
TABLE.complete(v,old[k])
end
end
@@ -68,7 +68,7 @@ end
--Re-index string value of a table
function TABLE.reIndex(org)
for k,v in next,org do
if type(v)=="string"then
if type(v)=='string'then
org[k]=org[v]
end
end
@@ -92,34 +92,34 @@ do--function TABLE.dump(L,t)
else
s="return{\n"
t=1
if type(L)~="table"then
if type(L)~='table'then
return
end
end
local count=1
for k,v in next,L do
local T=type(k)
if T=="number"then
if T=='number'then
if k==count then
k=""
count=count+1
else
k="["..k.."]="
end
elseif T=="string"then
elseif T=='string'then
if find(k,"[^0-9a-zA-Z_]")then
k="[\""..k.."\"]="
else
k=k.."="
end
elseif T=="boolean"then k="["..k.."]="
elseif T=='boolean'then k="["..k.."]="
else error("Error key type!")
end
T=type(v)
if T=="number"then v=tostring(v)
elseif T=="string"then v="\""..v.."\""
elseif T=="table"then v=dump(v,t+1)
elseif T=="boolean"then v=tostring(v)
if T=='number'then v=tostring(v)
elseif T=='string'then v="\""..v.."\""
elseif T=='table'then v=dump(v,t+1)
elseif T=='boolean'then v=tostring(v)
else error("Error data type!")
end
s=s..tabs[t]..k..v..",\n"

View File

@@ -9,7 +9,7 @@ end
function TASK.update()
for i=#tasks,1,-1 do
local T=tasks[i]
if status(T.thread)=="dead"then
if status(T.thread)=='dead'then
rem(tasks,i)
else
assert(resume(T.thread))
@@ -19,7 +19,7 @@ end
function TASK.new(code,...)
local thread=coroutine.create(code)
resume(thread,...)
if status(thread)~="dead"then
if status(thread)~='dead'then
tasks[#tasks+1]={
thread=thread,
code=code,

View File

@@ -19,21 +19,21 @@ function textFX.fly(t)
mStr(t.text,t.x+(t.c-.5)^3*300,t.y-t.font*.7)
end
function textFX.stretch(t)
gc_push("transform")
gc_push('transform')
gc_translate(t.x,t.y)
if t.c<.3 then gc_scale((.3-t.c)*1.6+1,1)end
mStr(t.text,0,-t.font*.7)
gc_pop()
end
function textFX.drive(t)
gc_push("transform")
gc_push('transform')
gc_translate(t.x,t.y)
if t.c<.3 then gc_shear((.3-t.c)*2,0)end
mStr(t.text,0,-t.font*.7)
gc_pop()
end
function textFX.spin(t)
gc_push("transform")
gc_push('transform')
gc_translate(t.x,t.y)
if t.c<.3 then
gc_rotate((.3-t.c)^2*4)
@@ -49,7 +49,7 @@ function textFX.flicker(t)
mStr(t.text,t.x,t.y-t.font*.7)
end
function textFX.zoomout(t)
gc_push("transform")
gc_push('transform')
local k=t.c^.5*.1+1
gc_translate(t.x,t.y)
gc_scale(k,k)
@@ -57,7 +57,7 @@ function textFX.zoomout(t)
gc_pop()
end
function textFX.beat(t)
gc_push("transform")
gc_push('transform')
gc_translate(t.x,t.y)
if t.c<.3 then
local k=1.3-t.c^2/.3
@@ -85,7 +85,7 @@ function TEXT.show(text,x,y,font,style,spd,stop)
font=int(font/5)*5 or 40, --Font
spd=(spd or 1)/60, --Timing speed(1=last 1 sec)
stop=stop, --Stop time(sustained text)
draw=textFX[style or"appear"]or error("unavailable type:"..style), --Draw method
draw=textFX[style or'appear']or error("unavailable type:"..style), --Draw method
}
end
function TEXT.getText(text,x,y,font,style,spd,stop)--Another version of TEXT.show(), but only return text object, need manual management
@@ -97,7 +97,7 @@ function TEXT.getText(text,x,y,font,style,spd,stop)--Another version of TEXT.sho
font=int(font/5)*5 or 40,
spd=(spd or 1)/60,
stop=stop,
draw=textFX[style or"appear"]or error("unavailable type:"..style),
draw=textFX[style or'appear']or error("unavailable type:"..style),
}
end
function TEXT.update(list)

View File

@@ -12,7 +12,7 @@ function THEME.calculate(Y,M,D)
return
--Christmas
M=="12"and math.abs(D-25)<4 and
"xmas"or
'xmas'or
--Spring festival
M<"03"and math.abs((({
@@ -25,49 +25,49 @@ function THEME.calculate(Y,M,D)
42,32,50,39,28,46,35,24,43,33,
21,40,
})[Y-2000]or -26)-((M-1)*31+D))<6 and
"sprfes"or
'sprfes'or
--April fool's day
M=="04"and D=="01"and
"fool"or
'fool'or
--Z day (Feb./Mar./Apr./May./June. 26)
D=="26"and(
M=="01"or M=="02"and"zday1"or
M=="03"or M=="04"and"zday2"or
M=="05"or M=="06"and"zday3"
M=="01"or M=="02"and'zday1'or
M=="03"or M=="04"and'zday2'or
M=="05"or M=="06"and'zday3'
)or
"classic"
'classic'
end
function THEME.set(theme)
if theme=="classic"then
BG.setDefault("space")
if theme=='classic'then
BG.setDefault('space')
BGM.setDefault("blank")
elseif theme=="xmas"then
BG.setDefault("snow")
BGM.setDefault("xmas")
elseif theme=='xmas'then
BG.setDefault('snow')
BGM.setDefault('xmas')
LOG.print("==============",COLOR.R)
LOG.print("Merry Christmas!",COLOR.Z)
LOG.print("==============",COLOR.R)
elseif theme=="sprfes"then
BG.setDefault("firework")
elseif theme=='sprfes'then
BG.setDefault('firework')
BGM.setDefault("spring festival")
LOG.print(" ★☆☆★",COLOR.R)
LOG.print("新年快乐!",COLOR.Z)
LOG.print(" ★☆☆★",COLOR.R)
elseif theme=="zday1"then
BG.setDefault("lanterns")
elseif theme=='zday1'then
BG.setDefault('lanterns')
BGM.setDefault("empty")
elseif theme=="zday2"then
BG.setDefault("lanterns")
elseif theme=='zday2'then
BG.setDefault('lanterns')
BGM.setDefault("overzero")
elseif theme=="zday3"then
BG.setDefault("lanterns")
elseif theme=='zday3'then
BG.setDefault('lanterns')
BGM.setDefault("vacuum")
elseif theme=="fool"then
BG.setDefault("blockrain")
elseif theme=='fool'then
BG.setDefault('blockrain')
BGM.setDefault("how feeling")
else
return

View File

@@ -54,7 +54,7 @@ do--Connect
repeat
res,err=SOCK:receive("*l")
if not res then readCHN:push(err)return end
if not ctLen and res:find"length"then
if not ctLen and res:find("length")then
ctLen=tonumber(res:match"%d+")
end
until res==""
@@ -87,7 +87,7 @@ local _send do
local mask_str=char(unpack(mask_key))
function _send(op,message)
]]..(debug:find"S"and""or"--")..[[print((">> %s[%d]:%s"):format(threadName,#message,message))
]]..(debug:find'S'and""or"--")..[[print((">> %s[%d]:%s"):format(threadName,#message,message))
--Message type
SOCK:send(char(bor(0x80,op)))
@@ -154,7 +154,7 @@ while true do--Running
if s then
res=s
elseif p then--UNF head
]]..(debug:find"R"and""or"--")..[[print(("<< %s[%d/%d]:%s"):format(threadName,#p,length,#p<50 and p or p:sub(1,50)))
]]..(debug:find'R'and""or"--")..[[print(("<< %s[%d/%d]:%s"):format(threadName,#p,length,#p<50 and p or p:sub(1,50)))
UFF=true
sBuffer=sBuffer..p
length=length-#p
@@ -166,11 +166,11 @@ while true do--Running
else
local s,e,p=SOCK:receive(length)
if s then
]]..(debug:find"R"and""or"--")..[[print(("<< %s(%d):%s"):format(threadName,length,#s<50 and s or s:sub(1,50)))
]]..(debug:find'R'and""or"--")..[[print(("<< %s(%d):%s"):format(threadName,length,#s<50 and s or s:sub(1,50)))
sBuffer=sBuffer..s
length=length-#s
elseif p then
]]..(debug:find"R"and""or"--")..[[print(("<< %s(%d):%s"):format(threadName,length,#p<50 and p or p:sub(1,50)))
]]..(debug:find'R'and""or"--")..[[print(("<< %s(%d):%s"):format(threadName,length,#p<50 and p or p:sub(1,50)))
sBuffer=sBuffer..p
length=length-#p
end
@@ -181,13 +181,13 @@ while true do--Running
break
end
end
]]..(debug:find"R"and""or"--")..[[print(("<< %s[(%d)]:%s"):format(threadName,#res,#res<800 and res or res:sub(1,150).."\n...\n"..res:sub(-150)))
]]..(debug:find'R'and""or"--")..[[print(("<< %s[(%d)]:%s"):format(threadName,#res,#res<800 and res or res:sub(1,150).."\n...\n"..res:sub(-150)))
--React
if op==8 then--8=close
readCHN:push(op)
SOCK:close()
if type(res)=="string"then
if type(res)=='string'then
res=JSON.decode(res)
readCHN:push(res and res.reason or"WS Error")
else
@@ -196,21 +196,21 @@ while true do--Running
elseif op==0 then--0=continue
lBuffer=lBuffer..res
if fin then
]]..(debug:find"M"and""or"--")..[[print("FIN=1 (c")
]]..(debug:find'M'and""or"--")..[[print("FIN=1 (c")
readCHN:push(lBuffer)
lBuffer=""
else
]]..(debug:find"M"and""or"--")..[[print("FIN=0 (c")
]]..(debug:find'M'and""or"--")..[[print("FIN=0 (c")
end
else
readCHN:push(op)
if fin then
]]..(debug:find"M"and""or"--")..[[print("OP: "..op.."\tFIN=1")
]]..(debug:find'M'and""or"--")..[[print("OP: "..op.."\tFIN=1")
readCHN:push(res)
else
]]..(debug:find"M"and""or"--")..[[print("OP: "..op.."\tFIN=0")
]]..(debug:find'M'and""or"--")..[[print("OP: "..op.."\tFIN=0")
sBuffer=res
]]..(debug:find"M"and""or"--")..[[print("START pack: "..res)
]]..(debug:find'M'and""or"--")..[[print("START pack: "..res)
end
end
end
@@ -223,7 +223,7 @@ local wsList=setmetatable({},{
__index=function(l,k)
local ws={
real=false,
status="dead",
status='dead',
lastPongTime=timer(),
sendTimer=0,
alertTimer=0,
@@ -244,7 +244,7 @@ function WS.connect(name,subPath,body)
lastPingTime=0,
lastPongTime=timer(),
pingInterval=26,
status="connecting",--connecting, running, dead
status='connecting',--connecting, running, dead
sendTimer=0,
alertTimer=0,
pongTimer=0,
@@ -259,7 +259,7 @@ end
function WS.status(name)
local ws=wsList[name]
return ws.status or"dead"
return ws.status or'dead'
end
function WS.getTimers(name)
@@ -286,12 +286,12 @@ local OPcode={
pong=10,
}
local OPname={
[0]="continue",
[1]="text",
[2]="binary",
[8]="close",
[9]="ping",
[10]="pong",
[0]='continue',
[1]='text',
[2]='binary',
[8]='close',
[9]='ping',
[10]='pong',
}
function WS.send(name,message,op)
local ws=wsList[name]
@@ -308,7 +308,7 @@ function WS.read(name)
if ws.real and ws.readCHN:getCount()>=2 then
local op=ws.readCHN:pop()
local message=ws.readCHN:pop()
if op==8 then ws.status="dead"end--8=close
if op==8 then ws.status='dead'end--8=close
ws.lastPongTime=timer()
ws.pongTimer=1
return message,OPname[op]or op
@@ -320,7 +320,7 @@ function WS.close(name)
if ws.real then
ws.sendCHN:push(8)--close
ws.sendCHN:push("")
ws.status="dead"
ws.status='dead'
end
end
@@ -329,20 +329,20 @@ function WS.update(dt)
for name,ws in next,wsList do
if ws.real then
ws.triggerCHN:push(0)
if ws.status=="connecting"then
if ws.status=='connecting'then
local mes=ws.readCHN:pop()
if mes then
if mes=="success"then
ws.status="running"
ws.status='running'
ws.lastPingTime=time
ws.lastPongTime=time
ws.pongTimer=1
else
ws.status="dead"
LOG.print(text.wsFailed..": "..(mes=="timeout"and text.netTimeout or mes),"warn")
ws.status='dead'
LOG.print(text.wsFailed..": "..(mes=="timeout"and text.netTimeout or mes),'warn')
end
end
elseif ws.status=="running"then
elseif ws.status=='running'then
if time-ws.lastPingTime>ws.pingInterval then
ws.sendCHN:push(9)
ws.sendCHN:push("")--ping

View File

@@ -16,7 +16,7 @@ local widgetMetatable={
}
local text={
type="text",
type='text',
mustHaveText=true,
alpha=0,
}
@@ -34,16 +34,16 @@ function text:draw()
if self.alpha>0 then
local c=self.color
gc.setColor(c[1],c[2],c[3],self.alpha)
if self.align=="M"then
if self.align=='M'then
mDraw_X(self.obj,self.x,self.y)
elseif self.align=="L"then
elseif self.align=='L'then
gc.draw(self.obj,self.x,self.y)
elseif self.align=="R"then
elseif self.align=='R'then
gc.draw(self.obj,self.x-self.obj:getWidth(),self.y)
end
end
end
function WIDGET.newText(D)--name,x,y[,fText][,color][,font=30][,align="M"][,hide]
function WIDGET.newText(D)--name,x,y[,fText][,color][,font=30][,align='M'][,hide]
local _={
name= D.name,
x= D.x,
@@ -52,7 +52,7 @@ function WIDGET.newText(D)--name,x,y[,fText][,color][,font=30][,align="M"][,hide
fText= D.fText,
color= D.color and(COLOR[D.color]or D.color)or COLOR.Z,
font= D.font or 30,
align= D.align or"M",
align= D.align or'M',
hideCon=D.hide,
}
for k,v in next,text do _[k]=v end
@@ -62,10 +62,10 @@ function WIDGET.newText(D)--name,x,y[,fText][,color][,font=30][,align="M"][,hide
end
local image={
type="image",
type='image',
}
function image:reset()
if type(self.img)=="string"then
if type(self.img)=='string'then
self.img=IMG[self.img]
end
end
@@ -90,7 +90,7 @@ function WIDGET.newImage(D)--name[,img(name)],x,y[,ang][,k][,hide]
end
local button={
type="button",
type='button',
mustHaveText=true,
ATV=0,--Activating time(0~8)
}
@@ -98,7 +98,7 @@ function button:reset()
self.ATV=0
end
function button:setObject(obj)
if type(obj)=="string"or type(obj)=="number"then
if type(obj)=='string'or type(obj)=='number'then
self.obj=gc.newText(getFont(self.font),obj)
elseif obj then
self.obj=obj
@@ -139,16 +139,16 @@ function button:draw()
local c=self.color
local r,g,b=c[1],c[2],c[3]
gc.setColor(.2+r*.8,.2+g*.8,.2+b*.8,.7)
gc.rectangle("fill",x-ATV,y-ATV,w+2*ATV,h+2*ATV)
gc.rectangle('fill',x-ATV,y-ATV,w+2*ATV,h+2*ATV)
if ATV>0 then
gc.setLineWidth(4)
gc.setColor(1,1,1,ATV*.125)
gc.rectangle("line",x-ATV+2,y-ATV+2,w+2*ATV-4,h+2*ATV-4)
gc.rectangle('line',x-ATV+2,y-ATV+2,w+2*ATV-4,h+2*ATV-4)
end
local obj=self.obj
local y0=y+h*.5-ATV*.5
gc.setColor(1,1,1,.2+ATV*.05)
if self.align=="M"then
if self.align=='M'then
local x0=x+w*.5
mDraw(obj,x0-2,y0-2)
mDraw(obj,x0-2,y0+2)
@@ -156,7 +156,7 @@ function button:draw()
mDraw(obj,x0+2,y0+2)
gc.setColor(r*.5,g*.5,b*.5)
mDraw(obj,x0,y0)
elseif self.align=="L"then
elseif self.align=='L'then
local edge=self.edge
mDraw_Y(obj,x+edge-2,y0-2)
mDraw_Y(obj,x+edge-2,y0+2)
@@ -164,7 +164,7 @@ function button:draw()
mDraw_Y(obj,x+edge+2,y0+2)
gc.setColor(r*.5,g*.5,b*.5)
mDraw_Y(obj,x+edge,y0)
elseif self.align=="R"then
elseif self.align=='R'then
local x0=x+w-self.edge-obj:getWidth()
mDraw_Y(obj,x0-2,y0-2)
mDraw_Y(obj,x0-2,y0+2)
@@ -180,9 +180,9 @@ end
function button:press(_,_,k)
self.code(k)
self:FX()
if self.sound then SFX.play("button")end
if self.sound then SFX.play('button')end
end
function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=true][,align="M"][,edge=0],code[,hide]
function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=true][,align='M'][,edge=0],code[,hide]
if not D.h then D.h=D.w end
local _={
name= D.name,
@@ -203,7 +203,7 @@ function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=tr
fText= D.fText,
color= D.color and(COLOR[D.color]or D.color)or COLOR.Z,
font= D.font or 30,
align= D.align or"M",
align= D.align or'M',
edge= D.edge or 0,
sound= D.sound~=false,
code= D.code,
@@ -215,7 +215,7 @@ function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=tr
end
local key={
type="key",
type='key',
mustHaveText=true,
ATV=0,--Activating time(0~4)
}
@@ -223,7 +223,7 @@ function key:reset()
self.ATV=0
end
function key:setObject(obj)
if type(obj)=="string"or type(obj)=="number"then
if type(obj)=='string'or type(obj)=='number'then
self.obj=gc.newText(getFont(self.font),obj)
elseif obj then
self.obj=obj
@@ -254,18 +254,18 @@ function key:draw()
local r,g,b=c[1],c[2],c[3]
gc.setColor(1,1,1,ATV*.125)
gc.rectangle("fill",x,y,w,h)
gc.rectangle('fill',x,y,w,h)
gc.setColor(.2+r*.8,.2+g*.8,.2+b*.8,.7)
gc.setLineWidth(4)
gc.rectangle("line",x,y,w,h)
gc.rectangle('line',x,y,w,h)
gc.setColor(r,g,b,1.2)
if self.align=="M"then
if self.align=='M'then
mDraw(self.obj,x+w*.5,y+h*.5)
elseif self.align=="L"then
elseif self.align=='L'then
mDraw_Y(self.obj,x+self.edge,y+h*.5)
elseif self.align=="R"then
elseif self.align=='R'then
mDraw_Y(self.obj,x+w-self.edge-self.obj:getWidth(),y+h*.5)
end
end
@@ -274,9 +274,9 @@ function key:getInfo()
end
function key:press(_,_,k)
self.code(k)
if self.sound then SFX.play("key")end
if self.sound then SFX.play('key')end
end
function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=true][,align="M"][,edge=0],code[,hide]
function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=true][,align='M'][,edge=0],code[,hide]
if not D.h then D.h=D.w end
local _={
name= D.name,
@@ -298,7 +298,7 @@ function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=true]
color= D.color and(COLOR[D.color]or D.color)or COLOR.Z,
font= D.font or 30,
sound= D.sound~=false,
align= D.align or"M",
align= D.align or'M',
edge= D.edge or 0,
code= D.code,
hide= D.hide,
@@ -309,7 +309,7 @@ function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,color][,font=30][,sound=true]
end
local switch={
type="switch",
type='switch',
mustHaveText=true,
ATV=0,--Activating time(0~8)
CHK=0,--Check alpha(0~6)
@@ -341,7 +341,7 @@ function switch:draw()
--Checked
if ATV>0 then
gc.setColor(1,1,1,ATV*.08)
gc.rectangle("fill",x,y,50,50)
gc.rectangle('fill',x,y,50,50)
end
if self.CHK>0 then
gc.setColor(.9,1,.9,self.CHK/6)
@@ -352,7 +352,7 @@ function switch:draw()
--Frame
gc.setLineWidth(4)
gc.setColor(1,1,1,.6+ATV*.05)
gc.rectangle("line",x,y,50,50)
gc.rectangle('line',x,y,50,50)
--Drawable
gc.setColor(self.color)
@@ -363,7 +363,7 @@ function switch:getInfo()
end
function switch:press()
self.code()
if self.sound then SFX.play("move")end
if self.sound then SFX.play('move')end
end
function WIDGET.newSwitch(D)--name,x,y[,fText][,color][,font=30][,sound=true][,disp],code,hide
local _={
@@ -390,7 +390,7 @@ function WIDGET.newSwitch(D)--name,x,y[,fText][,color][,font=30][,sound=true][,d
end
local slider={
type="slider",
type='slider',
ATV=0,--Activating time(0~8)
TAT=0,--Text activating time(0~180)
pos=0,--Position shown
@@ -463,12 +463,12 @@ function slider:draw()
local cx=x+(x2-x)*self.pos/self.unit
local bx,by,bw,bh=cx-10-ATV*.5,y-16-ATV,20+ATV,32+2*ATV
gc.setColor(.8,.8,.8)
gc.rectangle("fill",bx,by,bw,bh)
gc.rectangle('fill',bx,by,bw,bh)
if ATV>0 then
gc.setLineWidth(2)
gc.setColor(1,1,1,ATV*.16)
gc.rectangle("line",bx+1,by+1,bw-2,bh-2)
gc.rectangle('line',bx+1,by+1,bw-2,bh-2)
end
if self.TAT>0 and self.show then
setFont(25)
@@ -552,7 +552,7 @@ function WIDGET.newSlider(D)--name,x,y,w[,fText][,color][,unit][,smooth][,font=3
_.smooth=_.unit<=1
end
if D.show then
if type(D.show)=="function"then
if type(D.show)=='function'then
_.show=D.show
else
_.show=sliderShowFunc[D.show]
@@ -570,7 +570,7 @@ function WIDGET.newSlider(D)--name,x,y,w[,fText][,color][,unit][,smooth][,font=3
end
local selector={
type="selector",
type='selector',
mustHaveText=true,
ATV=8,--Activating time(0~4)
select=0,--Selected item ID
@@ -588,7 +588,7 @@ function selector:reset()
end
end
self.hide=true
LOG.print("Selector "..self.name.." dead, disp= "..tostring(V),"warn")
LOG.print("Selector "..self.name.." dead, disp= "..tostring(V),'warn')
end
function selector:isAbove(x,y)
return
@@ -619,7 +619,7 @@ function selector:draw()
gc.setColor(1,1,1,.6+ATV*.1)
gc.setLineWidth(3)
gc.rectangle("line",x,y,w,60)
gc.rectangle('line',x,y,w,60)
gc.setColor(1,1,1,.2+ATV*.1)
local t=(TIME()%.5)^.5
@@ -667,7 +667,7 @@ function selector:press(x)
self.code(self.list[s])
self.select=s
self.selText=self.list[s]
if self.sound then SFX.play("prerotate")end
if self.sound then SFX.play('prerotate')end
end
end
end
@@ -684,7 +684,7 @@ function selector:arrowKey(isLeft)
self.code(self.list[s])
self.select=s
self.selText=self.list[s]
if self.sound then SFX.play("prerotate")end
if self.sound then SFX.play('prerotate')end
end
function WIDGET.newSelector(D)--name,x,y,w[,fText][,color][,sound=true],list,disp,code,hide
local _={
@@ -717,7 +717,7 @@ function WIDGET.newSelector(D)--name,x,y,w[,fText][,color][,sound=true],list,dis
end
local inputBox={
type="inputBox",
type='inputBox',
keepFocus=true,
ATV=0,--Activating time(0~4)
value="",--Text contained
@@ -754,11 +754,11 @@ function inputBox:draw()
local ATV=self.ATV
gc.setColor(1,1,1,ATV*.1)
gc.rectangle("fill",x,y,w,h)
gc.rectangle('fill',x,y,w,h)
gc.setColor(1,1,1)
gc.setLineWidth(4)
gc.rectangle("line",x,y,w,h)
gc.rectangle('line',x,y,w,h)
--Drawable
setFont(self.font)
@@ -770,7 +770,7 @@ function inputBox:draw()
gc.print("*",x-5+self.font*.5*i,y+h*.5-self.font*.7)
end
else
gc.printf(self.value,x+10,y,self.w,"left")
gc.printf(self.value,x+10,y,self.w)
setFont(self.font-10)
if WIDGET.sel==self then
gc.print(EDITING,x+10,y+12-self.font*1.4)
@@ -795,10 +795,10 @@ function inputBox:keypress(k)
p=p-1
end
t=sub(t,1,p-1)
SFX.play("lock")
SFX.play('lock')
elseif k=="delete"then
t=""
SFX.play("hold")
SFX.play('hold')
end
self.value=t
end
@@ -829,7 +829,7 @@ function WIDGET.newInputBox(D)--name,x,y,w[,h][,font=30][,secret][,regex],hide
end
local textBox={
type="textBox",
type='textBox',
scrollPos=0,--Which line display at bottom
scrollPix=0,--Hidden wheel move value
sure=0,--Sure-timer for clear history
@@ -899,7 +899,7 @@ end
function textBox:clear()
self.texts={}
self.scrollPos=0
SFX.play("fall")
SFX.play('fall')
end
function textBox:draw()
local x,y,w,h=self.x,self.y,self.w,self.h
@@ -910,19 +910,19 @@ function textBox:draw()
--Background
gc.setColor(0,0,0,.3)
gc.rectangle("fill",x,y,w,h)
gc.rectangle('fill',x,y,w,h)
--Frame
gc.setLineWidth(4)
gc.setColor(1,1,WIDGET.sel==self and 0 or 1)
gc.rectangle("line",x,y,w,h)
gc.rectangle('line',x,y,w,h)
--Slider
if #texts>cap then
gc.setLineWidth(2)
gc.rectangle("line",x-25,y,20,h)
gc.rectangle('line',x-25,y,20,h)
local len=max(h*cap/#texts,26)
gc.rectangle("fill",x-22,y+(h-len-6)*(scroll-cap)/(#texts-cap)+3,14,len)
gc.rectangle('fill',x-22,y+(h-len-6)*(scroll-cap)/(#texts-cap)+3,14,len)
end
gc.setColor(1,1,1)
@@ -930,7 +930,7 @@ function textBox:draw()
--Clear button
if not self.fix then
mStr(self.sure>0 and"?"or"X",x+w-20,y-1)
gc.rectangle("line",x+w-40,y,40,40)
gc.rectangle('line',x+w-40,y,40,40)
end
--Texts
@@ -1004,7 +1004,7 @@ function WIDGET.set(list)
for i=1,#list do
list[i]:reset()
end
if SCN.cur~="custom_field"then
if SCN.cur~='custom_field'then
local colorList=THEME.getThemeColor()
if not colorList then return end
local rnd=math.random
@@ -1025,7 +1025,7 @@ function WIDGET.setLang(widgetText)
t=W.name or"##"
W.color=COLOR.dV
end
if type(t)=="string"and W.font then
if type(t)=='string'and W.font then
t=gc.newText(getFont(W.font),t)
end
W.obj=t
@@ -1054,7 +1054,7 @@ end
function WIDGET.drag(x,y,dx,dy)
local W=WIDGET.sel
if not W then return end
if W.type=="slider"or W.type=="textBox"then
if W.type=='slider'or W.type=='textBox'then
W:drag(x,y,dx,dy)
elseif not W:isAbove(x,y)then
WIDGET.sel=false
@@ -1063,7 +1063,7 @@ end
function WIDGET.release(x,y)
local W=WIDGET.sel
if not W then return end
if W.type=="slider"then
if W.type=='slider'then
W:release(x,y)
end
end
@@ -1073,7 +1073,7 @@ function WIDGET.keyPressed(k)
elseif kb.isDown("lshift","lalt","lctrl")and(k=="left"or k=="right")then
--When hold [↑], control slider with left/right
local W=WIDGET.sel
if W and W.type=="slider"or W.type=="selector"then
if W and W.type=='slider'or W.type=='selector'then
W:arrowKey(k=="left")
end
elseif k=="up"or k=="down"or k=="left"or k=="right"then
@@ -1116,19 +1116,19 @@ function WIDGET.keyPressed(k)
end
else
local W=WIDGET.sel
if W and W.type=="inputBox"then
if W and W.type=='inputBox'then
W:keypress(k)
end
end
end
function WIDGET.textinput(texts)
local W=WIDGET.sel
if W and W.type=="inputBox"then
if W and W.type=='inputBox'then
if not W.regex or texts:match(W.regex)then
WIDGET.sel.value=WIDGET.sel.value..texts
SFX.play("move")
SFX.play('move')
else
SFX.play("finesseError",.3)
SFX.play('finesseError',.3)
end
end
end
@@ -1146,9 +1146,9 @@ function WIDGET.gamepadPressed(i)
elseif i=="a"or i=="b"then
local W=WIDGET.sel
if W then
if W.type=="button"or W.type=="key"then
if W.type=='button'or W.type=='key'then
WIDGET.press()
elseif W.type=="slider"then
elseif W.type=='slider'then
local p=W.disp()
local P=i=="left"and(p>0 and p-1)or p<W.unit and p+1
if p==P or not P then return end

View File

@@ -4,7 +4,7 @@ VERSION={
name="午 Noon",
}
function love.conf(t)
t.identity="Techmino"--Saving folder
t.identity='Techmino'--Saving folder
t.version="11.1"
t.gammacorrect=false
t.appendidentity=true--Search files in source then in save directory
@@ -21,7 +21,7 @@ function love.conf(t)
W.minwidth,W.minheight=640,360
W.borderless=false
W.resizable=true
W.fullscreentype="desktop"--"exclusive"
W.fullscreentype='desktop'--'exclusive'
W.fullscreen=false
W.vsync=0--Unlimited FPS
W.msaa=false--Num of samples to use with multi-sampled antialiasing

View File

@@ -115,8 +115,8 @@ return{--返回一个table你也可以在之前定义一些常量或者函数
color=COLOR.green,--颜色
env={--模式环境变量
drop=60,lock=60,
dropPiece=function(P)if P.stat.row>=40 then P:win("finish")end end,
bg="bg2",bgm="race",
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
bg='bg2',bgm='race',
},
load=function()--生成玩家
PLY.newPlayer(1)--1是玩家编号默认用户控制1号玩家

View File

@@ -35,7 +35,7 @@ love.mouse.setVisible(false)
--Delete all files from too old version
function CLEAR(root)
for _,name in next,fs.getDirectoryItems(root or"")do
if fs.getRealDirectory(name)==SAVEDIR and fs.getInfo(name).type~="directory"then
if fs.getRealDirectory(name)==SAVEDIR and fs.getInfo(name).type~='directory'then
fs.remove(name)
end
end
@@ -46,7 +46,7 @@ for _,v in next,{"conf","record","replay","cache","lib"}do
local info=fs.getInfo(v)
if not info then
fs.createDirectory(v)
elseif info.type~="directory"then
elseif info.type~='directory'then
fs.remove(v)
fs.createDirectory(v)
end
@@ -239,13 +239,13 @@ do
local needSave
local autoRestart
if type(STAT.version)~="number"then
if type(STAT.version)~='number'then
STAT.version=0
needSave=true
end
if STAT.version<1300 then
STAT.frame=math.floor(STAT.time*60)
STAT.lastPlay="sprint_10l"
STAT.lastPlay='sprint_10l'
RANKS.sprintFix=nil
RANKS.sprintLock=nil
needSave=true
@@ -292,7 +292,7 @@ do
if RANKS.infinite then RANKS.infinite=6 end
if RANKS.infinite_dig then RANKS.infinite_dig=6 end
for k in next,RANKS do
if type(k)=="number"then
if type(k)=='number'then
RANKS[k]=nil
needSave=true
end
@@ -305,7 +305,7 @@ do
end
v="record/"..v
if fs.getInfo(v..".dat")then
fs.write("record/"..k.."rec",fs.read(v..".dat"))
fs.write("record/"..k..".rec",fs.read(v..".dat"))
fs.remove(v..".dat")
end
if fs.getInfo(v..".rec")then
@@ -319,11 +319,11 @@ do
end
if needSave then
FILE.save(SETTING,"conf/settings","q")
FILE.save(RANKS,"conf/unlock","q")
FILE.save(STAT,"conf/data","q")
FILE.save(SETTING,"conf/settings",'q')
FILE.save(RANKS,"conf/unlock",'q')
FILE.save(STAT,"conf/data",'q')
end
if autoRestart then
love.event.quit("restart")
love.event.quit('restart')
end
end

View File

@@ -1,17 +1,17 @@
local AISpeed={60,50,40,30,20,14,10,6,4,3}
return function(type,speedLV,next,hold,node)
if type=="CC"then
if type=='CC'then
if not hold then hold=false else hold=true end
return{
type="CC",
type='CC',
next=next,
hold=hold,
delta=AISpeed[speedLV],
node=node,
}
elseif type=="9S"then
elseif type=='9S'then
return{
type="9S",
type='9S',
delta=math.floor(AISpeed[speedLV]),
hold=hold,
}

View File

@@ -7,13 +7,13 @@ local yield=coroutine.yield
-- 11~13:LL,RR,DD
local blockPos={4,4,4,4,4,5,4}
-------------------------------------------------Cold clear
local _CC=LOADLIB("CC",{
local _CC=LOADLIB('CC',{
Windows="CCloader",
Linux="CCloader",
Android="libCCloader.so",
libFunc="luaopen_CCloader",
})cc=nil
if type(_CC)=="table"then
if type(_CC)=='table'then
local CCblockID={6,5,4,3,2,1,0}
CC={
getConf= _CC.get_default_config ,--()options,weights
@@ -62,7 +62,7 @@ if type(_CC)=="table"then
CC.fastWeights(wei)
CC.setHold(opt,P.AIdata.hold)
CC.set20G(opt,P.AIdata._20G)
CC.setBag(opt,P.AIdata.bag=="bag")
CC.setBag(opt,P.AIdata.bag=='bag')
CC.setNode(opt,P.AIdata.node)
P.AI_bot=CC.new(opt,wei)
CC.free(opt)CC.free(wei)
@@ -200,7 +200,7 @@ local function getScore(field,cb,cy)
end
-------------------------------------------------
return{
["9S"]=function(P,keys)
['9S']=function(P,keys)
while true do
--Thinking
yield()
@@ -275,7 +275,7 @@ return{
end
end
end,
["CC"]=CC and function(P,keys)
['CC']=CC and function(P,keys)
while true do
--Start thinking
yield()

View File

@@ -18,7 +18,7 @@ end
function back.draw()
shader:send("t",t)
gc.setShader(shader)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()
end
return back

View File

@@ -7,7 +7,7 @@ local X,Y,K
function back.init()
if not video then
video=gc.newVideo("parts/backgrounds/badapple.ogv",{false})
video:setFilter("linear","linear")
video:setFilter('linear','linear')
video:play()
end
back.resize()

View File

@@ -17,7 +17,7 @@ end
function back.draw()
shader:send("t",t)
gc.setShader(shader)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()
end
return back

View File

@@ -17,7 +17,7 @@ end
function back.draw()
shader:send("t",t)
gc.setShader(shader)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()
end
return back

View File

@@ -38,7 +38,7 @@ function back.update()
end
function back.draw()
gc.clear(.1,.1,.1)
gc.push("transform")
gc.push('transform')
gc.origin()
gc.translate(SCR.w/2,SCR.h/2)
@@ -52,11 +52,11 @@ function back.draw()
--Blackhole
gc.scale(SCR.rad/1600)
gc.setColor(0,0,0)
gc.circle("fill",0,0,157)
gc.circle('fill',0,0,157)
gc.setLineWidth(6)
for i=0,15 do
gc.setColor(0,0,0,1-i*.0666)
gc.circle("line",0,0,160+6*i)
gc.circle('line',0,0,160+6*i)
end
gc.scale(1600/SCR.rad)
gc.pop()

View File

@@ -33,7 +33,7 @@ function back.update()
end
function back.draw()
gc.clear(.15,.15,.15)
gc.push("transform")
gc.push('transform')
gc.origin()
gc.setColor(1,1,1,.4)
for i=1,#mino do

View File

@@ -41,7 +41,7 @@ function back.update()
end
function back.draw()
gc.clear(.15,.15,.15)
gc.push("transform")
gc.push('transform')
gc.origin()
for i=1,#mino do
local C=mino[i]

View File

@@ -39,7 +39,7 @@ function back.update()
end
function back.draw()
gc.clear(.15,.15,.15)
gc.push("transform")
gc.push('transform')
gc.origin()
gc.translate(SCR.w/2,SCR.h/2)
for i=1,#mino do

View File

@@ -62,16 +62,16 @@ function back.update(dt)
end
function back.draw()
gc.clear(.1,.1,.1)
gc.push("transform")
gc.push('transform')
gc.origin()
gc.setLineWidth(6)
for i=1,#squares do
local S=squares[i]
local c=S.color
gc.setColor(c[1],c[2],c[3],.6)
rectangle("line",S.x,S.y,S.size,S.size)
rectangle('line',S.x,S.y,S.size,S.size)
gc.setColor(c)
rectangle("fill",S.x,S.y,S.size,S.size)
rectangle('fill',S.x,S.y,S.size,S.size)
end
gc.pop()
end

View File

@@ -39,25 +39,25 @@ function back.update()
end
end
function back.draw()
gc.push("transform")
gc.push('transform')
gc.translate(SCR.w/2,SCR.h/2+20*sin(t*.02))
gc.scale(SCR.k)
gc.clear(.1,.1,.1)
gc.setLineWidth(320)
gc.setColor(.3,.2,.3)
gc.arc("line","open",0,420,500,-.8*3.1416,-.2*3.1416)
gc.arc('line','open',0,420,500,-.8*3.1416,-.2*3.1416)
gc.setLineWidth(4)
gc.setColor(.7,.5,.65)
gc.arc("line","open",0,420,660,-.799*3.1416,-.201*3.1416)
gc.arc("line","open",0,420,340,-.808*3.1416,-.192*3.1416)
gc.arc('line','open',0,420,660,-.799*3.1416,-.201*3.1416)
gc.arc('line','open',0,420,340,-.808*3.1416,-.192*3.1416)
gc.line(-281,224,-530,30.5)
gc.line(281,224,530,30.5)
gc.setLineWidth(6)
gc.setColor(.55,.5,.6)
for i=1,8 do
polygon("line",fan[i])
polygon('line',fan[i])
end
gc.setLineWidth(2)
@@ -65,7 +65,7 @@ function back.draw()
gc.origin()
for i=1,#petal do
local P=petal[i]
ellipse("fill",P.x,P.y,P.rx,P.ry)
ellipse('fill',P.x,P.y,P.rx,P.ry)
end
gc.pop()
end

View File

@@ -33,7 +33,7 @@ function back.update(dt)
if time>1 then
local x,y,color=F.x,F.y,F.color
if F.big then
SFX.play("fall",.5)
SFX.play('fall',.5)
for _=1,rnd(62,126)do
ins(particle,{
x=x,y=y,
@@ -44,7 +44,7 @@ function back.update(dt)
})
end
else
SFX.play("clear_1",.4)
SFX.play('clear_1',.4)
for _=1,rnd(16,26)do
ins(particle,{
x=x,y=y,
@@ -76,12 +76,12 @@ function back.update(dt)
end
function back.draw()
gc.clear(.1,.1,.1)
gc.push("transform")
gc.push('transform')
gc.origin()
for i=1,#firework do
local F=firework[i]
gc.setColor(F.color)
circle("fill",F.x,F.y,F.big and 8 or 4)
circle('fill',F.x,F.y,F.big and 8 or 4)
end
gc.setLineWidth(3)
for i=1,#particle do

View File

@@ -38,7 +38,7 @@ function back.update(dt)
end
function back.draw()
gc.clear(.1,.1,.1)
gc.push("transform")
gc.push('transform')
gc.origin()
gc.setColor(1,1,1)
local img=IMG.lanterns

View File

@@ -14,14 +14,14 @@ function back.update(dt)
end
function back.draw()
gc.clear(.15,.15,.15)
gc.push("transform")
gc.push('transform')
local k=SCR.k
gc.scale(k)
local Y=ceil(SCR.h/80/k)
for x=1,ceil(SCR.w/80/k)do
for y=1,Y do
gc.setColor(1,1,1,sin(x+matrixT[x][y]*t)*.1+.1)
gc.rectangle("fill",80*x,80*y,-80,-80)
gc.rectangle('fill',80*x,80*y,-80,-80)
end
end
gc.pop()

View File

@@ -18,7 +18,7 @@ end
function back.draw()
shader:send("t",t)
gc.setShader(shader)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()
end
return back

View File

@@ -18,7 +18,7 @@ end
function back.draw()
shader:send("t",t)
gc.setShader(shader)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()
end
return back

View File

@@ -39,12 +39,12 @@ function back.update()
end
function back.draw()
gc.clear(.2,.2,.2)
gc.push("transform")
gc.push('transform')
gc.setColor(.7,.7,.7)
gc.origin()
for i=1,#snow do
local P=snow[i]
ellipse("fill",P.x,P.y,P.rx,P.ry)
ellipse('fill',P.x,P.y,P.rx,P.ry)
end
gc.pop()
end

View File

@@ -36,7 +36,7 @@ function back.draw()
gc.translate(-10,-10)
gc.setColor(.8,.8,.8)
for i=1,1260,5 do
rectangle("fill",stars[i+1],stars[i+2],stars[i],stars[i])
rectangle('fill',stars[i+1],stars[i+2],stars[i],stars[i])
end
gc.translate(10,10)
end

View File

@@ -34,7 +34,7 @@ function back.draw()
for i=1,#ring do
local r=ring[i]^2/12
gc.setLineWidth(30-15/(r+.5))
gc.rectangle("line",W*.5-W*r/2,H*.5-H*r/2,W*r,H*r)
gc.rectangle('line',W*.5-W*r/2,H*.5-H*r/2,W*r,H*r)
end
end
function back.discard()

View File

@@ -18,7 +18,7 @@ function back.draw()
else
gc.clear(.1,.1,.1)
end
gc.push("transform")
gc.push('transform')
gc.translate(SCR.w/2,SCR.h/2+20*sin(t*.02))
gc.scale(SCR.k)
gc.scale(1.1626,1.26)

View File

@@ -17,12 +17,12 @@ local W,H
function back.init()
bar=gc.newCanvas(41,1)
gc.setCanvas(bar)
gc.push("transform")
gc.push('transform')
gc.origin()
for x=0,20 do
gc.setColor(1,1,1,x/11)
gc.rectangle("fill",x,0,1,1)
gc.rectangle("fill",41-x,0,1,1)
gc.rectangle('fill',x,0,1,1)
gc.rectangle('fill',41-x,0,1,1)
end
gc.pop()
gc.setCanvas()

View File

@@ -98,7 +98,7 @@ function DATA.copyBoard(page)--Copy the [page] board
end
str=str..S
end
return data.encode("string","base64",data.compress("string","zlib",str))
return data.encode('string','base64',data.compress('string','zlib',str))
end
function DATA.copyBoards()
local out={}
@@ -114,10 +114,10 @@ function DATA.pasteBoard(str,page)--Paste [str] data to [page] board
local _,__
--Decode
str=str:sub(str:find"%S",str:find".%s-$")
_,str=pcall(data.decode,"string","base64",str)
str=str:sub(str:find("%S"),str:find(".%s-$"))
_,str=pcall(data.decode,'string','base64',str)
if not _ then return end
_,str=pcall(data.decompress,"string","zlib",str)
_,str=pcall(data.decompress,'string','zlib',str)
if not _ then return end
local fX,fY=1,1--*ptr for Field(r*10+(c-1))
@@ -381,7 +381,7 @@ do--function DATA.saveRecording()
JSON.encode(getModList()).."\n"..
DATA.dumpRecording(GAME.rep)
love.filesystem.write(fileName,fileHead.."\n"..data.compress("string","zlib",fileBody))
love.filesystem.write(fileName,fileHead.."\n"..data.compress('string','zlib',fileBody))
ins(REPLAY,fileName)
FILE.save(REPLAY,"conf/replay")
return true

View File

@@ -66,7 +66,7 @@ end
function royaleLevelup()
GAME.stage=GAME.stage+1
local spd
TEXT.show(text.royale_remain:gsub("$1",#PLY_ALIVE),640,200,40,"beat",.3)
TEXT.show(text.royale_remain:gsub("$1",#PLY_ALIVE),640,200,40,'beat',.3)
if GAME.stage==2 then
spd=30
elseif GAME.stage==3 then
@@ -74,7 +74,7 @@ function royaleLevelup()
for _,P in next,PLY_ALIVE do
P.gameEnv.garbageSpeed=.6
end
if PLAYERS[1].alive then BGM.play("cruelty")end
if PLAYERS[1].alive then BGM.play('cruelty')end
elseif GAME.stage==4 then
spd=10
for _,P in next,PLY_ALIVE do
@@ -87,7 +87,7 @@ function royaleLevelup()
end
elseif GAME.stage==6 then
spd=3
if PLAYERS[1].alive then BGM.play("final")end
if PLAYERS[1].alive then BGM.play('final')end
end
for _,P in next,PLY_ALIVE do
P.gameEnv.drop=spd
@@ -113,12 +113,12 @@ function generateLine(hole)
end
function freshDate(mode)
if not mode then mode=""end
local date=os.date("%Y/%m/%d")
local date=os.date"%Y/%m/%d"
if STAT.date~=date then
STAT.date=date
STAT.todayTime=0
if not mode:find("q")then
LOG.print(text.newDay,"message")
if not mode:find'q'then
LOG.print(text.newDay,'message')
end
return true
end
@@ -132,10 +132,10 @@ function legalGameTime()--Check if today's playtime is legal
if STAT.todayTime<14400 then
return true
elseif STAT.todayTime<21600 then
LOG.print(text.playedLong,"warning")
LOG.print(text.playedLong,'warn')
return true
else
LOG.print(text.playedTooMuch,"warning")
LOG.print(text.playedTooMuch,'warn')
return false
end
end
@@ -144,8 +144,8 @@ end
function mergeStat(stat,delta)--Merge delta stat. to global stat.
for k,v in next,delta do
if type(v)=="table"then
if type(stat[k])=="table"then
if type(v)=='table'then
if type(stat[k])=='table'then
mergeStat(stat[k],v)
end
else
@@ -172,7 +172,7 @@ function destroyPlayers()--Destroy all player objects, restore freerows and free
FREEROW.discard(rem(P.field))
FREEROW.discard(rem(P.visTime))
end
if P.AI_mode=="CC"then
if P.AI_mode=='CC'then
CC.free(P.bot_opt)
CC.free(P.bot_wei)
CC.destroy(P.AI_bot)
@@ -198,7 +198,7 @@ function pauseGame()
if not(GAME.result or GAME.replaying)then
GAME.pauseCount=GAME.pauseCount+1
end
SCN.swapTo("pause","none")
SCN.swapTo('pause','none')
end
end
function applyCustomGame()--Apply CUSTOMENV, BAG, MISSION
@@ -226,11 +226,11 @@ function loadGame(M,ifQuickPlay,ifNet)--Load a mode and go to game scene
GAME.init=true
GAME.net=ifNet
if ifNet then
SCN.go("net_game","swipeD")
SCN.go('net_game','swipeD')
else
drawableText.modeName:set(text.modes[M][1].." "..text.modes[M][2])
SCN.go("game",ifQuickPlay and"swipeD"or"fade_togame")
SFX.play("enter")
SCN.go('game',ifQuickPlay and'swipeD'or'fade_togame')
SFX.play('enter')
end
end
end
@@ -242,7 +242,7 @@ function initPlayerPosition(sudden)--Set initial position for every player
end
end
local method=sudden and"setPosition"or"movePosition"
local method=sudden and'setPosition'or'movePosition'
L[1][method](L[1],340,75,1)
if #L<=5 then
if L[2]then L[2][method](L[2],965,390,.5)end
@@ -314,7 +314,7 @@ do--function resetGameData(args)
if time%20==0 then
local M=GAME.mod[time/20]
if M then
TEXT.show(M.id,700+(time-20)%120*4,36,45,"spin",.5)
TEXT.show(M.id,700+(time-20)%120*4,36,45,'spin',.5)
else
return
end
@@ -332,12 +332,12 @@ do--function resetGameData(args)
--Graphic
"block","ghost","center","smooth","grid","bagLine",
"lockFX","dropFX","moveFX","clearFX","splashFX","shakeFX","atkFX",
"text","score","warn","highCam","nextPos",
"text","score",'warn',"highCam","nextPos",
}
local function copyGameSetting()
local S={}
for _,key in next,gameSetting do
if type(SETTING[key])=="table"then
if type(SETTING[key])=='table'then
S[key]=TABLE.shift(SETTING[key])
else
S[key]=SETTING[key]
@@ -355,12 +355,12 @@ do--function resetGameData(args)
GAME.result=false
GAME.warnLVL0=0
GAME.warnLVL=0
if args:find("r")then
if args:find'r'then
GAME.frameStart=0
GAME.recording=false
GAME.replaying=1
else
GAME.frameStart=args:find("n")and 0 or 150-SETTING.reTime*15
GAME.frameStart=args:find'n'and 0 or 150-SETTING.reTime*15
GAME.seed=seed or math.random(1046101471,2662622626)
GAME.pauseTime=0
GAME.pauseCount=0
@@ -375,7 +375,7 @@ do--function resetGameData(args)
destroyPlayers()
GAME.curMode.load()
initPlayerPosition(args:find("q"))
initPlayerPosition(args:find'q')
VK.restore()
if GAME.modeEnv.task then
for i=1,#PLAYERS do
@@ -384,7 +384,7 @@ do--function resetGameData(args)
end
BG.set(GAME.modeEnv.bg)
local bgm=GAME.modeEnv.bgm
BGM.play(type(bgm)=="string"and bgm or type(bgm)=="table"and bgm[math.random(#bgm)])
BGM.play(type(bgm)=='string'and bgm or type(bgm)=='table'and bgm[math.random(#bgm)])
TEXT.clear()
if GAME.modeEnv.royaleMode then
@@ -404,7 +404,7 @@ do--function resetGameData(args)
if GAME.setting.allowMod then
TASK.new(tick_showMods)
end
SFX.play("ready")
SFX.play('ready')
collectgarbage()
end
end
@@ -482,14 +482,14 @@ do--function drawSelfProfile()
local textObject,scaleK,width,offY
function drawSelfProfile()
local selfAvatar=USERS.getAvatar(USER.uid)
gc.push("transform")
gc.push('transform')
gc.translate(1280,0)
--Draw avatar
gc.setLineWidth(2)
gc.setColor(.3,.3,.3,.8)gc.rectangle("fill",-300,0,300,80)
gc.setColor(1,1,1)gc.rectangle("line",-300,0,300,80)
gc.rectangle("line",-73,7,66,66,2)
gc.setColor(.3,.3,.3,.8)gc.rectangle('fill',-300,0,300,80)
gc.setColor(1,1,1)gc.rectangle('line',-300,0,300,80)
gc.rectangle('line',-73,7,66,66,2)
gc.draw(selfAvatar,-72,8,nil,.5)
--Draw username
@@ -505,18 +505,18 @@ do--function drawSelfProfile()
--Draw lv. & xp.
gc.draw(TEXTURE.lvIcon[USER.lv],-295,50)
gc.line(-270,55,-80,55,-80,70,-270,70)
gc.rectangle("fill",-210,55,150*USER.xp/USER.lv/USER.lv,15)
gc.rectangle('fill',-210,55,150*USER.xp/USER.lv/USER.lv,15)
gc.pop()
end
end
function drawWarning()
if SETTING.warn and GAME.warnLVL>0 then
gc.push("transform")
gc.push('transform')
gc.origin()
SHADER.warning:send("level",GAME.warnLVL)
gc.setShader(SHADER.warning)
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()
gc.pop()
end

View File

@@ -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="O",
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="O",
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="A",
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="A",
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="V",
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="V",
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="P",
list={"easy","slow","medium","fast","none"},
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="P",
list={"down","up","all"},
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="J",
list={"U-D","L-R","180"},
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="R",
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="R",
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="R",
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="R",
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="Y",
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="Y",
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="Y",
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="lH",
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="lH",
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="lH",
key="c",x=440,y=470,color='lH',
func=function(P)
disableKey(P,1)disableKey(P,2)
disableKey(P,11)disableKey(P,12)
@@ -118,21 +118,21 @@ MODOPT={--Mod options
unranked=true,
},
{no=19,id="CS",name="customSeq",
key="b",x=680,y=470,color="B",
list={"bag","his4","c2","rnd","mess","reverb"},
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="B",
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="B",
list={"on","off"},
func=function(P,O)P.gameEnv.bone=O=="on"end,
key="m",x=920,y=470,color='B',
list={'on','off'},
func=function(P,O)P.gameEnv.bone=O=='on'end,
},
}
for i=1,#MODOPT do
@@ -212,7 +212,7 @@ customEnv0={
bone=false,
--Rule
sequence="bag",
sequence='bag',
fieldH=20,
ospin=true,
@@ -220,7 +220,7 @@ customEnv0={
b2bKill=false,
easyFresh=true,
deepDrop=false,
visible="show",
visible='show',
freshLimit=1e99,
@@ -230,8 +230,8 @@ customEnv0={
missionKill=false,
--Else
bg="blockfall",
bgm="infinite",
bg='blockfall',
bgm='infinite',
}
CUSTOMENV=FILE.load("conf/customEnv")--gameEnv for cutsom game
if not CUSTOMENV or CUSTOMENV.version~=VERSION.code then CUSTOMENV=TABLE.copy(customEnv0)end
@@ -240,7 +240,7 @@ SETTING={--Settings
das=10,arr=2,dascut=0,
sddas=0,sdarr=2,
ihs=true,irs=true,ims=true,
RS="TRS",
RS='TRS',
swap=true,
--System
@@ -292,7 +292,7 @@ SETTING={--Settings
stereo=.7,
vib=0,
voc=0,
cv="miya",
cv='miya',
--Virtualkey
VKSFX=.2,--SFX volume
@@ -321,7 +321,7 @@ else
send=0,recv=0,pend=0,off=0,
clear={},spin={},
pc=0,hpc=0,b2b=0,b3b=0,score=0,
lastPlay="sprint_10l",--Last played mode ID
lastPlay='sprint_10l',--Last played mode ID
date=false,
todayTime=0,
}for i=1,29 do STAT.clear[i]={0,0,0,0,0,0}STAT.spin[i]={0,0,0,0,0,0,0}end

View File

@@ -6,7 +6,7 @@ local noKickSet,noKickSet_180,pushZero do
noKickSet_180={[01]=Zero,[10]=Zero,[03]=Zero,[30]=Zero,[12]=Zero,[21]=Zero,[32]=Zero,[23]=Zero,[02]=Zero,[20]=Zero,[13]=Zero,[31]=Zero}
function pushZero(t)
for _,L in next,t do
if type(L)=="table"then
if type(L)=='table'then
for _,v in next,L do
if not v[1]or v[1][1]~=0 or v[1][2]~=0 then
table.insert(v,1,map[0][0])
@@ -26,9 +26,9 @@ end
--Make all vec point to the same vec
local function collectSet(set)
if type(set)~="table"then return end
if type(set)~='table'then return end
for _,list in next,set do
if type(list[1])=="string"then
if type(list[1])=='string'then
vecStrConv(list)
end
end
@@ -136,12 +136,12 @@ do
},--T
function(P,d)
if P.gameEnv.easyFresh then
P:freshBlock("fresh")
P:freshBlock('fresh')
end
if P.gameEnv.ospin then
local x,y=P.curX,P.curY
if y==P.ghoY and((P:solid(x-1,y)or P:solid(x-1,y+1)))and(P:solid(x+2,y)or P:solid(x+2,y+1))then
if P.sound then SFX.play("rotatekick",nil,P:getCenterX()*.15)end
if P.sound then SFX.play('rotatekick',nil,P:getCenterX()*.15)end
P.spinSeq=P.spinSeq%100*10+d
if P.spinSeq<100 then return end
for i=1,#OspinList do
@@ -164,18 +164,18 @@ do
P.cur.dir,P.cur.sc=dir,SCS[id][dir]
P.spinLast=2
P.stat.rotate=P.stat.rotate+1
P:freshBlock("move")
P:freshBlock('move')
P.spinSeq=0
return
end
end
end
else
if P.sound then SFX.play("rotate",nil,P:getCenterX()*.15)end
if P.sound then SFX.play('rotate',nil,P:getCenterX()*.15)end
P.spinSeq=0
end
else
if P.sound then SFX.play("rotate",nil,P:getCenterX()*.15)end
if P.sound then SFX.play('rotate',nil,P:getCenterX()*.15)end
end
end,--O
{
@@ -286,19 +286,19 @@ do
[31]={"+0-1","+1+0"},
},--W
function(P,d)
if P.type=="human"then SFX.play("rotate",nil,P:getCenterX()*.15)end
if P.type=='human'then SFX.play('rotate',nil,P:getCenterX()*.15)end
local kickData=XspinList[d]
for test=1,#kickData do
local x,y=P.curX+kickData[test][1],P.curY+kickData[test][2]
if not P:ifoverlap(P.cur.bk,x,y)then
P.curX,P.curY=x,y
P.spinLast=1
P:freshBlock("move")
P:freshBlock('move')
P.stat.rotate=P.stat.rotate+1
return
end
end
P:freshBlock("fresh")
P:freshBlock('fresh')
end,--X
{
[01]={"-1+0","-1+1","+0-3","-1+1","-1+2","+0+1"},

View File

@@ -665,97 +665,97 @@ return{
},
},
modes={
["sprint_10l"]= {"Sprint", "10L", "Clear 10 lines!"},
["sprint_20l"]= {"Sprint", "20L", "Clear 20 lines!"},
["sprint_40l"]= {"Sprint", "40L", "Clear 40 lines!"},
["sprint_100l"]= {"Sprint", "100L", "Clear 100 lines!"},
["sprint_400l"]= {"Sprint", "400L", "Clear 400 lines!"},
["sprint_1000l"]= {"Sprint", "1000L", "Clear 1000 lines!"},
["sprintPenta"]= {"Sprint", "PENTOMINO", "40L with 18 pentominoes."},
["sprintMPH"]= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
["dig_10l"]= {"Dig", "10L", "Dig 10 garbage lines."},
["dig_40l"]= {"Dig", "40L", "Dig 40 garbage lines."},
["dig_100l"]= {"Dig", "100L", "Dig 100 garbage lines."},
["dig_400l"]= {"Dig", "400L", "Dig 400 garbage lines."},
["dig_1000l"]= {"Dig", "1000L", "Dig 1000 garbage lines."},
["drought_n"]= {"Drought", "100L", "There are no I-pieces."},
["drought_l"]= {"Drought", "100L", "W T F"},
["marathon_n"]= {"Marathon", "NORMAL", "200-line marathon with accelerating speed."},
["marathon_h"]= {"Marathon", "HARD", "200-line high-speed marathon."},
["solo_e"]= {"Battle", "EASY", "Defeat the AI!"},
["solo_n"]= {"Battle", "NORMAL", "Defeat the AI!"},
["solo_h"]= {"Battle", "HARD", "Defeat the AI!"},
["solo_l"]= {"Battle", "LUNATIC", "Defeat the AI!"},
["solo_u"]= {"Battle", "ULTIMATE", "Defeat the AI!"},
["techmino49_e"]= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins."},
["techmino49_h"]= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins."},
["techmino49_u"]= {"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins."},
["techmino99_e"]= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins."},
["techmino99_h"]= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins."},
["techmino99_u"]= {"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins."},
["round_e"]= {"Turn-Based", "EASY", "Chess mode"},
["round_n"]= {"Turn-Based", "NORMAL", "Chess mode"},
["round_h"]= {"Turn-Based", "HARD", "Chess mode"},
["round_l"]= {"Turn-Based", "LUNATIC", "Chess mode"},
["round_u"]= {"Turn-Based", "ULTIMATE", "Chess mode"},
["master_beginner"]= {"Master", "LUNATIC", "For 20G beginners."},
["master_advance"]= {"Master", "ULTIMATE", "For 20G pros."},
["master_final"]= {"Master", "FINAL", "20G and beyond."},
["master_phantasm"]= {"Master", "PHANTASM", "???"},
["master_extra"]= {"GrandMaster", "EXTRA", "An eternity shorter than an instant."},
["rhythm_e"]= {"Rhythm", "EASY", "200-line low-BPM rhythm marathon."},
["rhythm_h"]= {"Rhythm", "HARD", "200-line medium BPM rhythm marathon"},
["rhythm_u"]= {"Rhythm", "ULTIMATE", "200-line high-BPM rhythm marathon."},
["blind_e"]= {"Blind", "HALF", "For novices."},
["blind_n"]= {"Blind", "ALL", "For intermediates."},
["blind_h"]= {"Blind", "SUDDEN", "For the experienced."},
["blind_l"]= {"Blind", "SUDDEN+", "For professionals."},
["blind_u"]= {"Blind", "?", "Are you ready?"},
["blind_wtf"]= {"Blind", "WTF", "You're not ready."},
["classic_fast"]= {"Classic", "CTWC", "High-speed classic mode."},
["survivor_e"]= {"Survivor", "EASY", "How long can you survive?"},
["survivor_n"]= {"Survivor", "NORMAL", "How long can you survive?"},
["survivor_h"]= {"Survivor", "HARD", "How long can you survive?"},
["survivor_l"]= {"Survivor", "LUNATIC", "How long can you survive?"},
["survivor_u"]= {"Survivor", "ULTIMATE", "How long can you survive?"},
["attacker_h"]= {"Attacker", "HARD", "Practice Offense!"},
["attacker_u"]= {"Attacker", "ULTIMATE", "Practice Offense!"},
["defender_n"]= {"Defender", "NORMAL", "Practice Defense!"},
["defender_l"]= {"Defender", "LUNATIC", "Practice Defense!"},
["dig_h"]= {"Driller", "HARD", "Digging practice!"},
["dig_u"]= {"Driller", "ULTIMATE", "Digging practice!"},
["bigbang"]= {"Big Bang", "EASY", "All-spin tutorial!\n[Under construction]"},
["c4wtrain_n"]= {"C4W Training", "NORMAL", "Infinite combos."},
["c4wtrain_l"]= {"C4W Training", "LUNATIC", "Infinite combos."},
["pctrain_n"]= {"PC Training", "NORMAL", "Perfect Clear Practice."},
["pctrain_l"]= {"PC Training", "LUNATIC", "Harder Perfect Clear Practice."},
["pc_n"]= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
["pc_h"]= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
["pc_l"]= {"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
["tech_n"]= {"Tech", "NORMAL", "Try to keep the\nBack-to-Back chain!"},
["tech_n_plus"]= {"Tech", "NORMAL+", "Spins & PCs only."},
["tech_h"]= {"Tech", "HARD", "Try to keep the\nBack-to-Back chain!"},
["tech_h_plus"]= {"Tech", "HARD+", "Spins & PCs only."},
["tech_l"]= {"Tech", "LUNATIC", "Try to keep the\nBack-to-Back chain!"},
["tech_l_plus"]= {"Tech", "LUNATIC+", "Spins & PCs only."},
["tech_finesse"]= {"Tech", "FINESSE", "No finesse faults!"},
["tech_finesse_f"]= {"Tech", "FINESSE+", "No normal clears and finesse faults!"},
["tsd_e"]= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
["tsd_h"]= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
["tsd_u"]= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
["backfire_n"]= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines."},
["backfire_h"]= {"Backfire", "HARD", "Hold back the backfiring garbage lines."},
["backfire_l"]= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines."},
["backfire_u"]= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines."},
["zen"]= {"Zen", "200", "A 200-line run without a time limit."},
["ultra"]= {"Ultra", "EXTRA", "A 2-minute score attack."},
["infinite"]= {"Infinite", "", "It's just a sandbox."},
["infinite_dig"]= {"Infinite: Dig", "", "Dig-diggi-dug."},
["sprintFix"]= {"Sprint", "NO LEFT/RIGHT"},
["sprintLock"]= {"Sprint", "NO ROTATIONS"},
["marathon_bfmax"]= {"Marathon", "ULTIMATE"},
["custom_clear"]= {"Custom", "NORMAL"},
["custom_puzzle"]= {"Custom", "PUZZLE"},
['sprint_10l']= {"Sprint", "10L", "Clear 10 lines!"},
['sprint_20l']= {"Sprint", "20L", "Clear 20 lines!"},
['sprint_40l']= {"Sprint", "40L", "Clear 40 lines!"},
['sprint_100l']= {"Sprint", "100L", "Clear 100 lines!"},
['sprint_400l']= {"Sprint", "400L", "Clear 400 lines!"},
['sprint_1000l']= {"Sprint", "1000L", "Clear 1000 lines!"},
['sprintPenta']= {"Sprint", "PENTOMINO", "40L with 18 pentominoes."},
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
['dig_10l']= {"Dig", "10L", "Dig 10 garbage lines."},
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines."},
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines."},
['dig_400l']= {"Dig", "400L", "Dig 400 garbage lines."},
['dig_1000l']= {"Dig", "1000L", "Dig 1000 garbage lines."},
['drought_n']= {"Drought", "100L", "There are no I-pieces."},
['drought_l']= {"Drought", "100L", "W T F"},
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with accelerating speed."},
['marathon_h']= {"Marathon", "HARD", "200-line high-speed marathon."},
['solo_e']= {"Battle", "EASY", "Defeat the AI!"},
['solo_n']= {"Battle", "NORMAL", "Defeat the AI!"},
['solo_h']= {"Battle", "HARD", "Defeat the AI!"},
['solo_l']= {"Battle", "LUNATIC", "Defeat the AI!"},
['solo_u']= {"Battle", "ULTIMATE", "Defeat the AI!"},
['techmino49_e']= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins."},
['techmino49_h']= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins."},
['techmino49_u']= {"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins."},
['techmino99_e']= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins."},
['techmino99_h']= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins."},
['techmino99_u']= {"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins."},
['round_e']= {"Turn-Based", "EASY", "Chess mode"},
['round_n']= {"Turn-Based", "NORMAL", "Chess mode"},
['round_h']= {"Turn-Based", "HARD", "Chess mode"},
['round_l']= {"Turn-Based", "LUNATIC", "Chess mode"},
['round_u']= {"Turn-Based", "ULTIMATE", "Chess mode"},
['master_beginner']= {"Master", "LUNATIC", "For 20G beginners."},
['master_advance']= {"Master", "ULTIMATE", "For 20G pros."},
['master_final']= {"Master", "FINAL", "20G and beyond."},
['master_phantasm']= {"Master", "PHANTASM", "???"},
['master_extra']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant."},
['rhythm_e']= {"Rhythm", "EASY", "200-line low-BPM rhythm marathon."},
['rhythm_h']= {"Rhythm", "HARD", "200-line medium BPM rhythm marathon"},
['rhythm_u']= {"Rhythm", "ULTIMATE", "200-line high-BPM rhythm marathon."},
['blind_e']= {"Blind", "HALF", "For novices."},
['blind_n']= {"Blind", "ALL", "For intermediates."},
['blind_h']= {"Blind", "SUDDEN", "For the experienced."},
['blind_l']= {"Blind", "SUDDEN+", "For professionals."},
['blind_u']= {"Blind", "?", "Are you ready?"},
['blind_wtf']= {"Blind", "WTF", "You're not ready."},
['classic_fast']= {"Classic", "CTWC", "High-speed classic mode."},
['survivor_e']= {"Survivor", "EASY", "How long can you survive?"},
['survivor_n']= {"Survivor", "NORMAL", "How long can you survive?"},
['survivor_h']= {"Survivor", "HARD", "How long can you survive?"},
['survivor_l']= {"Survivor", "LUNATIC", "How long can you survive?"},
['survivor_u']= {"Survivor", "ULTIMATE", "How long can you survive?"},
['attacker_h']= {"Attacker", "HARD", "Practice Offense!"},
['attacker_u']= {"Attacker", "ULTIMATE", "Practice Offense!"},
['defender_n']= {"Defender", "NORMAL", "Practice Defense!"},
['defender_l']= {"Defender", "LUNATIC", "Practice Defense!"},
['dig_h']= {"Driller", "HARD", "Digging practice!"},
['dig_u']= {"Driller", "ULTIMATE", "Digging practice!"},
['bigbang']= {"Big Bang", "EASY", "All-spin tutorial!\n[Under construction]"},
['c4wtrain_n']= {"C4W Training", "NORMAL", "Infinite combos."},
['c4wtrain_l']= {"C4W Training", "LUNATIC", "Infinite combos."},
['pctrain_n']= {"PC Training", "NORMAL", "Perfect Clear Practice."},
['pctrain_l']= {"PC Training", "LUNATIC", "Harder Perfect Clear Practice."},
['pc_n']= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
['pc_h']= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
['pc_l']= {"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
['tech_n']= {"Tech", "NORMAL", "Try to keep the\nBack-to-Back chain!"},
['tech_n_plus']= {"Tech", "NORMAL+", "Spins & PCs only."},
['tech_h']= {"Tech", "HARD", "Try to keep the\nBack-to-Back chain!"},
['tech_h_plus']= {"Tech", "HARD+", "Spins & PCs only."},
['tech_l']= {"Tech", "LUNATIC", "Try to keep the\nBack-to-Back chain!"},
['tech_l_plus']= {"Tech", "LUNATIC+", "Spins & PCs only."},
['tech_finesse']= {"Tech", "FINESSE", "No finesse faults!"},
['tech_finesse_f']= {"Tech", "FINESSE+", "No normal clears and finesse faults!"},
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
['backfire_n']= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines."},
['backfire_h']= {"Backfire", "HARD", "Hold back the backfiring garbage lines."},
['backfire_l']= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines."},
['backfire_u']= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines."},
['zen']= {'Zen', "200", "A 200-line run without a time limit."},
['ultra']= {'Ultra', "EXTRA", "A 2-minute score attack."},
['infinite']= {'infinite', "", "It's just a sandbox."},
['infinite_dig']= {"Infinite: Dig", "", "Dig-diggi-dug."},
['sprintFix']= {"Sprint", "NO LEFT/RIGHT"},
['sprintLock']= {"Sprint", "NO ROTATIONS"},
['marathon_bfmax']= {"Marathon", "ULTIMATE"},
['custom_clear']= {"Custom", "NORMAL"},
['custom_puzzle']= {"Custom", "PUZZLE"},
},
getTip={refuseCopy=true,
'Free-to-play block stacking game with a Battle Royale mode!',

View File

@@ -577,96 +577,96 @@ return{
},
},
modes={
["sprint_10l"]= {"Sprint", "10L", "Nettoyez 10 lignes !"},
["sprint_20l"]= {"Sprint", "20L", "Nettoyez 20 lignes !"},
["sprint_40l"]= {"Sprint", "40L", "Nettoyez 40 lignes !"},
["sprint_100l"]= {"Sprint", "100L", "Nettoyez 100 lignes !"},
["sprint_400l"]= {"Sprint", "400L", "Nettoyez 400 lignes !"},
["sprint_1000l"]= {"Sprint", "1000L", "Nettoyez 1000 lignes !"},
["sprintPenta"]= {"Sprint", "Pentomino", "40 lignes avec 18 pentominos."},
["sprintMPH"]= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
["dig_10l"]= {"Dig", "10L", "Creusez 10 lines"},
["dig_40l"]= {"Dig", "40L", "Creusez 40 lines"},
["dig_100l"]= {"Dig", "100L", "Creusez 100 lines"},
["dig_400l"]= {"Dig", "400L", "Creusez 400 lines"},
["dig_1000l"]= {"Dig", "1000L", "Creusez 1000 lines"},
["drought_n"]= {"Drought", "100L", "Pas de pièce I !"},
["drought_l"]= {"Drought", "100L", "WTF ??!!"},
["marathon_n"]= {"Marathon", "NORMAL", "Marathon de 200 lignes."},
["marathon_h"]= {"Marathon", "DIFFICILE", "Marathon de 200 lignes à très haute vitesse"},
["solo_e"]= {"Battle", "FACILE", "Battez l'IA !"},
["solo_n"]= {"Battle", "NORMAL", "Battez l'IA !"},
["solo_h"]= {"Battle", "DIFFICILE", "Battez l'IA !"},
["solo_l"]= {"Battle", "LUNATIQUE", "Battez l'IA !"},
["solo_u"]= {"Battle", "ULTIME", "Battez l'IA !"},
["techmino49_e"]= {"Tech 49", "FACILE", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
["techmino49_h"]= {"Tech 49", "DIFFICILE", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
["techmino49_u"]= {"Tech 49", "ULTIME", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
["techmino99_e"]= {"Tech 99", "FACILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
["techmino99_h"]= {"Tech 99", "DIFFICILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
["techmino99_u"]= {"Tech 99", "ULTIMe", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
["round_e"]= {"Tour à tour", "FACILE", "Mode échecs"},
["round_n"]= {"Tour à tour", "NORMAL", "Mode échecs"},
["round_h"]= {"Tour à tour", "DIFFICILE", "Mode échecs"},
["round_l"]= {"Tour à tour", "LUNATIQUE", "Mode échecs"},
["round_u"]= {"Tour à tour", "ULTIME", "Mode échecs"},
["master_beginner"]= {"Master", "LUNATIQUE", "Pour les débutants en 20G."},
["master_advance"]= {"Master", "ULTIME", "Challenge 20G pro !"},
["master_final"]= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
-- ["master_phantasm"]= {"Mester", "FANTASMA", "20G: ???"},
["master_extra"]= {"GrandMaster", "EXTRA", "Tentez de devenir un Grandmaster."},
-- ["rhythm_e"]= {"Rhythm", "EASY", "200-line low-bpm rhythm marathon."},
-- ["rhythm_h"]= {"Rhythm", "HARD", "200-line medium-bpm rhythm marathon"},
-- ["rhythm_u"]= {"Rhythm", "ULTIMATE", "200-line high-bpm rhythm marathon."},
["blind_e"]= {"Aveugle", "MOITIE", "Pour les novices."},
["blind_n"]= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
["blind_h"]= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},
["blind_l"]= {"Aveugle", "SOUDAIN+", "Pour les pros."},
["blind_u"]= {"Aveugle", "?", "Êtes-vous prêt ?"},
["blind_wtf"]= {"Aveugle", "WTF", "Vous n'êtes pas prêt."},
["classic_fast"]= {"Classic", "CTWC", "Un mode classique rapide."},
["survivor_e"]= {"Survivor", "FACILE", "Pendant combien de temps survivrez-vous ?"},
["survivor_n"]= {"Survivor", "NORMAL", "Pendant combien de temps survivrez-vous ?"},
["survivor_h"]= {"Survivor", "DIFFICILE", "Pendant combien de temps survivrez-vous ?"},
["survivor_l"]= {"Survivor", "LUNATIQUE", "Pendant combien de temps survivrez-vous ?"},
["survivor_u"]= {"Survivor", "ULTIME", "Pendant combien de temps survivrez-vous ?"},
["attacker_h"]= {"Attaquant", "DIFFICILE", "Soyez offensifs !"},
["attacker_u"]= {"Attaquant", "ULTIME", "Soyez offensifs !"},
["defender_n"]= {"Défendant", "NORMAL", "Soyez défensifs !"},
["defender_l"]= {"Défendant", "LUNATIQUE", "Soyez défensifs !"},
["dig_h"]= {"Perceuse", "DIFFICILE", "Essayez de creuser !"},
["dig_u"]= {"Perceuse", "ULTIME", "Essayez de creuser !"},
["bigbang"]= {"Big Bang", "FACILE", "Tutoriel All-Spin\nEn construction..."},
["c4wtrain_n"]= {"Mode essai C4W", "NORMAL", "Combos infinis."},
["c4wtrain_l"]= {"Mode essai C4W", "LUNATIQUE", "Combos infinis."},
["pctrain_n"]= {"Mode essai PC", "NORMAL", "Mode Perfect Clear simple"},
["pctrain_l"]= {"Mode essai PC", "LUNATIQUE", "Mode Perfect Clear dur"},
["pc_n"]= {"PC Challenge", "NORMAL", "Obtenez un PC dans les prochaines 100 lignes !"},
["pc_h"]= {"PC Challenge", "DIFFICILE", "Obtenez un PC dans les prochaines 100 lignes !"},
["pc_l"]= {"PC Challenge", "LUNATIQUE", "Obtenez un PC dans les prochaines 100 lignes !"},
["tech_n"]= {"Tech", "NORMAL", "Gardez le B2B !"},
["tech_n_plus"]= {"Tech", "NORMAL+", "Spin & PC uniquement"},
["tech_h"]= {"Tech", "DIFFICILE", "Gardez le B2B !"},
["tech_h_plus"]= {"Tech", "HARD+", "Spin & PC uniquement"},
["tech_l"]= {"Tech", "LUNATIQUE", "Gardez le B2B !"},
["tech_l_plus"]= {"Tech", "LUNATIQUE+", "Spin & PC uniquement"},
["tech_finesse"]= {"Tech", "FINESSE", "Pas d'erreurs de finesse !"},
["tech_finesse_f"]= {"Tech", "FINESSE+", "Pas de nettoyages normaux, Pas d'erreurs de finesse !"},
["tsd_e"]= {"TSD Challenge", "FACILE", "T-spin doubles uniquement !"},
["tsd_h"]= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
["tsd_u"]= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
-- ["backfire_n"]= {"Backfire", "NORMAL", "Self-send garbages"},
-- ["backfire_h"]= {"Backfire", "HARD", "Self-send garbages"},
-- ["backfire_l"]= {"Backfire", "LUNATIC", "Self-send garbages"},
-- ["backfire_u"]= {"Backfire", "ULTIMATE", "Self-send garbages"},
["zen"]= {"Zen", "200", "200 lignes sans limites de temps."},
["ultra"]= {"Ultra", "EXTRA", "2 minutes pour avoir le meilleur score."},
["infinite"]= {"Infini", "", "Mode tranquile."},
["infinite_dig"]= {"Infini : Dig", "", "Creuser, creuser, creuser."},
["sprintFix"]= {"Sprint", "Sans gauche/droite"},
["sprintLock"]= {"Sprint", "Sans rotation"},
["marathon_bfmax"]= {"Marathon", "ULTIME"},
["custom_clear"]= {"Perso.", "NORMAL"},
["custom_puzzle"]= {"Perso.", "PUZZLE"},
['sprint_10l']= {"Sprint", "10L", "Nettoyez 10 lignes !"},
['sprint_20l']= {"Sprint", "20L", "Nettoyez 20 lignes !"},
['sprint_40l']= {"Sprint", "40L", "Nettoyez 40 lignes !"},
['sprint_100l']= {"Sprint", "100L", "Nettoyez 100 lignes !"},
['sprint_400l']= {"Sprint", "400L", "Nettoyez 400 lignes !"},
['sprint_1000l']= {"Sprint", "1000L", "Nettoyez 1000 lignes !"},
['sprintPenta']= {"Sprint", "Pentomino", "40 lignes avec 18 pentominos."},
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
['dig_10l']= {"Dig", "10L", "Creusez 10 lines"},
['dig_40l']= {"Dig", "40L", "Creusez 40 lines"},
['dig_100l']= {"Dig", "100L", "Creusez 100 lines"},
['dig_400l']= {"Dig", "400L", "Creusez 400 lines"},
['dig_1000l']= {"Dig", "1000L", "Creusez 1000 lines"},
['drought_n']= {"Drought", "100L", "Pas de pièce I !"},
['drought_l']= {"Drought", "100L", "WTF ??!!"},
['marathon_n']= {"Marathon", "NORMAL", "Marathon de 200 lignes."},
['marathon_h']= {"Marathon", "DIFFICILE", "Marathon de 200 lignes à très haute vitesse"},
['solo_e']= {"Battle", "FACILE", "Battez l'IA !"},
['solo_n']= {"Battle", "NORMAL", "Battez l'IA !"},
['solo_h']= {"Battle", "DIFFICILE", "Battez l'IA !"},
['solo_l']= {"Battle", "LUNATIQUE", "Battez l'IA !"},
['solo_u']= {"Battle", "ULTIME", "Battez l'IA !"},
['techmino49_e']= {"Tech 49", "FACILE", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
['techmino49_h']= {"Tech 49", "DIFFICILE", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
['techmino49_u']= {"Tech 49", "ULTIME", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
['techmino99_e']= {"Tech 99", "FACILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_h']= {"Tech 99", "DIFFICILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_u']= {"Tech 99", "ULTIMe", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['round_e']= {"Tour à tour", "FACILE", "Mode échecs"},
['round_n']= {"Tour à tour", "NORMAL", "Mode échecs"},
['round_h']= {"Tour à tour", "DIFFICILE", "Mode échecs"},
['round_l']= {"Tour à tour", "LUNATIQUE", "Mode échecs"},
['round_u']= {"Tour à tour", "ULTIME", "Mode échecs"},
['master_beginner']= {"Master", "LUNATIQUE", "Pour les débutants en 20G."},
['master_advance']= {"Master", "ULTIME", "Challenge 20G pro !"},
['master_final']= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
-- ['master_phantasm']= {"Mester", "FANTASMA", "20G: ???"},
['master_extra']= {"GrandMaster", "EXTRA", "Tentez de devenir un Grandmaster."},
-- ['rhythm_e']= {"Rhythm", "EASY", "200-line low-bpm rhythm marathon."},
-- ['rhythm_h']= {"Rhythm", "HARD", "200-line medium-bpm rhythm marathon"},
-- ['rhythm_u']= {"Rhythm", "ULTIMATE", "200-line high-bpm rhythm marathon."},
['blind_e']= {"Aveugle", "MOITIE", "Pour les novices."},
['blind_n']= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
['blind_h']= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},
['blind_l']= {"Aveugle", "SOUDAIN+", "Pour les pros."},
['blind_u']= {"Aveugle", "?", "Êtes-vous prêt ?"},
['blind_wtf']= {"Aveugle", "WTF", "Vous n'êtes pas prêt."},
['classic_fast']= {"Classic", "CTWC", "Un mode classique rapide."},
['survivor_e']= {"Survivor", "FACILE", "Pendant combien de temps survivrez-vous ?"},
['survivor_n']= {"Survivor", "NORMAL", "Pendant combien de temps survivrez-vous ?"},
['survivor_h']= {"Survivor", "DIFFICILE", "Pendant combien de temps survivrez-vous ?"},
['survivor_l']= {"Survivor", "LUNATIQUE", "Pendant combien de temps survivrez-vous ?"},
['survivor_u']= {"Survivor", "ULTIME", "Pendant combien de temps survivrez-vous ?"},
['attacker_h']= {"Attaquant", "DIFFICILE", "Soyez offensifs !"},
['attacker_u']= {"Attaquant", "ULTIME", "Soyez offensifs !"},
['defender_n']= {"Défendant", "NORMAL", "Soyez défensifs !"},
['defender_l']= {"Défendant", "LUNATIQUE", "Soyez défensifs !"},
['dig_h']= {"Perceuse", "DIFFICILE", "Essayez de creuser !"},
['dig_u']= {"Perceuse", "ULTIME", "Essayez de creuser !"},
['bigbang']= {"Big Bang", "FACILE", "Tutoriel All-Spin\nEn construction..."},
['c4wtrain_n']= {"Mode essai C4W", "NORMAL", "Combos infinis."},
['c4wtrain_l']= {"Mode essai C4W", "LUNATIQUE", "Combos infinis."},
['pctrain_n']= {"Mode essai PC", "NORMAL", "Mode Perfect Clear simple"},
['pctrain_l']= {"Mode essai PC", "LUNATIQUE", "Mode Perfect Clear dur"},
['pc_n']= {"PC Challenge", "NORMAL", "Obtenez un PC dans les prochaines 100 lignes !"},
['pc_h']= {"PC Challenge", "DIFFICILE", "Obtenez un PC dans les prochaines 100 lignes !"},
['pc_l']= {"PC Challenge", "LUNATIQUE", "Obtenez un PC dans les prochaines 100 lignes !"},
['tech_n']= {"Tech", "NORMAL", "Gardez le B2B !"},
['tech_n_plus']= {"Tech", "NORMAL+", "Spin & PC uniquement"},
['tech_h']= {"Tech", "DIFFICILE", "Gardez le B2B !"},
['tech_h_plus']= {"Tech", "HARD+", "Spin & PC uniquement"},
['tech_l']= {"Tech", "LUNATIQUE", "Gardez le B2B !"},
['tech_l_plus']= {"Tech", "LUNATIQUE+", "Spin & PC uniquement"},
['tech_finesse']= {"Tech", "FINESSE", "Pas d'erreurs de finesse !"},
['tech_finesse_f']= {"Tech", "FINESSE+", "Pas de nettoyages normaux, Pas d'erreurs de finesse !"},
['tsd_e']= {"TSD Challenge", "FACILE", "T-spin doubles uniquement !"},
['tsd_h']= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
['tsd_u']= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
-- ['backfire_n']= {"Backfire", "NORMAL", "Self-send garbages"},
-- ['backfire_h']= {"Backfire", "HARD", "Self-send garbages"},
-- ['backfire_l']= {"Backfire", "LUNATIC", "Self-send garbages"},
-- ['backfire_u']= {"Backfire", "ULTIMATE", "Self-send garbages"},
['zen']= {'Zen', "200", "200 lignes sans limites de temps."},
['ultra']= {'Ultra', "EXTRA", "2 minutes pour avoir le meilleur score."},
['infinite']= {"Infini", "", "Mode tranquile."},
['infinite_dig']= {"Infini : Dig", "", "Creuser, creuser, creuser."},
['sprintFix']= {"Sprint", "Sans gauche/droite"},
['sprintLock']= {"Sprint", "Sans rotation"},
['marathon_bfmax']= {"Marathon", "ULTIME"},
['custom_clear']= {"Perso.", "NORMAL"},
['custom_puzzle']= {"Perso.", "PUZZLE"},
},
}

View File

@@ -662,97 +662,97 @@ return{
},
},
modes={
["sprint_10l"]= {"Sprint", "10L", "Limpe 10 linhas!"},
["sprint_20l"]= {"Sprint", "20L", "Limpe 20 linhas!"},
["sprint_40l"]= {"Sprint", "40L", "Limpe 40 linhas!"},
["sprint_100l"]= {"Sprint", "100L", "Limpe 100 linhas!"},
["sprint_400l"]= {"Sprint", "400L", "Limpe 400 linhas!"},
["sprint_1000l"]= {"Sprint", "1000L", "Limpe 1000 linhas!"},
["sprintPenta"]= {"Sprint", "PENTOMINO", "Limpe 40 linhas com 18 pentominoes."},
["sprintMPH"]= {"Sprint", "MPH", "SemMem.\nSemPrévia\nSemSegurar"},
["dig_10l"]= {"Cave", "10L", "Cave 10 linhas de lixo."},
["dig_40l"]= {"Cave", "40L", "Cave 40 linhas de lixo."},
["dig_100l"]= {"Cave", "100L", "Cave 100 linhas de lixo."},
["dig_400l"]= {"Cave", "400L", "Cave 400 linhas de lixo."},
["dig_1000l"]= {"Cave", "1000L", "Cave 1000 linhas de lixo."},
["drought_n"]= {"Drought", "100L", "Sem peça I !"},
["drought_l"]= {"Drought", "100L", "WTF"},
["marathon_n"]= {"Maratona", "NORMAL", "200-line Maratona com velocidade aumentando."},
["marathon_h"]= {"Maratona", "DIFÍCIL", "200-line Maratona com velocidade alta."},
["solo_e"]= {"Batalha", "FÁCIL", "Derrote a inteligência!"},
["solo_n"]= {"Batalha", "NORMAL", "Derrote a inteligência!"},
["solo_h"]= {"Batalha", "DIFÍCIL", "Derrote a inteligência!"},
["solo_l"]= {"Batalha", "LUNATICO", "Defeat the AI!"},
["solo_u"]= {"Batalha", "ULTIMATE", "Defeat the AI!"},
["techmino49_e"]= {"Tech 49", "FÁCIL", "Batalha de 49 jogadores.\nO último vence"},
["techmino49_h"]= {"Tech 49", "DIFÍCIL", "Batalha de 49 jogadores.\nO último vence."},
["techmino49_u"]= {"Tech 49", "ULTIMATE", "Batalha de 49 jogadores.\nO último vence."},
["techmino99_e"]= {"Tech 99", "FÁCIL", "Batalha de 99 jogadores.\nO último vence."},
["techmino99_h"]= {"Tech 99", "DIFÍCIL", "Batalha de 99 jogadores.\nO último vence."},
["techmino99_u"]= {"Tech 99", "ULTIMATE", "Batalha de 99 jogadores.\nO último vence."},
["round_e"]= {"Baseado Turnos", "FÁCIL", "Modo xadrez"},
["round_n"]= {"Baseado Turnos", "NORMAL", "Modo xadrez"},
["round_h"]= {"Baseado Turnos", "DIFÍCIL", "Modo xadrez"},
["round_l"]= {"Baseado Turnos", "LUNÁTICO", "Modo xadrez"},
["round_u"]= {"Baseado Turnos", "ULTIMATE", "Modo xadrez"},
["master_beginner"]= {"Mestre", "LUNÁTICO", "Pra iniciantes de 20G."},
["master_advance"]= {"Mestre", "ULTIMATE", "Desafio 20G profissional!"},
["master_final"]= {"Mestre", "FINAL", "20G: Final inalcançável!"},
["master_phantasm"]= {"Mestre", "FANTASMA", "20G: ???"},
["master_extra"]= {"GrandMaster", "EXTRA", "Para ser um Grand Master, aceite \nesse desafio."},
-- ["rhythm_e"]= {"Rhythm", "EASY", "200-line low-bpm rhythm marathon."},
-- ["rhythm_h"]= {"Rhythm", "HARD", "200-line medium-bpm rhythm marathon"},
-- ["rhythm_u"]= {"Rhythm", "ULTIMATE", "200-line high-bpm rhythm marathon."},
["blind_e"]= {"Cego", "METADE", "Para novatos."},
["blind_n"]= {"Cego", "TUDO", "Para intermediários."},
["blind_h"]= {"Cego", "DE REPENTE", "Para experientes."},
["blind_l"]= {"Cego", "DE REPENTE+", "For professionals."},
["blind_u"]= {"Cego", "?", "Are you ready?"},
["blind_wtf"]= {"Cego", "WTF", "You're not ready."},
["classic_fast"]= {"Clássico", "CTWC", "Modo clássico rápido. "},
["survivor_e"]= {"Sobrevivente", "FACIL", "Por quanto sobrevive?"},
["survivor_n"]= {"Sobrevivente", "NORMAL", "Por quanto sobrevive?"},
["survivor_h"]= {"Sobrevivente", "DIFÍCIL", "Por quanto sobrevive?"},
["survivor_l"]= {"Sobrevivente", "LUNÁTICO", "Por quanto sobrevive?"},
["survivor_u"]= {"Sobrevivente", "ULTIMATE", "Por quanto sobrevive?"},
["attacker_h"]= {"Atacante", "DIFÍCIL", "Prática de ofensiva!"},
["attacker_u"]= {"Atacante", "ULTIMATE", "Prática de ofensiva!"},
["defender_n"]= {"Defensor", "NORMAL", "Prática de defensiva!"},
["defender_l"]= {"Defensor", "LUNÁTICO", "Prática de defensiva!"},
["dig_h"]= {"Cavador", "DIFÍCIL", "Prática de cavar!"},
["dig_u"]= {"Cavador", "ULTIMATE", "Prática de cavar!"},
["bigbang"]= {"Big Bang", "FÁCIL", "Tutorial de todos giros!\n[Em construção]"},
["c4wtrain_n"]= {"Treinamento C4W", "NORMAL", "Combos infinitos."},
["c4wtrain_l"]= {"Treinamento C4W", "LUNÁTICO", "Combos infinitos."},
["pctrain_n"]= {"Treinamento PC", "NORMAL", "Modo simples de limpeza perfeita."},
["pctrain_l"]= {"Treinamento PC", "LUNÁTICO", "Modo duro de limpeza perfeita."},
["pc_n"]= {"Desafio PC", "NORMAL", "Obtenha PCs em 100 linhas!"},
["pc_h"]= {"Desafio PC", "DIFÍCIL", "Obtenha PCs em 100 linhas!"},
["pc_l"]= {"Desafio PC", "LUNÁTICO", "Obteha PCs em 100 linhas!"},
["tech_n"]= {"Tech", "NORMAL", "Não quebre o B2B!"},
["tech_n_plus"]= {"Tech", "NORMAL+", "Apenas spins e PC"},
["tech_h"]= {"Tech", "HARD", "Keep the B2B chain!"},
["tech_h_plus"]= {"Tech", "HARD+", "Apenas spins e PC"},
["tech_l"]= {"Tech", "LUNÁTICO", "Não quebre o B2B!"},
["tech_l_plus"]= {"Tech", "LUNÁTICO+", "Apenas spins e PC"},
["tech_finesse"]= {"Tech", "FINESSE", "Não erre a destreza!"},
["tech_finesse_f"]= {"Tech", "FINESSE+", "Sem limpas normais, não erre a destreza!"},
["tsd_e"]= {"Desafio TSD", "FÁCIL", "Apenas T-spin-doubles!"},
["tsd_h"]= {"Desafio TSD", "DIFÍCIL", "Apenas T-spin-doubles!"},
["tsd_u"]= {"Desafio TSD", "ULTIMATE", "Apenas T-spin-doubles!"},
-- ["backfire_n"]= {"Backfire", "NORMAL", "Self-send garbages"},
-- ["backfire_h"]= {"Backfire", "HARD", "Self-send garbages"},
-- ["backfire_l"]= {"Backfire", "LUNATIC", "Self-send garbages"},
-- ["backfire_u"]= {"Backfire", "ULTIMATE", "Self-send garbages"},
["zen"]= {"Zen", "200", "200 linhas sem um limite de tempo."},
["ultra"]= {"Ultra", "EXTRA", "Pegue a maior pontuação em 2 minutos."},
["infinite"]= {"Infinito", "", "Modo Sandbox."},
["infinite_dig"]= {"Infinito:Cave", "", "Cava, Cava, Cava."},
["sprintFix"]= {"Sprint", "SEM ESQUERDA/DIREITA"},
["sprintLock"]= {"Sprint", "SEM ROTAÇÃO"},
["marathon_bfmax"]= {"Maratona", "ULTIMATE"},
["custom_clear"]= {"Custom", "NORMAL"},
["custom_puzzle"]= {"Custom", "PUZZLE"},
['sprint_10l']= {"Sprint", "10L", "Limpe 10 linhas!"},
['sprint_20l']= {"Sprint", "20L", "Limpe 20 linhas!"},
['sprint_40l']= {"Sprint", "40L", "Limpe 40 linhas!"},
['sprint_100l']= {"Sprint", "100L", "Limpe 100 linhas!"},
['sprint_400l']= {"Sprint", "400L", "Limpe 400 linhas!"},
['sprint_1000l']= {"Sprint", "1000L", "Limpe 1000 linhas!"},
['sprintPenta']= {"Sprint", "PENTOMINO", "Limpe 40 linhas com 18 pentominoes."},
['sprintMPH']= {"Sprint", "MPH", "SemMem.\nSemPrévia\nSemSegurar"},
['dig_10l']= {"Cave", "10L", "Cave 10 linhas de lixo."},
['dig_40l']= {"Cave", "40L", "Cave 40 linhas de lixo."},
['dig_100l']= {"Cave", "100L", "Cave 100 linhas de lixo."},
['dig_400l']= {"Cave", "400L", "Cave 400 linhas de lixo."},
['dig_1000l']= {"Cave", "1000L", "Cave 1000 linhas de lixo."},
['drought_n']= {"Drought", "100L", "Sem peça I !"},
['drought_l']= {"Drought", "100L", "WTF"},
['marathon_n']= {"Maratona", "NORMAL", "200-line Maratona com velocidade aumentando."},
['marathon_h']= {"Maratona", "DIFÍCIL", "200-line Maratona com velocidade alta."},
['solo_e']= {"Batalha", "FÁCIL", "Derrote a inteligência!"},
['solo_n']= {"Batalha", "NORMAL", "Derrote a inteligência!"},
['solo_h']= {"Batalha", "DIFÍCIL", "Derrote a inteligência!"},
['solo_l']= {"Batalha", "LUNATICO", "Defeat the AI!"},
['solo_u']= {"Batalha", "ULTIMATE", "Defeat the AI!"},
['techmino49_e']= {"Tech 49", "FÁCIL", "Batalha de 49 jogadores.\nO último vence"},
['techmino49_h']= {"Tech 49", "DIFÍCIL", "Batalha de 49 jogadores.\nO último vence."},
['techmino49_u']= {"Tech 49", "ULTIMATE", "Batalha de 49 jogadores.\nO último vence."},
['techmino99_e']= {"Tech 99", "FÁCIL", "Batalha de 99 jogadores.\nO último vence."},
['techmino99_h']= {"Tech 99", "DIFÍCIL", "Batalha de 99 jogadores.\nO último vence."},
['techmino99_u']= {"Tech 99", "ULTIMATE", "Batalha de 99 jogadores.\nO último vence."},
['round_e']= {"Baseado Turnos", "FÁCIL", "Modo xadrez"},
['round_n']= {"Baseado Turnos", "NORMAL", "Modo xadrez"},
['round_h']= {"Baseado Turnos", "DIFÍCIL", "Modo xadrez"},
['round_l']= {"Baseado Turnos", "LUNÁTICO", "Modo xadrez"},
['round_u']= {"Baseado Turnos", "ULTIMATE", "Modo xadrez"},
['master_beginner']= {"Mestre", "LUNÁTICO", "Pra iniciantes de 20G."},
['master_advance']= {"Mestre", "ULTIMATE", "Desafio 20G profissional!"},
['master_final']= {"Mestre", "FINAL", "20G: Final inalcançável!"},
['master_phantasm']= {"Mestre", "FANTASMA", "20G: ???"},
['master_extra']= {"GrandMaster", "EXTRA", "Para ser um Grand Master, aceite \nesse desafio."},
-- ['rhythm_e']= {"Rhythm", "EASY", "200-line low-bpm rhythm marathon."},
-- ['rhythm_h']= {"Rhythm", "HARD", "200-line medium-bpm rhythm marathon"},
-- ['rhythm_u']= {"Rhythm", "ULTIMATE", "200-line high-bpm rhythm marathon."},
['blind_e']= {"Cego", "METADE", "Para novatos."},
['blind_n']= {"Cego", "TUDO", "Para intermediários."},
['blind_h']= {"Cego", "DE REPENTE", "Para experientes."},
['blind_l']= {"Cego", "DE REPENTE+", "For professionals."},
['blind_u']= {"Cego", "?", "Are you ready?"},
['blind_wtf']= {"Cego", "WTF", "You're not ready."},
['classic_fast']= {"Clássico", "CTWC", "Modo clássico rápido. "},
['survivor_e']= {"Sobrevivente", "FACIL", "Por quanto sobrevive?"},
['survivor_n']= {"Sobrevivente", "NORMAL", "Por quanto sobrevive?"},
['survivor_h']= {"Sobrevivente", "DIFÍCIL", "Por quanto sobrevive?"},
['survivor_l']= {"Sobrevivente", "LUNÁTICO", "Por quanto sobrevive?"},
['survivor_u']= {"Sobrevivente", "ULTIMATE", "Por quanto sobrevive?"},
['attacker_h']= {"Atacante", "DIFÍCIL", "Prática de ofensiva!"},
['attacker_u']= {"Atacante", "ULTIMATE", "Prática de ofensiva!"},
['defender_n']= {"Defensor", "NORMAL", "Prática de defensiva!"},
['defender_l']= {"Defensor", "LUNÁTICO", "Prática de defensiva!"},
['dig_h']= {"Cavador", "DIFÍCIL", "Prática de cavar!"},
['dig_u']= {"Cavador", "ULTIMATE", "Prática de cavar!"},
['bigbang']= {"Big Bang", "FÁCIL", "Tutorial de todos giros!\n[Em construção]"},
['c4wtrain_n']= {"Treinamento C4W", "NORMAL", "Combos infinitos."},
['c4wtrain_l']= {"Treinamento C4W", "LUNÁTICO", "Combos infinitos."},
['pctrain_n']= {"Treinamento PC", "NORMAL", "Modo simples de limpeza perfeita."},
['pctrain_l']= {"Treinamento PC", "LUNÁTICO", "Modo duro de limpeza perfeita."},
['pc_n']= {"Desafio PC", "NORMAL", "Obtenha PCs em 100 linhas!"},
['pc_h']= {"Desafio PC", "DIFÍCIL", "Obtenha PCs em 100 linhas!"},
['pc_l']= {"Desafio PC", "LUNÁTICO", "Obteha PCs em 100 linhas!"},
['tech_n']= {"Tech", "NORMAL", "Não quebre o B2B!"},
['tech_n_plus']= {"Tech", "NORMAL+", "Apenas spins e PC"},
['tech_h']= {"Tech", "HARD", "Keep the B2B chain!"},
['tech_h_plus']= {"Tech", "HARD+", "Apenas spins e PC"},
['tech_l']= {"Tech", "LUNÁTICO", "Não quebre o B2B!"},
['tech_l_plus']= {"Tech", "LUNÁTICO+", "Apenas spins e PC"},
['tech_finesse']= {"Tech", "FINESSE", "Não erre a destreza!"},
['tech_finesse_f']= {"Tech", "FINESSE+", "Sem limpas normais, não erre a destreza!"},
['tsd_e']= {"Desafio TSD", "FÁCIL", "Apenas T-spin-doubles!"},
['tsd_h']= {"Desafio TSD", "DIFÍCIL", "Apenas T-spin-doubles!"},
['tsd_u']= {"Desafio TSD", "ULTIMATE", "Apenas T-spin-doubles!"},
-- ['backfire_n']= {"Backfire", "NORMAL", "Self-send garbages"},
-- ['backfire_h']= {"Backfire", "HARD", "Self-send garbages"},
-- ['backfire_l']= {"Backfire", "LUNATIC", "Self-send garbages"},
-- ['backfire_u']= {"Backfire", "ULTIMATE", "Self-send garbages"},
['zen']= {'Zen', "200", "200 linhas sem um limite de tempo."},
['ultra']= {'Ultra', "EXTRA", "Pegue a maior pontuação em 2 minutos."},
['infinite']= {"Infinito", "", "Modo Sandbox."},
['infinite_dig']= {"Infinito:Cave", "", "Cava, Cava, Cava."},
['sprintFix']= {"Sprint", "SEM ESQUERDA/DIREITA"},
['sprintLock']= {"Sprint", "SEM ROTAÇÃO"},
['marathon_bfmax']= {"Maratona", "ULTIMATE"},
['custom_clear']= {"Custom", "NORMAL"},
['custom_puzzle']= {"Custom", "PUZZLE"},
},
getTip={refuseCopy=true,
'Jogo de blocos gratis com um modo Battle Royale!',

View File

@@ -576,95 +576,95 @@ return{
},
},
modes={
["sprint_10l"]= {"Sprint", "10L", "¡Limpia 10 líneas!"},
["sprint_20l"]= {"Sprint", "20L", "¡Limpia 20 líneas!"},
["sprint_40l"]= {"Sprint", "40L", "¡Limpia 40 líneas!"},
["sprint_100l"]= {"Sprint", "100L", "¡Limpia 100 líneas!"},
["sprint_400l"]= {"Sprint", "400L", "¡Limpia 400 líneas!"},
["sprint_1000l"]= {"Sprint", "1000L", "¡Limpia 1000 líneas!"},
["sprintPenta"]= {"Sprint", "Pentominos", "¡Limpia 40 líneas con los 18 pentominos distintos!"},
["sprintMPH"]= {"Sprint", "MPH", "Memoryless (sin memoria)\nPreviewless (sin pzas. siguientes)\nHoldless (sin reserva)."},
["dig_10l"]= {"Queso", "10L", "Limpia 10 líneas de queso."},
["dig_40l"]= {"Queso", "40L", "Limpia 40 líneas de queso."},
["dig_100l"]= {"Queso", "100L", "Limpia 100 líneas de queso."},
["dig_400l"]= {"Queso", "400L", "Limpia 400 líneas de queso."},
["dig_1000l"]= {"Queso", "1000L", "Limpia 1000 líneas de queso."},
["drought_n"]= {"Sequía", "100L", "¡Sin piezas I!"},
["drought_l"]= {"Sequía", "100L", "Guat de foc..."},
["marathon_n"]= {"Maratón", "Normal", "Maratón de 200 líneas con velocidad en aumento."},
["marathon_h"]= {"Maratón", "Difícil", "Maratón de 200 líneas a velocidad máxima."},
["solo_e"]= {"VS.", "Fácil", "¡Derrota a la CPU!"},
["solo_n"]= {"VS.", "Normal", "¡Derrota a la CPU!"},
["solo_h"]= {"VS.", "Difícil", "¡Derrota a la CPU!"},
["solo_l"]= {"VS.", "Lunático", "¡Derrota a la CPU!"},
["solo_u"]= {"VS.", "Supremo", "¡Derrota a la CPU!"},
["techmino49_e"]= {"Tech 49", "Fácil", "Batalla de 49 jugadores. ¡El último en pie gana!"},
["techmino49_h"]= {"Tech 49", "Difícil", "Batalla de 49 jugadores. ¡El último en pie gana!"},
["techmino49_u"]= {"Tech 49", "Supremo", "Batalla de 49 jugadores. ¡El último en pie gana!"},
["techmino99_e"]= {"Tech 99", "Fácil", "Batalla de 99 jugadores. ¡El último en pie gana!"},
["techmino99_h"]= {"Tech 99", "Difícil", "Batalla de 99 jugadores. ¡El último en pie gana!"},
["techmino99_u"]= {"Tech 99", "Supremo", "Batalla de 99 jugadores. ¡El último en pie gana!"},
["round_e"]= {"Por Turnos", "Fácil", "Modo ajedrez."},
["round_n"]= {"Por Turnos", "Normal", "Modo ajedrez."},
["round_h"]= {"Por Turnos", "Difícil", "Modo ajedrez."},
["round_l"]= {"Por Turnos", "Lunático", "Modo ajedrez."},
["round_u"]= {"Por Turnos", "Supremo", "Modo ajedrez."},
["master_beginner"]= {"Master", "Lunático", "Para principiantes en 20G"},
["master_advance"]= {"Master", "Supremo", "¡Desafío profesional de 20G!"},
["master_final"]= {"Master", "FINAL", "El verdadero 20G Supremo: el final es inalcanzable."},
["master_extra"]= {"GrandMaster", "EXTRA", "Para ser un gran maestro, acepta este desafío"},
["rhythm_e"]= {"Al Ritmo", "Fácil", "Maratón rítmica de 200 líneas con bajo bpm."},
["rhythm_h"]= {"Al Ritmo", "Difícil", "Maratón rítmica de 200 líneas con bpm moderado."},
["rhythm_u"]= {"Al Ritmo", "Supremo", "Maratón rítmica de 200 líneas con bpm elevado."},
["blind_e"]= {"A Ciegas", "Parcial", "Para novatos."},
["blind_n"]= {"A Ciegas", "Total", "Para jugadores intermedios."},
["blind_h"]= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
["blind_l"]= {"A Ciegas", "Inmediato+", "Para profesionales."},
["blind_u"]= {"A Ciegas", "?", "¿Estás preparado?"},
["blind_wtf"]= {"A Ciegas", "Guat de Foc", "No, no lo estás."},
["classic_fast"]= {"Clásico", "CTWC", "Modo clásico con alta velocidad."},
["survivor_e"]= {"Supervivencia", "Fácil", "¿Cuánto tiempo podrás sobrevivir?"},
["survivor_n"]= {"Supervivencia", "Normal", "¿Cuánto tiempo podrás sobrevivir?"},
["survivor_h"]= {"Supervivencia", "Difícil", "¿Cuánto tiempo podrás sobrevivir?"},
["survivor_l"]= {"Supervivencia", "Lunático", "¿Cuánto tiempo podrás sobrevivir?"},
["survivor_u"]= {"Supervivencia", "Supremo", "¿Cuánto tiempo podrás sobrevivir?"},
["attacker_h"]= {"Atacante", "Difícil", "¡Practica la ofensiva!"},
["attacker_u"]= {"Atacante", "Supremo", "¡Practica la ofensiva!"},
["defender_n"]= {"Defensor", "Normal", "¡Practica la defensa!"},
["defender_l"]= {"Defensor", "Lunático", "¡Practica la defensa!"},
["dig_h"]= {"Downstack", "Difícil", "¡Practica el downstackeo!"},
["dig_u"]= {"Downstack", "Supremo", "¡Practica el downstackeo!"},
["bigbang"]= {"Big Bang", "Fácil", "¡Tutorial de All-spins!\n[No finalizado]"},
["c4wtrain_n"]= {"Entrenar C4W", "Normal", "Combos infinitos."},
["c4wtrain_l"]= {"Entrenar C4W", "Lunático", "Combos infinitos."},
["pctrain_n"]= {"Entrenar PC", "Normal", "Modo sencillo para practicar Perfect Clears."},
["pctrain_l"]= {"Entrenar PC", "Lunático", "Modo duro para practicar Perfect Clears."},
["pc_n"]= {"Desafío de PCs", "Normal", "¡Consigue los PCs que puedas en 100 líneas!"},
["pc_h"]= {"Desafío de PCs", "Difícil", "¡Consigue los PCs que puedas en 100 líneas!"},
["pc_l"]= {"Desafío de PCs", "Lunático", "¡Consigue los PCs que puedas en 100 líneas!"},
["tech_n"]= {"Tech", "Normal", "¡Mantén el B2B!"},
["tech_n_plus"]= {"Tech", "Normal+", "¡Sólo se permiten Spins y PCs!"},
["tech_h"]= {"Tech", "Difícil", "¡Mantén el B2B!"},
["tech_h_plus"]= {"Tech", "Difícil+", "¡Sólo se permiten Spins y PCs!"},
["tech_l"]= {"Tech", "Lunático", "¡Mantén el B2B!"},
["tech_l_plus"]= {"Tech", "Lunático+", "¡Sólo se permiten Spins y PCs!"},
["tech_finesse"]= {"Tech", "Finesse", "¡No cometas errores de Finesse!"},
["tech_finesse_f"]= {"Tech", "Finesse+", "Sin errores de finesse, ¡pero tampoco clears normales!"},
["tsd_e"]= {"Desafío de TSD", "Fácil", "¡Sólo se permiten T-Spin Dobles!"},
["tsd_h"]= {"Desafío de TSD", "Difícil", "¡Sólo se permiten T-Spin Dobles!"},
["tsd_u"]= {"Desafío de TSD", "Supremo", "¡Sólo se permiten T-Spin Dobles!"},
["backfire_n"]= {"Retorno", "Normal", "Lidia con tus propias líneas basura."},
["backfire_h"]= {"Retorno", "Difícil", "Lidia con tus propias líneas basura."},
["backfire_l"]= {"Retorno", "Lunático", "Lidia con tus propias líneas basura."},
["backfire_u"]= {"Retorno", "Supremo", "Lidia con tus propias líneas basura."},
["zen"]= {"Zen", "200L", "200 líneas sin límite de tiempo."},
["ultra"]= {"Ultra", "Extra", "¡Consigue el mayor puntaje posible en 2 minutos!"},
["infinite"]= {"Infinito", "", "Modo Sandbox."},
["infinite_dig"]= {"Infinito: Queso", "", "Limpia, limpia, más limpia que tú."},
["sprintFix"]= {"Sprint", "Sin mover a Izq./Der."},
["sprintLock"]= {"Sprint", "Sin rotar"},
["marathon_bfmax"]= {"Maratón", "Supremo"},
["custom_clear"]= {"Personalizado", "Normal"},
["custom_puzzle"]= {"Personalizado", "Puzzle"},
['sprint_10l']= {"Sprint", "10L", "¡Limpia 10 líneas!"},
['sprint_20l']= {"Sprint", "20L", "¡Limpia 20 líneas!"},
['sprint_40l']= {"Sprint", "40L", "¡Limpia 40 líneas!"},
['sprint_100l']= {"Sprint", "100L", "¡Limpia 100 líneas!"},
['sprint_400l']= {"Sprint", "400L", "¡Limpia 400 líneas!"},
['sprint_1000l']= {"Sprint", "1000L", "¡Limpia 1000 líneas!"},
['sprintPenta']= {"Sprint", "Pentominos", "¡Limpia 40 líneas con los 18 pentominos distintos!"},
['sprintMPH']= {"Sprint", "MPH", "Memoryless (sin memoria)\nPreviewless (sin pzas. siguientes)\nHoldless (sin reserva)."},
['dig_10l']= {"Queso", "10L", "Limpia 10 líneas de queso."},
['dig_40l']= {"Queso", "40L", "Limpia 40 líneas de queso."},
['dig_100l']= {"Queso", "100L", "Limpia 100 líneas de queso."},
['dig_400l']= {"Queso", "400L", "Limpia 400 líneas de queso."},
['dig_1000l']= {"Queso", "1000L", "Limpia 1000 líneas de queso."},
['drought_n']= {"Sequía", "100L", "¡Sin piezas I!"},
['drought_l']= {"Sequía", "100L", "Guat de foc..."},
['marathon_n']= {"Maratón", "Normal", "Maratón de 200 líneas con velocidad en aumento."},
['marathon_h']= {"Maratón", "Difícil", "Maratón de 200 líneas a velocidad máxima."},
['solo_e']= {"VS.", "Fácil", "¡Derrota a la CPU!"},
['solo_n']= {"VS.", "Normal", "¡Derrota a la CPU!"},
['solo_h']= {"VS.", "Difícil", "¡Derrota a la CPU!"},
['solo_l']= {"VS.", "Lunático", "¡Derrota a la CPU!"},
['solo_u']= {"VS.", "Supremo", "¡Derrota a la CPU!"},
['techmino49_e']= {"Tech 49", "Fácil", "Batalla de 49 jugadores. ¡El último en pie gana!"},
['techmino49_h']= {"Tech 49", "Difícil", "Batalla de 49 jugadores. ¡El último en pie gana!"},
['techmino49_u']= {"Tech 49", "Supremo", "Batalla de 49 jugadores. ¡El último en pie gana!"},
['techmino99_e']= {"Tech 99", "Fácil", "Batalla de 99 jugadores. ¡El último en pie gana!"},
['techmino99_h']= {"Tech 99", "Difícil", "Batalla de 99 jugadores. ¡El último en pie gana!"},
['techmino99_u']= {"Tech 99", "Supremo", "Batalla de 99 jugadores. ¡El último en pie gana!"},
['round_e']= {"Por Turnos", "Fácil", "Modo ajedrez."},
['round_n']= {"Por Turnos", "Normal", "Modo ajedrez."},
['round_h']= {"Por Turnos", "Difícil", "Modo ajedrez."},
['round_l']= {"Por Turnos", "Lunático", "Modo ajedrez."},
['round_u']= {"Por Turnos", "Supremo", "Modo ajedrez."},
['master_beginner']= {"Master", "Lunático", "Para principiantes en 20G"},
['master_advance']= {"Master", "Supremo", "¡Desafío profesional de 20G!"},
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo: el final es inalcanzable."},
['master_extra']= {"GrandMaster", "EXTRA", "Para ser un gran maestro, acepta este desafío"},
['rhythm_e']= {"Al Ritmo", "Fácil", "Maratón rítmica de 200 líneas con bajo bpm."},
['rhythm_h']= {"Al Ritmo", "Difícil", "Maratón rítmica de 200 líneas con bpm moderado."},
['rhythm_u']= {"Al Ritmo", "Supremo", "Maratón rítmica de 200 líneas con bpm elevado."},
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
['blind_l']= {"A Ciegas", "Inmediato+", "Para profesionales."},
['blind_u']= {"A Ciegas", "?", "¿Estás preparado?"},
['blind_wtf']= {"A Ciegas", "Guat de Foc", "No, no lo estás."},
['classic_fast']= {"Clásico", "CTWC", "Modo clásico con alta velocidad."},
['survivor_e']= {"Supervivencia", "Fácil", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_n']= {"Supervivencia", "Normal", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_h']= {"Supervivencia", "Difícil", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_l']= {"Supervivencia", "Lunático", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_u']= {"Supervivencia", "Supremo", "¿Cuánto tiempo podrás sobrevivir?"},
['attacker_h']= {"Atacante", "Difícil", "¡Practica la ofensiva!"},
['attacker_u']= {"Atacante", "Supremo", "¡Practica la ofensiva!"},
['defender_n']= {"Defensor", "Normal", "¡Practica la defensa!"},
['defender_l']= {"Defensor", "Lunático", "¡Practica la defensa!"},
['dig_h']= {"Downstack", "Difícil", "¡Practica el downstackeo!"},
['dig_u']= {"Downstack", "Supremo", "¡Practica el downstackeo!"},
['bigbang']= {"Big Bang", "Fácil", "¡Tutorial de All-spins!\n[No finalizado]"},
['c4wtrain_n']= {"Entrenar C4W", "Normal", "Combos infinitos."},
['c4wtrain_l']= {"Entrenar C4W", "Lunático", "Combos infinitos."},
['pctrain_n']= {"Entrenar PC", "Normal", "Modo sencillo para practicar Perfect Clears."},
['pctrain_l']= {"Entrenar PC", "Lunático", "Modo duro para practicar Perfect Clears."},
['pc_n']= {"Desafío de PCs", "Normal", "¡Consigue los PCs que puedas en 100 líneas!"},
['pc_h']= {"Desafío de PCs", "Difícil", "¡Consigue los PCs que puedas en 100 líneas!"},
['pc_l']= {"Desafío de PCs", "Lunático", "¡Consigue los PCs que puedas en 100 líneas!"},
['tech_n']= {"Tech", "Normal", "¡Mantén el B2B!"},
['tech_n_plus']= {"Tech", "Normal+", "¡Sólo se permiten Spins y PCs!"},
['tech_h']= {"Tech", "Difícil", "¡Mantén el B2B!"},
['tech_h_plus']= {"Tech", "Difícil+", "¡Sólo se permiten Spins y PCs!"},
['tech_l']= {"Tech", "Lunático", "¡Mantén el B2B!"},
['tech_l_plus']= {"Tech", "Lunático+", "¡Sólo se permiten Spins y PCs!"},
['tech_finesse']= {"Tech", "Finesse", "¡No cometas errores de Finesse!"},
['tech_finesse_f']= {"Tech", "Finesse+", "Sin errores de finesse, ¡pero tampoco clears normales!"},
['tsd_e']= {"Desafío de TSD", "Fácil", "¡Sólo se permiten T-Spin Dobles!"},
['tsd_h']= {"Desafío de TSD", "Difícil", "¡Sólo se permiten T-Spin Dobles!"},
['tsd_u']= {"Desafío de TSD", "Supremo", "¡Sólo se permiten T-Spin Dobles!"},
['backfire_n']= {"Retorno", "Normal", "Lidia con tus propias líneas basura."},
['backfire_h']= {"Retorno", "Difícil", "Lidia con tus propias líneas basura."},
['backfire_l']= {"Retorno", "Lunático", "Lidia con tus propias líneas basura."},
['backfire_u']= {"Retorno", "Supremo", "Lidia con tus propias líneas basura."},
['zen']= {'Zen', "200L", "200 líneas sin límite de tiempo."},
['ultra']= {'Ultra', "Extra", "¡Consigue el mayor puntaje posible en 2 minutos!"},
['infinite']= {"Infinito", "", "Modo Sandbox."},
['infinite_dig']= {"Infinito: Queso", "", "Limpia, limpia, más limpia que tú."},
['sprintFix']= {"Sprint", "Sin mover a Izq./Der."},
['sprintLock']= {"Sprint", "Sin rotar"},
['marathon_bfmax']= {"Maratón", "Supremo"},
['custom_clear']= {"Personalizado", "Normal"},
['custom_puzzle']= {"Personalizado", "Puzzle"},
},
}

View File

@@ -187,97 +187,97 @@ return{
},
},
modes={
["sprint_10l"]= {"竞速", "10L", "消10行"},
["sprint_20l"]= {"竞速", "20L", "消20行"},
["sprint_40l"]= {"竞速", "40L", "消40行"},
["sprint_100l"]= {"竞速", "100L", "消100行"},
["sprint_400l"]= {"竞速", "400L", "消400行"},
["sprint_1000l"]= {"竞速", "1000L", "消1000行"},
["sprintPenta"]= {"竞速", "五连块", "离谱"},
["sprintMPH"]= {"竞速", "纯净", "听说你反应很快?"},
["dig_10l"]= {"挖掘", "10L", "挖10行"},
["dig_40l"]= {"挖掘", "40L", "挖40行"},
["dig_100l"]= {"挖掘", "100L", "挖100行"},
["dig_400l"]= {"挖掘", "400L", "挖400行"},
["dig_1000l"]= {"挖掘", "1000L", "挖1000行"},
["drought_n"]= {"干旱", "100L", "放轻松,简单得很"},
["drought_l"]= {"干旱", "100L", "有趣的要来了"},
["marathon_n"]= {"马拉松", "普通", "休闲模式"},
["marathon_h"]= {"马拉松", "困难", "休闲模式"},
["solo_e"]= {"单挑", "简单", "鲨AI"},
["solo_n"]= {"单挑", "普通", "鲨AI"},
["solo_h"]= {"单挑", "困难", "鲨AI"},
["solo_l"]= {"单挑", "疯狂", "鲨AI"},
["solo_u"]= {"单挑", "极限", "鲨AI"},
["techmino49_e"]= {"49人混战", "简单", "这我岂不是乱鲨"},
["techmino49_h"]= {"49人混战", "困难", "这我岂不是乱鲨"},
["techmino49_u"]= {"49人混战", "极限", "你吃鸡率多少?"},
["techmino99_e"]= {"99人混战", "简单", "这我岂不是乱鲨"},
["techmino99_h"]= {"99人混战", "困难", "这我岂不是乱鲨"},
["techmino99_u"]= {"99人混战", "极限", "你吃鸡率多少?"},
["round_e"]= {"回合制", "简单", "下棋"},
["round_n"]= {"回合制", "普通", "下棋"},
["round_h"]= {"回合制", "困难", "下棋"},
["round_l"]= {"回合制", "疯狂", "下棋"},
["round_u"]= {"回合制", "极限", "下棋"},
["master_beginner"]= {"大师", "疯狂", "无脑20G"},
["master_advance"]= {"大师", "极限", "简单20G"},
["master_final"]= {"大师", "终点", "究极20G:真正的游戏"},
["master_phantasm"]= {"大师", "虚幻", "虚幻20G:好玩"},
["master_extra"]= {"宗师", "EX", "你行你上"},
["rhythm_e"]= {"节奏", "简单", "很无聊的"},
["rhythm_h"]= {"节奏", "困难", "好玩么?"},
["rhythm_u"]= {"节奏", "极限", "真男人不玩低难度"},
["blind_e"]= {"隐形", "半隐", "谁都能玩"},
["blind_n"]= {"隐形", "全隐", "稍加练习即可"},
["blind_h"]= {"隐形", "瞬隐", "和上一个一样"},
["blind_l"]= {"隐形", "瞬隐+", "这个确实挺难的"},
["blind_u"]= {"隐形", "啊这", "你准备好了吗"},
["blind_wtf"]= {"隐形", "不会吧", "还没准备好"},
["classic_fast"]= {"高速经典", "CTWC", "就这?简单"},
["survivor_e"]= {"生存", "简单", "这都玩不下去?不会吧"},
["survivor_n"]= {"生存", "普通", "呵,这都玩不过?"},
["survivor_h"]= {"生存", "困难", "所以呢?"},
["survivor_l"]= {"生存", "疯狂", "然后呢?"},
["survivor_u"]= {"生存", "极限", "舒服了"},
["attacker_h"]= {"进攻", "困难", "进攻练习"},
["attacker_u"]= {"进攻", "极限", "进攻练习"},
["defender_n"]= {"防守", "普通", "防守练习"},
["defender_l"]= {"防守", "疯狂", "防守练习"},
["dig_h"]= {"挖掘", "困难", "挖掘练习"},
["dig_u"]= {"挖掘", "极限", "挖掘练习"},
["bigbang"]= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
["c4wtrain_n"]= {"C4W练习", "普通", "无 限 连 击"},
["c4wtrain_l"]= {"C4W练习", "疯狂", "无 限 连 击"},
["pctrain_n"]= {"全清训练", "普通", "随便打打"},
["pctrain_l"]= {"全清训练", "疯狂", "建议不打"},
["pc_n"]= {"全清挑战", "普通", "100行内刷PC"},
["pc_h"]= {"全清挑战", "困难", "100行内刷PC"},
["pc_l"]= {"全清挑战", "疯狂", "100行内刷PC"},
["tech_n"]= {"科研", "普通", "禁止断B2B"},
["tech_n_plus"]= {"科研", "普通+", "仅允许spin与PC"},
["tech_h"]= {"科研", "困难", "禁止断B2B"},
["tech_h_plus"]= {"科研", "困难+", "仅允许spin与PC"},
["tech_l"]= {"科研", "疯狂", "禁止断B2B"},
["tech_l_plus"]= {"科研", "疯狂+", "仅允许spin与PC"},
["tech_finesse"]= {"科研", "极简", "强制最简操作"},
["tech_finesse_f"]= {"科研", "极简+", "禁止普通消除,强制最简操作"},
["tsd_e"]= {"TSD挑战", "简单", "刷T2"},
["tsd_h"]= {"TSD挑战", "困难", "刷T2"},
["tsd_u"]= {"TSD挑战", "极限", "刷T2"},
["backfire_n"]= {"自攻自受", "普通", "200攻击很少的,冲冲冲"},
["backfire_h"]= {"自攻自受", "困难", "你在害怕什么"},
["backfire_l"]= {"自攻自受", "疯狂", "别怂啊,打攻击呀"},
["backfire_u"]= {"自攻自受", "极限", "能把自己玩死,不会吧"},
["zen"]= {"", "200", "不限时200行"},
["ultra"]= {"限时打分", "挑战", "2分钟刷分"},
["infinite"]= {"无尽", "", "真的有人会玩这个?"},
["infinite_dig"]= {"无尽:挖掘", "", "闲得慌的话来挖"},
["sprintFix"]= {"竞速", "无移动"},
["sprintLock"]= {"竞速", "无旋转"},
["marathon_bfmax"]= {"马拉松", "极限"},
["custom_clear"]= {"自定义", "普通"},
["custom_puzzle"]= {"自定义", "拼图"},
['sprint_10l']= {"竞速", "10L", "消10行"},
['sprint_20l']= {"竞速", "20L", "消20行"},
['sprint_40l']= {"竞速", "40L", "消40行"},
['sprint_100l']= {"竞速", "100L", "消100行"},
['sprint_400l']= {"竞速", "400L", "消400行"},
['sprint_1000l']= {"竞速", "1000L", "消1000行"},
['sprintPenta']= {"竞速", "五连块", "离谱"},
['sprintMPH']= {"竞速", "纯净", "听说你反应很快?"},
['dig_10l']= {"挖掘", "10L", "挖10行"},
['dig_40l']= {"挖掘", "40L", "挖40行"},
['dig_100l']= {"挖掘", "100L", "挖100行"},
['dig_400l']= {"挖掘", "400L", "挖400行"},
['dig_1000l']= {"挖掘", "1000L", "挖1000行"},
['drought_n']= {"干旱", "100L", "放轻松,简单得很"},
['drought_l']= {"干旱", "100L", "有趣的要来了"},
['marathon_n']= {"马拉松", "普通", "休闲模式"},
['marathon_h']= {"马拉松", "困难", "休闲模式"},
['solo_e']= {"单挑", "简单", "鲨AI"},
['solo_n']= {"单挑", "普通", "鲨AI"},
['solo_h']= {"单挑", "困难", "鲨AI"},
['solo_l']= {"单挑", "疯狂", "鲨AI"},
['solo_u']= {"单挑", "极限", "鲨AI"},
['techmino49_e']= {"49人混战", "简单", "这我岂不是乱鲨"},
['techmino49_h']= {"49人混战", "困难", "这我岂不是乱鲨"},
['techmino49_u']= {"49人混战", "极限", "你吃鸡率多少?"},
['techmino99_e']= {"99人混战", "简单", "这我岂不是乱鲨"},
['techmino99_h']= {"99人混战", "困难", "这我岂不是乱鲨"},
['techmino99_u']= {"99人混战", "极限", "你吃鸡率多少?"},
['round_e']= {"回合制", "简单", "下棋"},
['round_n']= {"回合制", "普通", "下棋"},
['round_h']= {"回合制", "困难", "下棋"},
['round_l']= {"回合制", "疯狂", "下棋"},
['round_u']= {"回合制", "极限", "下棋"},
['master_beginner']= {"大师", "疯狂", "无脑20G"},
['master_advance']= {"大师", "极限", "简单20G"},
['master_final']= {"大师", "终点", "究极20G:真正的游戏"},
['master_phantasm']= {"大师", "虚幻", "虚幻20G:好玩"},
['master_extra']= {"宗师", "EX", "你行你上"},
['rhythm_e']= {"节奏", "简单", "很无聊的"},
['rhythm_h']= {"节奏", "困难", "好玩么?"},
['rhythm_u']= {"节奏", "极限", "真男人不玩低难度"},
['blind_e']= {"隐形", "半隐", "谁都能玩"},
['blind_n']= {"隐形", "全隐", "稍加练习即可"},
['blind_h']= {"隐形", "瞬隐", "和上一个一样"},
['blind_l']= {"隐形", "瞬隐+", "这个确实挺难的"},
['blind_u']= {"隐形", "啊这", "你准备好了吗"},
['blind_wtf']= {"隐形", "不会吧", "还没准备好"},
['classic_fast']= {"高速经典", "CTWC", "就这?简单"},
['survivor_e']= {"生存", "简单", "这都玩不下去?不会吧"},
['survivor_n']= {"生存", "普通", "呵,这都玩不过?"},
['survivor_h']= {"生存", "困难", "所以呢?"},
['survivor_l']= {"生存", "疯狂", "然后呢?"},
['survivor_u']= {"生存", "极限", "舒服了"},
['attacker_h']= {"进攻", "困难", "进攻练习"},
['attacker_u']= {"进攻", "极限", "进攻练习"},
['defender_n']= {"防守", "普通", "防守练习"},
['defender_l']= {"防守", "疯狂", "防守练习"},
['dig_h']= {"挖掘", "困难", "挖掘练习"},
['dig_u']= {"挖掘", "极限", "挖掘练习"},
['bigbang']= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
['c4wtrain_n']= {"C4W练习", "普通", "无 限 连 击"},
['c4wtrain_l']= {"C4W练习", "疯狂", "无 限 连 击"},
['pctrain_n']= {"全清训练", "普通", "随便打打"},
['pctrain_l']= {"全清训练", "疯狂", "建议不打"},
['pc_n']= {"全清挑战", "普通", "100行内刷PC"},
['pc_h']= {"全清挑战", "困难", "100行内刷PC"},
['pc_l']= {"全清挑战", "疯狂", "100行内刷PC"},
['tech_n']= {"科研", "普通", "禁止断B2B"},
['tech_n_plus']= {"科研", "普通+", "仅允许spin与PC"},
['tech_h']= {"科研", "困难", "禁止断B2B"},
['tech_h_plus']= {"科研", "困难+", "仅允许spin与PC"},
['tech_l']= {"科研", "疯狂", "禁止断B2B"},
['tech_l_plus']= {"科研", "疯狂+", "仅允许spin与PC"},
['tech_finesse']= {"科研", "极简", "强制最简操作"},
['tech_finesse_f']= {"科研", "极简+", "禁止普通消除,强制最简操作"},
['tsd_e']= {"TSD挑战", "简单", "刷T2"},
['tsd_h']= {"TSD挑战", "困难", "刷T2"},
['tsd_u']= {"TSD挑战", "极限", "刷T2"},
['backfire_n']= {"自攻自受", "普通", "200攻击很少的,冲冲冲"},
['backfire_h']= {"自攻自受", "困难", "你在害怕什么"},
['backfire_l']= {"自攻自受", "疯狂", "别怂啊,打攻击呀"},
['backfire_u']= {"自攻自受", "极限", "能把自己玩死,不会吧"},
['zen']= {"", "200", "不限时200行"},
['ultra']= {"限时打分", "挑战", "2分钟刷分"},
['infinite']= {"无尽", "", "真的有人会玩这个?"},
['infinite_dig']= {"无尽:挖掘", "", "闲得慌的话来挖"},
['sprintFix']= {"竞速", "无移动"},
['sprintLock']= {"竞速", "无旋转"},
['marathon_bfmax']= {"马拉松", "极限"},
['custom_clear']= {"自定义", "普通"},
['custom_puzzle']= {"自定义", "拼图"},
},
getTip={refuseCopy=true,
"100apm?你倒是不用开局定式连续打几把",

View File

@@ -666,97 +666,97 @@ return{
},
},
modes={
["sprint_10l"]= {"竞速", "10L", "消除10行"},
["sprint_20l"]= {"竞速", "20L", "消除20行"},
["sprint_40l"]= {"竞速", "40L", "消除40行"},
["sprint_100l"]= {"竞速", "100L", "消除100行"},
["sprint_400l"]= {"竞速", "400L", "消除400行"},
["sprint_1000l"]= {"竞速", "1000L", "消除1000行"},
["sprintPenta"]= {"竞速", "五连块", "伤脑筋十八块"},
["sprintMPH"]= {"竞速", "MPH", "纯随机\n无预览\n无暂存"},
["dig_10l"]= {"挖掘", "10L", "挖掘10行"},
["dig_40l"]= {"挖掘", "40L", "挖掘40行"},
["dig_100l"]= {"挖掘", "100L", "挖掘100行"},
["dig_400l"]= {"挖掘", "400L", "挖掘400行"},
["dig_1000l"]= {"挖掘", "1000L", "挖掘1000行"},
["drought_n"]= {"干旱", "100L", "你I没了"},
["drought_l"]= {"干旱", "100L", "后 妈 发 牌"},
["marathon_n"]= {"马拉松", "普通", "200行加速马拉松"},
["marathon_h"]= {"马拉松", "困难", "200行高速马拉松"},
["solo_e"]= {"单挑", "简单", "打败AI"},
["solo_n"]= {"单挑", "普通", "打败AI"},
["solo_h"]= {"单挑", "困难", "打败AI"},
["solo_l"]= {"单挑", "疯狂", "打败AI"},
["solo_u"]= {"单挑", "极限", "打败AI"},
["techmino49_e"]= {"49人混战", "简单", "49人混战,活到最后"},
["techmino49_h"]= {"49人混战", "困难", "49人混战,活到最后"},
["techmino49_u"]= {"49人混战", "极限", "49人混战,活到最后"},
["techmino99_e"]= {"99人混战", "简单", "99人混战,活到最后"},
["techmino99_h"]= {"99人混战", "困难", "99人混战,活到最后"},
["techmino99_u"]= {"99人混战", "极限", "99人混战,活到最后"},
["round_e"]= {"回合制", "简单", "下棋模式"},
["round_n"]= {"回合制", "普通", "下棋模式"},
["round_h"]= {"回合制", "困难", "下棋模式"},
["round_l"]= {"回合制", "疯狂", "下棋模式"},
["round_u"]= {"回合制", "极限", "下棋模式"},
["master_beginner"]= {"大师", "疯狂", "20G初心者练习"},
["master_advance"]= {"大师", "极限", "上级者20G挑战"},
["master_final"]= {"大师", "终点", "究极20G:无法触及的终点"},
["master_phantasm"]= {"大师", "虚幻", "虚幻20G:???"},
["master_extra"]= {"宗师", "EX", "成为方块大师"},
["rhythm_e"]= {"节奏", "简单", "200行低速节奏马拉松"},
["rhythm_h"]= {"节奏", "困难", "200行中速节奏马拉松"},
["rhythm_u"]= {"节奏", "极限", "200行高速节奏马拉松"},
["blind_e"]= {"隐形", "半隐", "不强大脑"},
["blind_n"]= {"隐形", "全隐", "挺强大脑"},
["blind_h"]= {"隐形", "瞬隐", "很强大脑"},
["blind_l"]= {"隐形", "瞬隐+", "最强大脑"},
["blind_u"]= {"隐形", "啊这", "你准备好了吗"},
["blind_wtf"]= {"隐形", "不会吧", "还没准备好"},
["classic_fast"]= {"高速经典", "CTWC", "高速经典"},
["survivor_e"]= {"生存", "简单", "你能存活多久?"},
["survivor_n"]= {"生存", "普通", "你能存活多久?"},
["survivor_h"]= {"生存", "困难", "你能存活多久?"},
["survivor_l"]= {"生存", "疯狂", "你能存活多久?"},
["survivor_u"]= {"生存", "极限", "你能存活多久?"},
["attacker_h"]= {"进攻", "困难", "进攻练习"},
["attacker_u"]= {"进攻", "极限", "进攻练习"},
["defender_n"]= {"防守", "普通", "防守练习"},
["defender_l"]= {"防守", "疯狂", "防守练习"},
["dig_h"]= {"挖掘", "困难", "挖掘练习"},
["dig_u"]= {"挖掘", "极限", "挖掘练习"},
["bigbang"]= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
["c4wtrain_n"]= {"C4W练习", "普通", "无 限 连 击"},
["c4wtrain_l"]= {"C4W练习", "疯狂", "无 限 连 击"},
["pctrain_n"]= {"全清训练", "普通", "简易PC题库,熟悉全清定式的组合"},
["pctrain_l"]= {"全清训练", "疯狂", "困难PC题库,强算力者进"},
["pc_n"]= {"全清挑战", "普通", "100行内刷PC"},
["pc_h"]= {"全清挑战", "困难", "100行内刷PC"},
["pc_l"]= {"全清挑战", "疯狂", "100行内刷PC"},
["tech_n"]= {"科研", "普通", "禁止断B2B"},
["tech_n_plus"]= {"科研", "普通+", "仅允许spin与PC"},
["tech_h"]= {"科研", "困难", "禁止断B2B"},
["tech_h_plus"]= {"科研", "困难+", "仅允许spin与PC"},
["tech_l"]= {"科研", "疯狂", "禁止断B2B"},
["tech_l_plus"]= {"科研", "疯狂+", "仅允许spin与PC"},
["tech_finesse"]= {"科研", "极简", "强制最简操作"},
["tech_finesse_f"]= {"科研", "极简+", "禁止普通消除,强制最简操作"},
["tsd_e"]= {"TSD挑战", "简单", "你能连续做几个TSD?"},
["tsd_h"]= {"TSD挑战", "困难", "你能连续做几个TSD?"},
["tsd_u"]= {"TSD挑战", "极限", "你能连续做几个TSD?"},
["backfire_n"]= {"Backfire", "普通", "打出100攻击"},
["backfire_h"]= {"Backfire", "困难", "打出100攻击"},
["backfire_l"]= {"Backfire", "疯狂", "打出100攻击"},
["backfire_u"]= {"Backfire", "极限", "打出100攻击"},
["zen"]= {"", "200", "不限时200行"},
["ultra"]= {"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
["infinite"]= {"无尽", "", "沙盒"},
["infinite_dig"]= {"无尽:挖掘", "", "挖呀挖呀挖"},
["sprintFix"]= {"竞速", "无移动"},
["sprintLock"]= {"竞速", "无旋转"},
["marathon_bfmax"]= {"马拉松", "极限"},
["custom_clear"]= {"自定义", "普通"},
["custom_puzzle"]= {"自定义", "拼图"},
['sprint_10l']= {"竞速", "10L", "消除10行"},
['sprint_20l']= {"竞速", "20L", "消除20行"},
['sprint_40l']= {"竞速", "40L", "消除40行"},
['sprint_100l']= {"竞速", "100L", "消除100行"},
['sprint_400l']= {"竞速", "400L", "消除400行"},
['sprint_1000l']= {"竞速", "1000L", "消除1000行"},
['sprintPenta']= {"竞速", "五连块", "伤脑筋十八块"},
['sprintMPH']= {"竞速", "MPH", "纯随机\n无预览\n无暂存"},
['dig_10l']= {"挖掘", "10L", "挖掘10行"},
['dig_40l']= {"挖掘", "40L", "挖掘40行"},
['dig_100l']= {"挖掘", "100L", "挖掘100行"},
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
['dig_1000l']= {"挖掘", "1000L", "挖掘1000行"},
['drought_n']= {"干旱", "100L", "你I没了"},
['drought_l']= {"干旱", "100L", "后 妈 发 牌"},
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
['marathon_h']= {"马拉松", "困难", "200行高速马拉松"},
['solo_e']= {"单挑", "简单", "打败AI"},
['solo_n']= {"单挑", "普通", "打败AI"},
['solo_h']= {"单挑", "困难", "打败AI"},
['solo_l']= {"单挑", "疯狂", "打败AI"},
['solo_u']= {"单挑", "极限", "打败AI"},
['techmino49_e']= {"49人混战", "简单", "49人混战,活到最后"},
['techmino49_h']= {"49人混战", "困难", "49人混战,活到最后"},
['techmino49_u']= {"49人混战", "极限", "49人混战,活到最后"},
['techmino99_e']= {"99人混战", "简单", "99人混战,活到最后"},
['techmino99_h']= {"99人混战", "困难", "99人混战,活到最后"},
['techmino99_u']= {"99人混战", "极限", "99人混战,活到最后"},
['round_e']= {"回合制", "简单", "下棋模式"},
['round_n']= {"回合制", "普通", "下棋模式"},
['round_h']= {"回合制", "困难", "下棋模式"},
['round_l']= {"回合制", "疯狂", "下棋模式"},
['round_u']= {"回合制", "极限", "下棋模式"},
['master_beginner']= {"大师", "疯狂", "20G初心者练习"},
['master_advance']= {"大师", "极限", "上级者20G挑战"},
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
['master_phantasm']= {"大师", "虚幻", "虚幻20G:???"},
['master_extra']= {"宗师", "EX", "成为方块大师"},
['rhythm_e']= {"节奏", "简单", "200行低速节奏马拉松"},
['rhythm_h']= {"节奏", "困难", "200行中速节奏马拉松"},
['rhythm_u']= {"节奏", "极限", "200行高速节奏马拉松"},
['blind_e']= {"隐形", "半隐", "不强大脑"},
['blind_n']= {"隐形", "全隐", "挺强大脑"},
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
['blind_l']= {"隐形", "瞬隐+", "最强大脑"},
['blind_u']= {"隐形", "啊这", "你准备好了吗"},
['blind_wtf']= {"隐形", "不会吧", "还没准备好"},
['classic_fast']= {"高速经典", "CTWC", "高速经典"},
['survivor_e']= {"生存", "简单", "你能存活多久?"},
['survivor_n']= {"生存", "普通", "你能存活多久?"},
['survivor_h']= {"生存", "困难", "你能存活多久?"},
['survivor_l']= {"生存", "疯狂", "你能存活多久?"},
['survivor_u']= {"生存", "极限", "你能存活多久?"},
['attacker_h']= {"进攻", "困难", "进攻练习"},
['attacker_u']= {"进攻", "极限", "进攻练习"},
['defender_n']= {"防守", "普通", "防守练习"},
['defender_l']= {"防守", "疯狂", "防守练习"},
['dig_h']= {"挖掘", "困难", "挖掘练习"},
['dig_u']= {"挖掘", "极限", "挖掘练习"},
['bigbang']= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
['c4wtrain_n']= {"C4W练习", "普通", "无 限 连 击"},
['c4wtrain_l']= {"C4W练习", "疯狂", "无 限 连 击"},
['pctrain_n']= {"全清训练", "普通", "简易PC题库,熟悉全清定式的组合"},
['pctrain_l']= {"全清训练", "疯狂", "困难PC题库,强算力者进"},
['pc_n']= {"全清挑战", "普通", "100行内刷PC"},
['pc_h']= {"全清挑战", "困难", "100行内刷PC"},
['pc_l']= {"全清挑战", "疯狂", "100行内刷PC"},
['tech_n']= {"科研", "普通", "禁止断B2B"},
['tech_n_plus']= {"科研", "普通+", "仅允许spin与PC"},
['tech_h']= {"科研", "困难", "禁止断B2B"},
['tech_h_plus']= {"科研", "困难+", "仅允许spin与PC"},
['tech_l']= {"科研", "疯狂", "禁止断B2B"},
['tech_l_plus']= {"科研", "疯狂+", "仅允许spin与PC"},
['tech_finesse']= {"科研", "极简", "强制最简操作"},
['tech_finesse_f']= {"科研", "极简+", "禁止普通消除,强制最简操作"},
['tsd_e']= {"TSD挑战", "简单", "你能连续做几个TSD?"},
['tsd_h']= {"TSD挑战", "困难", "你能连续做几个TSD?"},
['tsd_u']= {"TSD挑战", "极限", "你能连续做几个TSD?"},
['backfire_n']= {"Backfire", "普通", "打出100攻击"},
['backfire_h']= {"Backfire", "困难", "打出100攻击"},
['backfire_l']= {"Backfire", "疯狂", "打出100攻击"},
['backfire_u']= {"Backfire", "极限", "打出100攻击"},
['zen']= {"", "200", "不限时200行"},
['ultra']= {"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
['infinite']= {"无尽", "", "沙盒"},
['infinite_dig']= {"无尽:挖掘", "", "挖呀挖呀挖"},
['sprintFix']= {"竞速", "无移动"},
['sprintLock']= {"竞速", "无旋转"},
['marathon_bfmax']= {"马拉松", "极限"},
['custom_clear']= {"自定义", "普通"},
['custom_puzzle']= {"自定义", "拼图"},
},
getTip={refuseCopy=true,
"...,合群了就会消失,不合群世界毁灭(指game over",

View File

@@ -139,96 +139,96 @@ return{
},
},
modes={
["sprint_10l"]= {"竞速", "10行", "消除10行"},
["sprint_20l"]= {"竞速", "20行", "消除20行"},
["sprint_40l"]= {"竞速", "40行", "消除40行"},
["sprint_100l"]= {"竞速", "100行", "消除100行"},
["sprint_400l"]= {"竞速", "400行", "消除400行"},
["sprint_1000l"]= {"竞速", "1000行", "消除1000行"},
["sprintPenta"]= {"竞速", "五连块", "伤脑筋十八块"},
["sprintMPH"]= {"竞速", "纯净", "纯随机\n无预览\n无暂存"},
["dig_10l"]= {"挖掘", "10L", "挖掘10行"},
["dig_40l"]= {"挖掘", "40L", "挖掘40行"},
["dig_100l"]= {"挖掘", "100L", "挖掘100行"},
["dig_400l"]= {"挖掘", "400L", "挖掘400行"},
["dig_1000l"]= {"挖掘", "1000L", "挖掘1000行"},
["drought_n"]= {"干旱", "100行", "你I没了"},
["drought_l"]= {"干旱", "100行", "后 妈 发 牌"},
["marathon_n"]= {"马拉松", "普通", "200行加速马拉松"},
["marathon_h"]= {"马拉松", "困难", "200行高速马拉松"},
["solo_e"]= {"单挑", "简单", "打败机器人"},
["solo_n"]= {"单挑", "普通", "打败机器人"},
["solo_h"]= {"单挑", "困难", "打败机器人"},
["solo_l"]= {"单挑", "疯狂", "打败机器人"},
["solo_u"]= {"单挑", "极限", "打败机器人"},
["techmino49_e"]= {"49人混战", "简单", "49人混战,活到最后"},
["techmino49_h"]= {"49人混战", "困难", "49人混战,活到最后"},
["techmino49_u"]= {"49人混战", "极限", "49人混战,活到最后"},
["techmino99_e"]= {"99人混战", "简单", "99人混战,活到最后"},
["techmino99_h"]= {"99人混战", "困难", "99人混战,活到最后"},
["techmino99_u"]= {"99人混战", "极限", "99人混战,活到最后"},
["round_e"]= {"回合制", "简单", "下棋模式"},
["round_n"]= {"回合制", "普通", "下棋模式"},
["round_h"]= {"回合制", "困难", "下棋模式"},
["round_l"]= {"回合制", "疯狂", "下棋模式"},
["round_u"]= {"回合制", "极限", "下棋模式"},
["master_beginner"]= {"大师", "疯狂", "20G初心者练习"},
["master_advance"]= {"大师", "极限", "上级者20G挑战"},
["master_final"]= {"大师", "终点", "究极20G:无法触及的终点"},
["master_phantasm"]= {"大师", "虚幻", "虚幻20G:???"},
["master_extra"]= {"宗师", "EX", "成为方块大师"},
["rhythm_e"]= {"节奏", "简单", "200行低速节奏马拉松"},
["rhythm_h"]= {"节奏", "困难", "200行中速节奏马拉松"},
["rhythm_u"]= {"节奏", "极限", "200行高速节奏马拉松"},
["blind_e"]= {"隐形", "半隐", "不强大脑"},
["blind_n"]= {"隐形", "全隐", "挺强大脑"},
["blind_h"]= {"隐形", "瞬隐", "很强大脑"},
["blind_l"]= {"隐形", "瞬隐+", "超强大脑"},
["blind_u"]= {"隐形", "啊这", "你准备好了吗"},
["blind_wtf"]= {"隐形", "不会吧", "还没准备好"},
["classic_fast"]= {"高速经典", "CTWC", "高速经典"},
["survivor_e"]= {"生存", "简单", "你能存活多久?"},
["survivor_n"]= {"生存", "普通", "你能存活多久?"},
["survivor_h"]= {"生存", "困难", "你能存活多久?"},
["survivor_l"]= {"生存", "疯狂", "你能存活多久?"},
["survivor_u"]= {"生存", "极限", "你能存活多久?"},
["attacker_h"]= {"进攻", "困难", "进攻练习"},
["attacker_u"]= {"进攻", "极限", "进攻练习"},
["defender_n"]= {"防守", "普通", "防守练习"},
["defender_l"]= {"防守", "疯狂", "防守练习"},
["dig_h"]= {"挖掘", "困难", "挖掘练习"},
["dig_u"]= {"挖掘", "极限", "挖掘练习"},
["bigbang"]= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
["c4wtrain_n"]= {"中四宽练习", "普通", "无 限 连 击"},
["c4wtrain_l"]= {"中四宽练习", "疯狂", "无 限 连 击"},
["pctrain_n"]= {"全清训练", "普通", "简易全清题库,熟悉全清定式的组合"},
["pctrain_l"]= {"全清训练", "疯狂", "困难PC题库,强算力者进"},
["pc_n"]= {"全清挑战", "普通", "100行内刷全清"},
["pc_h"]= {"全清挑战", "困难", "100行内刷全清"},
["pc_l"]= {"全清挑战", "疯狂", "100行内刷全清"},
["tech_n"]= {"科研", "普通", "禁止断B2B"},
["tech_n_plus"]= {"科研", "普通+", "仅允许回旋与全清"},
["tech_h"]= {"科研", "困难", "禁止断B2B"},
["tech_h_plus"]= {"科研", "困难+", "仅允许回旋与全清"},
["tech_l"]= {"科研", "疯狂", "禁止断B2B"},
["tech_l_plus"]= {"科研", "疯狂+", "仅允许spin与PC"},
["tech_finesse"]= {"科研", "极简", "强制最简操作"},
["tech_finesse_f"]= {"科研", "极简+", "禁止普通消除,强制最简操作"},
["tsd_e"]= {"T2挑战", "简单", "你能连续做几个T旋双清?"},
["tsd_h"]= {"T2挑战", "困难", "你能连续做几个T旋双清?"},
["tsd_u"]= {"T2挑战", "极限", "你能连续做几个T旋双清?"},
["backfire_n"]= {"自攻自防", "普通", "打出100攻击"},
["backfire_h"]= {"自攻自防", "困难", "打出100攻击"},
["backfire_l"]= {"自攻自防", "疯狂", "打出100攻击"},
["backfire_u"]= {"自攻自防", "极限", "打出100攻击"},
["zen"]= {"", "200", "不限时200行"},
["ultra"]= {"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
["infinite"]= {"无尽", "", "沙盒"},
["infinite_dig"]= {"无尽:挖掘", "", "挖呀挖呀挖"},
["sprintFix"]= {"竞速", "无移动"},
["sprintLock"]= {"竞速", "无旋转"},
["marathon_bfmax"]= {"马拉松", "极限"},
["custom_clear"]= {"自定义", "普通"},
["custom_puzzle"]= {"自定义", "拼图"},
['sprint_10l']= {"竞速", "10行", "消除10行"},
['sprint_20l']= {"竞速", "20行", "消除20行"},
['sprint_40l']= {"竞速", "40行", "消除40行"},
['sprint_100l']= {"竞速", "100行", "消除100行"},
['sprint_400l']= {"竞速", "400行", "消除400行"},
['sprint_1000l']= {"竞速", "1000行", "消除1000行"},
['sprintPenta']= {"竞速", "五连块", "伤脑筋十八块"},
['sprintMPH']= {"竞速", "纯净", "纯随机\n无预览\n无暂存"},
['dig_10l']= {"挖掘", "10L", "挖掘10行"},
['dig_40l']= {"挖掘", "40L", "挖掘40行"},
['dig_100l']= {"挖掘", "100L", "挖掘100行"},
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
['dig_1000l']= {"挖掘", "1000L", "挖掘1000行"},
['drought_n']= {"干旱", "100行", "你I没了"},
['drought_l']= {"干旱", "100行", "后 妈 发 牌"},
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
['marathon_h']= {"马拉松", "困难", "200行高速马拉松"},
['solo_e']= {"单挑", "简单", "打败机器人"},
['solo_n']= {"单挑", "普通", "打败机器人"},
['solo_h']= {"单挑", "困难", "打败机器人"},
['solo_l']= {"单挑", "疯狂", "打败机器人"},
['solo_u']= {"单挑", "极限", "打败机器人"},
['techmino49_e']= {"49人混战", "简单", "49人混战,活到最后"},
['techmino49_h']= {"49人混战", "困难", "49人混战,活到最后"},
['techmino49_u']= {"49人混战", "极限", "49人混战,活到最后"},
['techmino99_e']= {"99人混战", "简单", "99人混战,活到最后"},
['techmino99_h']= {"99人混战", "困难", "99人混战,活到最后"},
['techmino99_u']= {"99人混战", "极限", "99人混战,活到最后"},
['round_e']= {"回合制", "简单", "下棋模式"},
['round_n']= {"回合制", "普通", "下棋模式"},
['round_h']= {"回合制", "困难", "下棋模式"},
['round_l']= {"回合制", "疯狂", "下棋模式"},
['round_u']= {"回合制", "极限", "下棋模式"},
['master_beginner']= {"大师", "疯狂", "20G初心者练习"},
['master_advance']= {"大师", "极限", "上级者20G挑战"},
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
['master_phantasm']= {"大师", "虚幻", "虚幻20G:???"},
['master_extra']= {"宗师", "EX", "成为方块大师"},
['rhythm_e']= {"节奏", "简单", "200行低速节奏马拉松"},
['rhythm_h']= {"节奏", "困难", "200行中速节奏马拉松"},
['rhythm_u']= {"节奏", "极限", "200行高速节奏马拉松"},
['blind_e']= {"隐形", "半隐", "不强大脑"},
['blind_n']= {"隐形", "全隐", "挺强大脑"},
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
['blind_l']= {"隐形", "瞬隐+", "超强大脑"},
['blind_u']= {"隐形", "啊这", "你准备好了吗"},
['blind_wtf']= {"隐形", "不会吧", "还没准备好"},
['classic_fast']= {"高速经典", "CTWC", "高速经典"},
['survivor_e']= {"生存", "简单", "你能存活多久?"},
['survivor_n']= {"生存", "普通", "你能存活多久?"},
['survivor_h']= {"生存", "困难", "你能存活多久?"},
['survivor_l']= {"生存", "疯狂", "你能存活多久?"},
['survivor_u']= {"生存", "极限", "你能存活多久?"},
['attacker_h']= {"进攻", "困难", "进攻练习"},
['attacker_u']= {"进攻", "极限", "进攻练习"},
['defender_n']= {"防守", "普通", "防守练习"},
['defender_l']= {"防守", "疯狂", "防守练习"},
['dig_h']= {"挖掘", "困难", "挖掘练习"},
['dig_u']= {"挖掘", "极限", "挖掘练习"},
['bigbang']= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
['c4wtrain_n']= {"中四宽练习", "普通", "无 限 连 击"},
['c4wtrain_l']= {"中四宽练习", "疯狂", "无 限 连 击"},
['pctrain_n']= {"全清训练", "普通", "简易全清题库,熟悉全清定式的组合"},
['pctrain_l']= {"全清训练", "疯狂", "困难PC题库,强算力者进"},
['pc_n']= {"全清挑战", "普通", "100行内刷全清"},
['pc_h']= {"全清挑战", "困难", "100行内刷全清"},
['pc_l']= {"全清挑战", "疯狂", "100行内刷全清"},
['tech_n']= {"科研", "普通", "禁止断B2B"},
['tech_n_plus']= {"科研", "普通+", "仅允许回旋与全清"},
['tech_h']= {"科研", "困难", "禁止断B2B"},
['tech_h_plus']= {"科研", "困难+", "仅允许回旋与全清"},
['tech_l']= {"科研", "疯狂", "禁止断B2B"},
['tech_l_plus']= {"科研", "疯狂+", "仅允许spin与PC"},
['tech_finesse']= {"科研", "极简", "强制最简操作"},
['tech_finesse_f']= {"科研", "极简+", "禁止普通消除,强制最简操作"},
['tsd_e']= {"T2挑战", "简单", "你能连续做几个T旋双清?"},
['tsd_h']= {"T2挑战", "困难", "你能连续做几个T旋双清?"},
['tsd_u']= {"T2挑战", "极限", "你能连续做几个T旋双清?"},
['backfire_n']= {"自攻自防", "普通", "打出100攻击"},
['backfire_h']= {"自攻自防", "困难", "打出100攻击"},
['backfire_l']= {"自攻自防", "疯狂", "打出100攻击"},
['backfire_u']= {"自攻自防", "极限", "打出100攻击"},
['zen']= {"", "200", "不限时200行"},
['ultra']= {"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
['infinite']= {"无尽", "", "沙盒"},
['infinite_dig']= {"无尽:挖掘", "", "挖呀挖呀挖"},
['sprintFix']= {"竞速", "无移动"},
['sprintLock']= {"竞速", "无旋转"},
['marathon_bfmax']= {"马拉松", "极限"},
['custom_clear']= {"自定义", "普通"},
['custom_puzzle']= {"自定义", "拼图"},
},
}

View File

@@ -1,119 +1,119 @@
return{
{name="sprint_10l", x=0, y=0, size=40,shape=1,icon="sprint1", unlock={"sprint_20l","sprint_40l"}},
{name="sprint_20l", x=-200, y=0, size=50,shape=1,icon="sprint1"},
{name="sprint_40l", x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={"dig_10l","sprint_100l","marathon_n","sprintPenta","sprintMPH"}},
{name="sprint_100l", x=-200, y=-200, size=50,shape=1,icon="sprint2", unlock={"sprint_400l","drought_n"}},
{name="sprint_400l", x=-400, y=-200, size=40,shape=1,icon="sprint3", unlock={"sprint_1000l"}},
{name="sprint_1000l", x=-600, y=-200, size=40,shape=1,icon="sprint3"},
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
{name='sprint_20l', x=-200, y=0, size=50,shape=1,icon="sprint1"},
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH'}},
{name='sprint_100l', x=-200, y=-200, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
{name='sprint_400l', x=-400, y=-200, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
{name='sprint_1000l', x=-600, y=-200, size=40,shape=1,icon="sprint3"},
{name="sprintPenta", x=210, y=-370, size=40,shape=3,icon="tech"},
{name="sprintMPH", x=210, y=-230, size=40,shape=3,icon="tech"},
{name='sprintPenta', x=210, y=-370, size=40,shape=3,icon="tech"},
{name='sprintMPH', x=210, y=-230, size=40,shape=3,icon="tech"},
{name="drought_n", x=-400, y=0, size=40,shape=1,icon="drought", unlock={"drought_l"}},
{name="drought_l", x=-600, y=0, size=40,shape=1,icon="mess"},
{name='drought_n', x=-400, y=0, size=40,shape=1,icon="drought", unlock={'drought_l'}},
{name='drought_l', x=-600, y=0, size=40,shape=1,icon="mess"},
{name="dig_10l", x=-200, y=-400, size=40,shape=1,icon="dig_sprint", unlock={"dig_40l"}},
{name="dig_40l", x=-400, y=-400, size=40,shape=1,icon="dig_sprint", unlock={"dig_100l"}},
{name="dig_100l", x=-600, y=-400, size=40,shape=1,icon="dig_sprint", unlock={"dig_400l"}},
{name="dig_400l", x=-800, y=-200, size=40,shape=1,icon="dig_sprint"},
{name='dig_10l', x=-200, y=-400, size=40,shape=1,icon="dig_sprint", unlock={'dig_40l'}},
{name='dig_40l', x=-400, y=-400, size=40,shape=1,icon="dig_sprint", unlock={'dig_100l'}},
{name='dig_100l', x=-600, y=-400, size=40,shape=1,icon="dig_sprint", unlock={'dig_400l'}},
{name='dig_400l', x=-800, y=-200, size=40,shape=1,icon="dig_sprint"},
{name="marathon_n", x=0, y=-600, size=60,shape=1,icon="marathon",unlock={"marathon_h","rhythm_e","solo_e","round_e","blind_e","classic_fast","survivor_e","bigbang","zen"}},
{name="marathon_h", x=0, y=-800, size=50,shape=1,icon="marathon",unlock={"master_beginner"}},
{name='marathon_n', x=0, y=-600, size=60,shape=1,icon="marathon",unlock={'marathon_h','rhythm_e','solo_e','round_e','blind_e','classic_fast','survivor_e','bigbang','zen'}},
{name='marathon_h', x=0, y=-800, size=50,shape=1,icon="marathon",unlock={'master_beginner'}},
{name="solo_e", x=-600, y=-1000,size=40,shape=1,icon="solo", unlock={"solo_n"}},
{name="solo_n", x=-800, y=-1000,size=40,shape=1,icon="solo", unlock={"solo_h"}},
{name="solo_h", x=-1000,y=-1000,size=40,shape=1,icon="solo", unlock={"solo_l","techmino49_e"}},
{name="solo_l", x=-1200,y=-1000,size=40,shape=1,icon="solo", unlock={"solo_u"}},
{name="solo_u", x=-1400,y=-1000,size=40,shape=1,icon="solo"},
{name='solo_e', x=-600, y=-1000,size=40,shape=1,icon="solo", unlock={'solo_n'}},
{name='solo_n', x=-800, y=-1000,size=40,shape=1,icon="solo", unlock={'solo_h'}},
{name='solo_h', x=-1000,y=-1000,size=40,shape=1,icon="solo", unlock={'solo_l','techmino49_e'}},
{name='solo_l', x=-1200,y=-1000,size=40,shape=1,icon="solo", unlock={'solo_u'}},
{name='solo_u', x=-1400,y=-1000,size=40,shape=1,icon="solo"},
{name="techmino49_e", x=-1100,y=-1200,size=40,shape=1,icon="t49", unlock={"techmino49_h","techmino99_e"}},
{name="techmino49_h", x=-1100,y=-1400,size=40,shape=1,icon="t49", unlock={"techmino49_u"}},
{name="techmino49_u", x=-1100,y=-1600,size=40,shape=1,icon="t49"},
{name="techmino99_e", x=-1300,y=-1400,size=40,shape=1,icon="t99", unlock={"techmino99_h"}},
{name="techmino99_h", x=-1300,y=-1600,size=40,shape=1,icon="t99", unlock={"techmino99_u"}},
{name="techmino99_u", x=-1300,y=-1800,size=40,shape=1,icon="t99"},
{name='techmino49_e', x=-1100,y=-1200,size=40,shape=1,icon="t49", unlock={'techmino49_h','techmino99_e'}},
{name='techmino49_h', x=-1100,y=-1400,size=40,shape=1,icon="t49", unlock={'techmino49_u'}},
{name='techmino49_u', x=-1100,y=-1600,size=40,shape=1,icon="t49"},
{name='techmino99_e', x=-1300,y=-1400,size=40,shape=1,icon="t99", unlock={'techmino99_h'}},
{name='techmino99_h', x=-1300,y=-1600,size=40,shape=1,icon="t99", unlock={'techmino99_u'}},
{name='techmino99_u', x=-1300,y=-1800,size=40,shape=1,icon="t99"},
{name="round_e", x=-600, y=-800, size=40,shape=1,icon="round", unlock={"round_n"}},
{name="round_n", x=-800, y=-800, size=40,shape=1,icon="round", unlock={"round_h"}},
{name="round_h", x=-1000,y=-800, size=40,shape=1,icon="round", unlock={"round_l"}},
{name="round_l", x=-1200,y=-800, size=40,shape=1,icon="round", unlock={"round_u"}},
{name="round_u", x=-1400,y=-800, size=40,shape=1,icon="round"},
{name='round_e', x=-600, y=-800, size=40,shape=1,icon="round", unlock={'round_n'}},
{name='round_n', x=-800, y=-800, size=40,shape=1,icon="round", unlock={'round_h'}},
{name='round_h', x=-1000,y=-800, size=40,shape=1,icon="round", unlock={'round_l'}},
{name='round_l', x=-1200,y=-800, size=40,shape=1,icon="round", unlock={'round_u'}},
{name='round_u', x=-1400,y=-800, size=40,shape=1,icon="round"},
{name="master_beginner",x=0, y=-1000,size=40,shape=1,icon="master", unlock={"master_advance"}},
{name="master_advance", x=0, y=-1200,size=40,shape=3,icon="master", unlock={"master_final","master_extra","master_phantasm"}},
{name="master_final", x=0, y=-1600,size=40,shape=2,icon="master"},
{name="master_phantasm",x=-150, y=-1500,size=40,shape=2,icon="master"},
{name="master_extra", x=150, y=-1500,size=40,shape=2,icon="master_ex"},
{name='master_beginner',x=0, y=-1000,size=40,shape=1,icon="master", unlock={'master_advance'}},
{name='master_advance', x=0, y=-1200,size=40,shape=3,icon="master", unlock={'master_final','master_extra','master_phantasm'}},
{name='master_final', x=0, y=-1600,size=40,shape=2,icon="master"},
{name='master_phantasm',x=-150, y=-1500,size=40,shape=2,icon="master"},
{name='master_extra', x=150, y=-1500,size=40,shape=2,icon="master_ex"},
{name="rhythm_e", x=-350, y=-1000,size=40,shape=1,icon="rhythm", unlock={"rhythm_h"}},
{name="rhythm_h", x=-350, y=-1200,size=40,shape=3,icon="rhythm", unlock={"rhythm_u"}},
{name="rhythm_u", x=-350, y=-1400,size=40,shape=2,icon="rhythm"},
{name='rhythm_e', x=-350, y=-1000,size=40,shape=1,icon="rhythm", unlock={'rhythm_h'}},
{name='rhythm_h', x=-350, y=-1200,size=40,shape=3,icon="rhythm", unlock={'rhythm_u'}},
{name='rhythm_u', x=-350, y=-1400,size=40,shape=2,icon="rhythm"},
{name="blind_e", x=150, y=-700, size=40,shape=1,icon="hidden", unlock={"blind_n"}},
{name="blind_n", x=150, y=-800, size=40,shape=1,icon="hidden", unlock={"blind_h"}},
{name="blind_h", x=150, y=-900, size=35,shape=1,icon="hidden", unlock={"blind_l"}},
{name="blind_l", x=150, y=-1000,size=35,shape=3,icon="hidden", unlock={"blind_u"}},
{name="blind_u", x=150, y=-1100,size=35,shape=3,icon="hidden", unlock={"blind_wtf"}},
{name="blind_wtf", x=150, y=-1200,size=35,shape=2,icon="hidden"},
{name='blind_e', x=150, y=-700, size=40,shape=1,icon="hidden", unlock={'blind_n'}},
{name='blind_n', x=150, y=-800, size=40,shape=1,icon="hidden", unlock={'blind_h'}},
{name='blind_h', x=150, y=-900, size=35,shape=1,icon="hidden", unlock={'blind_l'}},
{name='blind_l', x=150, y=-1000,size=35,shape=3,icon="hidden", unlock={'blind_u'}},
{name='blind_u', x=150, y=-1100,size=35,shape=3,icon="hidden", unlock={'blind_wtf'}},
{name='blind_wtf', x=150, y=-1200,size=35,shape=2,icon="hidden"},
{name="classic_fast", x=-150, y=-950, size=40,shape=2,icon="classic"},
{name='classic_fast', x=-150, y=-950, size=40,shape=2,icon="classic"},
{name="survivor_e", x=300, y=-600, size=40,shape=1,icon="survivor",unlock={"survivor_n"}},
{name="survivor_n", x=500, y=-600, size=40,shape=1,icon="survivor",unlock={"survivor_h","attacker_h","defender_n","dig_h"}},
{name="survivor_h", x=700, y=-600, size=40,shape=1,icon="survivor",unlock={"survivor_l"}},
{name="survivor_l", x=900, y=-600, size=40,shape=3,icon="survivor",unlock={"survivor_u"}},
{name="survivor_u", x=1100, y=-600, size=40,shape=2,icon="survivor"},
{name='survivor_e', x=300, y=-600, size=40,shape=1,icon="survivor",unlock={'survivor_n'}},
{name='survivor_n', x=500, y=-600, size=40,shape=1,icon="survivor",unlock={'survivor_h','attacker_h','defender_n','dig_h'}},
{name='survivor_h', x=700, y=-600, size=40,shape=1,icon="survivor",unlock={'survivor_l'}},
{name='survivor_l', x=900, y=-600, size=40,shape=3,icon="survivor",unlock={'survivor_u'}},
{name='survivor_u', x=1100, y=-600, size=40,shape=2,icon="survivor"},
{name="attacker_h", x=300, y=-800, size=40,shape=1,icon="attack", unlock={"attacker_u"}},
{name="attacker_u", x=300, y=-1000,size=40,shape=1,icon="attack"},
{name='attacker_h', x=300, y=-800, size=40,shape=1,icon="attack", unlock={'attacker_u'}},
{name='attacker_u', x=300, y=-1000,size=40,shape=1,icon="attack"},
{name="defender_n", x=500, y=-800, size=40,shape=1,icon="defend", unlock={"defender_l"}},
{name="defender_l", x=500, y=-1000,size=40,shape=1,icon="defend"},
{name='defender_n', x=500, y=-800, size=40,shape=1,icon="defend", unlock={'defender_l'}},
{name='defender_l', x=500, y=-1000,size=40,shape=1,icon="defend"},
{name="dig_h", x=700, y=-800, size=40,shape=1,icon="dig", unlock={"dig_u"}},
{name="dig_u", x=700, y=-1000,size=40,shape=1,icon="dig"},
{name='dig_h', x=700, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
{name='dig_u', x=700, y=-1000,size=40,shape=1,icon="dig"},
{name="bigbang", x=400, y=-400, size=50,shape=1,icon="bigbang", unlock={"c4wtrain_n","pctrain_n","tech_n"}},
{name="c4wtrain_n", x=700, y=-400, size=40,shape=1,icon="pc",unlock={"c4wtrain_l"}},
{name="c4wtrain_l", x=900, y=-400, size=40,shape=1,icon="pc"},
{name='bigbang', x=400, y=-400, size=50,shape=1,icon="bigbang", unlock={'c4wtrain_n','pctrain_n','tech_n'}},
{name='c4wtrain_n', x=700, y=-400, size=40,shape=1,icon="pc",unlock={'c4wtrain_l'}},
{name='c4wtrain_l', x=900, y=-400, size=40,shape=1,icon="pc"},
{name="pctrain_n", x=700, y=-220, size=40,shape=1,icon="pc", unlock={"pctrain_l","pc_n"}},
{name="pctrain_l", x=900, y=-220, size=40,shape=1,icon="pc"},
{name='pctrain_n', x=700, y=-220, size=40,shape=1,icon="pc", unlock={'pctrain_l','pc_n'}},
{name='pctrain_l', x=900, y=-220, size=40,shape=1,icon="pc"},
{name="pc_n", x=800, y=-100, size=40,shape=1,icon="pc", unlock={"pc_h"}},
{name="pc_h", x=1000, y=-100, size=40,shape=3,icon="pc", unlock={"pc_l"}},
{name="pc_l", x=1200, y=-100, size=40,shape=2,icon="pc"},
{name='pc_n', x=800, y=-100, size=40,shape=1,icon="pc", unlock={'pc_h'}},
{name='pc_h', x=1000, y=-100, size=40,shape=3,icon="pc", unlock={'pc_l'}},
{name='pc_l', x=1200, y=-100, size=40,shape=2,icon="pc"},
{name="tech_n", x=400, y=-150, size=40,shape=1,icon="tech", unlock={"tech_n_plus","tech_h","tech_finesse"}},
{name="tech_n_plus", x=600, y=160, size=40,shape=3,icon="tech", unlock={"tsd_e","backfire_n"}},
{name="tech_h", x=400, y=40, size=40,shape=1,icon="tech", unlock={"tech_h_plus","tech_l"}},
{name="tech_h_plus", x=200, y=70, size=35,shape=3,icon="tech"},
{name="tech_l", x=400, y=200, size=40,shape=1,icon="tech", unlock={"tech_l_plus"}},
{name="tech_l_plus", x=200, y=230, size=35,shape=3,icon="tech"},
{name='tech_n', x=400, y=-150, size=40,shape=1,icon="tech", unlock={'tech_n_plus','tech_h','tech_finesse'}},
{name='tech_n_plus', x=600, y=160, size=40,shape=3,icon="tech", unlock={'tsd_e','backfire_n'}},
{name='tech_h', x=400, y=40, size=40,shape=1,icon="tech", unlock={'tech_h_plus','tech_l'}},
{name='tech_h_plus', x=200, y=70, size=35,shape=3,icon="tech"},
{name='tech_l', x=400, y=200, size=40,shape=1,icon="tech", unlock={'tech_l_plus'}},
{name='tech_l_plus', x=200, y=230, size=35,shape=3,icon="tech"},
{name="tech_finesse", x=800, y=50, size=40,shape=1,icon="tech", unlock={"tech_finesse_f"}},
{name="tech_finesse_f", x=1000, y=50, size=40,shape=1,icon="tech"},
{name='tech_finesse', x=800, y=50, size=40,shape=1,icon="tech", unlock={'tech_finesse_f'}},
{name='tech_finesse_f', x=1000, y=50, size=40,shape=1,icon="tech"},
{name="tsd_e", x=800, y=200, size=40,shape=1,icon="tsd", unlock={"tsd_h"}},
{name="tsd_h", x=1000, y=200, size=40,shape=1,icon="tsd", unlock={"tsd_u"}},
{name="tsd_u", x=1200, y=200, size=40,shape=1,icon="tsd"},
{name='tsd_e', x=800, y=200, size=40,shape=1,icon="tsd", unlock={'tsd_h'}},
{name='tsd_h', x=1000, y=200, size=40,shape=1,icon="tsd", unlock={'tsd_u'}},
{name='tsd_u', x=1200, y=200, size=40,shape=1,icon="tsd"},
{name="backfire_n", x=800, y=350, size=40,shape=1,icon="backfire",unlock={"backfire_h"}},
{name="backfire_h", x=950, y=350, size=40,shape=1,icon="backfire",unlock={"backfire_l"}},
{name="backfire_l", x=1100, y=350, size=40,shape=3,icon="backfire",unlock={"backfire_u"}},
{name="backfire_u", x=1250, y=350, size=35,shape=2,icon="backfire"},
{name='backfire_n', x=800, y=350, size=40,shape=1,icon="backfire",unlock={'backfire_h'}},
{name='backfire_h', x=950, y=350, size=40,shape=1,icon="backfire",unlock={'backfire_l'}},
{name='backfire_l', x=1100, y=350, size=40,shape=3,icon="backfire",unlock={'backfire_u'}},
{name='backfire_u', x=1250, y=350, size=35,shape=2,icon="backfire"},
{name="zen", x=-800, y=-600, size=40,shape=1,icon="zen", unlock={"ultra","infinite","infinite_dig"}},
{name="ultra", x=-1000,y=-400, size=40,shape=1,icon="ultra"},
{name="infinite", x=-800, y=-400, size=40,shape=1,icon="infinite"},
{name="infinite_dig", x=-1000,y=-600, size=40,shape=1,icon="dig"},
{name='zen', x=-800, y=-600, size=40,shape=1,icon="zen", unlock={'ultra','infinite','infinite_dig'}},
{name='ultra', x=-1000,y=-400, size=40,shape=1,icon="ultra"},
{name='infinite', x=-800, y=-400, size=40,shape=1,icon='infinite'},
{name='infinite_dig', x=-1000,y=-600, size=40,shape=1,icon="dig"},
{name="sprintFix"},
{name="sprintLock"},
{name="marathon_bfmax"},
{name='sprintFix'},
{name='sprintLock'},
{name='marathon_bfmax'},
{name="custom_puzzle"},
{name="custom_clear"},
{name='custom_puzzle'},
{name='custom_clear'},
{name="netBattle"},
}

View File

@@ -26,16 +26,16 @@ return{
D.wave=D.wave+1
if D.wave%10==0 then
if D.wave==20 then
P:showTextF(text.great,0,-140,100,"appear",.6)
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
elseif D.wave==50 then
P:showTextF(text.maxspeed,0,-140,100,"appear",.6)
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end,
bg="rainbow2",bgm="shining terminal",
bg='rainbow2',bgm='shining terminal',
},
pauseLimit=true,
load=function()

View File

@@ -30,19 +30,19 @@ return{
D.wave=D.wave+1
if D.wave%10==0 then
if D.wave==10 then
P:showTextF(text.great,0,-140,100,"appear",.6)
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=4
elseif D.wave==20 then
P:showTextF(text.awesome,0,-140,100,"appear",.6)
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=5
elseif D.wave==30 then
P:showTextF(text.maxspeed,0,-140,100,"appear",.6)
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end,
bg="rainbow2",bgm="shining terminal",
bg='rainbow2',bgm='shining terminal',
},
pauseLimit=true,
load=function()

View File

@@ -8,10 +8,10 @@ return{
P:receive(nil,P.lastPiece.atk,60,generateLine(P:RND(10)))
end
if P.stat.atk>=100 then
P:win("finish")
P:win('finish')
end
end,
bg="tunnel",bgm="echo",
bg='tunnel',bgm='echo',
},
pauseLimit=true,
load=function()

View File

@@ -8,10 +8,10 @@ return{
P:receive(nil,P.lastPiece.atk,30,generateLine(P:RND(10)))
end
if P.stat.atk>=100 then
P:win("finish")
P:win('finish')
end
end,
bg="blackhole",bgm="echo",
bg='blackhole',bgm='echo',
},
pauseLimit=true,
load=function()

View File

@@ -7,10 +7,10 @@ return{
P:receive(nil,P.lastPiece.atk,120,generateLine(P:RND(10)))
end
if P.stat.atk>=100 then
P:win("finish")
P:win('finish')
end
end,
bg="tunnel",bgm="echo",
bg='tunnel',bgm='echo',
},
pauseLimit=true,
load=function()

View File

@@ -8,10 +8,10 @@ return{
P:receive(nil,P.lastPiece.atk,0,generateLine(P:RND(10)))
end
if P.stat.atk>=100 then
P:win("finish")
P:win('finish')
end
end,
bg="blackhole",bgm="echo",
bg='blackhole',bgm='echo',
},
pauseLimit=true,
load=function()

View File

@@ -4,7 +4,7 @@ return{
drop=1e99,lock=1e99,
holdCount=0,
dropPiece=function(P)P:lose()end,
bg="bg1",bgm="new era",
bg='bg1',bgm='new era',
},
pauseLimit=true,
load=function()

View File

@@ -3,10 +3,10 @@ return{
color=COLOR.cyan,
env={
drop=30,lock=45,
visible="easy",
dropPiece=function(P)if P.stat.row>=200 then P:win("finish")end end,
visible='easy',
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=10,
bg="glow",bgm="push",
bg='glow',bgm='push',
},
pauseLimit=true,
load=function()

View File

@@ -6,11 +6,11 @@ return{
drop=15,lock=45,
fall=10,
dropFX=0,lockFX=0,
visible="none",
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=200 then P:win("finish")end end,
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=15,
bg="rgb",bgm="push",
bg='rgb',bgm='push',
},
pauseLimit=true,
load=function()

View File

@@ -7,11 +7,11 @@ return{
fall=5,
ghost=0,
dropFX=0,lockFX=0,
visible="none",
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=200 then P:win("finish")end end,
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
freshLimit=15,
bg="rgb",bgm="push",
bg='rgb',bgm='push',
},
pauseLimit=true,
load=function()

View File

@@ -5,9 +5,9 @@ return{
env={
drop=15,lock=45,
freshLimit=10,
visible="fast",
dropPiece=function(P)if P.stat.row>=200 then P:win("finish")end end,
bg="glow",bgm="push",
visible='fast',
dropPiece=function(P)if P.stat.row>=200 then P:win('finish')end end,
bg='glow',bgm='push',
},
pauseLimit=true,
load=function()

View File

@@ -6,11 +6,11 @@ return{
drop=30,lock=60,
block=false,center=0,ghost=0,
dropFX=0,lockFX=0,
visible="none",
visible='none',
score=false,
dropPiece=function(P)if P.stat.row>=100 then P:win("finish")end end,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
bg="rgb",bgm="far",
bg='rgb',bgm='far',
},
pauseLimit=true,
load=function()

View File

@@ -7,10 +7,10 @@ return{
nextCount=1,
block=false,center=0,ghost=0,
dropFX=0,lockFX=0,
visible="none",
dropPiece=function(P)if P.stat.row>=40 then P:win("finish")end end,
visible='none',
dropPiece=function(P)if P.stat.row>=40 then P:win('finish')end end,
freshLimit=15,
bg="none",bgm="far",
bg='none',bgm='far',
},
pauseLimit=true,
load=function()
@@ -23,19 +23,19 @@ return{
if not GAME.result then
if GAME.replaying then
gc.setColor(.3,.3,.3,.7)
gc.push("transform")
gc.push('transform')
gc.origin()
gc.rectangle("fill",0,0,SCR.w,SCR.h)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.pop()
else
gc.clear(.26,.26,.26)
--Frame
gc.setColor(.5,.5,.5)
gc.push("transform")
gc.push('transform')
gc.translate(150,0)
gc.rectangle("line",-1,-11,302,612)--Boarder
gc.rectangle("line",301,-3,15,604)--AtkBuffer boarder
gc.rectangle("line",-16,-3,15,604)--B2b bar boarder
gc.rectangle('line',-1,-11,302,612)--Boarder
gc.rectangle('line',301,-3,15,604)--AtkBuffer boarder
gc.rectangle('line',-16,-3,15,604)--B2b bar boarder
gc.pop()
end
end

View File

@@ -13,7 +13,7 @@ local function check_c4w(P)
P.modeData.maxCombo=P.combo
end
if P.stat.row>=100 then
P:win("finish")
P:win('finish')
end
end
end
@@ -25,7 +25,7 @@ return{
task=function(P)P.modeData.maxCombo=0 end,
dropPiece=check_c4w,
freshLimit=15,ospin=false,
bg="rgb",bgm="oxygen",
bg='rgb',bgm='oxygen',
},
pauseLimit=true,
load=function()

View File

@@ -11,7 +11,7 @@ local function check_c4w(P)
P.modeData.maxCombo=P.combo
end
if P.stat.row>=100 then
P:win("finish")
P:win('finish')
end
end
end
@@ -23,7 +23,7 @@ return{
task=function(P)P.modeData.maxCombo=0 end,
dropPiece=check_c4w,
freshLimit=15,ospin=false,
bg="rgb",bgm="oxygen",
bg='rgb',bgm='oxygen',
},
pauseLimit=true,
load=function()

View File

@@ -10,8 +10,8 @@ return{
center=0,ghost=0,
drop=3,lock=3,wait=10,fall=25,
nextCount=1,holdCount=false,
sequence="rnd",
RS="Classic",
sequence='rnd',
RS='Classic',
freshLimit=0,
face={0,0,2,2,2,0,0},
task=function(P)P.modeData.target=10 end,
@@ -21,16 +21,16 @@ return{
D.target=D.target+10
if D.target==110 then
P.gameEnv.drop,P.gameEnv.lock=2,2
SFX.play("blip_1")
SFX.play('blip_1')
elseif D.target==200 then
P.gameEnv.drop,P.gameEnv.lock=1,1
SFX.play("blip_1")
SFX.play('blip_1')
else
SFX.play("reach")
SFX.play('reach')
end
end
end,
bg="rgb",bgm="magicblock",
bg='rgb',bgm='magicblock',
},
slowMark=true,
load=function()
@@ -44,7 +44,7 @@ return{
setFont(45)
mStr(P.stat.row,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
gc.rectangle('fill',25,375,90,4)
end,
score=function(P)return{P.stat.score,P.stat.row}end,
scoreDisp=function(D)return D[1].." "..D[2].." Lines"end,

View File

@@ -38,9 +38,9 @@ local function checkClear(P)
end
setField(P,D.finished+1)
SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.6,.8,.6)
SFX.play("blip_1")
SFX.play('blip_1')
else
P:win("finish")
P:win('finish')
end
end
end
@@ -63,12 +63,12 @@ return{
PLY.newPlayer(1)
local AItype=ENV.opponent:sub(1,2)
local AIlevel=tonumber(ENV.opponent:sub(-1))
if AItype=="9S"then
if AItype=='9S'then
ENV.target=nil
PLY.newAIPlayer(2,AIBUILDER("9S",2*AIlevel))
elseif AItype=="CC"then
PLY.newAIPlayer(2,AIBUILDER('9S',2*AIlevel))
elseif AItype=='CC'then
ENV.target=nil
PLY.newAIPlayer(2,AIBUILDER("CC",2*AIlevel-1,math.floor(AIlevel*.5+1),true,20000+5000*AIlevel))
PLY.newAIPlayer(2,AIBUILDER('CC',2*AIlevel-1,math.floor(AIlevel*.5+1),true,20000+5000*AIlevel))
end
for _,P in next,PLY_ALIVE do

View File

@@ -23,11 +23,11 @@ local function puzzleCheck(P)
P.field[_],P.visTime[_]=nil
end
SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.3,1,.3)
SFX.play("reach")
SFX.play('reach')
D.showMark=0
else
D.showMark=1
P:win("finish")
P:win('finish')
end
end
@@ -43,17 +43,17 @@ return{
local ENV=GAME.modeEnv
local AItype=ENV.opponent:sub(1,2)
local AIlevel=tonumber(ENV.opponent:sub(-1))
if AItype=="9S"then
PLY.newAIPlayer(2,AIBUILDER("9S",2*AIlevel))
elseif AItype=="CC"then
PLY.newAIPlayer(2,AIBUILDER("CC",2*AIlevel-1,math.floor(AIlevel*.5+1),true,20000+5000*AIlevel))
if AItype=='9S'then
PLY.newAIPlayer(2,AIBUILDER('9S',2*AIlevel))
elseif AItype=='CC'then
PLY.newAIPlayer(2,AIBUILDER('CC',2*AIlevel-1,math.floor(AIlevel*.5+1),true,20000+5000*AIlevel))
end
end,
mesDisp=function(P)
setFont(55)
mStr(P.stat.row,69,225)
mText(drawableText.line,69,290)
gc.push("transform")
gc.push('transform')
PLY.draw.applyFieldOffset(P)
if P.modeData.showMark==0 then
local mark=TEXTURE.puzzleMark

View File

@@ -24,15 +24,15 @@ return{
if D.wave<=75 then
D.rpm=math.floor(144e3/t)*.1
if D.wave==25 then
P:showTextF(text.great,0,-140,100,"appear",.6)
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=4,4
elseif D.wave==50 then
P:showTextF(text.awesome,0,-140,100,"appear",.6)
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=4
P.dropDelay,P.gameEnv.drop=3,3
elseif D.wave==75 then
P:showTextF(text.maxspeed,0,-140,100,"appear",.6)
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
P.dropDelay,P.gameEnv.drop=2,2
end
end
@@ -40,7 +40,7 @@ return{
end
end
end,
bg="rainbow2",bgm="storm",
bg='rainbow2',bgm='storm',
},
pauseLimit=true,
load=function()

View File

@@ -24,23 +24,23 @@ return{
if D.wave<=90 then
D.rpm=math.floor(108e3/t)*.1
if D.wave==25 then
P:showTextF(text.great,0,-140,100,"appear",.6)
P:showTextF(text.great,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=2
P.dropDelay,P.gameEnv.drop=20,20
elseif D.wave==50 then
P:showTextF(text.awesome,0,-140,100,"appear",.6)
P:showTextF(text.awesome,0,-140,100,'appear',.6)
P.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=10,10
elseif D.wave==90 then
P.dropDelay,P.gameEnv.drop=5,5
P:showTextF(text.maxspeed,0,-140,100,"appear",.6)
P:showTextF(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end
end,
bg="rainbow2",bgm="storm",
bg='rainbow2',bgm='storm',
},
pauseLimit=true,
load=function()

View File

@@ -3,7 +3,7 @@ local function check_rise(P)
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==100 then
P:win("finish")
P:win('finish')
end
end
@@ -12,7 +12,7 @@ return{
env={
pushSpeed=6,
dropPiece=check_rise,
bg="bg2",bgm="way",
bg='bg2',bgm='way',
},
load=function()
PLY.newPlayer(1)

View File

@@ -1,6 +1,6 @@
local function check_rise(P)
if P.stat.dig==10 then
P:win("finish")
P:win('finish')
end
end
@@ -9,7 +9,7 @@ return{
env={
pushSpeed=6,
dropPiece=check_rise,
bg="bg1",bgm="way",
bg='bg1',bgm='way',
},
load=function()
PLY.newPlayer(1)

View File

@@ -3,7 +3,7 @@ local function check_rise(P)
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==400 then
P:win("finish")
P:win('finish')
end
end
@@ -12,7 +12,7 @@ return{
env={
pushSpeed=6,
dropPiece=check_rise,
bg="bg2",bgm="way",
bg='bg2',bgm='way',
},
load=function()
PLY.newPlayer(1)

View File

@@ -3,7 +3,7 @@ local function check_rise(P)
P:garbageRise(21,1,P:getHolePos())
end
if P.stat.dig==40 then
P:win("finish")
P:win('finish')
end
end
@@ -12,7 +12,7 @@ return{
env={
pushSpeed=6,
dropPiece=check_rise,
bg="bg1",bgm="way",
bg='bg1',bgm='way',
},
load=function()
PLY.newPlayer(1)

View File

@@ -19,7 +19,7 @@ return{
end
end
end,
bg="bg2",bgm="down",
bg='bg2',bgm='down',
},
pauseLimit=true,
load=function()

View File

@@ -18,7 +18,7 @@ return{
end
end
end,
bg="bg2",bgm="down",
bg='bg2',bgm='down',
},
pauseLimit=true,
load=function()

View File

@@ -75,11 +75,11 @@ return{
end
end
end,
dropPiece=function(P)if P.stat.row>=100 then P:win("finish")end end,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
nextCount=1,holdCount=0,
ospin=false,
freshLimit=15,
bg="blockfall",bgm="reason",
bg='blockfall',bgm='reason',
},
pauseLimit=true,
load=function()

View File

@@ -3,13 +3,13 @@ return{
color=COLOR.green,
env={
drop=20,lock=60,
sequence="bag",
sequence='bag',
seqData={1,1,2,2,3,3,4,4,5,5,6,6},
dropPiece=function(P)if P.stat.row>=100 then P:win("finish")end end,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
nextCount=3,
ospin=false,
freshLimit=15,
bg="blockfall",bgm="reason",
bg='blockfall',bgm='reason',
},
pauseLimit=true,
load=function()

View File

@@ -3,7 +3,7 @@ return{
env={
drop=1e99,lock=1e99,
infHold=true,
bg="blockfall",bgm="infinite",
bg='blockfall',bgm='infinite',
},
load=function()
PLY.newPlayer(1)

View File

@@ -3,9 +3,9 @@ local function check_rise(P)
if #P.clearedRow==0 then
if L>0 then
if L<3 then
P:showTextF(text.almost,0,-120,80,"beat",.8)
P:showTextF(text.almost,0,-120,80,'beat',.8)
elseif L<5 then
P:showTextF(text.great,0,-120,80,"fly",.8)
P:showTextF(text.great,0,-120,80,'fly',.8)
end
end
for _=1,8-L do
@@ -13,8 +13,8 @@ local function check_rise(P)
end
else
if L==0 then
P:showTextF(text.awesome,0,-120,80,"beat",.6)
SFX.play("clear")
P:showTextF(text.awesome,0,-120,80,'beat',.6)
SFX.play('clear')
BG.send(26)
for _=1,8 do
P:garbageRise(13,1,generateLine(P:RND(10)))
@@ -32,7 +32,7 @@ return{
infHold=true,
dropPiece=check_rise,
pushSpeed=1.2,
bg="wing",bgm="dream",
bg='wing',bgm='dream',
},
load=function()
PLY.newPlayer(1)

View File

@@ -9,26 +9,26 @@ return{
task=function(P)P.modeData.target=10 end,
dropPiece=function(P)
if P.combo>1 or P.b2b>0 or P.lastPiece.row>1 then
if P.combo>1 then P:showText("2x",0,-220,40,"flicker",.3)end
if P.b2b>0 then P:showText("spin",0,-160,40,"flicker",.3)end
if P.lastPiece.row>1 then P:showText("1+",0,-100,40,"flicker",.3)end
if P.combo>1 then P:showText("2x",0,-220,40,'flicker',.3)end
if P.b2b>0 then P:showText("spin",0,-160,40,'flicker',.3)end
if P.lastPiece.row>1 then P:showText("1+",0,-100,40,'flicker',.3)end
P:lose()
return
end
local T=P.modeData.target
if P.stat.row>=T then
if T==200 then
P:win("finish")
P:win('finish')
else
T=T+10
P.gameEnv.drop=dropSpeed[T/10]
P.modeData.target=T
SFX.play("reach")
SFX.play('reach')
end
end
end,
mindas=7,minarr=1,minsdarr=1,
bg="bg2",bgm="sugar fairy",
bg='bg2',bgm='sugar fairy',
},
pauseLimit=true,
slowMark=true,
@@ -39,7 +39,7 @@ return{
setFont(45)
mStr(P.stat.row,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
gc.rectangle('fill',25,375,90,4)
end,
getRank=function(P)
local L=P.stat.row

View File

@@ -12,17 +12,17 @@ return{
if P.modeData.target==50 then
P.gameEnv.drop=.25
P.modeData.target=100
SFX.play("reach")
SFX.play('reach')
elseif P.modeData.target==100 then
P:set20G(true)
P.modeData.target=200
SFX.play("reach")
SFX.play('reach')
else
P:win("finish")
P:win('finish')
end
end
end,
bg="cubes",bgm="push",
bg='cubes',bgm='push',
},
pauseLimit=true,
slowMark=true,
@@ -33,7 +33,7 @@ return{
setFont(45)
mStr(P.stat.row,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
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 "..STRING.time(D[2])end,

View File

@@ -10,16 +10,16 @@ return{
dropPiece=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win("finish")
P:win('finish')
else
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play("reach")
SFX.play('reach')
end
end
end,
mindas=7,minarr=1,minsdarr=1,
bg="bg2",bgm="push",
bg='bg2',bgm='push',
},
pauseLimit=true,
slowMark=true,
@@ -30,7 +30,7 @@ return{
setFont(45)
mStr(P.stat.row,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
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 "..STRING.time(D[2])end,

View File

@@ -14,11 +14,11 @@ local function score(P)
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play("blip_1")
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
BG.set(s==1 and"rainbow"or s==2 and"rainbow2"or s==3 and"lightning"or s==4 and"lightning2"or"lightning")
BG.set(s==1 and'rainbow'or s==2 and'rainbow2'or s==3 and'lightning'or s==4 and'lightning2'or'lightning')
E.lock=death_lock[s]
E.wait=death_wait[s]
E.fall=death_fall[s]
@@ -29,12 +29,12 @@ local function score(P)
if s==5 then
D.pt=500
P:win("finish")
P:win('finish')
else
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,"fly")
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
end
SFX.play("reach")
SFX.play('reach')
end
end
@@ -53,7 +53,7 @@ return{
P.modeData.target=100
end,
freshLimit=15,
bg="bg2",bgm="secret7th",
bg='bg2',bgm='secret7th',
},
slowMark=true,
load=function()
@@ -63,7 +63,7 @@ return{
setFont(45)
mStr(P.modeData.pt,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
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 "..STRING.time(D[2])end,

View File

@@ -14,11 +14,11 @@ local function score(P)
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play("blip_1")
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
BG.set(s==1 and"bg1"or s==2 and"bg2"or s==3 and"rainbow"or "rainbow2")
BG.set(s==1 and'bg1'or s==2 and'bg2'or s==3 and'rainbow'or 'rainbow2')
E.lock=rush_lock[s]
E.wait=rush_wait[s]
E.fall=rush_fall[s]
@@ -31,12 +31,12 @@ local function score(P)
if s==5 then
D.pt=500
P:win("finish")
P:win('finish')
else
D.target=D.target+100
P:showTextF(text.stage:gsub("$1",s),0,-120,80,"fly")
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
end
SFX.play("reach")
SFX.play('reach')
end
end
@@ -55,7 +55,7 @@ return{
P.modeData.target=100
end,
freshLimit=15,
bg="bg1",bgm="secret8th",
bg='bg1',bgm='secret8th',
},
slowMark=true,
load=function()
@@ -65,7 +65,7 @@ return{
setFont(45)
mStr(P.modeData.pt,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
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 "..STRING.time(D[2])end,

View File

@@ -19,7 +19,7 @@ return{
drop=0,lock=15,
wait=15,fall=6,
nextCount=3,
visible="fast",
visible='fast',
freshLimit=15,
dropPiece=score,
task=function(P)
@@ -30,12 +30,12 @@ return{
if P.stat.frame>=3600 then
P.modeData.rankScore=math.min(P.modeData.rankScore+16,140)
P.modeData.rankName=sectionName[math.floor(P.modeData.rankScore*.1)+1]
P:win("finish")
P:win('finish')
return
end
end
end,
bg="blockspace",bgm="far",
bg='blockspace',bgm='far',
},
slowMark=true,
load=function()

View File

@@ -11,19 +11,19 @@ local function score(P)
D.pt=D.pt+s
if D.pt%100==99 then
SFX.play("blip_1")
SFX.play('blip_1')
elseif D.pt>=D.target then--Level up!
s=D.target/100
local E=P.gameEnv
if s<4 then
P:showTextF(text.stage:gsub("$1",s),0,-120,80,"fly")
P:showTextF(text.stage:gsub("$1",s),0,-120,80,'fly')
--First 300
if s~=1 then E.lock=E.lock-1 end
if s~=2 then E.wait=E.wait-1 end
if s~=3 then E.fall=E.fall-1 end
D.target=D.target+100
elseif s<10 then
P:showTextF(text.stage:gsub("$1",s),0,-120,60,"fly",1.26)
P:showTextF(text.stage:gsub("$1",s),0,-120,60,'fly',1.26)
if s==4 or s==7 then E.das=E.das-1 end
s=s%3
if s==0 then E.lock=E.lock-1
@@ -33,9 +33,9 @@ local function score(P)
D.target=D.target+100
else
D.pt=1000
P:win("finish")
P:win('finish')
end
SFX.play("reach")
SFX.play('reach')
end
end
@@ -53,7 +53,7 @@ return{
end,
freshLimit=15,
easyFresh=false,bone=true,
bg="lightning",bgm="distortion",
bg='lightning',bgm='distortion',
},
slowMark=true,
load=function()
@@ -63,7 +63,7 @@ return{
setFont(45)
mStr(P.modeData.pt,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
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 "..STRING.time(D[2])end,

View File

@@ -8,7 +8,7 @@ return{
drop=0,lock=15,
wait=10,fall=10,
nextCount=2,
sequence="his4",
sequence='his4',
task=function(P)P.modeData.target=12 end,
dropPiece=function(P)
local p=P.modeData.pt+P.lastPiece.row
@@ -29,7 +29,7 @@ return{
P:setNext(4)
P.modeData.target=26
SFX.play("reach")
SFX.play('reach')
elseif T==26 then--Stage 3: dig to bottom
if not P.holdQueue[1]then P.life=P.life+1 end--1 up if ban hold
P.waiting=45
@@ -71,7 +71,7 @@ return{
P:setNext(5)
P.modeData.target=42
SFX.play("reach")
SFX.play('reach')
elseif T==42 then--Stage 4: survive in high speed
if P.garbageBeneath==0 then
P.waiting=30
@@ -93,7 +93,7 @@ return{
ENV.easyFresh=false
P.modeData.target=126
SFX.play("reach")
SFX.play('reach')
elseif T==126 then--Stage 6: speed up
P.life=P.life+1
@@ -111,7 +111,7 @@ return{
P:setInvisible(180)
P.modeData.target=226
SFX.play("reach")
SFX.play('reach')
elseif T==226 then--Stage 8: final invisible
P.life=P.life+1
@@ -119,7 +119,7 @@ return{
P:setInvisible(90)
P.modeData.target=259
SFX.play("reach")
SFX.play('reach')
elseif T==259 then--Stage 9: ending
P.life=P.life+1
for i=1,7 do ENV.skin[i]=math.random(16)end
@@ -132,7 +132,7 @@ return{
P.modeData.target=260
p=260
SFX.play("blip_2")
SFX.play('blip_2')
else
p=260
end
@@ -142,7 +142,7 @@ return{
mission={4,4,4,64},
missionKill=true,
freshLimit=12,
bg="none",bgm="super7th",
bg='none',bgm='super7th',
},
slowMark=true,
load=function()
@@ -152,15 +152,15 @@ return{
setFont(45)
mStr(P.modeData.pt,69,320)
mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4)
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,
score=function(P)return{P.result=='win'and 260 or P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
local p=P.modeData.pt
return
P.result=="WIN"and 5 or
P.result=='win'and 5 or
p>=226 and 4 or
p>=162 and 3 or
p>=62 and 2 or

View File

@@ -3,10 +3,10 @@ return{
env={
drop=60,lock=120,
fall=10,
dropPiece=function(P)if P.stat.row>=100 then P:win("finish")end end,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
ospin=false,
bg="rgb",bgm="truth",
bg='rgb',bgm='truth',
},
pauseLimit=true,
load=function()

View File

@@ -3,10 +3,10 @@ return{
env={
drop=20,lock=60,
fall=20,
dropPiece=function(P)if P.stat.row>=100 then P:win("finish")end end,
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
freshLimit=15,
ospin=false,
bg="rgb",bgm="truth",
bg='rgb',bgm='truth',
},
pauseLimit=true,
load=function()

View File

@@ -3,8 +3,8 @@ return{
env={
infHold=true,
drop=150,lock=1e99,
dropPiece=function(P)if P.stat.row>=100 then P:win("finish")end end,
bg="rgb",bgm="truth",
dropPiece=function(P)if P.stat.row>=100 then P:win('finish')end end,
bg='rgb',bgm='truth',
},
pauseLimit=true,
load=function()

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