0.8.18:Details Update II
This commit is contained in:
1231
callback.lua
Normal file
1231
callback.lua
Normal file
File diff suppressed because it is too large
Load Diff
2
conf.lua
2
conf.lua
@@ -1,4 +1,4 @@
|
|||||||
gameVersion="Alpha V0.8.17"
|
gameVersion="Alpha V0.8.18"
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
t.identity="Techmino"--SaveDir name
|
t.identity="Techmino"--SaveDir name
|
||||||
t.version="11.1"
|
t.version="11.1"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ setting={
|
|||||||
das=10,arr=2,
|
das=10,arr=2,
|
||||||
sddas=0,sdarr=2,
|
sddas=0,sdarr=2,
|
||||||
ihs=true,irs=true,ims=true,
|
ihs=true,irs=true,ims=true,
|
||||||
reTime=10,
|
reTime=4,
|
||||||
maxNext=6,
|
maxNext=6,
|
||||||
quickR=true,
|
quickR=true,
|
||||||
swap=true,
|
swap=true,
|
||||||
@@ -34,7 +34,8 @@ setting={
|
|||||||
stereo=6,
|
stereo=6,
|
||||||
--sound
|
--sound
|
||||||
|
|
||||||
VKSound=true,--if SFX
|
VKSFX=3,--SFX volume
|
||||||
|
VKVIB=0,--VIB
|
||||||
VKSwitch=false,--if disp
|
VKSwitch=false,--if disp
|
||||||
VKTrack=false,--if tracked
|
VKTrack=false,--if tracked
|
||||||
VKDodge=false,--if dodge
|
VKDodge=false,--if dodge
|
||||||
|
|||||||
10
document.txt
10
document.txt
@@ -3,12 +3,10 @@
|
|||||||
活到最后或者完成目标即胜利.
|
活到最后或者完成目标即胜利.
|
||||||
|
|
||||||
旋转系统:
|
旋转系统:
|
||||||
使用Techmino专属旋转系统
|
使用Techmino专属旋转系统,细节懒得写(
|
||||||
细节懒得写(?)
|
|
||||||
|
|
||||||
spin判定:
|
spin判定:
|
||||||
结合了不可移动判定和三角判定,是否为mini也与判定过程数据有关
|
结合了不可移动判定和三角判定,是否为mini也与判定过程数据有关,细节也懒得写(
|
||||||
细节也懒得写(?)
|
|
||||||
|
|
||||||
攻击系统:
|
攻击系统:
|
||||||
普通消除:
|
普通消除:
|
||||||
@@ -48,11 +46,11 @@ back to back(B2B)点数说明:
|
|||||||
1.随机:每次攻击后10%随机挑选一个玩家锁定
|
1.随机:每次攻击后10%随机挑选一个玩家锁定
|
||||||
2.最多徽章:攻击后或者锁定玩家死亡时锁定徽章最多的玩家
|
2.最多徽章:攻击后或者锁定玩家死亡时锁定徽章最多的玩家
|
||||||
3.最高:攻击后或者锁定玩家死亡时锁定场地最高的玩家(每秒刷新)
|
3.最高:攻击后或者锁定玩家死亡时锁定场地最高的玩家(每秒刷新)
|
||||||
4.反击:攻击所有锁定自己的玩家(攻击AOE),若未被任何人锁定则伏击随机玩家
|
4.反击:攻击所有锁定自己的玩家(攻击AOE),若未被任何人锁定则攻击随机玩家(不锁定)
|
||||||
坚持到最后的玩家就是胜利者.
|
坚持到最后的玩家就是胜利者.
|
||||||
|
|
||||||
自定义模式说明:
|
自定义模式说明:
|
||||||
玩家可以自由调整大多数参数(不包括上述各种游戏模式的特殊效果),也可以画一个场地去消除或者是作为提示模板来进行拼图模式.
|
玩家可以自由调整大多数参数(不包括上述各种游戏模式的特殊效果),也可以画一个场地去消除或者是作为提示模板来进行拼图模式.
|
||||||
在拼图模式下,按功能键切换是否展示提示.其中打"X"的格子不允许有方块,空的格子可以是任何状态,普通的七种彩色方块必须颜色对应,垃圾行方块的为止只要有方块就可以,但是不能是空气,玩家拼出自己画的图后就会判定胜利.
|
在拼图模式下,按功能键切换是否展示提示.其中打"X"的格子不允许有方块,空的格子可以是任何状态,普通的七种彩色方块必须颜色对应,垃圾行方块的为止只要有方块就可以,但是不能是空气,玩家拼出自己画的图后就会判定胜利.
|
||||||
附录:
|
附录:
|
||||||
ZXC的Ospin地图:XY0BCgAwCAIR7v9vHtUSt8AS0xKqgpnNGyXkrmFNePf6qi3BbQPrHT2Owxe6D66NeKi86dwB
|
ZXC的Ospin地图:XY0BCgAwCAIR7v9vHtUSt8AS0xKqgpnNGyXkrmFNePf6qi3BbQPrHT2Owxe6D66NeKi86dwB
|
||||||
@@ -32,10 +32,10 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.piece
|
local T=P.stat.piece
|
||||||
return
|
return
|
||||||
T<=30 and 5 or
|
T<=23 and 5 or
|
||||||
T<=40 and 4 or
|
T<=26 and 4 or
|
||||||
T<=55 and 3 or
|
T<=40 and 3 or
|
||||||
T<=70 and 2 or
|
T<=60 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.piece
|
local T=P.stat.piece
|
||||||
return
|
return
|
||||||
T<=35 and 5 or
|
T<=30 and 5 or
|
||||||
T<=45 and 4 or
|
T<=40 and 4 or
|
||||||
T<=65 and 3 or
|
T<=55 and 3 or
|
||||||
T<=85 and 2 or
|
T<=75 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.piece
|
local T=P.stat.piece
|
||||||
return
|
return
|
||||||
T<=40 and 5 or
|
T<=30 and 5 or
|
||||||
T<=50 and 4 or
|
T<=40 and 4 or
|
||||||
T<=75 and 3 or
|
T<=55 and 3 or
|
||||||
T<=100 and 2 or
|
T<=75 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.piece
|
local T=P.stat.piece
|
||||||
return
|
return
|
||||||
T<=50 and 5 or
|
T<=30 and 5 or
|
||||||
T<=60 and 4 or
|
T<=40 and 4 or
|
||||||
T<=80 and 3 or
|
T<=55 and 3 or
|
||||||
T<=100 and 2 or
|
T<=75 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=15 and 5 or
|
T<=20 and 5 or
|
||||||
T<=25 and 4 or
|
T<=25 and 4 or
|
||||||
T<=40 and 3 or
|
T<=35 and 3 or
|
||||||
T<=80 and 2 or
|
T<=60 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=16 and 5 or
|
T<=20 and 5 or
|
||||||
T<=28 and 4 or
|
T<=25 and 4 or
|
||||||
T<=45 and 3 or
|
T<=40 and 3 or
|
||||||
T<=90 and 2 or
|
T<=62 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=17 and 5 or
|
T<=20 and 5 or
|
||||||
T<=26 and 4 or
|
T<=25 and 4 or
|
||||||
T<=45 and 3 or
|
T<=35 and 3 or
|
||||||
T<=60 and 2 or
|
T<=60 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ return{
|
|||||||
if P.result=="WIN"then
|
if P.result=="WIN"then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=18 and 5 or
|
T<=20 and 5 or
|
||||||
T<=30 and 4 or
|
T<=25 and 4 or
|
||||||
T<=50 and 3 or
|
T<=35 and 3 or
|
||||||
T<=70 and 2 or
|
T<=60 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ return{
|
|||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=20 and 5 or
|
T<=20 and 5 or
|
||||||
T<=30 and 4 or
|
T<=25 and 4 or
|
||||||
T<=45 and 3 or
|
T<=35 and 3 or
|
||||||
T<=60 and 2 or
|
T<=60 and 2 or
|
||||||
1
|
1
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ return{
|
|||||||
T<=90 and 4 or
|
T<=90 and 4 or
|
||||||
T<=130 and 3 or
|
T<=130 and 3 or
|
||||||
T<=200 and 2 or
|
T<=200 and 2 or
|
||||||
T<=270 and 1 or
|
T<=360 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -32,8 +32,8 @@ return{
|
|||||||
T<=626 and 5 or
|
T<=626 and 5 or
|
||||||
T<=1000 and 4 or
|
T<=1000 and 4 or
|
||||||
T<=1400 and 3 or
|
T<=1400 and 3 or
|
||||||
T<=2200 and 2 or
|
T<=2260 and 2 or
|
||||||
T<=3000 and 1 or
|
T<=3260 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -31,8 +31,8 @@ return{
|
|||||||
return
|
return
|
||||||
T<=13 and 5 or
|
T<=13 and 5 or
|
||||||
T<=18 and 4 or
|
T<=18 and 4 or
|
||||||
T<=45 and 3 or
|
T<=32.6 and 3 or
|
||||||
T<=80 and 2 or
|
T<=62.6 and 2 or
|
||||||
T<=126 and 1 or
|
T<=126 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ return{
|
|||||||
return
|
return
|
||||||
T<=26 and 5 or
|
T<=26 and 5 or
|
||||||
T<=32.6 and 4 or
|
T<=32.6 and 4 or
|
||||||
T<=40 and 3 or
|
T<=52.6 and 3 or
|
||||||
T<=62 and 2 or
|
T<=92.9 and 2 or
|
||||||
T<=183 and 1 or
|
T<=183 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ return{
|
|||||||
if P.stat.row<400 then return end
|
if P.stat.row<400 then return end
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=255 and 5 or
|
T<=62,255 and 5 or
|
||||||
T<=330 and 4 or
|
T<=90,326 and 4 or
|
||||||
T<=420 and 3 or
|
T<=130,462 and 3 or
|
||||||
T<=626 and 2 or
|
T<=200,626 and 2 or
|
||||||
T<=1000 and 1 or
|
T<=360,1260 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -338,7 +338,7 @@ function Pnt.draw()
|
|||||||
local pen=sceneTemp.pen
|
local pen=sceneTemp.pen
|
||||||
if pen>0 then
|
if pen>0 then
|
||||||
gc.setLineWidth(13)
|
gc.setLineWidth(13)
|
||||||
gc.setColor(skin.libColor[pen])
|
gc.setColor(SKIN.libColor[pen])
|
||||||
gc.rectangle("line",565,460,70,70)
|
gc.rectangle("line",565,460,70,70)
|
||||||
elseif pen==-1 then
|
elseif pen==-1 then
|
||||||
gc.setLineWidth(5)
|
gc.setLineWidth(5)
|
||||||
@@ -354,7 +354,7 @@ function Pnt.draw()
|
|||||||
local _
|
local _
|
||||||
for i=1,7 do
|
for i=1,7 do
|
||||||
_=setting.skin[i]
|
_=setting.skin[i]
|
||||||
gc.setColor(skin.libColor[_])
|
gc.setColor(SKIN.libColor[_])
|
||||||
mStr(text.block[i],500+65*_,65)
|
mStr(text.block[i],500+65*_,65)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -434,7 +434,7 @@ function Pnt.pause()
|
|||||||
if T<1 or gameResult then Pnt.play()end
|
if T<1 or gameResult then Pnt.play()end
|
||||||
--Dark BG
|
--Dark BG
|
||||||
local _=T
|
local _=T
|
||||||
if gameResult then _=_*.6 end
|
if gameResult then _=_*.7 end
|
||||||
gc.setColor(.15,.15,.15,_)
|
gc.setColor(.15,.15,.15,_)
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
gc.origin()
|
gc.origin()
|
||||||
@@ -689,7 +689,7 @@ end
|
|||||||
function Pnt.stat()
|
function Pnt.stat()
|
||||||
local chart=sceneTemp.chart
|
local chart=sceneTemp.chart
|
||||||
setFont(24)
|
setFont(24)
|
||||||
local _,__=skin.libColor,setting.skin
|
local _,__=SKIN.libColor,setting.skin
|
||||||
local A,B=chart.A1,chart.A2
|
local A,B=chart.A1,chart.A2
|
||||||
for x=1,7 do
|
for x=1,7 do
|
||||||
gc.setColor(_[__[x]])
|
gc.setColor(_[__[x]])
|
||||||
|
|||||||
108
parts/ai.lua
108
parts/ai.lua
@@ -19,64 +19,64 @@ local blockPos={4,4,4,4,4,5,4}
|
|||||||
local scs={{1,2},{1,2},{1,2},{1,2},{1,2},{1.5,1.5},{0.5,2.5}}
|
local scs={{1,2},{1,2},{1,2},{1,2},{1,2},{1.5,1.5},{0.5,2.5}}
|
||||||
-------------------------------------------------Cold clear
|
-------------------------------------------------Cold clear
|
||||||
local CCblockID={4,3,5,6,1,2,0}
|
local CCblockID={4,3,5,6,1,2,0}
|
||||||
if system~="Windows"then goto SKIP end
|
if system=="Windows"then
|
||||||
require("CCloader")
|
require("CCloader")
|
||||||
BOT={
|
BOT={
|
||||||
getConf= cc.get_default_config ,--()options,weights
|
getConf= cc.get_default_config ,--()options,weights
|
||||||
--setConf= cc.set_options ,--(options,hold,20g,bag7)
|
--setConf= cc.set_options ,--(options,hold,20g,bag7)
|
||||||
|
|
||||||
new= cc.launch_async ,--(options,weights)bot
|
new= cc.launch_async ,--(options,weights)bot
|
||||||
addNext= cc.add_next_piece_async ,--(bot,piece)
|
addNext= cc.add_next_piece_async ,--(bot,piece)
|
||||||
update= cc.reset_async ,--(bot,field,b2b,combo)
|
update= cc.reset_async ,--(bot,field,b2b,combo)
|
||||||
think= cc.request_next_move ,--(bot)
|
think= cc.request_next_move ,--(bot)
|
||||||
getMove= cc.poll_next_move ,--(bot)success,hold,move
|
getMove= cc.poll_next_move ,--(bot)success,hold,move
|
||||||
ifDead= cc.is_dead_async ,--(bot)dead
|
ifDead= cc.is_dead_async ,--(bot)dead
|
||||||
destroy= cc.destroy_async ,--(bot)
|
destroy= cc.destroy_async ,--(bot)
|
||||||
|
|
||||||
setHold= cc.set_hold ,--(opt,bool)
|
setHold= cc.set_hold ,--(opt,bool)
|
||||||
set20G= cc.set_20g ,--(opt,bool)
|
set20G= cc.set_20g ,--(opt,bool)
|
||||||
setBag= cc.set_bag7 ,--(opt,bool)
|
setBag= cc.set_bag7 ,--(opt,bool)
|
||||||
setNode= cc.set_max_nodes ,--(opt,bool)
|
setNode= cc.set_max_nodes ,--(opt,bool)
|
||||||
free= cc.free ,--(opt/wei)
|
free= cc.free ,--(opt/wei)
|
||||||
}
|
}
|
||||||
function CC_updateField(P)
|
function CC_updateField(P)
|
||||||
local F,i={},1
|
local F,i={},1
|
||||||
for y=1,#P.field do
|
for y=1,#P.field do
|
||||||
for x=1,10 do
|
for x=1,10 do
|
||||||
F[i],i=P.field[y][x]>0,i+1
|
F[i],i=P.field[y][x]>0,i+1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
while i<400 do
|
||||||
|
F[i],i=false,i+1
|
||||||
|
end
|
||||||
|
BOT.update(P.AI_bot,F,P.b2b>=100,P.combo)
|
||||||
end
|
end
|
||||||
while i<400 do
|
function CC_switch20G(P)
|
||||||
F[i],i=false,i+1
|
P.AIdata._20G=true
|
||||||
end
|
P.AI_keys={}
|
||||||
BOT.update(P.AI_bot,F,P.b2b>=100,P.combo)
|
BOT.destroy(P.AI_bot)
|
||||||
end
|
local opt,wei=BOT.getConf()
|
||||||
function CC_switch20G(P)
|
BOT.setHold(opt,P.AIdata.hold)
|
||||||
P.AIdata._20G=true
|
BOT.set20G(opt,P.AIdata._20G)
|
||||||
P.AI_keys={}
|
BOT.setBag(opt,P.AIdata.bag7)
|
||||||
BOT.destroy(P.AI_bot)
|
BOT.setNode(opt,P.AIdata.node)
|
||||||
local opt,wei=BOT.getConf()
|
P.AI_bot=BOT.new(opt,wei)
|
||||||
BOT.setHold(opt,P.AIdata.hold)
|
BOT.free(opt)BOT.free(wei)
|
||||||
BOT.set20G(opt,P.AIdata._20G)
|
for i=1,P.AIdata.next do
|
||||||
BOT.setBag(opt,P.AIdata.bag7)
|
BOT.addNext(P.AI_bot,CCblockID[P.next[i].id])
|
||||||
BOT.setNode(opt,P.AIdata.node)
|
end
|
||||||
P.AI_bot=BOT.new(opt,wei)
|
CC_updateField(P)
|
||||||
BOT.free(opt)BOT.free(wei)
|
P.hd={bk={{}},id=0,color=0,name=0}P.holded=false
|
||||||
for i=1,P.AIdata.next do
|
P.cur=rem(P.next,1)
|
||||||
BOT.addNext(P.AI_bot,CCblockID[P.next[i].id])
|
P.sc,P.dir=scs[P.cur.id],0
|
||||||
end
|
P.r,P.c=#P.cur.bk,#P.cur.bk[1]
|
||||||
CC_updateField(P)
|
P.curX,P.curY=blockPos[P.cur.id],21+ceil(P.fieldBeneath/30)-P.r+min(int(#P.field*.2),2)
|
||||||
P.hd={bk={{}},id=0,color=0,name=0}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]
|
|
||||||
P.curX,P.curY=blockPos[P.cur.id],21+ceil(P.fieldBeneath/30)-P.r+min(int(#P.field*.2),2)
|
|
||||||
|
|
||||||
P:newNext()
|
P:newNext()
|
||||||
BOT.addNext(P.AI_bot,CCblockID[P.next[P.AIdata.next].id])
|
BOT.addNext(P.AI_bot,CCblockID[P.next[P.AIdata.next].id])
|
||||||
collectgarbage()
|
collectgarbage()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
::SKIP::
|
|
||||||
-------------------------------------------------⑨Stack setup
|
-------------------------------------------------⑨Stack setup
|
||||||
local dirCount={1,1,3,3,3,0,1}
|
local dirCount={1,1,3,3,3,0,1}
|
||||||
local spinOffset={
|
local spinOffset={
|
||||||
@@ -231,10 +231,8 @@ AI_think={
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
::L::
|
while #Tfield>0 do
|
||||||
if #Tfield>0 then
|
|
||||||
freeRow.discard(rem(Tfield,1))
|
freeRow.discard(rem(Tfield,1))
|
||||||
goto L
|
|
||||||
end--Release cache
|
end--Release cache
|
||||||
local p=#ctrl+1
|
local p=#ctrl+1
|
||||||
if best.hold then
|
if best.hold then
|
||||||
|
|||||||
28
parts/bg.lua
28
parts/bg.lua
@@ -3,7 +3,6 @@ local int,ceil,rnd,abs=math.floor,math.ceil,math.random,math.abs
|
|||||||
local max,min,sin,cos=math.max,math.min,math.sin,math.cos
|
local max,min,sin,cos=math.max,math.min,math.sin,math.cos
|
||||||
|
|
||||||
local scr=scr
|
local scr=scr
|
||||||
|
|
||||||
local BGinit,BGresize,BGupdate,BGdraw,BGdiscard={},{},{},{},{}
|
local BGinit,BGresize,BGupdate,BGdraw,BGdiscard={},{},{},{},{}
|
||||||
local BGvars={_G=_G}
|
local BGvars={_G=_G}
|
||||||
|
|
||||||
@@ -136,7 +135,7 @@ end--Lightning
|
|||||||
|
|
||||||
function BGinit.game6()
|
function BGinit.game6()
|
||||||
t=0
|
t=0
|
||||||
colorLib=_G.skin.libColor
|
colorLib=_G.SKIN.libColor
|
||||||
colorSet=_G.setting.skin
|
colorSet=_G.setting.skin
|
||||||
miniBlock=_G.miniBlock
|
miniBlock=_G.miniBlock
|
||||||
end
|
end
|
||||||
@@ -180,34 +179,37 @@ end
|
|||||||
function BGinit.space()
|
function BGinit.space()
|
||||||
stars={}
|
stars={}
|
||||||
for i=1,2600,5 do
|
for i=1,2600,5 do
|
||||||
local s=0.75*2^(rnd()*1.5)
|
local s=rnd(4)
|
||||||
stars[i]=s --size
|
stars[i]=s --size
|
||||||
stars[i+1]=rnd(W) --x
|
stars[i+1]=rnd(W)-10 --x
|
||||||
stars[i+2]=rnd(H) --y
|
stars[i+2]=rnd(H)-10 --y
|
||||||
stars[i+3]=(rnd()-.5)*.01*s --vx
|
stars[i+3]=(rnd()-.5)*.01*s --vx
|
||||||
stars[i+4]=(rnd()-.5)*.01*s --vy
|
stars[i+4]=(rnd()-.5)*.01*s --vy
|
||||||
end--800 var
|
end--800 var
|
||||||
end
|
end
|
||||||
function BGresize.space(w,h)
|
function BGresize.space(w,h)
|
||||||
W,H=w+100,h+100
|
W,H=w+20,h+20
|
||||||
|
BGinit.space()
|
||||||
end
|
end
|
||||||
function BGupdate.space(dt)
|
function BGupdate.space(dt)
|
||||||
|
local s=stars
|
||||||
for i=1,2600,5 do
|
for i=1,2600,5 do
|
||||||
stars[i+1]=(stars[i+1]+stars[i+3])%W
|
s[i+1]=(s[i+1]+s[i+3])%W
|
||||||
stars[i+2]=(stars[i+2]+stars[i+4])%H
|
s[i+2]=(s[i+2]+s[i+4])%H
|
||||||
end--star moving
|
end--star moving
|
||||||
end
|
end
|
||||||
|
|
||||||
function BGdraw.space()
|
function BGdraw.space()
|
||||||
gc.clear(.2,.2,.2)
|
gc.clear(.2,.2,.2)
|
||||||
if not stars[1]then return end
|
if not stars[1]then return end
|
||||||
gc.translate(-50,-50)
|
gc.translate(-10,-10)
|
||||||
gc.setColor(.8,.8,.8)
|
gc.setColor(.8,.8,.8)
|
||||||
for i=1,2600,5 do
|
for i=1,2600,5 do
|
||||||
local x,y=stars[i+1],stars[i+2]
|
local s=stars
|
||||||
gc.circle("fill",x,y,stars[i])
|
local x,y=s[i+1],s[i+2]
|
||||||
|
s=s[i]
|
||||||
|
gc.rectangle("fill",x,y,s,s)
|
||||||
end
|
end
|
||||||
gc.translate(50,50)
|
gc.translate(10,10)
|
||||||
end
|
end
|
||||||
function BGdiscard.space()
|
function BGdiscard.space()
|
||||||
stars={}
|
stars={}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ function BGM.loadAll()
|
|||||||
end
|
end
|
||||||
function BGM.play(s)
|
function BGM.play(s)
|
||||||
if setting.bgm==0 then
|
if setting.bgm==0 then
|
||||||
|
BGM.playing=BGM.list[s]
|
||||||
BGM.suspend,BGM.nowPlay=s
|
BGM.suspend,BGM.nowPlay=s
|
||||||
return
|
return
|
||||||
elseif not s then
|
elseif not s then
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ local langList={
|
|||||||
{
|
{
|
||||||
anykey="按任意键继续",
|
anykey="按任意键继续",
|
||||||
newVersion="检测到更新!存档格式可能更新",
|
newVersion="检测到更新!存档格式可能更新",
|
||||||
|
marking="游戏作者:MrZ_26\n出现此水印则为非法录屏上传",
|
||||||
lang="中文",
|
lang="中文",
|
||||||
atkModeName={"随机","徽章","击杀","反击"},
|
atkModeName={"随机","徽章","击杀","反击"},
|
||||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||||
@@ -146,10 +147,10 @@ local langList={
|
|||||||
"使用LOVE2D引擎",
|
"使用LOVE2D引擎",
|
||||||
"作者:MrZ 邮箱:1046101471@qq.com",
|
"作者:MrZ 邮箱:1046101471@qq.com",
|
||||||
"程序:MrZ 美术:MrZ 音乐:MrZ 音效:MrZ 语音:MrZ/Miya",
|
"程序:MrZ 美术:MrZ 音乐:MrZ 音效:MrZ 语音:MrZ/Miya",
|
||||||
"特别感谢:Flyz,Farter,196,Teatube,T830,[所有内测人员]和 你!",
|
"特别感谢:Flyz,Farter,196,Teatube,[所有内测人员]和 你!",
|
||||||
"",
|
"",
|
||||||
"错误或者建议请附带截图发送到内测群或者作者邮箱~",
|
"错误或者建议请附带截图发送到内测群或者作者邮箱~",
|
||||||
"仅通过唯一内测群1057456078进行免费下载/更新",
|
"仅通过唯一内测群822023725进行免费下载/更新",
|
||||||
"其他渠道获得游戏皆有被修改/植入病毒的风险,程序只申请了震动&联网权限!",
|
"其他渠道获得游戏皆有被修改/植入病毒的风险,程序只申请了震动&联网权限!",
|
||||||
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
|
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
|
||||||
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
||||||
@@ -305,7 +306,8 @@ local langList={
|
|||||||
pro="专业",
|
pro="专业",
|
||||||
hide="显示虚拟按键",
|
hide="显示虚拟按键",
|
||||||
track="按键自动跟踪",
|
track="按键自动跟踪",
|
||||||
sound="按键音效",
|
sfx="按键音效",
|
||||||
|
vib="按键震动",
|
||||||
icon="图标",
|
icon="图标",
|
||||||
tkset="跟踪设置",
|
tkset="跟踪设置",
|
||||||
alpha="透明度",
|
alpha="透明度",
|
||||||
@@ -411,6 +413,7 @@ local langList={
|
|||||||
{
|
{
|
||||||
anykey="按任意键继续",
|
anykey="按任意键继续",
|
||||||
newVersion="检测到更新!存档格式可能更新",
|
newVersion="检测到更新!存档格式可能更新",
|
||||||
|
marking="游戏作者:MrZ_26\n出现此水印则为非法录屏上传",
|
||||||
lang="全中文",
|
lang="全中文",
|
||||||
atkModeName={"随机","徽章","击杀","反击"},
|
atkModeName={"随机","徽章","击杀","反击"},
|
||||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||||
@@ -465,7 +468,7 @@ local langList={
|
|||||||
freshLimit={0,8,15,"∞"},
|
freshLimit={0,8,15,"∞"},
|
||||||
opponent={"无电脑","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
opponent={"无电脑","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||||
},
|
},
|
||||||
snapLevelName={"无吸附","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"},
|
snapLevelName={"无吸附","10像素吸附","20像素吸附","40像素吸附","60像素吸附","80像素吸附"},
|
||||||
setting_game="游戏设置",
|
setting_game="游戏设置",
|
||||||
setting_graphic="画面设置",
|
setting_graphic="画面设置",
|
||||||
setting_sound="声音设置",
|
setting_sound="声音设置",
|
||||||
@@ -508,7 +511,7 @@ local langList={
|
|||||||
"落在最左:","落在最右:","列在最左:","列在最右:",
|
"落在最左:","落在最右:","列在最左:","列在最右:",
|
||||||
},
|
},
|
||||||
|
|
||||||
load={[0]="加载完成","加载语音ing","加载音乐ing","加载音效ing","加载图片ing","加载模式ing","加载乱七八糟的东西ing"},
|
load={[0]="加载完成","正在加载语音","正在加载音乐","正在加载音效","正在加载图片","正在加载模式","正在加载乱七八糟的东西"},
|
||||||
pauseStat={
|
pauseStat={
|
||||||
"时间:",
|
"时间:",
|
||||||
"按键/旋转/暂存:",
|
"按键/旋转/暂存:",
|
||||||
@@ -553,10 +556,10 @@ local langList={
|
|||||||
"使用LOVE2D引擎",
|
"使用LOVE2D引擎",
|
||||||
"作者:MrZ 邮箱:1046101471@qq.com",
|
"作者:MrZ 邮箱:1046101471@qq.com",
|
||||||
"程序:MrZ 美术:MrZ 音乐:MrZ 音效:MrZ 语音:MrZ/Miya",
|
"程序:MrZ 美术:MrZ 音乐:MrZ 音效:MrZ 语音:MrZ/Miya",
|
||||||
"特别感谢:Flyz,Farter,196,Teatube,T830,[所有内测人员]和 你!",
|
"特别感谢:Flyz,Farter,196,Teatube,[所有内测人员]和 你!",
|
||||||
"",
|
"",
|
||||||
"错误或者建议请附带截图发送到内测群或者作者邮箱~",
|
"错误或者建议请附带截图发送到内测群或者作者邮箱~",
|
||||||
"仅通过唯一内测群1057456078进行免费下载/更新",
|
"仅通过内测群822023725进行免费下载/更新",
|
||||||
"其他渠道获得游戏皆有被修改/植入病毒的风险,程序只申请了震动&联网权限!",
|
"其他渠道获得游戏皆有被修改/植入病毒的风险,程序只申请了震动&联网权限!",
|
||||||
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
|
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
|
||||||
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
||||||
@@ -711,7 +714,8 @@ local langList={
|
|||||||
pro="专业",
|
pro="专业",
|
||||||
hide="显示虚拟按键",
|
hide="显示虚拟按键",
|
||||||
track="按键自动跟踪",
|
track="按键自动跟踪",
|
||||||
sound="按键音效",
|
sfx="按键音效",
|
||||||
|
vib="按键震动",
|
||||||
icon="图标",
|
icon="图标",
|
||||||
tkset="跟踪设置",
|
tkset="跟踪设置",
|
||||||
alpha="透明度",
|
alpha="透明度",
|
||||||
@@ -817,6 +821,7 @@ local langList={
|
|||||||
{
|
{
|
||||||
anykey="Any Key to Continue",
|
anykey="Any Key to Continue",
|
||||||
newVersion="Updating detected! Saving format may changed",
|
newVersion="Updating detected! Saving format may changed",
|
||||||
|
marking="Author:MrZ_26\nIllegal recording if u see this",
|
||||||
lang="English",
|
lang="English",
|
||||||
atkModeName={"Random","Badges","K.O.s","Counters"},
|
atkModeName={"Random","Badges","K.O.s","Counters"},
|
||||||
royale_remain=function(n)return n.." Players Remain"end,
|
royale_remain=function(n)return n.." Players Remain"end,
|
||||||
@@ -956,10 +961,10 @@ local langList={
|
|||||||
"Powered by LOVE2D",
|
"Powered by LOVE2D",
|
||||||
"Author:MrZ E-mail:1046101471@qq.com",
|
"Author:MrZ E-mail:1046101471@qq.com",
|
||||||
"Program:MrZ Art:MrZ Music:MrZ SFX:MrZ VOICE:MrZ/Miya",
|
"Program:MrZ Art:MrZ Music:MrZ SFX:MrZ VOICE:MrZ/Miya",
|
||||||
"Special thanks:Flyz,Farter,196,Teatube,T830,[all test staff] and YOU!",
|
"Special thanks:Flyz,Farter,196,Teatube,[all test staff] and YOU!",
|
||||||
"",
|
"",
|
||||||
"Any bugs/suggestions to my E-mail.(may with screenshot)",
|
"Any bugs/suggestions to my E-mail.(may with screenshot)",
|
||||||
"Only released in test group for FREE",
|
"Only released in discord.gg/f9pUvkh for FREE",
|
||||||
"Game downloaded from other way may implanted with virus",
|
"Game downloaded from other way may implanted with virus",
|
||||||
"Only network/vibrating permission applied",
|
"Only network/vibrating permission applied",
|
||||||
"Author is not responsible for any loss by edited game",
|
"Author is not responsible for any loss by edited game",
|
||||||
@@ -1115,7 +1120,8 @@ local langList={
|
|||||||
pro="Professioanl",
|
pro="Professioanl",
|
||||||
hide="Show Virtual Key",
|
hide="Show Virtual Key",
|
||||||
track="Auto track",
|
track="Auto track",
|
||||||
sound="SFX",
|
sfx="SFX",
|
||||||
|
vib="VIB",
|
||||||
icon="Icon",
|
icon="Icon",
|
||||||
tkset="Track setting",
|
tkset="Track setting",
|
||||||
alpha="Alpha",
|
alpha="Alpha",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
do return end
|
||||||
--LIGHT MODULE(Optimized by MrZ,Original on github/love2d community/simple-love-lights)
|
--LIGHT MODULE(Optimized by MrZ,Original on github/love2d community/simple-love-lights)
|
||||||
--Heavily based on mattdesl's libGDX implementation:
|
--Heavily based on mattdesl's libGDX implementation:
|
||||||
--https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
|
--https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ local list={
|
|||||||
"colored_bone(mrz)",
|
"colored_bone(mrz)",
|
||||||
"white_bone(mrz)",
|
"white_bone(mrz)",
|
||||||
}
|
}
|
||||||
local skin={}
|
local SKIN={}
|
||||||
skin.lib={}
|
SKIN.lib={}
|
||||||
skin.libMini={}
|
SKIN.libMini={}
|
||||||
skin.libColor={
|
SKIN.libColor={
|
||||||
color.red,
|
color.red,
|
||||||
color.orange,
|
color.orange,
|
||||||
color.yellow,
|
color.yellow,
|
||||||
@@ -41,7 +41,7 @@ skin.libColor={
|
|||||||
color.darkRed,
|
color.darkRed,
|
||||||
color.darkGreen,
|
color.darkGreen,
|
||||||
}
|
}
|
||||||
function skin.load()
|
function SKIN.load()
|
||||||
local _
|
local _
|
||||||
gc.push()
|
gc.push()
|
||||||
gc.origin()
|
gc.origin()
|
||||||
@@ -49,36 +49,36 @@ function skin.load()
|
|||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
for i=1,#list do
|
for i=1,#list do
|
||||||
local I=gc.newImage("/image/skin/"..list[i]..".png")
|
local I=gc.newImage("/image/skin/"..list[i]..".png")
|
||||||
skin.lib[i],skin.libMini[i]={},{}--30/6
|
SKIN.lib[i],SKIN.libMini[i]={},{}--30/6
|
||||||
for j=1,11 do
|
for j=1,11 do
|
||||||
skin.lib[i][j]=C(30,30)
|
SKIN.lib[i][j]=C(30,30)
|
||||||
gc.draw(I,30-30*j,0)
|
gc.draw(I,30-30*j,0)
|
||||||
|
|
||||||
skin.libMini[i][j]=C(6,6)
|
SKIN.libMini[i][j]=C(6,6)
|
||||||
gc.draw(I,6-6*j,0,nil,.2)
|
gc.draw(I,6-6*j,0,nil,.2)
|
||||||
end
|
end
|
||||||
for j=1,6 do
|
for j=1,6 do
|
||||||
skin.lib[i][11+j]=C(30,30)
|
SKIN.lib[i][11+j]=C(30,30)
|
||||||
gc.draw(I,30-30*j,-30)
|
gc.draw(I,30-30*j,-30)
|
||||||
|
|
||||||
skin.libMini[i][11+j]=C(6,6)
|
SKIN.libMini[i][11+j]=C(6,6)
|
||||||
gc.draw(I,6-6*j,-6,nil,.2)
|
gc.draw(I,6-6*j,-6,nil,.2)
|
||||||
end
|
end
|
||||||
I:release()
|
I:release()
|
||||||
end
|
end
|
||||||
skin.change(setting.skinSet)
|
SKIN.change(setting.skinSet)
|
||||||
puzzleMark={}
|
puzzleMark={}
|
||||||
gc.setLineWidth(3)
|
gc.setLineWidth(3)
|
||||||
for i=1,11 do
|
for i=1,11 do
|
||||||
puzzleMark[i]=C(30,30)
|
puzzleMark[i]=C(30,30)
|
||||||
_=skin.libColor[i]
|
_=SKIN.libColor[i]
|
||||||
gc.setColor(_[1],_[2],_[3],.6)
|
gc.setColor(_[1],_[2],_[3],.6)
|
||||||
gc.rectangle("line",5,5,20,20)
|
gc.rectangle("line",5,5,20,20)
|
||||||
gc.rectangle("line",10,10,10,10)
|
gc.rectangle("line",10,10,10,10)
|
||||||
end
|
end
|
||||||
for i=12,17 do
|
for i=12,17 do
|
||||||
puzzleMark[i]=C(30,30)
|
puzzleMark[i]=C(30,30)
|
||||||
gc.setColor(skin.libColor[i])
|
gc.setColor(SKIN.libColor[i])
|
||||||
gc.rectangle("line",7,7,16,16)
|
gc.rectangle("line",7,7,16,16)
|
||||||
end
|
end
|
||||||
_=C(30,30)
|
_=C(30,30)
|
||||||
@@ -93,34 +93,34 @@ function skin.load()
|
|||||||
gc.pop()
|
gc.pop()
|
||||||
end
|
end
|
||||||
local L=#list
|
local L=#list
|
||||||
function skin.prevSet()--prev skin_set
|
function SKIN.prevSet()--prev skin_set
|
||||||
local _=(setting.skinSet-2)%L+1
|
local _=(setting.skinSet-2)%L+1
|
||||||
setting.skinSet=_
|
setting.skinSet=_
|
||||||
skin.change(_)
|
SKIN.change(_)
|
||||||
_=list[_]
|
_=list[_]
|
||||||
TEXT.show(_,1100,100,int(300/#_)+5,"fly")
|
TEXT.show(_,1100,100,int(300/#_)+5,"fly")
|
||||||
end
|
end
|
||||||
function skin.nextSet()--next skin_set
|
function SKIN.nextSet()--next skin_set
|
||||||
local _=setting.skinSet%L+1
|
local _=setting.skinSet%L+1
|
||||||
setting.skinSet=_
|
setting.skinSet=_
|
||||||
skin.change(_)
|
SKIN.change(_)
|
||||||
_=list[_]
|
_=list[_]
|
||||||
TEXT.show(_,1100,100,int(300/#_)+5,"fly")
|
TEXT.show(_,1100,100,int(300/#_)+5,"fly")
|
||||||
end
|
end
|
||||||
function skin.prev(i)--prev skin for [i]
|
function SKIN.prev(i)--prev skin for [i]
|
||||||
local _=setting.skin
|
local _=setting.skin
|
||||||
_[i]=(_[i]-2)%11+1
|
_[i]=(_[i]-2)%11+1
|
||||||
end
|
end
|
||||||
function skin.next(i)--next skin for [i]
|
function SKIN.next(i)--next skin for [i]
|
||||||
local _=setting.skin
|
local _=setting.skin
|
||||||
_[i]=_[i]%11+1
|
_[i]=_[i]%11+1
|
||||||
end
|
end
|
||||||
function skin.rotate(i)--change direction of [i]
|
function SKIN.rotate(i)--change direction of [i]
|
||||||
setting.face[i]=(setting.face[i]+1)%4
|
setting.face[i]=(setting.face[i]+1)%4
|
||||||
SFX.play("rotate")
|
SFX.play("rotate")
|
||||||
end
|
end
|
||||||
function skin.change(i)--change to skin_set[i]
|
function SKIN.change(i)--change to skin_set[i]
|
||||||
blockSkin=skin.lib[i]
|
blockSkin=SKIN.lib[i]
|
||||||
blockSkinMini=skin.libMini[i]
|
blockSkinMini=SKIN.libMini[i]
|
||||||
end
|
end
|
||||||
return skin
|
return SKIN
|
||||||
@@ -3,6 +3,8 @@ local rnd=math.random
|
|||||||
local mStr=mStr
|
local mStr=mStr
|
||||||
local rem=table.remove
|
local rem=table.remove
|
||||||
|
|
||||||
|
local texts={}
|
||||||
|
|
||||||
local textFX={}
|
local textFX={}
|
||||||
function textFX.appear(t)
|
function textFX.appear(t)
|
||||||
mStr(t.text,t.x,t.y-t.font*.7)
|
mStr(t.text,t.x,t.y-t.font*.7)
|
||||||
@@ -64,11 +66,14 @@ function textFX.beat(t)
|
|||||||
end
|
end
|
||||||
function textFX.mark(t)
|
function textFX.mark(t)
|
||||||
local _,_,_,T=gc.getColor()
|
local _,_,_,T=gc.getColor()
|
||||||
gc.setColor(1,1,1,T*.06626)
|
gc.setColor(1,1,1,T*.08)
|
||||||
mStr(t.text,t.x,t.y-t.font*.7)
|
mStr(t.text,t.x,t.y-t.font*.7)
|
||||||
end
|
end
|
||||||
|
|
||||||
local TEXT={}
|
local TEXT={}
|
||||||
|
function TEXT.clear()
|
||||||
|
texts={}
|
||||||
|
end
|
||||||
function TEXT.getText(text,x,y,font,style,spd,stop)
|
function TEXT.getText(text,x,y,font,style,spd,stop)
|
||||||
return{
|
return{
|
||||||
c=0,
|
c=0,
|
||||||
@@ -94,6 +99,7 @@ function TEXT.show(text,x,y,font,style,spd,stop)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
function TEXT.update(list)
|
function TEXT.update(list)
|
||||||
|
if not list then list=texts end
|
||||||
for i=#list,1,-1 do
|
for i=#list,1,-1 do
|
||||||
local t=list[i]
|
local t=list[i]
|
||||||
t.c=t.c+t.spd
|
t.c=t.c+t.spd
|
||||||
@@ -108,6 +114,7 @@ function TEXT.update(list)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function TEXT.draw(list)
|
function TEXT.draw(list)
|
||||||
|
if not list then list=texts end
|
||||||
for i=1,#list do
|
for i=1,#list do
|
||||||
local t=list[i]
|
local t=list[i]
|
||||||
local p=t.c
|
local p=t.c
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
local level={0,.015,.02,.03,.04,.05,.06,.07,.08,.09}
|
local level={0,0,.015,.02,.03,.04,.05,.06,.07,.08}
|
||||||
local _=love.system.vibrate
|
local _=love.system.vibrate
|
||||||
return function(t)
|
return function(t)
|
||||||
local L=setting.vib
|
local L=setting.vib
|
||||||
|
|||||||
57
player.lua
57
player.lua
@@ -547,15 +547,13 @@ local function Pdraw_demo(P)
|
|||||||
gc.draw(_,15,30,nil,16,nil,0,_:getHeight()*.5)
|
gc.draw(_,15,30,nil,16,nil,0,_:getHeight()*.5)
|
||||||
end
|
end
|
||||||
local N=1
|
local N=1
|
||||||
::L::
|
while N<=P.gameEnv.next and P.next[N]do
|
||||||
if N<=P.gameEnv.next and P.next[N]then
|
|
||||||
local id=P.next[N].id
|
local id=P.next[N].id
|
||||||
_=P.color[id]
|
_=P.color[id]
|
||||||
gc.setColor(_[1],_[2],_[3],.3)
|
gc.setColor(_[1],_[2],_[3],.3)
|
||||||
_=miniBlock[id]
|
_=miniBlock[id]
|
||||||
gc.draw(_,285,40*N-10,nil,16,nil,_:getWidth(),_:getHeight()*.5)
|
gc.draw(_,285,40*N-10,nil,16,nil,_:getWidth(),_:getHeight()*.5)
|
||||||
N=N+1
|
N=N+1
|
||||||
goto L
|
|
||||||
end
|
end
|
||||||
--Next
|
--Next
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
@@ -811,7 +809,8 @@ local function Pupdate_dead(P,dt)
|
|||||||
if P.human and P.gameEnv.fall>0 and #P.field+L>P.clearingRow[L]then SFX.play("fall")end
|
if P.human and P.gameEnv.fall>0 and #P.field+L>P.clearingRow[L]then SFX.play("fall")end
|
||||||
P.clearingRow={}
|
P.clearingRow={}
|
||||||
end
|
end
|
||||||
end::stop::
|
end
|
||||||
|
::stop::
|
||||||
if P.endCounter<40 then
|
if P.endCounter<40 then
|
||||||
for j=1,#P.field do for i=1,10 do
|
for j=1,#P.field do for i=1,10 do
|
||||||
if P.visTime[j][i]<20 then P.visTime[j][i]=P.visTime[j][i]+.5 end
|
if P.visTime[j][i]<20 then P.visTime[j][i]=P.visTime[j][i]+.5 end
|
||||||
@@ -867,7 +866,7 @@ function player.createBeam(P,R,send,time,target,color,clear,spin,mini,combo)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local radius,corner
|
local radius,corner
|
||||||
local a,r,g,b=1,unpack(skin.libColor[color])
|
local a,r,g,b=1,unpack(SKIN.libColor[color])
|
||||||
if clear>10 then
|
if clear>10 then
|
||||||
radius=10+3*send+100/(target+4)
|
radius=10+3*send+100/(target+4)
|
||||||
local t=clear%10
|
local t=clear%10
|
||||||
@@ -992,7 +991,7 @@ function player.garbageSend(P,R,send,time,...)
|
|||||||
end
|
end
|
||||||
function player.garbageRelease(P)
|
function player.garbageRelease(P)
|
||||||
local n,flag=1
|
local n,flag=1
|
||||||
::L::
|
while true do
|
||||||
local A=P.atkBuffer[n]
|
local A=P.atkBuffer[n]
|
||||||
if A and A.countdown<=0 and not A.sent then
|
if A and A.countdown<=0 and not A.sent then
|
||||||
P:garbageRise(12+A.lv,A.amount,A.pos)
|
P:garbageRise(12+A.lv,A.amount,A.pos)
|
||||||
@@ -1002,10 +1001,9 @@ function player.garbageRelease(P)
|
|||||||
n=n+1
|
n=n+1
|
||||||
flag=true
|
flag=true
|
||||||
else
|
else
|
||||||
goto E
|
break
|
||||||
end
|
end
|
||||||
goto L
|
end
|
||||||
::E::
|
|
||||||
if flag and P.AI_mode=="CC"then CC_updateField(P)end
|
if flag and P.AI_mode=="CC"then CC_updateField(P)end
|
||||||
end
|
end
|
||||||
function player.garbageRise(P,color,amount,pos)
|
function player.garbageRise(P,color,amount,pos)
|
||||||
@@ -1435,12 +1433,9 @@ function player.drop(P)--Place piece
|
|||||||
end
|
end
|
||||||
--清除超高特效
|
--清除超高特效
|
||||||
_=#P.clearingRow
|
_=#P.clearingRow
|
||||||
::L::if _>0 then
|
while _>0 and P.clearingRow[_]>#P.field do
|
||||||
if P.clearingRow[_]>#P.field then
|
P.clearingRow[_]=nil
|
||||||
P.clearingRow[_]=nil
|
_=_-1
|
||||||
_=_-1
|
|
||||||
goto L
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if P.clearingRow[1]then
|
if P.clearingRow[1]then
|
||||||
P.falling=P.gameEnv.fall
|
P.falling=P.gameEnv.fall
|
||||||
@@ -1595,20 +1590,22 @@ 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 goto L end
|
if send>0 then
|
||||||
P:showText(send,0,80,35,"zoomout")
|
P:showText(send,0,80,35,"zoomout")
|
||||||
if exblock==0 then goto L end
|
if exblock>0 then
|
||||||
P:showText(exblock,0,120,20,"zoomout")
|
P:showText(exblock,0,120,20,"zoomout")
|
||||||
::L::
|
end
|
||||||
|
end
|
||||||
send=send+exblock
|
send=send+exblock
|
||||||
local k=0
|
local k=0
|
||||||
::R::
|
::R::
|
||||||
if P.atkBuffer.sum>0 and send>0 then
|
if send>0 and P.atkBuffer.sum>0 then
|
||||||
::F::
|
local A
|
||||||
|
repeat
|
||||||
k=k+1
|
k=k+1
|
||||||
local A=P.atkBuffer[k]
|
A=P.atkBuffer[k]
|
||||||
if not A then goto E end
|
if not A then goto E end
|
||||||
if A.sent then goto F end
|
until not A.sent
|
||||||
if send>=A.amount then
|
if send>=A.amount then
|
||||||
send=send-A.amount
|
send=send-A.amount
|
||||||
P.atkBuffer.sum=P.atkBuffer.sum-A.amount
|
P.atkBuffer.sum=P.atkBuffer.sum-A.amount
|
||||||
@@ -1771,12 +1768,9 @@ local function gameOver()
|
|||||||
local L=M.records
|
local L=M.records
|
||||||
local p=#L--排名数-1
|
local p=#L--排名数-1
|
||||||
if p>0 then
|
if p>0 then
|
||||||
::L::
|
while M.comp(D,L[p])do--是否靠前
|
||||||
if M.comp(D,L[p])then--是否靠前
|
|
||||||
p=p-1
|
p=p-1
|
||||||
if p>0 then
|
if p==0 then break end
|
||||||
goto L
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if p<10 then
|
if p<10 then
|
||||||
@@ -1791,6 +1785,7 @@ local function gameOver()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end--Save record
|
end--Save record
|
||||||
|
|
||||||
function player.die(P)--Same thing when win/lose,not really die!
|
function player.die(P)--Same thing when win/lose,not really die!
|
||||||
P.alive=false
|
P.alive=false
|
||||||
P.timing=false
|
P.timing=false
|
||||||
@@ -2228,7 +2223,7 @@ function newDemoPlayer(id,x,y,size)
|
|||||||
if ENV.shakeFX==0 then ENV.shakeFX=nil end
|
if ENV.shakeFX==0 then ENV.shakeFX=nil end
|
||||||
P.color={}
|
P.color={}
|
||||||
for _=1,7 do
|
for _=1,7 do
|
||||||
P.color[_]=skin.libColor[ENV.skin[_]]
|
P.color[_]=SKIN.libColor[ENV.skin[_]]
|
||||||
end
|
end
|
||||||
P.cur={bk={{}},id=0,color=0,name=0}
|
P.cur={bk={{}},id=0,color=0,name=0}
|
||||||
P.sc,P.dir,P.r,P.c={0,0},0,0,0
|
P.sc,P.dir,P.r,P.c={0,0},0,0,0
|
||||||
@@ -2430,7 +2425,7 @@ function newAIPlayer(id,x,y,size,AIdata)
|
|||||||
|
|
||||||
P.color={}
|
P.color={}
|
||||||
for _=1,7 do
|
for _=1,7 do
|
||||||
P.color[_]=skin.libColor[ENV.skin[_]]
|
P.color[_]=SKIN.libColor[ENV.skin[_]]
|
||||||
end
|
end
|
||||||
|
|
||||||
P.showTime=visible_opt[ENV.visible]
|
P.showTime=visible_opt[ENV.visible]
|
||||||
@@ -2550,7 +2545,7 @@ function newPlayer(id,x,y,size)
|
|||||||
|
|
||||||
P.color={}
|
P.color={}
|
||||||
for _=1,7 do
|
for _=1,7 do
|
||||||
P.color[_]=skin.libColor[ENV.skin[_]]
|
P.color[_]=SKIN.libColor[ENV.skin[_]]
|
||||||
end
|
end
|
||||||
|
|
||||||
P.showTime=visible_opt[ENV.visible]
|
P.showTime=visible_opt[ENV.visible]
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
local gc=love.graphics
|
||||||
local int,log=math.floor,math.log
|
local int,log=math.floor,math.log
|
||||||
local sin,cos=math.sin,math.cos
|
local sin,cos=math.sin,math.cos
|
||||||
local max,format=math.max,string.format
|
local max,format=math.max,string.format
|
||||||
|
local scr=scr
|
||||||
local SCN={
|
local SCN={
|
||||||
cur="load",--Current scene
|
cur="load",--Current scene
|
||||||
swapping=false,--ifSwapping
|
swapping=false,--ifSwapping
|
||||||
@@ -235,7 +237,6 @@ local sceneInit={
|
|||||||
love.event.quit()
|
love.event.quit()
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
local gc=love.graphics
|
|
||||||
local swap={
|
local swap={
|
||||||
none={1,0,NULL},
|
none={1,0,NULL},
|
||||||
flash={8,1,function()gc.clear(1,1,1)end},
|
flash={8,1,function()gc.clear(1,1,1)end},
|
||||||
|
|||||||
89
timer.lua
89
timer.lua
@@ -8,52 +8,51 @@ local Tmr={}
|
|||||||
function Tmr.load()
|
function Tmr.load()
|
||||||
local t=Timer()
|
local t=Timer()
|
||||||
local S=sceneTemp
|
local S=sceneTemp
|
||||||
::R::
|
repeat
|
||||||
--L={stage,curPos,curLen}
|
if S.phase==1 then
|
||||||
if S.phase==1 then
|
VOC.loadOne(S.cur)
|
||||||
VOC.loadOne(S.cur)
|
elseif S.phase==2 then
|
||||||
elseif S.phase==2 then
|
BGM.loadOne(S.cur)
|
||||||
BGM.loadOne(S.cur)
|
elseif S.phase==3 then
|
||||||
elseif S.phase==3 then
|
SFX.loadOne(S.cur)
|
||||||
SFX.loadOne(S.cur)
|
elseif S.phase==4 then
|
||||||
elseif S.phase==4 then
|
IMG.loadOne(S.cur)
|
||||||
IMG.loadOne(S.cur)
|
elseif S.phase==5 then
|
||||||
elseif S.phase==5 then
|
local m=modes[S.cur]
|
||||||
local m=modes[S.cur]
|
modes[S.cur]=require("modes/"..m[1])
|
||||||
modes[S.cur]=require("modes/"..m[1])
|
local M=modes[S.cur]
|
||||||
local M=modes[S.cur]
|
M.saveFileName,M.id=m[1],m.id
|
||||||
M.saveFileName,M.id=m[1],m.id
|
M.x,M.y,M.size,M.shape=m.x,m.y,m.size,m.shape
|
||||||
M.x,M.y,M.size,M.shape=m.x,m.y,m.size,m.shape
|
M.unlock=m.unlock
|
||||||
M.unlock=m.unlock
|
M.records=FILE.loadRecord(m[1])or M.score and{}
|
||||||
M.records=FILE.loadRecord(m[1])or M.score and{}
|
-- M.icon=gc.newImage("image/modeIcon/"..m.icon..".png")
|
||||||
-- M.icon=gc.newImage("image/modeIcon/"..m.icon..".png")
|
-- M.icon=gc.newImage("image/modeIcon/custom.png")
|
||||||
-- M.icon=gc.newImage("image/modeIcon/custom.png")
|
elseif S.phase==6 then
|
||||||
elseif S.phase==6 then
|
--------------------------Loading some other things here?
|
||||||
--------------------------Loading some other things here?
|
SKIN.load()
|
||||||
skin.load()
|
stat.run=stat.run+1
|
||||||
stat.run=stat.run+1
|
--------------------------
|
||||||
--------------------------
|
SFX.play("welcome_sfx")
|
||||||
SFX.play("welcome_sfx")
|
VOC.play("welcome")
|
||||||
VOC.play("welcome")
|
else
|
||||||
else
|
S.cur=S.cur+1
|
||||||
|
S.tar=S.cur
|
||||||
|
if S.cur>62.6 then
|
||||||
|
SCN.swapTo("intro","none")
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
S.cur=S.cur+1
|
S.cur=S.cur+1
|
||||||
S.tar=S.cur
|
if S.cur>S.tar then
|
||||||
if S.cur>62.6 then
|
S.phase=S.phase+1
|
||||||
SCN.swapTo("intro","none")
|
S.cur=1
|
||||||
|
S.tar=S.list[S.phase]
|
||||||
|
if not S.tar then
|
||||||
|
S.phase=0
|
||||||
|
S.tar=1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return
|
until not S.skip or SCN.swapping
|
||||||
end
|
|
||||||
S.cur=S.cur+1
|
|
||||||
if S.cur>S.tar then
|
|
||||||
S.phase=S.phase+1
|
|
||||||
S.cur=1
|
|
||||||
S.tar=S.list[S.phase]
|
|
||||||
if not S.tar then
|
|
||||||
S.phase=0
|
|
||||||
S.tar=1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if S.skip and not SCN.swapping then goto R end
|
|
||||||
end
|
end
|
||||||
function Tmr.intro()
|
function Tmr.intro()
|
||||||
sceneTemp=sceneTemp+1
|
sceneTemp=sceneTemp+1
|
||||||
@@ -235,7 +234,7 @@ function Tmr.play(dt)
|
|||||||
if frame%120==0 then
|
if frame%120==0 then
|
||||||
if modeEnv.royaleMode then freshMostDangerous()end
|
if modeEnv.royaleMode then freshMostDangerous()end
|
||||||
if marking and rnd()<.2 then
|
if marking and rnd()<.2 then
|
||||||
TEXT.show("游戏作者:MrZ_26\n出现此水印则为非法录屏上传",rnd(162,scr.w-162),rnd(126,scr.h-200),40,"mark",.626)
|
TEXT.show(text.marking,rnd(162,scr.w-162),rnd(126,scr.h-200),40,"mark",.626)
|
||||||
end--mark 2s each 10s
|
end--mark 2s each 10s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
27
toolfunc.lua
27
toolfunc.lua
@@ -98,11 +98,11 @@ function pasteBoard()
|
|||||||
_,str=pcall(data.decompress,"string","deflate",str)
|
_,str=pcall(data.decompress,"string","deflate",str)
|
||||||
if not _ then goto ERROR end
|
if not _ then goto ERROR end
|
||||||
p=1
|
p=1
|
||||||
::LOOP::
|
while true do
|
||||||
_=byte(str,p)--1byte
|
_=byte(str,p)--1byte
|
||||||
if not _ then
|
if not _ then
|
||||||
if fX~=1 then goto ERROR
|
if fX~=1 then goto ERROR
|
||||||
else goto FINISH
|
else break
|
||||||
end
|
end
|
||||||
end--str end
|
end--str end
|
||||||
__=_%32-1--block id
|
__=_%32-1--block id
|
||||||
@@ -112,22 +112,19 @@ function pasteBoard()
|
|||||||
if fX<10 then
|
if fX<10 then
|
||||||
fX=fX+1
|
fX=fX+1
|
||||||
else
|
else
|
||||||
if fY==20 then goto FINISH end
|
if fY==20 then break end
|
||||||
fX=1;fY=fY+1
|
fX=1;fY=fY+1
|
||||||
end
|
end
|
||||||
p=p+1
|
p=p+1
|
||||||
goto LOOP
|
end
|
||||||
|
|
||||||
::FINISH::
|
for y=fY+1,20 do
|
||||||
for y=fY+1,20 do
|
for x=1,10 do
|
||||||
for x=1,10 do
|
preField[y][x]=0
|
||||||
preField[y][x]=0
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
goto END
|
end
|
||||||
::ERROR::
|
do return end
|
||||||
TEXT.show(text.dataCorrupted,350,360,35,"flicker",.5)
|
::ERROR::TEXT.show(text.dataCorrupted,350,360,35,"flicker",.5)
|
||||||
::END::
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function mergeStat(stat,Δ)
|
function mergeStat(stat,Δ)
|
||||||
@@ -252,7 +249,7 @@ function resetPartGameData()
|
|||||||
pauseCount=0
|
pauseCount=0
|
||||||
destroyPlayers()
|
destroyPlayers()
|
||||||
curMode.load()
|
curMode.load()
|
||||||
texts={}
|
TEXT.clear()
|
||||||
for i=1,#players do
|
for i=1,#players do
|
||||||
if players.dust then
|
if players.dust then
|
||||||
players.dust:reset()
|
players.dust:reset()
|
||||||
@@ -298,7 +295,7 @@ function resetGameData()
|
|||||||
BG.set(modeEnv.bg)
|
BG.set(modeEnv.bg)
|
||||||
BGM.play(modeEnv.bgm)
|
BGM.play(modeEnv.bgm)
|
||||||
|
|
||||||
texts={}
|
TEXT.clear()
|
||||||
FX_badge={}
|
FX_badge={}
|
||||||
FX_attack={}
|
FX_attack={}
|
||||||
if modeEnv.royaleMode then
|
if modeEnv.royaleMode then
|
||||||
|
|||||||
@@ -43,14 +43,14 @@ Future outlook:
|
|||||||
New mode:
|
New mode:
|
||||||
game Abbr. test
|
game Abbr. test
|
||||||
backfire
|
backfire
|
||||||
finesse exam(3next,1pt/mino,drop to score)
|
finesse exam(3next, 1pt/mino, drop to score)
|
||||||
round-based dig
|
round-based dig
|
||||||
Infinite battle
|
bigbang
|
||||||
Bigbang
|
rhythm
|
||||||
Rhythm
|
combo
|
||||||
Combo
|
aquare
|
||||||
Square
|
field shifting(left/right)
|
||||||
Shifting field(left/right)
|
task-based survival
|
||||||
Other:
|
Other:
|
||||||
mod system with:
|
mod system with:
|
||||||
block hidden
|
block hidden
|
||||||
@@ -59,18 +59,33 @@ Future outlook:
|
|||||||
low-hidden
|
low-hidden
|
||||||
next hidden
|
next hidden
|
||||||
field flip(LR/UD)
|
field flip(LR/UD)
|
||||||
no fail(infinite revive)
|
no fail(∞ lives)
|
||||||
防沉迷系统
|
防沉迷系统
|
||||||
|
lang setting page
|
||||||
warning FX(Graphic)
|
warning FX(Graphic)
|
||||||
game recording
|
game recording
|
||||||
powerinfo switch
|
powerinfo switch
|
||||||
new virtualWidgets like joysticks
|
new virtualWidgets like joysticks
|
||||||
custom sequence
|
custom sequence
|
||||||
splashing block
|
splashing block
|
||||||
more FXs & 3d features & animations
|
cool backgrounds
|
||||||
|
more graphic FXs & 3D features & animations
|
||||||
Encrypt source code(compile to byte code)
|
Encrypt source code(compile to byte code)
|
||||||
new AI: task-Z
|
new AI: task-Z
|
||||||
CC smarter(think of garbage buffer)
|
smarter CC(think of garbage buffer)
|
||||||
|
|
||||||
|
0.8.18:Details Update II
|
||||||
|
new:
|
||||||
|
adjustable virtualkey SFX & VIB
|
||||||
|
changed:
|
||||||
|
add discord link in ENG mode
|
||||||
|
change par time/piece of sprint/battle/round mode
|
||||||
|
info on pause page more clearly
|
||||||
|
faster spaceBG rendering
|
||||||
|
updateLog editted
|
||||||
|
code:
|
||||||
|
delete all removable "goto"s!
|
||||||
|
callback system moduled, main.lua easy to read
|
||||||
|
|
||||||
0.8.17:Details Update
|
0.8.17:Details Update
|
||||||
new:
|
new:
|
||||||
@@ -84,11 +99,14 @@ Future outlook:
|
|||||||
no drop/lock FX in two hardest hidden modes, make them harder
|
no drop/lock FX in two hardest hidden modes, make them harder
|
||||||
TSD-easy will auto finish when reach 20TSDs
|
TSD-easy will auto finish when reach 20TSDs
|
||||||
solo/round AI setting changed
|
solo/round AI setting changed
|
||||||
debug mode text&SFX when enter recording mode
|
show text when entering debug mode
|
||||||
launching sound is divided to SFX&VOC two parts
|
SFX when enter recording mode
|
||||||
|
remove full speed loading
|
||||||
|
code:
|
||||||
|
launching sound divided to SFX&VOC two parts
|
||||||
delete many "goto"s
|
delete many "goto"s
|
||||||
vocal system moduled
|
vocal system moduled
|
||||||
language system moduled
|
language system moduled, easier to add new languages
|
||||||
fixed:
|
fixed:
|
||||||
forgot to load language
|
forgot to load language
|
||||||
error animation in control setting
|
error animation in control setting
|
||||||
@@ -117,9 +135,9 @@ Future outlook:
|
|||||||
new randomizer for drought2
|
new randomizer for drought2
|
||||||
half-clear judging method changed
|
half-clear judging method changed
|
||||||
new background system(well, it doesn't look much different but space BG)
|
new background system(well, it doesn't look much different but space BG)
|
||||||
better sequence randomizer
|
|
||||||
now can loading at full speed with Dblclick/space/enter
|
now can loading at full speed with Dblclick/space/enter
|
||||||
add alipay paycode to help page
|
add alipay paycode to help page
|
||||||
|
better sequence randomizer
|
||||||
code:
|
code:
|
||||||
first shader applied for white frame of falling block
|
first shader applied for white frame of falling block
|
||||||
many many module packed, easy to manage
|
many many module packed, easy to manage
|
||||||
@@ -136,7 +154,7 @@ Future outlook:
|
|||||||
give every update a name!
|
give every update a name!
|
||||||
changed:
|
changed:
|
||||||
animation time of lock effect little changed
|
animation time of lock effect little changed
|
||||||
bone block of skin: ball changed
|
bone block of ball-skin changed
|
||||||
AI change target more slowly
|
AI change target more slowly
|
||||||
Author.dignity-=1
|
Author.dignity-=1
|
||||||
fixed:
|
fixed:
|
||||||
@@ -218,10 +236,11 @@ Future outlook:
|
|||||||
some O-spin error
|
some O-spin error
|
||||||
error line counting when pc(full b2b)
|
error line counting when pc(full b2b)
|
||||||
|
|
||||||
0.8.10:
|
0.8.10:Cool Update
|
||||||
new BGM:Distortion(master-final)
|
new:
|
||||||
all background darker
|
new BGM:Distortion(master-final)
|
||||||
better error page
|
all background darker
|
||||||
|
cooler error page
|
||||||
fixed:
|
fixed:
|
||||||
error when finish master/ultra mode
|
error when finish master/ultra mode
|
||||||
shakeFX no effect when below 3
|
shakeFX no effect when below 3
|
||||||
@@ -456,15 +475,19 @@ Future outlook:
|
|||||||
bugs fixed(AI control error)
|
bugs fixed(AI control error)
|
||||||
|
|
||||||
0.7.13:
|
0.7.13:
|
||||||
Chinese game name: 方块研究所
|
new:
|
||||||
SUPER COOL instant moving effect
|
Chinese game name: 方块研究所
|
||||||
new b2b bar style & animation
|
SUPER COOL instant moving effect
|
||||||
new transition animation
|
new b2b bar style & animation
|
||||||
change difficulty of master mode
|
new transition animation
|
||||||
adjust delay algorithm(probably cause controlfeel changing, please reset your DAS setting)
|
change:
|
||||||
code reconstructed
|
change difficulty of master mode
|
||||||
bugs fixed(error when seq=his, size of custom oppo)
|
adjust delay algorithm(probably cause controlfeel changing, please reset your DAS setting)
|
||||||
debug key change to F8
|
code reconstructed
|
||||||
|
debug key change to F8
|
||||||
|
fixed:
|
||||||
|
error when seq=his
|
||||||
|
error game area size of custom opponent
|
||||||
|
|
||||||
0.7.12:Total Update
|
0.7.12:Total Update
|
||||||
AI learned to switch attack mode
|
AI learned to switch attack mode
|
||||||
|
|||||||
@@ -93,9 +93,9 @@ function SETsto(k) return function(i)setting[k]=i end end
|
|||||||
function SETrev(k) return function()setting[k]=not setting[k] end end
|
function SETrev(k) return function()setting[k]=not setting[k] end end
|
||||||
function pressKey(k)return function()love.keypressed(k) end end
|
function pressKey(k)return function()love.keypressed(k) end end
|
||||||
function setPen(i) return function()sceneTemp.pen=i end end
|
function setPen(i) return function()sceneTemp.pen=i end end
|
||||||
function prevSkin(n)return function()skin.prev(n) end end
|
function prevSkin(n)return function()SKIN.prev(n) end end
|
||||||
function nextSkin(n)return function()skin.next(n) end end
|
function nextSkin(n)return function()SKIN.next(n) end end
|
||||||
function nextDir(n) return function()skin.rotate(n) end end
|
function nextDir(n) return function()SKIN.rotate(n) end end
|
||||||
function VKAdisp(n) return function()return VK_org[n].ava end end
|
function VKAdisp(n) return function()return VK_org[n].ava end end
|
||||||
function VKAcode(n) return function()VK_org[n].ava=not VK_org[n].ava end end
|
function VKAcode(n) return function()VK_org[n].ava=not VK_org[n].ava end end
|
||||||
|
|
||||||
@@ -235,7 +235,7 @@ local Widget={
|
|||||||
graphic=newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_graphic")end, nil,"sfx"),
|
graphic=newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_graphic")end, nil,"sfx"),
|
||||||
sfx= newSlider(180,250,400,10,35,function()SFX.play("blip_1")end, SETval("sfx"), SETsto("sfx"), nil,"bgm"),
|
sfx= newSlider(180,250,400,10,35,function()SFX.play("blip_1")end, SETval("sfx"), SETsto("sfx"), nil,"bgm"),
|
||||||
bgm= newSlider(750,250,400,10,35,function()BGM.freshVolume()end, SETval("bgm"), SETsto("bgm"), nil,"vib"),
|
bgm= newSlider(750,250,400,10,35,function()BGM.freshVolume()end, SETval("bgm"), SETsto("bgm"), nil,"vib"),
|
||||||
vib= newSlider(180,440,400,5 ,28,function()VIB(1)end, SETval("vib"), SETsto("vib"), nil,"voc"),
|
vib= newSlider(180,440,400,5 ,28,function()VIB(2)end, SETval("vib"), SETsto("vib"), nil,"voc"),
|
||||||
voc= newSlider(750,440,400,10,32,function()VOC.play("nya")end, SETval("voc"), SETsto("voc"), nil,"stereo"),
|
voc= newSlider(750,440,400,10,32,function()VOC.play("nya")end, SETval("voc"), SETsto("voc"), nil,"stereo"),
|
||||||
stereo= newSlider(180,630,400,10,35,function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, SETval("stereo"), SETsto("stereo"),function()return setting.sfx==0 end,"back"),
|
stereo= newSlider(180,630,400,10,35,function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, SETval("stereo"), SETsto("stereo"),function()return setting.sfx==0 end,"back"),
|
||||||
back= newButton(1140,650,200,80,C.white,40,SCN.back,nil,"game"),
|
back= newButton(1140,650,200,80,C.white,40,SCN.back,nil,"game"),
|
||||||
@@ -260,8 +260,8 @@ local Widget={
|
|||||||
back=newButton(1140,650,200,80,C.white,45,SCN.back),
|
back=newButton(1140,650,200,80,C.white,45,SCN.back),
|
||||||
},
|
},
|
||||||
setting_skin={
|
setting_skin={
|
||||||
prev= newButton(700,100,140,100,C.white,50,function()skin.prevSet()end),
|
prev= newButton(700,100,140,100,C.white,50,function()SKIN.prevSet()end),
|
||||||
next= newButton(860,100,140,100,C.white,50,function()skin.nextSet()end),
|
next= newButton(860,100,140,100,C.white,50,function()SKIN.nextSet()end),
|
||||||
prev1= newButton(130,230,90,65,C.white,30,prevSkin(1)),
|
prev1= newButton(130,230,90,65,C.white,30,prevSkin(1)),
|
||||||
prev2= newButton(270,230,90,65,C.white,30,prevSkin(2)),
|
prev2= newButton(270,230,90,65,C.white,30,prevSkin(2)),
|
||||||
prev3= newButton(410,230,90,65,C.white,30,prevSkin(3)),
|
prev3= newButton(410,230,90,65,C.white,30,prevSkin(3)),
|
||||||
@@ -350,14 +350,15 @@ local Widget={
|
|||||||
pro= newButton(1120,100, 240,80,C.white,35,function()for i=1,20 do VK_org[i].ava=true end end),
|
pro= newButton(1120,100, 240,80,C.white,35,function()for i=1,20 do VK_org[i].ava=true end end),
|
||||||
hide= newSwitch(1170,200, 40,SETval("VKSwitch"),SETrev("VKSwitch")),
|
hide= newSwitch(1170,200, 40,SETval("VKSwitch"),SETrev("VKSwitch")),
|
||||||
track= newSwitch(1170,300, 35,SETval("VKTrack"),SETrev("VKTrack")),
|
track= newSwitch(1170,300, 35,SETval("VKTrack"),SETrev("VKTrack")),
|
||||||
sound= newSwitch(850,400, 35,SETval("VKSound"),SETrev("VKSound")),
|
sfx= newSlider(800,380,180,4,40,function()SFX.play("virtualKey",setting.VKSFX*.25)end,SETval("VKSFX"),SETsto("VKSFX")),
|
||||||
|
vib= newSlider(800,460,180,2,40,function()VIB(setting.VKVIB)end,SETval("VKVIB"),SETsto("VKVIB")),
|
||||||
icon= newSwitch(850,300, 40,SETval("VKIcon"),SETrev("VKIcon")),
|
icon= newSwitch(850,300, 40,SETval("VKIcon"),SETrev("VKIcon")),
|
||||||
tkset= newButton(1120,400,240,80,C.white,32,function()
|
tkset= newButton(1120,420,240,80,C.white,32,function()
|
||||||
SCN.push()
|
SCN.push()
|
||||||
SCN.swapTo("setting_trackSetting")
|
SCN.swapTo("setting_trackSetting")
|
||||||
end,function()return not setting.VKTrack end),
|
end,function()return not setting.VKTrack end),
|
||||||
alpha= newSlider(840,490,400,10,40,nil,SETval("VKAlpha"),SETsto("VKAlpha")),
|
alpha= newSlider(840,540,400,10,40,nil,SETval("VKAlpha"),SETsto("VKAlpha")),
|
||||||
back= newButton(1100,600,240,80,C.white,45,SCN.back),
|
back= newButton(1120,620,200,80,C.white,45,SCN.back),
|
||||||
},
|
},
|
||||||
setting_trackSetting={
|
setting_trackSetting={
|
||||||
VKDodge=newSwitch(400,200, 35,SETval("VKDodge"),SETrev("VKDodge")),
|
VKDodge=newSwitch(400,200, 35,SETval("VKDodge"),SETrev("VKDodge")),
|
||||||
|
|||||||
Reference in New Issue
Block a user