Compare commits

...

32 Commits

Author SHA1 Message Date
MrZ626
0db2fffad1 版本推进 2021-12-07 01:43:17 +08:00
MrZ626
2a3296a0e8 调整pixel皮肤,修改x块的默认色为黄色 2021-12-07 01:26:46 +08:00
MrZ626
941b875afa 再微调语言设置界面
整理代码
2021-12-07 01:05:46 +08:00
MrZ626
99155bb9cf 更新macOS安装包用图
Co-authored-by: C₂₉H₂₅N₃O₅ <cgu52@wisc.edu>
2021-12-07 01:00:22 +08:00
MrZ626
0701dd2ad3 新皮肤:pixel(by C₂₉H₂₅N₃O₅) 2021-12-07 00:59:19 +08:00
MrZ626
5570c19e1f 调整颜色表
调整语言选择菜单
整理代码
2021-12-07 00:59:19 +08:00
NOT_A_ROBOT
a728c91476 Add Indonesian Translation (#535)
- Added Indonesian language file
- Added Indonesian button in language select menu
- Added Indonesian variant of the word "language" on the language select menu
- Added credit to me for translating (applies to all languages)
2021-12-07 00:00:51 +08:00
MrZ626
6a43481067 优化小程序triple体验 2021-12-06 22:42:49 +08:00
MrZ626
29a049fe4e 版本推进 2021-12-06 22:20:59 +08:00
MrZ626
b5a9c8e1bb 修正一处手柄事件可能爆炸 2021-12-06 21:17:30 +08:00
MrZ626
bb9a35c161 修复云存档/读档的一处小问题 2021-12-06 21:11:54 +08:00
MrZ626
b25a345b42 更换click音效,音乐室播放按钮声音调整 2021-12-06 20:33:41 +08:00
MrZ626
b22b0e0194 修正文件加载模块参数识别的小问题 2021-12-06 19:52:00 +08:00
MrZ626
55cf95f218 修正策略堆叠模式评级标准不当 2021-12-06 19:24:24 +08:00
MrZ626
225ddbcfac 调整几个tip 2021-12-06 16:43:46 +08:00
MrZ626
9377090c7c 【bug风险较大,需要测试】解耦玩家代码中的部分混战模式代码 2021-12-06 16:00:46 +08:00
MrZ626
ed002ec2e1 略微降低master-h模式骨块出现后的难度 2021-12-06 13:49:51 +08:00
MrZ626
e33036d9ec 调整几个词条的关键词 2021-12-06 12:46:17 +08:00
MrZ626
ef03e7c009 layout菜单名改为style 2021-12-06 12:46:11 +08:00
MrZ626
aef4220ac0 修复自定义场地16号颜色的方块名位置显示错误
优化皮肤设置页面交互效果
2021-12-06 03:25:39 +08:00
MrZ626
46223e38cd STRING模块新增一个简易摘要算法,未来保护用户密码明文可能用到 2021-12-06 03:18:41 +08:00
MrZ626
4bafa4bffe 版本推进 2021-12-05 22:01:16 +08:00
MrZ626
2b3dd877dd 修正100攻击竞速模式没有重力 2021-12-05 18:13:47 +08:00
MrZ626
0553e5c45e 调整中文tip 2021-12-05 18:11:12 +08:00
MrZ626
4d93374cf6 微调暂停界面和语言选择界面 2021-12-05 00:54:42 +08:00
MrZ626
4e421bf9ba 微调一些场景细节 2021-12-04 22:29:38 +08:00
user670
8b2a9d7c01 Update lang_en.lua (#534) 2021-12-04 22:17:43 +08:00
C₂₉H₂₅N₃O₅
5a3244d345 更改语言选择界面布局 (#532)
* 再更改语言选择布局
2021-12-04 19:56:24 +08:00
MrZ626
f1b9d0c5e4 新增返回按钮音效 2021-12-03 17:15:32 +08:00
MrZ626
6493e0e623 创建button和key控件时的sound参数可以指定音效名了 2021-12-03 16:45:37 +08:00
MrZ626
e71ba17f9f 微调一个中文词典词条 2021-12-03 11:57:21 +08:00
MrZ626
e656363e20 录像回放菜单对键盘支持更好 2021-12-03 11:23:44 +08:00
102 changed files with 1224 additions and 304 deletions

Binary file not shown.

View File

@@ -19,11 +19,11 @@ local COLOR={
red= {hsv(0.00, 0.89, 0.91)},
fire= {hsv(0.04, 0.93, 0.94)},
orange= {hsv(0.09, 0.99, 0.96)},
yellow= {hsv(0.16, 0.82, 0.90)},
lime= {hsv(0.18, 0.89, 0.88)},
jade= {hsv(0.23, 1.00, 0.82)},
yellow= {hsv(0.15, 0.82, 0.90)},
lime= {hsv(0.20, 0.89, 0.88)},
jade= {hsv(0.25, 1.00, 0.82)},
green= {hsv(0.33, 1.00, 0.81)},
aqua= {hsv(0.48, 1.00, 0.74)},
aqua= {hsv(0.47, 1.00, 0.76)},
cyan= {hsv(0.53, 1.00, 0.88)},
navy= {hsv(0.56, 1.00, 1.00)},
sea= {hsv(0.61, 1.00, 1.00)},
@@ -36,14 +36,14 @@ local COLOR={
lRed= {hsv(0.00, 0.38, 0.93)},
lFire= {hsv(0.04, 0.45, 0.91)},
lOrange= {hsv(0.10, 0.53, 0.92)},
lYellow= {hsv(0.15, 0.61, 0.95)},
lLime= {hsv(0.19, 0.66, 0.92)},
lJade= {hsv(0.24, 0.56, 0.90)},
lYellow= {hsv(0.14, 0.61, 0.95)},
lLime= {hsv(0.20, 0.66, 0.92)},
lJade= {hsv(0.26, 0.56, 0.90)},
lGreen= {hsv(0.34, 0.49, 0.89)},
lAqua= {hsv(0.49, 0.59, 0.85)},
lAqua= {hsv(0.47, 0.59, 0.86)},
lCyan= {hsv(0.51, 0.77, 0.88)},
lNavy= {hsv(0.54, 0.80, 0.95)},
lSea= {hsv(0.56, 0.72, 0.97)},
lSea= {hsv(0.57, 0.72, 0.97)},
lBlue= {hsv(0.64, 0.44, 0.96)},
lViolet= {hsv(0.72, 0.47, 0.95)},
lPurple= {hsv(0.80, 0.62, 0.89)},
@@ -53,13 +53,13 @@ local COLOR={
dRed= {hsv(0.00, 0.80, 0.48)},
dFire= {hsv(0.04, 0.80, 0.34)},
dOrange= {hsv(0.07, 0.80, 0.39)},
dYellow= {hsv(0.11, 0.80, 0.37)},
dLime= {hsv(0.17, 0.80, 0.26)},
dJade= {hsv(0.31, 0.80, 0.27)},
dYellow= {hsv(0.12, 0.80, 0.37)},
dLime= {hsv(0.20, 0.80, 0.26)},
dJade= {hsv(0.29, 0.80, 0.27)},
dGreen= {hsv(0.33, 0.80, 0.26)},
dAqua= {hsv(0.47, 0.80, 0.23)},
dAqua= {hsv(0.46, 0.80, 0.24)},
dCyan= {hsv(0.50, 0.80, 0.30)},
dNavy= {hsv(0.59, 0.80, 0.42)},
dNavy= {hsv(0.58, 0.80, 0.42)},
dSea= {hsv(0.64, 0.80, 0.40)},
dBlue= {hsv(0.67, 0.80, 0.34)},
dViolet= {hsv(0.71, 0.80, 0.35)},

View File

@@ -6,7 +6,14 @@ function FILE.load(name,args)
local F=fs.newFile(name)
assert(F:open'r','open error')
local s=F:read()F:close()
if args:sArg'-luaon'or args==''and s:sub(1,6)=='return{'then
local mode=
args:sArg'-luaon'and'luaon'or
args:sArg'-json'and'json'or
args:sArg'-string'and'string'or
s:sub(1,6)=='return{'and'luaon'or
(s:sub(1,1)=='['and s:sub(-1)==']'or s:sub(1,1)=='{'and s:sub(-1)=='}')and'json'or
'string'
if mode=='luaon'then
local func=loadstring(s)
if func then
setfenv(func,{})
@@ -15,13 +22,13 @@ function FILE.load(name,args)
else
error('decode error')
end
elseif args:sArg'-json'or args==''and s:sub(1,1)=='['and s:sub(-1)==']'or s:sub(1,1)=='{'and s:sub(-1)=='}'then
elseif mode=='json'then
local res=JSON.decode(s)
if res then
return res
end
error('decode error')
elseif args:sArg'-string'or args==''then
elseif mode=='string'then
return s
else
error('unknown mode')

View File

@@ -397,7 +397,7 @@ function love.joystickremoved(JS)
end
end
function love.gamepadaxis(JS,axis,val)
if JS==jsState[1]._jsObj then
if jsState[1]and JS==jsState[1]._jsObj then
local js=jsState[1]
if axis=='leftx'or axis=='lefty'or axis=='rightx'or axis=='righty'then
local newVal=--range: [0,1]

View File

@@ -169,6 +169,25 @@ function STRING.vcsDecrypt(text,key)
end
return result..buffer
end
function STRING.digezt(text)--Not powerful hash, just protect the original text
local out={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
local seed=26
for i=1,#text do
local c=byte(text,i)
seed=(seed+c)%26
c=c+seed
local pos=c*i%16
local step=(c+i)%4+1
local times=2+(c%6)
for _=1,times do
out[pos+1]=(out[pos+1]+c)%256
pos=(pos+step)%16
end
end
local result=""
for i=1,16 do result=result..char(out[i])end
return result
end
function STRING.readLine(str)
local p=str:find("\n")

View File

@@ -226,10 +226,10 @@ function button:press(_,_,k)
self.h
)
if self.sound then
SFX.play('button')
SFX.play(self.sound)
end
end
function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,fType][,sound=true][,align='M'][,edge=0][,code][,hideF][,hide]
function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,fType][,sound][,align='M'][,edge=0][,code][,hideF][,hide]
if not D.h then D.h=D.w end
local _={
name= D.name or"_",
@@ -253,11 +253,18 @@ function WIDGET.newButton(D)--name,x,y,w[,h][,fText][,color][,font=30][,fType][,
fType=D.fType,
align=D.align or'M',
edge= D.edge or 0,
sound=D.sound~=false,
code= D.code or NULL,
hideF=D.hideF,
hide= D.hide,
}
if D.sound==false then
_.sound=false
elseif type(D.sound)=='string'then
_.sound=D.sound
else
_.sound='button'
end
for k,v in next,button do _[k]=v end
setmetatable(_,widgetMetatable)
return _
@@ -347,10 +354,10 @@ end
function key:press(_,_,k)
self.code(k)
if self.sound then
SFX.play('key')
SFX.play(self.sound)
end
end
function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,fShade][,color][,font=30][,fType][,sound=true][,align='M'][,edge=0][,code][,hideF][,hide]
function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,fShade][,color][,font=30][,fType][,sound][,align='M'][,edge=0][,code][,hideF][,hide]
if not D.h then D.h=D.w end
local _={
name= D.name or"_",
@@ -373,13 +380,19 @@ function WIDGET.newKey(D)--name,x,y,w[,h][,fText][,fShade][,color][,font=30][,fT
color= D.color and(COLOR[D.color]or D.color)or COLOR.Z,
font= D.font or 30,
fType= D.fType,
sound= D.sound~=false,
align= D.align or'M',
edge= D.edge or 0,
code= D.code or NULL,
hideF= D.hideF,
hide= D.hide,
}
if D.sound==false then
_.sound=false
elseif type(D.sound)=='string'then
_.sound=D.sound
else
_.sound='key'
end
for k,v in next,key do _[k]=v end
setmetatable(_,widgetMetatable)
return _

View File

@@ -279,7 +279,7 @@ IMG.init{
SKIN.load{
{name="crystal_scf",path='media/image/skin/crystal_scf.png'},
{name="matte_mrz",path='media/image/skin/matte_mrz.png'},
{name="shiny_cho",path='media/image/skin/shiny_cho.png'},
{name="shiny_chno",path='media/image/skin/shiny_chno.png'},
{name="contrast_mrz",path='media/image/skin/contrast_mrz.png'},
{name="polkadots_scf",path='media/image/skin/polkadots_scf.png'},
{name="toy_scf",path='media/image/skin/toy_scf.png'},
@@ -302,6 +302,7 @@ SKIN.load{
{name="classic",path='media/image/skin/classic_unknown.png'},
{name="ball_shaw",path='media/image/skin/ball_shaw.png'},
{name="retro_notypey",path='media/image/skin/retro_notypey.png'},
{name="pixel_chno",path='media/image/skin/pixel_chno.png'},
{name="textbone_mrz",path='media/image/skin/textbone_mrz.png'},
{name="coloredbone_mrz",path='media/image/skin/coloredbone_mrz.png'},
{name="wtf",path='media/image/skin/wtf_mrz.png'},
@@ -346,6 +347,7 @@ LANG.init('zh',
fr=require'parts.language.lang_fr',
es=require'parts.language.lang_es',
pt=require'parts.language.lang_pt',
id=require'parts.language.lang_id',
zh_grass=require'parts.language.lang_zh_grass',
zh_yygq=require'parts.language.lang_yygq',
symbol=require'parts.language.lang_symbol',
@@ -519,6 +521,7 @@ do
if not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul)then SETTING.frameMul=100 end
if SETTING.cv then SETTING.vocPack,SETTING.cv=SETTING.cv end
if type(SETTING.bg)~='string'then SETTING.bg='on'end
if SETTING.skin[18]==10 then SETTING.skin[18]=4 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.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -9,7 +9,7 @@ return
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
task=function(P)
local F=P.field
local F=P.field
for i=1,24 do
F[i]=LINE.new(20)
P.visTime[i]=LINE.new(20)
@@ -31,7 +31,7 @@ return
P:set20G(true)
P.modeData.target=200
SFX.play('reach')
else
else
P:win('finish')
end
end

View File

@@ -11,7 +11,7 @@ return
PLY.draw.drawTargetLine(P,200-P.stat.row)
end,
task=function(P)
local F=P.field
local F=P.field
for i=1,24 do
F[i]=LINE.new(20)
P.visTime[i]=LINE.new(20)

View File

@@ -1,6 +1,6 @@
local death_lock={12,11,10,9,8, 7,7,7,7,6}
local death_wait={10,9, 8, 7,6, 6,6,5,5,4}
local death_fall={10,9, 8, 7,6, 6,5,5,4,4}
local death_lock={12,11,10,9,8, 8,8,7,7,6}
local death_wait={10,9, 8, 7,6, 7,6,6,5,5}
local death_fall={10,9, 8, 7,6, 7,6,5,5,5}
return{
drop=0,

View File

@@ -5,15 +5,22 @@ local setFont=setFont
local PLAYERS,PLY_ALIVE=PLAYERS,PLY_ALIVE
return{
layout='royale',
fkey1=function(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=45
end,
mesDisp=function(P)
setFont(35)
mStr(#PLY_ALIVE.."/"..#PLAYERS,63,175)
mStr(P.modeData.ko,80,215)
gc_draw(TEXTOBJ.ko,60-TEXTOBJ.ko:getWidth(),222)
setFont(20)
gc_setColor(1,.5,0,.6)
gc_print(P.badge,103,227)
gc_setColor(.97,.97,.97)
setFont(25)
mStr(text.powerUp[P.strength],63,290)
gc_setColor(1,1,1)

View File

@@ -79,7 +79,7 @@ do--function loadFile(name,args), function saveFile(data,name,args)
local text=text or t
local res,mes=pcall(FILE.save,data,name,args)
if res then
return mes
return true
else
MES.new('error',
mes:find'duplicate'and
@@ -771,7 +771,7 @@ do--function resetGameData(args)
BGM.play(type(bgm)=='string'and bgm or type(bgm)=='table'and bgm[math.random(#bgm)])
TEXT.clear()
if GAME.modeEnv.royaleMode then
if GAME.modeEnv.eventset=='royale'then
for i=1,#PLAYERS do
PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i]))
end

View File

@@ -607,7 +607,7 @@ do--Userdata tables
skinSet='crystal_scf',
skin={
1,7,11,3,14,4,9,
1,7,2,6,10,2,13,5,9,15,10,11,3,12,2,16,8,4,
1,7,2,6,10,2,13,5,9,15,4,11,3,12,2,16,8,4,
10,13,2,8
},
face={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

View File

@@ -859,12 +859,12 @@ return{
"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.",
},
{"Cold Clear",
"cc coldclear",
"cc coldclear ai bot",
"term",
"A Tetris bot. Originally built for Puyo Puyo Tetris, thus can be less powerful on Techmino.",
},
{"ZZZbot",
"zzzbot",
"zzzbot ai bot",
"term",
"A Tetris bot. Built by the Chinese Tetris player 奏之章 (Zou Zhi Zhang) and has decent performance in many games",
},

View File

@@ -810,9 +810,9 @@ return{
"快速震动手指,实现比长按更快速+灵活的高速单点移动主要在经典块的高难度下因为das不可调而且特别慢高速下很容易md导致失败此时手动连点就比自动移动更快或者受特殊情况限制不适合用自动移动时使用。会使用这个技术的人称为“Hypertapper”。",
},
{"穿透 Passthrough",
"穿透 passthrough pingthrough",
"穿透 passthrough pingthrough chuantou",
"term",
"(攻击)穿透,指双方的攻击明明时间上很接近但没有抵消,互相都收到的现象。\nTETR.IO中自定义房间如果开启passthrough规则曾经天梯默认开启那么对手消行攻击的瞬间能看到自己的红条出现但其处于“无敌时间”内不会触发也不能抵消此时你的攻击会直接打给对手。应该是给攻击的飞行动画预留时间同时也让玩家能反应过来并主动选择要不要抵消要的话就再等一会\n另有pingthrough的说法最终效果同passthrough只是根本原因是不可避免的网络传输延迟设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",
"(攻击)穿透,指双方的攻击打出后没有抵消,互相都收到的现象。\nTETR.IO中自定义房间如果开启passthrough规则曾经天梯默认开启那么对手消行攻击的瞬间能看到自己的红条出现但其处于“无敌时间”内不会触发也不能抵消此时你的攻击会直接打给对手。应该是给攻击的飞行动画预留时间同时也让玩家能反应过来并主动选择要不要抵消要的话就再等一会\n另有pingthrough的说法只是原因是由于不可避免的网络传输延迟效果同passthrough设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",
},
{"TOP攻击表",
"攻击表 top attack",
@@ -880,17 +880,17 @@ return{
"一个游戏模式:\nMemorylessPreviewlessHoldless\n纯随机+无next+无hold一个非常考验玩家反应速度的模式",
},
{"输入延迟",
"输入延迟 input delay",
"输入延迟 input delay yanchi",
"term",
"用任何设备玩任何游戏时所有的操作按键盘点鼠标等都会晚一点点很短几毫秒到几十毫秒才到达游戏如果过长就会很影响游戏手感作用效果类似于你拿QQ远程控制打fps游戏\nTOP、TE等游戏比较明显\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点",
},
{"Cold Clear",
"cc coldclear",
"机器人 电脑 cc coldclear ai bot jiqiren",
"term",
"一个AI的名字就跟AlphaGo一样\n本身是为PPT开发故在本游戏中使用效果欠佳版本也较旧",
},
{"ZZZbot",
"zzzbot",
"机器人 电脑 zzzbot ai bot jiqiren",
"term",
"一个AI的名字就跟AlphaGo一样\n由研究群群友奏之章开发,重新调参后在各个游戏平台上的表现都很不错",
},
@@ -902,7 +902,7 @@ return{
"开局定式,定式一般指开局定式这个概念。\n指开局后可以使用的套路摆法。局中情况合适的时候也可以摆出同样的形状,但是和摆法开局一般都不一样。\n\n能称为定式的摆法要尽量满足以下至少2~3条\n能适应大多数块序\n输出高尽量不浪费T块\n很多方块无需软降,极简操作数少\n有明确后续,分支尽量少。\n\n绝大多数定式基于bag7序列规律性强才有发明定式的可能。",
},
{"DT炮",
"dt炮",
"dt炮 dt cannon",
"setup",
"Double-Triple Cannon.\n"..HDwiki,
HDsearch.."dt",
@@ -914,7 +914,7 @@ return{
HDsearch.."dt",
},
{"BT炮",
"bt炮",
"bt炮 bt cannon",
"setup",
"β炮Beta炮\n"..HDwiki,
HDsearch.."bt_cannon",
@@ -932,7 +932,7 @@ return{
HDsearch.."TKI_3_Perfect_Clear",
},
{"QT炮",
"qt炮",
"qt炮 qt cannon",
"setup",
"QT炮细节未知。",
},

View File

@@ -219,7 +219,7 @@ return{
"Music: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
"Voice & Sound: Miya, Xiaoya, Mono, MrZ, Trebor",
"Performance: 模电, HBM",
"Translations: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"Translations: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
"",
"Special Thanks:",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
@@ -339,7 +339,7 @@ return{
title="Game Settings",
graphic="←Video",
sound="Audio→",
layout="Layout",
style="Style",
ctrl="Control Settings",
key="Key Mappings",
@@ -460,7 +460,7 @@ return{
},
setting_skin={
skinSet="Block Skin",
title="Layout Settings",
title="Style Settings",
skinR="Reset Colors",
faceR="Reset Dir.",
},
@@ -800,11 +800,11 @@ return{
"Bridge clear coming soon!",
"Can you master this modern yet familiar stacker?",
"Certainly within this heart lies my M@STERPIECE.",
"Changelogs in English can be found on Discord.",
"Change logs in English can be found on Discord.",
"Color clear coming soon!",
"Decreasing DAS and ARR makes your game faster but harder to control.",
"Did I just see a Back-to-Back-to-Back?",
"Does B2B2B2B exists?",
"Does B2B2B2B exist?",
"Don't let a small glitch ruin your entire day!",
"Don't look directly at the bugs!",
"Enjoy the Techmino rotation system!",
@@ -818,7 +818,6 @@ return{
"Have you noticed what \"rotating\" does do to a block?",
"Headphones recommended for a better experience.",
"Hello world!",
"hello world",
"I3 and L3 are the only two unique triminoes.",
"if a==true",
"Increase your frame rate for a better experience.",
@@ -839,7 +838,6 @@ return{
"No easter eggs in this menu if you have the simplistic style turned on!",
"O-Spin Triple!",
"OHHHHHHHHHHHHHH",
"Online mode is planned — please be patient.",
"Play single-handedly!",
"Playing good takes some time!",
"Powered by LÖVE",
@@ -860,6 +858,7 @@ return{
"There are several hidden modes in the game that cannot be entered using the map.",
"There is a total of 18 different pentominoes.",
"There is a total of 7 different tetrominoes.",
"Try online multiplayer! Expect things to break though.",
"Try using multiple Hold Queues!",
"Try using two rotation buttons. Using all three of them is better.",
"Warning: Programmer Art",
@@ -872,7 +871,6 @@ return{
"You are welcome to help us to make BGMs and SFXs!",
"You can connect a keyboard to your phone or tablet (not functional on iOS though).",
"You can customize the key mappings in settings!",
"You can navigate the menu with a keyboard, but only in this screen.",
"You can open the save directory from the Stats page.",
"You can perform a spin with 28 of the 29 minoes in this game; the exception being O1.",
"You can set the spawning orientation for each piece.",

View File

@@ -185,7 +185,7 @@ return{
"Música: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
"Voces/Sonidos: Miya, Xiaoya, Mono, MrZ, Trebor",
"Performance: 模电, HBM",
"Traducción: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"Traducción: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
"",
"Agradecimientos:",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
@@ -305,7 +305,7 @@ return{
title="Ajustes del Juego",
graphic="←Video",
sound="Sonido→",
layout="Diseño",
-- style="Style",
ctrl="Sensibilidad",
key="Teclas",

View File

@@ -185,7 +185,7 @@ return{
"Musique : MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
"Voix & Sons: Miya, Xiaoya, Mono, MrZ, Trebor",
"Performance: 模电, HBM",
"Traduction: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"Traduction: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
"",
"Merci à:",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
@@ -299,10 +299,9 @@ return{
},
setting_game={
title="Paramètres du jeu",
graphic="←Vidéo",
sound="Son→",
layout="Disposition",
-- style="Style",
ctrl="Paramètres de contrôle",
key="Touches",

896
parts/language/lang_id.lua Normal file
View File

@@ -0,0 +1,896 @@
local C=COLOR
return{
loadText={
loadSFX="Memuat efek suara",
loadSample="Memuat sampel-sampel instrumen",
loadVoice="Memuat kumpulan suara",
loadFont="Memuat fon",
loadModeIcon="Memuat ikon-ikon mode",
loadMode="Memuat mode-mode",
loadOther="Memuat aset-aset yang lain",
finish="Tekan tombol apapun untuk memulai!",
},
sureQuit="Tekan lagi untuk keluar",
sureReset="Tekan lagi untuk mereset",
sureDelete="Tekan lagi untuk menghapus",
newDay="Hari baru, awal baru!",
playedLong="Anda telah bermain lama. Waktunya istirahat!",
playedTooMuch="Anda telah bermain terlalu lama! Techmino sangat menyenangkan, tetapi jangan lupa istirahat!",
settingWarn="Awas, Anda akan mengubah beberapa pengaturan yang tidak biasanya diubah!",
atkModeName={"Acak","Badge","K.O.","Penyerang"},
royale_remain="$1 Pemain Tersisa",
powerUp={[0]="+000%","+025%","+050%","+075%","+100%"},
cmb={nil,"1 Kombo","2 Kombo","3 Kombo","4 Kombo","5 Kombo","6 Kombo","7 Kombo","8 Kombo","9 Kombo","10 Kombo!","11 Kombo!","12 Kombo!","13 Kombo!","14 Kombo!!","15 Kombo!!","16 Kombo!!","17 Kombo!!!","18 Kombo!!!","19 Kombo!!!","MEGA KOMBO"},
spin=" spin",
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",
replaying="[Diulang]",
tasUsing="[TAS]",
stage="Tahap $1 selesai!",
great="Bagus!",
awesome="Luar biasa!",
almost="Hampir!",
continue="Lanjut!",
maxspeed="KECEPATAN MAXIMUM!",
speedup="Percepatkan!",
missionFailed="Salah",
speedLV="Kecepatan lvl",
piece="Blok",line="Baris",atk="Baris Terkirim",eff="Efisiensi",
rpm="RPM",tsd="TSD",
grade="Nilai",techrash="Techrash",
wave="Gelombang",nextWave="Lanjutan",
combo="Kombo",maxcmb="Max Kombo",
pc="PC",ko="KOs",
win="Menang!",
lose="Kalah",
finish="Selesai",
gamewin="Anda menang!",
gameover="Tamat",
pause="Terjeda",
pauseCount="Jeda-jeda",
finesse_ap="Semua sempurna",
finesse_fc="Kombo penuh",
page="Halaman:",
cc_fixed="CC tidak cocok dengan urutan tetap.",
cc_swap="CC tidak cocok dengan mode simpan tukar.",
ai_prebag="AI tidak cocok dengan urutan terubah yang memiliki non-tetromino.",
ai_mission="AI tidak cocok dengan misi terubah.",
switchSpawnSFX="Nyalakan efek suara munculan blok!",
needRestart="Ulangi untuk menerapkan perubahan.",
loadError_errorMode="'$1' eror memuat: tidak ada mode memuat '$2'",
loadError_read="'$1' eror memuat: gagal membaca",
loadError_noFile="'$1' eror memuat: tidak ada file:",
loadError_other="'$1' eror memuat: $2",
loadError_unknown="'$1' eror memuat: alasan tidak diketahui",
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",
copyDone="Tersalin!",
saveDone="Data disimpan",
exportSuccess="Ekspor berhasil",
importSuccess="Impor berhasil",
dataCorrupted="Data rusak",
pasteWrongPlace="Menempel di tempat yang salah?",
noFile="File tidak ada",
nowPlaying="Sekarang mendengarkan:",
VKTchW="Berat sentuhan",
VKOrgW="Berat asal",
VKCurW="Berat posisi saat ini",
noScore="Tidak ada nilai",
modeLocked="Terkunci",
unlockHint="Raih nilai B keatas dalam mode sebelumnya untuk membuka kunci.",
highScore="Nilai-nilai tertinggi",
newRecord="Rekor baru!",
replayBroken="Tidak bisa memuat ulangan permainan",
dictNote="==Tersalin dari TetroDictionary==",
getNoticeFail="Gagal mengambil pengumuman-pengumuman",
oldVersion="Versi $1 sekarang tersedia",
needUpdate="Butuh versi lebih baru!",
versionNotMatch="Versi tidak sama!",
notFinished="Segera akan datang!",
jsonError="Eror JSON",
noUsername="Silahkan masukki username Anda",
wrongEmail="Alamat email tidak sah",
noPassword="Silahkan masukki kata sandi Anda",
diffPassword="Kata sandi tidak sama",
registerRequestSent="Permintaan daftar telah terkirim.",
registerSuccessed="Pendaftaran sukses!",
loginSuccessed="Anda sekarang tergabung!",
accessSuccessed="Akses diberikan",
wsConnecting="Menghubungkan websocket…",
wsFailed="Koneksi websocket gagal",
wsClose="Websocket tertutup:",
netTimeout="Koneksi waktu habis",
onlinePlayerCount="Online",
createRoomSuccessed="Ruang dibuat",
started="Bermain",
joinRoom="telah memasuki ruangan.",
leaveRoom="telah keluar dari ruangan.",
ready="Siap",
connStream="Menghubungi",
waitStream="Menunggu",
spectating="Menonton",
chatRemain="Online",
chatStart="------Awal percakapan------",
chatHistory="------Pesan-pesan baru di bawah ini------",
keySettingInstruction="Tekan untuk menghubung tombol ke aksi tertentu\nescape: batal\nbackspace: hapus",
customBGhelp="Seret file gambar di sini untuk memasangkan background",
customBGloadFailed="Format file gambar tidak didukung untuk background",
errorMsg="Techmino mengalami eror dan harus memuat ulang.\nAnda bisa mengirim log eror ke developer.",
tryAnotherBuild="[Invalid UTF-8] Jika Anda di Windows, coba download Techmino-win32 atau Techmino-win64 (berbeda dari yang Anda menggunakan sekarang).",
modInstruction="Pilih mod Anda!\nMod memungkinkan Anda untuk mengubah permainan,\ntetapi juga bisa menghancur permainan.\nNilai-nilai tidak akan disimpan saat menggunakan mod.",
modInfo={
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.",
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.",
hideBoard="Sembunyikan Tempat Main\nMenyembunyikan bagian atau seluruh tempat main.",
flipBoard="Putar Tempat Main\nMembalik atau memutar tempat main.",
dropDelay="Gravitasi\nMengubah gravitasi dalam frame per blok.",
lockDelay="Tunda Mengunci\nMengubah tunda mengunci dalam frame.",
waitDelay="Tunda Muncul\nMengubah tunda muncul blok dalam frame.",
fallDelay="Tunda Baris\nMengubah tunda saat membuat baris dalam frame.",
life="Nyawa\nMengubah nomor awal nyawa.",
forceB2B="Hanya B2B\nMengakhirkan permainan jika meter B2B jatuh ke 0.",
forceFinesse="Efisiensi Tombol Maximum\nMengakhirkan permainan jika efisiensi tombol tidak maksimum.",
tele="Teleport\nMengubah DAS dan ARR ke 0.",
noRotation="Tidak berputar\nMematikan pemutaran blok.",
noMove="Tidak bergerak\nMematikan pergerakan kiri dan kanan blok.",
customSeq="Pengacak\nMengganti pengacak blok.",
pushSpeed="Kecepatan blok serangan\nMengubah kecepatan muncul blok serangan (blok/frame).",
boneBlock="[ ]\nMain dengan blok [ ].",
},
pauseStat={
"Waktu:",
"Tombol/Putar/Simpan:",
"Blok:",
"Baris/Baris Gali:",
"Serangan/Serangan Gali:",
"Diterima:",
"Jumlah Tindakan Membuat Baris:",
"Spins:",
"B2B/B3B/PC/Hampir PC:",
"Efisiensi Tombol:",
},
radar={"BLOK","SERANGAN","SRGN + BLOK","SRGN TERKIRIM","KECEPATAN","GALI"},
radarData={"D'PM","ADPM","APM","SPM","L'PM","DPM"},
stat={
"Jumlah Pembukaan:",
"Jumlah Permainan:",
"Jumlah Waktu Bermain:",
"Tombol/Putar/Simpan:",
"Blok/Baris/Serangan:",
"Serangan Diterima/Ditolak/Muncul:", -- what is this
"Gali/Serangan Gali:",
"Efisiensi/Efisiensi Gali:",
"B2B/B2B2B:",
"PC/Hampir PC:",
"Efisiensi Tombol Tidak Maksimal/Nilai:",
},
aboutTexts={
"Ini hanya penyusun blok *normal*. Sungguh, hanya itu saja.",
"Terinspirasi oleh C2, IO, JS, WWC, KOS, dll.",
"",
"Dipersembahkan oleh kerangka permainan LÖVE",
"Saran dan laporan bug dihargai!",
"Pastikan untuk mendapat permainan ini hanya dari sumber resmi,",
"karena kita tidak bisa meyakinkan Anda aman jika Anda mendapat permainan ini dari sumber lain.",
"Penciptanya tidak bertanggung jawab untuk modifikasi.",
FNSF and"/"or"Permainan ini gratis, tetapi sumbangan sangat dihargai.",
FNSF and"/"or"Jika Anda tidak bisa menggunakan WeChat Pay atau AliPay,",
FNSF and"/"or"Anda bisa pergi ke halaman P\97\116\114\101\111\110 kita (Link in Zictionary) untuk mendukung kami!",
},
staff={
"Pencipta: MrZ Email: 1046101471@qq.com",
"Dipersembahkan oleh kerangka permainan LÖVE",
"",
"Program: MrZ, Particle_G, [scdhh, FinnTenzor]",
"Penggambar: MrZ, Gnyar, C₂₉H₂₅N₃O₅, ScF, [旋律星萤, T0722]",
"Musik: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
"Suara: Miya, Xiaoya, Mono, MrZ, Trebor",
"Pertunjukan: 模电, HBM",
"Translasi: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
"",
"Terima Kasih Khusus:",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
"Farter, Teatube, 蕴空之灵, T9972, [All test staff]",
},
used=[[
Alat-alat yang digunakan:
BeepBox
GoldWave
GFIE
FL Mobile
Library yang digunakan:
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="Dukung pencipta",
WidgetText={
main={
offline="Main Sendiri",
qplay="Terakhir Dimain",
online="Multipemain",
custom="Permainan Tersesuai",
setting="Pengaturan",
stat="Statistik",
dict="Zictionary",
replays="Permainan Terulang",
},
main_simple={
sprint="Balapan",
marathon="Maraton",
},
mode={
mod="Mod (F1)",
start="Mulai",
},
mod={
title="Mod",
reset="Reset (tab)",
unranked="Tidak Berperingkat",
},
pause={
setting="Pengaturan (S)",
replay="Ulang (P)",
save="Simpan Pengulangan (O)",
resume="Lanjut (esc)",
restart="Coba lagi (R)",
quit="Berhenti (Q)",
tas="TAS (T)",
},
net_menu={
league="Tech League",
ffa="FFA",
rooms="Ruang-ruang",
logout="Log out",
},
net_league={
match="Cari Tandingan",
},
net_rooms={
password="Password",
refreshing="Merefresh daftar",
noRoom="Tidak ada ruangan",
refresh="Refresh",
new="Ruangan Baru",
join="Masuk",
},
net_newRoom={
title="Pengaturan Ruangan",
roomName="Nama ruangan (Jika kosong: \"[username]'s room\")",
password="Password (opsional)",
description="Deskripsi Ruangan",
life="Nyawa",
pushSpeed="Kcptn. Dorongan",
garbageSpeed="Kcptn. Serangan",
visible="Visibilitas",
freshLimit="Batas Reset Tunda Kunci",
fieldH="Ketinggian",
bufferLimit="Batas Serangan",
heightLimit="Batas Tinggi",
drop="Tunda Jatuh",
lock="Tunda Kunci",
wait="Tunda Muncul",
fall="Tunda Baris",
hang="Tunda Kalah",
hurry="Menggangu Tunda",
capacity="Kapasitas",
create="Buat",
ospin="O-spin",
fineKill="100% Efisiensi Tombol",
b2bKill="Akhirkan Permainan Jika Tidak B2B",
lockout="Akhirkan Permainan Jika Lock Out",
easyFresh="Reset Tunda Kunci Normal",
deepDrop="Jatuh Dalam",
bone="Blok [ ]",
eventSet="Aturan",
holdMode="Mode Simpan",
nextCount="Pratinjau Blok Lanjut",
holdCount="Blok Simpan",
infHold="Simpan Selamanya",
phyHold="Simpan Di Tempat",
},
net_game={
ready="Siap",
spectate="Nonton",
cancel="Batal Siap",
},
setting_game={
title="Pengaturan Permainan",
graphic="←Video",
sound="Audio→",
layout="Ubah Blok-blok",
ctrl="Ubah Kontrol",
key="Ubah Tindakan Tombol",
touch="Pengaturan Sentuhan",
showVK="Tunjuk Tombol Sentuh",
reTime="Tunda Mulai",
RS="Sistem Putar",
menuPos="Pos. Tombol Menu",
sysCursor="Guna Mouse Bawaan",
autoPause="Jeda Jika Tidak Difokus",
autoSave="Simpan Rekor Otomatis",
autoLogin="Auto-login Saat Membuka",
simpMode="Mode Sederhana",
},
setting_video={
title="Pengaturan Video",
sound="←Audio",
game="Permainan→",
block="Gambarkan Blok",
smooth="Jatuh Halus",
upEdge="Blok 3D",
bagLine="Pemisah Kantong",
ghostType="Tipe Hantu",
ghost="Kegelapan Hantu",
center="Kegelapan Tengah Pemutaran",
grid="Kegelapan Kisi",
lineNum="Kegelapan Nomor Baris",
lockFX="Efek Kunci",
dropFX="Efek Jatuh",
moveFX="Efek Pindah",
clearFX="Efek Baris",
splashFX="Efek Guyuran Baris",
shakeFX="Goyang Tempat Main",
atkFX="Efek Serang",
frame="Kecepatan Bingkai (%)",
FTlock="Lewat Bingkai",
text="Teks Baris",
score="Teks Nilai",
bufferWarn="Peringatan Serangan",
showSpike="Teks Serang",
nextPos="Pratinjau Muncul Blok",
highCam="Scroll Tempat Main",
warn="Peringatan Bahaya",
clickFX="Efek Klik",
power="Info Baterai",
clean="Gambar Cepat",
fullscreen="Layar Penuh",
bg_on="B.G. Normal",
bg_off="Tidak Ada B.G.",
bg_custom="Ubah B.G.",
blockSatur="Kejenuhan Blok Aktif",
fieldSatur="Kejenuhan Blok Terkunci",
},
setting_sound={
title="Pengaturan Audio",
game="←Permainan",
graphic="Video→",
mainVol="Volume Utama",
bgm="Musik",
sfx="Efek Suara",
stereo="Stereo",
spawn="Efek Muncul Blok",
warn="Efek Bahaya",
vib="Getaran",
voc="Suara",
autoMute="Bisukan Bila Tidak Fokus",
fine="Efek Efisiensi Tombol Tidak Maksimum",
sfxPack="Kumpulan Efek Suara",
vocPack="Kumpulan Suara",
apply="Terapkan",
},
setting_control={
title="Pengaturan Kontrol",
preview="Pratinjau",
das="DAS",arr="ARR",
dascut="Gangguan DAS",
dropcut="Gangguan Auto-kunci",
sddas="DAS Jatuh",sdarr="ARR Jatuh",
ihs="Simpan Saat Tunda",
irs="Putar Saat Tunda",
ims="Pindah Saat Tunda",
reset="Reset",
},
setting_key={
a1="Pindah Kiri",
a2="Pindah Kanan",
a3="Putar Kanan",
a4="Putar Kiri",
a5="Putar 180°",
a6="Jatuh Cepat",
a7="Jatuh Pelan",
a8="Simpan",
a9="Fungsi 1",
a10="Fungsi 2",
a11="Kiri Instan",
a12="Kanan Instan",
a13="Jatuh Instan",
a14="Jatuh 1",
a15="Jatuh 4",
a16="Jatuh 10",
a17="Jatuh Kiri",
a18="Jatuh Kanan",
a19="Zangi Kiri",
a20="Zangi Kanan",
restart="Coba Lagi",
},
setting_skin={
skinSet="Tekstur Blok",
title="Pengaturan Ragam",
skinR="Reset Warna",
faceR="Reset Arah",
},
setting_touch={
default="Bawaan",
snap="Kisi",
size="Ukuran",
shape="Bentuk",
},
setting_touchSwitch={
b1= "Pindah Kiri:", b2="Pindah Kanan:",b3="Putar Kanan:", b4="Putar Kiri:",
b5= "Putar 180°:", b6="Jatuh Cepat:", b7="Jatuh Pelan:", b8="Simpan:",
b9= "Fungsi 1:", b10="Fungsi 2:", b11="Kiri Instan:",b12="Kanan Instan:",
b13="Jatuh Instan:",b14="Jatuh 1:", b15="Jatuh 4:", b16="Jatuh 10:",
b17="Jatuh Kiri:", b18="Jatuh Kanan:",b19="Zangi Kiri:", b20="Zangi Kanan:",
norm="Normal",
pro="Canggih",
icon="Ikon",
sfx="Efek Suara",
vib="Getaran",
alpha="Kegelapan",
track="Auto Lacak",
dodge="Auto Hindar",
},
customGame={
title="Permainan Tersesuai",
defSeq="Urutan Bawaan",
noMsn="Tidak Ada Misi",
drop="Tunda Jatuh",
lock="Tunda Kunci",
wait="Tunda Muncul",
fall="Tunda Garis",
hang="Tunda Kalah",
hurry="Gangguan Tunda",
bg="Latar Belakang",
bgm="Musik",
copy="Salin Permainan",
paste="Tempel Permainan",
play_clear="Mulai Normal",
play_puzzle="Mulai Membangun",
reset="Reset (del)",
advance="More (A)",
mod="Mod (F1)",
field="Ubah Blok (F)",
sequence="Ubah Urutan (S)",
mission="Ubah Misi (M)",
eventSet="Aturan",
holdMode="Mode Simpan",
nextCount="Pratinjau Blok Lanjut",
holdCount="Simpan Blok",
infHold="Simpan Selamanya",
phyHold="Simpan Di Tempat",
fieldH="Ketinggian",
visible="Visibilitas",
freshLimit="Batas Reset Tunda Kunci",
opponent="Lawan",
life="Nyawa",
pushSpeed="Kcptn. Dorongan",
garbageSpeed="Kcptn. Serangan",
bufferLimit="Batas Serangan",
heightLimit="Batas Tinggi",
ospin="O-Spin",
fineKill="Maksimum Efisiensi Tombol",
b2bKill="Akhirkan Permainan Jika Tidak B2B",
lockout="Akhirkan Permainan Jika Lock Out",
easyFresh="Reset Tunda Kunci Normal",
deepDrop="Jatuh Dalam",
bone="Blok []",
},
custom_field={
title="Permainan Tersesuai",
subTitle="Blok Awalan",
any="Hapus",
smart="Auto",
push="Tambah Baris (K)",
del="Hapus Garis (L)",
demo="Jangan Menunjukkan ×",
newPg="Hal. Baru (N)",
delPg="Hapus Hal. (M)",
prevPg="Hal. Sebelumnya",
nextPg="Hal. Selanjuynya",
},
custom_sequence={
title="Permainan Tersesuai",
subTitle="Urutan Blok",
sequence="Urutan Blok",
},
custom_mission={
title="Permainan Tersesuai",
subTitle="Misi",
_1="1",_2="2",_3="3",_4="4",
any1="apapun-1",any2="apapun-2",any3="apapun-3",any4="apapun-4",
PC="PC",
Z1="Z1",S1="S1",J1="J1",L1="L1",T1="T1",O1="O1",I1="I1",
Z2="Z2",S2="S2",J2="J2",L2="L2",T2="T2",O2="O2",I2="I2",
Z3="Z3",S3="S3",J3="J3",L3="L3",T3="T3",O3="O3",I3="I3",
O4="O4",I4="I4",
mission="Paksa Misi",
},
about={
staff="Staf",
his="Riwayat",
legals="Info Legal",
},
dict={
title="TetroKamus",
},
stat={
path="Buka Folder Data",
save="Kelola Data",
},
music={
title="Ruang Musik",
arrow="",
now="Sekarang bermain:",
bgm="Volume",
sound="Efek Suara",
},
launchpad={
title="Ruang Efek Suara",
bgm="Volume Musik",
sfx="Volume Efek",
voc="Volume Suara",
music="Musik",
label="label",
},
login={
title="Masuk",
register="Daftar",
email="Alamat Email",
password="Password",
keepPW="Ingat Saya",
login="Masuk",
},
register={
title="Daftar",
login="Masuk",
username="Username",
email="Alamat Email",
password="Password",
password2="Ulangi Password",
register="Daftar",
registering="Menunggu respon…",
},
account={
title="Akun",
},
app_15p={
color="Warna",
invis="Sembunyi",
slide="Geser",
pathVis="Tunjuk Jalur",
revKB="Dibalik",
},
app_schulteG={
rank="Ukuran",
invis="Sembunyi",
disappear="Hilangkan",
tapFX="Efek Sentuh",
},
app_AtoZ={
level="Level",
keyboard="Keyboard",
},
app_2048={
invis="Sembunyi",
tapControl="Kontrol Sentuh",
skip="Lewati Ronde",
},
app_ten={
next="Pratinjau",
invis="Sembunyi",
fast="Cepat",
},
app_dtw={
color="Warna",
mode="Mode",
bgm="Musik",
arcade="Arcade",
},
app_link={
invis="Sembunyi",
},
savedata={
export="Expor ke papan klip",
import="Impor dari papan klip",
unlock="Kemajuan",
data="Statistik",
setting="Pengaturan",
vk="Aturan Tombol Sentuh",
couldSave="Penyimpanan Cloud (PERINGATAN: HANYA PERCOBAAN)",
notLogin="[Masuk ke akun untuk mengakses penyimpanan cloud",
upload="Unggah ke Cloud",
download="Unduh dari Cloud",
},
},
modes={
['sprint_10l']= {"Balapan", "10L", "Buat 10 baris!"},
['sprint_20l']= {"Balapan", "20L", "Buat 20 baris!"},
['sprint_40l']= {"Balapan", "40L", "Buat 40 baris!"},
['sprint_100l']= {"Balapan", "100L", "Buat 100 baris!"},
['sprint_400l']= {"Balapan", "400L", "Buat 400 baris!"},
['sprint_1000l']= {"Balapan", "1.000L", "Buat 1.000 baris!"},
['sprintPenta']= {"Balapan", "PENTOMINO", "40L dengan pentomino!"},
['sprintMPH']= {"Balapan", "MPH", "Tanpa ingatan\nTanpa pratinjau\nTanpa simpan"},
['dig_10l']= {"Gali", "10L", "Gali 10 baris!"},
['dig_40l']= {"Gali", "40L", "Gali 40 baris!"},
['dig_100l']= {"Gali", "100L", "Gali 100 baris!"},
['dig_400l']= {"Gali", "400L", "Gali 400 baris!"},
['drought_n']= {"Nasib Buruk", "100L", "Tidak ada blok I..."},
['drought_l']= {"Nasib Buruk+", "100L", "Nasib sangat buruk..."},
['marathon_n']= {"Maraton", "NORMAL", "200-baris maraton dengan kecepatan meningkat"},
['marathon_h']= {"Maraton", "SULIT", "200-baris maraton dengan kecepatan tinggi"},
['solo_e']= {"Tarung", "MUDAH", "Kalahkan AInya!"},
['solo_n']= {"Tarung", "NORMAL", "Kalahkan AInya!"},
['solo_h']= {"Tarung", "SULIT", "Kalahkan AInya!"},
['solo_l']= {"Tarung", "GILA", "Kalahkan AInya!"},
['solo_u']= {"Tarung", "TERAKHIR", "Kalahkan AInya!"},
['techmino49_e']= {"Tech 49", "MUDAH", "Pertarungan dengan 49 pemain."},
['techmino49_h']= {"Tech 49", "SULIT", "Pertarungan dengan 49 pemain."},
['techmino49_u']= {"Tech 49", "TERAKHIR", "Pertarungan dengan 49 pemain."},
['techmino99_e']= {"Tech 99", "MUDAH", "Pertarungan dengan 99 pemain."},
['techmino99_h']= {"Tech 99", "SULIT", "Pertarungan dengan 99 pemain."},
['techmino99_u']= {"Tech 99", "TERAKHIR", "Pertarungan dengan 99 pemain."},
['round_e']= {"Giliran", "MUDAH", "Giliran main melawan AI!"},
['round_n']= {"Giliran", "NORMAL", "Giliran main melawan AI!"},
['round_h']= {"Giliran", "SULIT", "Giliran main melawan AI!"},
['round_l']= {"Giliran", "GILA", "Giliran main melawan AI!"},
['round_u']= {"Giliran", "TERAKHIR", "Giliran main melawan AI!"},
['master_n']= {"Jago", "NORMAL", "Untuk pemula 20G"},
['master_h']= {"Jago", "SULIT", "Untuk pro 20G"},
['master_m']= {"Jago", "M21", "Untuk jago 20G"},
['master_final']= {"Jago", "TERAKHIR", "Lebih dari 20G"},
['master_ph']= {"Jago", "KHAYALAN", "???"},
['master_ex']= {"Sangat Jago", "EKSTRA", "Blok tidak kelihatan"},
['strategy_e']= {"Strategi", "MUDAH", "Keputusan 20G cepat"},
['strategy_h']= {"Strategi", "SULIT", "Keputusan 20G cepat"},
['strategy_u']= {"Strategi", "TERAKHIR", "Keputusan 20G cepat"},
['blind_e']= {"Tak Terlihat", "MUDAH", "Untuk pemula"},
['blind_n']= {"Tak Terlihat", "NORMAL", "Untuk amatir"},
['blind_h']= {"Tak Terlihat", "SULIT", "Untuk orang berpengalaman"},
['blind_l']= {"Tak Terlihat", "GILA", "Untuk profesional"},
['blind_u']= {"Tak Terlihat", "???", "Apakah Anda siap?"},
['blind_wtf']= {"Tak Terlihat", "TERAKHIR", "Anda belum siap"},
['classic_e']= {"Klasik", "MUDAH", "Rekreasi berkecepatan rendah dari tahun 80-an"},
['classic_h']= {"Klasik", "SULIT", "Rekreasi berkecepatan medium dari tahun 80-an"},
['classic_u']= {"Klasik", "TERAKHIR", "Rekreasi berkecepatan tinggi dari tahun 80-an"},
['survivor_e']= {"Bertahan", "MUDAH", "Berapa lama Anda bisa bertahan?"},
['survivor_n']= {"Bertahan", "NORMAL", "Berapa lama Anda bisa bertahan?"},
['survivor_h']= {"Bertahan", "SULIT", "Berapa lama Anda bisa bertahan?"},
['survivor_l']= {"Bertahan", "GILA", "Berapa lama Anda bisa bertahan?"},
['survivor_u']= {"Bertahan", "TERAKHIR", "Berapa lama Anda bisa bertahan?"},
['attacker_h']= {"Penyerang", "SULIT", "Praktekkan keahlian menyerang Anda!"},
['attacker_u']= {"Penyerang", "TERAKHIR", "Praktekkan keahlian menyerang Anda!"},
['defender_n']= {"Pembela", "NORMAL", "Praktekkan keahlian membela Anda!"},
['defender_l']= {"Pembela", "GILA", "Praktekkan keahlian membela Anda!"},
['dig_h']= {"Pembor", "SULIT", "Praktekkan keahlian menggali Anda!"},
['dig_u']= {"Pembor", "TERAKHIR", "Praktekkan keahlian menggali Anda!"},
['clearRush']= {"Gegas Baris", "NORMAL", "Tutorial all-spin!\n[Dalam pengembangan]"},
['c4wtrain_n']= {"Latihan C4W", "NORMAL", "Kombo tidak terbatas."},
['c4wtrain_l']= {"Latihan C4W", "GILA", "Kombo tidak terbatas."},
['pctrain_n']= {"Latihan PC", "NORMAL", "Latihan PC"},
['pctrain_l']= {"Latihan PC", "GILA", "Latihan PC yang lebih sulit"},
['pc_n']= {"Tantangan PC", "NORMAL", "Dapatkan PC sampai 100 baris!"},
['pc_h']= {"Tantangan PC", "SULIT", "Dapatkan PC sampai 100 baris!"},
['pc_l']= {"Tantangan PC", "GILA", "Dapatkan PC sampai 100 baris!"},
['pc_inf']= {"Tantangan PC", "TAK TERBATAS", "Dapatkan PC sebanyaknya!"},
['tech_n']= {"Tech", "NORMAL", "Coba jaga deret Back-To-Back!"},
['tech_n_plus']= {"Tech", "NORMAL+", "Hanya Spins & PCs dibolehkan"},
['tech_h']= {"Tech", "SULIT", "Coba jaga deret Back-To-Back!"},
['tech_h_plus']= {"Tech", "SULIT+", "Hanya Spins & PCs dibolehkan"},
['tech_l']= {"Tech", "GILA", "Coba jaga deret Back-To-Back!"},
['tech_l_plus']= {"Tech", "GILA+", "Hanya Spins & PCs dibolehkan"},
['tech_finesse']= {"Tech", "EF. TOMBOL", "Efisiensi tombol harus maksimal!"},
['tech_finesse_f']={"Tech", "EF. TOMBOL+", "Efisiensi tombol maksimal dan tidak ada garis normal!"},
['tsd_e']= {"Tantangan TSD", "MUDAH", "Hanya T-Spin Double dibolehkan!"},
['tsd_h']= {"Tantangan TSD", "SULIT", "Hanya T-Spin Double dibolehkan!"},
['tsd_u']= {"Tantangan TSD", "TERAKHIR", "Hanya T-Spin Double dibolehkan!"},
['backfire_n']= {"Serangan Balik", "NORMAL", "Tahankan serang baliknya!"},
['backfire_h']= {"Serangan Balik", "SULIT", "Tahankan serang baliknya!"},
['backfire_l']= {"Serangan Balik", "GILA", "Tahankan serang baliknya!"},
['backfire_u']= {"Serangan Balik", "TERAKHIR", "Tahankan serang baliknya!"},
['sprintAtk']= {"Balapan", "100 Serangan", "Kirim 100 baris serangan!"},
['sprintEff']= {"Balapan", "Efisiensi", "Kirim lebih banyak serangan sampai 40 baris!"},
['zen']= {"Zen", "200L", "Permainan 200-garis tanpa batas waktu"},
['ultra']= {"Ultra", "EKSTRA", "Permainan 2 menit. Dapatkan nilai sebanyaknya!"},
['infinite']= {"Tak Terbatas", "", "Bak pasir"},
['infinite_dig']= {"Tak Terbatas: Gali","", "Gali, gali, gali"},
['marathon_inf']= {"Maraton", "TAK TERBATAS", "Maraton tanpa akhir."},
['custom_clear']= {"Tersesuai", "NORMAL"},
['custom_puzzle']= {"Tersesuai", "TEKA-TEKI"},
},
getTip={refuseCopy=true,
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"\"Techmino.app\" tidak bisa dibuka karena penciptanya tidak bisa diverifikasi.",
"\"Techmino.app\" akan merusak komputer Anda. Anda sebaiknya memindah itu ke tempat sampah.",
"\"TechminOS\"",
"\\jezevec/\\jezevec/\\jezevec/",
"\\osk/\\osk/\\osk/",
"↑↑↓↓←→←→BA",
"$include<studio.h>",
"20G sebenarnya peraturan permainan baru!",
"Rekor dunia 40L: 14.915s dari Reset_",
"Sistem pencapaian segera akan datang!",
"ALL SPIN!",
"Am G F G",
"B2B2B???",
"B2B2B2B tidak ada.",
"Back-to-Back Techrash, 10 Kombo, PC!",
"Pastikan untuk memberikan yang terbaik lagi hari ini!",
"Bridge clear segera akan datang!",
"Bisakah Anda menguasai penyusun modern namun akrab ini?",
"Changelog dalam Bahasa Inggris bisa ditemukan di Discord.",
"Color clear segera akan datang!",
"Menurunkan DAS dan ARR membuat permainannya lebih cepat tetapi lebih sulit untuk mengontrol.",
"Apakah saya baru saja melihat Back-to-Back-to-Back?",
"Apakah B2B2B2B ada?",
"Jangan biarkan bug kecil menghancur harimu!",
"Jangan melihat langsung ke bug!",
"Nikmati sistem rotasi Techmino!",
"Luar biasa, tapi mari kita pergi lebih baik lain kali…",
"Cari tahu apa yang ada di pengaturan!",
"Apakah Anda menemukan bug? Buka issue di halaman GitHub kami!",
"Permainan penyusun blok gratis dengan mode Battle Royale!",
"git commit",
"git push -f",
"Punya saran? Post sarannya di Discord kami!",
"Pernahkah Anda memperhatikan apa \"memutar\" melakukan ke blok?",
"Headphone direkomendasikan untuk pengalaman yang lebih baik.",
"Hello world!",
"Hanya ada 2 jenis trimino, yaitu I3 dan L3.",
"if a==true",
"Tingkatkan frekuensi gambar Anda untuk pengalaman yang lebih baik.",
"Sistem [tindakan] awal dapat menyelamatkan Anda.",
"Apakah B2B2B2B mungkin?",
"Ini sedang memuat! Bukan sekedar cutscene!",
"Anda dapat menyelesaikan 40L tanpa tombol kiri/kanan.",
"Anda dapat menyelesaikan 40L tanpa tombol putar.",
"Bergabunglah server Discord kami!",
"l-=-1",
"Biarkan bass menendang!",
"Kecepatan bingkai rendah mengurangi pengalaman bermain game Anda.",
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
"Lua No.1",
"Mix clear segera akan datang!",
"Sebagian besar ikon tombol dibuat oleh mesin terbang yang digambar sendiri di Unicode Private Use Area.",
"Apakah musiknya terlalu mengganggu? Anda dapat mematikannya.",
"Tidak ada easter egg di menu ini jika Anda menyalakan gaya sederhana!",
"O-Spin Triple!",
"OHHHHHHHHHHHHHH",
"Main dengan satu tangan!",
"Bermain bagus membutuhkan waktu!",
"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.",
"Split Clear segera akan datang!",
"sudo rm -rf /*",
"Techmino merupakan kombinasi dari Technique dan Tetromino.",
"Techmino memiliki edisi Nspire-CX!",
"Techmino sangat menyenangkan!",
"TetroDictionary sekarang tersedia dalam bahasa Inggris.",
"Sebagian besar musik dalam permainan ini dibuat menggunakan Beepbox.",
"Nama-nama yang muncul di latar belakang halaman Staf adalah daftar pendukung kami.",
"Masa depan penyusun blok milik Anda di Techmino!",
"Ada beberapa mode tersembunyi dalam permainan ini yang tidak dapat dimasuki menggunakan peta.",
"Ada total 18 pentomino yang berbeda.",
"Ada total 7 tetromino yang berbeda.",
"Coba gunakan beberapa slot simpan!",
"Try using two rotation buttons. Using all three of them is better.",
"Peringatan: Seni Programmer",
"Bagaimana dengan 20 PCs?",
"Bagaimana dengan 23 PCs dalam 100 baris?",
"Bagaimana dengan 26 TSDs?",
"while(false)",
"Anda adalah seorang jago!",
"Anda dipersilakan untuk membantu kami membuat musik dan efek suara!",
"Anda dapat menghubungkan keyboard ke ponsel atau tablet Anda (tetapi tidak berfungsi di iOS).",
"Anda bisa mengubah tindakan tombol di pengaturan!",
"Anda bisa menavigasi menu dengan keyboard.",
"Anda bisa membuka folder penyimpanan data dari halaman Statistik.",
"Anda bisa melakukan spin dengan semua blok di permainan ini kecuali blok O1.",
"Anda bisa mengubah arah muncul blok.",
"ZS JL T O I",
{C.C,"Coba juga 15puzzle!"},
{C.C,"Coba juga Ballance!"},
{C.C,"Coba juga Minecraft!"},
{C.C,"Coba juga Minesweeper!"},
{C.C,"Coba juga Orzmic!"},
{C.C,"Coba juga osu!"},
{C.C,"Coba juga Phigros!"},
{C.C,"Coba juga Puyo Puyo!"},
{C.C,"Coba juga Rubik's cube!"},
{C.C,"Coba juga Terraria!"},
{C.C,"Coba juga Touhou Project!"},
{C.C,"Coba juga VVVVVV!"},
{C.C,"Coba juga World of goo!"},
{C.C,"Coba juga Zuma!"},
{C.H,"REGRET!!"},
{C.lP,"Nomor rahasia: 626"},
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
{C.lY,"COOL!!"},
{C.N,"Lua",C.Z," No.1"},
{C.P,"T-spin!"},
{C.R,"\"Penyalahgunaan DMCA\""},
{C.R,"\"Hukum kekayaan intelektual\""},
{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"},
{C.Y,"O-Spin Triple!"},
{C.Z,"Apa? ",C.lC,"X-spin?"},
}
}

View File

@@ -207,7 +207,7 @@ return{
"Music: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
"Voice & Sound: Miya, Xiaoya, Mono, MrZ, Trebor",
"Performance: 模电, HBM",
"Traduzir: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
"Traduzir: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
"",
"Special Thanks:",
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
@@ -327,7 +327,7 @@ return{
title="Config. de jogo",
graphic="←Video",
sound="Som→",
layout="Layout",
-- style="Style",
ctrl="Config. controle",
key="Map. teclas",

View File

@@ -228,10 +228,9 @@ return{
},
setting_game={
title="%~~%",
graphic="←Video",
sound="Sound→",
layout="=-=-=",
style="=-=-=",
ctrl="=?=",
key="=?",

View File

@@ -87,7 +87,6 @@ return{fallback='zh',
WidgetText={
setting_game={
title="改游戏",
graphic="←改画面",
sound="改声音→",

View File

@@ -219,7 +219,7 @@ return{
"音乐: MrZ柒栎流星ERMTreborC₂₉H₂₅N₃O₅[T0722Aether]",
"音效/语音: MiyaXiaoyaMonoMrZTrebor",
"演出: 模电HBM",
"翻译: User670MattMayugaMizuMr.FaqScFC₂₉H₂₅N₃O₅",
"翻译: User670MattMayugaMizuMr.FaqScFC₂₉H₂₅N₃O₅NOT_A_ROBOT",
"",
"特别感谢:",
"FlyzBig_TrueNOT_A_ROBOT思竣yuhao7370",
@@ -337,9 +337,9 @@ return{
},
setting_game={
title="游戏设置",
graphic="←画面设置",
sound="声音设置",
layout="外观",
graphic="←画面",
sound="声音→",
style="风格",
ctrl="控制设置",
key="键位设置",
@@ -356,8 +356,8 @@ return{
},
setting_video={
title="画面设置",
sound="←声音设置",
game="游戏设置",
sound="←声音",
game="游戏→",
block="方块可见",
smooth="平滑下落",
@@ -403,8 +403,8 @@ return{
},
setting_sound={
title="声音设置",
game="←游戏设置",
graphic="画面设置",
game="←游戏",
graphic="画面→",
mainVol="总音量",
bgm="音乐",
@@ -773,13 +773,11 @@ return{
},
getTip={refuseCopy=true,
"“Techmino.app”将对您的电脑造成伤害。您应该将它移到废纸篓。",
"(a+b)³=a³+3a²b+3ab²+b³",
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"《按钮风格进化史》",
"《加载动画进化史》",
"《主题曲进化史》",
"↑↑↓↓←→←→BA",
"∫u dv=uv-∫v du",
"$include<studio.h>",
"0next 0hold.",
"11renPC",
@@ -860,7 +858,6 @@ return{
"请勿大力敲打设备敲坏了就没有Techmino玩了",
"请勿使用三只手游玩",
"全球目前应该没人能全X评价(大爆炸不算)",
"群友翻译的中文方块百科全书tetris.huijiwiki.com",
"如何O-spin: 一秒转626圈(误",
"三岁通关困难马拉松",
"少女祈祷中",
@@ -896,6 +893,7 @@ return{
"有两个模式是以东方Project里的角色为主题的",
"这不是休闲游戏……别怪关卡要求太高,多练吧",
"震惊我只是一条凑数tip吗",
"中文方块百科全书tetris.huijiwiki.com",
"众所周知俄罗斯方块是经典编程练手游戏(",
"众所周知mac不能拿来玩游戏",
"作业都没做完别玩手机",
@@ -910,13 +908,6 @@ return{
"B2B2B2B存在吗",
"c4w人竟是我自己",
"c4w人竟在我身边",
"cos(α+β)=CαCβ-SβSα",
"cos²α-cos²β=-S(α+β)S(α-β)",
"cos²α-sin²β=C(α+β)C(α-β)",
"cos2α=C²α-S²α",
"e^(πi)=-1",
"e^(πi/2)=i",
"e^(πi/4)=(1+i)/√2",
"fin neo iso 是满足tspin条件的特殊t2的名字",
"git commit",
"git push -f",
@@ -925,15 +916,9 @@ return{
"iOS设备使用键盘控制可能会有问题还是先只用触屏吧",
"l-=-1",
"Let-The-Bass-Kick",
"lim x→c f(x)/g(x)=lim x→c f'(x)/g'(x)",
"MrZ是谁啊",
"pps-0.01",
"S△ABC=√(h(h-a)(h-b)(h-c))h=(a+b+c)/2",
"shutdown -h now",
"sin(α+β)=SαCβ+SβCα",
"sin²α-cos²β=-C(α+β)C(α-β)",
"sin²α-sin²β=S(α+β)S(α-β)",
"sin2α=2SαCα",
"sofunhowtoget",
"STSD必死",
"sudo rm -rf /*",
@@ -1072,18 +1057,33 @@ return{
"Z思辨[05]《梦想的价值》",
"Z思辨[06]《天赋的力量》",
"Z思辨[07]《游戏的意义》",
"Farter评[01]“成天被夸赞‘好玩’的”",
"Farter评[02]“可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的”",
"Farter评[03]“论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(”",
"Farter评[04]“民间微创新”",
"Farter评[05]“民间音lè与图案”",
"Farter评[06]“民间游戏设计”",
"Farter评[07]“是方块爱好者研究平台”",
"Farter评[08]“是方块萌新入坑接收器”",
"Farter评[09]“是居家旅行装逼必备”",
"Farter评[10]“是民间UI动效艺术作品”",
"Farter评[11]“是一滩散乱的代码组成的蜜汁结构”",
"Farter评[12]“它是现在的techmino已发布版本”",
"Frt评[01]“成天被夸赞‘好玩’的”",
"Frt评[02]“可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的”",
"Frt评[03]“论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(”",
"Frt评[04]“民间微创新”",
"Frt评[05]“民间音lè与图案”",
"Frt评[06]“民间游戏设计”",
"Frt评[07]“是方块爱好者研究平台”",
"Frt评[08]“是方块萌新入坑接收器”",
"Frt评[09]“是居家旅行装逼必备”",
"Frt评[10]“是民间UI动效艺术作品”",
"Frt评[11]“是一滩散乱的代码组成的蜜汁结构”",
"Frt评[12]“它是现在的techmino已发布版本”",
"今日数学[01](a+b)³=a³+3a²b+3ab²+b³",
"今日数学[02]∫u dv=uv-∫v du",
"今日数学[03]cos(α+β)=CαCβ-SβSα",
"今日数学[04]cos²α-cos²β=-S(α+β)S(α-β)",
"今日数学[05]cos²α-sin²β=C(α+β)C(α-β)",
"今日数学[06]cos2α=C²α-S²α",
"今日数学[07]e^(πi)=-1",
"今日数学[08]e^(πi/2)=i",
"今日数学[09]e^(πi/4)=(1+i)/√2",
"今日数学[10]lim x→c f(x)/g(x)=lim x→c f'(x)/g'(x)",
"今日数学[11]S△ABC=√(h(h-a)(h-b)(h-c))h=(a+b+c)/2",
"今日数学[12]sin(α+β)=SαCβ+SβCα",
"今日数学[13]sin²α-cos²β=-C(α+β)C(α-β)",
"今日数学[14]sin²α-sin²β=S(α+β)S(α-β)",
"今日数学[15]sin2α=2SαCα",
"时间碎片[000] 2021/11/21加入这个版块",
"时间碎片[001] V0.0.091726加入TRS旋转系统",
"时间碎片[002] V0.7.9加入O-spin",
@@ -1148,9 +1148,9 @@ return{
{C.R,"《知识产权法》"},
{C.R,"本游戏难度上限很高,做好心理准备。"},
{C.R,"不要向不感兴趣的路人推荐!!!!!!!!"},
{C.R,"不要在上课时玩游戏!"},
{C.R,"光敏性癫痫警告"},
{C.R,"请在有一定游戏基础之后再学Tspin不然副作用非常大"},
{C.R,"上班时间不许摸鱼打块!"},
{C.R,"上课时间不许摸鱼打块!"},
{C.R,"新人请千万记住,打好基础,不要太早学那些花里胡哨的。"},
{C.R,"长时间游戏状态会越来越差!玩久了记得放松一下~"},
{C.R,"DD",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z,""},

View File

@@ -217,7 +217,7 @@ return{
"音乐: Z先生柒栎流星ERM特雷伯尔蛋白激酶G抑制剂[T0722以太]",
"音效/语音: 米娅小亚东西Z先生特雷伯尔",
"演出: 模电HBM",
"翻译: 用户670马特·马尤加法克先生氟化钪蛋白激酶G抑制剂",
"翻译: 用户670马特·马尤加法克先生氟化钪蛋白激酶G抑制剂,不是机器人",
"",
"特别感谢:",
"飞天大真不是机器人思竣yuhao7370",
@@ -337,7 +337,7 @@ return{
title="游戏设置",
graphic="←视频",
sound="声音→",
layout="布局",
style="风格",
ctrl="控制设置",
key="键映射",

View File

@@ -218,7 +218,7 @@ return{
"音樂: MrZ柒栎流星ERMTreborC₂₉H₂₅N₃O₅[T0722Aether]",
"音效/語音: MiyaXiaoyaMonoMrZTrebor",
"演出: 模电HBM",
"翻譯: User670MattMayugaMizuMr.FaqScFC₂₉H₂₅N₃O₅",
"翻譯: User670MattMayugaMizuMr.FaqScFC₂₉H₂₅N₃O₅, NOT_A_ROBOT",
"",
"特別感謝:",
"FlyzBig_TrueNOT_A_ROBOT思竣yuhao7370",
@@ -336,9 +336,9 @@ return{
},
setting_game={
title="遊戲設置",
graphic="←畫面設置",
sound="音頻設置",
layout="外觀",
graphic="←畫面",
sound="音頻→",
style="風格",
ctrl="控制設置",
key="鍵位設置",
@@ -355,8 +355,8 @@ return{
},
setting_video={
title="畫面設置",
sound="←音頻設置",
game="遊戲設置",
sound="←音頻",
game="遊戲→",
block="方塊可見",
smooth="平滑下落",
@@ -402,8 +402,8 @@ return{
},
setting_sound={
title="音頻設置",
game="←遊戲設置",
graphic="畫面設置",
game="←遊戲",
graphic="畫面→",
mainVol="主音量",
bgm="音樂",

View File

@@ -4,7 +4,7 @@ return{
mindas=7,minarr=1,minsdarr=1,
sequence="bagES",
hook_drop=require'parts.eventsets.bigWallGen'.hook_drop,
eventSet='big_h',
eventSet='big_h',
bg='cubes',bgm='push',
},
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,

View File

@@ -4,7 +4,7 @@ return{
mindas=7,minarr=1,minsdarr=1,
sequence="bagES",
hook_drop=require'parts.eventsets.bigWallGen'.hook_drop,
eventSet='big_n',
eventSet='big_n',
bg='bg2',bgm='push',
},
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,

View File

@@ -1,7 +1,6 @@
return{
env={
infHold=true,
drop=1e99,lock=1e99,
eventSet='checkAttack_100',
bg='matrix',bgm='new era',
},

View File

@@ -16,6 +16,6 @@ return{
L>=120 and 3 or
L>=70 and 2 or
L>=40 and 1 or
L>=26 and 0
L>=16 and 0
end,
}

View File

@@ -16,6 +16,6 @@ return{
L>=80 and 3 or
L>=40 and 2 or
L>=20 and 1 or
L>=26 and 0
L>=10 and 0
end,
}

View File

@@ -1,14 +1,7 @@
local function selectTarget(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
return{
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,

View File

@@ -1,14 +1,7 @@
local function selectTarget(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
return{
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,

View File

@@ -1,14 +1,7 @@
local function selectTarget(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
return{
env={
drop=15,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,

View File

@@ -1,14 +1,7 @@
local function selectTarget(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
return{
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,

View File

@@ -1,14 +1,7 @@
local function selectTarget(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
return{
env={
drop=60,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,

View File

@@ -1,14 +1,7 @@
local function selectTarget(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end
return{
env={
drop=15,lock=60,
fall=20,
royaleMode=true,
fkey1=selectTarget,
garbageSpeed=.3,
pushSpeed=2,
freshLimit=15,

View File

@@ -240,8 +240,8 @@ function NET.uploadSave()
{section=3,data=STRING.packTable(SETTING)},
{section=4,data=STRING.packTable(KEY_MAP)},
{section=5,data=STRING.packTable(VK_ORG)},
{section=6,data=STRING.packTable(loadFile('conf/vkSave1'))},
{section=7,data=STRING.packTable(loadFile('conf/vkSave2'))},
{section=6,data=STRING.packTable(loadFile('conf/vkSave1','-canSkip')or{})},
{section=7,data=STRING.packTable(loadFile('conf/vkSave2','-canSkip')or{})},
}..'}}')
MES.new('info',"Uploading")
end
@@ -287,10 +287,12 @@ function NET.loadSavedData(sections)
TABLE.cover(NET.cloudData.VK_org,VK_ORG)
success=success and saveFile(VK_ORG,'conf/virtualkey')
success=success and saveFile(NET.cloudData.vkSave1,'conf/vkSave1')
success=success and saveFile(NET.cloudData.vkSave2,'conf/vkSave2')
if #NET.cloudData.vkSave1[1]then success=success and saveFile(NET.cloudData.vkSave1,'conf/vkSave1')end
if #NET.cloudData.vkSave2[1]then success=success and saveFile(NET.cloudData.vkSave2,'conf/vkSave2')end
if success then
MES.new('check',text.saveDone)
else
MES.new('warn',text.dataCorrupted)
end
end

View File

@@ -11,7 +11,7 @@ local int,ceil,rnd=math.floor,math.ceil,math.random
local max,min,sin,modf=math.max,math.min,math.sin,math.modf
local setFont,mDraw,mStr=FONT.set,GC.draw,GC.mStr
local SKIN,TEXTURE,IMG=SKIN,TEXTURE,IMG
local TEXT,COLOR,GAME,TIME=TEXT,COLOR,GAME,TIME
local TEXT,COLOR,TIME=TEXT,COLOR,TIME
local shader_alpha,shader_lighter=SHADER.alpha,SHADER.lighter
local shader_fieldSatur,shader_blockSatur=SHADER.fieldSatur,SHADER.blockSatur
local TEXTOBJ,ENUM_MISSION,BLOCK_COLORS=TEXTOBJ,ENUM_MISSION,BLOCK_COLORS
@@ -862,12 +862,12 @@ function draw.norm(P,repMode)
_drawLDI(ENV.easyFresh,P.lockDelay/ENV.lock,P.freshTime)
--Draw target selecting pad
if GAME.modeEnv.royaleMode then
if ENV.layout=='royale'then
if P.atkMode then
gc_setColor(1,.8,0,P.swappingAtkMode*.02)
gc_setColor(1,.8,0,min(P.swappingAtkMode,30)*.02)
gc_rectangle('fill',RCPB[2*P.atkMode-1],RCPB[2*P.atkMode],90,35,8,4)
end
gc_setColor(1,1,1,P.swappingAtkMode*.025)
gc_setColor(1,1,1,min(P.swappingAtkMode,30)*.025)
setFont(35)
gc_setLineWidth(1)
for i=1,4 do
@@ -953,7 +953,7 @@ function draw.small(P)
end
--Draw badge
if GAME.modeEnv.royaleMode then
if P.gameEnv.layout=='royale'then
gc_setColor(1,1,1)
for i=1,P.strength do
gc_draw(IMG.badgeIcon,12*i-7,4,nil,.5)

View File

@@ -53,6 +53,7 @@ return{
bufferLimit=1e99,
fillClear=true,
layout='normal',
fkey1=false,fkey2=false,
keyCancel={},
fine=false,fineKill=false,

View File

@@ -193,9 +193,9 @@ function Player:createBeam(R,send)
local c=BLOCK_COLORS[color]
local r,g,b=c[1]*2,c[2]*2,c[3]*2
local a=GAME.modeEnv.royaleMode and not(self.type=='human'or R.type=='human')and .2 or 1
SYSFX.newAttack(1-power*.1,x1,y1,x2,y2,int(send^.7*(4+power)),r,g,b,a*(power+2)*.0626)
local a=(power+2)*.0626
if self.type~='human'and R.type~='human'then a=a*.2 end
SYSFX.newAttack(1-power*.1,x1,y1,x2,y2,int(send^.7*(4+power)),r,g,b,a)
end
end
--------------------------</FX>--------------------------
@@ -1847,7 +1847,7 @@ do
end
--Bonus atk/def when focused
if GAME.modeEnv.royaleMode then
if ENV.layout=='royale'then
local i=min(#self.atker,9)
if i>1 then
atk=atk+reAtk[i]
@@ -1870,7 +1870,7 @@ do
off=off+_
if send>0 then
local T
if GAME.modeEnv.royaleMode then
if ENV.layout=='royale'then
if self.atkMode==4 then
local M=#self.atker
if M>0 then
@@ -2144,7 +2144,7 @@ local function task_lose(self)
return
end
end
if not GAME.modeEnv.royaleMode and #PLAYERS>1 then
if not self.gameEnv.layout=='royale'and #PLAYERS>1 then
self.y=self.y+self.endCounter*.26
self.absFieldY=self.absFieldY+self.endCounter*.26
end
@@ -2339,7 +2339,7 @@ local function update_alive(P)
P.dropSpeed=P.dropSpeed*.99+v*.01
end
if GAME.modeEnv.royaleMode then
if P.gameEnv.layout=='royale'then
local v=P.swappingAtkMode
local tar=#P.field>15 and 4 or 8
if v~=tar then
@@ -2596,7 +2596,7 @@ local function update_dead(P)
--Final average speed
P.dropSpeed=P.dropSpeed*.96+S.piece/S.frame*144
if GAME.modeEnv.royaleMode then
if P.gameEnv.layout=='royale'then
P.swappingAtkMode=min(P.swappingAtkMode+2,30)
end
@@ -2714,7 +2714,7 @@ function Player:win(result)
end
self:_die()
self.result='win'
if GAME.modeEnv.royaleMode then
if self.gameEnv.layout=='royale'then
self.modeData.place=1
self:changeAtk()
end
@@ -2729,7 +2729,7 @@ function Player:win(result)
GAME.result=result or'gamewin'
SFX.play('win')
VOC.play('win')
if GAME.modeEnv.royaleMode then
if self.gameEnv.layout=='royale'then
BGM.play('8-bit happiness')
end
end
@@ -2760,7 +2760,7 @@ function Player:lose(force)
self:_die()
self.result='lose'
do local p=TABLE.find(PLY_ALIVE,self)if p then rem(PLY_ALIVE,p)end end
if GAME.modeEnv.royaleMode then
if self.gameEnv.layout=='royale'then
self:changeAtk()
self.modeData.place=#PLY_ALIVE+1
self.strength=0
@@ -2802,7 +2802,7 @@ function Player:lose(force)
GAME.result='gameover'
SFX.play('fail')
VOC.play('lose')
if GAME.modeEnv.royaleMode then
if self.gameEnv.layout=='royale'then
BGM.play('end')
end
gameOver()

View File

@@ -59,7 +59,7 @@ scene.widgetList={
WIDGET.newButton{name='staff', x=1140,y=380,w=220,h=80,font=35,code=goScene'staff'},
WIDGET.newButton{name='his', x=1140,y=480,w=220,h=80,font=35,code=goScene'history'},
WIDGET.newButton{name='legals', x=1140,y=580,w=220,h=80,font=35,code=goScene'legals'},
WIDGET.newButton{name='back', x=640, y=600,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back', x=640, y=600,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -8,7 +8,7 @@ end
scene.widgetList={
WIDGET.newText{name='title',x=80,y=50,font=70,align='L'},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -315,7 +315,7 @@ scene.widgetList={
WIDGET.newSwitch{name='slide', x=240, y=420,lim=200,font=40,disp=function()return slide end, code=pressKey'e',hideF=ifGaming},
WIDGET.newSwitch{name='pathVis',x=240, y=510,lim=200,font=40,disp=function()return pathVis end,code=pressKey'r',hideF=function()return state==1 or not slide end},
WIDGET.newSwitch{name='revKB', x=240, y=600,lim=200,font=40,disp=function()return revKB end, code=pressKey't',hideF=ifGaming},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -493,7 +493,7 @@ scene.widgetList={
WIDGET.newKey{name='record2', x=1100,y=450,w=220,h=50,fText="", color='H',code=pressKey'2', hideF=function()return state==2 end},
WIDGET.newKey{name='replay1', x=1245,y=390,w=50,fText="!", color='G',code=pressKey'c1', hideF=function()return state==2 or #repeater.seq[1]==0 end},
WIDGET.newKey{name='replay2', x=1245,y=450,w=50,fText="!", color='G',code=pressKey'c2', hideF=function()return state==2 or #repeater.seq[2]==0 end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -119,7 +119,7 @@ scene.widgetList={
WIDGET.newSelector{name='level', x=640,y=640,w=200,list={'A_Z','Z_A','Tech1','Tech2','KeyTest1','KeyTest2','Hello','Roll1','Roll2','Roll3','ZZZ','ZXZX','ZMZM','Stair','Stair2','Stair3','BPW'},disp=function()return levelName end,code=function(i)levelName=i;targetString=levels[i]end,hideF=function()return state>0 end},
WIDGET.newButton{name='reset', x=160,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'space'},
WIDGET.newButton{name='keyboard',x=160,y=210,w=180,h=100,code=function()love.keyboard.setTextInput(true,0,select(2,SCR.xOy:transformPoint(0,500)),1,1)end,hide=not MOBILE},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -232,7 +232,7 @@ end
scene.widgetList={
WIDGET.newButton{name='reset',x=1140,y=540,w=170,h=80,font=50,fText=CHAR.icon.retry_spin,color='lG',code=restart},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -231,7 +231,7 @@ scene.widgetList={
WIDGET.newKey{name='7',x=540,y=320,w=90,font=60,fText="7",code=pressKey'7'},
WIDGET.newKey{name='8',x=640,y=320,w=90,font=60,fText="8",code=pressKey'8'},
WIDGET.newKey{name='9',x=740,y=320,w=90,font=60,fText="9",code=pressKey'9'},
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=45,sound='back',fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -165,7 +165,7 @@ scene.widgetList={
WIDGET.newKey{name='/',x=445,y=600,w=90,sound=false,fText="/",color='lB',font=50,code=pressKey'/'},
WIDGET.newKey{name='<',x=545,y=300,w=90,sound=false,fText=CHAR.key.backspace,color='lR',font=50,code=pressKey'backspace'},
WIDGET.newKey{name='=',x=545,y=400,w=90,sound=false,fText="=",color='lY',font=50,code=pressKey'return'},
WIDGET.newKey{name='back',x=1135,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='back',x=1135,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -127,7 +127,7 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -318,7 +318,7 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newKey{name='back',x=1140,y=80,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='back',x=1140,y=80,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -236,7 +236,7 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newButton{name='back',x=1140,y=60,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back',x=1140,y=60,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -383,7 +383,7 @@ scene.widgetList={
WIDGET.newButton{name='reset',x=155,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
modeSelector,bgmSelector,colorSelector,
arcadeSwitch,
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -399,7 +399,7 @@ end
scene.widgetList={
WIDGET.newButton{name='reset',x=80,y=60,w=110,h=60,color='lG',fText=CHAR.icon.retry_spin,code=pressKey'r',hideF=function()return state==0 end},
WIDGET.newSwitch{name='invis',x=100,y=140,lim=80,disp=function()return invis end,code=pressKey'q',hideF=function()return state==1 end},
WIDGET.newButton{name='back',x=1200,y=660,w=110,font=50,fText=CHAR.icon.back,code=pressKey'escape'},
WIDGET.newButton{name='back',x=1200,y=660,w=110,font=45,sound='back',fText=CHAR.icon.back,code=pressKey'escape'},
}
return scene

View File

@@ -120,7 +120,7 @@ scene.widgetList={
WIDGET.newKey{name='7',x=540,y=320,w=90,font=60,fText="7",code=pressKey'7'},
WIDGET.newKey{name='8',x=640,y=320,w=90,font=60,fText="8",code=pressKey'8'},
WIDGET.newKey{name='9',x=740,y=320,w=90,font=60,fText="9",code=pressKey'9'},
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back',x=1200,y=660,w=110,h=60,font=45,sound='back',fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -48,6 +48,6 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -165,7 +165,7 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newKey{name='back',x=1140,y=60,w=170,h=80,color='D',font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='back',x=1140,y=60,w=170,h=80,color='D',sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -177,7 +177,7 @@ end
scene.widgetList={
WIDGET.newKey{name='reset',x=640,y=45,w=150,h=50,font=35,fText=CHAR.icon.retry_spin,code=pressKey'r'},
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,sound='back',fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -131,7 +131,7 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='back',x=640,y=675,w=150,h=50,font=40,sound='back',fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -175,7 +175,7 @@ scene.widgetList={
WIDGET.newSwitch{name='invis', x=240,y=330,lim=200,font=40,disp=function()return invis end, code=pressKey'q',hideF=function()return state==1 end},
WIDGET.newSwitch{name='disappear',x=240,y=420,lim=200,font=40,disp=function()return disappear end,code=pressKey'w',hideF=function()return state==1 end},
WIDGET.newSwitch{name='tapFX', x=240,y=510,lim=200,font=40,disp=function()return tapFX end, code=pressKey'e',hideF=function()return state==1 end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -43,6 +43,6 @@ end
scene.widgetList={
WIDGET.newButton{name="spin", x=1140,y=360,w=120,font=60,fText=CHAR.icon.retry_spin,code=pressKey'space'},
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -26,7 +26,7 @@ function scene.keyDown(key,isRep)
else
ins(keyTime,1,TIME())
keyTime[41]=nil
SFX.play('click',.3)
SFX.play('lock')
end
end
end
@@ -71,8 +71,8 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newKey{name='tap',x=640,y=540,w=626,h=260,fText="TAP",color='Z',font=100,code=function(i)love.keypressed('b'..i)end},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='tap',x=640,y=540,w=626,h=260,sound='touch',fText="TAP",color='Z',font=100,code=function(i)love.keypressed('b'..i)end},
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

@@ -308,7 +308,7 @@ scene.widgetList={
WIDGET.newSwitch{name='next', x=240,y=235,lim=200,font=40,disp=function()return nexts end,code=pressKey'q',hideF=function()return state==1 end},
WIDGET.newSwitch{name='invis',x=240,y=305,lim=200,font=40,disp=function()return invis end,code=pressKey'w',hideF=function()return state==1 end},
WIDGET.newSwitch{name='fast', x=240,y=375,lim=200,font=30,disp=function()return fast end,code=pressKey'e',hideF=function()return state==1 end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -39,6 +39,7 @@ local textColor={
{.08, .80, .34},
}
local tileTexts=setmetatable({
[-2]="B",
[-1]="×",
},{__index=function(self,k)self[k]=k return k end})
@@ -172,7 +173,7 @@ function player:click(y,x)
local getScore=4^cur*count
self.score=self.score+getScore
TEXT.show(getScore,player.x+self.selectX*100-50,player.y+self.selectY*100-50,40,'score')
TEXT.show(getScore,player.x+self.selectX*100-50,player.y+self.selectY*100-50,40,'score',1.626/math.log(getScore,3))
for i=1,#self.mergedTiles do
newMergeFX(self.mergedTiles[i][1],self.mergedTiles[i][2],cur+1)
end
@@ -268,12 +269,15 @@ function scene.sceneInit()
BGM.play('truth')
end
function scene.mouseDown(x,y)
function scene.mouseClick(x,y)
x,y=int((x-player.x)/100)+1,int((y-player.y)/100)+1
if x>=1 and x<=6 and y>=1 and y<=6 then
player:click(y,x)
end
end
function scene.touchClick(x,y)
scene.mouseClick(x,y)
end
function scene.keyDown(key,isRep)
if isRep then return end
if key=='up'or key=='down'or key=='left'or key=='right'then
@@ -286,7 +290,7 @@ function scene.keyDown(key,isRep)
elseif key=='right'then player.selectX=math.min(player.selectX+1,6)
end
end
elseif key=='z'or key=='space'then
elseif key=='x'or key=='space'then
if not player.selectX then
player.selectX,player.selectY=3,3
else
@@ -294,7 +298,9 @@ function scene.keyDown(key,isRep)
player:click(player.selectY,player.selectX)
player.selectY,player.selectX=y,x
end
elseif key=='x'then
elseif key=='w'then
love.mousepressed(love.mouse.getPosition())
elseif key=='z'or key=='q'then
player:click(1,1)
elseif key=='r'then
if player.state~=1 or tryReset()then
@@ -345,6 +351,6 @@ 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.newButton{name="back", x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -210,7 +210,7 @@ scene.widgetList={
WIDGET.newButton{name='paste', x=1070,y=380,w=310,h=70,color='lB',font=25,code=pressKey'cV'},
WIDGET.newButton{name='play_clear', x=1070,y=460,w=310,h=70,color='lY',font=35,code=pressKey'play1'},
WIDGET.newButton{name='play_puzzle', x=1070,y=540,w=310,h=70,color='lM',font=35,code=pressKey'play2',hideF=function()return #FIELD[1]==0 end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=pressKey'escape'},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=pressKey'escape'},
--Rule set
WIDGET.newSelector{name='eventSet', x=1050,y=760,w=340,color='H',list=sList.eventSet,disp=CUSval('eventSet'),code=CUSsto('eventSet')},

View File

@@ -428,8 +428,8 @@ function scene.draw()
setFont(55)
gc.setColor(1,1,1)
for i=1,7 do
local skin=SETTING.skin[i]
mStr(text.block[i],500+skin%8*80,90+80*int(skin/8))
local skin=SETTING.skin[i]-1
mStr(text.block[i],580+(skin%8)*80,90+80*int(skin/8))
end
end
@@ -481,7 +481,7 @@ scene.widgetList={
WIDGET.newButton{name='prevPg', x=100, y=350,w=160,h=110,color='lG',font=20,code=pressKey'pageup',hideF=function()return page==1 end},
WIDGET.newButton{name='nextPg', x=100, y=470,w=160,h=110,color='lG',font=20,code=pressKey'pagedown',hideF=function()return page==#FIELD end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -224,7 +224,7 @@ scene.widgetList={
WIDGET.newButton{name='paste', x=1140,y=540,w=170,h=80,color='lB',font=50,code=pressKey'cV', fText=CHAR.icon.import},
WIDGET.newSwitch{name='mission',x=1150,y=340,lim=280,disp=CUSval('missionKill'),code=CUSrev('missionKill')},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -220,7 +220,7 @@ scene.widgetList={
WIDGET.newButton{name='copy', x=1140,y=460,w=170,h=80,color='lR',font=50,fText=CHAR.icon.export,code=pressKey'cC',hideF=function()return #BAG==0 end},
WIDGET.newButton{name='paste',x=1140,y=550,w=170,h=80,color='lB',font=50,fText=CHAR.icon.import,code=pressKey'cV'},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -221,7 +221,7 @@ scene.widgetList={
WIDGET.newKey{name='down', x=1120,y=565,w=80,font=50,fText=CHAR.key.down, code=pressKey'down',hide=not MOBILE},
WIDGET.newKey{name='pageup', x=1210,y=475,w=80,font=50,fText=CHAR.icon.toUp, code=pressKey'pageup',hide=not MOBILE},
WIDGET.newKey{name='pagedown',x=1210,y=565,w=80,font=50,fText=CHAR.icon.toDown,code=pressKey'pagedown',hide=not MOBILE},
WIDGET.newButton{name='back', x=1165,y=60,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back', x=1165,y=60,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -293,7 +293,7 @@ local function _update_common(dt)
for p=1,#PLAYERS do PLAYERS[p]:update(dt)end
--Fresh royale target
if GAME.modeEnv.royaleMode and PLAYERS[1].frameRun%120==0 then
if PLAYERS[1].frameRun%120==0 and PLAYERS[1].gameEnv.layout=='royale'then
freshMostDangerous()
end
@@ -339,7 +339,7 @@ function scene.draw()
VK.draw()
--Attacking & Being attacked
if GAME.modeEnv.royaleMode then
if PLAYERS[1].gameEnv.layout=='royale'then
local P=PLAYERS[1]
gc_setLineWidth(5)
gc_setColor(.8,1,0,.2)

View File

@@ -24,7 +24,7 @@ end
scene.widgetList={
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=20,fix=true},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -4,25 +4,18 @@ local langList={
zh_trad="繁體中文",
en="English",
fr="Français",
es="Español\n(Castellano)",
es=" Español\n(Castellano)",
pt="Português",
id="Bahasa",
zh_grass="机翻",
zh_yygq="就这?",
symbol="?????",
}
local languages={
"Language",
"语言",
"言語",
"Langue",
"Idioma",
"Línguas",
"Sprache",
"Lingua",
"Язык",
"Γλώσσα",
"언어",
"Language Langue Lingua",
"语言 言語 언어",
"Idioma Línguas Sprache",
"Язык Γλώσσα Bahasa",
}
local curLang=1
@@ -33,17 +26,17 @@ function scene.sceneBack()
end
function scene.update(dt)
curLang=curLang+dt*0.6
curLang=curLang+dt*1.26
if curLang>=#languages+1 then
curLang=1
end
end
function scene.draw()
setFont(60)
love.graphics.setColor(1,1,1,1-curLang%1)
setFont(80)
love.graphics.setColor(1,1,1,1-curLang%1*2)
GC.mStr(languages[curLang-curLang%1],640,20)
love.graphics.setColor(1,1,1,curLang%1)
love.graphics.setColor(1,1,1,curLang%1*2)
GC.mStr(languages[curLang-curLang%1+1]or languages[1],640,20)
end
@@ -53,22 +46,25 @@ local function _setLang(lid)
TEXT.clear()
TEXT.show(langList[lid],640,360,100,'appear',.626)
collectgarbage()
if FIRSTLAUNCH then SCN.back()end
end
scene.widgetList={
WIDGET.newButton{x=271,y=190,w=346,h=120,font=40, fText=langList.zh, color='O',code=function()_setLang('zh')end},
WIDGET.newButton{x=637,y=190,w=346,h=120,font=40, fText=langList.zh_trad, color='F',code=function()_setLang('zh_trad')end},
WIDGET.newButton{x=1003,y=190,w=346,h=120,font=40,fText=langList.zh_full, color='R',code=function()_setLang('zh_full')end},
WIDGET.newButton{x=271,y=210,w=346,h=100,font=40, fText=langList.en, color='R',sound='click',code=function()_setLang('en')end},
WIDGET.newButton{x=271,y=329,w=346,h=100,font=40, fText=langList.fr, color='F',sound='click',code=function()_setLang('fr')end},
WIDGET.newButton{x=271,y=449,w=346,h=100,font=35, fText=langList.es, color='O',sound='click',code=function()_setLang('es')end},
WIDGET.newButton{x=271,y=568,w=346,h=100,font=40, fText=langList.id, color='Y',sound='click',code=function()_setLang('id')end},
WIDGET.newButton{x=225,y=331,w=255,h=120,font=40, fText=langList.en, color='L',code=function()_setLang('en')end},
WIDGET.newButton{x=500,y=331,w=255,h=120,font=40, fText=langList.fr, color='J',code=function()_setLang('fr')end},
WIDGET.newButton{x=775,y=331,w=255,h=120,font=33, fText=langList.es, color='G',code=function()_setLang('es')end},
WIDGET.newButton{x=1050,y=331,w=255,h=120,font=40,fText=langList.pt, color='A',code=function()_setLang('pt')end},
WIDGET.newButton{x=637,y=210,w=346,h=100,font=40, fText=langList.pt, color='A',sound='click',code=function()_setLang('pt')end},
WIDGET.newButton{x=637,y=329,w=346,h=100,font=40, fText=langList.symbol, color='G',sound='click',code=function()_setLang('symbol')end},
WIDGET.newButton{x=637,y=449,w=346,h=100,font=40, fText=langList.zh_yygq, color='J',sound='click',code=function()_setLang('zh_yygq')end},
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=271,y=472,w=346,h=120,font=45, fText=langList.zh_grass,color='N',code=function()_setLang('zh_grass')end},
WIDGET.newButton{x=637,y=472,w=346,h=120,font=45, fText=langList.zh_yygq, color='S',code=function()_setLang('zh_yygq')end},
WIDGET.newButton{x=1003,y=472,w=346,h=120,font=45,fText=langList.symbol, color='B',code=function()_setLang('symbol')end},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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{name='back',x=1003,y=568,w=346,h=100,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -287,7 +287,7 @@ scene.widgetList={
WIDGET.newSlider{name='voc', x=1000,y=220,lim=130,w=250,disp=SETval('voc'),code=function(v)SETTING.voc=v VOC.setVol(SETTING.voc)end},
WIDGET.newSwitch{name='label',x=1200,y=290,lim=160,disp=function()return showLabel end,code=pressKey'space',},
WIDGET.newButton{name='music',x=1140,y=540,w=170,h=80,font=40,code=pressKey'tab'},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -28,7 +28,7 @@ end
scene.widgetList={
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=15,fix=true},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -10,6 +10,7 @@ local function _login()
elseif #password==0 then
MES.new('error',text.noPassword)return
end
-- password=STRING.digezt(password)
NET.wsconn_user_pswd(email,password)
if savePW then
saveFile({email,password},'conf/account')
@@ -36,7 +37,7 @@ scene.widgetList={
passwordBox,
WIDGET.newSwitch{name='keepPW', x=900, y=420,disp=function()return savePW end,code=function()savePW=not savePW end},
WIDGET.newKey{name='login', x=1140,y=540,w=170,h=80,font=40,code=_login},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -30,7 +30,7 @@ end
scene.widgetList={
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=15,fix=true},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -158,7 +158,7 @@ scene.widgetList={
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
WIDGET.newText{name='unranked',x=1200,y=60,color='Y',font=50,align='R'},
WIDGET.newButton{name='reset', x=1140,y=540,w=170,h=80,font=25,code=pressKey'tab'},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -331,7 +331,7 @@ end
scene.widgetList={
WIDGET.newKey{name='mod', x=140,y=655,w=220,h=80,font=35,code=goScene'mod'},
WIDGET.newButton{name='start',x=1040,y=655,w=180,h=80,font=40,code=pressKey'return',hideF=function()return not mapCam.sel end},
WIDGET.newButton{name='back', x=1200,y=655,w=120,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back', x=1200,y=655,w=120,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -55,11 +55,10 @@ function scene.keyDown(key,isRep)
if key=='return'or key=='space'then
if BGM.nowPlay~=bgmList[S]then
BGM.play(bgmList[S])
if SETTING.bgm>0 then
SFX.play('click')
end
SFX.play('click')
else
BGM.stop()
SFX.play('click')
end
elseif key=='tab'then
SCN.swapTo('launchpad','none')
@@ -126,10 +125,10 @@ scene.widgetList={
},
WIDGET.newSlider{name='bgm', x=760,y=80,w=400,disp=SETval('bgm'),code=function(v)SETTING.bgm=v BGM.setVol(SETTING.bgm)end},
WIDGET.newButton{name='up', x=200,y=250,w=120,code=pressKey'up',hideF=function()return selected==1 end,font=60,fText=CHAR.key.up},
WIDGET.newButton{name='play', x=200,y=390,w=120,code=pressKey'space',font=65,fText=CHAR.icon.play_pause},
WIDGET.newButton{name='play', x=200,y=390,w=120,code=pressKey'space',sound=false,font=65,fText=CHAR.icon.play_pause},
WIDGET.newButton{name='down', x=200,y=530,w=120,code=pressKey'down',hideF=function()return selected==#bgmList end,font=60,fText=CHAR.key.down},
WIDGET.newButton{name='sound',x=1140,y=540,w=170,h=80,font=40,code=pressKey'tab'},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -17,7 +17,7 @@ end
scene.widgetList={
WIDGET.newKey{name='setting',x=1200,y=160,w=90,h=90,font=60,fText=CHAR.icon.settings,code=goScene'setting_game'},
WIDGET.newKey{name='match',x=640,y=500,w=760,h=140,font=60,code=function()MES.new('warn',text.notFinished)end},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -30,7 +30,7 @@ scene.widgetList={
end
end
end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -86,7 +86,7 @@ scene.widgetList={
--Capacity & Create & Back
WIDGET.newSelector{name='capacity', x=1070,y=330,w=310,color='lY',list={2,3,4,5,7,10,17,31,49,99},disp=ROOMval('capacity'),code=ROOMsto('capacity')},
WIDGET.newButton{name='create', x=1070,y=480,w=310,h=140,color='lN',font=40,code=_createRoom},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
--Special rules
WIDGET.newSwitch{name='ospin', x=850, y=850, lim=210,disp=ROOMval('ospin'), code=ROOMrev('ospin')},

View File

@@ -140,7 +140,7 @@ scene.widgetList={
WIDGET.newKey{name='refresh', x=250,y=630,w=140,h=120,code=_fetchRoom,hideF=function()return fetchTimer>7 end},
WIDGET.newKey{name='new', x=510,y=630,w=260,h=120,code=goScene'net_newRoom'},
WIDGET.newKey{name='join', x=780,y=630,w=140,h=120,code=pressKey'join',hideF=function()return roomList:getLen()==0 or NET.getlock('enterRoom')end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=pressKey'escape'},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=pressKey'escape'},
}
return scene

View File

@@ -36,8 +36,8 @@ function scene.sceneInit(org)
("%d(%d) %.2fLPM"):format(S.row,S.dig,S.row/S.time*60),
("%d(%d) %.2fAPM"):format(S.atk,S.digatk,S.atk/S.time*60),
("%d(%d-%d)"):format(S.pend,S.recv,S.recv-S.pend),
("%d/%d/%d/%d"):format(S.clears[1],S.clears[2],S.clears[3],S.clears[4]),
("(%d)/%d/%d/%d"):format(S.spins[1],S.spins[2],S.spins[3],S.spins[4]),
("[1] %-7d[2] %-7d[3] %-7d[4] %-7d"):format(S.clears[1],S.clears[2],S.clears[3],S.clears[4]),
(CHAR.icon.num0InSpin.." %-8d"..CHAR.icon.num1InSpin.." %-8d"..CHAR.icon.num2InSpin.." %-8d"..CHAR.icon.num3InSpin.." %-8d"):format(S.spins[1],S.spins[2],S.spins[3],S.spins[4]),
("%d/%d ; %d/%d"):format(S.b2b,S.b3b,S.pc,S.hpc),
("%d/%dx/%.2f%%"):format(S.extraPiece,S.maxFinesseCombo,S.finesseRate*20/S.piece),
}

View File

@@ -28,7 +28,7 @@ scene.widgetList={
WIDGET.newKey{name='register', x=640, y=640,w=300,h=80,font=40,code=_register,hideF=function()return NET.getlock('register')end},
WIDGET.newText{name='registering', x=640, y=605,font=50,hideF=function()return not NET.getlock('register')end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -130,6 +130,8 @@ function scene.keyDown(key)
SFX.play('finesseError',.7)
end
end
elseif key=='up'or key=='down'then
listBox:arrowKey(key)
else
return true
end
@@ -141,7 +143,7 @@ scene.widgetList={
WIDGET.newButton{name='import',x=350,y=640,w=140,h=80,color='lN',code=pressKey'cV',font=50,fText=CHAR.icon.import},
WIDGET.newButton{name='play', x=700,y=640,w=170,h=80,color='lY',code=pressKey'return',font=65,fText=CHAR.icon.play},
WIDGET.newButton{name='delete',x=850,y=640,w=80,h=80,color='lR',code=pressKey'delete',font=50,fText=CHAR.icon.trash},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -82,7 +82,7 @@ scene.widgetList={
WIDGET.newText{name='notLogin', x=55,y=550,color='dB',align='L',font=30,hideF=function()return WS.status('user')=='running'end},
WIDGET.newButton{name='upload', x=190,y=610,w=280,h=90,color='lB',font=25,code=NET.uploadSave,hideF=function()return WS.status('user')~='running'end},
WIDGET.newButton{name='download', x=490,y=610,w=280,h=90,color='lB',font=25,code=NET.downloadSave,hideF=function()return WS.status('user')~='running'end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -105,7 +105,7 @@ scene.widgetList={
_.sddas,_.sdarr=0,2
_.ihs,_.irs,_.ims=false,false,false
end},
WIDGET.newButton{name='back', x=1140, y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -36,7 +36,7 @@ scene.widgetList={
WIDGET.newButton{name='graphic', x=200, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_video','swipeR')},
WIDGET.newButton{name='sound', x=1080, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_sound','swipeL')},
WIDGET.newButton{name='layout', x=250, y=540, w=200,h=70,font=35,code=goScene'setting_skin'},
WIDGET.newButton{name='style', x=250, y=540, w=200,h=70,font=35,code=goScene'setting_skin'},
WIDGET.newButton{name='ctrl', x=290, y=220, w=320,h=80,font=35,code=goScene'setting_control'},
WIDGET.newButton{name='key', x=640, y=220, w=320,h=80,color=MOBILE and'dH',font=35, code=goScene'setting_key'},
@@ -59,7 +59,7 @@ scene.widgetList={
end
end
end},
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -231,7 +231,7 @@ scene.widgetList={
WIDGET.newKey{name='restart',x=150,y=670,w=180,h=60,code=function()_setSel(0)end},
WIDGET.newButton{name='back',x=1140,y=640,w=190,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -78,43 +78,42 @@ local function _nextDir(i)
end
playEgg.hide=not selEggMode
end
SFX.play('rotate')
end
scene.widgetList={
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
WIDGET.newSelector{name='skinSet',x=780,y=100,w=320,list=SKIN.getList(),disp=SETval('skinSet'),code=SETsto('skinSet')},
WIDGET.newButton{name='prev1', x=130,y=220,w=80,h=65,fText="",code=function()_prevSkin(1)end},
WIDGET.newButton{name='prev2', x=270,y=220,w=80,h=65,fText="",code=function()_prevSkin(2)end},
WIDGET.newButton{name='prev3', x=410,y=220,w=80,h=65,fText="",code=function()_prevSkin(3)end},
WIDGET.newButton{name='prev4', x=550,y=220,w=80,h=65,fText="",code=function()_prevSkin(4)end},
WIDGET.newButton{name='prev5', x=690,y=220,w=80,h=65,fText="",code=function()_prevSkin(5)end},
WIDGET.newButton{name='prev6', x=830,y=220,w=80,h=65,fText="",code=function()_prevSkin(6)end},
WIDGET.newButton{name='prev7', x=970,y=220,w=80,h=65,fText="",code=function()_prevSkin(7)end},
WIDGET.newButton{name='prev1', x=130,y=220,w=80,h=65,sound='hold',font=40,fText="",code=function()_prevSkin(1)end},
WIDGET.newButton{name='prev2', x=270,y=220,w=80,h=65,sound='hold',font=40,fText="",code=function()_prevSkin(2)end},
WIDGET.newButton{name='prev3', x=410,y=220,w=80,h=65,sound='hold',font=40,fText="",code=function()_prevSkin(3)end},
WIDGET.newButton{name='prev4', x=550,y=220,w=80,h=65,sound='hold',font=40,fText="",code=function()_prevSkin(4)end},
WIDGET.newButton{name='prev5', x=690,y=220,w=80,h=65,sound='hold',font=40,fText="",code=function()_prevSkin(5)end},
WIDGET.newButton{name='prev6', x=830,y=220,w=80,h=65,sound='hold',font=40,fText="",code=function()_prevSkin(6)end},
WIDGET.newButton{name='prev7', x=970,y=220,w=80,h=65,sound='hold',font=40,fText="",code=function()_prevSkin(7)end},
WIDGET.newButton{name='next1', x=130,y=440,w=80,h=65,fText="",code=function()_nextSkin(1)end},
WIDGET.newButton{name='next2', x=270,y=440,w=80,h=65,fText="",code=function()_nextSkin(2)end},
WIDGET.newButton{name='next3', x=410,y=440,w=80,h=65,fText="",code=function()_nextSkin(3)end},
WIDGET.newButton{name='next4', x=550,y=440,w=80,h=65,fText="",code=function()_nextSkin(4)end},
WIDGET.newButton{name='next5', x=690,y=440,w=80,h=65,fText="",code=function()_nextSkin(5)end},
WIDGET.newButton{name='next6', x=830,y=440,w=80,h=65,fText="",code=function()_nextSkin(6)end},
WIDGET.newButton{name='next7', x=970,y=440,w=80,h=65,fText="",code=function()_nextSkin(7)end},
WIDGET.newButton{name='next1', x=130,y=440,w=80,h=65,sound='hold',font=40,fText="",code=function()_nextSkin(1)end},
WIDGET.newButton{name='next2', x=270,y=440,w=80,h=65,sound='hold',font=40,fText="",code=function()_nextSkin(2)end},
WIDGET.newButton{name='next3', x=410,y=440,w=80,h=65,sound='hold',font=40,fText="",code=function()_nextSkin(3)end},
WIDGET.newButton{name='next4', x=550,y=440,w=80,h=65,sound='hold',font=40,fText="",code=function()_nextSkin(4)end},
WIDGET.newButton{name='next5', x=690,y=440,w=80,h=65,sound='hold',font=40,fText="",code=function()_nextSkin(5)end},
WIDGET.newButton{name='next6', x=830,y=440,w=80,h=65,sound='hold',font=40,fText="",code=function()_nextSkin(6)end},
WIDGET.newButton{name='next7', x=970,y=440,w=80,h=65,sound='hold',font=40,fText="",code=function()_nextSkin(7)end},
WIDGET.newButton{name='spin1', x=130,y=540,w=80,h=65,code=function()_nextDir(1)end,font=50,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin2', x=270,y=540,w=80,h=65,code=function()_nextDir(2)end,font=50,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin3', x=410,y=540,w=80,h=65,code=function()_nextDir(3)end,font=50,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin4', x=550,y=540,w=80,h=65,code=function()_nextDir(4)end,font=50,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin5', x=690,y=540,w=80,h=65,code=function()_nextDir(5)end,font=50,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin6', x=825,y=540,w=80,h=65,code=function()_nextDir(6)end,font=50,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin7', x=970,y=540,w=80,h=65,code=function()_nextDir(7)end,font=50,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin1', x=130,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(1)end,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin2', x=270,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(2)end,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin3', x=410,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(3)end,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin4', x=550,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(4)end,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin5', x=690,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(5)end,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin6', x=825,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(6)end,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='spin7', x=970,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(7)end,fText=CHAR.icon.retry_spin},
WIDGET.newButton{name='skinR', x=200,y=640,w=220,h=80,color='lV',font=35,
WIDGET.newButton{name='skinR', x=200,y=640,w=220,h=80,color='lV',font=35,sound='back',
code=function()
SETTING.skin={1,7,11,3,14,4,9,1,7,2,6,10,2,13,5,9,15,10,11,3,10,2,16,8,4,10,13,2,8}
SFX.play('rotate')
end},
WIDGET.newButton{name='faceR', x=480,y=640,w=220,h=80,color='lR',font=35,
WIDGET.newButton{name='faceR', x=480,y=640,w=220,h=80,color='lR',font=35,sound='back',
code=function()
for i=1,29 do
SETTING.face[i]=0
@@ -124,7 +123,7 @@ scene.widgetList={
end
SFX.play('hold')
end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
playEgg,
}

View File

@@ -95,7 +95,7 @@ scene.widgetList={
WIDGET.newButton{name='apply', x=1100,y=400,w=180,h=60,code=function()SETTING.sfxPack=sfxPack SFX.load('media/effect/'..sfxPack..'/')end,hideF=function()return SETTING.sfxPack==sfxPack end},
WIDGET.newSelector{name='vocPack',x=1100,y=470,w=200,color='lV',list=VOCPACKS,disp=function()return vocPack end,code=function(i)vocPack=i end},
WIDGET.newButton{name='apply', x=1100,y=540,w=180,h=60,code=function()SETTING.vocPack=vocPack VOC.load('media/vocal/'..vocPack..'/')end,hideF=function()return SETTING.vocPack==vocPack end},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -115,7 +115,7 @@ scene.widgetList={
end},
WIDGET.newSelector{name='snap', x=750,y=90,w=200,h=80,color='Y',list={1,10,20,40,60,80},disp=function()return snapUnit end,code=function(i)snapUnit=i end},
WIDGET.newButton{name='option', x=530,y=190,w=200,h=80,font=60,fText=CHAR.icon.menu,code=function()SCN.go('setting_touchSwitch')end},
WIDGET.newButton{name='back', x=750,y=190,w=200,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back', x=750,y=190,w=200,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newKey{name='save1', x=475,y=290,w=90,h=70,code=_save1,font=45,fText=CHAR.icon.saveOne},
WIDGET.newKey{name='load1', x=585,y=290,w=90,h=70,code=_load1,font=45,fText=CHAR.icon.loadOne},
WIDGET.newKey{name='save2', x=695,y=290,w=90,h=70,code=_save2,font=45,fText=CHAR.icon.saveTwo},

View File

@@ -62,7 +62,7 @@ scene.widgetList={
WIDGET.newSlider{name='tchW', x=140, y=860, w=1000, font=35,disp=SETval('VKTchW'),code=function(i)SETTING.VKTchW=i SETTING.VKCurW=math.max(SETTING.VKCurW,i)end,hideF=_notTrack},
WIDGET.newSlider{name='curW', x=140, y=930, w=1000, font=35,disp=SETval('VKCurW'),code=function(i)SETTING.VKCurW=i SETTING.VKTchW=math.min(SETTING.VKTchW,i)end,hideF=_notTrack},
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -113,7 +113,7 @@ scene.widgetList={
code=function(v)SETTING.fieldSatur=v;applyFieldSatur(SETTING.fieldSatur)end
},
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -95,7 +95,7 @@ function scene.draw()
end
scene.widgetList={
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
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

@@ -131,7 +131,7 @@ scene.widgetList={
end
},
WIDGET.newButton{name='save',x=820,y=640,w=250,h=80,font=25,code=goScene'savedata'},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

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