限制按键的极简模式从地图改为隐藏模式,目标改为消除40行 close #1060
This commit is contained in:
@@ -70,11 +70,11 @@ return {
|
||||
arr=0,
|
||||
fineKill=true,
|
||||
mesDisp=function(P)
|
||||
setFont(45)
|
||||
GC.mStr(("%d"):format(P.stat.atk),63,190)
|
||||
GC.mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
|
||||
mText(TEXTOBJ.atk,63,243)
|
||||
mText(TEXTOBJ.eff,63,363)
|
||||
setFont(55)
|
||||
local r=40-P.stat.row
|
||||
if r<0 then r=0 end
|
||||
GC.mStr(r,63,265)
|
||||
PLY.draw.drawTargetLine(P,r)
|
||||
end,
|
||||
task=function(P)
|
||||
resetLock(P)
|
||||
@@ -87,7 +87,7 @@ return {
|
||||
end,
|
||||
hook_drop=function(P)
|
||||
resetLock(P)
|
||||
if P.stat.atk>=100 then
|
||||
if P.stat.row>=40 then
|
||||
P:win('finish')
|
||||
end
|
||||
end,
|
||||
@@ -1,122 +0,0 @@
|
||||
local function lockKey(P,keys)
|
||||
for _,v in next,keys do
|
||||
P.keyAvailable[v]=false
|
||||
VK.keys[v].ava=false
|
||||
VK.release(v)
|
||||
end
|
||||
end
|
||||
local function unlockKey(P,keys)
|
||||
for _,v in next,keys do
|
||||
P.keyAvailable[v]=true
|
||||
VK.keys[v].ava=true
|
||||
end
|
||||
end
|
||||
local function lockMovement(P)
|
||||
lockKey(P,{1,2})
|
||||
end
|
||||
local function lockRotation(P)
|
||||
lockKey(P,{3,4})
|
||||
end
|
||||
local function lockRotation180(P)
|
||||
lockKey(P,{5})
|
||||
end
|
||||
local function unlock(P)
|
||||
if P.cur and P.cur.name==6 and not P.gameEnv.skipOCheck then -- don't unlock rotation if O piece & no O-spin
|
||||
unlockKey(P,{1,2,6,7})
|
||||
return
|
||||
end
|
||||
unlockKey(P,{1,2,3,4,5,6,7})
|
||||
end
|
||||
local function resetLock(P)
|
||||
unlock(P)
|
||||
unlockKey(P,{8})
|
||||
|
||||
P.modeData.moveCount=0
|
||||
P.modeData.rotations=0
|
||||
P.holdTime=1
|
||||
end
|
||||
|
||||
local function onMove(P)
|
||||
if not P.cur then return end
|
||||
|
||||
P.holdTime=0
|
||||
lockKey(P,{8})
|
||||
|
||||
if not P:_roofCheck() then
|
||||
P.modeData.moveCount=P.modeData.moveCount+1
|
||||
if P.modeData.moveCount>=2 then lockMovement(P) end
|
||||
end
|
||||
end
|
||||
local function onAutoMove(P)
|
||||
if P:_roofCheck() then unlock(P) end
|
||||
end
|
||||
local function onRotate(P,dir)
|
||||
if not P.cur then return end
|
||||
|
||||
P.holdTime=0
|
||||
lockKey(P,{8})
|
||||
|
||||
if not P:_roofCheck() then
|
||||
P.modeData.rotations=P.modeData.rotations+(dir==2 and 2 or 1)
|
||||
lockRotation180(P)
|
||||
if P.modeData.rotations>=2 then
|
||||
lockRotation(P)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
arr=0,
|
||||
fineKill=true,
|
||||
mesDisp=function(P)
|
||||
setFont(45)
|
||||
GC.mStr(("%d"):format(P.stat.atk),63,190)
|
||||
GC.mStr(("%.2f"):format(P.stat.atk/P.stat.row),63,310)
|
||||
mText(TEXTOBJ.atk,63,243)
|
||||
mText(TEXTOBJ.eff,63,363)
|
||||
end,
|
||||
task=function(P)
|
||||
resetLock(P)
|
||||
local RSname=P.RS.name
|
||||
P.gameEnv.skipOCheck=(
|
||||
string.find(RSname,'TRS') or
|
||||
string.find(RSname,'BiRS') or
|
||||
string.find(RSname,'ASC')
|
||||
)
|
||||
end,
|
||||
hook_drop=function(P)
|
||||
resetLock(P)
|
||||
|
||||
local C=P.lastPiece
|
||||
if C.row>0 then
|
||||
if not C.special then
|
||||
P:lose()
|
||||
return
|
||||
end
|
||||
end
|
||||
if P.stat.atk>=100 then
|
||||
P:win('finish')
|
||||
end
|
||||
end,
|
||||
hook_spawn=function(P)
|
||||
if P.gameEnv.skipOCheck then return end
|
||||
if P.cur.name==6 then
|
||||
lockRotation(P)
|
||||
lockRotation180(P)
|
||||
else
|
||||
resetLock(P)
|
||||
end
|
||||
end,
|
||||
hook_hold=function(P)
|
||||
if P.gameEnv.skipOCheck then return end
|
||||
if P.cur.name==6 then
|
||||
lockRotation(P)
|
||||
lockRotation180(P)
|
||||
else
|
||||
resetLock(P)
|
||||
end
|
||||
end,
|
||||
hook_left_manual=onMove, hook_right_manual=onMove,
|
||||
hook_left_auto=onAutoMove, hook_right_auto=onAutoMove,
|
||||
hook_rotate=onRotate,
|
||||
}
|
||||
@@ -958,8 +958,6 @@ C. Gamepad
|
||||
['tech_l_plus']= {"Tech B2B", "LUNATIC+", "Spins & PCs only"},
|
||||
['tech_finesse']= {"Tech Finesse", "", "No finesse errors!"},
|
||||
['tech_finesse_f']= {"Tech Finesse", "PLUS", "No normal clears and finesse errors!"},
|
||||
['tech_finesse_lock']= {"Tech Finesse", "LOCK", "No finesse errors, combined with limited inputs!"},
|
||||
['tech_finesse_lock_f']= {"Tech Finesse", "LOCK PLUS", "No normal clears or finesse errors combined with limited inputs!"},
|
||||
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
|
||||
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
|
||||
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
|
||||
|
||||
@@ -923,8 +923,6 @@ return {
|
||||
['tech_finesse']= {"Tech", "Finesse", "¡No cometas errores de Finesse!"},
|
||||
-- ['tech_finesse_f']= {"Tech Finesse", "PLUS", "No normal clears and finesse errors!"},
|
||||
['tech_finesse_f']= {"Tech", "Finesse+", "Sin errores de finesse,\n¡pero tampoco clears normales!"},
|
||||
-- ['tech_finesse_lock']= {"Tech Finesse", "LOCK", "No finesse errors, combined with limited inputs!"},
|
||||
-- ['tech_finesse_lock_f']= {"Tech Finesse", "LOCK PLUS", "No normal clears or finesse errors combined with limited inputs!"},
|
||||
['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!"},
|
||||
|
||||
@@ -897,8 +897,6 @@ return {
|
||||
-- ['tech_finesse_f']= {"Tech Finesse", "PLUS", "No normal clears and finesse errors!"},
|
||||
['tech_finesse']= {"Tech", "FINESSE", "Pas d'erreurs de finesse !"},
|
||||
['tech_finesse_f']={"Tech", "FINESSE+", "Pas de nettoyages normaux,\nPas d'erreurs de finesse !"},
|
||||
--['tech_finesse_lock']= {"Tech", "FINESSE LOCK", "No finesse errors, combined with limited inputs!"},
|
||||
--['tech_finesse_lock_f']= {"Tech", "FINESSE+ LOCK", "No normal clears or finesse errors combined with limited inputs!"},
|
||||
['tsd_e']= {"TSD Challenge", "FACILE", "T-spin doubles uniquement !"},
|
||||
['tsd_h']= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
|
||||
['tsd_u']= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
|
||||
|
||||
@@ -920,8 +920,6 @@ return {
|
||||
['tech_l_plus']= {"Tech B2B", "GILA+", "Hanya Spins & PCs dibolehkan"},
|
||||
['tech_finesse']= {"Tech", "EF. TOMBOL", "Efisiensi tombol harus maksimal!"},
|
||||
['tech_finesse_f']= {"Tech", "EF. TOMBOL+", "Efisiensi tombol maksimal dan anda tidak boleh membuat baris normal!"},
|
||||
['tech_finesse_lock']= {"Tech", "EF. TBL. TERBATAS", "Jumlah pemencetan tombol terbatas, dan efisiensinya harus maksimal!"},
|
||||
['tech_finesse_lock_f']= {"Tech", "EF. TBL.+ TERBATAS", "Jumlah pemencetan tombol terbatas, efisiensi tombol harus maksimal, dan anda tidak boleh membuat baris normal!"},
|
||||
['tsd_e']= {"Tantangan TSD", "MUDAH", "Hanya T-Spin Double dibolehkan!"},
|
||||
['tsd_h']= {"Tantangan TSD", "SULIT", "Hanya T-Spin Double dibolehkan!"},
|
||||
['tsd_u']= {"Tantangan TSD", "TERAKHIR", "Hanya T-Spin Double dibolehkan!"},
|
||||
|
||||
@@ -964,8 +964,6 @@ C. ゲームパッド
|
||||
['tech_l_plus']= {"テクニック B2B", "LUNATIC+", "回転入れとパフェだけ!"},
|
||||
['tech_finesse']= {"テクニック 最適化", "", "最適化!"},
|
||||
['tech_finesse_f']= {"テクニック 最適化", "PLUS", "通常Line消去抜きで最適化!"},
|
||||
['tech_finesse_lock']= {"テクニック 最適化", "LOCK", "限られた入力数で最適化!"},
|
||||
['tech_finesse_lock_f']= {"テクニック 最適化", "LOCK PLUS", "限られた入力数で最適化!\nついでに通常Line消去も禁止!"},
|
||||
['tsd_e']= {"TSDチャレンジ", "EASY", "TSDだけ!"},
|
||||
['tsd_h']= {"TSDチャレンジ", "HARD", "TSDだけ!"},
|
||||
['tsd_u']= {"TSDチャレンジ", "ULTIMATE", "TSDだけ!"},
|
||||
|
||||
@@ -910,8 +910,6 @@ return {
|
||||
-- ['tech_finesse_f']= {"Tech Finesse", "PLUS", "No normal clears and finesse errors!"},
|
||||
['tech_finesse']= {"Tech", "FINESSE", "Não erre a destreza!"},
|
||||
['tech_finesse_f']= {"Tech", "FINESSE+", "Sem limpas normais,\nnão erre a destreza!"},
|
||||
--['tech_finesse_lock']= {"Tech", "FINESSE LOCK", "No finesse errors, combined with limited inputs!"},
|
||||
--['tech_finesse_lock_f']= {"Tech", "FINESSE+ LOCK", "No normal clears or finesse errors combined with limited inputs!"},
|
||||
['tsd_e']= {"Desafio TSD", "FÁCIL", "Apenas T-spin-doubles!"},
|
||||
['tsd_h']= {"Desafio TSD", "DIFÍCIL", "Apenas T-spin-doubles!"},
|
||||
['tsd_u']= {"Desafio TSD", "ULTIMATE", "Apenas T-spin-doubles!"},
|
||||
|
||||
@@ -985,8 +985,6 @@ C. Tay cầm chơi game (Gamepad):
|
||||
['tech_l_plus']= {"Tech B2B", "RẤT KHÓ+", "Chỉ được clear Spin hoặc PC"},
|
||||
['tech_finesse']= {"Kỹ thuật di chuyển","", "Không được phép có lỗi di chuyển!"},
|
||||
['tech_finesse_f']= {"Kỹ thuật di chuyển","Khg ĐƠN/ĐÔI/TAM","Không được phép có lỗi di chuyển hoặc kiểu Xoá hàng thường!"},
|
||||
['tech_finesse_lock']= {"Kỹ thuật di chuyển","LOCK", "Không được mắc lỗi di chuyển hoặc bạn không thể điều khiển gạch!"},
|
||||
['tech_finesse_lock_f']= {"Kỹ thuật di chuyển","LOCK+", "Không được mắc lỗi di chuyển hoặc bạn không thể điều khiển gạch! Bạn cũng sẽ thua khi dùng kiểu Xóa hàng thường!"},
|
||||
['tsd_e']= {"TSD Challenge", "DỄ", "Chỉ được làm T-Spin Double!"},
|
||||
['tsd_h']= {"TSD Challenge", "KHÓ", "Chỉ được làm T-Spin Double!"},
|
||||
['tsd_u']= {"TSD Challenge", "THÁCH ĐẤU", "Chỉ được làm T-Spin Double!"},
|
||||
|
||||
@@ -948,8 +948,6 @@ return {
|
||||
['tech_l_plus']= {"科研", "疯狂+", "仅允许spin与PC"},
|
||||
['tech_finesse']= {"科研", "极简", "强制最简操作"},
|
||||
['tech_finesse_f']= {"科研", "极简+", "禁止普通消除,强制最简操作"},
|
||||
['tech_finesse_lock']= {"科研", "极简限制", "限制操作次数"},
|
||||
['tech_finesse_lock_f']={"科研", "极简限制+", "限制操作次数,禁止断B2B"},
|
||||
['tsd_e']= {"TSD挑战", "简单", "你能连续做几个TSD?"},
|
||||
['tsd_h']= {"TSD挑战", "困难", "你能连续做几个TSD?"},
|
||||
['tsd_u']= {"TSD挑战", "极限", "你能连续做几个TSD?"},
|
||||
|
||||
@@ -867,8 +867,6 @@ return {
|
||||
['tech_l_plus']= {"Tech(LunaticP);", "", "仅允许spin与PC"},
|
||||
['tech_finesse']= {"Tech(Finesse);", "", "强制最简操作"},
|
||||
['tech_finesse_f']= {"Tech(FinesseF);", "", "禁止普通消除,强制最简操作"},
|
||||
['tech_finesse_lock']= {"Tech(FineeseLock);", "", "限制操作次数"},
|
||||
['tech_finesse_lock_f']={"Tech(FineeseLockF);", "", "限制操作次数,禁止断B2B"},
|
||||
['tsd_e']= {"TSD(Easy);", "", "你能连续做几个TSD?"},
|
||||
['tsd_h']= {"TSD(Hard);", "", "你能连续做几个TSD?"},
|
||||
['tsd_u']= {"TSD(Ultimate);", "", "你能连续做几个TSD?"},
|
||||
|
||||
@@ -920,8 +920,6 @@ return {
|
||||
['tech_l_plus']= {"科研", "瘋狂+", "僅允許spin與PC"},
|
||||
['tech_finesse']= {"科研", "finesse", "強制finesse"},
|
||||
['tech_finesse_f']= {"科研", "finesse+", "禁止普通清除,強制finesse"},
|
||||
['tech_finesse_lock']= {"科研", "finesse限制", "限制操作次數"},
|
||||
['tech_finesse_lock_f']={"科研", "finesse限制+","限制操作次數,禁止斷B2B"},
|
||||
['tsd_e']= {"TSD挑戰", "簡單", "你能連續做幾個TSD?"},
|
||||
['tsd_h']= {"TSD挑戰", "困難", "你能連續做幾個TSD?"},
|
||||
['tsd_u']= {"TSD挑戰", "極限", "你能連續做幾個TSD?"},
|
||||
|
||||
@@ -108,7 +108,7 @@ return {
|
||||
{name='pc_l', x=1100, y=-140, size=40,shape=3,icon="pc"},
|
||||
{name='pc_inf', x=1100, y=-280, size=40,shape=2,icon="pc"},
|
||||
|
||||
{name='sprintAtk', x=500, y=-280, size=40,shape=1,icon="sprint2", unlock={'sprintEff','tech_n','tech_finesse','tech_finesse_lock','tsd_e','backfire_n'}},
|
||||
{name='sprintAtk', x=500, y=-280, size=40,shape=1,icon="sprint2", unlock={'sprintEff','tech_n','tech_finesse','tsd_e','backfire_n'}},
|
||||
{name='sprintEff', x=360, y=-150, size=40,shape=1,icon="sprint2"},
|
||||
|
||||
{name='tech_n', x=400, y=20, size=40,shape=1,icon="tech", unlock={'tech_n_plus','tech_h'}},
|
||||
@@ -121,17 +121,14 @@ return {
|
||||
{name='tech_finesse', x=850, y=20, size=40,shape=1,icon="tech", unlock={'tech_finesse_f'}},
|
||||
{name='tech_finesse_f', x=1050, y=20, size=40,shape=1,icon="tech_plus"},
|
||||
|
||||
{name='tech_finesse_lock', x=850, y=160, size=40,shape=1,icon="tech", unlock={'tech_finesse_lock_f'}},
|
||||
{name='tech_finesse_lock_f',x=1050, y=170, size=40,shape=1,icon="tech_plus"},
|
||||
{name='tsd_e', x=700, y=100, size=40,shape=1,icon="tsd", unlock={'tsd_h'}},
|
||||
{name='tsd_h', x=860, y=160, size=40,shape=1,icon="tsd", unlock={'tsd_u'}},
|
||||
{name='tsd_u', x=1050, y=170, size=40,shape=1,icon="tsd"},
|
||||
|
||||
{name='tsd_e', x=700, y=250, size=40,shape=1,icon="tsd", unlock={'tsd_h'}},
|
||||
{name='tsd_h', x=860, y=310, size=40,shape=1,icon="tsd", unlock={'tsd_u'}},
|
||||
{name='tsd_u', x=1050, y=320, size=40,shape=1,icon="tsd"},
|
||||
|
||||
{name='backfire_n', x=640, y=420, size=40,shape=1,icon="backfire", unlock={'backfire_h'}},
|
||||
{name='backfire_h', x=790, y=450, size=40,shape=1,icon="backfire", unlock={'backfire_l'}},
|
||||
{name='backfire_l', x=930, y=450, size=40,shape=3,icon="backfire", unlock={'backfire_u'}},
|
||||
{name='backfire_u', x=1070, y=450, size=35,shape=2,icon="backfire"},
|
||||
{name='backfire_n', x=640, y=270, size=40,shape=1,icon="backfire", unlock={'backfire_h'}},
|
||||
{name='backfire_h', x=790, y=300, size=40,shape=1,icon="backfire", unlock={'backfire_l'}},
|
||||
{name='backfire_l', x=930, y=300, size=40,shape=3,icon="backfire", unlock={'backfire_u'}},
|
||||
{name='backfire_u', x=1070, y=300, size=35,shape=2,icon="backfire"},
|
||||
|
||||
{name='zen', x=-1200,y=-600, size=40,shape=1,icon="zen", unlock={'ultra','infinite','infinite_dig','marathon_inf'}},
|
||||
{name='ultra', x=-1400,y=-600, size=40,shape=1,icon="ultra"},
|
||||
|
||||
20
parts/modes/sprint_finesse_lock.lua
Normal file
20
parts/modes/sprint_finesse_lock.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
return {
|
||||
env={
|
||||
arr=0,
|
||||
drop=1e99,lock=60,
|
||||
freshLimit=15,
|
||||
eventSet='sprint_finesse_lock',
|
||||
bg='flink',bgm='infinite',
|
||||
},
|
||||
getRank=function(P)
|
||||
if P.stat.row<40 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=30 and 5 or
|
||||
T<=42 and 4 or
|
||||
T<=62 and 3 or
|
||||
T<=126 and 2 or
|
||||
T<=226 and 1 or
|
||||
0
|
||||
end,
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
return {
|
||||
env={
|
||||
arr=0,
|
||||
drop=1e99,lock=60,
|
||||
freshLimit=15,
|
||||
bg='flink',bgm='infinite',
|
||||
eventSet='tech_finesse_lock'
|
||||
},
|
||||
slowMark=true,
|
||||
score=function(P) return {P.stat.atk<=100 and math.floor(P.stat.atk) or 100,P.stat.time} end,
|
||||
scoreDisp=function(D) return D[1].." Attack "..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 A=P.stat.atk
|
||||
if A>=100 then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<50 and 5 or
|
||||
T<70 and 4 or
|
||||
T<100 and 3 or
|
||||
2
|
||||
else
|
||||
return
|
||||
A>=60 and 1 or
|
||||
A>=30 and 0
|
||||
end
|
||||
end,
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
return {
|
||||
env={
|
||||
arr=0,
|
||||
drop=1e99,lock=60,
|
||||
b2bKill=true,
|
||||
freshLimit=15,
|
||||
bg='flink',bgm='infinite',
|
||||
eventSet='tech_finesse_lock_f',
|
||||
},
|
||||
slowMark=true,
|
||||
score=function(P) return {P.stat.atk<=100 and math.floor(P.stat.atk) or 100,P.stat.time} end,
|
||||
scoreDisp=function(D) return D[1].." Attack "..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 A=P.stat.atk
|
||||
if A>=100 then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<50 and 5 or
|
||||
T<70 and 4 or
|
||||
T<100 and 3 or
|
||||
2
|
||||
else
|
||||
return
|
||||
A>=60 and 1 or
|
||||
A>=30 and 0
|
||||
end
|
||||
end,
|
||||
}
|
||||
@@ -66,7 +66,10 @@ local function _nextDir(i)
|
||||
SETTING.face[i]=(SETTING.face[i]+1)%4
|
||||
minoRot0[i]=minoRot0[i]+math.pi/2
|
||||
if not selEggMode and not GAME.playing then
|
||||
if minoRot0[5]>62 then
|
||||
if minoRot0[2]>62 then
|
||||
selEggMode='sprint_finesse_lock'
|
||||
playEgg.color=COLOR.dY
|
||||
elseif minoRot0[5]>62 then
|
||||
selEggMode='marathon_bfmax'
|
||||
playEgg.color=COLOR.dR
|
||||
elseif minoRot0[6]>62 then
|
||||
|
||||
Reference in New Issue
Block a user