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

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 printf=love.graphics.printf
local draw=love.graphics.draw local draw=love.graphics.draw
local aDraw={} 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.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.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 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 for i=1,count do
local file="media/BGM/"..list[i]..".ogg" local file="media/BGM/"..list[i]..".ogg"
if love.filesystem.getInfo(file)then 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]]:setLooping(true)
Sources[list[i]]:setVolume(0) Sources[list[i]]:setVolume(0)
else else

View File

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

View File

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

View File

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

View File

@@ -12,7 +12,7 @@ function IMG.init(list)
local function load(skip) local function load(skip)
local loaded=0 local loaded=0
for k,v in next,list do 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) IMG[k]=love.graphics.newImage("media/image/"..v)
else else
for i=1,#v do for i=1,#v do

View File

@@ -66,12 +66,12 @@ local devMode
local infoCanvas=gc.newCanvas(108,27) local infoCanvas=gc.newCanvas(108,27)
local function updatePowerInfo() local function updatePowerInfo()
local state,pow=love.system.getPowerInfo() 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) gc.clear(0,0,0,.25)
if state~="unknown"then if state~='unknown'then
gc.setLineWidth(4) gc.setLineWidth(4)
local charging=state=="charging" local charging=state=='charging'
if state=="nobattery"then if state=='nobattery'then
gc_setColor(1,1,1) gc_setColor(1,1,1)
gc.setLineWidth(2) gc.setLineWidth(2)
gc.line(74,SCR.safeX+5,100,22) gc.line(74,SCR.safeX+5,100,22)
@@ -82,7 +82,7 @@ local function updatePowerInfo()
elseif pow<26 then gc_setColor(1,0,0) elseif pow<26 then gc_setColor(1,0,0)
else gc_setColor(.5,0,1) else gc_setColor(.5,0,1)
end end
gc_rectangle("fill",76,6,pow*.22,14) gc_rectangle('fill',76,6,pow*.22,14)
if pow<100 then if pow<100 then
setFont(15) setFont(15)
gc_setColor(0,0,0) gc_setColor(0,0,0)
@@ -281,12 +281,12 @@ function love.joystickremoved(JS)
end end
end end
local keyMirror={ local keyMirror={
dpup="up", dpup='up',
dpdown="down", dpdown='down',
dpleft="left", dpleft='left',
dpright="right", dpright='right',
start="return", start='return',
back="escape", back='escape',
} }
function love.gamepadpressed(_,i) function love.gamepadpressed(_,i)
mouseShow=false mouseShow=false
@@ -330,7 +330,7 @@ function love.lowmemory()
if TIME()-lastGCtime>6.26 then if TIME()-lastGCtime>6.26 then
collectgarbage() collectgarbage()
lastGCtime=TIME() lastGCtime=TIME()
LOG.print("[auto GC] low MEM 设备内存过低","warn") LOG.print("[auto GC] low MEM 设备内存过低",'warn')
end end
end end
function love.resize(w,h) function love.resize(w,h)
@@ -343,7 +343,7 @@ end
function love.focus(f) function love.focus(f)
if f then if f then
love.timer.step() love.timer.step()
elseif SCN.cur=="game"and SETTING.autoPause then elseif SCN.cur=='game'and SETTING.autoPause then
pauseGame() pauseGame()
end end
end end
@@ -377,7 +377,7 @@ function love.errorhandler(msg)
gc.reset() gc.reset()
if LOADED and #ERRDATA<3 then if LOADED and #ERRDATA<3 then
BG.set("none") BG.set('none')
local scn=SCN and SCN.cur or"NULL" local scn=SCN and SCN.cur or"NULL"
ERRDATA[#ERRDATA+1]={mes=err,scene=scn} ERRDATA[#ERRDATA+1]={mes=err,scene=scn}
@@ -398,7 +398,7 @@ function love.errorhandler(msg)
local res,threadErr local res,threadErr
repeat repeat
res,threadErr=resume(loopThread) res,threadErr=resume(loopThread)
until status(loopThread)=="dead" until status(loopThread)=='dead'
if not res then if not res then
love.errorhandler(threadErr) love.errorhandler(threadErr)
return return
@@ -413,15 +413,15 @@ function love.errorhandler(msg)
while true do while true do
love.event.pump() love.event.pump()
for E,a,b in love.event.poll()do for E,a,b in love.event.poll()do
if E=="quit"or a=="escape"then if E=='quit'or a=='escape'then
destroyPlayers() destroyPlayers()
return true return true
elseif E=="resize"then elseif E=='resize'then
SCR.resize(a,b) SCR.resize(a,b)
end end
end end
gc.clear(.3,.5,.9) gc.clear(.3,.5,.9)
gc_push("transform") gc_push('transform')
gc.replaceTransform(xOy) gc.replaceTransform(xOy)
setFont(100)gc_print(":(",100,0,0,1.2) setFont(100)gc_print(":(",100,0,0,1.2)
setFont(40)gc.printf(errorMsg,100,160,SCR.w0-100) setFont(40)gc.printf(errorMsg,100,160,SCR.w0-100)
@@ -439,7 +439,7 @@ function love.errorhandler(msg)
end end
end end
local WS=WS local WS=WS
local WSnames={"app","user","play","stream","chat"} local WSnames={'app','user','play','stream','chat'}
local WScolor={ local WScolor={
{1,.5,.5,.7}, {1,.5,.5,.7},
{1,.8,.3,.7}, {1,.8,.3,.7},
@@ -479,8 +479,8 @@ function love.run()
--Scene Launch --Scene Launch
while #SCN.stack>0 do SCN.pop()end while #SCN.stack>0 do SCN.pop()end
SCN.push("quit","slowFade") SCN.push('quit','slowFade')
SCN.init(#ERRDATA==0 and"load"or"error") SCN.init(#ERRDATA==0 and'load'or'error')
return function() return function()
local _ local _
@@ -494,7 +494,7 @@ function love.run()
for N,a,b,c,d,e in POLL()do for N,a,b,c,d,e in POLL()do
if love[N]then if love[N]then
love[N](a,b,c,d,e) love[N](a,b,c,d,e)
elseif N=="quit"then elseif N=='quit'then
destroyPlayers() destroyPlayers()
return a or true return a or true
end end
@@ -522,7 +522,7 @@ function love.run()
--Draw background --Draw background
BG.draw() BG.draw()
gc_push("transform") gc_push('transform')
gc.replaceTransform(xOy) gc.replaceTransform(xOy)
--Draw scene contents --Draw scene contents
@@ -539,7 +539,7 @@ function love.run()
_=SCS[R][0] _=SCS[R][0]
gc_draw(TEXTURE.miniBlock[R],mx,my,t%3.14159265359*4,16,16,_[2]+.5,#BLOCKS[R][0]-_[1]-.5) 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_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 end
SYSFX.draw() SYSFX.draw()
TEXT.draw() TEXT.draw()
@@ -577,31 +577,31 @@ function love.run()
ins(frameTimeList,1,dt)rem(frameTimeList,126) ins(frameTimeList,1,dt)rem(frameTimeList,126)
gc_setColor(1,1,1,.3) gc_setColor(1,1,1,.3)
for i=1,#frameTimeList do 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 end
--Websocket status --Websocket status
gc_push("transform") gc_push('transform')
gc.translate(SCR.w,SCR.h-100) gc.translate(SCR.w,SCR.h-100)
gc.scale(SCR.k) gc.scale(SCR.k)
for i=1,5 do for i=1,5 do
local status=WS.status(WSnames[i]) local status=WS.status(WSnames[i])
gc_setColor(WScolor[i]) gc_setColor(WScolor[i])
gc_rectangle("fill",0,20*i,-80,-20) gc_rectangle('fill',0,20*i,-80,-20)
if status=="dead"then if status=='dead'then
gc_setColor(1,1,1) gc_setColor(1,1,1)
gc_draw(TEXTURE.ws_dead,-20,20*i-20) 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_setColor(1,1,1,.5+.3*sin(t*6.26))
gc_draw(TEXTURE.ws_connecting,-20,20*i-20) gc_draw(TEXTURE.ws_connecting,-20,20*i-20)
elseif status=="running"then elseif status=='running'then
gc_setColor(1,1,1) gc_setColor(1,1,1)
gc_draw(TEXTURE.ws_running,-20,20*i-20) gc_draw(TEXTURE.ws_running,-20,20*i-20)
end end
local t1,t2,t3=WS.getTimers(WSnames[i]) local t1,t2,t3=WS.getTimers(WSnames[i])
gc_setColor(1,1,1,t1)gc_rectangle("fill",-60,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(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,0,0,t3)gc_rectangle('fill',-20,20*i,-20,-20)
end end
gc_pop() 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 -- Treat as array -- check keys are valid and it is not sparse
local n = 0 local n = 0
for k in pairs(val) do for k in pairs(val) do
if type(k) ~= "number" then if type(k) ~= 'number' then
error("invalid table: mixed or invalid key types") error("invalid table: mixed or invalid key types")
end end
n = n + 1 n = n + 1
@@ -77,7 +77,7 @@ local function encode_table(val, stack)
else else
-- Treat as an object -- Treat as an object
for k, v in pairs(val) do 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") error("invalid table: mixed or invalid key types")
end end
ins(res, encode(k, stack) .. ":" .. encode(v, stack)) ins(res, encode(k, stack) .. ":" .. encode(v, stack))
@@ -100,11 +100,11 @@ local function encode_number(val)
end end
local type_func_map = { local type_func_map = {
["nil"] = encode_nil, ['nil'] = encode_nil,
["table"] = encode_table, ['table'] = encode_table,
["string"] = encode_string, ['string'] = encode_string,
["number"] = encode_number, ['number'] = encode_number,
["boolean"] = tostring ['boolean'] = tostring
} }
encode = function(val, stack) encode = function(val, stack)
@@ -119,7 +119,7 @@ function json.encode(val)
if a then if a then
return b return b
elseif LOG then elseif LOG then
LOG.print(text.jsonError..": "..(b or"uknErr"),"warn") LOG.print(text.jsonError..": "..(b or"uknErr"),'warn')
end end
end end
@@ -336,7 +336,7 @@ function parse(str, idx)
end end
local function decode(str) local function decode(str)
if type(str) ~= "string" then if type(str) ~= 'string' then
error("expected argument of type string, got " .. type(str)) error("expected argument of type string, got " .. type(str))
end end
local res, idx = parse(str, next_char(str, 1, space_chars, true)) local res, idx = parse(str, next_char(str, 1, space_chars, true))
@@ -349,7 +349,7 @@ function json.decode(str)
if a then if a then
return b return b
elseif LOG then elseif LOG then
LOG.print(text.jsonError..": "..(b or"uknErr"),"warn") LOG.print(text.jsonError..": "..(b or"uknErr"),'warn')
end end
end end
return json 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()! function LANG.init(langList,publicText)--Attention, calling this will destory all initializing methods, create a LANG.set()!
local function langFallback(T0,T) local function langFallback(T0,T)
for k,v in next,T0 do 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 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 elseif not T[k]then
T[k]=v T[k]=v
end end
@@ -26,7 +26,7 @@ function LANG.init(langList,publicText)--Attention, calling this will destory al
end end
--Metatable:__call for table:getTip --Metatable:__call for table:getTip
if type(rawget(L,"getTip"))=="table"then if type(rawget(L,"getTip"))=='table'then
setmetatable(L.getTip,tipMeta) setmetatable(L.getTip,tipMeta)
end end

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -75,32 +75,32 @@ function FXdraw.tap(S)
local t=S.t local t=S.t
setWidth(2) setWidth(2)
setColor(1,1,1,1-t) 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) 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) setColor(1,1,1,1-t)
for i=1,10 do for i=1,10 do
local p=S.ptc[i] local p=S.ptc[i]
local T=t^.5 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
end end
function FXdraw.ripple(S) function FXdraw.ripple(S)
local t=S.t local t=S.t
setWidth(2) setWidth(2)
setColor(1,1,1,1-t) 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 end
function FXdraw.rectRipple(S) function FXdraw.rectRipple(S)
setWidth(6) setWidth(6)
setColor(1,1,1,1-S.t) setColor(1,1,1,1-S.t)
local r=(10*S.t)^1.2 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 end
function FXdraw.shade(S) function FXdraw.shade(S)
setColor(S.r,S.g,S.b,1-S.t) 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 end
function FXdraw.cell(S) function FXdraw.cell(S)
setColor(1,1,1,1-S.t) setColor(1,1,1,1-S.t)

View File

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

View File

@@ -9,7 +9,7 @@ end
function TASK.update() function TASK.update()
for i=#tasks,1,-1 do for i=#tasks,1,-1 do
local T=tasks[i] local T=tasks[i]
if status(T.thread)=="dead"then if status(T.thread)=='dead'then
rem(tasks,i) rem(tasks,i)
else else
assert(resume(T.thread)) assert(resume(T.thread))
@@ -19,7 +19,7 @@ end
function TASK.new(code,...) function TASK.new(code,...)
local thread=coroutine.create(code) local thread=coroutine.create(code)
resume(thread,...) resume(thread,...)
if status(thread)~="dead"then if status(thread)~='dead'then
tasks[#tasks+1]={ tasks[#tasks+1]={
thread=thread, thread=thread,
code=code, 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) mStr(t.text,t.x+(t.c-.5)^3*300,t.y-t.font*.7)
end end
function textFX.stretch(t) function textFX.stretch(t)
gc_push("transform") gc_push('transform')
gc_translate(t.x,t.y) gc_translate(t.x,t.y)
if t.c<.3 then gc_scale((.3-t.c)*1.6+1,1)end if t.c<.3 then gc_scale((.3-t.c)*1.6+1,1)end
mStr(t.text,0,-t.font*.7) mStr(t.text,0,-t.font*.7)
gc_pop() gc_pop()
end end
function textFX.drive(t) function textFX.drive(t)
gc_push("transform") gc_push('transform')
gc_translate(t.x,t.y) gc_translate(t.x,t.y)
if t.c<.3 then gc_shear((.3-t.c)*2,0)end if t.c<.3 then gc_shear((.3-t.c)*2,0)end
mStr(t.text,0,-t.font*.7) mStr(t.text,0,-t.font*.7)
gc_pop() gc_pop()
end end
function textFX.spin(t) function textFX.spin(t)
gc_push("transform") gc_push('transform')
gc_translate(t.x,t.y) gc_translate(t.x,t.y)
if t.c<.3 then if t.c<.3 then
gc_rotate((.3-t.c)^2*4) 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) mStr(t.text,t.x,t.y-t.font*.7)
end end
function textFX.zoomout(t) function textFX.zoomout(t)
gc_push("transform") gc_push('transform')
local k=t.c^.5*.1+1 local k=t.c^.5*.1+1
gc_translate(t.x,t.y) gc_translate(t.x,t.y)
gc_scale(k,k) gc_scale(k,k)
@@ -57,7 +57,7 @@ function textFX.zoomout(t)
gc_pop() gc_pop()
end end
function textFX.beat(t) function textFX.beat(t)
gc_push("transform") gc_push('transform')
gc_translate(t.x,t.y) gc_translate(t.x,t.y)
if t.c<.3 then if t.c<.3 then
local k=1.3-t.c^2/.3 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 font=int(font/5)*5 or 40, --Font
spd=(spd or 1)/60, --Timing speed(1=last 1 sec) spd=(spd or 1)/60, --Timing speed(1=last 1 sec)
stop=stop, --Stop time(sustained text) 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 end
function TEXT.getText(text,x,y,font,style,spd,stop)--Another version of TEXT.show(), but only return text object, need manual management 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, font=int(font/5)*5 or 40,
spd=(spd or 1)/60, spd=(spd or 1)/60,
stop=stop, stop=stop,
draw=textFX[style or"appear"]or error("unavailable type:"..style), draw=textFX[style or'appear']or error("unavailable type:"..style),
} }
end end
function TEXT.update(list) function TEXT.update(list)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -39,12 +39,12 @@ function back.update()
end end
function back.draw() function back.draw()
gc.clear(.2,.2,.2) gc.clear(.2,.2,.2)
gc.push("transform") gc.push('transform')
gc.setColor(.7,.7,.7) gc.setColor(.7,.7,.7)
gc.origin() gc.origin()
for i=1,#snow do for i=1,#snow do
local P=snow[i] 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 end
gc.pop() gc.pop()
end end

View File

@@ -36,7 +36,7 @@ function back.draw()
gc.translate(-10,-10) gc.translate(-10,-10)
gc.setColor(.8,.8,.8) gc.setColor(.8,.8,.8)
for i=1,1260,5 do 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 end
gc.translate(10,10) gc.translate(10,10)
end end

View File

@@ -34,7 +34,7 @@ function back.draw()
for i=1,#ring do for i=1,#ring do
local r=ring[i]^2/12 local r=ring[i]^2/12
gc.setLineWidth(30-15/(r+.5)) 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
end end
function back.discard() function back.discard()

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,94 +4,94 @@ local function disableKey(P,key)
end end
MODOPT={--Mod options MODOPT={--Mod options
{no=0,id="NX",name="next", {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}, list={0,1,2,3,4,5,6},
func=function(P,O)P.gameEnv.nextCount=O end, func=function(P,O)P.gameEnv.nextCount=O end,
}, },
{no=1,id="HL",name="hold", {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}, list={0,1,2,3,4,5,6},
func=function(P,O)P.gameEnv.holdCount=O end, func=function(P,O)P.gameEnv.holdCount=O end,
unranked=true, unranked=true,
}, },
{no=2,id="FL",name="hideNext", {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}, list={1,2,3,4,5},
func=function(P,O)P.gameEnv.nextStartPos=O +1 end, func=function(P,O)P.gameEnv.nextStartPos=O +1 end,
}, },
{no=3,id="IH",name="infHold", {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, func=function(P)P.gameEnv.infHold=true end,
unranked=true, unranked=true,
}, },
{no=4,id="HB",name="hideBlock", {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, func=function(P)P.gameEnv.block=false end,
}, },
{no=5,id="HG",name="hideGhost", {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, func=function(P)P.gameEnv.ghost=false end,
}, },
{no=6,id="HD",name="hidden", {no=6,id="HD",name="hidden",
key="i",x=920,y=230,color="P", key="i",x=920,y=230,color='P',
list={"easy","slow","medium","fast","none"}, list={'easy','slow','medium','fast','none'},
func=function(P,O)P.gameEnv.visible=O end, func=function(P,O)P.gameEnv.visible=O end,
unranked=true, unranked=true,
}, },
{no=7,id="HB",name="hideBoard", {no=7,id="HB",name="hideBoard",
key="o",x=1040,y=230,color="P", key="o",x=1040,y=230,color='P',
list={"down","up","all"}, list={'down','up','all'},
func=function(P,O)P.gameEnv.hideBoard=O end, func=function(P,O)P.gameEnv.hideBoard=O end,
}, },
{no=8,id="FB",name="flipBoard", {no=8,id="FB",name="flipBoard",
key="p",x=1160,y=230,color="J", key="p",x=1160,y=230,color='J',
list={"U-D","L-R","180"}, list={'U-D','L-R','180'},
func=function(P,O)P.gameEnv.flipBoard=O end, func=function(P,O)P.gameEnv.flipBoard=O end,
}, },
{no=9,id="DT",name="dropDelay", {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}, 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, func=function(P,O)P.gameEnv.drop=O end,
unranked=true, unranked=true,
}, },
{no=10,id="LT",name="lockDelay", {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}, 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, func=function(P,O)P.gameEnv.lock=O end,
unranked=true, unranked=true,
}, },
{no=11,id="ST",name="waitDelay", {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}, list={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
func=function(P,O)P.gameEnv.wait=O end, func=function(P,O)P.gameEnv.wait=O end,
unranked=true, unranked=true,
}, },
{no=12,id="CT",name="fallDelay", {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}, list={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
func=function(P,O)P.gameEnv.fall=O end, func=function(P,O)P.gameEnv.fall=O end,
unranked=true, unranked=true,
}, },
{no=13,id="LF",name="life", {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}, list={0,1,2,3,5,10,15,26,42,87,500},
func=function(P,O)P.gameEnv.life=O end, func=function(P,O)P.gameEnv.life=O end,
unranked=true, unranked=true,
}, },
{no=14,id="FB",name="forceB2B", {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, func=function(P)P.gameEnv.b2bKill=true end,
unranked=true, unranked=true,
}, },
{no=15,id="PF",name="forceFinesse", {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, func=function(P)P.gameEnv.fineKill=true end,
unranked=true, unranked=true,
}, },
{no=16,id="TL",name="tele", {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) func=function(P)
P.gameEnv.das,P.gameEnv.arr=0,0 P.gameEnv.das,P.gameEnv.arr=0,0
P.gameEnv.sddas,P.gameEnv.sdarr=0,0 P.gameEnv.sddas,P.gameEnv.sdarr=0,0
@@ -99,7 +99,7 @@ MODOPT={--Mod options
unranked=true, unranked=true,
}, },
{no=17,id="FX",name="noRotation", {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) func=function(P)
disableKey(P,3) disableKey(P,3)
disableKey(P,4) disableKey(P,4)
@@ -108,7 +108,7 @@ MODOPT={--Mod options
unranked=true, unranked=true,
}, },
{no=18,id="GL",name="noMove", {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) func=function(P)
disableKey(P,1)disableKey(P,2) disableKey(P,1)disableKey(P,2)
disableKey(P,11)disableKey(P,12) disableKey(P,11)disableKey(P,12)
@@ -118,21 +118,21 @@ MODOPT={--Mod options
unranked=true, unranked=true,
}, },
{no=19,id="CS",name="customSeq", {no=19,id="CS",name="customSeq",
key="b",x=680,y=470,color="B", key="b",x=680,y=470,color='B',
list={"bag","his4","c2","rnd","mess","reverb"}, list={'bag','his4','c2','rnd','mess','reverb'},
func=function(P,O)P.gameEnv.sequence=O end, func=function(P,O)P.gameEnv.sequence=O end,
unranked=true, unranked=true,
}, },
{no=20,id="PS",name="pushSpeed", {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}, list={.5,1,2,3,5,15,1e99},
func=function(P,O)P.gameEnv.pushSpeed=O end, func=function(P,O)P.gameEnv.pushSpeed=O end,
unranked=true, unranked=true,
}, },
{no=21,id="BN",name="boneBlock", {no=21,id="BN",name="boneBlock",
key="m",x=920,y=470,color="B", key="m",x=920,y=470,color='B',
list={"on","off"}, list={'on','off'},
func=function(P,O)P.gameEnv.bone=O=="on"end, func=function(P,O)P.gameEnv.bone=O=='on'end,
}, },
} }
for i=1,#MODOPT do for i=1,#MODOPT do
@@ -212,7 +212,7 @@ customEnv0={
bone=false, bone=false,
--Rule --Rule
sequence="bag", sequence='bag',
fieldH=20, fieldH=20,
ospin=true, ospin=true,
@@ -220,7 +220,7 @@ customEnv0={
b2bKill=false, b2bKill=false,
easyFresh=true, easyFresh=true,
deepDrop=false, deepDrop=false,
visible="show", visible='show',
freshLimit=1e99, freshLimit=1e99,
@@ -230,8 +230,8 @@ customEnv0={
missionKill=false, missionKill=false,
--Else --Else
bg="blockfall", bg='blockfall',
bgm="infinite", bgm='infinite',
} }
CUSTOMENV=FILE.load("conf/customEnv")--gameEnv for cutsom game CUSTOMENV=FILE.load("conf/customEnv")--gameEnv for cutsom game
if not CUSTOMENV or CUSTOMENV.version~=VERSION.code then CUSTOMENV=TABLE.copy(customEnv0)end 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, das=10,arr=2,dascut=0,
sddas=0,sdarr=2, sddas=0,sdarr=2,
ihs=true,irs=true,ims=true, ihs=true,irs=true,ims=true,
RS="TRS", RS='TRS',
swap=true, swap=true,
--System --System
@@ -292,7 +292,7 @@ SETTING={--Settings
stereo=.7, stereo=.7,
vib=0, vib=0,
voc=0, voc=0,
cv="miya", cv='miya',
--Virtualkey --Virtualkey
VKSFX=.2,--SFX volume VKSFX=.2,--SFX volume
@@ -321,7 +321,7 @@ else
send=0,recv=0,pend=0,off=0, send=0,recv=0,pend=0,off=0,
clear={},spin={}, clear={},spin={},
pc=0,hpc=0,b2b=0,b3b=0,score=0, 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, date=false,
todayTime=0, 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 }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} 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) function pushZero(t)
for _,L in next,t do for _,L in next,t do
if type(L)=="table"then if type(L)=='table'then
for _,v in next,L do for _,v in next,L do
if not v[1]or v[1][1]~=0 or v[1][2]~=0 then if not v[1]or v[1][1]~=0 or v[1][2]~=0 then
table.insert(v,1,map[0][0]) table.insert(v,1,map[0][0])
@@ -26,9 +26,9 @@ end
--Make all vec point to the same vec --Make all vec point to the same vec
local function collectSet(set) local function collectSet(set)
if type(set)~="table"then return end if type(set)~='table'then return end
for _,list in next,set do for _,list in next,set do
if type(list[1])=="string"then if type(list[1])=='string'then
vecStrConv(list) vecStrConv(list)
end end
end end
@@ -136,12 +136,12 @@ do
},--T },--T
function(P,d) function(P,d)
if P.gameEnv.easyFresh then if P.gameEnv.easyFresh then
P:freshBlock("fresh") P:freshBlock('fresh')
end end
if P.gameEnv.ospin then if P.gameEnv.ospin then
local x,y=P.curX,P.curY 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 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 P.spinSeq=P.spinSeq%100*10+d
if P.spinSeq<100 then return end if P.spinSeq<100 then return end
for i=1,#OspinList do for i=1,#OspinList do
@@ -164,18 +164,18 @@ do
P.cur.dir,P.cur.sc=dir,SCS[id][dir] P.cur.dir,P.cur.sc=dir,SCS[id][dir]
P.spinLast=2 P.spinLast=2
P.stat.rotate=P.stat.rotate+1 P.stat.rotate=P.stat.rotate+1
P:freshBlock("move") P:freshBlock('move')
P.spinSeq=0 P.spinSeq=0
return return
end end
end end
end end
else 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 P.spinSeq=0
end end
else 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
end,--O end,--O
{ {
@@ -286,19 +286,19 @@ do
[31]={"+0-1","+1+0"}, [31]={"+0-1","+1+0"},
},--W },--W
function(P,d) 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] local kickData=XspinList[d]
for test=1,#kickData do for test=1,#kickData do
local x,y=P.curX+kickData[test][1],P.curY+kickData[test][2] local x,y=P.curX+kickData[test][1],P.curY+kickData[test][2]
if not P:ifoverlap(P.cur.bk,x,y)then if not P:ifoverlap(P.cur.bk,x,y)then
P.curX,P.curY=x,y P.curX,P.curY=x,y
P.spinLast=1 P.spinLast=1
P:freshBlock("move") P:freshBlock('move')
P.stat.rotate=P.stat.rotate+1 P.stat.rotate=P.stat.rotate+1
return return
end end
end end
P:freshBlock("fresh") P:freshBlock('fresh')
end,--X end,--X
{ {
[01]={"-1+0","-1+1","+0-3","-1+1","-1+2","+0+1"}, [01]={"-1+0","-1+1","+0-3","-1+1","-1+2","+0+1"},

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,119 +1,119 @@
return{ return{
{name="sprint_10l", x=0, y=0, size=40,shape=1,icon="sprint1", unlock={"sprint_20l","sprint_40l"}}, {name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
{name="sprint_20l", x=-200, y=0, size=50,shape=1,icon="sprint1"}, {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_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_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_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_1000l', x=-600, y=-200, size=40,shape=1,icon="sprint3"},
{name="sprintPenta", x=210, y=-370, 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='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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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='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_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_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='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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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='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_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='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_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_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_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_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_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', 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_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', 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_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', 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_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', 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_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_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_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_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_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_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_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_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='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='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', x=-800, y=-400, size=40,shape=1,icon='infinite'},
{name="infinite_dig", x=-1000,y=-600, size=40,shape=1,icon="dig"}, {name='infinite_dig', x=-1000,y=-600, size=40,shape=1,icon="dig"},
{name="sprintFix"}, {name='sprintFix'},
{name="sprintLock"}, {name='sprintLock'},
{name="marathon_bfmax"}, {name='marathon_bfmax'},
{name="custom_puzzle"}, {name='custom_puzzle'},
{name="custom_clear"}, {name='custom_clear'},
{name="netBattle"}, {name="netBattle"},
} }

View File

@@ -26,16 +26,16 @@ return{
D.wave=D.wave+1 D.wave=D.wave+1
if D.wave%10==0 then if D.wave%10==0 then
if D.wave==20 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 P.gameEnv.pushSpeed=3
elseif D.wave==50 then 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 end
end end
end, end,
bg="rainbow2",bgm="shining terminal", bg='rainbow2',bgm='shining terminal',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -30,19 +30,19 @@ return{
D.wave=D.wave+1 D.wave=D.wave+1
if D.wave%10==0 then if D.wave%10==0 then
if D.wave==10 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 P.gameEnv.pushSpeed=4
elseif D.wave==20 then 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 P.gameEnv.pushSpeed=5
elseif D.wave==30 then 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 end
end end
end, end,
bg="rainbow2",bgm="shining terminal", bg='rainbow2',bgm='shining terminal',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,10 +3,10 @@ return{
color=COLOR.cyan, color=COLOR.cyan,
env={ env={
drop=30,lock=45, drop=30,lock=45,
visible="easy", visible='easy',
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=10, freshLimit=10,
bg="glow",bgm="push", bg='glow',bgm='push',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -6,11 +6,11 @@ return{
drop=15,lock=45, drop=15,lock=45,
fall=10, fall=10,
dropFX=0,lockFX=0, dropFX=0,lockFX=0,
visible="none", visible='none',
score=false, 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, freshLimit=15,
bg="rgb",bgm="push", bg='rgb',bgm='push',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -7,11 +7,11 @@ return{
fall=5, fall=5,
ghost=0, ghost=0,
dropFX=0,lockFX=0, dropFX=0,lockFX=0,
visible="none", visible='none',
score=false, 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, freshLimit=15,
bg="rgb",bgm="push", bg='rgb',bgm='push',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -5,9 +5,9 @@ return{
env={ env={
drop=15,lock=45, drop=15,lock=45,
freshLimit=10, freshLimit=10,
visible="fast", visible='fast',
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,
bg="glow",bgm="push", bg='glow',bgm='push',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -6,11 +6,11 @@ return{
drop=30,lock=60, drop=30,lock=60,
block=false,center=0,ghost=0, block=false,center=0,ghost=0,
dropFX=0,lockFX=0, dropFX=0,lockFX=0,
visible="none", visible='none',
score=false, 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, freshLimit=15,
bg="rgb",bgm="far", bg='rgb',bgm='far',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -24,15 +24,15 @@ return{
if D.wave<=75 then if D.wave<=75 then
D.rpm=math.floor(144e3/t)*.1 D.rpm=math.floor(144e3/t)*.1
if D.wave==25 then 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.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=4,4 P.dropDelay,P.gameEnv.drop=4,4
elseif D.wave==50 then 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.gameEnv.pushSpeed=4
P.dropDelay,P.gameEnv.drop=3,3 P.dropDelay,P.gameEnv.drop=3,3
elseif D.wave==75 then 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 P.dropDelay,P.gameEnv.drop=2,2
end end
end end
@@ -40,7 +40,7 @@ return{
end end
end end
end, end,
bg="rainbow2",bgm="storm", bg='rainbow2',bgm='storm',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -24,23 +24,23 @@ return{
if D.wave<=90 then if D.wave<=90 then
D.rpm=math.floor(108e3/t)*.1 D.rpm=math.floor(108e3/t)*.1
if D.wave==25 then 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.gameEnv.pushSpeed=2
P.dropDelay,P.gameEnv.drop=20,20 P.dropDelay,P.gameEnv.drop=20,20
elseif D.wave==50 then 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.gameEnv.pushSpeed=3
P.dropDelay,P.gameEnv.drop=10,10 P.dropDelay,P.gameEnv.drop=10,10
elseif D.wave==90 then elseif D.wave==90 then
P.dropDelay,P.gameEnv.drop=5,5 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
end end
end end
end, end,
bg="rainbow2",bgm="storm", bg='rainbow2',bgm='storm',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -75,11 +75,11 @@ return{
end end
end 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, nextCount=1,holdCount=0,
ospin=false, ospin=false,
freshLimit=15, freshLimit=15,
bg="blockfall",bgm="reason", bg='blockfall',bgm='reason',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -3,13 +3,13 @@ return{
color=COLOR.green, color=COLOR.green,
env={ env={
drop=20,lock=60, drop=20,lock=60,
sequence="bag", sequence='bag',
seqData={1,1,2,2,3,3,4,4,5,5,6,6}, 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, nextCount=3,
ospin=false, ospin=false,
freshLimit=15, freshLimit=15,
bg="blockfall",bgm="reason", bg='blockfall',bgm='reason',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

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

View File

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

View File

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

View File

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

View File

@@ -10,16 +10,16 @@ return{
dropPiece=function(P) dropPiece=function(P)
if P.stat.row>=P.modeData.target then if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then if P.modeData.target==200 then
P:win("finish") P:win('finish')
else else
P.gameEnv.drop=dropSpeed[P.modeData.target/10] P.gameEnv.drop=dropSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10 P.modeData.target=P.modeData.target+10
SFX.play("reach") SFX.play('reach')
end end
end end
end, end,
mindas=7,minarr=1,minsdarr=1, mindas=7,minarr=1,minsdarr=1,
bg="bg2",bgm="push", bg='bg2',bgm='push',
}, },
pauseLimit=true, pauseLimit=true,
slowMark=true, slowMark=true,
@@ -30,7 +30,7 @@ return{
setFont(45) setFont(45)
mStr(P.stat.row,69,320) mStr(P.stat.row,69,320)
mStr(P.modeData.target,69,370) mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4) gc.rectangle('fill',25,375,90,4)
end, end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}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, 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 D.pt=D.pt+s
if D.pt%100==99 then if D.pt%100==99 then
SFX.play("blip_1") SFX.play('blip_1')
elseif D.pt>=D.target then--Level up! elseif D.pt>=D.target then--Level up!
s=D.target/100 s=D.target/100
local E=P.gameEnv 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.lock=death_lock[s]
E.wait=death_wait[s] E.wait=death_wait[s]
E.fall=death_fall[s] E.fall=death_fall[s]
@@ -29,12 +29,12 @@ local function score(P)
if s==5 then if s==5 then
D.pt=500 D.pt=500
P:win("finish") P:win('finish')
else else
D.target=D.target+100 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 end
SFX.play("reach") SFX.play('reach')
end end
end end
@@ -53,7 +53,7 @@ return{
P.modeData.target=100 P.modeData.target=100
end, end,
freshLimit=15, freshLimit=15,
bg="bg2",bgm="secret7th", bg='bg2',bgm='secret7th',
}, },
slowMark=true, slowMark=true,
load=function() load=function()
@@ -63,7 +63,7 @@ return{
setFont(45) setFont(45)
mStr(P.modeData.pt,69,320) mStr(P.modeData.pt,69,320)
mStr(P.modeData.target,69,370) mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4) gc.rectangle('fill',25,375,90,4)
end, end,
score=function(P)return{P.modeData.pt,P.stat.time}end, score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[2])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 D.pt=D.pt+s
if D.pt%100==99 then if D.pt%100==99 then
SFX.play("blip_1") SFX.play('blip_1')
elseif D.pt>=D.target then--Level up! elseif D.pt>=D.target then--Level up!
s=D.target/100 s=D.target/100
local E=P.gameEnv 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.lock=rush_lock[s]
E.wait=rush_wait[s] E.wait=rush_wait[s]
E.fall=rush_fall[s] E.fall=rush_fall[s]
@@ -31,12 +31,12 @@ local function score(P)
if s==5 then if s==5 then
D.pt=500 D.pt=500
P:win("finish") P:win('finish')
else else
D.target=D.target+100 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 end
SFX.play("reach") SFX.play('reach')
end end
end end
@@ -55,7 +55,7 @@ return{
P.modeData.target=100 P.modeData.target=100
end, end,
freshLimit=15, freshLimit=15,
bg="bg1",bgm="secret8th", bg='bg1',bgm='secret8th',
}, },
slowMark=true, slowMark=true,
load=function() load=function()
@@ -65,7 +65,7 @@ return{
setFont(45) setFont(45)
mStr(P.modeData.pt,69,320) mStr(P.modeData.pt,69,320)
mStr(P.modeData.target,69,370) mStr(P.modeData.target,69,370)
gc.rectangle("fill",25,375,90,4) gc.rectangle('fill',25,375,90,4)
end, end,
score=function(P)return{P.modeData.pt,P.stat.time}end, score=function(P)return{P.modeData.pt,P.stat.time}end,
scoreDisp=function(D)return D[1].."P "..STRING.time(D[2])end, scoreDisp=function(D)return D[1].."P "..STRING.time(D[2])end,

View File

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

View File

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

View File

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

View File

@@ -3,10 +3,10 @@ return{
env={ env={
drop=60,lock=120, drop=60,lock=120,
fall=10, 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, freshLimit=15,
ospin=false, ospin=false,
bg="rgb",bgm="truth", bg='rgb',bgm='truth',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -3,10 +3,10 @@ return{
env={ env={
drop=20,lock=60, drop=20,lock=60,
fall=20, 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, freshLimit=15,
ospin=false, ospin=false,
bg="rgb",bgm="truth", bg='rgb',bgm='truth',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

View File

@@ -3,8 +3,8 @@ return{
env={ env={
infHold=true, infHold=true,
drop=150,lock=1e99, drop=150,lock=1e99,
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,
bg="rgb",bgm="truth", bg='rgb',bgm='truth',
}, },
pauseLimit=true, pauseLimit=true,
load=function() load=function()

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