diff --git a/parts/player/draw.lua b/parts/player/draw.lua index 362764f7..c9ae176b 100644 --- a/parts/player/draw.lua +++ b/parts/player/draw.lua @@ -443,7 +443,7 @@ function draw.norm(P) gc.rectangle("fill",0,602,300*P.lockDelay/ENV.lock,6)--Lock delay indicator end local x=3 - for _=1,min(ENV.freshLimit-P.freshTime,15)do + for _=1,min(P.freshTime,15)do gc.rectangle("fill",x,615,14,5) x=x+20 end diff --git a/parts/player/init.lua b/parts/player/init.lua index 50621be5..9b950ba7 100644 --- a/parts/player/init.lua +++ b/parts/player/init.lua @@ -225,6 +225,7 @@ local function applyGameEnv(P)--Finish gameEnv processing P._20G=ENV.drop==0 P.dropDelay=ENV.drop P.lockDelay=ENV.lock + P.freshTime=ENV.freshLimit P.color={} for _=1,7 do diff --git a/parts/player/player.lua b/parts/player/player.lua index d5dc75f4..99c7f83c 100644 --- a/parts/player/player.lua +++ b/parts/player/player.lua @@ -381,9 +381,9 @@ function Player.freshBlock(P,keepGhost,control,system) if control then if ENV.easyFresh then local d0=ENV.lock - if P.lockDelay0 then if not system then - P.freshTime=P.freshTime+1 + P.freshTime=P.freshTime-1 end P.lockDelay=d0 P.dropDelay=ENV.drop @@ -396,8 +396,8 @@ function Player.freshBlock(P,keepGhost,control,system) else if P.curY0 then + P.freshTime=P.freshTime-1 P.dropDelay=ENV.drop P.lockDelay=ENV.lock end @@ -500,7 +500,7 @@ function Player.spin(P,d,ifpre) end for test=1,#iki do local x,y=ix+iki[test][1],iy+iki[test][2] - if not P:ifoverlap(icb,x,y)and(P.freshTime<=P.gameEnv.freshLimit or iki[test][2]<0)then + if not P:ifoverlap(icb,x,y)and(P.freshTime>=0 or iki[test][2]<0)then ix,iy=x,y if P.gameEnv.moveFX and P.gameEnv.block then P:createMoveFX() @@ -513,7 +513,7 @@ function Player.spin(P,d,ifpre) P:freshBlock(false,true) end if iki[test][2]>0 and not P.gameEnv.easyFresh then - P.freshTime=P.freshTime+1 + P.freshTime=P.freshTime-1 end if P.sound then @@ -546,10 +546,8 @@ function Player.hold(P,ifpre) P.cur,P.holdQueue[N]=H,C--Swap hold H,C=P.holdQueue[N],P.cur - if P.nextQueue[1]or C then--Make hold available in fixed sequence - if P.gameEnv.oncehold then - P.holdTime=P.holdTime-1 - end + if P.gameEnv.oncehold and(P.nextQueue[1]or C)then--Make hold available in fixed sequence + P.holdTime=P.holdTime-1 end if H then @@ -577,7 +575,7 @@ function Player.hold(P,ifpre) P:freshBlock(false,true) P.dropDelay=P.gameEnv.drop P.lockDelay=P.gameEnv.lock - P.freshTime=max(P.freshTime-5,int(P.gameEnv.freshLimit*(P.gameEnv.holdCount-P.holdTime)/P.gameEnv.holdCount)) + P.freshTime=int(min(P.freshTime+P.gameEnv.freshLimit*.25,P.gameEnv.freshLimit*((P.holdTime+1)/P.gameEnv.holdCount))) if P:ifoverlap(P.cur.bk,P.curX,P.curY)then P:lock()P:lose()end end @@ -624,7 +622,7 @@ function Player.popNext(P)--Pop next queue to hand P.dropDelay=P.gameEnv.drop P.lockDelay=P.gameEnv.lock - P.freshTime=0 + P.freshTime=P.gameEnv.freshLimit if P.cur then if P:ifoverlap(P.cur.bk,P.curX,P.curY)then