Compare commits

...

57 Commits

Author SHA1 Message Date
MrZ_26
618be8898f 版本推进 2022-05-24 15:21:16 +08:00
MrZ_26
2192e291a8 删除日文字体,更新主字体 2022-05-24 15:21:16 +08:00
MrZ_26
02de532241 trs里T的1→0/3→0新增一个上1的踢 2022-05-24 15:21:15 +08:00
MrZ_26
2fa8978b47 删除词典的人物介绍部分
更新/调整中文tips
2022-05-24 15:21:15 +08:00
Imple Lee
390208abfa fix grading of dig-quad-10l (#704) 2022-05-18 01:07:36 +08:00
sakurw
0a36523fbb Update lang_ja.lua (#706) 2022-05-18 01:07:02 +08:00
MrZ_26
8a61172764 版本推进 2022-05-16 00:24:58 +08:00
MrZ_26
97fd1721c5 中文词典新增timing词条 2022-05-13 21:40:14 +08:00
MrZ_26
55419cc183 调整一处中文模式说明错误 2022-05-07 12:52:32 +08:00
Imple Lee
db47528a37 check syntax validity in automatic test (#701) 2022-05-07 12:30:27 +08:00
Imple Lee
38be81114f add dig_techrash_10l.lua (#703) 2022-05-07 12:28:31 +08:00
Imple Lee
6c960fdde8 fix line breaks in manuals (#700)
Currently manuals can't be automatically fix, so for now we can only
break them manually....
2022-05-07 12:25:09 +08:00
MrZ_26
05c277a690 可以根据设置显示日文的说明书了 2022-05-05 16:15:28 +08:00
Imple Lee
9dab204ae8 change fixed URL to relative URL in GitHub Actions (#699) 2022-05-05 16:11:47 +08:00
Imple Lee
075f643fb7 check font in automatic test (#698)
* check font in automatic test

* fix `description` in `action.yml`

* check font first
because it's faster

* add link to missing character

* fix grammar error

* fix grammar error again

* fix SHA error

* fix one-line error to align with github

* fix: make line-number start from 1
2022-05-04 18:25:52 +08:00
NOT_A_ROBOT
8d4e2fa0d0 Improved invis/fading roll modes (#697)
* Added target line in master_ex

* Added roll target line in master_g

* Added roll countdown during transition in master_g
2022-05-04 18:06:42 +08:00
MrZ_26
5d05583e26 修正TRS的O变JL条件错误 2022-05-04 14:46:24 +08:00
MrFaq2018
31425440dc Update lang_es.lua (#695) 2022-05-04 12:41:18 +08:00
sakurw
5409e18ede Update manual_ja.txt (#692) 2022-05-04 12:40:52 +08:00
MrZ_26
1d50e37df2 微调中文词典一处用词 2022-05-03 23:26:43 +08:00
MrZ_26
afa86fe0ac 修正lang_es少一个括号 2022-05-03 23:21:41 +08:00
sakurw
77b031fdde Update lang_ja.lua (#694) 2022-05-03 21:51:26 +08:00
MrZ_26
d0c71cd0af 订正一处英文说明书的错误 2022-05-03 20:59:06 +08:00
MrZ_26
5b743a4103 一处治标不治本的玩家游戏结束时的场地矩阵相关报错修正 2022-05-03 13:10:25 +08:00
MrFaq2018
da8d7e2080 Updated Spanish Translation 05-2022 (#693) 2022-05-03 13:06:05 +08:00
MrZ_26
3934a61a6d 版本推进 2022-04-30 21:38:44 +08:00
MrZ_26
1f225ae6ad 移除机翻语言,调整语言设置界面 2022-04-30 21:38:44 +08:00
MrZ_26
303a1d7afc 微调中文语言文件 2022-04-30 21:38:44 +08:00
MrZ_26
1d4a2eeb66 移除地图上的clearRush模式
整理代码
2022-04-30 21:38:44 +08:00
MrZ_26
3fe0f7281a 修复trs的V的踢墙表错误 2022-04-30 21:38:44 +08:00
NOT_A_ROBOT
f89248a8b7 Improve Indoneisan Translation (#688) 2022-04-28 11:26:15 +08:00
MrZ_26
0453e8d94d 去掉之前“移除”mono语音包的时候添加的强制修改设置 2022-04-23 14:15:01 +08:00
NOT_A_ROBOT
fd1070c313 Fix minor mistake in Indonesian language (#685) 2022-04-23 13:18:24 +08:00
MrZ_26
d987008cf6 版本推进 2022-04-20 19:23:37 +08:00
MrZ_26
73fc7c037d 修复big模式统计行数可能超出200 close #682 2022-04-20 19:23:23 +08:00
MrZ_26
718540db5a 新的mono立绘+重新开放mono语音包选项 2022-04-20 19:22:57 +08:00
MrZ_26
9c2b09e589 修复键盘编辑自定义场地不能切换画笔,同时新增c为智能画笔快捷键 2022-04-19 20:16:14 +08:00
MrZ_26
0c2f0904ef 修复经典模式通关就报错
整理代码
2022-04-17 20:57:40 +08:00
MrZ_26
2ae34bded1 如果加载存档时发生错误会提示有文件丢失而不是蓝屏 2022-04-17 20:57:40 +08:00
C₂₉H₂₅N₃O₅
30b1d2ddfd 大改词典,更新Legals (#683)
* 更新英文翻译
* 修改中文词典小细节
* 更新Legals
2022-04-17 14:31:38 +08:00
MrZ_26
d769604724 修补中文词典 2022-04-10 21:03:51 +08:00
Richard969
573366fed9 对词典进行一些补充和修改 (#681) 2022-04-10 20:24:42 +08:00
MrZ_26
6f3667e65a 制作人员名单添加插图作者 2022-04-08 16:08:35 +08:00
Imple Lee
9426dcdc69 better .gitattributes (#680)
* better .gitattributes

* .gitattributes per directory

* No binary file detection

https://stackoverflow.com/questions/57030698

* fix .github/actions/*/*.yml
2022-04-04 12:28:42 +08:00
MrZ_26
bdb117c0df 添加.gitattributes 2022-04-04 05:35:41 +08:00
MrZ_26
8fd4391549 移除音乐室“old works”文本
整理代码
2022-04-04 05:32:32 +08:00
MrZ_26
373c8a8a5f 版本推进 2022-04-04 05:29:54 +08:00
MrZ_26
2207f7e414 添加少许魔法
框架跟进
2022-04-04 05:25:42 +08:00
MrZ_26
984bb7d6a6 词典调整 2022-04-04 04:57:20 +08:00
Richard969
664afb0bb3 Added a mino list in Zictionary (#679) 2022-04-04 04:53:02 +08:00
MrZ_26
716a08b31d 着色器技术飞跃
框架跟进
2022-04-03 02:41:49 +08:00
MrZ_26
a6c63c41b6 限制着色器们输入的时间范围防止精度问题导致掉帧(略暴力,会导致一个背景连续40分钟左右后会闪烁一次) 2022-04-03 00:40:21 +08:00
MrZ_26
286e330077 版本推进 2022-03-31 17:04:29 +08:00
MrZ_26
5e8af423f2 修复一些背景相关问题,框架跟进 2022-03-31 17:04:29 +08:00
NOT_A_ROBOT
5f539a2d4f Fixed off-by-one error in rank calculation in Master Graded (#678) 2022-03-31 13:58:04 +08:00
MrZ_26
73f63cfd0a 修复秒表小程序不能用触屏 2022-03-27 00:35:28 +08:00
MrZ_26
11422bee5a 微调说明书里对于HPC的说明 2022-03-26 21:12:48 +08:00
81 changed files with 1331 additions and 2424 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto

2
.github/.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
actions/**/*.yml text eol=lf
workflows/*.yml text eol=lf

View File

@@ -4,6 +4,58 @@ description: 'Check for obvious errors.'
runs:
using: "composite"
steps:
- name: Install lua
shell: bash
run: |
sudo apt-get install lua5.3 -y
- name: Check all lua files are valid
shell: lua {0}
run: |
local files = assert(io.popen "find . -name '*.lua' -not -path '*/.git/*'")
local errors = 0
for file in files:lines() do
local f, error = loadfile(file)
if not f then
print(error)
errors = errors + 1
end
end
files:close()
if errors > 0 then
print(('%d syntax error(s) found.'):format(errors))
os.exit(1)
else
print('No syntax error found.')
end
- name: Prepare FontTools
shell: bash
run: |
pip install fonttools
- name: Check all characters are in the font
shell: python
run: |
from fontTools.ttLib import TTFont
from pathlib import Path
font = TTFont('parts/fonts/proportional.otf')
keys = set(font.getBestCmap().keys())
missing = []
for file in Path('parts/language').glob('*.lua'):
for i, line in enumerate(file.read_text().splitlines()):
for char in line:
if ord(char) not in keys:
missing.append((char, file, i+1))
if missing:
print('Missing characters:')
for char, file, i in missing:
print(f"'{char}'({ord(char):x}) in {file} at line {i} " \
f"(${{ github.server_url }}/${{ github.repository }}/blob/${{ github.sha }}/{file}#L{i})")
exit(1)
else:
print('All characters are present in the font.')
- uses: ./.github/actions/build-love
with:
file-path: Techmino.love

1
.github/build/Linux/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.template text eol=lf

1
.github/build/Windows/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.template text eol=crlf

1
.github/build/macOS/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.template text eol=lf

View File

@@ -1,28 +1,28 @@
local arg=arg[1]
if arg=="-apkCode"then
local code=require"version".apkCode
print(code)
elseif arg=="-code"then
local str=require"version".code
print(str)
elseif arg=="-name"then
local str=require"version".string
print(str)
elseif arg=="-release"then
local str=require"version".string:gsub("V","",1)
print(str)
elseif arg=="-updateTitle"then
local note=require"parts.updateLog"
local p1=note:find("\n%d")+1
local p2=note:find("\n",p1)-1
note=note:sub(p1,p2)
print(note)
elseif arg=="-updateNote"then
local note=require"parts.updateLog"
local p1=note:find("\n",note:find("\n%d")+1)+1
local p2=note:find("\n%d",p1+1)
note=note:sub(p1,p2-2)
:gsub(" ","- ")
:gsub(" ","# ")
print(note)
end
local arg=arg[1]
if arg=="-apkCode"then
local code=require"version".apkCode
print(code)
elseif arg=="-code"then
local str=require"version".code
print(str)
elseif arg=="-name"then
local str=require"version".string
print(str)
elseif arg=="-release"then
local str=require"version".string:gsub("V","",1)
print(str)
elseif arg=="-updateTitle"then
local note=require"parts.updateLog"
local p1=note:find("\n%d")+1
local p2=note:find("\n",p1)-1
note=note:sub(p1,p2)
print(note)
elseif arg=="-updateNote"then
local note=require"parts.updateLog"
local p1=note:find("\n",note:find("\n%d")+1)+1
local p2=note:find("\n%d",p1+1)
note=note:sub(p1,p2-2)
:gsub(" ","- ")
:gsub(" ","# ")
print(note)
end

View File

@@ -10,8 +10,6 @@ Powered by LÖVE, © 20062022 LÖVE Development Team.
Lua is free software distributed under the terms of the MIT license. Copyright © 19942022 by Lua.org, PUC-Rio.
SIMPLE LOVE LIGHTS is under a MIT License. Created by Dylan Hunn.
json.lua is copyrighted by rxi. © 2022 rxi.
IBM Plex is copyrighted by the International Business Machines Corporation. IBM and IBM Plex are trademarks of IBM Corp, registered in many jurisdictions worldwide. IBM Plex is licensed under the SIL Open Font License, Version 1.1.
@@ -29,7 +27,7 @@ JetBrains Mono is copyrighted by the JetBrains Mono Project authors. JetBrains M
"Windows", the Windows logo, "Xbox", Xbox logo, and "Microsoft" are registered trademarks of Microsoft Corporation in the United States of America and other countries or regions.
The Apple logo, "Apple Inc.," iOS, iPadOS, macOS, iPhone, and Mac are registered trademarks of Apple Inc. in the United States of America and other countries or regions.
The Apple logo, "Apple Inc.," iOS, iPadOS, macOS, iPhone, Mac, and Apple Arcade are registered trademarks of Apple Inc. in the United States of America and other countries or regions.
"EA" and "Electronic Arts" are registered trademarks of Electronic Arts Inc. © 2022 Electronic Arts Inc.
@@ -38,7 +36,7 @@ SEGA and the SEGA logo are registered trademarks of Sega Corporation. © 2022 Se
Oculus Quest is a registered trademark of Facebook Technologies, LLC. © Meta Platforms, Inc.
"Nintendo" is a registered trademarks of Nintendo Co., Ltd. © 2022 Nintendo Co., Ltd.
"Nintendo" is a registered trademark of Nintendo Co., Ltd. © 2022 Nintendo Co., Ltd.
N3TWORK is a registered trademark of N3TWORK Inc. © 2022 N3TWORK Inc.
@@ -46,6 +44,8 @@ GoldWave is a registered trademark of GoldWave, Inc.
Linux is a registered trademark of Linus Torvalds.
Google is a registered trademark of Google LLC.
Touhou Project © Team Shanghai Alice 20022022.
All other trademarks, logos, and copyrights are the properties of their respective owners.

View File

@@ -30,7 +30,7 @@ SAVEDIR=fs.getSaveDirectory()
--Global Vars & Settings
SFXPACKS={'chiptune'}
VOCPACKS={'miya',--[['mono',]]'xiaoya','miku'}
VOCPACKS={'miya','mono','xiaoya','miku'}
FIRSTLAUNCH=false
DAILYLAUNCH=false
@@ -180,7 +180,7 @@ Z.setOnFnKeys({
end
end
end,
function()print(WIDGET.getSelected()or"no widget selected")end,
function()print(BG.locked)end,
function()for k,v in next,_G do print(k,v)end end,
function()if love['_openConsole']then love['_openConsole']()end end,
})
@@ -190,9 +190,6 @@ Z.setDebugInfo{
{"Voices",VOC.getQueueCount},
{"Audios",love.audio.getSourceCount},
}
Z.setOnResize(function(w,_)
SHADER.warning:send('w',w*SCR.dpi)
end)
do--Z.setOnFocus
local function task_autoSoundOff()
while true do
@@ -234,12 +231,18 @@ end
Z.setOnQuit(destroyPlayers)
--Load settings and statistics
TABLE.cover (loadFile('conf/user','-canSkip')or{},USER)
TABLE.cover (loadFile('conf/unlock','-canSkip')or{},RANKS)
TABLE.update(loadFile('conf/settings','-canSkip')or{},SETTING)
TABLE.coverR(loadFile('conf/data','-canSkip')or{},STAT)
TABLE.cover (loadFile('conf/key','-canSkip')or{},KEY_MAP)
TABLE.cover (loadFile('conf/virtualkey','-json -canSkip')or{},VK_ORG)
if
not(
pcall(TABLE.cover, loadFile('conf/user', '-json -canSkip')or loadFile('conf/user', '-luaon -canSkip')or{},USER) and
pcall(TABLE.cover, loadFile('conf/unlock', '-json -canSkip')or loadFile('conf/unlock', '-luaon -canSkip')or{},RANKS) and
pcall(TABLE.update,loadFile('conf/settings', '-json -canSkip')or loadFile('conf/settings', '-luaon -canSkip')or{},SETTING) and
pcall(TABLE.coverR,loadFile('conf/data', '-json -canSkip')or loadFile('conf/data', '-luaon -canSkip')or{},STAT) and
pcall(TABLE.cover, loadFile('conf/key', '-json -canSkip')or loadFile('conf/key', '-luaon -canSkip')or{},KEY_MAP) and
pcall(TABLE.cover, loadFile('conf/virtualkey','-json -canSkip')or loadFile('conf/virtualkey','-luaon -canSkip')or{},VK_ORG)
)
then
MES.new('error',"Be careful, an error accured when loading saving, some data was lost")
end
--Initialize fields, sequence, missions, gameEnv for cutsom game
local fieldData=loadFile('conf/customBoards','-string -canSkip')
@@ -288,6 +291,15 @@ IMG.init{
xiaoyaCH='media/image/characters/xiaoya.png',
xiaoyaOmino='media/image/characters/xiaoya_Omino.png',
mikuCH='media/image/characters/miku.png',
z={
character='media/image/characters/z_character.png',
screen1='media/image/characters/z_screen1.png',
screen2='media/image/characters/z_screen2.png',
particle1='media/image/characters/z_particle1.png',
particle2='media/image/characters/z_particle2.png',
particle3='media/image/characters/z_particle3.png',
particle4='media/image/characters/z_particle4.png',
},
electric='media/image/characters/electric.png',
hbm='media/image/characters/hbm.png',
@@ -373,7 +385,6 @@ LANG.init('zh',
pt=require'parts.language.lang_pt',
id=require'parts.language.lang_id',
ja=require'parts.language.lang_ja',
zh_grass=require'parts.language.lang_zh_grass',
symbol=require'parts.language.lang_symbol',
--1. Add language file to LANG folder;
--2. Require it;
@@ -489,9 +500,6 @@ do
SETTING.dascut=SETTING.dascut+1
needSave=true
end
if SETTING.vocPack=='mono'then
SETTING.vocPack='miya'
end
if RANKS.stack_e then
RANKS.stack_e=nil
RANKS.stack_h=nil
@@ -516,8 +524,8 @@ do
fs.remove('record/rhythm_h.rec')
fs.remove('record/rhythm_u.rec')
end
if RANKS.bigbang then
RANKS.clearRush,RANKS.bigbang=RANKS.bigbang
if RANKS.bigbang or RANKS.clearRush then
fs.remove('record/clearRush.rec')
fs.remove('record/bigbang.rec')
end
if STAT.version~=VERSION.code then

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -97,8 +97,8 @@ do
{131,2,2, 0, 0,0},{131,2,2,-1,-1,0},{131,2,2,-1, 0,0},--S
{131,1,2,-1, 0,0},{131,1,2, 0,-1,0},{131,1,2, 0, 0,0},--Z(misOrder)
{313,2,2, 0, 0,0},{313,2,2,-1,-1,0},{313,2,2,-1, 0,0},--S(misOrder)
{331,3,2, 0,-1,1},--J(farDown)
{113,4,2,-1,-1,1},--L(farDown)
{331,3,2, 0,-1,0},--J(farDown)
{113,4,2,-1,-1,0},--L(farDown)
{113,3,2,-1,-1,0},{113,3,0, 0, 0,0},--J
{331,4,2, 0,-1,0},{331,4,0,-1, 0,0},--L
{222,7,0,-1, 1,1},{222,7,0,-2, 1,1},{222,7,0, 0, 1,1},--I(high)
@@ -156,9 +156,9 @@ do
false,--L
{
[01]={'+0+0','-1+0','-1+1','+0-2','-1-2','+0+1'},
[10]={'+0+0','+1+0','+1-1','+0+2','+1+2','+0-1'},
[10]={'+0+0','+1+0','+1-1','+0+2','+1+2','+0+1','+0-1'},
[03]={'+0+0','+1+0','+1+1','+0-2','+1-2','+0+1'},
[30]={'+0+0','-1+0','-1-1','+0+2','-1+2','+0-1'},
[30]={'+0+0','-1+0','-1-1','+0+2','-1+2','+0+1','+0-1'},
[12]={'+0+0','+1+0','+1-1','+0-1','-1-1','+0+2','+1+2','+1+1'},
[21]={'+0+0','-1+0','+0-2','-1-2','-1-1','+1+1'},
[32]={'+0+0','-1+0','-1-1','+0-1','+1-1','+0+2','-1+2','-1+1'},
@@ -306,7 +306,7 @@ do
[03]={'+0+0','+0-1','+0+1','+0+2'},
[30]={'+0+0','+0-1','+0+1','+0-2'},
[12]={'+0+0','+0-1','+0+1','+0+2'},
[21]={'+0+0','+0-1','+0-2','+0-2'},
[21]={'+0+0','+0-1','+0+1','+0-2'},
[32]={'+0+0','+1+0','-1+0'},
[23]={'+0+0','-1+0','+1+0'},
[02]={'+0+0','-1+1','+1-1'},

View File

@@ -5,19 +5,15 @@ local shader=SHADER.aura
local t
function back.init()
t=math.random()*2600
t=math.random()*260
BG.resize(SCR.w,SCR.h)
end
function back.resize(_,h)
shader:send('w',SCR.W)
shader:send('h',h*SCR.dpi)
end
function back.update(dt)
t=t+dt
t=(t+dt)%2600
end
function back.draw()
gc.clear(.08,.08,.084)
shader:send('t',t)
shader:send('phase',t)
gc.setShader(shader)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()

View File

@@ -5,18 +5,14 @@ local shader=SHADER.grad1
local t
function back.init()
t=math.random()*2600
back.resize()
end
function back.resize()
shader:send('w',SCR.W)
t=math.random()*260
end
function back.update(dt)
t=t+dt
t=(t+dt)%2600
end
function back.draw()
gc.clear(.08,.08,.084)
shader:send('t',t)
shader:send('phase',t)
gc.setShader(shader)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()

View File

@@ -5,18 +5,15 @@ local shader=SHADER.grad2
local t
function back.init()
t=math.random()*2600
t=math.random()*260
BG.resize(nil,SCR.h)
end
function back.resize(_,h)
shader:send('h',h*SCR.dpi)
end
function back.update(dt)
t=t+dt
t=(t+dt)%2600
end
function back.draw()
gc.clear(.08,.08,.084)
shader:send('t',t)
shader:send('phase',t)
gc.setShader(shader)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()

View File

@@ -5,19 +5,15 @@ local shader=SHADER.rgb1
local t
function back.init()
t=math.random()*2600
t=math.random()*260
BG.resize(SCR.w,SCR.h)
end
function back.resize(_,h)
shader:send('w',SCR.W)
shader:send('h',h*SCR.dpi)
end
function back.update(dt)
t=t+dt
t=(t+dt)%2600
end
function back.draw()
gc.clear(.08,.08,.084)
shader:send('t',t)
shader:send('phase',t)
gc.setShader(shader)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()

View File

@@ -5,19 +5,15 @@ local shader=SHADER.rgb2
local t
function back.init()
t=math.random()*2600
t=math.random()*260
BG.resize(SCR.w,SCR.h)
end
function back.resize(_,h)
shader:send('w',SCR.W)
shader:send('h',h*SCR.dpi)
end
function back.update(dt)
t=t+dt
t=(t+dt)%2600
end
function back.draw()
gc.clear(.08,.08,.084)
shader:send('t',t)
shader:send('phase',t)
gc.setShader(shader)
gc.rectangle('fill',0,0,SCR.w,SCR.h)
gc.setShader()

View File

@@ -63,12 +63,12 @@ return{
local D=P.modeData
D.drought=P.lastPiece.id==7 and 0 or D.drought+1
if P.stat.row>=D.target then
if D.target>=100 then
if D.target>=100 then
D.lvl=D.lvl+1
end
local dropSpd=GetGravity(D.lvl)
if D.target==200 then P.win('finish') return
elseif dropSpd~=P.gameEnv.drop then
if D.target==200 then P:win('finish') return
elseif dropSpd~=P.gameEnv.drop then
P.gameEnv.drop,P.gameEnv.lock=dropSpd,dropSpd
P.gameEnv.sddas,P.gameEnv.sdarr=dropSpd,dropSpd
SFX.play('warn_2',.7)

View File

@@ -63,12 +63,12 @@ return{
local D=P.modeData
D.drought=P.lastPiece.id==7 and 0 or D.drought+1
if P.stat.row>=D.target then
if D.target>=100 then
if D.target>=100 then
D.lvl=D.lvl+1
end
local dropSpd=GetGravity(D.lvl)
if D.target==200 then P.win('finish') return
elseif dropSpd~=P.gameEnv.drop then
if D.target==200 then P:win('finish') return
elseif dropSpd~=P.gameEnv.drop then
P.gameEnv.drop,P.gameEnv.lock=dropSpd,dropSpd
P.gameEnv.sddas,P.gameEnv.sdarr=dropSpd,dropSpd
SFX.play('warn_1')

View File

@@ -67,7 +67,7 @@ return{
D.lvl=D.lvl+1
--end
local dropSpd=GetGravity(D.lvl)
if dropSpd~=P.gameEnv.drop then
if dropSpd~=P.gameEnv.drop then
P.gameEnv.drop,P.gameEnv.lock=dropSpd,dropSpd
P.gameEnv.sddas,P.gameEnv.sdarr=dropSpd,dropSpd
SFX.play('warn_1')

View File

@@ -62,8 +62,8 @@ return{
hook_drop=function(P)
local D=P.modeData
D.drought=P.lastPiece.id==7 and 0 or D.drought+1
if P.stat.row>=D.target then
if D.target>=200 then P.win('finish') return end
if P.stat.row>=D.target then
if D.target>=200 then P:win('finish') return end
SFX.play('reach')
D.lvl=D.lvl+1
D.target=D.target+10

View File

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

View File

@@ -2,6 +2,15 @@ local gc=love.graphics
local sectionName={"D","C","B","A","A+","S-","S","S+","S+","SS","SS","U","U","X","X+"}
local passPoint=16
local function getRollGoal(P)
-- get amount of grades needed for X+
local rem=12.4-P.modeData.rankPoint/10
if rem<=0 then return 0 end
local goal=math.floor(rem)*4
rem=rem%1
return goal + (rem>0.3 and 4 or rem*10)
end
return{
drop=0,lock=15,
wait=15,fall=6,
@@ -29,6 +38,7 @@ return{
setFont(75)
mStr(P.stat.row,63,230)
mStr(P.stat.clears[4],63,340)
PLY.draw.drawTargetLine(P,getRollGoal(P))
end,
hook_drop=function(P)
if P.modeData.rankPoint<140-passPoint then--If Less then X

View File

@@ -104,6 +104,21 @@ local function addGrade(row, cmb, lvl) -- IGS = internal grade system
int_grade=int_grade+1
end
end
local function getRollGoal()
-- get amount of grades needed for TM+
local rem=#gradeList-(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets)
if rem<=0 then return 0 end
local goal=0
if cools>8 then
goal=math.floor(rem)*4
rem=rem%1
return goal + (rem>0.3 and 4 or rem*10)
else
goal=math.floor(rem/0.26)*4
rem=rem%0.26
return goal + (rem>0.12 and 4 or rem*25)
end
end
return{
drop=64,
@@ -145,6 +160,7 @@ return{
t=t/60
gc.setColor(1.7*t,2.3-2*t,.3)
mStr(T,63,248)
PLY.draw.drawTargetLine(P,getRollGoal())
else
-- draw level counter
setFont(20)
@@ -295,10 +311,13 @@ return{
TABLE.cut(P.visTime)
elseif P.waiting==180 then
playReadySFX(3,3)
P:_showText("3",0,-120,120,'fly',1)
elseif P.waiting==120 then
playReadySFX(2,1)
P:_showText("2",0,-120,120,'fly',1)
elseif P.waiting==60 then
playReadySFX(1,1)
P:_showText("1",0,-120,120,'fly',1)
elseif P.waiting==1 then
playReadySFX(0,1)
isInRollTrans=false

View File

@@ -20,7 +20,7 @@ return{
local D=P.modeData
local c=#P.clearedRow
if c==0 and D.pt%100==99 then
if c==0 and D.pt%100==99 then
if D.pt<1000 then
hidetimer=0-inv_wait[(P.modeData.pt/100-(P.modeData.pt%100)/100)+1]
if c>0 then hidetimer=hidetimer-inv_fall[(P.modeData.pt/100-(P.modeData.pt%100)/100)+1]end

Binary file not shown.

Binary file not shown.

View File

@@ -165,17 +165,15 @@ do--function applySettings()
BG.set()
elseif SETTING.bg=='off'then
BG.unlock()
BG.set('fixColor')
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.lock()
elseif SETTING.bg=='custom'then
if love.filesystem.getInfo('conf/customBG')then
local res,image=pcall(gc.newImage,love.filesystem.newFile('conf/customBG'))
if res then
BG.unlock()
BG.set('custom')
gc.setDefaultFilter('linear','linear')
BG.send(SETTING.bgAlpha,image)
BG.set('custom',SETTING.bgAlpha,image)
gc.setDefaultFilter('nearest','nearest')
BG.lock()
else
@@ -184,8 +182,7 @@ do--function applySettings()
else--Switch off when custom BG not found
SETTING.bg='off'
BG.unlock()
BG.set('fixColor')
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.lock()
end
end

File diff suppressed because it is too large Load Diff

View File

@@ -785,6 +785,11 @@ return{
"term",
"Soft Drop Factor\n\nA way to define soft drop speed as a multiple of natural falling speed. In guideline games, the soft drop is usually 20x the speed of natural falling, i.e. it has an SDF of 20. Techmino does not use SDF to define soft drop speed.",
},
{"Shape & Names",
"mino",
"term",
"Z"..CHAR.mino.Z.." S"..CHAR.mino.S.." J"..CHAR.mino.J.." L"..CHAR.mino.L.." T"..CHAR.mino.T.." O"..CHAR.mino.O.." I"..CHAR.mino.I.." Z5"..CHAR.mino.Z5.." S5"..CHAR.mino.S5.." P"..CHAR.mino.P.." Q"..CHAR.mino.Q.." F"..CHAR.mino.F.." E"..CHAR.mino.E.." T5"..CHAR.mino.T5.." U"..CHAR.mino.U.." V"..CHAR.mino.V.." W"..CHAR.mino.W.." X"..CHAR.mino.X.." J5"..CHAR.mino.J5.." L5"..CHAR.mino.L5.." R"..CHAR.mino.R.." Y"..CHAR.mino.Y.." N"..CHAR.mino.N.." H"..CHAR.mino.H.." I5"..CHAR.mino.I5.." I3"..CHAR.mino.I3.." C"..CHAR.mino.C.." I2"..CHAR.mino.I2.." O1"..CHAR.mino.O1,
},
{"Bag7 generator",
"bag7bag randomgenerator",
"term",
@@ -1125,246 +1130,4 @@ return{
"english",
"Acronym for \"Away From Keyboard\", or in a broader sense, a period when you are not playing.\nTaking regular breaks help relief your muscle strain and help you to play better when you come back.",
},
--Famous
{"Hebomai",
"hbm",
"name",
"One of the top players.\nOnce Beat Wu Songhao (a Chinese player) on TV.",
},
{"Amemiya Taiyou",
"amemiya taiyou",
"name",
"(あめみや たいよう)\n\nOne of the top players.\nWon champion on a game in Puyo Puyo Tetris's Swap mode.",
},
{"Ajanba",
"ajb",
"name",
"One of the top players.\nWon champion of JsCup.",
},
{"Blink",
"",
"name",
"One of the top players.\nRuns the Tetris community, Hard Drop.",
},
{"Doremy",
"123",
"name",
"One of the top players.\nAmemiya once said he was the second-best player in the world.",
},
{"Firestorm",
"fst",
"name",
"One of the top players.\nWon champion of JsCup.",
},
{"Furea",
"flare fuleiya jk",
"name",
"(ふれあ)\n\nOne of the top players.\nWorld record holder of Puyo Puyo Tetris's Ultra mode.",
},
{"Iljain",
"yijianlian",
"name",
"One of the top players.\nAchieved Rank 1 in Cultris II.",
},
{"Jonas",
"",
"name",
"(1981-2021) One of the top players in Classic Tetris.\nFour-times-in-a-row champion of CTWC.",
},
{"Joseph",
"",
"name",
"One of the top players in Classic Tetris.\nTwice-in-a-row champion of CTWC. Also holds many world records of Tetris (NES, Nintendo).",
},
{"Kazu",
"mdking",
"name",
"One of the top players.\nFamous for how he can turn misdrops into donation setups.\nA.k.a. \"GAMEOVER\", \"GAMAOVER\", \"GAME_OVER_RETRY\"",
},
{"Microblizz",
"",
"name",
"One of the top players.\nFormer world record holder for Sprint.",
},
{"Vince",
"vincehd",
"name",
"One of the top players.\nLast world record holder for Sprint (no delay).",
},
{"Wumbo",
"wumbotize squirtle",
"name",
"One of the top players.\nFamously fond of using Center 4-Wide setups, thus having a bad reputation. However, he is undeniably skilled in other techniques as well.",
},
{"Yakine",
"",
"name",
"One of the top players.\nFamous for fancy T-Spins. When in combat but not in danger, he could often pull off some fancy donations very high on the field. Third place on the speed leaderboards of Jstris's 20TSD mode, and didn't use setups (the first and second place both used LST setup).",
},
{"Translator Note 3",
"",
"help",
"Starting from here, all but one term are China-specific (the not-China term is Diao) and are less relevant for the global community.\n\"Virtual content creator\" refers to people who produce content online under a fictional persona, and appear as a motion-controlled animated character on screens. Basically \"Virtual YouTuber\" but not platform-specific."
},
{"TetroDictionary",
"zictionary littlez",
"name",
"(or Zictionary for short) The name of this dictionary!\nIt includes brief introductions on many common terms in Tetris.\nIt used to be a chatbot in our QQ group, which was used to answer new player's FAQs. The entries in the Tetrodictionary were also inherited from the database in the chatbot.\nThe contents in the TetroDictionary was adapted from a variety of sources such as Tetris Wiki and Hard Drop Wiki.",
},
{"MrZ",
"mrz_26 t026 t626",
"name",
"Tetris Research community member, the author of Techmino.\nPersonal bests: Sprint 25.95 seconds, MPH Sprint 57 seconds, #8 on Jstris leaderboards, X rank on TETR.IO, cleared TGM3 (World rule, Shirase gold 1300).",
"https://space.bilibili.com/225238922",
},
{"Circu1ation",
"",
"name",
"One of the top players. First one to achieve sub-20 40L Sprint in China, X rank on TETR.IO.",
"https://space.bilibili.com/557547205",
},
{"Farter",
"",
"name",
"Tetris Research community member.\nPersonal bests: Sprint 26.193 seconds\nOne of the prestigious players in the Chinese Tetris community. Author of T-ex and Tetr.js Farter's Dig Mod.",
"https://space.bilibili.com/132966",
},
{"Teatube",
"ttb chaguan chanaiye sifangchaye 022",
"name",
"Administrator of the Tetris Research community, Operator of the Tetris Online Study private server, chief editor of the Huiji wiki.\nPersonal bests: Sprint 33 seconds.",
"https://space.bilibili.com/834903",
},
{"Sniraite",
"",
"name",
"Tetris Research community member.\nPersonal bests: Sprint 23 seconds\nOne of the top players in China. Should be the fastest player in Mainland China.",
"https://space.bilibili.com/561589",
},
{"xb",
"xb",
"name",
"Tetris Research community member.\nMain organizer for competitions in the community.",
},
{"Flyz",
"fxg",
"name",
"Tetris Research community member.\nA technical player.",
"https://space.bilibili.com/787096",
},
{"gggf",
"xiaoqi kissne gggf",
"name",
"Tetris Research community member.\nPersonal bests: Sprint 22.677 seconds (25.483 seconds on mobile), MPH Sprint 56 seconds, X rank on Tetr.io\nOne of the top players of 20G in China, achieved almost every achievement in TGM3.\n\nAlso a Touhou fan: IN:EX NM 1B FS; MF:L NM ",
"https://space.bilibili.com/287769888",
},
{"蕴空之灵",
"ykzl yunkongzhiling niao bird",
"name",
"(Yùn Kōng Zhī Líng)Tetris Research community member.\nPersonal bests: Sprint 33 seconds.\nDecent efficiency. Can't eat spicy food. Often uses TKI 3, Albatross and PC opener.",
"https://space.bilibili.com/9964553",
},
-- {"Mono",
-- "dongxi",
-- "name",
-- "Tetris Research community member.\nWe seem to have lost some information about this individual, but you should still be able to find her in one of the voice packs in Techmino.",
-- "https://space.bilibili.com/1048531896",
-- },
{"奏之章",
"zzz zouzhizhang",
"name",
"(Zòu Zhī Zhāng) Tetris Research community member.\nAuthor of ZZZbot. An important figure in the developement of Tetris AI in China.",
"https://space.bilibili.com/311039",
},
{"吴淞昊",
"wusonghao modian",
"name",
"(Wú Sōnghào)\n\nTetris Research community member.\nOne of the top players of hidden Tetris in China. Was once on TV.",
"https://space.bilibili.com/17583394",
},
{"他天一",
"tty tatianyi hydrofierus",
"name",
"(Tā Tiān Yī)\n\nTetris Research community member.\nPersonal bests: Sprint 21.908 seconds, U rank on Tetr.io.\nOne of the top players of Tetris in China.",
"https://space.bilibili.com/3895759",
},
{"Mars608",
"mars608",
"name",
"Tetris Research community member.\nFormer regional first place on Puyo Puyo Tetris (Nintendo Switch, People's Republic of China region).",
"https://space.bilibili.com/1471400",
},
{"Mifu",
"swl",
"name",
"Originally known as swl.\nPersonal bests: Sprint 28.445 seconds, Tetris Research community member.\nMiya's Tetris coach. Miya made an animated character art for him called Mifu, meaning \"Miya's Shifu\".",
"https://space.bilibili.com/109356367",
},
{"ZXC",
"thtsod flag ctf",
"name",
"Also known as ThTsOd.\nTetris Research community member.\nA technical player.",
"https://space.bilibili.com/4610502",
},
{"Tinko",
"",
"name",
"Tetris Research community member.\nA technical player.",
"https://tinko.moe",
},
{"T0722",
"",
"name",
"Tetris Research community member.\nMusic Composer.",
"https://space.bilibili.com/30452985",
},
{"Diao",
"",
"name",
"Tetris Research community member.\nOne of the top battle players. Won second place in JsCup, champion in TTT, champion in HDO XII.\nHas many former nicknames including nmdtql, diao, nanami.",
"https://space.bilibili.com/471341780",
},
{"思竣",
"sijun acm oi",
"name",
"(Sī Jùn)\n\nTetris Research community member.\nLots of mental computation power.",
"https://space.bilibili.com/403250559",
},
{"Particle_G",
"pg",
"name",
"Tetris Research community member.\nSprint 59.4 seconds\nThe developer of Techmino backend",
"https://space.bilibili.com/3306106",
},
{"琳雨空",
"linyukong",
"name",
"(Lín Yǔ Kong)\n\nTetris Research community member.\nSprint 38.3 seconds, Highest Rank in pentomino mode and Blind-WTF (world No.1)",
"https://space.bilibili.com/263909369",
},
{"子心Koishi",
"",
"name",
"(Zǐ Xīn Koishi)\n\nTetris Research community member, Virtual content creator.\nA top Tetris 99 players known for his strategies.",
"https://space.bilibili.com/147529",
},
{"ditoly",
"icrem kuimei jk",
"name",
"Tetris Research community member. The developer of Nanamino.",
"https://space.bilibili.com/13014410",
},
{"蓝绿",
"lanlv lanlyu gompyn imple lee blari'o blariho",
"name",
"(Lán Lǜ)\n\nTetris Research community member.\nParticipant of $1",--Techmino backend
},
{"喵田弥夜Miya",
"miaotianmiye",
"name",
"(Miāo Tián Mí Yè Miya)\n\nTetris Research community member, Virtual content creator.\nPractically the mascot of the community. Voice actress of Techmino.",
"https://space.bilibili.com/846180",
},
}

File diff suppressed because it is too large Load Diff

View File

@@ -249,6 +249,12 @@ return{
"(旋律星萤)",
"(T0722)",
"",
"Illustrations",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"Musical Designs",
"MrZ",
"柒栎流星",
@@ -315,7 +321,6 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="Support the author",
WidgetText={
@@ -774,6 +779,7 @@ return{
['dig_eff_40l']= {"Dig", "EFFICIENCY 40L", "Dig 40 garbage lines with the least pieces!"},
['dig_eff_100l']= {"Dig", "EFFICIENCY 100L","Dig 100 garbage lines with the least pieces!"},
['dig_eff_400l']= {"Dig", "EFFICIENCY 400L","Dig 400 garbage lines with the least pieces!"},
['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Dig 10 garbage lines using only techrash!"},
['drought_n']= {"Drought", "100L", "No I-pieces available"},
['drought_l']= {"Drought+", "100L", "W T F"},
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with increasing speed"},
@@ -831,7 +837,6 @@ return{
['defender_l']= {"Defender", "LUNATIC", "Practice your defensing skills!"},
['dig_h']= {"Driller", "HARD", "Digging practice!"},
['dig_u']= {"Driller", "ULTIMATE", "Digging practice!"},
['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
['c4wtrain_n']= {"C4W Training", "NORMAL", "Infinite combos"},
['c4wtrain_l']= {"C4W Training", "LUNATIC", "Infinite combos"},
['pctrain_n']= {"PC Training", "NORMAL", "Perfect Clear practice"},

View File

@@ -1,4 +1,14 @@
return{
loadText={
loadSFX="Cargando efectos de sonido",
loadSample="Cargando samples de música",
loadVoice="Cargando voces",
loadFont="Cargando fuentes",
loadModeIcon="Cargando íconos",
loadMode="Cargando modos",
loadOther="Cargando otros assets",
finish="Pulsa cualquier tecla",
},
fallback='en',
sureQuit="Pulsa de nuevo para salir",
sureReset="Pulsa de nuevo para reiniciar",
@@ -22,7 +32,7 @@ return{
stage="Fase $1 Completada",
great="¡Genial!",
awesome="¡Fantástico!",
almost="¡Casi!",
almost="¡Ya casi!",
continue="¡Continúa!",
maxspeed="¡Máx. Velocidad!",
speedup="¡Más rápido!",
@@ -34,13 +44,13 @@ return{
grade="Grado",techrash="Techrash",
wave="Ronda",nextWave="Sig. ronda",
combo="Combo",maxcmb="Combo Máx.",
pc="Perfect Clear",ko="KO",
pc="Perfect Clear",ko="KOs",
win="Victoria",
win="¡Victoria!",
lose="Derrota",
finish="Fin",
gamewin="Victoria",
finish="Finalizado",
gamewin="Has ganado",
gameover="Fin del Juego",
pause="Pausa",
@@ -55,7 +65,7 @@ return{
ai_prebag="La IA no es compatible con piezas que no sean Tetrominos.",
ai_mission="La IA no es compatible con misiones personalizadas.",
switchSpawnSFX="Habilita los sonidos de aparición de las piezas ;)",
needRestart="Reinicia Techmino para que los cambios tengan efecto.",
needRestart="Reinicia para aplicar los cambios.",
loadError_errorMode="'$1' Error al cargar: no hay modo '$2'",
loadError_read="'$1' Error al cargar: error de lectura",
@@ -94,15 +104,15 @@ return{
getNoticeFail="Error al buscar novedades.",
oldVersion="¡Está disponible la nueva versión $1!",
versionNotMatch="¡Las versiones no coinciden!",
needUpdate="¡Nueva versión requerida!",
versionNotMatch="¡Las versiones no coinciden!",
notFinished="Próximamente",
jsonError="Error en Json",
noUsername="Por favor ingresa un nombre de usuario",
wrongEmail="Correo electrónico incorrecto",
noPassword="Por favor ingresa una contraseña",
wrongEmail="Correo electrónico inválido",
noPassword="Por favor ingresa la contraseña",
diffPassword="Las contraseñas no coinciden",
registerRequestSent="Petición de registro enviada con éxito",
registerOK="¡Registro exitoso!",
@@ -134,8 +144,31 @@ return{
errorMsg="Ha ocurrido un error y Techmino necesita reiniciarse.\nSe creó un registro de error, puedes enviarlo al autor.",
tryAnotherBuild="[UTF-8 Inválido] Si estás usando Windows, intenta descargar Techmino-win32 o Techmino-win64 (el que no estés usando ahora).",
-- modInstruction="",
-- modInfo={},--See lang_en.lua
modInstruction="¡Elige tus mods!\nLos mods permiten modificar el juego,\npero también es posible que lo crasheen.\nLos scores no se guardan durante el uso de mods.",
modInfo={
next="NEXT\nSobreescribe el nro. de piezas siguientes a mostrar.",
hold="HOLD\nSobreescribe el nro. de piezas en reserva disponibles.",
hideNext="Hidden NEXT\nOculta el nro. de pzas. especificado en la cola de pzas. siguientes.",
infHold="InfiniHold\nPermite usar la reserva indefinidamente.",
hideBlock="Hide Current Piece:\nHace invisible la pieza en juego.",
hideGhost="No Ghost\nHace invisible la pieza fantasma.",
hidden="Hide Locked Pieces.\nLas piezas ya puestas se vuelven invisibles tras un tiempo a especificar.",
hideBoard="Hide Board\nEsconde el tablero parcial o totalmente.",
flipBoard="Flip Board\nGira o invierte el tablero.",
dropDelay="Gravity\nSobreescribe la velocidad de caída, en frames por bloque.",
lockDelay="Lock Delay\nSobreescribe el retraso de bloqueo (en frames).",
waitDelay="Spawn Delay\nSobreescribe el retraso de spawneo (en frames).",
fallDelay="Line Clear Delay\nSobreescribe el retraso de limpieza de líneas, en frames.",
life="Life\nCambia el nro inicial de vidas.",
forceB2B="B2B Only\nTermina el juego si la barra de B2B baja por debajo del valor inicial.",
forceFinesse="Finesse Only\nTermina el juego si se comete un error de finesse.",
tele="Teleport\nFuerza DAS 0 y ARR 0.",
noRotation="No Rotation\nDeshabilita la rotación de piezas.",
noMove="No Movement\nDeshabilita mover las piezas a los lados.",
customSeq="Randomizer\nSobreescribe el randomizador de la secuencia de piezas.",
pushSpeed="Garbage Speed\nSobreescribe la velocidad de subida de lineas basura (bloques/frame).",
boneBlock="[ ]\n Juega con bloques [ ], a la Electronika 60.",
},
pauseStat={
"Tiempo:",
"Tecla/Rot./Reserva:",
@@ -164,18 +197,120 @@ return{
"Err.Fns./RatioFns:",
},
aboutTexts={
"Este es simplemente un juego de puzzle ordinario, no pienses de él como un juego promedio.",
"Está inspirado en otros como C2/IO/JS/WWC/KOS.",
"Este es simplemente un juego de puzzle *ordinario*. En serio, eso es todo.",
"Inspirado en C2/IO/JS/WWC/KOS etc.",
"",
"Creado con LÖVE",
"Puedes reportar errores o enviar sugerencias al grupo de testeo del autor o por email ~",
"Descarga disponible únicamente vía el grupo de testeo y discord.gg/f9pUvkh",
"Descargas desde otros sitios pueden contener malware/viruses, y en smartphones sólo requiere permisos de internet y vibración.",
"¡Se aprecia cualquier tipo de sugerencia o reporte de bugs!",
"Por favor descarga el juego únicamente desde los sitios oficiales,",
"ya que no podemos asegurar que sea seguro si proviene de otro lado.",
"El autor no se responabiliza por daños ocasionados debido a modificaciones del juego.",
FNNS and"/"or"Por favor descarga las últimas versiones desde los sitios oficiales. El juego es gratuito",
FNNS and"/"or"Ve el Zictionary (en inglés) para más info",
FNNS and"/"or"El juego es gratuito, pero se aprecian donaciones.",
FNNS and"/"or"Ve el Zictionary (en inglés) para más info.",
},
staff={
"ORIGINAL DE MrZ",
"E-mail: 1046101471@qq.com",
"",
"Programado, Desarrollado y Diseñado Por",
"MrZ",
"",
"Música hecha con",
"Beepbox",
"FL Studio",
"FL Mobile",
"Logic Pro X",
"",
"[CREADO CON LÖVE]",
"",
"Programación",
"MrZ",
"ParticleG",
"Gompyn",
"Trebor",
"(scdhh)",
"(FinnTenzor)",
"(NOT_A_ROBOT)",
"(user670)",
"",
"CI en GitHub, Packaging y Backend",
"ParticleG",
"Trebor",
"LawrenceLiu",
"Gompyn",
"flaribbit",
"scdhh",
"",
"Diseño Visual, Interfaz y UX",
"MrZ",
"Gnyar",
"C₂₉H₂₅N₃O₅",
"ScF",
"(旋律星萤)",
"(T0722)",
"",
"Ilustraciones",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"Compositores",
"MrZ",
"柒栎流星",
"ERM",
"Trebor",
"C₂₉H₂₅N₃O₅",
"(T0722)",
"(Aether)",
"(Hailey)",
"",
"Efectos de sonido y Voces",
"Miya",
"Xiaoya",
"Mono",
"MrZ",
"Trebor",
"",
"Traducciones y Localizaciones",
"User670",
"MattMayuga",
"Mizu",
"Mr.Faq",
"ScF",
"C₂₉H₂₅N₃O₅",
"NOT_A_ROBOT",
"sakurw",
"Airun",
"幽灵3383",
"",
"Performances",
"Electric283",
"Hebomai",
"",
"Agradecimientos",
"Flyz",
"Big_True",
"NOT_A_ROBOT",
"思竣",
"yuhao7370",
"Farter",
"Teatube",
"蕴空之灵",
"T9972",
"No-Usernam8",
"andrew4043",
"smdbs-smdbs",
"paoho",
"Allustrate",
"Haoran SUN",
"Tianling Lyu",
"huaji2369",
"Lexitik",
"Tourahi Anime",
"[Todo el staff de testeo]",
"…Y a ti!",
},
used=[[
Herramientas utilizadas:
Beepbox
@@ -186,13 +321,12 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="Apoyen al Autor",
WidgetText={
main={
offline="1 Jugador",
qplay="Jgo. Ráp.",
offline="Mapa de Modos",
qplay="Reciente",
online="Multijugador",
custom="Personalizado",
setting="Opciones",
@@ -245,7 +379,7 @@ return{
password="Contraseña",
description="Descripción",
life="Vida",
life="Vidas",
pushSpeed="Velocidad de Subida",
garbageSpeed="Velocidad de Basura",
visible="Visibilidad",
@@ -550,7 +684,7 @@ return{
register="Registrarse",
email="Correo Elec.",
password="Contraseña",
-- showEmail="Show Email",
showEmail="Mostrar Correo",
keepPW="Recordar credenciales",
login="Entrar",
},
@@ -626,10 +760,17 @@ return{
['sprint_1000l']= {"Sprint", "1000L", "¡Limpia 1000 líneas!"},
['sprintPenta']= {"Sprint", "Pentominos", "¡Limpia 40 líneas con los 18 pentominos distintos!"},
['sprintMPH']= {"Sprint", "MPH", "Memoryless (sin memoria)\nPreviewless (sin pzas. siguientes)\nHoldless (sin reserva)."},
['dig_10l']= {"Queso", "10L", "Limpia 10 líneas de queso."},
['dig_40l']= {"Queso", "40L", "Limpia 40 líneas de queso."},
['dig_100l']= {"Queso", "100L", "Limpia 100 líneas de queso."},
['dig_400l']= {"Queso", "400L", "Limpia 400 líneas de queso."},
['sprint123']= {"Sprint", "M123", "Limpia 40 líneas con monominos, biminos y triminos"},
['secret_grade']= {"Secret Grade", "", "¡Arma dejando huecos en escalera, sigue la guía!"},
['dig_10l']= {"Dig", "10L", "¡Limpia 10 líneas de queso lo más rápido que puedas!"},
['dig_40l']= {"Dig", "40L", "¡Limpia 40 líneas de queso lo más rápido que puedas!"},
['dig_100l']= {"Dig", "100L", "¡Limpia 100 líneas de queso lo más rápido que puedas!"},
['dig_400l']= {"Dig", "400L", "¡Limpia 400 líneas de queso lo más rápido que puedas!"},
['dig_eff_10l']= {"Dig", "Efic. 10L", "¡Limpia 10 líneas de queso con la menor cantidad de piezas posible!"},
['dig_eff_40l']= {"Dig", "Efic. 40L", "¡Limpia 40 líneas de queso con la menor cantidad de piezas posible!"},
['dig_eff_100l']= {"Dig", "Efic. 100L", "¡Limpia 100 líneas de queso con la menor cantidad de piezas posible!"},
['dig_eff_400l']= {"Dig", "Efic. 400L", "¡Limpia 400 líneas de queso con la menor cantidad de piezas posible!"},
--['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Dig 10 garbage lines using only techrash!"},
['drought_n']= {"Sequía", "100L", "¡Sin piezas I!"},
['drought_l']= {"Sequía+", "100L", "Qué es esto..."},
['marathon_n']= {"Maratón", "Normal", "Maratón de 200 líneas con velocidad en aumento."},
@@ -650,27 +791,32 @@ return{
['round_h']= {"Por Turnos", "Difícil", "Modo ajedrez."},
['round_l']= {"Por Turnos", "Lunático", "Modo ajedrez."},
['round_u']= {"Por Turnos", "Supremo", "Modo ajedrez."},
['master_n']= {"Master", "Normal", "Para principiantes en 20G"},
['master_h']= {"Master", "Difícil", "¡Desafío profesional de 20G!"},
['master_m']= {"Master", "M21", "Para Maestros del 20G."},
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo:\nel final es inalcanzable."},
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro,\nacepta este desafío"},
['big_n']= {"Big", "Normal", "¡La matriz es más pequeña!"},
['big_h']= {"Big", "Difícil", "¡La matriz es más pequeña!"},
['master_n']= {"Master", "Normal", "Para principiantes en 20G."},
['master_h']= {"Master", "Difícil", "Para entusiastas en 20G."},
['master_m']= {"Master", "M21", "Para maestros del 20G."},
['master_final']= {"Master", "Final", "Al 20Ginito y más allá!"},
['master_ph']= {"Master", "Phantasm", "???"},
['master_g']= {"Master", "Con rangos", "¡Consigue el rango más alto que puedas!"},
['master_ex']= {"GrandMaster", "Extra", "Una eternidad que dura un instante."},
['master_instinct']={"Master", "Instintivo", "¿Y si la pieza activa es invisible?"},
['strategy_e']= {"Strategy", "Fácil", "Decisiones rápidas en 20G."},
['strategy_h']= {"Strategy", "Difícil", "Decisiones rápidas en 20G."},
['strategy_u']= {"Strategy", "Supremo", "Decisiones rápidas en 20G."},
['strategy_e_plus']={"Strategy", "Fácil+", "Estrategia sin bodega."},
['strategy_h_plus']={"Strategy", "Difícil+", "Estrategia sin bodega."},
['strategy_u_plus']={"Strategy", "Supremo+", "Estrategia sin bodega."},
['strategy_e_plus']={"Strategy", "Fácil+", "Lo mismo pero sin reserva!"},
['strategy_h_plus']={"Strategy", "Difícil+", "Lo mismo pero sin reserva!"},
['strategy_u_plus']={"Strategy", "Supremo+", "Lo mismo pero sin reserva!"},
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados."},
['blind_l']= {"A Ciegas", "Inmediato+", "Para profesionales."},
['blind_u']= {"A Ciegas", "?", "¿Estás preparado?"},
['blind_wtf']= {"A Ciegas", "ELFUF", "No, no lo estás."},
['classic_e']= {"Clásico", "EASY", "Modo clásico con alta velocidad."},
['classic_h']= {"Clásico", "Difícil", "Modo clásico con alta velocidad."},
['classic_l']= {"Clásico", "Lunático", "Modo clásico con alta velocidad."},
['classic_u']= {"Clásico", "Supremo", "Modo clásico con alta velocidad."},
['classic_e']= {"Clásico", "Fácil", "Modo clásico con velocidad baja."},
['classic_h']= {"Clásico", "Difícil", "Modo clásico con velocidad media."},
['classic_l']= {"Clásico", "Lunático", "Modo clásico con velocidad alta."},
['classic_u']= {"Clásico", "Supremo", "Modo clásico con velocidad infernal :D"},
['survivor_e']= {"Supervivencia", "Fácil", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_n']= {"Supervivencia", "Normal", "¿Cuánto tiempo podrás sobrevivir?"},
['survivor_h']= {"Supervivencia", "Difícil", "¿Cuánto tiempo podrás sobrevivir?"},
@@ -682,11 +828,10 @@ return{
['defender_l']= {"Defensor", "Lunático", "¡Practica la defensa!"},
['dig_h']= {"Downstack", "Difícil", "¡Practica el downstackeo!"},
['dig_u']= {"Downstack", "Supremo", "¡Practica el downstackeo!"},
['clearRush']= {"Clear Rush", "NORMAL", "¡Tutorial de Allspins!\n[En construcción]"},
['c4wtrain_n']= {"Entrenar C4W", "Normal", "Combos infinitos."},
['c4wtrain_l']= {"Entrenar C4W", "Lunático", "Combos infinitos."},
['pctrain_n']= {"Entrenar PC", "Normal", "Modo sencillo para practicar Perfect Clears."},
['pctrain_l']= {"Entrenar PC", "Lunático", "Modo duro para practicar Perfect Clears."},
['pctrain_l']= {"Entrenar PC", "Lunático", "Modo complejo para practicar Perfect Clears."},
['pc_n']= {"Desafío de PCs", "Normal", "¡Consigue los PCs que puedas en 100 líneas!"},
['pc_h']= {"Desafío de PCs", "Difícil", "¡Consigue los PCs que puedas en 100 líneas!"},
['pc_l']= {"Desafío de PCs", "Lunático", "¡Consigue los PCs que puedas en 100 líneas!"},
@@ -702,17 +847,17 @@ return{
['tsd_e']= {"Desafío de TSD", "Fácil", "¡Sólo se permiten T-Spin Dobles!"},
['tsd_h']= {"Desafío de TSD", "Difícil", "¡Sólo se permiten T-Spin Dobles!"},
['tsd_u']= {"Desafío de TSD", "Supremo", "¡Sólo se permiten T-Spin Dobles!"},
['backfire_n']= {"Retorno", "Normal", "Lidia con tus propias líneas basura."},
['backfire_h']= {"Retorno", "Difícil", "Lidia con tus propias líneas basura."},
['backfire_l']= {"Retorno", "Lunático", "Lidia con tus propias líneas basura."},
['backfire_u']= {"Retorno", "Supremo", "Lidia con tus propias líneas basura."},
['sprintAtk']= {"Sprint", "100L - Ataque", "¡Envía 100 líneas de ataque!"},
['sprintEff']= {"Sprint", "Efficiency", "¡Envía ataque eficiente en 40 líneas!"},
['backfire_n']= {"Retorno", "Normal", "Cancela tus propias líneas basura."},
['backfire_h']= {"Retorno", "Difícil", "Cancela tus propias líneas basura."},
['backfire_l']= {"Retorno", "Lunático", "Cancela tus propias líneas basura."},
['backfire_u']= {"Retorno", "Supremo", "Cancela tus propias líneas basura."},
['sprintAtk']= {"Sprint", "100L - Ataque", "¡Envía 100 líneas de ataque!"},
['sprintEff']= {"Sprint", "Eficiencia", "¡Envía ataque eficiente en 40 líneas!"},
['zen']= {'Zen', "200L", "200 líneas sin límite de tiempo."},
['ultra']= {'Ultra', "Extra", "¡Consigue el mayor puntaje posible en 2 minutos!"},
['ultra']= {'Ultra', "Extra", "¡Consigue el mayor puntaje /nposible en 2 minutos!"},
['infinite']= {"Infinito", "", "Modo Sandbox."},
['infinite_dig']= {"Infinito: Queso", "", "Limpia, limpia, más limpia que tú."},
['marathon_inf']= {"Maratón", "Infinito", "Infinito maratón."},
['marathon_inf']= {"Maratón", "Infinito", "Maratón infinita."},
['custom_clear']= {"Personalizado", "Normal"},
['custom_puzzle']= {"Personalizado", "Puzzle"},

View File

@@ -216,6 +216,12 @@ return{
"(旋律星萤)",
"(T0722)",
"",
"Illustrations",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"Conceptions Musicales",
"MrZ",
"柒栎流星",
@@ -282,7 +288,6 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="Aider le créateur",
WidgetText={
@@ -726,6 +731,7 @@ return{
['dig_40l']= {"Dig", "40L", "Creusez 40 lines"},
['dig_100l']= {"Dig", "100L", "Creusez 100 lines"},
['dig_400l']= {"Dig", "400L", "Creusez 400 lines"},
--['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Dig 10 garbage lines using only techrash!"},
['drought_n']= {"Drought", "100L", "Pas de pièce I !"},
['drought_l']= {"Drought+", "100L", "WTF ??!!"},
-- ['stack_e']= {"Stack", "FACILE", "Pack them!"},
@@ -781,7 +787,6 @@ return{
['defender_l']= {"Défendant", "LUNATIQUE", "Soyez défensifs !"},
['dig_h']= {"Perceuse", "DIFFICILE", "Essayez de creuser !"},
['dig_u']= {"Perceuse", "ULTIME", "Essayez de creuser !"},
-- ['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
['c4wtrain_n']= {"Mode essai C4W", "NORMAL", "Combos infinis."},
['c4wtrain_l']= {"Mode essai C4W", "LUNATIQUE", "Combos infinis."},
['pctrain_n']= {"Mode essai PC", "NORMAL", "Mode Perfect Clear simple"},

View File

@@ -60,7 +60,7 @@ return{
finesse_ap="Semua sempurna",
finesse_fc="Kombo penuh",
page="Halaman:",
page="Halaman: ",
cc_fixed="CC tidak cocok dengan urutan tetap.",
cc_swap="CC tidak cocok dengan mode simpan tukar.",
@@ -112,13 +112,13 @@ return{
jsonError="Eror JSON",
noUsername="Silahkan masukki username Anda",
noUsername="Silahkan memasukan username Anda",
wrongEmail="Alamat email tidak sah",
noPassword="Silahkan masukki kata sandi Anda",
noPassword="Silahkan memasukan kata sandi Anda",
diffPassword="Kata sandi tidak sama",
registerRequestSent="Permintaan daftar telah terkirim.",
registerOK="Pendaftaran sukses!",
loginOK="Anda sekarang tergabung!",
loginOK="Anda telah gabung!",
accessOK="Akses diberikan",
wsConnecting="Menghubungkan websocket…",
@@ -127,12 +127,12 @@ return{
netTimeout="Koneksi waktu habis",
onlinePlayerCount="Online",
createRoomSuccessed="Ruang dibuat",
createRoomSuccessed="Ruang terbuat",
started="Bermain",
joinRoom="telah memasuki ruangan.",
leaveRoom="telah keluar dari ruangan.",
ready="Siap",
connStream="Menghubungi",
connStream="Memuat",
waitStream="Menunggu",
spectating="Menonton",
chatRemain="Online",
@@ -144,23 +144,22 @@ return{
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.",
next="BLOK LANJUT\nMengubah jumlah pratinjau blok lanjut yang ditampilkan.",
hold="SIMPAN\nMengubah jumlah blok yang bisa disimpan.",
hideNext="BLOK LANJUT Tersembunyi\nMenyembunyikan beberapa blok lanjut.",
hideNext="BLOK LANJUT Tersembunyi\nMengubah jumlah pratinjau blok lanjut yang disembunyikan.",
infHold="SIMPAN TAK TERBATAS\nMemungkinkan Anda untuk menyimpan blok-blok tidak terbatas.",
hideBlock="Sembunyikan Blok Aktif\nMenyembunyikan blok yang Anda mengontrol.",
hideGhost="Sembunyikan Blok Hantu\nMenyembunyikan blok yang menunjukkan tempat blok yang sedang dikontrol akan jatuh.",
hidden="Sembunyikan Blok Terdarat\nMenyembunyikan blok yang sudah mendarat setelah waktu yang tertentu.",
hideBoard="Sembunyikan Tempat Main\nMenyembunyikan bagian atau seluruh tempat main.",
hideBlock="Sembunyikan Blok Aktif\nMenyembunyikan blok aktif.",
hideGhost="Sembunyikan Blok Hantu\nMenyembunyikan blok hantu.",
hidden="Sembunyikan Blok Terdarat\nMenyembunyikan blok terkunci.",
hideBoard="Sembunyikan Tempat Main\nMenyembunyikan sebagian 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.",
lockDelay="Tunda Mengunci\nMengubah tunda kunci dalam frame.",
waitDelay="Tunda Muncul\nMengubah tunda muncul blok dalam frame.",
fallDelay="Tunda Baris\nMengubah tunda saat membuat baris dalam frame.",
fallDelay="Tunda Baris\nMengubah tunda baris jatuh 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.",
@@ -183,7 +182,7 @@ return{
"B2B/B3B/PC/Setengah PC:",
"Efisiensi Tombol:",
},
radar={"BLOK","SERANGAN","SRGN + BLOK","SRGN TERKIRIM","KECEPATAN","GALI"},
radar={"BLOK","SERANGAN","KEKUATAN","KIRIMAN","KECEPATAN","GALI"},
radarData={"D'PM","ADPM","APM","SPM","L'PM","DPM"},
stat={
"Jumlah Pembukaan:",
@@ -251,6 +250,12 @@ return{
"(旋律星萤)",
"(T0722)",
"",
"Ilustrasi",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"Desain Musik",
"MrZ",
"柒栎流星",
@@ -317,7 +322,6 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="Dukung pencipta",
WidgetText={
@@ -766,6 +770,8 @@ return{
['sprint_1000l']= {"Balapan", "1.000L", "Buat 1.000 baris!"},
['sprintPenta']= {"Balapan", "PENTOMINO", "40L dengan pentomino!"},
['sprintMPH']= {"Balapan", "MPH", "Tanpa ingatan\nTanpa pratinjau\nTanpa simpan"},
['sprint123']= {"Balapan", "M123", "40L dengan hanya monomino, domino, dan trimino"},
['secret_grade']= {"Secret Grade", "", "Buatlah formasi lubang zigzag, menuruti panduannya!"},
['dig_10l']= {"Gali", "10L", "Gali 10 baris!"},
['dig_40l']= {"Gali", "40L", "Gali 40 baris!"},
['dig_100l']= {"Gali", "100L", "Gali 100 baris!"},
@@ -774,6 +780,7 @@ return{
['dig_eff_40l']= {"Gali", "EFISIENSI 40L", "Gali 40 baris!"},
['dig_eff_100l']= {"Gali", "EFISIENSI 100L","Gali 100 baris!"},
['dig_eff_400l']= {"Gali", "EFISIENSI 400L","Gali 400 baris!"},
--['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Dig 10 garbage lines using only techrash!"},
['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"},
@@ -794,11 +801,14 @@ return{
['round_h']= {"Giliran", "SULIT", "Giliran main melawan AI!"},
['round_l']= {"Giliran", "GILA", "Giliran main melawan AI!"},
['round_u']= {"Giliran", "TERAKHIR", "Giliran main melawan AI!"},
['big_n']= {"Besar", "NORMAL", "Main dalam tempat main lebih kecil!"},
['big_h']= {"Besar", "SULIT", "Main dalam tempat main lebih kecil!"},
['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_g']= {"Jago", "BERTINGKAT", "Dapatkan tingkat tertinggi!"},
['master_ex']= {"Sangat Jago", "EKSTRA", "Blok tidak kelihatan"},
['master_instinct']={"Jago", "INSTINK", "Bagaimana jika blok terkontrol tersembunyi?"},
['strategy_e']= {"Strategi", "MUDAH", "Keputusan 20G cepat"},
@@ -828,7 +838,6 @@ return{
['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"},

View File

@@ -17,7 +17,7 @@ return{
newDay="新しい1日、新しい始まりです!",
playedLong="長時間プレイしています、適度に休憩をして!",
playedTooMuch="かなり長くプレイしています! Techminoは楽しいですが、休憩を忘れずに!",
settingWarn="使用頻度のい設定変更しています。注意してください。",
settingWarn="使用頻度の少ない設定変更しています。注意してください。",
atkModeName={"ランダム","バッジ狙い","トドメ撃ち","カウンター"},
royale_remain="残り $1 人",
@@ -67,7 +67,7 @@ return{
ai_prebag="AIは通常のテトロミではない物やカスタマイズされたミ順に非対応です!",
ai_mission="AIはカスタムミッションに非対応です!",
switchSpawnSFX="ブロック出現時の効果音をONにしてください!",
needRestart="すべての変更を適用する為に再起動してください!",
needRestart="すべての変更を適用する為にリスタートしてください!",
loadError_errorMode="'$1'の読み込みに失敗: ロードモード'$2'が存在しません",
loadError_read="'$1'の読み込みに失敗: 読み込みに失敗しました",
@@ -95,8 +95,8 @@ return{
VKCurW="現在の配置",
noScore="スコア無し",
modeLocked="ロック",
unlockHint="ランクB以上を取得すると解放されるよ!",
modeLocked="未開放",
unlockHint="前のステージでランクB以上を取得すると解放されます!",
highScore="最高得点",
newRecord="新記録!",
@@ -251,6 +251,12 @@ return{
"(旋律星萤)",
"(T0722)",
"",
"イラスト",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"ミュージカルデザイン",
"MrZ",
"柒栎流星",
@@ -317,7 +323,6 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="Support the Author",
WidgetText={
@@ -415,7 +420,7 @@ return{
net_game={
ready="準備OK",
spectate="観戦",
cancel="待った",
cancel="キャンセル",
},
setting_game={
title="ゲームの設定",
@@ -476,7 +481,7 @@ return{
fullscreen="フルスクリーン",
bg_on="通常背景",
bg_off="背景を閉じる ",
bg_off="背景なし ",
bg_custom="カスタム背景",
blockSatur="ブロックデザイン",
@@ -509,7 +514,7 @@ return{
das="DAS",arr="ARR",
dascut="DASカット",
dropcut="自動ロックcut",
dropcut="自動設置カット",
sddas="ソフトドロップDAS",sdarr="ソフトドロップARR",
ihs="先行ホールド",
irs="先行回転",
@@ -570,7 +575,7 @@ return{
},
customGame={
title="カスタムプレイ",
defSeq="デフォルトのミノ順",
defSeq="通常のミノ順",
noMsn="ミッションなし",
drop="自然落下時間",
@@ -770,26 +775,27 @@ return{
['dig_40l']= {"掘り", "40L", "40ライン下穴を掘れ!"},
['dig_100l']= {"掘り", "100L", "100ライン下穴を掘れ!"},
['dig_400l']= {"掘り", "400L", "400ライン下穴を掘れ!"},
--['dig_quad_10l']= {"堀り", "TECHRASH 10L", "techrashだけで10ライン下穴を掘れ!"},
['drought_n']= {"ドラウト", "100L", "Iミ一切無し!"},
['drought_l']= {"ドラウト+", "100L", "わったーふ◯っく!"},
['marathon_n']= {"マラソン", "NORMAL", "加速する中で200ラインマラソン!"},
['marathon_h']= {"マラソン", "HARD", "高速の中で200ラインマラソン!"},
['solo_e']= {"バトル", "EASY", "弱めのAIに勝て!"},
['solo_n']= {"バトル", "NORMAL", "通のAIに勝て!"},
['solo_h']= {"バトル", "HARD", "強めのAIに勝て!"},
['solo_e']= {"バトル", "EASY", "低レベルのAIに勝て!"},
['solo_n']= {"バトル", "NORMAL", "常レベルのAIに勝て!"},
['solo_h']= {"バトル", "HARD", "高レベルのAIに勝て!"},
['solo_l']= {"バトル", "LUNATIC", "プロレベルのAIに勝て!"},
['solo_u']= {"バトル", "ULTIMATE", "神レベルのAIに勝て!"},
['techmino49_e']= {"テック 49", "EASY", "弱めの49人で勝負\n最後の1人まで生き残れ!"},
['techmino49_h']= {"テック 49", "HARD", "強めの49人で勝負\n最後の1人まで生き残れ!"},
['techmino49_u']= {"テック 49", "ULTIMATE", "神レベルの49人で勝負\n最後の1人まで生き残れ!"},
['techmino99_e']= {"テック 99", "EASY", "弱めの99人で勝負\n最後の1人まで生き残れ!"},
['techmino99_h']= {"テック 99", "HARD", "強めの99人で勝負\n最後の1人まで生き残れ!"},
['techmino99_u']= {"テック 99", "ULTIMATE", "神レベル99人で勝負\n最後の1人まで生き残れ!"},
['round_e']= {"ターン制", "EASY", "ターン制で弱めのAIと勝負!"},
['round_n']= {"ターン制", "NORMAL", "ターン制で普通のAIと勝負!"},
['round_h']= {"ターン制", "HARD", "ターン制で強めのAIと勝負!"},
['round_l']= {"ターン制", "LUNATIC", "ターン制でプロレベルAIと勝負!"},
['round_u']= {"ターン制", "ULTIMATE", "ターン制で神レベルAIと勝負!"},
['techmino49_e']= {"テック 49", "EASY", "低レベルAIと49人で勝負\n最後の1人まで生き残れ!"},
['techmino49_h']= {"テック 49", "HARD", "高レベルAIと49人で勝負\n最後の1人まで生き残れ!"},
['techmino49_u']= {"テック 49", "ULTIMATE", "神レベAIと49人で勝負\n最後の1人まで生き残れ!"},
['techmino99_e']= {"テック 99", "EASY", "低レベルAIと99人で勝負\n最後の1人まで生き残れ!"},
['techmino99_h']= {"テック 99", "HARD", "高レベルAIと99人で勝負\n最後の1人まで生き残れ!"},
['techmino99_u']= {"テック 99", "ULTIMATE", "神レベルAIと99人で勝負\n最後の1人まで生き残れ!"},
['round_e']= {"ターン制", "EASY", "ターン制で低レベルAIと勝負!"},
['round_n']= {"ターン制", "NORMAL", "ターン制で通常レベルAIと勝負!"},
['round_h']= {"ターン制", "HARD", "ターン制で高レベルAIと勝負!"},
['round_l']= {"ターン制", "LUNATIC", "ターン制でプロレベルAIと勝負!"},
['round_u']= {"ターン制", "ULTIMATE", "ターン制で神レベルAIと勝負!"},
['master_n']= {"マスター", "NORMAL", "20G 初心者方へ"},
['master_h']= {"マスター", "HARD", "20G 中級者の方へ"},
['master_m']= {"マスター", "M21", "20G 上級者の方へ"},
@@ -808,7 +814,7 @@ return{
['blind_h']= {"目隠し", "SUDDEN", "上級者用"},
['blind_l']= {"目隠し", "SUDDEN+", "プロフェッショナル用!"},
['blind_u']= {"目隠し", "?", "覚悟は良いかい?"},
['blind_wtf']= {"目隠し", "WTF", "まだ覚悟が足りない!"},
['blind_wtf']= {"目隠し", "WTF", "まだ覚悟が足りない!"},
['classic_e']= {"クラシック", "EASY", "低速クラシック"},
['classic_h']= {"クラシック", "HARD", "通常速度クラシック"},
['classic_l']= {"クラシック", "LUNATIC", "中高速度クラシック"},
@@ -824,7 +830,6 @@ return{
['defender_l']= {"相殺王", "LUNATIC", "防御力を磨け!"},
['dig_h']= {"堀王", "HARD", "掘りを磨け"},
['dig_u']= {"堀王", "ULTIMATE", "掘りを磨け"},
['clearRush']= {"クリアラッシュ", "NORMAL", "All-Spinチュートリアル!\n[開発中]"},
['c4wtrain_n']= {"C4Wトレーニング", "NORMAL", "無限中開け"},
['c4wtrain_l']= {"C4Wトレーニング", "LUNATIC", "無限中開け"},
['pctrain_n']= {"パフェトレーニング", "NORMAL", "パフェの練習!"},

View File

@@ -238,6 +238,12 @@ return{
"(旋律星萤)",
"(T0722)",
"",
"Ilustrações",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"Desenhos Musicais",
"MrZ",
"柒栎流星",
@@ -304,7 +310,6 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="Support author",
WidgetText={
@@ -757,6 +762,7 @@ return{
['dig_40l']= {"Cave", "40L", "Cave 40 linhas de lixo."},
['dig_100l']= {"Cave", "100L", "Cave 100 linhas de lixo."},
['dig_400l']= {"Cave", "400L", "Cave 400 linhas de lixo."},
--['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Dig 10 garbage lines using only techrash!"},
['drought_n']= {"Drought", "100L", "Sem peça I !"},
['drought_l']= {"Drought+", "100L", "WTF"},
-- ['stack_e']= {"Stack", "FÁCIL", "Pack them!"},
@@ -812,7 +818,6 @@ return{
['defender_l']= {"Defensor", "LUNÁTICO", "Prática de defensiva!"},
['dig_h']= {"Cavador", "DIFÍCIL", "Prática de cavar!"},
['dig_u']= {"Cavador", "ULTIMATE", "Prática de cavar!"},
-- ['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
['c4wtrain_n']= {"Treinamento C4W", "NORMAL", "Combos infinitos."},
['c4wtrain_l']= {"Treinamento C4W", "LUNÁTICO", "Combos infinitos."},
['pctrain_n']= {"Treinamento PC", "NORMAL", "Modo simples de limpeza perfeita."},

View File

@@ -250,6 +250,12 @@ return{
"(旋律星萤)",
"(T0722)",
"",
"插图",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"音乐设计",
"MrZ",
"柒栎流星",
@@ -316,7 +322,6 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="支持作者",
WidgetText={
@@ -770,10 +775,11 @@ return{
['dig_40l']= {"挖掘", "40L", "挖掘40行"},
['dig_100l']= {"挖掘", "100L", "挖掘100行"},
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
['dig_eff_10l']= {"挖掘", "效率 10L", "挖掘10行用最少的件数"},
['dig_eff_40l']= {"挖掘", "效率 40L", "挖掘40行用最少的件数"},
['dig_eff_100l']= {"挖掘", "效率 100L","挖掘100行用最少的件数"},
['dig_eff_400l']= {"挖掘", "效率 400L","挖掘400行用最少的件数"},
['dig_eff_10l']= {"挖掘", "效率 10L", "用尽量少的块数挖掘10行"},
['dig_eff_40l']= {"挖掘", "效率 40L", "用尽量少的块数挖掘40行"},
['dig_eff_100l']= {"挖掘", "效率 100L", "用尽量少的块数挖掘100行"},
['dig_eff_400l']= {"挖掘", "效率 400L", "用尽量少的块数挖掘400行"},
['dig_quad_10l']= {"挖掘", "消四10L", "挖掘10行但只能消四"},
['drought_n']= {"干旱", "100L", "你I没了"},
['drought_l']= {"干旱+", "100L", "后 妈 发 牌"},
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
@@ -831,7 +837,6 @@ return{
['defender_l']= {"防守", "疯狂", "防守练习"},
['dig_h']= {"挖掘", "困难", "挖掘练习"},
['dig_u']= {"挖掘", "极限", "挖掘练习"},
['clearRush']= {"清版竞速", "普通", "All-spin 入门教程\n施工中"},
['c4wtrain_n']= {"C4W练习", "普通", "无 限 连 击"},
['c4wtrain_l']= {"C4W练习", "疯狂", "无 限 连 击"},
['pctrain_n']= {"全清训练", "普通", "简易PC题库熟悉全清定式的组合"},
@@ -892,7 +897,7 @@ return{
"不知道有多少人玩游戏的时候会关心游戏是谁做的",
"部分手机系统开启震动会导致严重卡顿",
"彩色消除即将到来!",
"日本语",
"(日本语)",
"吃键?真的吗?建议回放看看到底按没按到,按了多久",
"打铁.mp4",
"大概还是有人会看tip的",
@@ -991,16 +996,9 @@ return{
"Z酱只是个写代码的懂什么方块",
"Z块等身抱枕来一个(x",
--凑数
"凑数tip什么时候能站起来",
"天哪我竟然是一条凑数tip",
"我是一条凑数tip",
"我也是一条凑数tip",
"震惊我只是一条凑数tip吗",
--计算机技术梗
-- 计算机技术梗
"点击添加标题",
"对编程有真·兴趣推荐Lua安装无脑 语法简单 执行速度快 远离枯燥学校编程",
"对编程有真·兴趣推荐Lua安装无脑 语法简单 执行速度快 远离枯燥学校编程(",
"绝大多数按钮上的图标是调用Unicode私用区里的自制字符实现的",
"科技骨牌 你的创新式块堆栈业务技术管理器",
"锟斤拷锟斤拷锟斤拷",
@@ -1024,18 +1022,25 @@ return{
"viod main[]",
"while(false)",
--其他游戏梗
-- 其他游戏梗
"啊哈哈哈哈哈T块来咯",
"不轻不重,手感真是好极了",
"不要大力拍打或滑动哦",
"车万方块是一家暴论",
"车万方块是一家(暴论",
"单手也能玩!",
"感谢Orzmic为这个tip框提供修改意见",
"感谢Phigros提供(确信)部分tip模板",
"你的双手是为了你的一生服务的而不是Techmino",
"你有一个好",
"你这块是金子做的还是垃圾行是金子做的",
"你准备好了吗?",
"请勿大力敲打设备敲坏了就没有Techmino玩了",
"少女祈祷中",
"他奶奶的,为什么转不进去",
"我们联合!",
"要盯着bug不放",
"这打块,多是一件美事",
"做,做碌鸠啊做,打块先啦!",
{C.Z,"12",C.C,"",C.Z,""},
{C.C,"<PURE ",C.P,"MEMORY>"},
{C.H,"暂定段位:9"},
@@ -1060,16 +1065,7 @@ return{
{C.R,"DT",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z,""},
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR LLL ",C.C,"FFF ",C.Y,"RfR RRf rFF"},
--网络梗
"我们联合!",
"你这块是金子做的还是垃圾行是金子做的",
"做,做碌鸠啊做,打块先啦!",
"啊哈哈哈哈哈T块来咯",
"这打块,多是一件美事",
"不轻不黏,手感真是好极了",
"他奶奶的,为什么转不进去",
--时间碎片
-- 时间碎片
"时间碎片[000] 2021/11/21加入这个版块",
"时间碎片[001] V0.0.091726加入TRS旋转系统",
"时间碎片[002] V0.7.9加入O-spin",
@@ -1090,11 +1086,12 @@ return{
"时间碎片[017] V0.16.0加入BIRS",
"时间碎片[018] V0.16.2加入打击垫样式的音效室",
"时间碎片[019] V0.17.0加入手柄的摇杆和扳机支持",
"时间碎片[020] V0.17.3准备停止开发老Techmino进入维护期",
--豆知识
-- 豆知识
"豆知识[001]总共有400多条tip哦",
"豆知识[002]背景影响游玩?可以去设置关闭",
"豆知识[003]方块默认出现的方向都是重心在下哦如果你没乱动设置",
"豆知识[003]方块默认出现的方向都是重心在下哦(如果你没乱动设置",
"豆知识[004]各种画面细节选项都可以在设置里找到哦",
"豆知识[005]觉得移动速度太慢或太快手感不好快去设置调整DAS/ARR",
"豆知识[006]无聊翻翻设置是好习惯",
@@ -1116,7 +1113,7 @@ return{
"豆知识[022]不同人打40行最合适的方式不一样s1w/63/散消/s2w……",
"豆知识[023]不同游戏(甚至不同模式)中不同战术的强度都不一样,并不能简单的按顺序排名",
"豆知识[024]除了雨宫太阳还有很多高手玩家尤其是不在PPT里甚至强出不少",
"豆知识[025]触发游戏报错后日志文件会越来越大不过顶多几百K",
"豆知识[025]触发游戏报错后日志文件会越来越大(不过顶多几百K)",
"豆知识[026]打好块跟学习一样没有捷径,多练!",
"豆知识[027]打网络对战前请确认自己有一定的水平,不然会毫无游戏体验的",
"豆知识[028]大量使用开局定式的数据是不准的",
@@ -1159,7 +1156,7 @@ return{
"豆知识[065]三连块只有2种",
"豆知识[066]四连块总共7种",
"豆知识[067]五连块总共18种",
"豆知识[068]六连块总共有……?那不重要,不会做的大概",
"豆知识[068]六连块总共有……?那不重要,不会做的(大概",
"豆知识[069]上面这个不是录像,是机器人实时在玩",
"豆知识[070]使用固定堆叠方法达成20TSD难度很低",
"豆知识[071]手机玩也可以外接键盘哦(iOS除外)",
@@ -1198,20 +1195,23 @@ return{
"豆知识[104]新人请千万记住,打好基础,不要太早学那些花里胡哨的。",
"豆知识[105]长时间游戏状态会越来越差!玩久了记得放松一下~",
--健康小贴士
-- 健康小贴士
"健康小贴士[01]玩游戏多眨眼,不然会干眼病",
"健康小贴士[02]少玩点游戏,多注意眨眼和休息",
"健康小贴士[03]戴耳机(尤其是半入耳式)时音量千万别拉满,不然真的会影响听力(虽然很慢)",
"健康小贴士[04]不要熬夜,真的会猝死",
"健康小贴士[05]长期睡眠不足会引起不可逆的脑损伤(变傻)",
-- 群友名言
"群友名言[001]“玩了Techmino之后发现打字速度变快了”",
"群友名言[002]“我要陪伴着tech一步步成长然后就可以疯狂的享受他”",
"群友名言[003]“太super啦不愧是guideline”",
"群友名言[004]“憋惦记你那*26了",
--Frt评
-- Frt评
"Frt评[01]“成天被夸赞‘好玩’的”",
"Frt评[02]“可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的”",
"Frt评[03]“论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现",
"Frt评[03]“论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(",
"Frt评[04]“民间微创新”",
"Frt评[05]“民间音lè与图案”",
"Frt评[06]“民间游戏设计”",
@@ -1222,7 +1222,7 @@ return{
"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α",
@@ -1239,10 +1239,10 @@ return{
"今日数学[14]sin²α-sin²β=S(α+β)S(α-β)",
"今日数学[15]sin2α=2SαCα",
--Z
-- Z
"Z哲[01]方块教会我们,合群了就会消失,……",
"Z哲[02]假如生活欺骗了你,不要悲伤,不要心急,还有块陪着你",
"Z哲[03]……,合群了就会消失,不合群世界毁灭指game over",
"Z哲[03]……,合群了就会消失,不合群世界毁灭(指game over",
"Z哲[04]……,合群了就会消失,但消失不代表没有意义",
"Z哲[05]没有量化就没有对比,……",
"Z哲[06]……,没有对比就没有伤害",
@@ -1281,10 +1281,11 @@ return{
"Z推[15]15puzzle好玩",
"Z推[16]扫雷好玩!",
--可爱!
-- 可爱!
{C.lP,"口〇口",C.Z," 可爱!"},
{C.Y,"Miya",C.Z," 可爱!"},
{C.lS,"茶娘",C.Z," 可爱!"},
-- "Z酱 可爱!",
{C.lP,"秘密数字:626"},
{C.N,"Lua",C.Z,"天下第一"},
@@ -1295,6 +1296,5 @@ return{
{C.R,"上班时间不许摸鱼打块!"},
{C.R,"上课时间不许摸鱼打块!"},
{C.W,"uid:225238922"},
-- "Z酱 可爱!",
}
}

View File

@@ -1,861 +0,0 @@
return{
fallback='zh',
loadText={
loadSFX="加载音效",
loadSample="装载仪器样品",
loadVoice="加载语音包",
loadFont="加载字体",
loadModeIcon="加载模式图标",
loadMode="加载方式",
loadOther="加载其他资产",
finish="按任意按钮开始!",
},
sureQuit="再次按退出",
sureReset="再次按下可重置",
sureDelete="再次按可删除",
newDay="新的一天,新的开始!",
playedLong="你已经玩了很长时间了。一定要好好休息!",
playedTooMuch="你玩得太久了!玩方块游戏很有趣,但现在是休息的时候了。",
settingWarn="修改设置时,请小心!",
atkModeName={"随机的","徽章","击败","攻击者"},
royale_remain="剩余$1球员",
powerUp={[0]="+000%","+025%","+050%","+075%","+100%"},
cmb={nil,"1连击","2连击","3连击","4连击","5连击","6连击","7连击","8连击","9连击","10连击","11连击","12连击","13连击","14连击","15连击","16连击","17连击","18连击","19连击","巨大连击"},
spin="-旋转",
clear={"单身的","双重的","三倍的","技术崩溃","五角碰撞","六面体碎裂","七冲击","八度碰撞","非碰撞","十点崩溃","不祥","十二面体碰撞","三十年代的崩溃","十四烷","十五烷碰撞","十六进制","七烷酸","十八进制崩溃","非十进制碰撞","超级崩溃","冒牌货"},
cleared="$1 线",
mini="迷你",b2b="背靠背",b3b="背靠背靠背",
PC="清清楚楚",HPC="半完美清晰",
replaying="[重播]",
tasUsing="[TAS]",
stage="第$1阶段已完成",
great="伟大的",
awesome="令人惊叹的!",
almost="几乎!",
continue="继续前进!",
maxspeed="最高速度!",
speedup="加快",
missionFailed="错误清除",
speedLV="速度水平",
piece="",line="线",atk="攻击",eff="效率",
rpm="转速",tsd="热关断",
grade="等级",techrash="技术崩溃",
wave="波动",nextWave="下一个",
combo="联合体",maxcmb="最大连击",
pc="清清楚楚",ko="击倒对手",
win="",
lose="失去",
finish="完成",
gamewin="你赢了",
gameover="游戏结束",
pause="暂停",
pauseCount="暂停计数",
finesse_ap="完美无缺",
finesse_fc="全组合",
page="页:",
cc_fixed="CC与固定序列不兼容",
cc_swap="CC与交换保持模式不兼容",
ai_prebag="AI与具有非四格拼板的自定义序列不兼容",
ai_mission="AI与自定义使命不兼容",
switchSpawnSFX="请打开繁殖特技效果",
needRestart="请重试以使更改生效",
loadError_errorMode="'$1' 加载失败:无加载模式 '$2'",
loadError_read="'$1' 加载失败:读取失败",
loadError_noFile="'$1' 加载失败:没有文件",
loadError_other="'$1' 加载失败:$2",
loadError_unknown="'$1' 加载失败:原因未知",
saveError_duplicate="'$1' 保存失败:文件名重复",
saveError_encode="'$1' 保存失败:编码失败",
saveError_other="'$1' 保存失败:$2",
saveError_unknown="'$1' 保存失败:原因未知",
copyDone="收到了!",
saveDone="保存的数据",
exportSuccess="成功导出",
importSuccess="导入成功",
dataCorrupted="数据损坏",
pasteWrongPlace="贴错地方了?",
noFile="找不到文件",
nowPlaying="现在播放:",
VKTchW="触重",
VKOrgW="起始重量",
VKCurW="现在的位置重量",
noScore="还没有分数",
modeLocked="锁定",
unlockHint="在先决条件模式下达到B级或更高级别以解锁",
highScore="个人最好成绩",
newRecord="新纪录!",
replayBroken="无法加载重播",
getNoticeFail="获取通知失败",
oldVersion="版本$1现已推出",
needUpdate="需要更新版本!",
versionNotMatch="版本不匹配!",
notFinished="马上就来!",
jsonError="JSON错误",
noUsername="请指定用户名",
wrongEmail="无效电邮地址",
noPassword="输入您的密码",
diffPassword="密码不匹配",
registerRequestSent="已发送注册请求",
registerOK="注册成功!",
loginOK="您现在已登录!",
accessOK="允许访问",
wsConnecting="双向通信连接",
wsFailed="双向通信连接失败",
wsClose="双向通信已关闭:",
netTimeout="网络连接超时",
onlinePlayerCount="在线的",
createRoomSuccessed="房间成功创建!",
started="",
joinRoom="加入了房间",
leaveRoom="离开了房间",
ready="准备好的",
connStream="连接",
waitStream="等待",
spectating="观赛",
chatRemain="在线的",
chatStart="------日志开始------",
chatHistory="------下面是新消息------",
keySettingInstruction="按绑定键\n退出:取消\n退格:删除",
customBGhelp="将图像文件拖放到此处以应用自定义背景",
customBGloadFailed="不支持自定义背景的图像格式",
errorMsg="技术米诺遇到问题,需要重新启动。\n您可以将错误日志发送给开发人员。",
tryAnotherBuild="[无效UTF-8]如果您在Windows上请尝试下载Techmino-win32或Techmino-win64(与您现在使用的不同)",
modInstruction="选择你的修改器\n多重器官衰竭允许您更改游戏。\n它们也可能以奇怪的方式破坏游戏。\n请注意,多重器官衰竭将导致您的游戏取消排名!",
modInfo={
next="下一步\n减少下一步的数量",
hold="保持\n减少保持件的数量",
hideNext="隐藏的下一个\n在下一个队列中包含特定数量的碎片",
infHold="无限持有\n允许您无限地持有碎片",
hideBlock="隐藏当前工件:\n使您控制的工件不可见",
hideGhost="无重影\n使鬼魂片段不可见",
hidden="隐藏锁定的片段\n使锁定的片段褪色",
hideBoard="隐藏板\n局部或完全隐藏字段",
flipBoard="翻转板\n翻转或旋转场",
dropDelay="重力\n以帧/块为单位降低下降速度",
lockDelay="锁定延迟\n以帧为单位减少锁定延迟",
waitDelay="繁殖延迟\n以帧为单位减少繁殖延迟",
fallDelay="线路清除延迟\n以帧为单位减少线路清除延迟",
life="寿命\n更改附加寿命的初始数量",
forceB2B="仅背靠背\n当背靠背仪表下降到初始线以下时,停止游戏",
forceFinesse="仅使用技巧\n在出现任何技巧错误的情况下使用该游戏",
tele="远程传送\n强制0直连式存储和0抗共振环",
noRotation="无旋转\n不允许工件旋转",
noMove="无移动\n禁止左右移动",
customSeq="随机发生器\n为块序列生成随机发生器",
pushSpeed="垃圾速度\n降低垃圾线(块/帧)的上升速度",
boneBlock="[]\n使用[]块播放",
},
pauseStat={
"时间:",
"按键/旋转/保持:",
"块:",
"行/挖掘:",
"攻击/数字攻击:",
"收到:",
"清除:",
"旋转:",
"背靠背/背靠背靠背/个人电脑/高性能计算机:",
"技巧:",
},
radar={"很棒","对象文件格式","攻击","发送","自给能探测器","挖掘"},
radarData={"下午","认证确定包标记","高级电源管理","冲击脉冲","下午好","每分钟衰变"},
stat={
"时代启动:",
"播放计数:",
"播放时间:",
"按键/旋转/保持:",
"块/行/攻击.:",
"记录/记录/分类:",
"挖掘/挖掘:",
"效率/挖掘效率:",
"背靠背/背靠背靠背:",
"个人电脑/高性能计算机:",
"技巧错误/技巧率:",
},
aboutTexts={
"这只是一个*普通的*积木堆垛机。真的,就这样",
"灵感来自C2/IO/JS/WWC/KOS等",
"",
"由LÖVE提供动力",
"任何建议或错误报告都将不胜感激!",
"确保只从官方渠道获得游戏,",
"因为如果你在别处找到它,我们无法确保你的安全",
"作者不对任何修改负责",
FNNS and"/"or"虽然游戏是免费的,但我们感谢捐款。",
FNNS and"/"or"查看Zictionary以了解更多信息",
},
staff={
"最初由Z先生",
"电子邮件: 1046101471@qq.com",
"",
"编程、开发和设计的",
"Z先生",
"",
"使用了音乐",
"蜂鸣器",
"FL工作室",
"FL移动",
"逻辑专业X",
"",
"[POWERED BY LÖVE]",
"",
"程序",
"Z先生",
"粒子G",
"皮恩",
"特雷伯尔",
"(呵呵)",
"(芬恩·坦佐)",
"(不是机器人)",
"(用户670)",
"",
"集线器CI外包装及后端",
"粒子G",
"特雷伯尔",
"劳伦斯刘",
"尼亚尔",
"废话",
"呵呵",
"",
"视觉设计,用户界面及用户体验",
"Z先生",
"尼亚尔",
"蛋白激酶G抑制剂",
"氟化钪",
"(旋律星萤)",
"(T0722)",
"",
"音乐设计",
"Z先生",
"柒栎流星",
"ERM",
"特雷伯尔",
"蛋白激酶G抑制剂",
"(T0722)",
"(以太)",
"(黑利)",
"",
"音效和语音包",
"米娅",
"小亚",
"东西",
"Z先生",
"特雷伯尔",
"",
"翻译和本土化",
"用户670",
"马特·马尤加",
"",
"法克先生",
"氟化钪",
"蛋白激酶G抑制剂",
"不是机器人",
"萨库尔",
"爱伦",
"幽灵3383",
"",
"性能",
"电动283",
"河北麦",
"",
"特别鸣谢",
"飞天",
"大真",
"不是机器人",
"思竣",
"余浩7370",
"放屁者",
"茶管",
"蕴空之灵",
"T9972",
"无用户名8",
"安德鲁4043",
"中小型银行-中小型银行",
"泡霍",
"暗示",
"浩然太阳",
"天灵刘",
"滑稽2369",
"伊提克",
"拉希动漫",
"[所有其他的测试人员]",
"…和你!",
},
used=[[
使用工具:
Beepbox
Goldwave
GFIE
FL Mobile
使用库:
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="供养作者!",
WidgetText={
main={
offline="单人",
qplay="最后玩",
online="多人游戏",
custom="海关",
setting="设置",
stat="统计",
dict="四联词典",
replays="重播",
},
main_simple={
sprint="冲刺",
marathon="马拉松赛跑",
},
mode={
mod="多重器官衰竭(F1)",
start="开始",
},
mod={
title="多重器官衰竭",
reset="重置(制表)",
unranked="未分级",
},
pause={
setting="设置(S)",
replay="重播(P)",
save="保存(O)",
resume="恢复(esc)",
restart="重试(R)",
quit="退出(Q)",
tas="TAS(T)",
},
net_menu={
league="技术联盟",
ffa="游离脂肪酸",
rooms="房间",
logout="注销",
},
net_league={
match="找到匹配项",
},
net_rooms={
password="密码",
refreshing="清新的房间",
noRoom="现在没有房间了...",
refresh="刷新",
new="新房间",
join="参加",
},
net_newRoom={
title="房间配置",
roomName="房间名称(默认为用户名的房间)",
password="密码",
description="房间描述",
life="生活",
pushSpeed="推进速度",
garbageSpeed="垃圾速度",
visible="可见度",
freshLimit="锁定重置限制",
fieldH="田间高度",
bufferLimit="缓冲区限制",
heightLimit="高度限制",
drop="下降延迟",
lock="锁定延迟",
wait="进入延迟",
fall="线路延迟",
hang="毁灭延迟",
hurry="是打扰吗",
capacity="容量",
create="创造",
ospin="O型自旋",
fineKill="100%精巧",
b2bKill="没有背靠背中断",
lockout="锁定时失败",
easyFresh="正常锁复位",
deepDrop="深滴",
bone="骨块",
eventSet="规则集",
holdMode="持有模式",
nextCount="下一个",
holdCount="持有",
infHold="无限持有",
phyHold="原地等待",
},
net_game={
ready="准备好的",
spectate="凝视",
cancel="取消准备",
},
setting_game={
title="游戏设置",
graphic="←视频",
sound="声音→",
style="风格",
ctrl="控制设置",
key="键映射",
touch="触摸设置",
showVK="显示虚拟密钥",
reTime="启动延迟",
RS="轮换制",
menuPos="菜单按钮位置",
sysCursor="使用系统游标",
autoPause="心不在焉",
autoSave="自动保存新的最佳",
autoLogin="启动时自动登录",
simpMode="简单化风格",
},
setting_video={
title="视频设置",
sound="←声音",
game="游戏→",
block="绘图块",
smooth="光滑下降",
upEdge="三维积木",
bagLine="袋式分离器",
ghostType="鬼型",
ghost="鬼魂",
center="居中",
grid="网格",
lineNum="线路号",
lockFX="锁定外汇",
dropFX="下降外汇",
moveFX="移动外汇",
clearFX="外汇结算",
splashFX="飞溅外汇",
shakeFX="磁场摆动",
atkFX="攻击外汇",
frame="渲染帧率(%)",
text="行清除弹出窗口",
score="分数弹出",
bufferWarn="缓冲区警报",
showSpike="尖峰计数器",
nextPos="繁殖预览",
highCam="屏幕滚动",
warn="危险警报",
clickFX="单击外汇",
power="蓄电池信息",
clean="快速绘制",
fullscreen="全屏",
bg_on="正常背景",
bg_off="没有背景",
bg_custom="应用自定义背景",
blockSatur="块饱和",
fieldSatur="场饱和",
},
setting_sound={
title="声音设置",
game="←游戏",
graphic="视频→",
mainVol="主卷",
bgm="血糖监测",
sfx="特技效果",
stereo="立体声",
spawn="发出声音",
warn="警告",
vib="振动",
voc="声音",
autoMute="不聚焦时保持沉默",
fine="精细度误差",
sfxPack="特技效果包",
vocPack="语音包",
apply="申请",
},
setting_control={
title="控制设置",
preview="预览",
das="直连式存储",arr="抗共振环",
dascut="直连式存储切",
dropcut="自动锁定切割",
sddas="软滴直连式存储",sdarr="软降抗共振环",
ihs="初始持有",
irs="初始旋转",
ims="初始运动",
},
setting_key={
a1="向左移动",
a2="向右方移动",
a3="右转",
a4="向左旋转",
a5="旋转180°",
a6="硬滴",
a7="软滴",
a8="持有",
a9="功能1",
a10="功能2",
a11="立即离开",
a12="即时权利",
a13="声波滴",
a14="向下1",
a15="下降4",
a16="下降10",
a17="左撇子",
a18="右转",
a19="左桑吉",
a20="右桑吉",
restart="重试",
},
setting_skin={
skinSet="块状表皮",
title="布局设置",
skinR="重置颜色",
faceR="重置目录",
},
setting_touch={
default="违约",
snap="捕捉到网格",
size="尺寸",
shape="形状",
},
setting_touchSwitch={
b1= "向左移动:", b2="右移:", b3="右转:", b4="向左旋转:",
b5= "旋转180°:", b6="硬滴:", b7="软跌落:", b8="持有:",
b9= "职能1:", b10="职能2:", b11="立即离开:",b12="即时权利:",
b13="声波滴:", b14="下降1:", b15="下降4:", b16="下降10:",
b17="左下降:", b18="右下角:",b19="左桑吉:", b20="右桑吉:",
norm="正常",
pro="专业的",
icon="偶像",
sfx="特技效果",
vib="振动",
alpha="阿尔法",
track="自动跟踪",
dodge="自动闪避",
},
customGame={
title="定制游戏",
defSeq="默认顺序",
noMsn="无使命",
drop="下降延迟",
lock="锁定延迟",
wait="进入延迟",
fall="线路延迟",
hang="毁灭延迟",
hurry="是打扰吗",
bg="背景",
bgm="音乐",
copy="复制字段+序号+使命",
paste="粘贴字段+序号+使命",
play_clear="清场",
play_puzzle="开始拼图",
reset="复位(del)",
advance="更多(A)",
mod="多重器官衰竭(F1)",
field="编辑字段(F)",
sequence="编辑序列(S)",
mission="编辑使命(M)",
eventSet="规则集",
holdMode="持有模式",
nextCount="下一个",
holdCount="持有",
infHold="无限持有",
phyHold="原地等待",
fieldH="田间高度",
visible="可见度",
freshLimit="锁定重置限制",
opponent="对手",
life="生活",
pushSpeed="推进速度",
garbageSpeed="垃圾速度",
bufferLimit="缓冲区限制",
heightLimit="高度限制",
ospin="O型自旋",
fineKill="100%精巧",
b2bKill="没有背靠背中断",
lockout="锁定时失败",
easyFresh="正常锁复位",
deepDrop="深滴",
bone="骨块",
},
custom_field={
title="定制游戏",
subTitle="领域",
any="擦除",
smart="聪明的",
push="添加行(K)",
del="中线(L)",
demo="不要展示×",
newPg="新页(N)",
delPg="德尔佩奇(M)",
prevPg="前页",
nextPg="下一页",
},
custom_sequence={
title="定制游戏",
subTitle="序列",
sequence="序列",
},
custom_mission={
title="定制游戏",
subTitle="使命",
_1="1.",_2="2.",_3="3.",_4="4.",
any1="any1",any2="any2",any3="any3",any4="任何4",
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="氧气",I2="I2",
Z3="Z3",S3="S3",J3="J3",L3="L3",T3="T3",O3="臭氧",I3="I3",
O4="O4",I4="I4",
mission="使命",
},
about={
staff="工作人员",
his="历史",
legals="法律",
},
dict={
title="四联词典",
},
stat={
path="打开数据文件夹",
save="数据管理",
},
music={
title="音乐培训室",
arrow="",
now="现在播放:",
bgm="血糖监测",
sound="特技效果",
},
launchpad={
title="特技效果",
bgm="血糖监测",
sfx="特技效果",
voc="声音",
music="音乐培训室",
label="标签",
},
login={
title="登录",
register="登记",
email="电子邮件地址",
password="密码",
showEmail="显示电子邮件",
keepPW="记得我吗",
login="登录",
},
register={
title="登记",
login="登录",
username="用户名",
email="电子邮件地址",
password="密码",
password2="重新输入密码",
register="登记",
registering="等待回应...",
},
account={
title="帐户",
},
app_15p={
color="颜色",
invis="英维斯",
slide="滑动",
pathVis="显示路径",
revKB="逆转",
},
app_schulteG={
rank="大小",
invis="英维斯",
disappear="隐藏",
tapFX="Tap外汇",
},
app_AtoZ={
level="水平仪",
keyboard="键盘",
},
app_2048={
invis="英维斯",
tapControl="抽头控制",
skip="跳转",
},
app_ten={
next="下一个",
invis="英维斯",
fast="快速的",
},
app_dtw={
color="颜色",
mode="模式",
bgm="血糖监测",
arcade="游乐中心",
},
app_link={
invis="英维斯",
},
savedata={
export="导出到剪贴板",
import="从剪贴板导入",
unlock="进展",
data="统计数据",
setting="设置",
vk="虚拟密钥布局",
couldSave="云存储(注意:测试)",
notLogin="[登录访问云保存]",
upload="上传到云",
download="从云端下载",
},
},
modes={
['sprint_10l']= {"冲刺", "10升", "清除10行"},
['sprint_20l']= {"冲刺", "20升", "清除20行"},
['sprint_40l']= {"冲刺", "40升", "清除40行"},
['sprint_100l']= {"冲刺", "100升", "清除100行"},
['sprint_400l']= {"冲刺", "400升", "清除400行"},
['sprint_1000l']= {"冲刺", "1000升", "清除1000行"},
['sprintPenta']= {"冲刺", "五联骨牌", "40升配18个五分钟"},
['sprintMPH']= {"冲刺", "每小时英里数", "无记忆\n无先前\n无记忆"},
['dig_10l']= {"挖掘", "10升", "挖10条垃圾线"},
['dig_40l']= {"挖掘", "40升", "挖40条垃圾线"},
['dig_100l']= {"挖掘", "100升", "挖100条垃圾线"},
['dig_400l']= {"挖掘", "400升", "挖400条垃圾线"},
['dig_eff_10l']= {"挖掘", "管理 10升", "挖掘10条数量最少的线路"},
['dig_eff_40l']= {"挖掘", "管理 40升", "挖掘40条数量最少的线路"},
['dig_eff_100l']= {"挖掘", "管理 100升", "挖掘100条数量最少的线路"},
['dig_eff_400l']= {"挖掘", "管理 400升", "挖掘400条数量最少的线路"},
['drought_n']= {"干旱", "100升", "没有工装"},
['drought_l']= {"干旱+", "100升", "搞什么呀"},
['marathon_n']= {"马拉松赛跑", "正常", "200线加速马拉松"},
['marathon_h']= {"马拉松赛跑", "硬的", "200线高速马拉松"},
['solo_e']= {"战争", "容易", "打败AI"},
['solo_n']= {"战争", "正常", "打败AI"},
['solo_h']= {"战争", "硬的", "打败AI"},
['solo_l']= {"战争", "疯子", "打败AI"},
['solo_u']= {"战争", "终极", "打败AI"},
['techmino49_e']= {"技术49", "容易", "49人战斗\n最后一个站着的人获胜"},
['techmino49_h']= {"技术49", "硬的", "49人战斗\n最后一个站着的人获胜"},
['techmino49_u']= {"技术49", "终极", "49人战斗\n最后一个站着的人获胜"},
['techmino99_e']= {"科技99", "容易", "99人战斗\n最后一个站着的人获胜"},
['techmino99_h']= {"科技99", "硬的", "99人战斗\n最后一个站着的人获胜"},
['techmino99_u']= {"科技99", "终极", "99人战斗\n最后一个站着的人获胜"},
['round_e']= {"回合制", "容易", "轮流玩AI"},
['round_n']= {"回合制", "正常", "轮流玩AI"},
['round_h']= {"回合制", "硬的", "轮流玩AI"},
['round_l']= {"回合制", "疯子", "轮流玩AI"},
['round_u']= {"回合制", "终极", "轮流玩AI"},
['master_n']= {"主人", "正常", "适合20G初学者"},
['master_h']= {"主人", "硬的", "20克的职业选手"},
['master_m']= {"主人", "M21", "20克大师赛"},
['master_final']= {"主人", "最终", "20G及以上"},
['master_ph']= {"主人", "幻觉", ""},
['master_ex']= {"主人", "额外的", "比瞬间还短的永恒"},
['master_instinct']={"主人", "情绪", "步行的秘密部分"},
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
['strategy_e_plus']={"策略堆叠", "简单", "20G堆叠中速决策练习"},
['strategy_h_plus']={"策略堆叠", "困难", "20G堆叠快速决策练习"},
['strategy_u_plus']={"策略堆叠", "极限", "20G堆叠极速决策练习"},
['blind_e']= {"看不见的", "一半", "对于新手来说"},
['blind_n']= {"看不见的", "全部", "对于中间产品"},
['blind_h']= {"看不见的", "突然", "对于有经验的人"},
['blind_l']= {"看不见的", "突然+", "对于专业人士"},
['blind_u']= {"看不见的", "", "你准备好了吗?"},
['blind_wtf']= {"看不见的", "世界跆拳道联盟", "你还没准备好"},
['classic_e']= {"经典", "容易", "80年代的低速娱乐"},
['classic_h']= {"经典", "困难", "80年代的中速娱乐"},
['classic_u']= {"经典", "终极", "80年代的高速娱乐"},
['survivor_e']= {"幸存者", "容易", "你能活多久?"},
['survivor_n']= {"幸存者", "正常", "你能活多久?"},
['survivor_h']= {"幸存者", "硬的", "你能活多久?"},
['survivor_l']= {"幸存者", "疯子", "你能活多久?"},
['survivor_u']= {"幸存者", "终极", "你能活多久?"},
['attacker_h']= {"攻击者", "硬的", "练习你的进攻技巧!"},
['attacker_u']= {"攻击者", "终极", "练习你的进攻技巧!"},
['defender_n']= {"防守者", "正常", "练习你的防守技巧!"},
['defender_l']= {"防守者", "疯子", "练习你的防守技巧!"},
['dig_h']= {"钻机", "硬的", "挖掘练习!"},
['dig_u']= {"钻机", "终极", "挖掘练习!"},
['clearRush']= {"清晰的冲", "普通", "所有旋转教程\n[在建]"},
['c4wtrain_n']= {"C4W训练", "正常", "无限组合"},
['c4wtrain_l']= {"C4W训练", "疯子", "无限组合"},
['pctrain_n']= {"电脑培训", "正常", "完美清晰的实践"},
['pctrain_l']= {"电脑培训", "疯子", "更难的完美清晰的练习"},
['pc_n']= {"电脑挑战", "正常", "让电脑在100线以内"},
['pc_h']= {"电脑挑战", "硬的", "让电脑在100线以内"},
['pc_l']= {"电脑挑战", "疯子", "让电脑在100线以内"},
['pc_inf']= {"无尽个人电脑挑战", "", "尽可能多地获取个人电脑"},
['tech_n']= {"技术人员", "正常", "试着保持背靠背的链条!"},
['tech_n_plus']= {"技术人员", "正常+", "仅限旋转和个人电脑"},
['tech_h']= {"技术人员", "硬的", "试着保持背靠背的链条!"},
['tech_h_plus']= {"技术人员", "硬的+", "仅限旋转和个人电脑"},
['tech_l']= {"技术人员", "疯子", "试着保持背靠背的链条!"},
['tech_l_plus']= {"技术人员", "疯子+", "仅限旋转和个人电脑"},
['tech_finesse']= {"技术人员", "手腕", "没有技巧错误!"},
['tech_finesse_f']= {"技术人员", "技巧+", "没有正常的清除和技巧错误!"},
['tsd_e']= {"热关断挑战赛", "容易", "只有T-Spin双打"},
['tsd_h']= {"热关断挑战赛", "硬的", "只有T-Spin双打"},
['tsd_u']= {"热关断挑战赛", "终极", "只有T-Spin双打"},
['backfire_n']= {"适得其反", "正常", "挡住回火的垃圾管道"},
['backfire_h']= {"适得其反", "硬的", "挡住回火的垃圾管道"},
['backfire_l']= {"适得其反", "疯子", "挡住回火的垃圾管道"},
['backfire_u']= {"适得其反", "终极", "挡住回火的垃圾管道"},
['sprintAtk']= {"冲刺", "100次攻击", "发送100行"},
['sprintEff']= {"竞速", "效率", "在40行内发动更多攻击"},
['zen']= {"禅宗", "200", "没有时间限制的200线跑步"},
['ultra']= {"Ultra", "额外", "2分钟的得分进攻"},
['infinite']= {"无限", "", "这只是一个沙箱"},
['infinite_dig']= {"无限:挖掘", "", "挖,挖,挖"},
['marathon_inf']= {"马拉松", "无尽", "无尽马拉松"},
['custom_clear']= {"习俗", "正常"},
['custom_puzzle']= {"习俗", "令人费解的"},
},
}

View File

@@ -250,6 +250,12 @@ return{
"(旋律星萤)",
"(T0722)",
"",
"插圖",
"Miya",
"Mono",
"Xiaoya",
"葉枭",
"",
"音樂設計",
"MrZ",
"柒栎流星",
@@ -316,7 +322,6 @@ return{
Cold_Clear [MinusKelvin]
json.lua [rxi]
profile.lua [itraykov]
simple-love-lights [dylhunn]
]],
support="支持作者",
WidgetText={
@@ -773,7 +778,8 @@ return{
['dig_eff_10l']= {"挖掘", "效率 10L", "挖掘10行用最少的件數"},
['dig_eff_40l']= {"挖掘", "效率 40L", "挖掘40行用最少的件數"},
['dig_eff_100l']= {"挖掘", "效率 100L","挖掘100行用最少的件數"},
['dig_eff_400l']= {"挖掘", "效率 400L","挖掘400行用最少的件數"},
['dig_eff_400l']= {"挖掘", "效率 400L","挖掘400行用最少的件數"},
['dig_quad_10l']= {"挖掘", "消四10L", "挖掘10行但只能消四"},
['drought_n']= {"乾旱", "100L", "你I沒了"},
['drought_l']= {"乾旱+", "100L", "後 媽 發 牌"},
['marathon_n']= {"馬拉松", "普通", "200行加速馬拉松"},
@@ -832,7 +838,6 @@ return{
['defender_l']= {"防守", "瘋狂", "防守練習"},
['dig_h']= {"挖掘", "困難", "挖掘練習"},
['dig_u']= {"挖掘", "極限", "挖掘練習"},
['clearRush']= {"清版競速", "普通", "All-spin 入門教程\n施工中"},
['c4wtrain_n']= {"C4W練習", "普通", "無 限 連 擊"},
['c4wtrain_l']= {"C4W練習", "瘋狂", "無 限 連 擊"},
['pctrain_n']= {"全清訓練", "普通", "簡易PC題集熟悉全清定式的組合"},

View File

@@ -7,7 +7,8 @@ Gameplay:
Play until the end or achieve the levels goal to win.
Rotation system:
Uses TRS (Techmino Rotation System) by default. The game allows players to choose other commonly used rotation systems (generally unnecessary)
Uses TRS (Techmino Rotation System) by default.
The game allows players to choose other commonly used rotation systems (generally unnecessary)
Spin detection:
Satisfies “3-corner” rule +2 points
@@ -19,31 +20,35 @@ Spin detection:
Attack system:
Special clear:
A special clear refers to a situation where you perform a spin, Techrash (or clear more than four lines at a time), PC, or HPC. Special clears can elevate the B2B gauge.
A special clear refers to a situation where you perform a spin, Techrash (or clear more than four lines at a time), PC, or HPC.
Special clears can elevate the B2B gauge.
Super clear:
A super clear refers to a situation where you perform a special clear when the B2B gauge is not empty.
Special clears (spins):
sends (lines cleared ×2) attack,
- B2B sends extra 1/1/2/4/8 for Spin Single/Double/Triple/Techrash/Techrash+
- B2B2B sends (lines cleared ×0.5), and +1 extra blocking
- B2B2B sends (lines cleared ×0.5) on top of that of B2B, and +1 extra blocking
- Minis reduces the attack to 25% (×0.25 multiplier)
Special clears (Techrash/techrash+ without spins):
- B2B sends 1 additional line
- B2B2B will have an attack boost of 50% and +1 extra blocking
Non-special clears:
send (attack-0.5) attack.
Combos (REN):
The numbers of the combos are equal to (the numbers you clear lines consecutively 1). All damage above (except attack from PC/HPC) will be given a (combo ×25%) bonus, or (combo ×15%) for Single clear (capped at 12 combos), +1 more attack for 3 Combo or more.
Hemi Perfect Clear (a P.C. “with blocks left below.” If its an I clearing 1 line, the remaining blocks must not be player-placed):
The numbers of the combos are equal to (the numbers you clear lines consecutively 1) (capped at 12 combos).
All damage above (except attack from PC/HPC) gets a (combo ×25%) bonus, or (combo ×15%) for Single clear.
+1 more attack for 3 Combo or more.
Hemi Perfect Clear (a P.C. “with blocks left below.” If just one line cleared, the remaining blocks must not be player-placed):
- Attack +4, Extra Blocking +2
Perfect Clear (All Clear):
- Sends 8 to 16 (increments within a game by 2 for every PC) OR every other damage above, whichever is higher, and +2 extra blocking.
- Sends 8 to 16 (increments within a game by 2 for every PC) OR every other damage above, whichever is higher.
- +2 extra blocking.
After calculating the above, the damage value will be rounded down and sent.
@@ -97,4 +102,4 @@ Custom mode:
empty cells can be in any state;
regular colored cells have to be made of the corresponding block;
garbage-colored cells can be any block but not air.
Once you make the shape, you will win.
Once you make the shape, you will win.

View File

@@ -1,62 +1,126 @@
ゲームプレイ:
システムから与えられ全7種類のテトロミ
(4ブロックで構成されたピース) をプレイヤーが操作します,
(主に左右移動と90°, 180°, 270°回転)。
各行ブロックで埋め尽くされるとその行のブロックが消えます。
相手が居る場合, ラインの消し方等で攻撃と火力が異なります。
勝利する為にはそのレベルの目標達成もしくは最後までプレイする必要があります。
システムから与えられ全7種類のテトロミ
(4ブロックで構成されたピース) をプレイヤーが操作します
(主に左右移動と90°180°270°回転を用いて)。
各行ブロックが揃うとその行のブロックが消えます。
相手が居る場合ラインの消し方等で攻撃と火力が異なります。
クリアする為にはそのレベルの目標達成もしくは最後までプレイする必要があります。
回転システム:
回転システム:
初期設定はTRS (Techmino Rotation System) で設定されています。
プレイヤーは他の一般的な回転システムも使う事ができます (基本的には変えなくても大丈夫)。
スピンの検出:
「3コーナ」ルールを満たした時 +2点
「インモービル (Immobile)」 ルールを満たした時 +2点
- 上のどちらかを満たした時, スピンが確定します。
- 上のどちらかを満たした時スピンが確定します。
もし回転システムがキックテーブルから2番チェック (2nd check) を採用していなかった場合 +1点
- もしスピンの合計点が2点しかない場合は「ミニ」扱いになりますがS, Z, J, L, Tのいずれかで, ラインクリア時にそのミノを全て消せなかった場合のみ
もし回転システムがキックテーブルから2番目のチェック (2nd check) を採用していなかった場合 +1点
- もしスピンの合計点が2点しかない場合は「ミニ」扱いになります。
ただしこれは、ミがS,Z,J,L,Tのいずれかで、line消去の時にそのミのブロックが全部消せなかった場合のみ。
Attack system:
[TODO]
Back to Back (B2B) gauge:
[TODO]
攻撃システム:
Special clear:
Special clearとは、spin、techrash(もしくは一度に4段以上のline消去)、PC、HPCのどれかを行うことです。
Special clearを行うとB2Bゲージが上昇します。
Super clear:
Super clearとは、B2Bゲージがある状態でSpecial clearを行うことです。
Special clears (spin):
消したline数の2倍の火力を送ります、
- B2Bは、spin single/doubleで1line、spin tripleで2line、spin techrashで4line、spin techrash+で8lineを火力に加算します。
- B2B2Bは、消したline数の半分を火力に加算し、更に+1lineを相殺専用火力に加算します。
- またspinの場合は、B2BとB2B2Bは両方付与されます。
- ミニは、火力を25%に減少させます。(倍率0.25倍)
Special clears (spin以外のtechrash/techrash+):
- B2Bは、火力に+1lineします。
- B2B2Bは、火力を50%上昇させ、更に+1lineを相殺専用火力に加算します。
Non-special clears:
火力-0.5段を送ります。
ren:
ren数は、連続してline消去した回数-1回です。(上限12ren、13ren以上行っても総ren数12renと処理されます。)
1line消しの時に総ren数*15%(1+ren*0.15)、2line以上の時に総ren数*25%(1+ren*0.25)を乗算します。
更に合計3line以上消していた場合、火力に+1line加算します。
Half Perfect Clear (下にブロックが残っている状態でのPC、1line消去した場合はプレイヤーが置いたブロックが残ってはいけない):
- 火力に+4line加算し、更に+2lineを相殺専用火力に加算します。
Perfect Clear (全消し):
- PC火力の8~16line(PCを取る度に2ずつ上昇)とそれ以外の火力を比較、火力が高い方を選択し。
- 更に+2lineを相殺専用火力に加算します。
これらは、計算した後小数点以下を切り捨てて火力を送ります。
例:2ren目にB2B2B S-spin doubleでHPCを取った場合
- SSD =>火力+4line
- B2B =>火力+1line
- B2B2B=>(double/2)=1で火力+1line、更に相殺専用火力+1line
- 2ren =>(1+2ren*25%)=1.5、更に3line以上消しているので火力+1line、よって{(4+1+1)*1.5+1=10}で火力10line
- HPC =>火力+4line、更に相殺専用火力+2line
合計 火力:14line 相殺専用火力:3line
Back to Back (B2B)ゲージ:
B2Bゲージは、0~1,000まであります。Special clearをした時にゲージが50以上ならB2B、800以上ならB2B2Bが付与されます。
ライン消去:
Special clears:
- spin single/double/triple/techrash/techrash+を行った場合、それぞれ+50/100/180/800/1,000ゲージが上昇します。
(ただしミニの場合は、×50%減少します。)
- techrash/techrash+の場合は、それぞれ+150/200/...ゲージが上昇します。
- 1ゲーム中に4lineより多く消した状態でPCを行った場合、+800ゲージが上昇します。
- HPCを行った場合、+100ゲージが上昇します。
- 通常のline消去を行った場合、ゲージが250減少します。
line消去なし:
- 空spinの場合+20ゲージが上昇します。(なおこの方法では、B2Bゲージが800を超えることはありません。)
スコアシステム:
上手くプレイすれば, スコアも上がります。
上手くプレイすれば スコアも上がります。
攻撃遅延システム:
ダブル, トリプルの攻撃が一番早く効果が出ます;
その次にゆっくりとした攻撃を送るTechrash, スピン等, の効果が出ます;
高いコンボ数の攻撃が飛躍的に遅いです;
B2BやB2B2B等は, 送るライン数が増えれば増えるほど遅くなります;
ミニの攻撃は攻撃自体の効果を大幅に遅らせます。
2,3line消去の攻撃が一番早く下穴になります
Techrashスピン等が二番目に早く下穴になります
高いrenが付くと飛躍的に遅くなります。
B2BやB2B2Bは、送るライン数が増えれば増えるほど遅くなります
ミニの攻撃は、下穴になるのを大幅に遅らせます。
カウンター:
攻撃を送る際, もしお邪魔ゲージにお邪魔がある場合,
追加相殺がまず使われ, その次に攻撃体とお邪魔を1対1の割合でお邪魔の相殺に当てます。
使わなかった追加相殺は破棄され、残った攻撃のパワーは相手に送られます。
相殺:
攻撃を送る際、ダメージゲージに火力がある場合
最初に相殺専用火力が相殺に当てられ、その次に攻撃体とダメージゲージにある火力を1対1の割合で相殺します。
相殺を終えた後、相殺専用火力が余っていた場合は、その分破棄されます。
そして攻撃本体の火力が余っていた場合には、余った分相手に送られます。
例:相手から2line送られ、B2B2B S-spindouble HPCで相殺した場合
火力:10line 相殺専用火力:3line
- 相殺専用火力3lineが相手の2lineに当てられる
- 残りは火力10line、相殺専用火力1line
- 相殺を終えたので相殺専用火力は破棄され、10lineが相手に送られる。
バトルロイヤルモード:
沢山のプレイヤーが同時にゲームをプレイします (対AIです, 本物の人ではありません)。
人数が減れば減るほど、ミノの落下速度は加速していき、お邪魔の効果が早く出る同時にせり上がる速度も上がります。
他のプレイヤーを倒してバッジを得て、そしてそのバッジであなた自身の攻撃力を上げましょう。
沢山のプレイヤーが同時にゲームをプレイします (対AIです本物の人ではありません)。
人数が減れば減るほど、ミノの落下速度は加速していき、更に攻撃がダメージになる早さとせり上がりの速さも上昇します。
他のプレイヤーを倒してバッジを得て、そのバッジであなた自身の攻撃力を上げましょう。
プレイヤーは4つの攻撃モードから選ぶことができます:
1: ランダム: 毎回攻撃を送る際, 10%の確率で他のプレイヤーに照準を合わせます。
2: バッジ狙い: 攻撃を送った後もしくは標的が落とされた場合, バッジの数が一番多いプレイヤーに照準を合わせます。
3. トドメ撃ち: 攻撃を送った後もしくは標的が落とされた場合, 各プレイヤの中からフィールドの高さが一番高いプレイヤーに照準を合わせます。
(毎秒更新されます)
4. カウンター: あなたに照準を向けられてるプレイヤー全員に照準を同時に向けます。
あなたの攻撃は照準を向けてるプレイヤー全てに送られます。照準をあなたに向けられていない場合、ランダムにプレイヤーを攻撃します (プレイヤー照準固定無し)
全てのプレイヤーが落とされた場合, 最後のプレイヤーが勝者となります
1: ランダム:
毎回攻撃を送る際、 10%の確率で他のプレイヤーに照準を合わせます。
2: バッジ狙い:
攻撃を送った後もしくは標的が倒れた場合、バッジの数が一番多いプレイヤーに照準を合わせます
3. トドメ撃ち:
攻撃を送った後もしくは標的が倒れた場合、各プレイヤーの中から盤面の高さが一番高いプレイヤー照準を合わせます。
(プレイヤーの盤面の高さは、毎秒更新されます)
4. カウンター:
あなたに照準を向けているプレイヤー全員に照準を同時に向けます。
あなたの攻撃は照準を向けてるプレイヤー全員に送られます。
あなたに向いている標準がない場合、ランダムにプレイヤーを攻撃します。
(特定のプレイヤーに標準を固定しません)
全てのプレイヤーが倒れた時に最後のプレイヤーが勝者となります。
カスタムモード:
殆どの変数を自由に変えられます (他のゲームモードの特殊エフェクトを除いて)
更に消す為のフィールドを描いたりまたは積み上げる為のテンプレも作れます。
ビルド (パズル) モードの場合, テンプレの表示をファンクションキーで操作できます:
X印の場所にはブロック置けない;
無印の場所は何来ても構わない;
色付きの場所にはその色に合わせてのミノブロックを置かないいけない;
おじゃまミノ色の場所にはあるブロックが来てる扱いで空きスペースではない。
形を整えた後に, 勝ち判定となります。
殆どの設定を自由に変えられます(他のゲームモードの特殊エフェクトを除いて)
更に盤面を自由に設定したり、積み上げる為のも作れます。
ビルド(パズル)モードの場合、影の表示をファンクションキーで操作できます:
X印の場所にはブロック置けない
無印の場所には、何を置いても構わない
色付きの場所にはその色に対応したミノブロックを置かなければならない
下穴の色の場所にはブロックが既にある判定で何も置けない。
影通りに形を作った場合にクリアとなります。

View File

@@ -37,7 +37,7 @@ Spin判定:
(注:连击数为连续消除次数-1)
把上述高级消除/低级消除的攻击直接乘以"连击倍率", 公式为 "连击倍率"=[连击数(上限12)]*[消一行以上25%,只消一行15%]
如果消除>=3次时再额外加1攻击
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):
半全消("下方有剩余方块"的全消,如果只消了1行则必须不剩余玩家放置的方块):
伤害+4,额外抵挡+2
全消:
伤害为8~16(本局内递增2),和上述其他伤害取大,+2额外抵挡

View File

@@ -2,14 +2,14 @@ return{
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
{name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"},
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH','sprint123','secret_grade'}},
{name='sprint_100l', x=-400, y=200, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
{name='sprint_400l', x=-600, y=200, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
{name='sprint_1000l', x=-800, y=200, size=40,shape=1,icon="sprint3"},
{name='sprint_100l', x=-400, y=200, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
{name='sprint_400l', x=-600, y=200, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
{name='sprint_1000l', x=-800, y=200, size=40,shape=1,icon="sprint3"},
{name='sprint123', x=160, y=-400, size=40,shape=1,icon="sprint_tri"},
{name='sprintMPH', x=200, y=-260, size=40,shape=3,icon="sprint2"},
{name='sprintPenta', x=130, y=-140, size=40,shape=3,icon="sprint_pento"},
{name='sprintPenta', x=180, y=-160, size=40,shape=3,icon="sprint_pento"},
{name='sprintMPH', x=220, y=-300, size=40,shape=3,icon="sprint2"},
{name='sprint123', x=180, y=-440, size=40,shape=1,icon="sprint_tri"},
{name='secret_grade', x=-200, y=-400, size=40,shape=1,icon="secret_grade"},
{name='drought_n', x=-600, y=400, size=40,shape=1,icon="drought", unlock={'drought_l'}},
@@ -19,13 +19,13 @@ return{
{name='dig_40l', x=-400, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_100l'}},
{name='dig_100l', x=-600, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_400l'}},
{name='dig_400l', x=-800, y=-200, size=40,shape=1,icon="dig_sprint"},
{name='dig_eff_10l', x=-400, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_40l'}},
{name='dig_eff_40l', x=-600, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_100l'}},
{name='dig_eff_100l', x=-800, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_400l'}},
{name='dig_eff_400l', x=-1000, y=0, size=40,shape=1,icon="dig_sprint"},
{name='marathon_n', x=0, y=-600, size=60,shape=1,icon="marathon", unlock={'marathon_h','solo_e','round_e','big_n','blind_e','classic_e','survivor_e','clearRush','zen'}},
{name='dig_eff_10l', x=-400, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_40l'}},
{name='dig_eff_40l', x=-600, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_100l'}},
{name='dig_eff_100l', x=-800, y=0, size=40,shape=1,icon="dig_sprint", unlock={'dig_eff_400l'}},
{name='dig_eff_400l', x=-1000, y=0, size=40,shape=1,icon="dig_sprint"},
{name='marathon_n', x=0, y=-600, size=60,shape=1,icon="marathon", unlock={'marathon_h','solo_e','round_e','big_n','blind_e','classic_e','survivor_e','c4wtrain_n','pctrain_n','sprintAtk','zen'}},
{name='marathon_h', x=0, y=-800, size=50,shape=1,icon="marathon", unlock={'master_n','strategy_e'}},
{name='solo_e', x=-600, y=-1000, size=40,shape=1,icon="solo", unlock={'solo_n'}},
@@ -58,12 +58,12 @@ return{
{name='master_g', x=0, y=-1600, size=40,shape=3,icon="master"},
{name='master_ex', x=170, y=-1450, size=40,shape=2,icon="master_ex"},
{name='strategy_e', x=-150, y=-1020, size=40,shape=3,icon="master", unlock={'strategy_e_plus'}},
{name='strategy_h', x=-150, y=-1150, size=35,shape=3,icon="master", unlock={'strategy_h_plus'}},
{name='strategy_u', x=-150, y=-1280, size=30,shape=2,icon="master", unlock={'strategy_u_plus'}},
{name='strategy_e_plus',x=-300, y=-1120, size=40,shape=3,icon="master"},
{name='strategy_h_plus',x=-300, y=-1250, size=35,shape=3,icon="master"},
{name='strategy_u_plus',x=-300, y=-1380, size=30,shape=2,icon="master"},
{name='strategy_e', x=-150, y=-1020, size=40,shape=3,icon="master", unlock={'strategy_e_plus'}},
{name='strategy_h', x=-150, y=-1150, size=35,shape=3,icon="master", unlock={'strategy_h_plus'}},
{name='strategy_u', x=-150, y=-1280, size=30,shape=2,icon="master", unlock={'strategy_u_plus'}},
{name='strategy_e_plus',x=-300, y=-1120, size=40,shape=3,icon="master"},
{name='strategy_h_plus',x=-300, y=-1250, size=35,shape=3,icon="master"},
{name='strategy_u_plus',x=-300, y=-1380, size=30,shape=2,icon="master"},
{name='blind_e', x=150, y=-700, size=40,shape=1,icon="hidden", unlock={'blind_n','master_instinct'}},
{name='blind_n', x=150, y=-800, size=40,shape=1,icon="hidden", unlock={'blind_h'}},
@@ -93,40 +93,39 @@ return{
{name='dig_h', x=850, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
{name='dig_u', x=850, y=-1000, size=40,shape=1,icon="dig"},
{name='clearRush', x=400, y=-400, size=50,shape=1,icon="bigbang", unlock={'c4wtrain_n','pctrain_n','sprintAtk'}},
{name='c4wtrain_n', x=700, y=-400, size=40,shape=1,icon="pc", unlock={'c4wtrain_l'}},
{name='c4wtrain_l', x=900, y=-400, size=40,shape=1,icon="pc"},
{name='c4wtrain_n', x=700, y=-450, size=40,shape=1,icon="pc", unlock={'c4wtrain_l'}},
{name='c4wtrain_l', x=900, y=-450, size=40,shape=1,icon="pc"},
{name='pctrain_n', x=700, y=-250, size=40,shape=1,icon="pc", unlock={'pctrain_l','pc_n'}},
{name='pctrain_l', x=900, y=-250, size=40,shape=1,icon="pc"},
{name='pctrain_n', x=700, y=-300, size=40,shape=1,icon="pc", unlock={'pctrain_l','pc_n'}},
{name='pctrain_l', x=900, y=-300, size=40,shape=1,icon="pc"},
{name='pc_n', x=800, y=-110, size=40,shape=1,icon="pc", unlock={'pc_h'}},
{name='pc_h', x=950, y=-110, size=40,shape=3,icon="pc", unlock={'pc_l','pc_inf'}},
{name='pc_l', x=1100, y=-110, size=40,shape=3,icon="pc"},
{name='pc_inf', x=1100, y=-250, size=40,shape=2,icon="pc"},
{name='pc_n', x=800, y=-140, size=40,shape=1,icon="pc", unlock={'pc_h'}},
{name='pc_h', x=950, y=-140, size=40,shape=3,icon="pc", unlock={'pc_l','pc_inf'}},
{name='pc_l', x=1100, y=-140, size=40,shape=3,icon="pc"},
{name='pc_inf', x=1100, y=-280, size=40,shape=2,icon="pc"},
{name='sprintAtk', x=530, y=-150, size=40,shape=1,icon="sprint2", unlock={'sprintEff','tech_n','tech_finesse','tsd_e','backfire_n'}},
{name='sprintAtk', x=500, y=-280, size=40,shape=1,icon="sprint2", unlock={'sprintEff','tech_n','tech_finesse','tsd_e','backfire_n'}},
{name='sprintEff', x=360, y=-150, size=40,shape=1,icon="sprint2"},
{name='tech_n', x=400, y=50, size=40,shape=1,icon="tech", unlock={'tech_n_plus','tech_h'}},
{name='tech_n_plus', x=200, y=20, size=40,shape=3,icon="tech"},
{name='tech_h', x=400, y=200, size=40,shape=1,icon="tech", unlock={'tech_h_plus','tech_l'}},
{name='tech_h_plus', x=200, y=170, size=35,shape=3,icon="tech"},
{name='tech_l', x=400, y=350, size=40,shape=1,icon="tech", unlock={'tech_l_plus'}},
{name='tech_l_plus', x=200, y=320, size=35,shape=3,icon="tech"},
{name='tech_n', x=400, y=20, size=40,shape=1,icon="tech", unlock={'tech_n_plus','tech_h'}},
{name='tech_n_plus', x=200, y=-10, size=40,shape=3,icon="tech"},
{name='tech_h', x=400, y=170, size=40,shape=1,icon="tech", unlock={'tech_h_plus','tech_l'}},
{name='tech_h_plus', x=200, y=140, size=35,shape=3,icon="tech"},
{name='tech_l', x=400, y=320, size=40,shape=1,icon="tech", unlock={'tech_l_plus'}},
{name='tech_l_plus', x=200, y=290, size=35,shape=3,icon="tech"},
{name='tech_finesse', x=800, y=50, size=40,shape=1,icon="tech", unlock={'tech_finesse_f'}},
{name='tech_finesse_f',x=1000, y=50, size=40,shape=1,icon="tech"},
{name='tech_finesse', x=800, y=20, size=40,shape=1,icon="tech", unlock={'tech_finesse_f'}},
{name='tech_finesse_f',x=1000, y=20, size=40,shape=1,icon="tech"},
{name='tsd_e', x=720, y=200, size=40,shape=1,icon="tsd", unlock={'tsd_h'}},
{name='tsd_h', x=960, y=200, size=40,shape=1,icon="tsd", unlock={'tsd_u'}},
{name='tsd_u', x=1200, y=200, size=40,shape=1,icon="tsd"},
{name='tsd_e', x=720, y=170, size=40,shape=1,icon="tsd", unlock={'tsd_h'}},
{name='tsd_h', x=960, y=170, size=40,shape=1,icon="tsd", unlock={'tsd_u'}},
{name='tsd_u', x=1200, y=170, size=40,shape=1,icon="tsd"},
{name='backfire_n', x=650, y=350, size=40,shape=1,icon="backfire", unlock={'backfire_h'}},
{name='backfire_h', x=850, y=350, size=40,shape=1,icon="backfire", unlock={'backfire_l'}},
{name='backfire_l', x=1050, y=350, size=40,shape=3,icon="backfire", unlock={'backfire_u'}},
{name='backfire_u', x=1250, y=350, size=35,shape=2,icon="backfire"},
{name='backfire_n', x=650, y=320, size=40,shape=1,icon="backfire", unlock={'backfire_h'}},
{name='backfire_h', x=850, y=320, size=40,shape=1,icon="backfire", unlock={'backfire_l'}},
{name='backfire_l', x=1050, y=320, size=40,shape=3,icon="backfire", unlock={'backfire_u'}},
{name='backfire_u', x=1250, y=320, size=35,shape=2,icon="backfire"},
{name='zen', x=-1000, y=-600, size=40,shape=1,icon="zen", unlock={'ultra','infinite','infinite_dig','marathon_inf'}},
{name='ultra', x=-1200, y=-600, size=40,shape=1,icon="ultra"},

View File

@@ -7,7 +7,7 @@ return{
eventSet='big_h',
bg='cubes',bgm='push',
},
score=function(P)return{P.stat.row,P.stat.time}end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)

View File

@@ -7,7 +7,7 @@ return{
eventSet='big_n',
bg='bg2',bgm='push',
},
score=function(P)return{P.stat.row,P.stat.time}end,
score=function(P)return{math.min(P.stat.row,200),P.stat.time}end,
scoreDisp=function(D)return D[1].." Lines "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)

View File

@@ -1,23 +0,0 @@
return{
env={
das=8,arr=1,
drop=30,lock=30,
holdCount=0,
eventSet='clearRush',
bg='blockhole',bgm='peak',
},
score=function(P)return{P.modeData.stage,P.stat.time}end,
scoreDisp=function(D)return D[1].." Stage "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
do return 1 end
local L=P.modeData.stage
return
L>=100 and 5 or
L>=70 and 4 or
L>=40 and 3 or
L>=20 and 2 or
L>=10 and 1 or
L>=3 and 0
end,
}

View File

@@ -0,0 +1,48 @@
return{
env={
pushSpeed=6,
bg='bg1',bgm='way',
mesDisp=function(P)
setFont(55)
mStr(10-P.stat.dig_quad,63,265)
end,
hook_drop=function(P)
if P.lastPiece.row>0 and P.lastPiece.row<4 then
P:lose()
else
P.stat.dig_quad = P.stat.dig
end
if P.stat.dig==10 then
P:win('finish')
end
end,
task=function(P)
local last = -1
for _=1,10 do
local garbage = last
repeat
garbage = P:getHolePos()
until garbage ~= last
last = garbage
P:garbageRise(21,1,garbage)
end
P.fieldBeneath=0
P.stat.dig_quad = 0
end,
},
score=function(P)return{P.stat.dig_quad,P.stat.piece}end,
scoreDisp=function(D)return D[1].." Techrash "..D[2].." Pieces"end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
local dig = P.stat.dig_quad
local piece = P.stat.piece
if dig < 4 then return end
return
dig < 7 and 0 or
dig < 10 and 1 or
piece > 103 and 2 or
piece > 92 and 3 or
piece > 81 and 4 or
5
end,
}

View File

@@ -20,15 +20,15 @@ return{
getRank=function(P)
local G=P.modeData.gradePts
return
G>=39 and 5 or -- TM+
G>=31 and 4 or -- MM- - TM
G>=25 and 3 or -- m8 - MO
G>=18 and 2 or -- m1 - m7
G>=9 and 1 or -- S1 - S9
G>=40 and 5 or -- TM+
G>=32 and 4 or -- MM- - TM
G>=26 and 3 or -- m8 - MO
G>=19 and 2 or -- m1 - m7
G>=10 and 1 or -- S1 - S9
0
-- Table of grades vs values
-- 9 8 7 6 5 4 3 2 1 S1 S2 S3 S4 S5 S6 S7 S8 S9 m1 m2 m3 m4 m5 m6 m7 m8 m9 M MK MV MO MM- MM MM+ GM- GM GM+ TM- TM TM+
-- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
-- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
end,
}

View File

@@ -2654,7 +2654,7 @@ function Player:_die()
self.b2b=0
self.tasks={}
self:clearAttackBuffer()
for i=1,#self.field do
for i=1,#self.visTime do
for j=1,10 do
self.visTime[i][j]=min(self.visTime[i][j],20)
end
@@ -2758,7 +2758,7 @@ function Player:win(result)
if result=='finish'then
for i=#PLY_ALIVE,1,-1 do
if PLY_ALIVE[i]~=self then
PLY_ALIVE[i]:lose()
PLY_ALIVE[i]:lose(true)
end
end
end

View File

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

View File

@@ -106,8 +106,7 @@ end
local scene={}
function scene.sceneInit()
BG.set('fixColor')
BG.send(.26,.62,.26)
BG.set('fixColor',.26,.62,.26)
_newGame()
selected=false
end

View File

@@ -35,6 +35,14 @@ end
function scene.mouseUp()
release()
end
function scene.touchDown()
press()
end
function scene.touchUp()
if #love.touch.getTouches()==0 then
release()
end
end
function scene.keyDown(key,isRep)
if isRep then return end
if key=='escape'then

View File

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

View File

@@ -25,7 +25,7 @@ local penKey={
['1']=1,['2']=2,['3']=3,['4']=4,['5']=5,['6']=6,['7']=7,['8']=8,
q=9,w=10,e=11,r=12,t=13,y=14,u=15,i=16,
a=17,s=18,d=19,f=20,g=21,h=22,j=23,k=24,
z=0,x=-1,
z=0,x=-1,c=-2,
}
local minoPosCode={
[102]=1,[1121]=1,--Z
@@ -250,8 +250,8 @@ function scene.keyDown(key)
else
SCN.back()
end
else
pens[curPen]=penKey[key]or pens[curPen]
elseif penKey[key] then
pens[1]=penKey[key]
end
end
function scene.keyUp(key)

View File

@@ -7,7 +7,6 @@ local langList={
pt="Português",
id="Bahasa Indonesia",
ja="日本語",
zh_grass="机翻",
symbol="?????",
}
local languages={
@@ -49,21 +48,21 @@ local function _setLang(lid)
end
scene.widgetList={
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=35, fText=langList.id, color='Y',sound='click',code=function()_setLang('id')end},
WIDGET.newButton{x=270,y=210,w=330,h=100,font=40, fText=langList.en, color='R',sound='click',code=function()_setLang('en')end},
WIDGET.newButton{x=270,y=330,w=330,h=100,font=40, fText=langList.fr, color='F',sound='click',code=function()_setLang('fr')end},
WIDGET.newButton{x=270,y=450,w=330,h=100,font=35, fText=langList.es, color='O',sound='click',code=function()_setLang('es')end},
WIDGET.newButton{x=270,y=570,w=330,h=100,font=35, fText=langList.id, color='Y',sound='click',code=function()_setLang('id')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.ja, color='J',sound='click',code=function()_setLang('ja')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=640,y=210,w=330,h=100,font=40, fText=langList.pt, color='A',sound='click',code=function()_setLang('pt')end},
WIDGET.newButton{x=640,y=330,w=330,h=100,font=40, fText=langList.symbol, color='G',sound='click',code=function()_setLang('symbol')end},
WIDGET.newButton{x=640,y=450,w=330,h=100,font=40, fText=langList.ja, color='J',sound='click',code=function()_setLang('ja')end},
WIDGET.newKey {x=640,y=570,w=330,h=100,font=40, fText='', color='L'},
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_trad, color='S',sound='click',code=function()_setLang('zh_trad')end},
-- WIDGET.newButton{x=1003,y=449,w=346,h=100,font=40,fText=langList.zh_trad, color='S',sound='click',code=function()_setLang('zh_trad')end},
WIDGET.newButton{x=1000,y=210,w=330,h=100,font=40,fText=langList.zh, color='C',sound='click',code=function()_setLang('zh')end},
WIDGET.newButton{x=1000,y=330,w=330,h=100,font=40,fText=langList.zh_trad, color='S',sound='click',code=function()_setLang('zh_trad')end},
WIDGET.newKey {x=1000,y=450,w=330,h=100,font=40,fText='', color='P'},
WIDGET.newButton{name='back',x=1003,y=568,w=346,h=100,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
WIDGET.newButton{name='back',x=1000,y=570,w=330,h=100,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -122,8 +122,6 @@ function scene.keyDown(key,isRep)
VOC.play('bye')
SCN.swapTo('quit','slowFade')
end
elseif key=='c'then
enterConsole()
else
return true
end

View File

@@ -2,7 +2,7 @@ local scene={}
function scene.sceneInit()
BG.set('cubes')
local fileData=love.filesystem.read('parts/language/manual_'..(SETTING.locale:find'zh'and'zh'or'en')..'.txt')
local fileData=FILE.load('parts/language/manual_'..(SETTING.locale:find'zh'and'zh'or SETTING.locale:find'ja'and'ja'or'en')..'.txt','-string')
if fileData then
WIDGET.active.texts:setTexts(fileData:split('\n'))
else

View File

@@ -4,15 +4,6 @@ local sin=math.sin
local setFont=FONT.set
local author={
blank="MrZ (old works)",
["end"]="MrZ (old works)",
cruelty="MrZ (old works)",
final="MrZ (old works)",
infinite="MrZ (old works)",
push="MrZ (old works)",
race="MrZ (old works)",
reason="MrZ (old works)",
way="MrZ (old works)",
battle="Aether & MrZ",
moonbeam="Beethoven & MrZ",
empty="ERM",
@@ -75,6 +66,22 @@ function scene.keyDown(key,isRep)
end
function scene.draw()
local t=TIME()
--Character
gc.push('transform')
gc.setColor(1,1,1)
gc.translate(906,456)
gc.scale(.6)
GC.draw(IMG.z.character)
GC.draw(IMG.z.screen1, -91, -157+16*math.sin(t))
GC.draw(IMG.z.screen2, 120, -166+16*math.sin(t+1))
gc.setColor(1,1,1,.7+.3*math.sin(.6*t)) GC.draw(IMG.z.particle1, -50, 42+6*math.sin(t*0.36))
gc.setColor(1,1,1,.7+.3*math.sin(.7*t)) GC.draw(IMG.z.particle2, 110+6*math.sin(t*0.92), 55)
gc.setColor(1,1,1,.7+.3*math.sin(.8*t)) GC.draw(IMG.z.particle3, -54+6*math.sin(t*0.48), -248)
gc.setColor(1,1,1,.7+.3*math.sin(.9*t)) GC.draw(IMG.z.particle4, 133, -305+6*math.sin(t*0.40))
gc.pop()
gc_setColor(COLOR.Z)
--Scroller
@@ -89,23 +96,24 @@ function scene.draw()
if selected>2 then gc_print(bgmList[selected-2],322,350-50)end
if selected<#bgmList-1 then gc_print(bgmList[selected+2],322,350+110)end
--Music player
gc.draw(TEXTURE.title,840,220,nil,.5,nil,580,118)
--Title
if BGM.nowPlay then
GC.draw(TEXTURE.title,570,190,nil,.42)
local a=-t%2.3/2.3
gc_setColor(1,1,1,math.min(a,1))
GC.draw(TEXTURE.title_color,570,190,nil,.42+.062-.062*a)
end
--Music player
if BGM.nowPlay then
local t=TIME()
setFont(45)
GC.shadedPrint(BGM.nowPlay,710,508,'left',2)
gc_setColor(sin(t*.5)*.2+.8,sin(t*.7)*.2+.8,sin(t)*.2+.8)
gc_print(BGM.nowPlay,710,508)
setFont(35)
gc_setColor(1,sin(t*2.6)*.5+.5,sin(t*2.6)*.5+.5)
gc_print(author[BGM.nowPlay]or"MrZ",670,465)
local a=-t%2.3/2
if a<1 then
gc_setColor(1,1,1,a)
gc.draw(TEXTURE.title_color,840,220,nil,.5+.062-.062*a,.5+.126-.126*a,580,118)
end
setFont(20)
gc_setColor(COLOR.Z)
local cur=BGM.playing:tell()

View File

@@ -65,7 +65,7 @@ function scene.draw()
gc.draw(IMG.miyaHeart,162,52,nil,.3)
elseif vocPack=="mono"then
local jump=math.max(30-(TIME()-last1)*60,0)%10
gc.translate(800,340+6*sin(TIME()*.5)+(jump-10)*jump*.3)
gc.translate(760,340+6*sin(TIME()*.5)+(jump-10)*jump*.3)
gc.draw(IMG.monoCH,-30)
elseif vocPack=="xiaoya"then
gc.translate(770,340+4*sin(TIME()*.5))

View File

@@ -97,7 +97,14 @@ scene.widgetList={
},
WIDGET.newSlider{name='bgAlpha', x=1020,y=1430,w=200,
axis={0,.8},disp=SETval('bgAlpha'),
code=function(v)SETTING.bgAlpha=v BG.send(v,v,v)end,
code=function(v)
SETTING.bgAlpha=v
if BG.cur=='fixColor' then
BG.send(v,v,v)
else
BG.send(v)
end
end,
hideF=function()return SETTING.bg=='on'end
},

View File

@@ -84,7 +84,7 @@ function scene.draw()
local L=text.staff
setFont(40)
for i=1,#L do
mStr(L[i],640,950+70*i-T)
mStr(L[i],640,950+65*i-T)
end
gc.setColor(1,1,1)
mDraw(TEXTURE.title_color,640,900-T,nil,.6)

View File

@@ -1,4 +1,4 @@
extern float a;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
return vec4(1.,1.,1.,sign(Texel(tex,tex_coords).a)*a);
uniform float a;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
return vec4(1.,1.,1.,sign(texture2D(tex,texCoord).a)*a);
}

View File

@@ -1,42 +1,14 @@
#define PI 3.1415926535897932384626
extern float w,h;
extern float t;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
float x=scr_coords.x/w;
float y=scr_coords.y/h;
float dx,dy;
uniform float phase;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
float x=scrCoord.x/love_ScreenSize.x;
float y=scrCoord.y/love_ScreenSize.y;
vec3 V=vec3(0.);
V.r=V.r+smoothstep(1.26,0.,length(vec2(0.5+cos(phase*3.*0.26)*0.4-x,0.5-sin(phase*3.*0.62)*0.4-y)));
V.g=V.g+smoothstep(1.26,0.,length(vec2((0.5+cos(phase*3.*0.32)*0.4)-x,(0.5-sin(phase*3.*0.80)*0.4)-y)));
V.b=V.b+smoothstep(1.26,0.,length(vec2((0.5-cos(phase*3.*0.49)*0.4)-x,(0.5+sin(phase*3.*0.18)*0.4)-y)));
V.rg+=vec2(smoothstep(0.626,0.,length(vec2((0.5+cos(phase*0.53)*0.4)-x,(0.5-sin(phase*0.46)*0.4)-y))));
V.rb+=vec2(smoothstep(0.626,0.,length(vec2((0.5+cos(phase*0.98)*0.4)-x,(0.5+sin(phase*0.57)*0.4)-y))));
V.gb+=vec2(smoothstep(0.626,0.,length(vec2((0.5-cos(phase*0.86)*0.4)-x,(0.5-sin(phase*0.32)*0.4)-y))));
dx=0.5+cos(t*3.*0.26)*0.4-x;
dy=0.5-sin(t*3.*0.62)*0.4-y;
dx=sqrt(dx*dx+dy*dy);
V.r=V.r+smoothstep(1.26,0.,dx);
dx=(0.5+cos(t*3.*0.32)*0.4)-x;
dy=(0.5-sin(t*3.*0.80)*0.4)-y;
dx=sqrt(dx*dx+dy*dy);
V.g=V.g+smoothstep(1.26,0.,dx);
dx=(0.5-cos(t*3.*0.49)*0.4)-x;
dy=(0.5+sin(t*3.*0.18)*0.4)-y;
dx=sqrt(dx*dx+dy*dy);
V.b=V.b+smoothstep(1.26,0.,dx);
dx=(0.5+cos(t*0.53)*0.4)-x;
dy=(0.5-sin(t*0.46)*0.4)-y;
dx=sqrt(dx*dx+dy*dy);
V.rg+=vec2(smoothstep(0.626,0.,dx));
dx=(0.5+cos(t*0.98)*0.4)-x;
dy=(0.5+sin(t*0.57)*0.4)-y;
dx=sqrt(dx*dx+dy*dy);
V.rb+=vec2(smoothstep(0.626,0.,dx));
dx=(0.5-cos(t*0.86)*0.4)-x;
dy=(0.5-sin(t*0.32)*0.4)-y;
dx=sqrt(dx*dx+dy*dy);
V.gb+=vec2(smoothstep(0.626,0.,dx));
dx=1.626*max(max(V.r,V.g),V.b);
return vec4(V/dx,0.4);
return vec4(V/max(max(V.r,V.g),V.b)/1.626,0.4);
}

View File

@@ -1,10 +1,10 @@
extern float k,b;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
vec4 texcolor=Texel(tex,tex_coords);
uniform float k,b;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
vec4 texcolor=texture2D(tex,texCoord);
return vec4(
(b+texcolor.r*k)*color.r,
(b+texcolor.g*k)*color.g,
(b+texcolor.b*k)*color.b,
(texcolor.r*k+b)*color.r,
(texcolor.g*k+b)*color.g,
(texcolor.b*k+b)*color.b,
texcolor.a*color.a
);
}

View File

@@ -1,10 +1,10 @@
extern float k,b;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
vec4 texcolor=Texel(tex,tex_coords);
uniform float k,b;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
vec4 texcolor=texture2D(tex,texCoord);
return vec4(
(b+texcolor.r*k)*color.r,
(b+texcolor.g*k)*color.g,
(b+texcolor.b*k)*color.b,
(texcolor.r*k+b)*color.r,
(texcolor.g*k+b)*color.g,
(texcolor.b*k+b)*color.b,
texcolor.a*color.a
);
}

View File

@@ -1,9 +1,9 @@
extern float t,w;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
float x=scr_coords.x/w;
uniform float phase;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
float x=scrCoord.x/love_ScreenSize.x;
return vec4(
.8-x*.6,
.3+.2*sin(t),
.3+.2*sin(phase),
.15+x*.7,
.4
);

View File

@@ -1,10 +1,10 @@
extern float t,h;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
float y=scr_coords.y/h;
uniform float phase;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
float y=scrCoord.y/love_ScreenSize.y;
return vec4(
.8-y*.6,
.2+y*.4,
.3+.1*sin(t),
.3+.1*sin(phase),
.4
);
}

View File

@@ -1,5 +1,5 @@
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
vec4 texcolor=Texel(tex,tex_coords);
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
vec4 texcolor=texture2D(tex,texCoord);
return vec4(
pow(texcolor.r+.26,.7023),
pow(texcolor.g+.26,.7023),

View File

@@ -1,11 +1,11 @@
extern float t,w,h;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
float x=scr_coords.x/w;
float y=scr_coords.y/h;
uniform float phase;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
float x=scrCoord.x/love_ScreenSize.x;
float y=scrCoord.y/love_ScreenSize.y;
return vec4(
.8-y*.7+.2*sin(t/6.26),
.2+y*.5+.15*sin(t/4.),
.2+x*.6-.1*sin(t/2.83),
.8-y*.7+.2*sin(phase/6.26),
.2+y*.5+.15*sin(phase/4.),
.2+x*.6-.1*sin(phase/2.83),
.4
);
}

View File

@@ -1,11 +1,11 @@
extern float t,w,h;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
float x=scr_coords.x/w;
float y=scr_coords.y/h;
uniform float phase;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
float x=scrCoord.x/love_ScreenSize.x;
float y=scrCoord.y/love_ScreenSize.y;
return vec4(
.8-y*.8-.1*sin(t/6.26),
.4+.1*sin(t/4.)*(y+2.)/(y+5.),
abs(.7-x*1.4+y*.5*sin(t/16.)),
.8-y*.8-.1*sin(phase/6.26),
.4+.1*sin(phase/4.)*(y+2.)/(y+5.),
abs(.7-x*1.4+y*.5*sin(phase/16.)),
.4
);
}

View File

@@ -1,6 +1,6 @@
extern float w,level;
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
float dx=abs(scr_coords.x/w-0.5);
uniform float level;
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
float dx=abs(scrCoord.x/love_ScreenSize.x-0.5);
float a=(dx*2.6-.626)*level;
return vec4(1.,0.,0.,a);
}

View File

@@ -2,12 +2,37 @@ return[=[
未来计划:
R E M A K E
0.17.4: 昏暗 Dim
改动:
TRS里T的1→0/3→0新增一个上1的踢
移除地图上的clearRush模式
删除日文字体,更新主字体
说明书有日文版本了
移除机翻语言
更新语言文件
修复:
TRS的V的踢墙表错误,不对称
TRS的O变JL条件错误
0.17.3: 矿井 Mine
改动:
一点魔法
重新开放mono语音包选择
代码:
升级着色器相关(aura背景表现应该好多了)
移除一个没用到的库(虽然也没一点点大)
修复:
Master-G一些问题
一些背景相关的问题 #672
键盘编辑自定义场地不能切换画笔(顺便补充智能画笔快捷键c)
big模式统计行数可能超出200 #682
0.17.2: 服务区 Service Area
新增:
把一些模式加入到大地图上(by NOT_A_ROBOT) #640
登录界面会隐藏自动填充的邮箱防止信息泄露 #639
改动:
移除FTLock设置全局开启
移除FTLock设置,全局开启
大幅度调低高级机器人速度
词典新增一条比较详细的新人指引
master_g模式不再限定旋转系统

View File

@@ -1,7 +1,7 @@
return{
["apkCode"]=436,
["code"]=1702,
["string"]="V0.17.2",
["apkCode"]=442,
["code"]=1704,
["string"]="V0.17.4",
["room"]="ver A-7",
["name"]="0.17.2",
["name"]="矿井 Mine",
}