Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ecf037f27d | ||
|
|
cf5844a2af | ||
|
|
b2f8abb884 | ||
|
|
128ab01cf0 | ||
|
|
a62945a71d | ||
|
|
9ff8cd3aaa | ||
|
|
b1306ac220 | ||
|
|
57a89c3859 | ||
|
|
610d953803 | ||
|
|
b788f26f50 | ||
|
|
e5f489fbab | ||
|
|
4786ab59b0 | ||
|
|
8c7e2da69a | ||
|
|
f511aa2f6f | ||
|
|
46b119601b | ||
|
|
d4238da156 | ||
|
|
f9cf35f746 | ||
|
|
097129bd08 | ||
|
|
c72dedf7cf | ||
|
|
5342d4f6d6 | ||
|
|
6641d402c0 | ||
|
|
86ffc4a207 | ||
|
|
71130bbced | ||
|
|
17d670a1ba |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
lib
|
||||
@@ -170,9 +170,9 @@ function keyDown.calculator(k)
|
||||
end
|
||||
S.sym="="
|
||||
S.reg=false
|
||||
if S.val==626 then
|
||||
if S.val==600+20+6 then
|
||||
S.pass=true
|
||||
elseif S.val==196022 then
|
||||
elseif S.val==196000+022 then
|
||||
S.pass=true
|
||||
marking=nil
|
||||
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
|
||||
@@ -187,14 +187,27 @@ function keyDown.calculator(k)
|
||||
FILE.saveUnlock()
|
||||
TEXT.show("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
|
||||
SFX.play("clear_2")
|
||||
elseif S.val==137926261379 then
|
||||
elseif S.val==1379e8+2626e4+1379 then
|
||||
S.pass=true
|
||||
SCN.go("debug")
|
||||
elseif S.val==34494 then
|
||||
error("This is an error testing message.")
|
||||
elseif S.val==114 then
|
||||
S.val=514
|
||||
elseif S.val==114514 then
|
||||
S.reg=1919810
|
||||
S.val=114514
|
||||
elseif S.val==123456789 then
|
||||
S.reg=123456789
|
||||
S.val=987654321
|
||||
end
|
||||
end
|
||||
elseif k=="space"then
|
||||
if S.pass then
|
||||
SCN.swapTo("intro")
|
||||
end
|
||||
elseif k=="escape"then
|
||||
S.val,S.reg,S.sym=0
|
||||
elseif k=="delete"then
|
||||
S.val=0
|
||||
elseif k=="space"and S.pass then
|
||||
SCN.swapTo("intro")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -101,8 +101,9 @@ function Pnt.calculator()
|
||||
setFont(45)
|
||||
if S.reg then gc.printf(S.reg,0,100,720,"right")end
|
||||
if S.val then gc.printf(S.val,0,150,720,"right")end
|
||||
setFont(50)
|
||||
if S.sym then gc.print(S.sym,126,150)end
|
||||
|
||||
if S.sym then setFont(50)gc.print(S.sym,126,150)end
|
||||
if S.pass then setFont(40)mStr(S.tip,640,10)end
|
||||
end
|
||||
function Pnt.load()
|
||||
local S=sceneTemp
|
||||
|
||||
@@ -13,14 +13,15 @@ function sceneInit.calculator()
|
||||
val=0,
|
||||
sym=false,
|
||||
pass=false,
|
||||
tip=require("parts/getTip"),
|
||||
}
|
||||
end
|
||||
function sceneInit.load()
|
||||
sceneTemp={
|
||||
phase=1,--Loading stage
|
||||
cur=1,--Counter
|
||||
tar=#VOC.name,--Loading bar lenth(current)
|
||||
tip=require("parts/getTip"),
|
||||
tar=#VOC.name,--Loading bar length(current)
|
||||
tip=setting.appLock or require("parts/getTip"),
|
||||
list={
|
||||
#VOC.name,
|
||||
#BGM.list,
|
||||
|
||||
2
conf.lua
2
conf.lua
@@ -1,4 +1,4 @@
|
||||
gameVersion="Alpha V0.10.5"
|
||||
gameVersion="Alpha V0.10.6"
|
||||
function love.conf(t)
|
||||
t.identity="Techmino"--Saving folder
|
||||
t.version="11.1"
|
||||
|
||||
54
main.lua
54
main.lua
@@ -116,34 +116,34 @@ if fs.getInfo("tech_ultimate.dat")then fs.remove("tech_ultimate.dat")end
|
||||
if fs.getInfo("tech_ultimate+.dat")then fs.remove("tech_ultimate+.dat")end
|
||||
|
||||
--Update modeRanks
|
||||
R=modeRanks
|
||||
for k,v in next,R do
|
||||
if type(k)=="number"then
|
||||
local save=v
|
||||
if not R[Modes[k].name]then
|
||||
R[Modes[k].name]=v
|
||||
do
|
||||
local R=modeRanks
|
||||
for k,v in next,R do
|
||||
if type(k)=="number"then
|
||||
if Modes[k]and not R[Modes[k].name]then
|
||||
R[Modes[k].name]=v
|
||||
end
|
||||
R[k]=nil
|
||||
end
|
||||
R[k]=nil
|
||||
end
|
||||
end
|
||||
if R.master_adavnce then
|
||||
R.master_advance,R.master_adavnce=R.master_adavnce
|
||||
end
|
||||
if not text.modes[stat.lastPlay]then
|
||||
stat.lastPlay="sprint_10"
|
||||
end
|
||||
if R.master_adavnce then
|
||||
R.master_advance,R.master_adavnce=R.master_adavnce
|
||||
end
|
||||
if not text.modes[stat.lastPlay]then
|
||||
stat.lastPlay="sprint_10"
|
||||
end
|
||||
|
||||
--Update data file
|
||||
S=stat
|
||||
if type(setting.spawn)~="number"then
|
||||
setting.spawn=0
|
||||
end
|
||||
if S.version~=gameVersion then
|
||||
S.version=gameVersion
|
||||
newVersionLaunch=true
|
||||
--Update data file
|
||||
local S=stat
|
||||
if type(setting.spawn)~="number"then
|
||||
setting.spawn=0
|
||||
end
|
||||
if S.version~=gameVersion then
|
||||
S.version=gameVersion
|
||||
newVersionLaunch=true
|
||||
|
||||
fs.remove("sprintPenta.dat")
|
||||
fs.remove("master_adavnce.dat")
|
||||
fs.remove("master_beginner.dat")
|
||||
end
|
||||
R,S=nil
|
||||
fs.remove("sprintPenta.dat")
|
||||
fs.remove("master_adavnce.dat")
|
||||
fs.remove("master_beginner.dat")
|
||||
end
|
||||
end
|
||||
@@ -6,6 +6,7 @@ return{
|
||||
drop=15,lock=45,
|
||||
fall=10,
|
||||
center=false,
|
||||
dropFX=0,lockFX=0,
|
||||
visible="none",
|
||||
dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
}
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,49 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 2
|
||||
local t=CCloader_filename[system] and 2 or 0
|
||||
while t>0 do
|
||||
local r=rnd(2,49)
|
||||
if L[r]then L[r],t=false,t-1 end
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
}
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,49 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
local t=CCloader_filename[system] and 4 or 0
|
||||
while t>0 do
|
||||
local r=rnd(2,49)
|
||||
if L[r]then L[r],t=false,t-1 end
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(6,8),3,true,20000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(6,8),3,true,20000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
}
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,49 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 6
|
||||
local t=CCloader_filename[system] and 6 or 0
|
||||
while t>0 do
|
||||
local r=rnd(2,49)
|
||||
if L[r]then L[r],t=false,t-1 end
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
}
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,100 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
local t=CCloader_filename[system] and 4 or 0
|
||||
while t>0 do
|
||||
local r=rnd(2,99)
|
||||
if L[r]then L[r],t=false,t-1 end
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
}
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,100 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
local t=CCloader_filename[system] and 4 or 0
|
||||
while t>0 do
|
||||
local r=rnd(2,99)
|
||||
if L[r]then L[r],t=false,t-1 end
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(6,8),3,true,20000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(6,8),3,true,20000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -33,7 +33,7 @@ return{
|
||||
}
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,100 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
local t=CCloader_filename[system] and 4 or 0
|
||||
while t>0 do
|
||||
local r=rnd(2,99)
|
||||
if L[r]then L[r],t=false,t-1 end
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
57
parts/ai.lua
57
parts/ai.lua
@@ -1,12 +1,10 @@
|
||||
--[[
|
||||
HighestBlock
|
||||
HorizontalTransitions
|
||||
VerticalTransitions
|
||||
BlockedCells
|
||||
Wells
|
||||
FilledLines
|
||||
4deepShape
|
||||
BlockedWells;
|
||||
BlockedWells
|
||||
]]
|
||||
local int,ceil,min,abs,rnd=math.floor,math.ceil,math.min,math.abs,math.random
|
||||
local ins,rem=table.insert,table.remove
|
||||
@@ -18,9 +16,32 @@ local Timer=love.timer.getTime
|
||||
local blockPos={4,4,4,4,4,5,4}
|
||||
local scs={{0,1},{0,1},{0,1},{0,1},{0,1},{.5,.5},{-.5,1.5}}
|
||||
-------------------------------------------------Cold clear
|
||||
local CCblockID={4,3,6,5,1,2,0}
|
||||
if system=="Windows"then
|
||||
require("CCloader")
|
||||
local CCblockID={6,5,4,3,2,1,0}
|
||||
CCloader_filename={
|
||||
Windows={"CCloader.dll",{"x86_64","x86"}},
|
||||
Android={"libCCloader.so",{"arm64-v8a","armeabi-v7a"}},
|
||||
Linux={"libCCloader.so",{"x86_64"}},
|
||||
}
|
||||
local function loadCC()
|
||||
if not CCloader_filename[system]then return end
|
||||
local f
|
||||
for i=1,#CCloader_filename[system][2]do
|
||||
function f()
|
||||
local CCloader_f,size=love.filesystem.read("data",table.concat({"lib",system,CCloader_filename[system][2][i],CCloader_filename[system][1]},"/"))
|
||||
if not CCloader_f then return end
|
||||
local success,message=love.filesystem.write(CCloader_filename[system][1],CCloader_f,size)
|
||||
if not success then return end
|
||||
local success,message=package.loadlib(table.concat({love.filesystem.getSaveDirectory(),CCloader_filename[system][1]},"/"),"luaopen_CCloader")
|
||||
return success,message
|
||||
end
|
||||
f=f()
|
||||
if f then break end
|
||||
end
|
||||
if not f then
|
||||
CCloader_filename[system]=nil
|
||||
return
|
||||
end
|
||||
f()
|
||||
BOT={
|
||||
getConf= cc.get_default_config ,--()options,weights
|
||||
--setConf= cc.set_options ,--(options,hold,20g,bag7)
|
||||
@@ -29,12 +50,12 @@ if system=="Windows"then
|
||||
addNext= cc.add_next_piece_async ,--(bot,piece)
|
||||
update= cc.reset_async ,--(bot,field,b2b,combo)
|
||||
think= cc.request_next_move ,--(bot)
|
||||
getMove= cc.poll_next_move ,--(bot)success,hold,move
|
||||
ifDead= cc.is_dead_async ,--(bot)dead
|
||||
getMove= cc.poll_next_move ,--(bot)success,dest,hold,move
|
||||
destroy= cc.destroy_async ,--(bot)
|
||||
|
||||
setHold= cc.set_hold ,--(opt,bool)
|
||||
set20G= cc.set_20g ,--(opt,bool)
|
||||
setPCLoop= cc.set_pcloop ,--(opt,bool)
|
||||
setBag= cc.set_bag7 ,--(opt,bool)
|
||||
setNode= cc.set_max_nodes ,--(opt,bool)
|
||||
free= cc.free ,--(opt/wei)
|
||||
@@ -66,7 +87,8 @@ if system=="Windows"then
|
||||
BOT.addNext(P.AI_bot,CCblockID[P.next[i].id])
|
||||
end
|
||||
CC_updateField(P)
|
||||
P.hd={bk={{}},id=0,color=0,name=0}P.holded=false
|
||||
P.hd=nil
|
||||
P.holded=false
|
||||
P.cur=rem(P.next,1)
|
||||
P.sc,P.dir=scs[P.cur.id],0
|
||||
P.r,P.c=#P.cur.bk,#P.cur.bk[1]
|
||||
@@ -80,6 +102,7 @@ if system=="Windows"then
|
||||
collectgarbage()
|
||||
end
|
||||
end
|
||||
loadCC()
|
||||
-------------------------------------------------9 Stack setup
|
||||
local dirCount={1,1,3,3,3,0,1}
|
||||
local spinOffset={
|
||||
@@ -218,7 +241,7 @@ return{
|
||||
end
|
||||
if not bn then goto CTN end
|
||||
|
||||
for dir=0,dirCount[bn] do--Each dir
|
||||
for dir=0,dirCount[bn]do--Each dir
|
||||
local cb=blocks[bn][dir]
|
||||
for cx=1,11-#cb[1]do--Each pos
|
||||
local cy=#Tfield+1
|
||||
@@ -282,9 +305,17 @@ return{
|
||||
return 2
|
||||
end,
|
||||
function(P,ctrl)--Poll keys
|
||||
if BOT.ifDead(P.AI_bot)then ins(ctrl,6)return 3 end
|
||||
local success,hold,move=BOT.getMove(P.AI_bot)
|
||||
if success then
|
||||
local success,dest,hold,move=BOT.getMove(P.AI_bot)
|
||||
if success==2 then
|
||||
ins(ctrl,6)
|
||||
return 3
|
||||
elseif success==0 then
|
||||
for i=1,#dest do
|
||||
for j=1,#dest[i]do
|
||||
dest[i][j]=dest[i][j]+1
|
||||
end
|
||||
end
|
||||
P.AI_dest=dest
|
||||
if hold then ctrl[1]=8 end--Hold
|
||||
while move[1]do
|
||||
local m=rem(move,1)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local freeRow={}
|
||||
local L={}--Storage
|
||||
local _=0--Lenth
|
||||
local _=0--Length
|
||||
function freeRow.reset(num)
|
||||
if num<_ then
|
||||
for i=_,num+1,-1 do
|
||||
|
||||
@@ -27,11 +27,21 @@ if setting.lang==1 or setting.lang==2 then
|
||||
"e^(pi*i)=-1",
|
||||
"DT炮=TSD+TST炮",
|
||||
"Cultris II也很好玩!",
|
||||
"Ctrl+W=关闭当前标签页",
|
||||
"Ctrl+Tab=切换标签页",
|
||||
"Ctrl+F=查找",
|
||||
"Ctrl+D=复制一份",
|
||||
"Ctrl+Alt+Z=查看所有qq消息",
|
||||
"Ctrl+A=全选",
|
||||
"Ctrl+鼠标滚轮=缩放",
|
||||
"COOL!!",
|
||||
"BT炮=beta炮",
|
||||
"backspace=返回上一个文件目录",
|
||||
"B2B2B2B存在吗?",
|
||||
"B2B2B???",
|
||||
"Am G F G",
|
||||
"Alt+Tab=切换窗口",
|
||||
"Alt+F4=关闭当前窗口",
|
||||
"ALLSPIN!",
|
||||
"注意到\"旋转\"到底对方块做了些什么吗?",
|
||||
"有疑问? 先看设置有没有你想要的",
|
||||
@@ -47,24 +57,22 @@ if setting.lang==1 or setting.lang==2 then
|
||||
"使用love2d引擎制作",
|
||||
"少女祈祷中",
|
||||
"扫雷好玩!",
|
||||
"哦,我的上帝",
|
||||
"你可以长按R键重新开始游戏(也不是很长)",
|
||||
"你可以从统计页面打开游戏存档目录",
|
||||
"你好 世界!",
|
||||
"魔方好玩!",
|
||||
"喵!",
|
||||
"免费吃鸡方块",
|
||||
"秘密数字:626",
|
||||
"每个虚拟按键都可以隐藏/显示",
|
||||
"每个虚拟按键都可以隐藏/显示,尺寸也可调",
|
||||
"每个块的出现方向可以自定义",
|
||||
"没专业美术,程序员审美警告",
|
||||
"没有专业美术的人,程序员审美警告",
|
||||
"没学过编曲,音乐都是自己凭感觉写的,觉得不好听就设置里关了吧",
|
||||
"联网还没做呢, 别急",
|
||||
"键位是可以自定义的",
|
||||
"健康小贴士:上厕所太用力容易脑出血(尤其是老年人!)",
|
||||
"健康小贴士:不要熬夜,真的容易猝死",
|
||||
"健康小贴士:玩游戏多眨眼,不然会干眼病",
|
||||
"健康小贴士:不要熬夜,真的会猝死",
|
||||
"合群了就会消失, 但是消失不代表没有意义",
|
||||
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
||||
"更小的DAS和ARR拥有更高的操作上限(前提是你能控制得了)",
|
||||
"俄罗斯方块环游记也不错!",
|
||||
"调到特殊的日期也不会发生什么的",
|
||||
"低帧率会降低游戏体验",
|
||||
@@ -75,7 +83,6 @@ if setting.lang==1 or setting.lang==2 then
|
||||
"草(日本语)",
|
||||
"不要在上课时玩游戏!",
|
||||
"不要盯着bug不放",
|
||||
"不要按F10",
|
||||
"不是动画,真的在加载!",
|
||||
"别问游戏名怎么取的,问就是随便想的",
|
||||
"本游戏难度上限很高, 做好心理准备",
|
||||
@@ -109,6 +116,7 @@ elseif setting.lang==3 then
|
||||
"Who is diao",
|
||||
"What about 26 TSDs?",
|
||||
"What about 20 PCs?",
|
||||
"What about 23 PCs in 100 lines?",
|
||||
"Warning: Programmer Art",
|
||||
"Try to use two rotate button,three better",
|
||||
"This in not a casual game",
|
||||
|
||||
@@ -119,7 +119,10 @@ local TRS={
|
||||
if y==P.imgY and((P:solid(x-1,y)or P:solid(x-1,y+1)))and(P:solid(x+2,y)or P:solid(x+2,y+1))then
|
||||
local D=P.spinSeq%100*10+d
|
||||
P.spinSeq=D
|
||||
if D<100 then return end
|
||||
if D<100 then
|
||||
P:freshBlock(true,true)
|
||||
return
|
||||
end
|
||||
for i=1,#OspinList do
|
||||
local L=OspinList[i]
|
||||
if D==L[1]then
|
||||
@@ -144,8 +147,8 @@ local TRS={
|
||||
end
|
||||
else
|
||||
P.spinSeq=0
|
||||
P:freshBlock(true,true)
|
||||
end
|
||||
P:freshBlock(true,true)
|
||||
end,--O
|
||||
{
|
||||
[01]={{ 0, 1},{ 1, 0},{-2, 0},{-2,-1},{ 1, 2}},
|
||||
@@ -213,10 +216,10 @@ local TRS={
|
||||
[31]={{-1, 0},{ 1, 1},{ 2, 0}},
|
||||
},--T5
|
||||
{
|
||||
[01]={{-1, 0},{-1, 1},{ 0,-2},{-1,-2},{-1,-3}},
|
||||
[10]={{ 1, 0},{ 1,-1},{ 0, 2},{ 1, 2},{ 1, 3}},
|
||||
[03]={{ 1, 0},{ 1, 1},{ 0,-2},{ 1,-2},{ 1,-3}},
|
||||
[30]={{-1, 0},{-1,-1},{ 0,-2},{-1, 2},{-1, 3}},
|
||||
[01]={{-1, 0},{-1, 1},{ 0,-2},{-1,-2}},
|
||||
[10]={{ 1, 0},{ 1,-1},{ 0, 2},{ 1, 2}},
|
||||
[03]={{ 1, 0},{ 1, 1},{ 0,-2},{ 1,-2}},
|
||||
[30]={{-1, 0},{-1,-1},{ 0,-2},{-1, 2}},
|
||||
[12]={{ 1, 0},{ 1,-1},{ 1, 1}},
|
||||
[21]={{-1,-1},{-1, 1},{-1,-1}},
|
||||
[32]={{-1, 0},{-1,-1},{-1, 1}},
|
||||
@@ -230,7 +233,7 @@ local TRS={
|
||||
[01]={{ 0, 1},{-1, 0},{ 0,-2},{-1,-2}},
|
||||
[10]={{ 0, 1},{ 1, 0},{ 0,-2},{ 1,-2}},
|
||||
[03]={{ 0,-1},{ 0, 1},{ 0, 2}},
|
||||
[30]={{ 0,-1},{ 0,-1},{ 0,-2}},
|
||||
[30]={{ 0,-1},{ 0, 1},{ 0,-2}},
|
||||
[12]={{ 0,-1},{ 0, 1}},
|
||||
[21]={{ 0,-1},{ 0,-2}},
|
||||
[32]={{ 1, 0},{-1, 0}},
|
||||
@@ -285,14 +288,14 @@ local TRS={
|
||||
},--J5
|
||||
{},--L5
|
||||
{
|
||||
[01]={{-1, 0},{-1, 1},{ 1, 0},{-1, 2},{-1,-1},{ 0,-3},{ 0, 1}},
|
||||
[10]={{-1, 0},{ 1,-1},{ 1, 0},{ 1,-2},{ 1, 1},{ 0, 3},{ 0, 1}},
|
||||
[03]={{ 0,-1},{ 1,-1},{-1, 0},{ 1, 1},{ 0,-2},{ 1,-2},{ 0,-3},{ 1,-3},{-1, 1}},
|
||||
[30]={{ 0, 1},{-1, 1},{ 1, 0},{-1,-1},{ 0, 2},{-1, 2},{ 0, 3},{-1, 3},{ 1,-1}},
|
||||
[01]={{-1, 0},{-1, 0},{-1, 1},{ 1, 0},{-1, 2},{-1,-1},{ 0,-3},{ 0, 1}},
|
||||
[10]={{-1, 0},{ 1, 0},{ 1,-1},{ 1, 0},{ 1,-2},{ 1, 1},{ 0, 3},{ 0, 1}},
|
||||
[03]={{ 0,-1},{ 1, 0},{ 1,-1},{-1, 0},{ 1, 1},{ 0,-2},{ 1,-2},{ 0,-3},{ 1,-3},{-1, 1}},
|
||||
[30]={{ 0, 1},{-1, 0},{-1, 1},{ 1, 0},{-1,-1},{ 0, 2},{-1, 2},{ 0, 3},{-1, 3},{ 1,-1}},
|
||||
[12]={{ 1, 0},{ 1,-1},{ 0,-1},{ 1,-2},{ 0,-2},{ 1, 1},{-1, 0},{ 0, 2},{ 1, 2}},
|
||||
[21]={{-1, 0},{-1, 1},{ 0, 1},{-1, 2},{ 0, 2},{-1,-1},{ 1, 0},{ 0,-2},{-1,-2}},
|
||||
[32]={{-1, 0},{ 0,-1},{-1, 1},{-1,-1},{ 1, 0},{ 0, 2},{-1, 2},{ 0,-2}},
|
||||
[23]={{ 1, 0},{ 0, 1},{ 1,-1},{ 1, 1},{-1, 0},{ 0,-2},{ 1,-2},{ 0, 2}},
|
||||
[32]={{ 0,-1},{-1, 0},{-1, 1},{-1,-1},{ 1, 0},{ 0, 2},{-1, 2},{ 0,-2}},
|
||||
[23]={{ 0, 1},{ 1, 0},{ 1,-1},{ 1, 1},{-1, 0},{ 0,-2},{ 1,-2},{ 0, 2}},
|
||||
[02]={{ 0,-1},{ 1,-1},{-1, 0},{ 2,-1},{ 0, 1}},
|
||||
[20]={{ 0, 1},{-1, 1},{ 1, 0},{-2, 1},{ 0,-1}},
|
||||
[13]={{-1, 0},{-1,-1},{ 0, 1},{-1,-2}},
|
||||
|
||||
@@ -87,7 +87,7 @@ local finesseList={
|
||||
finesseList[1][3],finesseList[1][4],finesseList[7][3],finesseList[7][4]=finesseList[1][1],finesseList[1][2],finesseList[7][1],finesseList[7][2]--"2-phase" SZI
|
||||
finesseList[2]=finesseList[1]--S=Z
|
||||
finesseList[4],finesseList[5]=finesseList[3],finesseList[3]--J=L=T
|
||||
local CCblockID={4,3,6,5,1,2,0}
|
||||
local CCblockID={6,5,4,3,2,1,0}
|
||||
local freshPrepare={
|
||||
none=NULL,
|
||||
bag=function(P)
|
||||
@@ -1427,6 +1427,8 @@ function player.freshBlock(P,keepGhost,control,system)
|
||||
end
|
||||
end
|
||||
function player.lock(P)
|
||||
local dest=P.AI_dest
|
||||
local has_dest=dest~=nil
|
||||
for i=1,P.r do
|
||||
local y=P.curY+i-1
|
||||
if not P.field[y]then P.field[y],P.visTime[y]=freeRow.get(0),freeRow.get(0)end
|
||||
@@ -1434,9 +1436,25 @@ function player.lock(P)
|
||||
if P.cur.bk[i][j]then
|
||||
P.field[y][P.curX+j-1]=P.cur.color
|
||||
P.visTime[y][P.curX+j-1]=P.showTime
|
||||
local x=P.curX+j-1
|
||||
if dest then
|
||||
local original_length=#dest
|
||||
for k=1,original_length do
|
||||
if x==dest[k][1]and y==dest[k][2]then
|
||||
rem(dest, k)
|
||||
break
|
||||
end
|
||||
end
|
||||
if #dest~=original_length-1 then
|
||||
dest=nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if has_dest and not dest then
|
||||
CC_updateField(P)
|
||||
end
|
||||
end
|
||||
function player.spin(P,d,ifpre)
|
||||
local iki=P.RS[P.cur.id]
|
||||
@@ -2566,14 +2584,16 @@ function player.act.zangiRight(P)
|
||||
P.act.hardDrop(P)
|
||||
end
|
||||
--Give operations a num name
|
||||
A=player.act
|
||||
T={
|
||||
A.moveLeft ,A.moveRight, A.rotRight, A.rotLeft,
|
||||
A.rot180 ,A.hardDrop, A.softDrop, A.hold,
|
||||
A.func ,A.restart, A.insLeft, A.insRight,
|
||||
A.insDown ,A.down1, A.down4, A.down10,
|
||||
A.dropLeft ,A.dropRight, A.zangiLeft,A.zangiRight
|
||||
}for i=1,20 do A[i]=T[i]end;A,T=nil
|
||||
do
|
||||
local A=player.act
|
||||
local T={
|
||||
A.moveLeft ,A.moveRight, A.rotRight, A.rotLeft,
|
||||
A.rot180 ,A.hardDrop, A.softDrop, A.hold,
|
||||
A.func ,A.restart, A.insLeft, A.insRight,
|
||||
A.insDown ,A.down1, A.down4, A.down10,
|
||||
A.dropLeft ,A.dropRight, A.zangiLeft,A.zangiRight
|
||||
}for i=1,20 do A[i]=T[i]end
|
||||
end
|
||||
--------------------------</Control>--------------------------
|
||||
|
||||
--------------------------<Generator>--------------------------
|
||||
|
||||
@@ -24,25 +24,22 @@ local S=[=[
|
||||
|
||||
Future outlook:
|
||||
New modes:
|
||||
PUYO
|
||||
dig practice
|
||||
dig zen
|
||||
infinite PC challenge
|
||||
reverb (often repeat a piece many times)
|
||||
game tutorial
|
||||
finesse tutorial/exam(3next, 1pt/mino, drop to score)
|
||||
finesse tutorial/exam (3next, 1pt/mino, drop to score)
|
||||
easy finesse (only revert current)
|
||||
game Abbr. test
|
||||
combo
|
||||
backfire
|
||||
round-based dig
|
||||
bigbang
|
||||
rhythm
|
||||
KPP-locked
|
||||
combo
|
||||
square
|
||||
field shifting(left/right)
|
||||
task survival
|
||||
dig practice
|
||||
dig zen
|
||||
symmetry
|
||||
hidden: sound only
|
||||
reverb (often repeat a piece many times)
|
||||
game Abbr. test
|
||||
parkour
|
||||
Other:
|
||||
mod system with:
|
||||
@@ -57,10 +54,9 @@ Future outlook:
|
||||
tank battle
|
||||
new AI: task-Z
|
||||
'Encrypt'(compile to byte code)
|
||||
better drop FX
|
||||
60+ fps supporting
|
||||
in-game document
|
||||
game recording
|
||||
save recordings
|
||||
full-key control
|
||||
drag control for mobile device
|
||||
new widgets (joystick etc.)
|
||||
@@ -68,6 +64,15 @@ Future outlook:
|
||||
more graphic FXs & 3D features & animations
|
||||
network game
|
||||
|
||||
0.10.6: CC更新 Cold Clear update
|
||||
新内容:
|
||||
全平台支持新版CC(也许)
|
||||
改动:
|
||||
修改UVRY的踢墙表
|
||||
修复:
|
||||
O卡住的时候旋转不刷新锁定延迟
|
||||
CC在发现重力过大后hold即报错
|
||||
|
||||
0.10.5: 特效更新 FX update
|
||||
新内容:
|
||||
瞬移特效独立为瞬降和移动(旋转)特效,增加移动特效滑条,各特效范围均为0~5
|
||||
@@ -80,18 +85,19 @@ Future outlook:
|
||||
增加无尽挖掘连挖提示,挖完后下一波立即升起
|
||||
new English translation by @MattMayuga#8789
|
||||
修改100/400/1000L的评级要求
|
||||
支持加载部分老版本存档
|
||||
软件锁界面出现时机调整,按钮位置调整
|
||||
调整混战模式倍率影响边框颜色的范围
|
||||
软件锁也可显示tip
|
||||
代码:
|
||||
重命名大多数背景
|
||||
重构createXxxFX函数
|
||||
重构create___FX函数
|
||||
修复:
|
||||
几个设置大标题样式统一
|
||||
加载部分老版本存档报错
|
||||
几个设置大标题样式不统一
|
||||
有消行延迟+出块等待时连续硬降出现神秘现象
|
||||
垃圾行上涨不刷新ghost
|
||||
粘贴序列bug
|
||||
可以用键盘复制粘贴序列
|
||||
粘贴序列后光标位置错误
|
||||
不能用键盘复制粘贴序列
|
||||
每次启动游戏ai是一样的块序
|
||||
|
||||
0.10.4: 漏洞修复 Bug Fix
|
||||
|
||||
Reference in New Issue
Block a user