diff --git a/parts/modes/tsd_h.lua b/parts/modes/tsd_h.lua index 92fa6989..0f396915 100644 --- a/parts/modes/tsd_h.lua +++ b/parts/modes/tsd_h.lua @@ -1,8 +1,17 @@ +local gc=love.graphics local function check_tsd(P) local C=P.lastPiece if C.row>0 then if C.id==5 and C.row==2 and C.spin then - P.modeData.tsd=P.modeData.tsd+1 + local L=P.modeData.history + if L[1]==C.centX and L[1]==L[2]and L[1]==L[3]then + P:showText("STACK",0,-140,40,'flicker',.3) + P:lose() + else + P.modeData.tsd=P.modeData.tsd+1 + table.insert(L,1,C.centX) + L[4]=nil + end else P:lose() end @@ -13,8 +22,9 @@ return{ color=COLOR.magenta, env={ drop=30,lock=60, - freshLimit=8, + freshLimit=15, dropPiece=check_tsd, + task=function(P)P.modeData.history={}end, ospin=false, bg='matrix',bgm='vapor', }, @@ -22,6 +32,15 @@ return{ setFont(60) mStr(P.modeData.tsd,63,250) mText(drawableText.tsd,63,315) + local L=P.modeData.history + if L[1]and L[1]==L[2]and L[1]==L[3]then + gc.push('transform') + PLY.draw.applyFieldOffset(P) + gc.translate(0,P.fieldBeneath+P.fieldUp) + gc.setColor(1,.5,.5,.2) + gc.rectangle('fill',30*L[1]-30,0,30,600) + gc.pop() + end end, score=function(P)return{P.modeData.tsd,P.stat.time}end, scoreDisp=function(D)return D[1].."TSD "..STRING.time(D[2])end, @@ -32,8 +51,8 @@ return{ T>=20 and 5 or T>=18 and 4 or T>=15 and 3 or - T>=10 and 2 or - T>=4 and 1 or - T>=1 and 0 + T>=11 and 2 or + T>=7 and 1 or + T>=3 and 0 end, } \ No newline at end of file