Compare commits

...

36 Commits

Author SHA1 Message Date
MrZ626
5f7a3fd53f 版本推进 2021-11-18 19:54:31 +08:00
MrZ626
8e3e598753 词典添加cambridge词条(翻译自tetris wiki) 2021-11-18 19:52:42 +08:00
MrZ626
2a0a0f60f8 策略堆叠的das和arr参数移到规则包 2021-11-18 19:43:18 +08:00
MrZ626
6b7d1fdf9f 策略堆叠模式添加到地图 2021-11-18 19:41:27 +08:00
MrZ626
65199a40f7 修复40行效率左侧信息颜色问题 2021-11-18 19:27:27 +08:00
MrZ626
f9082a8800 整理代码 2021-11-18 19:16:06 +08:00
NOT_A_ROBOT
1670c6e7d6 Add strategy modes (#468)
* Add strategy mode
2021-11-18 19:08:46 +08:00
NOT_A_ROBOT
ff2073ed4d fix numpadenter on console (#469)
made numpadenter do the same thing as enter on console
2021-11-18 19:08:46 +08:00
MrZ626
f14aaac635 微调staff页面 close #470 2021-11-18 19:08:46 +08:00
MrZ626
c709fa622f 修正hold模式没有英文文本 2021-11-18 19:08:45 +08:00
MrZ626
c752556bf3 微调pc联系模式左侧信息位置
继续推进大爆炸模式框架
2021-11-18 03:54:42 +08:00
MrZ626
e7d9703fcc 修复向玩家场地里塞入垃圾行时如果不存在当前方块会报错 2021-11-18 03:54:42 +08:00
C29H25N3O5
1ed52a84b0 增加半隐和全隐的英文词条 2021-11-17 11:50:04 -06:00
C29H25N3O5
4fdb278751 微调dmg背景图片 2021-11-17 11:29:41 -06:00
MrZ626
8318803923 修改一首bgm名称和一个赞助id 2021-11-18 01:07:27 +08:00
MrZ626
42de7e3676 纠正一个帮助开发的网友id 2021-11-17 22:14:40 +08:00
MrZ626
3efa646ee3 再增加堆积模式的窒息延迟 2021-11-17 22:11:50 +08:00
MrZ626
b414c2ab42 版本推进 2021-11-17 22:08:00 +08:00
MrZ626
205dea3db7 TRS的S/Z添加四个踢墙防止在一些地方卡死 2021-11-17 21:49:37 +08:00
MrZ626
6cac688555 完善提前移动词条 2021-11-17 20:48:40 +08:00
MrZ626
09b1b08c1e 堆积模式添加8f窒息延迟 2021-11-17 20:29:42 +08:00
MrZ626
b61a1270e9 生成位置预览开启后hold的生成位置也可见 2021-11-17 16:47:25 +08:00
MrZ626
b85cee7e1f 修复机翻语言超级消除没有行数显示 close #462 2021-11-17 16:30:00 +08:00
MrZ626
8e674e3e29 版本推进 2021-11-17 16:25:38 +08:00
MrZ626
aa2812c874 大爆炸模式框架完成,等待具体关卡生成算法 2021-11-17 16:24:18 +08:00
MrZ626
6f282431c4 pc训练的序列模式和旋转系统参数放入规则包 2021-11-17 16:01:09 +08:00
MrZ626
470e54cdd0 两个pc练习模式添加胜利条件,不再无尽
略微降低pc练习-普通的X评级标准
2021-11-17 16:01:08 +08:00
MrZ626
da3ef1c2a6 pc训练代码整理,开局就能看到关卡并且没有提前硬降不会死的bug了 2021-11-17 16:01:08 +08:00
MrZ626
9efe0e62d5 词典添加半隐和全隐词条(英文待翻译) 2021-11-17 16:01:08 +08:00
MrZ626
7038f81b46 调整一些tip
整理代码
2021-11-17 10:59:38 +08:00
MrZ626
de972a60df blackhole背景改名blockhole 2021-11-17 10:59:34 +08:00
MrZ626
6a87787d6f 微调github issue模板 2021-11-17 10:59:30 +08:00
MrZ626
6dc9a4b507 安全,安全!(嗯嗯嗯 2021-11-17 10:59:27 +08:00
MrZ626
5b7c888d57 修正经典模式显示的速度等级 2021-11-17 10:59:01 +08:00
MrZ626
a1f761b83e 修正一处拼写错误 2021-11-17 10:58:51 +08:00
C₂₉H₂₅N₃O₅
c40a6bfaa0 换行 (#463) 2021-11-16 14:28:30 -06:00
50 changed files with 455 additions and 164 deletions

View File

@@ -2,8 +2,7 @@
name: Bug report (bluescreen crash) Bug报告 (蓝屏报错)
about: Create a report of problems which made the crash with a bluescreen
---
Screenshot with crash information: (delete this line before submitting)
*Image Here*
Screenshot with crash information (*Image(s) Here*):
If you can reproduce it, write the steps here. If you can't, try to describe the exactly time the game crash, like pressing which key or which button: (delete this line before submitting)
*Details Here*
If you can reproduce it, write the steps here. If you can't, try to describe the exactly time the game crash, like pressing which key or which button (*Details Here*)

View File

@@ -2,8 +2,7 @@
name: Bug report (unintended behaviors) Bug报告 (奇怪的现象)
about: Create a report of unintended behaviors
---
Screenshot with unintended behaviors: (delete this line before submitting)
*Image(s) Here*
Screenshot with unintended behaviors (*Image(s) Here*):
If you can reproduce it, write the steps here. If you can't, try to describe the exactly time the game crash, like pressing which key or which button: (delete this line before submitting)
*Details Here*
If you can reproduce it, write the steps here. If you can't, try to describe the exactly time the game crash, like pressing which key or which button (*Details Here*):

Binary file not shown.

View File

@@ -129,10 +129,10 @@ do
[10]={'+0+0','+1+0','+1-1','+0+2','+1-2','+1-2'},
[03]={'+0+0','+1+0','+1+1','+0-2','+1-1','+1-2'},
[30]={'+0+0','-1+0','-1-1','+0+2','-1+2','+0-1'},
[12]={'+0+0','+1+0','+1-1','+0+2','+1+2'},
[21]={'+0+0','-1+0','-1+1','+0-2','-1-2'},
[32]={'+0+0','-1+0','-1-1','+0+2','-1+2'},
[23]={'+0+0','+1+0','+1+1','+0-2','+1-2'},
[12]={'+0+0','+1+0','+1-1','+0+2','+1+2','+1+1'},
[21]={'+0+0','-1+0','-1+1','+0-2','-1-2','-1-1'},
[32]={'+0+0','-1+0','-1-1','+0+2','-1+2','+0-1'},
[23]={'+0+0','+1+0','+1+1','+0-2','+1-2','+0+1'},
[02]={'+0+0','+1+0','-1+0','+0-1','+0+1'},
[20]={'+0+0','-1+0','+1+0','+0+1','+0-1'},
[13]={'+0+0','+0-1','+0+1','+0-2'},

View File

@@ -1,4 +1,4 @@
--Blackhole
--blockhole
local gc=love.graphics
local gc_clear,gc_replaceTransform=gc.clear,gc.replaceTransform
local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth
@@ -51,7 +51,7 @@ function back.draw()
gc_draw(S.texture,S.d*cos(S.ang),S.d*sin(S.ang),S.rotate,S.size*.026,nil,15,15)
end
--Blackhole
--blockhole
gc_setColor(.07,.07,.07)
gc_circle('fill',0,0,157)
gc_setLineWidth(6)

View File

@@ -0,0 +1,35 @@
local function task_newBoard(P,init)
local F,L={},{1}
--TODO
P:pushNextList(L)
P.control=false
if not init then for _=1,26 do YIELD()end end
P.control=true
P.gameEnv.heightLimit=#F
P:pushLineList(F)
end
local function _check(P)
P.gameEnv.heightLimit=P.gameEnv.heightLimit-P.lastPiece.row
if P.gameEnv.heightLimit==0 then
P.modeData.stage=P.modeData.stage+1
if P.modeData.stage>=100 then
P:win('finish')
else
P:newTask(task_newBoard)
end
end
end
return{
sequence='none',
RS="SRS",
pushSpeed=5,
mesDisp=function(P)
setFont(60)
mStr(P.modeData.stage,63,280)
mText(TEXTOBJ.wave,63,350)
end,
hook_drop=_check,
task=function(P)task_newBoard(P,true)P.fieldBeneath=0 end,--Just run one time at first to start first level
}

View File

@@ -16,7 +16,7 @@ return{
mesDisp=function(P)
setFont(75)
local r=P.modeData.target/10
mStr(r<10 and 9 or r<30 and r or("%02x"):format(r*10-300),63,210)
mStr(r<11 and 18 or r<22 and r+8 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

View File

@@ -16,7 +16,7 @@ return{
mesDisp=function(P)
setFont(75)
local r=P.modeData.target/10
mStr(r<10 and 9 or r<30 and r or("%02x"):format(r*10-300),63,210)
mStr(r==1 and 29 or("%02x"):format(r*10-20),63,210)
mText(TEXTOBJ.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
if P.modeData.drought>7 then

View File

@@ -1,51 +1,54 @@
local pc_drop={50,45,40,35,30,26,22,18,15,12}
local pc_lock={55,50,46,42,39,36,33,31,29,27}
local pc_lock={55,50,46,42,40,38,36,34,32,30}
local pc_fall={18,16,14,12,10,9,8,7,6,5}
local PCbase=require"parts.modes.PCbase"
local PClist=require"parts.modes.PClist"
local function task_PC(P)
if P.frameRun>180 then
P.control=false
for _=1,26 do YIELD()end
P.control=true
end
local base=PCbase[P.modeData.type]
P:pushLineList(base[P.holeRND:random(#base)],P.modeData.symmetry)
local difficulty=P.stat.pc<10 and 4 or 5
local L=PClist[difficulty][P.holeRND:random(#PClist[difficulty])]
local symmetry=P.holeRND:random()>.5
P:pushNextList(L,symmetry)
P.control=false
if P.frameRun>180 then for _=1,26 do YIELD()end end
P.control=true
local base=PCbase[difficulty]
P:pushLineList(base[P.holeRND:random(#base)],symmetry)
end
local function check(P)
local f=P.field
if #f>0 then
if #f+P.stat.row%4>4 then
local function _check(P)
if #P.field>0 then
if #P.field+P.stat.row%4>4 then
P:lose()
end
else
local type=P.stat.pc<10 and 4 or 5
local L=PClist[type][P.holeRND:random(#PClist[type])]
local symmetry=P.holeRND:random()>.5
P.modeData.type=type
P.modeData.symmetry=symmetry
P:pushNextList(L,symmetry)
P.modeData.counter=P.stat.piece==0 and 20 or 0
P:newTask(task_PC)
if P.stat.pc>=100 then
P:win('finish')
else
P:newTask(task_PC)
if P.frameRun<180 then P.fieldBeneath=0 end
local s=P.stat.pc*.25
if math.floor(s)==s and s>0 then
P.gameEnv.drop=pc_drop[s]or 10
P.gameEnv.lock=pc_lock[s]or 25
P.gameEnv.fall=pc_fall[s]or 4
if s==10 then
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
if P.stat.pc%4==0 and P.stat.pc>0 and P.stat.pc<=40 then
local s=P.stat.pc/4
P.gameEnv.drop=pc_drop[s]or 10
P.gameEnv.lock=pc_lock[s]or 25
P.gameEnv.fall=pc_fall[s]or 4
if s==10 then
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
end
end
end
end
end
return{
sequence='none',
RS="SRS",
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,340)
mText(TEXTOBJ.pc,63,410)
mStr(P.stat.pc,63,260)
mText(TEXTOBJ.pc,63,330)
end,
hook_drop=check,
task=check,
hook_drop=_check,
task=_check,--Just run one time at first to start first level
}

View File

@@ -8,35 +8,40 @@ local PCtype={
1,2,3,
}
local function task_PC(P)
local difficulty=PCtype[P.stat.pc+1]or 3
local L=PClist[difficulty][P.holeRND:random(#PClist[difficulty])]
local symmetry=P.holeRND:random()>.5
P:pushNextList(L,symmetry)
P.control=false
for _=1,26 do YIELD()end
if P.frameRun>180 then for _=1,26 do YIELD()end end
P.control=true
local base=PCbase[P.modeData.type]
P:pushLineList(base[P.holeRND:random(#base)],P.modeData.symmetry)
local base=PCbase[difficulty]
P:pushLineList(base[P.holeRND:random(#base)],symmetry)
end
local function check(P)
local r=P.field
if #r>0 then
if #r+P.stat.row%4>4 then
local function _check(P)
if #P.field>0 then
if #P.field+P.stat.row%4>4 then
P:lose()
end
else
local type=PCtype[P.stat.pc+1]or 3
local L=PClist[type][P.holeRND:random(#PClist[type])]
local symmetry=P.holeRND:random()>.5
P.modeData.type=type
P.modeData.symmetry=symmetry
P:pushNextList(L,symmetry)
P.modeData.counter=P.stat.piece==0 and 20 or 0
P:newTask(task_PC)
if P.stat.pc>=60 then
P:win('finish')
else
P:newTask(task_PC)
if P.frameRun<180 then P.fieldBeneath=0 end
end
end
end
return{
sequence='none',
RS="SRS",
mesDisp=function(P)
setFont(60)
mStr(P.stat.pc,63,340)
mText(TEXTOBJ.pc,63,410)
mStr(P.stat.pc,63,260)
mText(TEXTOBJ.pc,63,330)
end,
hook_drop=check,
task=check,
hook_drop=_check,
task=_check,--Just run one time at first to start first level
}

View File

@@ -1,15 +1,16 @@
return{
mesDisp=function(P)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,170)
PLY.draw.drawTargetLine(P,r)
setFont(45)
mStr(("%.1f"):format(P.stat.atk),63,270)
mText(TEXTOBJ.atk,63,323)
mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,370)
mText(TEXTOBJ.eff,63,423)
setFont(55)
local r=40-P.stat.row
if r<0 then r=0 end
mStr(r,63,170)
PLY.draw.drawTargetLine(P,r)
end,
hook_drop=function(P)
if P.stat.row>=40 then

View File

@@ -0,0 +1,30 @@
local waitSpeed={60,59,58,57,56,55,54,52,50,48,46,44,42,40,38,36,34,32,30}
return
{
das=5,arr=1,
drop=0,lock=7,
wait=60,fall=0,
freshLimit=12,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
task=function(P)
P.modeData.target=10
end,
hook_drop=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
if P.modeData.target==100 then
P.modeData.lock=6
end
P.gameEnv.wait=waitSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end
}

View File

@@ -0,0 +1,30 @@
local waitSpeed={30,29,28,27,26,25,24,23,22,21,20,19,18,18,17,17,16,16,15}
return
{
das=4,arr=1,
drop=0,lock=6,
wait=30,fall=0,
freshLimit=12,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
task=function(P)
P.modeData.target=10
end,
hook_drop=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
if P.modeData.target==100 then
P.modeData.lock=5
end
P.gameEnv.wait=waitSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end
}

View File

@@ -0,0 +1,30 @@
local waitSpeed={15,15,14,14,13,13,12,12,11,11,10,10,9,9,8,8,7,7,7}
return
{
das=3,arr=1,
drop=0,lock=5,
wait=15,fall=0,
freshLimit=12,
mesDisp=function(P)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
task=function(P)
P.modeData.target=10
end,
hook_drop=function(P)
if P.stat.row>=P.modeData.target then
if P.modeData.target==200 then
P:win('finish')
else
if P.modeData.target==100 then
P.modeData.lock=4
end
P.gameEnv.wait=waitSpeed[P.modeData.target/10]
P.modeData.target=P.modeData.target+10
SFX.play('reach')
end
end
end
}

View File

@@ -80,11 +80,11 @@ return{
"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",
},
{"P\97\116\114\111\110",
"p\97\116\114\111\110 support",
{"P\97\116\114\101\111\110",
"p\97\116\114\101\111\110 support",
"org",
"Techmino's P\97\116\114\111\110 Page",
FNSF and"https://www.youtube.com/watch?v=DVl0IiUKX_g"or"https://www.p\97\116\114\111\110.com/techmino",
"Techmino's P\97\116\114\101\111\110 Page",
FNSF and"https://www.youtube.com/watch?v=DVl0IiUKX_g"or"https://www.p\97\116\114\101\111\110.com/techmino",
},
--Games
{"TTT",
@@ -195,6 +195,11 @@ return{
"game",
"*Windows | Single-player*\nA game with all modes from TGM which you can use to practice. Has better controls than actual TGM. The world rule is slightly different, however (eg, instant-lock soft drops, and slightly different kick tables)",
},
{"Cambridge",
"cambridge",
"game",
"*Windows, macOS, Linux | Single-player*\nA Lua-based game engine dedicated to creating a robust, easily customizable platform for creating new, custom game modes. It was originally made by Joe Zeng, and starting with version 0.1.5 on October 8, 2020, Milla took over development of the game.\n--Tetris Wiki",
},
{"Tetris99",
"t99 tetris99",
@@ -540,7 +545,7 @@ return{
{"IMS",
"ims initialmovesystem",
"term",
"*Techmino-exclusive*\nInitial Movement System\nHolding a sideways movement key during spawn delay to spawn the piece one block off to the side. Sometimes prevents death.",
"*Techmino-exclusive*\nInitial Movement System\nHolding a sideways movement key during spawn delay to spawn the piece one block off to the side. Sometimes prevents death.\nNote that DAS need to be full charged when new piece appear",
},
{"Next",
"nextpreview",
@@ -701,7 +706,7 @@ return{
{"Death ARE",
"death are die delay",
"term",
"(Techmino exclusive) When the spawn location of the next piece is blocked by an existing block in the field, a delay will be added in addition to the spawn ARE, and this delay is referred to as the death ARE. This mechanism can be used along with IHS and IRS to prevent death. \nOriginal idea by Not-A-Normal-Bot",
"(Techmino exclusive) When the spawn location of the next piece is blocked by an existing block in the field, a delay will be added in addition to the spawn ARE, and this delay is referred to as the death ARE. This mechanism can be used along with IHS and IRS to prevent death. \nOriginal idea by NOT_A_ROBOT",
},
{"Finesse",
"finesse",
@@ -823,6 +828,16 @@ return{
"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.",
},
{"Semi-invisible",
"half invisible",
"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\".",
},
{"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\".",
},
{"MPH mode",
"mph",
"term",

View File

@@ -73,11 +73,11 @@ return{
"TO-S的添加方法、说明等关于茶服的一切",
"http://teatube.ltd/tos",
},
{"P\97\116\114\111\110",
"赞助 p\97\116\114\111\110 support zanzhu daqian",
{"P\97\116\114\101\111\110",
"赞助 p\97\116\114\101\111\110 support zanzhu daqian",
"org",
"Techmino的P\97\116\114\111\110",
FNSF and"https://www.youtube.com/watch?v=DVl0IiUKX_g"or"https://www.p\97\116\114\111\110.com/techmino",
"Techmino的P\97\116\114\101\111\110",
FNSF and"https://www.youtube.com/watch?v=DVl0IiUKX_g"or"https://www.p\97\116\114\101\111\110.com/techmino",
},
--游戏(题库)
@@ -173,7 +173,7 @@ return{
--游戏(街机/类街机)
{"TGM",
"俄罗斯方块大师 tgm tetrisgrandmaster",
"俄罗斯方块大师 tgm3 tetrisgrandmaster",
"game",
"全称Tetris The Grand Master一个街机平台方块系列S13/GM等称号出自该系列可以在Windows平台运行。\n\n其中TGM3目前玩得最普遍部分模式说明\n\nMaster大师模式有段位评价拿到更高段位点的要求非消一的连击和消四字幕战中消除和通关每100的前70小于【标准时间上一个0~70秒数+2】中小的一个每100总用时不能超过限定值不然取消上一个方法的加分并反扣点数到500若没有进标准时间会强制结束游戏称为铁门字幕战有两个难度半隐和全隐后者必须拿到几乎全部的段位点才能进消除奖励的段位点也更多。\n\nShirase死亡模式类似于techmino中的20G-极限开局就是高速20G500和1000有铁门500开始底下开始涨垃圾行1000开始出现骨块1300通关进入大方块字幕战段位结算每通100加1段从S1到S13如果通关了字幕战就会有金色的S13\n\n更多内容详见链接",
"http://teatube.ltd/TGMGUIDE/",
@@ -193,6 +193,11 @@ return{
"game",
"简称Tex一个Windows平台方块包含TGM的所有模式可以用来练习TGM手感比真版较好不足的是World规则不完全一样如软降到底无锁延踢墙表有细节不同等",
},
{"Cambridge",
"剑桥 cambridge",
"game",
"一个Windows/macOS/Linux平台方块是基于Lua的方块游戏引擎致力于创建一个轻松高度自定义新模式的方块平台。最初由Joe Zeng开发于2020.10.8日的0.1.5版开始Milla接管了开发。\n--Tetris Wiki",
},
--游戏PC/主机/手机)
{"Techmino",
@@ -556,7 +561,7 @@ return{
{"IMS",
"提前 ims initialmovesystem",
"term",
"Initial Move System\n提前移动系统方块出现前提前按住移动后出现时会朝移动方向偏一格有时可以避免死亡Techmino限定",
"Initial Move System\n提前移动系统方块出现前提前按住移动后出现时会朝移动方向偏一格有时可以避免死亡Techmino限定\n需要块出现时das已充满",
},
{"Next",
"预览 下一个 next yulan xiayige",
@@ -727,7 +732,7 @@ return{
{"窒息延迟",
"窒息延迟 choke are delay zhixiyanchi",
"term",
"当前方块锁定后如果下一块的生成位置被阻挡,那么下一块的出块延迟会被再额外加上这个延迟的值,方便使用提前系统来避免死亡\n想法来自Not-A-Normal-Bot",
"当前方块锁定后如果下一块的生成位置被阻挡,那么下一块的出块延迟会被再额外加上这个延迟的值,方便使用提前系统来避免死亡\n想法来自NOT_A_ROBOT",
},
{"Finesse",
"极简操作 最简操作 finesse jijiancaozuo zuijiancaozuo",
@@ -845,12 +850,22 @@ return{
"经典块术语指长时间不来I方块长条。现代方块使用的Bag7出块规则下干旱几乎不可能平均7块就会有一个I理论极限两个I最远中间隔12块。",
},
{"骨块",
"gukuai bone tgm",
"骨块 gukuai bone tgm",
"term",
"最早的方块游戏使用的方块样式。\n很久以前的电脑没有可以显示复杂图案的屏幕,只能往上打字,所以一格方块用两个方括号[ ]表示,长得像骨头所以叫骨块。\n基于骨块的特点,本游戏把骨块重新定义为,“所有形状使用的同一个比较花眼的贴图”,不同的皮肤有不同的骨块样式。",
},
{"半隐",
"半隐 banyin half semi invisible",
"term",
"指方块锁定经过一段时间后会变隐形的规则\n注:从锁定开始到消失的具体时长不定,可以描述为“过几秒种后消失”",
},
{"全隐",
"全隐 quanyin invisible",
"term",
"指方块锁定后会马上完全隐藏\n注:锁定时有消失动画的话也可以叫全隐,但其实难度会小一点,故本游戏中没有动画的隐形模式叫瞬隐",
},
{"场地重力",
"zhongli liansuo cascade chain",
"重力 zhongli liansuo cascade chain",
"term",
"(由于“重力”有歧义所以本词典里称为场地重力,也有重力连锁等叫法。)\n部分游戏的部分模式可能包含此规则。此规则下玩家的四格方块四个方向有连接关系连起来的几个格整体会受到重力影响悬空了会往下落。在这个规则下可以构造复杂的连锁消除一个主打连锁消除对战的游戏是Qudra老游戏现在基本没人玩",
},

View File

@@ -196,7 +196,7 @@ return{
"The author is not responsible for any modifications.",
FNSF and"/"or"While the game is free, donations are appreciated.",
FNSF and"/"or"If you are unable to use both WeChat Pay and AliPay,",
FNSF and"/"or"you can go to our P\97\116\114\111\110 page (Link in Zictionary) to support us!",
FNSF and"/"or"you can go to our P\97\116\114\101\111\110 page (Link in Zictionary) to support us!",
},
staff={
"Author: MrZ Email: 1046101471@qq.com",
@@ -210,7 +210,7 @@ return{
"Translations: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"",
"Special Thanks:",
"Flyz, Big_True, NOT-A-ROBOT, 思竣, yuhao7370",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
"Farter, Teatube, 蕴空之灵, T9972, [All test staff]",
},
used=[[
@@ -309,6 +309,7 @@ return{
eventSet="Rule Set",
holdMode="Hold Mode",
nextCount="Next",
holdCount="Hold",
infHold="Infinite Hold",
@@ -368,7 +369,7 @@ return{
score="Score Pop-Ups",
bufferWarn="Buffer Alerts",
showSpike="Spike Counter",
nextPos="Next Preview",
nextPos="Spawn Preview",
highCam="Screen Scrolling",
warn="Danger Alerts",
@@ -703,6 +704,9 @@ return{
['master_final']= {"Master", "FINAL", "20G and beyond"},
['master_ph']= {"Master", "PHANTASM", "???"},
['master_ex']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant"},
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
['blind_e']= {"Invisible", "HALF", "For novices"},
['blind_n']= {"Invisible", "ALL", "For intermediates"},
['blind_h']= {"Invisible", "SUDDEN", "For the experienced"},

View File

@@ -162,7 +162,7 @@ return{
"El autor no se responabiliza por daños ocasionados debido a modificaciones del juego.",
FNSF and"/"or"Por favor descarga las últimas versiones desde los sitios oficiales. El juego es gratuito",
FNSF and"/"or"Si no puede usar WeChat Pay y AliPay,",
FNSF and"/"or"puede ir a nuestra página de P\97\116\114\111\110 para apoyarnos.",
FNSF and"/"or"puede ir a nuestra página de P\97\116\114\101\111\110 para apoyarnos.",
},
staff={
"Autor:MrZ Email: 1046101471@qq.com",
@@ -176,7 +176,7 @@ return{
"Traducción: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"",
"Agradecimientos:",
"Flyz, Big_True, NOT-A-ROBOT, 思竣, yuhao7370",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
"Farter, Teatube, 蕴空之灵, T9972, [Todo el Staff de Testeo]",
},
used=[[
@@ -335,7 +335,7 @@ return{
score="Puntaje en Pantalla",
bufferWarn="Alerta de Búfer",
showSpike="Contador de Spike",
nextPos="Ver Spawn de Pza. Sig.",
-- nextPos="Spawn Preview",
highCam="Cám. Vista Aérea",
warn="Alerta de Peligro",
@@ -661,6 +661,9 @@ return{
-- ['master_m']= {"Master", "M21", "For 20G Masters."},
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo: el final es inalcanzable."},
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro, acepta este desafío"},
-- ['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
-- ['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
-- ['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},

View File

@@ -162,7 +162,7 @@ return{
"et vous n'avez besoin que des permissions de vibration et de communication réseau pour les versions mobiles !",
FNSF and"/"or"Le créateur n'est pas responsable pour n'importe quel type de perte de données suite à une modification du jeu.",
FNSF and"/"or"Si vous ne parvenez pas à utiliser à la fois WeChat Pay et AliPay,",
FNSF and"/"or"vous pouvez vous rendre sur notre page P\97\116\114\111\110 pour nous soutenir !",
FNSF and"/"or"vous pouvez vous rendre sur notre page P\97\116\114\101\111\110 pour nous soutenir !",
},
staff={
"Author: MrZ E-mail: 1046101471@qq.com",
@@ -176,7 +176,7 @@ return{
"Traduction: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"",
"Merci à:",
"Flyz, Big_True, NOT-A-ROBOT, 思竣, yuhao7370",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
"Farter, Teatube, 蕴空之灵, T9972, [All test staff]",
},
used=[[
@@ -333,7 +333,7 @@ return{
score="Pop-up de score",
-- bufferWarn="Buffer Alert",
-- showSpike="Spike Counter",
nextPos="Prévisualisation de position",
-- nextPos="Spawn Preview",
highCam="Vue d'oiseau",
warn="Alerte de danger",
@@ -665,6 +665,9 @@ return{
['master_final']= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
-- ['master_ph']= {"Mester", "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"},
['blind_e']= {"Aveugle", "MOITIE", "Pour les novices."},
['blind_n']= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
['blind_h']= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},

View File

@@ -184,7 +184,7 @@ return{
"O autor não é responsável por qualquer binários modificados",
FNSF and"/"or"O jogo é gratis, mas doações são apreciadas.",
FNSF and"/"or"Se você não conseguir usar o WeChat Pay e o AliPay,",
FNSF and"/"or"pode acessar a página do P\97\116\114\111\110 para nos ajudar!",
FNSF and"/"or"pode acessar a página do P\97\116\114\101\111\110 para nos ajudar!",
},
staff={
"Author: MrZ E-mail: 1046101471@qq.com",
@@ -198,7 +198,7 @@ return{
"Traduzir: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"",
"Special Thanks:",
"Flyz, Big_True, NOT-A-ROBOT, 思竣, yuhao7370",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
"Farter, Teatube, 蕴空之灵, T9972, [All test staff]",
},
used=[[
@@ -357,7 +357,7 @@ return{
score="Pop-up de pontos",
-- bufferWarn="Buffer Alert",
-- showSpike="Spike Counter",
nextPos="Próxima Pos.",
-- nextPos="Spawn Preview",
highCam="Vista Olho-de-pássaro",
warn="Alerta de perigo",
@@ -695,6 +695,9 @@ return{
['master_final']= {"Mestre", "FINAL", "20G: Final inalcançável!"},
['master_ph']= {"Mestre", "FANTASMA", "20G: ???"},
['master_ex']= {"GrandMaster", "EXTRA", "Para ser um Grand Master, aceite \nesse desafio."},
-- ['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
-- ['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
-- ['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
['blind_e']= {"Cego", "METADE", "Para novatos."},
['blind_n']= {"Cego", "TUDO", "Para intermediários."},
['blind_h']= {"Cego", "DE REPENTE", "Para experientes."},

View File

@@ -226,10 +226,13 @@ return{fallback='zh',
['round_u']= {"回合制", "极限", "下棋"},
['master_n']= {"大师", "普通", "无脑20G"},
['master_h']= {"大师", "困难", "简单20G"},
['master_m']= {"大师", "M21", "一般20G"},
['master_m']= {"大师", "M21", "一般20G"},
['master_final']= {"大师", "终点", "真正的20G"},
['master_ph']= {"大师", "虚幻", "好玩的20G"},
['master_ex']= {"宗师", "EX", "考试20G"},
['master_ex']= {"宗师", "EX", "考试20G"},
['strategy_e']= {"策略堆叠", "简单", "有区别吗"},
['strategy_h']= {"策略堆叠", "困难", "没区别吧"},
['strategy_u']= {"策略堆叠", "极限", "没区别"},
['blind_e']= {"隐形", "半隐", "谁都能玩"},
['blind_n']= {"隐形", "全隐", "稍加练习即可"},
['blind_h']= {"隐形", "瞬隐", "和上一个一样"},

View File

@@ -196,7 +196,7 @@ return{
"若由于被修改的本游戏产生的各种损失作者不负责(怎么负责啊我又没法管)",
FNSF and"/"or"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
FNSF and"/"or"记得备注id备注id备注id不然可能会没法记录到赞助列表",
FNSF and"/"or"你也可以去我们的P\97\116\114\111\110页面(链接见小Z词典)来支持我们!",
FNSF and"/"or"你也可以去我们的P\97\116\114\101\111\110页面(链接见小Z词典)来支持我们!",
},
staff={
"作者:MrZ 邮箱:1046101471@qq.com",
@@ -210,7 +210,7 @@ return{
"翻译: User670MattMayugaMizuMr.FaqScFC₂₉H₂₅N₃O₅",
"",
"特别感谢:",
"FlyzBig_TrueNOT-A-ROBOT思竣yuhao7370",
"FlyzBig_TrueNOT_A_ROBOT思竣yuhao7370",
"FarterTeatube蕴空之灵T9972[All test staff]",
},
used=[[
@@ -707,6 +707,9 @@ return{
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
['master_ph']= {"大师", "虚幻", "虚幻20G:"},
['master_ex']= {"宗师", "EX", "成为方块大师"},
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
['blind_e']= {"隐形", "半隐", "不强大脑"},
['blind_n']= {"隐形", "全隐", "挺强大脑"},
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
@@ -812,7 +815,7 @@ return{
"别看攻击效率不高,其实消四还是很强的",
"别问游戏名怎么取的,问就是随便想的",
"不同人打40行最合适的方式不一样s1w/63/散消/s2w……",
"不同游戏(甚至不同模式)中不同战术的能力都不一样,并没有绝对的强弱之分",
"不同游戏(甚至不同模式)中不同战术的强度都不一样,并不能简单的按顺序排名",
"不希望激烈的零和竞争充斥整个游戏",
"不要悲伤,不要心急",
"不要大力拍打或滑动哦",
@@ -828,8 +831,8 @@ return{
"触发游戏报错后日志文件会越来越大不过顶多几百K",
"触摸板打osu也很好",
"凑数tip什么时候能站起来",
"打对战前请确认自己有一定的水平,不然会毫无游戏体验的",
"打好块跟学习一样没有捷径,多练。",
"打网络对战前请确认自己有一定的水平,不然会毫无游戏体验的",
"大概还是有人会看tip的",
"大量使用开局定式的数据是不准的",
"大陆的方块社区起步晚,所以世界级高手很少……下一个会是你吗?",
@@ -841,7 +844,7 @@ return{
"电脑游玩自带按键显示~",
"对编程有真·兴趣推荐Lua安装无脑 语法简单 执行速度快 远离枯燥学校编程(雾",
"对战模式跟单机模式有本质区别timing等能力需要专门练习",
"多年小游戏玩家表示痛恨假加载,启动动画主要是在加载资源",
"多年小游戏玩家表示痛恨故意拖时间的假加载",
"多hold现代块又回来了",
"俄罗斯方块完全可以作为电竞游戏",
"发现有个“隐形”皮肤了吗",
@@ -849,14 +852,14 @@ return{
"方块不能吃",
"方块不是你生活的全部,适当走出去看看",
"方块教会我们,合群了就会消失,……",
"方块默认出现的方向都是重心在下哦",
"方块默认出现的方向都是重心在下哦(如果你没乱动设置",
"方块能吃吗",
"分数一般只是好看的没有实际用途,建议只关心关卡要求",
"服务器随时爆炸",
"感觉明明按键了但是没反应?你真的按到了吗?",
"感觉自己速度到上限了试着把das调低一点",
"感谢群友帮忙想tip",
"感谢Orzmic为这个tip显示框提出意见",
"感谢Orzmic为这个tip框提供修改意见",
"感谢Phigros提供部分tip模板",
"刚接触方块的话多玩玩就行40行两分钟以外没啥好针对性练习的",
"刚开始练全隐形可以尽量堆平,留一列消四",
@@ -897,8 +900,9 @@ return{
"快去打一把100%极简看看会怎样",
"锟斤拷锟斤拷锟斤拷",
"来学编程,好玩的",
"老牌益智游戏了属于是",
"连续pc有大量知识要背不过背出来后随手10连pc不是问题",
"六连块总共有……?那不重要,不会做的",
"六连块总共有……?那不重要,不会做的(大概",
"论如何正确使用Unicode私用区定制字体",
"卖弱和谦虚不是一回事,发言前三思呀",
"卖弱禁言警告",

View File

@@ -119,6 +119,9 @@ return{
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
['master_ph']= {"大师", "虚幻", "虚幻20G:???"},
['master_ex']= {"宗师", "EX", "成为方块大师"},
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
['blind_e']= {"隐形", "半隐", "不强大脑"},
['blind_n']= {"隐形", "全隐", "挺强大脑"},
['blind_h']= {"隐形", "瞬隐", "很强大脑"},

View File

@@ -22,7 +22,7 @@ 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="",
cleared="$1 线",
mini="迷你",b2b="背靠背",b3b="背靠背靠背",
PC="清清楚楚",HPC="半完美清晰",
replaying="[重播]",
@@ -192,8 +192,9 @@ return{
"确保只从官方渠道获得游戏,",
"因为如果你在别处找到它,我们无法确保你的安全",
"作者不对任何修改负责",
"虽然游戏是免费的,但我们会感谢捐赠.",
"如果您无法同时使用我们的聊天支付和阿里支付,你可以去我们的P\97\116\114\111\110页面(连接到四联词典)支持我们!",
FNSF and"/"or"虽然游戏是免费的,但我们会感谢捐赠.",
FNSF and"/"or"如果您无法同时使用我们的聊天支付和阿里支付,",
FNSF and"/"or"你可以去我们的P\97\116\114\111\110页面(连接到四联词典)支持我们!",
},
staff={
"作者:Z先生 邮箱:1046101471@qq.com",
@@ -366,7 +367,7 @@ return{
score="分数弹出",
bufferWarn="缓冲区警报",
showSpike="尖峰计数器",
nextPos="下次预览",
nextPos="繁殖预览",
highCam="屏幕滚动",
warn="危险警报",
@@ -702,6 +703,9 @@ return{
['master_final']= {"主人", "最终", "20G及以上"},
['master_ph']= {"主人", "幻觉", ""},
['master_ex']= {"大师", "额外的", "比瞬间还短的永恒"},
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
['blind_e']= {"看不见的", "一半", "对于新手来说"},
['blind_n']= {"看不见的", "全部", "对于中间产品"},
['blind_h']= {"看不见的", "突然", "对于有经验的人"},

View File

@@ -195,7 +195,7 @@ return{
"從其他渠道獲得遊戲皆有被修改/加入廣告/植入病毒的風險,程序只申請了振動&網路權限!",
"若由於被修改的本遊戲產生的各種損失作者概不負責(我怎麼負責啊跟我有什麼關係)",
FNSF and"/"or"請從正規途徑獲得最新版,遊戲現為免費,不過有讚賞當然感謝啦~ 記得備註用戶名,方便記錄!",
FNSF and"/"or"如果你不使用微信或支付寶你可以前往我們的P\97\116\114\111\110頁面來贊助我們!"
FNSF and"/"or"如果你不使用微信或支付寶你可以前往我們的P\97\116\114\101\111\110頁面來贊助我們!"
},
staff={
"作者:MrZ 電郵:1046101471@qq.com",
@@ -209,7 +209,7 @@ return{
"翻譯: User670MattMayugaMizuMr.FaqScFC₂₉H₂₅N₃O₅",
"",
"特別感謝:",
"FlyzBig_TrueNOT-A-ROBOT思竣yuhao7370",
"FlyzBig_TrueNOT_A_ROBOT思竣yuhao7370",
"FarterTeatube蕴空之灵T9972[All test staff]",
},
used=[[
@@ -706,6 +706,9 @@ return{
['master_final']= {"大師", "究極", "究極20G:無法觸及的終點"},
['master_ph']= {"大師", "虛幻", "虛幻20G:"},
['master_ex']= {"宗師", "EX", "成為方塊大師"},
['strategy_e']= {"策略堆疊", "簡單", "20G堆疊中速決策練習"},
['strategy_h']= {"策略堆疊", "困難", "20G堆疊快速決策練習"},
['strategy_u']= {"策略堆疊", "極限", "20G堆疊極速決策練習"},
['blind_e']= {"隱形", "半隱", "不強大腦"},
['blind_n']= {"隱形", "全隱", "挺強大腦"},
['blind_h']= {"隱形", "瞬隱", "很強大腦"},

View File

@@ -39,13 +39,17 @@ 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='master_n', x=0, y=-1000, size=40,shape=1,icon="master", unlock={'master_h'}},
{name='master_n', x=0, y=-1000, size=40,shape=1,icon="master", unlock={'master_h','strategy_e'}},
{name='master_h', x=0, y=-1200, size=40,shape=3,icon="master", unlock={'master_final','master_ex','master_ph','master_m'}},
{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='strategy_e', x=-150, y=-1100, size=40,shape=3,icon="master", unlock={'strategy_h'}},
{name='strategy_h', x=-250, y=-1200, size=35,shape=3,icon="master", unlock={'strategy_u'}},
{name='strategy_u', x=-350, y=-1300, size=30,shape=3,icon="master"},
{name='blind_e', x=150, y=-700, size=40,shape=1,icon="hidden", unlock={'blind_n'}},
{name='blind_n', x=150, y=-800, size=40,shape=1,icon="hidden", unlock={'blind_h'}},
{name='blind_h', x=150, y=-900, size=35,shape=1,icon="hidden", unlock={'blind_l'}},
@@ -53,9 +57,9 @@ return{
{name='blind_u', x=150, y=-1100, size=30,shape=3,icon="hidden", unlock={'blind_wtf'}},
{name='blind_wtf', x=150, y=-1200, size=25,shape=2,icon="hidden"},
{name='classic_e', x=-170, y=-850, size=40,shape=1,icon="classic", unlock={'classic_h'}},
{name='classic_h', x=-180, y=-1000, size=35,shape=2,icon="classic", unlock={'classic_u'}},
{name='classic_u', x=-190, y=-1150, size=30,shape=2,icon="classic"},
{name='classic_e', x=-150, 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=-450, y=-1050, 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'}},

View File

@@ -11,7 +11,7 @@ return{
mStr(P.stat.atk,63,280)
mText(TEXTOBJ.atk,63,350)
end,
bg='blackhole',bgm='echo',
bg='blockhole',bgm='echo',
},
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[2])end,

View File

@@ -11,7 +11,7 @@ return{
mStr(P.stat.atk,63,280)
mText(TEXTOBJ.atk,63,350)
end,
bg='blackhole',bgm='echo',
bg='blockhole',bgm='echo',
},
score=function(P)return{math.min(math.floor(P.stat.atk),100),P.stat.time}end,
scoreDisp=function(D)return D[1].." Attack "..STRING.time(D[2])end,

View File

@@ -1,18 +1,23 @@
return{
env={
drop=1e99,lock=1e99,
das=8,arr=1,
drop=30,lock=30,
holdCount=0,
task=function(P)
while not P.control do YIELD()end
P:pressKey(6)
P:lose()
end,
bg='bg1',bgm='new era',
eventSet='bigbang',
bg='blockhole',bgm='peak',
},
score=function(P)return{P.modeData.event,P.stat.finesseRate*.2/P.stat.piece}end,
scoreDisp=function(D)return("%d Stage %.2f%%"):format(D[1],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()
return 1
score=function(P)return{P.modeData.stage,P.stat.time}end,
scoreDisp=function(D)return D[1].." Stage "..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)
do return 1 end
local L=P.modeData.stage
return
L>=100 and 5 or
L>=70 and 4 or
L>=40 and 3 or
L>=20 and 2 or
L>=10 and 1 or
L>=3 and 0
end,
}

View File

@@ -4,7 +4,7 @@ return{
smooth=false,
face={0,0,2,2,2,0,0},
eventSet='classic_e',
bg='rgb',bgm='1989',
bg='rgb',bgm='1980s',
},
slowMark=true,
score=function(P)return{P.stat.score,P.stat.row}end,

View File

@@ -4,7 +4,7 @@ return{
smooth=false,
face={0,0,2,2,2,0,0},
eventSet='classic_h',
bg='rgb',bgm='1989',
bg='rgb',bgm='1980s',
},
slowMark=true,
score=function(P)return{P.stat.score,P.stat.row}end,

View File

@@ -4,7 +4,7 @@ return{
smooth=false,
face={0,0,2,2,2,0,0},
eventSet='classic_u',
bg='rgb',bgm='1989',
bg='rgb',bgm='1980s',
},
slowMark=true,
score=function(P)return{P.stat.score,P.stat.row}end,

View File

@@ -8,7 +8,7 @@ local function marginTask(P)
end
return{
env={
bg={'bg1','bg2','blackhole','blockfall','blockrain','blockspace','cubes','fan','flink','glow','matrix','rainbow','rainbow2','tunnel'},
bg={'bg1','bg2','blockhole','blockfall','blockrain','blockspace','cubes','fan','flink','glow','matrix','rainbow','rainbow2','tunnel'},
bgm={'battle','beat5th','cruelty','distortion','echo','far','final','here','hope','memory','moonbeam','push','rectification','secret7th remix','secret7th','secret8th remix','secret8th','shift','shining terminal','storm','super7th','there','truth','vapor','waterfall'},
},
load=function()

View File

@@ -4,9 +4,7 @@ return{
holdCount=0,
drop=60,lock=60,
fall=20,
sequence='none',
freshLimit=15,
RS="SRS",
eventSet='pctrain_l',
bg='rgb',bgm='memory',
},

View File

@@ -4,8 +4,6 @@ return{
holdCount=0,
drop=120,lock=180,
fall=20,
sequence='none',
RS="SRS",
eventSet='pctrain_n',
bg='rgb',bgm='memory',
},
@@ -15,7 +13,7 @@ return{
getRank=function(P)
local L=P.stat.pc
return
L>=62 and 5 or
L>=60 and 5 or
L>=42 and 4 or
L>=26 and 3 or
L>=18 and 2 or

View File

@@ -2,6 +2,7 @@ return{
env={
drop=60,lock=60,
wait=0,fall=50,
hang=15,
garbageSpeed=30,
seqData={1,2,3,4,5,6,7},
eventSet='stack_e',

View File

@@ -2,6 +2,7 @@ return{
env={
drop=60,lock=60,
wait=0,fall=50,
hang=15,
garbageSpeed=30,
seqData={8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
eventSet='stack_u',

View File

@@ -0,0 +1,21 @@
return{
env={
sequence="bagES",
eventSet='strategy_e',
bg='bg2',bgm='push',
},
slowMark=true,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[2])end,
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>=170 and 4 or
L>=150 and 3 or
L>=120 and 2 or
L>=60 and 1 or
L>=26 and 0
end,
}

View File

@@ -0,0 +1,21 @@
return{
env={
sequence="bagES",
eventSet='strategy_h',
bg='bg2',bgm='secret8th',
},
slowMark=true,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[2])end,
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>=160 and 4 or
L>=120 and 3 or
L>=70 and 2 or
L>=40 and 1 or
L>=26 and 0
end,
}

View File

@@ -0,0 +1,21 @@
return{
env={
sequence="bagES",
eventSet='strategy_u',
bg='bg2',bgm='secret7th',
},
slowMark=true,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[2])end,
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>=150 and 4 or
L>=80 and 3 or
L>=40 and 2 or
L>=20 and 1 or
L>=26 and 0
end,
}

View File

@@ -119,6 +119,6 @@ return{
{font=25,name="[w*o]"},
{font=25,name="蚂蚁"},
{font=25,name="小丘"},
{font=25,name="[*)]"},
{font=25,name="Techtris"},
{font=25,name="费尔特林"},
}

View File

@@ -360,6 +360,18 @@ local function _drawNextPreview(B,fieldH,fieldBeneath)
end
end end
end
local function _drawHoldPreview(B,fieldH,fieldBeneath)
gc_setColor(1,1,1,.3)
local y=int(fieldH+1-modf(B.RS.centerPos[B.id][B.dir][1]))+ceil(fieldBeneath/30)+.14
B=B.bk
local x=int(6-#B[1]*.5)
local cross=TEXTURE.puzzleMark[-1]
for i=1,#B do for j=1,#B[1]do
if B[i][j]then
gc_draw(cross,30*(x+j-2),30*(1-y-i))
end
end end
end
local function _drawBuffer(atkBuffer,bufferWarn,atkBufferSum1,atkBufferSum)
local h=0
for i=1,#atkBuffer do
@@ -807,8 +819,9 @@ function draw.norm(P,repMode)
end
--Draw next preview
if ENV.nextPos and P.nextQueue[1]then
_drawNextPreview(P.nextQueue[1],ENV.fieldH,P.fieldBeneath)
if ENV.nextPos then
if P.nextQueue[1]then _drawNextPreview(P.nextQueue[1],ENV.fieldH,P.fieldBeneath)end
if P.holdQueue[1]then _drawHoldPreview(P.holdQueue[1],ENV.fieldH,P.fieldBeneath)end
end
--Draw AI's drop destination

View File

@@ -418,8 +418,10 @@ function Player:pushLineList(L,mir)--Push some lines to field
ins(self.visTime,1,FREEROW.new(20))
end
self.fieldBeneath=self.fieldBeneath+30*l
self.curY=self.curY+l
self.ghoY=self.ghoY+l
if self.cur then
self.curY=self.curY+l
self.ghoY=self.ghoY+l
end
self:freshBlock('push')
end
function Player:pushNextList(L,mir)--Push some nexts to nextQueue

View File

@@ -979,7 +979,7 @@ function scene.wheelMoved(_,y)
end
function scene.keyDown(key)
if key=="return"then
if key=="return" or key=="kpenter"then
local input=STRING.trim(inputBox:getText())
if input==""then return end

View File

@@ -32,7 +32,7 @@ local typeColor={
local function _filter(word_org)
local word=word_org
word=word:gsub("[Tt]etris",CHAR.zChan.thinking)
if FNSF then word=word:gsub("[Pp]\97\116\114\111\110",CHAR.zChan.qualified)end
if FNSF then word=word:gsub("[Pp]\97\116\114\101\111\110",CHAR.zChan.qualified)end
return word,word_org
end
local function _scanDict(D)

View File

@@ -21,7 +21,7 @@ local author={
["jazz nihilism"]="Trebor",
["race remix"]="柒栎流星",
["sakura"]="ZUN & C₂₉H₂₅N₃O₅",
["1989"]="C₂₉H₂₅N₃O₅",
["1980s"]="C₂₉H₂₅N₃O₅",
}
local scene={}

View File

@@ -79,15 +79,16 @@ function scene.draw()
end
gc.replaceTransform(SCR.xOy)
gc.setColor(COLOR.Z)
local T=40*math.min(time,45)
gc.setColor(.97,.97,.97,45-math.min(time,45))
local L=text.staff
setFont(40)
for i=1,#L do
mStr(L[i],640,800+70*i-T)
end
gc.setColor(1,1,1)
mDraw(TEXTURE.title_color,640,800-T,nil,.6)
mDraw(TEXTURE.title_color,640,2160-T,nil,.6)
mDraw(TEXTURE.title,640,2160-T,nil,.6)
if time>50 then
gc.print("CLICK ME →",50,550,-.5)
end

View File

@@ -11,6 +11,19 @@ return[=[
可调攻击系统; 更多消除方式; 可调场地宽度; 新联网游戏场景切换逻辑
工程编译到字节码; task-Z(新AI); 自适应UI; 多方块
0.17.0: 硬着陆 Hard Landing
新增:
新模式:大爆炸
新模式:策略堆叠(原版设计来自Cambridge游戏, by NOT_A_ROBOT)
改动:
TRS的S/Z添加四个踢墙防止在一些地方卡死
生成位置预览开启后hold的生成位置也可见 #453
优化pc训练模式体验,添加胜利条件,不再无尽
堆积模式添加15帧的窒息延迟 #465
修复:
机翻语言超级消除无行数显示 #462
竞速-效率左侧信息颜色问题
0.16.5: 新世界 New World
新增:
新模式:竞速-效率
@@ -18,10 +31,10 @@ return[=[
新增场地抖动特效
新增繁中语言,新语言设置菜单布局
新BGM:peak(暂未使用)
新BGM:1989(用于经典模式,by C₂₉H₂₅N₃O₅)
新BGM:1980s(用于经典模式, by C₂₉H₂₅N₃O₅)
删除节奏模式(之后会有全新音游模式)
音乐室输入首字母自动跳转
新增窒息延迟(by Not-A-Normal-Bot) #459
新增窒息延迟(by NOT_A_ROBOT) #459
移除模式标题的颜色
改动:
移动音效改为触地音效,在方块因重力或旋转触地时也会播放
@@ -84,16 +97,16 @@ return[=[
新增:
新系统:规则包,自定义游戏和联网对战可以有更多玩法了
新系统:音效包(暂无其他可选,正在制作)
新模式:更多难度的经典模式(by not-a-normal-bot) #285
新模式:更多难度的经典模式(by NOT_A_ROBOT) #285
新模式:大师-M
新序列模式:bagES(easy start)开局第一个不会出难受的块
新机制:逻辑追帧(单机可关闭),联网强制启用防止低帧率设备影响其他玩家游戏体验
新旋转系统:ARS_Z,简化复杂的测试逻辑,统一使用{右,左}(i块为{上,上2},五连块风格模仿)
新旋转系统:SRS_X,基于SRS,I块和除了PQ的非四连块使用TRS的表
新语音包:miku(by vocaloidvictory)
新BGM:Jazz nihilism(用于节日主题,by Trebor)
新BGM:Race remix(用于大师-ph,by 柒栎流星)
新BGM:Sakura(用于限时打分,by C₂₉H₂₅N₃O₅)
新BGM:Jazz nihilism(用于节日主题, by Trebor)
新BGM:Race remix(用于大师-ph, by 柒栎流星)
新BGM:Sakura(用于限时打分, by C₂₉H₂₅N₃O₅)
新BGM:Null(用于节日主题)
新音效:单次消5/6行
新机制:swap(hold的另一种实现)
@@ -267,7 +280,7 @@ return[=[
0.15.6: 强化装甲 Reinforced Armor
新增:
新BGM:Nil(用于主菜单)
新BGM:Secret7th Remix(用于master-ultimate,by 柒栎流星)
新BGM:Secret7th Remix(用于master-ultimate, by 柒栎流星)
新模式:Attack竞速
master-ultimate模式新增500~1000
支持调整录像回放速度和逐帧播放
@@ -540,8 +553,8 @@ return[=[
0.14.5: 晨 Morn
新增:
新增BGM:Empty(用于节日主题,by ERM)
新增BGM:Battle(用于单挑L/U难度,by Aether)
新增BGM:Empty(用于节日主题, by ERM)
新增BGM:Battle(用于单挑L/U难度, by Aether)
增加玩家个人信息显示框
音乐室显示音乐作者
新增开5人房的按钮

View File

@@ -1,7 +1,7 @@
return{
["apkCode"]=401,
["code"]=1605,
["string"]="V0.16.5",
["apkCode"]=404,
["code"]=1700,
["string"]="V0.17.0",
["room"]="ver A-0",
["name"]="新世界 New World",
["name"]="硬着陆 Hard Landing",
}