Resolve change requests part 2

This commit is contained in:
SweetSea-ButImNotSweet
2024-01-08 13:37:00 +07:00
parent 536174220d
commit 888f2f6074
7 changed files with 68 additions and 64 deletions

View File

@@ -803,7 +803,7 @@ function selector:press(x)
end end
end end
if self.select~=s then if self.select~=s then
self.code(self.list[s]) self.code(self.list[s],s)
self.select=s self.select=s
self.selText=self.list[s] self.selText=self.list[s]
if self.sound then if self.sound then

View File

@@ -998,7 +998,7 @@ do-- function resetGameData(args)
coroutine.yield() coroutine.yield()
local counter=0 local counter=0
if GAME.modUsed then if usingMod() then
SFX.play('collect',.2) SFX.play('collect',.2)
TEXT.show(GAME.modApplyAt,640,26,45,'spin') TEXT.show(GAME.modApplyAt,640,26,45,'spin')
for _=1,90 do coroutine.yield() end for _=1,90 do coroutine.yield() end

View File

@@ -372,41 +372,41 @@ do-- Mod data
{no=0,id="NX",name="next", {no=0,id="NX",name="next",
key="q",x=80,y=230,color='lO', key="q",x=80,y=230,color='lO',
list={0,1,2,3,4,5,6}, list={0,1,2,3,4,5,6},
funcInit=function(P,O) P.gameEnv.nextCount=O end, funcInit =function(P,O) P.gameEnv.nextCount=O end,
funcOnce=_lockVfunc('nextCount'), funcOnce =_lockVfunc('nextCount'),
}, },
{no=1,id="HL",name="hold", {no=1,id="HL",name="hold",
key="w",x=200,y=230,color='lO', key="w",x=200,y=230,color='lO',
list={0,1,2,3,4,5,6}, list={0,1,2,3,4,5,6},
funcInit=function(P,O) P.gameEnv.holdCount=O end, funcInit =function(P,O) P.gameEnv.holdCount=O end,
funcOnce=_lockVfunc('holdCount'), funcOnce =_lockVfunc('holdCount'),
}, },
{no=2,id="FL",name="hideNext", {no=2,id="FL",name="hideNext",
key="e",x=320,y=230,color='lA', key="e",x=320,y=230,color='lA',
list={1,2,3,4,5}, list={1,2,3,4,5},
funcInit=function(P,O) P.gameEnv.nextStartPos=O+1 end, funcInit =function(P,O) P.gameEnv.nextStartPos=O+1 end,
funcOnce=_lockVfunc('nextStartPos'), funcOnce =_lockVfunc('nextStartPos'),
}, },
{no=3,id="IH",name="infHold", {no=3,id="IH",name="infHold",
key="r",x=440,y=230,color='lA', key="r",x=440,y=230,color='lA',
funcInit=function(P) P.gameEnv.infHold=true end, funcInit =function(P) P.gameEnv.infHold=true end,
funcOnce=_lockVfunc('infHold'), funcOnce =_lockVfunc('infHold'),
}, },
{no=4,id="HB",name="hideBlock", {no=4,id="HB",name="hideBlock",
key="y",x=680,y=230,color='lV', key="y",x=680,y=230,color='lV',
funcInit=function(P) P.gameEnv.block=false end, funcInit =function(P) P.gameEnv.block=false end,
funcOnce=_lockVfunc('block'), funcOnce =_lockVfunc('block'),
}, },
{no=5,id="HG",name="hideGhost", {no=5,id="HG",name="hideGhost",
key="u",x=800,y=230,color='lV', key="u",x=800,y=230,color='lV',
funcInit=function(P) P.gameEnv.ghost=false end, funcInit =function(P) P.gameEnv.ghost=false end,
funcOnce=function(P) P.gameEnv.ghost=false; P.gameEnv.__lock('ghost') end, funcOnce =function(P) P.gameEnv.ghost=false; P.gameEnv.__lock('ghost') end,
}, },
{no=6,id="HD",name="hidden", {no=6,id="HD",name="hidden",
key="i",x=920,y=230,color='lP', key="i",x=920,y=230,color='lP',
list={'easy','slow','medium','fast','none'}, list={'easy','slow','medium','fast','none'},
funcInit=function(P,O) P.gameEnv.visible=O end, funcInit =function(P,O) P.gameEnv.visible=O end,
funcRepe=function(P,O) funcRepeat=function(P,O)
if P.showTime~=_invisibleTime[O] then if P.showTime~=_invisibleTime[O] then
P:setInvisible(_invisibleTime[O]) P:setInvisible(_invisibleTime[O])
end end
@@ -415,20 +415,20 @@ do-- Mod data
{no=7,id="HB",name="hideBoard", {no=7,id="HB",name="hideBoard",
key="o",x=1040,y=230,color='lP', key="o",x=1040,y=230,color='lP',
list={'down','up','all'}, list={'down','up','all'},
funcInit=function(P,O) P.gameEnv.hideBoard=O end, funcInit =function(P,O) P.gameEnv.hideBoard=O end,
}, },
{no=8,id="FB",name="flipBoard", {no=8,id="FB",name="flipBoard",
key="p",x=1160,y=230,color='lJ', key="p",x=1160,y=230,color='lJ',
list={'U-D','L-R','180'}, list={'U-D','L-R','180'},
funcInit=function(P,O) P.gameEnv.flipBoard=O end, funcInit =function(P,O) P.gameEnv.flipBoard=O end,
funcOnce=_lockVfunc('flipBoard'), funcOnce =_lockVfunc('flipBoard'),
}, },
{no=9,id="DT",name="dropDelay", {no=9,id="DT",name="dropDelay",
key="a",x=140,y=350,color='lR', key="a",x=140,y=350,color='lR',
list={0,.125,.25,.5,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99}, list={0,.125,.25,.5,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
funcInit=function(P,O) P.gameEnv.drop=O end, funcInit =function(P,O) P.gameEnv.drop=O end,
funcRepe=function(P,O) funcRepeat=function(P,O)
if P.dropDelay~=O then if P.dropDelay~=O then
P.gameEnv.drop=O P.gameEnv.drop=O
P:set20G(O==0) P:set20G(O==0)
@@ -438,45 +438,45 @@ do-- Mod data
{no=10,id="LT",name="lockDelay", {no=10,id="LT",name="lockDelay",
key="s",x=260,y=350,color='lR', key="s",x=260,y=350,color='lR',
list={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99}, list={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
funcInit=function(P,O) P.gameEnv.lock=O end, funcInit =function(P,O) P.gameEnv.lock=O end,
funcRepe=function(P,O) P.dropDelay=O end, funcRepeat=function(P,O) P.dropDelay=O end,
}, },
{no=11,id="ST",name="waitDelay", {no=11,id="ST",name="waitDelay",
key="d",x=380,y=350,color='lR', key="d",x=380,y=350,color='lR',
list={0,1,2,3,4,5,6,7,8,10,15,20,30,60}, list={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
funcInit=function(P,O) P.gameEnv.wait=O end, funcInit =function(P,O) P.gameEnv.wait=O end,
funcOnce=_lockVfunc('waitDelay'), funcOnce =_lockVfunc('waitDelay'),
}, },
{no=12,id="CT",name="fallDelay", {no=12,id="CT",name="fallDelay",
key="f",x=500,y=350,color='lR', key="f",x=500,y=350,color='lR',
list={0,1,2,3,4,5,6,7,8,10,15,20,30,60}, list={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
funcInit=function(P,O) P.gameEnv.fall=O end, funcInit =function(P,O) P.gameEnv.fall=O end,
funcOnce=_lockVfunc('fallDelay'), funcOnce =_lockVfunc('fallDelay'),
}, },
{no=13,id="LF",name="life", {no=13,id="LF",name="life",
key="j",x=860,y=350,color='lY', key="j",x=860,y=350,color='lY',
list={0,1,2,3,5,10,15,26,42,87,500}, list={0,1,2,3,5,10,15,26,42,87,500},
funcInit=function(P,O) P.gameEnv.life=O end, funcInit =function(P,O) P.gameEnv.life=O end,
funcOnce=_lockVfunc('life'), funcOnce =_lockVfunc('life'),
}, },
{no=14,id="FB",name="forceB2B", {no=14,id="FB",name="forceB2B",
key="k",x=980,y=350,color='lY', key="k",x=980,y=350,color='lY',
funcInit=function(P) P.gameEnv.b2bKill=true end, funcInit =function(P) P.gameEnv.b2bKill=true end,
funcOnce=_lockVfunc('b2bKill'), funcOnce =_lockVfunc('b2bKill'),
}, },
{no=15,id="PF",name="forceFinesse", {no=15,id="PF",name="forceFinesse",
key="l",x=1100,y=350,color='lY', key="l",x=1100,y=350,color='lY',
funcInit=function(P) P.gameEnv.fineKill=true end, funcInit =function(P) P.gameEnv.fineKill=true end,
funcOnce=_lockVfunc('fineKill'), funcOnce =_lockVfunc('fineKill'),
}, },
{no=16,id="TL",name="tele", {no=16,id="TL",name="tele",
key="z",x=200,y=470,color='lH', key="z",x=200,y=470,color='lH',
funcInit=function(P) funcInit =function(P)
P.gameEnv.das,P.gameEnv.arr=0,0 P.gameEnv.das,P.gameEnv.arr=0,0
P.gameEnv.sddas,P.gameEnv.sdarr=0,0 P.gameEnv.sddas,P.gameEnv.sdarr=0,0
end, end,
funcOnce=function(P) funcOnce =function(P)
for _,k in pairs{'das','arr','sddas','sdarr'} do for _,k in pairs{'das','arr','sddas','sdarr'} do
P.gameEnv[k]=0 P.gameEnv[k]=0
P.gameEnv.__lock(k) P.gameEnv.__lock(k)
@@ -485,7 +485,7 @@ do-- Mod data
}, },
{no=17,id="FX",name="noRotation", {no=17,id="FX",name="noRotation",
key="x",x=320,y=470,color='lH', key="x",x=320,y=470,color='lH',
funcInit=function(P) funcInit =function(P)
_disableKey(P,3) _disableKey(P,3)
_disableKey(P,4) _disableKey(P,4)
_disableKey(P,5) _disableKey(P,5)
@@ -493,7 +493,7 @@ do-- Mod data
}, },
{no=18,id="GL",name="noMove", {no=18,id="GL",name="noMove",
key="c",x=440,y=470,color='lH', key="c",x=440,y=470,color='lH',
funcInit=function(P) funcInit =function(P)
_disableKey(P,1) _disableKey(P,2) _disableKey(P,1) _disableKey(P,2)
_disableKey(P,11)_disableKey(P,12) _disableKey(P,11)_disableKey(P,12)
_disableKey(P,17)_disableKey(P,18) _disableKey(P,17)_disableKey(P,18)
@@ -503,20 +503,20 @@ do-- Mod data
{no=19,id="CS",name="customSeq", {no=19,id="CS",name="customSeq",
key="b",x=680,y=470,color='lB', key="b",x=680,y=470,color='lB',
list={'bag','bagES','his','hisPool','c2','bagP1inf','rnd','mess','reverb'}, list={'bag','bagES','his','hisPool','c2','bagP1inf','rnd','mess','reverb'},
funcInit=function(P,O) P.gameEnv.sequence=O end, funcInit =function(P,O) P.gameEnv.sequence=O end,
funcOnce=_lockVfunc('sequence'), funcOnce =_lockVfunc('sequence'),
}, },
{no=20,id="PS",name="pushSpeed", {no=20,id="PS",name="pushSpeed",
key="n",x=800,y=470,color='lB', key="n",x=800,y=470,color='lB',
list={.5,1,2,3,5,15,1e99}, list={.5,1,2,3,5,15,1e99},
funcInit=function(P,O) P.gameEnv.pushSpeed=O end, funcInit =function(P,O) P.gameEnv.pushSpeed=O end,
funcOnce=_lockVfunc('pushSpeed'), funcOnce =_lockVfunc('pushSpeed'),
}, },
{no=21,id="BN",name="boneBlock", {no=21,id="BN",name="boneBlock",
key="m",x=920,y=470,color='lB', key="m",x=920,y=470,color='lB',
list={'on','off'}, list={'on','off'},
funcInit=function(P,O) P.gameEnv.bone=O end, funcInit =function(P,O) P.gameEnv.bone=O end,
funcRepe=function(P,O) funcRepeat=function(P,O)
P.gameEnv.bone=O P.gameEnv.bone=O
if O=='on' then if O=='on' then
for _,bk in pairs(P.nextQueue) do bk.color=17 end for _,bk in pairs(P.nextQueue) do bk.color=17 end
@@ -551,6 +551,7 @@ do-- Game data tables
seed=1046101471, -- Game seed seed=1046101471, -- Game seed
curMode=false, -- Current gamemode object curMode=false, -- Current gamemode object
initPlayerCount=0, -- Player count when init game initPlayerCount=0, -- Player count when init game
modUsed=false,
mod=TABLE.new(0,#MODOPT),-- List of loaded mods mod=TABLE.new(0,#MODOPT),-- List of loaded mods
modApplyAt='postInit', -- Apply mod when? (preInit, postInit, always) modApplyAt='postInit', -- Apply mod when? (preInit, postInit, always)
modeEnv=false, -- Current gamemode environment modeEnv=false, -- Current gamemode environment

View File

@@ -1,6 +1,6 @@
Cách chơi: Cách chơi:
Hệ thống sẽ cấp cho người chơi 7 loại tetromino (gạch 4 ô) bao gồm: Z, S, J, L, I, O, T; Hệ thống sẽ cấp cho người chơi 7 loại tetromino (gạch 4 ô) bao gồm: Z, S, J, L, I, O, T;
và người chơi cần điều khiển chúng (di chuyển sang trái và phải; xoay 90 / 180 / 270 độ). và người chơi cần điều khiển chúng (di chuyển sang trái và phải; xoay 90 / 180 / 270 độ).
Cứ mỗi hàng được lấp đầy trong bảng bởi các viên gạch, chúng sẽ bị xóa ra khỏi bảng. Cứ mỗi hàng được lấp đầy trong bảng bởi các viên gạch, chúng sẽ bị xóa ra khỏi bảng.
Nếu có đối thủ, đối thủ sẽ bị tấn công mạnh hoặc nhẹ tùy theo số hàng bạn gửi. Nếu có đối thủ, đối thủ sẽ bị tấn công mạnh hoặc nhẹ tùy theo số hàng bạn gửi.
Chơi hết hoặc đạt mục tiêu của cấp độ để thắng. Chơi hết hoặc đạt mục tiêu của cấp độ để thắng.
@@ -25,19 +25,19 @@ Cách phát hiện spin: bằng cách sử dụng hệ thống điểm.
Hệ thống tấn công: Hệ thống tấn công:
Kiểu xóa nâng cao (Special clear): Kiểu xóa đặc biệt (Special clear):
Kiểu xóa nâng cao chỉ trường hợp bạn thực hiện Spin, Techrash, Techrash+ — xóa 5 hàng hoặc hơn, PC, HPC. Kiểu xóa đặc biệt chỉ trường hợp bạn thực hiện Spin, Techrash, Techrash+ — xóa 5 hàng hoặc hơn, PC, HPC.
Kiểu xóa nâng cao có thể sạc đầy thanh B2B. Kiểu xóa đặc biệt có thể sạc đầy thanh B2B.
Kiểu xóa Siêu cấp (Super clear): Kiểu xóa Siêu cấp (Super clear):
Là Kiểu xóa nâng cao nhưng được thực hiện với B2B hoặc B3B Là Kiểu xóa đặc biệt nhưng được thực hiện với B2B hoặc B3B
Kiểu xóa nâng cao (spin): Gửi gấp đôi số hàng vừa xóa. Kiểu xóa đặc biệt (spin): Gửi gấp đôi số hàng vừa xóa.
— B2B gửi thêm 1/1/2/4/8 cho Spin Đơn/Spin Đôi/Spin Tam/Techrash/Techrash+ — B2B gửi thêm 1/1/2/4/8 cho Spin Đơn/Spin Đôi/Spin Tam/Techrash/Techrash+
— B2B2B gửi thêm (số hàng xóa × 0.5) trên B2B và +1 hàng để đánh chặn — B2B2B gửi thêm (số hàng xóa × 0.5) trên B2B và +1 hàng để đánh chặn
— Mini sẽ bị cắt chỉ còn ¼ so với giá trị ban đầu — Mini sẽ bị cắt chỉ còn ¼ so với giá trị ban đầu
Kiểu xóa nâng cao (Techrash/Techrash+ nhưng không spin): Kiểu xóa đặc biệt (Techrash/Techrash+ nhưng không spin):
— B2B gửi thêm 1 hàng — B2B gửi thêm 1 hàng
— B3B boost 50% tấn công và +1 hàng để đánh chặn — B3B boost 50% tấn công và +1 hàng để đánh chặn
@@ -64,7 +64,7 @@ Thanh Back to Back (B2B):
Một người chơi đang ở trang thái B3B khi thanh có hơn 800 điểm. Một người chơi đang ở trang thái B3B khi thanh có hơn 800 điểm.
Nếu có hàng được xóa: Nếu có hàng được xóa:
Kiểu xóa nâng cao: Kiểu xóa đặc biệt:
— Spin Đơn/Đôi/Tam/Techrash/Techrash+ lần lượt cộng thêm 50/100/180/800/1000 (×50% nếu là Mini) — Spin Đơn/Đôi/Tam/Techrash/Techrash+ lần lượt cộng thêm 50/100/180/800/1000 (×50% nếu là Mini)
— Techrash +150 điểm, nếu xóa hơn 4 hàng cùng lúc, mỗi hàng từ hàng thứ 5 trở đi cộng thêm 50 điểm. — Techrash +150 điểm, nếu xóa hơn 4 hàng cùng lúc, mỗi hàng từ hàng thứ 5 trở đi cộng thêm 50 điểm.
— PC từ thứ 4 trở đi có giá trị 800 điểm — PC từ thứ 4 trở đi có giá trị 800 điểm
@@ -82,12 +82,13 @@ Hệ thống tính điểm:
Việc tính điểm cũng độc lập tùy vào từng chế độ. Việc tính điểm cũng độc lập tùy vào từng chế độ.
Khoảng thời gian chờ trước khi tấn công: Khoảng thời gian chờ trước khi gây sát thương:
Một đòn sát thương sẽ không có hiệu lực ngay lập tức để người chơi có chút thời gian phản ứng trước khi tràn vào bảng. Một đòn sát thương sẽ không có hiệu lực ngay lập tức
Thời gian chờ của các đòn tấn công như sau, sắp xếp từ nhanh nhất tới lâu nhất: để người chơi có chút thời gian phản ứng trước khi chúng có hiệu lực (rác tràn vào bảng).
Thời gian chờ của các đòn tấn công như sau, xếp từ ngắn nhất tới dài nhất:
— Double và Triple (Đôi và Tam) là nhanh nhất — Double và Triple (Đôi và Tam) là nhanh nhất
— Theo sau là Techrash, Techrash+, spin; Mini, B2B và B3B có thêm thêm chút thời gian chờ nữa. — Theo sau là Techrash, Techrash+, spin; Mini, B2B và B3B có thêm thêm chút thời gian chờ nữa.
— Sát thương từ combo có thời gian chờ lâu nhất.. — Sát thương từ combo có thời gian chờ lâu nhất.
Phản công: Phản công:

View File

@@ -205,7 +205,7 @@ local function _executeMod(P)
if applyStatus=='always' then if applyStatus=='always' then
if M.funcOnce then if M.funcOnce then
M.funcOnce(P,M.list and M.list[GAME.mod[i]]) M.funcOnce(P,M.list and M.list[GAME.mod[i]])
elseif M.funcRepe then elseif M.funcRepeat then
table.insert(GAME.modCodeList[P.id],function() M.funcInit(P,M.list and M.list[GAME.mod[i]]) end) table.insert(GAME.modCodeList[P.id],function() M.funcInit(P,M.list and M.list[GAME.mod[i]]) end)
else else
M.funcInit(P,M.list and M.list[GAME.mod[i]]) M.funcInit(P,M.list and M.list[GAME.mod[i]])

View File

@@ -379,11 +379,11 @@ local commands={} do
} }
commands.viewlog={ commands.viewlog={
code=goScene('viewLog'), code=goScene('viewLog'),
description="View crashes' log", description="View crash logs",
details={ details={
"Open crashes' log to view right at the spot", "Open the crash logs menu",
"", "",
"Usage: viewLog" "Usage: viewlog"
} }
} }
commands.scrinfo={ commands.scrinfo={
@@ -487,7 +487,9 @@ local commands={} do
commands.setbg={ commands.setbg={
code=function(name) code=function(name)
if name~="" then if name~="" then
if name~=BG.cur then if SETTING.lockBG then
log{"Background ",C.R,"locked",C.Z,"! Please unlock background first."}
elseif name~=BG.cur then
if BG.set(name) then if BG.set(name) then
log(("Background set to '%s'"):format(name)) log(("Background set to '%s'"):format(name))
else else
@@ -511,7 +513,7 @@ local commands={} do
code=function(name) code=function(name)
if name~="" then if name~="" then
if SETTING.noTheme then if SETTING.noTheme then
log{"Theme is ",C.R,"disabled",C.Z,"! Please re-enable it before trying this command again"} log{"Theme is ",C.R,"disabled",C.Z,"! Please re-enable theme first."}
else else
if THEME.set(name) then if THEME.set(name) then
log("Theme set to: "..name) log("Theme set to: "..name)

View File

@@ -108,9 +108,9 @@ function scene.draw()
GC.rotate(t) GC.rotate(t)
local rad,side=45,5 local rad,side=45,5
if GAME.modApplyAt=='always' then if GAME.modApplyAt=='always' then
if M.funcRepe then side=nil if M.funcRepeat then side=nil
elseif M.funcOnce then side=8 elseif M.funcOnce then side=8
else side=5 end else side=5 end
end end
local color=M.color local color=M.color
GC.setColor(color[1],color[2],color[3],5*t) GC.setColor(color[1],color[2],color[3],5*t)