From f261906f1a16d39a5f2c2f2321c591c89fcc5e48 Mon Sep 17 00:00:00 2001 From: MrZ_26 Date: Tue, 4 Feb 2020 19:37:06 +0800 Subject: [PATCH] =?UTF-8?q?0.7.28+=CE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SFX/error.ogg | Bin 0 -> 12980 bytes SFX/error_long.ogg | Bin 0 -> 29894 bytes ai.lua | 9 +- conf.lua | 2 +- dataList.lua | 14 ++ font.ttf | Bin 106968 -> 105556 bytes image/icon.png | Bin 17396 -> 15532 bytes language/chi.lua | 4 +- language/chi_full.lua | 4 +- language/eng.lua | 6 +- list.lua | 13 +- main.lua | 14 +- paint.lua | 48 +++--- player.lua | 365 +++++++++++++++++++++++++++--------------- toolfunc.lua | 17 +- updateLog.lua | 8 + 16 files changed, 327 insertions(+), 177 deletions(-) create mode 100644 SFX/error.ogg create mode 100644 SFX/error_long.ogg diff --git a/SFX/error.ogg b/SFX/error.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0943e66037a91ab0c58208cec321a9caf80d64d3 GIT binary patch literal 12980 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 z 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 E0EhujlK=n! literal 0 HcmV?d00001 diff --git a/SFX/error_long.ogg b/SFX/error_long.ogg new file mode 100644 index 0000000000000000000000000000000000000000..170f142e5a91d23fc175c27e94958542ad0c0be4 GIT binary patch literal 29894 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 z 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 P^YZ0o9N%jg9_0T30MvVK literal 0 HcmV?d00001 diff --git a/ai.lua b/ai.lua index d5db0603..7f0ab2bf 100644 --- a/ai.lua +++ b/ai.lua @@ -119,9 +119,8 @@ local function ifoverlapAI(f,bk,x,y) end end end local function resetField(f0,f,start) - ::L::if f[start]then + while f[start]do removeRow(f,start) - goto L end for i=start,#f0 do f[i]=getNewRow(0) @@ -148,9 +147,8 @@ local function getScore(field,cb,cy) if #field==0 then return 1e99 end--PC best for x=1,10 do local h=#field - ::L::if field[h][x]==0 and h>1 then + while field[h][x]==0 and h>1 do h=h-1 - goto L end height[x]=h if x>3 and x<8 and h>highest then highest=h end @@ -204,9 +202,8 @@ AI_think={ local cb=blocks[bn][dir] for cx=1,11-#cb[1]do--each pos local cy=#Tfield+1 - ::L::if not ifoverlapAI(Tfield,cb,cx,cy-1)then + while not ifoverlapAI(Tfield,cb,cx,cy-1)do cy=cy-1 - goto L end--move to bottom for i=1,#cb do local y=cy+i-1 diff --git a/conf.lua b/conf.lua index 8a99bee5..a8ad05dd 100644 --- a/conf.lua +++ b/conf.lua @@ -1,4 +1,4 @@ -gameVersion="Alpha V0.7.27+" +gameVersion="Alpha V0.7.28" function love.conf(t) t.identity="Techmino"--Save directory name t.version="11.1" diff --git a/dataList.lua b/dataList.lua index 4a9ce2c0..1fc07f93 100644 --- a/dataList.lua +++ b/dataList.lua @@ -1298,6 +1298,20 @@ defaultModeEnv={ dropPiece="tech_reach_ultimate", bg="matrix",bgm="secret7th", }, + { + drop=1e99,lock=60, + freshLimit=15, + fine=true,fineKill=true, + dropPiece="tech_reach_hard", + bg="flink",bgm="infinite", + }, + { + drop=1e99,lock=60, + freshLimit=15, + fine=true,fineKill=true, + dropPiece="tech_reach_ultimate", + bg="flink",bgm="infinite", + }, }, c4wtrain={ { diff --git a/font.ttf b/font.ttf index 9c53174f76ce6c019c6065693186c9aedf0d706d..4acf34433504a51913687c91644efaecf854d84d 100644 GIT binary patch delta 3090 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 diff --git a/image/icon.png b/image/icon.png index bf564693dabc09c70bee09944194bfd378f40910..072f3c274362f290ab53dcb8ebe30dff2f48add9 100644 GIT binary patch literal 15532 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 then gc.print(text.pauseCount..":["..pauseCount.."] "..format("%0.2f",pauseTime).."s",110,150) end - for i=1,7 do + for i=1,8 do gc.print(text.stat[i+3],110,30*i+270) gc.print(dataOpt(i),305,30*i+270) end - for i=8,14 do - gc.print(text.stat[i+3],860,30*i+60) - gc.print(dataOpt(i),1000,30*i+60) + for i=9,15 do + gc.print(text.stat[i+3],860,30*i+30) + gc.print(dataOpt(i),1000,30*i+30) end setFont(40) if system~="Android"then @@ -592,7 +604,7 @@ end function Pnt.stat() setFont(28) gc.setColor(1,1,1) - for i=1,17 do + for i=1,18 do gc.print(text.stat[i],400,30*i-5) gc.print(statOpt(i),720,30*i-5) end diff --git a/player.lua b/player.lua index c009773c..19a83639 100644 --- a/player.lua +++ b/player.lua @@ -23,6 +23,7 @@ local gameEnv0={ visible="show",--keepVisible=visile~="show" Fkey=NULL,puzzle=false,ospin=true, freshLimit=1e99,easyFresh=true, + fine=false,fineKill=false, target=1e99,dropPiece="null", bg="none",bgm="race" } @@ -50,123 +51,149 @@ local spin_n={[0]="spin_0","spin_1","spin_2","spin_3"} local clear_n={"clear_1","clear_2","clear_3","clear_4"} local ren_n={}for i=1,11 do ren_n[i]="ren_"..i end local blockPos={4,4,4,4,4,5,4} +local TMP1,TMP2,TMP3,TMP4={1,2},{2,1},{2,2},{1.5,1.5}----------save cache local scs={ - {[0]={1,2},{2,1},{2,2},{2,2}}, - {[0]={1,2},{2,1},{2,2},{2,2}}, - {[0]={1,2},{2,1},{2,2},{2,2}}, - {[0]={1,2},{2,1},{2,2},{2,2}}, - {[0]={1,2},{2,1},{2,2},{2,2}}, - {[0]={1.5,1.5},{1.5,1.5},{1.5,1.5},{1.5,1.5},}, + {[0]=TMP1,TMP2,TMP3,TMP3}, + {[0]=TMP1,TMP2,TMP3,TMP3}, + {[0]=TMP1,TMP2,TMP3,TMP3}, + {[0]=TMP1,TMP2,TMP3,TMP3}, + {[0]=TMP1,TMP2,TMP3,TMP3}, + {[0]=TMP4,TMP4,TMP4,TMP4}, {[0]={0.5,2.5},{2.5,0.5},{1.5,2.5},{2.5,1.5}}, } -local ORG={0,0} +local CCblockID={4,3,5,6,1,2,0} +TMP1={0,0} local TRS={ [1]={ - [01]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{0,1} }, - [10]={ORG,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1} }, - [03]={ORG,{1,0}, {1,1}, {0,-2}, {1,-1}, {1,-2} }, - [30]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1}}, - [12]={ORG,{1,0}, {1,-1}, {0,2}, {1,2} }, - [21]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, - [32]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2} }, - [23]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2} }, - [02]={ORG,{1,0}, {-1,0}, {0,-1}, {0,1} }, - [20]={ORG,{-1,0}, {1,0}, {0,1}, {0,-1} }, - [13]={ORG,{0,-1}, {0,1}, {-1,0}, {0,-2} }, - [31]={ORG,{0,1}, {0,-1}, {1,0}, {0,2} }, + [01]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{0,1} }, + [10]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1} }, + [03]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-1}, {1,-2} }, + [30]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1}}, + [12]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2} }, + [21]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, + [32]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2} }, + [23]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2} }, + [02]={TMP1,{1,0}, {-1,0}, {0,-1}, {0,1} }, + [20]={TMP1,{-1,0}, {1,0}, {0,1}, {0,-1} }, + [13]={TMP1,{0,-1}, {0,1}, {-1,0}, {0,-2} }, + [31]={TMP1,{0,1}, {0,-1}, {1,0}, {0,2} }, },--Z [2]={ - [01]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-1},{-1,-2} }, - [10]={ORG,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1}}, - [03]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2}, {0,1} }, - [30]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1} }, - [12]={ORG,{1,0}, {1,-1}, {0,2}, {1,2} }, - [21]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, - [32]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2} }, - [23]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2} }, - [02]={ORG,{-1,0}, {1,0}, {0,-1}, {0,1} }, - [20]={ORG,{1,0}, {-1,0}, {0,1}, {0,-1} }, - [13]={ORG,{0,1}, {0,-1}, {-1,0}, {0,2} }, - [31]={ORG,{0,-1}, {0,1}, {1,0}, {0,-2} }, + [01]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-1},{-1,-2} }, + [10]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1}}, + [03]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2}, {0,1} }, + [30]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1} }, + [12]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2} }, + [21]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, + [32]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2} }, + [23]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2} }, + [02]={TMP1,{-1,0}, {1,0}, {0,-1}, {0,1} }, + [20]={TMP1,{1,0}, {-1,0}, {0,1}, {0,-1} }, + [13]={TMP1,{0,1}, {0,-1}, {-1,0}, {0,2} }, + [31]={TMP1,{0,-1}, {0,1}, {1,0}, {0,-2} }, },--S [3]={ - [01]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{0,1}, {-1,-1} }, - [10]={ORG,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1}, {1,1} }, - [03]={ORG,{1,0}, {1,1}, {0,-2}, {-1,1} }, - [30]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2} }, - [12]={ORG,{1,0}, {1,-1}, {0,2}, {1,2}, {1,1} }, - [21]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{-1,-1} }, - [32]={ORG,{-1,0}, {-1,-1},{1,0}, {0,2}, {-1,2} }, - [23]={ORG,{1,0}, {1,1}, {-1,0}, {0,-2}, {1,-2} }, - [02]={ORG,{1,0}, {-1,0}, {0,-1}, {0,1} }, - [20]={ORG,{-1,0}, {1,0}, {0,1}, {0,-1} }, - [13]={ORG,{0,1}, {1,0}, {0,-1} }, - [31]={ORG,{0,-1}, {-1,0}, {0,1} }, + [01]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{0,1}, {-1,-1} }, + [10]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1}, {1,1} }, + [03]={TMP1,{1,0}, {1,1}, {0,-2}, {-1,1} }, + [30]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2} }, + [12]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2}, {1,1} }, + [21]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{-1,-1} }, + [32]={TMP1,{-1,0}, {-1,-1},{1,0}, {0,2}, {-1,2} }, + [23]={TMP1,{1,0}, {1,1}, {-1,0}, {0,-2}, {1,-2} }, + [02]={TMP1,{1,0}, {-1,0}, {0,-1}, {0,1} }, + [20]={TMP1,{-1,0}, {1,0}, {0,1}, {0,-1} }, + [13]={TMP1,{0,1}, {1,0}, {0,-1} }, + [31]={TMP1,{0,-1}, {-1,0}, {0,1} }, },--L [4]={ - [01]={ORG,{-1,0}, {-1,1}, {0,-2}, {1,1} }, - [10]={ORG,{1,0}, {1,-1}, {0,2}, {1,2} }, - [03]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2}, {0,1}, {1,-1} }, - [30]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1}, {-1,1} }, - [12]={ORG,{1,0}, {1,-1}, {-1,0}, {0,2}, {1,2} }, - [21]={ORG,{-1,0}, {-1,1}, {1,0}, {0,-2}, {-1,-2} }, - [32]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2}, {-1,1} }, - [23]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2}, {1,-1} }, - [02]={ORG,{-1,0}, {1,0}, {0,-1}, {0,1} }, - [20]={ORG,{1,0}, {-1,0}, {0,1}, {0,-1} }, - [13]={ORG,{0,-1}, {1,0}, {0,1} }, - [31]={ORG,{0,1}, {-1,0}, {0,-1} }, + [01]={TMP1,{-1,0}, {-1,1}, {0,-2}, {1,1} }, + [10]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2} }, + [03]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2}, {0,1}, {1,-1} }, + [30]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1}, {-1,1} }, + [12]={TMP1,{1,0}, {1,-1}, {-1,0}, {0,2}, {1,2} }, + [21]={TMP1,{-1,0}, {-1,1}, {1,0}, {0,-2}, {-1,-2} }, + [32]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2}, {-1,1} }, + [23]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2}, {1,-1} }, + [02]={TMP1,{-1,0}, {1,0}, {0,-1}, {0,1} }, + [20]={TMP1,{1,0}, {-1,0}, {0,1}, {0,-1} }, + [13]={TMP1,{0,-1}, {1,0}, {0,1} }, + [31]={TMP1,{0,1}, {-1,0}, {0,-1} }, },--J [5]={ - [01]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{-1,-1} }, - [10]={ORG,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1}, {1,1}}, - [03]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2} }, - [30]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1} }, - [12]={ORG,{1,0}, {1,-1}, {0,-1}, {0,2}, {1,2}, {-1,-1}}, - [21]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{1,1} }, - [32]={ORG,{-1,0}, {-1,-1},{0,-1}, {0,2}, {-1,2}, {1,-1}}, - [23]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2}, {-1,1} }, - [02]={ORG,{-1,0}, {1,0}, {0,1} }, - [20]={ORG,{1,0}, {-1,0}, {0,-1} }, - [13]={ORG,{0,-1}, {0,1}, {1,0}, {0,-2}, {0,2}}, - [31]={ORG,{0,-1}, {0,1}, {-1,0}, {0,-2}, {0,2}}, + [01]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{-1,-1} }, + [10]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2}, {0,-1}, {1,1}}, + [03]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2} }, + [30]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2}, {0,-1} }, + [12]={TMP1,{1,0}, {1,-1}, {0,-1}, {0,2}, {1,2}, {-1,-1}}, + [21]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2},{1,1} }, + [32]={TMP1,{-1,0}, {-1,-1},{0,-1}, {0,2}, {-1,2}, {1,-1}}, + [23]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2}, {-1,1} }, + [02]={TMP1,{-1,0}, {1,0}, {0,1} }, + [20]={TMP1,{1,0}, {-1,0}, {0,-1} }, + [13]={TMP1,{0,-1}, {0,1}, {1,0}, {0,-2}, {0,2}}, + [31]={TMP1,{0,-1}, {0,1}, {-1,0}, {0,-2}, {0,2}}, },--T [6]={},--O(special) [7]={ - [01]={ORG,{0,1}, {1,0}, {-2,0}, {-2,-1},{1,2} }, - [03]={ORG,{0,1}, {-1,0}, {2,0}, {2,-1}, {-1,2} }, - [10]={ORG,{2,0}, {-1,0}, {-1,-2},{2,1}, {0,2} }, - [30]={ORG,{-2,0}, {1,0}, {1,-2}, {-2,1}, {0,2} }, - [12]={ORG,{-1,0}, {2,0}, {-1,2}, {2,-1} }, - [32]={ORG,{1,0}, {-2,0}, {1,-2}, {-2,-1} }, - [21]={ORG,{-2,0}, {1,0}, {1,-2}, {-2,1} }, - [23]={ORG,{2,0}, {-1,0}, {-1,-2},{2,1} }, - [02]={ORG,{-1,0}, {1,0}, {0,-1}, {0,1} }, - [20]={ORG,{1,0}, {-1,0}, {0,1}, {0,-1} }, - [13]={ORG,{0,-1}, {-1,0}, {1,0}, {0,1} }, - [31]={ORG,{1,0}, {-1,0}}, + [01]={TMP1,{0,1}, {1,0}, {-2,0}, {-2,-1},{1,2} }, + [03]={TMP1,{0,1}, {-1,0}, {2,0}, {2,-1}, {-1,2} }, + [10]={TMP1,{2,0}, {-1,0}, {-1,-2},{2,1}, {0,2} }, + [30]={TMP1,{-2,0}, {1,0}, {1,-2}, {-2,1}, {0,2} }, + [12]={TMP1,{-1,0}, {2,0}, {-1,2}, {2,-1} }, + [32]={TMP1,{1,0}, {-2,0}, {1,-2}, {-2,-1} }, + [21]={TMP1,{-2,0}, {1,0}, {1,-2}, {-2,1} }, + [23]={TMP1,{2,0}, {-1,0}, {-1,-2},{2,1} }, + [02]={TMP1,{-1,0}, {1,0}, {0,-1}, {0,1} }, + [20]={TMP1,{1,0}, {-1,0}, {0,1}, {0,-1} }, + [13]={TMP1,{0,-1}, {-1,0}, {1,0}, {0,1} }, + [31]={TMP1,{1,0}, {-1,0}}, } } local AIRS={{ - [01]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, - [10]={ORG,{1,0}, {1,-1}, {0,2}, {1,2} }, - [03]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2} }, - [30]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2} }, - [12]={ORG,{1,0}, {1,-1}, {0,2}, {1,2} }, - [21]={ORG,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, - [32]={ORG,{-1,0}, {-1,-1},{0,2}, {-1,2} }, - [23]={ORG,{1,0}, {1,1}, {0,-2}, {1,-2} }, + [01]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, + [10]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2} }, + [03]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2} }, + [30]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2} }, + [12]={TMP1,{1,0}, {1,-1}, {0,2}, {1,2} }, + [21]={TMP1,{-1,0}, {-1,1}, {0,-2}, {-1,-2} }, + [32]={TMP1,{-1,0}, {-1,-1},{0,2}, {-1,2} }, + [23]={TMP1,{1,0}, {1,1}, {0,-2}, {1,-2} }, }}for i=2,6 do AIRS[i]=AIRS[1]end AIRS[7]={ - [01]={ORG,{-2,0}, {1,0}, {-2,-1},{1,2} }, - [10]={ORG,{2,0}, {-1,0}, {2,1}, {-1,-2} }, - [12]={ORG,{-1,0}, {2,0}, {-1,2}, {2,-1} }, - [21]={ORG,{1,0}, {-2,0}, {1,-2}, {-2,1} }, - [23]={ORG,{2,0}, {-1,0}, {2,1}, {-1,-2} }, - [32]={ORG,{-2,0}, {1,0}, {-2,-1},{1,2} }, - [30]={ORG,{1,0}, {-2,0}, {1,-2}, {-2,1} }, - [03]={ORG,{-1,0}, {2,0}, {-1,2}, {2,-1} }, + [01]={TMP1,{-2,0}, {1,0}, {-2,-1},{1,2} }, + [10]={TMP1,{2,0}, {-1,0}, {2,1}, {-1,-2} }, + [12]={TMP1,{-1,0}, {2,0}, {-1,2}, {2,-1} }, + [21]={TMP1,{1,0}, {-2,0}, {1,-2}, {-2,1} }, + [23]={TMP1,{2,0}, {-1,0}, {2,1}, {-1,-2} }, + [32]={TMP1,{-2,0}, {1,0}, {-2,-1},{1,2} }, + [30]={TMP1,{1,0}, {-2,0}, {1,-2}, {-2,1} }, + [03]={TMP1,{-1,0}, {2,0}, {-1,2}, {2,-1} }, } +local TMP1={ + [1]={ + {1,2,1,0,1,2,2,1}, + {2,2,3,1,1,2,3,2,2}, + },--Z + [3]={ + {1,2,1,0,1,2,2,1}, + {2,2,3,2,1,2,3,3,2}, + {3,4,3,2,3,4,4,3}, + {2,3,2,1,2,3,3,2,2}, + },--L + [6]={ + {1,2,2,1,0,1,2,2,1}, + },--O + [7]={ + {1,2,1,0,1,2,1}, + {2,2,2,2,1,1,2,2,2,2}, + },--I +}--SZI逆态视为顺态,JLT算法相同 +TMP1[2]=TMP1[1] +TMP1[4]=TMP1[3] +TMP1[5]=TMP1[3] +local fineeseCtrlPar=TMP1 +TMP1,TMP2,TMP3,TMP4=nil----------release local CCblockID={4,3,5,6,1,2,0} local freshMethod={ none=NULL, @@ -443,14 +470,15 @@ function newDemoPlayer(id,x,y,size) P.control=true P.timing=false P.stat={ - time=0, - key=0,rotate=0,hold=0,piece=0,row=0, + time=0,score=0, + key=0,extraPiece=0,extraRate=0, + rotate=0,hold=0,piece=0,row=0, atk=0,send=0,recv=0,pend=0, clear_1=0,clear_2=0,clear_3=0,clear_4=0, spin_0=0,spin_1=0,spin_2=0,spin_3=0, - pc=0,b2b=0,b3b=0,score=0, - }--Current gamestat - P.modeData={point=0,event=0}--data use by mode + pc=0,b2b=0,b3b=0, + } + P.modeData={point=0,event=0} P.keyTime={}for i=1,10 do P.keyTime[i]=-1e5 end P.keySpeed=0 P.dropTime={}for i=1,10 do P.dropTime[i]=-1e5 end P.dropSpeed=0 @@ -475,7 +503,7 @@ function newDemoPlayer(id,x,y,size) target=1e99,dropPiece="null", } P.cur={bk={{}},id=0,color=0,name=0} - P.sc,P.dir,P.r,P.c=ORG,0,0,0 + P.sc,P.dir,P.r,P.c={0,0},0,0,0 P.curX,P.curY,P.y_img=0,0,0 P.hd={bk={{}},id=0,color=0,name=0} P.holded=false @@ -485,6 +513,7 @@ function newDemoPlayer(id,x,y,size) P.freshTime=0 P.spinLast,P.lastClear=false,nil P.spinSeq=0 + P.ctrlCount=0 local bag1={1,2,3,4,5,6,7} for i=1,7 do @@ -558,12 +587,13 @@ function newPlayer(id,x,y,size,AIdata) P.control=false P.timing=false P.stat={ - time=0, - key=0,rotate=0,hold=0,piece=0,row=0, + time=0,score=0, + key=0,extraPiece=0,extraRate=0, + rotate=0,hold=0,piece=0,row=0, atk=0,send=0,recv=0,pend=0, clear_1=0,clear_2=0,clear_3=0,clear_4=0, spin_0=0,spin_1=0,spin_2=0,spin_3=0, - pc=0,b2b=0,b3b=0,score=0, + pc=0,b2b=0,b3b=0, }--Current gamestat P.modeData={point=0,event=0}--data use by mode P.keyTime={}for i=1,10 do P.keyTime[i]=-1e5 end P.keySpeed=0 @@ -588,7 +618,7 @@ function newPlayer(id,x,y,size,AIdata) end end--reset current game settings P.cur={bk={{}},id=0,color=0,name=0} - P.sc,P.dir,P.r,P.c=ORG,0,0,0 + P.sc,P.dir,P.r,P.c={0,0},0,0,0 P.curX,P.curY,P.y_img=0,0,0 P.hd={bk={{}},id=0,color=0,name=0} P.holded=false @@ -598,6 +628,7 @@ function newPlayer(id,x,y,size,AIdata) P.freshTime=0 P.spinLast,P.lastClear=false,nil P.spinSeq=0--for Ospin,each digit mean a spin + P.ctrlCount=0--key press time,for fineese check P.his={rnd(7),rnd(7),rnd(7),rnd(7)} local s=P.gameEnv.sequence @@ -727,7 +758,7 @@ function player.update(P,dt) if P.gameEnv.arr>0 then P.act.moveLeft(P,true) else - P.act.insLeft(P) + P.act.insLeft(P,true) end if x~=P.curX then P.moving=P.moving+P.gameEnv.arr-1 end end @@ -743,7 +774,7 @@ function player.update(P,dt) if P.gameEnv.arr>0 then P.act.moveRight(P,true) else - P.act.insRight(P) + P.act.insRight(P,true) end if x~=P.curX then P.moving=P.moving-P.gameEnv.arr+1 end end @@ -1043,7 +1074,7 @@ function player.draw(P) end if P.gameEnv.center then gc.setColor(1,1,1,trans) - local x=30*(P.curX+P.sc[2]-1)-30+15 + local x=30*(P.curX+P.sc[2]-1)-15 gc.draw(spinCenter,x,600-30*(P.curY+P.sc[1]-1)+15,nil,nil,nil,4,4) gc.translate(0,dy) gc.setColor(1,1,1,.5) @@ -1320,11 +1351,16 @@ end -------------------------------------------------- local function ifoverlap(P,bk,x,y) - if x<1 or x+#bk[1]>11 or y<1 then return true end + local C=#bk[1] + if x<1 or x+C>11 or y<1 then return true end if y>#P.field then return end - for i=1,#bk do for j=1,#bk[1]do - if P.field[y+i-1]and bk[i][j]and P.field[y+i-1][x+j-1]>0 then return true end - end end + for i=1,#bk do + if P.field[y+i-1]then + for j=1,C do + if bk[i][j]and P.field[y+i-1][x+j-1]>0 then return true end + end + end + end end local function ckfull(P,i) for j=1,10 do if P.field[i][j]<=0 then return end end @@ -1364,6 +1400,16 @@ local function solid(P,x,y) return P.field[y][x]>0 end +function player:fineError(rate) + self.stat.extraPiece=self.stat.extraPiece+1 + self.stat.extraRate=self.stat.extraRate+rate + if self.gameEnv.fineKill then + SFX("error_long") + Event.lose(self) + else + SFX("error") + end +end function player:garbageSend(R,send,time,...) if setting.atkFX>0 then self:createBeam(R,send,time,...) @@ -1484,10 +1530,9 @@ end function player:freshgho() self.y_img=min(#self.field+1,self.curY) if self.gameEnv._20G or self.keyPressing[7]and self.gameEnv.sdarr==0 then - ::L::if not ifoverlap(self,self.cur.bk,self.curX,self.y_img-1)then + while not ifoverlap(self,self.cur.bk,self.curX,self.y_img-1)do self.y_img=self.y_img-1 self.spinLast=false - goto L end if self.curY>self.y_img then if not self.small then @@ -1501,9 +1546,8 @@ function player:freshgho() self.curY=self.y_img end else - ::L::if not ifoverlap(self,self.cur.bk,self.curX,self.y_img-1)then + while not ifoverlap(self,self.cur.bk,self.curX,self.y_img-1)do self.y_img=self.y_img-1 - goto L end end end @@ -1679,12 +1723,22 @@ function player:spin(d,ifpre) if self.human then SFX(ifpre and"prerotate"or ifoverlap(self,self.cur.bk,self.curX,self.curY+1)and ifoverlap(self,self.cur.bk,self.curX-1,self.curY)and ifoverlap(self,self.cur.bk,self.curX+1,self.curY)and"rotatekick"or"rotate") end + self.ctrlCount=self.ctrlCount+(d==2 and 2 or 1) self.stat.rotate=self.stat.rotate+1 end function player:hold(ifpre) if not self.holded and self.waiting==-1 and self.gameEnv.hold then + --Fineese check + local H,B=self.hd,self.cur + if H and H.id==B.id and H.name==B.name then + self:fineError(1.5) + elseif self.ctrlCount>1 then + self:fineError(2) + end + self.holded=self.gameEnv.oncehold self.spinLast=false + self.ctrlCount=0 self.spinSeq=0 self.cur,self.hd=self.hd,self.cur self.hd.bk=blocks[self.hd.id][0] @@ -1719,6 +1773,7 @@ function player:resetblock() self.holded=false self.spinLast=false self.spinSeq=0 + self.ctrlCount=0 self.cur=rem(self.next,1) self:freshNext() @@ -1785,6 +1840,44 @@ function player:drop()--(Place piece) dospin=false end + if self.gameEnv.fine then + if self.curY>18 then goto 通过测试 end + local y0=self.curY + local x,c=self.curX,self.c + local B=self.cur.bk + for x=1,c do + local y + for i=#B,1,-1 do + if B[i][x]then y=i;goto 继续 end + end + goto 操作判断法 + ::继续:: + if y then + x=self.curX+x-1 + for y=y0+y,#self.field do + if solid(self,x,y)then goto 通过测试 end + end + end + end--遮挡暂时都算最简 + ::操作判断法:: + if dospin then self.ctrlCount=self.ctrlCount-2 end--对无遮挡spin宽松两步 + local id=self.cur.id + local dir=self.dir+1 + if id<3 or id==7 then + if dir>2 then + dir=dir-2 + end + end--SZI的逆态视为顺态 + local R,I=self.ctrlCount,fineeseCtrlPar[id][dir][self.curX]--Real key/Ideal key + local d=R-I + if d<=0 then + goto 通过测试 + end + if I==0 then I=.67 end + self:fineError(R/I) + end--极简检测 + ::通过测试:: + if cc>0 then self.combo=self.combo+1 if cc==4 then @@ -2037,7 +2130,10 @@ function player.act.moveLeft(P,auto) if P.gameEnv.easyFresh or y0~=P.curY then P:freshLockDelay()end if P.human and P.curY==P.y_img then SFX("move")end P.spinLast=false - if not auto then P.moving=-1 end + if not auto then + P.moving=-1 + P.ctrlCount=P.ctrlCount+1 + end else P.moving=-P.gameEnv.das-1 end @@ -2058,7 +2154,10 @@ function player.act.moveRight(P,auto) if P.gameEnv.easyFresh or y0~=P.curY then P:freshLockDelay()end if P.human and P.curY==P.y_img then SFX("move")end P.spinLast=false - if not auto then P.moving=1 end + if not auto then + P.moving=1 + P.ctrlCount=P.ctrlCount+1 + end else P.moving=P.gameEnv.das+1 end @@ -2118,11 +2217,13 @@ function player.act.softDrop(P) P:changeAtkMode(4) end else - if P.curY~=P.y_img then - P.curY=P.curY-1 - P.spinLast=false - end P.downing=1 + if P.control and P.waiting==-1 then + if P.curY~=P.y_img then + P.curY=P.curY-1 + P.spinLast=false + end + end end end function player.act.hold(P) @@ -2152,15 +2253,14 @@ function player.act.insDown(P) P.curY,P.lockDelay,P.spinLast=P.y_img,P.gameEnv.lock,false end end -function player.act.insLeft(P) +function player.act.insLeft(P,auto) local x0,y0=P.curX,P.curY - ::L::if not ifoverlap(P,P.cur.bk,P.curX-1,P.curY)then + while not ifoverlap(P,P.cur.bk,P.curX-1,P.curY)do P.curX=P.curX-1 if not P.small and setting.dropFX>0 then P:createShade(P.curX+1,P.curY+P.r-1,P.curX+1,P.curY) end P:freshgho() - goto L end if x0~=P.curX then if P.human and setting.shakeFX>0 then @@ -2168,16 +2268,20 @@ function player.act.insLeft(P) end if P.gameEnv.easyFresh or y0~=P.curY then P:freshLockDelay()end end + if auto then + if P.ctrlCount==0 then P.ctrlCount=1 end + else + P.ctrlCount=P.ctrlCount+1 + end end -function player.act.insRight(P) +function player.act.insRight(P,auto) local x0,y0=P.curX,P.curY - ::L::if not ifoverlap(P,P.cur.bk,P.curX+1,P.curY)then + while not ifoverlap(P,P.cur.bk,P.curX+1,P.curY)do P.curX=P.curX+1 if not P.small and setting.dropFX>0 then P:createShade(P.curX+P.c-1,P.curY+P.r-1,P.curX+P.c-1,P.curY) end P:freshgho() - goto L end if x0~=P.curX then if P.human and setting.shakeFX>0 then @@ -2185,6 +2289,11 @@ function player.act.insRight(P) end if P.gameEnv.easyFresh or y0~=P.curY then P:freshLockDelay()end end + if auto then + if P.ctrlCount==0 then P.ctrlCount=1 end + else + P.ctrlCount=P.ctrlCount+1 + end end function player.act.down1(P) if P.curY~=P.y_img then diff --git a/toolfunc.lua b/toolfunc.lua index 0b30c8b2..a7aa4ec5 100644 --- a/toolfunc.lua +++ b/toolfunc.lua @@ -44,6 +44,7 @@ function destroyPlayers() players.alive[i]=nil end players.human=0 + collectgarbage() end function getNewRow(val) local t=rem(freeRow) @@ -128,15 +129,14 @@ end function SFX(s,v) if setting.sfx>0 then local n=1 - ::L::if sfx[s][n]:isPlaying()then + while sfx[s][n]:isPlaying()do n=n+1 if not sfx[s][n]then sfx[s][n]=sfx[s][n-1]:clone() sfx[s][n]:seek(0) - goto quit + break end - goto L - end::quit:: + end sfx[s][n]:setVolume((v or 1)*setting.sfx*.125) sfx[s][n]:play() end @@ -250,8 +250,9 @@ function gotoScene(s,style) end end function updateStat() - for k,v in next,players[1].stat do - stat[k]=stat[k]+v + local S=players[1].stat + for k,v in next,S do + stat[k]=stat[k]+S[k] end end local prevMenu={ @@ -474,6 +475,7 @@ end local dataOpt={ "run","game","time", + "extraPiece","extraRate", "key","rotate","hold","piece","row", "atk","send","recv","pend", "clear_1","clear_2","clear_3","clear_4", @@ -536,7 +538,7 @@ function loadSetting() setting.virtualkeyAlpha=min(int(abs(toN(v))),10) elseif t=="ghost"or t=="center"or t=="grid"or t=="swap"or - t=="quickR"or t=="bgblock"or t=="smo"or + t=="quickR"or t=="fine"or t=="bgblock"or t=="smo"or t=="virtualkeyIcon"or t=="virtualkeySwitch" then setting[t]=v=="true" @@ -578,6 +580,7 @@ local saveOpt={ "sddas","sdarr", "quickR", "swap", + "fine", "ghost","center", "smo","grid", diff --git a/updateLog.lua b/updateLog.lua index 8252e367..7057aeb1 100644 --- a/updateLog.lua +++ b/updateLog.lua @@ -1,6 +1,11 @@ local S=[=[ +Patron(rmb10+): + gggf/T080/Ykzl/zxc + [D*a]? Future outlook: Normal Things: + ajustable next count + bag line in all mode force fineese mode highscore of most modes custom block color/direction @@ -19,6 +24,9 @@ Future outlook: infinite 1v1 square mode more FXs & 3d features & animations +0.7.28: + add fineese check + code optimized 0.7.27: super O transform system optimized light system(no used)