Add "Tech Finesse Lock" modes and some other improvements (#946)
* Improve Tech FInesse modes and add new player hooks * Add Tech Finesse[+] Lock into mode map * Credit PopUpWaffles * Rearrange mode map
This commit is contained in:
Submodule Zframework updated: f8059337db...3595390738
57
parts/eventsets/tech_finesse_lock.lua
Normal file
57
parts/eventsets/tech_finesse_lock.lua
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
local function onMove(P)
|
||||||
|
if not P.cur then return end
|
||||||
|
P.holdTime=0
|
||||||
|
VK.keys[8].ava=false
|
||||||
|
P.modeData.moveCount=P.modeData.moveCount+1
|
||||||
|
if P.modeData.moveCount>=2 and (P.curY>P.gameEnv.fieldH-2 or P:_roofCheck()) then
|
||||||
|
P.keyAvailable[1]=false
|
||||||
|
P.keyAvailable[2]=false
|
||||||
|
VK.keys[1].ava=false
|
||||||
|
VK.keys[2].ava=false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function onRotate(P)
|
||||||
|
if not P.cur then return end
|
||||||
|
P.holdTime=0
|
||||||
|
VK.keys[8].ava=false
|
||||||
|
P.modeData.rotations=P.modeData.rotations+1
|
||||||
|
if P.modeData.rotations>=2 and not (P.curY>P.gameEnv.fieldH-2 or P:_roofCheck()) then
|
||||||
|
P.keyAvailable[3]=false
|
||||||
|
P.keyAvailable[4]=false
|
||||||
|
P.keyAvailable[5]=false
|
||||||
|
VK.keys[3].ava=false
|
||||||
|
VK.keys[4].ava=false
|
||||||
|
VK.keys[5].ava=false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function resetLock(P)
|
||||||
|
for i=1,8 do
|
||||||
|
P.keyAvailable[i]=true
|
||||||
|
VK.keys[i].ava=true
|
||||||
|
end
|
||||||
|
P.modeData.moveCount=0
|
||||||
|
P.modeData.rotations=0
|
||||||
|
P.holdTime=1
|
||||||
|
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)
|
||||||
|
end,
|
||||||
|
hook_drop=function(P)
|
||||||
|
resetLock(P)
|
||||||
|
if P.stat.atk>=100 then
|
||||||
|
P:win('finish')
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
hook_left_manual=onMove, hook_right_manual=onMove,
|
||||||
|
hook_rotLeft=onRotate, hook_rotRight=onRotate, hook_rot180=onRotate
|
||||||
|
}
|
||||||
63
parts/eventsets/tech_finesse_lock_f.lua
Normal file
63
parts/eventsets/tech_finesse_lock_f.lua
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
local function onMove(P)
|
||||||
|
if not P.cur then return end
|
||||||
|
P.holdTime=0
|
||||||
|
VK.keys[8].ava=false
|
||||||
|
P.modeData.moveCount=P.modeData.moveCount+1
|
||||||
|
if P.modeData.moveCount>=2 and (P.curY>P.gameEnv.fieldH-2 or P:_roofCheck()) then
|
||||||
|
P.keyAvailable[1]=false
|
||||||
|
P.keyAvailable[2]=false
|
||||||
|
VK.keys[1].ava=false
|
||||||
|
VK.keys[2].ava=false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function onRotate(P)
|
||||||
|
if not P.cur then return end
|
||||||
|
P.holdTime=0
|
||||||
|
VK.keys[8].ava=false
|
||||||
|
P.modeData.rotations=P.modeData.rotations+1
|
||||||
|
if P.modeData.rotations>=2 and not (P.curY>P.gameEnv.fieldH-2 or P:_roofCheck()) then
|
||||||
|
P.keyAvailable[3]=false
|
||||||
|
P.keyAvailable[4]=false
|
||||||
|
P.keyAvailable[5]=false
|
||||||
|
VK.keys[3].ava=false
|
||||||
|
VK.keys[4].ava=false
|
||||||
|
VK.keys[5].ava=false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function resetLock(P)
|
||||||
|
for i=1,8 do
|
||||||
|
P.keyAvailable[i]=true
|
||||||
|
VK.keys[i].ava=true
|
||||||
|
end
|
||||||
|
P.modeData.moveCount=0
|
||||||
|
P.modeData.rotations=0
|
||||||
|
P.holdTime=1
|
||||||
|
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)
|
||||||
|
end,
|
||||||
|
hook_drop=function(P)
|
||||||
|
resetLock(P)
|
||||||
|
if P.lastPiece.row>0 then
|
||||||
|
if not P.lastPiece.special then
|
||||||
|
P:lose()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if P.stat.atk>=100 then
|
||||||
|
P:win('finish')
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
hook_left_manual=onMove, hook_right_manual=onMove,
|
||||||
|
hook_rotLeft=onRotate, hook_rotRight=onRotate, hook_rot180=onRotate
|
||||||
|
}
|
||||||
@@ -365,6 +365,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[All other test staff]",
|
"[All other test staff]",
|
||||||
"…And You!",
|
"…And You!",
|
||||||
},
|
},
|
||||||
@@ -945,6 +946,8 @@ C. Gamepad
|
|||||||
['tech_l_plus']= {"Tech", "LUNATIC+", "Spins & PCs only"},
|
['tech_l_plus']= {"Tech", "LUNATIC+", "Spins & PCs only"},
|
||||||
['tech_finesse']= {"Tech", "FINESSE", "No finesse errors!"},
|
['tech_finesse']= {"Tech", "FINESSE", "No finesse errors!"},
|
||||||
['tech_finesse_f']= {"Tech", "FINESSE+", "No normal clears and finesse errors!"},
|
['tech_finesse_f']= {"Tech", "FINESSE+", "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", "No normal clears or finesse errors combined with limited inputs!"},
|
||||||
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
|
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
|
||||||
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
|
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
|
||||||
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
|
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
|
||||||
|
|||||||
@@ -362,6 +362,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[Todo el staff de testeo]",
|
"[Todo el staff de testeo]",
|
||||||
"…Y a ti!",
|
"…Y a ti!",
|
||||||
},
|
},
|
||||||
@@ -897,6 +898,8 @@ return {
|
|||||||
['tech_l_plus']= {"Tech", "Lunático+", "¡Sólo se permiten Spins y PCs!"},
|
['tech_l_plus']= {"Tech", "Lunático+", "¡Sólo se permiten Spins y PCs!"},
|
||||||
['tech_finesse']= {"Tech", "Finesse", "¡No cometas errores de Finesse!"},
|
['tech_finesse']= {"Tech", "Finesse", "¡No cometas errores de Finesse!"},
|
||||||
['tech_finesse_f']= {"Tech", "Finesse+", "Sin errores de finesse,\n¡pero tampoco clears normales!"},
|
['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", "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_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_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!"},
|
['tsd_u']= {"Desafío de TSD", "Supremo", "¡Sólo se permiten T-Spin Dobles!"},
|
||||||
|
|||||||
@@ -341,6 +341,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[All other test staff]",
|
"[All other test staff]",
|
||||||
"…And You!",
|
"…And You!",
|
||||||
},
|
},
|
||||||
@@ -868,6 +869,8 @@ return {
|
|||||||
['tech_l_plus']= {"Tech", "LUNATIQUE+", "Spin & PC uniquement"},
|
['tech_l_plus']= {"Tech", "LUNATIQUE+", "Spin & PC uniquement"},
|
||||||
['tech_finesse']= {"Tech", "FINESSE", "Pas d'erreurs de finesse !"},
|
['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_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_e']= {"TSD Challenge", "FACILE", "T-spin doubles uniquement !"},
|
||||||
['tsd_h']= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
|
['tsd_h']= {"TSD Challenge", "DIFFICILE", "T-spin doubles uniquement !"},
|
||||||
['tsd_u']= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
|
['tsd_u']= {"TSD Challenge", "ULTIME", "T-spin doubles uniquement !"},
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[Semua staf penguji lainnya]",
|
"[Semua staf penguji lainnya]",
|
||||||
"…Dan Anda!",
|
"…Dan Anda!",
|
||||||
},
|
},
|
||||||
@@ -906,7 +907,9 @@ return {
|
|||||||
['tech_l']= {"Tech", "GILA", "Coba jaga deret Back-To-Back!"},
|
['tech_l']= {"Tech", "GILA", "Coba jaga deret Back-To-Back!"},
|
||||||
['tech_l_plus']= {"Tech", "GILA+", "Hanya Spins & PCs dibolehkan"},
|
['tech_l_plus']= {"Tech", "GILA+", "Hanya Spins & PCs dibolehkan"},
|
||||||
['tech_finesse']= {"Tech", "EF. TOMBOL", "Efisiensi tombol harus maksimal!"},
|
['tech_finesse']= {"Tech", "EF. TOMBOL", "Efisiensi tombol harus maksimal!"},
|
||||||
['tech_finesse_f']= {"Tech", "EF. TOMBOL+", "Efisiensi tombol maksimal dan tidak ada garis normal!"},
|
['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_e']= {"Tantangan TSD", "MUDAH", "Hanya T-Spin Double dibolehkan!"},
|
||||||
['tsd_h']= {"Tantangan TSD", "SULIT", "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!"},
|
['tsd_u']= {"Tantangan TSD", "TERAKHIR", "Hanya T-Spin Double dibolehkan!"},
|
||||||
|
|||||||
@@ -364,6 +364,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[All other test staff]",
|
"[All other test staff]",
|
||||||
"…And You!",
|
"…And You!",
|
||||||
},
|
},
|
||||||
@@ -950,6 +951,8 @@ C. ゲームパッド
|
|||||||
['tech_l_plus']= {"テクニック", "LUNATIC+", "回転入れとパフェだけ!"},
|
['tech_l_plus']= {"テクニック", "LUNATIC+", "回転入れとパフェだけ!"},
|
||||||
['tech_finesse']= {"テクニック", "FINESSE", "最適化!"},
|
['tech_finesse']= {"テクニック", "FINESSE", "最適化!"},
|
||||||
['tech_finesse_f']= {"テクニック", "FINESSE+", "最適化はそのまま、通常line消去禁止!"},
|
['tech_finesse_f']= {"テクニック", "FINESSE+", "最適化はそのまま、通常line消去禁止!"},
|
||||||
|
--['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チャレンジ", "EASY", "TSDだけ!"},
|
['tsd_e']= {"TSDチャレンジ", "EASY", "TSDだけ!"},
|
||||||
['tsd_h']= {"TSDチャレンジ", "HARD", "TSDだけ!"},
|
['tsd_h']= {"TSDチャレンジ", "HARD", "TSDだけ!"},
|
||||||
['tsd_u']= {"TSDチャレンジ", "ULTIMATE", "TSDだけ!"},
|
['tsd_u']= {"TSDチャレンジ", "ULTIMATE", "TSDだけ!"},
|
||||||
|
|||||||
@@ -351,6 +351,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[All other test staff]",
|
"[All other test staff]",
|
||||||
"…And You!",
|
"…And You!",
|
||||||
},
|
},
|
||||||
@@ -887,6 +888,8 @@ return {
|
|||||||
['tech_l_plus']= {"Tech", "LUNÁTICO+", "Apenas spins e PC"},
|
['tech_l_plus']= {"Tech", "LUNÁTICO+", "Apenas spins e PC"},
|
||||||
['tech_finesse']= {"Tech", "FINESSE", "Não erre a destreza!"},
|
['tech_finesse']= {"Tech", "FINESSE", "Não erre a destreza!"},
|
||||||
['tech_finesse_f']= {"Tech", "FINESSE+", "Sem limpas normais,\nnã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_e']= {"Desafio TSD", "FÁCIL", "Apenas T-spin-doubles!"},
|
||||||
['tsd_h']= {"Desafio TSD", "DIFÍCIL", "Apenas T-spin-doubles!"},
|
['tsd_h']= {"Desafio TSD", "DIFÍCIL", "Apenas T-spin-doubles!"},
|
||||||
['tsd_u']= {"Desafio TSD", "ULTIMATE", "Apenas T-spin-doubles!"},
|
['tsd_u']= {"Desafio TSD", "ULTIMATE", "Apenas T-spin-doubles!"},
|
||||||
|
|||||||
@@ -370,6 +370,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[cùng với các thành viên thử nghiệm khác]",
|
"[cùng với các thành viên thử nghiệm khác]",
|
||||||
"…và BẠN!",
|
"…và BẠN!",
|
||||||
},
|
},
|
||||||
@@ -969,6 +970,8 @@ C. Tay cầm chơi game (Gamepad):
|
|||||||
['tech_l_plus']= {"Tech", "RẤT KHÓ+", "Chỉ được clear Spin hoặc PC"},
|
['tech_l_plus']= {"Tech", "RẤT KHÓ+", "Chỉ được clear Spin hoặc PC"},
|
||||||
['tech_finesse']= {"Tech", "HOÀN HẢO", "Không được phép có lỗi di chuyển!"},
|
['tech_finesse']= {"Tech", "HOÀN HẢO", "Không được phép có lỗi di chuyển!"},
|
||||||
['tech_finesse_f']= {"Tech", "HOÀN HẢO+", "Không được phép có lỗi di chuyển hoặc loại Xoá hàng thường!"},
|
['tech_finesse_f']= {"Tech", "HOÀN HẢO+", "Không được phép có lỗi di chuyển hoặc loại Xoá hàng thường!"},
|
||||||
|
--['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", "DỄ", "Chỉ được làm T-Spin Double!"}, -- Chỉ được clear…
|
['tsd_e']= {"TSD Challenge", "DỄ", "Chỉ được làm T-Spin Double!"}, -- Chỉ được clear…
|
||||||
['tsd_h']= {"TSD Challenge", "KHÓ", "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!"},
|
['tsd_u']= {"TSD Challenge", "THÁCH ĐẤU", "Chỉ được làm T-Spin Double!"},
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[All other test staff]",
|
"[All other test staff]",
|
||||||
"…And You!",
|
"…And You!",
|
||||||
},
|
},
|
||||||
@@ -937,6 +938,8 @@ return {
|
|||||||
['tech_l_plus']= {"科研", "疯狂+", "仅允许spin与PC"},
|
['tech_l_plus']= {"科研", "疯狂+", "仅允许spin与PC"},
|
||||||
['tech_finesse']= {"科研", "极简", "强制最简操作"},
|
['tech_finesse']= {"科研", "极简", "强制最简操作"},
|
||||||
['tech_finesse_f']= {"科研", "极简+", "禁止普通消除,强制最简操作"},
|
['tech_finesse_f']= {"科研", "极简+", "禁止普通消除,强制最简操作"},
|
||||||
|
--['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挑战", "简单", "你能连续做几个TSD?"},
|
['tsd_e']= {"TSD挑战", "简单", "你能连续做几个TSD?"},
|
||||||
['tsd_h']= {"TSD挑战", "困难", "你能连续做几个TSD?"},
|
['tsd_h']= {"TSD挑战", "困难", "你能连续做几个TSD?"},
|
||||||
['tsd_u']= {"TSD挑战", "极限", "你能连续做几个TSD?"},
|
['tsd_u']= {"TSD挑战", "极限", "你能连续做几个TSD?"},
|
||||||
|
|||||||
@@ -311,6 +311,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[All other test staff]",
|
"[All other test staff]",
|
||||||
"…And You!",
|
"…And You!",
|
||||||
},
|
},
|
||||||
@@ -854,6 +855,8 @@ return {
|
|||||||
['tech_l_plus']= {"Tech(LunaticP);", "", "仅允许spin与PC"},
|
['tech_l_plus']= {"Tech(LunaticP);", "", "仅允许spin与PC"},
|
||||||
['tech_finesse']= {"Tech(Finesse);", "", "强制最简操作"},
|
['tech_finesse']= {"Tech(Finesse);", "", "强制最简操作"},
|
||||||
['tech_finesse_f']= {"Tech(FinesseF);", "", "禁止普通消除,强制最简操作"},
|
['tech_finesse_f']= {"Tech(FinesseF);", "", "禁止普通消除,强制最简操作"},
|
||||||
|
--['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(Easy);", "", "你能连续做几个TSD?"},
|
['tsd_e']= {"TSD(Easy);", "", "你能连续做几个TSD?"},
|
||||||
['tsd_h']= {"TSD(Hard);", "", "你能连续做几个TSD?"},
|
['tsd_h']= {"TSD(Hard);", "", "你能连续做几个TSD?"},
|
||||||
['tsd_u']= {"TSD(Ultimate);", "", "你能连续做几个TSD?"},
|
['tsd_u']= {"TSD(Ultimate);", "", "你能连续做几个TSD?"},
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ return {
|
|||||||
"huaji2369",
|
"huaji2369",
|
||||||
"Lexitik",
|
"Lexitik",
|
||||||
"Tourahi Anime",
|
"Tourahi Anime",
|
||||||
|
"PopUpWaffles",
|
||||||
"[All other test staff]",
|
"[All other test staff]",
|
||||||
"…And You!",
|
"…And You!",
|
||||||
},
|
},
|
||||||
@@ -907,6 +908,8 @@ return {
|
|||||||
['tech_l_plus']= {"科研", "瘋狂+", "僅允許spin與PC"},
|
['tech_l_plus']= {"科研", "瘋狂+", "僅允許spin與PC"},
|
||||||
['tech_finesse']= {"科研", "finesse", "強制finesse"},
|
['tech_finesse']= {"科研", "finesse", "強制finesse"},
|
||||||
['tech_finesse_f']= {"科研", "finesse+", "禁止普通清除,強制finesse"},
|
['tech_finesse_f']= {"科研", "finesse+", "禁止普通清除,強制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挑戰", "簡單", "你能連續做幾個TSD?"},
|
['tsd_e']= {"TSD挑戰", "簡單", "你能連續做幾個TSD?"},
|
||||||
['tsd_h']= {"TSD挑戰", "困難", "你能連續做幾個TSD?"},
|
['tsd_h']= {"TSD挑戰", "困難", "你能連續做幾個TSD?"},
|
||||||
['tsd_u']= {"TSD挑戰", "極限", "你能連續做幾個TSD?"},
|
['tsd_u']= {"TSD挑戰", "極限", "你能連續做幾個TSD?"},
|
||||||
|
|||||||
@@ -105,7 +105,6 @@ return {
|
|||||||
{name='pc_inf', x=1100, y=-280, size=40,shape=2,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','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='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'}},
|
{name='tech_n', x=400, y=20, size=40,shape=1,icon="tech", unlock={'tech_n_plus','tech_h'}},
|
||||||
@@ -115,17 +114,19 @@ return {
|
|||||||
{name='tech_l', x=400, y=320, size=40,shape=1,icon="tech", unlock={'tech_l_plus'}},
|
{name='tech_l', x=400, y=320, size=40,shape=1,icon="tech", unlock={'tech_l_plus'}},
|
||||||
{name='tech_l_plus', x=200, y=290, size=35,shape=3,icon="tech"},
|
{name='tech_l_plus', x=200, y=290, size=35,shape=3,icon="tech"},
|
||||||
|
|
||||||
{name='tech_finesse', x=800, y=20, size=40,shape=1,icon="tech", unlock={'tech_finesse_f'}},
|
{name='tech_finesse', x=800, y=20, size=40,shape=1,icon="tech", unlock={'tech_finesse_f','tech_finesse_lock'}},
|
||||||
{name='tech_finesse_f', x=1000, y=20, size=40,shape=1,icon="tech"},
|
{name='tech_finesse_f', x=1000, y=20, size=40,shape=1,icon="tech"},
|
||||||
|
{name='tech_finesse_lock', x=900, y=170, size=40,shape=1,icon="tech", unlock={'tech_finesse_lock_f'}},
|
||||||
|
{name='tech_finesse_lock_f', x=1100, y=170, size=40,shape=1,icon="tech"},
|
||||||
|
|
||||||
{name='tsd_e', x=720, y=170, size=40,shape=1,icon="tsd", unlock={'tsd_h'}},
|
{name='tsd_e', x=700, y=170, size=40,shape=1,icon="tsd", unlock={'tsd_h'}},
|
||||||
{name='tsd_h', x=960, y=170, size=40,shape=1,icon="tsd", unlock={'tsd_u'}},
|
{name='tsd_h', x=850, y=320, size=40,shape=1,icon="tsd", unlock={'tsd_u'}},
|
||||||
{name='tsd_u', x=1200, y=170, size=40,shape=1,icon="tsd"},
|
{name='tsd_u', x=1050, y=320, size=40,shape=1,icon="tsd"},
|
||||||
|
|
||||||
{name='backfire_n', x=650, y=320, size=40,shape=1,icon="backfire", unlock={'backfire_h'}},
|
{name='backfire_n', x=650, y=320, size=40,shape=1,icon="backfire", unlock={'backfire_h'}},
|
||||||
{name='backfire_h', x=850, y=320, size=40,shape=1,icon="backfire", unlock={'backfire_l'}},
|
{name='backfire_h', x=850, y=470, size=40,shape=1,icon="backfire", unlock={'backfire_l'}},
|
||||||
{name='backfire_l', x=1050, y=320, size=40,shape=3,icon="backfire", unlock={'backfire_u'}},
|
{name='backfire_l', x=1050, y=470, size=40,shape=3,icon="backfire", unlock={'backfire_u'}},
|
||||||
{name='backfire_u', x=1250, y=320, size=35,shape=2,icon="backfire"},
|
{name='backfire_u', x=1250, y=470, size=35,shape=2,icon="backfire"},
|
||||||
|
|
||||||
{name='zen', x=-1000, y=-600, size=40,shape=1,icon="zen", unlock={'ultra','infinite','infinite_dig','marathon_inf'}},
|
{name='zen', x=-1000, y=-600, size=40,shape=1,icon="zen", unlock={'ultra','infinite','infinite_dig','marathon_inf'}},
|
||||||
{name='ultra', x=-1200, y=-600, size=40,shape=1,icon="ultra"},
|
{name='ultra', x=-1200, y=-600, size=40,shape=1,icon="ultra"},
|
||||||
|
|||||||
@@ -10,6 +10,13 @@ local function tech_check_hard(P)
|
|||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local function display(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
|
||||||
|
|
||||||
return {
|
return {
|
||||||
env={
|
env={
|
||||||
@@ -17,6 +24,7 @@ return {
|
|||||||
drop=1e99,lock=60,
|
drop=1e99,lock=60,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
fineKill=true,
|
fineKill=true,
|
||||||
|
mesDisp=display,
|
||||||
hook_drop=tech_check_hard,
|
hook_drop=tech_check_hard,
|
||||||
bg='flink',bgm='infinite',
|
bg='flink',bgm='infinite',
|
||||||
},
|
},
|
||||||
|
|||||||
28
parts/modes/tech_finesse_lock.lua
Normal file
28
parts/modes/tech_finesse_lock.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
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,
|
||||||
|
}
|
||||||
28
parts/modes/tech_finesse_lock_f.lua
Normal file
28
parts/modes/tech_finesse_lock_f.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
return {
|
||||||
|
env={
|
||||||
|
arr=0,
|
||||||
|
drop=1e99,lock=60,
|
||||||
|
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,
|
||||||
|
}
|
||||||
@@ -242,14 +242,28 @@ local function _mergeFuncTable(f,L)
|
|||||||
end
|
end
|
||||||
return L
|
return L
|
||||||
end
|
end
|
||||||
|
local hooks = {
|
||||||
|
'mesDisp',
|
||||||
|
'hook_left',
|
||||||
|
'hook_left_manual',
|
||||||
|
'hook_left_auto',
|
||||||
|
'hook_right',
|
||||||
|
'hook_right_manual',
|
||||||
|
'hook_right_auto',
|
||||||
|
'hook_rotLeft',
|
||||||
|
'hook_rotRight',
|
||||||
|
'hook_rot180',
|
||||||
|
'hook_drop',
|
||||||
|
'hook_die',
|
||||||
|
'task'
|
||||||
|
}
|
||||||
local function _applyGameEnv(P)-- Finish gameEnv processing
|
local function _applyGameEnv(P)-- Finish gameEnv processing
|
||||||
local ENV=P.gameEnv
|
local ENV=P.gameEnv
|
||||||
|
|
||||||
-- Apply events
|
-- Apply events
|
||||||
ENV.mesDisp=_mergeFuncTable(ENV.mesDisp,{})
|
for i=1,#hooks do
|
||||||
ENV.hook_drop=_mergeFuncTable(ENV.hook_drop,{})
|
ENV[hooks[i]]=_mergeFuncTable(ENV[hooks[i]],{})
|
||||||
ENV.hook_die=_mergeFuncTable(ENV.hook_die,{})
|
end
|
||||||
ENV.task=_mergeFuncTable(ENV.task,{})
|
|
||||||
|
|
||||||
-- Apply eventSet
|
-- Apply eventSet
|
||||||
if ENV.eventSet and ENV.eventSet~="X" then
|
if ENV.eventSet and ENV.eventSet~="X" then
|
||||||
@@ -257,12 +271,7 @@ local function _applyGameEnv(P)-- Finish gameEnv processing
|
|||||||
local eventSet=require('parts.eventsets.'..ENV.eventSet)
|
local eventSet=require('parts.eventsets.'..ENV.eventSet)
|
||||||
if eventSet then
|
if eventSet then
|
||||||
for k,v in next,eventSet do
|
for k,v in next,eventSet do
|
||||||
if
|
if TABLE.find(hooks,k) then
|
||||||
k=='mesDisp' or
|
|
||||||
k=='hook_drop' or
|
|
||||||
k=='hook_die' or
|
|
||||||
k=='task'
|
|
||||||
then
|
|
||||||
_mergeFuncTable(v,ENV[k])
|
_mergeFuncTable(v,ENV[k])
|
||||||
elseif type(v)=='table' then
|
elseif type(v)=='table' then
|
||||||
ENV[k]=TABLE.copy(v)
|
ENV[k]=TABLE.copy(v)
|
||||||
|
|||||||
@@ -226,8 +226,10 @@ function Player:act_moveLeft(auto)
|
|||||||
end
|
end
|
||||||
if self.cur then
|
if self.cur then
|
||||||
if self.cur and not self:ifoverlap(self.cur.bk,self.curX-1,self.curY) then
|
if self.cur and not self:ifoverlap(self.cur.bk,self.curX-1,self.curY) then
|
||||||
|
self:_triggerEvent('hook_left')
|
||||||
|
self:_triggerEvent('hook_left_'..(auto and 'auto' or 'manual'))
|
||||||
self:createMoveFX('left')
|
self:createMoveFX('left')
|
||||||
self.curX=self.curX-1
|
self.curX=self.curX+self.movDir
|
||||||
self:freshBlock('move')
|
self:freshBlock('move')
|
||||||
if not auto then
|
if not auto then
|
||||||
self.moving=0
|
self.moving=0
|
||||||
@@ -248,8 +250,10 @@ function Player:act_moveRight(auto)
|
|||||||
end
|
end
|
||||||
if self.cur then
|
if self.cur then
|
||||||
if self.cur and not self:ifoverlap(self.cur.bk,self.curX+1,self.curY) then
|
if self.cur and not self:ifoverlap(self.cur.bk,self.curX+1,self.curY) then
|
||||||
|
self:_triggerEvent('hook_right')
|
||||||
|
self:_triggerEvent('hook_right_'..(auto and 'auto' or 'manual'))
|
||||||
self:createMoveFX('right')
|
self:createMoveFX('right')
|
||||||
self.curX=self.curX+1
|
self.curX=self.curX+self.movDir
|
||||||
self:freshBlock('move')
|
self:freshBlock('move')
|
||||||
if not auto then
|
if not auto then
|
||||||
self.moving=0
|
self.moving=0
|
||||||
@@ -267,6 +271,7 @@ function Player:act_rotRight()
|
|||||||
if self.cur then
|
if self.cur then
|
||||||
self.ctrlCount=self.ctrlCount+1
|
self.ctrlCount=self.ctrlCount+1
|
||||||
self:spin(1)
|
self:spin(1)
|
||||||
|
self:_triggerEvent('hook_rotRight')
|
||||||
self.keyPressing[3]=false
|
self.keyPressing[3]=false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -275,6 +280,7 @@ function Player:act_rotLeft()
|
|||||||
if self.cur then
|
if self.cur then
|
||||||
self.ctrlCount=self.ctrlCount+1
|
self.ctrlCount=self.ctrlCount+1
|
||||||
self:spin(3)
|
self:spin(3)
|
||||||
|
self:_triggerEvent('hook_rotLeft')
|
||||||
self.keyPressing[4]=false
|
self.keyPressing[4]=false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -283,6 +289,7 @@ function Player:act_rot180()
|
|||||||
if self.cur then
|
if self.cur then
|
||||||
self.ctrlCount=self.ctrlCount+2
|
self.ctrlCount=self.ctrlCount+2
|
||||||
self:spin(2)
|
self:spin(2)
|
||||||
|
self:_triggerEvent('hook_rot180')
|
||||||
self.keyPressing[5]=false
|
self.keyPressing[5]=false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ local function _moveMap(dx,dy)
|
|||||||
local k=_getK()
|
local k=_getK()
|
||||||
local x,y=_getPos()
|
local x,y=_getPos()
|
||||||
if x>1300 and dx<0 or x<-1500 and dx>0 then dx=0 end
|
if x>1300 and dx<0 or x<-1500 and dx>0 then dx=0 end
|
||||||
if y>420 and dy<0 or y<-1900 and dy>0 then dy=0 end
|
if y>620 and dy<0 or y<-1900 and dy>0 then dy=0 end
|
||||||
mapCam.xOy:translate(dx/k,dy/k)
|
mapCam.xOy:translate(dx/k,dy/k)
|
||||||
end
|
end
|
||||||
function scene.wheelMoved(_,dy)
|
function scene.wheelMoved(_,dy)
|
||||||
|
|||||||
Reference in New Issue
Block a user