Compare commits

...

2 Commits

Author SHA1 Message Date
MrZ_26
e1d92a166b 0.8.24: Bug Fixed 2020-06-14 15:21:20 +08:00
MrZ_26
99b55b72e0 0.8.23: Details Update 2020-06-07 01:06:31 +08:00
21 changed files with 216 additions and 129 deletions

Binary file not shown.

View File

@@ -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)

View File

@@ -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
font.ttf

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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,

View File

@@ -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

View File

@@ -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}},

View File

@@ -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]",
}, },

View File

@@ -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)",

View File

@@ -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

View File

@@ -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={

View File

@@ -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

View File

@@ -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