Compare commits
49 Commits
pre0.17.2-
...
v0.17.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
baf36ac86b | ||
|
|
d8c058b0e1 | ||
|
|
6c69c38b32 | ||
|
|
d17e62e36b | ||
|
|
3a2ec3a5dd | ||
|
|
ce25f17676 | ||
|
|
61fe4a5897 | ||
|
|
f50e90b29b | ||
|
|
c151c1176f | ||
|
|
69491e2f8b | ||
|
|
4f4988d7ef | ||
|
|
9ee4af48da | ||
|
|
566ebbf213 | ||
|
|
b1ea222b90 | ||
|
|
d85f77b480 | ||
|
|
20f5d07d05 | ||
|
|
9864a75e0f | ||
|
|
af4cf9fc0d | ||
|
|
d0597e6836 | ||
|
|
61fb504b21 | ||
|
|
bd055a7c60 | ||
|
|
f22c188753 | ||
|
|
7df55b1584 | ||
|
|
f9d5e054d4 | ||
|
|
a17a3f9ba4 | ||
|
|
f3945b9afe | ||
|
|
e3fffc5d7c | ||
|
|
54175a6ee8 | ||
|
|
9ddee1059c | ||
|
|
0e965eaaae | ||
|
|
e66c5c41ee | ||
|
|
da1ec35a55 | ||
|
|
d919812f44 | ||
|
|
eddcd726ca | ||
|
|
190e64de92 | ||
|
|
6ee2833cf7 | ||
|
|
beaaac6892 | ||
|
|
f4e0cabcf3 | ||
|
|
3b60590f8a | ||
|
|
96a695819e | ||
|
|
0a11d2cf47 | ||
|
|
f932005ea0 | ||
|
|
fedce2ae2b | ||
|
|
85cf77f15d | ||
|
|
fa3d7ff199 | ||
|
|
1da6c0c8a9 | ||
|
|
83349707d5 | ||
|
|
d4090dea6f | ||
|
|
ea83add8fa |
2
.github/actions/get-cc/action.yml
vendored
2
.github/actions/get-cc/action.yml
vendored
@@ -3,7 +3,7 @@ description: 'download cc into specific dir'
|
||||
inputs:
|
||||
tag:
|
||||
required: false
|
||||
default:
|
||||
default: techmino-alize-2
|
||||
arch:
|
||||
required: true
|
||||
dir:
|
||||
|
||||
Submodule Zframework updated: deaa9ff03b...a91c3d67f2
3
main.lua
3
main.lua
@@ -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
|
||||
|
||||
BIN
media/image/modeicon/big.png
Normal file
BIN
media/image/modeicon/big.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
BIN
media/image/modeicon/dig_eff.png
Normal file
BIN
media/image/modeicon/dig_eff.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 969 B |
BIN
media/image/modeicon/secret_grade.png
Normal file
BIN
media/image/modeicon/secret_grade.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 488 B |
BIN
media/image/modeicon/sprint_pento.png
Normal file
BIN
media/image/modeicon/sprint_pento.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.1 KiB |
BIN
media/image/modeicon/sprint_tri.png
Normal file
BIN
media/image/modeicon/sprint_tri.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
BIN
media/image/skin/guidetris_xmiao_lusisi.png
Normal file
BIN
media/image/skin/guidetris_xmiao_lusisi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -296,8 +296,10 @@ local L={
|
||||
p9Comb1= 0xF0250,
|
||||
p9Comb2= 0xF0251,
|
||||
frameComb= 0xF0252,
|
||||
s1j= 0xF0253,
|
||||
s1jBase= 0xF0254,
|
||||
s1jComb= 0xF0255,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for _,pack in next,L do
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
54
parts/eventsets/secret_grade.lua
Normal file
54
parts/eventsets/secret_grade.lua
Normal 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.
@@ -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',
|
||||
}
|
||||
|
||||
@@ -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
@@ -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",
|
||||
|
||||
@@ -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,忽略掉了垃圾行的影响,不再是字面意思,本游戏中使用L’PM代表这种换算后的LPM。",
|
||||
},
|
||||
{"PPS",
|
||||
"sudu",
|
||||
"速度 sudu",
|
||||
"term",
|
||||
"Piece Per Second\n块每秒,体现玩家下块速度。",
|
||||
},
|
||||
{"BPM",
|
||||
"sudu",
|
||||
"速度 sudu",
|
||||
"term",
|
||||
"Block Per Minute\n块每分,体现玩家下块速度\n又称PPM(Piece 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坑)的时候会找最近的I(T)什么时候来,如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立,有很多介于中间的情况。所以,一个玩家看的Next数量是时刻在变的,“某人看几个Next”没有精确答案,必须在指明情况的时候数字才能作为参考。",
|
||||
"指示后边几个块的顺序。\n提前思考手上这块怎么摆可以让后面轻松是玩家提升的必需技能。\n\n关于玩家玩的时候到底看了几个Next:这个数字并不固定,不同玩家、不同模式、不同局面,计算next的数量都不一样,通过调整可见Next数量打40L比较时间等方式测得的数据并不准确。\n\n具体例如,一个比较熟练的玩家几乎永远会提前算好一个Next,不然不会锁定手里的块;场地上将要出现或可以构造消四洞(T坑)的时候会找最近的I(T)什么时候来,如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立,有很多介于中间的情况。所以,一个玩家看的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\n例:39.95s是Sub 40,40.###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,虚拟按键预设是vkSave1(2)\n前两者重启生效,若反悔,进入对应的设置菜单再返回即可恢复文件。",
|
||||
"前往控制台输入 “rm conf/键位文件” 并回车\n键盘是key,虚拟按键是virtualkey,虚拟按键预设是vkSave1(2)\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",
|
||||
"",
|
||||
|
||||
@@ -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 — you’re 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 don’t 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={"D’PM","ADPM","APM","SPM","L’PM","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, that’s 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 can’t make sure you’re 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="Don’t 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", "You’re 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\"",
|
||||
"(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”",
|
||||
"\\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!",
|
||||
"Don’t let a small glitch ruin your entire day!",
|
||||
"Don’t 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 let’s go better next time…",
|
||||
"Find out what’s 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.",
|
||||
"It’s possible to finish 40L without left/right buttons.",
|
||||
"It’s 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, you’ll 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 it’s not the same game.",
|
||||
"TetroDictionary is now available in English.",
|
||||
"Most of the music tracks in this game are made using Beepbox.",
|
||||
"The names that appeared in the background of the Staff page is a list of our sponsors.",
|
||||
@@ -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 Rubik’s 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"},
|
||||
|
||||
@@ -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?"},
|
||||
|
||||
@@ -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."},
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -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", "どれだけ生き残れるかな?"},
|
||||
|
||||
@@ -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?"},
|
||||
|
||||
@@ -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={
|
||||
|
||||
@@ -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”,因为无法验证开发者。",
|
||||
|
||||
@@ -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']= {"自定义", "拼图"},
|
||||
},
|
||||
}
|
||||
@@ -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线加速马拉松"},
|
||||
|
||||
@@ -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']= {"生存", "困難", "你能存活多久?"},
|
||||
|
||||
@@ -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 level’s 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 it’s 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 didn’t 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 player’s 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.
|
||||
@@ -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大幅减缓生效速度
|
||||
|
||||
抵消逻辑:
|
||||
|
||||
@@ -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'}},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
21
parts/modes/dig_eff_100l.lua
Normal file
21
parts/modes/dig_eff_100l.lua
Normal 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,
|
||||
}
|
||||
21
parts/modes/dig_eff_10l.lua
Normal file
21
parts/modes/dig_eff_10l.lua
Normal 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,
|
||||
}
|
||||
21
parts/modes/dig_eff_400l.lua
Normal file
21
parts/modes/dig_eff_400l.lua
Normal 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,
|
||||
}
|
||||
21
parts/modes/dig_eff_40l.lua
Normal file
21
parts/modes/dig_eff_40l.lua
Normal 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,
|
||||
}
|
||||
@@ -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
|
||||
|
||||
23
parts/modes/secret_grade.lua
Normal file
23
parts/modes/secret_grade.lua
Normal 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,
|
||||
}
|
||||
@@ -131,4 +131,6 @@ return{
|
||||
{font=25,name="TetraCepra"},
|
||||
{font=25,name="爱抢姐姐布丁的芙兰酱(CHNO)"},
|
||||
{font=25,name="你的忘机已上羡"},
|
||||
{font=25,name="茗妖屿沉"},
|
||||
{font=25,name="Not Tomorrow"},
|
||||
}
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -70,5 +70,4 @@ return{
|
||||
|
||||
bg='none',bgm='race',
|
||||
allowMod=true,
|
||||
FTLock=true,
|
||||
}
|
||||
|
||||
@@ -377,7 +377,6 @@ local DemoEnv={
|
||||
life=1e99,
|
||||
allowMod=false,
|
||||
fine=false,
|
||||
FTLock=false,
|
||||
}
|
||||
function PLY.newDemoPlayer(id)
|
||||
local P=_newEmptyPlayer(id)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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={
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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},
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
|
||||
@@ -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
|
||||
新增:
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user