Compare commits

..

17 Commits

Author SHA1 Message Date
MrZ_26
856c490a2b 再修正master_g的一些细节 2022-01-19 20:02:30 +08:00
MrZ_26
5e9dcc27aa 再更新所有的音效文件 2022-01-19 19:46:27 +08:00
NOT_A_ROBOT
3f129a9585 Fix crash bug on graded master when reaching a very high internal grade 2 (#611)
* Fix crash bug on graded master when reaching a very high internal grade 2
2022-01-19 19:45:59 +08:00
MrZ_26
e682ff1de5 提前修改好更新历史和版本号 2022-01-19 18:46:40 +08:00
MrZ_26
2c064d5809 修复倒计时时不能充das close #610 2022-01-19 18:43:08 +08:00
MrZ_26
e0573382e8 更新manual关于攻击系统的说明 2022-01-19 18:38:57 +08:00
MrZ_26
5a514ce495 修正master_g的规则 2022-01-19 18:10:15 +08:00
MrZ_26
ba4fb00c85 版本推进 2022-01-19 03:51:53 +08:00
MrZ_26
ab02d2063f 修正刚刚合并的日文翻译pr的相关小问题,可以用了 2022-01-19 03:50:07 +08:00
MrZ_26
a6c87d3a1a 替换一处缩进为空格 2022-01-19 03:48:07 +08:00
MrZ_26
f15541db4a master_g模式的cool和regret强制使用英文 2022-01-19 03:48:07 +08:00
Airun
dadd09d25a Done with manual_jp.txt (#605)
* Added draft for jp files (editing)

* Manual_JP.txt Done
2022-01-19 03:47:28 +08:00
C₂₉H₂₅N₃O₅
a7dea4dafe 紧急更新字体 (#606)
* 麻将字符采用立直麻将式命名

* 补上两个缺少的符号
2022-01-19 03:47:10 +08:00
MrZ_26
34ac5eed93 版本推进 2022-01-19 02:43:08 +08:00
MrZ_26
89134d4f07 整理刚增加的模式的代码 2022-01-19 02:43:08 +08:00
NOT_A_ROBOT
58d068b776 Add graded Master mode (#594) 2022-01-19 02:21:34 +08:00
NOT_A_ROBOT
dacefb2b01 classic_h 0.5G now starts on lvl19 (#601)
resolves #598
2022-01-15 22:28:37 +08:00
60 changed files with 1840 additions and 42 deletions

4
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "Zframework"]
path = Zframework
url = git@github.com:26F-Studio/Zframework.git
path = Zframework
url = git@github.com:26F-Studio/Zframework.git

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -38,7 +38,7 @@ return{
local D=P.modeData
D.drought=P.lastPiece.id==7 and 0 or D.drought+1
if P.stat.row>=D.target then
if D.target==110 then
if D.target==100 then
P.gameEnv.drop,P.gameEnv.lock=2,2
P.gameEnv.sddas,P.gameEnv.sdarr=2,2
SFX.play('warn_1')

View File

@@ -0,0 +1,296 @@
local gc=love.graphics
local regretDelay=-1
local int_grade=0
local grade_points=0
local int_grade_boosts={0,1,2,3,4,5,5,6,6,7,7,7,8,8,8,9,9,9,10,11,12,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26}
local gradeList={
"9","8","7","6","5","4","3","2","1",
"S1","S2","S3","S4","S5","S6","S7","S8","S9",
"m1","m2","m3","m4","m5","m6","m7","m8","m9",
"M","MK","MV","MO","MM-","MM","MM+","GM-","GM","GM+","TM-","TM","TM+"
}
local spd_lvl=0
local cools=0
local regrets=0
local prevSectTime=0
local isInRoll=false
local rollGrades=0
local cool_time={3120,3120,2940,2700,2700,2520,2520,2280,2280,0}
local reg_time= {5400,4500,4500,4080,3600,3600,3000,3000,3000,3000}
local prevDrop70=false --determines if previous piece has level less than __70
local nextSpeedUp=false --determines if the next section speed should be boosted by 100
local isInRollTrans=false
local function getGrav(l)
return
l<30 and 64 or
l<35 and 43 or
l<40 and 32 or
l<50 and 26 or
l<60 and 21 or
l<70 and 16 or
l<80 and 8 or
l<90 and 6 or
l<120 and 4 or
l<160 and 3 or
l<200 and 2 or
l<220 and 64 or
l<230 and 8 or
l<233 and 4 or
l<236 and 3 or
l<243 and 2 or
l<300 and 1 or
l<360 and 0.5 or
l<450 and 0.25 or
0
end
local function getLock(l)
return
l<900 and 30 or
l<1100 and 19 or
15
end
local function getWait(l)
return
l<700 and 23 or
l<800 and 16 or
l<1000 and 12 or
l<1100 and 7 or
6
end
local function getFall(l)
return
l<500 and 25 or
l<600 and 18 or
l<700 and 12 or
l<800 and 8 or
4
end
local function getDas(l)
return
l<500 and 10 or
l<900 and 8 or
6
end
local function getGrade()
if int_grade==nil then int_grade=0 end
if rollGrades==nil then rollGrades=0 end
return gradeList[math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList)]
end
local function addGrade(row, cmb, lvl) -- IGS = internal grade system
if row<1 then return end
local pts=0
local cmb_mult=1.0
local lvl_mult=math.floor(lvl/250)+1
if row==1 then
pts=int_grade<5 and 10 or int_grade<10 and 5 or 2
cmb_mult=1.0
elseif row==2 then
pts=int_grade<3 and 20 or int_grade<6 and 15 or int_grade<10 and 10 or 12
cmb_mult=cmb==1 and 1 or cmb<4 and 1.2 or cmb<8 and 1.4 or cmb<10 and 1.5 or 2.0
elseif row==3 then
pts=int_grade==0 and 40 or int_grade<4 and 30 or int_grade<7 and 20 or int_grade<10 and 15 or 13
cmb_mult=cmb==1 and 1 or cmb<10 and 1+(cmb+2)*0.1 or 2
else
pts=int_grade==0 and 50 or int_grade<5 and 40 or 30
cmb_mult=cmb==1 and 1 or cmb==2 and 1.5 or cmb<6 and (0.2*cmb)+1.2 or cmb<10 and (0.1*cmb)+1.7 or 3
end
grade_points=grade_points+(pts*cmb_mult*lvl_mult)
if grade_points>=100 then
grade_points=0
int_grade=int_grade+1
end
end
return{
drop=64,
lock=30,
wait=23,
fall=25,
noTele=true,
das=16,arr=1,
minsdarr=1,
ihs=true,irs=true,ims=false,
RS='SRS_plus',
mesDisp=function(P)
gc.setColor(1,1,1,1)
setFont(45)
mText(TEXTOBJ.grade,63,180)
setFont(60)
mStr(getGrade(),63,110)
if isInRoll then
setFont(20)
mStr(("%.1f"):format(rollGrades),63,208)
gc.setLineWidth(2)
gc.setColor(.98,.98,.98,.8)
gc.rectangle('line',0,240,126,80,4)
gc.setColor(.98,.98,.98,.4)
gc.rectangle('fill',0+2,240+2,126-4,80-4,2)
setFont(45)
local t=(P.stat.frame-prevSectTime)/60
local T=("%.1f"):format(60-t)
gc.setColor(COLOR.dH)
mStr(T,65,250)
t=t/60
gc.setColor(1.7*t,2.3-2*t,.3)
mStr(T,63,248)
else
setFont(20)
mStr(grade_points,63,208)
setFont(45)
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end
end,
hook_drop=function(P)
local D=P.modeData
local c=#P.clearedRow
if cools>8 and isInRoll then
rollGrades=rollGrades+(c==4 and 1 or 0.1*c)
return
elseif isInRoll then
rollGrades=rollGrades+(c==4 and 0.26 or 0.04*c)
return
end
if c==0 and D.pt+1>=D.target then return end
local s=c<3 and c+1 or c==3 and 5 or 7
if P.combo>7 then s=s+2
elseif P.combo>3 then s=s+1
end
addGrade(c,P.combo,D.pt)
D.pt=D.pt+s
spd_lvl=spd_lvl+1
P.gameEnv.drop=getGrav(spd_lvl)
if(P.gameEnv.drop==0) then
P:set20G(true)
end
if D.pt%100>70 and not prevDrop70 then
if P.stat.frame-prevSectTime < cool_time[math.ceil(D.pt/100)] then
cools=cools+1
P:_showText("COOL!",0,-120,80,'fly',.8)
nextSpeedUp=true
end
prevDrop70=true
end
if D.pt+1==D.target then
SFX.play('warn_1')
elseif D.pt>=D.target then--Level up!
spd_lvl=nextSpeedUp and spd_lvl+100 or spd_lvl
nextSpeedUp=false
prevDrop70=false
s=D.target/100
local E=P.gameEnv
E.lock=getLock(spd_lvl)
E.wait=getWait(spd_lvl)
E.fall=getFall(spd_lvl)
E.das=getDas(spd_lvl)
if P.stat.frame-prevSectTime > reg_time[math.ceil(s)] then
regrets=regrets+1
regretDelay=60
end
prevSectTime=P.stat.frame
if s==2 then
BG.set('rainbow')
elseif s==4 then
BG.set('rainbow2')
elseif s==5 then
if P.stat.frame>420*60 then
D.pt=500
P:win('finish')
return
else
BG.set('glow')
BGM.play('secret7th remix')
end
elseif s==6 then
BG.set('lightning')
elseif s>9 then
if cools>8 then
E.lockFX=E.lockFX>1 and 1 or E.lockFX
P:setInvisible(5)
else
P:setInvisible(300)
end
D.pt=999
P.waiting=240
BGM.stop()
isInRollTrans=true
return
end
D.target=D.target<900 and D.target+100 or 999
P:stageComplete(s)
SFX.play('reach')
end
end,
task=function(P)
regretDelay=-1
P.modeData.pt=0
P.modeData.target=100
int_grade=0
grade_points=0
rollGrades=0
spd_lvl=0
cools=0
regrets=0
prevSectTime=0
isInRoll=false
isInRollTrans=false
prevDrop70=false
nextSpeedUp=false
local decayRate={125,80,80,50,45,45,45,40,40,40,40,40,30,30,30,20,20,20,20,20,15,15,15,15,15,15,15,15,15,15,10,10,10,9,9,9,8,8,8,7,7,7,6}
local decayTimer=0
while true do
YIELD()
P.modeData.grade=getGrade()
P.modeData.gradePts=math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList)
if regretDelay>-1 then
regretDelay=regretDelay-1
if regretDelay==-1 then P:_showText("REGRET!!",0,-120,80,'beat',.8) end
end
if isInRollTrans then
if P.waiting>=220 then
--Make field invisible
for y=1,#P.field do for x=1,10 do
P.visTime[y][x]=P.waiting-220
end end
elseif P.waiting==190 then
TABLE.cut(P.field)
TABLE.cut(P.visTime)
elseif P.waiting==180 then
playReadySFX(3,3)
elseif P.waiting==120 then
playReadySFX(2,1)
elseif P.waiting==60 then
playReadySFX(1,1)
elseif P.waiting==1 then
playReadySFX(0,1)
isInRollTrans=false
isInRoll=true
BGM.play('hope')
BG.set('blockspace')
prevSectTime=P.stat.frame
end
end
if P.waiting<=0 and grade_points>0 and not isInRoll then
decayTimer=decayTimer+1
if decayTimer>=decayRate[math.min(int_grade+1,#decayRate)] then
decayTimer=0
grade_points=grade_points-1
end
elseif isInRoll and P.stat.frame>=prevSectTime+3600 then
rollGrades=rollGrades+(cools>8 and 1.6 or 0.5)
P:win('finish')
end
end
end,
}

Binary file not shown.

1364
parts/language/dict_ja.lua Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -143,7 +143,6 @@ return{
customBGloadFailed="Unsupport image format for custom background",
errorMsg="Techmino ran into a problem and needs to restart.\nYou can send the error log to the developers.",
tryAnotherBuild="[Invalid UTF-8] If you are on Windows, try downloading Techmino-win32 or Techmino-win64 (different from what you are using now).",
modInstruction="Choose your modifiers!\nMods allow you to change the game,\nbut they may also crash the game.\nScores will not be saved when using mods.",
modInfo={

View File

@@ -18,8 +18,6 @@ Spin detection:
- The Spin is a Mini if it only has 2 points; the piece is one of S, Z, J, L, T; AND the line clear did not clear the entire piece.
Attack system:
Normal line clears (1 to 3 lines):
Sends (lines cleared -0.5) attack
Special line clears:
Spin sends (lines cleared x2) attack,
- B2B sends extra 1/1/2/4/8 for Spin Single/Double/Triple/Techrash/Techrash+
@@ -28,18 +26,18 @@ Attack system:
Non-Spin Techrash/Techrash+ sends (lines cleared) attack,
- B2B sends 1 additional line
- B2B2B will have an attack boost of 50% and +1 extra blocking
Hemi Perfect Clear (a P.C. "with blocks left below". If it's an I clearing 1 line, the remaining blocks must not be player-placed):
- Attack +4, Extra Blocking +2
Perfect Clear (aka 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.
Normal line clears (1 to 3 lines, no spin or pc/hpc):
Sends (lines cleared -0.5) attack
Special line clears will the increase B2B gauge, making later special line clears have either a B2B or B2B2B bonus (see below)
Combos: All damage above will be given a (combo x25%) bonus, or (combo x15%) for Single clear (capped at 12 combo),
Combos: All damage above (except attack from pc/hpc) will be given a (combo x25%) bonus, or (combo x15%) for Single clear (capped at 12 combo),
+1 more attack for 3 Combo or more.
Hemi Perfect Clear (a P.C. "with blocks left below". If it's an I clearing 1 line, the remaining blocks must not be player-placed):
Attack +4, Extra Blocking +2
Perfect Clear (aka 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.
Special line clears will the increase B2B gauge, making later special line clears have either a B2B or B2B2B bonus (see below)
After calculating all above, the damage value will be rounded down then sent

View File

@@ -0,0 +1,109 @@
ゲームプレイ:
システムから与えられた全7種類のテトロミ
(4ブロックで構成されたピース) をプレイヤーが操作します,
(主に左右移動と90°, 180°, 270°回転で)。
各行がブロックで埋め尽くされるとその行列のブロックが消えます。
相手が居る場合, ラインの消し方等で攻撃と火力が異なります。
勝利する為にはそのレベルの目標達成もしくは最後までプレイする必要があります。
回転システム:
初期設定はTRS (Techmino Rotation System) で設定されています。
プレイヤーは他の一般的な回転システムも使う事ができます (基本的には変えなくても大丈夫)。
スピンの検出:
「3コーナ」ルールを満たした時 +2点
「インモービル (Immobile)」 ルールを満たした時 +2点
- 上のどちらかを満たした時, スピンが確定します。
もし回転システムがキックテーブルから2番チェック (2nd check) を採用していなかった場合 +1点
- もしスピンの合計点が2点しかない場合は「ミニ」扱いになりますがS, Z, J, L, Tのいずれかで, ラインクリア時にそのミノを全て消せなかった場合のみ。
攻撃の火力システム:
通常のラインクリア (1から3ライン):
ラインを消した数から0.5引いた分 (四捨五入) を送ります
特殊なラインクリア:
スピンはラインを消した数の2倍分送ります
- B2Bは消し方に応じて追加します, 以下の通り:
- スピンシングル 1
- スピンダブル 1
- スピントリプル 2
- Techrash 4
- Techrash+ 8
- B2B2Bは (ラインクリア数×0.5) 分のラインを上乗せ、更に1ライン追加相殺します。
- ミニ判定の場合, その攻撃は元の0.25倍に下がります。
スピン無しのTechrash/Techrash+は消した分をそのまま送ります
- B2Bの場合は追加1ライン
- B2B2Bの場合は50の攻撃ブーストが掛かると更に1ライン分追加相殺します
特殊なラインクリアはB2Bゲージを増加させます, そのゲージは後のB2BやB2B2Bにボーナスが追加されます。 (以下参照)
コンボ (通称: 連):
全てのダメージに応じて (コンボ数×25) の上乗せ, あるいはシングルに対して (コンボ数×15%) 上乗せ (最大12コンボまで) ,
3コンボ以上で+1追加攻撃。
ヘマイパーフェクトクリア (Hemi Perfect Clear) (「ブロックが下に残ってる」状態でのパフェ。 Iミでクリアできるラインが一つであり, 残りのミノ全てはプレイヤーが置かなかったミノ (お邪魔ミノ) である事:
攻撃 +4 追加相殺 +2
パーフェクトクリア (通称: オールクリア):
8から16ライン送る (試合内でパフェを送る度に前のライン数と2ライン分上乗せ) もしくは 上の記述からのダメージと追加, なおさら多い,
更に 追加相殺 +2。
全てを計算した後に, ダメージ数を四捨五入して送ります。
スコアシステム:
上手くプレイすれば, スコアも上がります。
攻撃遅延システム:
ダブル, トリプルの攻撃が一番早く効果が出ます;
その次にゆっくりとした攻撃を送るTechrash, スピン等, の効果が出ます;
高いコンボ数の攻撃が飛躍的に遅いです;
B2BやB2B2B等は, 送るライン数が増えれば増えるほど遅くなります;
ミニ系の攻撃は攻撃自体の効果を大幅に遅らせます。
カウンター:
攻撃を送る際, もしお邪魔ゲージにお邪魔がある場合,
追加相殺がまず使われ, その次に攻撃自体とお邪魔を1対1の割合でお邪魔の相殺に当てます。
使わなかった追加相殺は破棄され、残った攻撃のパワーは相手に送られます。
バックツーバック (B2B) ゲージ:
B2Bのゲージの範囲は0から1000あります。もしゲージの値が50以上なら特殊なラインクリアはB2Bと見なされ、800以上ならB2B2B (バックツーバックツーバック) 扱いとなります。
普通のラインクリアは -250
スピンシングル: +50
スピンダブル: +100
スピントリプル: +180
特殊なTechrash: +800
特殊なTechrash+: +1000
ミニ系は (上の記述通り×50%)
普通のTechrashは+150
Techrash+は+200
… と続きます。
このラウンド内の合計ライン数が4以上でパフェを取った場合, +800
ヘマイパフェ, +100
スピン (0ライン) は+20, 注意としてこの方法ではゲージを800以上は増やせません。
もしゲージが800以上ある場合, 毎回のラインクリア無しの落下で40減りますが、800未満にはなりません。
バトルロイヤルモード:
沢山のプレイヤーが同時にゲームをプレイします (対AIです, 本物の人ではありません)。
人数が減れば減るほど、ミノの落下速度は加速していき、お邪魔の効果が早く出る同時にせり上がる速度も上がります。
他のプレイヤーを倒してバッジを得て、そしてそのバッジであなた自身の攻撃力を上げましょう。
プレイヤーは4つの攻撃モードから選ぶことができます:
1: ランダム: 毎回攻撃を送る際, 10%の確率で他のプレイヤーに照準を合わせます。
2: バッジ狙い: 攻撃を送った後もしくは標的が落とされた場合, バッジの数が一番多いプレイヤーに照準を合わせます。
3. トドメ撃ち: 攻撃を送った後もしくは標的が落とされた場合, 各プレイヤの中からフィールドの高さが一番高いプレイヤーに照準を合わせます。
(毎秒更新されます)
4. カウンター: あなたに照準を向けられてるプレイヤー全員に照準を同時に向けます。
あなたの攻撃は照準を向けてるプレイヤー全てに送られます。照準をあなたに向けられていない場合、ランダムにプレイヤーを攻撃します (プレイヤー照準固定無し)
全てのプレイヤーが落とされた場合, 最後のプレイヤーが勝者となります。
カスタムモード:
殆どの変数を自由に変えられます (他のゲームモードの特殊エフェクトを除いて)。
更に消す為のフィールドを描いたりまたは積み上げる為のテンプレも作れます。
ビルド (パズル) モードの場合, テンプレの表示をファンクションキーで操作できます:
X印の場所にはブロックは置けない;
無印の場所は何来ても構わない;
色付きの場所にはその色に合わせてのミノブロックを置かないいけない;
おじゃまミノ色の場所にはあるブロックが来てる扱いで空きスペースではない。
形を整えた後に, 勝ち判定となります。

View File

@@ -15,8 +15,6 @@ spin判定:
--如果分数只有2,方块是SZJLT之一,并且没有把当前方块整个消除那么就是mini
攻击系统:
普通消除:
消<4行打出[消行数-0.5]攻击
特殊消除:
如果是spin,打出[2*消行数]攻击,
B2B攻击+[1/1/2/4/8(spin1~5)]
@@ -25,11 +23,15 @@ spin判定:
不是spin但是单次消>=4行,打出[消行数]攻击,
B2B攻击+1
B3B攻击+50%,+1额外抵挡
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):
伤害+4,额外抵挡+2
全消:
伤害为8~16(本局内递增2),和上述其他伤害取大,+2额外抵挡
普通消除(也就是消行数<4并且没有spin或者(半)全消):
打出[消行数-0.5]攻击
连击:每次连击给予上述除去hpc/pc加成的部分[连击数*25%(上限12连)(如果只消一行就是15%)]的加成,>=3次时再额外加1攻击
特殊消除会增加B2B点数,让之后的特殊消除获得B2B(B3B)增益(详细说明见下文)
连击:每次连击给予上述攻击[连击数*25%(上限12连)(如果只消一行就是15%)]的加成,>=3次时再额外加1攻击
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):伤害+4,额外抵挡+2
全消:全消伤害为8~16(本局内递增2),和上述其他伤害取大,然后+2额外抵挡
根据上述规则计算后,向下取整,攻击打出
计算完成后,向下取整,攻击打出
分数系统:
分数计算系统非常复杂,而且随时可能更改所以不写在这里,并且计算只跟消除方式等信息有关,和模式设定无关

33
parts/modes/master_g.lua Normal file
View File

@@ -0,0 +1,33 @@
return{
env={
freshLimit=15,
fieldH=19,
sequence="bagES",
eventSet='master_g',
bg='bg2',bgm='secret7th',
},
slowMark=true,
score=function(P)
if not tonumber(P.modeData.grade) then
return{P.modeData.grade,P.stat.time}
else
return{"Grade "..tostring(P.modeData.grade),P.stat.time}
end
end,
scoreDisp=function(D) return D[1].." "..STRING.time(D[2])end,
comp=function(a,b)return a[1]>b[1]or(a[1]==b[1]and a[2]<b[2])end,
getRank=function(P)
local G=P.modeData.gradePts
return
G>=39 and 5 or -- TM+
G>=31 and 4 or -- MM- - TM
G>=25 and 3 or -- m8 - MO
G>=18 and 2 or -- m1-m7
G>=9 and 1 or -- S1-S9
0
-- Table of grades vs values
-- 9 8 7 6 5 4 3 2 1 S1 S2 S3 S4 S5 S6 S7 S8 S9 m1 m2 m3 m4 m5 m6 m7 m8 m9 M MK MV MO MM- MM MM+ GM- GM GM+ TM- TM TM+
-- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
end,
}

View File

@@ -217,11 +217,11 @@ function Player:_deepDrop()
end
end
function Player:act_moveLeft(auto)
self.movDir=-1
if not self.control then return end
if not auto then
self.ctrlCount=self.ctrlCount+1
end
self.movDir=-1
if self.cur then
if self.cur and not self:ifoverlap(self.cur.bk,self.curX-1,self.curY)then
self:createMoveFX('left')
@@ -239,11 +239,11 @@ function Player:act_moveLeft(auto)
end
end
function Player:act_moveRight(auto)
self.movDir=1
if not self.control then return end
if not auto then
self.ctrlCount=self.ctrlCount+1
end
self.movDir=1
if self.cur then
if self.cur and not self:ifoverlap(self.cur.bk,self.curX+1,self.curY)then
self:createMoveFX('right')

View File

@@ -76,7 +76,7 @@ local function _search()
end
function scene.sceneInit()
dict=require("parts.language.dict_"..(SETTING.locale:find'zh'and'zh'or'en'))
dict=require("parts.language.dict_"..(SETTING.locale:find'zh'and'zh'or SETTING.locale:find'ja'and'ja'or'en'))
_scanDict(dict)
inputBox:clear()

View File

@@ -1,20 +1,16 @@
return[=[
未来小游戏:
Tetro-1010(2C2N, 重力)
Tetra-link(桌游)
坦克大战; 扫雷; 接水管
其他未来内容:
模式包系统; 新模组系统; 加速下落; spike相关统计数据
实时统计数据可视化; 教学关脚本语言; 从录像继续
等级系统; 场地格边缘线; 模式数据分析; 高级自定义序列
成就系统; 手势操作; C2连击; 特殊控件(虚拟摇杆等)
组队战; 方块位移/旋转动画; 更细节的DAS选项; 拓展主题系统
更自由的攻击系统; 更多消除方式; 可调场地宽度;
task-Z(新AI); 自适应UI; 新联网游戏场景切换逻辑
未来计划:
R E M A K E
0.17.2:
新增:
改动:
修复:
倒计时时不能充das #610
master_g模式的一些细节问题
0.17.1: 苏醒 Wake Up
新增:
新模式选择界面(未完善,未来会增加更多便利功能)
新模式:master_g(NOT_A_ROBOT移植)
新皮肤:pixel(by C₂₉H₂₅N₃O₅)
新语言:Bahasa Indonesia(by NOT_A_ROBOT)
新语言:日本語(by sakurw & Airun & 幽灵3383)
@@ -59,6 +55,7 @@ return[=[
PC时最后一块若非特殊消除会先扣除b2b点数
录像界面导入导出按钮隐藏状态错误
登录界面读取本地账号密码数据错误
经典-困难模式切换速度的时机错误
回合制开关玩家控制的问题
策略堆叠模式评级标准不当
云存档/读档的一处小问题

View File

@@ -1,7 +1,7 @@
return{
["apkCode"]=427,
["code"]=1701,
["string"]="V0.17.1",
["room"]="ver A-3",
["name"]="苏醒 Wake Up",
["apkCode"]=430,
["code"]=1702,
["string"]="V0.17.2",
["room"]="ver A-5",
["name"]="",
}