Compare commits

...

53 Commits

Author SHA1 Message Date
MrZ_26
f22c188753 版本推进 2022-02-28 03:50:48 +08:00
MrZ_26
7df55b1584 整理代码 2022-02-28 03:42:46 +08:00
C29H25N3O5
f9d5e054d4 大改标点和更新字体
- 英语使用typesetting quotation marks
- 引号使用美式规则排版
- 重做IPA相关符号
2022-02-28 03:32:13 +08:00
NOT_A_ROBOT
a17a3f9ba4 Add comments and cool/regret history 2022-02-28 03:31:29 +08:00
Chumo2791
f3945b9afe Add a new skin: guidetris by lusisi 2022-02-28 03:30:54 +08:00
NOT_A_ROBOT
e3fffc5d7c Add strategy_plus to world map 2022-02-28 03:29:08 +08:00
Imple Lee
54175a6ee8 change default cc branch 2022-02-20 18:26:22 +08:00
Imple Lee
9ddee1059c cc techmino-alize 2
- builtin b2b gauge, attack and extra block systen
- builtin spawn position integration
2022-02-20 18:26:22 +08:00
MrZ_26
0e965eaaae 不再允许防沉迷时间到后创建房间 2022-02-20 15:46:23 +08:00
MrZ_26
e66c5c41ee 修复master_g没开锁定特效报错 2022-02-15 17:25:02 +08:00
MrZ_26
da1ec35a55 调整几个中文tips 2022-02-15 00:09:35 +08:00
MrZ_26
d919812f44 新增两个赞助者 2022-02-08 16:35:12 +08:00
MrZ_26
eddcd726ca 补充地图新增模式的一点翻译
整理代码
2022-02-08 13:41:44 +08:00
MrZ_26
190e64de92 修正master_g老版本成绩在模式地图报错 2022-02-08 13:18:39 +08:00
MrZ_26
6ee2833cf7 框架跟进 2022-02-08 13:05:43 +08:00
NOT_A_ROBOT
beaaac6892 Update documentation on theme command in console (#643)
- Make list of themes appear when `name` is empty instead of `[ThemeList]`
2022-02-08 13:01:16 +08:00
MrZ_26
f4e0cabcf3 版本推进 2022-02-06 18:37:01 +08:00
MrZ_26
3b60590f8a 删除”全简体中文“语言 2022-02-06 18:30:09 +08:00
MrZ_26
96a695819e 修复关闭背景时设置背景亮度报错 2022-02-06 18:07:33 +08:00
MrZ_26
0a11d2cf47 暴力修复联网对战时不知道怎么触发的一个错误,能用,不懂,不理解,but it works,等重构 2022-02-06 18:07:30 +08:00
NOT_A_ROBOT
f932005ea0 Add some hidden modes + misc changes (#640)
* Added secret_grade and sprint123 to map and added some icons

* Add master_g to map

* add classic_u and master_instinct and misc changes

* added big modes

* Fix some bugs on master_instinct

* fix bugs on big mode

* Simplified Grade Display
2022-02-06 17:51:38 +08:00
MrZ_26
fedce2ae2b 更新char与mj小程序里1s的显示 2022-01-30 14:20:28 +08:00
MrZ_26
85cf77f15d 更新字体文件
Co-authored-by: C₂₉H₂₅N₃O₅ <cgu52@wisc.edu>
2022-01-30 14:20:28 +08:00
MrZ_26
fa3d7ff199 暴力修复物理hold可能导致的一个错误,能用,不懂,不理解,but it works,等重构 2022-01-30 14:20:27 +08:00
Airun
1da6c0c8a9 More Translations (Before I pull off the official version) (#633) 2022-01-30 14:18:42 +08:00
NOT_A_ROBOT
83349707d5 Add secret grade mode (#631) 2022-01-28 20:19:45 +08:00
NOT_A_ROBOT
d4090dea6f Update lang_id.lua (#629) 2022-01-28 20:19:02 +08:00
MrZ_26
ea83add8fa 词典添加secret grade词条 close #628
微调中文词典部分格式
2022-01-26 15:23:54 +08:00
MrZ_26
7687fb2c12 版本推进 2022-01-26 00:10:45 +08:00
MrZ_26
1fb741d7c2 大幅降低高难ai速度 2022-01-25 23:00:24 +08:00
MrZ_26
157f8cc7d5 算数小程序进制更明显 close #624 2022-01-25 03:27:40 +08:00
MrZ_26
846d477e9d 不再限定master_g模式的旋转系统 close #626 2022-01-25 00:54:39 +08:00
Chumo2791
452cdf6ab0 add AUR badge (#627) 2022-01-24 16:51:50 +08:00
NOT_A_ROBOT
e9396c43c9 Improved master_g (#622)
Fixed mroll ending not giving you points in the record, fixed crash when you got a negative grade, added colors that indicate cool/regret
2022-01-24 08:46:01 +08:00
MrZ_26
dd726e75e8 麻将小程序使用自制字符(有些小问题,等之后字体修改) 2022-01-22 17:38:13 +08:00
MrZ_26
a66bb9013a gray背景改名fixColor,允许自定义颜色 2022-01-22 17:16:48 +08:00
MrZ_26
ea0448af5a 修改字体文件名大小写(step 2) 2022-01-21 16:02:54 +08:00
MrZ_26
44735cd6cd 修改字体文件名大小写(step 1) 2022-01-21 16:02:41 +08:00
NOT_A_ROBOT
3956d1d7bc Add Classic Lunatic mode (#619) 2022-01-21 03:09:50 +08:00
MrZ_26
a7a2124bb6 版本推进 2022-01-20 13:27:23 +08:00
sakurw
9399938be0 Update lang_ja.lua (#616) 2022-01-20 13:10:39 +08:00
C₂₉H₂₅N₃O₅
195f9b2c46 字体格式转换为OTF (#615)
* 字体格式转换为OTF

**HERE COMES THE OPENTYPE**
* 更改几个自定义图标的样式
2022-01-20 13:10:11 +08:00
C₂₉H₂₅N₃O₅
d7546e5f41 更新英文说明书 (#614) 2022-01-20 01:39:21 +08:00
NOT_A_ROBOT
888909b48c Re-add classic_l (#612) 2022-01-19 23:46:36 +08:00
MrZ_26
d68f732884 重写说明书的攻击和b2b点数段落,英文和日文需要重翻 2022-01-19 23:43:08 +08:00
MrZ_26
5243ed0c6b 再整理落块后结算顺序 2022-01-19 23:04:46 +08:00
MrZ_26
856c490a2b 再修正master_g的一些细节 2022-01-19 20:02:30 +08:00
MrZ_26
5e9dcc27aa 再更新所有的音效文件 2022-01-19 19:46:27 +08:00
NOT_A_ROBOT
3f129a9585 Fix crash bug on graded master when reaching a very high internal grade 2 (#611)
* Fix crash bug on graded master when reaching a very high internal grade 2
2022-01-19 19:45:59 +08:00
MrZ_26
e682ff1de5 提前修改好更新历史和版本号 2022-01-19 18:46:40 +08:00
MrZ_26
2c064d5809 修复倒计时时不能充das close #610 2022-01-19 18:43:08 +08:00
MrZ_26
e0573382e8 更新manual关于攻击系统的说明 2022-01-19 18:38:57 +08:00
MrZ_26
5a514ce495 修正master_g的规则 2022-01-19 18:10:15 +08:00
104 changed files with 934 additions and 802 deletions

View File

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

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,11 +1,11 @@
--Customizable grey background
local gc=love.graphics
local back={}
local brightness=.26
local r,g,b=.26,.26,.26
function back.draw()
gc.clear(brightness,brightness,brightness)
gc.clear(r,g,b)
end
function back.event(b)
brightness=b
function back.event(_r,_g,_b)
r,g,b=_r,_g,_b
end
return back

View File

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

View File

@@ -49,7 +49,7 @@ local botMeta={__index=_undefMethod}
local BOT={}
local AISpeed={60,50,40,30,20,14,10,6,4,3}
local AISpeed={60,50,42,34,27,21,16,12,9,6}
--[[
arg={
next: number of nexts

View File

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

View File

@@ -0,0 +1,51 @@
local gc_setColor=love.graphics.setColor
return{
das=16,arr=6,
sddas=2,sdarr=2,
irs=false,ims=false,
drop=2,
lock=2,
wait=10,
fall=25,
freshLimit=0,
fieldH=19,
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)
mText(TEXTOBJ.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
if P.modeData.drought>7 then
if P.modeData.drought<=14 then
gc_setColor(1,1,1,P.modeData.drought/7-1)
else
local gb=P.modeData.drought<=21 and 2-P.modeData.drought/14 or .5
gc_setColor(1,gb,gb)
end
setFont(50)
mStr(P.modeData.drought,63,130)
mDraw(MODES.drought_l.icon,63,200,nil,.5)
end
end,
task=function(P)
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')
else
SFX.play('reach')
end
end
end,
}

View File

@@ -2,7 +2,15 @@ local gc=love.graphics
local regretDelay=-1
local int_grade=0
local grade_points=0
local int_grade_boosts={0,1,2,3,4,5,5,6,6,7,7,7,8,8,8,9,9,9,10,11,12,12,12,13,13,14,14,15,15,16,16,17}
local int_grade_boosts={0,1,2,3,4,5,5,6,6,7,7,7,8,8,8,9,9,9,10,11,12,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26}
local coolList={false,false,false,false,false,false,false,false,false}
local regretList={false,false,false,false,false,false,false,false,false,false}
local gradeList={
"9","8","7","6","5","4","3","2","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+"
}
local spd_lvl=0
local cools=0
local regrets=0
@@ -66,15 +74,9 @@ local function getDas(l)
6
end
local function getGrade()
local gradeList={
"9","8","7","6","5","4","3","2","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+"
}
if int_grade==nil then int_grade=0 end
if rollGrades==nil then rollGrades=0 end
return gradeList[math.min(math.floor(int_grade_boosts[int_grade+1]+rollGrades+cools+1-regrets),#gradeList)]
return gradeList[math.max(math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList),1)]
end
local function addGrade(row, cmb, lvl) -- IGS = internal grade system
if row<1 then return end
@@ -111,32 +113,53 @@ return{
noTele=true,
das=16,arr=1,
minsdarr=1,
ihs=true,irs=true,ims=false,
mesDisp=function(P)
gc.setColor(1,1,1,1)
setFont(45)
mText(TEXTOBJ.grade,63,180)
setFont(62)
mStr(getGrade(),63,110)
setFont(60)
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)
if coolList[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(0,1,0,1)
elseif P.stat.frame-prevSectTime > cool_time[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(0.7,0.7,0.7,1)
end
if coolList[math.ceil(P.modeData.pt/100+0.01)] and regretList[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(1,1,0,1)
elseif regretList[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(1,0,0,1)
end
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end
end,
@@ -173,6 +196,7 @@ return{
if D.pt%100>70 and not prevDrop70 then
if P.stat.frame-prevSectTime < cool_time[math.ceil(D.pt/100)] then
cools=cools+1
coolList[math.ceil(D.pt/100)]=true
P:_showText("COOL!",0,-120,80,'fly',.8)
nextSpeedUp=true
end
@@ -214,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)
@@ -245,34 +269,38 @@ return{
isInRollTrans=false
prevDrop70=false
nextSpeedUp=false
local decayRate={125,80,80,50,45,45,45,40,40,40,40,40,30,30,30,20,20,20,20,20,15,15,15,15,15,15,15,15,15,15,10,10,10}
coolList={false,false,false,false,false,false,false,false,false}
regretList={false,false,false,false,false,false,false,false,false,false}
local decayRate={125,80,80,50,45,45,45,40,40,40,40,40,30,30,30,20,20,20,20,20,15,15,15,15,15,15,15,15,15,15,10,10,10,9,9,9,8,8,8,7,7,7,6}
local decayTimer=0
while true do
YIELD()
P.modeData.grade=getGrade()
P.modeData.gradePts=math.min(math.floor(int_grade_boosts[int_grade+1]+rollGrades+cools-regrets),36)
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
regretList[math.ceil(P.modeData.pt/100)]=true
end
if regretDelay>-1 then
regretDelay=regretDelay-1
if regretDelay==-1 then P:_showText("REGRET!!",0,-120,80,'beat',.8) end
end
if isInRollTrans then
if P.waiting==220 then
if P.waiting>=220 then
--Make field invisible
for j=1,#P.field do for i=1,10 do
P.visTime[j][i]=P.visTime[j][i]-0.001
for y=1,#P.field do for x=1,10 do
P.visTime[y][x]=P.waiting-220
end end
elseif P.waiting==190 then
for _=#P.field,1,-1 do
P.field[_],P.visTime[_]=nil
end
TABLE.cut(P.field)
TABLE.cut(P.visTime)
elseif P.waiting==180 then
playReadySFX(3,3)
elseif P.waiting==120 then
playReadySFX(2,2)
playReadySFX(2,1)
elseif P.waiting==60 then
playReadySFX(1,1)
elseif P.waiting==1 then
playReadySFX(0,0)
playReadySFX(0,1)
isInRollTrans=false
isInRoll=true
BGM.play('hope')
@@ -282,12 +310,15 @@ return{
end
if P.waiting<=0 and grade_points>0 and not isInRoll then
decayTimer=decayTimer+1
if decayTimer>=decayRate[int_grade+1] then
if decayTimer>=decayRate[math.min(int_grade+1,#decayRate)] then
decayTimer=0
grade_points=grade_points-1
end
elseif isInRoll and P.stat.frame>=prevSectTime+3600 then
elseif isInRoll and P.stat.frame>=prevSectTime+3599 then
rollGrades=rollGrades+(cools>8 and 1.6 or 0.5)
P.modeData.grade=getGrade()
P.modeData.gradePts=math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList)
YIELD()
P:win('finish')
end
end

View File

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

View File

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

BIN
parts/fonts/japan.otf Normal file

Binary file not shown.

Binary file not shown.

BIN
parts/fonts/monospaced.otf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -165,8 +165,8 @@ do--function applySettings()
BG.set()
elseif SETTING.bg=='off'then
BG.unlock()
BG.set('gray')
BG.send(SETTING.bgAlpha)
BG.set('fixColor')
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.lock()
elseif SETTING.bg=='custom'then
if love.filesystem.getInfo('conf/customBG')then
@@ -184,8 +184,8 @@ do--function applySettings()
else--Switch off when custom BG not found
SETTING.bg='off'
BG.unlock()
BG.set('gray')
BG.send(SETTING.bgAlpha)
BG.set('fixColor')
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.lock()
end
end

View File

@@ -327,7 +327,7 @@ EVENTSETS={
'backfire_120','backfire_60','backfire_30','backfire_0',
'checkAttack_100',
'checkLine_10','checkLine_20','checkLine_40','checkLine_100','checkLine_200','checkLine_400','checkLine_1000',
'classic_e','classic_h','classic_u',
'classic_e','classic_h','classic_l','classic_u',
'defender_n','defender_l',
'dig_10l','dig_40l','dig_100l','dig_400l',
'dig_h','dig_u',

View File

@@ -16,7 +16,7 @@ return{
{"To New Players",
"guide newbie noob readme",
"help",
"To new players that want to get better at the game:\n\tTwo principles:\n\t1. find a version with good controls (e.g. Techmino, Tetr.io, Tetris Online, Jstris, Tetr.js). Do not use those version used for programming practice.\n\t2. Build foundations in your skills (stable Techrashes using next queue to aid decisions), don't go for fancy T-Spins from the start.\n\n\tTwo main techniques:\n\t1. familiarize yourself with spawn locations of pieces, and the controls to move the piece into each location\n\t2. Plan ahead of where to put the pieces\nHere is a article written by a well-known player in Chinese Tetris community talking about advices to new players. Click the globe to read the translated article by User670.",
"To new players that want to get better at the game:\n\tTwo principles:\n\t1. find a version with good controls (e.g. Techmino, Tetr.io, Tetris Online, Jstris, Tetr.js). Do not use those version used for programming practice.\n\t2. Build foundations in your skills (stable Techrashes using next queue to aid decisions), dont go for fancy T-Spins from the start.\n\n\tTwo main techniques:\n\t1. familiarize yourself with spawn locations of pieces, and the controls to move the piece into each location\n\t2. Plan ahead of where to put the pieces\nHere is a article written by a well-known player in Chinese Tetris community talking about advices to new players. Click the globe to read the translated article by User670.",
"https://github.com/user670/temp/blob/master/tips_to_those_new_to_top.md",
},
{"Learning T-spins",
@@ -59,7 +59,7 @@ return{
{"Github Repository",
"githubrepository sourcecode",
"org",
"Techmino's official Github repository. Stars are appreciated.",
"Techminos official Github repository. Stars are appreciated.",
"https://github.com/26F-Studio/Techmino",
},
{"Communities",
@@ -71,19 +71,19 @@ return{
{"Mew",
"tieba forum reddit",
"org",
"The Mew forum owned by Chinese Tetris Research Community, and was founded in the second half of 2021. Mew is a Chinese social media that can be thought of a combination of Discord and Reddit, with many channels in a big community. Users can chat in the channels or submit posts to the channel. Mew also has a function called \"Library\" which allows storing documentations systematically. The Tetris Mew forum is currently under construction and not too much contents are available (2/Nov/2021).",
"The Mew forum owned by Chinese Tetris Research Community, and was founded in the second half of 2021. Mew is a Chinese social media that can be thought of a combination of Discord and Reddit, with many channels in a big community. Users can chat in the channels or submit posts to the channel. Mew also has a function called Library which allows storing documentations systematically. The Tetris Mew forum is currently under construction and not too much contents are available (2/Nov/2021).",
"https://mew.fun/n/tetris",
},
{"Tetris OL Servers",
"tetrisonline servers",
"org",
"Google \"Tetris Online Poland\" for the Poland server.\nClick on the globe icon for information about the Tetris Online Study server.",
"Google Tetris Online Poland for the Poland server.\nClick on the globe icon for information about the Tetris Online Study server.",
"http://teatube.ltd/tos",
},
{"Support 1",
"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 "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.",
},
{"Support 2",
"support afdian",
@@ -132,7 +132,7 @@ return{
{"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).",
"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 Farters 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).",
"http://farter.cn/t",
},
{"Tetra Legends",
@@ -150,7 +150,7 @@ return{
{"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. ",
"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 doesnt have any animation. ",
"https://jstris.jezevec10.com",
},
{"TETR.IO",
@@ -168,13 +168,13 @@ return{
{"Worldwide Combos",
"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.",
"Browser Game | Singleplayer/Multiplayer\nOr WWC for short. It has worldwide 1V1 ranked matches, recorded battles (which means that your opponent doesnt have to be a real person), many different rulesets, and bomb-handicapped garbage lines.",
"https://worldwidecombos.com",
},
{"Tetris Friends",
"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.",
"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.",
},
{"tetris.com",
"tetris online official",
@@ -189,7 +189,7 @@ return{
{"Tetris Mind Bender",
"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.",
"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.",
},
{"Techmino",
@@ -222,7 +222,7 @@ return{
{"DTET",
"dtet",
"game",
"Windows | Singleplayer\nA game based on TGM's Classic rule with 20G and a powerful rotation system. Decent controls, but has no customization other than control mappings. The game is a bit hard to find now and you may need to manually install required DLLs.",
"Windows | Singleplayer\nA game based on TGMs Classic rule with 20G and a powerful rotation system. Decent controls, but has no customization other than control mappings. The game is a bit hard to find now and you may need to manually install required DLLs.",
},
{"Heboris",
"hb heboris",
@@ -238,7 +238,7 @@ return{
{"Tetris Effect",
"tec tetriseffectconnected",
"game",
"PS/Oculus Quest/Xbox/NS/Windows | Singleplayer/Multiplayer\nOr TE(C) for short. An official Tetris game with fancy graphics and soundtracks that react to your input. The basic version (without the word \"Connected\") only has singleplayer modes. The extended version, Tetris Effect Connected, features four online battle modes, Connected (VS), Zone Battle, Score Attack, and Classic Score Attack.",
"PS/Oculus Quest/Xbox/NS/Windows | Singleplayer/Multiplayer\nOr TE(C) for short. An official Tetris game with fancy graphics and soundtracks that react to your input. The basic version (without the word Connected) only has singleplayer modes. The extended version, Tetris Effect Connected, features four online battle modes, Connected (VS), Zone Battle, Score Attack, and Classic Score Attack.",
},
{"Tetris 99",
"t99 tetris99",
@@ -280,13 +280,13 @@ return{
{"Touhoumino",
"touhoumino",
"game",
"Windows | Singleplayer\nA fan-made Tetris game, basically Nullpomino with elements from Touhou Project. The \"Spellcards\" from Touhou was introduced in the game, and you can only get bonus scores if you can reach the target score within the given period of time.\n[Recommended for players with at least half-decent skills otherwise you don't even know how you die.]",
"Windows | Singleplayer\nA fan-made Tetris game, basically Nullpomino with elements from Touhou Project. The Spellcards from Touhou was introduced in the game, and you can only get bonus scores if you can reach the target score within the given period of time.\n[Recommended for players with at least half-decent skills otherwise you dont even know how you die.]",
},
{"Tetris Blitz",
"blitz ea mobile phone",
"game",
"iOS/Android | Singleplayer\nA mobile Tetris game by Electronic Arts (EA). It has the gravity mechanism, and each game lasts for 2 minutes. A bunch of minoes fall down to the field at the beginning of the game, and you can enter the \"Frenzy\" mode by performing line clears continuously. There are many different power-ups available. Also, this game has no top-out mechanism. When an incoming block overlaps with existing blocks in the field, the top lines will be cleared automatically. \n\nThis game is no longer available since April 2020.",
"iOS/Android | Singleplayer\nA mobile Tetris game by Electronic Arts (EA). It has the gravity mechanism, and each game lasts for 2 minutes. A bunch of minoes fall down to the field at the beginning of the game, and you can enter the “Frenzy” mode by performing line clears continuously. There are many different power-ups available. Also, this game has no top-out mechanism. When an incoming block overlaps with existing blocks in the field, the top lines will be cleared automatically. \n\nThis game is no longer available since April 2020.",
},
{"Tetris (EA)",
"tetris ea galaxy universe cosmos mobile phone",
@@ -301,7 +301,7 @@ return{
{"Tetris Beat",
"n3twork rhythm",
"game",
"iOS | Singleplayer\nA mobile Tetris game from N3TWORK. It has a \"Beat\" mode besides the Marathon mode, but in this game you only have drop the blocks in rhythm with the BGM.\n[The effects are very heavy and the controls are not so good.]"
"iOS | Singleplayer\nA mobile Tetris game from N3TWORK. It has a “Beat” mode besides the Marathon mode, but in this game you only have drop the blocks in rhythm with the BGM.\n[The effects are very heavy and the controls are not so good.]"
},
{"Tetris Journey",
"tetrisjourney mobile phone huanyouji",
@@ -324,12 +324,12 @@ return{
{"Translator Note 2",
"",
"help",
"Translator's note on those per-minute and per-second values\n\nNot all of them are commonly used in the communities, and not all terms mean the same thing across all contexts. They mostly apply to Techmino."
"Translators note on those per-minute and per-second values\n\nNot all of them are commonly used in the communities, and not all terms mean the same thing across all contexts. They mostly apply to Techmino."
},
{"LPM",
"linesperminute speed",
"term",
"Lines per minute\n\tReflects playing speed of a player.\nDifferent games calculate LPM differently. For example, Tetris Online calculates its LPM using PPS (see below), where 1PPS=24LPM. This basically ignores clearing garbage lines and makes it different from its literal meaning. In Techmino, this converted LPM value is marked \"L'PM\".",
"Lines per minute\n\tReflects playing speed of a player.\nDifferent games calculate LPM differently. For example, Tetris Online calculates its LPM using PPS (see below), where 1PPS=24LPM. This basically ignores clearing garbage lines and makes it different from its literal meaning. In Techmino, this converted LPM value is marked “LPM.”",
},
{"PPS",
"piecespersecond speed",
@@ -354,7 +354,7 @@ return{
{"APM",
"attackperminute",
"term",
"Attack per minute\n\tReflects offensive power of a player.\nIn Techmino, the concept of \"attack\" sometimes includes the fractional lines of an attack. Since sending garbage rounds down before sending, this value can be higher than your actual attack power.",
"Attack per minute\n\tReflects offensive power of a player.\nIn Techmino, the concept of “attack” sometimes includes the fractional lines of an attack. Since sending garbage rounds down before sending, this value can be higher than your actual attack power.",
},
{"SPM",
"linessentperminute",
@@ -374,12 +374,12 @@ return{
{"ADPM",
"attackdigperminute vs",
"term",
"Attack&Dig per minute\n\tUsed to compare skill differences between the two players within one match; slightly more accurate than APM.\n\"vs\" in TETR.IO is Atk+Dig per 100s",
"Attack&Dig per minute\n\tUsed to compare skill differences between the two players within one match; slightly more accurate than APM.\n“vs” in TETR.IO is Atk+Dig per 100s",
},
{"APL",
"attackperline efficiency",
"term",
"Attack per line (cleared)\n\tAlso known as \"efficiency\"; reflects the per-line efficiency of attacks. For example, Tetrises and T-spins have higher efficiency than doubles and triples.",
"Attack per line (cleared)\n\tAlso known as efficiency; reflects the per-line efficiency of attacks. For example, Tetrises and T-spins have higher efficiency than doubles and triples.",
},
{"Single",
@@ -405,7 +405,7 @@ return{
{"Tetris",
"tetris",
"term",
"The name of the game (and its trademark). Also the name for clearing 4 lines at one time in official games.\nCoined from Tetra (greek for \"four\") and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA was licensed by TTC and these two companies do not have the copyright of Tetris.",--Thanks to Alexey Pajitnov!
"The name of the game (and its trademark). Also the name for clearing 4 lines at one time in official games.\nCoined from Tetra (greek for “four”) and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA was licensed by TTC and these two companies do not have the copyright of Tetris.",--Thanks to Alexey Pajitnov!
},
{"All Clear",
"pc perfectclear ac allclear",
@@ -426,12 +426,12 @@ return{
{"Mini",
"mini",
"term",
"A modifier to Spins applied to Spin actions that the game considers easy (thus the name \"EZ T-Spin\" in an old game). Score and attack bonuses are reduced for Mini Spins than ordinary Spins.\nDifferent games have different rules for what counts as a Mini Spin, and many are not intuitive. You can just remember a few common shapes.",
"A modifier to Spins applied to Spin actions that the game considers easy (thus the name EZ T-Spin in an old game). Score and attack bonuses are reduced for Mini Spins than ordinary Spins.\nDifferent games have different rules for what counts as a Mini Spin, and many are not intuitive. You can just remember a few common shapes.",
},
{"All-Spin",
"allspin",
"term",
"A rule in which spins of all pieces are awarded extra attacks/scores, rather than just spins of the T piece (\"T-Spin only\").",
"A rule in which spins of all pieces are awarded extra attacks/scores, rather than just spins of the T piece (T-Spin only).",
},
{"T-Spin",
"tspin",
@@ -466,12 +466,12 @@ return{
{"O-Spin",
"ospin",
"term",
"In most cases, it's a meme.\nThe shape and position of the O Tetromino (a.k.a. the Square) does not change upon rotation, thus making it lack interesting spins/kicks that other Tetrominoes have, or be stuck in a place unable to get out.\nAs a joke, some people have made heavily edited videos or even programmed games where the O pieces can change shape and \"spin\" into different positions.\nTechmino also supports O-Spin in most modes.",
"In most cases, its a meme.\nThe shape and position of the O Tetromino (a.k.a. the Square) does not change upon rotation, thus making it lack interesting spins/kicks that other Tetrominoes have, or be stuck in a place unable to get out.\nAs a joke, some people have made heavily edited videos or even programmed games where the O pieces can change shape and “spin” into different positions.\nTechmino also supports O-Spin in most modes.",
},
{"Rotation Systems",
"wallkick rotationsystem",
"term",
"Systems that determine how the pieces rotate.\n\nIn modern Tetris games, tetrominoes can rotate on a specfic rotation center (but this may be absent in some games). If the minoes overlap with the walls or the field, the system would attempt to perform some offsets (a process known as \"wall-kicking\"). Wall kicks allow minoes to move into in specific-shaped holes.",
"Systems that determine how the pieces rotate.\n\nIn modern Tetris games, tetrominoes can rotate on a specfic rotation center (but this may be absent in some games). If the minoes overlap with the walls or the field, the system would attempt to perform some offsets (a process known as wall-kicking). Wall kicks allow minoes to move into in specific-shaped holes.",
},
{"Orientation",
"direction 0r2l 02 20 rl lr",
@@ -486,7 +486,7 @@ return{
{"ASC",
"ascension",
"term",
"Rotation system used in the Tetris clone Ascension. All pieces use the same two kick tables (one for CW, one for CCW), and the kick range is approximately ± 2 blocks on both axis.\n\nIn Techmino, ASC+ is a modified version of Ascension's rotation system, adding kicks for 180° spins.",
"Rotation system used in the Tetris clone Ascension. All pieces use the same two kick tables (one for CW, one for CCW), and the kick range is approximately ± 2 blocks on both axis.\n\nIn Techmino, ASC+ is a modified version of Ascensions rotation system, adding kicks for 180° spins.",
},
{"BRS",
"bulletproofsoftware",
@@ -496,7 +496,7 @@ return{
{"BiRS",
"biasrs biasrotationsystem",
"term",
"*Techmino exclusive*\n\nBias Rotation System, Techmino's original rotation system based on XRS and SRS.\nIt sets an offset to the rotation if you hold left/right/soft drop when you rotate.\nIf rotation fails when downwards offset is applied, it tries again without the downwards offset.\nThen it tries without left/right offset.\nIf it fails, then the rotation will not occur.\n\nCompared to XRS, BiRS only uses a single kick table, making it easier to memorize; also keeps the climb-over-terrain feature of SRS.\n\nThe final kick offset's euclidean distance can't be larger than √5; if there is a horizontal offset, the final kick offset can't be in the opposite direction.",
"*Techmino exclusive*\n\nBias Rotation System, Techminos original rotation system based on XRS and SRS.\nIt sets an offset to the rotation if you hold left/right/soft drop when you rotate.\nIf rotation fails when downwards offset is applied, it tries again without the downwards offset.\nThen it tries without left/right offset.\nIf it fails, then the rotation will not occur.\n\nCompared to XRS, BiRS only uses a single kick table, making it easier to memorize; also keeps the climb-over-terrain feature of SRS.\n\nThe final kick offsets euclidean distance cant be larger than √5; if there is a horizontal offset, the final kick offset cant be in the opposite direction.",
},
{"C2RS",
"c2rs",
@@ -526,7 +526,7 @@ return{
{"XRS",
"xrs",
"term",
"X rotation system, a rotation system used in T-ex.\n\nIt introduced a feature to \"use another kick table if you hold a direction key\", making it possible for players to tell the game where they want the piece to go.",
"X rotation system, a rotation system used in T-ex.\n\nIt introduced a feature to use another kick table if you hold a direction key, making it possible for players to tell the game where they want the piece to go.",
},
{"Back to Back",
@@ -542,22 +542,22 @@ return{
{"Fin, Neo, Iso",
"fin neo iso",
"term",
"Special T-Spin techniques that exploit the T piece's kicks and T-Spin detections.\nThey might worth different values in different games (some games consider them Minis), and hardly have real value in combat due to their relatively complex setup.",
"Special T-Spin techniques that exploit the T pieces kicks and T-Spin detections.\nThey might worth different values in different games (some games consider them Minis), and hardly have real value in combat due to their relatively complex setup.",
},
{"Modern Tetris",
"modern",
"term",
"The concept of a \"modern\" Tetris game or block-stacking game is a bit fuzzy. In general, a block-stacking game that somewhat resembles games that follow the Tetris Design Guideline is considered a modern game. Here are some rules of thumb, but they are not hard requirements:\n1. The visible part of the Matrix is 10w x 20h, often with additional hidden rows above this.\n2. Pieces spawn in the top-middle of the visible matrix. Each piece has a consistent spawn orientation and color.\n3. Has an appropriate randomizer like 7-Bag and His.\n4. Has an appropriate rotation system, with at least the ability to rotate both directions.\n5. Has an appropriate lockdown delay system.\n6. Has an appropriate top-out condition.\n7. Has a NEXT queue, with multiple next pieces displayed (usually 3 to 6), and with the presentation in the queue matching the spawn orientation of the piece.\n8. Has a HOLD queue.\n9. If there is spawn delay or line delay, usually has IRS and IHS.\n10. Has a DAS system for precise and swift sideways movements.",
"The concept of a “modern” Tetris game or block-stacking game is a bit fuzzy. In general, a block-stacking game that somewhat resembles games that follow the Tetris Design Guideline is considered a modern game. Here are some rules of thumb, but they are not hard requirements:\n1. The visible part of the Matrix is 10w x 20h, often with additional hidden rows above this.\n2. Pieces spawn in the top-middle of the visible matrix. Each piece has a consistent spawn orientation and color.\n3. Has an appropriate randomizer like 7-Bag and His.\n4. Has an appropriate rotation system, with at least the ability to rotate both directions.\n5. Has an appropriate lockdown delay system.\n6. Has an appropriate top-out condition.\n7. Has a NEXT queue, with multiple next pieces displayed (usually 3 to 6), and with the presentation in the queue matching the spawn orientation of the piece.\n8. Has a HOLD queue.\n9. If there is spawn delay or line delay, usually has IRS and IHS.\n10. Has a DAS system for precise and swift sideways movements.",
},
{"Tetrominos' Shapes",
{"Tetrominos Shapes",
"shape structure form tetromino tetrimino",
"term",
"In standard Tetris games, all the blocks used are tetrominoes, i.e. Blocks that are linked by four minoes side-by-side.\n\nThere are seven kinds of tetrominoes in total when allowing rotations and disallowing reflections. These tetrominoes are named by the letter in the alphabet that they resemble. They are Z, S, J, L, T, O, and I.",
},
{"Tetrominos' Colors",
{"Tetrominos Colors",
"colour hue tint tetromino tetrimino",
"term",
"Many modern Tetris games use the same color scheme for the tetrominoes. The colors are:\nZred, Sgreen, Jblue, Lorange, Tpurple, Oyellow, and Icyan.\n\nTechmino also uses this \"standard\" coloring for the tetrominoes.",
"Many modern Tetris games use the same color scheme for the tetrominoes. The colors are:\nZred, Sgreen, Jblue, Lorange, Tpurple, Oyellow, and Icyan.\n\nTechmino also uses this standard coloring for the tetrominoes.",
},
{"IRS",
"initialrotationsystem",
@@ -582,7 +582,7 @@ return{
{"Hold",
"hold",
"term",
"Save your current piece for later use, and take out a previously held piece (or next piece in the next queue, if no piece was held) to place instead. You can only perform this once per piece in most cases.\n\nTechmino Exclusive: Techmino has a \"In-place hold\" feature. When enabled, pieces that spawn from the Hold queue will spawn at where your currently-controlling piece is, instead of at the top of the matrix.",
"Save your current piece for later use, and take out a previously held piece (or next piece in the next queue, if no piece was held) to place instead. You can only perform this once per piece in most cases.\n\nTechmino Exclusive: Techmino has a In-place hold feature. When enabled, pieces that spawn from the Hold queue will spawn at where your currently-controlling piece is, instead of at the top of the matrix.",
},
{"Swap",
"hold",
@@ -607,17 +607,17 @@ return{
{"sub",
"sub",
"term",
"A sub-(number) time means the time is below a certain milestone. The unit of the time is often left out and inferred, for example, a \"sub-30\" time for a 40-line Sprint means below 30 seconds, and a \"sub-15\" time for a 1000-line Sprint means below 15 minutes.",
"A sub-(number) time means the time is below a certain milestone. The unit of the time is often left out and inferred, for example, a “sub-30” time for a 40-line Sprint means below 30 seconds, and a “sub-15” time for a 1000-line Sprint means below 15 minutes.",
},
{"Donation",
"donate",
"term",
"A method of \"plugging\" up the Tetris hole to send a T-Spin. After the T-Spin, the Tetris hole is opened up once again to allow the continuation of Tetris or downstacking.\n--Harddrop wiki",
"A method of plugging up the Tetris hole to send a T-Spin. After the T-Spin, the Tetris hole is opened up once again to allow the continuation of Tetris or downstacking.\n--Harddrop wiki",
},
{"\"Debt\"",
{"“Debt”",
"qianzhai debt owe",
"term",
"A terminology used in the Chinese Tetris community. A \"debt\" refers to a situation where one must first finish constructing a specific setup before he or she can perform one or more T-spins with real attacks. When constructing a setup where one or multiple debts are created, it is important to observe the opponent carefully to ensure your safety; otherwise, there is a high probability of topping out before the construction is finished.\n\nThis term is frequently used to describe setups such as TST tower. No real attacks can be made before the setup is constructed completely.",
"A terminology used in the Chinese Tetris community. A “debt” refers to a situation where one must first finish constructing a specific setup before he or she can perform one or more T-spins with real attacks. When constructing a setup where one or multiple debts are created, it is important to observe the opponent carefully to ensure your safety; otherwise, there is a high probability of topping out before the construction is finished.\n\nThis term is frequently used to describe setups such as TST tower. No real attacks can be made before the setup is constructed completely.",
},
{"Attack & Defend",
"attacking defending",
@@ -677,12 +677,12 @@ return{
{"Center 4-wide",
"c4w center4wide",
"term",
"The stacking method where you leave a 4-block-wide well in the middle.\nThe infamous combo setup that not only makes a lot of combos but also abuses the death conditions and won't die even if you receive some garbage. This technique is often disliked by players due to how unbalanced it is.",
"The stacking method where you leave a 4-block-wide well in the middle.\nThe infamous combo setup that not only makes a lot of combos but also abuses the death conditions and wont die even if you receive some garbage. This technique is often disliked by players due to how unbalanced it is.",
},
{"Residual",
"c4w s4w",
"term",
"Refers to how many blocks to leave in the well of a 4-wide combo setup. The most common are 3-residual and 6-residual.\n3-residual has fewer variations and is easier to learn, with a pretty good chance of success, and it's pretty useful in combat.\n6-residual has more variables and is harder, but can be more consistent if you do it well. It can also be used for special challenges like getting 100 combos in an infinite 4-wide challenge.",
"Refers to how many blocks to leave in the well of a 4-wide combo setup. The most common are 3-residual and 6-residual.\n3-residual has fewer variations and is easier to learn, with a pretty good chance of success, and its pretty useful in combat.\n6-residual has more variables and is harder, but can be more consistent if you do it well. It can also be used for special challenges like getting 100 combos in an infinite 4-wide challenge.",
},
{"6-3 Stacking",
"63stacking",
@@ -702,7 +702,7 @@ return{
{"Buffer zone",
"above super invisible disappear",
"term",
"Refers to 21st-40th lines above the visible field. Because the blocks in the field could go over the visible field (this usually happens when multiple garbage lines come in) so the buffer zone was created so those blocks could go back to the field when garbage lines are cleared. Also, the buffer zone is usually located at 21st-40th lines because this is sufficient for most cases. Refer to \"Vanish Zone\" to learn more.",
"Refers to 21st-40th lines above the visible field. Because the blocks in the field could go over the visible field (this usually happens when multiple garbage lines come in) so the buffer zone was created so those blocks could go back to the field when garbage lines are cleared. Also, the buffer zone is usually located at 21st-40th lines because this is sufficient for most cases. Refer to Vanish Zone to learn more.",
},
{"Vanish zone",
"disappear gone cut die",
@@ -713,12 +713,12 @@ return{
{"Falling speed",
"fallingspeed gravity",
"term",
"Falling speed is often described in terms of \"G\", i.e. how many lines the blocks fall in one frame (usually assuming 60 fps).\nG is a relatively large unit. The speed of Lv 1 in a regular Marathon (one second per line) is 1/60 G, and 1G is about Lv 13 speed. The highest speed of modern Tetris is 20G because the field height is 20 lines. In fact, the real meaning of 20G is \"Infinite falling speed\", and even when the field height is more than 20 lines, 20G modes force all the blocks to fall down to the bottom instantly. You can learn more about 20G at the \"20G\" entry.",
"Falling speed is often described in terms of “G,” i.e. how many lines the blocks fall in one frame (usually assuming 60 fps).\nG is a relatively large unit. The speed of Lv 1 in a regular Marathon (one second per line) is 1/60 G, and 1G is about Lv 13 speed. The highest speed of modern Tetris is 20G because the field height is 20 lines. In fact, the real meaning of 20G is Infinite falling speed, and even when the field height is more than 20 lines, 20G modes force all the blocks to fall down to the bottom instantly. You can learn more about 20G at the “20G” entry.",
},
{"20G",
"gravity instant",
"term",
"The fastest falling speed of modern Tetris. In 20G modes, pieces appear instantly on the bottom of the field without the actual process of \"falling down\". This sometimes also limits a piece's sideways movements, as it is not always possible to make a piece climb over a bump or out of a well in 20G. You can learn more at the unit \"G\" at the \"falling speed\" entry. ",
"The fastest falling speed of modern Tetris. In 20G modes, pieces appear instantly on the bottom of the field without the actual process of falling down. This sometimes also limits a pieces sideways movements, as it is not always possible to make a piece climb over a bump or out of a well in 20G. You can learn more at the unit “G” at the falling speed entry. ",
},
{"Lockdown Delay",
"lockdelay lockdowndelay lockdowntimer",
@@ -743,22 +743,22 @@ return{
{"Finesse",
"finesse",
"term",
"A technique to move a piece into the desired position with the minimum number of key presses. This saves time and reduces chances to misdrop.\nYou can practice by playing with Jstris's \"restart on finesse error\", or with Techmino's finesse error sound effect.\n\nTechmino's finesse detection is not exactly \"theoretical minimum key presses\", but instead only checks for finesse against a pre-determined par keypress count *when the piece locks in a position that does not require soft dropping*. This means that Techmino will not judge a piece as having a finesse error when you soft drop and spin or tuck.\nTechmino also introduced additional checks, such as holding while the current piece and the held piece is the same, or holding after you have manipulated the current piece, count as a finesse fault.\nFinesse% in Techmino is defined to be 100% when par or below par, 50% when one keypress above par, 25% when two keypresses above par, and 0% when three or more keypresses above par.\nAlso note that in 20G finesse still runs as if there were no gravity, which can cause inaccurate results.",
"A technique to move a piece into the desired position with the minimum number of key presses. This saves time and reduces chances to misdrop.\nYou can practice by playing with Jstriss restart on finesse error, or with Techminos finesse error sound effect.\n\nTechminos finesse detection is not exactly theoretical minimum key presses, but instead only checks for finesse against a pre-determined par keypress count *when the piece locks in a position that does not require soft dropping*. This means that Techmino will not judge a piece as having a finesse error when you soft drop and spin or tuck.\nTechmino also introduced additional checks, such as holding while the current piece and the held piece is the same, or holding after you have manipulated the current piece, count as a finesse fault.\nFinesse% in Techmino is defined to be 100% when par or below par, 50% when one keypress above par, 25% when two keypresses above par, and 0% when three or more keypresses above par.\nAlso note that in 20G finesse still runs as if there were no gravity, which can cause inaccurate results.",
},
{"\"doing research\"",
{"doing research",
"scientificresearch",
"term",
"\"Doing scientific research\" is a term sometimes used in the Chinese community, referring to researching/practicing techniques in a low-falling-speed, single-player environment.",
"Doing scientific research is a term sometimes used in the Chinese community, referring to researching/practicing techniques in a low-falling-speed, single-player environment.",
},
{"Handling",
"feel handling",
"term",
"Several main factors that affecting the handling:\n(1) Input delay is affected by device configuration or device condition. Restart/change device.\n(2) Program stability, program design (or implementation) is not good, cause lagging too much. Can be alleviated by lowering the effect setting.\n(3) Designed on purpose. Adapt it.\n(4) Improper parameter setting. Change the settings.\n(5) Improper play posture. It's not convenient to use force. Change your posture.\n(6) Not used to the operation after changing the key position or changing the device. Get used to it or change the settings.\n(7) Muscle fatigue, response and coordination ability decreased. Get some sleep or do some sports, and come back later (maybe a few days).",
"Several main factors that affecting the handling:\n(1) Input delay is affected by device configuration or device condition. Restart/change device.\n(2) Program stability, program design (or implementation) is not good, cause lagging too much. Can be alleviated by lowering the effect setting.\n(3) Designed on purpose. Adapt it.\n(4) Improper parameter setting. Change the settings.\n(5) Improper play posture. Its not convenient to use force. Change your posture.\n(6) Not used to the operation after changing the key position or changing the device. Get used to it or change the settings.\n(7) Muscle fatigue, response and coordination ability decreased. Get some sleep or do some sports, and come back later (maybe a few days).",
},
{"DAS (simple)",
"das arr delayedautoshift autorepeatrate",
"term",
"Imagine you are typing, and you hold down a letter. Say you hold down \"O\".\nYou get a long string of O's.\nOn the timeline, it kinds of looks like O--------------O-O-O-O-O-O-O-O-O\nThe \"--------------\" is DAS, the \"-\" is ARR.",
"Imagine you are typing, and you hold down a letter. Say you hold down “O.”\nYou get a long string of Os.\nOn the timeline, it kinds of looks like O--------------O-O-O-O-O-O-O-O-O\nThe -------------- is DAS, the “-” is ARR.",
},
{"DAS & ARR",
"das arr delayedautoshift autorepeatrate",
@@ -788,22 +788,22 @@ return{
{"Bag7 generator",
"bag7bag randomgenerator",
"term",
"Also known as \"7-Bag Generator\". Officially known as \"Random Generator\".\nThis is the algorithm used by modern, official Tetris games to generate pieces. Starting from the beginning of a game, every 7 pieces there are guaranteed to be one of each of the 7 Tetrominoes.",
"Also known as 7-Bag Generator. Officially known as Random Generator.\nThis is the algorithm used by modern, official Tetris games to generate pieces. Starting from the beginning of a game, every 7 pieces there are guaranteed to be one of each of the 7 Tetrominoes.",
},
{"His generator",
"history hisgenerator",
"term",
"A way to generate pieces, notably used in Tetris: The Grand Master games. Every time a random Tetromino is selected, but if this Tetromino is the same as one of the few previous pieces, then reroll until a different piece is rolled or until a reroll limit is reached.\nFor example, a \"his 4 roll 6\" (h4r6) generator rerolls when the piece is the same as one of the 4 previous pieces and rerolls up to 6 times.\nThere are other variations as well, such as \"his4 roll6 pool35\", which further reduces the randomness of the piece sequence.\n\nIn Techmino, the max. reroll count is half of the sequence length, rounded up.",
"A way to generate pieces, notably used in Tetris: The Grand Master games. Every time a random Tetromino is selected, but if this Tetromino is the same as one of the few previous pieces, then reroll until a different piece is rolled or until a reroll limit is reached.\nFor example, a his 4 roll 6 (h4r6) generator rerolls when the piece is the same as one of the 4 previous pieces and rerolls up to 6 times.\nThere are other variations as well, such as his4 roll6 pool35, which further reduces the randomness of the piece sequence.\n\nIn Techmino, the max. reroll count is half of the sequence length, rounded up.",
},
{"HisPool generator",
"hisPool history pool",
"term",
"History Pool, a generator based on the His generator. It introduced a mechanism called \"Pool\". When generating a new piece, HisPool randomly selects a piece from the Pool and increase the probability of spawning of the least frequent piece.\n\nThis mechanism makes the sequence more stable and ensures that the drought won't last forever.",
"History Pool, a generator based on the His generator. It introduced a mechanism called “Pool.” When generating a new piece, HisPool randomly selects a piece from the Pool and increase the probability of spawning of the least frequent piece.\n\nThis mechanism makes the sequence more stable and ensures that the drought wont last forever.",
},
{"bagES generator",
"bages easy start",
"term",
"*Techmino-exclusive*\nBag Easy-Start, an improved Bag generator. The first piece in the first bag won't be those hard-to-place pieces (S/Z/O/S5/Z5/F/E/W/X/N/H).",
"*Techmino-exclusive*\nBag Easy-Start, an improved Bag generator. The first piece in the first bag wont be those hard-to-place pieces (S/Z/O/S5/Z5/F/E/W/X/N/H).",
},
{"Reverb generator",
"reverb",
@@ -818,7 +818,7 @@ return{
{"Rolling",
"rolling",
"term",
"Another method of fast-tapping in high-gravity (around 1G) modes (with slow DAS/ARR setting).\nWhen you perform rolling, you fix the position of one hand and the controller, and then tap the back of the controller with fingers on your other hand repeatedly. This method allows even faster moving speeds than hypertapping (see \"Hypertapping\" for more)and requires much less effort.\nThis method was first discovered by Cheez-fish and he has once achieved a tapping speed of more than 20 Hz.",
"Another method of fast-tapping in high-gravity (around 1G) modes (with slow DAS/ARR setting).\nWhen you perform rolling, you fix the position of one hand and the controller, and then tap the back of the controller with fingers on your other hand repeatedly. This method allows even faster moving speeds than hypertapping (see Hypertapping for more)and requires much less effort.\nThis method was first discovered by Cheez-fish and he has once achieved a tapping speed of more than 20 Hz.",
},
{"Passthrough",
"pingthrough",
@@ -833,12 +833,12 @@ return{
{"Techmino attack",
"techminoattack",
"term",
"Regular line clears (clearing ≤3 lines):\n\tSends (lines cleared -0.5) attack\nSpecial line clears:\n\tSpin sends (lines cleared x2) attack,\n\t\t- B2B sends extra 1/1/2/4/8 (for Spin Single/Double/Triple/Techrash/Techrash+ respectively)\n\t\t- B2B2B sends (lines cleared x0.5), and +1 extra blocking\n\t\t- If it's a Mini, ×0.25\n\tNon-Spin Techrash/Techrash+ sends (lines cleared) attack,\n\t\t- B2B sends extra 1 attack,\n\t\t- B2B2B sends 50% more attack and +1 extra blocking.\n\nSpecial line clears will increase B2B gauge, making later special line clears have B2B or B2B2B bonus (see below)\nHalf Perfect Clear (a Perfect Clear \"with blocks left below\". If it's an I clearing 1 line, then the remaining blocks must not be player-placed): Attack +2, Extra Blocking +2\nPerfect Clear: half all damage above, then +8 to +20 attack (increases within a round by +2 per Perfect Clear) and +2 extra blocking. (note: if lines cleared in this round >4, then B2B gauge will be filled)\nCombos: All damage above will be given a (combo×25%) bonus, or (combo×15%) if the line clear is a Single, capped at 12 combo. +1 more attack for 3 Combo or more.\nAfter calculating all above, the damage value will be rounded down then sent",
"Regular line clears (clearing ≤3 lines):\n\tSends (lines cleared -0.5) attack\nSpecial line clears:\n\tSpin sends (lines cleared x2) attack,\n\t\t- B2B sends extra 1/1/2/4/8 (for Spin Single/Double/Triple/Techrash/Techrash+ respectively)\n\t\t- B2B2B sends (lines cleared x0.5), and +1 extra blocking\n\t\t- If its a Mini, ×0.25\n\tNon-Spin Techrash/Techrash+ sends (lines cleared) attack,\n\t\t- B2B sends extra 1 attack,\n\t\t- B2B2B sends 50% more attack and +1 extra blocking.\n\nSpecial line clears will increase B2B gauge, making later special line clears have B2B or B2B2B bonus (see below)\nHalf Perfect Clear (a Perfect Clear with blocks left below. If its an I clearing 1 line, then the remaining blocks must not be player-placed): Attack +2, Extra Blocking +2\nPerfect Clear: half all damage above, then +8 to +20 attack (increases within a round by +2 per Perfect Clear) and +2 extra blocking. (note: if lines cleared in this round >4, then B2B gauge will be filled)\nCombos: All damage above will be given a (combo×25%) bonus, or (combo×15%) if the line clear is a Single, capped at 12 combo. +1 more attack for 3 Combo or more.\nAfter calculating all above, the damage value will be rounded down then sent",
},
{"C2 Generator",
"cultris2generator cultrisiigenerator c2generator",
"term",
"All Tetrominoes have an initial weight of 0.\nEvery time, divide all weights by 2, add a random number between 0 and 1, pick the piece with the highest weight, and divide this piece's weight by 3.5.",
"All Tetrominoes have an initial weight of 0.\nEvery time, divide all weights by 2, add a random number between 0 and 1, pick the piece with the highest weight, and divide this pieces weight by 3.5.",
},
{"C2 wall kicks",
"cultris2wallkicks cultrisiiwallkicks c2wallkicks cultris2kicks cultrisiikicks c2kicks",
@@ -868,17 +868,17 @@ return{
{"Bone block",
"bone tgm",
"term",
"The block skin used by the earliest version of Tetris.\nIn the early times, computers were all using Command Line Interface instead of Graphical User Interface, so at that time a single mino in the game of Tetris is represented using two enclosing square brackets [ ]. It looks kinds of like bones so it is sometimes called the bone blocks.\nIn Techmino, bone blocks are defined as \"A single, fancy block skin that all of the blocks use.\". Different block skins may have different types of bone block styles.",
"The block skin used by the earliest version of Tetris.\nIn the early times, computers were all using Command Line Interface instead of Graphical User Interface, so at that time a single mino in the game of Tetris is represented using two enclosing square brackets [ ]. It looks kinds of like bones so it is sometimes called the bone blocks.\nIn Techmino, bone blocks are defined as “a single, fancy block skin that all of the blocks use. Different block skins may have different types of bone block styles.",
},
{"Semi-invisible",
"half invisible semi",
"term",
"Refers to a rule where the tetrominoes will become invisible after a period of time.\nThis time interval is not definite and it is acceptable to describe it as \"disappear after a few seconds\".",
"Refers to a rule where the tetrominoes will become invisible after a period of time.\nThis time interval is not definite and it is acceptable to describe it as disappear after a few seconds.",
},
{"Invisible",
"invisible",
"term",
"Refers to a rule where blocks will disappear instantly when locked onto the field. \nN.B. It is also acceptable to refer to an invisible mode where a disappearing animation is shown. However, this makes the game a lot easier, so in this game, the invisible mode without such animations is referred to as \"Sudden Invisible\".",
"Refers to a rule where blocks will disappear instantly when locked onto the field. \nN.B. It is also acceptable to refer to an invisible mode where a disappearing animation is shown. However, this makes the game a lot easier, so in this game, the invisible mode without such animations is referred to as Sudden Invisible.",
},
{"MPH mode",
"mph",
@@ -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",
"An easter egg mode from the TGM series. During a “secret grade” gameplay, the player tries to make a “>” shape with one hole in each line using blocks. The ultimate goal is to finish the whole shape using 19 lines."..HDwiki,
HDsearch.."Secret_Grade_Techniques",
},
{"Cold Clear",
"cc coldclear ai bot",
"term",
@@ -940,7 +946,7 @@ return{
{"QT Cannon",
"qtcannon",
"setup",
"We don't know much about this...",
"We dont know much about this...",
},
{"Mini-Triple",
"mt minitriple",
@@ -951,13 +957,13 @@ return{
{"Wolfmoon Cannon",
"wolfmooncannon",
"setup",
"We don't know much about this..."..HDwiki,
"We dont know much about this..."..HDwiki,
HDsearch.."wolfmoon_cannon",
},
{"ASC opener",
"ascopener",
"setup",
"We don't know much about this...",
"We dont know much about this...",
},
{"Sewer",
"sewer",
@@ -985,12 +991,12 @@ return{
{"鹈鹕",
"",
"setup",
"(\"Pelican\") An Albatross-ish opener to use when the piece orders do not support that.",
"(Pelican) An Albatross-ish opener to use when the piece orders do not support that.",
},
{"7-piece Puzzle",
"7piecepuzzle",
"setup",
"An All Clear opener with a high success rate. In Techmino's PC Practice modes, the setup that leaves an irregular opening is this setup.",
"An All Clear opener with a high success rate. In Techminos PC Practice modes, the setup that leaves an irregular opening is this setup.",
},
--Pattern
@@ -1043,7 +1049,7 @@ return{
{"千鸟格子",
"",
"pattern",
"(\"Qianniao Grids\") A setup to donate a T-Spin Double over a small hole and can do another T-Spin Double after that.",
"(Qianniao Grids) A setup to donate a T-Spin Double over a small hole and can do another T-Spin Double after that.",
},
{"6-piece puzzle",
"liuqiaoban",
@@ -1065,59 +1071,59 @@ return{
{"Reset setting",
"reset setting",
"command",
"Go to console and type \"rm conf/setting\" then press enter.\nRestart the game for the setting to take effect.\nPlay one game to get setting back",
"Go to console and type rm conf/setting then press enter.\nRestart the game for the setting to take effect.\nPlay one game to get setting back",
},
{"Reset statistics",
"reset statistic data",
"command",
"Go to console and type \"rm conf/data\" then press enter.\nRestart the game for the setting to take effect.\nPlay one game to get data back",
"Go to console and type rm conf/data then press enter.\nRestart the game for the setting to take effect.\nPlay one game to get data back",
},
{"Reset unlock",
"reset unlock",
"command",
"Go to console and type \"rm conf/unlock\" then press enter.\nRestart the game for the setting to take effect.\nFresh a rank to get data back",
"Go to console and type rm conf/unlock then press enter.\nRestart the game for the setting to take effect.\nFresh a rank to get data back",
},
{"Reset records",
"reset record",
"command",
"Go to console and type \"rm -s record\" then press enter.\nRestart the game for the setting to take effect.\nFresh a record list to get one list back",
"Go to console and type rm -s record then press enter.\nRestart the game for the setting to take effect.\nFresh a record list to get one list back",
},
{"Reset key",
"reset virtualkey",
"command",
"Go to console and type \"rm conf/[keyFile]\" then press enter.\nKeyboard: key, Virtualkey: virtualkey, Virtualkey save: vkSave1(2)\nRestart the game for the firsst two settings to take effect.\nEnter setting and go back to get one file back",
"Go to console and type rm conf/[keyFile] then press enter.\nKeyboard: key, Virtualkey: virtualkey, Virtualkey save: vkSave1(2)\nRestart the game for the firsst two settings to take effect.\nEnter setting and go back to get one file back",
},
{"Delete replays",
"delete recording",
"command",
"Go to console and type \"rm -s replay\" then press enter.\nTake effect immediately.",
"Go to console and type rm -s replay then press enter.\nTake effect immediately.",
},
{"Delete cache",
"delete cache",
"delete cache",
"command",
"Go to console and type \"rm -s cache\" then press enter.\nTake effect immediately.",
"Go to console and type rm -s cache then press enter.\nTake effect immediately.",
},
--English
{"SFX",
"soundeffects",
"english",
"Acronym for \"Sound Effects\".",
"Acronym for Sound Effects.",
},
{"BGM",
"backgroundmusic",
"english",
"Acronym for \"Background Music\".",
"Acronym for Background Music.",
},
{"TAS",
"tas",
"english",
"Acronym for \"Tool-Assisted Speedrun(Superplay)\"\nPlay game with special tools without breaking the rules of the game (at the programming level).\nIt is generally used to get theoretical maximum scores or achieve interesting goals.\nA very simple TAS tool is built in this game",
"Acronym for Tool-Assisted Speedrun(Superplay)\nPlay game with special tools without breaking the rules of the game (at the programming level).\nIt is generally used to get theoretical maximum scores or achieve interesting goals.\nA very simple TAS tool is built in this game",
},
{"AFK",
"afk",
"english",
"Acronym for \"Away From Keyboard\", or in a broader sense, a period when you are not playing.\nTaking regular breaks help relief your muscle strain and help you to play better when you come back.",
"Acronym for Away From Keyboard, or in a broader sense, a period when you are not playing.\nTaking regular breaks help relief your muscle strain and help you to play better when you come back.",
},
--Famous
@@ -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 Tetriss Swap mode.",
},
{"Ajanba",
"ajb",
@@ -1154,7 +1160,7 @@ return{
{"Furea",
"flare fuleiya jk",
"name",
"(ふれあ)\n\nOne of the top players.\nWorld record holder of Puyo Puyo Tetris's Ultra mode.",
"(ふれあ)\n\nOne of the top players.\nWorld record holder of Puyo Puyo Tetriss Ultra mode.",
},
{"Iljain",
"yijianlian",
@@ -1174,7 +1180,7 @@ return{
{"Kazu",
"mdking",
"name",
"One of the top players.\nFamous for how he can turn misdrops into donation setups.\nA.k.a. \"GAMEOVER\", \"GAMAOVER\", \"GAME_OVER_RETRY\"",
"One of the top players.\nFamous for how he can turn misdrops into donation setups.\nA.k.a.GAMEOVER,” “GAMAOVER,” “GAME_OVER_RETRY.”",
},
{"Microblizz",
"",
@@ -1194,17 +1200,17 @@ return{
{"Yakine",
"",
"name",
"One of the top players.\nFamous for fancy T-Spins. When in combat but not in danger, he could often pull off some fancy donations very high on the field. Third place on the speed leaderboards of Jstris's 20TSD mode, and didn't use setups (the first and second place both used LST setup).",
"One of the top players.\nFamous for fancy T-Spins. When in combat but not in danger, he could often pull off some fancy donations very high on the field. Third place on the speed leaderboards of Jstriss 20TSD mode, and didnt use setups (the first and second place both used LST setup).",
},
{"Translator Note 3",
"",
"help",
"Starting from here, all but one term are China-specific (the not-China term is Diao) and are less relevant for the global community.\n\"Virtual content creator\" refers to people who produce content online under a fictional persona, and appear as a motion-controlled animated character on screens. Basically \"Virtual YouTuber\" but not platform-specific."
"Starting from here, all but one term are China-specific (the not-China term is Diao) and are less relevant for the global community.\nVirtual content creator refers to people who produce content online under a fictional persona, and appear as a motion-controlled animated character on screens. Basically Virtual YouTuber but not platform-specific."
},
{"TetroDictionary",
"zictionary littlez",
"name",
"(or Zictionary for short) The name of this dictionary!\nIt includes brief introductions on many common terms in Tetris.\nIt used to be a chatbot in our QQ group, which was used to answer new player's FAQs. The entries in the Tetrodictionary were also inherited from the database in the chatbot.\nThe contents in the TetroDictionary was adapted from a variety of sources such as Tetris Wiki and Hard Drop Wiki.",
"(or Zictionary for short) The name of this dictionary!\nIt includes brief introductions on many common terms in Tetris.\nIt used to be a chatbot in our QQ group, which was used to answer new players FAQs. The entries in the Tetrodictionary were also inherited from the database in the chatbot.\nThe contents in the TetroDictionary was adapted from a variety of sources such as Tetris Wiki and Hard Drop Wiki.",
},
{"MrZ",
"mrz_26 t026 t626",
@@ -1222,7 +1228,7 @@ return{
{"Farter",
"",
"name",
"Tetris Research community member.\nPersonal bests: Sprint 26.193 seconds\nOne of the prestigious players in the Chinese Tetris community. Author of T-ex and Tetr.js Farter's Dig Mod.",
"Tetris Research community member.\nPersonal bests: Sprint 26.193 seconds\nOne of the prestigious players in the Chinese Tetris community. Author of T-ex and Tetr.js Farters Dig Mod.",
"https://space.bilibili.com/132966",
},
{"Teatube",
@@ -1257,7 +1263,7 @@ return{
{"蕴空之灵",
"ykzl yunkongzhiling niao bird",
"name",
"(Yùn Kōng Zhī Líng)Tetris Research community member.\nPersonal bests: Sprint 33 seconds.\nDecent efficiency. Can't eat spicy food. Often uses TKI 3, Albatross and PC opener.",
"(Yùn Kōng Zhī Líng)Tetris Research community member.\nPersonal bests: Sprint 33 seconds.\nDecent efficiency. Cant eat spicy food. Often uses TKI 3, Albatross and PC opener.",
"https://space.bilibili.com/9964553",
},
-- {"Mono",
@@ -1287,13 +1293,13 @@ return{
{"Mars608",
"mars608",
"name",
"Tetris Research community member.\nFormer regional first place on Puyo Puyo Tetris (Nintendo Switch, People's Republic of China region).",
"Tetris Research community member.\nFormer regional first place on Puyo Puyo Tetris (Nintendo Switch, PRC region).",
"https://space.bilibili.com/1471400",
},
{"Mifu",
"swl",
"name",
"Originally known as swl.\nPersonal bests: Sprint 28.445 seconds, Tetris Research community member.\nMiya's Tetris coach. Miya made an animated character art for him called Mifu, meaning \"Miya's Shifu\".",
"Originally known as swl.\nPersonal bests: Sprint 28.445 seconds, Tetris Research community member.\nMiyas Tetris coach. Miya made an animated character art for him called Mifu, meaning Miyas Shifu.",
"https://space.bilibili.com/109356367",
},
{"ZXC",
@@ -1351,7 +1357,7 @@ return{
"https://space.bilibili.com/13014410",
},
{"蓝绿",
"lanlv lanlyu gompyn imple lee blari'o blariho",
"lanlv lanlyu gompyn imple lee blario blariho",
"name",
"(Lán Lǜ)\n\nTetris Research community member.\nParticipant of $1",--Techmino backend
},

View File

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

View File

@@ -1,5 +1,5 @@
local HDsearch="https://harddrop.com/wiki?search="
local HDwiki="\t更多内容见Hard Drop Wiki。"
local HDwiki="\n更多内容见Hard Drop Wiki。"
return{
{"新人须知",
"读我 必读 萌新 xinren new noob readme",
@@ -59,7 +59,7 @@ return{
{"研究群",
"yanjiu study research",
"org",
"俄罗斯方块·[研究]群QQ号112897780“中国俄罗斯方块总群”",
"俄罗斯方块·[研究]群QQ号112897780 “中国俄罗斯方块总群” ",
},
{"Mew据点",
"mew tieba forum",
@@ -115,7 +115,7 @@ return{
{"注[1]",
"备注 notice",
"game",
"以下内容是为部分官方和较高人气同人方块游戏的简介。\n其中可能包含一些只代表个人观点的主观评价写在方括号里面,请不要根据这些评论直接认定游戏的好坏",
"以下内容是为部分官方和较高人气同人方块游戏的简介。\n其中可能包含一些只代表个人观点的主观评价写在方括号里仅供参考,顺便也请不要因为某个方面有欠缺就直接认为 “这个游戏不好” ",
},
{"King of Stackers",
"回合制 网页 手机 kos kingofstackers",
@@ -277,7 +277,7 @@ return{
{"Touhoumino",
"东方 车万 偷猴 chewan dongfang th",
"game",
"Windows | 单机\n块圈玩家自制方块一个Nullpomino的自带资源包的改版将东方Project元素与俄罗斯方块结合。马拉松模式结合了东方Project里的”符卡”机制需要在一定时间内达成目标分数才能击破。\n[难度较大,适合有方块基础并且各项能力都较强的玩家游玩(不然都不知道自己怎么死的)。]",
"Windows | 单机\n块圈玩家自制方块一个Nullpomino的自带资源包的改版将东方Project元素与俄罗斯方块结合。马拉松模式结合了东方Project里的” 符卡” 机制,需要在一定时间内达成目标分数才能击破。\n[难度较大,适合有方块基础并且各项能力都较强的玩家游玩(不然都不知道自己怎么死的)。]",
},
{"Tetris Blitz",
"闪电战 ea",
@@ -292,7 +292,7 @@ return{
{"Tetris Beat",
"节奏 n3twork",
"game",
"iOS | 单机\nN3TWORK代理的一款移动端方块。除了马拉松以外游戏还有一个“Beat”模式但只需根据BGM的节奏落块就可以得到额外分数。\n[特效比较瞎眼,不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",
"iOS | 单机\nN3TWORK代理的一款移动端方块。除了马拉松以外游戏还有一个 “Beat” 模式但只需根据BGM的节奏落块就可以得到额外分数。\n[特效比较瞎眼,不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",
},
{"Tetris (N3TWORK)",
"Tetris n3twork",
@@ -307,7 +307,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",
@@ -319,7 +319,7 @@ return{
{"LPM",
"sudu",
"term",
"Line Per Minute\n行每分,体现玩家下块速度。\n\n不同游戏中显示的LPM算法可能不一样例如TO中的LPM是用PPS换算的每1PPS=24LPM忽略掉了垃圾行的影响不再是字面意思本游戏中使用L'PM代表这种换算后的LPM。",
"Line Per Minute\n行每分,体现玩家下块速度。\n\n不同游戏中显示的LPM算法可能不一样例如TO中的LPM是用PPS换算的每1PPS=24LPM忽略掉了垃圾行的影响不再是字面意思本游戏中使用LPM代表这种换算后的LPM。",
},
{"PPS",
"sudu",
@@ -406,7 +406,7 @@ return{
{"HPC",
"hc clear banqing banquanqing banquanxiao",
"term",
"Half-PC\nPC全消的外延“下方有剩余方块”的全消特别地如果只消1行则必须不剩余玩家放置的方块能打出一些攻击和防御Techmino限定",
"Half-PC\nPC全消的外延 “下方有剩余方块” 的全消特别地如果只消1行则必须不剩余玩家放置的方块能打出一些攻击和防御Techmino限定",
},
--术语(旋转相关)
@@ -448,7 +448,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 +468,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 +534,7 @@ return{
{"XRS",
"旋转系统 rotate",
"term",
"X Rotation System\nT-ex原创旋转系统引入了“按住方向键换一套踢墙表”的设定在对应的方向需要顶住墙让“想去哪”能被游戏捕获从而转到玩家希望到达的位置。\n\n其他旋转系统无论踢墙表怎么设计块处在某个位置时旋转后最终只能按固定顺序测试这导致不同的踢墙是竞争的若存在两个可能想去的位置就只能二选一XRS解决了这个问题。",
"X Rotation System\nT-ex原创旋转系统引入了 “按住方向键换一套踢墙表” 的设定(在对应的方向需要顶住墙),让 “想去哪” 能被游戏捕获从而转到玩家希望到达的位置。\n\n其他旋转系统无论踢墙表怎么设计块处在某个位置时旋转后最终只能按固定顺序测试这导致不同的踢墙是竞争的若存在两个可能想去的位置就只能二选一XRS解决了这个问题。",
},
--术语(其他)
@@ -556,17 +556,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 +586,12 @@ return{
{"预览 Next",
"下一个 next yulan xiayige",
"term",
"指示后边几个块的顺序。\n提前思考手上这块怎么摆可以让后面轻松是玩家提升的必需技能。\n\n关于玩家玩的时候到底看了几个Next这个数字并不固定不同玩家、不同模式、不同局面计算next的数量都不一样通过调整可见Next数量打40L比较时间等方式测得的数据并不准确。\n\n具体例如一个比较熟练的玩家几乎永远会提前算好一个Next不然不会锁定手里的块场地上将要出现或可以构造消四洞T坑的时候会找最近的IT什么时候来如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立有很多介于中间的情况。所以一个玩家看的Next数量是时刻在变的“某人看几个Next”没有精确答案必须在指明情况的时候数字才能作为参考。",
"指示后边几个块的顺序。\n提前思考手上这块怎么摆可以让后面轻松是玩家提升的必需技能。\n\n关于玩家玩的时候到底看了几个Next这个数字并不固定不同玩家、不同模式、不同局面计算next的数量都不一样通过调整可见Next数量打40L比较时间等方式测得的数据并不准确。\n\n具体例如一个比较熟练的玩家几乎永远会提前算好一个Next不然不会锁定手里的块场地上将要出现或可以构造消四洞T坑的时候会找最近的IT什么时候来如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立有很多介于中间的情况。所以一个玩家看的Next数量是时刻在变的 “某人看几个Next” 没有精确答案,必须在指明情况的时候数字才能作为参考。",
},
{"暂存 Hold",
"交换 hold zancun",
"term",
"将手里的方块和Hold槽中的交换一般不能连续使用。\n用来调整块序,更容易摆出你想要的形状。\n本游戏中有一个“物理Hold”机制开启后Hold换出的方块会直接出现在当前方块所在的位置\n\n用不用Hold各有好处不用的话看到序列是什么就是什么减少了思考量并且减少了按键的种类操作简单容易提升KPS有些人的40L记录就是不用Hold打出的。用Hold可以灵活地调整序列减少高重力等规则带来的难度算力足够的情况下可以达成更复杂的目标甚至反过来显著减少总按键数。",
"将手里的方块和Hold槽中的交换一般不能连续使用。\n用来调整块序,更容易摆出你想要的形状。\n本游戏中有一个 “物理Hold” 机制开启后Hold换出的方块会直接出现在当前方块所在的位置\n\n用不用Hold各有好处不用的话看到序列是什么就是什么减少了思考量并且减少了按键的种类操作简单容易提升KPS有些人的40L记录就是不用Hold打出的。用Hold可以灵活地调整序列减少高重力等规则带来的难度算力足够的情况下可以达成更复杂的目标甚至反过来显著减少总按键数。",
},
{"置换 Swap",
"交换 swap hold jiaohuan zancun",
@@ -641,7 +641,7 @@ return{
{"连击 Combo",
"ren",
"term",
"从第二次消除起叫1 REN/Combo打出的攻击根据游戏设计的不同也不同。“REN”这个名称来源于日语中的”連”れん",
"从第二次消除起叫1 REN/Combo打出的攻击根据游戏设计的不同也不同。 “REN” 这个名称来源于日语中的” 連” (れん)。",
},
{"Spike",
"baofa xingbao",
@@ -691,7 +691,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 +716,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 +732,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 +787,7 @@ return{
{"DAS打断 DCD",
"dascut dcd daduan",
"term",
"本游戏中指玩家的操作焦点转移到新方块的瞬间此时减小重置DAS计时器让自动移动不会立刻生效减少“移动键松开晚了导致下一块一出来就立即开始移动”的情况\n其他游戏中的DAS打断机制可能和本游戏的有区别仅供参考。",
"本游戏中指玩家的操作焦点转移到新方块的瞬间此时减小重置DAS计时器让自动移动不会立刻生效减少 “移动键松开晚了导致下一块一出来就立即开始移动” 的情况\n其他游戏中的DAS打断机制可能和本游戏的有区别仅供参考。",
},
{"误硬降打断 HCD",
"autolockcut mdcut daduan",
@@ -827,17 +827,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",
@@ -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,31 +935,31 @@ 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炮",
@@ -970,7 +976,7 @@ return{
{"狼月炮",
"wolfmoon",
"setup",
"狼月炮。\n"..HDwiki,
"狼月炮。"..HDwiki,
HDsearch.."wolfmoon_cannon",
},
{"ASC",
@@ -981,19 +987,19 @@ 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",
},
{"信天翁",
@@ -1021,19 +1027,19 @@ 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",
},
{"LST堆叠",
@@ -1045,13 +1051,13 @@ return{
{"汉堡包",
"hamburger hanbaobao",
"pattern",
"一种边缘捐T不影响消四的堆叠法。\n"..HDwiki,
"一种边缘捐T不影响消四的堆叠法。"..HDwiki,
HDsearch.."hamburger",
},
{"皇家十字",
"皇十 imperial cross huangjiashizi huangshi",
"pattern",
"在一个十字形洞口盖屋檐后可以做两个T2的形状。\n"..HDwiki,
"在一个十字形洞口盖屋檐后可以做两个T2的形状。"..HDwiki,
HDsearch.."imperial_cross",
},
{"雨宫炮",
@@ -1084,37 +1090,37 @@ return{
{"重置设置",
"reset setting chongzhi qingkong shezhi",
"command",
"前往控制台输入“rm conf/setting”并回车\n需要重启游戏生效,若反悔,进入设置菜单再退出即可恢复文件。",
"前往控制台输入 “rm conf/setting” 并回车\n需要重启游戏生效,若反悔,进入设置菜单再退出即可恢复文件。",
},
{"重置统计数据",
"reset statistic data chongzhi tongji shuju",
"command",
"前往控制台输入“rm conf/data”并回车\n需要重启游戏生效,若反悔,玩一局并触发结算即可恢复文件。",
"前往控制台输入 “rm conf/data” 并回车\n需要重启游戏生效,若反悔,玩一局并触发结算即可恢复文件。",
},
{"重置解锁状态",
"reset unlock chongzhi qingkong jiesuo",
"command",
"前往控制台输入“rm conf/unlock”并回车\n需要重启游戏生效,若反悔,刷新任意一个模式在地图上的状态即可恢复文件。",
"前往控制台输入 “rm conf/unlock” 并回车\n需要重启游戏生效,若反悔,刷新任意一个模式在地图上的状态即可恢复文件。",
},
{"重置本地排行榜",
"reset chongzhi paihangbang",
"command",
"前往控制台输入“rm -s record”并回车\n需要重启游戏生效,若反悔,玩一局并更新模式排行榜即可恢复对应模式的单个排行榜文件。",
"前往控制台输入 “rm -s record” 并回车\n需要重启游戏生效,若反悔,玩一局并更新模式排行榜即可恢复对应模式的单个排行榜文件。",
},
{"删除键位",
"reset virtualkey",
"command",
"前往控制台输入“rm conf/键位文件”并回车\n键盘是key虚拟按键是virtualkey虚拟按键预设是vkSave12\n前两者重启生效,若反悔,进入对应的设置菜单再返回即可恢复文件。",
"前往控制台输入 “rm conf/键位文件” 并回车\n键盘是key虚拟按键是virtualkey虚拟按键预设是vkSave12\n前两者重启生效,若反悔,进入对应的设置菜单再返回即可恢复文件。",
},
{"删除录像",
"reset replay luxiang",
"command",
"前往控制台输入“rm -s replay”并回车。\n立即生效。",
"前往控制台输入 “rm -s replay” 并回车。\n立即生效。",
},
{"删除缓存",
"reset cache huancun touxiang",
"command",
"前往控制台输入“rm -s cache”并回车。\n立即生效。",
"前往控制台输入 “rm -s cache” 并回车。\n立即生效。",
},
--英文
@@ -1198,7 +1204,7 @@ return{
{"Kazu",
"mdking",
"name",
"也叫“GAMEOVER” “GAMAOVER” “GAME_OVER_RETRY”\n一流玩家以熟练md转捐赠闻名",
"(也叫 “GAMEOVER” “GAMAOVER” “GAME_OVER_RETRY” \n一流玩家以熟练md转捐赠闻名",
},
{"Microblizz",
"",

View File

@@ -16,7 +16,7 @@ return{
newDay="A new day, a new beginning!",
playedLong="You have been playing for a long time. Time to a break!",
playedTooMuch="You have been playing for far too long! Techmino is fun, but remember to take some rests!",
settingWarn="Careful - you're about to change some uncommon settings!",
settingWarn="Careful - youre about to change some uncommon settings!",
atkModeName={"Random","Badges","K.O.s","Attackers"},
royale_remain="$1 Players Left",
@@ -114,7 +114,7 @@ return{
noUsername="Please enter your username",
wrongEmail="Invalid email address",
noPassword="Please enter your password",
diffPassword="Passwords don't match",
diffPassword="Passwords dont match",
registerRequestSent="A sign up request has been sent.",
registerOK="Sign up successful!",
loginOK="You are now logged in!",
@@ -182,7 +182,7 @@ return{
"Finesse:",
},
radar={"DEF","OFF","ATK","SEND","SPD","DIG"},
radarData={"D'PM","ADPM","APM","SPM","L'PM","DPM"},
radarData={"DPM","ADPM","APM","SPM","LPM","DPM"},
stat={
"Times Launched:",
"Play Count:",
@@ -197,13 +197,13 @@ return{
"Fns. Errs/Rate:",
},
aboutTexts={
"This is just an *ordinary* block stacker. Really, that's it.",
"This is just an *ordinary* block stacker. Really, thats it.",
"Inspired by C2/IO/JS/WWC/KOS etc.",
"",
"Powered by LÖVE",
"Any suggestions or bug reports are appreciated!",
"Make sure to get the game only from official sources,",
"as we can't make sure you're safe if you got it elsewhere.",
"as we cant make sure youre safe if you got it elsewhere.",
"The author is not responsible for any modifications.",
FNNS and"/"or"While the game is free, donations are appreciated.",
FNNS and"/"or"Check Zictionary for more",
@@ -370,7 +370,7 @@ return{
},
net_newRoom={
title="Room Config",
roomName="Room name (Default: \"[username]'s room\")",
roomName="Room name (Default: [username]'s room)",
password="Password",
description="Room Description",
@@ -630,7 +630,7 @@ return{
push="Add Line (K)",
del="Del Line (L)",
demo="Don't Show ×",
demo="Dont Show “×”",
newPg="New Page (N)",
delPg="Del Page (M)",
@@ -764,6 +764,8 @@ return{
['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"},
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines"},
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines"},
@@ -788,27 +790,31 @@ return{
['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+", "Fast 20G decision"},
['strategy_h_plus']={"Strategy", "HARD+", "Fast 20G decision"},
['strategy_u_plus']={"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 very low-speed recreation from the 80s"},
['classic_h']= {"Classic", "HARD", "A medium speed recreation from the 80s"},
['blind_wtf']= {"Invisible", "WTF", "Youre not ready"},
['classic_e']= {"Classic", "EASY", "A low-speed recreation from the 80s"},
['classic_h']= {"Classic", "HARD", "A medium-speed recreation from the 80s"},
['classic_l']= {"Classic", "LUNATIC", "A high-speed recreation from the 80s"},
['classic_u']= {"Classic", "ULTIMATE", "A very high-speed recreation from the 80s"},
['survivor_e']= {"Survival", "EASY", "How long can you survive?"},
['survivor_n']= {"Survival", "NORMAL", "How long can you survive?"},
@@ -850,7 +856,7 @@ return{
['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"},
['infinite_dig']= {"Infinite: Dig", "", "Dig-diggin-dug"},
['marathon_inf']= {"Marathon", "INFINITE", "Infinite marathon."},
['custom_clear']= {"Custom", "NORMAL"},
@@ -858,10 +864,10 @@ return{
},
getTip={refuseCopy=true,
":pog:",
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"\"Techmino.app\" cannot be opened because the developer cannot be verified.",
"\"Techmino.app\" will damage your computer. You should move it to the Bin.",
"\"TechminOS\"",
"(RURU)RFR2URU(RURF)",
"Techmino.app cannot be opened because the developer cannot be verified.",
"Techmino.app will damage your computer. You should move it to the Bin.",
"TechminOS",
"\\jezevec/\\jezevec/\\jezevec/",
"\\osk/\\osk/\\osk/",
"↑↑↓↓←→←→BA",
@@ -889,17 +895,17 @@ return{
"Decreasing DAS and ARR makes your game faster but harder to control.",
"Did I just see a Back-to-Back-to-Back?",
"Does B2B2B2B exist?",
"Don't let a small glitch ruin your entire day!",
"Don't look directly at the bugs!",
"Dont let a small glitch ruin your entire day!",
"Dont look directly at the bugs!",
"Enjoy the Techmino rotation system!",
"Excellent, but let's go better next time…",
"Find out what's in the settings!",
"Excellent, but lets go better next time…",
"Find out whats in the settings!",
"Found any bugs? Open up an issue in our GitHub page!",
"Free-to-play block stacking game with a Battle Royale mode!",
"git commit",
"git push -f",
"Got any suggestions? Post them in our Discord!",
"Have you noticed what \"rotating\" does do to a block?",
"Have you noticed what rotating does do to a block?",
"Headphones recommended for a better experience.",
"Hello world!",
"I3 and L3 are the only two unique triminoes.",
@@ -908,8 +914,8 @@ return{
"Initial [insert action] system can save you.",
"Is B2B2B2B possible?",
"It is loading! Not just a cutscene!",
"It's possible to finish 40L without left/right buttons.",
"It's possible to finish 40L without rotation buttons.",
"Its possible to finish 40L without left/right buttons.",
"Its possible to finish 40L without rotation buttons.",
"Join our Discord!",
"l-=-1",
"Let the bass kick!",
@@ -929,12 +935,12 @@ return{
"pps-0.01",
"Server down randomly",
"Some requirements to achieve rank X are intentionally set to be difficult for even the best players.",
"Soon you'll be able to play against friends and foes all over the world.",
"Soon youll be able to play against friends and foes all over the world.",
"Split clear coming soon!",
"sudo rm -rf /*",
"Techmino is a portmanteau of \"technique\" and \"tetromino\".",
"Techmino is a portmanteau of technique” and “tetromino.",
"Techmino is so fun!",
"Techmino on Nspire-CX: yes it exists, no it's not the same game.",
"Techmino on Nspire-CX: yes it exists, no its not the same game.",
"TetroDictionary is now available in English.",
"Most of the music tracks in this game are made using Beepbox.",
"The names that appeared in the background of the Staff page is a list of our sponsors.",
@@ -967,7 +973,7 @@ return{
{C.C,"Also try osu!"},
{C.C,"Also try Phigros!"},
{C.C,"Also try Puyo Puyo!"},
{C.C,"Also try Rubik's cube!"},
{C.C,"Also try Rubiks cube!"},
{C.C,"Also try Terraria!"},
{C.C,"Also try Touhou Project!"},
{C.C,"Also try VVVVVV!"},
@@ -979,8 +985,8 @@ return{
{C.lY,"COOL!!"},
{C.N,"Lua",C.Z," No.1"},
{C.P,"T-spin!"},
{C.R,"\"DMCA abusing\""},
{C.R,"\"Intellectual property law\""},
{C.R,"DMCA abusing"},
{C.R,"Intellectual property law"},
{C.R,"DD",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z," Cannon"},
{C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"},
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},

View File

@@ -655,20 +655,21 @@ return{
['master_m']= {"Master", "M21", "Para Maestros del 20G."},
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo:\nel final es inalcanzable."},
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro,\nacepta este desafío"},
['strategy_e']= {"Strategy", "EASY", "Decisiones rápidas en 20G."},
['strategy_h']= {"Strategy", "HARD", "Decisiones rápidas en 20G."},
['strategy_u']= {"Strategy", "ULTIMATE", "Decisiones rápidas en 20G."},
['strategy_e_plus']={"Strategi", "MUDAH+", "Decisiones rápidas en 20G."},
['strategy_h_plus']={"Strategi", "SULIT+", "Decisiones rápidas en 20G."},
['strategy_u_plus']={"Strategi", "TERAKHIR+", "Decisiones rápidas en 20G."},
['strategy_e']= {"Strategy", "Fácil", "Decisiones rápidas en 20G."},
['strategy_h']= {"Strategy", "Difícil", "Decisiones rápidas en 20G."},
['strategy_u']= {"Strategy", "Supremo", "Decisiones rápidas en 20G."},
['strategy_e_plus']={"Strategy", "Fácil+", "Estrategia sin bodega."},
['strategy_h_plus']={"Strategy", "Difícil+", "Estrategia sin bodega."},
['strategy_u_plus']={"Strategy", "Supremo+", "Estrategia sin bodega."},
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
['blind_l']= {"A Ciegas", "Inmediato+", "Para profesionales."},
['blind_u']= {"A Ciegas", "?", "¿Estás preparado?"},
['blind_wtf']= {"A Ciegas", "ELFUF", "No, no lo estás."},
['classic_e']= {"Classic", "EASY", "Modo clásico con alta velocidad."},
['classic_e']= {"Clásico", "EASY", "Modo clásico con alta velocidad."},
['classic_h']= {"Clásico", "Difícil", "Modo clásico con alta velocidad."},
['classic_l']= {"Clásico", "Lunático", "Modo clásico con alta velocidad."},
['classic_u']= {"Clásico", "Supremo", "Modo clásico con alta velocidad."},
['survivor_e']= {"Supervivencia", "Fácil", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_n']= {"Supervivencia", "Normal", "¿Cuánto tiempo podrás sobrevivir?"},

View File

@@ -742,7 +742,7 @@ return{
['techmino49_u']= {"Tech 49", "ULTIME", "Bataille de 49 joueurs.\nLe dernier en vie gagne."},
['techmino99_e']= {"Tech 99", "FACILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_h']= {"Tech 99", "DIFFICILE", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_u']= {"Tech 99", "ULTIMe", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['techmino99_u']= {"Tech 99", "ULTIME", "Bataille de 99 joueurs.\nLe dernier en vie gagne."},
['round_e']= {"Tour à tour", "FACILE", "Mode échecs"},
['round_n']= {"Tour à tour", "NORMAL", "Mode échecs"},
['round_h']= {"Tour à tour", "DIFFICILE", "Mode échecs"},
@@ -752,14 +752,14 @@ return{
['master_h']= {"Master", "DIFFICILE", "Challenge 20G pro !"},
-- ['master_m']= {"Master", "M21", "For 20G Masters."},
['master_final']= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
-- ['master_ph']= {"Mester", "FANTASMA", "20G: ???"},
-- ['master_ph']= {"Master", "FANTASMA", "20G: ???"},
['master_ex']= {"GrandMaster", "EXTRA", "Tentez de devenir un Grandmaster."},
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
-- ['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
-- ['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
-- ['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
['strategy_e']= {"Stratégie", "FACILE", "Décision rapide 20G"},
['strategy_h']= {"Stratégie", "DIFFICILE", "Décision rapide 20G"},
['strategy_u']= {"Stratégie", "ULTIME", "Décision rapide 20G"},
['strategy_e_plus']={"Stratégie", "FACILE+", "Stratégie sans retenue"},
['strategy_h_plus']={"Stratégie", "DIFFICILE+", "Stratégie sans retenue"},
['strategy_u_plus']={"Stratégie", "ULTIME+", "Stratégie sans retenue"},
['blind_e']= {"Aveugle", "MOITIE", "Pour les novices."},
['blind_n']= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
['blind_h']= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},
@@ -768,6 +768,7 @@ return{
['blind_wtf']= {"Aveugle", "WTF", "Vous n'êtes pas prêt."},
['classic_e']= {"Classic", "EASY", "Un mode classique rapide."},
['classic_h']= {"Classic", "DIFFICILE", "Un mode classique rapide."},
['classic_l']= {"Classic", "LUNATIQUE", "Un mode classique rapide."},
['classic_u']= {"Classic", "ULTIME", "Un mode classique rapide."},
['survivor_e']= {"Survivor", "FACILE", "Pendant combien de temps survivrez-vous ?"},
['survivor_n']= {"Survivor", "NORMAL", "Pendant combien de temps survivrez-vous ?"},
@@ -800,10 +801,10 @@ return{
['tsd_e']= {"TSD Challenge", "FACILE", "T-spin doubles uniquement !"},
['tsd_h']= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
['tsd_u']= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
-- ['backfire_n']= {"Backfire", "NORMAL", "Self-send garbages"},
-- ['backfire_h']= {"Backfire", "HARD", "Self-send garbages"},
-- ['backfire_l']= {"Backfire", "LUNATIC", "Self-send garbages"},
-- ['backfire_u']= {"Backfire", "ULTIMATE", "Self-send garbages"},
-- ['backfire_n']= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines"},
-- ['backfire_h']= {"Backfire", "HARD", "Hold back the backfiring garbage lines"},
-- ['backfire_l']= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines"},
-- ['backfire_u']= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines"},
-- ['sprintAtk']= {"Sprint", "100 Attack", "Send 100 lines!"},
-- ['sprintEff']= {"Sprint", "Efficiency", "Send more attack in 40lines!"},
['zen']= {'Zen', "200", "200 lignes sans limites de temps."},

View File

@@ -27,11 +27,11 @@ return{
clear={"Single","Double","Triple","Techrash","Pentacrash","Hexacrash","Heptacrash","Octacrash","Nonacrash","Decacrash","Undecacrash","Dodecacrash","Tridecacrash","Tetradecacrash","Pentadecacrash","Hexadecacrash","Heptadecacrash","Octadecacrash","Nonadecacrash","Ultracrash","Impossicrash"},
cleared="$1 baris",
mini="Mini",b2b="B2B ",b3b="B2B2B ",
PC="PC",HPC="Hampir PC",
PC="PC",HPC="Setengah PC",
replaying="[Diulang]",
tasUsing="[TAS]",
stage="Tahap $1 selesai!",
stage="Bagian $1 selesai!",
great="Bagus!",
awesome="Luar biasa!",
almost="Hampir!",
@@ -40,7 +40,7 @@ return{
speedup="Percepatkan!",
missionFailed="Salah",
speedLV="Kecepatan lvl",
speedLV="Kecptn lvl",
piece="Blok",line="Baris",atk="Baris Terkirim",eff="Efisiensi",
rpm="RPM",tsd="TSD",
grade="Nilai",techrash="Techrash",
@@ -56,7 +56,7 @@ return{
gameover="Tamat",
pause="Terjeda",
pauseCount="Jeda-jeda",
pauseCount="Jeda",
finesse_ap="Semua sempurna",
finesse_fc="Kombo penuh",
@@ -75,7 +75,7 @@ return{
loadError_other="'$1' eror memuat: $2",
loadError_unknown="'$1' eror memuat: alasan tidak diketahui",
saveError_duplicate="'$1' eror menyimpan: nama file tergAnda",
saveError_duplicate="'$1' eror menyimpan: nama file terganda",
saveError_encode="'$1' eror menyimpan: gagal menyandi",
saveError_other="'$1' eror menyimpan: $2",
saveError_unknown="'$1' eror menyimpan: alasan tidak diketahui",
@@ -85,10 +85,10 @@ return{
exportSuccess="Ekspor berhasil",
importSuccess="Impor berhasil",
dataCorrupted="Data rusak",
pasteWrongPlace="Menempel di tempat yang salah?",
pasteWrongPlace="Apakah Anda menempelkannya di tempat yang salah?",
noFile="File tidak ada",
nowPlaying="Sekarang mendengarkan:",
nowPlaying="Musik:",
VKTchW="Berat sentuhan",
VKOrgW="Berat asal",
@@ -151,7 +151,7 @@ return{
next="BLOK LANJUT\nMengubah jumlah blok lanjut yang ditampilkan.",
hold="SIMPAN\nMengubah jumlah blok yang bisa disimpan.",
hideNext="BLOK LANJUT Tersembunyi\nMenyembunyikan beberapa blok lanjut.",
infHold="SIMPAN SELAMANYA\nMemungkinkan Anda untuk menyimpan blok-blok selamanya.",
infHold="SIMPAN TAK TERBATAS\nMemungkinkan Anda untuk menyimpan blok-blok tidak terbatas.",
hideBlock="Sembunyikan Blok Aktif\nMenyembunyikan blok yang Anda mengontrol.",
hideGhost="Sembunyikan Blok Hantu\nMenyembunyikan blok yang menunjukkan tempat blok yang sedang dikontrol akan jatuh.",
hidden="Sembunyikan Blok Terdarat\nMenyembunyikan blok yang sudah mendarat setelah waktu yang tertentu.",
@@ -180,7 +180,7 @@ return{
"Diterima:",
"Jumlah Tindakan Membuat Baris:",
"Spins:",
"B2B/B3B/PC/Hampir PC:",
"B2B/B3B/PC/Setengah PC:",
"Efisiensi Tombol:",
},
radar={"BLOK","SERANGAN","SRGN + BLOK","SRGN TERKIRIM","KECEPATAN","GALI"},
@@ -191,12 +191,12 @@ return{
"Jumlah Waktu Bermain:",
"Tombol/Putar/Simpan:",
"Blok/Baris/Serangan:",
"Serangan Diterima/Ditolak/Muncul:", -- what is this
"Serangan Diterima/Ditolak/Muncul:",
"Gali/Serangan Gali:",
"Efisiensi/Efisiensi Gali:",
"B2B/B2B2B:",
"PC/Hampir PC:",
"Efisiensi Tombol Tidak Maksimal/Nilai:",
"PC/Setengah PC:",
"Kesalahan Efisiensi Tombol/Nilai:",
},
aboutTexts={
"Ini hanya penyusun blok *normal*. Sungguh, hanya itu saja.",
@@ -304,8 +304,8 @@ return{
"huaji2369",
"Lexitik",
"Tourahi Anime",
"[All other test staff]",
"And You!",
"[Semua staf penguji lainnya]",
"Dan Anda!",
},
used=[[
Alat-alat yang digunakan:
@@ -347,7 +347,7 @@ return{
pause={
setting="Pengaturan (S)",
replay="Ulang (P)",
save="Simpan Pengulangan (O)",
save="Simpan (O)",
resume="Lanjut (esc)",
restart="Coba lagi (R)",
quit="Berhenti (Q)",
@@ -800,9 +800,9 @@ return{
['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"},
['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"},
@@ -811,6 +811,7 @@ return{
['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?"},
@@ -860,8 +861,8 @@ return{
},
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 +919,8 @@ return{
"OHHHHHHHHHHHHHH",
"Main dengan satu tangan!",
"Bermain bagus membutuhkan waktu!",
"dipersembahkan oleh LÖVE",
"dipersembahkan oleh Un..LÖVE",
"Dipersembahkan oleh LÖVE",
"Dipersembahkan oleh Un..LÖVE",
"Server kadang tidak berfungsi",
"Beberapa persyaratan untuk mencapai peringkat X sengaja dibuat sulit bahkan untuk pemain terbaik.",
"Segera Anda akan dapat bermain melawan teman dan musuh di seluruh dunia.",

View File

@@ -563,7 +563,7 @@ return{
pro="アドバンス",
icon="アイコン",
sfx="効果音",
vib="VIB",
vib="振動",
alpha="Alpha",
track="オートトラック",
@@ -681,7 +681,7 @@ return{
title="ミュージックルーム",
bgm="音楽",
sfx="効果音",
voc="VOC",
voc="ボイス",
music="",
label="ラベル",
},
@@ -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", "どれだけ生き残れるかな?"},
@@ -957,22 +958,22 @@ getTip={refuseCopy=true,
"マルチプレイで遊ぼう! あなたの常識が壊されるでしょう",
"メニューをシンプルモードにした場合、イースターエッグがなくなります",
"ローディング中! シーンチェンジの間だけじゃないです!",
"Z推薦[01]東方原作ゲームをやってみよう!",
"Z推薦[02]Minecraftをやってみよう!",
"Z推薦[03]Osu!をやってみよう!",
"Z推薦[04]Quatrackをやってみよう!",
"Z推薦[05]Terrariaをやってみよう!",
"Z推薦[06]Celesteをやってみよう!",
"Z推薦[07]グーの惑星をやってみよう!",
"Z推薦[08]Orzmicをやってみよう!",
"Z推薦[09]Puyo Puyoをやってみよう!",
"Z推薦[10]Phigrosをやってみよう!",
"Z推薦[11]VVVVVVをやってみよう!",
"Z推薦[12]Ballanceをやってみよう!",
"Z推薦[13]Zumaをやってみよう!",
"Z推薦[14]ルービックキューブをやってみよう!",
"Z推薦[15]15puzzleをやってみよう!",
"Z推薦[16]Minesweeperをやってみよう!",
"Zのおすすめ[01]東方原作ゲームをやってみよう!",
"Zのおすすめ[02]Minecraftをやってみよう!",
"Zのおすすめ[03]Osu!をやってみよう!",
"Zのおすすめ[04]Quatrackをやってみよう!",
"Zのおすすめ[05]Terrariaをやってみよう!",
"Zのおすすめ[06]Celesteをやってみよう!",
"Zのおすすめ[07]グーの惑星をやってみよう!",
"Zのおすすめ[08]Orzmicをやってみよう!",
"Zのおすすめ[09]Puyo Puyoをやってみよう!",
"Zのおすすめ[10]Phigrosをやってみよう!",
"Zのおすすめ[11]VVVVVVをやってみよう!",
"Zのおすすめ[12]Ballanceをやってみよう!",
"Zのおすすめ[13]Zumaをやってみよう!",
"Zのおすすめ[14]ルービックキューブをやってみよう!",
"Zのおすすめ[15]15puzzleをやってみよう!",
"Zのおすすめ[16]Minesweeperをやってみよう!",
{C.H,"REGRET!!"},
{C.lP,"Secret Number: 626"},
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},

View File

@@ -766,7 +766,7 @@ return{
['solo_e']= {"Batalha", "FÁCIL", "Derrote a inteligência!"},
['solo_n']= {"Batalha", "NORMAL", "Derrote a inteligência!"},
['solo_h']= {"Batalha", "DIFÍCIL", "Derrote a inteligência!"},
['solo_l']= {"Batalha", "LUNATICO", "Defeat the AI!"},
['solo_l']= {"Batalha", "LUNÁTICO", "Defeat the AI!"},
['solo_u']= {"Batalha", "ULTIMATE", "Defeat the AI!"},
['techmino49_e']= {"Tech 49", "FÁCIL", "Batalha de 49 jogadores.\nO último vence"},
['techmino49_h']= {"Tech 49", "DIFÍCIL", "Batalha de 49 jogadores.\nO último vence."},
@@ -788,9 +788,9 @@ return{
-- ['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
-- ['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
-- ['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
-- ['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
-- ['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
-- ['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
-- ['strategy_e_plus']={"Strategy", "EASY+", "Holdless strategy"},
-- ['strategy_h_plus']={"Strategy", "HARD+", "Holdless strategy"},
-- ['strategy_u_plus']={"Strategy", "ULTIMATE+", "Holdless strategy"},
['blind_e']= {"Cego", "METADE", "Para novatos."},
['blind_n']= {"Cego", "TUDO", "Para intermediários."},
['blind_h']= {"Cego", "DE REPENTE", "Para experientes."},
@@ -798,7 +798,8 @@ return{
['blind_u']= {"Cego", "?", "Are you ready?"},
['blind_wtf']= {"Cego", "WTF", "You're not ready."},
['classic_e']= {"Classic", "EASY", "Modo clássico rápido."},
['classic_h']= {"Classic", "DIFÍCIL", "Modo clássico rápido."},
['classic_h']= {"Classic", "DIFÍCIL", "Modo clássico rápido."},
['classic_l']= {"Classic", "LUNÁTICO", "Modo clássico rápido."},
['classic_u']= {"Classic", "ULTIMATE", "Modo clássico rápido."},
['survivor_e']= {"Sobrevivente", "FACIL", "Por quanto sobrevive?"},
['survivor_n']= {"Sobrevivente", "NORMAL", "Por quanto sobrevive?"},

View File

@@ -762,8 +762,10 @@ 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行"},
@@ -788,19 +790,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 +814,8 @@ return{
['blind_wtf']= {"隐形", "不会吧", "还没准备好"},
['classic_e']= {"高速经典", "简单", "高速经典"},
['classic_h']= {"高速经典", "困难", "飞速经典"},
['classic_u']= {"高速经典", "极限", "极速经典"},
['classic_l']= {"高速经典", "疯狂", "极速经典"},
['classic_u']= {"高速经典", "极限", "光速经典"},
['survivor_e']= {"生存", "简单", "你能存活多久?"},
['survivor_n']= {"生存", "普通", "你能存活多久?"},
['survivor_h']= {"生存", "困难", "你能存活多久?"},
@@ -889,7 +895,7 @@ return{
"大家认为的俄罗斯方块很可能不是你以为的俄罗斯方块,场合合适的时候可以适当提醒一下哦",
"大满贯10连击消四全清",
"戴上耳机以获得最佳体验",
"多年小游戏玩家表示痛恨故意拖时间的假加载",
"多年小游戏玩家表示痛恨拖时间的假加载",
"多hold现代块又回来了",
"俄罗斯方块完全可以作为电竞游戏",
"发现有个“隐形”皮肤了吗",
@@ -927,7 +933,6 @@ return{
"深降了解一下",
"试试用跳舞毯打块",
"适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活",
"烫烫烫烫烫烫",
"挖掘能力在对战里非常非常非常重要!!!!",
"玩到一半弹出消息框?快去设置禁止弹窗",
"玩得开心的话游戏作者也会很开心哦",
@@ -967,7 +972,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 +1000,7 @@ return{
"绝大多数按钮上的图标是调用Unicode私用区里的自制字符实现的",
"科技骨牌 你的创新式块堆栈业务技术管理器",
"锟斤拷锟斤拷锟斤拷",
"烫烫烫烫烫烫",
"“Techmino.app”将对您的电脑造成伤害。您应该将它移到废纸篓。",
"$include<studio.h>",
"无法打开“Techmino.app”因为无法验证开发者。",

View File

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

View File

@@ -762,8 +762,10 @@ 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行"},
@@ -788,19 +790,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 +815,8 @@ return{
['blind_inv']= {"隱形", "倒置的", "隱形活動件"},
['classic_e']= {"高速經典", "簡單", "高速經典"},
['classic_h']= {"高速經典", "困難", "飛速經典"},
['classic_u']= {"高速經典", "極限", "極速"},
['classic_l']= {"高速經典", "瘋狂", "極速"},
['classic_u']= {"高速經典", "極限", "光速經典"},
['survivor_e']= {"生存", "簡單", "你能存活多久?"},
['survivor_n']= {"生存", "普通", "你能存活多久?"},
['survivor_h']= {"生存", "困難", "你能存活多久?"},

View File

@@ -1,7 +1,7 @@
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).
(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.
@@ -18,30 +18,49 @@ Spin detection:
- The Spin is a Mini if it only has 2 points; the piece is one of S, Z, J, L, T; AND the line clear did not clear the entire piece.
Attack system:
Normal line clears (1 to 3 lines):
Sends (lines cleared -0.5) attack
Special line clears:
Spin sends (lines cleared x2) attack,
- B2B sends extra 1/1/2/4/8 for Spin Single/Double/Triple/Techrash/Techrash+
- B2B2B sends (lines cleared x0.5), and +1 extra blocking
- Minis reduces the attack to 25% (x0.25 multiplier)
Non-Spin Techrash/Techrash+ sends (lines cleared) attack,
- B2B sends 1 additional line
- B2B2B will have an attack boost of 50% and +1 extra blocking
Special clear:
A special clear refers to a situation where you perform a spin, Techrash (or clear more than four lines at a time), PC, or HPC. Special clears can elevate the B2B gauge.
Super clear:
A super clear refers to a situation where you perform a special clear when the B2B gauge is not empty.
Special line clears will the increase B2B gauge, making later special line clears have either a B2B or B2B2B bonus (see below)
Special clears (spins):
sends (lines cleared ×2) attack,
- B2B sends extra 1/1/2/4/8 for Spin Single/Double/Triple/Techrash/Techrash+
- B2B2B sends (lines cleared ×0.5), and +1 extra blocking
- Minis reduces the attack to 25% (×0.25 multiplier)
Combos: All damage above will be given a (combo x25%) bonus, or (combo x15%) for Single clear (capped at 12 combo),
+1 more attack for 3 Combo or more.
Special clears (Techrash/techrash+ without spins):
- B2B sends 1 additional line
- B2B2B will have an attack boost of 50% and +1 extra blocking
Non-special clears:
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.
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
- Attack +4, Extra Blocking +2
Perfect Clear (aka 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.
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 above, the damage value will be rounded down then sent
After calculating all 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.
Line cleared:
Special clears:
- Spin Single/Double/Triple/Techrash/Techrash+ + 50/100/180/800/1000 (×50% if Mini)
- Techrash/Techrash+ + 150/200/...
- PC when lines cleared in this round >4, +800
- HPC, +100
- A regular line clear -250
No lines cleared:
- Spin (0 lines) +20. Do note that the B2B gauge cannot exceed 800 using this method.
Score system:
The better you play, the higher the score.
@@ -54,37 +73,27 @@ Attack delay:
Minis will greatly increase the delay.
Countering:
When you send attacks, if there is garbage in queue,
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.
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.
A regular line clear -250
Spin Single/Double/Triple/Techrash/Techrash+ + 50/100/180/800/1000 (x50% if Mini)
Techrash/Techrash+ + 150/200/...
PC when lines cleared in this round >4, +800
Hemi-PC, +100
Spin (0 lines) +20. Do note that the B2B gauge cannot exceed 800 using this method.
When gauge is above 800, a drop without clearing lines decreases it by 40, but cannot drop below 800
Any extra 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 take effect faster, as well as rise faster.
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.
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)
4. Attackers: attack all players locking onto yourself.
Your attack will be sent to all of them. If you are not targetted, you attack a random player (not locking).
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.
Custom mode:
You can freely adjust most parameters (not including special effects of other game modes).
You can also draw a field to clear or make a template to build.
In build (puzzle) mode, you can toggle template display with Function key:
Cells with a X cannot have blocks;
Cells with an X cannot have blocks;
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.

View File

@@ -18,37 +18,10 @@
もし回転システムがキックテーブルから2番チェック (2nd check) を採用していなかった場合 +1点
- もしスピンの合計点が2点しかない場合は「ミニ」扱いになりますがS, Z, J, L, Tのいずれかで, ラインクリア時にそのミノを全て消せなかった場合のみ。
攻撃の火力システム:
通常のラインクリア (1から3ライン):
ラインを消した数から0.5引いた分 (四捨五入) を送ります
特殊なラインクリア:
スピンはラインを消した数の2倍分送ります
- B2Bは消し方に応じて追加します, 以下の通り:
- スピンシングル 1
- スピンダブル 1
- スピントリプル 2
- Techrash 4
- Techrash+ 8
- B2B2Bは (ラインクリア数×0.5) 分のラインを上乗せ、更に1ライン追加相殺します。
- ミニ判定の場合, その攻撃は元の0.25倍に下がります。
スピン無しのTechrash/Techrash+は消した分をそのまま送ります
- B2Bの場合は追加1ライン
- B2B2Bの場合は50の攻撃ブーストが掛かると更に1ライン分追加相殺します
特殊なラインクリアはB2Bゲージを増加させます, そのゲージは後のB2BやB2B2Bにボーナスが追加されます。 (以下参照)
コンボ (通称: 連):
全てのダメージに応じて (コンボ数×25) の上乗せ, あるいはシングルに対して (コンボ数×15%) 上乗せ (最大12コンボまで) ,
3コンボ以上で+1追加攻撃。
ヘマイパーフェクトクリア (Hemi Perfect Clear) (「ブロックが下に残ってる」状態でのパフェ。 Iミでクリアできるラインが一つであり, 残りのミノ全てはプレイヤーが置かなかったミノ (お邪魔ミノ) である事:
攻撃 +4 追加相殺 +2
パーフェクトクリア (通称: オールクリア):
8から16ライン送る (試合内でパフェを送る度に前のライン数と2ライン分上乗せ) もしくは 上の記述からのダメージと追加, なおさら多い,
更に 追加相殺 +2。
全てを計算した後に, ダメージ数を四捨五入して送ります。
Attack system:
[TODO]
Back to Back (B2B) gauge:
[TODO]
スコアシステム:
上手くプレイすれば, スコアも上がります。
@@ -65,26 +38,6 @@
追加相殺がまず使われ, その次に攻撃自体とお邪魔を1対1の割合でお邪魔の相殺に当てます。
使わなかった追加相殺は破棄され、残った攻撃のパワーは相手に送られます。
バックツーバック (B2B) ゲージ:
B2Bのゲージの範囲は0から1000あります。もしゲージの値が50以上なら特殊なラインクリアはB2Bと見なされ、800以上ならB2B2B (バックツーバックツーバック) 扱いとなります。
普通のラインクリアは -250
スピンシングル: +50
スピンダブル: +100
スピントリプル: +180
特殊なTechrash: +800
特殊なTechrash+: +1000
ミニ系は (上の記述通り×50%)
普通のTechrashは+150
Techrash+は+200
… と続きます。
このラウンド内の合計ライン数が4以上でパフェを取った場合, +800
ヘマイパフェ, +100
スピン (0ライン) は+20, 注意としてこの方法ではゲージを800以上は増やせません。
もしゲージが800以上ある場合, 毎回のラインクリア無しの落下で40減りますが、800未満にはなりません。
バトルロイヤルモード:
沢山のプレイヤーが同時にゲームをプレイします (対AIです, 本物の人ではありません)。
人数が減れば減るほど、ミノの落下速度は加速していき、お邪魔の効果が早く出る同時にせり上がる速度も上がります。

View File

@@ -15,21 +15,48 @@ spin判定:
--如果分数只有2,方块是SZJLT之一,并且没有把当前方块整个消除那么就是mini
攻击系统:
普通消除:
消<4行打出[消行数-0.5]攻击
特殊消除:
如果是spin,打出[2*消行数]攻击,
B2B攻击+[1/1/2/4/8(spin1~5)]
B3B攻击在B2B基础上+消行数*0.5,+1额外抵挡
mini减至25%
不是spin但是单次消>=4行,打出[消行数]攻击,
B2B攻击+1
B3B攻击+50%,+1额外抵挡
特殊消除会增加B2B点数,让之后的特殊消除获得B2B(B3B)增益(详细说明见下文)
连击:每次连击给予上述攻击[连击数*25%(上限12连)(如果只消一行就是15%)]的加成,>=3次时再额外加1攻击
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):伤害+4,额外抵挡+2
全消:全消伤害为8~16(本局内递增2),和上述其他伤害取大,然后+2额外抵挡
根据上述规则计算后,向下取整,攻击打出
概念说明[高级消除]:
spin/消四及以上,会受到B2B(点数>=50)或B3B(点数>800)加成
反之称为低级消除
概念说明[特殊消除]:
spin/消四及以上/pc/hpc,可以增加B2B点数
反之称为普通消除
高级消除(spin):
打出[2*消行数]攻击,然后
- B2B攻击+[1/1/2/4/8/14(spin1~6)]
- B3B攻击在B2B基础上+消行数*0.5,+1额外抵挡
- mini减至25%
高级消除(非spin但是消四及以上):
打出[消行数]攻击,然后
- B2B攻击+1
- B3B攻击+50%,+1额外抵挡
低级消除:
打出[消行数-0.5]攻击
连击:
(注:连击数为连续消除次数-1)
把上述高级消除/低级消除的攻击直接乘以"连击倍率", 公式为 "连击倍率"=[连击数(上限12)]*[消一行以上25%,只消一行15%]
如果消除>=3次时再额外加1攻击
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):
伤害+4,额外抵挡+2
全消:
伤害为8~16(本局内递增2),和上述其他伤害取大,+2额外抵挡
计算完成后,向下取整,攻击打出
back to back(B2B)点数说明:
B2B点数的范围在0~1000
落块后消行了:
特殊消除:
spin1~5:+[50/100/180/800/1000](mini变为原来50%)
消四/五/六:+[150/200/...]
本局内消行数>4时全消:+800
半全消:+100
普通消除:
-250
落块后没消行:
空spin:+20
点数在800以上会-40(不低于800)
分数系统:
分数计算系统非常复杂,而且随时可能更改所以不写在这里,并且计算只跟消除方式等信息有关,和模式设定无关
@@ -42,16 +69,6 @@ spin判定:
发动攻击时,若缓冲条有攻击则先用额外抵挡再用攻击力1:1抵消最先受到的攻击
没有用上的额外抵挡会被丢弃,最后剩下的攻击力会发送给对手
back to back(B2B)点数说明:
B2B点数的范围在0~1000,在点数>=50时进行特殊消除为B2B,>800时特殊消除为B3B
普通消除:-250
spin1~5:+[50/100/180/800/1000](mini变为原来50%)
消四/五/六:+[150/200/...]
本局内消行数>4时全消:+800
半全消:+100
空spin:+20,此法得到的点数不能超过800
当点数在800以上时空放一块-40(不低于800)
混战模式说明:
许多玩家同时进行一局游戏(对手都是AI,不是真人).
随着玩家数量的减少,方块下落/垃圾生效速度/垃圾升起速度都会增加.

View File

@@ -1,13 +1,16 @@
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_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=-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='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"},
@@ -17,7 +20,7 @@ return{
{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='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 +42,51 @@ return{
{name='round_l', x=-1200, y=-800, size=40,shape=1,icon="round", unlock={'round_u'}},
{name='round_u', x=-1400, y=-800, size=40,shape=1,icon="round"},
{name='big_n', x=-400, y=-400, size=40,shape=1,icon="big", unlock={'big_h'}},
{name='big_h', x=-600, y=-400, size=40,shape=1,icon="big",},
{name='master_n', x=0, y=-1000, size=40,shape=1,icon="master", unlock={'master_h','strategy_h'}},
{name='master_h', x=0, y=-1200, size=40,shape=3,icon="master", unlock={'master_final','master_ex','master_ph','master_m','strategy_u'}},
{name='master_m', x=150, y=-1320, size=30,shape=3,icon="master"},
{name='master_final', x=0, y=-1600, size=40,shape=2,icon="master"},
{name='master_ph', x=-150, y=-1500, size=40,shape=2,icon="master"},
{name='master_ex', x=150, y=-1500, size=40,shape=2,icon="master_ex"},
{name='master_h', x=0, y=-1200, size=40,shape=3,icon="master", unlock={'master_final','master_ex','master_ph','master_m','master_g','strategy_u'}},
{name='master_m', x=100, y=-1550, size=40,shape=2,icon="master"},
{name='master_final', x=-100, y=-1550, size=40,shape=2,icon="master"},
{name='master_ph', x=-170, y=-1450, size=40,shape=2,icon="master"},
{name='master_g', x=0, y=-1600, size=40,shape=3,icon="master"},
{name='master_ex', x=170, y=-1450, size=40,shape=2,icon="master_ex"},
{name='strategy_e', x=-150, y=-1030, size=40,shape=3,icon="master"},
{name='strategy_h', x=-200, y=-1160, size=35,shape=3,icon="master"},
{name='strategy_u', x=-250, y=-1290, size=30,shape=2,icon="master"},
{name='strategy_e', x=-150, y=-1020, size=40,shape=3,icon="master", unlock={'strategy_e_plus'}},
{name='strategy_h', x=-150, y=-1150, size=35,shape=3,icon="master", unlock={'strategy_h_plus'}},
{name='strategy_u', x=-150, y=-1280, size=30,shape=2,icon="master", unlock={'strategy_u_plus'}},
{name='strategy_e_plus',x=-300, y=-1120, size=40,shape=3,icon="master"},
{name='strategy_h_plus',x=-300, y=-1250, size=35,shape=3,icon="master"},
{name='strategy_u_plus',x=-300, y=-1380, size=30,shape=2,icon="master"},
{name='blind_e', x=150, y=-700, size=40,shape=1,icon="hidden", unlock={'blind_n'}},
{name='blind_e', x=150, y=-700, size=40,shape=1,icon="hidden", unlock={'blind_n','master_instinct'}},
{name='blind_n', x=150, y=-800, size=40,shape=1,icon="hidden", unlock={'blind_h'}},
{name='blind_h', x=150, y=-900, size=35,shape=1,icon="hidden", unlock={'blind_l'}},
{name='blind_l', x=150, y=-1000, size=35,shape=3,icon="hidden2", unlock={'blind_u'}},
{name='blind_u', x=150, y=-1100, size=30,shape=3,icon="hidden2", unlock={'blind_wtf'}},
{name='blind_l', x=150, y=-1000, size=35,shape=3,icon="hidden2", unlock={'blind_u'}},
{name='blind_u', x=150, y=-1100, size=30,shape=3,icon="hidden2", unlock={'blind_wtf'}},
{name='blind_wtf', x=150, y=-1200, size=25,shape=2,icon="hidden2"},
{name='master_instinct',x=285, y=-835, size=40,shape=3,icon="hidden"},
{name='classic_e', x=-200, y=-850, size=40,shape=1,icon="classic", unlock={'classic_h'}},
{name='classic_h', x=-300, y=-950, size=35,shape=2,icon="classic", unlock={'classic_u'}},
{name='classic_u', x=-400, y=-1050, size=30,shape=2,icon="classic"},
{name='classic_h', x=-300, y=-950, size=40,shape=3,icon="classic", unlock={'classic_l'}},
{name='classic_l', x=-400, y=-1050, size=35,shape=3,icon="classic", unlock={'classic_u'}},
{name='classic_u', x=-500, y=-1150, size=30,shape=2,icon="classic"},
{name='survivor_e', x=300, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_n'}},
{name='survivor_n', x=500, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_h','attacker_h','defender_n','dig_h'}},
{name='survivor_h', x=700, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_l'}},
{name='survivor_l', x=900, y=-600, size=40,shape=3,icon="survivor", unlock={'survivor_u'}},
{name='survivor_u', x=1100, y=-600, size=40,shape=2,icon="survivor"},
{name='survivor_e', x=450, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_n'}},
{name='survivor_n', x=650, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_h','attacker_h','defender_n','dig_h'}},
{name='survivor_h', x=850, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_l'}},
{name='survivor_l', x=1050, y=-600, size=40,shape=3,icon="survivor", unlock={'survivor_u'}},
{name='survivor_u', x=1250, y=-600, size=40,shape=2,icon="survivor"},
{name='attacker_h', x=300, y=-800, size=40,shape=1,icon="attack", unlock={'attacker_u'}},
{name='attacker_u', x=300, y=-1000, size=40,shape=1,icon="attack"},
{name='attacker_h', x=450, y=-800, size=40,shape=1,icon="attack", unlock={'attacker_u'}},
{name='attacker_u', x=450, y=-1000, size=40,shape=1,icon="attack"},
{name='defender_n', x=500, y=-800, size=40,shape=1,icon="defend", unlock={'defender_l'}},
{name='defender_l', x=500, y=-1000, size=40,shape=1,icon="defend"},
{name='defender_n', x=650, y=-800, size=40,shape=1,icon="defend", unlock={'defender_l'}},
{name='defender_l', x=650, y=-1000, size=40,shape=1,icon="defend"},
{name='dig_h', x=700, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
{name='dig_u', x=700, y=-1000, size=40,shape=1,icon="dig"},
{name='dig_h', x=850, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
{name='dig_u', x=850, y=-1000, size=40,shape=1,icon="dig"},
{name='clearRush', x=400, y=-400, size=50,shape=1,icon="bigbang", unlock={'c4wtrain_n','pctrain_n','sprintAtk'}},
{name='c4wtrain_n', x=700, y=-400, size=40,shape=1,icon="pc", unlock={'c4wtrain_l'}},

View File

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

View File

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

23
parts/modes/classic_l.lua Normal file
View File

@@ -0,0 +1,23 @@
return{
env={
center=0,ghost=0,
smooth=false,
face={0,0,2,2,2,0,0},
eventSet='classic_l',
bg='rgb',bgm='1980s',
},
slowMark=true,
score=function(P)return{P.stat.score,P.stat.row}end,
scoreDisp=function(D)return D[1].." "..D[2].." Lines"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
return
L>=200 and 5 or
L>=140 and 4 or
L>=100 and 3 or
L>=60 and 2 or
L>=30 and 1 or
L>=1 and 0
end,
}

View File

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

View File

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

View File

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

View File

@@ -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
@@ -217,11 +216,11 @@ function Player:_deepDrop()
end
end
function Player:act_moveLeft(auto)
self.movDir=-1
if not self.control then return end
if not auto then
self.ctrlCount=self.ctrlCount+1
end
self.movDir=-1
if self.cur then
if self.cur and not self:ifoverlap(self.cur.bk,self.curX-1,self.curY)then
self:createMoveFX('left')
@@ -239,11 +238,11 @@ function Player:act_moveLeft(auto)
end
end
function Player:act_moveRight(auto)
self.movDir=1
if not self.control then return end
if not auto then
self.ctrlCount=self.ctrlCount+1
end
self.movDir=1
if self.cur then
if self.cur and not self:ifoverlap(self.cur.bk,self.curX+1,self.curY)then
self:createMoveFX('right')
@@ -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,36 +1800,23 @@ do
end
else
self:showText(text.clear[cc],0,-30,70,'stretch')
yomi = text.clear[cc]..yomi
sendTime=60
atk=2*cc-4
end
self.b2b=self.b2b+cc*50-50
piece.special=true
else
piece.special=false
end
if self.sound and(cc~=1 or dospin)then
VOC.play(clearVoice[cc],CHN)
end
--PC/HPC check
if clear and cc>=#C.bk then
if CY==1 then
piece.pc=true
piece.special=true
elseif cc>1 or self.field[#self.field].garbage then
piece.hpc=true
piece.special=true
end
end
--Normal clear,reduce B2B point
if not piece.special then
self.b2b=max(self.b2b-250,0)
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]
piece.special=false
end
if self.sound and(cc~=1 or dospin)then
VOC.play(clearVoice[cc],CHN)
end
--Combo bonus
@@ -1832,38 +1827,49 @@ 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
--PC/HPC effect
if piece.pc then
self:showText(text.PC,0,-80,50,'flicker')
atk=max(atk,min(8+Stat.pc*2,16))
exblock=exblock+2
sendTime=sendTime+120
if Stat.row+cc>4 then
self.b2b=self.b2b+800
cscore=cscore+300*min(6+Stat.pc,10)
else
--PC/HPC
if clear and cc>=#C.bk then
if CY==1 then
piece.pc=true
piece.special=true
self:showText(text.PC,0,-80,50,'flicker')
atk=max(atk,min(8+Stat.pc*2,16))
exblock=exblock+2
sendTime=sendTime+120
if Stat.row+cc>4 then
self.b2b=self.b2b+800
cscore=cscore+300*min(6+Stat.pc,10)
else
cscore=cscore+626
end
Stat.pc=Stat.pc+1
if self.sound then
SFX.play('pc')
VOC.play('perfect_clear',CHN)
end
elseif cc>1 or self.field[#self.field].garbage then
piece.hpc=true
piece.special=true
self:showText(text.HPC,0,-80,50,'fly')
atk=atk+4
exblock=exblock+2
sendTime=sendTime+60
self.b2b=self.b2b+100
cscore=cscore+626
Stat.hpc=Stat.hpc+1
if self.sound then
SFX.play('pc')
VOC.play('half_clear',CHN)
end
end
Stat.pc=Stat.pc+1
if self.sound then
SFX.play('pc')
VOC.play('perfect_clear',CHN)
end
elseif piece.hpc then
self:showText(text.HPC,0,-80,50,'fly')
atk=atk+4
exblock=exblock+2
sendTime=sendTime+60
self.b2b=self.b2b+100
cscore=cscore+626
Stat.hpc=Stat.hpc+1
if self.sound then
SFX.play('pc')
VOC.play('half_clear',CHN)
end
end
if not piece.special then
self.b2b=max(self.b2b-250,0)
end
if self.b2b>1000 then
@@ -2013,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

View File

@@ -12,7 +12,7 @@ local function b2(i)
s=(i%2)..s
i=int(i/2)
end
return s
return '0b'..s
end
local function b8(i)
if i==0 then return 0 end
@@ -21,7 +21,7 @@ local function b8(i)
s=(i%8)..s
i=int(i/8)
end
return s
return '0o'..s
end
local function b16(i)
if i==0 then return 0 end
@@ -30,7 +30,7 @@ local function b16(i)
s=char((i%16<10 and 48 or 55)+i%16)..s
i=int(i/16)
end
return s
return '0x'..s
end
local levels={
@@ -208,7 +208,7 @@ function scene.draw()
FONT.set(35)
GC.mStr("["..level.."]",640,30)
FONT.set(100)
FONT.set(80)
if type(question)=='table'then gc.setColor(1,1,1)end
GC.mStr(question,640,60)

View File

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

View File

@@ -199,7 +199,8 @@ local scene={}
function scene.sceneInit()
reset()
BG.set('gray')
BG.set('fixColor')
BG.send(.26,.26,.26)
BGM.play(bgm)
end

View File

@@ -7,13 +7,7 @@ local gc_print=gc.print
local max,min=math.max,math.min
local ins,rem=table.insert,table.remove
local colorName={
m={'','','','','','','','',''},
p={'','','','','','','','',''},
s={'1','2','3','4','5','6','7','8','9'},
}
local deck0={}
local cardText={}
for i=1,9 do
for _=1,4 do
ins(deck0,'m'..i)
@@ -21,9 +15,6 @@ for i=1,9 do
ins(deck0,'s'..i)
if i<=7 then ins(deck0,'z'..i)end
end
cardText['m'..i]={COLOR.lF,colorName.m[i]}
cardText['p'..i]={COLOR.lB,colorName.p[i]}
cardText['s'..i]={COLOR.lG,colorName.s[i]}
end
-- deck0[TABLE.find(deck0,'m5')]='m0'
-- deck0[TABLE.find(deck0,'p5')]='p0'
@@ -32,13 +23,42 @@ end
-- cardText['5p+']={COLOR.R,'⑤'}
-- cardText['5s+']={COLOR.R,'5'}
cardText['z1']={COLOR.Z,''}
cardText['z2']={COLOR.Z,''}
cardText['z3']={COLOR.Z,'西'}
cardText['z4']={COLOR.Z,''}
cardText['z5']={COLOR.Z,' '}
cardText['z6']={COLOR.G,''}
cardText['z7']={COLOR.R,''}
local cardText={
m1={COLOR.D,CHAR.mahjong.m1Base,COLOR.R,CHAR.mahjong.mComb},
m2={COLOR.D,CHAR.mahjong.m2Base,COLOR.R,CHAR.mahjong.mComb},
m3={COLOR.D,CHAR.mahjong.m3Base,COLOR.R,CHAR.mahjong.mComb},
m4={COLOR.D,CHAR.mahjong.m4Base,COLOR.R,CHAR.mahjong.mComb},
m5={COLOR.D,CHAR.mahjong.m5Base,COLOR.R,CHAR.mahjong.mComb},
m6={COLOR.D,CHAR.mahjong.m6Base,COLOR.R,CHAR.mahjong.mComb},
m7={COLOR.D,CHAR.mahjong.m7Base,COLOR.R,CHAR.mahjong.mComb},
m8={COLOR.D,CHAR.mahjong.m8Base,COLOR.R,CHAR.mahjong.mComb},
m9={COLOR.D,CHAR.mahjong.m9Base,COLOR.R,CHAR.mahjong.mComb},
p1={COLOR.D,CHAR.mahjong.p1},
p2={COLOR.D,CHAR.mahjong.p2Base,COLOR.D,CHAR.mahjong.p2Comb},
p3={COLOR.D,CHAR.mahjong.p3Base,COLOR.R,CHAR.mahjong.p3Comb1,COLOR.D,CHAR.mahjong.p3Comb2},
p4={COLOR.D,CHAR.mahjong.p4Base,COLOR.D,CHAR.mahjong.p4Comb},
p5={COLOR.D,CHAR.mahjong.p5Base,COLOR.D,CHAR.mahjong.p5Comb1,COLOR.R,CHAR.mahjong.p5Comb2},
p6={COLOR.D,CHAR.mahjong.p6Base,COLOR.R,CHAR.mahjong.p6Comb},
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.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},
s5={COLOR.G,CHAR.mahjong.s5Base,COLOR.R,CHAR.mahjong.s5Comb},
s6={COLOR.G,CHAR.mahjong.s6},
s7={COLOR.G,CHAR.mahjong.s7Base,COLOR.R,CHAR.mahjong.s7Comb},
s8={COLOR.G,CHAR.mahjong.s8},
s9={COLOR.G,CHAR.mahjong.s9Base,COLOR.R,CHAR.mahjong.s9Comb},
z1={COLOR.D,CHAR.mahjong.ton},
z2={COLOR.D,CHAR.mahjong.nan},
z3={COLOR.D,CHAR.mahjong.sha},
z4={COLOR.D,CHAR.mahjong.pe},
z5={COLOR.D,CHAR.mahjong.haku},
z6={COLOR.G,CHAR.mahjong.hatsu},
z7={COLOR.R,CHAR.mahjong.chun},
}for _,v in next,cardText do ins(v,COLOR.D)ins(v,CHAR.mahjong.frameComb) end
local deck,hand,pool
local selected
@@ -48,13 +68,13 @@ local function _getPoolCardArea(i)
local col=i-row*10
return
240+70*col,45+95*row,
65,90
60,84
end
local function _getHandCardArea(i)
return
20+70*i+(i==14 and 30 or 0),480,
65,90
60,84
end
local function _newGame()
@@ -67,7 +87,7 @@ end
local function _checkWin()
if #hand==14 then
--???
MES.new('info',"Coming soon!")
end
end
@@ -86,6 +106,8 @@ end
local scene={}
function scene.sceneInit()
BG.set('fixColor')
BG.send(.26,.62,.26)
_newGame()
selected=false
end
@@ -132,42 +154,44 @@ end
function scene.draw()
setFont(35)
gc_setColor(COLOR.Z)
gc_print(': '..#deck,1060,30)
gc_setColor(COLOR.D)
gc_print(''..#deck,1060,30)
gc_setLineWidth(4)
setFont(50)
setFont(85)
for i=1,#hand do
local c=hand[i]
local x,y,w,h=_getHandCardArea(i)
if i==selected then
gc_translate(0,-10)
gc_setColor(1,1,1,.4)
gc_rectangle('fill',x,y,w,h,5)
end
gc_setColor(COLOR.Z)
gc_rectangle('line',x,y,w,h,5)
gc_rectangle('fill',x,y,w,h,12)
if i==selected then
gc_setColor(1,1,1,.4)
gc_rectangle('fill',x,y,w,h,12)
end
gc_setColor(1,1,1)
mStr(cardText[c],x+w/2,y+10)
mStr(cardText[c],x+w/2,y-17)
if i==selected then gc_translate(0,10)end
end
for i=1,#pool do
local c=pool[i]
local x,y,w,h=_getPoolCardArea(i)
if selected and hand[selected]==c then
gc_setColor(1,1,1,.4)
gc_rectangle('fill',x,y,w,h,5)
end
gc_setColor(COLOR.Z)
gc_rectangle('line',x,y,w,h,5)
gc_rectangle('fill',x,y,w,h,12)
if selected and hand[selected]==c then
gc_setColor(1,.2,.2,.3)
gc_rectangle('fill',x,y,w,h,12)
end
gc_setColor(1,1,1)
mStr(cardText[c],x+w/2,y+10)
mStr(cardText[c],x+w/2,y-17)
end
end
scene.widgetList={
WIDGET.newButton{name='reset',x=160, y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
WIDGET.newKey{name="hu", x=1150,y=370,w=140,h=80,font=50,sound=false,fText='自摸',code=pressKey'return'},
WIDGET.newButton{name='reset',x=160, y=100,w=180,h=100,color='lR',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
WIDGET.newKey{name="hu", x=1150,y=370,w=140,h=80,font=45,sound=false,fText='自摸',code=pressKey'return'},
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -12,7 +12,8 @@ function scene.sceneInit()
lastKey=nil
speed=0
keyTime={}for i=1,40 do keyTime[i]=-1e99 end
BG.set('gray')
BG.set('fixColor')
BG.send(.26,.26,.26)
BGM.play('push')
end

View File

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

View File

@@ -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()

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