Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1d92a166b | ||
|
|
99b55b72e0 |
BIN
BGM/hay what kind of feeling.ogg
Normal file
BIN
BGM/hay what kind of feeling.ogg
Normal file
Binary file not shown.
34
callback.lua
34
callback.lua
@@ -120,7 +120,7 @@ function keyDown.load(k)
|
|||||||
sceneTemp.skip=true
|
sceneTemp.skip=true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function touchDown.load()
|
function touchDown.load(id,x,y)
|
||||||
if #tc.getTouches()==2 then
|
if #tc.getTouches()==2 then
|
||||||
sceneTemp.skip=true
|
sceneTemp.skip=true
|
||||||
end
|
end
|
||||||
@@ -669,17 +669,43 @@ function touchDown.help(id,x,y)
|
|||||||
sceneTemp.pw=pw
|
sceneTemp.pw=pw
|
||||||
end
|
end
|
||||||
|
|
||||||
function keyDown.staff(key)
|
function keyDown.staff(key,RESET)
|
||||||
if key=="escape"then
|
if key=="escape"then
|
||||||
SCN.back()
|
SCN.back()
|
||||||
elseif key=="\122"then
|
elseif key=="\122"then
|
||||||
if kb.isDown("\109")and kb.isDown("\114")then
|
if kb.isDown("\109")and kb.isDown("\114")or RESET then
|
||||||
sceneTemp.v=-2.6
|
sceneTemp.ct=sceneTemp.ct+1
|
||||||
|
if sceneTemp.ct==5 then
|
||||||
|
TEXT.show("What are you up to?",640,200,40,"appear",.5)
|
||||||
|
elseif sceneTemp.ct==10 then
|
||||||
|
TEXT.show("Stop what you are doing.",640,200,40,"flicker",.5)
|
||||||
|
elseif sceneTemp.ct==20 then
|
||||||
|
TEXT.show("RESET ALL DATA?",640,200,40,"appear",.3,.2)
|
||||||
|
elseif sceneTemp.ct==26 then
|
||||||
|
local L=love.filesystem.getDirectoryItems("")
|
||||||
|
for i=1,#L do
|
||||||
|
local s=L[i]
|
||||||
|
if s:sub(-4)==".dat"then
|
||||||
|
love.filesystem.remove(s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
SFX.play("lock")
|
||||||
|
SFX.play("clear_4")
|
||||||
|
SFX.play("finesseError_long")
|
||||||
|
SCN.back()
|
||||||
|
TEXT.clear()
|
||||||
|
end
|
||||||
|
sceneTemp.v=-6.26
|
||||||
marking=nil
|
marking=nil
|
||||||
SFX.play("reach")
|
SFX.play("reach")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
function touchDown.staff(id,x,y)
|
||||||
|
if #tc.getTouches()==5 then
|
||||||
|
keyDown.staff('\122',true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function wheelMoved.history(x,y)
|
function wheelMoved.history(x,y)
|
||||||
wheelScroll(y)
|
wheelScroll(y)
|
||||||
|
|||||||
2
conf.lua
2
conf.lua
@@ -1,4 +1,4 @@
|
|||||||
gameVersion="Alpha V0.8.22"
|
gameVersion="Alpha V0.8.24"
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
t.identity="Techmino"--folder name
|
t.identity="Techmino"--folder name
|
||||||
t.version="11.1"
|
t.version="11.1"
|
||||||
|
|||||||
BIN
image/skin/brick(notypey).png
Normal file
BIN
image/skin/brick(notypey).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
image/skin/classic(_).png
Normal file
BIN
image/skin/classic(_).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.9 KiB |
BIN
image/skin/paper(mrz).png
Normal file
BIN
image/skin/paper(mrz).png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
84
main.lua
84
main.lua
@@ -82,4 +82,86 @@ if setting.fullscreen then love.window.setFullscreen(true)end
|
|||||||
if fs.getInfo("unlock.dat")then FILE.loadUnlock()end
|
if fs.getInfo("unlock.dat")then FILE.loadUnlock()end
|
||||||
if fs.getInfo("data.dat")then FILE.loadData()end
|
if fs.getInfo("data.dat")then FILE.loadData()end
|
||||||
if fs.getInfo("key.dat")then FILE.loadKeyMap()end
|
if fs.getInfo("key.dat")then FILE.loadKeyMap()end
|
||||||
if fs.getInfo("virtualkey.dat")then FILE.loadVK()end
|
if fs.getInfo("virtualkey.dat")then FILE.loadVK()end
|
||||||
|
|
||||||
|
--update data file
|
||||||
|
S=stat
|
||||||
|
if not S.version or S.version=="Alpha V0.8.15"then
|
||||||
|
S.clear_S={S.clear_1,S.clear_2,S.clear_3,S.clear_4}
|
||||||
|
S.clear={{},{},{},{},{},{},{}}
|
||||||
|
local A,B,C,D=int(S.clear_1/7),int(S.clear_2/7),int(S.clear_3/7),S.clear_4
|
||||||
|
for i=1,7 do
|
||||||
|
S.clear[i][1]=A
|
||||||
|
S.clear[i][2]=B
|
||||||
|
S.clear[i][3]=C
|
||||||
|
S.clear[i][4]=0
|
||||||
|
end
|
||||||
|
S.clear[7][4]=D
|
||||||
|
for i=1,S.clear_1%7 do S.clear[i][1]=S.clear[i][1]+1 end
|
||||||
|
for i=1,S.clear_2%7 do S.clear[i][2]=S.clear[i][2]+1 end
|
||||||
|
for i=1,S.clear_3%7 do S.clear[i][3]=S.clear[i][3]+1 end
|
||||||
|
S.clear_B={}
|
||||||
|
for i=1,7 do
|
||||||
|
S.clear_B[i]=S.clear[i][1]+S.clear[i][2]+S.clear[i][3]+S.clear[i][4]
|
||||||
|
end
|
||||||
|
|
||||||
|
S.spin_S={S.spin_0,S.spin_1,S.spin_2,S.spin_3}
|
||||||
|
S.spin={{},{},{},{},{},{},{}}
|
||||||
|
A,B,C,D=int(S.spin_0/7),int(S.spin_1/7),int(S.spin_2/7),int(S.spin_3/7)
|
||||||
|
for i=1,7 do
|
||||||
|
S.spin[i][1]=A
|
||||||
|
S.spin[i][2]=B
|
||||||
|
S.spin[i][3]=C
|
||||||
|
S.spin[i][4]=D
|
||||||
|
end
|
||||||
|
for i=1,S.spin_0%7 do S.spin[i][1]=S.spin[i][1]+1 end
|
||||||
|
for i=1,S.spin_1%7 do S.spin[i][2]=S.spin[i][2]+1 end
|
||||||
|
for i=1,S.spin_2%7 do S.spin[i][3]=S.spin[i][3]+1 end
|
||||||
|
for i=1,S.spin_3%7 do S.spin[i][4]=S.spin[i][4]+1 end
|
||||||
|
S.spin_B={}
|
||||||
|
for i=1,7 do
|
||||||
|
S.spin_B[i]=S.spin[i][1]+S.spin[i][2]+S.spin[i][3]+S.spin[i][4]
|
||||||
|
end
|
||||||
|
|
||||||
|
S.hpc=S.c
|
||||||
|
elseif S.version=="Alpha V0.8.16"then
|
||||||
|
for i=1,6 do
|
||||||
|
S.clear[7][4]=S.clear[7][4]+S.clear[i][4]
|
||||||
|
S.clear[i][4]=0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not S.clear_B[8]then
|
||||||
|
for i=1,7 do
|
||||||
|
S.clear[i][5]=0
|
||||||
|
S.spin[i][5]=0
|
||||||
|
end
|
||||||
|
for i=8,25 do
|
||||||
|
S.clear[i]={0,0,0,0,0}
|
||||||
|
S.spin[i]={0,0,0,0,0}
|
||||||
|
S.spin_B[i]=0
|
||||||
|
S.clear_B[i]=0
|
||||||
|
end
|
||||||
|
S.spin_S[5]=0
|
||||||
|
S.clear_S[5]=0
|
||||||
|
end
|
||||||
|
if S.version=="Alpha V0.8.18"or S.version=="Alpha V0.8.19"then
|
||||||
|
S.clear[3],S.clear[4]=S.clear[4],S.clear[3]
|
||||||
|
S.spin[3],S.spin[4]=S.spin[4],S.spin[3]
|
||||||
|
S.clear_B[3],S.clear_B[4]=S.clear_B[4],S.clear_B[3]
|
||||||
|
S.spin_B[3],S.spin_B[4]=S.spin_B[4],S.spin_B[3]
|
||||||
|
end
|
||||||
|
if S.version=="Alpha V0.8.22"then
|
||||||
|
S.off=S.recv-S.pend
|
||||||
|
end
|
||||||
|
while #modeRanks>73 do
|
||||||
|
table.remove(modeRanks)
|
||||||
|
end
|
||||||
|
if modeRanks[73]==6 then modeRanks[73]=0 end
|
||||||
|
if setting.skin[10]==5 then
|
||||||
|
setting.skin[10],setting.skin[11]=1,5
|
||||||
|
end
|
||||||
|
if S.version~=gameVersion then
|
||||||
|
S.version=gameVersion
|
||||||
|
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
||||||
|
end
|
||||||
|
S=nil
|
||||||
@@ -9,7 +9,7 @@ return{
|
|||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
D.counter=D.counter+1
|
D.counter=D.counter+1
|
||||||
if D.counter>=max(30,80-.3*D.event)then
|
if D.counter>=max(30,80-.3*D.event)then
|
||||||
P:garbageRise(11+D.event%3,1,rnd(10))
|
P:garbageRise(13+D.event%5,1,rnd(10))
|
||||||
P.stat.recv=P.stat.recv+1
|
P.stat.recv=P.stat.recv+1
|
||||||
D.counter=0
|
D.counter=0
|
||||||
D.event=D.event+1
|
D.event=D.event+1
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ return{
|
|||||||
end,
|
end,
|
||||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||||
scoreDisp=function(D)return toTime(D[1]).." "..D[2].." Pieces"end,
|
scoreDisp=function(D)return toTime(D[1]).." "..D[2].." Pieces"end,
|
||||||
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,
|
comp=function(a,b)return a[2]>b[2]or a[2]==b[2]and a[1]<b[1]end,
|
||||||
getRank=function(P)
|
getRank=function(P)
|
||||||
local T=P.stat.row
|
local T=P.stat.row
|
||||||
if T<5 then
|
if T<5 then
|
||||||
|
|||||||
@@ -418,7 +418,7 @@ function Pnt.play()
|
|||||||
gc.origin()
|
gc.origin()
|
||||||
if restartCount>0 then
|
if restartCount>0 then
|
||||||
gc.setColor(0,0,0,restartCount*.05)
|
gc.setColor(0,0,0,restartCount*.05)
|
||||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi)
|
||||||
end
|
end
|
||||||
if game.warnLVL>0 then
|
if game.warnLVL>0 then
|
||||||
gc.setColor(0,0,0,0)
|
gc.setColor(0,0,0,0)
|
||||||
@@ -443,7 +443,7 @@ function Pnt.pause()
|
|||||||
gc.setColor(.15,.15,.15,_)
|
gc.setColor(.15,.15,.15,_)
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
gc.origin()
|
gc.origin()
|
||||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi)
|
||||||
gc.pop()
|
gc.pop()
|
||||||
|
|
||||||
--Pause Info
|
--Pause Info
|
||||||
@@ -692,7 +692,6 @@ end
|
|||||||
function Pnt.staff()
|
function Pnt.staff()
|
||||||
local L=text.staff
|
local L=text.staff
|
||||||
local t=sceneTemp.time
|
local t=sceneTemp.time
|
||||||
if t>45 then t=45 end
|
|
||||||
if t>0 then
|
if t>0 then
|
||||||
setFont(40)
|
setFont(40)
|
||||||
for i=1,#L do
|
for i=1,#L do
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ BGM.list={
|
|||||||
"secret7th","secret8th",
|
"secret7th","secret8th",
|
||||||
"shining terminal","oxygen","distortion","far",
|
"shining terminal","oxygen","distortion","far",
|
||||||
"rockblock","cruelty","final","8-bit happiness","end",
|
"rockblock","cruelty","final","8-bit happiness","end",
|
||||||
|
"hay what kind of feeling",
|
||||||
}
|
}
|
||||||
BGM.len=#BGM.list
|
BGM.len=#BGM.list
|
||||||
function BGM.loadOne(N)
|
function BGM.loadOne(N)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ local s={
|
|||||||
autoPause=true,
|
autoPause=true,
|
||||||
lang=1,
|
lang=1,
|
||||||
skinSet=1,
|
skinSet=1,
|
||||||
skin={1,5,8,2,10,3,7,1,5,5,1,8,2,10,3,7,10,7,8,2,8,2,1,5,3},
|
skin={1,5,8,2,10,3,7,1,5,1,5,8,2,10,3,7,10,7,8,2,8,2,1,5,3},
|
||||||
face={},
|
face={},
|
||||||
|
|
||||||
--graphic
|
--graphic
|
||||||
@@ -58,7 +58,8 @@ s={
|
|||||||
key=0,rotate=0,hold=0,
|
key=0,rotate=0,hold=0,
|
||||||
extraPiece=0,extraRate=0,
|
extraPiece=0,extraRate=0,
|
||||||
piece=0,row=0,dig=0,
|
piece=0,row=0,dig=0,
|
||||||
atk=0,digatk=0,send=0,recv=0,pend=0,
|
atk=0,digatk=0,
|
||||||
|
send=0,recv=0,pend=0,off=0,
|
||||||
clear={},clear_B={},clear_S={0,0,0,0,0},
|
clear={},clear_B={},clear_S={0,0,0,0,0},
|
||||||
spin={},spin_B={},spin_S={0,0,0,0,0},
|
spin={},spin_B={},spin_S={0,0,0,0,0},
|
||||||
pc=0,hpc=0,b2b=0,b3b=0,score=0,
|
pc=0,hpc=0,b2b=0,b3b=0,score=0,
|
||||||
|
|||||||
@@ -136,79 +136,6 @@ function File.loadData()
|
|||||||
if s then
|
if s then
|
||||||
setfenv(s,{})
|
setfenv(s,{})
|
||||||
local S=s()
|
local S=s()
|
||||||
if not S.version or S.version=="Alpha V0.8.15"then
|
|
||||||
S.clear_S={S.clear_1,S.clear_2,S.clear_3,S.clear_4}
|
|
||||||
S.clear={{},{},{},{},{},{},{}}
|
|
||||||
local A,B,C,D=int(S.clear_1/7),int(S.clear_2/7),int(S.clear_3/7),S.clear_4
|
|
||||||
for i=1,7 do
|
|
||||||
S.clear[i][1]=A
|
|
||||||
S.clear[i][2]=B
|
|
||||||
S.clear[i][3]=C
|
|
||||||
S.clear[i][4]=0
|
|
||||||
end
|
|
||||||
S.clear[7][4]=D
|
|
||||||
for i=1,S.clear_1%7 do S.clear[i][1]=S.clear[i][1]+1 end
|
|
||||||
for i=1,S.clear_2%7 do S.clear[i][2]=S.clear[i][2]+1 end
|
|
||||||
for i=1,S.clear_3%7 do S.clear[i][3]=S.clear[i][3]+1 end
|
|
||||||
S.clear_B={}
|
|
||||||
for i=1,7 do
|
|
||||||
S.clear_B[i]=S.clear[i][1]+S.clear[i][2]+S.clear[i][3]+S.clear[i][4]
|
|
||||||
end
|
|
||||||
|
|
||||||
S.spin_S={S.spin_0,S.spin_1,S.spin_2,S.spin_3}
|
|
||||||
S.spin={{},{},{},{},{},{},{}}
|
|
||||||
A,B,C,D=int(S.spin_0/7),int(S.spin_1/7),int(S.spin_2/7),int(S.spin_3/7)
|
|
||||||
for i=1,7 do
|
|
||||||
S.spin[i][1]=A
|
|
||||||
S.spin[i][2]=B
|
|
||||||
S.spin[i][3]=C
|
|
||||||
S.spin[i][4]=D
|
|
||||||
end
|
|
||||||
for i=1,S.spin_0%7 do S.spin[i][1]=S.spin[i][1]+1 end
|
|
||||||
for i=1,S.spin_1%7 do S.spin[i][2]=S.spin[i][2]+1 end
|
|
||||||
for i=1,S.spin_2%7 do S.spin[i][3]=S.spin[i][3]+1 end
|
|
||||||
for i=1,S.spin_3%7 do S.spin[i][4]=S.spin[i][4]+1 end
|
|
||||||
S.spin_B={}
|
|
||||||
for i=1,7 do
|
|
||||||
S.spin_B[i]=S.spin[i][1]+S.spin[i][2]+S.spin[i][3]+S.spin[i][4]
|
|
||||||
end
|
|
||||||
|
|
||||||
S.hpc=S.c
|
|
||||||
elseif S.version=="Alpha V0.8.16"then
|
|
||||||
for i=1,6 do
|
|
||||||
S.clear[7][4]=S.clear[7][4]+S.clear[i][4]
|
|
||||||
S.clear[i][4]=0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if not S.clear_B[8]then
|
|
||||||
for i=1,7 do
|
|
||||||
S.clear[i][5]=0
|
|
||||||
S.spin[i][5]=0
|
|
||||||
end
|
|
||||||
for i=8,25 do
|
|
||||||
S.clear[i]={0,0,0,0,0}
|
|
||||||
S.spin[i]={0,0,0,0,0}
|
|
||||||
S.spin_B[i]=0
|
|
||||||
S.clear_B[i]=0
|
|
||||||
end
|
|
||||||
S.spin_S[5]=0
|
|
||||||
S.clear_S[5]=0
|
|
||||||
end
|
|
||||||
if S.version=="Alpha V0.8.18"or S.version=="Alpha V0.8.19"then
|
|
||||||
S.clear[3],S.clear[4]=S.clear[4],S.clear[3]
|
|
||||||
S.spin[3],S.spin[4]=S.spin[4],S.spin[3]
|
|
||||||
S.clear_B[3],S.clear_B[4]=S.clear_B[4],S.clear_B[3]
|
|
||||||
S.spin_B[3],S.spin_B[4]=S.spin_B[4],S.spin_B[3]
|
|
||||||
end
|
|
||||||
if #modeRanks==76 then
|
|
||||||
for i=1,4 do
|
|
||||||
table.remove(modeRanks)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if S.version~=gameVersion then
|
|
||||||
S.version=gameVersion
|
|
||||||
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
|
||||||
end
|
|
||||||
addToTable(S,stat)
|
addToTable(S,stat)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -63,9 +63,9 @@ local OspinList={
|
|||||||
{323,6,0,-1,-1,2},{332,6,0,-2,-1,2},{322,6,0,-1,-2,2},--O
|
{323,6,0,-1,-1,2},{332,6,0,-2,-1,2},{322,6,0,-1,-2,2},--O
|
||||||
}--{key,id,dir,dx,dy,freeLv(0=unmovable,1=L/R unmovable,2=free)}
|
}--{key,id,dir,dx,dy,freeLv(0=unmovable,1=L/R unmovable,2=free)}
|
||||||
local XspinList={
|
local XspinList={
|
||||||
{{ 1,-1},{ 1, 0},{ 1, 1}},
|
{{ 1,-1},{ 1, 0},{ 1, 1},{ 1,-2},{ 1, 2}},
|
||||||
{{ 0,-1},{ 0,-2},{ 0, 1}},
|
{{ 0,-1},{ 0,-2},{ 0, 1},{ 0,-2},{ 0, 2}},
|
||||||
{{-1,-1},{-1, 0},{-1, 1}},
|
{{-1,-1},{-1, 0},{-1, 1},{-1,-2},{-1, 2}},
|
||||||
}
|
}
|
||||||
local TRS={
|
local TRS={
|
||||||
{
|
{
|
||||||
@@ -181,8 +181,8 @@ local TRS={
|
|||||||
[20]={{ 1, 0},{ 0, 1},{ 0,-1}},
|
[20]={{ 1, 0},{ 0, 1},{ 0,-1}},
|
||||||
[13]={{ 1, 0},{ 0, 1},{-1, 0}},
|
[13]={{ 1, 0},{ 0, 1},{-1, 0}},
|
||||||
[31]={{-1, 0},{ 0,-1},{ 1, 0}},
|
[31]={{-1, 0},{ 0,-1},{ 1, 0}},
|
||||||
},--Q
|
},--P
|
||||||
{},--P
|
{},--Q
|
||||||
{
|
{
|
||||||
[01]={{-1, 0},{ 1, 0},{-1, 1},{ 0,-2},{ 0,-3}},
|
[01]={{-1, 0},{ 1, 0},{-1, 1},{ 0,-2},{ 0,-3}},
|
||||||
[10]={{ 1, 0},{ 1,-1},{-1, 0},{ 0, 2},{ 0, 3}},
|
[10]={{ 1, 0},{ 1,-1},{-1, 0},{ 0, 2},{ 0, 3}},
|
||||||
@@ -291,8 +291,8 @@ local TRS={
|
|||||||
[30]={{ 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}},
|
||||||
[12]={{ 1, 0},{ 1,-1},{ 0,-1},{ 1,-2},{ 0,-2},{ 1, 1},{-1, 0},{ 0, 2},{ 1, 2}},
|
[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}},
|
[21]={{-1, 0},{-1, 1},{ 0, 1},{-1, 2},{ 0, 2},{-1,-1},{ 1, 0},{ 0,-2},{-1,-2}},
|
||||||
[32]={{-1, 0},{-1, 1},{-1,-1},{ 1, 0},{ 0, 2},{-1, 2},{ 0,-2}},
|
[32]={{-1, 0},{ 0,-1},{-1, 1},{-1,-1},{ 1, 0},{ 0, 2},{-1, 2},{ 0,-2}},
|
||||||
[23]={{ 1, 0},{ 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}},
|
||||||
[02]={{ 0,-1},{ 1,-1},{-1, 0},{ 2,-1},{ 0, 1}},
|
[02]={{ 0,-1},{ 1,-1},{-1, 0},{ 2,-1},{ 0, 1}},
|
||||||
[20]={{ 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}},
|
[13]={{-1, 0},{-1,-1},{ 0, 1},{-1,-2}},
|
||||||
|
|||||||
@@ -155,11 +155,11 @@ local langList={
|
|||||||
"",
|
"",
|
||||||
"使用LOVE2D引擎",
|
"使用LOVE2D引擎",
|
||||||
"",
|
"",
|
||||||
"程序:MrZ, (FinnTenzor)",
|
"程序:MrZ, FinnTenzor",
|
||||||
"美术:MrZ, (Gnyar)",
|
"美术:MrZ, (Gnyar)",
|
||||||
"音乐:MrZ, (T0722)",
|
"音乐:MrZ, (T0722)",
|
||||||
"音效:MrZ",
|
"音效:MrZ",
|
||||||
"语音:Miya, (MrZ)",
|
"语音:Miya, MrZ",
|
||||||
"",
|
"",
|
||||||
"特别感谢:",
|
"特别感谢:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -580,11 +580,11 @@ local langList={
|
|||||||
"",
|
"",
|
||||||
"使用LOVE2D引擎",
|
"使用LOVE2D引擎",
|
||||||
"",
|
"",
|
||||||
"程序:MrZ, (FinnTenzor)",
|
"程序:MrZ, FinnTenzor",
|
||||||
"美术:MrZ, (Gnyar)",
|
"美术:MrZ, (Gnyar)",
|
||||||
"音乐:MrZ, (T0722)",
|
"音乐:MrZ, (T0722)",
|
||||||
"音效:MrZ",
|
"音效:MrZ",
|
||||||
"语音:Miya, (MrZ)",
|
"语音:Miya, MrZ",
|
||||||
"",
|
"",
|
||||||
"特别感谢:",
|
"特别感谢:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -1002,13 +1002,13 @@ local langList={
|
|||||||
"",
|
"",
|
||||||
"Powered by LOVE2D",
|
"Powered by LOVE2D",
|
||||||
"",
|
"",
|
||||||
"Program: MrZ, (FinnTenzor)",
|
"Program: MrZ, FinnTenzor",
|
||||||
"Art: MrZ, (Gnyar)",
|
"Art: MrZ, (Gnyar)",
|
||||||
"Music: MrZ, (T0722)",
|
"Music: MrZ, (T0722)",
|
||||||
"Sound: MrZ",
|
"Sound: MrZ",
|
||||||
"Voice: Miya, (MrZ)",
|
"Voice: Miya, MrZ",
|
||||||
"",
|
"",
|
||||||
"Secial Thanks:",
|
"Special Thanks:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
"Teatube, [All test staff]",
|
"Teatube, [All test staff]",
|
||||||
},
|
},
|
||||||
@@ -1416,13 +1416,13 @@ local langList={
|
|||||||
"",
|
"",
|
||||||
"Powered by LOVE2D",
|
"Powered by LOVE2D",
|
||||||
"",
|
"",
|
||||||
"Program: MrZ, (FinnTenzor)",
|
"Program: MrZ, FinnTenzor",
|
||||||
"Art: MrZ, (Gnyar)",
|
"Art: MrZ, (Gnyar)",
|
||||||
"Music: MrZ, (T0722)",
|
"Music: MrZ, (T0722)",
|
||||||
"Sound: MrZ",
|
"Sound: MrZ",
|
||||||
"Voice: Miya, (MrZ)",
|
"Voice: Miya, MrZ",
|
||||||
"",
|
"",
|
||||||
"Secial Thanks:",
|
"Special Thanks:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
"Teatube, [All test staff]",
|
"Teatube, [All test staff]",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ local list={
|
|||||||
"steel(kulumi)",
|
"steel(kulumi)",
|
||||||
"pure(mrz)",
|
"pure(mrz)",
|
||||||
"ball(shaw)",
|
"ball(shaw)",
|
||||||
|
"paper(mrz)",
|
||||||
|
"classic(_)",
|
||||||
|
"brick(notypey)",
|
||||||
"text_bone(mrz)",
|
"text_bone(mrz)",
|
||||||
"colored_bone(mrz)",
|
"colored_bone(mrz)",
|
||||||
"white_bone(mrz)",
|
"white_bone(mrz)",
|
||||||
|
|||||||
40
player.lua
40
player.lua
@@ -957,7 +957,8 @@ local function getNewStatTable()
|
|||||||
key=0,rotate=0,hold=0,
|
key=0,rotate=0,hold=0,
|
||||||
extraPiece=0,extraRate=0,
|
extraPiece=0,extraRate=0,
|
||||||
piece=0,row=0,dig=0,
|
piece=0,row=0,dig=0,
|
||||||
atk=0,digatk=0,send=0,recv=0,pend=0,
|
atk=0,digatk=0,
|
||||||
|
send=0,recv=0,pend=0,off=0,
|
||||||
clear={},clear_B={},clear_S={0,0,0,0,0},
|
clear={},clear_B={},clear_S={0,0,0,0,0},
|
||||||
spin={},spin_B={},spin_S={0,0,0,0,0},
|
spin={},spin_B={},spin_S={0,0,0,0,0},
|
||||||
pc=0,hpc=0,b2b=0,b3b=0,
|
pc=0,hpc=0,b2b=0,b3b=0,
|
||||||
@@ -1337,11 +1338,12 @@ function player.drop(P)--Place piece
|
|||||||
local STAT=P.stat
|
local STAT=P.stat
|
||||||
local clear--if (perfect)clear
|
local clear--if (perfect)clear
|
||||||
local cc,gbcc=0,0--row/garbage-row cleared,full-part
|
local cc,gbcc=0,0--row/garbage-row cleared,full-part
|
||||||
local atk,send=0,0--Send&Send Time
|
local atk,exblock=0,0--attack & extra defense
|
||||||
local exblock=0--extra defense
|
local send,off=0,0--sending lines remain & offset
|
||||||
local cscore,sendTime=0,0
|
local cscore,sendTime=0,0--score & send Time
|
||||||
local dospin=0
|
local dospin=0
|
||||||
local mini
|
local mini
|
||||||
|
|
||||||
--spin check
|
--spin check
|
||||||
if P.spinLast then
|
if P.spinLast then
|
||||||
if P.cur.id<6 then
|
if P.cur.id<6 then
|
||||||
@@ -1470,8 +1472,7 @@ function player.drop(P)--Place piece
|
|||||||
if not finesse then--finesse: control
|
if not finesse then--finesse: control
|
||||||
if dospin then P.ctrlCount=P.ctrlCount-2 end--allow 2 more step for roof-less spin
|
if dospin then P.ctrlCount=P.ctrlCount-2 end--allow 2 more step for roof-less spin
|
||||||
local id=P.cur.id
|
local id=P.cur.id
|
||||||
local dir=P.dir+1
|
local d=P.ctrlCount-finesseList[id][P.dir+1][P.curX]
|
||||||
local d=P.ctrlCount-finesseList[id][dir][P.curX]
|
|
||||||
if d>=2 then P:fineError(2)
|
if d>=2 then P:fineError(2)
|
||||||
elseif d>0 then P:fineError(d)
|
elseif d>0 then P:fineError(d)
|
||||||
end--not finesse
|
end--not finesse
|
||||||
@@ -1595,7 +1596,7 @@ function player.drop(P)--Place piece
|
|||||||
sendTime=sendTime+25*cmb
|
sendTime=sendTime+25*cmb
|
||||||
if cmb>1 then
|
if cmb>1 then
|
||||||
atk=atk+(gbcc>0 and(DigComboAtk[cmb]or 5)or(WidComboAtk[cmb]or 2))
|
atk=atk+(gbcc>0 and(DigComboAtk[cmb]or 5)or(WidComboAtk[cmb]or 2))
|
||||||
P:showText(text.cmb[min(cmb,20)],0,25,15+min(cmb,25)*3,cmb<10 and"appear"or"flicker")
|
P:showText(text.cmb[min(cmb,21)],0,25,15+min(cmb,25)*3,cmb<10 and"appear"or"flicker")
|
||||||
cscore=cscore+min(20*cmb,300)*cc
|
cscore=cscore+min(20*cmb,300)*cc
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1614,6 +1615,7 @@ function player.drop(P)--Place piece
|
|||||||
if exblock then exblock=int(exblock*(1+P.strength*.25))end
|
if exblock then exblock=int(exblock*(1+P.strength*.25))end
|
||||||
send=int(send*(1+P.strength*.25))
|
send=int(send*(1+P.strength*.25))
|
||||||
--Badge Buff
|
--Badge Buff
|
||||||
|
|
||||||
if send>0 then
|
if send>0 then
|
||||||
P:showText(send,0,80,35,"zoomout")
|
P:showText(send,0,80,35,"zoomout")
|
||||||
if exblock>0 then
|
if exblock>0 then
|
||||||
@@ -1631,12 +1633,15 @@ function player.drop(P)--Place piece
|
|||||||
if not A then goto E end
|
if not A then goto E end
|
||||||
until not A.sent
|
until not A.sent
|
||||||
if send>=A.amount then
|
if send>=A.amount then
|
||||||
send=send-A.amount
|
local O=A.amount--cur Offset
|
||||||
P.atkBuffer.sum=P.atkBuffer.sum-A.amount
|
send=send-O
|
||||||
|
P.atkBuffer.sum=P.atkBuffer.sum-O
|
||||||
|
off=off+O
|
||||||
A.sent,A.time=true,0
|
A.sent,A.time=true,0
|
||||||
if send>0 then goto R end
|
if send>0 then goto R end
|
||||||
else
|
else
|
||||||
A.amount=A.amount-send
|
A.amount=A.amount-send
|
||||||
|
off=off+send
|
||||||
P.atkBuffer.sum=P.atkBuffer.sum-send
|
P.atkBuffer.sum=P.atkBuffer.sum-send
|
||||||
send=0
|
send=0
|
||||||
end
|
end
|
||||||
@@ -1718,6 +1723,9 @@ function player.drop(P)--Place piece
|
|||||||
if send>0 then
|
if send>0 then
|
||||||
STAT.send=STAT.send+int(send)
|
STAT.send=STAT.send+int(send)
|
||||||
end
|
end
|
||||||
|
if off>0 then
|
||||||
|
STAT.off=STAT.off+off
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if gbcc>0 then
|
if gbcc>0 then
|
||||||
STAT.dig=STAT.dig+gbcc
|
STAT.dig=STAT.dig+gbcc
|
||||||
@@ -1875,7 +1883,6 @@ function player.lose(P)
|
|||||||
if modeEnv.royaleMode then
|
if modeEnv.royaleMode then
|
||||||
P:changeAtk()
|
P:changeAtk()
|
||||||
P.modeData.event=#players.alive+1
|
P.modeData.event=#players.alive+1
|
||||||
P:showTextF(P.modeData.event,0,-120,60,"appear",1,12)
|
|
||||||
P.strength=0
|
P.strength=0
|
||||||
if P.lastRecv then
|
if P.lastRecv then
|
||||||
local A,i=P,0
|
local A,i=P,0
|
||||||
@@ -1901,6 +1908,7 @@ function player.lose(P)
|
|||||||
else
|
else
|
||||||
P.badge=-1
|
P.badge=-1
|
||||||
end
|
end
|
||||||
|
|
||||||
freshMostDangerous()
|
freshMostDangerous()
|
||||||
for i=1,#players.alive do
|
for i=1,#players.alive do
|
||||||
if players.alive[i].atking==P then
|
if players.alive[i].atking==P then
|
||||||
@@ -1910,14 +1918,21 @@ function player.lose(P)
|
|||||||
if #players.alive==royaleData.stage[game.stage]then
|
if #players.alive==royaleData.stage[game.stage]then
|
||||||
royaleLevelup()
|
royaleLevelup()
|
||||||
end
|
end
|
||||||
|
P:showTextF(P.modeData.event,0,120,60,"appear",.26,.9)
|
||||||
end
|
end
|
||||||
P.gameEnv.keepVisible=P.gameEnv.visible~="show"
|
P.gameEnv.keepVisible=P.gameEnv.visible~="show"
|
||||||
P:showTextF(text.lose,0,0,90,"appear",.5,.2)
|
P:showTextF(text.lose,0,0,90,"appear",.26,.9)
|
||||||
if P.human then
|
if P.human then
|
||||||
game.result="lose"
|
game.result="lose"
|
||||||
SFX.play("fail")
|
SFX.play("fail")
|
||||||
VOC.play("lose")
|
VOC.play("lose")
|
||||||
if modeEnv.royaleMode then BGM.play("end")end
|
if modeEnv.royaleMode then
|
||||||
|
if P.modeData.event==2 then
|
||||||
|
BGM.play("hay what kind of feeling")
|
||||||
|
else
|
||||||
|
BGM.play("end")
|
||||||
|
end
|
||||||
|
end
|
||||||
gameOver()
|
gameOver()
|
||||||
TASK.new(#players>1 and tickEvent.lose or tickEvent.finish,P)
|
TASK.new(#players>1 and tickEvent.lose or tickEvent.finish,P)
|
||||||
end
|
end
|
||||||
@@ -2208,7 +2223,6 @@ local function newEmptyPlayer(id,x,y,size)
|
|||||||
for k,v in next,player do P[k]=v end
|
for k,v in next,player do P[k]=v end
|
||||||
|
|
||||||
P.small=false
|
P.small=false
|
||||||
P.keyRec=false--if calculate keySpeed
|
|
||||||
P.life=0
|
P.life=0
|
||||||
P.alive=true
|
P.alive=true
|
||||||
P.control=false
|
P.control=false
|
||||||
|
|||||||
13
scene.lua
13
scene.lua
@@ -123,8 +123,8 @@ function sceneInit.pause(org)
|
|||||||
|
|
||||||
--from right-down, 60 degree each
|
--from right-down, 60 degree each
|
||||||
radar={
|
radar={
|
||||||
(S.recv-S.pend+S.dig)/S.time*60,--DefPM
|
(S.off+S.dig)/S.time*60,--DefPM
|
||||||
(S.recv-S.pend)/S.time*60, --OffPM
|
(S.off)/S.time*60, --OffPM
|
||||||
S.atk/S.time*60, --AtkPM
|
S.atk/S.time*60, --AtkPM
|
||||||
S.send/S.time*60, --SendPM
|
S.send/S.time*60, --SendPM
|
||||||
S.piece/S.time*24, --LinePM
|
S.piece/S.time*24, --LinePM
|
||||||
@@ -214,6 +214,7 @@ function sceneInit.staff()
|
|||||||
sceneTemp={
|
sceneTemp={
|
||||||
time=0,
|
time=0,
|
||||||
v=1,
|
v=1,
|
||||||
|
ct=0,
|
||||||
}
|
}
|
||||||
BG.set("space")
|
BG.set("space")
|
||||||
end
|
end
|
||||||
@@ -231,7 +232,7 @@ function sceneInit.stat()
|
|||||||
toTime(S.time),
|
toTime(S.time),
|
||||||
S.key.." "..S.rotate.." "..S.hold,
|
S.key.." "..S.rotate.." "..S.hold,
|
||||||
S.piece.." "..S.row.." "..int(S.atk),
|
S.piece.." "..S.row.." "..int(S.atk),
|
||||||
S.recv.." "..(S.recv-S.pend).." "..S.pend,
|
S.recv.." "..S.off.." "..S.pend,
|
||||||
S.dig.." "..int(S.digatk),
|
S.dig.." "..int(S.digatk),
|
||||||
format("%.2f %.2f",S.atk/S.row,S.digatk/S.dig),
|
format("%.2f %.2f",S.atk/S.row,S.digatk/S.dig),
|
||||||
format("%d/%.3f%%",S.extraPiece,100*max(1-S.extraRate/S.piece,0)),
|
format("%d/%.3f%%",S.extraPiece,100*max(1-S.extraRate/S.piece,0)),
|
||||||
@@ -259,17 +260,17 @@ local swap={
|
|||||||
fade={30,15,function(t)
|
fade={30,15,function(t)
|
||||||
local t=t>15 and 2-t/15 or t/15
|
local t=t>15 and 2-t/15 or t/15
|
||||||
gc.setColor(0,0,0,t)
|
gc.setColor(0,0,0,t)
|
||||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi)
|
||||||
end},
|
end},
|
||||||
fade_togame={120,20,function(t)
|
fade_togame={120,20,function(t)
|
||||||
local t=t>20 and (120-t)/100 or t/20
|
local t=t>20 and (120-t)/100 or t/20
|
||||||
gc.setColor(0,0,0,t)
|
gc.setColor(0,0,0,t)
|
||||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi)
|
||||||
end},
|
end},
|
||||||
slowFade={180,90,function(t)
|
slowFade={180,90,function(t)
|
||||||
local t=t>90 and 2-t/90 or t/90
|
local t=t>90 and 2-t/90 or t/90
|
||||||
gc.setColor(0,0,0,t)
|
gc.setColor(0,0,0,t)
|
||||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi)
|
||||||
end},
|
end},
|
||||||
}--Scene swapping animations
|
}--Scene swapping animations
|
||||||
local backFunc={
|
local backFunc={
|
||||||
|
|||||||
@@ -319,5 +319,10 @@ function Tmr.staff(dt)
|
|||||||
S.v=S.v-.26
|
S.v=S.v-.26
|
||||||
end
|
end
|
||||||
S.time=S.time+S.v*dt
|
S.time=S.time+S.v*dt
|
||||||
|
if S.time>45 then
|
||||||
|
S.time=45
|
||||||
|
elseif S.time<-10 then
|
||||||
|
S.time=-10
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return Tmr
|
return Tmr
|
||||||
@@ -6,6 +6,7 @@ local S=[=[
|
|||||||
弥佑瑶
|
弥佑瑶
|
||||||
Alan
|
Alan
|
||||||
幽灵3383
|
幽灵3383
|
||||||
|
靏鸖龘龘
|
||||||
[rmb10+]:
|
[rmb10+]:
|
||||||
八零哥
|
八零哥
|
||||||
蕴空之灵
|
蕴空之灵
|
||||||
@@ -16,6 +17,7 @@ local S=[=[
|
|||||||
金巧
|
金巧
|
||||||
10元
|
10元
|
||||||
立斐
|
立斐
|
||||||
|
Deep_Sea
|
||||||
时雪
|
时雪
|
||||||
yyangdid
|
yyangdid
|
||||||
sfqr
|
sfqr
|
||||||
@@ -44,15 +46,17 @@ local S=[=[
|
|||||||
TCV100
|
TCV100
|
||||||
tech有养成系统了@7065
|
tech有养成系统了@7065
|
||||||
HAGE KANOBU
|
HAGE KANOBU
|
||||||
|
闪电和拐棍
|
||||||
葡萄味的曼妥思
|
葡萄味的曼妥思
|
||||||
(闪电和拐棍)
|
世界沃德
|
||||||
(D*a)
|
蓝绿
|
||||||
|
|
||||||
Thanks!!!
|
Thanks!!!
|
||||||
|
|
||||||
Future outlook:
|
Future outlook:
|
||||||
New mode:
|
New mode:
|
||||||
tutorial
|
game tutorial
|
||||||
|
finesse tutorial
|
||||||
game Abbr. test
|
game Abbr. test
|
||||||
backfire
|
backfire
|
||||||
finesse exam(3next, 1pt/mino, drop to score)
|
finesse exam(3next, 1pt/mino, drop to score)
|
||||||
@@ -65,10 +69,10 @@ Future outlook:
|
|||||||
task survival
|
task survival
|
||||||
dig practice
|
dig practice
|
||||||
dig zen
|
dig zen
|
||||||
symmetry
|
sprint_symmetry
|
||||||
hidden mode: sound only
|
hidden: sound only
|
||||||
reverb mode (often repeat a piece many times)
|
reverb mode (often repeat a piece many times)
|
||||||
4 keys limit per piece
|
KPP-locked mode
|
||||||
Other:
|
Other:
|
||||||
mod system with:
|
mod system with:
|
||||||
block hidden
|
block hidden
|
||||||
@@ -78,7 +82,12 @@ Future outlook:
|
|||||||
next hidden
|
next hidden
|
||||||
field flip(LR/UD)
|
field flip(LR/UD)
|
||||||
no fail(∞ lives)
|
no fail(∞ lives)
|
||||||
|
mini games:
|
||||||
|
15 puzzle
|
||||||
|
mine sweeper
|
||||||
|
2048
|
||||||
简易防沉迷系统
|
简易防沉迷系统
|
||||||
|
next SFX
|
||||||
better drop FX
|
better drop FX
|
||||||
60+ fps supporting
|
60+ fps supporting
|
||||||
in-game document
|
in-game document
|
||||||
@@ -94,6 +103,25 @@ Future outlook:
|
|||||||
network game
|
network game
|
||||||
new AI: task-Z
|
new AI: task-Z
|
||||||
|
|
||||||
|
0.8.24: Bug Fixed
|
||||||
|
new:
|
||||||
|
ready to refuse auto-formating stats. if update from versions too old
|
||||||
|
changed:
|
||||||
|
little changing of pentomini wallkicks
|
||||||
|
fixed:
|
||||||
|
incorrect color of P/Q
|
||||||
|
rank of petomino may be [custom]
|
||||||
|
0.8.23: Details Update
|
||||||
|
new:
|
||||||
|
new hidden BGM: Hay what kind of feeling
|
||||||
|
now can reset all data (hidden)
|
||||||
|
changed:
|
||||||
|
add a stat "offset", used to avoid strange radar chart in Attack Mode, show in total stat page only
|
||||||
|
6 more X-spin-wallkick added
|
||||||
|
fixed:
|
||||||
|
speed dial do not moving
|
||||||
|
do not show 20+ combo
|
||||||
|
|
||||||
0.8.22: Shader Update
|
0.8.22: Shader Update
|
||||||
new:
|
new:
|
||||||
new background: aura (using shader)
|
new background: aura (using shader)
|
||||||
@@ -394,7 +422,7 @@ Future outlook:
|
|||||||
fixed:
|
fixed:
|
||||||
many bugs
|
many bugs
|
||||||
|
|
||||||
0.8.4: Miya Update+
|
0.8.4: Miya Update II
|
||||||
changed:
|
changed:
|
||||||
vocal more natural(important, may cause new bug)
|
vocal more natural(important, may cause new bug)
|
||||||
a bit better performence on mobile devices
|
a bit better performence on mobile devices
|
||||||
|
|||||||
Reference in New Issue
Block a user