Compare commits
20 Commits
pre0.17.1-
...
pre0.17.1-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
054a52a445 | ||
|
|
85242d808b | ||
|
|
57241677a9 | ||
|
|
6ccdee2a53 | ||
|
|
a3d2b7b7f3 | ||
|
|
b7b28b4ae3 | ||
|
|
30748200dd | ||
|
|
5c7082e886 | ||
|
|
9a3c889a9d | ||
|
|
b432fdf90a | ||
|
|
df089a2f04 | ||
|
|
6600713f4b | ||
|
|
96dad762b2 | ||
|
|
fa64c868b9 | ||
|
|
97e7b019dd | ||
|
|
1826ca6f2f | ||
|
|
db490a6c6c | ||
|
|
421fdef4f9 | ||
|
|
d717ce842d | ||
|
|
f13c9792af |
@@ -107,8 +107,9 @@ function BGM.init(list)
|
||||
LOG("No BGM: "..name,5)
|
||||
end
|
||||
end
|
||||
function BGM.play(name)
|
||||
function BGM.play(name,args)
|
||||
name=name or BGM.default
|
||||
args=args or""
|
||||
if not _tryLoad(name)then return end
|
||||
if volume==0 then
|
||||
BGM.nowPlay=name
|
||||
@@ -118,14 +119,24 @@ function BGM.init(list)
|
||||
if name and SourceObjList[name].source then
|
||||
if BGM.nowPlay~=name then
|
||||
if BGM.nowPlay then
|
||||
TASK.new(task_fadeOut,BGM.playing)
|
||||
if not STRING.sArg(args,'-so')then
|
||||
TASK.new(task_fadeOut,BGM.playing)
|
||||
else
|
||||
BGM.playing:pause()
|
||||
end
|
||||
end
|
||||
TASK.removeTask_iterate(check_curFadeOut,task_fadeOut,SourceObjList[name].source)
|
||||
TASK.removeTask_code(task_fadeIn)
|
||||
|
||||
TASK.new(task_fadeIn,SourceObjList[name].source)
|
||||
BGM.nowPlay=name
|
||||
BGM.playing=SourceObjList[name].source
|
||||
if not STRING.sArg(args,'-si')then
|
||||
BGM.playing:setVolume(0)
|
||||
TASK.new(task_fadeIn,BGM.playing)
|
||||
else
|
||||
BGM.playing:setVolume(volume)
|
||||
BGM.playing:play()
|
||||
end
|
||||
BGM.lastPlayed=BGM.nowPlay
|
||||
BGM.playing:seek(0)
|
||||
BGM.playing:play()
|
||||
@@ -148,10 +159,15 @@ function BGM.init(list)
|
||||
BGM.playing:play()
|
||||
end
|
||||
end
|
||||
function BGM.stop()
|
||||
function BGM.stop(args)
|
||||
args=args or""
|
||||
TASK.removeTask_code(task_fadeIn)
|
||||
if BGM.nowPlay then
|
||||
TASK.new(task_fadeOut,BGM.playing)
|
||||
if not STRING.sArg(args,'-s')then
|
||||
if BGM.nowPlay then
|
||||
TASK.new(task_fadeOut,BGM.playing)
|
||||
end
|
||||
else
|
||||
BGM.playing:pause()
|
||||
end
|
||||
BGM.nowPlay,BGM.playing=nil
|
||||
end
|
||||
|
||||
@@ -7,20 +7,29 @@ function FILE.load(name,args)
|
||||
assert(F:open'r','open error')
|
||||
local s=F:read()F:close()
|
||||
local mode=
|
||||
args:sArg'-luaon'and'luaon'or
|
||||
args:sArg'-json'and'json'or
|
||||
args:sArg'-string'and'string'or
|
||||
STRING.sArg(args,'-luaon')and'luaon'or
|
||||
STRING.sArg(args,'-lua')and'lua'or
|
||||
STRING.sArg(args,'-json')and'json'or
|
||||
STRING.sArg(args,'-string')and'string'or
|
||||
s:sub(1,6)=='return{'and'luaon'or
|
||||
(s:sub(1,1)=='['and s:sub(-1)==']'or s:sub(1,1)=='{'and s:sub(-1)=='}')and'json'or
|
||||
'string'
|
||||
if mode=='luaon'then
|
||||
local func=loadstring(s)
|
||||
local func,err_mes=loadstring(s)
|
||||
if func then
|
||||
setfenv(func,{})
|
||||
local res=func()
|
||||
return assert(res,'decode error')
|
||||
else
|
||||
error('decode error')
|
||||
error('decode error: '..err_mes)
|
||||
end
|
||||
elseif mode=='lua'then
|
||||
local func,err_mes=loadstring(s)
|
||||
if func then
|
||||
local res=func()
|
||||
return assert(res,'run error')
|
||||
else
|
||||
error('compile error: '..err_mes)
|
||||
end
|
||||
elseif mode=='json'then
|
||||
local res=JSON.decode(s)
|
||||
@@ -39,12 +48,12 @@ function FILE.load(name,args)
|
||||
end
|
||||
function FILE.save(data,name,args)
|
||||
if not args then args=''end
|
||||
if args:sArg'-d'and fs.getInfo(name)then
|
||||
if STRING.sArg(args,'-d')and fs.getInfo(name)then
|
||||
error('duplicate')
|
||||
end
|
||||
|
||||
if type(data)=='table'then
|
||||
if args:sArg'-luaon'then
|
||||
if STRING.sArg(args,'-luaon')then
|
||||
data=TABLE.dump(data)
|
||||
if not data then
|
||||
error('encode error')
|
||||
|
||||
@@ -18,7 +18,7 @@ function FONT.rawset(s)
|
||||
end
|
||||
function FONT.load(fonts)
|
||||
for name,path in next,fonts do
|
||||
assert(love.filesystem.getInfo(path),("Font file $1($2) not exist!"):repD(name,path))
|
||||
assert(love.filesystem.getInfo(path),STRING.repD("Font file $1($2) not exist!",name,path))
|
||||
fontFiles[name]=love.filesystem.newFile(path)
|
||||
fontCache[name]={}
|
||||
end
|
||||
|
||||
@@ -2,7 +2,6 @@ local IMG={}
|
||||
function IMG.init(list)
|
||||
IMG.init=nil
|
||||
|
||||
local null=love.graphics.newCanvas(1,1)
|
||||
setmetatable(IMG,{__index=function(self,name)
|
||||
if type(list[name])=='table'then
|
||||
self[name]={}
|
||||
@@ -13,7 +12,7 @@ function IMG.init(list)
|
||||
self[name]=love.graphics.newImage(list[name])
|
||||
else
|
||||
LOG("No IMG: "..name)
|
||||
self[name]=null
|
||||
self[name]=PAPER
|
||||
end
|
||||
return self[name]
|
||||
end})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
NONE={}function NULL()end
|
||||
NONE={}function NULL()end PAPER=love.graphics.newCanvas(1,1)
|
||||
EDITING=""
|
||||
LOADED=false
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ local find,sub,gsub,upper=string.find,string.sub,string.gsub,string.upper
|
||||
local char,byte=string.char,string.byte
|
||||
|
||||
--"Replace dollars", replace all $n with ...
|
||||
function string.repD(str,...)
|
||||
function STRING.repD(str,...)
|
||||
local l={...}
|
||||
for i=#l,1,-1 do
|
||||
str=gsub(str,'$'..i,l[i])
|
||||
@@ -15,7 +15,7 @@ function string.repD(str,...)
|
||||
end
|
||||
|
||||
--"Scan arg", scan if str has the arg (format of str is like "-json -q", arg is like "-q")
|
||||
function string.sArg(str,switch)
|
||||
function STRING.sArg(str,switch)
|
||||
if find(str.." ",switch.." ")then
|
||||
return true
|
||||
end
|
||||
|
||||
4
main.lua
4
main.lua
@@ -71,6 +71,8 @@ mStr=GC.mStr
|
||||
mText=GC.simpX
|
||||
mDraw=GC.draw
|
||||
Snd=SFX.playSample
|
||||
string.repD=STRING.repD
|
||||
string.sArg=STRING.sArg
|
||||
|
||||
--Delete all naked files (from too old version)
|
||||
FILE.clear('')
|
||||
@@ -116,7 +118,7 @@ MODES= require'parts.modes'
|
||||
|
||||
setmetatable(TEXTURE,{__index=function(self,k)
|
||||
MES.new('warn',"No texture called: "..k)
|
||||
self[k]=love.graphics.newCanvas(1,1)
|
||||
self[k]=PAPER
|
||||
return self[k]
|
||||
end})
|
||||
|
||||
|
||||
@@ -376,8 +376,8 @@ do
|
||||
},--R
|
||||
false,--Y
|
||||
{
|
||||
[01]={'+0+0','-1+0','-1+1','+0+1','+1+0','-1+2','-2+0','+0-2'},
|
||||
[10]={'+0+0','+1+0','-1+0','+0-1','+1-1','+1-2','+2+0','+0+2'},
|
||||
[01]={'+0+0','-1+0','-1+1','+0+1','+1+0','+1+1','-1+2','-2+0','+0-2'},
|
||||
[10]={'+0+0','+1+0','-1+0','+0-1','-1-1','+1-1','+1-2','+2+0','+0+2'},
|
||||
[03]={'+0+0','-1+0','+1-1','+0-2','+0-3','+1+0','+1-2','+1-3','+0+1','-1+1'},
|
||||
[30]={'+0+0','-1+0','+1-1','+1-2','+1+0','+0-2','+1-3','-1+2','+0+3','-1+3'},
|
||||
[12]={'+0+0','-1+0','+1-1','-1-1','+1-2','+1+0','+0-2','+1-3','-1+2','+0+3','-1+3'},
|
||||
|
||||
@@ -36,6 +36,7 @@ return{
|
||||
end,
|
||||
hook_drop=function(P)
|
||||
local D=P.modeData
|
||||
D.drought=P.lastPiece.id==7 and 0 or D.drought+1
|
||||
if P.stat.row>=D.target then
|
||||
if D.target==110 then
|
||||
P.gameEnv.drop,P.gameEnv.lock=2,2
|
||||
|
||||
@@ -36,6 +36,7 @@ return{
|
||||
end,
|
||||
hook_drop=function(P)
|
||||
local D=P.modeData
|
||||
D.drought=P.lastPiece.id==7 and 0 or D.drought+1
|
||||
if P.stat.row>=D.target then
|
||||
if D.target==100 then
|
||||
P:win('finish')
|
||||
|
||||
@@ -771,7 +771,7 @@ do--function resetGameData(args)
|
||||
BGM.play(type(bgm)=='string'and bgm or type(bgm)=='table'and bgm[math.random(#bgm)])
|
||||
|
||||
TEXT.clear()
|
||||
if GAME.modeEnv.eventset=='royale'then
|
||||
if GAME.modeEnv.eventSet=='royale'then
|
||||
for i=1,#PLAYERS do
|
||||
PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i]))
|
||||
end
|
||||
|
||||
@@ -89,13 +89,13 @@ return{
|
||||
"support afdian",
|
||||
"org",
|
||||
"Afdian",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://afdian.net/@MrZ_26",
|
||||
FNNS and"https://www.bilibili.com/video/BV1uT4y1P7CX"or"https://afdian.net/@MrZ_26",
|
||||
},
|
||||
{"Support 3",
|
||||
"support p\97\116\114\101\111\110",
|
||||
"org",
|
||||
"P\97\116\114\101\111\110",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
FNNS and"https://www.bilibili.com/video/BV1uT4y1P7CX"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
},
|
||||
--Games
|
||||
{"TTT",
|
||||
@@ -799,6 +799,11 @@ return{
|
||||
"term",
|
||||
"Vibrate your finger on the controller to achieve faster sideways movement speed than holding it.\nIt is most commonly used on classic Tetris where DAS is rather slow. In most cases, you do not need to hypertap in modern Tetris games, because their DAS is often fast enough.",
|
||||
},
|
||||
{"Rolling",
|
||||
"rolling",
|
||||
"term",
|
||||
"Another method of fast-tapping in high-gravity (around 1G) modes (with slow DAS/ARR setting).\nWhen you perform rolling, you fix the position of one hand and the controller, and then tap the back of the controller with fingers on your other hand repeatedly. This method allows even faster moving speeds than hypertapping (see \"Hypertapping\" for more)and requires much less effort.\nThis method was first discovered by Cheez-fish and he has once achieved a tapping speed of more than 20 Hz.",
|
||||
},
|
||||
{"Passthrough",
|
||||
"passthrough pingthrough",
|
||||
"term",
|
||||
@@ -1276,7 +1281,7 @@ return{
|
||||
"https://space.bilibili.com/109356367",
|
||||
},
|
||||
{"ZXC",
|
||||
"zxc thtsod",
|
||||
"zxc thtsod flag ctf",
|
||||
"name",
|
||||
"Also known as ThTsOd.\nTetris Research community member.\nA technical player.",
|
||||
"https://space.bilibili.com/4610502",
|
||||
@@ -1300,7 +1305,7 @@ return{
|
||||
"https://space.bilibili.com/471341780",
|
||||
},
|
||||
{"思竣",
|
||||
"sijun",
|
||||
"sijun acm oi",
|
||||
"name",
|
||||
"(Sī Jùn)\n\nTetris Research community member.\nLots of mental computation power.",
|
||||
"https://space.bilibili.com/403250559",
|
||||
|
||||
@@ -82,13 +82,13 @@ return{
|
||||
"赞助 support aifadian afdian zanzhu daqian qia",
|
||||
"org",
|
||||
"Afdian",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://afdian.net/@MrZ_26",
|
||||
FNNS and"https://www.bilibili.com/video/BV1uT4y1P7CX"or"https://afdian.net/@MrZ_26",
|
||||
},
|
||||
{"赞助3",
|
||||
"赞助 support zanzhu daqian qia",
|
||||
"org",
|
||||
"P\97\116\114\101\111\110",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
FNNS and"https://www.bilibili.com/video/BV1uT4y1P7CX"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
},
|
||||
|
||||
--游戏(题库)
|
||||
@@ -820,6 +820,11 @@ return{
|
||||
"term",
|
||||
"快速震动手指,实现比长按更快速+灵活的高速单点移动,主要在经典块的高难度下(因为das不可调而且特别慢,高速下很容易md导致失败,此时手动连点就比自动移动更快)或者受特殊情况限制不适合用自动移动时使用。会使用这个技术的人称为“Hypertapper”。",
|
||||
},
|
||||
{"轮指 Rolling",
|
||||
"轮指 rolling lunzhi liandian",
|
||||
"term",
|
||||
"另一种快速连点方法,用于das/arr设置非常慢时的高重力(1G左右)模式。\n先把手柄(键盘……可能也行吧)悬空摆好,比如架在腿上,要连点某个键的时候一只手虚按按键,另外一只手的几根手指轮流敲打手柄背面,“反向按键”实现连点。这种控制方法可以让玩家更轻松地获得比直接抖动手指的hypertap(详见超连点词条)更快的控制速度。\n此方法最先由Cheez-fish发明,他本人则使用rolling达到过超过20Hz的点击频率。",
|
||||
},
|
||||
{"穿透 Passthrough",
|
||||
"穿透 passthrough pingthrough chuantou",
|
||||
"term",
|
||||
@@ -1304,7 +1309,7 @@ return{
|
||||
"https://space.bilibili.com/109356367",
|
||||
},
|
||||
{"ZXC",
|
||||
"zxc thtsod flag t655",
|
||||
"zxc thtsod flag ctf t655",
|
||||
"name",
|
||||
"【研究群】「T655」\n高技术力",
|
||||
"https://space.bilibili.com/4610502",
|
||||
@@ -1328,7 +1333,7 @@ return{
|
||||
"https://space.bilibili.com/471341780",
|
||||
},
|
||||
{"思竣",
|
||||
"思竣 sijun t942",
|
||||
"思竣 sijun t942 acm oi",
|
||||
"name",
|
||||
"【研究群】「T942」\n算力极强的思维型选手",
|
||||
"https://space.bilibili.com/403250559",
|
||||
|
||||
@@ -850,9 +850,9 @@ return{
|
||||
"Soon you'll be able to play against friends and foes all over the world.",
|
||||
"Split clear coming soon!",
|
||||
"sudo rm -rf /*",
|
||||
"Techmino is a combination of Technique and Tetromino.",
|
||||
"Techmino has a Nspire-CX edition!",
|
||||
"Techmino is a portmanteau of \"technique\" and \"tetromino\".",
|
||||
"Techmino is so fun!",
|
||||
"Techmino on Nspire-CX: yes it exists, no it's not the same game.",
|
||||
"TetroDictionary is now available in English.",
|
||||
"Most of the music tracks in this game are made using Beepbox.",
|
||||
"The names that appeared in the background of the Staff page is a list of our sponsors.",
|
||||
@@ -874,7 +874,7 @@ return{
|
||||
"You can connect a keyboard to your phone or tablet (not functional on iOS though).",
|
||||
"You can customize the key mappings in settings!",
|
||||
"You can open the save directory from the Stats page.",
|
||||
"You can perform a spin with 28 of the 29 minoes in this game; the exception being O1.",
|
||||
"You can perform a spin with all of the minoes in this game.",
|
||||
"You can set the spawning orientation for each piece.",
|
||||
"ZS JL T O I",
|
||||
{C.C,"Also try 15puzzle!"},
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
return{
|
||||
fallback='en',
|
||||
sureQuit="Pulsa de nuevo para salir",
|
||||
-- sureReset="Press again to reset",
|
||||
-- sureDelete="Press again to delete",
|
||||
sureReset="Pulsa de nuevo para reiniciar",
|
||||
sureDelete="Pulsa de nuevo para borrar",
|
||||
newDay="[Anti-adicción] ¡Nuevo día, nuevo comienzo!",
|
||||
playedLong="[Anti-adicción] Estuviste jugando un buen rato hoy. Recuerda descansar de vez en cuando.",
|
||||
playedTooMuch="[Anti-adicción] ¡Has jugado mucho por hoy! No puedes jugar más.",
|
||||
-- settingWarn="Modifing uncommon setting, be careful!",
|
||||
settingWarn="¡Ten cuidado con modificar esto!",
|
||||
|
||||
atkModeName={"Al azar","Medallas","KOs","Atacantes"},
|
||||
royale_remain="$1 Jugadores Restantes",
|
||||
cmb={nil,"Combo de 1","Combo de 2","Combo de 3","Combo de 4","Combo de 5","Combo de 6","Combo de 7","Combo de 8","Combo de 9","¡Combo de 10!","¡Combo de 11!","¡Combo de 12!","¡Combo de 13!","¡Combo de 14!","¡Combo de 15!","¡Combo de 16!","¡Combo de 17!","¡Combo de 18!","¡Combo de 19!","MEGACOMBO"},
|
||||
spin="-spin",
|
||||
clear={"Single","Doble","Triple","Techrash","Pentacrash","Hexacrash","Heptacrash","Octacrash","Nonacrash","Decacrash","Undecacrash","Dodecacrash","Tridecacrash","Tetradecacrash","Pentadecacrash","Hexadecacrash","Heptadecacrash","Octadecacrash","Nonadecacrash","Ultracrash","Impossicrash"},
|
||||
-- cleared="$1 lines",
|
||||
cleared="$1 líneas",
|
||||
mini="Mini",b2b="B2B ",b3b="B2B2B ",
|
||||
PC="Perfect Clear",HPC="Half Clear",
|
||||
replaying="[Repetición]",
|
||||
tasUsing="[TAS]",
|
||||
|
||||
-- stage="Stage $1 completed",
|
||||
stage="Fase $1 Completada",
|
||||
great="¡Genial!",
|
||||
awesome="¡Fantástico!",
|
||||
almost="¡Casi!",
|
||||
@@ -28,7 +28,7 @@ return{
|
||||
speedup="¡Más rápido!",
|
||||
missionFailed="Misión Fallida",
|
||||
|
||||
speedLV="Vel. de juego",
|
||||
speedLV="Veloc. de juego",
|
||||
piece="Piezas",line="Líneas",atk="Ataque",eff="Eficiencia",
|
||||
rpm="RPM",tsd="TSD",
|
||||
grade="Grado",techrash="Techrash",
|
||||
@@ -50,25 +50,25 @@ return{
|
||||
|
||||
page="Página:",
|
||||
|
||||
-- cc_fixed="CC is incompatible with fixed sequences",
|
||||
-- cc_swap="CC is incompatible with swap holdmode",
|
||||
cc_fixed="CC no es compatible con piezas prefijadas",
|
||||
cc_swap="CC no es compatible con Swap Hold",
|
||||
ai_prebag="La IA no es compatible con piezas que no sean Tetrominos.",
|
||||
ai_mission="La IA no es compatible con misiones personalizadas.",
|
||||
switchSpawnSFX="Habilita los sonidos de aparición de las piezas ;)",
|
||||
needRestart="Reinicia Techmino para que los cambios tengan efecto.",
|
||||
|
||||
-- loadError_errorMode="'$1' loading failed: no load mode '$2'",
|
||||
-- loadError_read="'$1' loading failed: read failed",
|
||||
-- loadError_noFile="'$1' loading failed no file:",
|
||||
-- loadError_other="'$1' loading failed: $2",
|
||||
-- loadError_unknown="'$1' loading failed: unknown reason",
|
||||
loadError_errorMode="'$1' Error al cargar: no hay modo '$2'",
|
||||
loadError_read="'$1' Error al cargar: error de lectura",
|
||||
loadError_noFile="'$1' Error al cargar, no existe el archivo:",
|
||||
loadError_other="'$1' Error al cargar: $2",
|
||||
loadError_unknown="'$1' Error al cargar: desconocido",
|
||||
|
||||
-- saveError_duplicate="'$1' saving failed: duplicated filename",
|
||||
-- saveError_encode="'$1' saving failed: encode failed",
|
||||
-- saveError_other="'$1' saving failed: $2",
|
||||
-- saveError_unknown="'$1' saving failed: unknown reason",
|
||||
saveError_duplicate="'$1' Error al guardar: archivo duplicado",
|
||||
saveError_encode="'$1' Error al guardar: error de encoding",
|
||||
saveError_other="'$1' Error al guardar: $2",
|
||||
saveError_unknown="'$1' Error al guardar: desconocido",
|
||||
|
||||
-- copyDone="Copied!",
|
||||
copyDone="¡Copiado con éxito!",
|
||||
saveDone="Datos guardados",
|
||||
exportSuccess="Exportado con éxito",
|
||||
importSuccess="Importado con éxito",
|
||||
@@ -90,7 +90,7 @@ return{
|
||||
|
||||
replayBroken="No se puede cargar la repetición",
|
||||
|
||||
-- dictNote="==Copied from TetroDictionary==",
|
||||
dictNote="==Copia de TetroDictionary==",
|
||||
|
||||
getNoticeFail="Error al buscar novedades.",
|
||||
oldVersion="¡Está disponible la nueva versión $1!",
|
||||
@@ -127,12 +127,12 @@ return{
|
||||
chatStart="------Comienzo del historial------",
|
||||
chatHistory="------Nuevos mensajes------",
|
||||
|
||||
-- keySettingInstruction="Press to bind key\nescape: cancel\nbackspace: delete",
|
||||
-- customBGhelp="Drop image file here to apply custom background",
|
||||
-- customBGloadFailed="Unsupport image format for custom background",
|
||||
keySettingInstruction="Pulsa la tecla a mapear\nEsc.: Cancelar\nBackspace: Borrar",
|
||||
customBGhelp="Suelta una imagen aquí para aplicarla de fondo",
|
||||
customBGloadFailed="Formato de imagen no soportado",
|
||||
|
||||
errorMsg="Ha ocurrido un error y Techmino necesita reiniciarse.\nSe creó un registro de error, puedes enviarlo al autor.",
|
||||
-- tryAnotherBuild="[Invalid UTF-8] If you are on Windows, try downloading Techmino-win32 or Techmino-win64 (different from what you are using now).",
|
||||
tryAnotherBuild="[UTF-8 Inválido] Si estás usando Windows, intenta descargar Techmino-win32 o Techmino-win64 (el que no estés usando ahora).",
|
||||
|
||||
-- modInstruction="",
|
||||
-- modInfo={},--See lang_en.lua
|
||||
@@ -173,7 +173,7 @@ return{
|
||||
"Descargas desde otros sitios pueden contener malware/viruses, y en smartphones sólo requiere permisos de internet y vibración.",
|
||||
"El autor no se responabiliza por daños ocasionados debido a modificaciones del juego.",
|
||||
FNNS and"/"or"Por favor descarga las últimas versiones desde los sitios oficiales. El juego es gratuito",
|
||||
-- FNNS and"/"or"Check Zictionary for more",
|
||||
FNNS and"/"or"Ve el Zictionary (en inglés) para más info",
|
||||
},
|
||||
staff={
|
||||
"Autor:MrZ Email: 1046101471@qq.com",
|
||||
@@ -273,8 +273,8 @@ return{
|
||||
lock="Retraso de Bloqueo",
|
||||
wait="Retraso de Spawneo",
|
||||
fall="Retraso de Línea",
|
||||
-- hang="Death Delay",
|
||||
-- hurry="ARE Interruption",
|
||||
hang="Retraso de Muerte",
|
||||
hurry="Interrupc. de ARE",
|
||||
|
||||
capacity="Capacidad",
|
||||
create="Crear",
|
||||
@@ -282,14 +282,14 @@ return{
|
||||
ospin="O-Spin",
|
||||
fineKill="100% Finesse",
|
||||
b2bKill="No Romper B2B ",
|
||||
-- lockout="Fail when lock out",
|
||||
lockout="Derrota al ocurrir Lock Out",
|
||||
easyFresh="Reinicio de Bloqueo Normal",
|
||||
deepDrop="Deep Drop",
|
||||
bone="Bone Block",
|
||||
|
||||
-- eventSet="Rule Set",
|
||||
eventSet="Ruleset",
|
||||
|
||||
-- holdMode="Hold Mode",
|
||||
holdMode="Modo de Reserva",
|
||||
nextCount="Siguiente",
|
||||
holdCount="Reserva",
|
||||
infHold="Reserva Inft.",
|
||||
@@ -298,13 +298,13 @@ return{
|
||||
net_game={
|
||||
ready="Estoy Listo",
|
||||
spectate="Espectear",
|
||||
-- cancel="Cancel ready",
|
||||
cancel="Esperar",
|
||||
},
|
||||
setting_game={
|
||||
title="Ajustes del Juego",
|
||||
graphic="←Video",
|
||||
sound="Sonido→",
|
||||
-- style="Style",
|
||||
style="Estilo",
|
||||
|
||||
ctrl="Sensibilidad",
|
||||
key="Teclas",
|
||||
@@ -313,10 +313,10 @@ return{
|
||||
reTime="Retraso de Inicio",
|
||||
RS="Sistema de Rotación",
|
||||
menuPos="Pos. del Botón de Menú",
|
||||
-- sysCursor="Use system cursor",
|
||||
sysCursor="Usar cursor del sistema",
|
||||
autoPause="Pausar cuando la ventana no está enfocada",
|
||||
autoSave="Autograbar Récords",
|
||||
-- autoLogin="Auto Login on Start",
|
||||
autoLogin="Autologueo al Iniciar",
|
||||
simpMode="Modo Sencillo",
|
||||
},
|
||||
setting_video={
|
||||
@@ -344,13 +344,13 @@ return{
|
||||
atkFX="FX Vis. de Ataque",
|
||||
|
||||
frame="Ratio de FPSs(%)",
|
||||
-- FTlock="Frame-Time Lock",
|
||||
FTlock="Bloqueo por frames",
|
||||
|
||||
text="Texto de Acciones",
|
||||
score="Puntaje en Pantalla",
|
||||
bufferWarn="Alerta de Búfer",
|
||||
showSpike="Contador de Spike",
|
||||
-- nextPos="Spawn Preview",
|
||||
nextPos="Prever Spawn de Pzas.",
|
||||
highCam="Cám. Vista Aérea",
|
||||
warn="Alerta de Peligro",
|
||||
|
||||
@@ -359,9 +359,9 @@ return{
|
||||
clean="Fast Draw",
|
||||
fullscreen="Pant. Completa",
|
||||
|
||||
-- bg_on="Normal B.G.",
|
||||
-- bg_on="No B.G.",
|
||||
-- bg_custom="Use Custom B.G.",
|
||||
bg_on="Fondo Normal",
|
||||
bg_off="Sin Fondo",
|
||||
bg_custom="Fondo Personalizado",
|
||||
|
||||
blockSatur="Saturac. de los Bloques",
|
||||
fieldSatur="Saturac. del Tablero",
|
||||
@@ -371,7 +371,7 @@ return{
|
||||
game="←Juego",
|
||||
graphic="Video→",
|
||||
|
||||
-- mainVol="Main Volume",
|
||||
mainVol="Vol. Principal",
|
||||
bgm="BGM",
|
||||
sfx="SFX",
|
||||
stereo="Estéreo",
|
||||
@@ -380,9 +380,9 @@ return{
|
||||
vib="Vibración",
|
||||
voc="Voces",
|
||||
|
||||
-- autoMute="Mute while unfocused",
|
||||
autoMute="Silenciar cuando la ventana no está enfocada",
|
||||
fine="Sonido de Error de Finesse",
|
||||
-- sfxPack="SFX Pack",
|
||||
sfxPack="Pack de SFX",
|
||||
vocPack="Pack de Voces",
|
||||
apply="Aplicar",
|
||||
},
|
||||
@@ -460,8 +460,8 @@ return{
|
||||
lock="Retraso de Bloqueo",
|
||||
wait="Retraso de Spawneo",
|
||||
fall="Retraso de Línea",
|
||||
-- hang="Death Delay",
|
||||
-- hurry="ARE Interruption",
|
||||
hang="Retraso de Muerte",
|
||||
hurry="Interrupc. de ARE",
|
||||
|
||||
bg="Fondo",
|
||||
bgm="Música",
|
||||
@@ -478,9 +478,9 @@ return{
|
||||
sequence="Editar Secuencia (S)",
|
||||
mission="Editar Misiones (M)",
|
||||
|
||||
-- eventSet="Rule Set",
|
||||
eventSet="Ruleset",
|
||||
|
||||
-- holdMode="Hold Mode",
|
||||
holdMode="Modo de Reserva",
|
||||
nextCount="Siguiente",
|
||||
holdCount="Reserva",
|
||||
infHold="Reserva Inft.",
|
||||
@@ -499,7 +499,7 @@ return{
|
||||
ospin="O-Spin",
|
||||
fineKill="100% Finesse",
|
||||
b2bKill="No Romper B2B ",
|
||||
-- lockout="Fail when lock out",
|
||||
lockout="Derrota al ocurrir Lock Out",
|
||||
easyFresh="Reinicio de Bloqueo Normal",
|
||||
deepDrop="Deep Drop",
|
||||
bone="Bone Block",
|
||||
@@ -534,7 +534,7 @@ return{
|
||||
about={
|
||||
staff="Staff",
|
||||
his="Hist. de Acts.",
|
||||
-- legals="Legals",
|
||||
legals="Legalidades",
|
||||
},
|
||||
dict={
|
||||
title="TetroDictionary",
|
||||
@@ -558,7 +558,7 @@ return{
|
||||
sfx="SFX",
|
||||
voc="Voces",
|
||||
music="BGMs",
|
||||
-- label="label",
|
||||
label="Etiq.",
|
||||
},
|
||||
login={
|
||||
title="Entrar",
|
||||
@@ -645,7 +645,7 @@ return{
|
||||
['dig_100l']= {"Queso", "100L", "Limpia 100 líneas de queso."},
|
||||
['dig_400l']= {"Queso", "400L", "Limpia 400 líneas de queso."},
|
||||
['drought_n']= {"Sequía", "100L", "¡Sin piezas I!"},
|
||||
['drought_l']= {"Sequía+", "100L", "Guat de foc..."},
|
||||
['drought_l']= {"Sequía+", "100L", "Qué es esto..."},
|
||||
['marathon_n']= {"Maratón", "Normal", "Maratón de 200 líneas con velocidad en aumento."},
|
||||
['marathon_h']= {"Maratón", "Difícil", "Maratón de 200 líneas a velocidad máxima."},
|
||||
['solo_e']= {"VS.", "Fácil", "¡Derrota a la CPU!"},
|
||||
@@ -653,12 +653,12 @@ return{
|
||||
['solo_h']= {"VS.", "Difícil", "¡Derrota a la CPU!"},
|
||||
['solo_l']= {"VS.", "Lunático", "¡Derrota a la CPU!"},
|
||||
['solo_u']= {"VS.", "Supremo", "¡Derrota a la CPU!"},
|
||||
['techmino49_e']= {"Tech 49", "Fácil", "Batalla de 49 jugadores. ¡El último en pie gana!"},
|
||||
['techmino49_h']= {"Tech 49", "Difícil", "Batalla de 49 jugadores. ¡El último en pie gana!"},
|
||||
['techmino49_u']= {"Tech 49", "Supremo", "Batalla de 49 jugadores. ¡El último en pie gana!"},
|
||||
['techmino99_e']= {"Tech 99", "Fácil", "Batalla de 99 jugadores. ¡El último en pie gana!"},
|
||||
['techmino99_h']= {"Tech 99", "Difícil", "Batalla de 99 jugadores. ¡El último en pie gana!"},
|
||||
['techmino99_u']= {"Tech 99", "Supremo", "Batalla de 99 jugadores. ¡El último en pie gana!"},
|
||||
['techmino49_e']= {"Tech 49", "Fácil", "Batalla de 49 jugadores.\n¡El último en pie gana!"},
|
||||
['techmino49_h']= {"Tech 49", "Difícil", "Batalla de 49 jugadores.\n¡El último en pie gana!"},
|
||||
['techmino49_u']= {"Tech 49", "Supremo", "Batalla de 49 jugadores.\n¡El último en pie gana!"},
|
||||
['techmino99_e']= {"Tech 99", "Fácil", "Batalla de 99 jugadores.\n¡El último en pie gana!"},
|
||||
['techmino99_h']= {"Tech 99", "Difícil", "Batalla de 99 jugadores.\n¡El último en pie gana!"},
|
||||
['techmino99_u']= {"Tech 99", "Supremo", "Batalla de 99 jugadores.\n¡El último en pie gana!"},
|
||||
['round_e']= {"Por Turnos", "Fácil", "Modo ajedrez."},
|
||||
['round_n']= {"Por Turnos", "Normal", "Modo ajedrez."},
|
||||
['round_h']= {"Por Turnos", "Difícil", "Modo ajedrez."},
|
||||
@@ -666,15 +666,15 @@ return{
|
||||
['round_u']= {"Por Turnos", "Supremo", "Modo ajedrez."},
|
||||
['master_n']= {"Master", "Normal", "Para principiantes en 20G"},
|
||||
['master_h']= {"Master", "Difícil", "¡Desafío profesional de 20G!"},
|
||||
-- ['master_m']= {"Master", "M21", "For 20G Masters."},
|
||||
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo: el final es inalcanzable."},
|
||||
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro, acepta este desafío"},
|
||||
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
-- ['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
|
||||
['master_m']= {"Master", "M21", "Para Maestros del 20G."},
|
||||
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo:\nel final es inalcanzable."},
|
||||
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro,\nacepta este desafío"},
|
||||
['strategy_e']= {"Strategy", "EASY", "Decisiones rápidas en 20G."},
|
||||
['strategy_h']= {"Strategy", "HARD", "Decisiones rápidas en 20G."},
|
||||
['strategy_u']= {"Strategy", "ULTIMATE", "Decisiones rápidas en 20G."},
|
||||
['strategy_e_plus']={"Strategi", "MUDAH+", "Decisiones rápidas en 20G."},
|
||||
['strategy_h_plus']={"Strategi", "SULIT+", "Decisiones rápidas en 20G."},
|
||||
['strategy_u_plus']={"Strategi", "TERAKHIR+", "Decisiones rápidas en 20G."},
|
||||
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
|
||||
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
|
||||
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
|
||||
@@ -695,7 +695,7 @@ return{
|
||||
['defender_l']= {"Defensor", "Lunático", "¡Practica la defensa!"},
|
||||
['dig_h']= {"Downstack", "Difícil", "¡Practica el downstackeo!"},
|
||||
['dig_u']= {"Downstack", "Supremo", "¡Practica el downstackeo!"},
|
||||
-- ['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
|
||||
['clearRush']= {"Clear Rush", "NORMAL", "¡Tutorial de Allspins!\n[En construcción]"},
|
||||
['c4wtrain_n']= {"Entrenar C4W", "Normal", "Combos infinitos."},
|
||||
['c4wtrain_l']= {"Entrenar C4W", "Lunático", "Combos infinitos."},
|
||||
['pctrain_n']= {"Entrenar PC", "Normal", "Modo sencillo para practicar Perfect Clears."},
|
||||
@@ -711,7 +711,7 @@ return{
|
||||
['tech_l']= {"Tech", "Lunático", "¡Mantén el B2B!"},
|
||||
['tech_l_plus']= {"Tech", "Lunático+", "¡Sólo se permiten Spins y PCs!"},
|
||||
['tech_finesse']= {"Tech", "Finesse", "¡No cometas errores de Finesse!"},
|
||||
['tech_finesse_f']= {"Tech", "Finesse+", "Sin errores de finesse, ¡pero tampoco clears normales!"},
|
||||
['tech_finesse_f']= {"Tech", "Finesse+", "Sin errores de finesse,\n¡pero tampoco clears normales!"},
|
||||
['tsd_e']= {"Desafío de TSD", "Fácil", "¡Sólo se permiten T-Spin Dobles!"},
|
||||
['tsd_h']= {"Desafío de TSD", "Difícil", "¡Sólo se permiten T-Spin Dobles!"},
|
||||
['tsd_u']= {"Desafío de TSD", "Supremo", "¡Sólo se permiten T-Spin Dobles!"},
|
||||
@@ -720,7 +720,7 @@ return{
|
||||
['backfire_l']= {"Retorno", "Lunático", "Lidia con tus propias líneas basura."},
|
||||
['backfire_u']= {"Retorno", "Supremo", "Lidia con tus propias líneas basura."},
|
||||
['sprintAtk']= {"Sprint", "100L - Ataque", "¡Envía 100 líneas de ataque!"},
|
||||
-- ['sprintEff']= {"Sprint", "Efficiency", "Send more attack in 40lines!"},
|
||||
['sprintEff']= {"Sprint", "Efficiency", "¡Envía ataque eficiente en 40 líneas!"},
|
||||
['zen']= {'Zen', "200L", "200 líneas sin límite de tiempo."},
|
||||
['ultra']= {'Ultra', "Extra", "¡Consigue el mayor puntaje posible en 2 minutos!"},
|
||||
['infinite']= {"Infinito", "", "Modo Sandbox."},
|
||||
|
||||
@@ -357,7 +357,7 @@ return{
|
||||
fullscreen="Plein écran",
|
||||
|
||||
-- bg_on="Normal B.G.",
|
||||
-- bg_on="No B.G.",
|
||||
-- bg_off="No B.G.",
|
||||
-- bg_custom="Use Custom B.G.",
|
||||
|
||||
-- blockSatur="Block Saturation",
|
||||
@@ -714,7 +714,7 @@ return{
|
||||
['tech_l']= {"Tech", "LUNATIQUE", "Gardez le B2B !"},
|
||||
['tech_l_plus']= {"Tech", "LUNATIQUE+", "Spin & PC uniquement"},
|
||||
['tech_finesse']= {"Tech", "FINESSE", "Pas d'erreurs de finesse !"},
|
||||
['tech_finesse_f']={"Tech", "FINESSE+", "Pas de nettoyages normaux, Pas d'erreurs de finesse !"},
|
||||
['tech_finesse_f']={"Tech", "FINESSE+", "Pas de nettoyages normaux,\nPas d'erreurs de finesse !"},
|
||||
['tsd_e']= {"TSD Challenge", "FACILE", "T-spin doubles uniquement !"},
|
||||
['tsd_h']= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
|
||||
['tsd_u']= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
|
||||
|
||||
@@ -382,7 +382,7 @@ return{
|
||||
fullscreen="Tela cheia",
|
||||
|
||||
-- bg_on="Normal B.G.",
|
||||
-- bg_on="No B.G.",
|
||||
-- bg_off="No B.G.",
|
||||
-- bg_custom="Use Custom B.G.",
|
||||
|
||||
-- blockSatur="Block Saturation",
|
||||
@@ -745,7 +745,7 @@ return{
|
||||
['tech_l']= {"Tech", "LUNÁTICO", "Não quebre o B2B!"},
|
||||
['tech_l_plus']= {"Tech", "LUNÁTICO+", "Apenas spins e PC"},
|
||||
['tech_finesse']= {"Tech", "FINESSE", "Não erre a destreza!"},
|
||||
['tech_finesse_f']= {"Tech", "FINESSE+", "Sem limpas normais, não erre a destreza!"},
|
||||
['tech_finesse_f']= {"Tech", "FINESSE+", "Sem limpas normais,\nnão erre a destreza!"},
|
||||
['tsd_e']= {"Desafio TSD", "FÁCIL", "Apenas T-spin-doubles!"},
|
||||
['tsd_h']= {"Desafio TSD", "DIFÍCIL", "Apenas T-spin-doubles!"},
|
||||
['tsd_u']= {"Desafio TSD", "ULTIMATE", "Apenas T-spin-doubles!"},
|
||||
|
||||
@@ -796,6 +796,7 @@ return{
|
||||
"报时机器人:新的一天开始了",
|
||||
"本游戏还在测试中,出各种问题都是有可能的哦",
|
||||
"本游戏使用精简版字体,可能有些特殊字符不能正确显示",
|
||||
"别催了,在做了!",
|
||||
"不要大力拍打或滑动哦",
|
||||
"不要卖弱不要卖弱不要卖弱",
|
||||
"不知道有多少人玩游戏的时候会关心游戏是谁做的",
|
||||
@@ -803,9 +804,7 @@ return{
|
||||
"彩色消除即将到来!",
|
||||
"草(日本语)",
|
||||
"车万方块是一家(暴论",
|
||||
"成就系统在做了!",
|
||||
"吃键?真的吗?建议回放看看到底按没按到,按了多久",
|
||||
"触摸板打osu也很好!",
|
||||
"凑数tip什么时候能站起来!",
|
||||
"打铁.png",
|
||||
"打铁",
|
||||
@@ -836,7 +835,6 @@ return{
|
||||
"混合消除即将到来!",
|
||||
"架空消除即将到来!",
|
||||
"建议使用双手游玩",
|
||||
"据某个群友描述玩了Techmino之后打字速度变快了",
|
||||
"绝大多数按钮上的图标是调用Unicode私用区里的自制字符实现的",
|
||||
"科技骨牌 你的创新式块堆栈业务技术管理器",
|
||||
"块东V共荣",
|
||||
@@ -854,8 +852,9 @@ return{
|
||||
"你今天的人品值是(满分100):"..math.random(100),
|
||||
"你们考虑过Z酱的感受吗?没有!你们只考虑你自己。",
|
||||
"你有一个好",
|
||||
"你这场地是金子堆的还是块是金子做的",
|
||||
"你这块是金子做的还是垃圾行是金子做的",
|
||||
"你准备好了吗?",
|
||||
"配乐是有考虑到模式氛围的哦",
|
||||
"请谨慎向没有方块经验的玩家推荐,会对本游戏的生存环境造成影响,感谢配合。",
|
||||
"请勿大力敲打设备!敲坏了就没有Techmino玩了",
|
||||
"请勿使用三只手游玩",
|
||||
@@ -882,7 +881,6 @@ return{
|
||||
"物理hold了解一下",
|
||||
"希望极简率没事",
|
||||
"希望你们都能喜欢Z……哦不是,喜欢Techmino",
|
||||
"喜欢本游戏的话可以到应用商店下载",
|
||||
"享受Tech的特色旋转系统!",
|
||||
"写不出那种很酷的音乐(哭",
|
||||
"要盯着bug不放",
|
||||
@@ -898,7 +896,7 @@ return{
|
||||
"中文方块百科全书:tetris.huijiwiki.com",
|
||||
"众所周知俄罗斯方块是经典编程练手游戏(?",
|
||||
"众所周知mac不能拿来玩游戏",
|
||||
"作业都没做完别玩手机",
|
||||
"作业没做完别玩手机",
|
||||
"作者40行sub26了",
|
||||
"作者电脑上装了11个方块",
|
||||
"作者浏览器收藏夹里有6个方块",
|
||||
@@ -945,6 +943,26 @@ return{
|
||||
"Z酱是谁",
|
||||
"Z酱只是个写代码的,懂什么方块",
|
||||
"Z块等身抱枕来一个(x",
|
||||
"时间碎片[000] 2021/11/21加入这个版块",
|
||||
"时间碎片[001] V0.0.091726加入TRS旋转系统",
|
||||
"时间碎片[002] V0.7.9加入O-spin",
|
||||
"时间碎片[003] V0.7.19加入语音系统",
|
||||
"时间碎片[004] V0.7.22加入平滑下落",
|
||||
"时间碎片[005] V0.8.5加入模式地图",
|
||||
"时间碎片[006] V0.8.19加入五连块",
|
||||
"时间碎片[007] V0.9.0加入自定义序列和模式",
|
||||
"时间碎片[008] V0.10.0加入录像回放",
|
||||
"时间碎片[009] V0.11.1加入小z词典",
|
||||
"时间碎片[010] V0.12.2加入mod系统",
|
||||
"时间碎片[011] V0.13.0联网对战测试",
|
||||
"时间碎片[012] V0.13.2加入任意场地高度",
|
||||
"时间碎片[013] V0.13.3加入控制台",
|
||||
"时间碎片[014] V0.14.4加入第一首非Beepbox制作的BGM",
|
||||
"时间碎片[015] V0.14.5加入第一首社区玩家自制BGM",
|
||||
"时间碎片[016] V0.15.5加入录像回放菜单",
|
||||
"时间碎片[017] V0.16.0加入BIRS",
|
||||
"时间碎片[018] V0.16.2加入打击垫样式的音效室",
|
||||
"时间碎片[019] V0.17.0加入手柄的摇杆和扳机支持",
|
||||
"豆知识[001]总共有400多条tip哦",
|
||||
"豆知识[002]背景影响游玩?可以去设置关闭",
|
||||
"豆知识[003]方块默认出现的方向都是重心在下哦(如果你没乱动设置",
|
||||
@@ -1047,18 +1065,16 @@ return{
|
||||
"豆知识[100]Techmino生日不太清楚,那就定在2019.6.26吧",
|
||||
"豆知识[101]Techmino有一个简单的节日主题系统",
|
||||
"豆知识[102]Techmino有一个Nspire-CX原型版本",
|
||||
"豆知识[103]请在有一定基础之后再学Tspin!不然副作用非常大!",
|
||||
"豆知识[104]新人请千万记住,打好基础,不要太早学那些花里胡哨的。",
|
||||
"豆知识[105]长时间游戏状态会越来越差!玩久了记得放松一下~",
|
||||
"健康小贴士[01]玩游戏多眨眼,不然会干眼病",
|
||||
"健康小贴士[02]少玩点游戏,多注意眨眼和休息",
|
||||
"健康小贴士[03]戴耳机(尤其是半入耳式)时音量千万别拉满,不然真的会影响听力(虽然很慢)",
|
||||
"健康小贴士[04]不要熬夜,真的会猝死",
|
||||
"健康小贴士[05]长期睡眠不足会引起不可逆的脑损伤(变傻)",
|
||||
"Z思辨[01]《教育的力量》",
|
||||
"Z思辨[02]《学习的意义》",
|
||||
"Z思辨[03]《练习的力量》",
|
||||
"Z思辨[04]《知识的力量》",
|
||||
"Z思辨[05]《梦想的价值》",
|
||||
"Z思辨[06]《天赋的力量》",
|
||||
"Z思辨[07]《游戏的意义》",
|
||||
"群友名言[001]“玩了Techmino之后发现打字速度变快了”",
|
||||
"群友名言[002]“我要陪伴着tech一步步成长,然后就可以疯狂的享受他”",
|
||||
"Frt评[01]“成天被夸赞‘好玩’的”",
|
||||
"Frt评[02]“可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的”",
|
||||
"Frt评[03]“论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(”",
|
||||
@@ -1086,26 +1102,6 @@ return{
|
||||
"今日数学[13]sin²α-cos²β=-C(α+β)C(α-β)",
|
||||
"今日数学[14]sin²α-sin²β=S(α+β)S(α-β)",
|
||||
"今日数学[15]sin2α=2SαCα",
|
||||
"时间碎片[000] 2021/11/21加入这个版块",
|
||||
"时间碎片[001] V0.0.091726加入TRS旋转系统",
|
||||
"时间碎片[002] V0.7.9加入O-spin",
|
||||
"时间碎片[003] V0.7.19加入语音系统",
|
||||
"时间碎片[004] V0.7.22加入平滑下落",
|
||||
"时间碎片[005] V0.8.5加入模式地图",
|
||||
"时间碎片[006] V0.8.19加入五连块",
|
||||
"时间碎片[007] V0.9.0加入自定义序列和模式",
|
||||
"时间碎片[008] V0.10.0加入录像回放",
|
||||
"时间碎片[009] V0.11.1加入小z词典",
|
||||
"时间碎片[010] V0.12.2加入mod系统",
|
||||
"时间碎片[011] V0.13.0联网对战测试",
|
||||
"时间碎片[012] V0.13.2加入任意场地高度",
|
||||
"时间碎片[013] V0.13.3加入控制台",
|
||||
"时间碎片[014] V0.14.4加入第一首非Beepbox制作的BGM",
|
||||
"时间碎片[015] V0.14.5加入第一首社区玩家自制BGM",
|
||||
"时间碎片[016] V0.15.5加入录像回放菜单",
|
||||
"时间碎片[017] V0.16.0加入BIRS",
|
||||
"时间碎片[018] V0.16.2加入打击垫样式的音效室",
|
||||
"时间碎片[019] V0.17.0加入手柄的摇杆和扳机支持",
|
||||
"Z哲[01]方块教会我们,合群了就会消失,……",
|
||||
"Z哲[02]假如生活欺骗了你,不要悲伤,不要心急,还有块陪着你",
|
||||
"Z哲[03]……,合群了就会消失,不合群世界毁灭(指game over",
|
||||
@@ -1120,22 +1116,32 @@ return{
|
||||
"Z哲[12]学习能力很重要,只要你以变强为目的,无论玩游戏学知识都可以很难",
|
||||
"Z哲[13]游戏确实可以是一种艺术形式,而不一定是纯“玩具”",
|
||||
"Z哲[14]不希望激烈的零和竞争充斥整个游戏",
|
||||
"Z哲[15]尝试手动控制圈子规模扩大速度,希望能对维持社区氛围有帮助",
|
||||
"Z哲[16]圈子大了真的会……吗?我们可以试着做些什么,起码让这个过程慢一点",
|
||||
"Z思辨[01]《教育的力量》",
|
||||
"Z思辨[02]《学习的意义》",
|
||||
"Z思辨[03]《练习的力量》",
|
||||
"Z思辨[04]《知识的力量》",
|
||||
"Z思辨[05]《梦想的价值》",
|
||||
"Z思辨[06]《天赋的力量》",
|
||||
"Z思辨[07]《游戏的意义》",
|
||||
"Z思辨[08]《自强与竞争》",
|
||||
"Z推[01]东方Project好玩!",
|
||||
"Z推[02]Minecraft好玩!",
|
||||
"Z推[03]Osu!好玩!",
|
||||
"Z推[04]Terraria好玩!",
|
||||
"Z推[05]Celeste好玩!",
|
||||
"Z推[06]World of goo好玩!",
|
||||
"Z推[07]Orzmic好玩!",
|
||||
"Z推[08]噗哟噗哟好玩!",
|
||||
"Z推[09]Phigros好玩!",
|
||||
"Z推[10]VVVVVV好玩!",
|
||||
"Z推[11]Ballance好玩!",
|
||||
"Z推[12]Zuma好玩!",
|
||||
"Z推[13]魔方好玩!",
|
||||
"Z推[14]15puzzle好玩!",
|
||||
"Z推[15]扫雷好玩!",
|
||||
{C.C,"<PURE ",C.P,"MEMORY>"},
|
||||
{C.C,"z推[01]东方Project好玩!"},
|
||||
{C.C,"z推[02]Minecraft好玩!"},
|
||||
{C.C,"z推[03]Osu!好玩!"},
|
||||
{C.C,"z推[04]Terraria好玩!"},
|
||||
{C.C,"z推[05]Celeste好玩!"},
|
||||
{C.C,"z推[06]World of goo好玩!"},
|
||||
{C.C,"z推[07]Orzmic好玩!"},
|
||||
{C.C,"z推[08]噗哟噗哟好玩!"},
|
||||
{C.C,"z推[09]Phigros好玩!"},
|
||||
{C.C,"z推[10]VVVVVV好玩!"},
|
||||
{C.C,"z推[11]Ballance好玩!"},
|
||||
{C.C,"z推[12]Zuma好玩!"},
|
||||
{C.C,"z推[13]魔方好玩!"},
|
||||
{C.C,"z推[14]15puzzle好玩!"},
|
||||
{C.C,"z推[15]扫雷好玩!"},
|
||||
{C.H,"暂定段位:9"},
|
||||
{C.H,"REGRET!!"},
|
||||
{C.lC,"Xspin",C.Z,"是啥"},
|
||||
@@ -1149,12 +1155,8 @@ return{
|
||||
{C.R,"《滥用DMCA》"},
|
||||
{C.R,"《知识产权法》"},
|
||||
{C.R,"本游戏难度上限很高,做好心理准备。"},
|
||||
{C.R,"不要向不感兴趣的路人推荐!!!!!!!!"},
|
||||
{C.R,"请在有一定游戏基础之后再学Tspin!不然副作用非常大!"},
|
||||
{C.R,"上班时间不许摸鱼打块!"},
|
||||
{C.R,"上课时间不许摸鱼打块!"},
|
||||
{C.R,"新人请千万记住,打好基础,不要太早学那些花里胡哨的。"},
|
||||
{C.R,"长时间游戏状态会越来越差!玩久了记得放松一下~"},
|
||||
{C.R,"DD",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z,"炮"},
|
||||
{C.R,"DT",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z,"炮"},
|
||||
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR LLL ",C.C,"FFF ",C.Y,"RfR RRf rFF"},
|
||||
@@ -1168,9 +1170,11 @@ return{
|
||||
{C.Y,"暂定段位:MO"},
|
||||
{C.Y,"暂定段位:MV"},
|
||||
{C.Y,"Miya",C.Z," 可爱!"},
|
||||
{C.Y,"O-spin Triple!"},
|
||||
{C.Y,"O-spin!"},
|
||||
{C.Z,"1,2,",C.C,"⑨",C.Z,"!!!!!"},
|
||||
{C.Z,"效率药水",C.H," 效率提升 (8:00)"},
|
||||
{C.Z,"堆叠药水",C.H," 堆叠提升 (3:00)"},
|
||||
{C.Z,"挖掘药水",C.H," 挖掘提升 (8:00)"},
|
||||
{C.Z,"效率药水",C.H," 效率提升 (3:00)"},
|
||||
{C.Z,"协调药水",C.H," MD减少 II(1:30)"},
|
||||
-- "Z酱 可爱!",
|
||||
}
|
||||
|
||||
@@ -318,8 +318,8 @@ function Player:act_softDrop()
|
||||
self:act_down1()
|
||||
end
|
||||
self:checkTouchSound()
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
elseif self.gameEnv.deepDrop then
|
||||
self:_deepDrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -408,8 +408,8 @@ function Player:act_down1()
|
||||
self.curY=self.curY-1
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
elseif self.gameEnv.deepDrop then
|
||||
self:_deepDrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -422,8 +422,8 @@ function Player:act_down4()
|
||||
self.curY,self.ghoY=self.ghoY,ghoY0
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
elseif self.gameEnv.deepDrop then
|
||||
self:_deepDrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -436,8 +436,8 @@ function Player:act_down10()
|
||||
self.curY,self.ghoY=self.ghoY,ghoY0
|
||||
self:freshBlock('fresh')
|
||||
self.spinLast=false
|
||||
elseif self.gameEnv.deepdrop then
|
||||
self:_deepdrop()
|
||||
elseif self.gameEnv.deepDrop then
|
||||
self:_deepDrop()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -494,6 +494,15 @@ local playerActions={
|
||||
Player.act_zangiLeft, --19
|
||||
Player.act_zangiRight,--20
|
||||
}function Player:pressKey(keyID)
|
||||
if self.id==1 then
|
||||
if GAME.recording then
|
||||
local L=GAME.rep
|
||||
ins(L,self.frameRun)
|
||||
ins(L,keyID)
|
||||
elseif self.streamProgress then
|
||||
VK.press(keyID)
|
||||
end
|
||||
end
|
||||
if self.keyAvailable[keyID]and self.alive then
|
||||
if self.waiting>self.gameEnv.hurry then
|
||||
self.waiting=self.gameEnv.hurry
|
||||
@@ -505,18 +514,8 @@ local playerActions={
|
||||
playerActions[keyID](self)
|
||||
self.stat.key=self.stat.key+1
|
||||
end
|
||||
if self.id==1 then
|
||||
if GAME.recording then
|
||||
local L=GAME.rep
|
||||
ins(L,self.frameRun)
|
||||
ins(L,keyID)
|
||||
elseif self.streamProgress then
|
||||
VK.press(keyID)
|
||||
end
|
||||
end
|
||||
end
|
||||
function Player:releaseKey(keyID)
|
||||
self.keyPressing[keyID]=false
|
||||
if self.id==1 then
|
||||
if GAME.recording then
|
||||
local L=GAME.rep
|
||||
@@ -526,6 +525,7 @@ function Player:releaseKey(keyID)
|
||||
VK.release(keyID)
|
||||
end
|
||||
end
|
||||
self.keyPressing[keyID]=false
|
||||
end
|
||||
function Player:newTask(code,...)
|
||||
local thread=coroutine.create(code)
|
||||
|
||||
@@ -532,7 +532,7 @@ local commands={}do
|
||||
if arg:find"pl"and arg:find"fk"then
|
||||
SCN.go('support','none')
|
||||
else
|
||||
love.system.openURL("https://www.bilibili.com/video/BV1GJ411x7h7?secretcode=fkpl")
|
||||
love.system.openURL("https://www.bilibili.com/video/BV1uT4y1P7CX?secretcode=fkpl")
|
||||
end
|
||||
else
|
||||
SCN.go('support','none')
|
||||
|
||||
@@ -140,6 +140,7 @@ function scene.mouseMove(x,y)
|
||||
end
|
||||
end
|
||||
function scene.mouseDown(x,y,k)
|
||||
if k>3 then return end
|
||||
if not curPen then
|
||||
curPen=k
|
||||
elseif curPen~=k then
|
||||
@@ -149,6 +150,7 @@ function scene.mouseDown(x,y,k)
|
||||
scene.mouseMove(x,y)
|
||||
end
|
||||
function scene.mouseUp(_,_,k)
|
||||
if k>3 then return end
|
||||
if curPen==k then
|
||||
_pDraw()
|
||||
curPen=false
|
||||
|
||||
@@ -14,22 +14,28 @@ return[=[
|
||||
|
||||
0.17.1: 苏醒 Wake Up
|
||||
新增:
|
||||
全新模式选择界面(未完善,未来会增加更多便利功能)
|
||||
新皮肤:pixel(by C₂₉H₂₅N₃O₅)
|
||||
新语言:Bahasa Indonesia(by NOT_A_ROBOT)
|
||||
改动:
|
||||
修改选择模式音效
|
||||
优化皮肤设置页面交互效果
|
||||
重做关于页面
|
||||
换新miya立绘,给不同立绘添加不同点击动画
|
||||
略微降低master-h模式骨块出现后的难度
|
||||
TRS的N/H添加一个踢墙
|
||||
X块的默认色改为黄色
|
||||
重做关于页面
|
||||
微调全局颜色表
|
||||
修复:
|
||||
自定义场地界面按超过第三个的鼠标键会报错
|
||||
经典模式h和u难度没有干旱计数器 #546
|
||||
自定义场地16号色的方块名位置显示错误
|
||||
登录界面读取本地账号密码数据错误
|
||||
策略堆叠模式评级标准不当
|
||||
云存档/读档的一处小问题
|
||||
部分场景文本重叠问题
|
||||
deepdrop坏了
|
||||
混战模式坏了
|
||||
|
||||
0.17.0: 硬着陆 Hard Landing
|
||||
新增:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
return{
|
||||
["apkCode"]=420,
|
||||
["apkCode"]=421,
|
||||
["code"]=1701,
|
||||
["string"]="V0.17.1",
|
||||
["room"]="ver A-2",
|
||||
|
||||
Reference in New Issue
Block a user