From 195429c67cdb7596fd0892c3959ef71005f87aba Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Sat, 7 Nov 2020 01:34:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=A9=E5=AE=B6lastClear=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=B8=BAlastPiece,=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=A8=A1=E5=BC=8F=E8=8A=B1=E6=A0=B7=E6=9B=B4=E5=A4=9A?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modes/c4wtrain_normal.lua | 2 +- modes/marathon_ultimate.lua | 4 +- modes/master_phantasm.lua | 232 ++++++++++++++++++------------------ modes/tech_finesse2.lua | 5 +- modes/tech_hard2.lua | 5 +- modes/tech_lunatic2.lua | 5 +- modes/tech_normal2.lua | 5 +- modes/tsd_easy.lua | 4 +- modes/tsd_hard.lua | 4 +- modes/tsd_ultimate.lua | 4 +- parts/player.lua | 21 ++-- 11 files changed, 146 insertions(+), 145 deletions(-) diff --git a/modes/c4wtrain_normal.lua b/modes/c4wtrain_normal.lua index 92a2b4d0..133556dd 100644 --- a/modes/c4wtrain_normal.lua +++ b/modes/c4wtrain_normal.lua @@ -1,6 +1,6 @@ local min=math.min local function check_c4w(P) - if #P.clearedRow>0 then + if #P.lastPiece.row>0 then for _=1,#P.clearedRow do P.field[#P.field+1]=FREEROW.get(13) P.visTime[#P.visTime+1]=FREEROW.get(20) diff --git a/modes/marathon_ultimate.lua b/modes/marathon_ultimate.lua index 07964747..78778720 100644 --- a/modes/marathon_ultimate.lua +++ b/modes/marathon_ultimate.lua @@ -1,10 +1,10 @@ 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.lastClear.row>1 then + 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.lastClear.row>1 then P:showText("1+",0,-100,40,"flicker",.3)end + if P.lastPiece.row>1 then P:showText("1+",0,-100,40,"flicker",.3)end P:lose() return end diff --git a/modes/master_phantasm.lua b/modes/master_phantasm.lua index 1e812adb..e90a9b59 100644 --- a/modes/master_phantasm.lua +++ b/modes/master_phantasm.lua @@ -1,134 +1,132 @@ local gc=love.graphics local function check_LVup(P) - if #P.clearedRow>0 then - local p=P.modeData.point+P.lastClear.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=nil + 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=nil - 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.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 - ENV.next=4 + ENV.lock=14 + ENV.wait=7 + ENV.fall=7 + ENV.next=4 - ENV.target=26 - SFX.play("reach") - elseif T==26 then--Stage 3: dig to bottom - if not P.hd 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] + ENV.target=26 + SFX.play("reach") + elseif T==26 then--Stage 3: dig to bottom + if not P.hd 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 + 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 - P.field[i][11]=true - end - P.garbageBeneath=10 - for i=1,10 do - P:createClearingFX(i,1.5) - end - sysFX.newShade(.4,1,1,1,P.x+150*P.size,P.y+370*P.size,300*P.size,300*P.size) - - ENV.lock=13 - ENV.wait=6 - ENV.fall=6 - ENV.next=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 - ENV.next=6 - ENV.hold=false - ENV.bone=true - - ENV.target=62 else - p=41 + 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 - 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 - - ENV.hold=true - P.keepVisible=false - P.showTime=180 - - ENV.target=226 - SFX.play("reach") - elseif T==226 then--Stage 8: final invisible - P.life=P.life+2 - - ENV.bone=false - P.showTime=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.showTime=40 - ENV.lock=15 - P.curMission=1 - ENV.mission={4,4,4,4,4,4,4,4} - ENV.missionKill=false - - ENV.target=260 - SFX.play("blip_2") - else - p=P.result=="WIN"and 260 or 259 + P.field[i][11]=true end + P.garbageBeneath=10 + for i=1,10 do + P:createClearingFX(i,1.5) + end + sysFX.newShade(.4,1,1,1,P.x+150*P.size,P.y+370*P.size,300*P.size,300*P.size) + + ENV.lock=13 + ENV.wait=6 + ENV.fall=6 + ENV.next=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 + ENV.next=6 + ENV.hold=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 + + ENV.hold=true + P.keepVisible=false + P.showTime=180 + + ENV.target=226 + SFX.play("reach") + elseif T==226 then--Stage 8: final invisible + P.life=P.life+2 + + ENV.bone=false + P.showTime=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.showTime=40 + ENV.lock=15 + P.curMission=1 + ENV.mission={4,4,4,4,4,4,4,4} + ENV.missionKill=false + + ENV.target=260 + SFX.play("blip_2") + else + p=P.result=="WIN"and 260 or 259 end - P.modeData.point=p end + P.modeData.point=p end return{ diff --git a/modes/tech_finesse2.lua b/modes/tech_finesse2.lua index 3408d8c1..c7eea2c3 100644 --- a/modes/tech_finesse2.lua +++ b/modes/tech_finesse2.lua @@ -1,8 +1,9 @@ local format=string.format local int=math.floor local function tech_check_hard(P) - if #P.clearedRow>0 then - if not P.lastClear.special then + local C=P.lastPiece + if C.row>0 then + if not C.special then P:lose() return end diff --git a/modes/tech_hard2.lua b/modes/tech_hard2.lua index cf5df31b..f8cb642b 100644 --- a/modes/tech_hard2.lua +++ b/modes/tech_hard2.lua @@ -1,8 +1,9 @@ local format=string.format local int=math.floor local function tech_check_hard(P) - if #P.clearedRow>0 then - if not(P.lastClear.spin or P.lastClear.pc)then + local C=P.lastPiece + if C.row>0 then + if not(C.spin or C.pc)then P:lose() return end diff --git a/modes/tech_lunatic2.lua b/modes/tech_lunatic2.lua index 4298c70c..2073bd84 100644 --- a/modes/tech_lunatic2.lua +++ b/modes/tech_lunatic2.lua @@ -1,8 +1,9 @@ local format=string.format local int=math.floor local function tech_check_hard(P) - if #P.clearedRow>0 then - if not(P.lastClear.spin or P.lastClear.pc)then + local C=P.lastPiece + if C.row>0 then + if not(C.spin or C.pc)then P:lose() return end diff --git a/modes/tech_normal2.lua b/modes/tech_normal2.lua index 27af2cf7..fb4ec62a 100644 --- a/modes/tech_normal2.lua +++ b/modes/tech_normal2.lua @@ -1,8 +1,9 @@ local format=string.format local int=math.floor local function tech_check_hard(P) - if #P.clearedRow>0 then - if not(P.lastClear.spin or P.lastClear.pc)then + local C=P.lastPiece + if C.row>0 then + if not(C.spin or C.pc)then P:lose() return end diff --git a/modes/tsd_easy.lua b/modes/tsd_easy.lua index d5c763ae..1fbbab4b 100644 --- a/modes/tsd_easy.lua +++ b/modes/tsd_easy.lua @@ -1,6 +1,6 @@ local function check_tsd(P) - if #P.clearedRow>0 then - local C=P.lastClear + local C=P.lastPiece + if C.row>0 then if C.id==5 and C.row==2 and C.spin then P.modeData.event=P.modeData.event+1 else diff --git a/modes/tsd_hard.lua b/modes/tsd_hard.lua index 427291a1..488d5f0a 100644 --- a/modes/tsd_hard.lua +++ b/modes/tsd_hard.lua @@ -1,6 +1,6 @@ local function check_tsd(P) - if #P.clearedRow>0 then - local C=P.lastClear + local C=P.lastPiece + if C.row>0 then if C.id==5 and C.row==2 and C.spin then P.modeData.event=P.modeData.event+1 else diff --git a/modes/tsd_ultimate.lua b/modes/tsd_ultimate.lua index c536a1da..c0420680 100644 --- a/modes/tsd_ultimate.lua +++ b/modes/tsd_ultimate.lua @@ -1,6 +1,6 @@ local function check_tsd(P) - if #P.clearedRow>0 then - local C=P.lastClear + local C=P.lastPiece + if C.row>0 then if C.id==5 and C.row==2 and C.spin then P.modeData.event=P.modeData.event+1 else diff --git a/parts/player.lua b/parts/player.lua index f331518f..79da58e9 100644 --- a/parts/player.lua +++ b/parts/player.lua @@ -1408,13 +1408,11 @@ local function newEmptyPlayer(id,x,y,size) P.freshTime=0 P.spinLast=false - P.lastClear={ - id=1,--block id - name=1,--block name + P.lastPiece={ + id=0,name=0,--block id/name row=0,--line cleared - spin=false,--if spin - mini=false,--if mini - pc=false,--if pc + spin=false,mini=false,--if spin/mini + pc=false,hpc=false,--if pc/hpc special=false,--if special clear (spin, >=4, pc) } P.spinSeq=0--For Ospin, each digit mean a spin @@ -2291,11 +2289,13 @@ do--player.drop(P)--Place piece if P.sound then SFX.fieldPlay("lock",nil,P)end end + local C=P.lastPiece + C.id,C.name=CB.id,CB.name + C.row=cc + C.spin,C.mini=dospin,false + C.pc,C.hpc=false,false + C.special=false if cc>0 then--If lines cleared, about 200 lines below - local C=P.lastClear - C.id,C.name=CB.id,CB.name - C.row=cc - C.spin=dospin cmb=cmb+1 if dospin then cscore=(spinSCR[CB.name]or spinSCR[8])[cc] @@ -2375,7 +2375,6 @@ do--player.drop(P)--Place piece end --PC/HPC bonus - C.pc,C.hpc=false,false if clear and #P.field==0 then P:showText(text.PC,0,-80,50,"flicker") atk=atk*.5+min(8+STAT.pc*2,20)