Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee99943ed9 | ||
|
|
60cbc83313 | ||
|
|
74bc1a2544 | ||
|
|
7b35d69be1 |
BIN
SFX/spawn_1.ogg
Normal file
BIN
SFX/spawn_1.ogg
Normal file
Binary file not shown.
BIN
SFX/spawn_2.ogg
Normal file
BIN
SFX/spawn_2.ogg
Normal file
Binary file not shown.
BIN
SFX/spawn_3.ogg
Normal file
BIN
SFX/spawn_3.ogg
Normal file
Binary file not shown.
BIN
SFX/spawn_4.ogg
Normal file
BIN
SFX/spawn_4.ogg
Normal file
Binary file not shown.
BIN
SFX/spawn_5.ogg
Normal file
BIN
SFX/spawn_5.ogg
Normal file
Binary file not shown.
BIN
SFX/spawn_6.ogg
Normal file
BIN
SFX/spawn_6.ogg
Normal file
Binary file not shown.
BIN
SFX/spawn_7.ogg
Normal file
BIN
SFX/spawn_7.ogg
Normal file
Binary file not shown.
@@ -24,7 +24,7 @@ local gc,sys=love.graphics,love.system
|
|||||||
local Timer=love.timer.getTime
|
local Timer=love.timer.getTime
|
||||||
local int,rnd,max,min=math.floor,math.random,math.max,math.min
|
local int,rnd,max,min=math.floor,math.random,math.max,math.min
|
||||||
local abs=math.abs
|
local abs=math.abs
|
||||||
local rem=table.remove
|
local ins,rem=table.insert,table.remove
|
||||||
|
|
||||||
local scr=scr
|
local scr=scr
|
||||||
local xOy=love.math.newTransform()
|
local xOy=love.math.newTransform()
|
||||||
@@ -314,6 +314,8 @@ function keyDown.custom(key)
|
|||||||
elseif sel==13 then
|
elseif sel==13 then
|
||||||
BGM.play(customRange.bgm[customSel[sel]])
|
BGM.play(customRange.bgm[customSel[sel]])
|
||||||
end
|
end
|
||||||
|
elseif key=="q"then
|
||||||
|
SCN.goto("sequence")
|
||||||
elseif #key==1 then
|
elseif #key==1 then
|
||||||
local T=tonumber(key)
|
local T=tonumber(key)
|
||||||
if T and T>=1 and T<=5 then
|
if T and T>=1 and T<=5 then
|
||||||
@@ -328,25 +330,50 @@ function keyDown.custom(key)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local minoKey={
|
||||||
|
["1"]=1,["2"]=2,["3"]=3,["4"]=4,["5"]=5,["6"]=6,["7"]=7,
|
||||||
|
z=1,s=2,j=3,l=4,t=5,o=6,i=7,
|
||||||
|
p=10,q=11,f=12,e=13,u=15,
|
||||||
|
v=16,w=17,x=18,r=21,y=22,n=23,h=24,
|
||||||
|
}
|
||||||
|
local minoKey2={
|
||||||
|
["1"]=8,["2"]=9,["3"]=19,["4"]=20,["5"]=14,["7"]=25,
|
||||||
|
z=8,s=9,t=14,j=19,l=20,i=25
|
||||||
|
}
|
||||||
function keyDown.sequence(key)
|
function keyDown.sequence(key)
|
||||||
local s=sceneTemp
|
local s=sceneTemp
|
||||||
if key=="left"then
|
if type(key)=="number"then
|
||||||
if s.cur>0 then s.cur=s.cur-1 end
|
local C=s.cur+1
|
||||||
elseif key=="right"then
|
ins(preBag,C,key)
|
||||||
if s.cur<#preBag then s.cur=s.cur+1 end
|
s.cur=C
|
||||||
elseif key=="backspace"then
|
elseif #key==1 then
|
||||||
local C=s.cur
|
local i=(kb.isDown("lctrl","lshift","lalt","rctrl","rshift","ralt")and minoKey2 or minoKey)[key]
|
||||||
if C>0 then
|
if i then
|
||||||
rem(preBag,C)
|
local C=s.cur+1
|
||||||
s.cur=C-1
|
ins(preBag,C,i)
|
||||||
|
s.cur=C
|
||||||
end
|
end
|
||||||
elseif key=="delete"then
|
else
|
||||||
if sceneTemp.sure>20 then
|
if key=="left"then
|
||||||
preBag={1,2,3,4,5,6,7}
|
if s.cur>0 then s.cur=s.cur-1 end
|
||||||
sceneTemp.cur=7
|
elseif key=="right"then
|
||||||
sceneTemp.sure=0
|
if s.cur<#preBag then s.cur=s.cur+1 end
|
||||||
else
|
elseif key=="backspace"then
|
||||||
sceneTemp.sure=50
|
local C=s.cur
|
||||||
|
if C>0 then
|
||||||
|
rem(preBag,C)
|
||||||
|
s.cur=C-1
|
||||||
|
end
|
||||||
|
elseif key=="escape"then
|
||||||
|
SCN.back()
|
||||||
|
elseif key=="delete"then
|
||||||
|
if sceneTemp.sure>20 then
|
||||||
|
preBag={}
|
||||||
|
sceneTemp.cur=0
|
||||||
|
sceneTemp.sure=0
|
||||||
|
else
|
||||||
|
sceneTemp.sure=50
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -428,21 +455,13 @@ function keyDown.draw(key)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function mouseDown.setting_sound(x,y,k)
|
function mouseDown.setting_sound(x,y,k)
|
||||||
if x>780 and x<980 and y>470 and sceneTemp.jump==0 then
|
local s=sceneTemp
|
||||||
sceneTemp.jump=10
|
if x>780 and x<980 and y>470 and s.jump==0 then
|
||||||
local t=Timer()-sceneTemp.last
|
s.jump=10
|
||||||
|
local t=Timer()-s.last
|
||||||
if t>1 then
|
if t>1 then
|
||||||
VOC.play((t<1.5 or t>15)and"doubt"or rnd()<.8 and"happy"or"egg")
|
VOC.play((t<1.5 or t>15)and"doubt"or rnd()<.8 and"happy"or"egg")
|
||||||
sceneTemp.last=Timer()
|
s.last=Timer()
|
||||||
if rnd()<.0626 then
|
|
||||||
for name,M in next,Modes do
|
|
||||||
if not modeRanks[name]then
|
|
||||||
modeRanks[name]=M.score and 0 or 6
|
|
||||||
end
|
|
||||||
end
|
|
||||||
FILE.saveUnlock()
|
|
||||||
TEXT.show("DEVModes:UNLOCKALL",640,360,50,"stretch",.6)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -701,14 +720,16 @@ 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")or RESET then
|
if RESET or kb.isDown("\109")and kb.isDown("\114")then
|
||||||
sceneTemp.ct=sceneTemp.ct+1
|
sceneTemp.ct=sceneTemp.ct+1
|
||||||
if sceneTemp.ct==5 then
|
if sceneTemp.ct==5 then
|
||||||
TEXT.show("What are you up to?",640,200,40,"appear",.5)
|
TEXT.show("What are you up to?",640,200,40,"appear",.5)
|
||||||
elseif sceneTemp.ct==10 then
|
elseif sceneTemp.ct==10 then
|
||||||
TEXT.show("Stop what you are doing.",640,200,40,"flicker",.5)
|
TEXT.show("Stop what you are doing.",640,200,40,"flicker",.5)
|
||||||
elseif sceneTemp.ct==20 then
|
elseif sceneTemp.ct==16 then
|
||||||
TEXT.show("RESET ALL DATA?",640,200,40,"appear",.3,.2)
|
TEXT.show("RESET ALL DATA?",640,200,40,"appear",.3,.2)
|
||||||
|
elseif sceneTemp.ct==20 then
|
||||||
|
TEXT.show("SURE?????",640,200,40,"beat",.3,.2)
|
||||||
elseif sceneTemp.ct==26 then
|
elseif sceneTemp.ct==26 then
|
||||||
local L=love.filesystem.getDirectoryItems("")
|
local L=love.filesystem.getDirectoryItems("")
|
||||||
for i=1,#L do
|
for i=1,#L do
|
||||||
@@ -735,6 +756,26 @@ function touchDown.staff(id,x,y)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function keyDown.stat(key)
|
||||||
|
if key=="u"and kb.isDown("lshift","rshift")then
|
||||||
|
touchDown.stat()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function touchDown.stat(id,x,y)
|
||||||
|
local s=sceneTemp
|
||||||
|
s.count=s.count+1
|
||||||
|
if rnd()<.0626 and s.count>26 then
|
||||||
|
for name,M in next,Modes do
|
||||||
|
if not modeRanks[name]then
|
||||||
|
modeRanks[name]=M.score and 0 or 6
|
||||||
|
end
|
||||||
|
end
|
||||||
|
FILE.saveUnlock()
|
||||||
|
TEXT.show("DEV:\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
|
||||||
|
SFX.play("clear_4")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function wheelMoved.history(x,y)
|
function wheelMoved.history(x,y)
|
||||||
wheelScroll(y)
|
wheelScroll(y)
|
||||||
end
|
end
|
||||||
@@ -980,7 +1021,11 @@ function love.resize(w,h)
|
|||||||
SHADER.warning:send("h",h*scr.dpi)
|
SHADER.warning:send("h",h*scr.dpi)
|
||||||
end
|
end
|
||||||
function love.focus(f)
|
function love.focus(f)
|
||||||
if SCN.cur=="play"and not f and setting.autoPause then pauseGame()end
|
if f then
|
||||||
|
TASK.new(TICK.autoResize,{0})
|
||||||
|
elseif SCN.cur=="play"and setting.autoPause then
|
||||||
|
pauseGame()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
local scs={1,2,1,2,1,2,1,2,1,2,1.5,1.5,.5,2.5}
|
local scs={1,2,1,2,1,2,1,2,1,2,1.5,1.5,.5,2.5}
|
||||||
local devColor={
|
local devColor={
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
local langList={
|
local langList={
|
||||||
{
|
{
|
||||||
anykey="按任意键继续",
|
anykey="按任意键继续",
|
||||||
newVersion="检测到更新!存档格式可能更新,设置已重置",
|
newVersion="检测到更新!存档格式已修改",
|
||||||
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何视频内声明无效",
|
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效",
|
||||||
lang="中文",
|
lang="中文",
|
||||||
atkModeName={"随机","徽章","击杀","反击"},
|
atkModeName={"随机","徽章","击杀","反击"},
|
||||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||||
@@ -210,7 +210,7 @@ local langList={
|
|||||||
set3="无尽(3)",
|
set3="无尽(3)",
|
||||||
set4="隐形(4)",
|
set4="隐形(4)",
|
||||||
set5="极限(5)",
|
set5="极限(5)",
|
||||||
seq="高级设置",
|
seq="高级设置(q)",
|
||||||
draw="初始场地编辑",
|
draw="初始场地编辑",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
@@ -256,6 +256,7 @@ local langList={
|
|||||||
quickR="快速重新开始",
|
quickR="快速重新开始",
|
||||||
swap="组合键切换攻击模式",
|
swap="组合键切换攻击模式",
|
||||||
fine="极简操作提示音",
|
fine="极简操作提示音",
|
||||||
|
spawn="方块生成音",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -442,8 +443,8 @@ local langList={
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
anykey="按任意键继续",
|
anykey="按任意键继续",
|
||||||
newVersion="检测到更新!存档格式可能更新,设置已重置",
|
newVersion="检测到更新!存档格式已修改",
|
||||||
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何视频内声明无效",
|
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效",
|
||||||
lang="全中文",
|
lang="全中文",
|
||||||
atkModeName={"随机","徽章","击杀","反击"},
|
atkModeName={"随机","徽章","击杀","反击"},
|
||||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||||
@@ -648,7 +649,7 @@ local langList={
|
|||||||
set3="无尽(3)",
|
set3="无尽(3)",
|
||||||
set4="隐形(4)",
|
set4="隐形(4)",
|
||||||
set5="极限(5)",
|
set5="极限(5)",
|
||||||
seq="高级设置",
|
seq="高级设置(q)",
|
||||||
draw="初始场地编辑",
|
draw="初始场地编辑",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
@@ -694,6 +695,7 @@ local langList={
|
|||||||
quickR="快速重新开始",
|
quickR="快速重新开始",
|
||||||
swap="组合键切换攻击模式",
|
swap="组合键切换攻击模式",
|
||||||
fine="极简操作提示音",
|
fine="极简操作提示音",
|
||||||
|
spawn="方块生成音",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -880,8 +882,8 @@ local langList={
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
anykey="Press any button",
|
anykey="Press any button",
|
||||||
newVersion="Updating detected! Save format may have been updated, settings reseted",
|
newVersion="Updating detected! Saving format updated",
|
||||||
marking="Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
|
marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
|
||||||
lang="English",
|
lang="English",
|
||||||
atkModeName={"Random","Badges","K.O.s","Attackers"},
|
atkModeName={"Random","Badges","K.O.s","Attackers"},
|
||||||
royale_remain=function(n)return n.." Players Remaining"end,
|
royale_remain=function(n)return n.." Players Remaining"end,
|
||||||
@@ -1075,7 +1077,7 @@ local langList={
|
|||||||
set3="Inf. (3)",
|
set3="Inf. (3)",
|
||||||
set4="Blind (4)",
|
set4="Blind (4)",
|
||||||
set5="Master (5)",
|
set5="Master (5)",
|
||||||
seq="Advanced",
|
seq="Advanced(q)",
|
||||||
draw="Field Edit",
|
draw="Field Edit",
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
@@ -1121,6 +1123,7 @@ local langList={
|
|||||||
quickR="Quick Retry",
|
quickR="Quick Retry",
|
||||||
swap="Key Combination (Change Atk. Mode)",
|
swap="Key Combination (Change Atk. Mode)",
|
||||||
fine="Finesse Error Sound",
|
fine="Finesse Error Sound",
|
||||||
|
spawn="Piece Spawning Sound",
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -1307,8 +1310,8 @@ local langList={
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
anykey="↓□↓",
|
anykey="↓□↓",
|
||||||
newVersion="&!!! ___/_?_ R",
|
newVersion="&!!! ___!",
|
||||||
marking="Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
|
marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
|
||||||
lang="?????",
|
lang="?????",
|
||||||
atkModeName={"?","( )","!","←→"},
|
atkModeName={"?","( )","!","←→"},
|
||||||
royale_remain=function(n)return n.."~"end,
|
royale_remain=function(n)return n.."~"end,
|
||||||
@@ -1502,7 +1505,7 @@ local langList={
|
|||||||
set3="Inf. (3)",
|
set3="Inf. (3)",
|
||||||
set4="Blind (4)",
|
set4="Blind (4)",
|
||||||
set5="Master (5)",
|
set5="Master (5)",
|
||||||
seq="Advanced",
|
seq="Advanced(q)",
|
||||||
draw="Field Edit",
|
draw="Field Edit",
|
||||||
back="X",
|
back="X",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -404,12 +404,9 @@ end
|
|||||||
function Pnt.play()
|
function Pnt.play()
|
||||||
if marking then
|
if marking then
|
||||||
setFont(26)
|
setFont(26)
|
||||||
local x=Timer()*46%1680-200
|
local t=Timer()
|
||||||
gc.setColor(1,1,1,abs(.26*(1-x/640)))
|
gc.setColor(1,1,1,.2+.1*(sin(3*t)+sin(2.6*t)))
|
||||||
mStr(text.marking,x,260+62*sin(Timer()))
|
mStr(text.marking,190,60+26*sin(t))
|
||||||
-- gc.setColor(1,1,1,.0626)
|
|
||||||
-- mStr(text.marking,260,62+26*sin(Timer()))
|
|
||||||
-- mStr(text.marking,1100,460+62*sin(Timer()*1.2))
|
|
||||||
end
|
end
|
||||||
for p=1,#players do
|
for p=1,#players do
|
||||||
players[p]:draw()
|
players[p]:draw()
|
||||||
|
|||||||
@@ -118,8 +118,8 @@ function sceneInit.pause(org)
|
|||||||
format("%d(%d) %.2fLPM",S.row,S.dig,S.row/S.time*60),
|
format("%d(%d) %.2fLPM",S.row,S.dig,S.row/S.time*60),
|
||||||
format("%d(%d)",S.atk,S.digatk),
|
format("%d(%d)",S.atk,S.digatk),
|
||||||
format("%d(%d-%d)",S.pend,S.recv,S.recv-S.pend),
|
format("%d(%d-%d)",S.pend,S.recv,S.recv-S.pend),
|
||||||
format("%d/%d/%d/%d",S.clear_S[1],S.clear_S[2],S.clear_S[3],S.clear_S[4]),
|
format("%d/%d/%d/%d",S.clears[1],S.clears[2],S.clears[3],S.clears[4]),
|
||||||
format("(%d)/%d/%d/%d",S.spin_S[1],S.spin_S[2],S.spin_S[3],S.spin_S[4]),
|
format("(%d)/%d/%d/%d",S.spins[1],S.spins[2],S.spins[3],S.spins[4]),
|
||||||
format("%d(+%d)/%d(%d)",S.b2b,S.b3b,S.pc,S.hpc),
|
format("%d(+%d)/%d(%d)",S.b2b,S.b3b,S.pc,S.hpc),
|
||||||
format("%d[%.2f%%]",S.extraPiece,100*max(1-S.extraRate/S.piece,0)),
|
format("%d[%.2f%%]",S.extraPiece,100*max(1-S.extraRate/S.piece,0)),
|
||||||
},
|
},
|
||||||
@@ -223,11 +223,22 @@ function sceneInit.staff()
|
|||||||
end
|
end
|
||||||
function sceneInit.stat()
|
function sceneInit.stat()
|
||||||
local S=stat
|
local S=stat
|
||||||
|
local X1,X2,Y1,Y2={0,0,0,0},{0,0,0,0},{},{}
|
||||||
|
for i=1,7 do
|
||||||
|
local S,C=S.spin[i],S.clear[i]
|
||||||
|
Y1[i]=S[1]+S[2]+S[3]+S[4]
|
||||||
|
Y2[i]=C[1]+C[2]+C[3]+C[4]
|
||||||
|
for j=1,4 do
|
||||||
|
X1[j]=X1[j]+S[j]
|
||||||
|
X2[j]=X2[j]+C[j]
|
||||||
|
end
|
||||||
|
end
|
||||||
sceneTemp={
|
sceneTemp={
|
||||||
|
count=0,
|
||||||
chart={
|
chart={
|
||||||
A1=S.spin,A2=S.clear,
|
A1=S.spin,A2=S.clear,
|
||||||
X1=S.spin_S,X2=S.clear_S,
|
X1=X1,X2=X2,
|
||||||
Y1=S.spin_B,Y2=S.clear_B,
|
Y1=Y1,Y2=Y2,
|
||||||
},
|
},
|
||||||
item={
|
item={
|
||||||
S.run,
|
S.run,
|
||||||
@@ -241,7 +252,7 @@ function sceneInit.stat()
|
|||||||
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)),
|
||||||
S.b2b.." "..S.b3b,
|
S.b2b.." "..S.b3b,
|
||||||
S.pc.." "..S.hpc,
|
S.pc.." "..S.hpc,
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
for i=1,11 do
|
for i=1,11 do
|
||||||
sceneTemp.item[i]=text.stat[i].."\t"..sceneTemp.item[i]
|
sceneTemp.item[i]=text.stat[i].."\t"..sceneTemp.item[i]
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ SFX.list={
|
|||||||
"virtualKey",
|
"virtualKey",
|
||||||
"button","swipe",
|
"button","swipe",
|
||||||
"ready","start","win","fail","collect",
|
"ready","start","win","fail","collect",
|
||||||
|
"spawn_1","spawn_2","spawn_3","spawn_4","spawn_5","spawn_6","spawn_7",
|
||||||
"move","rotate","rotatekick","hold",
|
"move","rotate","rotatekick","hold",
|
||||||
"prerotate","prehold",
|
"prerotate","prehold",
|
||||||
"lock","drop","fall",
|
"lock","drop","fall",
|
||||||
@@ -38,6 +39,7 @@ end
|
|||||||
function SFX.play(s,v,pos)
|
function SFX.play(s,v,pos)
|
||||||
if setting.sfx==0 then return end
|
if setting.sfx==0 then return end
|
||||||
local S=SFX.list[s]--source list
|
local S=SFX.list[s]--source list
|
||||||
|
if not S then return end
|
||||||
local n=1
|
local n=1
|
||||||
while S[n]:isPlaying()do
|
while S[n]:isPlaying()do
|
||||||
n=n+1
|
n=n+1
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ function Tmr.load()
|
|||||||
elseif S.phase==5 then
|
elseif S.phase==5 then
|
||||||
local m=Modes[S.cur]--mode template
|
local m=Modes[S.cur]--mode template
|
||||||
local M=require("modes/"..m.name)--mode file
|
local M=require("modes/"..m.name)--mode file
|
||||||
Modes[m.name]=M
|
Modes[m.name],Modes[S.cur]=M
|
||||||
for k,v in next,m do
|
for k,v in next,m do
|
||||||
M[k]=v
|
M[k]=v
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ local function nextDir(n) return function()SKIN.rotate(n) end end
|
|||||||
local function VKAdisp(n) return function()return VK_org[n].ava end end
|
local function VKAdisp(n) return function()return VK_org[n].ava end end
|
||||||
local function VKAcode(n) return function()VK_org[n].ava=not VK_org[n].ava end end
|
local function VKAcode(n) return function()VK_org[n].ava=not VK_org[n].ava end end
|
||||||
local function setLang(n) return function()LANG.set(n)setting.lang=n end end
|
local function setLang(n) return function()LANG.set(n)setting.lang=n end end
|
||||||
local function SEQpush(n) return function()local C=sceneTemp.cur+1 ins(preBag,C,n)sceneTemp.cur=C end end
|
|
||||||
local newButton,newSwitch,newSlider=WIDGET.new.button,WIDGET.new.switch,WIDGET.new.slider
|
local newButton,newSwitch,newSlider=WIDGET.new.button,WIDGET.new.switch,WIDGET.new.slider
|
||||||
|
|
||||||
|
|
||||||
@@ -127,37 +126,37 @@ local Widgets={
|
|||||||
set4= newButton(940, 560,260,70, C.lightYellow, 32,pressKey("4")),
|
set4= newButton(940, 560,260,70, C.lightYellow, 32,pressKey("4")),
|
||||||
set5= newButton(940, 640,260,70, C.lightYellow, 32,pressKey("5")),
|
set5= newButton(940, 640,260,70, C.lightYellow, 32,pressKey("5")),
|
||||||
|
|
||||||
seq= newButton(665, 415,162,40, C.lightGreen, 32,function()SCN.goto("sequence")end),
|
seq= newButton(665, 415,200,40, C.lightGreen, 30,function()SCN.goto("sequence")end),
|
||||||
draw= newButton(150, 80, 220,80, C.white, 35,function()SCN.swapTo("draw")end),
|
draw= newButton(150, 80, 220,80, C.white, 35,function()SCN.swapTo("draw")end),
|
||||||
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
||||||
},
|
},
|
||||||
sequence={
|
sequence={
|
||||||
Z= newButton(150, 440,90, 90,C.white, 50,SEQpush(1)),
|
Z= newButton(150, 440,90, 90,C.white, 50,pressKey(1)),
|
||||||
S= newButton(250, 440,90, 90,C.white, 50,SEQpush(2)),
|
S= newButton(250, 440,90, 90,C.white, 50,pressKey(2)),
|
||||||
J= newButton(350, 440,90, 90,C.white, 50,SEQpush(3)),
|
J= newButton(350, 440,90, 90,C.white, 50,pressKey(3)),
|
||||||
L= newButton(450, 440,90, 90,C.white, 50,SEQpush(4)),
|
L= newButton(450, 440,90, 90,C.white, 50,pressKey(4)),
|
||||||
T= newButton(550, 440,90, 90,C.white, 50,SEQpush(5)),
|
T= newButton(550, 440,90, 90,C.white, 50,pressKey(5)),
|
||||||
O= newButton(650, 440,90, 90,C.white, 50,SEQpush(6)),
|
O= newButton(650, 440,90, 90,C.white, 50,pressKey(6)),
|
||||||
I= newButton(750, 440,90, 90,C.white, 50,SEQpush(7)),
|
I= newButton(750, 440,90, 90,C.white, 50,pressKey(7)),
|
||||||
|
|
||||||
Z5= newButton(150, 540,90, 90,C.white, 50,SEQpush(8)),
|
Z5= newButton(150, 540,90, 90,C.white, 50,pressKey(8)),
|
||||||
S5= newButton(250, 540,90, 90,C.white, 50,SEQpush(9)),
|
S5= newButton(250, 540,90, 90,C.white, 50,pressKey(9)),
|
||||||
P= newButton(350, 540,90, 90,C.white, 50,SEQpush(10)),
|
P= newButton(350, 540,90, 90,C.white, 50,pressKey(10)),
|
||||||
Q= newButton(450, 540,90, 90,C.white, 50,SEQpush(11)),
|
Q= newButton(450, 540,90, 90,C.white, 50,pressKey(11)),
|
||||||
F= newButton(550, 540,90, 90,C.white, 50,SEQpush(12)),
|
F= newButton(550, 540,90, 90,C.white, 50,pressKey(12)),
|
||||||
E= newButton(650, 540,90, 90,C.white, 50,SEQpush(13)),
|
E= newButton(650, 540,90, 90,C.white, 50,pressKey(13)),
|
||||||
T5= newButton(750, 540,90, 90,C.white, 50,SEQpush(14)),
|
T5= newButton(750, 540,90, 90,C.white, 50,pressKey(14)),
|
||||||
U= newButton(850, 540,90, 90,C.white, 50,SEQpush(15)),
|
U= newButton(850, 540,90, 90,C.white, 50,pressKey(15)),
|
||||||
V= newButton(950, 540,90, 90,C.white, 50,SEQpush(16)),
|
V= newButton(950, 540,90, 90,C.white, 50,pressKey(16)),
|
||||||
W= newButton(150, 640,90, 90,C.white, 50,SEQpush(17)),
|
W= newButton(150, 640,90, 90,C.white, 50,pressKey(17)),
|
||||||
X= newButton(250, 640,90, 90,C.white, 50,SEQpush(18)),
|
X= newButton(250, 640,90, 90,C.white, 50,pressKey(18)),
|
||||||
J5= newButton(350, 640,90, 90,C.white, 50,SEQpush(19)),
|
J5= newButton(350, 640,90, 90,C.white, 50,pressKey(19)),
|
||||||
L5= newButton(450, 640,90, 90,C.white, 50,SEQpush(20)),
|
L5= newButton(450, 640,90, 90,C.white, 50,pressKey(20)),
|
||||||
R= newButton(550, 640,90, 90,C.white, 50,SEQpush(21)),
|
R= newButton(550, 640,90, 90,C.white, 50,pressKey(21)),
|
||||||
Y= newButton(650, 640,90, 90,C.white, 50,SEQpush(22)),
|
Y= newButton(650, 640,90, 90,C.white, 50,pressKey(22)),
|
||||||
N= newButton(750, 640,90, 90,C.white, 50,SEQpush(23)),
|
N= newButton(750, 640,90, 90,C.white, 50,pressKey(23)),
|
||||||
H= newButton(850, 640,90, 90,C.white, 50,SEQpush(24)),
|
H= newButton(850, 640,90, 90,C.white, 50,pressKey(24)),
|
||||||
I5= newButton(950, 640,90, 90,C.white, 50,SEQpush(25)),
|
I5= newButton(950, 640,90, 90,C.white, 50,pressKey(25)),
|
||||||
|
|
||||||
left= newButton(850, 440,90, 90,C.lightGreen, 55,pressKey("left")),
|
left= newButton(850, 440,90, 90,C.lightGreen, 55,pressKey("left")),
|
||||||
right= newButton(950, 440,90, 90,C.lightGreen, 55,pressKey("right")),
|
right= newButton(950, 440,90, 90,C.lightGreen, 55,pressKey("right")),
|
||||||
@@ -189,8 +188,8 @@ local Widgets={
|
|||||||
space= newButton(730, 360,120,120,C.grey, 65,setPen(-1)),
|
space= newButton(730, 360,120,120,C.grey, 65,setPen(-1)),
|
||||||
clear= newButton(1200, 500,120,120,C.white, 40,pressKey("delete")),
|
clear= newButton(1200, 500,120,120,C.white, 40,pressKey("delete")),
|
||||||
demo= newSwitch(755, 640,30,function()return sceneTemp.demo end,function()sceneTemp.demo=not sceneTemp.demo end),
|
demo= newSwitch(755, 640,30,function()return sceneTemp.demo end,function()sceneTemp.demo=not sceneTemp.demo end),
|
||||||
copy= newButton(920, 640,120,120,C.lightRed, 35,copyBoard),
|
copy= newButton(920, 640,120,120,C.lightRed, 35,function()copyBoard()end),
|
||||||
paste= newButton(1060, 640,120,120,C.lightBlue, 35,pasteBoard),
|
paste= newButton(1060, 640,120,120,C.lightBlue, 35,function()pasteBoard()end),
|
||||||
custom= newButton(110, 80, 140,80, C.white, 35,function()SCN.goto("custom")end),
|
custom= newButton(110, 80, 140,80, C.white, 35,function()SCN.goto("custom")end),
|
||||||
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
||||||
},
|
},
|
||||||
@@ -211,20 +210,21 @@ local Widgets={
|
|||||||
quit= newButton(640,600,240,100,C.white,35,BACK),
|
quit= newButton(640,600,240,100,C.white,35,BACK),
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
graphic=newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sound"),
|
graphic=newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sound"),
|
||||||
sound= newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_sound")end, nil,"ctrl"),
|
sound= newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_sound")end, nil,"ctrl"),
|
||||||
ctrl= newButton(290,220,320,80,C.lightYellow,35,function()SCN.goto("setting_control")end, nil,"key"),
|
ctrl= newButton(290,220,320,80,C.lightYellow,35,function()SCN.goto("setting_control")end, nil,"key"),
|
||||||
key= newButton(640,220,320,80,C.lightGreen,35,function()SCN.goto("setting_key")end, nil,"touch"),
|
key= newButton(640,220,320,80,C.lightGreen,35,function()SCN.goto("setting_key")end, nil,"touch"),
|
||||||
touch= newButton(990,220,320,80,C.lightBlue,35,function()SCN.goto("setting_touch")end, nil,"reTime"),
|
touch= newButton(990,220,320,80,C.lightBlue,35,function()SCN.goto("setting_touch")end, nil,"reTime"),
|
||||||
reTime= newSlider(350,340,300,10,30,nil, SETval("reTime"), SETsto("reTime"), nil,"maxNext"),
|
reTime= newSlider(350,340,300,10,30,nil, SETval("reTime"), SETsto("reTime"), nil,"maxNext"),
|
||||||
maxNext=newSlider(350,440,300,6,30,nil, SETval("maxNext"), SETsto("maxNext"), nil,"autoPause"),
|
maxNext=newSlider(350,440,300,6,30,nil, SETval("maxNext"), SETsto("maxNext"), nil,"autoPause"),
|
||||||
autoPause=newSwitch(350,540,20, SETval("autoPause"), SETrev("autoPause"), nil,"layout"),
|
autoPause=newSwitch(350,540,20, SETval("autoPause"), SETrev("autoPause"), nil,"layout"),
|
||||||
layout= newButton(590,540,140,70,C.white,35,function()
|
layout= newButton(590,540,140,70,C.white,35,function()
|
||||||
SCN.goto("setting_skin")
|
SCN.goto("setting_skin")
|
||||||
end,nil,"quickR"),
|
end,nil,"quickR"),
|
||||||
quickR= newSwitch(1050,340,35, SETval("quickR"), SETrev("quickR"), nil,"swap"),
|
quickR= newSwitch(1050,320,35, SETval("quickR"), SETrev("quickR"), nil,"swap"),
|
||||||
swap= newSwitch(1050,440,19, SETval("swap"), SETrev("swap"), nil,"fine"),
|
swap= newSwitch(1050,400,20, SETval("swap"), SETrev("swap"), nil,"fine"),
|
||||||
fine= newSwitch(1050,540,20, SETval("fine"), SETrev("fine"), nil,"back"),
|
fine= newSwitch(1050,480,20, SETval("fine"), SETrev("fine"), nil,"spawn"),
|
||||||
|
spawn= newSwitch(1050,560,20, SETval("spawn"), SETrev("spawn"), nil,"back"),
|
||||||
back= newButton(1140,650,200,80,C.white,40,BACK, nil,"graphic"),
|
back= newButton(1140,650,200,80,C.white,40,BACK, nil,"graphic"),
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -261,10 +261,10 @@ local Widgets={
|
|||||||
setting_sound={
|
setting_sound={
|
||||||
game= newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_game")end, nil,"graphic"),
|
game= newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_game")end, nil,"graphic"),
|
||||||
graphic=newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sfx"),
|
graphic=newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")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(2)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,BACK,nil,"game"),
|
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"game"),
|
||||||
},
|
},
|
||||||
|
|||||||
2
conf.lua
2
conf.lua
@@ -1,4 +1,4 @@
|
|||||||
gameVersion="Alpha V0.9.0"
|
gameVersion="Alpha V0.9.1"
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
t.identity="Techmino"--saving folder
|
t.identity="Techmino"--saving folder
|
||||||
t.version="11.1"
|
t.version="11.1"
|
||||||
|
|||||||
BIN
image/skin/WTF.png
Normal file
BIN
image/skin/WTF.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 91 B |
70
main.lua
70
main.lua
@@ -29,7 +29,7 @@ scr={x=0,y=0,w=0,h=0,rad=0,k=1}--wid,hei,radius,scale K
|
|||||||
|
|
||||||
customSel={1,22,1,1,7,3,1,1,8,4,1,1,1}
|
customSel={1,22,1,1,7,3,1,1,8,4,1,1,1}
|
||||||
preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
|
preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
|
||||||
preBag={1,2,3,4,5,6,7}
|
preBag={}
|
||||||
|
|
||||||
players={alive={},human=0}
|
players={alive={},human=0}
|
||||||
--blockSkin,blockSkinMini={},{}--redefined in SKIN.change
|
--blockSkin,blockSkinMini={},{}--redefined in SKIN.change
|
||||||
@@ -81,51 +81,8 @@ if fs.getInfo("virtualkey.dat")then FILE.loadVK()end
|
|||||||
|
|
||||||
--update data file
|
--update data file
|
||||||
S=stat
|
S=stat
|
||||||
if not S.version or S.version=="Alpha V0.8.15"then
|
S.clear_B,S.clear_S=nil
|
||||||
S.clear_S={S.clear_1,S.clear_2,S.clear_3,S.clear_4}
|
if not S.clear[1][5]then
|
||||||
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
|
for i=1,7 do
|
||||||
S.clear[i][5]=0
|
S.clear[i][5]=0
|
||||||
S.spin[i][5]=0
|
S.spin[i][5]=0
|
||||||
@@ -133,21 +90,17 @@ if not S.clear_B[8]then
|
|||||||
for i=8,25 do
|
for i=8,25 do
|
||||||
S.clear[i]={0,0,0,0,0}
|
S.clear[i]={0,0,0,0,0}
|
||||||
S.spin[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
|
end
|
||||||
S.spin_S[5]=0
|
|
||||||
S.clear_S[5]=0
|
|
||||||
end
|
end
|
||||||
if S.version=="Alpha V0.8.18"or S.version=="Alpha V0.8.19"then
|
if not S.off 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
|
S.off=S.recv-S.pend
|
||||||
end
|
end
|
||||||
|
if S.clear[1][4]>0 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
|
||||||
while #modeRanks>73 do
|
while #modeRanks>73 do
|
||||||
table.remove(modeRanks)
|
table.remove(modeRanks)
|
||||||
end
|
end
|
||||||
@@ -162,6 +115,9 @@ if setting.skin[10]==5 then
|
|||||||
setting.skin[10],setting.skin[11]=1,5
|
setting.skin[10],setting.skin[11]=1,5
|
||||||
end
|
end
|
||||||
if S.version~=gameVersion then
|
if S.version~=gameVersion then
|
||||||
|
if S.version then
|
||||||
|
setting.spawn=true
|
||||||
|
end
|
||||||
S.version=gameVersion
|
S.version=gameVersion
|
||||||
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ return{
|
|||||||
mStr(P.modeData.event,-81,110)
|
mStr(P.modeData.event,-81,110)
|
||||||
setFont(75)
|
setFont(75)
|
||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clear_S[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{P.modeData.point,P.stat.score}end,
|
score=function(P)return{P.modeData.point,P.stat.score}end,
|
||||||
scoreDisp=function(D)return sectionName[int(D[1]*.1)+1].." "..D[2]end,
|
scoreDisp=function(D)return sectionName[int(D[1]*.1)+1].." "..D[2]end,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ return{
|
|||||||
mText(drawableText.techrash,-81,420)
|
mText(drawableText.techrash,-81,420)
|
||||||
setFont(75)
|
setFont(75)
|
||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clear_S[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ return{
|
|||||||
mText(drawableText.techrash,-81,420)
|
mText(drawableText.techrash,-81,420)
|
||||||
setFont(75)
|
setFont(75)
|
||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clear_S[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ return{
|
|||||||
mText(drawableText.techrash,-81,420)
|
mText(drawableText.techrash,-81,420)
|
||||||
setFont(75)
|
setFont(75)
|
||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clear_S[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ return{
|
|||||||
mText(drawableText.techrash,-81,420)
|
mText(drawableText.techrash,-81,420)
|
||||||
setFont(75)
|
setFont(75)
|
||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clear_S[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ return{
|
|||||||
mText(drawableText.techrash,-81,420)
|
mText(drawableText.techrash,-81,420)
|
||||||
setFont(75)
|
setFont(75)
|
||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clear_S[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ return{
|
|||||||
end
|
end
|
||||||
modeEnv._20G=modeEnv.drop==0
|
modeEnv._20G=modeEnv.drop==0
|
||||||
modeEnv.oncehold=customSel[6]==1
|
modeEnv.oncehold=customSel[6]==1
|
||||||
modeEnv.bag=preBag
|
if preBag[1]then modeEnv.bag=preBag end
|
||||||
PLY.newPlayer(1,340,15)
|
PLY.newPlayer(1,340,15)
|
||||||
local L=modeEnv.opponent
|
local L=modeEnv.opponent
|
||||||
if L~=0 then
|
if L~=0 then
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ return{
|
|||||||
end
|
end
|
||||||
modeEnv._20G=modeEnv.drop==0
|
modeEnv._20G=modeEnv.drop==0
|
||||||
modeEnv.oncehold=customSel[6]==1
|
modeEnv.oncehold=customSel[6]==1
|
||||||
modeEnv.bag=preBag
|
if preBag[1]then modeEnv.bag=preBag end
|
||||||
modeEnv.target=0
|
modeEnv.target=0
|
||||||
PLY.newPlayer(1,340,15)
|
PLY.newPlayer(1,340,15)
|
||||||
local L=modeEnv.opponent
|
local L=modeEnv.opponent
|
||||||
|
|||||||
@@ -10,13 +10,19 @@ return{
|
|||||||
if not P.next[1] then
|
if not P.next[1] then
|
||||||
local height=freeRow.get(0)
|
local height=freeRow.get(0)
|
||||||
local max=#P.field
|
local max=#P.field
|
||||||
for x=1,10 do
|
if max>0 then
|
||||||
local h=max
|
for x=1,10 do
|
||||||
while P.field[h][x]==0 and h>1 do
|
local h=max
|
||||||
h=h-1
|
while P.field[h][x]==0 and h>1 do
|
||||||
|
h=h-1
|
||||||
|
end
|
||||||
|
height[x]=h
|
||||||
|
end--get heights
|
||||||
|
else
|
||||||
|
for x=1,10 do
|
||||||
|
height[x]=0
|
||||||
end
|
end
|
||||||
height[x]=h
|
end
|
||||||
end--get heights
|
|
||||||
height[11]=999
|
height[11]=999
|
||||||
|
|
||||||
local res={1,1,2,2,3,4}
|
local res={1,1,2,2,3,4}
|
||||||
@@ -27,9 +33,11 @@ return{
|
|||||||
end
|
end
|
||||||
if d<40 or P.stat.row>2*42 then
|
if d<40 or P.stat.row>2*42 then
|
||||||
A=#res+1
|
A=#res+1
|
||||||
for i=A,A+5 do
|
for i=1,4 do
|
||||||
res[i]=1
|
res[A]=1
|
||||||
res[i+6]=2
|
res[A+1]=2
|
||||||
|
res[A+2]=6
|
||||||
|
A=A+3
|
||||||
end
|
end
|
||||||
goto END
|
goto END
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -63,16 +63,16 @@ return{
|
|||||||
getRank=function(P)
|
getRank=function(P)
|
||||||
local S=P.modeData.point
|
local S=P.modeData.point
|
||||||
if S==500 then
|
if S==500 then
|
||||||
local L=P.stat.clear_S[4]
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
L>=30 and 5 or
|
T<=118 and 5 or
|
||||||
L>=25 and 4 or
|
T<=148 and 4 or
|
||||||
3
|
T<=183 and 3 or
|
||||||
|
2
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
S>=426 and 3 or
|
S>=300 and 2 or
|
||||||
S>=326 and 2 or
|
S>=100 and 1 or
|
||||||
S>=226 and 1 or
|
|
||||||
S>=50 and 0
|
S>=50 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ return{
|
|||||||
getRank=function(P)
|
getRank=function(P)
|
||||||
local S=P.modeData.point
|
local S=P.modeData.point
|
||||||
if S==500 then
|
if S==500 then
|
||||||
local L=P.stat.clear_S[4]
|
local L=P.stat.clears[4]
|
||||||
return
|
return
|
||||||
L>=30 and 5 or
|
L>=30 and 5 or
|
||||||
L>=25 and 4 or
|
L>=25 and 4 or
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ return{
|
|||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=626 and 5 or
|
T<=626 and 5 or
|
||||||
T<=1000 and 4 or
|
T<=888 and 4 or
|
||||||
T<=1400 and 3 or
|
T<=1140 and 3 or
|
||||||
T<=2060 and 2 or
|
T<=1406 and 2 or
|
||||||
T<=2600 and 1 or
|
T<=1626 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,11 @@ local s={
|
|||||||
ihs=true,irs=true,ims=true,
|
ihs=true,irs=true,ims=true,
|
||||||
reTime=4,
|
reTime=4,
|
||||||
maxNext=6,
|
maxNext=6,
|
||||||
|
autoPause=true,
|
||||||
quickR=true,
|
quickR=true,
|
||||||
swap=true,
|
swap=true,
|
||||||
fine=false,
|
fine=false,
|
||||||
autoPause=true,
|
spawn=false,
|
||||||
lang=1,
|
lang=1,
|
||||||
skinSet=1,
|
skinSet=1,
|
||||||
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},
|
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},
|
||||||
@@ -32,9 +33,11 @@ local s={
|
|||||||
powerInfo=false,
|
powerInfo=false,
|
||||||
|
|
||||||
--sound
|
--sound
|
||||||
sfx=10,bgm=7,
|
sfx=10,
|
||||||
vib=0,voc=0,
|
bgm=7,
|
||||||
stereo=6,
|
stereo=6,
|
||||||
|
vib=0,
|
||||||
|
voc=0,
|
||||||
|
|
||||||
--virtualkey
|
--virtualkey
|
||||||
VKSFX=3,--SFX volume
|
VKSFX=3,--SFX volume
|
||||||
@@ -60,14 +63,11 @@ s={
|
|||||||
piece=0,row=0,dig=0,
|
piece=0,row=0,dig=0,
|
||||||
atk=0,digatk=0,
|
atk=0,digatk=0,
|
||||||
send=0,recv=0,pend=0,off=0,
|
send=0,recv=0,pend=0,off=0,
|
||||||
clear={},clear_B={},clear_S={0,0,0,0,0},
|
clear={},spin={},
|
||||||
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,
|
||||||
lastPlay="sprint_10",--last played mode ID
|
lastPlay="sprint_10",--last played mode ID
|
||||||
}
|
}
|
||||||
for i=1,25 do
|
for i=1,25 do
|
||||||
s.clear_B[i]=0
|
|
||||||
s.spin_B[i]=0
|
|
||||||
s.clear[i]={0,0,0,0,0}
|
s.clear[i]={0,0,0,0,0}
|
||||||
s.spin[i]={0,0,0,0,0}
|
s.spin[i]={0,0,0,0,0}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -109,9 +109,13 @@ end
|
|||||||
function mergeStat(stat,delta)
|
function mergeStat(stat,delta)
|
||||||
for k,v in next,delta do
|
for k,v in next,delta do
|
||||||
if type(v)=="table"then
|
if type(v)=="table"then
|
||||||
mergeStat(stat[k],v)
|
if type(stat[k])=="table"then
|
||||||
|
mergeStat(stat[k],v)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
stat[k]=stat[k]+v
|
if stat[k]then
|
||||||
|
stat[k]=stat[k]+v
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ local L
|
|||||||
if setting.lang==1 or setting.lang==2 then
|
if setting.lang==1 or setting.lang==2 then
|
||||||
L={
|
L={
|
||||||
"ZS JL T O I",
|
"ZS JL T O I",
|
||||||
|
"uid:225238922",
|
||||||
"tetr.js 也很好玩!",
|
"tetr.js 也很好玩!",
|
||||||
"tetr.io 也很好玩!",
|
"tetr.io 也很好玩!",
|
||||||
"Techminohaowan",
|
"Techminohaowan",
|
||||||
@@ -11,7 +12,9 @@ if setting.lang==1 or setting.lang==2 then
|
|||||||
"osu好玩!",
|
"osu好玩!",
|
||||||
"O spin Triple!",
|
"O spin Triple!",
|
||||||
"nullpomino 也很好玩!",
|
"nullpomino 也很好玩!",
|
||||||
|
"Naki 可爱!",
|
||||||
"Miya:喵!",
|
"Miya:喵!",
|
||||||
|
"Miya 可爱!",
|
||||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||||
"Let-The-Bass-Kick!",
|
"Let-The-Bass-Kick!",
|
||||||
"l-=-1",
|
"l-=-1",
|
||||||
@@ -31,6 +34,7 @@ if setting.lang==1 or setting.lang==2 then
|
|||||||
"有建议的话可以把信息反馈给作者~",
|
"有建议的话可以把信息反馈给作者~",
|
||||||
"学会使用两个旋转键, 三个更好",
|
"学会使用两个旋转键, 三个更好",
|
||||||
"享受特色旋转系统!",
|
"享受特色旋转系统!",
|
||||||
|
"无聊翻翻设置是好习惯",
|
||||||
"我的世界好玩!",
|
"我的世界好玩!",
|
||||||
"提前旋转等设置可以用来救命",
|
"提前旋转等设置可以用来救命",
|
||||||
"泰拉瑞亚好玩!",
|
"泰拉瑞亚好玩!",
|
||||||
@@ -38,20 +42,23 @@ if setting.lang==1 or setting.lang==2 then
|
|||||||
"使用love2d引擎制作",
|
"使用love2d引擎制作",
|
||||||
"少女祈祷中",
|
"少女祈祷中",
|
||||||
"扫雷好玩!",
|
"扫雷好玩!",
|
||||||
|
"哦,我的上帝",
|
||||||
"你可以从统计页面打开游戏存档目录",
|
"你可以从统计页面打开游戏存档目录",
|
||||||
"你好 世界!",
|
"你好 世界!",
|
||||||
"魔方好玩!",
|
"魔方好玩!",
|
||||||
"秘密数字:626",
|
"秘密数字:626",
|
||||||
"每个虚拟按键都可以隐藏/显示",
|
"每个虚拟按键都可以隐藏/显示",
|
||||||
|
"每个块的出现方向可以自定义",
|
||||||
"联网还没做呢, 别急",
|
"联网还没做呢, 别急",
|
||||||
"键位是可以自定义的",
|
"键位是可以自定义的",
|
||||||
"合群了就会消失, 但是消失不代表没有意义",
|
"合群了就会消失, 但是消失不代表没有意义",
|
||||||
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
||||||
"俄罗斯方块环游记也不错!",
|
"俄罗斯方块环游记也不错!",
|
||||||
"调到特殊的日期也不会发生什么的",
|
"调到特殊的日期也不会发生什么的",
|
||||||
"低帧率会降低游戏体验",
|
"低帧率会降低游戏体验",
|
||||||
"戴上耳机以获得最佳体验",
|
"戴上耳机以获得最佳体验",
|
||||||
"大满贯10连击消四全清!",
|
"大满贯10连击消四全清!",
|
||||||
|
"车车人在此",
|
||||||
"草(日本语)",
|
"草(日本语)",
|
||||||
"不要在上课时玩游戏!",
|
"不要在上课时玩游戏!",
|
||||||
"不要盯着bug不放",
|
"不要盯着bug不放",
|
||||||
@@ -59,9 +66,9 @@ if setting.lang==1 or setting.lang==2 then
|
|||||||
"不是动画,真的在加载!",
|
"不是动画,真的在加载!",
|
||||||
"本游戏难度上限很高, 做好心理准备",
|
"本游戏难度上限很高, 做好心理准备",
|
||||||
"本游戏可不是休闲游戏",
|
"本游戏可不是休闲游戏",
|
||||||
|
"啊这,不会吧不会吧",
|
||||||
"3.1415926535897932384",
|
"3.1415926535897932384",
|
||||||
"26连T2来一个?",
|
"26连T2来一个?",
|
||||||
"225238922 哔哩哔哩 干杯~",
|
|
||||||
"20G本质是一套全新的游戏规则",
|
"20G本质是一套全新的游戏规则",
|
||||||
"20连PC来一个?",
|
"20连PC来一个?",
|
||||||
"2+2=Miya",
|
"2+2=Miya",
|
||||||
@@ -70,13 +77,15 @@ if setting.lang==1 or setting.lang==2 then
|
|||||||
"11renPC!",
|
"11renPC!",
|
||||||
"<方块研究所>有一个Nspire-CX版本!",
|
"<方块研究所>有一个Nspire-CX版本!",
|
||||||
"↑↑↓↓←→←→BABA",
|
"↑↑↓↓←→←→BABA",
|
||||||
"\"免费吃鸡方块\"",
|
'"免费吃鸡方块"',
|
||||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||||
}
|
}
|
||||||
elseif setting.lang==3 then
|
elseif setting.lang==3 then
|
||||||
L={
|
L={
|
||||||
"ZS JL T O I",
|
"ZS JL T O I",
|
||||||
|
"You can set orientation for each block",
|
||||||
"You can open saving directory from stat. page",
|
"You can open saving directory from stat. page",
|
||||||
|
"You are Grand Master",
|
||||||
"wwwwww",
|
"wwwwww",
|
||||||
"Who is diao",
|
"Who is diao",
|
||||||
"What about 26 TSDs?",
|
"What about 26 TSDs?",
|
||||||
@@ -101,7 +110,9 @@ elseif setting.lang==3 then
|
|||||||
"O spin triple!",
|
"O spin triple!",
|
||||||
"Nothing will happen when some special day come",
|
"Nothing will happen when some special day come",
|
||||||
"Not animation,real loading!",
|
"Not animation,real loading!",
|
||||||
|
"Naki so cute!",
|
||||||
"Miya:Nya!",
|
"Miya:Nya!",
|
||||||
|
"Miya so cute!",
|
||||||
"Minesweeper is fun!",
|
"Minesweeper is fun!",
|
||||||
"Minecraft is fun!",
|
"Minecraft is fun!",
|
||||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||||
@@ -121,7 +132,6 @@ elseif setting.lang==3 then
|
|||||||
"DO NOT PRESS F10",
|
"DO NOT PRESS F10",
|
||||||
"Do not play game in class!",
|
"Do not play game in class!",
|
||||||
"Disappearing doesn't mean useless",
|
"Disappearing doesn't mean useless",
|
||||||
"diaoyoumei so bully",
|
|
||||||
"diao so bully",
|
"diao so bully",
|
||||||
"COOL!!",
|
"COOL!!",
|
||||||
"CLASSIC SEXY RUSSIAN BLOCKS",
|
"CLASSIC SEXY RUSSIAN BLOCKS",
|
||||||
@@ -145,7 +155,10 @@ elseif setting.lang==3 then
|
|||||||
"11renPC!",
|
"11renPC!",
|
||||||
"↑↑↓↓←→←→BABA",
|
"↑↑↓↓←→←→BABA",
|
||||||
"\"Free block game with royale mode\"",
|
"\"Free block game with royale mode\"",
|
||||||
|
"/osk/",
|
||||||
|
"/jezevec/",
|
||||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||||
|
":pog:",
|
||||||
}
|
}
|
||||||
elseif setting.lang==4 then
|
elseif setting.lang==4 then
|
||||||
L={'!','@','#','$','%','^','&','*','(',')','-','=','_','+','[',']','{','}','\\','|',';',':','\'','"',',','<','.','>','/','?'}
|
L={'!','@','#','$','%','^','&','*','(',')','-','=','_','+','[',']','{','}','\\','|',';',':','\'','"',',','<','.','>','/','?'}
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ local function Pupdate_alive(P,dt)
|
|||||||
if P.keyPressing[2]then
|
if P.keyPressing[2]then
|
||||||
if arr>0 then
|
if arr>0 then
|
||||||
if mov==das+arr or mov==das then
|
if mov==das+arr or mov==das then
|
||||||
if P:ifoverlap(P.cur.bk,P.curX+1,P.curY)then
|
if not P.cur or P:ifoverlap(P.cur.bk,P.curX+1,P.curY)then
|
||||||
mov=das+arr-1
|
mov=das+arr-1
|
||||||
else
|
else
|
||||||
P.act.moveRight(P,true)
|
P.act.moveRight(P,true)
|
||||||
@@ -334,7 +334,7 @@ local function Pupdate_alive(P,dt)
|
|||||||
if P.keyPressing[1]then
|
if P.keyPressing[1]then
|
||||||
if arr>0 then
|
if arr>0 then
|
||||||
if mov==das+arr or mov==das then
|
if mov==das+arr or mov==das then
|
||||||
if P:ifoverlap(P.cur.bk,P.curX-1,P.curY)then
|
if not P.cur or P:ifoverlap(P.cur.bk,P.curX-1,P.curY)then
|
||||||
mov=das+arr-1
|
mov=das+arr-1
|
||||||
else
|
else
|
||||||
P.act.moveLeft(P,true)
|
P.act.moveLeft(P,true)
|
||||||
@@ -728,7 +728,7 @@ local function Pdraw_norm(P)
|
|||||||
if P.gameEnv.bagLine then
|
if P.gameEnv.bagLine then
|
||||||
local L=P.gameEnv.bagLen
|
local L=P.gameEnv.bagLen
|
||||||
local C=-P.pieceCount%L--phase
|
local C=-P.pieceCount%L--phase
|
||||||
gc.setColor(.5,.5,.5)
|
gc.setColor(.8,.5,.5)
|
||||||
for i=C,N-1,L do
|
for i=C,N-1,L do
|
||||||
local y=72*i+36
|
local y=72*i+36
|
||||||
gc.line(321+P.fieldOff.x,y,441,y)
|
gc.line(321+P.fieldOff.x,y,441,y)
|
||||||
@@ -1018,15 +1018,14 @@ local function getNewStatTable()
|
|||||||
piece=0,row=0,dig=0,
|
piece=0,row=0,dig=0,
|
||||||
atk=0,digatk=0,
|
atk=0,digatk=0,
|
||||||
send=0,recv=0,pend=0,off=0,
|
send=0,recv=0,pend=0,off=0,
|
||||||
clear={},clear_B={},clear_S={0,0,0,0,0},
|
clear={},clears={},spin={},spins={},
|
||||||
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,
|
||||||
}
|
}
|
||||||
for i=1,25 do
|
for i=1,25 do
|
||||||
T.clear[i]={0,0,0,0,0}
|
T.clear[i]={0,0,0,0,0}
|
||||||
T.spin[i]={0,0,0,0,0}
|
T.spin[i]={0,0,0,0,0}
|
||||||
T.clear_B[i]=0
|
T.clears[i]=0
|
||||||
T.spin_B[i]=0
|
T.spins[i]=0
|
||||||
end
|
end
|
||||||
return T
|
return T
|
||||||
end
|
end
|
||||||
@@ -1349,6 +1348,9 @@ function player.hold(P,ifpre)
|
|||||||
P:freshgho()
|
P:freshgho()
|
||||||
P.dropDelay,P.lockDelay,P.freshTime=P.gameEnv.drop,P.gameEnv.lock,max(P.freshTime-5,0)
|
P.dropDelay,P.lockDelay,P.freshTime=P.gameEnv.drop,P.gameEnv.lock,max(P.freshTime-5,0)
|
||||||
if P:ifoverlap(P.cur.bk,P.curX,P.curY)then P:lock()P:lose()end
|
if P:ifoverlap(P.cur.bk,P.curX,P.curY)then P:lock()P:lose()end
|
||||||
|
if P.human and setting.spawn then
|
||||||
|
SFX.play("spawn_"..C.id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if P.human then
|
if P.human then
|
||||||
@@ -1404,6 +1406,9 @@ function player.popNext(P)--pop next queue to hand
|
|||||||
end
|
end
|
||||||
|
|
||||||
if _[6]then P.act.hardDrop(P)_[6]=false end--IHdS
|
if _[6]then P.act.hardDrop(P)_[6]=false end--IHdS
|
||||||
|
if P.human and setting.spawn then
|
||||||
|
SFX.play("spawn_"..P.cur.id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function player.drop(P)--Place piece
|
function player.drop(P)--Place piece
|
||||||
@@ -1811,12 +1816,10 @@ function player.drop(P)--Place piece
|
|||||||
local n=P.cur.name
|
local n=P.cur.name
|
||||||
if dospin then
|
if dospin then
|
||||||
_=STAT.spin[n] _[cc+1]=_[cc+1]+1--spin[1~25][0~4]
|
_=STAT.spin[n] _[cc+1]=_[cc+1]+1--spin[1~25][0~4]
|
||||||
_=STAT.spin_S _[cc+1]=_[cc+1]+1--spin[0~4]
|
_=STAT.spins _[cc+1]=_[cc+1]+1--spin[0~4]
|
||||||
_=STAT.spin_B _[n]=_[n]+1--spin[1~25]
|
|
||||||
elseif cc>0 then
|
elseif cc>0 then
|
||||||
_=STAT.clear[n] _[cc]=_[cc]+1--clear[1~25][1~5]
|
_=STAT.clear[n] _[cc]=_[cc]+1--clear[1~25][1~5]
|
||||||
_=STAT.clear_S _[cc]=_[cc]+1--clear[1~5]
|
_=STAT.clears _[cc]=_[cc]+1--clear[1~5]
|
||||||
_=STAT.clear_B _[n]=_[n]+1--clear[1~25]
|
|
||||||
end
|
end
|
||||||
--Update stat
|
--Update stat
|
||||||
|
|
||||||
@@ -1935,6 +1938,9 @@ function player.win(P,result)
|
|||||||
if P.human then
|
if P.human then
|
||||||
gameOver()
|
gameOver()
|
||||||
TASK.new(TICK.autoPause,{0})
|
TASK.new(TICK.autoPause,{0})
|
||||||
|
if marking then
|
||||||
|
P:showTextF(text.marking,0,-226,22,"appear",.4,.0626)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
P:newTask(TICK.finish)
|
P:newTask(TICK.finish)
|
||||||
end
|
end
|
||||||
@@ -2015,6 +2021,9 @@ function player.lose(P)
|
|||||||
gameOver()
|
gameOver()
|
||||||
P:newTask(#players>1 and TICK.lose or TICK.finish)
|
P:newTask(#players>1 and TICK.lose or TICK.finish)
|
||||||
TASK.new(TICK.autoPause,{0})
|
TASK.new(TICK.autoPause,{0})
|
||||||
|
if marking then
|
||||||
|
P:showTextF(text.marking,0,-226,22,"appear",.4,.0626)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
P:newTask(TICK.lose)
|
P:newTask(TICK.lose)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ local list={
|
|||||||
"text_bone(mrz)",
|
"text_bone(mrz)",
|
||||||
"colored_bone(mrz)",
|
"colored_bone(mrz)",
|
||||||
"white_bone(mrz)",
|
"white_bone(mrz)",
|
||||||
|
"WTF",
|
||||||
}
|
}
|
||||||
local SKIN={}
|
local SKIN={}
|
||||||
SKIN.lib={}
|
SKIN.lib={}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
local gc=love.graphics
|
||||||
local Tick={}
|
local Tick={}
|
||||||
function Tick.finish(P)
|
function Tick.finish(P)
|
||||||
P.endCounter=P.endCounter+1
|
P.endCounter=P.endCounter+1
|
||||||
@@ -69,4 +70,14 @@ function Tick.autoPause(data)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
function Tick.autoResize(data)
|
||||||
|
data[1]=data[1]+1
|
||||||
|
if data[1]==62 then
|
||||||
|
local w,h=gc.getWidth(),gc.getHeight()
|
||||||
|
if w<h then
|
||||||
|
love.resize(w,h)
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
return Tick
|
return Tick
|
||||||
@@ -1,23 +1,22 @@
|
|||||||
local S=[=[
|
local S=[=[
|
||||||
"Patron"(time ordered,may not accurate):
|
"Patron"(time ordered,may not accurate):
|
||||||
[rmb100+]:
|
[rmb100+]:
|
||||||
那没事了(T6300) 加油啊,钉钉动了的大哥哥(T3228)
|
那没事了(T6300) 加油啊,钉钉动了的大哥哥(T3228)
|
||||||
弥佑瑶 Alan
|
弥佑瑶 Alan 幽灵3383
|
||||||
幽灵3383 靏鸖龘龘
|
靏鸖龘龘 込余 saki
|
||||||
込余 saki
|
|
||||||
[rmb10+]:
|
[rmb10+]:
|
||||||
八零哥 蕴空之灵 gggf127 dtg
|
八零哥 蕴空之灵 gggf127 dtg
|
||||||
ThTsOd Fireboos 金巧 10元
|
ThTsOd Fireboos 金巧 10元
|
||||||
立斐 Deep_Sea 时雪 yyangdid
|
立斐 Deep_Sea 时雪 yyangdid
|
||||||
sfqr 心痕 Sasoric 夏小亚
|
sfqr 心痕 Sasoric 夏小亚 仁参
|
||||||
仁参 乐↗乐↘ 喜欢c4w的ztcjoin 面包
|
乐↗乐↘ 喜欢c4w的ztcjoin 面包 蠢熏
|
||||||
蠢熏 潘一栗 Lied 星街书婉
|
潘一栗 Lied 星街书婉 祝西 829
|
||||||
祝西 829 e m*12 我永远爱白银诺艾尔(鹏
|
e m*12 我永远爱白银诺艾尔(鹏 PCX
|
||||||
PCX kagura77 呆喂 GlowingEmbers
|
kagura77 呆喂 GlowingEmbers 轩辕辚
|
||||||
轩辕辚 HimuroAki TCV100 tech有养成系统了@7065
|
HimuroAki TCV100 tech有养成系统了@7065
|
||||||
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思 世界沃德
|
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思
|
||||||
蓝绿 天生的魔法师 琳雨空 T8779.易缄 吃水榴莲
|
世界沃德 蓝绿 天生的魔法师 琳雨空
|
||||||
|
T8779.易缄 吃水榴莲 诗情画意 星姐阿夸双推Man暗炎
|
||||||
Thanks!!!
|
Thanks!!!
|
||||||
|
|
||||||
Future outlook:
|
Future outlook:
|
||||||
@@ -56,25 +55,30 @@ Future outlook:
|
|||||||
2048 (with next (with deadly mode))
|
2048 (with next (with deadly mode))
|
||||||
mine sweeper
|
mine sweeper
|
||||||
tank battle
|
tank battle
|
||||||
time-based-rank for master advanced mode(1:58/2:28/3:03/300P/100P)
|
|
||||||
简易防沉迷系统
|
简易防沉迷系统
|
||||||
full-key control
|
full-key control
|
||||||
dragging control
|
touch-drag control
|
||||||
"next" SFX
|
cool backgrounds
|
||||||
new layout of player (rectangle so stupid)
|
'Encrypt'(compile to byte code)
|
||||||
better drop FX
|
better drop FX
|
||||||
60+ fps supporting
|
60+ fps supporting
|
||||||
in-game document
|
in-game document
|
||||||
lang setting page
|
|
||||||
game recording
|
game recording
|
||||||
new widgets (joystick etc.)
|
new widgets (joystick etc.)
|
||||||
splashing block
|
splashing block
|
||||||
cool backgrounds
|
|
||||||
more graphic FXs & 3D features & animations
|
more graphic FXs & 3D features & animations
|
||||||
Encrypt source code (compile to byte code)
|
|
||||||
network game
|
network game
|
||||||
new AI: task-Z
|
new AI: task-Z
|
||||||
|
|
||||||
|
0.9.1: next piece SFX
|
||||||
|
new:
|
||||||
|
next piece spawn SFX
|
||||||
|
code:
|
||||||
|
render background to canvas first, not redering each frame
|
||||||
|
fixed:
|
||||||
|
error when moving [nothing] when arr>0
|
||||||
|
error when complete master-advanced
|
||||||
|
|
||||||
0.9.0: Custom Sequence Update
|
0.9.0: Custom Sequence Update
|
||||||
new:
|
new:
|
||||||
custom sequence
|
custom sequence
|
||||||
@@ -82,20 +86,26 @@ Future outlook:
|
|||||||
many new tips
|
many new tips
|
||||||
more powerful watermark
|
more powerful watermark
|
||||||
die animation in non-royale mode
|
die animation in non-royale mode
|
||||||
|
better in-game layout
|
||||||
changed:
|
changed:
|
||||||
mode name shown at the top of screen
|
mode name shown at the top of screen
|
||||||
faster & harder attacker-ultimate
|
faster & harder attacker-ultimate
|
||||||
|
time-based-rank for master-advanced
|
||||||
little easier to get S in PC challenge (easy mode)
|
little easier to get S in PC challenge (easy mode)
|
||||||
easier to get S in infinite mode, c4w, PC
|
easier to get S in infinite mode, c4w, PC
|
||||||
harder to unlock sprint 400/1000
|
harder to unlock sprint-400/1000
|
||||||
|
harder to get high rank of sprint-1000
|
||||||
|
harder drought-lunatic
|
||||||
code:
|
code:
|
||||||
file sorted
|
file sorted
|
||||||
task system rewrited, now perfect (maybe)
|
task system rewrited, now perfect (maybe)
|
||||||
remove scissors/blendMode setting in drawing players
|
remove scissors/blendMode setting in drawing players
|
||||||
fixed:
|
fixed:
|
||||||
|
screen orientation sometimes error after wake up the phone
|
||||||
hard move won't deactive "spin"
|
hard move won't deactive "spin"
|
||||||
do not clear dead enemies' field
|
do not clear dead enemies' field
|
||||||
show ghost's center when ghost is off
|
show ghost's center when ghost is off
|
||||||
|
error when get a PC in drought-lunatic
|
||||||
|
|
||||||
0.8.24: Bug Fixed
|
0.8.24: Bug Fixed
|
||||||
new:
|
new:
|
||||||
|
|||||||
Reference in New Issue
Block a user