diff --git a/parts/modes/classic_fast.lua b/parts/modes/classic_fast.lua index ba3457a4..381c64fa 100644 --- a/parts/modes/classic_fast.lua +++ b/parts/modes/classic_fast.lua @@ -1,19 +1,5 @@ local gc=love.graphics local format=string.format -local function check_LVup(P) - if P.stat.row>=P.gameEnv.target then - P.gameEnv.target=P.gameEnv.target+10 - if P.gameEnv.target==110 then - P.gameEnv.drop,P.gameEnv.lock=2,2 - SFX.play("blip_1") - elseif P.gameEnv.target==200 then - P.gameEnv.drop,P.gameEnv.lock=1,1 - SFX.play("blip_1") - else - SFX.play("reach") - end - end -end return{ color=COLOR.lBlue, @@ -29,7 +15,20 @@ return{ RS="Classic", freshLimit=0, face={0,0,2,2,2,0,0}, - target=10,dropPiece=check_LVup, + target=10,dropPiece=function(P) + if P.stat.row>=P.gameEnv.target then + P.gameEnv.target=P.gameEnv.target+10 + if P.gameEnv.target==110 then + P.gameEnv.drop,P.gameEnv.lock=2,2 + SFX.play("blip_1") + elseif P.gameEnv.target==200 then + P.gameEnv.drop,P.gameEnv.lock=1,1 + SFX.play("blip_1") + else + SFX.play("reach") + end + end + end, bg="rgb",bgm="magicblock", }, slowMark=true, diff --git a/parts/modes/marathon_bfmax.lua b/parts/modes/marathon_bfmax.lua index 10c2562a..9780bd8f 100644 --- a/parts/modes/marathon_bfmax.lua +++ b/parts/modes/marathon_bfmax.lua @@ -1,31 +1,30 @@ local gc=love.graphics local dropSpeed={[0]=60,50,40,30,25,20,15,12,9,7,5,4,3,2,1,1,.5,.5,.25,.25} -local function check_LVup(P) - if P.combo>1 or P.b2b>0 or P.lastPiece.row>1 then - if P.combo>1 then P:showText("2x",0,-220,40,"flicker",.3)end - if P.b2b>0 then P:showText("spin",0,-160,40,"flicker",.3)end - if P.lastPiece.row>1 then P:showText("1+",0,-100,40,"flicker",.3)end - P:lose() - return - end - local T=P.modeData.point+10 - if P.stat.row>=T then - if T==200 then - P:win("finish") - else - P.gameEnv.drop=dropSpeed[T/10] - P.modeData.point=T - SFX.play("reach") - end - end -end return{ color=COLOR.yellow, env={ noTele=true, wait=8,fall=20, - target=10,dropPiece=check_LVup, + target=10,dropPiece=function (P) + if P.combo>1 or P.b2b>0 or P.lastPiece.row>1 then + if P.combo>1 then P:showText("2x",0,-220,40,"flicker",.3)end + if P.b2b>0 then P:showText("spin",0,-160,40,"flicker",.3)end + if P.lastPiece.row>1 then P:showText("1+",0,-100,40,"flicker",.3)end + P:lose() + return + end + local T=P.modeData.point+10 + if P.stat.row>=T then + if T==200 then + P:win("finish") + else + P.gameEnv.drop=dropSpeed[T/10] + P.modeData.point=T + SFX.play("reach") + end + end + end, mindas=7,minarr=1,minsdarr=1, bg="bg2",bgm="sugar fairy", }, diff --git a/parts/modes/marathon_n.lua b/parts/modes/marathon_n.lua index 09904f9e..e31a789e 100644 --- a/parts/modes/marathon_n.lua +++ b/parts/modes/marathon_n.lua @@ -1,24 +1,23 @@ local gc=love.graphics -local dropSpeed={[0]=60,50,40,30,25,20,15,12,9,7,5,4,3,2,1,1,.5,.5,.25,.25} -local function check_LVup(P) - local T=P.modeData.point+10 - if P.stat.row>=T then - if T==200 then - P:win("finish") - else - P.gameEnv.drop=dropSpeed[T/10] - P.modeData.point=T - SFX.play("reach") - end - end -end +local dropSpeed={[0]=60,50,40,30,24,18,14,10,8,6,5,4,3,2,1,1,.5,.5,.25,.25} return{ color=COLOR.green, env={ noTele=true, wait=8,fall=20, - dropPiece=check_LVup, + dropPiece=function(P) + local T=P.modeData.point+10 + if P.stat.row>=T then + if T==200 then + P:win("finish") + else + P.gameEnv.drop=dropSpeed[T/10] + P.modeData.point=T + SFX.play("reach") + end + end + end, mindas=7,minarr=1,minsdarr=1, bg="bg2",bgm="push", }, diff --git a/parts/modes/master_phantasm.lua b/parts/modes/master_phantasm.lua index aabafc93..43a1a029 100644 --- a/parts/modes/master_phantasm.lua +++ b/parts/modes/master_phantasm.lua @@ -1,133 +1,4 @@ local gc=love.graphics -local function check_LVup(P) - local p=P.modeData.point+P.lastPiece.row - if p>=P.gameEnv.target then - local ENV=P.gameEnv - local T=ENV.target - --Stage 1: clear 3 techrash - if T==12 then--Stage 2: swap color of S/Z & J/L - P.waiting=30 - P.curMission=false - - ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1] - ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3] - - ENV.lock=14 - ENV.wait=7 - ENV.fall=7 - P:setNext(4) - - ENV.target=26 - SFX.play("reach") - elseif T==26 then--Stage 3: dig to bottom - if not P.holdQueue[1]then P.life=P.life+1 end--1 up if ban hold - P.waiting=45 - ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1] - ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3] - - for i=1,10 do - if P.field[i]then - for j=1,10 do - if P.field[i][j]>0 then - P.field[i][j]=17 - P.visTime[i][j]=15 - end - end - for _=1,5 do - P.field[i][P:RND(10)]=0 - end - else - P.field[i]=FREEROW.get(0) - P.visTime[i]=FREEROW.get(30) - for j=1,10 do - if P:RND()>.9 then - P.field[i][j]=math.random(16) - end - end - P.field[i][P:RND(10)]=0 - end - P.field[i].garbage=true - end - P.garbageBeneath=10 - for i=1,10 do - P:createClearingFX(i,1.5) - end - SYSFX.newShade(2.5,P.absFieldX,P.y+300*P.size,300*P.size,300*P.size) - - ENV.lock=13 - ENV.wait=6 - ENV.fall=6 - P:setNext(5) - - ENV.target=42 - SFX.play("reach") - elseif T==42 then--Stage 4: survive in high speed - if P.garbageBeneath==0 then - P.waiting=30 - ENV.lock=11 - P:setNext(6) - P:setHold(false) - ENV.bone=true - - ENV.target=62 - else - p=41 - end - elseif T==62 then--Stage 5: survive without easy-fresh rule - P.life=1 - ENV.lock=13 - ENV.wait=5 - ENV.fall=5 - - ENV.easyFresh=false - - ENV.target=126 - SFX.play("reach") - elseif T==126 then--Stage 6: speed up - P.life=P.life+1 - - ENV.lock=11 - ENV.wait=4 - ENV.fall=4 - - ENV.target=162 - elseif T==162 then--Stage 7: speed up+++ - P.life=P.life+1 - - ENV.lock=10 - - P:setHold(true) - P:setInvisible(180) - - ENV.target=226 - SFX.play("reach") - elseif T==226 then--Stage 8: final invisible - P.life=P.life+2 - - ENV.bone=false - P:setInvisible(90) - - ENV.target=259 - SFX.play("reach") - elseif T==259 then--Stage 9: ending - P.life=P.life+1 - for i=1,7 do ENV.skin[i]=math.random(16)end - - P:setInvisible(40) - ENV.lock=15 - P.curMission=1 - ENV.mission={4,4,4,4,4,4,4,4} - ENV.missionKill=false - - ENV.target=260 - p=260 - SFX.play("blip_2") - else - p=260 - end - end - P.modeData.point=p -end return{ color=COLOR.black, @@ -138,7 +9,135 @@ return{ wait=10,fall=10, nextCount=2, sequence="his4", - target=12,dropPiece=check_LVup, + target=12,dropPiece=function(P) + local p=P.modeData.point+P.lastPiece.row + if p>=P.gameEnv.target then + local ENV=P.gameEnv + local T=ENV.target + --Stage 1: clear 3 techrash + if T==12 then--Stage 2: swap color of S/Z & J/L + P.waiting=30 + P.curMission=false + + ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1] + ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3] + + ENV.lock=14 + ENV.wait=7 + ENV.fall=7 + P:setNext(4) + + ENV.target=26 + SFX.play("reach") + elseif T==26 then--Stage 3: dig to bottom + if not P.holdQueue[1]then P.life=P.life+1 end--1 up if ban hold + P.waiting=45 + ENV.skin[1],ENV.skin[2]=ENV.skin[2],ENV.skin[1] + ENV.skin[3],ENV.skin[4]=ENV.skin[4],ENV.skin[3] + + for i=1,10 do + if P.field[i]then + for j=1,10 do + if P.field[i][j]>0 then + P.field[i][j]=17 + P.visTime[i][j]=15 + end + end + for _=1,5 do + P.field[i][P:RND(10)]=0 + end + else + P.field[i]=FREEROW.get(0) + P.visTime[i]=FREEROW.get(30) + for j=1,10 do + if P:RND()>.9 then + P.field[i][j]=math.random(16) + end + end + P.field[i][P:RND(10)]=0 + end + P.field[i].garbage=true + end + P.garbageBeneath=10 + for i=1,10 do + P:createClearingFX(i,1.5) + end + SYSFX.newShade(2.5,P.absFieldX,P.y+300*P.size,300*P.size,300*P.size) + + ENV.lock=13 + ENV.wait=6 + ENV.fall=6 + P:setNext(5) + + ENV.target=42 + SFX.play("reach") + elseif T==42 then--Stage 4: survive in high speed + if P.garbageBeneath==0 then + P.waiting=30 + ENV.lock=11 + P:setNext(6) + P:setHold(false) + ENV.bone=true + + ENV.target=62 + else + p=41 + end + elseif T==62 then--Stage 5: survive without easy-fresh rule + P.life=1 + ENV.lock=13 + ENV.wait=5 + ENV.fall=5 + + ENV.easyFresh=false + + ENV.target=126 + SFX.play("reach") + elseif T==126 then--Stage 6: speed up + P.life=P.life+1 + + ENV.lock=11 + ENV.wait=4 + ENV.fall=4 + + ENV.target=162 + elseif T==162 then--Stage 7: speed up+++ + P.life=P.life+1 + + ENV.lock=10 + + P:setHold(true) + P:setInvisible(180) + + ENV.target=226 + SFX.play("reach") + elseif T==226 then--Stage 8: final invisible + P.life=P.life+2 + + ENV.bone=false + P:setInvisible(90) + + ENV.target=259 + SFX.play("reach") + elseif T==259 then--Stage 9: ending + P.life=P.life+1 + for i=1,7 do ENV.skin[i]=math.random(16)end + + P:setInvisible(40) + ENV.lock=15 + P.curMission=1 + ENV.mission={4,4,4,4,4,4,4,4} + ENV.missionKill=false + + ENV.target=260 + p=260 + SFX.play("blip_2") + else + p=260 + end + end + P.modeData.point=p + end, mission={4,4,4,64}, missionKill=true, freshLimit=12,