Compare commits

...

49 Commits

Author SHA1 Message Date
MrZ_26
baf36ac86b 版本推进 2022-03-22 14:14:03 +08:00
MrZ_26
d8c058b0e1 修正词典文件语法错误 2022-03-22 14:14:03 +08:00
MrZ_26
6c69c38b32 登录界面可选隐藏邮箱 close #639 2022-03-22 02:39:26 +08:00
Untitled_unrevised
d17e62e36b Update dict_zh.lua (#675)
added "DPC", "Gamushiro Stacking", "Fractal"
added some link of setups and patterns
2022-03-22 02:19:40 +08:00
MrZ_26
3a2ec3a5dd 移除FTLock,全局强制开启 2022-03-22 02:15:48 +08:00
MrZ_26
ce25f17676 修正一个背景代码细节 2022-03-14 04:27:47 +08:00
MrZ_26
61fe4a5897 版本推进 2022-03-11 19:36:02 +08:00
MrZ_26
f50e90b29b 删除一个重复词条 2022-03-11 19:33:27 +08:00
MrZ_26
c151c1176f 简化部分中文文本 2022-03-11 19:22:01 +08:00
C₂₉H₂₅N₃O₅
69491e2f8b Good grammar makes reading easier (#668)
- 英语使用typesetting quotation marks
- 引号使用美式规则排版
- 重做IPA相关符号

* Good grammar makes reading easier

* 改细节 顺便改下中文文本准备下新UI
2022-03-11 19:21:12 +08:00
NOT_A_ROBOT
4f4988d7ef Fix incorrect score order in Dig Efficiency modes 2022-03-10 02:13:49 +08:00
MrZ_26
9ee4af48da 修正中文词典几个词条缺少中文关键词 2022-03-08 00:03:27 +08:00
NOT_A_ROBOT
566ebbf213 Added new icon and added the modes to the map 2022-03-07 00:44:15 +08:00
NOT_A_ROBOT
b1ea222b90 Added entry to language files 2022-03-07 00:44:15 +08:00
NOT_A_ROBOT
d85f77b480 Added efficiency-based Dig modes 2022-03-07 00:44:15 +08:00
NOT_A_ROBOT
20f5d07d05 Add Sonic Drop to Master Graded, closes #641 2022-03-07 00:42:33 +08:00
NOT_A_ROBOT
9864a75e0f Fixed Master Graded final section counted as regret during roll 2022-03-07 00:42:17 +08:00
NOT_A_ROBOT
af4cf9fc0d Made level counter more readable + added level overflow mechanic 2022-03-05 01:03:38 +08:00
MrZ_26
d0597e6836 修正一处拼写错误 close #663 2022-03-05 01:00:38 +08:00
MrZ_26
61fb504b21 中文词典新增一条新人指引 2022-03-01 18:43:23 +08:00
MrZ_26
bd055a7c60 修复关闭3D方块选项后场地方块饱和度设置无效 close #656 2022-02-28 03:56:27 +08:00
MrZ_26
f22c188753 版本推进 2022-02-28 03:50:48 +08:00
MrZ_26
7df55b1584 整理代码 2022-02-28 03:42:46 +08:00
C29H25N3O5
f9d5e054d4 大改标点和更新字体
- 英语使用typesetting quotation marks
- 引号使用美式规则排版
- 重做IPA相关符号
2022-02-28 03:32:13 +08:00
NOT_A_ROBOT
a17a3f9ba4 Add comments and cool/regret history 2022-02-28 03:31:29 +08:00
Chumo2791
f3945b9afe Add a new skin: guidetris by lusisi 2022-02-28 03:30:54 +08:00
NOT_A_ROBOT
e3fffc5d7c Add strategy_plus to world map 2022-02-28 03:29:08 +08:00
Imple Lee
54175a6ee8 change default cc branch 2022-02-20 18:26:22 +08:00
Imple Lee
9ddee1059c cc techmino-alize 2
- builtin b2b gauge, attack and extra block systen
- builtin spawn position integration
2022-02-20 18:26:22 +08:00
MrZ_26
0e965eaaae 不再允许防沉迷时间到后创建房间 2022-02-20 15:46:23 +08:00
MrZ_26
e66c5c41ee 修复master_g没开锁定特效报错 2022-02-15 17:25:02 +08:00
MrZ_26
da1ec35a55 调整几个中文tips 2022-02-15 00:09:35 +08:00
MrZ_26
d919812f44 新增两个赞助者 2022-02-08 16:35:12 +08:00
MrZ_26
eddcd726ca 补充地图新增模式的一点翻译
整理代码
2022-02-08 13:41:44 +08:00
MrZ_26
190e64de92 修正master_g老版本成绩在模式地图报错 2022-02-08 13:18:39 +08:00
MrZ_26
6ee2833cf7 框架跟进 2022-02-08 13:05:43 +08:00
NOT_A_ROBOT
beaaac6892 Update documentation on theme command in console (#643)
- Make list of themes appear when `name` is empty instead of `[ThemeList]`
2022-02-08 13:01:16 +08:00
MrZ_26
f4e0cabcf3 版本推进 2022-02-06 18:37:01 +08:00
MrZ_26
3b60590f8a 删除”全简体中文“语言 2022-02-06 18:30:09 +08:00
MrZ_26
96a695819e 修复关闭背景时设置背景亮度报错 2022-02-06 18:07:33 +08:00
MrZ_26
0a11d2cf47 暴力修复联网对战时不知道怎么触发的一个错误,能用,不懂,不理解,but it works,等重构 2022-02-06 18:07:30 +08:00
NOT_A_ROBOT
f932005ea0 Add some hidden modes + misc changes (#640)
* Added secret_grade and sprint123 to map and added some icons

* Add master_g to map

* add classic_u and master_instinct and misc changes

* added big modes

* Fix some bugs on master_instinct

* fix bugs on big mode

* Simplified Grade Display
2022-02-06 17:51:38 +08:00
MrZ_26
fedce2ae2b 更新char与mj小程序里1s的显示 2022-01-30 14:20:28 +08:00
MrZ_26
85cf77f15d 更新字体文件
Co-authored-by: C₂₉H₂₅N₃O₅ <cgu52@wisc.edu>
2022-01-30 14:20:28 +08:00
MrZ_26
fa3d7ff199 暴力修复物理hold可能导致的一个错误,能用,不懂,不理解,but it works,等重构 2022-01-30 14:20:27 +08:00
Airun
1da6c0c8a9 More Translations (Before I pull off the official version) (#633) 2022-01-30 14:18:42 +08:00
NOT_A_ROBOT
83349707d5 Add secret grade mode (#631) 2022-01-28 20:19:45 +08:00
NOT_A_ROBOT
d4090dea6f Update lang_id.lua (#629) 2022-01-28 20:19:02 +08:00
MrZ_26
ea83add8fa 词典添加secret grade词条 close #628
微调中文词典部分格式
2022-01-26 15:23:54 +08:00
60 changed files with 1271 additions and 1015 deletions

View File

@@ -3,7 +3,7 @@ description: 'download cc into specific dir'
inputs:
tag:
required: false
default:
default: techmino-alize-2
arch:
required: true
dir:

View File

@@ -321,6 +321,7 @@ SKIN.load{
{name="yinyang_scf",path='media/image/skin/yinyang_scf.png'},
{name="cartooncup_earety",path='media/image/skin/cartooncup_earety.png'},
{name="jelly_miya",path='media/image/skin/jelly_miya.png'},
{name="guidetris_xmiao_lusisi",path='media/image/skin/guidetris_xmiao_lusisi.png'},
{name="brick_notypey",path='media/image/skin/brick_notypey.png'},
{name="gem_notypey",path='media/image/skin/gem_notypey.png'},
{name="classic",path='media/image/skin/classic_unknown.png'},
@@ -366,7 +367,6 @@ LANG.init('zh',
{
zh=require'parts.language.lang_zh',
zh_trad=require'parts.language.lang_zh_trad',
zh_full=require'parts.language.lang_zh_full',
en=require'parts.language.lang_en',
fr=require'parts.language.lang_fr',
es=require'parts.language.lang_es',
@@ -550,6 +550,7 @@ do
if type(SETTING.bg)~='string'then SETTING.bg='on'end
if SETTING.skin[18]==10 then SETTING.skin[18]=4 end
if SETTING.reTime>3 or SETTING.reTime<.5 then SETTING.reTime=2 end
if SETTING.locale=='zh_full' then SETTING.locale='zh' end
if RANKS.infinite then RANKS.infinite=0 end
if RANKS.infinite_dig then RANKS.infinite_dig=0 end
if not RANKS.sprint_10l then RANKS.sprint_10l=0 end

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -19,8 +19,8 @@ function back.draw()
gc.clear(.08,.08,.084)
end
gc.push('transform')
gc.translate(SCR.cx,SCR.cy+20*sin(t*.02))
gc.scale(SCR.k)
gc.replaceTransform(SCR.xOy_m)
gc.translate(0,20*sin(t*.02))
gc.scale(1.26,1.36)
if -t%6.26<.1355 then
gc.translate(60*sin(t*.26),100*sin(t*.626))

View File

@@ -7,18 +7,36 @@ local pcall=pcall
local ins,rem=table.insert,table.remove
local yield=coroutine.yield
local bot_cc={}
function bot_cc:checkDest()
function bot_cc:checkDest(b2b,atk,exblock,yomi)
local dest=self.P.destFX
if not dest then return end
if not (dest.b2b==b2b and dest.attack==atk and dest.extra==exblock) then
print('hope: '..dest.b2b..' '..dest.attack..' '..dest.extra)
print('real: '..b2b..' '..atk..' '..exblock)
print(yomi)
self:lockWrongPlace()
self.P.destFX=nil
return
end
local CB=self.P.cur.bk
for k=1,#dest,2 do
local r=CB[dest[k+1]-self.P.curY+2]
if not r or not r[dest[k]-self.P.curX+2]then
print('wrong place')
self:lockWrongPlace()
self.P.destFX=nil
return
end
end
local should_spawn = self.P:getNextSpawn() - 1
if dest.spawn ~= should_spawn then
assert(dest.spawn > should_spawn)
print('wrong spawn: should be '..dest.spawn..' but '..should_spawn)
print('-- should only happen when camera is going down')
self:lockWrongPlace()
self.P.destFX=nil
return
end
end
function bot_cc:revive()
TABLE.cut(self.P.holdQueue)
@@ -37,10 +55,10 @@ function bot_cc:thread()
ccBot:think()
--Poll keys
local success,result,dest,hold,move
local success,result,dest,hold,move,b2b,attack,extra,spawn
repeat
yield()
success,result,dest,hold,move=pcall(ccBot.getMove,ccBot)
success,result,dest,hold,move,b2b,attack,extra,spawn=pcall(ccBot.getMove,ccBot)
until not success or result==0 or result==2
if not success then break end
if result==2 then
@@ -50,6 +68,10 @@ function bot_cc:thread()
dest[7],dest[8]=dest[2][1],dest[2][2]
dest[1],dest[2]=dest[3][1],dest[3][2]
dest[3],dest[4]=dest[4][1],dest[4][2]
dest.b2b = b2b
dest.attack = attack
dest.extra = extra
dest.spawn = spawn
P.destFX=dest
if hold then--Hold
keys[1]=8
@@ -82,8 +104,16 @@ function bot_cc:updateField()
F[i],i=F0[y][x]>0,i+1
end end
while i<=400 do F[i],i=false,i+1 end
if not pcall(self.ccBot.reset,self.ccBot,F,P.b2b>=100,P.combo)then
local y = P:getNextSpawn()-1
if not pcall(self.ccBot.reset,self.ccBot,F,P.b2b,P.combo,P.stat.pc,P.stat.row,y)then
print("CC is dead ("..P.id..")","error")
for y=#F0,1,-1 do
local s=""
for x=1,10 do
s=s..(F[(y-1)*10+x] and "[]" or "..")
end
print(s)
end
end
end
function bot_cc:switch20G()

View File

@@ -296,8 +296,10 @@ local L={
p9Comb1= 0xF0250,
p9Comb2= 0xF0251,
frameComb= 0xF0252,
s1j= 0xF0253,
s1jBase= 0xF0254,
s1jComb= 0xF0255,
}
}
for _,pack in next,L do

View File

@@ -1,3 +1,28 @@
local function GetLevelStr(lvl)
local list={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","00","0A","14","1E","28","32","3C","46","50","5A","64","6E","78","82","8C","96","A0","AA","B4","BE","C6","20","E6","20","06","21","26","21","46","21","66","21","86","21","A6","21","C6","21","E6","21","06","22","26","22","46","22","66","22","86","22","A6","22","C6","22","E6","22","06","23","26","23","85","A8","29","F0","4A","4A","4A","4A","8D","07","20","A5","A8","29","0F","8D","07","20","60","A6","49","E0","15","10","53","BD","D6","96","A8","8A","0A","AA","E8","BD","EA","96","8D","06","20","CA","A5","BE","C9","01","F0","1E","A5","B9","C9","05","F0","0C","BD","EA","96","38","E9","02","8D","06","20","4C","67","97","BD","EA","96","18","69","0C","8D","06","20","4C","67","97","BD","EA","96","18","69","06","8D","06","20","A2","0A","B1","B8","8D","07","20","C8","CA","D0","F7","E6","49","A5","49","C9","14","30","04","A9","20","85","49","60","A5","B1","29","03","D0","78","A9","00","85","AA","A6","AA","B5","4A","F0","5C","0A","A8","B9","EA","96","85","A8","A5","BE","C9","01","D0","0A","A5","A8","18","69","06","85","A8","4C","BD","97","A5","B9","C9","04","D0","0A","A5","A8","38","E9","02","85","A8","4C","BD","97","A5","A8"}
list[0]="00"
lvl=lvl%256
return list[lvl]
end
local function GetGravity(lvl)
lvl=lvl%256
return
lvl==0 and 48 or
lvl==1 and 43 or
lvl==2 and 38 or
lvl==3 and 33 or
lvl==4 and 28 or
lvl==5 and 23 or
lvl==6 and 18 or
lvl==7 and 13 or
lvl==8 and 8 or
lvl==9 and 6 or
lvl<13 and 5 or
lvl<16 and 4 or
lvl<19 and 3 or
lvl<29 and 2 or
1
end
local gc_setColor=love.graphics.setColor
return{
das=16,arr=6,
@@ -15,8 +40,7 @@ return{
keyCancel={5,6},
mesDisp=function(P)
setFont(75)
local r=P.modeData.target/10
mStr(r<10 and 9 or r<30 and r or("%02x"):format(r*10-300),63,210)
mStr(GetLevelStr(P.modeData.lvl),63,210)
mText(TEXTOBJ.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
if P.modeData.drought>7 then
@@ -32,27 +56,22 @@ return{
end
end,
task=function(P)
P.modeData.lvl=9
P.modeData.target=10
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=5,5
P.gameEnv.sddas,P.gameEnv.sdarr=5,5
if D.target>=100 then
D.lvl=D.lvl+1
end
local dropSpd=GetGravity(D.lvl)
if D.target==200 then P.win('finish') return
elseif dropSpd~=P.gameEnv.drop then
P.gameEnv.drop,P.gameEnv.lock=dropSpd,dropSpd
P.gameEnv.sddas,P.gameEnv.sdarr=dropSpd,dropSpd
SFX.play('warn_2',.7)
elseif D.target==140 then
P.gameEnv.drop,P.gameEnv.lock=4,4
P.gameEnv.sddas,P.gameEnv.sdarr=4,4
SFX.play('warn_2',.7)
elseif D.target==170 then
P.gameEnv.drop,P.gameEnv.lock=3,3
P.gameEnv.sddas,P.gameEnv.sdarr=3,3
SFX.play('warn_2',.7)
elseif D.target==200 then
P:win('finish')
return
else
SFX.play('reach')
end

View File

@@ -1,3 +1,28 @@
local function GetLevelStr(lvl)
local list={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","00","0A","14","1E","28","32","3C","46","50","5A","64","6E","78","82","8C","96","A0","AA","B4","BE","C6","20","E6","20","06","21","26","21","46","21","66","21","86","21","A6","21","C6","21","E6","21","06","22","26","22","46","22","66","22","86","22","A6","22","C6","22","E6","22","06","23","26","23","85","A8","29","F0","4A","4A","4A","4A","8D","07","20","A5","A8","29","0F","8D","07","20","60","A6","49","E0","15","10","53","BD","D6","96","A8","8A","0A","AA","E8","BD","EA","96","8D","06","20","CA","A5","BE","C9","01","F0","1E","A5","B9","C9","05","F0","0C","BD","EA","96","38","E9","02","8D","06","20","4C","67","97","BD","EA","96","18","69","0C","8D","06","20","4C","67","97","BD","EA","96","18","69","06","8D","06","20","A2","0A","B1","B8","8D","07","20","C8","CA","D0","F7","E6","49","A5","49","C9","14","30","04","A9","20","85","49","60","A5","B1","29","03","D0","78","A9","00","85","AA","A6","AA","B5","4A","F0","5C","0A","A8","B9","EA","96","85","A8","A5","BE","C9","01","D0","0A","A5","A8","18","69","06","85","A8","4C","BD","97","A5","B9","C9","04","D0","0A","A5","A8","38","E9","02","85","A8","4C","BD","97","A5","A8"}
list[0]="00"
lvl=lvl%256
return list[lvl]
end
local function GetGravity(lvl)
lvl=lvl%256
return
lvl==0 and 48 or
lvl==1 and 43 or
lvl==2 and 38 or
lvl==3 and 33 or
lvl==4 and 28 or
lvl==5 and 23 or
lvl==6 and 18 or
lvl==7 and 13 or
lvl==8 and 8 or
lvl==9 and 6 or
lvl<13 and 5 or
lvl<16 and 4 or
lvl<19 and 3 or
lvl<29 and 2 or
1
end
local gc_setColor=love.graphics.setColor
return{
das=16,arr=6,
@@ -15,8 +40,7 @@ return{
keyCancel={5,6},
mesDisp=function(P)
setFont(75)
local r=P.modeData.target/10
mStr(r<11 and 18 or r<22 and r+8 or("%02x"):format(r*10-220),63,210)
mStr(GetLevelStr(P.modeData.lvl),63,210)
mText(TEXTOBJ.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
if P.modeData.drought>7 then
@@ -32,19 +56,22 @@ return{
end
end,
task=function(P)
P.modeData.lvl=18
P.modeData.target=10
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.gameEnv.drop,P.gameEnv.lock=2,2
P.gameEnv.sddas,P.gameEnv.sdarr=2,2
if D.target>=100 then
D.lvl=D.lvl+1
end
local dropSpd=GetGravity(D.lvl)
if D.target==200 then P.win('finish') return
elseif dropSpd~=P.gameEnv.drop then
P.gameEnv.drop,P.gameEnv.lock=dropSpd,dropSpd
P.gameEnv.sddas,P.gameEnv.sdarr=dropSpd,dropSpd
SFX.play('warn_1')
elseif D.target==200 then
P:win('finish')
return
else
SFX.play('reach')
end

View File

@@ -1,23 +1,46 @@
local function GetLevelStr(lvl)
local list={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","00","0A","14","1E","28","32","3C","46","50","5A","64","6E","78","82","8C","96","A0","AA","B4","BE","C6","20","E6","20","06","21","26","21","46","21","66","21","86","21","A6","21","C6","21","E6","21","06","22","26","22","46","22","66","22","86","22","A6","22","C6","22","E6","22","06","23","26","23","85","A8","29","F0","4A","4A","4A","4A","8D","07","20","A5","A8","29","0F","8D","07","20","60","A6","49","E0","15","10","53","BD","D6","96","A8","8A","0A","AA","E8","BD","EA","96","8D","06","20","CA","A5","BE","C9","01","F0","1E","A5","B9","C9","05","F0","0C","BD","EA","96","38","E9","02","8D","06","20","4C","67","97","BD","EA","96","18","69","0C","8D","06","20","4C","67","97","BD","EA","96","18","69","06","8D","06","20","A2","0A","B1","B8","8D","07","20","C8","CA","D0","F7","E6","49","A5","49","C9","14","30","04","A9","20","85","49","60","A5","B1","29","03","D0","78","A9","00","85","AA","A6","AA","B5","4A","F0","5C","0A","A8","B9","EA","96","85","A8","A5","BE","C9","01","D0","0A","A5","A8","18","69","06","85","A8","4C","BD","97","A5","B9","C9","04","D0","0A","A5","A8","38","E9","02","85","A8","4C","BD","97","A5","A8"}
list[0]="00"
lvl=lvl%256
return list[lvl]
end
local function GetGravity(lvl)
lvl=lvl%256
return
lvl==0 and 48 or
lvl==1 and 43 or
lvl==2 and 38 or
lvl==3 and 33 or
lvl==4 and 28 or
lvl==5 and 23 or
lvl==6 and 18 or
lvl==7 and 13 or
lvl==8 and 8 or
lvl==9 and 6 or
lvl<13 and 5 or
lvl<16 and 4 or
lvl<19 and 3 or
lvl<29 and 2 or
1
end
local gc_setColor=love.graphics.setColor
return{
das=16,arr=6,
sddas=2,sdarr=2,
sddas=2,sdarr=2,
irs=false,ims=false,
drop=2,
lock=2,
wait=10,
fall=25,
drop=2,lock=2,
wait=10,fall=25,
freshLimit=0,
fieldH=19,
nextCount=1,holdCount=0,
nextCount=1,
holdCount=0,
RS='Classic',
sequence='rnd',
noTele=true,
keyCancel={5,6},
mesDisp=function(P)
setFont(75)
local r=P.modeData.target/10
mStr(r<11 and 19 or r<22 and r+9 or("%02x"):format(r*10-220),63,210)
mStr(GetLevelStr(P.modeData.lvl),63,210)
mText(TEXTOBJ.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
if P.modeData.drought>7 then
@@ -33,19 +56,25 @@ return{
end
end,
task=function(P)
P.modeData.lvl=19
P.modeData.target=10
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
D.target=D.target+10
if D.target==200 then
P.gameEnv.drop,P.gameEnv.lock=1,1
SFX.play('blip_1')
--if D.target>=200 then
D.lvl=D.lvl+1
--end
local dropSpd=GetGravity(D.lvl)
if dropSpd~=P.gameEnv.drop then
P.gameEnv.drop,P.gameEnv.lock=dropSpd,dropSpd
P.gameEnv.sddas,P.gameEnv.sdarr=dropSpd,dropSpd
SFX.play('warn_1')
else
SFX.play('reach')
end
D.target=D.target+10
end
end,
}
end
}

View File

@@ -1,3 +1,28 @@
local function GetLevelStr(lvl)
local list={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","00","0A","14","1E","28","32","3C","46","50","5A","64","6E","78","82","8C","96","A0","AA","B4","BE","C6","20","E6","20","06","21","26","21","46","21","66","21","86","21","A6","21","C6","21","E6","21","06","22","26","22","46","22","66","22","86","22","A6","22","C6","22","E6","22","06","23","26","23","85","A8","29","F0","4A","4A","4A","4A","8D","07","20","A5","A8","29","0F","8D","07","20","60","A6","49","E0","15","10","53","BD","D6","96","A8","8A","0A","AA","E8","BD","EA","96","8D","06","20","CA","A5","BE","C9","01","F0","1E","A5","B9","C9","05","F0","0C","BD","EA","96","38","E9","02","8D","06","20","4C","67","97","BD","EA","96","18","69","0C","8D","06","20","4C","67","97","BD","EA","96","18","69","06","8D","06","20","A2","0A","B1","B8","8D","07","20","C8","CA","D0","F7","E6","49","A5","49","C9","14","30","04","A9","20","85","49","60","A5","B1","29","03","D0","78","A9","00","85","AA","A6","AA","B5","4A","F0","5C","0A","A8","B9","EA","96","85","A8","A5","BE","C9","01","D0","0A","A5","A8","18","69","06","85","A8","4C","BD","97","A5","B9","C9","04","D0","0A","A5","A8","38","E9","02","85","A8","4C","BD","97","A5","A8"}
list[0]="00"
lvl=lvl%256
return list[lvl]
end
local function GetGravity(lvl)
lvl=lvl%256
return
lvl==0 and 48 or
lvl==1 and 43 or
lvl==2 and 38 or
lvl==3 and 33 or
lvl==4 and 28 or
lvl==5 and 23 or
lvl==6 and 18 or
lvl==7 and 13 or
lvl==8 and 8 or
lvl==9 and 6 or
lvl<13 and 5 or
lvl<16 and 4 or
lvl<19 and 3 or
lvl<29 and 2 or
1
end
local gc_setColor=love.graphics.setColor
return{
das=16,arr=6,
@@ -15,8 +40,7 @@ return{
keyCancel={5,6},
mesDisp=function(P)
setFont(75)
local r=P.modeData.target/10
mStr(r==1 and 29 or("%02x"):format(r*10-20),63,210)
mStr(GetLevelStr(P.modeData.lvl),63,210)
mText(TEXTOBJ.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
if P.modeData.drought>7 then
@@ -32,18 +56,17 @@ return{
end
end,
task=function(P)
P.modeData.lvl=29
P.modeData.target=10
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')
return
end
D.target=D.target+10
if P.stat.row>=D.target then
if D.target>=200 then P.win('finish') return end
SFX.play('reach')
D.lvl=D.lvl+1
D.target=D.target+10
end
end,
}

View File

@@ -110,7 +110,7 @@ return{
lock=30,
wait=23,
fall=25,
noTele=true,
keyCancel={10,11,12,14,15,16,17,18,19,20},
das=16,arr=1,
minsdarr=1,
ihs=true,irs=true,ims=false,
@@ -119,24 +119,34 @@ return{
setFont(45)
mText(TEXTOBJ.grade,63,180)
setFont(60)
mStr(getGrade(),63,110)
mStr(getGrade(),63,110) -- draw grade
for i=1,10 do -- draw cool/regret history
if not (coolList[i] or regretList[i]) then -- neither cool nor regret
gc.setColor(0.6,0.6,0.6,P.modeData.pt<(i-1)*100 and 0.25 or 0.6)
else
gc.setColor(regretList[i] and 1 or 0, coolList[i] and 1 or 0, 0, 1)
end
gc.circle('fill',-10,150+i*25,10)
gc.setColor(1,1,1,1)
end
if isInRoll then
setFont(20)
mStr(("%.1f"):format(rollGrades),63,208)
mStr(("%.1f"):format(rollGrades),63,208) -- draw roll grades
gc.setLineWidth(2)
gc.setColor(.98,.98,.98,.8)
gc.rectangle('line',0,240,126,80,4)
gc.setColor(.98,.98,.98,.4)
gc.rectangle('fill',0+2,240+2,126-4,80-4,2)
gc.rectangle('fill',0+2,240+2,126-4,80-4,2) -- draw time box
setFont(45)
local t=(P.stat.frame-prevSectTime)/60
local T=("%.1f"):format(60-t)
gc.setColor(COLOR.dH)
mStr(T,65,250)
mStr(T,65,250) -- draw time
t=t/60
gc.setColor(1.7*t,2.3-2*t,.3)
mStr(T,63,248)
else
-- draw level counter
setFont(20)
mStr(grade_points,63,208)
setFont(45)
@@ -228,7 +238,7 @@ return{
BG.set('lightning')
elseif s>9 then
if cools>8 then
E.lockFX=E.lockFX>1 and 1 or E.lockFX
if E.lockFX and E.lockFX>1 then E.lockFX=1 end
P:setInvisible(5)
else
P:setInvisible(300)
@@ -267,7 +277,7 @@ return{
YIELD()
P.modeData.grade=getGrade()
P.modeData.gradePts=math.max(math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList),1)
if P.stat.frame-prevSectTime > reg_time[math.ceil(P.modeData.pt/100+0.01)] then
if P.stat.frame-prevSectTime > reg_time[math.ceil(P.modeData.pt/100+0.01)] and not (isInRoll or isInRollTrans) then
regretList[math.ceil(P.modeData.pt/100)]=true
end
if regretDelay>-1 then

View File

@@ -20,7 +20,13 @@ return{
local D=P.modeData
local c=#P.clearedRow
if c==0 and D.pt%100==99 then return end
if c==0 and D.pt%100==99 then
if D.pt<1000 then
hidetimer=0-inv_wait[(P.modeData.pt/100-(P.modeData.pt%100)/100)+1]
if c>0 then hidetimer=hidetimer-inv_fall[(P.modeData.pt/100-(P.modeData.pt%100)/100)+1]end
end
return
end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
@@ -50,6 +56,8 @@ return{
elseif s==7 then
E.das=6
BGM.play('far')
elseif s==8 then
BG.set('none')
elseif s==10 then
D.pt=1000
P:win('finish')

View File

@@ -0,0 +1,54 @@
local gc_setColor,gc_draw=love.graphics.setColor,love.graphics.draw
local ply_applyField=PLY.draw.applyField
local function GetOpenHole(num)
return -math.abs(((num-1) % 18)-9)+10
end
local F={}
local ranks={"10","9","8","7","6","5","4","3","2","1","S1","S2","S3","S4","S5","S6","S7","S8","S9","GM","GM+","TM","TM+","TM+₂","TM+₃", "TM+₄","TM+₅"}
-- lines: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
return{
fkey1=function(P)P.modeData.showGuide=not P.modeData.showGuide end,
mesDisp=function(P)
mText(TEXTOBJ.grade,63,190)
setFont(55)
mStr(ranks[P.modeData.rankPts],63,125)
ply_applyField(P)
local mark=TEXTURE.puzzleMark
gc_setColor(1,1,1)
if P.modeData.showGuide then
for y=1,P.modeData.rankPts+1 do for x=1,10 do
local T=F[y][x]
if T~=0 then
gc_draw(mark[T],30*x-30,600-30*y)
end
end end
end
PLY.draw.cancelField(P)
end,
task=function(P)
P.modeData.rankPts=1
P.modeData.showGuide=true
for i=1,50 do
F[i] = {}
local h=GetOpenHole(i)
for j=1,10 do
F[i][j]=h==j and -1 or 21
end
end
end,
hook_drop=function(P)
local D=P.modeData
D.rankPts=1
for i=1,#P.field do
local h=GetOpenHole(i)
for j=1,10 do
if P.field[i][j]>0 and h==j then return end
if P.field[i][j]==0 and h~=j then return end
end
if i==#P.field then return end
if P.field[i+1][h]==0 then return end
D.rankPts=D.rankPts+1
end
end
}

Binary file not shown.

View File

@@ -714,7 +714,7 @@ do--function resetGameData(args)
local gameSetting={
--Tuning
'das','arr','dascut','dropcut','sddas','sdarr',
'ihs','irs','ims','RS','FTLock',
'ihs','irs','ims','RS',
--System
'skin','face',
@@ -943,7 +943,7 @@ do--CUS/SETXXX(k)
local warnList={
'das','arr','dascut','dropcut','sddas','sdarr',
'ihs','irs','ims','RS',
'FTLock','frameMul','highCam',
'frameMul','highCam',
'VKSwitch','VKIcon','VKTrack','VKDodge',
'simpMode',
}

View File

@@ -536,7 +536,6 @@ do--Game data tables
ROOMENV={
--Room config
capacity=10,
FTLock=true,
--Basic
drop=30,lock=60,
@@ -591,7 +590,6 @@ do--Userdata tables
ihs=true,irs=true,ims=true,
holdMode='hold',
RS='TRS',
FTLock=true,
--System
reTime=2,

File diff suppressed because it is too large Load Diff

View File

@@ -77,130 +77,130 @@ return{
{"テトリスオンラインサーバー",
"tetrisonline servers サーバー テトリスオンライン",
"org",
"ポーランドのサーバーにアクセスするには \"Tetris Online Poland\" とGoogleで検索してください.\n地球儀のアイコンからテトリスオンライン研究サーバーの情報にアクセスできます。",
"ポーランドのサーバーにアクセスするには \"Tetris Online Poland\" とGoogleで検索してください\n地球儀のアイコンからテトリスオンライン研究サーバーの情報にアクセスできます。",
"http://teatube.ltd/tos",
},
{"サポート1",
"support wechat vx alipay zfb サポート",
"support wechat vx alipay zfb サポート 寄付 支援",
"org",
FNNS and "This feature is restricted due to platform policy restrictions. You may discuss about this feature in our Discord server." or "To donate to Techmino via WeChat Pay or Alipay, type \"support\" in console.",
FNNS and "この機能はプラットフォームのポリシー制限が原因で使えません。うちらのDiscordサーバーでこの機能に関して話してください。" or "WechatやAlipayでTechminoに寄付する場合、コンソール内で「support」と打ってください。",
},
{"Support 2",
"support afdian",
{"サポート2",
"support afdian サポート 寄付 支援",
"org",
FNNS and "This feature is restricted due to platform policy restrictions. You may discuss about this feature in our Discord server. The URL in this entry is a rickroll, by the way." or "To donate to Techmino via Aifadian, use the globe icon on the bottom right to open URL. Aifadian charges 6% transaction fee off your purchase.",
FNNS and "この機能はプラットフォームのポリシー制限が原因で使えません。うちらのDiscordサーバーでこの機能に関して話してください。ちなみに、ここにあるURLはリックくんです。" or "AifadianでTechminoに寄付する場合、 右下の地球儀のアイコンからURLを開いてください。注意としてAifadianは支払いの際に6%の手数料が取られます。",
FNNS and"https://youtu.be/dQw4w9WgXcQ"or"https://afdian.net/@MrZ_26",
},
{"Support 3",
"support p\97\116\114\101\111\110",
{"サポート3",
"support サポート 寄付 支援 p\97\116\114\101\111\110",
"org",
FNNS and "This feature is restricted due to platform policy restrictions. You may discuss about this feature in our Discord server. The URL in this entry is a rickroll, by the way." or "To donate to Techmino via P\97\116\114\101\111\110, use the globe icon on the bottom right to open URL. P\97\116\114\101\111\110 charges 7.9% + 0.30 USD transaction fee off your purchase that is greater than 3 USD.",
FNNS and "この機能はプラットフォームのポリシー制限が原因で使えません。うちらのDiscordサーバーでこの機能に関して話してください。ちなみに、ここにあるURLはリックくんです。" or "P\97\116\114\101\111\110でTechminoに寄付する場合、 右下の地球儀のアイコンからURLを開いてください。注意としてP\97\116\114\101\111\110は支払いの際に7.9%の手数料、さらに3ドル以上の支払いの際に0.30米ドル分の手数料が取られます。",
FNNS and"https://youtu.be/dQw4w9WgXcQ"or"https://www.p\97\116\114\101\111\110.com/techmino",
},
--Games
{"TTT",
"tetris trainer tres bien",
{"テトリス トレーナー トレビアン (TTT)",
"tetris trainer tres bien テトリス トレーナー トレビアン",
"game",
"Tetris Trainer Très-Bien. A hands-on tutorial of advanced techniques in modern Tetris.\nRecommended for players that can complete a 40-line Sprint with all Tetris line clears and no hold.\nCovered topics include T-Spin, finesse, SRS, and some battle setups.\nLink in Japanese.",
"テトリス トレーナー トレビアン。現代テトリスの複雑な技を実践的に学ぶことができるサイトです。\n40ラインスプリントをホールド無しで全部テトリスでクリアできる人にオススメです。\nT-Spin、効率、SRS、対戦での地形戦略等の項目があります。\n日本語のサイトです。",
"http://taninkona.web.fc2.com/ttt/",
},
{"TTPC",
"tetris perfect clear challenge",
"tetris perfect clear challenge テトリス パーフェクトクリア パフェ チャレンジ",
"game",
"Tetris Perfect Clear Challenge. The PC opener tutorial for SRS and 7-Bag.\nRecommended for players that have completed TTT. You need to know SRS to play this.\nIncludes only the basic PC opener.\nLink translated to Simplified Chinese; originally in Japanese.",
"テトリスパーフェクトクリアチャレンジ。SRSと7-Bagを採用した開幕パーフェクトクリアの学習用サイトです。\nテトリストレーナートレビアンをクリアした人達にオススメです。SRSと言う回転システムを知る必要があります。\n基本的な開幕パーフェクトクリアのテンプレしかありません。\n簡体字に翻訳されており、元の文章は日本語です。",
"http://teatube.ltd/ttpc",
},
{"NAZO",
"nazo",
"game",
"All sorts of SRS puzzles. Recommended for players that have completed TTT.\nHas T-Spin and all spin puzzles of all difficulties.\nLink translated to Simplified Chinese; originally in Japanese.",
"SRSに関して色々なパズルを備えています。テトリストレーナートレビアンをクリアした人達にオススメです。\nT-SpinやAll Spin等の問題を多様の難しさを備えています。\n簡体字に翻訳されており、元の文章は日本語です。",
"http://teatube.ltd/nazo",
},
{"Side Note 1",
"note nb NB DM notice",
{"補足1",
"note nb NB DM notice 補足 注意",
"game",
"The following contents are some brief introductions about some official and fan-made Tetris games with high popularity. We make absolutely no guarantees that they would cover every Tetris game. Also, the author of this game has made some comments on some of these games. Notice that they are just personal opinions and cannot be used to judge the qualities of these games. To better differentiate between the facts and opinions, all the commentary contents are enclosed with square brackets and are separated from the main contents.",
"次からの内容は人気が高い公式とファンテトリスゲームの簡単な説明です。うちらが全てのテトリスゲームをカバーできる保障は絶対にありません。後、このゲームの作者達がいくつかのゲームに対してコメントしています。お察しの通り個人的な意見であり、これらのゲームに対しての評価等には使えません。上手く事実と意見を分ける為、意見文にはカギカッコで囲まれており、更に本文と独立して書かれています。",
},
{"King of Stackers",
"kos kingofstackers",
"kos kingofstackers キングオブスタッカーズ",
"game",
"Browser Game | Multiplayer | Mobile Support\nKoS for short. A turn-based battle Tetris game. In this game, the players can place seven tetrominoes in his or her turn, and garbage lines can enter the field only if the player places a block that does not clear a line. This game requires careful thinking and there are multiple modes with different attack mechanics.",
"ブラウザーゲーム | マルチプレイ | 携帯サポートあり\n通称: KoS。ターン制の対戦型テトリスゲームです。このゲームでは、プレイヤーは自身のターンの時に7つのミを置くことができます、更にもしプレーヤがミを一つ置いてラインをクリアできなかった場合、フィールドの中にお邪魔が入ってきます。 このゲームではかなりの思考力が求められます、更にそれぞれ別々の火力システムを採用したゲームモードが沢山あります。",
"https://kingofstackers.com/games.php",
},
{"Tetr.js",
"tetrjs tetr.js",
"game",
"Browser Game | Singleplayer | Mobile Support\nA browser-based Tetris game. It has many professional tunings and many modes, but the visuals are simple and there are barely any animations; besides that, only a few on-screen control schemes are available to mobile.\nLink to Farter's Dig Mod, which itself is a mod of another version. Also has another mod called Tetr.js Enhanced (You can find the link on Tetris Wiki).",
"ブラウザーゲーム | シングルプレイ | 携帯サポートあり\nブラウザーベースのテトリスゲームです。様々な高度な設定やゲームモードを要しております、しかしビジュアル面では簡素でアニメーションも殆どありません。それとは別に、モバイルで利用できる画面の操作方法はそれ程多くありません。\nリンク先は他のバージョンを改造・Mod化した「Farter's Dig Mod」です。更に別のMod版「Tetr.js Enhanced」もあります。 (Tetris Wikiにてリンクがあります)。",
"http://farter.cn/t",
},
{"Tetra Legends",
"tl tetralegends",
"tl tetralegends テトラレジェンズ",
"game",
"Browser Game | Singleplayer | No Mobile Support\nOr TL for short. It has many single-player modes, two hidden rhythm modes, and visualizes many hidden mechanics with rich animations. The development of this game was halted for multiple reasons in December 2020.",
"ブラウザーゲーム | シングルプレイ | 携帯サポートなし\n省略として「TL」。沢山のシングルプレイ用のモード、2つの隠し要素のリズムゲーム、更に豪華なアニメーションと一緒に沢山の隠れ絡繰りなどが盛り込まれています。12月の2020年、沢山の不都合によりこのゲームの開発が頓挫しました。",
"https://tetralegends.app",
},
{"Ascension",
"asc ASC",
"asc ASC アスセンクション",
"game",
"Browser Game | Singleplayer/Multiplayer\nOr ASC for short. It uses its own rotation system (also called ASC) and has many single-player modes. Battle modes are currently under beta testing (15/Dec/2021). The Stack mode in this game was also inspired by Ascension. ",
"ブラウザーゲーム | シングルプレイ/マルチプレイ\n省略として「ASC」。独自の回転システム (これの名前も「ASC) を採用しており更には沢山のシングルプレイ用のモードを兼ね揃えています。12月15日2021年現在、バトルモードは現在の所、Beta開発中であります。Techminoにある「スタックモード」はこのゲームからアイデアを取っています。",
"https://asc.winternebs.com",
},
{"Jstris",
"js jstris",
"js jstris ジェストリス",
"game",
"Browser Game | Singleplayer/Multiplayer | Mobile Support\nOr JS for short. It has some single-player modes with multiple customizable parameters, Adjustable virtual keys layouts for mobile, but it doesn't have any animation. ",
"ブラウザーゲーム | シングルプレイ/マルチプレイ | 携帯サポートあり\n省略として「Js」。いくつかの変数をいじれるシングルプレイ用のゲームモードがいくつかあり、モバイル用のバーチャルキーも設定できますが、アニメーションはありません。",
"https://jstris.jezevec10.com",
},
{"TETR.IO",
"io tetrio tetr.io",
"io tetrio tetr.io テトリオ",
"game",
"Browser Game | Singleplayer/Multiplayer\nOr IO for short. It has a ranking system and custom game with many adjustable parameters. Also, it provides desktop clients for improved performances and no ads.\n[It seems that Safari cannot open this game.]",
"ブラウザーゲーム | シングルプレイ/マルチプレイ\n省略として「IO (イオ)」。 ランキングシステムを備えており、沢山の変数をいじれるカスタムゲームもあります。更にパフォーマンス上昇と広告を消すことができるデスクトップ用のクライアント (ソフトウェア) もあります。\n[どうやらSafariではこのゲームを開けないらしい。]",
"https://tetr.io",
},
{"Nuketris",
"nuketris",
"nuketris ヌケトリス ヌークトリス",
"game",
"*Browser Game | Singleplayer/Multiplayer\nA block stacker game with 1V1 ranked matches and basic single-player modes.",
"ブラウザーゲーム | シングルプレイ/マルチプレイ\n1対1のランクマッチと基本的なシングルプレイモードがあるブロック積み上げゲームです。",
"https://nuketris.herokuapp.com",
},
{"Worldwide Combos",
"wwc worldwidecombos",
"wwc worldwidecombos ワールドワイドコンボ 連",
"game",
"Browser Game | Singleplayer/Multiplayer\nOr WWC for short. It has worldwide 1V1 ranked matches, recorded battles (which means that your opponent doesn't have to be a real person), many different rulesets, and bomb-handicapped garbage lines.",
"ブラウザーゲーム | シングルプレイ/マルチプレイ\n省略として「WWC」。このゲームは1対1のランクマッチ、過去とのバトルつまり相手が本当の人でなくてもできる、沢山のルールセット、そしてハンディキャップされた爆弾お邪魔ラインなどがあります。",
"https://worldwidecombos.com",
},
{"Tetris Friends",
"tf tetrisfriends notrisfoes",
"tf tetrisfriends notrisfoes テトリスフレンズ ノートリスフォーズ",
"game",
"Browser Game | Singleplayer/Multiplayer\n or TF for short, a now-defunct official Tetris game. Used to be a popular game but now nobody plays it because the website was shut down. However an unofficial private server known as \"Notris Foes\" still exists and you will need to download desktop client for full experiences.",
"ブラウザーゲーム | シングルプレイ/マルチプレイ\n省略として「TF」、営業停止した公式テトリスゲームです。元々このゲーム自体は有名でしたが、ウェブサイトの閉鎖と共に遊べなくなりました。しかし、非公式のプライベートサーバー、通称: \"Notris Foes\"、が未だに存在しており、これを遊ぶにはデスクトップのクライアントをダウンロードする必要があります。",
},
{"tetris.com",
"tetris online official",
"tetris online official テトリス オンライン 公式 こうしき コウシキ",
"game",
"Browser Game | Singleplayer\nThe Tetris game on tetris.com. It only has one mode — marathon, and you can control the game with your mouse.",
"ブラウザーゲーム | シングルプレイ\ntetris.comにあるテトリスゲーム。「マラソン」しかモードがなく、マウスでコントロールできるのが特徴。",
},
{"Tetris Gems",
"tetris online official gem",
"tetris online official gem テトリス オンライン 公式 こうしき コウシキ ジェム",
"game",
"Browser Game | Singleplayer\nAnother Tetris game from tetris.com. It has the gravity mechanism, and each game lasts for 1 minute. There are three kinds of gem blocks with different abilities.",
"ブラウザーゲーム | シングルプレイ\ntetris.comにあるテトリスゲーム。重力システムがあり、それぞれのゲームは1分あります。3種類のジェムブロックがあり、それぞれ別の機能があります。",
},
{"Tetris Mind Bender",
"tetris online official gem",
"tetris online official gem テトリス オンライン 公式 こうしき コウシキ ジェム",
"game",
"Browser Game | Singleplayer\nAnother Tetris game from tetris.com. It introduced \"Mind Bender\" minoes on the basis of marathon mode. Clearing a line with a Mind Bender mino will give you either a good or bad effect.",
"ブラウザーゲーム | シングルプレイ\ntetris.comにあるテトリスゲーム. \"Mind Bender\"(マインドベンダー)ミノという機能がマラソンモードを中心にあり。マインドベンダーミノでラインクリアすると良い・悪いのどちらかの効果が発揮します。",
},
{"Techmino",
"techmino",
"techmino テックミノ",
"game",
"Cross-Platform | Singleplayer/Multiplayer\nOr Tech for short. A block stacker game developed using LÖVE. It has many single-player modes and many customizable parameters, and online multiplayer modes are gradually being developed.",
"クロスプラットフォーム | シングルプレイ/マルチプレイ\n通称「テック」。LÖVEという開発ソフトでできたブロック積み上げゲーム。沢山の変数変更可能なシングルプレイモードがたくさんあり、オンライン機能も徐々に開発されています。",
},
{"Falling Lightblocks",
"fl fallinglightblocks",
"fl fallinglightblocks フォーリング ライトブロックス",
"game",
"Browser Game/iOS/Android | Singleplayer/Multiplayer\n A cross-platform Tetris game that can be played in portrait and landscape modes. It has fixed DAS and line clear ARE. Has some customizable controls on mobile. Most of the game modes are designed based on NES classic Tetris, but there are some modern-ish modes. Battles are half turn-based, half real-time, and garbage cannot be buffered or canceled.",
"ブラウザーゲーム/iOS/アンドロイド | シングルプレイ/マルチプレイ\n A cross-platform Tetris game that can be played in portrait and landscape modes. It has fixed DAS and line clear ARE. Has some customizable controls on mobile. Most of the game modes are designed based on NES classic Tetris, but there are some modern-ish modes. Battles are half turn-based, half real-time, and garbage cannot be buffered or canceled.",
"https://golfgl.de/lightblocks/",
},
{"Cambridge",
@@ -890,6 +890,12 @@ return{
"term",
"Any input device takes some time for the input to reach the game. This delay can range from a few milliseconds to a few dozen milliseconds.\nIf input delay is too long, the controls can feel uncomfortable.\nThis delay is often due to the performance of the hardware and software used, and often out of your control. Turn on performance mode (or turn off power saving mode) on your device, and turn on gaming mode on your monitor/TV (if you have one), may help reducing input delay.",
},
{"Secret Grade",
"larger than",
"term",
"",
HDsearch.."Secret_Grade_Techniques",
},
{"Cold Clear",
"cc coldclear ai bot",
"term",
@@ -1129,7 +1135,7 @@ return{
{"Amemiya Taiyou",
"amemiya taiyou",
"name",
"(あめみや たいよう)\n\nOne of the top players.\nWon champion on a game in Puyo Puyo Tetris's Swap mode.",
"(あめみや たいよう)\n\nOne of the top players.\nWon champion on a game in Puyo Puyo Tetris's Swap mode.",
},
{"Ajanba",
"ajb",

View File

@@ -1,12 +1,17 @@
local HDsearch="https://harddrop.com/wiki?search="
local HDwiki="\t更多内容见Hard Drop Wiki。"
local HDwiki="\n更多内容见Hard Drop Wiki。"
return{
{"新人须知",
"读我 必读 萌新 xinren new noob readme",
"help",
"致想深入玩下去的新人:\n\n\t两大根本原则:\n\t\t1. 选手感好的版本Tech/Tetr.io/Jstris/TOP/Tetr.js别用编程练习渣版本\n\t\t2. 踏实打好基础预判next稳定消四等别总想着炫酷T旋对未来发展没好处。\n\t两大主要技巧:\n\t\t1. 熟悉初始位置以及到各个位置的初始操作;\n\t\t2. 提前计算好下一块能放哪。\n\n推荐阅读专栏《给TOP新人的几点建议》\n\n[点击右下角地球按钮打开链接]",
"致想深入玩下去的新人:\n\n\t两大根本原则:\n\t\t1. 选手感好的版本Tech/Tetr.io/Jstris/TOP/Tetr.js别用编程练习渣版本\n\t\t2. 踏实打好基础预判next稳定消四等别总想着炫酷T旋对未来实力提升没好处。\n\t两大主要技巧:\n\t\t1. 熟悉初始位置以及到各个位置的初始操作;\n\t\t2. 提前计算好下一块能放哪。\n\n推荐阅读专栏《给TOP新人的几点建议》\n\n[点击右下角地球按钮打开链接]",
"https://bilibili.com/read/cv2352939",
},
{"新人学习/练习路线",
"读我 必读 萌新 xinren new noob readme",
"help",
"以下是关于提升真正打块能力的指引,如果在以下任何项目练习过程中感到有困难,可以适当回去玩玩自己喜欢的项目。别忘了你是来“玩”游戏的,兴趣最重要。\n\n以下给出几个新手时期的主线任务树前期主要就应该练习以下内容学定式和T-Spin什么的对实力帮助很小我们不认为靠定式对战秒其他萌新是有效实力\n注意三段应当同时进行不是A→B→C\n\nA. 堆叠能力练习方法\n\tA1. 决定手上的块放哪的时候先别,看看下一块有没有地方放,如果放不下去,重新想手上的\n\tA2. 尝试把地形尽量控制得平整,因为比较平的地形来啥块都比较容易放得下去\n\nB. 操作效率与速度练习方法\n\tB1. 不要每一块都拿影子去对形状对位置,要自己想象这个块转一下是什么方向,想好了再开始按按键\n\tB2. 学习双旋,能逆时针转一次就不要顺时针转三次,费手\n\tB3. 学习极简,刚开始不用管速度,保证正确率最重要,养成良好习惯以后再提速快得很\n\nC. 堆叠能力考核\n\tC1. 稳定完成40行不死\n\tC2. 稳定不用hold完成40行\n\tC3. 稳定全消四完成40行\n\tC4. 稳定不用hold全消四完成40行\n\n以上都是根据社区和个人经验总结的模糊方法与目标所以C的考核可以根据自身情况调整严格程度例如“稳定”的具体成功率\n完成C的考核后需要在未来一直注意没有上限的A1这是方块的根本元素之一强大的读next能力可以让你快速上手任何变种玩法。",
},
{"关于T-spin学习",
"T旋 T转 tspin",
"help",
@@ -59,7 +64,7 @@ return{
{"研究群",
"yanjiu study research",
"org",
"俄罗斯方块·[研究]群QQ号112897780“中国俄罗斯方块总群”",
"俄罗斯方块·[研究]群QQ号112897780 “中国俄罗斯方块总群” ",
},
{"Mew据点",
"mew tieba forum",
@@ -115,7 +120,7 @@ return{
{"注[1]",
"备注 notice",
"game",
"以下内容是为部分官方和较高人气同人方块游戏的简介。\n其中可能包含一些只代表个人观点的主观评价写在方括号里面,请不要根据这些评论直接认定游戏的好坏",
"以下内容是为部分官方和较高人气同人方块游戏的简介。\n其中可能包含一些只代表个人观点的主观评价写在方括号里仅供参考,顺便也请不要因为某个方面有欠缺就直接认为 “这个游戏不好” ",
},
{"King of Stackers",
"回合制 网页 手机 kos kingofstackers",
@@ -277,7 +282,7 @@ return{
{"Touhoumino",
"东方 车万 偷猴 chewan dongfang th",
"game",
"Windows | 单机\n块圈玩家自制方块一个Nullpomino的自带资源包的改版将东方Project元素与俄罗斯方块结合。马拉松模式结合了东方Project里的”符卡”机制需要在一定时间内达成目标分数才能击破。\n[难度较大,适合有方块基础并且各项能力都较强的玩家游玩(不然都不知道自己怎么死的)。]",
"Windows | 单机\n块圈玩家自制方块一个Nullpomino的自带资源包的改版将东方Project元素与俄罗斯方块结合。马拉松模式结合了东方Project里的” 符卡” 机制,需要在一定时间内达成目标分数才能击破。\n[难度较大,适合有方块基础并且各项能力都较强的玩家游玩(不然都不知道自己怎么死的)。]",
},
{"Tetris Blitz",
"闪电战 ea",
@@ -292,7 +297,7 @@ return{
{"Tetris Beat",
"节奏 n3twork",
"game",
"iOS | 单机\nN3TWORK代理的一款移动端方块。除了马拉松以外游戏还有一个“Beat”模式但只需根据BGM的节奏落块就可以得到额外分数。\n[特效比较瞎眼,不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",
"iOS | 单机\nN3TWORK代理的一款移动端方块。除了马拉松以外游戏还有一个 “Beat” 模式但只需根据BGM的节奏落块就可以得到额外分数。\n[特效比较瞎眼,不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",
},
{"Tetris (N3TWORK)",
"Tetris n3twork",
@@ -307,7 +312,7 @@ return{
{"JJ块",
"手机 gougou",
"game",
"Android | 单机/多人\nJJ棋牌平台下一个休闲游戏Android端百度“JJ比赛”官网下载平台后可以找到找不到的原因是iOS系统或者没在官网下载或者被限制不可直接访问游戏。竖屏输入延迟很小可自定义DAS/ARR/20G软降简单自定义键位无Hold没有B2B无攻击缓冲不可抵消每次攻击上限为4连击较强其他同现代方块。",
"Android | 单机/多人\nJJ棋牌平台下一个休闲游戏Android端百度 “JJ比赛” 官网下载平台后可以找到找不到的原因是iOS系统或者没在官网下载或者被限制不可直接访问游戏。竖屏输入延迟很小可自定义DAS/ARR/20G软降简单自定义键位无Hold没有B2B无攻击缓冲不可抵消每次攻击上限为4连击较强其他同现代方块。",
},
{"火拼俄罗斯",
"huopin qq",
@@ -317,57 +322,57 @@ return{
--术语(缩写)
{"LPM",
"sudu",
"速度 sudu",
"term",
"Line Per Minute\n行每分,体现玩家下块速度。\n\n不同游戏中显示的LPM算法可能不一样例如TO中的LPM是用PPS换算的每1PPS=24LPM忽略掉了垃圾行的影响不再是字面意思本游戏中使用L'PM代表这种换算后的LPM。",
"Line Per Minute\n行每分,体现玩家下块速度。\n\n不同游戏中显示的LPM算法可能不一样例如TO中的LPM是用PPS换算的每1PPS=24LPM忽略掉了垃圾行的影响不再是字面意思本游戏中使用LPM代表这种换算后的LPM。",
},
{"PPS",
"sudu",
"速度 sudu",
"term",
"Piece Per Second\n块每秒,体现玩家下块速度。",
},
{"BPM",
"sudu",
"速度 sudu",
"term",
"Block Per Minute\n块每分,体现玩家下块速度\n又称PPMPiece Per Minute",
},
{"KPM",
"sudu",
"速度 sudu",
"term",
"Key Per Minute\n按键每分,体现玩家按键速度。",
},
{"KPP",
"anjian",
"按键 anjian",
"term",
"Key Per Piece\n按键每块,体现玩家操作是否繁琐。\n学会极简提升操作效率以减少此数字。",
},
{"APM",
"attack gongji",
"攻击 attack gongji",
"term",
"Attack Per Minute\n攻击每分,即玩家每分钟能打出的垃圾行数。\n一定程度体现玩家攻击力。",
},
{"SPM",
"send gongji",
"发送 送出 发出 send gongji",
"term",
"Send Per Minute\n送出每分,即玩家每分钟实际打出去给对手的垃圾行数。\n一定程度体现玩家给对手实际造成的攻击力。",
},
{"DPM",
"dig defend",
"挖掘 防御 防守 dig defend",
"term",
"Dig/Defend Per Minute\n挖掘每分,即玩家每分钟向下挖掘的垃圾行数。\n某些时候可以体现玩家生存能力。\n\n或:防御(抵消+挖掘)每分。",
},
{"RPM",
"receive jieshou",
"接收 接受 receive jieshou",
"term",
"Receive Per Minute\n接收每分,即玩家每分钟收到来自对手的垃圾行数。\n一定程度体现玩家被对手施加的压力。",
},
{"ADPM",
"attack defend vs",
"攻击 防御 防守 attack defend vs",
"term",
"Atk+Dig Per Minute\n攻击+挖掘每分用于在同一局游戏内对比玩家间水平差距比APM更准确一些。在TETR.IO中叫VS的数据就是ADPM调整过比例具体是Atk + Dig per 100s",
},
{"APL",
"xiaolv",
"效率 xiaolv",
"term",
"Attack Per Line\n攻击每行,也叫效率,体现玩家攻击的行利用率。",
},
@@ -406,7 +411,7 @@ return{
{"HPC",
"hc clear banqing banquanqing banquanxiao",
"term",
"Half-PC\nPC全消的外延“下方有剩余方块”的全消特别地如果只消1行则必须不剩余玩家放置的方块能打出一些攻击和防御Techmino限定",
"Half-PC\nPC全消的外延 “下方有剩余方块” 的全消特别地如果只消1行则必须不剩余玩家放置的方块能打出一些攻击和防御Techmino限定",
},
--术语(旋转相关)
@@ -448,7 +453,7 @@ return{
{"MTSS",
"mini tspin",
"term",
"Mini T-spin Single\n指T方块Mini Spin消1行不同游戏判定不一样\n部分游戏中可能叫做“T-Spin Mini”。",
"Mini T-spin Single\n指T方块Mini Spin消1行不同游戏判定不一样\n部分游戏中可能叫做 “T-Spin Mini” ",
},
{"MTSD",
"mini tspin",
@@ -468,7 +473,7 @@ return{
{"方块朝向",
"旋转 朝向 xuanzhuan chaoxiang orientation direction 0r2l 02 20 rl lr",
"term",
"在SRS或者类SRS的旋转系统中需要说明方块朝向的时候“朝下”“竖着”等词描述太模糊。\nSRS中每种方块的初始状态固定所以我们使用0原位、R即顺时针转一次、2转两下即180°、L即逆时针转一次四个字符表示方块的四种状态从原位0开始顺时针转一圈四个状态是0R2L。\n最早见于SRS踢墙表的行首0→L表示原位逆时针转一次到L状态0→R表示原位顺时针转一次到R状态2→R代表从180°状态逆时针转一次到R状态。",
"在SRS或者类SRS的旋转系统中需要说明方块朝向的时候 “朝下” “竖着” 等词描述太模糊。\nSRS中每种方块的初始状态固定所以我们使用0原位、R即顺时针转一次、2转两下即180°、L即逆时针转一次四个字符表示方块的四种状态从原位0开始顺时针转一圈四个状态是0R2L。\n最早见于SRS踢墙表的行首0→L表示原位逆时针转一次到L状态0→R表示原位顺时针转一次到R状态2→R代表从180°状态逆时针转一次到R状态。",
},
{"ARS",
"旋转系统 rotate",
@@ -534,7 +539,7 @@ return{
{"XRS",
"旋转系统 rotate",
"term",
"X Rotation System\nT-ex原创旋转系统引入了“按住方向键换一套踢墙表”的设定在对应的方向需要顶住墙让“想去哪”能被游戏捕获从而转到玩家希望到达的位置。\n\n其他旋转系统无论踢墙表怎么设计块处在某个位置时旋转后最终只能按固定顺序测试这导致不同的踢墙是竞争的若存在两个可能想去的位置就只能二选一XRS解决了这个问题。",
"X Rotation System\nT-ex原创旋转系统引入了 “按住方向键换一套踢墙表” 的设定(在对应的方向需要顶住墙),让 “想去哪” 能被游戏捕获从而转到玩家希望到达的位置。\n\n其他旋转系统无论踢墙表怎么设计块处在某个位置时旋转后最终只能按固定顺序测试这导致不同的踢墙是竞争的若存在两个可能想去的位置就只能二选一XRS解决了这个问题。",
},
--术语(其他)
@@ -556,17 +561,17 @@ return{
{"现代方块",
"modern xiandaikuai tetris",
"term",
"现代方块是一个模糊的概念,这里列出一部分“标准”规则,满足大部分的都可以认为是现代方块:\n1.可见场地大小是10×20不过上方空间也是存在的上限可以自己定一些游戏用的是40\n2.七种方块从顶部正中间出现(奇数宽方块偏左,高度可以是方块底部或顶部贴着场地顶),同一种方块的朝向(一般是平的面朝下)和颜色都一致;\n3.一个合适的随机出块机制常见的详见Bag7词条和His词条\n4.一个合适的的旋转系统至少有双旋详见双旋词条最好是SRS或类SRS详见SRS词条\n5.一个合适的锁定延迟系统,详见锁定延迟词条;\n6.一个合适的死亡判定,详见死亡判定词条;\n7.有Next功能一般是3~6个也有1个的详见Next词条并且方向和出现时候的方向一致\n8.有Hold功能详见Hold词条\n9.有DAS系统负责精密并且快速的左右移动详见DAS词条\n10.如果有出块延迟和消行延迟,那么需要有提前旋转/Hold系统详见IRS和IHS词条IMS是本游戏特有。",
"现代方块是一个模糊的概念,这里列出一部分 “标准” 规则,满足大部分的都可以认为是现代方块:\n1.可见场地大小是10×20不过上方空间也是存在的上限可以自己定一些游戏用的是40\n2.七种方块从顶部正中间出现(奇数宽方块偏左,高度可以是方块底部或顶部贴着场地顶),同一种方块的朝向(一般是平的面朝下)和颜色都一致;\n3.一个合适的随机出块机制常见的详见Bag7词条和His词条\n4.一个合适的的旋转系统至少有双旋详见双旋词条最好是SRS或类SRS详见SRS词条\n5.一个合适的锁定延迟系统,详见锁定延迟词条;\n6.一个合适的死亡判定,详见死亡判定词条;\n7.有Next功能一般是3~6个也有1个的详见Next词条并且方向和出现时候的方向一致\n8.有Hold功能详见Hold词条\n9.有DAS系统负责精密并且快速的左右移动详见DAS词条\n10.如果有出块延迟和消行延迟,那么需要有提前旋转/Hold系统详见IRS和IHS词条IMS是本游戏特有。",
},
{"方块形状",
"xingzhuang shape tetromino tetrimino",
"term",
"在标准的方块游戏中,用到的方块是所有的“四连块”,即四个正方形共用边连接成的形状。\n在不允许翻转只允许旋转的情况下四连块一共有七种根据它们的形状一般分别叫做Z、S、J、L、T、O、I。",
"在标准的方块游戏中,用到的方块是所有的 “四连块” ,即四个正方形共用边连接成的形状。\n在不允许翻转只允许旋转的情况下四连块一共有七种根据它们的形状一般分别叫做Z、S、J、L、T、O、I。",
},
{"方块颜色",
"yanse color colour tetromino tetrimino",
"term",
"主流方块游戏中七种块的颜色会使用同一套彩虹配色:\nZ红 S绿 J蓝 L橙 T紫 O黄 I\n\nTechmino默认也使用这一套“标准”配色。",
"主流方块游戏中七种块的颜色会使用同一套彩虹配色:\nZ红 S绿 J蓝 L橙 T紫 O黄 I\n\nTechmino默认也使用这一套 “标准” 配色。",
},
{"提前旋转 IRS",
"irs initialrotatesystem",
@@ -586,12 +591,12 @@ return{
{"预览 Next",
"下一个 next yulan xiayige",
"term",
"指示后边几个块的顺序。\n提前思考手上这块怎么摆可以让后面轻松是玩家提升的必需技能。\n\n关于玩家玩的时候到底看了几个Next这个数字并不固定不同玩家、不同模式、不同局面计算next的数量都不一样通过调整可见Next数量打40L比较时间等方式测得的数据并不准确。\n\n具体例如一个比较熟练的玩家几乎永远会提前算好一个Next不然不会锁定手里的块场地上将要出现或可以构造消四洞T坑的时候会找最近的IT什么时候来如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立有很多介于中间的情况。所以一个玩家看的Next数量是时刻在变的“某人看几个Next”没有精确答案必须在指明情况的时候数字才能作为参考。",
"指示后边几个块的顺序。\n提前思考手上这块怎么摆可以让后面轻松是玩家提升的必需技能。\n\n关于玩家玩的时候到底看了几个Next这个数字并不固定不同玩家、不同模式、不同局面计算next的数量都不一样通过调整可见Next数量打40L比较时间等方式测得的数据并不准确。\n\n具体例如一个比较熟练的玩家几乎永远会提前算好一个Next不然不会锁定手里的块场地上将要出现或可以构造消四洞T坑的时候会找最近的IT什么时候来如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立有很多介于中间的情况。所以一个玩家看的Next数量是时刻在变的 “某人看几个Next” 没有精确答案,必须在指明情况的时候数字才能作为参考。",
},
{"暂存 Hold",
"交换 hold zancun",
"term",
"将手里的方块和Hold槽中的交换一般不能连续使用。\n用来调整块序,更容易摆出你想要的形状。\n本游戏中有一个“物理Hold”机制开启后Hold换出的方块会直接出现在当前方块所在的位置\n\n用不用Hold各有好处不用的话看到序列是什么就是什么减少了思考量并且减少了按键的种类操作简单容易提升KPS有些人的40L记录就是不用Hold打出的。用Hold可以灵活地调整序列减少高重力等规则带来的难度算力足够的情况下可以达成更复杂的目标甚至反过来显著减少总按键数。",
"将手里的方块和Hold槽中的交换一般不能连续使用。\n用来调整块序,更容易摆出你想要的形状。\n本游戏中有一个 “物理Hold” 机制开启后Hold换出的方块会直接出现在当前方块所在的位置\n\n用不用Hold各有好处不用的话看到序列是什么就是什么减少了思考量并且减少了按键的种类操作简单容易提升KPS有些人的40L记录就是不用Hold打出的。用Hold可以灵活地调整序列减少高重力等规则带来的难度算力足够的情况下可以达成更复杂的目标甚至反过来显著减少总按键数。",
},
{"置换 Swap",
"交换 swap hold jiaohuan zancun",
@@ -619,7 +624,7 @@ return{
"在……之下\n用于表示成绩单位一般可不写比如40L成绩Sub 30是秒1000行Sub 15是分钟不写项目默认是40L\n\n39.95s是Sub 4040.###s不是Sub 40。\n请不要使用Sub 62之类的词因为sub本身就是表示大约 一分钟左右的成绩精确到5~10s就可以了一般30s以内的成绩用sub## 的时候才会精确到1s。",
},
{"挖掘 Dig",
"downstack ds wajue",
"挖掘 downstack ds wajue",
"term",
"指消除从场地底部进入的垃圾行对手攻击打过来或者模式中自动生成。也叫downstack(DS)。",
},
@@ -641,7 +646,7 @@ return{
{"连击 Combo",
"ren",
"term",
"从第二次消除起叫1 REN/Combo打出的攻击根据游戏设计的不同也不同。“REN”这个名称来源于日语中的”連”れん",
"从第二次消除起叫1 REN/Combo打出的攻击根据游戏设计的不同也不同。 “REN” 这个名称来源于日语中的” 連” (れん)。",
},
{"Spike",
"baofa xingbao",
@@ -691,7 +696,7 @@ return{
{"C4W",
"连击 ·center4wide centre4wide",
"term",
"Center 4 Wide\n中间空四列,一种连击打法,能打出很高的连击,利用了大多数专业对战方块游戏的死亡判定机制,可以放心堆高不担心被顶死,然后开始连击。是一种利用游戏机制的不平衡策略(尤其在开局时),观赏性不是很强还可以以弱胜强,成本太低所以成为了部分游戏中约定的类似“禁招”的东西,请在了解情况后再使用,不然可能会被别人骂。\n本游戏里考虑到了平衡问题所以c4w的强度没有别的游戏那么夸张。",
"Center 4 Wide\n中间空四列,一种连击打法,能打出很高的连击,利用了大多数专业对战方块游戏的死亡判定机制,可以放心堆高不担心被顶死,然后开始连击。是一种利用游戏机制的不平衡策略(尤其在开局时),观赏性不是很强还可以以弱胜强,成本太低所以成为了部分游戏中约定的类似 “禁招” 的东西,请在了解情况后再使用,不然可能会被别人骂。\n本游戏里考虑到了平衡问题所以c4w的强度没有别的游戏那么夸张。",
},
{"N-Res",
"连击 ·residual c4w s4w",
@@ -716,7 +721,7 @@ return{
{"缓冲区",
"buffer zone huanchongqu",
"term",
"不是所有游戏都有这个概念指10×20可见场地之上的21~40行。因为垃圾行顶起后两边堆高的方块可能会超出屏幕消行后这些方块要重新回到场地内所以需要保存下来由于程序上要求场地尺寸有限部分游戏可以无限故设定为40一般都够用。\n\n另见“消失区”词条。",
"不是所有游戏都有这个概念指10×20可见场地之上的21~40行。因为垃圾行顶起后两边堆高的方块可能会超出屏幕消行后这些方块要重新回到场地内所以需要保存下来由于程序上要求场地尺寸有限部分游戏可以无限故设定为40一般都够用。\n\n另见 “消失区” 词条。",
},
{"消失区",
"vanish zone xiaoshiqu",
@@ -732,7 +737,7 @@ return{
{"20G",
"高重力",
"term",
"现代方块的最高下落速度,表观就是方块瞬间到底,不存在中间的下落过程,可能会让方块无法跨越壕沟/从山谷爬出。\n20G一般指的其实是“无限下落速度”就算场地不止20格“20G”也会让方块瞬间到底。\n本游戏和部分其他游戏推荐这么设计中20G的优先级比其他玩家操作都高即使是0arr的水平方向“瞬间移动”中途也会受到20G的影响。",
"现代方块的最高下落速度,表观就是方块瞬间到底,不存在中间的下落过程,可能会让方块无法跨越壕沟/从山谷爬出。\n20G一般指的其实是 “无限下落速度” 就算场地不止20格 “20G” 也会让方块瞬间到底。\n本游戏和部分其他游戏推荐这么设计中20G的优先级比其他玩家操作都高即使是0arr的水平方向 “瞬间移动” 中途也会受到20G的影响。",
},
{"锁定延迟 LD",
"重力 lock delay lockdown delay suoyan zhongli gravity",
@@ -787,7 +792,7 @@ return{
{"DAS打断 DCD",
"dascut dcd daduan",
"term",
"本游戏中指玩家的操作焦点转移到新方块的瞬间此时减小重置DAS计时器让自动移动不会立刻生效减少“移动键松开晚了导致下一块一出来就立即开始移动”的情况\n其他游戏中的DAS打断机制可能和本游戏的有区别仅供参考。",
"本游戏中指玩家的操作焦点转移到新方块的瞬间此时减小重置DAS计时器让自动移动不会立刻生效减少 “移动键松开晚了导致下一块一出来就立即开始移动” 的情况\n其他游戏中的DAS打断机制可能和本游戏的有区别仅供参考。",
},
{"误硬降打断 HCD",
"autolockcut mdcut daduan",
@@ -827,17 +832,17 @@ return{
{"超连点 Hypertap",
"chaoliandian",
"term",
"快速震动手指,实现比长按更快速+灵活的高速单点移动主要在经典块的高难度下因为DAS不可调而且特别慢高速下很容易md导致失败此时手动连点就比自动移动更快或者受特殊情况限制不适合用自动移动时使用。会使用这个技术的人称为“Hypertapper”。",
"快速震动手指,实现比长按更快速+灵活的高速单点移动主要在经典块的高难度下因为DAS不可调而且特别慢高速下很容易md导致失败此时手动连点就比自动移动更快或者受特殊情况限制不适合用自动移动时使用。会使用这个技术的人称为 “Hypertapper” ",
},
{"轮指 Rolling",
"lunzhi liandian",
"term",
"另一种快速连点方法用于DAS/ARR设置非常慢时的高重力1G左右模式。\n先把手柄键盘……可能也行吧悬空摆好比如架在腿上要连点某个键的时候一只手虚按按键另外一只手的几根手指轮流敲打手柄背面“反向按键”实现连点。这种控制方法可以让玩家更轻松地获得比直接抖动手指的Hypertap详见超连点词条更快的控制速度。\n此方法最先由Cheez-fish发明他本人则使用Rolling达到过超过20Hz的点击频率。",
"另一种快速连点方法用于DAS/ARR设置非常慢时的高重力1G左右模式。\n先把手柄(键盘……可能也行吧)悬空摆好,比如架在腿上,要连点某个键的时候一只手虚按按键,另外一只手的几根手指轮流敲打手柄背面, “反向按键” 实现连点。这种控制方法可以让玩家更轻松地获得比直接抖动手指的Hypertap详见超连点词条更快的控制速度。\n此方法最先由Cheez-fish发明他本人则使用Rolling达到过超过20Hz的点击频率。",
},
{"穿透 Passthrough",
"pingthrough chuantou",
"term",
"(攻击)穿透,指双方的攻击打出后没有抵消,互相都收到的现象。\nTETR.IO中自定义房间如果开启Passthrough规则曾经天梯默认开启那么对手消行攻击的瞬间能看到自己的红条出现但其处于“无敌时间”内不会触发也不能抵消此时你的攻击会直接打给对手。应该是给攻击的飞行动画预留时间同时也让玩家能反应过来并主动选择要不要抵消要的话就再等一会\n另有pingthrough的说法只是原因是由于不可避免的网络传输延迟效果同passthrough设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",
"(攻击)穿透,指双方的攻击打出后没有抵消,互相都收到的现象。\nTETR.IO中自定义房间如果开启Passthrough规则曾经天梯默认开启那么对手消行攻击的瞬间能看到自己的红条出现但其处于 “无敌时间” 内,不会触发也不能抵消,此时你的攻击会直接打给对手。(应该是给攻击的飞行动画预留时间,同时也让玩家能反应过来并主动选择要不要抵消,要的话就再等一会)\n另有pingthrough的说法只是原因是由于不可避免的网络传输延迟效果同passthrough设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",
},
{"TOP攻击表",
"攻击表 top attack",
@@ -854,11 +859,6 @@ return{
"term",
"七个块初始权重设为0\n要取块的时候,\n先把七个数都除以2然后加上0~1的随机数\n最大的数字是第几个的就出对应的块然后将其权重除以3.5\n循环。",--Discovered by zxc
},
{"C2踢墙",
"kick",
"term",
"左下右下左2右2\n(任何方块的任何旋转都使用这个表)。",
},
{"堆叠 Stack",
"duidie stacking",
"term",
@@ -882,12 +882,12 @@ return{
{"骨块 Bone",
"gukuai bone tgm",
"term",
"最早的方块游戏使用的方块样式。\n很久以前的电脑没有可以显示复杂图案的屏幕,只能往上打字,所以一格方块用两个方括号[ ]表示,长得像骨头所以叫骨块。\n基于骨块的特点,本游戏把骨块重新定义为,“所有形状使用的同一个比较花眼的贴图”,不同的皮肤有不同的骨块样式。",
"最早的方块游戏使用的方块样式。\n很久以前的电脑没有可以显示复杂图案的屏幕,只能往上打字,所以一格方块用两个方括号[ ]表示,长得像骨头所以叫骨块。\n基于骨块的特点,本游戏把骨块重新定义为, “所有形状使用的同一个比较花眼的贴图” ,不同的皮肤有不同的骨块样式。",
},
{"半隐",
"banyin half semi invisible",
"term",
"指方块锁定经过一段时间后会变隐形的规则\n注:从锁定开始到消失的具体时长不定,可以描述为“过几秒种后消失”。",
"指方块锁定经过一段时间后会变隐形的规则\n注:从锁定开始到消失的具体时长不定,可以描述为 “过几秒种后消失” ",
},
{"全隐",
"quanyin invisible",
@@ -897,7 +897,7 @@ return{
{"场地重力",
"重力 zhongli liansuo cascade chain",
"term",
"(由于“重力”有歧义所以本词典里称为场地重力,也有重力连锁等叫法。)\n部分游戏的部分模式可能包含此规则。此规则下玩家的四格方块四个方向有连接关系连起来的几个格整体会受到重力影响悬空了会往下落。在这个规则下可以构造复杂的连锁消除一个主打连锁消除对战的游戏是Qudra老游戏现在基本没人玩",
"(由于 “重力” 有歧义所以本词典里称为场地重力,也有重力连锁等叫法。)\n部分游戏的部分模式可能包含此规则。此规则下玩家的四格方块四个方向有连接关系连起来的几个格整体会受到重力影响悬空了会往下落。在这个规则下可以构造复杂的连锁消除一个主打连锁消除对战的游戏是Qudra老游戏现在基本没人玩",
},
{"MPH模式",
"",
@@ -909,6 +909,12 @@ return{
"term",
"用任何设备玩任何游戏时所有的操作按键盘点鼠标等都会晚一点点很短几毫秒到几十毫秒才到达游戏如果过长就会很影响游戏手感作用效果类似于你拿QQ远程控制打FPS游戏\nTOP、TE等游戏比较明显\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点。",
},
{"秘密段位",
"大于号 secret grade dayuhao",
"term",
"出自TGM系列的彩蛋玩法。不按照TGM的一般目标去玩而是去拼图拼出 “每行仅有一个洞的大于号” 图形不能是小于号拼得越多获得的秘密段位越高没特殊功能只是好玩最高目标是完成19行并封顶"..HDwiki,
HDsearch.."Secret_Grade_Techniques",
},
{"Cold Clear",
"机器人 电脑 cc coldclear ai bot jiqiren",
"term",
@@ -929,37 +935,38 @@ return{
{"DT炮",
"dt cannon",
"setup",
"Double-Triple Cannon。\n"..HDwiki,
"Double-Triple Cannon。"..HDwiki,
HDsearch.."dt",
},
{"DTPC",
"dtpc",
"setup",
"DT炮一个能接PC的分支。\n"..HDwiki,
"DT炮一个能接PC的分支。"..HDwiki,
HDsearch.."dt",
},
{"BT炮",
"bt cannon",
"setup",
"β炮Beta炮\n"..HDwiki,
"β炮Beta炮"..HDwiki,
HDsearch.."bt_cannon",
},
{"BTPC",
"btpc",
"setup",
"BT炮一个能接PC的分支。\n"..HDwiki,
"BT炮一个能接PC的分支。"..HDwiki,
HDsearch.."bt_cannon",
},
{"DDPC",
"ddpc",
"setup",
"开局TSD的一个能接Double-Double-PC的分支。\n"..HDwiki,
"开局TSD的一个能接Double-Double-PC的分支。"..HDwiki,
HDsearch.."TKI_3_Perfect_Clear",
},
{"QT炮",
"qt cannon",
"setup",
"QT炮细节未知。",
"一种能以更高的概率搭出开局DT Attack的类似DT炮的定式。"..HDwiki,
HDsearch.."dt",
},
{"MT",
"mt",
@@ -970,7 +977,7 @@ return{
{"狼月炮",
"wolfmoon",
"setup",
"狼月炮。\n"..HDwiki,
"狼月炮。"..HDwiki,
HDsearch.."wolfmoon_cannon",
},
{"ASC",
@@ -981,25 +988,26 @@ return{
{"Sewer",
"sewer",
"setup",
"Sewer开局。\n"..HDwiki,
"Sewer开局。"..HDwiki,
HDsearch.."sewer",
},
{"TKI",
"tki",
"setup",
"TKI开局\n有两种解释一个是TSD开局另一个是Cspin开局。\n"..HDwiki,
"TKI开局\n有两种解释一个是TSD开局另一个是Cspin开局。"..HDwiki,
HDsearch.."tki",
},
{"God Spin",
"god",
"setup",
"God Spin\nwindkey发明的一个观赏性很强但实战没啥用的炫酷特殊T2+T3开局定式。\n"..HDwiki,
"God Spin\nwindkey发明的一个观赏性很强但实战没啥用的炫酷特殊T2+T3开局定式。"..HDwiki,
HDsearch.."godspin",
},
{"信天翁",
"xintianweng",
"xintianweng albatross",
"setup",
"一种高观赏性几乎不浪费T的快节奏强力T2-T3-T2-PC开局。",
"一种高观赏性几乎不浪费T的快节奏强力T2-T3-T2-PC开局。"..HDwiki,
HDsearch.."Albatross_Special",
},
{"鹈鹕",
"tihu",
@@ -1007,9 +1015,22 @@ return{
"一种类似信天翁的定式,在块序不能信天翁的时候可以用。",
},
{"七巧板",
"qiqiaoban",
"qiqiaoban tangram",
"setup",
"一种极大概率能摆出来并且很大概率能做到PC的定式本游戏中的pc练习中空出不规则区域的那个就是七巧板。",
"一种极大概率能摆出来并且很大概率能做到PC的定式本游戏中的pc练习中空出不规则区域的那个就是七巧板。"..HDwiki,
HDsearch.."Perfect_Clear_Opener",
},
{"DPC",
"DPC",
"setup",
"在场地空白1bag还剩一块的情况下能够100%搭成的TSD+PC的定式。常见于开局三包PC的后续。"..HDwiki,
HDsearch.."DPC_Setups",
},
{"Gamushiro堆叠",
"gamushiro",
"setup",
"ガムシロ積みGamushiro堆叠一种开局TD-Attack的定式。"..HDwiki,
HDsearch.."Gamushiro_Stacking",
},
--形状
@@ -1021,21 +1042,27 @@ return{
{"Cspin",
"cspin",
"pattern",
"JL脚对脚立起来形成一个C形缺口做适当的填充后可以打T3+T2。\n"..HDwiki,
"JL脚对脚立起来形成一个C形缺口做适当的填充后可以打T3+T2。"..HDwiki,
HDsearch.."c-spin",
},
{"STSD",
"stsd",
"pattern",
"Super T-spin Double\n一种能做两个T2的形状。\n如果垃圾行正好空在STSD正下方会暴毙。\n"..HDwiki,
"Super T-spin Double\n一种能做两个T2的形状。\n如果垃圾行正好空在STSD正下方会暴毙。"..HDwiki,
HDsearch.."stsd",
},
{"STMB",
"stmb",
"pattern",
"STMB cave\n在高空3宽坑架SZ捐一个T2的形状。\n"..HDwiki,
"STMB cave\n在高空3宽坑架SZ捐一个T2的形状。"..HDwiki,
HDsearch.."stmb_cave",
},
{"双刃剑",
"shuangrenjian fractal spider",
"pattern",
"两个T2形状叠在一起。"..HDwiki,
HDsearch.."Fractal",
},
{"LST堆叠",
"lst",
"pattern",
@@ -1045,24 +1072,25 @@ return{
{"汉堡包",
"hamburger hanbaobao",
"pattern",
"一种边缘捐T不影响消四的堆叠法。\n"..HDwiki,
"一种边缘捐T不影响消四的堆叠法。"..HDwiki,
HDsearch.."hamburger",
},
{"皇家十字",
"皇十 imperial cross huangjiashizi huangshi",
"pattern",
"在一个十字形洞口盖屋檐后可以做两个T2的形状。\n"..HDwiki,
"在一个十字形洞口盖屋檐后可以做两个T2的形状。"..HDwiki,
HDsearch.."imperial_cross",
},
{"雨宫炮",
"yugong",
"yugong amemiya",
"pattern",
"一种捐T2后可消四的形状常见于DT的一个分支。",
},
{"千鸟格子",
"qianniaoge",
"pattern",
"一种在小洞上捐一个T2后还能做一个T2的形状。",
"一种在小洞上捐一个T2后还能做一个T2的形状。"..HDwiki,
HDsearch.."Cut_copy",
},
{"六巧板",
"liuqiaoban",
@@ -1070,9 +1098,10 @@ return{
"一种常用于增加中局PC概率的形状本游戏中的PC练习中空出4×4方形区域就是六巧板。",
},
{"绯红之王",
"feihongzhiwang",
"feihongzhiwang king crimson",
"pattern",
"在STSD上叠若干个T3的形状。",
"在STSD上叠若干个T3的形状。"..HDwiki,
HDsearch.."King_Crimson",
},
--存档管理
@@ -1084,37 +1113,37 @@ return{
{"重置设置",
"reset setting chongzhi qingkong shezhi",
"command",
"前往控制台输入“rm conf/setting”并回车\n需要重启游戏生效,若反悔,进入设置菜单再退出即可恢复文件。",
"前往控制台输入 “rm conf/setting” 并回车\n需要重启游戏生效,若反悔,进入设置菜单再退出即可恢复文件。",
},
{"重置统计数据",
"reset statistic data chongzhi tongji shuju",
"command",
"前往控制台输入“rm conf/data”并回车\n需要重启游戏生效,若反悔,玩一局并触发结算即可恢复文件。",
"前往控制台输入 “rm conf/data” 并回车\n需要重启游戏生效,若反悔,玩一局并触发结算即可恢复文件。",
},
{"重置解锁状态",
"reset unlock chongzhi qingkong jiesuo",
"command",
"前往控制台输入“rm conf/unlock”并回车\n需要重启游戏生效,若反悔,刷新任意一个模式在地图上的状态即可恢复文件。",
"前往控制台输入 “rm conf/unlock” 并回车\n需要重启游戏生效,若反悔,刷新任意一个模式在地图上的状态即可恢复文件。",
},
{"重置本地排行榜",
"reset chongzhi paihangbang",
"command",
"前往控制台输入“rm -s record”并回车\n需要重启游戏生效,若反悔,玩一局并更新模式排行榜即可恢复对应模式的单个排行榜文件。",
"前往控制台输入 “rm -s record” 并回车\n需要重启游戏生效,若反悔,玩一局并更新模式排行榜即可恢复对应模式的单个排行榜文件。",
},
{"删除键位",
"reset virtualkey",
"command",
"前往控制台输入“rm conf/键位文件”并回车\n键盘是key虚拟按键是virtualkey虚拟按键预设是vkSave12\n前两者重启生效,若反悔,进入对应的设置菜单再返回即可恢复文件。",
"前往控制台输入 “rm conf/键位文件” 并回车\n键盘是key虚拟按键是virtualkey虚拟按键预设是vkSave12\n前两者重启生效,若反悔,进入对应的设置菜单再返回即可恢复文件。",
},
{"删除录像",
"reset replay luxiang",
"command",
"前往控制台输入“rm -s replay”并回车。\n立即生效。",
"前往控制台输入 “rm -s replay” 并回车。\n立即生效。",
},
{"删除缓存",
"reset cache huancun touxiang",
"command",
"前往控制台输入“rm -s cache”并回车。\n立即生效。",
"前往控制台输入 “rm -s cache” 并回车。\n立即生效。",
},
--英文
@@ -1198,7 +1227,7 @@ return{
{"Kazu",
"mdking",
"name",
"也叫“GAMEOVER” “GAMAOVER” “GAME_OVER_RETRY”\n一流玩家以熟练md转捐赠闻名",
"(也叫 “GAMEOVER” “GAMAOVER” “GAME_OVER_RETRY” \n一流玩家以熟练md转捐赠闻名",
},
{"Microblizz",
"",

View File

@@ -14,9 +14,9 @@ return{
sureReset="Press again to reset",
sureDelete="Press again to delete",
newDay="A new day, a new beginning!",
playedLong="You have been playing for a long time. Time to a break!",
playedLong="You have been playing for a long time. Time to take a break!",
playedTooMuch="You have been playing for far too long! Techmino is fun, but remember to take some rests!",
settingWarn="Careful - you're about to change some uncommon settings!",
settingWarn="Careful youre about to change some uncommon settings!",
atkModeName={"Random","Badges","K.O.s","Attackers"},
royale_remain="$1 Players Left",
@@ -59,7 +59,7 @@ return{
finesse_ap="All Perfect",
finesse_fc="Full Combo",
page="Page:",
page="Page ",
cc_fixed="CC is incompatible with fixed sequences.",
cc_swap="CC is incompatible when the hold mode is set to Swap.",
@@ -114,7 +114,7 @@ return{
noUsername="Please enter your username",
wrongEmail="Invalid email address",
noPassword="Please enter your password",
diffPassword="Passwords don't match",
diffPassword="Passwords dont match",
registerRequestSent="A sign up request has been sent.",
registerOK="Sign up successful!",
loginOK="You are now logged in!",
@@ -182,7 +182,7 @@ return{
"Finesse:",
},
radar={"DEF","OFF","ATK","SEND","SPD","DIG"},
radarData={"D'PM","ADPM","APM","SPM","L'PM","DPM"},
radarData={"DPM","ADPM","APM","SPM","LPM","DPM"},
stat={
"Times Launched:",
"Play Count:",
@@ -197,13 +197,13 @@ return{
"Fns. Errs/Rate:",
},
aboutTexts={
"This is just an *ordinary* block stacker. Really, that's it.",
"This is just an *ordinary* block stacker. Really, thats it.",
"Inspired by C2/IO/JS/WWC/KOS etc.",
"",
"Powered by LÖVE",
"Any suggestions or bug reports are appreciated!",
"Make sure to get the game only from official sources,",
"as we can't make sure you're safe if you got it elsewhere.",
"as we cant make sure youre safe if you got it elsewhere.",
"The author is not responsible for any modifications.",
FNNS and"/"or"While the game is free, donations are appreciated.",
FNNS and"/"or"Check Zictionary for more",
@@ -370,7 +370,7 @@ return{
},
net_newRoom={
title="Room Config",
roomName="Room name (Default: \"[username]'s room\")",
roomName="Room name (Default: [username]'s room)",
password="Password",
description="Room Description",
@@ -459,7 +459,6 @@ return{
atkFX="Atk FX",
frame="Render Frame Rate (%)",
FTlock="Frame skip",
text="Line Clear Pop-Ups",
score="Score Pop-Ups",
@@ -630,7 +629,7 @@ return{
push="Add Line (K)",
del="Del Line (L)",
demo="Don't Show ×",
demo="Dont Show “×”",
newPg="New Page (N)",
delPg="Del Page (M)",
@@ -688,6 +687,7 @@ return{
register="Sign Up",
email="Email Address",
password="Password",
showEmail="Show Email",
keepPW="Remember me",
login="Log In",
},
@@ -756,112 +756,122 @@ return{
},
},
modes={
['sprint_10l']= {"Sprint", "10L", "Clear 10 lines!"},
['sprint_20l']= {"Sprint", "20L", "Clear 20 lines!"},
['sprint_40l']= {"Sprint", "40L", "Clear 40 lines!"},
['sprint_100l']= {"Sprint", "100L", "Clear 100 lines!"},
['sprint_400l']= {"Sprint", "400L", "Clear 400 lines!"},
['sprint_1000l']= {"Sprint", "1,000L", "Clear 1,000 lines!"},
['sprintPenta']= {"Sprint", "PENTOMINO", "40L with 18 pentominoes"},
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
['dig_10l']= {"Dig", "10L", "Dig 10 garbage lines"},
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines"},
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines"},
['dig_400l']= {"Dig", "400L", "Dig 400 garbage lines"},
['drought_n']= {"Drought", "100L", "No I-pieces available"},
['drought_l']= {"Drought+", "100L", "W T F"},
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with increasing speed"},
['marathon_h']= {"Marathon", "HARD", "200-line high-speed marathon"},
['solo_e']= {"Battle", "EASY", "Defeat the AI!"},
['solo_n']= {"Battle", "NORMAL", "Defeat the AI!"},
['solo_h']= {"Battle", "HARD", "Defeat the AI!"},
['solo_l']= {"Battle", "LUNATIC", "Defeat the AI!"},
['solo_u']= {"Battle", "ULTIMATE", "Defeat the AI!"},
['techmino49_e']= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins"},
['techmino49_h']= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins"},
['techmino49_u']= {"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins"},
['techmino99_e']= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins"},
['techmino99_h']= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins"},
['techmino99_u']= {"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins"},
['round_e']= {"Turn-Based", "EASY", "Take turns to play against the AI!"},
['round_n']= {"Turn-Based", "NORMAL", "Take turns to play against the AI!"},
['round_h']= {"Turn-Based", "HARD", "Take turns to play against the AI!"},
['round_l']= {"Turn-Based", "LUNATIC", "Take turns to play against the AI!"},
['round_u']= {"Turn-Based", "ULTIMATE", "Take turns to play against the AI!"},
['master_n']= {"Master", "NORMAL", "For 20G beginners"},
['master_h']= {"Master", "HARD", "For 20G pros"},
['master_m']= {"Master", "M21", "For 20G Masters"},
['master_final']= {"Master", "FINAL", "20G and beyond"},
['master_ph']= {"Master", "PHANTASM", "???"},
['master_ex']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant"},
['master_instinct']={"Master", "INSTINCT", "What if the active piece turned invisible?"},
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
['strategy_e_plus']={"Strategy", "EASY+", "Fast 20G decision"},
['strategy_h_plus']={"Strategy", "HARD+", "Fast 20G decision"},
['strategy_u_plus']={"Strategy", "ULTIMATE+", "Fast 20G decision"},
['blind_e']= {"Invisible", "HALF", "For novices"},
['blind_n']= {"Invisible", "ALL", "For intermediates"},
['blind_h']= {"Invisible", "SUDDEN", "For the experienced"},
['blind_l']= {"Invisible", "SUDDEN+", "For professionals"},
['blind_u']= {"Invisible", "?", "Are you ready?"},
['blind_wtf']= {"Invisible", "WTF", "You're not ready"},
['classic_e']= {"Classic", "EASY", "A very low-speed recreation from the 80s"},
['classic_h']= {"Classic", "HARD", "A medium speed recreation from the 80s"},
['classic_u']= {"Classic", "ULTIMATE", "A very high-speed recreation from the 80s"},
['survivor_e']= {"Survival", "EASY", "How long can you survive?"},
['survivor_n']= {"Survival", "NORMAL", "How long can you survive?"},
['survivor_h']= {"Survival", "HARD", "How long can you survive?"},
['survivor_l']= {"Survival", "LUNATIC", "How long can you survive?"},
['survivor_u']= {"Survival", "ULTIMATE", "How long can you survive?"},
['attacker_h']= {"Attacker", "HARD", "Practice your attacking skills!"},
['attacker_u']= {"Attacker", "ULTIMATE", "Practice your attacking skills!"},
['defender_n']= {"Defender", "NORMAL", "Practice your defencing skills!"},
['defender_l']= {"Defender", "LUNATIC", "Practice your defencing skills!"},
['dig_h']= {"Driller", "HARD", "Digging practice!"},
['dig_u']= {"Driller", "ULTIMATE", "Digging practice!"},
['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
['c4wtrain_n']= {"C4W Training", "NORMAL", "Infinite combos"},
['c4wtrain_l']= {"C4W Training", "LUNATIC", "Infinite combos"},
['pctrain_n']= {"PC Training", "NORMAL", "Perfect Clear practice"},
['pctrain_l']= {"PC Training", "LUNATIC", "A harder Perfect Clear practice"},
['pc_n']= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
['pc_h']= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
['pc_l']= {"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
['pc_inf']= {"Inf. PC Challenge", "", "Get PCs as much as you can"},
['tech_n']= {"Tech", "NORMAL", "Try to keep the\nBack-to-Back chain!"},
['tech_n_plus']= {"Tech", "NORMAL+", "Spins & PCs only"},
['tech_h']= {"Tech", "HARD", "Try to keep the\nBack-to-Back chain!"},
['tech_h_plus']= {"Tech", "HARD+", "Spins & PCs only"},
['tech_l']= {"Tech", "LUNATIC", "Try to keep the\nBack-to-Back chain!"},
['tech_l_plus']= {"Tech", "LUNATIC+", "Spins & PCs only"},
['tech_finesse']= {"Tech", "FINESSE", "No finesse faults!"},
['tech_finesse_f']= {"Tech", "FINESSE+", "No normal clears and finesse faults!"},
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
['backfire_n']= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines"},
['backfire_h']= {"Backfire", "HARD", "Hold back the backfiring garbage lines"},
['backfire_l']= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines"},
['backfire_u']= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines"},
['sprintAtk']= {"Sprint", "100 Attack", "Send 100 lines!"},
['sprintEff']= {"Sprint", "Efficiency", "Send more attack in 40lines!"},
['zen']= {'Zen', "200", "A 200-line run without a time limit"},
['ultra']= {'Ultra', "EXTRA", "A 2-minute score attack"},
['infinite']= {"Infinite", "", "Just a sandbox"},
['infinite_dig']= {"Infinite: Dig", "", "Dig-diggin'-dug"},
['marathon_inf']= {"Marathon", "INFINITE", "Infinite marathon."},
['sprint_10l']= {"Sprint", "10L", "Clear 10 lines!"},
['sprint_20l']= {"Sprint", "20L", "Clear 20 lines!"},
['sprint_40l']= {"Sprint", "40L", "Clear 40 lines!"},
['sprint_100l']= {"Sprint", "100L", "Clear 100 lines!"},
['sprint_400l']= {"Sprint", "400L", "Clear 400 lines!"},
['sprint_1000l']= {"Sprint", "1,000L", "Clear 1,000 lines!"},
['sprintPenta']= {"Sprint", "PENTOMINO", "40L with 18 pentominoes"},
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
['sprint123']= {"Sprint", "M123", "40L with only monominoes, dominoes, and triminoes"},
['secret_grade']= {"Secret Grade", "", "Build a zig-zag hole formation, following to the guide!"},
['dig_10l']= {"Dig", "10L", "Dig 10 garbage lines as fast as you can!"},
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines as fast as you can!"},
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines as fast as you can!"},
['dig_400l']= {"Dig", "400L", "Dig 400 garbage lines as fast as you can!"},
['dig_eff_10l']= {"Dig", "EFFICIENCY 10L", "Dig 10 garbage lines with the least pieces!"},
['dig_eff_40l']= {"Dig", "EFFICIENCY 40L", "Dig 40 garbage lines with the least pieces!"},
['dig_eff_100l']= {"Dig", "EFFICIENCY 100L","Dig 100 garbage lines with the least pieces!"},
['dig_eff_400l']= {"Dig", "EFFICIENCY 400L","Dig 400 garbage lines with the least pieces!"},
['drought_n']= {"Drought", "100L", "No I-pieces available"},
['drought_l']= {"Drought+", "100L", "W T F"},
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with increasing speed"},
['marathon_h']= {"Marathon", "HARD", "200-line high-speed marathon"},
['solo_e']= {"Battle", "EASY", "Defeat the AI!"},
['solo_n']= {"Battle", "NORMAL", "Defeat the AI!"},
['solo_h']= {"Battle", "HARD", "Defeat the AI!"},
['solo_l']= {"Battle", "LUNATIC", "Defeat the AI!"},
['solo_u']= {"Battle", "ULTIMATE", "Defeat the AI!"},
['techmino49_e']= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins"},
['techmino49_h']= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins"},
['techmino49_u']= {"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins"},
['techmino99_e']= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins"},
['techmino99_h']= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins"},
['techmino99_u']= {"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins"},
['round_e']= {"Turn-Based", "EASY", "Take turns to play against the AI!"},
['round_n']= {"Turn-Based", "NORMAL", "Take turns to play against the AI!"},
['round_h']= {"Turn-Based", "HARD", "Take turns to play against the AI!"},
['round_l']= {"Turn-Based", "LUNATIC", "Take turns to play against the AI!"},
['round_u']= {"Turn-Based", "ULTIMATE", "Take turns to play against the AI!"},
['big_n']= {"Big", "NORMAL", "Play in a smaller field!"},
['big_h']= {"Big", "HARD", "Play in a smaller field!"},
['master_n']= {"Master", "NORMAL", "For 20G beginners"},
['master_h']= {"Master", "HARD", "For 20G pros"},
['master_m']= {"Master", "M21", "For 20G Masters"},
['master_final']= {"Master", "FINAL", "20G and beyond"},
['master_ph']= {"Master", "PHANTASM", "???"},
['master_g']= {"Master", "GRADED", "Get the highest grade you can!"},
['master_ex']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant"},
['master_instinct']={"Master", "INSTINCT", "What if the active piece turned invisible?"},
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
['strategy_e_plus']={"Strategy", "EASY+", "Holdless strategy!"},
['strategy_h_plus']={"Strategy", "HARD+", "Holdless strategy!"},
['strategy_u_plus']={"Strategy", "ULTIMATE+", "Holdless strategy!"},
['blind_e']= {"Invisible", "HALF", "For novices"},
['blind_n']= {"Invisible", "ALL", "For intermediates"},
['blind_h']= {"Invisible", "SUDDEN", "For the experienced"},
['blind_l']= {"Invisible", "SUDDEN+", "For professionals"},
['blind_u']= {"Invisible", "?", "Are you ready?"},
['blind_wtf']= {"Invisible", "WTF", "Youre not ready"},
['classic_e']= {"Classic", "EASY", "A low-speed recreation from the 80s"},
['classic_h']= {"Classic", "HARD", "A medium-speed recreation from the 80s"},
['classic_l']= {"Classic", "LUNATIC", "A high-speed recreation from the 80s"},
['classic_u']= {"Classic", "ULTIMATE", "A very high-speed recreation from the 80s"},
['survivor_e']= {"Survival", "EASY", "How long can you survive?"},
['survivor_n']= {"Survival", "NORMAL", "How long can you survive?"},
['survivor_h']= {"Survival", "HARD", "How long can you survive?"},
['survivor_l']= {"Survival", "LUNATIC", "How long can you survive?"},
['survivor_u']= {"Survival", "ULTIMATE", "How long can you survive?"},
['attacker_h']= {"Attacker", "HARD", "Practice your attacking skills!"},
['attacker_u']= {"Attacker", "ULTIMATE", "Practice your attacking skills!"},
['defender_n']= {"Defender", "NORMAL", "Practice your defensing skills!"},
['defender_l']= {"Defender", "LUNATIC", "Practice your defensing skills!"},
['dig_h']= {"Driller", "HARD", "Digging practice!"},
['dig_u']= {"Driller", "ULTIMATE", "Digging practice!"},
['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
['c4wtrain_n']= {"C4W Training", "NORMAL", "Infinite combos"},
['c4wtrain_l']= {"C4W Training", "LUNATIC", "Infinite combos"},
['pctrain_n']= {"PC Training", "NORMAL", "Perfect Clear practice"},
['pctrain_l']= {"PC Training", "LUNATIC", "A harder Perfect Clear practice"},
['pc_n']= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
['pc_h']= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
['pc_l']= {"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
['pc_inf']= {"Inf. PC Challenge", "", "Get PCs as much as you can"},
['tech_n']= {"Tech", "NORMAL", "Try to keep the\nBack-to-Back chain!"},
['tech_n_plus']= {"Tech", "NORMAL+", "Spins & PCs only"},
['tech_h']= {"Tech", "HARD", "Try to keep the\nBack-to-Back chain!"},
['tech_h_plus']= {"Tech", "HARD+", "Spins & PCs only"},
['tech_l']= {"Tech", "LUNATIC", "Try to keep the\nBack-to-Back chain!"},
['tech_l_plus']= {"Tech", "LUNATIC+", "Spins & PCs only"},
['tech_finesse']= {"Tech", "FINESSE", "No finesse faults!"},
['tech_finesse_f']= {"Tech", "FINESSE+", "No normal clears and finesse faults!"},
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
['backfire_n']= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines"},
['backfire_h']= {"Backfire", "HARD", "Hold back the backfiring garbage lines"},
['backfire_l']= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines"},
['backfire_u']= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines"},
['sprintAtk']= {"Sprint", "100 Attack", "Send 100 lines!"},
['sprintEff']= {"Sprint", "Efficiency", "Send more attack in 40lines!"},
['zen']= {'Zen', "200", "A 200-line run without a time limit"},
['ultra']= {'Ultra', "EXTRA", "A 2-minute score attack"},
['infinite']= {"Infinite", "", "Just a sandbox"},
['infinite_dig']= {"Infinite: Dig", "", "Dig-diggin-dug"},
['marathon_inf']= {"Marathon", "INFINITE", "Infinite marathon."},
['custom_clear']= {"Custom", "NORMAL"},
['custom_puzzle']= {"Custom", "PUZZLE"},
},
getTip={refuseCopy=true,
":pog:",
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"\"Techmino.app\" cannot be opened because the developer cannot be verified.",
"\"Techmino.app\" will damage your computer. You should move it to the Bin.",
"\"TechminOS\"",
"(RURU)RFR2URU(RURF)",
"Techmino.app cannot be opened because the developer cannot be verified.",
"Techmino.app will damage your computer. You should move it to the Bin.",
"TechminOS",
"\\jezevec/\\jezevec/\\jezevec/",
"\\osk/\\osk/\\osk/",
"↑↑↓↓←→←→BA",
@@ -884,22 +894,22 @@ return{
"Bridge clear coming soon!",
"Can you master this modern yet familiar stacker?",
"Certainly within this heart lies my M@STERPIECE.",
"Change logs in English can be found on Discord.",
"Changelogs in English can be found on Discord.",
"Color clear coming soon!",
"Decreasing DAS and ARR makes your game faster but harder to control.",
"Did I just see a Back-to-Back-to-Back?",
"Does B2B2B2B exist?",
"Don't let a small glitch ruin your entire day!",
"Don't look directly at the bugs!",
"Dont let a small glitch ruin your entire day!",
"Dont look directly at the bugs!",
"Enjoy the Techmino rotation system!",
"Excellent, but let's go better next time…",
"Find out what's in the settings!",
"Excellent, but lets go better next time…",
"Find out whats in the settings!",
"Found any bugs? Open up an issue in our GitHub page!",
"Free-to-play block stacking game with a Battle Royale mode!",
"git commit",
"git push -f",
"Got any suggestions? Post them in our Discord!",
"Have you noticed what \"rotating\" does do to a block?",
"Have you noticed what rotating does do to a block?",
"Headphones recommended for a better experience.",
"Hello world!",
"I3 and L3 are the only two unique triminoes.",
@@ -908,8 +918,8 @@ return{
"Initial [insert action] system can save you.",
"Is B2B2B2B possible?",
"It is loading! Not just a cutscene!",
"It's possible to finish 40L without left/right buttons.",
"It's possible to finish 40L without rotation buttons.",
"Its possible to finish 40L without left/right buttons.",
"Its possible to finish 40L without rotation buttons.",
"Join our Discord!",
"l-=-1",
"Let the bass kick!",
@@ -929,12 +939,12 @@ return{
"pps-0.01",
"Server down randomly",
"Some requirements to achieve rank X are intentionally set to be difficult for even the best players.",
"Soon you'll be able to play against friends and foes all over the world.",
"Soon, youll be able to play against friends and foes all over the world.",
"Split clear coming soon!",
"sudo rm -rf /*",
"Techmino is a portmanteau of \"technique\" and \"tetromino\".",
"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.",
"Techmino on Nspire-CX: yes it exists, no its 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.",
@@ -967,7 +977,7 @@ return{
{C.C,"Also try osu!"},
{C.C,"Also try Phigros!"},
{C.C,"Also try Puyo Puyo!"},
{C.C,"Also try Rubik's cube!"},
{C.C,"Also try Rubiks cube!"},
{C.C,"Also try Terraria!"},
{C.C,"Also try Touhou Project!"},
{C.C,"Also try VVVVVV!"},
@@ -979,8 +989,8 @@ return{
{C.lY,"COOL!!"},
{C.N,"Lua",C.Z," No.1"},
{C.P,"T-spin!"},
{C.R,"\"DMCA abusing\""},
{C.R,"\"Intellectual property law\""},
{C.R,"DMCA abusing"},
{C.R,"Intellectual property law"},
{C.R,"DD",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z," Cannon"},
{C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"},
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},

View File

@@ -330,7 +330,6 @@ return{
atkFX="FX Vis. de Ataque",
frame="Ratio de FPSs(%)",
FTlock="Bloqueo por frames",
text="Texto de Acciones",
score="Puntaje en Pantalla",
@@ -551,6 +550,7 @@ return{
register="Registrarse",
email="Correo Elec.",
password="Contraseña",
-- showEmail="Show Email",
keepPW="Recordar credenciales",
login="Entrar",
},
@@ -655,20 +655,21 @@ return{
['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."},
['strategy_e']= {"Strategy", "Fácil", "Decisiones rápidas en 20G."},
['strategy_h']= {"Strategy", "Difícil", "Decisiones rápidas en 20G."},
['strategy_u']= {"Strategy", "Supremo", "Decisiones rápidas en 20G."},
['strategy_e_plus']={"Strategy", "Fácil+", "Estrategia sin bodega."},
['strategy_h_plus']={"Strategy", "Difícil+", "Estrategia sin bodega."},
['strategy_u_plus']={"Strategy", "Supremo+", "Estrategia sin bodega."},
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
['blind_l']= {"A Ciegas", "Inmediato+", "Para profesionales."},
['blind_u']= {"A Ciegas", "?", "¿Estás preparado?"},
['blind_wtf']= {"A Ciegas", "ELFUF", "No, no lo estás."},
['classic_e']= {"Classic", "EASY", "Modo clásico con alta velocidad."},
['classic_e']= {"Clásico", "EASY", "Modo clásico con alta velocidad."},
['classic_h']= {"Clásico", "Difícil", "Modo clásico con alta velocidad."},
['classic_l']= {"Clásico", "Lunático", "Modo clásico con alta velocidad."},
['classic_u']= {"Clásico", "Supremo", "Modo clásico con alta velocidad."},
['survivor_e']= {"Supervivencia", "Fácil", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_n']= {"Supervivencia", "Normal", "¿Cuánto tiempo podrás sobrevivir?"},

View File

@@ -423,7 +423,6 @@ return{
atkFX="Effets d'attaque",
frame="Montrer les FPS(%)",
-- FTlock="Frame-Time Lock",
text="Texte d'action",
score="Pop-up de score",
@@ -642,6 +641,7 @@ return{
register="Enregistrement",
email="E-mail",
password="Mot de passe",
-- showEmail="Show Email",
-- keepPW="Remember me",
login="Connexion",
},
@@ -742,7 +742,7 @@ return{
['techmino49_u']= {"Tech 49", "ULTIME", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
['techmino99_e']= {"Tech 99", "FACILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_h']= {"Tech 99", "DIFFICILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_u']= {"Tech 99", "ULTIMe", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_u']= {"Tech 99", "ULTIME", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['round_e']= {"Tour à tour", "FACILE", "Mode échecs"},
['round_n']= {"Tour à tour", "NORMAL", "Mode échecs"},
['round_h']= {"Tour à tour", "DIFFICILE", "Mode échecs"},
@@ -752,14 +752,14 @@ return{
['master_h']= {"Master", "DIFFICILE", "Challenge 20G pro !"},
-- ['master_m']= {"Master", "M21", "For 20G Masters."},
['master_final']= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
-- ['master_ph']= {"Mester", "FANTASMA", "20G: ???"},
-- ['master_ph']= {"Master", "FANTASMA", "20G: ???"},
['master_ex']= {"GrandMaster", "EXTRA", "Tentez de devenir un Grandmaster."},
['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"},
['strategy_e']= {"Stratégie", "FACILE", "Décision rapide 20G"},
['strategy_h']= {"Stratégie", "DIFFICILE", "Décision rapide 20G"},
['strategy_u']= {"Stratégie", "ULTIME", "Décision rapide 20G"},
['strategy_e_plus']={"Stratégie", "FACILE+", "Stratégie sans retenue"},
['strategy_h_plus']={"Stratégie", "DIFFICILE+", "Stratégie sans retenue"},
['strategy_u_plus']={"Stratégie", "ULTIME+", "Stratégie sans retenue"},
['blind_e']= {"Aveugle", "MOITIE", "Pour les novices."},
['blind_n']= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
['blind_h']= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},
@@ -768,6 +768,7 @@ return{
['blind_wtf']= {"Aveugle", "WTF", "Vous n'êtes pas prêt."},
['classic_e']= {"Classic", "EASY", "Un mode classique rapide."},
['classic_h']= {"Classic", "DIFFICILE", "Un mode classique rapide."},
['classic_l']= {"Classic", "LUNATIQUE", "Un mode classique rapide."},
['classic_u']= {"Classic", "ULTIME", "Un mode classique rapide."},
['survivor_e']= {"Survivor", "FACILE", "Pendant combien de temps survivrez-vous ?"},
['survivor_n']= {"Survivor", "NORMAL", "Pendant combien de temps survivrez-vous ?"},
@@ -800,10 +801,10 @@ return{
['tsd_e']= {"TSD Challenge", "FACILE", "T-spin doubles uniquement !"},
['tsd_h']= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
['tsd_u']= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
-- ['backfire_n']= {"Backfire", "NORMAL", "Self-send garbages"},
-- ['backfire_h']= {"Backfire", "HARD", "Self-send garbages"},
-- ['backfire_l']= {"Backfire", "LUNATIC", "Self-send garbages"},
-- ['backfire_u']= {"Backfire", "ULTIMATE", "Self-send garbages"},
-- ['backfire_n']= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines"},
-- ['backfire_h']= {"Backfire", "HARD", "Hold back the backfiring garbage lines"},
-- ['backfire_l']= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines"},
-- ['backfire_u']= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines"},
-- ['sprintAtk']= {"Sprint", "100 Attack", "Send 100 lines!"},
-- ['sprintEff']= {"Sprint", "Efficiency", "Send more attack in 40lines!"},
['zen']= {'Zen', "200", "200 lignes sans limites de temps."},

View File

@@ -27,11 +27,11 @@ return{
clear={"Single","Double","Triple","Techrash","Pentacrash","Hexacrash","Heptacrash","Octacrash","Nonacrash","Decacrash","Undecacrash","Dodecacrash","Tridecacrash","Tetradecacrash","Pentadecacrash","Hexadecacrash","Heptadecacrash","Octadecacrash","Nonadecacrash","Ultracrash","Impossicrash"},
cleared="$1 baris",
mini="Mini",b2b="B2B ",b3b="B2B2B ",
PC="PC",HPC="Hampir PC",
PC="PC",HPC="Setengah PC",
replaying="[Diulang]",
tasUsing="[TAS]",
stage="Tahap $1 selesai!",
stage="Bagian $1 selesai!",
great="Bagus!",
awesome="Luar biasa!",
almost="Hampir!",
@@ -40,7 +40,7 @@ return{
speedup="Percepatkan!",
missionFailed="Salah",
speedLV="Kecepatan lvl",
speedLV="Kecptn lvl",
piece="Blok",line="Baris",atk="Baris Terkirim",eff="Efisiensi",
rpm="RPM",tsd="TSD",
grade="Nilai",techrash="Techrash",
@@ -56,7 +56,7 @@ return{
gameover="Tamat",
pause="Terjeda",
pauseCount="Jeda-jeda",
pauseCount="Jeda",
finesse_ap="Semua sempurna",
finesse_fc="Kombo penuh",
@@ -75,7 +75,7 @@ return{
loadError_other="'$1' eror memuat: $2",
loadError_unknown="'$1' eror memuat: alasan tidak diketahui",
saveError_duplicate="'$1' eror menyimpan: nama file tergAnda",
saveError_duplicate="'$1' eror menyimpan: nama file terganda",
saveError_encode="'$1' eror menyimpan: gagal menyandi",
saveError_other="'$1' eror menyimpan: $2",
saveError_unknown="'$1' eror menyimpan: alasan tidak diketahui",
@@ -85,10 +85,10 @@ return{
exportSuccess="Ekspor berhasil",
importSuccess="Impor berhasil",
dataCorrupted="Data rusak",
pasteWrongPlace="Menempel di tempat yang salah?",
pasteWrongPlace="Apakah Anda menempelkannya di tempat yang salah?",
noFile="File tidak ada",
nowPlaying="Sekarang mendengarkan:",
nowPlaying="Musik:",
VKTchW="Berat sentuhan",
VKOrgW="Berat asal",
@@ -151,7 +151,7 @@ return{
next="BLOK LANJUT\nMengubah jumlah blok lanjut yang ditampilkan.",
hold="SIMPAN\nMengubah jumlah blok yang bisa disimpan.",
hideNext="BLOK LANJUT Tersembunyi\nMenyembunyikan beberapa blok lanjut.",
infHold="SIMPAN SELAMANYA\nMemungkinkan Anda untuk menyimpan blok-blok selamanya.",
infHold="SIMPAN TAK TERBATAS\nMemungkinkan Anda untuk menyimpan blok-blok tidak terbatas.",
hideBlock="Sembunyikan Blok Aktif\nMenyembunyikan blok yang Anda mengontrol.",
hideGhost="Sembunyikan Blok Hantu\nMenyembunyikan blok yang menunjukkan tempat blok yang sedang dikontrol akan jatuh.",
hidden="Sembunyikan Blok Terdarat\nMenyembunyikan blok yang sudah mendarat setelah waktu yang tertentu.",
@@ -180,7 +180,7 @@ return{
"Diterima:",
"Jumlah Tindakan Membuat Baris:",
"Spins:",
"B2B/B3B/PC/Hampir PC:",
"B2B/B3B/PC/Setengah PC:",
"Efisiensi Tombol:",
},
radar={"BLOK","SERANGAN","SRGN + BLOK","SRGN TERKIRIM","KECEPATAN","GALI"},
@@ -191,12 +191,12 @@ return{
"Jumlah Waktu Bermain:",
"Tombol/Putar/Simpan:",
"Blok/Baris/Serangan:",
"Serangan Diterima/Ditolak/Muncul:", -- what is this
"Serangan Diterima/Ditolak/Muncul:",
"Gali/Serangan Gali:",
"Efisiensi/Efisiensi Gali:",
"B2B/B2B2B:",
"PC/Hampir PC:",
"Efisiensi Tombol Tidak Maksimal/Nilai:",
"PC/Setengah PC:",
"Kesalahan Efisiensi Tombol/Nilai:",
},
aboutTexts={
"Ini hanya penyusun blok *normal*. Sungguh, hanya itu saja.",
@@ -304,8 +304,8 @@ return{
"huaji2369",
"Lexitik",
"Tourahi Anime",
"[All other test staff]",
"And You!",
"[Semua staf penguji lainnya]",
"Dan Anda!",
},
used=[[
Alat-alat yang digunakan:
@@ -347,7 +347,7 @@ return{
pause={
setting="Pengaturan (S)",
replay="Ulang (P)",
save="Simpan Pengulangan (O)",
save="Simpan (O)",
resume="Lanjut (esc)",
restart="Coba lagi (R)",
quit="Berhenti (Q)",
@@ -461,7 +461,6 @@ return{
atkFX="Efek Serang",
frame="Kecepatan Bingkai (%)",
FTlock="Lewat Bingkai",
text="Teks Baris",
score="Teks Nilai",
@@ -690,6 +689,7 @@ return{
register="Daftar",
email="Alamat Email",
password="Password",
-- showEmail="Show Email",
keepPW="Ingat Saya",
login="Masuk",
},
@@ -758,110 +758,115 @@ return{
},
},
modes={
['sprint_10l']= {"Balapan", "10L", "Buat 10 baris!"},
['sprint_20l']= {"Balapan", "20L", "Buat 20 baris!"},
['sprint_40l']= {"Balapan", "40L", "Buat 40 baris!"},
['sprint_100l']= {"Balapan", "100L", "Buat 100 baris!"},
['sprint_400l']= {"Balapan", "400L", "Buat 400 baris!"},
['sprint_1000l']= {"Balapan", "1.000L", "Buat 1.000 baris!"},
['sprintPenta']= {"Balapan", "PENTOMINO", "40L dengan pentomino!"},
['sprintMPH']= {"Balapan", "MPH", "Tanpa ingatan\nTanpa pratinjau\nTanpa simpan"},
['dig_10l']= {"Gali", "10L", "Gali 10 baris!"},
['dig_40l']= {"Gali", "40L", "Gali 40 baris!"},
['dig_100l']= {"Gali", "100L", "Gali 100 baris!"},
['dig_400l']= {"Gali", "400L", "Gali 400 baris!"},
['drought_n']= {"Nasib Buruk", "100L", "Tidak ada blok I..."},
['drought_l']= {"Nasib Buruk+", "100L", "Nasib sangat buruk..."},
['marathon_n']= {"Maraton", "NORMAL", "200-baris maraton dengan kecepatan meningkat"},
['marathon_h']= {"Maraton", "SULIT", "200-baris maraton dengan kecepatan tinggi"},
['solo_e']= {"Tarung", "MUDAH", "Kalahkan AInya!"},
['solo_n']= {"Tarung", "NORMAL", "Kalahkan AInya!"},
['solo_h']= {"Tarung", "SULIT", "Kalahkan AInya!"},
['solo_l']= {"Tarung", "GILA", "Kalahkan AInya!"},
['solo_u']= {"Tarung", "TERAKHIR", "Kalahkan AInya!"},
['techmino49_e']= {"Tech 49", "MUDAH", "Pertarungan dengan 49 pemain."},
['techmino49_h']= {"Tech 49", "SULIT", "Pertarungan dengan 49 pemain."},
['techmino49_u']= {"Tech 49", "TERAKHIR", "Pertarungan dengan 49 pemain."},
['techmino99_e']= {"Tech 99", "MUDAH", "Pertarungan dengan 99 pemain."},
['techmino99_h']= {"Tech 99", "SULIT", "Pertarungan dengan 99 pemain."},
['techmino99_u']= {"Tech 99", "TERAKHIR", "Pertarungan dengan 99 pemain."},
['round_e']= {"Giliran", "MUDAH", "Giliran main melawan AI!"},
['round_n']= {"Giliran", "NORMAL", "Giliran main melawan AI!"},
['round_h']= {"Giliran", "SULIT", "Giliran main melawan AI!"},
['round_l']= {"Giliran", "GILA", "Giliran main melawan AI!"},
['round_u']= {"Giliran", "TERAKHIR", "Giliran main melawan AI!"},
['master_n']= {"Jago", "NORMAL", "Untuk pemula 20G"},
['master_h']= {"Jago", "SULIT", "Untuk pro 20G"},
['master_m']= {"Jago", "M21", "Untuk jago 20G"},
['master_final']= {"Jago", "TERAKHIR", "Lebih dari 20G"},
['master_ph']= {"Jago", "KHAYALAN", "???"},
['master_ex']= {"Sangat Jago", "EKSTRA", "Blok tidak kelihatan"},
['master_instinct']={"Jago", "INSTINK", "Bagaimana jika blok terkontrol tersembunyi?"},
['strategy_e']= {"Strategi", "MUDAH", "Keputusan 20G cepat"},
['strategy_h']= {"Strategi", "SULIT", "Keputusan 20G cepat"},
['strategy_u']= {"Strategi", "TERAKHIR", "Keputusan 20G cepat"},
['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
['blind_e']= {"Tak Terlihat", "MUDAH", "Untuk pemula"},
['blind_n']= {"Tak Terlihat", "NORMAL", "Untuk amatir"},
['blind_h']= {"Tak Terlihat", "SULIT", "Untuk orang berpengalaman"},
['blind_l']= {"Tak Terlihat", "GILA", "Untuk profesional"},
['blind_u']= {"Tak Terlihat", "???", "Apakah Anda siap?"},
['blind_wtf']= {"Tak Terlihat", "TERAKHIR", "Anda belum siap"},
['classic_e']= {"Klasik", "MUDAH", "Rekreasi berkecepatan rendah dari tahun 80-an"},
['classic_h']= {"Klasik", "SULIT", "Rekreasi berkecepatan medium dari tahun 80-an"},
['classic_u']= {"Klasik", "TERAKHIR", "Rekreasi berkecepatan tinggi dari tahun 80-an"},
['survivor_e']= {"Bertahan", "MUDAH", "Berapa lama Anda bisa bertahan?"},
['survivor_n']= {"Bertahan", "NORMAL", "Berapa lama Anda bisa bertahan?"},
['survivor_h']= {"Bertahan", "SULIT", "Berapa lama Anda bisa bertahan?"},
['survivor_l']= {"Bertahan", "GILA", "Berapa lama Anda bisa bertahan?"},
['survivor_u']= {"Bertahan", "TERAKHIR", "Berapa lama Anda bisa bertahan?"},
['attacker_h']= {"Penyerang", "SULIT", "Praktekkan keahlian menyerang Anda!"},
['attacker_u']= {"Penyerang", "TERAKHIR", "Praktekkan keahlian menyerang Anda!"},
['defender_n']= {"Pembela", "NORMAL", "Praktekkan keahlian membela Anda!"},
['defender_l']= {"Pembela", "GILA", "Praktekkan keahlian membela Anda!"},
['dig_h']= {"Pembor", "SULIT", "Praktekkan keahlian menggali Anda!"},
['dig_u']= {"Pembor", "TERAKHIR", "Praktekkan keahlian menggali Anda!"},
['clearRush']= {"Gegas Baris", "NORMAL", "Tutorial all-spin!\n[Dalam pengembangan]"},
['c4wtrain_n']= {"Latihan C4W", "NORMAL", "Kombo tidak terbatas."},
['c4wtrain_l']= {"Latihan C4W", "GILA", "Kombo tidak terbatas."},
['pctrain_n']= {"Latihan PC", "NORMAL", "Latihan PC"},
['pctrain_l']= {"Latihan PC", "GILA", "Latihan PC yang lebih sulit"},
['pc_n']= {"Tantangan PC", "NORMAL", "Dapatkan PC sampai 100 baris!"},
['pc_h']= {"Tantangan PC", "SULIT", "Dapatkan PC sampai 100 baris!"},
['pc_l']= {"Tantangan PC", "GILA", "Dapatkan PC sampai 100 baris!"},
['pc_inf']= {"Tantangan PC", "TAK TERBATAS", "Dapatkan PC sebanyaknya!"},
['tech_n']= {"Tech", "NORMAL", "Coba jaga deret Back-To-Back!"},
['tech_n_plus']= {"Tech", "NORMAL+", "Hanya Spins & PCs dibolehkan"},
['tech_h']= {"Tech", "SULIT", "Coba jaga deret Back-To-Back!"},
['tech_h_plus']= {"Tech", "SULIT+", "Hanya Spins & PCs dibolehkan"},
['tech_l']= {"Tech", "GILA", "Coba jaga deret Back-To-Back!"},
['tech_l_plus']= {"Tech", "GILA+", "Hanya Spins & PCs dibolehkan"},
['tech_finesse']= {"Tech", "EF. TOMBOL", "Efisiensi tombol harus maksimal!"},
['tech_finesse_f']= {"Tech", "EF. TOMBOL+", "Efisiensi tombol maksimal dan tidak ada garis normal!"},
['tsd_e']= {"Tantangan TSD", "MUDAH", "Hanya T-Spin Double dibolehkan!"},
['tsd_h']= {"Tantangan TSD", "SULIT", "Hanya T-Spin Double dibolehkan!"},
['tsd_u']= {"Tantangan TSD", "TERAKHIR", "Hanya T-Spin Double dibolehkan!"},
['backfire_n']= {"Serangan Balik", "NORMAL", "Tahankan serang baliknya!"},
['backfire_h']= {"Serangan Balik", "SULIT", "Tahankan serang baliknya!"},
['backfire_l']= {"Serangan Balik", "GILA", "Tahankan serang baliknya!"},
['backfire_u']= {"Serangan Balik", "TERAKHIR", "Tahankan serang baliknya!"},
['sprintAtk']= {"Balapan", "100 Serangan", "Kirim 100 baris serangan!"},
['sprintEff']= {"Balapan", "Efisiensi", "Kirim lebih banyak serangan sampai 40 baris!"},
['zen']= {"Zen", "200L", "Permainan 200-garis tanpa batas waktu"},
['ultra']= {"Ultra", "EKSTRA", "Permainan 2 menit. Dapatkan nilai sebanyaknya!"},
['infinite']= {"Tak Terbatas", "", "Bak pasir"},
['infinite_dig']= {"Tak Terbatas: Gali","", "Gali, gali, gali"},
['marathon_inf']= {"Maraton", "TAK TERBATAS", "Maraton tanpa akhir."},
['sprint_10l']= {"Balapan", "10L", "Buat 10 baris!"},
['sprint_20l']= {"Balapan", "20L", "Buat 20 baris!"},
['sprint_40l']= {"Balapan", "40L", "Buat 40 baris!"},
['sprint_100l']= {"Balapan", "100L", "Buat 100 baris!"},
['sprint_400l']= {"Balapan", "400L", "Buat 400 baris!"},
['sprint_1000l']= {"Balapan", "1.000L", "Buat 1.000 baris!"},
['sprintPenta']= {"Balapan", "PENTOMINO", "40L dengan pentomino!"},
['sprintMPH']= {"Balapan", "MPH", "Tanpa ingatan\nTanpa pratinjau\nTanpa simpan"},
['dig_10l']= {"Gali", "10L", "Gali 10 baris!"},
['dig_40l']= {"Gali", "40L", "Gali 40 baris!"},
['dig_100l']= {"Gali", "100L", "Gali 100 baris!"},
['dig_400l']= {"Gali", "400L", "Gali 400 baris!"},
['dig_eff_10l']= {"Gali", "EFISIENSI 10L", "Gali 10 baris!"},
['dig_eff_40l']= {"Gali", "EFISIENSI 40L", "Gali 40 baris!"},
['dig_eff_100l']= {"Gali", "EFISIENSI 100L","Gali 100 baris!"},
['dig_eff_400l']= {"Gali", "EFISIENSI 400L","Gali 400 baris!"},
['drought_n']= {"Nasib Buruk", "100L", "Tidak ada blok I..."},
['drought_l']= {"Nasib Buruk+", "100L", "Nasib sangat buruk..."},
['marathon_n']= {"Maraton", "NORMAL", "200-baris maraton dengan kecepatan meningkat"},
['marathon_h']= {"Maraton", "SULIT", "200-baris maraton dengan kecepatan tinggi"},
['solo_e']= {"Tarung", "MUDAH", "Kalahkan AInya!"},
['solo_n']= {"Tarung", "NORMAL", "Kalahkan AInya!"},
['solo_h']= {"Tarung", "SULIT", "Kalahkan AInya!"},
['solo_l']= {"Tarung", "GILA", "Kalahkan AInya!"},
['solo_u']= {"Tarung", "TERAKHIR", "Kalahkan AInya!"},
['techmino49_e']= {"Tech 49", "MUDAH", "Pertarungan dengan 49 pemain."},
['techmino49_h']= {"Tech 49", "SULIT", "Pertarungan dengan 49 pemain."},
['techmino49_u']= {"Tech 49", "TERAKHIR", "Pertarungan dengan 49 pemain."},
['techmino99_e']= {"Tech 99", "MUDAH", "Pertarungan dengan 99 pemain."},
['techmino99_h']= {"Tech 99", "SULIT", "Pertarungan dengan 99 pemain."},
['techmino99_u']= {"Tech 99", "TERAKHIR", "Pertarungan dengan 99 pemain."},
['round_e']= {"Giliran", "MUDAH", "Giliran main melawan AI!"},
['round_n']= {"Giliran", "NORMAL", "Giliran main melawan AI!"},
['round_h']= {"Giliran", "SULIT", "Giliran main melawan AI!"},
['round_l']= {"Giliran", "GILA", "Giliran main melawan AI!"},
['round_u']= {"Giliran", "TERAKHIR", "Giliran main melawan AI!"},
['master_n']= {"Jago", "NORMAL", "Untuk pemula 20G"},
['master_h']= {"Jago", "SULIT", "Untuk pro 20G"},
['master_m']= {"Jago", "M21", "Untuk jago 20G"},
['master_final']= {"Jago", "TERAKHIR", "Lebih dari 20G"},
['master_ph']= {"Jago", "KHAYALAN", "???"},
['master_ex']= {"Sangat Jago", "EKSTRA", "Blok tidak kelihatan"},
['master_instinct']={"Jago", "INSTINK", "Bagaimana jika blok terkontrol tersembunyi?"},
['strategy_e']= {"Strategi", "MUDAH", "Keputusan 20G cepat"},
['strategy_h']= {"Strategi", "SULIT", "Keputusan 20G cepat"},
['strategy_u']= {"Strategi", "TERAKHIR", "Keputusan 20G cepat"},
['strategy_e_plus']={"Strategi", "MUDAH+", "Mode strategi, tetapi tanpa menyimpan"},
['strategy_h_plus']={"Strategi", "SULIT+", "Mode strategi, tetapi tanpa menyimpan"},
['strategy_u_plus']={"Strategi", "TERAKHIR+", "Mode strategi, tetapi tanpa menyimpan"},
['blind_e']= {"Tak Terlihat", "MUDAH", "Untuk pemula"},
['blind_n']= {"Tak Terlihat", "NORMAL", "Untuk amatir"},
['blind_h']= {"Tak Terlihat", "SULIT", "Untuk orang berpengalaman"},
['blind_l']= {"Tak Terlihat", "GILA", "Untuk profesional"},
['blind_u']= {"Tak Terlihat", "???", "Apakah Anda siap?"},
['blind_wtf']= {"Tak Terlihat", "TERAKHIR", "Anda belum siap"},
['classic_e']= {"Klasik", "MUDAH", "Rekreasi berkecepatan rendah dari tahun 80-an"},
['classic_h']= {"Klasik", "SULIT", "Rekreasi berkecepatan medium dari tahun 80-an"},
['classic_l']= {"Klasik", "GILA", "Rekreasi berkecepatan medium-tinggi dari tahun 80-an"},
['classic_u']= {"Klasik", "TERAKHIR", "Rekreasi berkecepatan tinggi dari tahun 80-an"},
['survivor_e']= {"Bertahan", "MUDAH", "Berapa lama Anda bisa bertahan?"},
['survivor_n']= {"Bertahan", "NORMAL", "Berapa lama Anda bisa bertahan?"},
['survivor_h']= {"Bertahan", "SULIT", "Berapa lama Anda bisa bertahan?"},
['survivor_l']= {"Bertahan", "GILA", "Berapa lama Anda bisa bertahan?"},
['survivor_u']= {"Bertahan", "TERAKHIR", "Berapa lama Anda bisa bertahan?"},
['attacker_h']= {"Penyerang", "SULIT", "Praktekkan keahlian menyerang Anda!"},
['attacker_u']= {"Penyerang", "TERAKHIR", "Praktekkan keahlian menyerang Anda!"},
['defender_n']= {"Pembela", "NORMAL", "Praktekkan keahlian membela Anda!"},
['defender_l']= {"Pembela", "GILA", "Praktekkan keahlian membela Anda!"},
['dig_h']= {"Pembor", "SULIT", "Praktekkan keahlian menggali Anda!"},
['dig_u']= {"Pembor", "TERAKHIR", "Praktekkan keahlian menggali Anda!"},
['clearRush']= {"Gegas Baris", "NORMAL", "Tutorial all-spin!\n[Dalam pengembangan]"},
['c4wtrain_n']= {"Latihan C4W", "NORMAL", "Kombo tidak terbatas."},
['c4wtrain_l']= {"Latihan C4W", "GILA", "Kombo tidak terbatas."},
['pctrain_n']= {"Latihan PC", "NORMAL", "Latihan PC"},
['pctrain_l']= {"Latihan PC", "GILA", "Latihan PC yang lebih sulit"},
['pc_n']= {"Tantangan PC", "NORMAL", "Dapatkan PC sampai 100 baris!"},
['pc_h']= {"Tantangan PC", "SULIT", "Dapatkan PC sampai 100 baris!"},
['pc_l']= {"Tantangan PC", "GILA", "Dapatkan PC sampai 100 baris!"},
['pc_inf']= {"Tantangan PC", "TAK TERBATAS", "Dapatkan PC sebanyaknya!"},
['tech_n']= {"Tech", "NORMAL", "Coba jaga deret Back-To-Back!"},
['tech_n_plus']= {"Tech", "NORMAL+", "Hanya Spins & PCs dibolehkan"},
['tech_h']= {"Tech", "SULIT", "Coba jaga deret Back-To-Back!"},
['tech_h_plus']= {"Tech", "SULIT+", "Hanya Spins & PCs dibolehkan"},
['tech_l']= {"Tech", "GILA", "Coba jaga deret Back-To-Back!"},
['tech_l_plus']= {"Tech", "GILA+", "Hanya Spins & PCs dibolehkan"},
['tech_finesse']= {"Tech", "EF. TOMBOL", "Efisiensi tombol harus maksimal!"},
['tech_finesse_f']= {"Tech", "EF. TOMBOL+", "Efisiensi tombol maksimal dan tidak ada garis normal!"},
['tsd_e']= {"Tantangan TSD", "MUDAH", "Hanya T-Spin Double dibolehkan!"},
['tsd_h']= {"Tantangan TSD", "SULIT", "Hanya T-Spin Double dibolehkan!"},
['tsd_u']= {"Tantangan TSD", "TERAKHIR", "Hanya T-Spin Double dibolehkan!"},
['backfire_n']= {"Serangan Balik", "NORMAL", "Tahankan serang baliknya!"},
['backfire_h']= {"Serangan Balik", "SULIT", "Tahankan serang baliknya!"},
['backfire_l']= {"Serangan Balik", "GILA", "Tahankan serang baliknya!"},
['backfire_u']= {"Serangan Balik", "TERAKHIR", "Tahankan serang baliknya!"},
['sprintAtk']= {"Balapan", "100 Serangan", "Kirim 100 baris serangan!"},
['sprintEff']= {"Balapan", "Efisiensi", "Kirim lebih banyak serangan sampai 40 baris!"},
['zen']= {"Zen", "200L", "Permainan 200-garis tanpa batas waktu"},
['ultra']= {"Ultra", "EKSTRA", "Permainan 2 menit. Dapatkan nilai sebanyaknya!"},
['infinite']= {"Tak Terbatas", "", "Bak pasir"},
['infinite_dig']= {"Tak Terbatas: Gali","", "Gali, gali, gali"},
['marathon_inf']= {"Maraton", "TAK TERBATAS", "Maraton tanpa akhir."},
['custom_clear']= {"Tersesuai", "NORMAL"},
['custom_puzzle']= {"Tersesuai", "TEKA-TEKI"},
},
getTip={refuseCopy=true,
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"\"Techmino.app\" tidak bisa dibuka karena penciptanya tidak bisa diverifikasi.",
"\"Techmino.app\" akan merusak komputer Anda. Anda sebaiknya memindah itu ke tempat sampah.",
"\"Techmino.app\" tidak bisa dibuka karena pengembang tidak bisa diverifikasi.",
"\"Techmino.app\" akan merusak komputer Anda. Anda harus memindahnya ke tong sampah.",
"\"TechminOS\"",
"\\jezevec/\\jezevec/\\jezevec/",
"\\osk/\\osk/\\osk/",
@@ -918,8 +923,8 @@ return{
"OHHHHHHHHHHHHHH",
"Main dengan satu tangan!",
"Bermain bagus membutuhkan waktu!",
"dipersembahkan oleh LÖVE",
"dipersembahkan oleh Un..LÖVE",
"Dipersembahkan oleh LÖVE",
"Dipersembahkan oleh Un..LÖVE",
"Server kadang tidak berfungsi",
"Beberapa persyaratan untuk mencapai peringkat X sengaja dibuat sulit bahkan untuk pemain terbaik.",
"Segera Anda akan dapat bermain melawan teman dan musuh di seluruh dunia.",

View File

@@ -461,7 +461,6 @@ return{
atkFX="攻撃演出",
frame="レンダリングフレームレート(%)",
FTlock="フレームスキップ",
text="ライン消去ポップ",
score="スコアポップ",
@@ -690,6 +689,7 @@ return{
register="サインアップ",
email="Eメールアドレス",
password="パスワード",
-- showEmail="Show Email",
keepPW="常にログイン",
login="ログイン",
},
@@ -811,6 +811,7 @@ return{
['blind_wtf']= {"目隠し", "WTF", "まだ覚悟が足りないな!"},
['classic_e']= {"クラシック", "EASY", "低速クラシック"},
['classic_h']= {"クラシック", "HARD", "通常速度クラシック"},
['classic_l']= {"クラシック", "LUNATIC", "中高速度クラシック"},
['classic_u']= {"クラシック", "ULTIMATE", "高速クラシック"},
['survivor_e']= {"サバイバル", "EASY", "どれだけ生き残れるかな?"},
['survivor_n']= {"サバイバル", "NORMAL", "どれだけ生き残れるかな?"},

View File

@@ -448,7 +448,6 @@ return{
atkFX="Nível FX Atk.",
frame="Render Frame Rate(%)",
-- FTlock="Frame-Time Lock",
text="Texto de ação",
score="Pop-up de pontos",
@@ -678,6 +677,7 @@ return{
register="Registrar",
email="Endereço De Email",
password="Senha",
-- showEmail="Show Email",
-- keepPW="Remember me",
login="Log in",
},
@@ -766,7 +766,7 @@ return{
['solo_e']= {"Batalha", "FÁCIL", "Derrote a inteligência!"},
['solo_n']= {"Batalha", "NORMAL", "Derrote a inteligência!"},
['solo_h']= {"Batalha", "DIFÍCIL", "Derrote a inteligência!"},
['solo_l']= {"Batalha", "LUNATICO", "Defeat the AI!"},
['solo_l']= {"Batalha", "LUNÁTICO", "Defeat the AI!"},
['solo_u']= {"Batalha", "ULTIMATE", "Defeat the AI!"},
['techmino49_e']= {"Tech 49", "FÁCIL", "Batalha de 49 jogadores.\nO último vence"},
['techmino49_h']= {"Tech 49", "DIFÍCIL", "Batalha de 49 jogadores.\nO último vence."},
@@ -788,9 +788,9 @@ return{
-- ['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"},
-- ['strategy_e_plus']={"Strategy", "EASY+", "Holdless strategy"},
-- ['strategy_h_plus']={"Strategy", "HARD+", "Holdless strategy"},
-- ['strategy_u_plus']={"Strategy", "ULTIMATE+", "Holdless strategy"},
['blind_e']= {"Cego", "METADE", "Para novatos."},
['blind_n']= {"Cego", "TUDO", "Para intermediários."},
['blind_h']= {"Cego", "DE REPENTE", "Para experientes."},
@@ -798,7 +798,8 @@ return{
['blind_u']= {"Cego", "?", "Are you ready?"},
['blind_wtf']= {"Cego", "WTF", "You're not ready."},
['classic_e']= {"Classic", "EASY", "Modo clássico rápido."},
['classic_h']= {"Classic", "DIFÍCIL", "Modo clássico rápido."},
['classic_h']= {"Classic", "DIFÍCIL", "Modo clássico rápido."},
['classic_l']= {"Classic", "LUNÁTICO", "Modo clássico rápido."},
['classic_u']= {"Classic", "ULTIMATE", "Modo clássico rápido."},
['survivor_e']= {"Sobrevivente", "FACIL", "Por quanto sobrevive?"},
['survivor_n']= {"Sobrevivente", "NORMAL", "Por quanto sobrevive?"},

View File

@@ -269,7 +269,6 @@ return{
atkFX="→→~",
frame="|=|%",
FTlock="||=|→→|=||",
text="ABC",
score="+123",
@@ -489,7 +488,8 @@ return{
register="Sign up",
email="@",
password="*",
-- keepPW="I",
showEmail="?",
keepPW="!",
login="Log in",
},
register={

View File

@@ -198,7 +198,7 @@ return{
"多余操作/极简率:",
},
aboutTexts={
"这只是一个普通的方块游戏,请勿将此与某带国家名的事物强行联系",
"这只是一个普通的方块游戏",
"从C2/IO/JS/WWC/KOS等方块获得过灵感",
"",
"使用LÖVE引擎",
@@ -420,13 +420,13 @@ return{
title="游戏设置",
graphic="←画面",
sound="声音→",
style="风格",
style="方块风格",
ctrl="控制设置",
key="键位设置",
touch="触屏设置",
ctrl="控制设置",
key="键位设置",
touch="触屏设置",
showVK="显示虚拟按键",
reTime="开局等待时间",
reTime="开局等待时间:",
RS="旋转系统",
menuPos="菜单按钮位置",
sysCursor="使用系统光标",
@@ -446,21 +446,20 @@ return{
bagLine="包分界线",
ghostType="阴影样式",
ghost="阴影不透明度",
center="旋转中心不透明度",
grid="网格不透明度",
lineNum="行号透明度",
ghost="阴影不透明度:",
center="旋转中心不透明度:",
grid="网格不透明度:",
lineNum="行号透明度:",
lockFX="锁定特效",
dropFX="下落特效",
moveFX="移动特效",
clearFX="消除特效",
splashFX="溅射特效",
shakeFX="晃动特效",
atkFX="攻击特效",
lockFX="锁定特效:",
dropFX="下落特效:",
moveFX="移动特效:",
clearFX="消除特效:",
splashFX="溅射特效:",
shakeFX="晃动特效:",
atkFX="攻击特效:",
frame="绘制帧率(%)",
FTlock="逻辑追帧",
frame="绘制帧率(%):",
text="消行文本",
score="分数动画",
@@ -471,7 +470,7 @@ return{
warn="死亡预警",
clickFX="点按特效",
power="电量显示",
power="电量和时间",
clean="绘制优化",
fullscreen="全屏",
@@ -487,14 +486,14 @@ return{
game="←游戏",
graphic="画面→",
mainVol="总音量",
bgm="音乐",
sfx="音效",
stereo="立体声",
spawn="方块生成",
warn="危险警告",
vib="振动",
voc="语音",
mainVol="总音量:",
bgm="音乐:",
sfx="音效:",
stereo="立体声:",
spawn="方块生成:",
warn="危险警告:",
vib="振动强度:",
voc="语音:",
autoMute="失去焦点自动静音",
fine="非极简操作时播放提示音",
@@ -506,10 +505,10 @@ return{
title="控制设置",
preview="预览",
das="DAS",arr="ARR",
dascut="DAS打断",
dropcut="误硬降打断",
sddas="软降DAS",sdarr="软降ARR",
das="DAS:",arr="ARR:",
dascut="DAS打断:",
dropcut="误硬降打断:",
sddas="软降DAS:",sdarr="软降ARR:",
ihs="提前Hold",
irs="提前旋转",
ims="提前移动",
@@ -560,9 +559,9 @@ return{
norm="标准",
pro="专业",
icon="图标",
sfx="按键音效",
vib="按键振动",
alpha="不透明度",
sfx="按键音效:",
vib="按键振动:",
alpha="不透明度:",
track="按键自动跟踪",
dodge="自动避让",
@@ -597,8 +596,8 @@ return{
eventSet="规则包",
holdMode="Hold模式",
nextCount="Next",
holdCount="Hold",
nextCount="Next数:",
holdCount="Hold数:",
infHold="无限Hold",
phyHold="物理Hold",
@@ -634,8 +633,8 @@ return{
newPg="新页面(N)",
delPg="删除页面(M)",
prevPg="上一页",
nextPg="下一页",
prevPg="上一页",
nextPg="下一页",
},
custom_sequence={
title="自定义游戏",
@@ -688,6 +687,7 @@ return{
register="注册",
email="邮箱",
password="密码",
showEmail="显示邮箱",
keepPW="保存密码",
login="登录",
},
@@ -695,9 +695,9 @@ return{
title="注册",
login="登录",
username="用户名",
email="邮箱",
password="密码",
password2="确认密码",
email="邮箱:",
password="密码:",
password2="确认密码:",
register="注册",
registering="等待服务器响应……",
},
@@ -762,12 +762,18 @@ return{
['sprint_100l']= {"竞速", "100L", "消除100行"},
['sprint_400l']= {"竞速", "400L", "消除400行"},
['sprint_1000l']= {"竞速", "1000L", "消除1000行"},
['secret_grade']= {"秘密段位", "", "按照提示完成经典的“大于号”拼图"},
['sprintPenta']= {"竞速", "五连块", "伤脑筋十八块"},
['sprintMPH']= {"竞速", "MPH", "纯随机\n无预览\n无暂存"},
['sprint123']= {"竞速", "M123", "40L但只有1~3连块"},
['dig_10l']= {"挖掘", "10L", "挖掘10行"},
['dig_40l']= {"挖掘", "40L", "挖掘40行"},
['dig_100l']= {"挖掘", "100L", "挖掘100行"},
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
['dig_eff_10l']= {"挖掘", "效率 10L", "挖掘10行用最少的件数"},
['dig_eff_40l']= {"挖掘", "效率 40L", "挖掘40行用最少的件数"},
['dig_eff_100l']= {"挖掘", "效率 100L","挖掘100行用最少的件数"},
['dig_eff_400l']= {"挖掘", "效率 400L","挖掘400行用最少的件数"},
['drought_n']= {"干旱", "100L", "你I没了"},
['drought_l']= {"干旱+", "100L", "后 妈 发 牌"},
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
@@ -788,19 +794,22 @@ return{
['round_h']= {"回合制", "困难", "下棋模式"},
['round_l']= {"回合制", "疯狂", "下棋模式"},
['round_u']= {"回合制", "极限", "下棋模式"},
['big_n']= {"大方块", "普通", "模拟10*5场地的玩法(标准尺寸的一半)"},
['big_h']= {"大方块", "困难", "模拟10*5场地的玩法(标准尺寸的一半)"},
['master_n']= {"大师", "普通", "20G初心者练习"},
['master_h']= {"大师", "困难", "上级者20G挑战"},
['master_m']= {"大师", "大师", "大师20G"},
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
['master_ph']= {"大师", "虚幻", "虚幻20G:"},
['master_g']= {"大师", "段位考试", "20G段位考试"},
['master_ex']= {"宗师", "EX", "成为方块大师"},
['master_instinct']={"大师", "本能", "隐藏当前块"},
['master_instinct']={"大师", "本能", "当前块在出现后一小会后会隐形"},
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
['strategy_e_plus']={"策略堆叠", "简单+", "20G堆叠中速决策练习"},
['strategy_h_plus']={"策略堆叠", "困难+", "20G堆叠快速决策练习"},
['strategy_u_plus']={"策略堆叠", "极限+", "20G堆叠极速决策练习"},
['strategy_e_plus']={"策略堆叠", "简单+", "20G堆叠中速决策练习\n无Hold"},
['strategy_h_plus']={"策略堆叠", "困难+", "20G堆叠快速决策练习\n无Hold"},
['strategy_u_plus']={"策略堆叠", "极限+", "20G堆叠极速决策练习\n无Hold"},
['blind_e']= {"隐形", "半隐", "不强大脑"},
['blind_n']= {"隐形", "全隐", "挺强大脑"},
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
@@ -809,7 +818,8 @@ return{
['blind_wtf']= {"隐形", "不会吧", "还没准备好"},
['classic_e']= {"高速经典", "简单", "高速经典"},
['classic_h']= {"高速经典", "困难", "飞速经典"},
['classic_u']= {"高速经典", "极限", "极速经典"},
['classic_l']= {"高速经典", "疯狂", "极速经典"},
['classic_u']= {"高速经典", "极限", "光速经典"},
['survivor_e']= {"生存", "简单", "你能存活多久?"},
['survivor_n']= {"生存", "普通", "你能存活多久?"},
['survivor_h']= {"生存", "困难", "你能存活多久?"},
@@ -889,7 +899,7 @@ return{
"大家认为的俄罗斯方块很可能不是你以为的俄罗斯方块,场合合适的时候可以适当提醒一下哦",
"大满贯10连击消四全清",
"戴上耳机以获得最佳体验",
"多年小游戏玩家表示痛恨故意拖时间的假加载",
"多年小游戏玩家表示痛恨拖时间的假加载",
"多hold现代块又回来了",
"俄罗斯方块完全可以作为电竞游戏",
"发现有个“隐形”皮肤了吗",
@@ -927,7 +937,6 @@ return{
"深降了解一下",
"试试用跳舞毯打块",
"适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活",
"烫烫烫烫烫烫",
"挖掘能力在对战里非常非常非常重要!!!!",
"玩到一半弹出消息框?快去设置禁止弹窗",
"玩得开心的话游戏作者也会很开心哦",
@@ -967,7 +976,7 @@ return{
"pps-0.01",
"sofunhowtoget",
"STSD必死",
"Techmino /'tɛkmɪnoʊ/ n.铁壳米诺(游戏名)",
"Techmino /'tɛkminəʊ/ 美/'tɛkminoʊ/ n.铁壳米诺 (游戏名)",
"Techmino = Technique + Tetromino",
"Techmino 好玩!",
"Techmino安卓下载",
@@ -995,6 +1004,7 @@ return{
"绝大多数按钮上的图标是调用Unicode私用区里的自制字符实现的",
"科技骨牌 你的创新式块堆栈业务技术管理器",
"锟斤拷锟斤拷锟斤拷",
"烫烫烫烫烫烫",
"“Techmino.app”将对您的电脑造成伤害。您应该将它移到废纸篓。",
"$include<studio.h>",
"无法打开“Techmino.app”因为无法验证开发者。",

View File

@@ -1,184 +0,0 @@
return{
cmb={nil,"1连击","2连击","3连击","4连击","5连击","6连击","7连击","8连击","9连击","10连击!","11连击!","12连击!","13连击!","14连击!","15连击!","16连击!","17连击!","18连击!","19连击!","巨型连击"},
spin="型回旋",
clear={"单清","双清","三清","四清","五清","六清","七清","八清","九清","十清","十一清","十二清","十三清","十四清","十五清","十六清","十七清","十八清","十九清","二十清","超二十清"},
cleared="",
mini="迷你",b2b="满贯",b3b="大满贯",
PC="场地全清",HPC="场地半清",
great="不错!",
awesome="精彩。",
almost="差一点!",
continue="继续。",
speedLV="速度等级",
piece="块数",line="行数",atk="攻击",eff="效率",
rpm="收每分",tsd="T2",
grade="段位",techrash="消四",
wave="波数",nextWave="下一波",
combo="连击",maxcmb="最大连击",
pc="全清",ko="淘汰",
finesse_ap="完美极简",
finesse_fc="全连击",
cc_fixed="不能同时开启CC和固定序列",
cc_swap="不能同时开启CC和swap的暂存模式",
ai_prebag="不能同时开启电脑玩家和含有非四连块的自定义序列",
ai_mission="不能同时开启电脑玩家和自定义任务",
modInstruction="选择你要使用的模组!\n不同的模组会用不同的方式改变游戏规则,来开发新玩法挑战自我吧!\n提醒:开启一些模组会让成绩无效 你可以用键盘开关模组按tab重置",
modInfo={
next="预览数量:\n强制使用预览的个数",
hold="暂存数量:\n强制使用暂存的个数",
hideNext="隐藏预览:\n隐藏前几个预览",
infHold="无限暂存:\n可以无限制使用暂存",
forceB2B="强制满贯:\n满贯点数条掉到启动线以下就会结束游戏",
},
pauseStat={
"时间:",
"按键/旋转/暂存:",
"落块:",
"消行/挖掘:",
"攻击/挖掘攻击:",
"上涨/接收/抵消:",
"消除:",
"回旋:",
"(大)满贯/全(半)清:",
"非极简操作:",
},
radar={"","","","","",""},
radarData={"防/分","守/分","攻/分","送/分","行/分","挖/分"},
WidgetText={
mode={
mod="模组(F1)",
},
mod={
title="模组",
},
net_newRoom={
ospin="O旋",
holdMode="暂存模式",
nextCount="预览个数",
holdCount="暂存个数",
infHold="无限暂存",
phyHold="物理暂存",
},
setting_control={
das="首次移动延迟",arr="移动重复延迟",
sddas="首次软降延迟",sdarr="软降重复延迟",
ihs="提前暂存",
},
customGame={
mod="模组(F1)",
ospin="O旋",
holdMode="暂存模式",
nextCount="预览个数",
holdCount="暂存个数",
infHold="无限暂存",
phyHold="物理暂存",
},
},
modes={
['sprint_10l']= {"竞速", "10行", "消除10行"},
['sprint_20l']= {"竞速", "20行", "消除20行"},
['sprint_40l']= {"竞速", "40行", "消除40行"},
['sprint_100l']= {"竞速", "100行", "消除100行"},
['sprint_400l']= {"竞速", "400行", "消除400行"},
['sprint_1000l']= {"竞速", "1000行", "消除1000行"},
['sprintPenta']= {"竞速", "五连块", "伤脑筋十八块"},
['sprintMPH']= {"竞速", "纯净", "纯随机\n无预览\n无暂存"},
['dig_10l']= {"挖掘", "10L", "挖掘10行"},
['dig_40l']= {"挖掘", "40L", "挖掘40行"},
['dig_100l']= {"挖掘", "100L", "挖掘100行"},
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
['drought_n']= {"干旱", "100行", "你I没了"},
['drought_l']= {"干旱+", "100行", "后 妈 发 牌"},
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
['marathon_h']= {"马拉松", "困难", "200行高速马拉松"},
['solo_e']= {"单挑", "简单", "打败机器人"},
['solo_n']= {"单挑", "普通", "打败机器人"},
['solo_h']= {"单挑", "困难", "打败机器人"},
['solo_l']= {"单挑", "疯狂", "打败机器人"},
['solo_u']= {"单挑", "极限", "打败机器人"},
['techmino49_e']= {"49人混战", "简单", "49人混战活到最后"},
['techmino49_h']= {"49人混战", "困难", "49人混战活到最后"},
['techmino49_u']= {"49人混战", "极限", "49人混战活到最后"},
['techmino99_e']= {"99人混战", "简单", "99人混战活到最后"},
['techmino99_h']= {"99人混战", "困难", "99人混战活到最后"},
['techmino99_u']= {"99人混战", "极限", "99人混战活到最后"},
['round_e']= {"回合制", "简单", "下棋模式"},
['round_n']= {"回合制", "普通", "下棋模式"},
['round_h']= {"回合制", "困难", "下棋模式"},
['round_l']= {"回合制", "疯狂", "下棋模式"},
['round_u']= {"回合制", "极限", "下棋模式"},
['master_n']= {"大师", "普通", "20G初心者练习"},
['master_h']= {"大师", "困难", "上级者20G挑战"},
['master_m']= {"大师", "大师", "大师20G"},
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
['master_ph']= {"大师", "虚幻", "虚幻20G:???"},
['master_ex']= {"宗师", "EX", "成为方块大师"},
['master_instinct']={"大师", "本能", "隐藏当前块"},
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
['strategy_e_plus']={"策略堆叠", "简单+", "20G堆叠中速决策练习"},
['strategy_h_plus']={"策略堆叠", "困难+", "20G堆叠快速决策练习"},
['strategy_u_plus']={"策略堆叠", "极限+", "20G堆叠极速决策练习"},
['blind_e']= {"隐形", "半隐", "不强大脑"},
['blind_n']= {"隐形", "全隐", "挺强大脑"},
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
['blind_l']= {"隐形", "瞬隐+", "超强大脑"},
['blind_u']= {"隐形", "啊这", "你准备好了吗"},
['blind_wtf']= {"隐形", "不会吧", "还没准备好"},
['classic_e']= {"高速经典", "简单", "高速经典"},
['classic_h']= {"高速经典", "困难", "飞速经典"},
['classic_u']= {"高速经典", "极限", "极速经典"},
['survivor_e']= {"生存", "简单", "你能存活多久?"},
['survivor_n']= {"生存", "普通", "你能存活多久?"},
['survivor_h']= {"生存", "困难", "你能存活多久?"},
['survivor_l']= {"生存", "疯狂", "你能存活多久?"},
['survivor_u']= {"生存", "极限", "你能存活多久?"},
['attacker_h']= {"进攻", "困难", "进攻练习"},
['attacker_u']= {"进攻", "极限", "进攻练习"},
['defender_n']= {"防守", "普通", "防守练习"},
['defender_l']= {"防守", "疯狂", "防守练习"},
['dig_h']= {"挖掘", "困难", "挖掘练习"},
['dig_u']= {"挖掘", "极限", "挖掘练习"},
['clearRush']= {"清版竞速", "普通", "所有块的回旋入门\n还没做好"},
['c4wtrain_n']= {"中四宽练习", "普通", "无 限 连 击"},
['c4wtrain_l']= {"中四宽练习", "疯狂", "无 限 连 击"},
['pctrain_n']= {"全清训练", "普通", "简易全清题库,熟悉全清定式的组合"},
['pctrain_l']= {"全清训练", "疯狂", "困难全清题库,强算力者进"},
['pc_n']= {"全清挑战", "普通", "100行内刷全清"},
['pc_h']= {"全清挑战", "困难", "100行内刷全清"},
['pc_l']= {"全清挑战", "疯狂", "100行内刷全清"},
['pc_inf']= {"无尽全清挑战", "", "你能连续做多少全清?"},
['tech_n']= {"科研", "普通", "禁止断满贯"},
['tech_n_plus']= {"科研", "普通+", "仅允许回旋与全清"},
['tech_h']= {"科研", "困难", "禁止断满贯"},
['tech_h_plus']= {"科研", "困难+", "仅允许回旋与全清"},
['tech_l']= {"科研", "疯狂", "禁止断满贯"},
['tech_l_plus']= {"科研", "疯狂+", "仅允许回旋与全清"},
['tech_finesse']= {"科研", "极简", "强制最简操作"},
['tech_finesse_f']= {"科研", "极简+", "禁止普通消除,强制最简操作"},
['tsd_e']= {"T2挑战", "简单", "你能连续做几个T旋双清?"},
['tsd_h']= {"T2挑战", "困难", "你能连续做几个T旋双清?"},
['tsd_u']= {"T2挑战", "极限", "你能连续做几个T旋双清?"},
['backfire_n']= {"自攻自防", "普通", "打出100攻击"},
['backfire_h']= {"自攻自防", "困难", "打出100攻击"},
['backfire_l']= {"自攻自防", "疯狂", "打出100攻击"},
['backfire_u']= {"自攻自防", "极限", "打出100攻击"},
['sprintAtk']= {"竞速", "100攻击", "打出100攻击"},
['sprintEff']= {"竞速", "效率", "40行内打出更高的攻击"},
['zen']= {"", "200", "不限时200行"},
['ultra']= {"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
['infinite']= {"无尽", "", "沙盒"},
['infinite_dig']= {"无尽:挖掘", "", "挖呀挖呀挖"},
['marathon_inf']= {"马拉松", "无尽", "无尽马拉松"},
['custom_clear']= {"自定义", "普通"},
['custom_puzzle']= {"自定义", "拼图"},
},
}

View File

@@ -458,7 +458,6 @@ return{
atkFX="攻击外汇",
frame="渲染帧率(%)",
FTlock="逻辑追帧",
text="行清除弹出窗口",
score="分数弹出",
@@ -686,6 +685,7 @@ return{
register="登记",
email="电子邮件地址",
password="密码",
showEmail="显示电子邮件",
keepPW="记得我吗",
login="登录",
},
@@ -766,6 +766,10 @@ return{
['dig_40l']= {"挖掘", "40升", "挖40条垃圾线"},
['dig_100l']= {"挖掘", "100升", "挖100条垃圾线"},
['dig_400l']= {"挖掘", "400升", "挖400条垃圾线"},
['dig_eff_10l']= {"挖掘", "管理 10升", "挖掘10条数量最少的线路"},
['dig_eff_40l']= {"挖掘", "管理 40升", "挖掘40条数量最少的线路"},
['dig_eff_100l']= {"挖掘", "管理 100升", "挖掘100条数量最少的线路"},
['dig_eff_400l']= {"挖掘", "管理 400升", "挖掘400条数量最少的线路"},
['drought_n']= {"干旱", "100升", "没有工装"},
['drought_l']= {"干旱+", "100升", "搞什么呀"},
['marathon_n']= {"马拉松赛跑", "正常", "200线加速马拉松"},

View File

@@ -460,7 +460,6 @@ return{
atkFX="攻擊特效",
frame="渲染幀率(%)",
FTlock="跳幀",
text="清除文本",
score="分數動畫",
@@ -688,6 +687,7 @@ return{
register="註冊",
email="電郵",
password="密碼",
showEmail="顯示郵箱",
keepPW="保存密碼",
login="登錄",
},
@@ -762,12 +762,18 @@ return{
['sprint_100l']= {"競速", "100L", "清除100行"},
['sprint_400l']= {"競速", "400L", "清除400行"},
['sprint_1000l']= {"競速", "1000L", "清除1000行"},
['secret_grade']= {"秘密段位", "", "按照提示完成經典的“大於號”拼圖"},
['sprintPenta']= {"競速", "五連塊", "傷腦筋十八塊"},
['sprintMPH']= {"競速", "MPH", "純隨機\n無Next\n無Hold"},
['sprint123']= {"競速", "M123", "清除40行但只有一至三連塊"},
['dig_10l']= {"挖掘", "10L", "挖掘10行"},
['dig_40l']= {"挖掘", "40L", "挖掘40行"},
['dig_100l']= {"挖掘", "100L", "挖掘100行"},
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
['dig_eff_10l']= {"挖掘", "效率 10L", "挖掘10行用最少的件數"},
['dig_eff_40l']= {"挖掘", "效率 40L", "挖掘40行用最少的件數"},
['dig_eff_100l']= {"挖掘", "效率 100L","挖掘100行用最少的件數"},
['dig_eff_400l']= {"挖掘", "效率 400L","挖掘400行用最少的件數"},
['drought_n']= {"乾旱", "100L", "你I沒了"},
['drought_l']= {"乾旱+", "100L", "後 媽 發 牌"},
['marathon_n']= {"馬拉松", "普通", "200行加速馬拉松"},
@@ -788,19 +794,22 @@ return{
['round_h']= {"回合制", "困難", "下棋模式"},
['round_l']= {"回合制", "瘋狂", "下棋模式"},
['round_u']= {"回合制", "極限", "下棋模式"},
['big_n']= {"大方塊", "普通", "類比10*5場地的玩法(標準尺寸的一半)"},
['big_h']= {"大方塊", "困難", "類比10*5場地的玩法(標準尺寸的一半)"},
['master_n']= {"大師", "普通", "20G初心者練習"},
['master_h']= {"大師", "困難", "上級者20G挑戰"},
['master_m']= {"大師", "大師", "大師20G"},
['master_final']= {"大師", "究極", "究極20G:無法觸及的終點"},
['master_ph']= {"大師", "虛幻", "虛幻20G:"},
['master_g']= {"大師", "段位考試", "20G段位考試"},
['master_ex']= {"宗師", "EX", "成為方塊大師"},
['master_instinct']={"大師", "本能", "隱藏當前塊"},
['strategy_e']= {"策略堆疊", "簡單", "20G堆疊中速決策練習"},
['strategy_h']= {"策略堆疊", "困難", "20G堆疊快速決策練習"},
['strategy_u']= {"策略堆疊", "極限", "20G堆疊極速決策練習"},
['strategy_e_plus']={"策略堆疊", "簡單+", "20G堆疊中速決策練習"},
['strategy_h_plus']={"策略堆疊", "困難+", "20G堆疊快速決策練習"},
['strategy_u_plus']={"策略堆疊", "極限+", "20G堆疊極速決策練習"},
['strategy_e_plus']={"策略堆疊", "簡單+", "20G堆疊中速決策練習\n無Hold"},
['strategy_h_plus']={"策略堆疊", "困難+", "20G堆疊快速決策練習\n無Hold"},
['strategy_u_plus']={"策略堆疊", "極限+", "20G堆疊極速決策練習\n無Hold"},
['blind_e']= {"隱形", "半隱", "不強大腦"},
['blind_n']= {"隱形", "全隱", "挺強大腦"},
['blind_h']= {"隱形", "瞬隱", "很強大腦"},
@@ -810,7 +819,8 @@ return{
['blind_inv']= {"隱形", "倒置的", "隱形活動件"},
['classic_e']= {"高速經典", "簡單", "高速經典"},
['classic_h']= {"高速經典", "困難", "飛速經典"},
['classic_u']= {"高速經典", "極限", "極速"},
['classic_l']= {"高速經典", "瘋狂", "極速"},
['classic_u']= {"高速經典", "極限", "光速經典"},
['survivor_e']= {"生存", "簡單", "你能存活多久?"},
['survivor_n']= {"生存", "普通", "你能存活多久?"},
['survivor_h']= {"生存", "困難", "你能存活多久?"},

View File

@@ -2,16 +2,16 @@ Gameplay:
The system will provide you with tetrominoes (4-block pieces),
with a total of 7 types, and the player needs to control them
(move left and right, rotate 90, 180, or 270 degrees).
each row filled with the field will be cleared.
If there is an opponent, an attack will be sent depending on the line clear type
Play until the end or achieve the level's goal to win.
Each row filled with the field will be cleared.
If there is an opponent, an attack will be sent depending on the type of line clear.
Play until the end or achieve the levels goal to win.
Rotation system:
Uses TRS (Techmino Rotation System) by default. The game allows players to choose other commonly used rotation systems (generally unnecessary)
Spin detection:
Satisfies "3 corner" rule +2 points
Satisfies "immobile" rule +2 points
Satisfies “3-corner rule +2 points
Satisfies immobile rule +2 points
- As long as one of the above is true, it is a Spin
If the rotation was not using the second check in the kick table, +1 point
@@ -37,19 +37,19 @@ Attack system:
send (attack-0.5) attack.
Combos (REN):
The numbers of the combos are equal to (the numbers you clear lines consecutively 1). All damage above (except attack from PC/HPC) will be given a (combo ×25%) bonus, or (combo ×15%) for Single clear (capped at 12 combo), +1 more attack for 3 Combo or more.
The numbers of the combos are equal to (the numbers you clear lines consecutively 1). All damage above (except attack from PC/HPC) will be given a (combo ×25%) bonus, or (combo ×15%) for Single clear (capped at 12 combos), +1 more attack for 3 Combo or more.
Hemi Perfect Clear (a P.C. "with blocks left below". If it's an I clearing 1 line, the remaining blocks must not be player-placed):
Hemi Perfect Clear (a P.C. with blocks left below. If its an I clearing 1 line, the remaining blocks must not be player-placed):
- Attack +4, Extra Blocking +2
Perfect Clear (All Clear):
- Sends 8 to 16 (increments within a game by 2 for every PC) OR every other damage above, whichever is higher, and +2 extra blocking.
After calculating all the above, the damage value will be rounded down and sent.
After calculating the above, the damage value will be rounded down and sent.
Back to Back (B2B) gauge:
The B2B gauge ranges from 0 to 1,000. Special line clears are B2B if the gauge is >=50, B2B2B if >800.
The B2B gauge ranges from 0 to 1,000. Special line clears are B2B if the gauge is 50, B2B2B if >800.
Line cleared:
Special clears:
@@ -60,7 +60,7 @@ Back to Back (B2B) gauge:
- A regular line clear -250
No lines cleared:
- Spin (0 lines) +20. Do note that the B2B gauge cannot exceed 800 using this method.
- Spin (0 lines) +20. Note that the B2B gauge cannot exceed 800 using this method.
Score system:
The better you play, the higher the score.
@@ -70,21 +70,21 @@ Attack delay:
Followed by Techrash, Spins, which send slower attacks;
High combos are the slowest;
For B2B or B2B2B, they also increase the attack delay while they increase lines sent;
Minis will greatly increase the delay.
Minis will significantly increase the delay.
Countering:
When you send attacks, if there is garbage in the queue,
extra blocking will be used first, then attack, countering the earliest attack at a 1:1 ratio.
Any extra blocking you didn't use will be discarded, and finally, the remaining attack power will be sent to your opponent.
extra blocking will be used first, then attack, countering the earliest attack at a 1 : 1 ratio.
Any additional blocking you didnt use will be discarded, and finally, the remaining attack power will be sent to your opponent.
Battle Royale modes:
Many players play a game at the same time (against AI bots, not real players).
As players get eliminated, blocks fall faster, and garbage takes effect faster, as well as rises faster.
Eliminate other players to gain a badge and the player's badge to increase your attack power.
Many players play a game simultaneously (against AI bots, not actual players).
As players get eliminated, blocks fall faster, and garbage takes effect and rises faster.
Eliminate other players to gain a badge and the players badge to increase your attack power.
Players can choose between four attack modes:
1. Random: Every time you attack, 10% chance to lock onto a random player.
2. Badges: After you attack or when your target dies, lock onto the player with the most badges.
3. KOs: After you attack or when your target dies, lock onto the player with the highest field. (Refreshes every second)
3. KOs: Lock onto the player with the highest field after you attack or when your target dies. (Refreshes every second)
4. Attackers: attack all players locking onto yourself.
Your attack will be sent to all of them. If you are not targeted, you attack a random player (not locking).
When all opponents have been eliminated, the last player in the match is the winner.
@@ -97,4 +97,4 @@ Custom mode:
empty cells can be in any state;
regular colored cells have to be made of the corresponding block;
garbage-colored cells can be any block but not air.
Once you make the shape, you will win.
Once you make the shape, you will win.

View File

@@ -1,33 +1,33 @@
游戏方法:
系统会提供的一个个四连骨牌("方块",总共7种)
玩家需要控制(左右移动和旋转90,180,270度)这些骨牌直到下落到场地底部,锁定
系统会提供的一个个四连骨牌( “方块”, 总共7种)
玩家需要控制(左右移动和旋转90, 180, 270度)这些骨牌直到下落到场地底部, 锁定
每填满场地的一行就会将其消除(如果有对手的话根据消除方式会给对手攻击)
尝试存活更久,或者完成目标即胜利.
尝试存活更久, 或者完成目标即胜利.
旋转系统:
默认使用Techmino专属旋转系统TRS,允许玩家自选其他较常用的旋转系统(一般不必要)
默认使用Techmino专属旋转系统TRS, 允许玩家自选其他较常用的旋转系统(一般不必要)
spin判定:
Spin判定:
满足三角判定+2分
满足不可移动判定+2分
--满足以上之一就算是spin
--满足以上之一就算是Spin
满足非第二个test+1分
--如果分数只有2,方块是SZJLT之一,并且没有把当前方块整个消除那么就是mini
攻击系统:
概念说明[高级消除]:
spin/消四及以上,会受到B2B(点数>=50)或B3B(点数>800)加成
Spin/消四及以上,会受到B2B(点数>=50)或B3B(点数>800)加成
反之称为低级消除
概念说明[特殊消除]:
spin/消四及以上/pc/hpc,可以增加B2B点数
Spin/消四及以上/PC/HPC,可以增加B2B点数
反之称为普通消除
高级消除(spin):
高级消除(Spin):
打出[2*消行数]攻击,然后
- B2B攻击+[1/1/2/4/8/14(spin1~6)]
- B2B攻击+[1/1/2/4/8/14(Spin1~6)]
- B3B攻击在B2B基础上+消行数*0.5,+1额外抵挡
- mini减至25%
高级消除(非spin但是消四及以上):
高级消除(非Spin但是消四及以上):
打出[消行数]攻击,然后
- B2B攻击+1
- B3B攻击+50%,+1额外抵挡
@@ -48,21 +48,21 @@ back to back(B2B)点数说明:
落块后消行了:
特殊消除:
spin1~5:+[50/100/180/800/1000](mini变为原来50%)
Spin1~5:+[50/100/180/800/1000](mini变为原来50%)
消四/五/六:+[150/200/...]
本局内消行数>4时全消:+800
半全消:+100
普通消除:
-250
落块后没消行:
spin:+20
Spin:+20
点数在800以上会-40(不低于800)
分数系统:
分数计算系统非常复杂,而且随时可能更改所以不写在这里,并且计算只跟消除方式等信息有关,和模式设定无关
攻击延迟:
消2/3的攻击生效最快,消四其次,spin攻击生效较慢,高连击生效最慢
消2/3的攻击生效最快,消四其次,Spin攻击生效较慢,高连击生效最慢
B2B或者B3B增加攻击力的同时也会减缓一点生效速度,mini大幅减缓生效速度
抵消逻辑:

View File

@@ -1,23 +1,31 @@
return{
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
{name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"},
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH'}},
{name='sprint_100l', x=-200, y=0, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
{name='sprint_400l', x=-400, y=0, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
{name='sprint_1000l', x=-600, y=0, size=40,shape=1,icon="sprint3"},
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH','sprint123','secret_grade'}},
{name='sprint_100l', x=-400, y=200, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
{name='sprint_400l', x=-600, y=200, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
{name='sprint_1000l', x=-800, y=200, size=40,shape=1,icon="sprint3"},
{name='sprintPenta', x=180, y=-160, size=40,shape=3,icon="sprint2"},
{name='sprintMPH', x=220, y=-340, size=40,shape=3,icon="sprint2"},
{name='sprintPenta', x=180, y=-160, size=40,shape=3,icon="sprint_pento"},
{name='sprintMPH', x=220, y=-300, size=40,shape=3,icon="sprint2"},
{name='sprint123', x=180, y=-440, size=40,shape=1,icon="sprint_tri"},
{name='secret_grade', x=-200, y=-400, size=40,shape=1,icon="secret_grade"},
{name='drought_n', x=-400, y=200, size=40,shape=1,icon="drought", unlock={'drought_l'}},
{name='drought_l', x=-600, y=200, size=40,shape=1,icon="drought"},
{name='drought_n', x=-600, y=400, size=40,shape=1,icon="drought", unlock={'drought_l'}},
{name='drought_l', x=-800, y=400, size=40,shape=1,icon="drought"},
{name='dig_10l', x=-200, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_40l'}},
{name='dig_10l', x=-200, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_40l','dig_eff_10l'}},
{name='dig_40l', x=-400, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_100l'}},
{name='dig_100l', x=-600, y=-200, 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_eff_10l', x=-400, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_40l'}},
{name='dig_eff_40l', x=-600, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_100l'}},
{name='dig_eff_100l', x=-800, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_400l'}},
{name='dig_eff_400l', x=-1000, y=0, size=40,shape=1,icon="dig_sprint"},
{name='marathon_n', x=0, y=-600, size=60,shape=1,icon="marathon", unlock={'marathon_h','solo_e','round_e','blind_e','classic_e','survivor_e','clearRush','zen'}},
{name='marathon_n', x=0, y=-600, size=60,shape=1,icon="marathon", unlock={'marathon_h','solo_e','round_e','big_n','blind_e','classic_e','survivor_e','clearRush','zen'}},
{name='marathon_h', x=0, y=-800, size=50,shape=1,icon="marathon", unlock={'master_n','strategy_e'}},
{name='solo_e', x=-600, y=-1000, size=40,shape=1,icon="solo", unlock={'solo_n'}},
@@ -39,42 +47,51 @@ return{
{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='big_n', x=-400, y=-400, size=40,shape=1,icon="big", unlock={'big_h'}},
{name='big_h', x=-600, y=-400, size=40,shape=1,icon="big",},
{name='master_n', x=0, y=-1000, size=40,shape=1,icon="master", unlock={'master_h','strategy_h'}},
{name='master_h', x=0, y=-1200, size=40,shape=3,icon="master", unlock={'master_final','master_ex','master_ph','master_m','strategy_u'}},
{name='master_m', x=150, y=-1320, size=30,shape=3,icon="master"},
{name='master_final', x=0, y=-1600, size=40,shape=2,icon="master"},
{name='master_ph', x=-150, y=-1500, size=40,shape=2,icon="master"},
{name='master_ex', x=150, y=-1500, size=40,shape=2,icon="master_ex"},
{name='master_h', x=0, y=-1200, size=40,shape=3,icon="master", unlock={'master_final','master_ex','master_ph','master_m','master_g','strategy_u'}},
{name='master_m', x=100, y=-1550, size=40,shape=2,icon="master"},
{name='master_final', x=-100, y=-1550, size=40,shape=2,icon="master"},
{name='master_ph', x=-170, y=-1450, size=40,shape=2,icon="master"},
{name='master_g', x=0, y=-1600, size=40,shape=3,icon="master"},
{name='master_ex', x=170, y=-1450, size=40,shape=2,icon="master_ex"},
{name='strategy_e', x=-150, y=-1030, size=40,shape=3,icon="master"},
{name='strategy_h', x=-200, y=-1160, size=35,shape=3,icon="master"},
{name='strategy_u', x=-250, y=-1290, size=30,shape=2,icon="master"},
{name='strategy_e', x=-150, y=-1020, size=40,shape=3,icon="master", unlock={'strategy_e_plus'}},
{name='strategy_h', x=-150, y=-1150, size=35,shape=3,icon="master", unlock={'strategy_h_plus'}},
{name='strategy_u', x=-150, y=-1280, size=30,shape=2,icon="master", unlock={'strategy_u_plus'}},
{name='strategy_e_plus',x=-300, y=-1120, size=40,shape=3,icon="master"},
{name='strategy_h_plus',x=-300, y=-1250, size=35,shape=3,icon="master"},
{name='strategy_u_plus',x=-300, y=-1380, size=30,shape=2,icon="master"},
{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','master_instinct'}},
{name='blind_n', x=150, y=-800, size=40,shape=1,icon="hidden", unlock={'blind_h'}},
{name='blind_h', x=150, y=-900, size=35,shape=1,icon="hidden", unlock={'blind_l'}},
{name='blind_l', x=150, y=-1000, size=35,shape=3,icon="hidden2", unlock={'blind_u'}},
{name='blind_u', x=150, y=-1100, size=30,shape=3,icon="hidden2", unlock={'blind_wtf'}},
{name='blind_l', x=150, y=-1000, size=35,shape=3,icon="hidden2", unlock={'blind_u'}},
{name='blind_u', x=150, y=-1100, size=30,shape=3,icon="hidden2", unlock={'blind_wtf'}},
{name='blind_wtf', x=150, y=-1200, size=25,shape=2,icon="hidden2"},
{name='master_instinct',x=285, y=-835, size=40,shape=3,icon="hidden"},
{name='classic_e', x=-200, y=-850, size=40,shape=1,icon="classic", unlock={'classic_h'}},
{name='classic_h', x=-300, y=-950, size=35,shape=2,icon="classic", unlock={'classic_u'}},
{name='classic_u', x=-400, y=-1050, size=30,shape=2,icon="classic"},
{name='classic_h', x=-300, y=-950, size=40,shape=3,icon="classic", unlock={'classic_l'}},
{name='classic_l', x=-400, y=-1050, size=35,shape=3,icon="classic", unlock={'classic_u'}},
{name='classic_u', x=-500, y=-1150, size=30,shape=2,icon="classic"},
{name='survivor_e', x=300, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_n'}},
{name='survivor_n', x=500, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_h','attacker_h','defender_n','dig_h'}},
{name='survivor_h', x=700, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_l'}},
{name='survivor_l', x=900, y=-600, size=40,shape=3,icon="survivor", unlock={'survivor_u'}},
{name='survivor_u', x=1100, y=-600, size=40,shape=2,icon="survivor"},
{name='survivor_e', x=450, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_n'}},
{name='survivor_n', x=650, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_h','attacker_h','defender_n','dig_h'}},
{name='survivor_h', x=850, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_l'}},
{name='survivor_l', x=1050, y=-600, size=40,shape=3,icon="survivor", unlock={'survivor_u'}},
{name='survivor_u', x=1250, y=-600, size=40,shape=2,icon="survivor"},
{name='attacker_h', x=300, y=-800, size=40,shape=1,icon="attack", unlock={'attacker_u'}},
{name='attacker_u', x=300, y=-1000, size=40,shape=1,icon="attack"},
{name='attacker_h', x=450, y=-800, size=40,shape=1,icon="attack", unlock={'attacker_u'}},
{name='attacker_u', x=450, y=-1000, size=40,shape=1,icon="attack"},
{name='defender_n', x=500, y=-800, size=40,shape=1,icon="defend", unlock={'defender_l'}},
{name='defender_l', x=500, y=-1000, size=40,shape=1,icon="defend"},
{name='defender_n', x=650, y=-800, size=40,shape=1,icon="defend", unlock={'defender_l'}},
{name='defender_l', x=650, y=-1000, size=40,shape=1,icon="defend"},
{name='dig_h', x=700, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
{name='dig_u', x=700, y=-1000, size=40,shape=1,icon="dig"},
{name='dig_h', x=850, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
{name='dig_u', x=850, y=-1000, size=40,shape=1,icon="dig"},
{name='clearRush', x=400, y=-400, size=50,shape=1,icon="bigbang", unlock={'c4wtrain_n','pctrain_n','sprintAtk'}},
{name='c4wtrain_n', x=700, y=-400, size=40,shape=1,icon="pc", unlock={'c4wtrain_l'}},

View File

@@ -7,16 +7,16 @@ return{
eventSet='big_h',
bg='cubes',bgm='push',
},
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Combo "..STRING.time(D[2])end,
score=function(P)return{P.stat.row,P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=160 and 5 or
T<=280 and 4 or
T<=120 and 5 or
T<=180 and 4 or
3
else
return

View File

@@ -7,16 +7,16 @@ return{
eventSet='big_n',
bg='bg2',bgm='push',
},
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Combo "..STRING.time(D[2])end,
score=function(P)return{P.stat.row,P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
local L=P.stat.row
if L>=200 then
local T=P.stat.time
return
T<=180 and 5 or
T<=300 and 4 or
T<=120 and 5 or
T<=180 and 4 or
3
else
return

View File

@@ -0,0 +1,21 @@
return{
env={
pushSpeed=6,
eventSet='dig_100l',
bg='bg2',bgm='way',
},
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[2]) end,
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
if P.stat.dig<100 then return end
local P=P.stat.piece
return
P<=260 and 5 or
P<=320 and 4 or
P<=420 and 3 or
P<=520 and 2 or
P<=620 and 1 or
0
end,
}

View File

@@ -0,0 +1,21 @@
return{
env={
pushSpeed=6,
eventSet='dig_10l',
bg='bg1',bgm='way',
},
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[2]) end,
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
if P.stat.dig<10 then return end
local P=P.stat.piece
return
P<=12 and 5 or
P<=18 and 4 or
P<=25 and 3 or
P<=30 and 2 or
P<=40 and 1 or
0
end,
}

View File

@@ -0,0 +1,21 @@
return{
env={
pushSpeed=6,
eventSet='dig_400l',
bg='bg2',bgm='way',
},
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[2]) end,
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
if P.stat.dig<400 then return end
local P=P.stat.piece
return
P<=1200 and 5 or
P<=1400 and 4 or
P<=1500 and 3 or
P<=1800 and 2 or
P<=2000 and 1 or
0
end,
}

View File

@@ -0,0 +1,21 @@
return{
env={
pushSpeed=6,
eventSet='dig_40l',
bg='bg1',bgm='way',
},
score=function(P)return{P.stat.piece,P.stat.time}end,
scoreDisp=function(D)return D[1].." Pieces "..STRING.time(D[2]) end,
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
if P.stat.dig<40 then return end
local P=P.stat.piece
return
P<=80 and 5 or
P<=100 and 4 or
P<=120 and 3 or
P<=160 and 2 or
P<=220 and 1 or
0
end,
}

View File

@@ -1,20 +1,21 @@
local gradeList={
"Grade 9","Grade 8","Grade 7","Grade 6","Grade 5","Grade 4","Grade 3","Grade 2","Grade 1",
"S1","S2","S3","S4","S5","S6","S7","S8","S9",
"m1","m2","m3","m4","m5","m6","m7","m8","m9",
"M","MK","MV","MO","MM-","MM","MM+","GM-","GM","GM+","TM-","TM","TM+"
}
return{
env={
freshLimit=15,
fieldH=19,
sequence="bagES",
sequence='bagES',
eventSet='master_g',
bg='bg2',bgm='secret7th',
},
slowMark=true,
score=function(P)
if not tonumber(P.modeData.grade) then
return{P.modeData.grade,P.stat.time}
else
return{"Grade "..tostring(P.modeData.grade),P.stat.time}
end
end,
scoreDisp=function(D) return D[1].." "..STRING.time(D[2])end,
score=function(P) return {P.modeData.gradePts,P.stat.time} end,
scoreDisp=function(D) return(gradeList[D[1]]or D[1]).." "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or(a[1]==b[1]and a[2]<b[2])end,
getRank=function(P)
local G=P.modeData.gradePts
@@ -22,8 +23,8 @@ return{
G>=39 and 5 or -- TM+
G>=31 and 4 or -- MM- - TM
G>=25 and 3 or -- m8 - MO
G>=18 and 2 or -- m1-m7
G>=9 and 1 or -- S1-S9
G>=18 and 2 or -- m1 - m7
G>=9 and 1 or -- S1 - S9
0
-- Table of grades vs values

View File

@@ -0,0 +1,23 @@
local ranks={"Grade 10","Grade 9","Grade 8","Grade 7","Grade 6","Grade 5","Grade 4","Grade 3","Grade 2","Grade 1","S1","S2","S3","S4","S5","S6","S7","S8","S9","GM","GM+","TM","TM+","TM+₂","TM+₃", "TM+₄","TM+₅"}
-- index: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
return{
env={
drop=180,lock=180,
hang=15,
eventSet='secret_grade',
bg='bg2',bgm='race',
},
score=function(P)return{P.modeData.rankPts,P.stat.piece}end,
scoreDisp=function(D)return ranks[D[1]].." "..D[2].." Pieces"end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
local G=P.modeData.rankPts
return
G>=23 and 5 or
G>=21 and 4 or
G>=19 and 3 or
G>=15 and 2 or
G>=11 and 1 or
G>=7 and 0
end,
}

View File

@@ -131,4 +131,6 @@ return{
{font=25,name="TetraCepra"},
{font=25,name="爱抢姐姐布丁的芙兰酱(CHNO)"},
{font=25,name="你的忘机已上羡"},
{font=25,name="茗妖屿沉"},
{font=25,name="Not Tomorrow"},
}

View File

@@ -179,6 +179,8 @@ local function _drawField(P,showInvis)
--</drawRow>
gc_setShader(shader_fieldSatur)
gc_translate(0,4)
else
gc_setShader(shader_fieldSatur)
end
--<drawRow>
@@ -204,6 +206,8 @@ local function _drawField(P,showInvis)
gc_setShader(shader_fieldSatur)
gc_pop()
h=1
else
gc_setShader(shader_fieldSatur)
end
gc_push('transform')

View File

@@ -70,5 +70,4 @@ return{
bg='none',bgm='race',
allowMod=true,
FTLock=true,
}

View File

@@ -377,7 +377,6 @@ local DemoEnv={
life=1e99,
allowMod=false,
fine=false,
FTLock=false,
}
function PLY.newDemoPlayer(id)
local P=_newEmptyPlayer(id)

View File

@@ -176,14 +176,13 @@ function Player:createSplashFX(h)
end
end
function Player:createBeam(R,send)
if self.gameEnv.atkFX then
if self.gameEnv.atkFX and self.cur then
local C=self.cur
local power=self.gameEnv.atkFX
local color=self.cur.color
local x1,y1,x2,y2
if self.miniMode then
x1,y1=self.centerX,self.centerY
else
local C=self.cur
local sc=C.RS.centerPos[C.id][C.dir]
x1=self.x+(30*(self.curX+sc[2])-30+15+150)*self.size
y1=self.y+(600-30*(self.curY+sc[1])+15+self.fieldUp+self.fieldBeneath)*self.size
@@ -192,7 +191,7 @@ function Player:createBeam(R,send)
else x2,y2=R.x+308*R.size,R.y+450*R.size
end
local c=BLOCK_COLORS[color]
local c=BLOCK_COLORS[C.color]
local r,g,b=c[1]*2,c[2]*2,c[3]*2
local a=(power+2)*.0626
if self.type~='human'and R.type~='human'then a=a*.2 end
@@ -682,7 +681,7 @@ function Player:getHolePos()--Get a good garbage-line hole position
end
end
function Player:garbageRelease()--Check garbage buffer and try to release them
local n,flag=1
local n=1
while true do
local A=self.atkBuffer[n]
if A and A.countdown<=0 and not A.sent then
@@ -691,14 +690,10 @@ function Player:garbageRelease()--Check garbage buffer and try to release them
A.sent,A.time=true,0
self.stat.pend=self.stat.pend+A.amount
n=n+1
flag=true
else
break
end
end
if flag and self.bot then
self.bot:updateField()
end
end
function Player:garbageRise(color,amount,line)--Release n-lines garbage to field
local _
@@ -1161,6 +1156,11 @@ function Player:resetBlock()--Reset Block's position and execute I*S
end
end
function Player:getNextSpawn()
local cur = self.nextQueue[1]
return int(self.gameEnv.fieldH+1-modf(cur.RS.centerPos[cur.id][cur.dir][1]))+ceil(self.fieldBeneath/30)
end
function Player:spin(d,ifpre)
local C=self.cur
local sc=C.RS.centerPos[C.id][C.dir]
@@ -1237,7 +1237,7 @@ function Player:hold_norm(ifpre)
local C,H=self.cur,self.holdQueue[1]
self.ctrlCount=0
if ENV.phyHold and C and not ifpre then--Physical hold
if ENV.phyHold and C and H and not ifpre then--Physical hold
local x,y=self.curX,self.curY
x=x+(#C.bk[1]-#H.bk[1])*.5
y=y+(#C.bk-#H.bk)*.5
@@ -1722,6 +1722,8 @@ do
end
end
local yomi = ""
piece.spin,piece.mini=dospin,false
piece.pc,piece.hpc=false,false
piece.special=false
@@ -1731,6 +1733,7 @@ do
cscore=(spinSCR[C.name]or spinSCR[8])[cc]
if self.b2b>800 then
self:showText(text.b3b..text.block[C.name]..text.spin.." "..text.clear[cc],0,-30,35,'stretch')
yomi = yomi..text.b3b..text.block[C.name]..text.spin.." "..text.clear[cc]
atk=b2bATK[cc]+cc*.5
exblock=exblock+1
cscore=cscore*2
@@ -1740,6 +1743,7 @@ do
end
elseif self.b2b>=50 then
self:showText(text.b2b..text.block[C.name]..text.spin.." "..text.clear[cc],0,-30,35,'spin')
yomi = yomi..text.b2b..text.block[C.name]..text.spin.." "..text.clear[cc]
atk=b2bATK[cc]
cscore=cscore*1.2
Stat.b2b=Stat.b2b+1
@@ -1748,11 +1752,13 @@ do
end
else
self:showText(text.block[C.name]..text.spin.." "..text.clear[cc],0,-30,45,'spin')
yomi = yomi..text.block[C.name]..text.spin.." "..text.clear[cc]
atk=2*cc
end
sendTime=20+atk*20
if mini then
self:showText(text.mini,0,-80,35,'appear')
yomi = text.mini..' '..yomi
atk=atk*.25
sendTime=sendTime+60
cscore=cscore*.5
@@ -1773,6 +1779,7 @@ do
cscore=clearSCR[cc]
if self.b2b>800 then
self:showText(text.b3b..text.clear[cc],0,-30,50,'fly')
yomi = text.b3b..text.clear[cc]..yomi
atk=4*cc-10
sendTime=100
exblock=exblock+1
@@ -1783,6 +1790,7 @@ do
end
elseif self.b2b>=50 then
self:showText(text.b2b..text.clear[cc],0,-30,50,'drive')
yomi = text.b2b..text.clear[cc]..yomi
sendTime=80
atk=3*cc-7
cscore=cscore*1.3
@@ -1792,6 +1800,7 @@ do
end
else
self:showText(text.clear[cc],0,-30,70,'stretch')
yomi = text.clear[cc]..yomi
sendTime=60
atk=2*cc-4
end
@@ -1799,6 +1808,7 @@ do
piece.special=true
else
self:showText(text.clear[cc],0,-30,35,'appear',(8-cc)*.3)
yomi = text.clear[cc]..yomi
atk=cc-.5
sendTime=20+int(atk*20)
cscore=cscore+clearSCR[cc]
@@ -1817,6 +1827,7 @@ do
atk=atk+1
end
self:showText(text.cmb[min(cmb,21)],0,25,15+min(cmb,15)*5,cmb<10 and'appear'or'flicker')
yomi = yomi..' '..text.cmb[min(cmb,21)]
cscore=cscore+min(50*cmb,500)*(2*cc-1)
end
@@ -2008,7 +2019,7 @@ do
--Check bot things
if self.bot then
self.bot:checkDest()
self.bot:checkDest(self.b2b,atk,exblock,yomi)
self.bot:updateB2B(self.b2b)
self.bot:updateCombo(self.combo)
end
@@ -2660,7 +2671,7 @@ function Player:_die()
end
end
function Player:update(dt)
self.trigFrame=self.trigFrame+(self.gameEnv.FTLock and dt*60 or 1)
self.trigFrame=self.trigFrame+dt*60
if self.alive then
local S=self.stat
if self.type=='computer'then self.bot:update(dt)end

View File

@@ -505,14 +505,14 @@ local commands={}do
log("No theme called "..name)
end
else
log{C.A,"Usage: theme [themeName]"}
log{C.A,"Usage: theme <xmas|sprfes|zday1/2/3|season1/2/3/4|fool|birth>"}
end
end,
description="Load theme",
details={
"Load a theme.",
"",
"Usage: theme <classic|xmas|sprfes|zday1/2/3|season1/2/3/4|fool|birth>",
"Usage: theme <xmas|sprfes|zday1/2/3|season1/2/3/4|fool|birth>",
},
}
commands.test={

View File

@@ -42,7 +42,7 @@ local cardText={
p7={COLOR.D,CHAR.mahjong.p7Base,COLOR.R,CHAR.mahjong.p7Comb},
p8={COLOR.D,CHAR.mahjong.p8},
p9={COLOR.D,CHAR.mahjong.p9Base,COLOR.R,CHAR.mahjong.p9Comb1,COLOR.D,CHAR.mahjong.p9Comb2},
s1={COLOR.G,CHAR.mahjong.s1Base,COLOR.R,CHAR.mahjong.s1Comb},
s1={COLOR.D,CHAR.mahjong.s1jBase,COLOR.G,CHAR.mahjong.s1jComb},
s2={COLOR.G,CHAR.mahjong.s2},
s3={COLOR.G,CHAR.mahjong.s3},
s4={COLOR.G,CHAR.mahjong.s4},

View File

@@ -1,6 +1,5 @@
local langList={
zh="简体中文",
zh_full="全简体中文",
zh_trad="繁體中文",
en="English",
fr="Français",
@@ -61,8 +60,8 @@ scene.widgetList={
WIDGET.newButton{x=637,y=568,w=346,h=100,font=40, fText=langList.zh_grass,color='L',sound='click',code=function()_setLang('zh_grass')end},
WIDGET.newButton{x=1003,y=210,w=346,h=100,font=40,fText=langList.zh, color='C',sound='click',code=function()_setLang('zh')end},
WIDGET.newButton{x=1003,y=329,w=346,h=100,font=40,fText=langList.zh_full, color='N',sound='click',code=function()_setLang('zh_full')end},
WIDGET.newButton{x=1003,y=449,w=346,h=100,font=40,fText=langList.zh_trad, color='S',sound='click',code=function()_setLang('zh_trad')end},
WIDGET.newButton{x=1003,y=329,w=346,h=100,font=40,fText=langList.zh_trad, color='S',sound='click',code=function()_setLang('zh_trad')end},
-- WIDGET.newButton{x=1003,y=449,w=346,h=100,font=40,fText=langList.zh_trad, color='S',sound='click',code=function()_setLang('zh_trad')end},
WIDGET.newButton{name='back',x=1003,y=568,w=346,h=100,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}

View File

@@ -2,6 +2,7 @@ local emailBox=WIDGET.newInputBox{name='email',x=380,y=200,w=500,h=60,limit=128}
local passwordBox=WIDGET.newInputBox{name='password',x=380,y=300,w=620,h=60,secret=true,regex="[ -~]",limit=64}
local savePW=false
local showEmail=true
local function _login()
local email,password=emailBox:getText(),passwordBox:getText()
@@ -25,19 +26,22 @@ function scene.sceneInit()
local data=loadFile('conf/account','-canSkip')
if data then
savePW=true
showEmail=false
emailBox.secret=true
emailBox:setText(data[1])
passwordBox:setText(data[2])
end
end
scene.widgetList={
WIDGET.newText{name='title', x=80, y=50,font=70,align='L'},
WIDGET.newButton{name='register',x=1140,y=100,w=170,h=80,color='lY',code=function()SCN.swapTo('register','swipeR')end},
WIDGET.newText{name='title', x=80, y=50,font=70,align='L'},
WIDGET.newButton{name='register', x=1140,y=100,w=170,h=80,color='lY',code=function()SCN.swapTo('register','swipeR')end},
emailBox,
passwordBox,
WIDGET.newSwitch{name='keepPW', x=900, y=420,disp=function()return savePW end,code=function()savePW=not savePW end},
WIDGET.newKey{name='login', x=1140,y=540,w=170,h=80,font=40,code=_login},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newSwitch{name='showEmail',x=550, y=420,disp=function()return showEmail end,code=function()showEmail=not showEmail emailBox.secret=not showEmail end},
WIDGET.newSwitch{name='keepPW', x=900, y=420,disp=function()return savePW end,code=function()savePW=not savePW end},
WIDGET.newKey{name='login', x=1140,y=540,w=170,h=80,font=40,code=_login},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -29,20 +29,22 @@ local sList={
local scene={}
local function _createRoom()
local pw=passwordBox.value
if pw==""then pw=nil end
local roomname=STRING.trim(roomNameBox.value)
if #roomname==0 then
roomname=(USERS.getUsername(USER.uid)or"Anonymous").."'s room"
if legalGameTime()then
local pw=passwordBox.value
if pw==""then pw=nil end
local roomname=STRING.trim(roomNameBox.value)
if #roomname==0 then
roomname=(USERS.getUsername(USER.uid)or"Anonymous").."'s room"
end
NET.createRoom(
roomname,
descriptionBox.value,
ROOMENV.capacity,
"normal",
ROOMENV,
pw
)
end
NET.createRoom(
roomname,
descriptionBox.value,
ROOMENV.capacity,
"normal",
ROOMENV,
pw
)
end
function scene.sceneInit()

View File

@@ -69,7 +69,6 @@ scene.widgetList={
WIDGET.newSlider{name='atkFX', x=330,y=820,lim=280,w=540,axis={0,5,1},disp=SETval('atkFX'), code=SETsto('atkFX')},
WIDGET.newSelector{name='frame', x=400,y=890,lim=280,w=460,list={8,10,13,17,22,29,37,47,62,80,100},disp=SETval('frameMul'),code=function(v)SETTING.frameMul=v;Z.setFrameMul(SETTING.frameMul)end},
WIDGET.newSwitch{name='FTlock', x=950,y=890,lim=290,disp=SETval('FTLock'), code=SETrev('FTLock')},
WIDGET.newSwitch{name='text', x=450,y=980,lim=360,disp=SETval('text'), code=SETrev('text')},
WIDGET.newSwitch{name='score', x=450,y=1030,lim=360,disp=SETval('score'), code=SETrev('score')},
@@ -98,7 +97,7 @@ scene.widgetList={
},
WIDGET.newSlider{name='bgAlpha', x=1020,y=1430,w=200,
axis={0,.8},disp=SETval('bgAlpha'),
code=function(v)SETTING.bgAlpha=v BG.send(v)end,
code=function(v)SETTING.bgAlpha=v BG.send(v,v,v)end,
hideF=function()return SETTING.bg=='on'end
},

View File

@@ -2,22 +2,33 @@ return[=[
未来计划:
R E M A K E
0.17.2: 0.17.2
0.17.2: 服务区 Service Area
新增:
把一些模式加入到大地图上(by NOT_A_ROBOT) #640
登录界面会隐藏自动填充的邮箱防止信息泄露 #639
改动:
大幅下调高难机器人速度
移除FTLock设置全局开启
大幅度调低高级机器人速度
词典新增一条比较详细的新人指引
master_g模式不再限定旋转系统
改进几个经典模式(by NOT_A_ROBOT) #661
完善当前的攻击系统,进入稳定状态
更新说明书的攻击系统章节
麻将小程序更像麻将
算数小程序微调
加回classic_l模式
移除"全简体中文"语言
不再允许防沉迷时间到后创建房间导致幽灵房
代码:
完善字体并换用OTF
修复:
特定情况下物理hold报错
特定情况下联网对战报错
关闭背景时设置背景亮度报错
倒计时时不能充das #610
几个音效的音量不太对 #572
master_g模式的一些细节问题
master_g没开锁定特效报错和一些细节问题
关闭3D方块选项后场地方块饱和度设置无效 #656
0.17.1: 苏醒 Wake Up
新增:

View File

@@ -1,7 +1,7 @@
return{
["apkCode"]=432,
["apkCode"]=436,
["code"]=1702,
["string"]="V0.17.2",
["room"]="ver A-6",
["room"]="ver A-7",
["name"]="0.17.2",
}