Compare commits
9 Commits
pre0.17.1-
...
pre0.17.1-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ad7443745 | ||
|
|
d3441628a9 | ||
|
|
0f83ae0f1b | ||
|
|
cdb19179f3 | ||
|
|
d1581b1efe | ||
|
|
511426356c | ||
|
|
282dc9bef2 | ||
|
|
b364d16b3d | ||
|
|
0a4a09479a |
@@ -1,3 +1,4 @@
|
||||
local rnd=math.random
|
||||
local find=string.find
|
||||
local rem=table.remove
|
||||
local next,type=next,type
|
||||
@@ -58,7 +59,6 @@ function TABLE.coverR(new,old)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--For all things in new if same type in old, push to old
|
||||
function TABLE.update(new,old)
|
||||
for k,v in next,new do
|
||||
@@ -84,6 +84,19 @@ function TABLE.complete(new,old)
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------
|
||||
|
||||
--Pop & return random [1~#] of table
|
||||
function TABLE.popRandom(t)
|
||||
local l=#t
|
||||
if l>0 then
|
||||
local r=rnd(l)
|
||||
r,t[r]=t[r],t[l]
|
||||
t[l]=nil
|
||||
return r
|
||||
end
|
||||
end
|
||||
|
||||
--Remove [1~#] of table
|
||||
function TABLE.cut(G)
|
||||
for i=1,#G do
|
||||
@@ -98,6 +111,8 @@ function TABLE.clear(G)
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------
|
||||
|
||||
--Remove duplicated value of [1~#]
|
||||
function TABLE.trimDuplicate(org)
|
||||
local cache={}
|
||||
@@ -122,6 +137,7 @@ function TABLE.remDuplicate(org)
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------
|
||||
|
||||
--Reverse [1~#]
|
||||
function TABLE.reverse(org)
|
||||
|
||||
@@ -8,7 +8,7 @@ return{
|
||||
"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_en.lua",
|
||||
},
|
||||
{"Official Website",
|
||||
"official website homepage mainpage",
|
||||
"homepage mainpage",
|
||||
"help",
|
||||
"The official website of Techmino!\nYou can modify your profile on it",
|
||||
"http://home.techmino.org",
|
||||
@@ -69,7 +69,7 @@ return{
|
||||
"https://discord.gg/harddrop"
|
||||
},
|
||||
{"Mew",
|
||||
"mew tieba forum reddit",
|
||||
"tieba forum reddit",
|
||||
"org",
|
||||
"The Mew forum owned by Chinese Tetris Research Community, and was founded in the second half of 2021. Mew is a Chinese social media that can be thought of a combination of Discord and Reddit, with many channels in a big community. Users can chat in the channels or submit posts to the channel. Mew also has a function called \"Library\" which allows storing documentations systematically. The Tetris Mew forum is currently under construction and not too much contents are available (2/Nov/2021).",
|
||||
"https://mew.fun/n/tetris",
|
||||
@@ -100,13 +100,13 @@ return{
|
||||
|
||||
--Games
|
||||
{"TTT",
|
||||
"ttt tetris trainer tres bien",
|
||||
"tetris trainer tres bien",
|
||||
"game",
|
||||
"Tetris Trainer Très-Bien. A hands-on tutorial of advanced techniques in modern Tetris.\nRecommended for players that can complete a 40-line Sprint with all Tetris line clears and no hold.\nCovered topics include T-Spin, finesse, SRS, and some battle setups.\nLink in Japanese.",
|
||||
"http://taninkona.web.fc2.com/ttt/",
|
||||
},
|
||||
{"TTPC",
|
||||
"ttpc tetris perfect clear challenge",
|
||||
"tetris perfect clear challenge",
|
||||
"game",
|
||||
"Tetris Perfect Clear Challenge. The PC opener tutorial for SRS and 7-Bag.\nRecommended for players that have completed TTT. You need to know SRS to play this.\nIncludes only the basic PC opener.\nLink translated to Simplified Chinese; originally in Japanese.",
|
||||
"http://teatube.ltd/ttpc",
|
||||
@@ -142,7 +142,7 @@ return{
|
||||
"https://tetralegends.app",
|
||||
},
|
||||
{"Ascension",
|
||||
"asc ascension ASC",
|
||||
"asc ASC",
|
||||
"game",
|
||||
"Browser Game | Singleplayer/Multiplayer\nOr ASC for short. It uses its own rotation system (also called ASC) and has many single-player modes. Battle modes are currently under beta testing (15/Dec/2021). The Stack mode in this game was also inspired by Ascension. ",
|
||||
"https://asc.winternebs.com",
|
||||
@@ -215,7 +215,7 @@ return{
|
||||
},
|
||||
|
||||
{"TGM",
|
||||
"tgm tetrisgrandmaster tetristhegrandmaster",
|
||||
"tetrisgrandmaster tetristhegrandmaster",
|
||||
"game",
|
||||
"Arcade | Singleplayer/Local Multiplayer\nTetris The Grand Master, an arcade Tetris series. Titles like S13 and GM come from this series.\n\nTGM3 is the most well-known game in this series.",
|
||||
},
|
||||
@@ -299,7 +299,7 @@ return{
|
||||
"iOS/Android | Singleplayer\nThe mobile Tetris game from N3TWORK Inc. It has a 3-minute ultra mode, a marathon mode and a 100-player Royale mode.\n[The UI is great but its controls are not so good.]",
|
||||
},
|
||||
{"Tetris Beat",
|
||||
"tetris beat n3twork rhythm",
|
||||
"n3twork rhythm",
|
||||
"game",
|
||||
"iOS | Singleplayer\nA mobile Tetris game from N3TWORK. It has a \"Beat\" mode besides the Marathon mode, but in this game you only have drop the blocks in rhythm with the BGM.\n[The effects are very heavy and the controls are not so good.]"
|
||||
},
|
||||
@@ -327,57 +327,57 @@ return{
|
||||
"Translator's note on those per-minute and per-second values\n\nNot all of them are commonly used in the communities, and not all terms mean the same thing across all contexts. They mostly apply to Techmino."
|
||||
},
|
||||
{"LPM",
|
||||
"lpm linesperminute speed",
|
||||
"linesperminute speed",
|
||||
"term",
|
||||
"Lines per minute\n\tReflects playing speed of a player.\nDifferent games calculate LPM differently. For example, Tetris Online calculates its LPM using PPS (see below), where 1PPS=24LPM. This basically ignores clearing garbage lines and makes it different from its literal meaning. In Techmino, this converted LPM value is marked \"L'PM\".",
|
||||
},
|
||||
{"PPS",
|
||||
"pps piecespersecond speed",
|
||||
"piecespersecond speed",
|
||||
"term",
|
||||
"Pieces per second\n\tReflects playing speed of a player.",
|
||||
},
|
||||
{"BPM",
|
||||
"bpm blocksperminute piecesperminute speed",
|
||||
"blocksperminute piecesperminute speed",
|
||||
"term",
|
||||
"Blocks per minute\n\tReflects playing speed of a player.\nAlso called PPM (to avoid confusing with the musical term).",
|
||||
},
|
||||
{"KPM",
|
||||
"kpm keysperminute keypressesperminute",
|
||||
"keysperminute keypressesperminute",
|
||||
"term",
|
||||
"Keypresses per minute\n\tReflects how fast the player presses keys or buttons.",
|
||||
},
|
||||
{"KPP",
|
||||
"kpp keysperpiece keypressesperpiece",
|
||||
"keysperpiece keypressesperpiece",
|
||||
"term",
|
||||
"Keypresses per piece\n\tReflects how efficient the player is with the controls. Reduce this number by learning to finesse.",
|
||||
},
|
||||
{"APM",
|
||||
"apm attackperminute",
|
||||
"attackperminute",
|
||||
"term",
|
||||
"Attack per minute\n\tReflects offensive power of a player.\nIn Techmino, the concept of \"attack\" sometimes includes the fractional lines of an attack. Since sending garbage rounds down before sending, this value can be higher than your actual attack power.",
|
||||
},
|
||||
{"SPM",
|
||||
"spm linessentperminute",
|
||||
"linessentperminute",
|
||||
"term",
|
||||
"[lines] Sent per minute\n\tReflects *actual* offensive power of a player. (does not count lines used for cancelling garbage in buffer.)",
|
||||
},
|
||||
{"RPM",
|
||||
"rpm receive jieshou",
|
||||
"receive jieshou",
|
||||
"term",
|
||||
"[lines] Receive per Minute\n\tReflects pressure applied to a player.",
|
||||
},
|
||||
{"DPM",
|
||||
"dpm digperminute defendperminute",
|
||||
"digperminute defendperminute",
|
||||
"term",
|
||||
"Dig/Defend per minute\n\tSometimes can reflect how well a player can survive garbage.",
|
||||
},
|
||||
{"ADPM",
|
||||
"adpm attackdigperminute vs",
|
||||
"attackdigperminute vs",
|
||||
"term",
|
||||
"Attack&Dig per minute\n\tUsed to compare skill differences between the two players within one match; slightly more accurate than APM.\n\"vs\" in TETR.IO is Atk+Dig per 100s",
|
||||
},
|
||||
{"APL",
|
||||
"apl attackperline efficiency",
|
||||
"attackperline efficiency",
|
||||
"term",
|
||||
"Attack per line (cleared)\n\tAlso known as \"efficiency\"; reflects the per-line efficiency of attacks. For example, Tetrises and T-spins have higher efficiency than doubles and triples.",
|
||||
},
|
||||
@@ -413,7 +413,7 @@ return{
|
||||
"Formerly known as Perfect Clear (PC). That is also still the term preferred by the communities and used in Techmino.\nClear all minoes on the field.",
|
||||
},
|
||||
{"HPC",
|
||||
"hpc hc clear halfperfectclear",
|
||||
"hc clear halfperfectclear",
|
||||
"term",
|
||||
"*Techmino-exclusive*\nHalf Perfect Clear\nExtension of an All Clear. Should a line clear resemble an All Clear when ignoring lines below the clear, the clear is a Half Perfect Clear, and sends a small extra amount of attack.",
|
||||
},
|
||||
@@ -439,27 +439,27 @@ return{
|
||||
"A spin performed using the T Tetromino.\nIn modern official games, T-Spins are detected using the 3-corner rule, i.e. if at least three of the four cells diagonal to the rotation center is occupied by minoes, it is considered as a T-Spin. Some games have extra rules to determine a T-Spin as a Mini T-Spin instead, which has reduced attacks/scores.",
|
||||
},
|
||||
{"TSS",
|
||||
"tss t1 tspinsingle",
|
||||
"t1 tspinsingle",
|
||||
"term",
|
||||
"T-Spin Single\nClear 1 line with a T-Spin.",
|
||||
},
|
||||
{"TSD",
|
||||
"tsd t2 tspindouble",
|
||||
"t2 tspindouble",
|
||||
"term",
|
||||
"T-Spin Double\nClear 2 lines with a T-Spin.",
|
||||
},
|
||||
{"TST",
|
||||
"tst t3 tspintriple",
|
||||
"t3 tspintriple",
|
||||
"term",
|
||||
"T-Spin Triple\nClear 3 lines with a T-Spin.",
|
||||
},
|
||||
{"MTSS",
|
||||
"mtss minitspinsingle tsms tspinminisingle",
|
||||
"minitspinsingle tsms tspinminisingle",
|
||||
"term",
|
||||
"Mini T-Spin Single\nFormerly known as T-Spin Mini Single (TSMS).\nClear 1 line with a Mini T-Spin.\nDifferent games have different ways to determine whether a T-Spin is a Mini.",
|
||||
},
|
||||
{"MTSD",
|
||||
"mtsd minitspindouble tsmd tspinminidouble",
|
||||
"minitspindouble tsmd tspinminidouble",
|
||||
"term",
|
||||
"Mini T-Spin Double\nFormerly known as T-Spin Mini Double (TSMD).\nClear 2 lines with a Mini T-Spin.\nDifferent games have different ways to determine whether a T-Spin is a Mini.\nIn addition, different games have different behaviors when clearing a Mini T-Spin Double: some games credit this move correctly, and some games use a different displayed text because they never programmed this in.",
|
||||
},
|
||||
@@ -474,12 +474,12 @@ return{
|
||||
"Systems that determine how the pieces rotate.\n\nIn modern Tetris games, tetrominoes can rotate on a specfic rotation center (but this may be absent in some games). If the minoes overlap with the walls or the field, the system would attempt to perform some offsets (a process known as \"wall-kicking\"). Wall kicks allow minoes to move into in specific-shaped holes.",
|
||||
},
|
||||
{"Orientation",
|
||||
"orientation direction 0r2l 02 20 rl lr",
|
||||
"direction 0r2l 02 20 rl lr",
|
||||
"term",
|
||||
"In SRS and SRS-like rotation systems, there are standard notations describing the orientations of the minoes:\n 0 for Original orientation; R for right, or 90° clockwise; L for left, or 90° counterclockwise; 2 for spin twice (180°). For example, 0→L means rotating counterclockwise from original orientation (0) to L; 0→R means rotating clockwise from original orientation (0) to R; 2→R means rotating counterclockwise from 2 (180°) to R.",
|
||||
},
|
||||
{"ARS",
|
||||
"ars arikrotationsystem atarirotationsystem",
|
||||
"arikrotationsystem atarirotationsystem",
|
||||
"term",
|
||||
"It can refer to two things:\nArika Rotation System, which is used in Tetris: The Grand Master games.\nAtari Rotation System, which aligns pieces to the top-left when rotating.",
|
||||
},
|
||||
@@ -489,12 +489,12 @@ return{
|
||||
"Rotation system used in the Tetris clone Ascension. All pieces use the same two kick tables (one for CW, one for CCW), and the kick range is approximately ± 2 blocks on both axis.\n\nIn Techmino, ASC+ is a modified version of Ascension's rotation system, adding kicks for 180° spins.",
|
||||
},
|
||||
{"BRS",
|
||||
"brs bulletproofsoftware",
|
||||
"bulletproofsoftware",
|
||||
"term",
|
||||
"BPS rotation system, the rotation system used in Tetris games by Bullet-Proof Software.",
|
||||
},
|
||||
{"BiRS",
|
||||
"birs biasrs biasrotationsystem",
|
||||
"biasrs biasrotationsystem",
|
||||
"term",
|
||||
"*Techmino exclusive*\n\nBias Rotation System, Techmino's original rotation system based on XRS and SRS.\nIt sets an offset to the rotation if you hold left/right/soft drop when you rotate.\nIf rotation fails when downwards offset is applied, it tries again without the downwards offset.\nThen it tries without left/right offset.\nIf it fails, then the rotation will not occur.\n\nCompared to XRS, BiRS only uses a single kick table, making it easier to memorize; also keeps the climb-over-terrain feature of SRS.\n\nThe final kick offset's euclidean distance can't be larger than √5; if there is a horizontal offset, the final kick offset can't be in the opposite direction.",
|
||||
},
|
||||
@@ -504,22 +504,22 @@ return{
|
||||
"Cultris II rotation system, a rotation system used in the Tetris clone Cultris II.\nAll rotations and all pieces share the same kick table (left, right, down, down-left, down-right, left 2, right 2), with left priortizing over right.\n\nIn Techmino, C2sym is a modification to this rotation system that chooses whether to check left or right first depending on the piece and rotation.",
|
||||
},
|
||||
{"DRS",
|
||||
"drs dtetrotationsystem",
|
||||
"dtetrotationsystem",
|
||||
"term",
|
||||
"DTET Rotation System\nThe rotation system used in DTET.",
|
||||
},
|
||||
{"NRS",
|
||||
"nrs nintendorotationsystem",
|
||||
"nintendorotationsystem",
|
||||
"term",
|
||||
"Nintendo Rotation System\nThe rotation system used in the Tetris games on the NES and Game Boy.\nIt has two mirrored versions; the left-handed version is used on Game Boy, and the right-handed version on the NES.",
|
||||
},
|
||||
{"SRS",
|
||||
"srs superrotationsystem",
|
||||
"superrotationsystem",
|
||||
"term",
|
||||
"Super Rotation System, the most widely used rotation system by modern Tetris games, and is the foundation of many self-made rotation systems. There are four orientations for each tetromino, and they can rotate clockwise or counterclockwise (But without 180° rotations). Should a Tetromino overlap with the wall, floor or other minoes on the field after rotation, a few offset positions will be checked, allowing pieces to kick off walls and floors. You can look up the details of the wall kick table on Tetris Wiki.",
|
||||
},
|
||||
{"TRS",
|
||||
"trs techminorotationsystem",
|
||||
"techminorotationsystem",
|
||||
"term",
|
||||
"*Techmino-exclusive*\nTechmino Rotation System\nThe rotation system used in Techmino, based on SRS.\nIt includes fixes on common cases where S/Z are locked from rotating and some extra useful kicks. Each pentomino also has a kick table roughly based on SRS logic.",
|
||||
},
|
||||
@@ -535,7 +535,7 @@ return{
|
||||
"Clearing 2 or more technical line clears (Spins and Tetrises) in a row (without introducing ordinary line clears) gives extra attack power.\nUnlike combos, placing pieces that do not clear lines does not affect Back to Back.",
|
||||
},
|
||||
{"B2B2B",
|
||||
"b2b2b b3b",
|
||||
"b3b",
|
||||
"term",
|
||||
"*Techmino-exclusive*\nClearing many Back to Backs to fill the Back to Back gauge, and eventually you will be able to perform a Back to Back to Back, giving more bonus attack. A.k.a. B3B.",
|
||||
},
|
||||
@@ -560,17 +560,17 @@ return{
|
||||
"Many modern Tetris games use the same color scheme for the tetrominoes. The colors are:\nZ–red, S–green, J–blue, L–orange, T–purple, O–yellow, and I–cyan.\n\nTechmino also uses this \"standard\" coloring for the tetrominoes.",
|
||||
},
|
||||
{"IRS",
|
||||
"irs initialrotationsystem",
|
||||
"initialrotationsystem",
|
||||
"term",
|
||||
"Initial Rotation System\nHolding a rotation key during spawn delay to spawn the piece pre-rotated. Sometimes prevents death.",
|
||||
},
|
||||
{"IHS",
|
||||
"ihs initialholdsystem",
|
||||
"initialholdsystem",
|
||||
"term",
|
||||
"Initial Hold System\nHolding the hold key during spawn delay to spawn the held piece (or Next piece in the Next queue if there is no held piece) instead of the current piece, and put the current piece in hold as if the player has performed the held before spawning. Sometimes prevents death.",
|
||||
},
|
||||
{"IMS",
|
||||
"ims initialmovesystem",
|
||||
"initialmovesystem",
|
||||
"term",
|
||||
"*Techmino-exclusive*\nInitial Movement System\nHolding a sideways movement key during spawn delay to spawn the piece one block off to the side. Sometimes prevents death.\nNote that DAS need to be full charged when new piece appear",
|
||||
},
|
||||
@@ -585,12 +585,12 @@ return{
|
||||
"Save your current piece for later use, and take out a previously held piece (or next piece in the next queue, if no piece was held) to place instead. You can only perform this once per piece in most cases.\n\nTechmino Exclusive: Techmino has a \"In-place hold\" feature. When enabled, pieces that spawn from the Hold queue will spawn at where your currently-controlling piece is, instead of at the top of the matrix.",
|
||||
},
|
||||
{"Swap",
|
||||
"swap hold",
|
||||
"hold",
|
||||
"term",
|
||||
"Like *hold*, swap your current piece and the first piece of next queue. You can also only perform this once per piece in most cases.",
|
||||
},
|
||||
{"Deepdrop",
|
||||
"deepdrop shenjiang",
|
||||
"shenjiang",
|
||||
"term",
|
||||
"*Techmino exclusive*\n\nA special function that allows minoes to teleport through the wall to enter a hole. When the mino hits the bottom, pressing the soft drop button again will enable the deep drop. if there is a hole that fits the shape of the mino, it will teleport into this hole immediately/nThis mechanism is especially useful for AI because it allows AI to disregard the differences between different rotation systems.",
|
||||
},
|
||||
@@ -610,7 +610,7 @@ return{
|
||||
"A sub-(number) time means the time is below a certain milestone. The unit of the time is often left out and inferred, for example, a \"sub-30\" time for a 40-line Sprint means below 30 seconds, and a \"sub-15\" time for a 1000-line Sprint means below 15 minutes.",
|
||||
},
|
||||
{"Donation",
|
||||
"donation donate",
|
||||
"donate",
|
||||
"term",
|
||||
"A method of \"plugging\" up the Tetris hole to send a T-Spin. After the T-Spin, the Tetris hole is opened up once again to allow the continuation of Tetris or downstacking.\n--Harddrop wiki",
|
||||
},
|
||||
@@ -680,7 +680,7 @@ return{
|
||||
"The stacking method where you leave a 4-block-wide well in the middle.\nThe infamous combo setup that not only makes a lot of combos but also abuses the death conditions and won't die even if you receive some garbage. This technique is often disliked by players due to how unbalanced it is.",
|
||||
},
|
||||
{"Residual",
|
||||
"residual c4w s4w",
|
||||
"c4w s4w",
|
||||
"term",
|
||||
"Refers to how many blocks to leave in the well of a 4-wide combo setup. The most common are 3-residual and 6-residual.\n3-residual has fewer variations and is easier to learn, with a pretty good chance of success, and it's pretty useful in combat.\n6-residual has more variables and is harder, but can be more consistent if you do it well. It can also be used for special challenges like getting 100 combos in an infinite 4-wide challenge.",
|
||||
},
|
||||
@@ -690,7 +690,7 @@ return{
|
||||
"A way of stacking where you have a 6-block-wide stack on the left, and a 3-block-wide stack on the right.\nFor a skilled player, this method of stacking might reduce the keypresses needed for stacking, and is a popular Sprint stacking method. The reason why it works has to do with the fact that pieces spawn with a bias to the left.",
|
||||
},
|
||||
{"Freestyle",
|
||||
"freestyle ziyou",
|
||||
"ziyou",
|
||||
"term",
|
||||
"This term is usually used in 20TSDs. Freestyle means finishing 20 TSDs without using static stacking modes. Freestyle 20TSDs is more difficult than static tsacking modes such as LST, and the performance can represent the T-spin skills a player has in battles.",
|
||||
},
|
||||
@@ -700,12 +700,12 @@ return{
|
||||
"Modern Tetris games have three different conditions in which the player tops out:\n1. Block out: when a piece spawned overlaps with the existing blocks in the field;\n2. Lock out: when a piece locks entirely above the skyline;\n3. Top out: when the stack exceeds 40 lines in height (often due to incoming garbage).\nTechmino does not check for locking out and topping out.",
|
||||
},
|
||||
{"Buffer zone",
|
||||
"buffer zone above super invisible disappear",
|
||||
"above super invisible disappear",
|
||||
"term",
|
||||
"Refers to 21st-40th lines above the visible field. Because the blocks in the field could go over the visible field (this usually happens when multiple garbage lines come in) so the buffer zone was created so those blocks could go back to the field when garbage lines are cleared. Also, the buffer zone is usually located at 21st-40th lines because this is sufficient for most cases. Refer to \"Vanish Zone\" to learn more.",
|
||||
},
|
||||
{"Vanish zone",
|
||||
"vanish zone disappear gone cut die",
|
||||
"disappear gone cut die",
|
||||
"term",
|
||||
"Refers to the area located above the 40th line. This is usually realised by combining c4w and multiple garbage lines. In many games, when any block reaches the vanish zone, the game is terminated immediately.\nHowever, this area can have different behaviours in different games. Some games are flawed because the game could crash when the blocks enter the vanish zone (e.g. Tetris Online). Wierd behaviours could also happen when the blocks enter the vanish zone (you can refer to this video, click on the globe icon to open the link).\n\nFurthermore, the vanish zone in Jstris is located above the 22nd line, and any blocks locked above the 21st line will disappear. ",
|
||||
"https://youtu.be/z4WtWISkrdU",
|
||||
@@ -716,7 +716,7 @@ return{
|
||||
"Falling speed is often described in terms of \"G\", i.e. how many lines the blocks fall in one frame (usually assuming 60 fps).\nG is a relatively large unit. The speed of Lv 1 in a regular Marathon (one second per line) is 1/60 G, and 1G is about Lv 13 speed. The highest speed of modern Tetris is 20G because the field height is 20 lines. In fact, the real meaning of 20G is \"Infinite falling speed\", and even when the field height is more than 20 lines, 20G modes force all the blocks to fall down to the bottom instantly. You can learn more about 20G at the \"20G\" entry.",
|
||||
},
|
||||
{"20G",
|
||||
"20g gravity instant",
|
||||
"gravity instant",
|
||||
"term",
|
||||
"The fastest falling speed of modern Tetris. In 20G modes, pieces appear instantly on the bottom of the field without the actual process of \"falling down\". This sometimes also limits a piece's sideways movements, as it is not always possible to make a piece climb over a bump or out of a well in 20G. You can learn more at the unit \"G\" at the \"falling speed\" entry. ",
|
||||
},
|
||||
@@ -726,17 +726,17 @@ return{
|
||||
"The delay between block touching the ground and locking down (i.e. can no longer be controlled, and the next piece spawns).\nModern Tetris games often have forgiving lockdown delay mechanics where you can reset this delay by moving or rotating (up to 15 times), and you can sometimes stall for time by doing this. Classic Tetris games often have a far less forgiving lockdown delay.",
|
||||
},
|
||||
{"ARE",
|
||||
"are spawn appearance delay",
|
||||
"spawn appearance delay",
|
||||
"term",
|
||||
"Sometimes called the Entry Delay. ARE refers to the delay between the lockdown of one piece and the spawn of another piece.",
|
||||
},
|
||||
{"Line ARE",
|
||||
"line are appearance delay",
|
||||
"appearance delay",
|
||||
"term",
|
||||
"The delay between the start of a line clear animation to the spawn of the next piece.",
|
||||
},
|
||||
{"Death ARE",
|
||||
"death are die delay",
|
||||
"die delay",
|
||||
"term",
|
||||
"(Techmino exclusive) When the spawn location of the next piece is blocked by an existing block in the field, a delay will be added in addition to the spawn ARE, and this delay is referred to as the death ARE. This mechanism can be used along with IHS and IRS to prevent death. \nOriginal idea by NOT_A_ROBOT",
|
||||
},
|
||||
@@ -781,7 +781,7 @@ return{
|
||||
"Techmino exclusive: this feature is designed to prevent mis-harddropping from pressing hard drop key shortly after the previous piece is naturally locked down.\nHard drop key can be disabled for a few frames (depending on the settings) after a natural lockdown.\n\nOther games may have a similar feature but may function differently.",
|
||||
},
|
||||
{"SDF",
|
||||
"sdf softdropfactor",
|
||||
"softdropfactor",
|
||||
"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.",
|
||||
},
|
||||
@@ -821,7 +821,7 @@ return{
|
||||
"Another method of fast-tapping in high-gravity (around 1G) modes (with slow DAS/ARR setting).\nWhen you perform rolling, you fix the position of one hand and the controller, and then tap the back of the controller with fingers on your other hand repeatedly. This method allows even faster moving speeds than hypertapping (see \"Hypertapping\" for more)and requires much less effort.\nThis method was first discovered by Cheez-fish and he has once achieved a tapping speed of more than 20 Hz.",
|
||||
},
|
||||
{"Passthrough",
|
||||
"passthrough pingthrough",
|
||||
"pingthrough",
|
||||
"term",
|
||||
"",--TODO
|
||||
},
|
||||
@@ -896,7 +896,7 @@ return{
|
||||
"A Tetris bot. Originally built for Puyo Puyo Tetris, thus can be less powerful on Techmino.",
|
||||
},
|
||||
{"ZZZbot",
|
||||
"zzzbot ai bot",
|
||||
"ai bot",
|
||||
"term",
|
||||
"A Tetris bot. Built by the Chinese Tetris player 奏之章 (Zou Zhi Zhang) and has decent performance in many games",
|
||||
},
|
||||
@@ -914,7 +914,7 @@ return{
|
||||
HDsearch.."dt",
|
||||
},
|
||||
{"DTPC",
|
||||
"dtpc dtcannon doubletriplecannon",
|
||||
"dtcannon doubletriplecannon",
|
||||
"setup",
|
||||
"A follow-up of the DT Cannon that ends with an All Clear"..HDwiki,
|
||||
HDsearch.."dt",
|
||||
@@ -926,7 +926,7 @@ return{
|
||||
HDsearch.."bt_cannon",
|
||||
},
|
||||
{"BTPC",
|
||||
"btpc btcannon betacannon",
|
||||
"btcannon betacannon",
|
||||
"setup",
|
||||
"A follow-up of the BT Cannon that ends with an All Clear."..HDwiki,
|
||||
HDsearch.."bt_cannon",
|
||||
@@ -1020,8 +1020,8 @@ return{
|
||||
{"LST stacking",
|
||||
"lst",
|
||||
"pattern",
|
||||
"An infinite T-Spin Double setup"..HDwiki,
|
||||
HDsearch.."st_stacking",
|
||||
"An infinite T-Spin Double setup",
|
||||
"https://four.lol/stacking/lst",
|
||||
},
|
||||
{"Hamburger",
|
||||
"hamburger",
|
||||
@@ -1058,7 +1058,7 @@ return{
|
||||
|
||||
--Savedata managing
|
||||
{"Console",
|
||||
"console cmd commamd minglinghang kongzhitai terminal",
|
||||
"cmd commamd minglinghang kongzhitai terminal",
|
||||
"command",
|
||||
"Techmino has a console that enables debugging/advanced features.\nTo access the console, repeatedly tap (or click) the Techmino logo or press the C key on the keyboard on the main menu.\n\nCareless actions in the console may result in corrupting or losing saved data. Proceed at your own risk.",
|
||||
},
|
||||
@@ -1100,12 +1100,12 @@ return{
|
||||
|
||||
--English
|
||||
{"SFX",
|
||||
"sfx soundeffects",
|
||||
"soundeffects",
|
||||
"english",
|
||||
"Acronym for \"Sound Effects\".",
|
||||
},
|
||||
{"BGM",
|
||||
"bgm backgroundmusic",
|
||||
"backgroundmusic",
|
||||
"english",
|
||||
"Acronym for \"Background Music\".",
|
||||
},
|
||||
@@ -1122,7 +1122,7 @@ return{
|
||||
|
||||
--Famous
|
||||
{"Hebomai",
|
||||
"hebomai hbm",
|
||||
"hbm",
|
||||
"name",
|
||||
"One of the top players.\nOnce Beat Wu Songhao (a Chinese player) on TV.",
|
||||
},
|
||||
@@ -1132,52 +1132,52 @@ return{
|
||||
"(あめみや たいよう)\n\nOne of the top players.\nWon champion on a game in Puyo Puyo Tetris's Swap mode.",
|
||||
},
|
||||
{"Ajanba",
|
||||
"ajanba ajb",
|
||||
"ajb",
|
||||
"name",
|
||||
"One of the top players.\nWon champion of JsCup.",
|
||||
},
|
||||
{"Blink",
|
||||
"blink",
|
||||
"",
|
||||
"name",
|
||||
"One of the top players.\nRuns the Tetris community, Hard Drop.",
|
||||
},
|
||||
{"Doremy",
|
||||
"doremy 123",
|
||||
"123",
|
||||
"name",
|
||||
"One of the top players.\nAmemiya once said he was the second-best player in the world.",
|
||||
},
|
||||
{"Firestorm",
|
||||
"firestorm fst",
|
||||
"fst",
|
||||
"name",
|
||||
"One of the top players.\nWon champion of JsCup.",
|
||||
},
|
||||
{"Furea",
|
||||
"furea fuleiya jk",
|
||||
"flare fuleiya jk",
|
||||
"name",
|
||||
"(ふれあ)\n\nOne of the top players.\nWorld record holder of Puyo Puyo Tetris's Ultra mode.",
|
||||
},
|
||||
{"Iljain",
|
||||
"iljain yijianlian",
|
||||
"yijianlian",
|
||||
"name",
|
||||
"One of the top players.\nAchieved Rank 1 in Cultris II.",
|
||||
},
|
||||
{"Jonas",
|
||||
"jonas",
|
||||
"",
|
||||
"name",
|
||||
"(1981-2021) One of the top players in Classic Tetris.\nFour-times-in-a-row champion of CTWC.",
|
||||
},
|
||||
{"Joseph",
|
||||
"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",
|
||||
"kazu mdking",
|
||||
"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",
|
||||
"microblizz",
|
||||
"",
|
||||
"name",
|
||||
"One of the top players.\nFormer world record holder for Sprint.",
|
||||
},
|
||||
@@ -1192,7 +1192,7 @@ return{
|
||||
"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",
|
||||
"yakine heshui",
|
||||
"",
|
||||
"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).",
|
||||
},
|
||||
@@ -1202,7 +1202,7 @@ return{
|
||||
"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 tetrodictionary littlez",
|
||||
"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.",
|
||||
},
|
||||
@@ -1214,25 +1214,25 @@ return{
|
||||
},
|
||||
|
||||
{"Circu1ation",
|
||||
"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",
|
||||
"farteryhr",
|
||||
"",
|
||||
"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",
|
||||
"teatube ttb chaguan chanaiye sifangchaye 022",
|
||||
"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",
|
||||
"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",
|
||||
@@ -1243,7 +1243,7 @@ return{
|
||||
"Tetris Research community member.\nMain organizer for competitions in the community.",
|
||||
},
|
||||
{"Flyz",
|
||||
"flyz fxg",
|
||||
"fxg",
|
||||
"name",
|
||||
"Tetris Research community member.\nA technical player.",
|
||||
"https://space.bilibili.com/787096",
|
||||
@@ -1260,12 +1260,12 @@ return{
|
||||
"(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",
|
||||
"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",
|
||||
},
|
||||
-- {"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",
|
||||
@@ -1291,31 +1291,31 @@ return{
|
||||
"https://space.bilibili.com/1471400",
|
||||
},
|
||||
{"Mifu",
|
||||
"mifu swl nanmaomao",
|
||||
"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",
|
||||
"zxc thtsod flag ctf",
|
||||
"thtsod flag ctf",
|
||||
"name",
|
||||
"Also known as ThTsOd.\nTetris Research community member.\nA technical player.",
|
||||
"https://space.bilibili.com/4610502",
|
||||
},
|
||||
{"Tinko",
|
||||
"tinko",
|
||||
"",
|
||||
"name",
|
||||
"Tetris Research community member.\nA technical player.",
|
||||
"https://tinko.moe",
|
||||
},
|
||||
{"T0722",
|
||||
"0722",
|
||||
"",
|
||||
"name",
|
||||
"Tetris Research community member.\nMusic Composer.",
|
||||
"https://space.bilibili.com/30452985",
|
||||
},
|
||||
{"Diao",
|
||||
"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",
|
||||
@@ -1327,7 +1327,7 @@ return{
|
||||
"https://space.bilibili.com/403250559",
|
||||
},
|
||||
{"Particle_G",
|
||||
"particleg pg",
|
||||
"pg",
|
||||
"name",
|
||||
"Tetris Research community member.\nSprint 59.4 seconds\nThe developer of Techmino backend",
|
||||
"https://space.bilibili.com/3306106",
|
||||
@@ -1339,13 +1339,13 @@ return{
|
||||
"https://space.bilibili.com/263909369",
|
||||
},
|
||||
{"子心Koishi",
|
||||
"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",
|
||||
"ditoly icrem kuimei jk",
|
||||
"icrem kuimei jk",
|
||||
"name",
|
||||
"Tetris Research community member. The developer of Nanamino.",
|
||||
"https://space.bilibili.com/13014410",
|
||||
@@ -1356,7 +1356,7 @@ return{
|
||||
"(Lán Lǜ)\n\nTetris Research community member.\nParticipant of $1",--Techmino backend
|
||||
},
|
||||
{"喵田弥夜Miya",
|
||||
"miya miaotianmiye",
|
||||
"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
@@ -1,5 +1,6 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
fallback='en',
|
||||
loadText={
|
||||
loadSFX="Loading Sound Effects",
|
||||
loadSample="Loading Instrument Samples",
|
||||
@@ -18,7 +19,7 @@ return{
|
||||
playedTooMuch="かなり長くプレイしています! Techminoは楽しいですが、休憩を忘れずに!",
|
||||
settingWarn="注意: 通常ではない設定に変更しました!",
|
||||
|
||||
atkModeName={"ランダム","バッジねらい","ととめうち","カウンター"},
|
||||
atkModeName={"ランダム","バッジ狙い","ととめうち","カウンター"},
|
||||
royale_remain="残り $1 人",
|
||||
powerUp={[0]="+000%","+025%","+050%","+075%","+100%"},
|
||||
cmb={nil,"1 REN","2 REN","3 REN","4 REN","5 REN","6 REN","7 REN","8 REN","9 REN","10 REN!","11 REN!","12 REN!","13 REN!","14 REN!!","15 REN!!","16 REN!!","17 REN!!!","18 REN!!!","19 REN!!!","MEGAREN"},
|
||||
@@ -44,7 +45,7 @@ return{
|
||||
rpm="RPM",tsd="TSD",
|
||||
grade="Grade",techrash="Techrash",
|
||||
wave="Wave",nextWave="Next",
|
||||
combo="Combo",maxcmb="Max Combo",
|
||||
combo="REN",maxcmb="Max REN",
|
||||
pc="Perfect Clear",ko="KOs",
|
||||
|
||||
win="Win!",
|
||||
@@ -74,10 +75,10 @@ return{
|
||||
loadError_other="'$1'の読み込みに失敗: $2",
|
||||
loadError_unknown="'$1'の読み込みに失敗: 理由不明",
|
||||
|
||||
saveError_duplicate="'$1'の保存に失敗:既に同じ名前のファイルがあります",
|
||||
saveError_encode="'$1'の保存に失敗:エンコードエラー",
|
||||
saveError_duplicate="'$1'の保存に失敗: 既に同じ名前のファイルがあります",
|
||||
saveError_encode="'$1'の保存に失敗: エンコードエラー",
|
||||
saveError_other="'$1'の保存に失敗: $2",
|
||||
saveError_unknown="'$1'の読み込みに失敗:理由不明",
|
||||
saveError_unknown="'$1'の読み込みに失敗: 理由不明",
|
||||
|
||||
copyDone="コピーしました!",
|
||||
saveDone="データを保存しました!",
|
||||
@@ -131,8 +132,8 @@ return{
|
||||
joinRoom="が入室しました",
|
||||
leaveRoom="が退出しました",
|
||||
ready="Ready",
|
||||
connStream="接続中...",
|
||||
waitStream="待機中...",
|
||||
connStream="接続中……",
|
||||
waitStream="待機中……",
|
||||
spectating="Spectating",
|
||||
chatRemain="Online",
|
||||
chatStart="------チャットの先頭------",
|
||||
@@ -143,7 +144,7 @@ return{
|
||||
customBGloadFailed="サポートされていないフォーマットのファイルです",
|
||||
|
||||
errorMsg="問題が発生しました、エラーログを開発者に送り、再起動してください",
|
||||
tryAnotherBuild="[Invalid UTF-8]使用しているOSがWindowsであればTechmino-win32かTechmino-win64をダウンロードしてください (現在使用しているものは違うものです)",
|
||||
tryAnotherBuild="[Invalid UTF-8]使用しているOSがMicrosoft WindowsであればTechmino-win32かTechmino-win64をダウンロードしてください (現在使用しているものは違うものです)",
|
||||
|
||||
modInstruction="Modを選択してください!\nModはゲームの中身を変えます\nしかしゲームが破損することもあります\nModを使用した場合スコアは保存されません",
|
||||
modInfo={
|
||||
@@ -163,7 +164,7 @@ return{
|
||||
life="Life\n残機数を変更します",
|
||||
forceB2B="B2B Only\nB2Bが途切れるとゲームオーバーです",
|
||||
forceFinesse="Finesse Only\n最適化を失敗するとゲームオーバーです",
|
||||
tele="Teleport\nDAS:0,ARR:0になります",
|
||||
tele="Teleport\nDAS: 0, ARR: 0になります",
|
||||
noRotation="No Rotation\n回転出来なくなります",
|
||||
noMove="No Movement\n左右移動が出来なくなります",
|
||||
customSeq="Randomizer\nミノの出現法則を変更します",
|
||||
@@ -195,10 +196,10 @@ return{
|
||||
"Eff/Dig Eff:",
|
||||
"B2B/B3B:",
|
||||
"PC/HPC:",
|
||||
"最適化 ミス/Rate:",
|
||||
"最適化ミス/Rate:",
|
||||
},
|
||||
aboutTexts={
|
||||
"これは\"ただの\"落ちものパズルゲームです。本当ですよ",
|
||||
"これは“ただの”落ちものパズルゲームです。本当ですよ",
|
||||
"Inspired by C2/IO/JS/WWC/KOS etc.",
|
||||
"",
|
||||
"Powered by LÖVE",
|
||||
@@ -414,7 +415,7 @@ return{
|
||||
cancel="Cancel ready",
|
||||
},
|
||||
setting_game={
|
||||
title="game設定",
|
||||
title="Game設定",
|
||||
graphic="←Video",
|
||||
sound="Audio→",
|
||||
style="スタイル",
|
||||
@@ -433,14 +434,14 @@ return{
|
||||
simpMode="シンプルなホーム画面",
|
||||
},
|
||||
setting_video={
|
||||
title="video設定",
|
||||
title="Video設定",
|
||||
sound="←Audio",
|
||||
game="Game→",
|
||||
|
||||
block="操作ブロックの描画",
|
||||
smooth="滑らかな自然落下",
|
||||
upEdge="3D Block",
|
||||
bagLine="7bagの境界線",
|
||||
bagLine="7-Bagの境界線",
|
||||
|
||||
ghostType="ゴーストタイプ",
|
||||
ghost="ゴースト",
|
||||
@@ -747,7 +748,7 @@ return{
|
||||
setting="設定",
|
||||
vk="仮想キーレイアウト",
|
||||
|
||||
couldSave="クラウドに保存(注意:テスト段階)",
|
||||
couldSave="クラウドに保存 (注意:テスト段階)",
|
||||
notLogin="[クラウドにアクセス中]",
|
||||
upload="アップロード",
|
||||
download="ダウンロード",
|
||||
@@ -767,7 +768,7 @@ return{
|
||||
['dig_100l']= {"Dig", "100L", "100 Line下穴を消去"},
|
||||
['dig_400l']= {"Dig", "400L", "400 Line下穴を消去"},
|
||||
['drought_n']= {"Drought", "100L", "Iミノなし"},
|
||||
['drought_l']= {"Drought+", "100L", "W T F"},
|
||||
['drought_l']= {"Drought+", "100L", "W T F"},
|
||||
['marathon_n']= {"Marathon", "NORMAL", "速くなる中200 Lineのマラソン"},
|
||||
['marathon_h']= {"Marathon", "HARD", "速い中200 Lineのマラソン"},
|
||||
['solo_e']= {"Battle", "EASY", "AI討伐!"},
|
||||
@@ -824,9 +825,9 @@ return{
|
||||
['c4wtrain_l']= {"C4W Training", "LUNATIC", "無限コンボ"},
|
||||
['pctrain_n']= {"PC Training", "NORMAL", "パフェ練習"},
|
||||
['pctrain_l']= {"PC Training", "LUNATIC", "もっと難しいパフェ練習"},
|
||||
['pc_n']= {"PC Challenge", "NORMAL", "100Line以内にパフェをたくさん!"},
|
||||
['pc_h']= {"PC Challenge", "HARD", "100Line以内にパフェをたくさん!"},
|
||||
['pc_l']= {"PC Challenge", "LUNATIC", "100Line以内にパフェをたくさん!"},
|
||||
['pc_n']= {"PC Challenge", "NORMAL", "100 Line以内にパフェをたくさん!"},
|
||||
['pc_h']= {"PC Challenge", "HARD", "100 Line以内にパフェをたくさん!"},
|
||||
['pc_l']= {"PC Challenge", "LUNATIC", "100 Line以内にパフェをたくさん!"},
|
||||
['pc_inf']= {"Inf. PC Challenge", "", "できる限りたくさんのパフェを"},
|
||||
['tech_n']= {"Tech", "NORMAL", "B2Bを繋げ続けよう!"},
|
||||
['tech_n_plus']= {"Tech", "NORMAL+", "回転入れとパフェだけ"},
|
||||
@@ -843,9 +844,9 @@ return{
|
||||
['backfire_h']= {"Backfire", "HARD", "撃った火力が戻ってくる"},
|
||||
['backfire_l']= {"Backfire", "LUNATIC", "撃った火力が戻ってくる"},
|
||||
['backfire_u']= {"Backfire", "ULTIMATE", "撃った火力が戻ってくる"},
|
||||
['sprintAtk']= {"Sprint", "100 Attack", "100line送れ!"},
|
||||
['sprintEff']= {"Sprint", "Efficiency", "40lineの間にできるだけ火力を出せ!"},
|
||||
['zen']= {'Zen', "200", "時間制限なしで200Line消去"},
|
||||
['sprintAtk']= {"Sprint", "100 Attack", "100 Line送れ!"},
|
||||
['sprintEff']= {"Sprint", "Efficiency", "40 Lineの間にできるだけ火力を出せ!"},
|
||||
['zen']= {'Zen', "200", "時間制限なしで200 Line消去"},
|
||||
['ultra']= {'Ultra', "EXTRA", "2分間のスコアアタック"},
|
||||
['infinite']= {"Infinite", "", "ただのサンドボックス"},
|
||||
['infinite_dig']= {"Infinite: Dig", "", "掘れ掘れ掘れ"},
|
||||
@@ -857,8 +858,8 @@ return{
|
||||
getTip={refuseCopy=true,
|
||||
":pog:",
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
"\"Techmino.app\"は開発元が確認できないので開けません",
|
||||
"\"Techmino.app\"はあなたのマシンにダメージを与えます。ゴミ箱に破棄してください!!",
|
||||
"“Techmino.app”は、開発元を検証できないためあけません。",
|
||||
"“Techmino.app”を開くとコンピュータが破損します。ゴミ箱に入れる必要があります。",
|
||||
"\"TechminOS\"",
|
||||
"\\jezevec/\\jezevec/\\jezevec/",
|
||||
"\\osk/\\osk/\\osk/",
|
||||
@@ -880,10 +881,10 @@ getTip={refuseCopy=true,
|
||||
"低いフレームレートはあなたの快適さを奪います",
|
||||
"複数のHoldを使ってみよう!",
|
||||
"回転がブロックにどう作用しているか気づいたかい?",
|
||||
"回転なしで40Lineを完走できる?",
|
||||
"回転なしで40 Lineを完走できる?",
|
||||
"今、B2B2Bを見なかったかい?",
|
||||
"今日も全力で頑張ってください!!",
|
||||
"警告:プログラマーアート",
|
||||
"今日も全力で頑張ってください!",
|
||||
"警告: プログラマーアート",
|
||||
"君もGrand Masterだ!",
|
||||
"良いプレイには時間がかかります!",
|
||||
"全部で18種類のペントミノがあります",
|
||||
@@ -892,85 +893,85 @@ getTip={refuseCopy=true,
|
||||
"設定を確認しましょう!",
|
||||
"世界中の友達や敵ともうすぐ対戦できます",
|
||||
"私の心の中には確かにM@STERPIECEがあります",
|
||||
"素晴らしい!!しかし次はもっと良くなる…",
|
||||
"素晴らしい! しかし次はもっと良くなる……",
|
||||
"統計からセーブフォルダを開くことができます",
|
||||
"偉大なるシステムが間もなく来ます!",
|
||||
"現代的で親しみやすいこの積みを使いこなせるかい?",
|
||||
"小さな不具合で一日を無駄にしないように!",
|
||||
"一人用モードを遊ぼう!",
|
||||
"音楽が煩わしい?無音にすることができます",
|
||||
"英語のアプデ情報はdiscordで見られます",
|
||||
"左右移動なしで40Lineを完走できる?",
|
||||
"音楽が煩わしい? 無音にすることができます",
|
||||
"英語のアプデ情報はDiscordで見られます",
|
||||
"左右移動なしで40 Lineを完走できる?",
|
||||
"ALL SPIN!",
|
||||
"Am G F G",
|
||||
"B2B2B???",
|
||||
"B2B2B2Bなんて存在するの?",
|
||||
"B2B2B2Bは存在しません",
|
||||
"B2B2B2Bは可能?",
|
||||
"Back-to-Back Techrash, 10 Combo, PC!",
|
||||
"Back-to-Back Techrash, 10 REN, PC!",
|
||||
"BGMやSFXの制作に協力いただける方は大歓迎です!",
|
||||
"Bridge clearが間もなく実装されます!",
|
||||
"Color clearが間もなく実装されます!",
|
||||
"Bridge Clearが間もなく実装されます!",
|
||||
"Color Clearが間もなく実装されます!",
|
||||
"DASとARRを低くすると、速くなるけど操作が難しくなる",
|
||||
"Hello world!",
|
||||
"I[R,H,M]Sは君を救うだろう",
|
||||
"Hello World!",
|
||||
"I[R/H/M]Sは君を救うだろう",
|
||||
"I3とL3の2つだけはユニークなトリミノだ",
|
||||
"l-=-1",
|
||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||
"Lua No.1",
|
||||
"Mix clearは間もなく実装されます!",
|
||||
"Nspire-CXのTechmino:存在はしますが同じゲームではありません",
|
||||
"Mix Clearは間もなく実装されます!",
|
||||
"Nspire-CXのTechmino: 存在はしますが同じゲームではありません",
|
||||
"O-Spin Triple!",
|
||||
"OHHHHHHHHHHHHHH",
|
||||
"Powered by LÖVE",
|
||||
"Powered by Un..LÖVE",
|
||||
"Powered by Un…LÖVE",
|
||||
"Rank Xの条件は、上級者でも難しくなるように設定されています",
|
||||
"Split clearが間もなく実装されます!",
|
||||
"Split Clearが間もなく実装されます!",
|
||||
"sudo rm -rf /*",
|
||||
"Techmino rotation system(TRS)を楽しんで!",
|
||||
"Techmino楽しい!",
|
||||
"Techminoのdiscord鯖に入りましょう!",
|
||||
"Techminoは\"technique\"と\"tetromino\"を掛け合わせ造語です",
|
||||
"TechminoのDiscord鯖に入りましょう!",
|
||||
"Techminoは\"Technique\"と\"Tetromino\"を掛け合わせ造語です",
|
||||
"Techminoプレイヤーの未来はあなた達のものです",
|
||||
"TetroDictionary is now available in English.",
|
||||
"while(false)",
|
||||
"ZS JL T O I",
|
||||
"ゲーム内にはモード選択マップからじゃ入れない隠しモードがいくつかあります",
|
||||
"このゲームでは全てのspinに火力補正があります",
|
||||
"このゲームでは全てのSpinに火力補正があります",
|
||||
"このゲームのほとんどの楽曲はBeepboxを用いて作曲されました",
|
||||
"サーバーが不規則に落ちます",
|
||||
"サーバーが不規則にダウンします",
|
||||
"スタッフロールの背景に流れている名前はスポンサーの名前です",
|
||||
"タブレットやスマホでもキーボードを接続できます(IOSにはそんな機能ないと思うけど)",
|
||||
"なにかアイデアがありますか?Discordで提案してください!",
|
||||
"タブレットやスマホでもキーボードを接続できます(iOSにはそんな機能ないと思うけど)",
|
||||
"なにかアイデアがありますか? Discordで提案してください!",
|
||||
"なんだこの安っぽいUIと音楽は、呆れた",
|
||||
"バグを見つけた?Githubのissueに報告しよう!",
|
||||
"バグを見つけた?GitHubのIssueに報告しよう!",
|
||||
"バグを直接見ないで!",
|
||||
"バトルロワイアルモード実装!無料で遊べる落ちものパズルゲーム!!",
|
||||
"バトルロワイアルモード実装! 無料で遊べる落ちものパズルゲーム!",
|
||||
"ピースごとに出現する方向を変えられます",
|
||||
"フレームレートを上げればより快適に",
|
||||
"ヘッドフォンを付ければより快適に",
|
||||
"ほとんどのメニューアイコンはUnicode PUAにあるself-drawn glyphsを用いて作られています",
|
||||
"マルチプレイで遊ぼう!あなたの常識が壊されるでしょう",
|
||||
"ほとんどのメニューアイコンはUnicode PUAにある自作Glyphsを用いて作られています",
|
||||
"マルチプレイで遊ぼう! あなたの常識が壊されるでしょう",
|
||||
"メニューをシンプルモードにした場合、イースターエッグがなくなります",
|
||||
"ローディング中!シーンチェンジの間だけじゃないです!",
|
||||
"Z推奨[01]东方Projectをやってみよう!",
|
||||
"ローディング中! シーンチェンジの間だけじゃないです!",
|
||||
"Z推奨[01]東方プロジェクトをやってみよう!",
|
||||
"Z推奨[02]Minecraftをやってみよう!",
|
||||
"Z推奨[03]Osu!をやってみよう!",
|
||||
"Z推奨[04]Quatrackをやってみよう!",
|
||||
"Z推奨[05]Terrariaをやってみよう!",
|
||||
"Z推奨[06]Celesteをやってみよう!",
|
||||
"Z推奨[07]World of gooをやってみよう!",
|
||||
"Z推奨[07]World of Gooをやってみよう!",
|
||||
"Z推奨[08]Orzmicをやってみよう!",
|
||||
"Z推奨[09]Puyo Puyoをやってみよう!",
|
||||
"Z推奨[10]Phigrosをやってみよう!",
|
||||
"Z推奨[11]VVVVVVをやってみよう!",
|
||||
"Z推奨[12]Ballanceをやってみよう!",
|
||||
"Z推奨[13]Zumaをやってみよう!",
|
||||
"Z推奨[14]Rubik's cubeをやってみよう!",
|
||||
"Z推奨[14]ルービックキューブをやってみよう!",
|
||||
"Z推奨[15]15puzzleをやってみよう!",
|
||||
"Z推奨[16]Minesweeperをやってみよう!",
|
||||
{C.H,"REGRET!!"},
|
||||
{C.lP,"Secret number: 626"},
|
||||
{C.lP,"Secret Number: 626"},
|
||||
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
|
||||
{C.lY,"COOL!!"},
|
||||
{C.N,"Lua",C.Z," No.1"},
|
||||
@@ -981,6 +982,6 @@ getTip={refuseCopy=true,
|
||||
{C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"},
|
||||
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},
|
||||
{C.Y,"O-Spin Triple!"},
|
||||
{C.Z,"What? ",C.lC,"Xspin?"},
|
||||
{C.Z,"What? ",C.lC,"X-Spin?"},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,6 +209,100 @@ return{
|
||||
FNNS and"/"or"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
||||
FNNS and"/"or"更多信息见小z词典",
|
||||
},
|
||||
staff={
|
||||
"原作者 MrZ",
|
||||
"邮箱: 1046101471@qq.com",
|
||||
"",
|
||||
"程序, 开发和设计",
|
||||
"MrZ",
|
||||
"",
|
||||
"音乐制作使用",
|
||||
"Beepbox",
|
||||
"FL Studio",
|
||||
"FL Mobile",
|
||||
"Logic Pro X",
|
||||
"",
|
||||
"[POWERED BY LÖVE]",
|
||||
"",
|
||||
"程序",
|
||||
"MrZ",
|
||||
"ParticleG",
|
||||
"Gompyn",
|
||||
"Trebor",
|
||||
"(scdhh)",
|
||||
"(FinnTenzor)",
|
||||
"(NOT_A_ROBOT)",
|
||||
"(user670)",
|
||||
"",
|
||||
"GitHub CI、封装和后端",
|
||||
"ParticleG",
|
||||
"Trebor",
|
||||
"LawrenceLiu",
|
||||
"Gompyn",
|
||||
"flaribbit",
|
||||
"schh",
|
||||
"",
|
||||
"视觉设计、UI和UX",
|
||||
"MrZ",
|
||||
"Gnyar",
|
||||
"C₂₉H₂₅N₃O₅",
|
||||
"ScF",
|
||||
"(旋律星萤)",
|
||||
"(T0722)",
|
||||
"",
|
||||
"音乐设计",
|
||||
"MrZ",
|
||||
"柒栎流星",
|
||||
"ERM",
|
||||
"Trebor",
|
||||
"C₂₉H₂₅N₃O₅",
|
||||
"(T0722)",
|
||||
"(Aether)",
|
||||
"(Hailey)",
|
||||
"",
|
||||
"音效和语音包",
|
||||
"Miya",
|
||||
"Xiaoya",
|
||||
"Mono",
|
||||
"MrZ",
|
||||
"Trebor",
|
||||
"",
|
||||
"翻译和本地化",
|
||||
"User670",
|
||||
"MattMayuga",
|
||||
"Mizu",
|
||||
"Mr.Faq",
|
||||
"ScF",
|
||||
"C₂₉H₂₅N₃O₅",
|
||||
"NOT_A_ROBOT",
|
||||
"",
|
||||
"Performances",
|
||||
"Electric283",
|
||||
"Hebomai",
|
||||
"",
|
||||
"特别感谢",
|
||||
"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",
|
||||
"[All other test staff]",
|
||||
"…And You!",
|
||||
},
|
||||
used=[[
|
||||
使用工具:
|
||||
Beepbox
|
||||
|
||||
@@ -2683,7 +2683,6 @@ function Player:update(dt)
|
||||
_updateFX(self,dt)
|
||||
end
|
||||
function Player:revive()
|
||||
self.waiting=62
|
||||
local h=#self.field
|
||||
for _=h,1,-1 do
|
||||
FREEROW.discard(self.field[_])
|
||||
|
||||
@@ -652,6 +652,11 @@ local commands={}do
|
||||
scene='app_stopwatch',
|
||||
description="A stopwatch"
|
||||
},
|
||||
{
|
||||
code="mj",
|
||||
scene='app_mahjong',
|
||||
description="A simple mahjong game (1 player)"
|
||||
},
|
||||
{
|
||||
code="spin",
|
||||
scene='app_spin',
|
||||
|
||||
173
parts/scenes/app_mahjong.lua
Normal file
173
parts/scenes/app_mahjong.lua
Normal file
@@ -0,0 +1,173 @@
|
||||
local gc=love.graphics
|
||||
local gc_translate=gc.translate
|
||||
local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth
|
||||
local gc_rectangle=gc.rectangle
|
||||
local gc_print=gc.print
|
||||
|
||||
local max,min=math.max,math.min
|
||||
local ins,rem=table.insert,table.remove
|
||||
|
||||
local colorName={
|
||||
m={'一','二','三','四','五','六','七','八','九'},
|
||||
p={'①','②','③','④','⑤','⑥','⑦','⑧','⑨'},
|
||||
s={'1','2','3','4','5','6','7','8','9'},
|
||||
}
|
||||
local deck0={}
|
||||
local cardText={}
|
||||
for i=1,9 do
|
||||
for _=1,4 do
|
||||
ins(deck0,'m'..i)
|
||||
ins(deck0,'p'..i)
|
||||
ins(deck0,'s'..i)
|
||||
if i<=7 then ins(deck0,'z'..i)end
|
||||
end
|
||||
cardText['m'..i]={COLOR.lF,colorName.m[i]}
|
||||
cardText['p'..i]={COLOR.lB,colorName.p[i]}
|
||||
cardText['s'..i]={COLOR.lG,colorName.s[i]}
|
||||
end
|
||||
-- deck0[TABLE.find(deck0,'m5')]='m0'
|
||||
-- deck0[TABLE.find(deck0,'p5')]='p0'
|
||||
-- deck0[TABLE.find(deck0,'s5')]='s0'
|
||||
-- cardText['5m+']={COLOR.R,'五'}
|
||||
-- cardText['5p+']={COLOR.R,'⑤'}
|
||||
-- cardText['5s+']={COLOR.R,'5'}
|
||||
|
||||
cardText['z1']={COLOR.Z,'東'}
|
||||
cardText['z2']={COLOR.Z,'南'}
|
||||
cardText['z3']={COLOR.Z,'西'}
|
||||
cardText['z4']={COLOR.Z,'北'}
|
||||
cardText['z5']={COLOR.Z,' '}
|
||||
cardText['z6']={COLOR.G,'發'}
|
||||
cardText['z7']={COLOR.R,'中'}
|
||||
|
||||
local deck,hand,pool
|
||||
local selected
|
||||
|
||||
local function _getPoolCardArea(i)
|
||||
local row=math.floor((i-1)/10)
|
||||
local col=i-row*10
|
||||
return
|
||||
240+70*col,45+95*row,
|
||||
65,90
|
||||
end
|
||||
|
||||
local function _getHandCardArea(i)
|
||||
return
|
||||
20+70*i+(i==14 and 30 or 0),480,
|
||||
65,90
|
||||
end
|
||||
|
||||
local function _newGame()
|
||||
deck=TABLE.shift(deck0)
|
||||
hand={}
|
||||
pool={}
|
||||
for _=1,14 do ins(hand,(TABLE.popRandom(deck)))end
|
||||
table.sort(hand)
|
||||
end
|
||||
|
||||
local function _checkWin()
|
||||
if #hand==14 then
|
||||
--???
|
||||
end
|
||||
end
|
||||
|
||||
local function _throwCard()
|
||||
if hand[selected]and #pool<40 then
|
||||
ins(pool,rem(hand,selected))
|
||||
table.sort(hand)
|
||||
SFX.play('hold')
|
||||
SFX.play('lock')
|
||||
if #pool<40 then
|
||||
ins(hand,(TABLE.popRandom(deck)))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local scene={}
|
||||
|
||||
function scene.sceneInit()
|
||||
_newGame()
|
||||
selected=false
|
||||
end
|
||||
|
||||
function scene.mouseMove(x,y)
|
||||
selected=false
|
||||
for i=1,#hand do
|
||||
local cx,cy,cw,ch=_getHandCardArea(i)
|
||||
if x>cx and x<cx+cw and y>cy and y<cy+ch then
|
||||
selected=i
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
function scene.mouseDown()
|
||||
_throwCard()
|
||||
end
|
||||
function scene.touchMove(x,y)scene.mouseMove(x,y)end
|
||||
function scene.touchDown(x,y)scene.mouseMove(x,y)end
|
||||
function scene.touchClick(x,y)scene.mouseDown(x,y)end
|
||||
function scene.keyDown(key)
|
||||
if key=='left'then
|
||||
if selected then
|
||||
selected=max(selected-1,1)
|
||||
else
|
||||
selected=1
|
||||
end
|
||||
elseif key=='right'then
|
||||
if selected then
|
||||
selected=min(selected+1,#hand)
|
||||
else
|
||||
selected=#hand
|
||||
end
|
||||
elseif key=='space'then
|
||||
_throwCard()
|
||||
elseif key=='r'then
|
||||
_newGame()
|
||||
elseif key=='return'then
|
||||
_checkWin()
|
||||
elseif key=='escape'then
|
||||
SCN.back()
|
||||
end
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
setFont(35)
|
||||
gc_setColor(COLOR.Z)
|
||||
gc_print('余: '..#deck,1060,30)
|
||||
|
||||
gc_setLineWidth(4)
|
||||
setFont(50)
|
||||
for i=1,#hand do
|
||||
local c=hand[i]
|
||||
local x,y,w,h=_getHandCardArea(i)
|
||||
if i==selected then
|
||||
gc_translate(0,-10)
|
||||
gc_setColor(1,1,1,.4)
|
||||
gc_rectangle('fill',x,y,w,h,5)
|
||||
end
|
||||
gc_setColor(COLOR.Z)
|
||||
gc_rectangle('line',x,y,w,h,5)
|
||||
gc_setColor(1,1,1)
|
||||
mStr(cardText[c],x+w/2,y+10)
|
||||
if i==selected then gc_translate(0,10)end
|
||||
end
|
||||
for i=1,#pool do
|
||||
local c=pool[i]
|
||||
local x,y,w,h=_getPoolCardArea(i)
|
||||
if selected and hand[selected]==c then
|
||||
gc_setColor(1,1,1,.4)
|
||||
gc_rectangle('fill',x,y,w,h,5)
|
||||
end
|
||||
gc_setColor(COLOR.Z)
|
||||
gc_rectangle('line',x,y,w,h,5)
|
||||
gc_setColor(1,1,1)
|
||||
mStr(cardText[c],x+w/2,y+10)
|
||||
end
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=160, y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
|
||||
WIDGET.newKey{name="hu", x=1150,y=370,w=140,h=80,font=50,sound=false,fText='自摸',code=pressKey'return'},
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
@@ -61,7 +61,7 @@ local function _search()
|
||||
_clearResult()
|
||||
local first
|
||||
for i=1,#dict do
|
||||
local pos=find(dict[i].keywords,input,nil,true)
|
||||
local pos=find(dict[i].title:lower(),input,nil,true)or find(dict[i].keywords,input,nil,true)
|
||||
if pos==1 and not first then
|
||||
ins(result,1,dict[i])
|
||||
first=true
|
||||
|
||||
@@ -18,7 +18,7 @@ return[=[
|
||||
新皮肤:pixel(by C₂₉H₂₅N₃O₅)
|
||||
新语言:Bahasa Indonesia(by NOT_A_ROBOT)
|
||||
新语言:日本語(by sakurw)
|
||||
新小程序:Stopwatch
|
||||
新小程序:Stopwatch, Mahjong(无和牌检测)
|
||||
新BGM:lounge(暂未使用, by Hailey (cudsys) & MrZ)
|
||||
改动:
|
||||
修改选择模式音效
|
||||
@@ -30,6 +30,7 @@ return[=[
|
||||
略微降低master-h模式骨块出现后的难度
|
||||
重做关于页面,微调设置菜单
|
||||
TRS的N/H添加一个踢墙
|
||||
词条标题必定可以被搜索
|
||||
重新编辑+裁剪部分音效
|
||||
X块的默认色改为黄色
|
||||
微调全局颜色表
|
||||
|
||||
Reference in New Issue
Block a user