自定义游戏高级设置加入新增功能,最高场地高度机制微调,增加可视化

This commit is contained in:
MrZ626
2021-05-13 14:47:17 +08:00
parent a04438dbf8
commit 70408e4a2e
11 changed files with 97 additions and 65 deletions

View File

@@ -213,6 +213,8 @@ customEnv0={
--Rule
sequence='bag',
fieldH=20,
heightLimit=1e99,
bufferLimit=1e99,
ospin=true,
fineKill=false,

View File

@@ -438,19 +438,23 @@ return{
holdCount="Hold",
infHold="Infinite Hold",
phyHold="In-place Hold",
bone="Bone Blocks",
fieldH="Field Height",
ospin="O-Spin",
deepDrop="Deep Drop",
visible="Visibility",
freshLimit="Lock Reset Limit",
easyFresh="Normal Lock Reset",
fineKill="100% Finesse",
b2bKill="No B2B break",
opponent="Opponent",
life="Lives",
pushSpeed="Garbage Speed",
bufferLimit="Buffer Limit",
heightLimit="Height Limit",
initSkip="Initial Skip",
ospin="O-Spin",
fineKill="100% Finesse",
b2bKill="No B2B break",
easyFresh="Normal Lock Reset",
deepDrop="Deep Drop",
bone="Bone Blocks",
},
custom_field={
title="Custom Game",

View File

@@ -410,19 +410,23 @@ return{
holdCount="Réserve",
infHold="Réserver une fois",
-- phyHold="Physical Hold",
bone="Crochets",
-- fieldH="Field height",
ospin="O-spin",
-- deepDrop="Deep Drop",
visible="Visibilité",
freshLimit="Limite de réinit. du délai de verrouillage",
easyFresh="Réinit. de verrouillage normale",
fineKill="100% Finesse",
b2bKill="Sans perte de B2B",
opponent="Adversaire",
life="Vie",
pushSpeed="Vitesse des lignes indésirables",
-- bufferLimit="Buffer Limit",
-- heightLimit="Height Limit",
-- initSkip="Initial Skip",
ospin="O-spin",
fineKill="100% Finesse",
b2bKill="Sans perte de B2B",
easyFresh="Réinit. de verrouillage normale",
-- deepDrop="Deep Drop",
bone="Crochets",
},
custom_field={
title="Mode personnalisé",

View File

@@ -438,19 +438,23 @@ return{
holdCount="Segurar",
infHold="Segurar Infinito",
-- phyHold="Physical Hold",
bone="Bone Blocks",
-- fieldH="Field height",
ospin="O-Spin",
-- deepDrop="Deep Drop",
visible="Visibilidade",
freshLimit="Limite Reset de Trava",
easyFresh="Reset De Trava Normal",
fineKill="100% Finesse",
b2bKill="Sem Quebrar B2B",
opponent="Oponente",
life="Vidas",
pushSpeed="Velocidade De Lixo",
-- bufferLimit="Buffer Limit",
-- heightLimit="Height Limit",
-- initSkip="Initial Skip",
ospin="O-Spin",
fineKill="100% Finesse",
b2bKill="Sem Quebrar B2B",
easyFresh="Reset De Trava Normal",
-- deepDrop="Deep Drop",
bone="Bone Blocks",
},
custom_field={
title="Jogo Costumizado",

View File

@@ -411,20 +411,23 @@ return{
holdCount="Reserva",
infHold="Reserva Inft.",
phyHold="Reserva Limit.",
bone="Bone Block",
fieldH="Altura del tablero",
ospin="O-Spin",
deepDrop="Deep Drop",
target="Objetivo",
visible="Visibilidad",
freshLimit="Límite de Reinicio LD",
easyFresh="Reinicio de Bloqueo Normal",
fineKill="100% Finesse",
b2bKill="No Romper B2B ",
opponent="Oponente",
life="Vida",
pushSpeed="Velocidad de Basura",
-- bufferLimit="Buffer Limit",
-- heightLimit="Height Limit",
-- initSkip="Initial Skip",
ospin="O-Spin",
fineKill="100% Finesse",
b2bKill="No Romper B2B ",
easyFresh="Reinicio de Bloqueo Normal",
deepDrop="Deep Drop",
bone="Bone Block",
},
custom_field={
title="Juego Personalizado",

View File

@@ -294,19 +294,23 @@ return{
holdCount="[ ]",
infHold="∞*[ ]",
phyHold="P-[ ]",
bone="[]",
fieldH="↑[]↓",
ospin="O→Any",
deepDrop="\\↓↓/",
visible="?=",
freshLimit="@",
easyFresh="↓_↓_↓_",
fineKill="12 XX 21",
b2bKill="_1 XX",
opponent="^_^",
life="<R>",
pushSpeed="_↑_↑_",
bufferLimit="^↑",
heightLimit="#↑",
initSkip="X→→",
ospin="O→Any",
fineKill="12 XX 21",
b2bKill="_1 XX",
easyFresh="↓_↓_↓_",
deepDrop="\\↓↓/",
bone="[]",
},
custom_field={
title="!@#$%^&*",

View File

@@ -437,19 +437,23 @@ return{
holdCount="Hold",
infHold="无限Hold",
phyHold="物理Hold",
bone="骨块",
fieldH="场地高度",
ospin="O-spin",
deepDrop="深降",
visible="能见度",
freshLimit="锁延刷新限制",
easyFresh="普通刷新锁延",
fineKill="强制极简",
b2bKill="强制B2B",
opponent="对手",
life="命数",
pushSpeed="上涨速度",
bufferLimit="缓冲上限",
heightLimit="高度上限",
initSkip="开局跳块",
ospin="O-spin",
fineKill="强制极简",
b2bKill="强制B2B",
easyFresh="普通刷新锁延",
deepDrop="深降",
bone="骨块",
},
custom_field={
title="自定义游戏",

View File

@@ -571,6 +571,10 @@ function draw.norm(P)
gc_setLineWidth(4)
gc_line(0,fieldTop-FBN,300,fieldTop-FBN)
--Draw height limit line
gc_setColor(.4,.7+sin(t*12)*.3,1,.7)
gc_rectangle('fill',0,-ENV.heightLimit*30-FBN-2,300,4)
--Draw FXs
drawFXs(P)

View File

@@ -1,15 +1,11 @@
return{
das=10,
arr=2,
das=10,arr=2,
dascut=0,
sddas=2,
sdarr=2,
ihs=true,
irs=true,
ims=true,
sddas=2,sdarr=2,
ihs=true,irs=true,ims=true,
swap=true,
ghost=.3,center=1,
block=true,ghost=.3,center=1,
smooth=false,grid=.16,
upEdge=true,
bagLine=true,
@@ -32,7 +28,7 @@ return{
drop=60,lock=60,
wait=0,fall=0,
bone=false,
fieldH=20,maxOver=1e99,
fieldH=20,heightLimit=1e99,
nextCount=6,nextStartPos=1,
holdCount=1,infHold=false,phyHold=false,
ospin=true,deepDrop=false,initSkip=false,
@@ -45,7 +41,6 @@ return{
life=0,
garbageSpeed=1,
pushSpeed=3,
block=true,
noTele=false,
visible='show',
freshLimit=1e99,easyFresh=true,

View File

@@ -277,7 +277,7 @@ function Player:garbageRise(color,amount,line)--Release n-lines garbage to field
_=self.dropFX[i]
_[3],_[5]=_[3]+amount,_[5]+amount
end
if #self.field>self.gameEnv.fieldH+self.gameEnv.maxOver then self:lose()end
if #self.field>self.gameEnv.heightLimit then self:lose()end
end
local invList={2,1,4,3,5,6,7}
@@ -1444,6 +1444,9 @@ do--Player.drop(self)--Place piece
end
end
--Check height limit
if cc==0 and #self.field>ENV.heightLimit then self:lose()end
--Update stat
Stat.score=Stat.score+cscore
Stat.piece=Stat.piece+1

View File

@@ -1,10 +1,12 @@
local sList={
fieldH={1,2,3,4,6,8,10,15,20,30,50,100},
visible={"show","easy","slow","medium","fast","none"},
freshLimit={0,8,15,1e99},
opponent={"X","9S Lv.1","9S Lv.2","9S Lv.3","9S Lv.4","9S Lv.5","CC Lv.1","CC Lv.2","CC Lv.3","CC Lv.4","CC Lv.5"},
life={0,1,2,3,5,10,15,26,42,87,500},
pushSpeed={1,2,3,5,15},
fieldH={1,2,3,4,6,8,10,15,20,30,50,100},
heightLimit={2,3,4,6,8,10,15,20,30,50,100,150,200,1e99},
bufferLimit={4,6,10,15,20,40,100,1e99},
}
local scene={}
@@ -14,25 +16,28 @@ scene.widgetList={
WIDGET.newText{name="subTitle", x=530,y=50,font=35,align='L',color='H'},
--Control
WIDGET.newSlider{name="nextCount", x=200, y=150, w=200,unit=6, disp=CUSval("nextCount"),code=CUSsto("nextCount")},
WIDGET.newSlider{name="holdCount", x=200, y=240, w=200,unit=6, disp=CUSval("holdCount"),code=CUSsto("holdCount")},
WIDGET.newSwitch{name="infHold", x=350, y=340, disp=CUSval("infHold"), code=CUSrev("infHold"),hide=function()return CUSTOMENV.holdCount==0 end},
WIDGET.newSwitch{name="phyHold", x=350, y=430, disp=CUSval("phyHold"), code=CUSrev("phyHold"),hide=function()return CUSTOMENV.holdCount==0 end},
WIDGET.newSlider{name="nextCount", x=180, y=150, w=200,unit=6, disp=CUSval("nextCount"),code=CUSsto("nextCount")},
WIDGET.newSlider{name="holdCount", x=180, y=240, w=200,unit=6, disp=CUSval("holdCount"),code=CUSsto("holdCount")},
WIDGET.newSwitch{name="infHold", x=330, y=340, disp=CUSval("infHold"),code=CUSrev("infHold"),hide=function()return CUSTOMENV.holdCount==0 end},
WIDGET.newSwitch{name="phyHold", x=330, y=430, disp=CUSval("phyHold"),code=CUSrev("phyHold"),hide=function()return CUSTOMENV.holdCount==0 end},
WIDGET.newSwitch{name="initSkip", x=330, y=530, font=25, disp=CUSval("initSkip"),code=CUSrev("initSkip")},
--Rule
WIDGET.newSelector{name="fieldH", x=270, y=520, w=260,color='N',list=sList.fieldH, disp=CUSval("fieldH"),code=CUSsto("fieldH")},
WIDGET.newSelector{name="visible", x=840, y=60, w=260,color='lB',list=sList.visible, disp=CUSval("visible"),code=CUSsto("visible")},
WIDGET.newSelector{name="freshLimit",x=840, y=160, w=260,color='V',list=sList.freshLimit, disp=CUSval("freshLimit"),code=CUSsto("freshLimit")},
WIDGET.newSelector{name="opponent", x=1120, y=60, w=260,color='R',list=sList.opponent, disp=CUSval("opponent"),code=CUSsto("opponent")},
WIDGET.newSelector{name="life", x=1120, y=160, w=260,color='R',list=sList.life, disp=CUSval("life"),code=CUSsto("life")},
WIDGET.newSelector{name="pushSpeed",x=1120, y=260, w=260,color='R',list=sList.pushSpeed, disp=CUSval("pushSpeed"),code=CUSsto("pushSpeed")},
WIDGET.newSelector{name="visible", x=840, y=60, w=260,color='lB',list=sList.visible, disp=CUSval("visible"), code=CUSsto("visible")},
WIDGET.newSelector{name="freshLimit",x=840, y=160, w=260,color='V',list=sList.freshLimit, disp=CUSval("freshLimit"), code=CUSsto("freshLimit")},
WIDGET.newSelector{name="opponent", x=1120, y=60, w=260,color='R',list=sList.opponent, disp=CUSval("opponent"), code=CUSsto("opponent")},
WIDGET.newSelector{name="life", x=1120, y=160, w=260,color='R',list=sList.life, disp=CUSval("life"), code=CUSsto("life")},
WIDGET.newSelector{name="pushSpeed",x=1120, y=260, w=260,color='R',list=sList.pushSpeed, disp=CUSval("pushSpeed"), code=CUSsto("pushSpeed")},
WIDGET.newSwitch{name="ospin", x=870, y=350, font=30,disp=CUSval("ospin"), code=CUSrev("ospin")},
WIDGET.newSwitch{name="fineKill", x=870, y=440, font=20,disp=CUSval("fineKill"),code=CUSrev("fineKill")},
WIDGET.newSwitch{name="b2bKill", x=870, y=530, font=20,disp=CUSval("b2bKill"), code=CUSrev("b2bKill")},
WIDGET.newSwitch{name="easyFresh", x=1160, y=350, font=20,disp=CUSval("easyFresh"),code=CUSrev("easyFresh")},
WIDGET.newSwitch{name="deepDrop", x=1160, y=440, font=30,disp=CUSval("deepDrop"),code=CUSrev("deepDrop")},
WIDGET.newSwitch{name="bone", x=1160, y=530, disp=CUSval("bone"), code=CUSrev("bone")},
WIDGET.newSelector{name="fieldH", x=570, y=350, w=260,color='N',list=sList.fieldH, disp=CUSval("fieldH"), code=CUSsto("fieldH")},
WIDGET.newSelector{name="heightLimit",x=570,y=440, w=260,color='S',list=sList.heightLimit, disp=CUSval("heightLimit"), code=CUSsto("heightLimit")},
WIDGET.newSelector{name="bufferLimit",x=570,y=520, w=260,color='O',list=sList.bufferLimit, disp=CUSval("bufferLimit"), code=CUSsto("bufferLimit")},
WIDGET.newSwitch{name="ospin", x=880, y=350, font=30,disp=CUSval("ospin"), code=CUSrev("ospin")},
WIDGET.newSwitch{name="fineKill", x=880, y=440, font=20,disp=CUSval("fineKill"), code=CUSrev("fineKill")},
WIDGET.newSwitch{name="b2bKill", x=880, y=530, font=20,disp=CUSval("b2bKill"), code=CUSrev("b2bKill")},
WIDGET.newSwitch{name="easyFresh", x=1160, y=350, font=20,disp=CUSval("easyFresh"), code=CUSrev("easyFresh")},
WIDGET.newSwitch{name="deepDrop", x=1160, y=440, font=30,disp=CUSval("deepDrop"), code=CUSrev("deepDrop")},
WIDGET.newSwitch{name="bone", x=1160, y=530, disp=CUSval("bone"), code=CUSrev("bone")},
WIDGET.newButton{name="back", x=1140, y=640, w=170,h=80, font=40,code=backScene},
}