Compare commits
19 Commits
pre0.17.4-
...
pre0.17.4-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a61172764 | ||
|
|
97fd1721c5 | ||
|
|
55419cc183 | ||
|
|
db47528a37 | ||
|
|
38be81114f | ||
|
|
6c960fdde8 | ||
|
|
05c277a690 | ||
|
|
9dab204ae8 | ||
|
|
075f643fb7 | ||
|
|
8d4e2fa0d0 | ||
|
|
5d05583e26 | ||
|
|
31425440dc | ||
|
|
5409e18ede | ||
|
|
1d50e37df2 | ||
|
|
afa86fe0ac | ||
|
|
77b031fdde | ||
|
|
d0c71cd0af | ||
|
|
5b743a4103 | ||
|
|
da8d7e2080 |
52
.github/actions/automatic-test/action.yml
vendored
52
.github/actions/automatic-test/action.yml
vendored
@@ -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
|
||||
|
||||
Submodule Zframework updated: 7efa52be11...d1d5f4fabc
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,7 +10,7 @@ return{
|
||||
{"新人学习/练习路线",
|
||||
"读我 必读 萌新 xinren new noob readme",
|
||||
"help",
|
||||
"以下是关于提升真正打块能力的指引,如果在以下任何项目练习过程中感到有困难,可以适当回去玩玩自己喜欢的项目。别忘了你是来 “玩” 游戏的,兴趣最重要。\n以下给出几个新手时期的主线任务树,前期主要就应该练习以下内容,学定式和T-Spin什么的对实力帮助很小(我们不认为靠定式对战秒其他萌新是有效实力):\n(注意,三段应当同时进行,不是A→B→C)\nA. 堆叠能力练习方法\n\tA1. 决定手上的块放哪的时候先别,看看下一块有没有地方放,如果放不下去,重新想手上的\n\tA2. 尝试把地形尽量控制得平整,因为比较平的地形来啥块都比较容易放得下去\nB. 操作效率与速度练习方法\n\tB1. 不要每一块都拿影子去对形状对位置,要自己想象这个块转一下是什么方向,想好了再开始按按键\n\tB2. 学习双旋,能逆时针转一次就不要顺时针转三次,费手\n\tB3. 学习极简,刚开始不用管速度,保证正确率最重要,养成良好习惯以后再提速快得很\nC. 堆叠能力考核\n\tC1. 稳定完成40行不死\n\tC2. 稳定不用hold完成40行\n\tC3. 稳定全消四完成40行\n\tC4. 稳定不用hold全消四完成40行\n以上都是根据社区和个人经验总结的模糊方法与目标,所以C的考核可以根据自身情况调整严格程度(例如 “稳定” 的具体成功率)。\n注:完成C的考核后,需要在未来一直注意没有上限的A1,这是方块的根本元素之一,强大的读next能力可以让你快速上手任何变种玩法。",
|
||||
"以下是关于提升真正打块能力的指引,如果在以下任何项目练习过程中感到有困难,可以适当回去玩玩自己喜欢的项目。别忘了你是来 “玩” 游戏的,兴趣最重要。\n以下给出几个新手时期的主线任务树,前期主要就应该练习以下内容,学定式和T-Spin什么的对实力帮助很小(我们不认为靠定式对战秒其他萌新是有效实力):\n(注意,三段应当同时进行,不是A→B→C)\nA. 堆叠能力练习方法\n\tA1. 决定手上的块放哪的时候先别,看看下一块有没有地方放,如果放不下去,重新想手上的\n\tA2. 尝试把地形尽量控制得平整,因为比较平的地形来啥块都比较容易放得下去\nB. 操作效率与速度练习方法\n\tB1. 不要每一块都拿影子去对形状对位置,要自己想象这个块转一下是什么方向,想好了再开始按按键\n\tB2. 学习双旋,能逆时针转一次就不要顺时针转三次,费手\n\tB3. 学习极简,刚开始不用管速度,保证正确率最重要,养成良好习惯以后再提速快得很\nC. 堆叠能力考核\n\tC1. 稳定完成40行不死(可以用hold)\n\tC2. 稳定完成40行不死(不能用hold)\n\tC3. 稳定全消四完成40行(可以用hold)\n\tC4. 稳定全消四完成40行(不能用hold)\n以上都是根据社区和个人经验总结的模糊方法与目标,所以C的考核可以根据自身情况调整严格程度(例如 “稳定” 的具体成功率)。\n注:完成C的考核后,需要在未来一直注意没有上限的A1,这是方块的根本元素之一,强大的读next能力可以让你快速上手任何变种玩法。",
|
||||
},
|
||||
{"关于T-spin学习",
|
||||
"T旋 T转 tspins",
|
||||
@@ -674,8 +674,8 @@ return{
|
||||
"term",
|
||||
"欠债\n指必须完全堆好才能开始转下T旋打出攻击,堆完之前T下不去的形状。对战实战中如果要做此类(中局)定式时一定要观察对手情况确保自己安全,不然可能被半途打死\n\n一般只用来描述类似双T3/T3塔的大型组合炮,堆完之前完全不能打出攻击。",
|
||||
},
|
||||
{"攻守",
|
||||
"gong shou",
|
||||
{"攻防",
|
||||
"gongfang gongshou",
|
||||
"term",
|
||||
"攻击指通过消除给对手发送垃圾行;\n防御(相杀)指别人打过来攻击之后用攻击抵消;\n反击指抵消/吃下所有攻击后打出攻击。\n\n注:大多数方块游戏的攻防是1:1的,4行攻击抵消对手的4行攻击。",
|
||||
},
|
||||
@@ -1229,6 +1229,11 @@ return{
|
||||
"english",
|
||||
"Away from keyboard\n一段时间不接触键盘,就是不玩一段时间,可以缓解手部疲劳,休息好之后马上破纪录也是可能的。",
|
||||
},
|
||||
{"Timing",
|
||||
"timing shiji fanji",
|
||||
"term",
|
||||
"Time作动词时的动名词形式,意为抓时机。在方块中往往指根据双方形势选择打出攻击的时机,和要不要故意吃下对手的攻击防止抵消,然后再把自己的攻击打过去。可以一定程度上提高对战的优势,但对于新人来说连自己场地都看不明白还看啥对面,有时间分析形势不如提速提效来得更好。",
|
||||
},
|
||||
|
||||
--人物
|
||||
{"注[2]",
|
||||
|
||||
@@ -779,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"},
|
||||
|
||||
@@ -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
|
||||
@@ -190,8 +325,8 @@ return{
|
||||
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",
|
||||
@@ -244,7 +379,7 @@ return{
|
||||
password="Contraseña",
|
||||
description="Descripción",
|
||||
|
||||
life="Vida",
|
||||
life="Vidas",
|
||||
pushSpeed="Velocidad de Subida",
|
||||
garbageSpeed="Velocidad de Basura",
|
||||
visible="Visibilidad",
|
||||
@@ -549,7 +684,7 @@ return{
|
||||
register="Registrarse",
|
||||
email="Correo Elec.",
|
||||
password="Contraseña",
|
||||
-- showEmail="Show Email",
|
||||
showEmail="Mostrar Correo",
|
||||
keepPW="Recordar credenciales",
|
||||
login="Entrar",
|
||||
},
|
||||
@@ -625,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."},
|
||||
@@ -649,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?"},
|
||||
@@ -684,7 +831,7 @@ return{
|
||||
['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!"},
|
||||
@@ -700,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"},
|
||||
|
||||
@@ -731,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!"},
|
||||
|
||||
@@ -780,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"},
|
||||
|
||||
@@ -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="新記録!",
|
||||
|
||||
@@ -420,7 +420,7 @@ return{
|
||||
net_game={
|
||||
ready="準備OK",
|
||||
spectate="観戦",
|
||||
cancel="待った",
|
||||
cancel="キャンセル",
|
||||
},
|
||||
setting_game={
|
||||
title="ゲームの設定",
|
||||
@@ -481,7 +481,7 @@ return{
|
||||
fullscreen="フルスクリーン",
|
||||
|
||||
bg_on="通常背景",
|
||||
bg_off="背景を閉じる ",
|
||||
bg_off="背景なし ",
|
||||
bg_custom="カスタム背景",
|
||||
|
||||
blockSatur="ブロックデザイン",
|
||||
@@ -514,7 +514,7 @@ return{
|
||||
|
||||
das="DAS",arr="ARR",
|
||||
dascut="DASカット",
|
||||
dropcut="自動ロックcut",
|
||||
dropcut="自動設置カット",
|
||||
sddas="ソフトドロップDAS",sdarr="ソフトドロップARR",
|
||||
ihs="先行ホールド",
|
||||
irs="先行回転",
|
||||
@@ -575,7 +575,7 @@ return{
|
||||
},
|
||||
customGame={
|
||||
title="カスタムプレイ",
|
||||
defSeq="デフォルトのミノ順",
|
||||
defSeq="通常のミノ順",
|
||||
noMsn="ミッションなし",
|
||||
|
||||
drop="自然落下時間",
|
||||
@@ -775,6 +775,7 @@ return{
|
||||
['dig_40l']= {"掘り", "40L", "40ライン下穴を掘れ!"},
|
||||
['dig_100l']= {"掘り", "100L", "100ライン下穴を掘れ!"},
|
||||
['dig_400l']= {"掘り", "400L", "400ライン下穴を掘れ!"},
|
||||
--['dig_quad_10l']= {"Dig", "TECHRASH 10L", "Dig 10 garbage lines using only techrash!"},
|
||||
['drought_n']= {"ドラウト", "100L", "Iミノ一切無し!"},
|
||||
['drought_l']= {"ドラウト+", "100L", "わったーふ◯っく!"},
|
||||
['marathon_n']= {"マラソン", "NORMAL", "加速する中で200ラインマラソン!"},
|
||||
|
||||
@@ -762,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!"},
|
||||
|
||||
@@ -775,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行加速马拉松"},
|
||||
|
||||
@@ -779,6 +779,7 @@ return{
|
||||
['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行加速馬拉松"},
|
||||
|
||||
@@ -7,7 +7,8 @@ Gameplay:
|
||||
Play until the end or achieve the level’s goal to win.
|
||||
|
||||
Rotation system:
|
||||
Uses TRS (Techmino Rotation System) by default. The game allows players to choose other commonly used rotation systems (generally unnecessary)
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
@@ -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印の場所には、ブロックを置けない。
|
||||
無印の場所には、何を置いても構わない。
|
||||
色付きの場所には、その色に対応したミノブロックを置かなければならない。
|
||||
下穴の色の場所には、ブロックが既にある判定で何も置けない。
|
||||
影通りに形を作った場合にクリアとなります。
|
||||
|
||||
46
parts/modes/dig_quad_10l.lua
Normal file
46
parts/modes/dig_quad_10l.lua
Normal file
@@ -0,0 +1,46 @@
|
||||
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)
|
||||
if P.stat.dig_quad<4 then return end
|
||||
return
|
||||
P.stat.piece<=81 and 5 or
|
||||
P.stat.piece<=92 and 4 or
|
||||
P.stat.piece<=103 and 3 or
|
||||
P.stat.dig_quad>=10 and 2 or
|
||||
P.stat.dig_quad>=7 and 1 or
|
||||
0
|
||||
end,
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -6,8 +6,11 @@ return[=[
|
||||
改动:
|
||||
移除地图上的clearRush模式
|
||||
移除机翻语言
|
||||
说明书有日文版本了
|
||||
更新语言文件
|
||||
修复:
|
||||
TRS的V的踢墙表错误,不对称
|
||||
TRS的O变JL条件错误
|
||||
|
||||
0.17.3: 矿井 Mine
|
||||
改动:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
return{
|
||||
["apkCode"]=440,
|
||||
["apkCode"]=441,
|
||||
["code"]=1704,
|
||||
["string"]="V0.17.4",
|
||||
["room"]="ver A-7",
|
||||
|
||||
Reference in New Issue
Block a user