Compare commits

...

2 Commits

Author SHA1 Message Date
MrZ_26
830f0ffbed Alpha V0.7.16 2020-02-04 19:33:52 +08:00
MrZ_26
849e5b586e Alpha V0.7.15 2020-02-04 19:33:41 +08:00
16 changed files with 457 additions and 481 deletions

Binary file not shown.

BIN
SFX/swipe.ogg Normal file

Binary file not shown.

View File

@@ -13,19 +13,18 @@ local touching=nil--1st touching ID
local sceneInit={ local sceneInit={
load=function() load=function()
curBG="none" curBG="none"
keeprun=true
loading=1--Loading mode loading=1--Loading mode
loadnum=1--Loading counter loadnum=1--Loading counter
loadprogress=0--Loading bar(0~1) loadprogress=0--Loading bar(0~1)
loadTip=text.tips[rnd(#text.tips)]
end, end,
intro=function() intro=function()
curBG="none" curBG="none"
count=0 count=0
keeprun=true BGM("blank")
end, end,
main=function() main=function()
curBG="none" curBG="none"
keeprun=true
collectgarbage() collectgarbage()
end, end,
mode=function() mode=function()
@@ -33,12 +32,12 @@ local sceneInit={
modeSel=modeSel or 1 modeSel=modeSel or 1
levelSel=levelSel or 3 levelSel=levelSel or 3
curBG="none" curBG="none"
keeprun=true BGM("blank")
end, end,
custom=function() custom=function()
optSel=optSel or 1 optSel=optSel or 1
curBG="matrix" curBG="matrix"
keeprun=true BGM("blank")
end, end,
draw=function() draw=function()
kb.setKeyRepeat(true) kb.setKeyRepeat(true)
@@ -46,40 +45,39 @@ local sceneInit={
pen=1 pen=1
sx,sy=1,1 sx,sy=1,1
curBG="none" curBG="none"
keeprun=true
end, end,
play=function() play=function()
keeprun=false if needResetGameData then
resetGameData() resetGameData()
needResetGameData=nil
end
sysSFX("ready") sysSFX("ready")
end, end,
pause=function()
pauseTime=0
end,
setting=function() setting=function()
curBG="none" curBG="none"
keeprun=true
end, end,
setting2=function() setting2=function()
curBG="none" curBG="none"
keeprun=true curBoard=1
curBoard=1 keyboardSet=1
keyboardSet=1 joystickSet=1
joystickSet=1 keyboardSetting=false
keyboardSetting=false joystickSetting=false
joystickSetting=false
end,--Control settings end,--Control settings
setting3=function() setting3=function()
curBG="game1" curBG="game1"
keeprun=true
defaultSel=1 defaultSel=1
sel=nil sel=nil
snapLevel=1 snapLevel=1
end,--Touch setting end,--Touch setting
help=function() help=function()
curBG="none" curBG="none"
keeprun=true
end, end,
stat=function() stat=function()
curBG="none" curBG="none"
keeprun=true
end, end,
quit=function() quit=function()
love.event.quit() love.event.quit()
@@ -159,11 +157,9 @@ function mouseDown.intro(x,y,k)
end end
function mouseDown.draw(x,y,k) function mouseDown.draw(x,y,k)
mouseMove.draw(x,y) mouseMove.draw(x,y)
return sx and sy
end end
function mouseDown.setting3(x,y,k) function mouseDown.setting3(x,y,k)
if k==2 then back()end if k==2 then back()end
x,y=xOy:inverseTransformPoint(x,y)
for K=1,#virtualkey do for K=1,#virtualkey do
local b=virtualkey[K] local b=virtualkey[K]
if (x-b[1])^2+(y-b[2])^2<b[3]then if (x-b[1])^2+(y-b[2])^2<b[3]then
@@ -181,8 +177,6 @@ function mouseMove.draw(x,y,dx,dy)
end end
end end
function mouseMove.setting3(x,y,dx,dy) function mouseMove.setting3(x,y,dx,dy)
x,y=xOy:inverseTransformPoint(x,y)
dx,dy=dx*scr.k,dy*scr.k
if sel and ms.isDown(1)then if sel and ms.isDown(1)then
local b=virtualkey[sel] local b=virtualkey[sel]
b[1],b[2]=b[1]+dx,b[2]+dy b[1],b[2]=b[1]+dx,b[2]+dy
@@ -252,14 +246,21 @@ function touchUp.play(id,x,y)
end end
end end
touchMove={} touchMove={}
function touchMove.setting3(id,x,y) function touchMove.setting3(id,x,y,dx,dy)
dx,dy=dx*scr.k,dy*scr.k
if sel then if sel then
local b=virtualkey[sel] local b=virtualkey[sel]
b[1],b[2]=b[1]+dx,b[2]+dy b[1],b[2]=b[1]+dx,b[2]+dy
end end
end end
function touchMove.play(id,x,y) function touchMove.draw(id,x,y,dx,dy)
sx,sy=int((x-200)/30)+1,20-int((y-60)/30)
if sx<1 or sx>10 then sx=nil end
if sy<1 or sy>20 then sy=nil end
if sx and sy then
preField[sy][sx]=pen
end
end
function touchMove.play(id,x,y,dx,dy)
if setting.virtualkeySwitch then if setting.virtualkeySwitch then
local l=tc.getTouches() local l=tc.getTouches()
for n=1,#virtualkey do for n=1,#virtualkey do
@@ -323,6 +324,8 @@ function keyDown.custom(key)
gotoScene("draw") gotoScene("draw")
elseif key=="return"then elseif key=="return"then
loadGame(0,1) loadGame(0,1)
elseif key=="space"then
loadGame(0,2)
elseif key=="escape"then elseif key=="escape"then
back() back()
end end
@@ -383,7 +386,7 @@ function keyDown.setting2(key)
end end
end end
function keyDown.play(key) function keyDown.play(key)
if key=="escape"then back()end if key=="escape"then pauseGame()end
local m=setting.keyMap local m=setting.keyMap
for p=1,human do for p=1,human do
local lib=setting.keyLib[p] local lib=setting.keyLib[p]
@@ -397,6 +400,13 @@ function keyDown.play(key)
end end
end end
end end
function keyDown.pause(key)
if key=="escape"then
back()
elseif key=="return"or key=="space"then
resumeGame()
end
end
keyUp={} keyUp={}
function keyUp.play(key) function keyUp.play(key)
local m=setting.keyMap local m=setting.keyMap
@@ -518,9 +528,9 @@ function love.mousemoved(x,y,dx,dy,t)
mx,my=xOy:inverseTransformPoint(x,y) mx,my=xOy:inverseTransformPoint(x,y)
Buttons.sel=nil Buttons.sel=nil
if mouseMove[scene]then if mouseMove[scene]then
mouseMove[scene](mx,my,dx,dy) mouseMove[scene](mx,my,dx/scr.k,dy/scr.k)
end end
for N,B in next,Buttons[scene]do for _,B in next,Buttons[scene]do
if not(B.hide and B.hide())then if not(B.hide and B.hide())then
if abs(mx-B.x)<B.w*.5 and abs(my-B.y)<B.h*.5 then if abs(mx-B.x)<B.w*.5 and abs(my-B.y)<B.h*.5 then
Buttons.sel=B Buttons.sel=B
@@ -543,7 +553,7 @@ end
function love.touchpressed(id,x,y) function love.touchpressed(id,x,y)
if not touching then if not touching then
touching=id touching=id
love.mousemoved(x,y) love.mousemoved(x,y,0,0)
mouseShow=false mouseShow=false
end end
if touchDown[scene]then if touchDown[scene]then
@@ -564,18 +574,24 @@ function love.touchreleased(id,x,y)
mouseShow=false mouseShow=false
end end
if touchUp[scene]then if touchUp[scene]then
x,y=
touchUp[scene](id,xOy:inverseTransformPoint(x,y)) touchUp[scene](id,xOy:inverseTransformPoint(x,y))
end end
end end
function love.touchmoved(id,x,y,dx,dy) function love.touchmoved(id,x,y,dx,dy)
love.mousemoved(x,y)
mouseShow=false
if not Buttons.sel then if not Buttons.sel then
touching=nil touching=nil
end end
x,y=xOy:inverseTransformPoint(x,y)
if touchMove[scene]then if touchMove[scene]then
touchMove[scene](id,xOy:inverseTransformPoint(x,y)) touchMove[scene](id,x,y,dx/scr.k,dy/scr.k)
end
for _,B in next,Buttons[scene]do
if not(B.hide and B.hide())then
if abs(x-B.x)<B.w*.5 and abs(y-B.y)<B.h*.5 then
Buttons.sel=B
return
end
end
end end
end end
@@ -629,24 +645,12 @@ function love.gamepadreleased(joystick,i)
end end
end end
--[[ --[[
function love.joystickpressed(js,k) function love.joystickpressed(js,k)end
function love.joystickaxis(js,axis,valend
end function love.joystickhat(js,hat,dirend
function love.joystickaxis(js,axis,val) function love.sendData(data)end
function love.receiveData(id,data)end
end
function love.joystickhat(js,hat,dir)
end
function love.sendData(data)
return
end
function love.receiveData(id,data)
return
end
]] ]]
function love.lowmemory() function love.lowmemory()
collectgarbage() collectgarbage()
end end
@@ -666,6 +670,9 @@ function love.resize(w,h)
gc.replaceTransform(xOy) gc.replaceTransform(xOy)
collectgarbage() collectgarbage()
end end
function love.focus(f)
if not f and wd.isMinimized()and scene=="play"then pauseGame()end
end
function love.update(dt) function love.update(dt)
--[[ --[[
if players then if players then
@@ -692,7 +699,6 @@ function love.update(dt)
B.alpha=0 B.alpha=0
end--Reset buttons' alpha end--Reset buttons' alpha
scene=sceneSwaping.tar scene=sceneSwaping.tar
BGM("blank")
sceneInit[scene]() sceneInit[scene]()
Buttons.sel=nil Buttons.sel=nil
elseif sceneSwaping.time==0 then elseif sceneSwaping.time==0 then
@@ -708,9 +714,9 @@ function love.update(dt)
updateButton() updateButton()
end end
function love.draw() function love.draw()
gc.discard() gc.discard()--SPEED UPUPUP!
Pnt.BG[curBG]() Pnt.BG[setting.bg and curBG or"grey"]()
gc.setColor(1,1,1,.22) gc.setColor(1,1,1,.2)
for n=1,#BGblock do for n=1,#BGblock do
local b,img=BGblock[n].b,blockSkin[BGblock[n].bn] local b,img=BGblock[n].b,blockSkin[BGblock[n].bn]
local size=BGblock[n].size local size=BGblock[n].size
@@ -757,49 +763,23 @@ function love.run()
local readyDrawFrame=0 local readyDrawFrame=0
love.resize(gc.getWidth(),gc.getHeight()) love.resize(gc.getWidth(),gc.getHeight())
scene="load"sceneInit.load()--System Launch scene="load"sceneInit.load()--System Launch
math.randomseed(os.time()*626)
return function() return function()
love.event.pump() love.event.pump()
for name,a,b,c,d,e,f in love.event.poll()do for name,a,b,c,d,e,f in love.event.poll()do
if name=="quit"then return 0 end if name=="quit"then return 0 end
love.handlers[name](a,b,c,d,e,f) if love[name]then love[name](a,b,c,d,e,f)end
end end
if focus then tm.step()
tm.step() -- love.receiveData(id,data)
-- love.receiveData(id,data) love.update(tm.getDelta())
love.update(tm.getDelta()) readyDrawFrame=readyDrawFrame+setting.frameMul
readyDrawFrame=readyDrawFrame+setting.frameMul if readyDrawFrame>=100 then
if readyDrawFrame>=100 then readyDrawFrame=readyDrawFrame-100
readyDrawFrame=readyDrawFrame-100 love.draw()
gc.clear() gc.present()
love.draw()
gc.present()
end
if not(wd.hasFocus()or keeprun)then
focus=false
ms.setVisible(true)
if bgmPlaying then bgm[bgmPlaying]:pause()end
if scene=="play"then
for i=1,#players.alive do
local l=players.alive[i].keyPressing
for j=1,#l do
if l[j]then
releaseKey(j,players.alive[i])
end
end
end
end
end
else
tm.sleep(.5)
if wd.hasFocus()then
tm.step()
focus=true
ms.setVisible(false)
if bgmPlaying then bgm[bgmPlaying]:play()end
end
end end
::L::if Timer()-frameT<1/60 then goto L end ::L::if Timer()-frameT<1/60 then goto L end
frameT=Timer() frameT=Timer()
tm.sleep(.001)
end end
end end

View File

@@ -9,7 +9,7 @@ function love.conf(t)
t.audio.mixwithsystem=true--Switch on to keep sysBGM t.audio.mixwithsystem=true--Switch on to keep sysBGM
local W=t.window local W=t.window
W.title="Techmino V0.7.14" W.title="Techmino V0.7.16"
W.icon="/image/icon.png" W.icon="/image/icon.png"
W.width,W.height=1280,720 W.width,W.height=1280,720
W.minwidth,W.minheight=640,360 W.minwidth,W.minheight=640,360

View File

@@ -149,26 +149,29 @@ loadmode={
modeEnv[k]=customRange[k][customSel[k]] modeEnv[k]=customRange[k][customSel[k]]
end end
modeEnv._20G=modeEnv.drop==-1 modeEnv._20G=modeEnv.drop==-1
modeEnv.oncehold=customSel.hold==1
createPlayer(1,340,15) createPlayer(1,340,15)
if modeEnv.opponent==0 then if modeEnv.opponent==0 then
else else
modeEnv.target=nil modeEnv.target=nil
createPlayer(2,965,360,.5,modeEnv.opponent) createPlayer(2,965,360,.5,modeEnv.opponent)
end end
local h=20 if curMode.lv==1 then
::R:: local h=20
for i=1,10 do ::R::
if preField[h][i]>0 then modeEnv.Fkey=true goto L end for i=1,10 do
end if preField[h][i]>0 then goto L end
h=h-1 end
if h>0 then goto R end h=h-1
::L:: if h>0 then goto R end
for _,P in next,players.alive do ::L::
local t=P.showTime*3 for _,P in next,players.alive do
for y=1,h do local t=P.showTime*3
P.field[y]=getNewRow(0) for y=1,h do
P.visTime[y]=getNewRow(t) P.field[y]=getNewRow(0)
for x=1,10 do P.field[y][x]=preField[y][x]end P.visTime[y]=getNewRow(t)
for x=1,10 do P.field[y][x]=preField[y][x]end
end
end end
end end
end, end,
@@ -236,7 +239,7 @@ mesDisp={
end, end,
dig=function() dig=function()
setFont(70) setFont(70)
mStr(P.cstat.event,-82,310) mStr(P.cstat.event-20,-82,310)
setFont(30) setFont(30)
mStr("Wave",-82,375) mStr("Wave",-82,375)
end, end,
@@ -272,7 +275,7 @@ mesDisp={
setFont(30) setFont(30)
gc.print(up0to4[P.strength],-132,290) gc.print(up0to4[P.strength],-132,290)
for i=1,P.strength do for i=1,P.strength do
gc.draw(badgeIcon,16*i-142,260) gc.draw(badgeIcon,16*i-138,260)
end end
end, end,
techmino99=function() techmino99=function()
@@ -287,7 +290,7 @@ mesDisp={
setFont(30) setFont(30)
gc.print(up0to4[P.strength],-132,290) gc.print(up0to4[P.strength],-132,290)
for i=1,P.strength do for i=1,P.strength do
gc.draw(badgeIcon,16*i-142,260) gc.draw(badgeIcon,16*i-138,260)
end end
end, end,
drought=function() drought=function()
@@ -299,6 +302,15 @@ mesDisp={
setFont(75) setFont(75)
mStr(max(P.gameEnv.target-P.cstat.row,0),-82,280) mStr(max(P.gameEnv.target-P.cstat.row,0),-82,280)
end end
if curMode.lv==2 and(P.keyPressing[9]or frame<180)then
gc.setLineWidth(3)
for y=1,20 do for x=1,10 do
if preField[y][x]>0 then
gc.setColor(blockColor[preField[y][x]])
gc.rectangle("line",30*x-25,605-30*y,20,20)
end
end end
end
end end
} }
Event={ Event={
@@ -381,9 +393,6 @@ Event={
Event_gameover.lose() Event_gameover.lose()
elseif #P.clearing>0 then elseif #P.clearing>0 then
P.cstat.event=P.cstat.event+1 P.cstat.event=P.cstat.event+1
if #P.field>11 and P.cstat.event%5~=1 then
ins(P.clearing,1)
end
end end
end, end,
tech_reach=function() tech_reach=function()
@@ -433,7 +442,6 @@ Event_gameover={
if modeEnv.royaleMode then if modeEnv.royaleMode then
P.rank=1 P.rank=1
P.result="WIN" P.result="WIN"
showText(P,1,"appear",60,120,nil,true)
changeAtk(P) changeAtk(P)
BGM("end") BGM("end")
end end
@@ -446,9 +454,8 @@ Event_gameover={
P.visTime[i][j]=min(P.visTime[i][j],20) P.visTime[i][j]=min(P.visTime[i][j],20)
end end
end end
showText(P,text.win,"beat",90,nil,nil,true) showText(P,text.win,"beat",90,nil,.4,curMode.id~="custom")
if P.id==1 and players[2]and players[2].ai then SFX("win")BGM()end SFX("win")
newTask(Event_task.win,P)
end, end,
lose=function() lose=function()
P.alive=false P.alive=false
@@ -520,58 +527,33 @@ Event_gameover={
BGM("end") BGM("end")
end end
end end
newTask(Event_task.lose,P)
if #players.alive==1 then if #players.alive==1 then
local t=P local t=P
P=players.alive[1] P=players.alive[1]
Event_gameover.win() Event_gameover.win()
P=t P=t
end end
if #players>1 then
newTask(Event_task.lose,P)
end
end, end,
} }
Event_task={ Event_task={
win=function(P)
P.endCounter=P.endCounter+1
if P.endCounter>80 then
if P.gameEnv.visible=="show"then
for i=1,#P.field do
for j=1,10 do
if P.visTime[i][j]>0 then
P.visTime[i][j]=P.visTime[i][j]-1
end
end
end
if P.endCounter==100 then
while P.field[1]do
removeRow(P.field)
removeRow(P.visTime)
end
return true
end
elseif P.endCounter==100 then
return true
end
end
end,
lose=function(P) lose=function(P)
P.endCounter=P.endCounter+1 P.endCounter=P.endCounter+1
if P.endCounter>80 then if P.endCounter>80 then
if P.gameEnv.visible=="show"then for i=1,#P.field do
for i=1,#P.field do for j=1,10 do
for j=1,10 do if P.visTime[i][j]>0 then
if P.visTime[i][j]>0 then P.visTime[i][j]=P.visTime[i][j]-1
P.visTime[i][j]=P.visTime[i][j]-1
end
end end
end end
if P.endCounter==100 then end
while P.field[1]do if P.endCounter==100 then
removeRow(P.field) while P.field[1]do
removeRow(P.visTime) removeRow(P.field)
end removeRow(P.visTime)
return true
end end
elseif P.endCounter==100 then
return true return true
end end
end end
@@ -589,7 +571,7 @@ Event_task={
dig_normal=function(P) dig_normal=function(P)
if not P.control then return end if not P.control then return end
P.counter=P.counter+1 P.counter=P.counter+1
if #P.clearing==0 and P.counter>=max(90,180-2*P.cstat.event)then if P.counter>=max(90,180-P.cstat.event)then
garbageRise(10,1,rnd(10)) garbageRise(10,1,rnd(10))
P.counter=0 P.counter=0
P.cstat.event=P.cstat.event+1 P.cstat.event=P.cstat.event+1
@@ -598,7 +580,7 @@ Event_task={
dig_lunatic=function(P) dig_lunatic=function(P)
if not P.control then return end if not P.control then return end
P.counter=P.counter+1 P.counter=P.counter+1
if #P.clearing==0 and P.counter>=max(45,80-.4*P.cstat.event)then if P.counter>=max(45,80-.3*P.cstat.event)then
garbageRise(11+P.cstat.event%3,1,rnd(10)) garbageRise(11+P.cstat.event%3,1,rnd(10))
P.counter=0 P.counter=0
P.cstat.event=P.cstat.event+1 P.cstat.event=P.cstat.event+1
@@ -607,7 +589,7 @@ Event_task={
survivor_easy=function(P) survivor_easy=function(P)
if not P.control then return end if not P.control then return end
P.counter=P.counter+1 P.counter=P.counter+1
if P.counter==max(60,150-2*P.cstat.event)then if P.counter>=max(60,150-2*P.cstat.event)then
ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1}) ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1})
P.counter=0 P.counter=0
if P.cstat.event==45 then showText(P,text.maxspeed,"appear",80,-140)end if P.cstat.event==45 then showText(P,text.maxspeed,"appear",80,-140)end
@@ -617,7 +599,7 @@ Event_task={
survivor_normal=function(P) survivor_normal=function(P)
if not P.control then return end if not P.control then return end
P.counter=P.counter+1 P.counter=P.counter+1
if P.counter==max(90,180-2*P.cstat.event)then if P.counter>=max(90,180-2*P.cstat.event)then
local d=P.cstat.event+1 local d=P.cstat.event+1
if d%4==0 then ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=60,cd0=60,time=0,sent=false,lv=1}) if d%4==0 then ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=60,cd0=60,time=0,sent=false,lv=1})
elseif d%4==1 then ins(P.atkBuffer,{pos=rnd(10),amount=2,countdown=70,cd0=70,time=0,sent=false,lv=1}) elseif d%4==1 then ins(P.atkBuffer,{pos=rnd(10),amount=2,countdown=70,cd0=70,time=0,sent=false,lv=1})
@@ -634,7 +616,7 @@ Event_task={
survivor_hard=function(P) survivor_hard=function(P)
if not P.control then return end if not P.control then return end
P.counter=P.counter+1 P.counter=P.counter+1
if P.counter==max(60,180-2*P.cstat.event)then if P.counter>=max(60,180-2*P.cstat.event)then
if P.cstat.event%3<2 then if P.cstat.event%3<2 then
ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1}) ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1})
else else
@@ -650,7 +632,7 @@ Event_task={
survivor_lunatic=function(P) survivor_lunatic=function(P)
if not P.control then return end if not P.control then return end
P.counter=P.counter+1 P.counter=P.counter+1
if P.counter==max(60,150-P.cstat.event)then if P.counter>=max(60,150-P.cstat.event)then
local t=max(60,90-P.cstat.event) local t=max(60,90-P.cstat.event)
ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3}) ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
P.atkBuffer.sum=P.atkBuffer.sum+4 P.atkBuffer.sum=P.atkBuffer.sum+4
@@ -663,7 +645,7 @@ Event_task={
survivor_ultimate=function(P) survivor_ultimate=function(P)
if not P.control then return end if not P.control then return end
P.counter=P.counter+1 P.counter=P.counter+1
if P.counter==max(300,600-10*P.cstat.event)then if P.counter>=max(300,600-10*P.cstat.event)then
local t=max(300,480-12*P.cstat.event) local t=max(300,480-12*P.cstat.event)
ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=2}) ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=2})
ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3}) ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
@@ -686,11 +668,12 @@ Event_task={
r[j]=PCbase[4*t+i][j] r[j]=PCbase[4*t+i][j]
end end
ins(P.field,1,r) ins(P.field,1,r)
ins(P.visTime,1,getNewRow(P.showTime)) ins(P.visTime,1,getNewRow(20))
end end
P.fieldBeneath=P.fieldBeneath+120 P.fieldBeneath=P.fieldBeneath+120
-- P.curY=P.curY+4 for i=1,#P.clearing do
P.y_img=P.y_img+4 P.clearing[i]=P.clearing[i]+4
end
freshgho() freshgho()
return true return true
end end
@@ -714,98 +697,84 @@ defaultModeEnv={
drop=60, drop=60,
target=10, target=10,
reach=Event_gameover.win, reach=Event_gameover.win,
bg="strap", bg="strap",bgm="race",
bgm="race",
}, },
{ {
drop=60, drop=60,
target=20, target=20,
reach=Event_gameover.win, reach=Event_gameover.win,
bg="strap", bg="strap",bgm="race",
bgm="race",
}, },
{ {
drop=60, drop=60,
target=40, target=40,
reach=Event_gameover.win, reach=Event_gameover.win,
bg="strap", bg="strap",bgm="race",
bgm="race",
}, },
{ {
drop=60, drop=60,
target=100, target=100,
reach=Event_gameover.win, reach=Event_gameover.win,
bg="strap", bg="strap",bgm="race",
bgm="race",
}, },
{ {
drop=60, drop=60,
target=400, target=400,
reach=Event_gameover.win, reach=Event_gameover.win,
bg="strap", bg="strap",bgm="push",
bgm="push",
}, },
{ {
drop=60, drop=60,
target=1000, target=1000,
reach=Event_gameover.win, reach=Event_gameover.win,
bg="strap", bg="strap",bgm="push",
bgm="push",
}, },
}, },
marathon={ marathon={
{ {
drop=60, drop=60,lock=60,
lock=60,
fall=30, fall=30,
target=200, target=200,
reach=Event.marathon_reach, reach=Event.marathon_reach,
bg="strap", bg="strap",bgm="way",
bgm="way",
}, },
{ {
drop=60, drop=60,
fall=20, fall=20,
target=10, target=10,
reach=Event.marathon_reach, reach=Event.marathon_reach,
bg="strap", bg="strap",bgm="way",
bgm="way",
}, },
{ {
_20G=true, _20G=true,
fall=15, fall=15,
target=200, target=200,
reach=Event.marathon_reach, reach=Event.marathon_reach,
bg="strap", bg="strap",bgm="race",
bgm="race",
}, },
}, },
master={ master={
{ {
_20G=true, _20G=true,
drop=0, drop=0,lock=rush_lock[1],
lock=rush_lock[1],
wait=rush_wait[1], wait=rush_wait[1],
fall=rush_fall[1], fall=rush_fall[1],
target=0, target=0,
reach=Event.master_reach_lunatic, reach=Event.master_reach_lunatic,
das=9,arr=3, das=9,arr=3,
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="secret8th",
bgm="secret8th",
}, },
{ {
_20G=true, _20G=true,
drop=0, drop=0,lock=death_lock[1],
lock=death_lock[1],
wait=death_wait[1], wait=death_wait[1],
fall=death_fall[1], fall=death_fall[1],
target=0, target=0,
reach=Event.master_reach_ultimate, reach=Event.master_reach_ultimate,
das=6,arr=1, das=6,arr=1,
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="secret7th",
bgm="secret7th",
}, },
}, },
classic={ classic={
@@ -820,287 +789,231 @@ defaultModeEnv={
freshLimit=0, freshLimit=0,
target=10, target=10,
reach=Event.classic_reach, reach=Event.classic_reach,
bg="rgb", bg="rgb",bgm="rockblock",
bgm="rockblock",
}, },
}, },
zen={ zen={
{ {
drop=1e99, drop=1e99,lock=1e99,
lock=1e99,
oncehold=false, oncehold=false,
target=200, target=200,
reach=Event_gameover.win, reach=Event_gameover.win,
bg="strap", bg="strap",bgm="infinite",
bgm="infinite",
}, },
}, },
infinite={ infinite={
{ {
drop=1e99, drop=1e99,lock=1e99,
lock=1e99,
oncehold=false, oncehold=false,
bg="glow", bg="glow",bgm="infinite",
bgm="infinite",
}, },
}, },
solo={ solo={
{ {
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="race",
bgm="race",
}, },
}, },
tsd={ tsd={
{ {
oncehold=false, oncehold=false,
drop=1e99, drop=1e99,lock=1e99,
lock=1e99,
freshLimit=15, freshLimit=15,
target=1, target=1,
reach=Event.tsd_reach, reach=Event.tsd_reach,
ospin=false, ospin=false,
bg="matrix", bg="matrix",bgm="reason",
bgm="reason",
}, },
{ {
drop=60, drop=60,lock=60,
lock=60,
freshLimit=15, freshLimit=15,
target=1, target=1,
reach=Event.tsd_reach, reach=Event.tsd_reach,
ospin=false, ospin=false,
bg="matrix", bg="matrix",bgm="reason",
bgm="reason",
}, },
}, },
blind={ blind={
{ {
drop=30, drop=30,lock=60,
lock=60,
freshLimit=15, freshLimit=15,
visible="time", visible="time",
bg="glow", bg="glow",bgm="newera",
bgm="newera",
}, },
{ {
drop=15, drop=15,lock=60,
lock=60,
freshLimit=15, freshLimit=15,
visible="fast", visible="fast",
freshLimit=10, freshLimit=10,
bg="glow", bg="glow",bgm="reason",
bgm="reason",
}, },
{ {
fall=10, fall=10,lock=60,
lock=60,
center=false, center=false,
ghost=false, ghost=false,
visible="none", visible="none",
freshLimit=15, freshLimit=15,
bg="rgb", bg="rgb",bgm="secret7th",
bgm="secret7th",
}, },
{ {
fall=5, fall=5,lock=60,
lock=60,
center=false, center=false,
visible="none", visible="none",
freshLimit=15, freshLimit=15,
bg="rgb", bg="rgb",bgm="secret8th",
bgm="secret8th",
}, },
{ {
fall=5, fall=5,lock=60,
lock=60,
block=false, block=false,
center=false, center=false,
ghost=false, ghost=false,
visible="none", visible="none",
freshLimit=15, freshLimit=15,
bg="rgb", bg="rgb",bgm="secret7th",
bgm="secret7th",
}, },
{ {
_20G=true, _20G=true,
drop=0, drop=0,lock=15,
lock=15,
wait=10, wait=10,
fall=15, fall=15,
visible="fast", visible="fast",
freshLimit=15, freshLimit=15,
arr=1, arr=1,
bg="game3", bg="game3",bgm="secret8th",
bgm="secret8th",
}, },
}, },
dig={ dig={
{ {
drop=60, drop=60,lock=120,
lock=120,
fall=20, fall=20,
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="push",
bgm="push",
}, },
{ {
drop=10, drop=10,lock=30,
lock=30,
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="secret7th",
bgm="secret7th",
}, },
}, },
survivor={ survivor={
{ {
drop=60, drop=60,lock=120,
lock=120,
fall=30, fall=30,
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="push",
bgm="push",
}, },
{ {
drop=30, drop=30,lock=60,
lock=60,
fall=20, fall=20,
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="newera",
bgm="newera",
}, },
{ {
drop=10, drop=10,lock=60,
lock=60,
fall=15, fall=15,
freshLimit=15, freshLimit=15,
bg="game2", bg="game2",bgm="secret8th",
bgm="secret8th",
}, },
{ {
drop=5, drop=5,lock=60,
lock=60,
fall=10, fall=10,
freshLimit=15, freshLimit=15,
bg="game3", bg="game3",bgm="secret7th",
bgm="secret7th",
}, },
{ {
drop=5, drop=5,lock=60,
lock=60,
fall=10, fall=10,
freshLimit=15, freshLimit=15,
bg="rgb", bg="rgb",bgm="secret7th",
bgm="secret7th",
}, },
}, },
tech={ tech={
{ {
oncehold=false, oncehold=false,
drop=1e99, drop=1e99,lock=1e99,
lock=1e99,
target=0, target=0,
reach=Event.tech_reach, reach=Event.tech_reach,
bg="matrix", bg="matrix",bgm="way",
bgm="way",
}, },
{ {
drop=30, drop=30,lock=60,
lock=60,
target=0, target=0,
reach=Event.tech_reach, reach=Event.tech_reach,
bg="matrix", bg="matrix",bgm="way",
bgm="way",
}, },
{ {
drop=15, drop=15,lock=60,
lock=60,
target=0, target=0,
reach=Event.tech_reach_hard, reach=Event.tech_reach_hard,
freshLimit=15, freshLimit=15,
bg="matrix", bg="matrix",bgm="way",
bgm="way",
}, },
{ {
drop=5, drop=5,lock=40,
lock=40,
target=0, target=0,
freshLimit=15, freshLimit=15,
reach=Event.tech_reach_hard, reach=Event.tech_reach_hard,
bg="matrix", bg="matrix",bgm="way",
bgm="way",
}, },
{ {
drop=1, drop=1,lock=40,
lock=40,
target=0, target=0,
freshLimit=15, freshLimit=15,
reach=Event.tech_reach_hard, reach=Event.tech_reach_hard,
bg="matrix", bg="matrix",bgm="secret7th",
bgm="secret7th",
}, },
}, },
pctrain={ pctrain={
{ {
next=4, next=4,
hold=false, hold=false,
drop=120, drop=120,lock=120,
lock=120,
fall=20, fall=20,
sequence="pc", sequence="pc",
target=0, target=0,
reach=Event.newPC, reach=Event.newPC,
ospin=false, ospin=false,
bg="rgb", bg="rgb",bgm="newera",
bgm="newera",
}, },
{ {
next=4, next=4,
hold=false, hold=false,
drop=60, drop=60,lock=60,
lock=60,
fall=20, fall=20,
sequence="pc", sequence="pc",
target=0, target=0,
freshLimit=15, freshLimit=15,
reach=Event.newPC, reach=Event.newPC,
ospin=false, ospin=false,
bg="rgb", bg="rgb",bgm="newera",
bgm="newera",
}, },
}, },
pcchallenge={ pcchallenge={
{ {
oncehold=false, oncehold=false,
drop=300, drop=300,lock=1e99,
lock=1e99,
target=100, target=100,
reach=Event_gameover.win, reach=Event_gameover.win,
ospin=false, ospin=false,
bg="rgb", bg="rgb",bgm="newera",
bgm="newera",
}, },
{ {
drop=60, drop=60,lock=120,
lock=120,
fall=10, fall=10,
target=100, target=100,
reach=Event_gameover.win, reach=Event_gameover.win,
freshLimit=15, freshLimit=15,
ospin=false, ospin=false,
bg="rgb", bg="rgb",bgm="infinite",
bgm="infinite",
}, },
{ {
drop=20, drop=20,lock=60,
lock=60,
fall=20, fall=20,
target=100, target=100,
reach=Event_gameover.win, reach=Event_gameover.win,
freshLimit=15, freshLimit=15,
ospin=false, ospin=false,
bg="rgb", bg="rgb",bgm="infinite",
bgm="infinite",
}, },
}, },
techmino41={ techmino41={
@@ -1112,8 +1025,7 @@ defaultModeEnv={
royaleRemain={30,20,15,10,5}, royaleRemain={30,20,15,10,5},
pushSpeed=2, pushSpeed=2,
freshLimit=15, freshLimit=15,
bg="game3", bg="game3",bgm="rockblock",
bgm="rockblock",
}, },
}, },
techmino99={ techmino99={
@@ -1125,46 +1037,44 @@ defaultModeEnv={
royaleRemain={75,50,35,20,10}, royaleRemain={75,50,35,20,10},
pushSpeed=2, pushSpeed=2,
freshLimit=15, freshLimit=15,
bg="game3", bg="game3",bgm="rockblock",
bgm="rockblock",
}, },
}, },
drought={ drought={
{ {
drop=20, drop=20,lock=60,
lock=60,
sequence="drought1", sequence="drought1",
target=100, target=100,
reach=Event_gameover.win, reach=Event_gameover.win,
ospin=false, ospin=false,
freshLimit=15, freshLimit=15,
bg="glow", bg="glow",bgm="reason",
bgm="reason",
}, },
{ {
drop=20, drop=20,lock=60,
lock=60,
sequence="drought2", sequence="drought2",
target=100, target=100,
reach=Event_gameover.win, reach=Event_gameover.win,
ospin=false, ospin=false,
freshLimit=15, freshLimit=15,
bg="glow", bg="glow",bgm="reason",
bgm="reason",
}, },
}, },
hotseat={ hotseat={
{ {
freshLimit=15, freshLimit=15,
bg="none", bg="none",bgm="way",
bgm="way",
}, },
}, },
custom={ custom={
{ {
bg="none",
bgm="reason",
reach=Event_gameover.win, reach=Event_gameover.win,
bg="none",bgm="reason",
},
{
Fkey=true,
reach=Event_gameover.win,
bg="none",bgm="reason",
}, },
}, },
} }

BIN
font.ttf

Binary file not shown.

View File

@@ -157,6 +157,7 @@ function loadGame(mode,level)
PTC.attack[1]:reset()PTC.attack[2]:reset()PTC.attack[3]:reset() PTC.attack[1]:reset()PTC.attack[2]:reset()PTC.attack[3]:reset()
drawableText.modeName:set(text.modeName[mode]) drawableText.modeName:set(text.modeName[mode])
drawableText.levelName:set(modeLevel[modeID[mode]][level]) drawableText.levelName:set(modeLevel[modeID[mode]][level])
needResetGameData=true
gotoScene("play","deck") gotoScene("play","deck")
end end
function resetGameData() function resetGameData()
@@ -375,6 +376,9 @@ function garbageRise(color,amount,pos)
end end
P.fieldBeneath=P.fieldBeneath+amount*30 P.fieldBeneath=P.fieldBeneath+amount*30
P.curY,P.y_img=P.curY+amount,P.y_img+amount P.curY,P.y_img=P.curY+amount,P.y_img+amount
for i=1,#P.clearing do
P.clearing[i]=P.clearing[i]+amount
end
if #P.field>40 then Event_gameover.lose()end if #P.field>40 then Event_gameover.lose()end
end end
function createBeam(S,R,lv)--Player id function createBeam(S,R,lv)--Player id
@@ -813,18 +817,17 @@ function drop()
P.b2b=P.b2b+20 P.b2b=P.b2b+20
end end
end end
csend=csend+(renATK[P.combo]or 4)
if #P.clearing==#P.field then if #P.clearing==#P.field then
showText(P,text.PC,"flicker",70,-80) showText(P,text.PC,"flicker",70,-80)
csend=csend+min(6+P.cstat.pc,10) csend=min(csend,4)+min(6+P.cstat.pc,10)
exblock=exblock+2 exblock=exblock+2
sendTime=sendTime+30 sendTime=sendTime+60
if P.cstat.row>4 then P.b2b=1200 end if P.cstat.row>4 then P.b2b=1200 end
P.cstat.pc=P.cstat.pc+1 P.cstat.pc=P.cstat.pc+1
P.lastClear=P.cur.id*10+5 P.lastClear=P.cur.id*10+5
SFX("perfectclear") SFX("perfectclear")
end end
csend=csend+(renATK[P.combo]or 4)
if P.combo>2 then if P.combo>2 then
showText(P,text.cmb[min(P.combo,20)],P.combo<10 and"appear"or"flicker",20+P.combo*3,60) showText(P,text.cmb[min(P.combo,20)],P.combo<10 and"appear"or"flicker",20+P.combo*3,60)
end end
@@ -1033,21 +1036,30 @@ act={
end end
end, end,
hold=function()hold()end, hold=function()hold()end,
swap=function() func=function()
if modeEnv.royaleMode then if modeEnv.Fkey then
for i=1,#P.keyPressing do if modeEnv.royaleMode then
if P.keyPressing[i]then for i=1,#P.keyPressing do
P.keyPressing[i]=false if P.keyPressing[i]then
P.keyPressing[i]=false
end
end
if setting.swap then
P.keyPressing[9]=true
else
changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
P.swappingAtkMode=30
end end
end end
if setting.swap then if curMode.id=="custom"and curMode.lv==2 and#P.field>0 then
P.keyPressing[9]=true for y=1,#P.field do
else for x=1,10 do
changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode) local a,b=preField[y][x],P.field[y][x]
P.swappingAtkMode=30 if a==0 and b>0 or a<8 and a~=b or a>7 and b==0 then return end
end
end
Event_gameover.win()
end end
else
P.keyPressing[9]=false
end end
end, end,
restart=function() restart=function()

BIN
image/virtualkey/func.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

View File

@@ -21,6 +21,7 @@ return{
win="胜利", win="胜利",
lose="失败", lose="失败",
pause="暂停",
custom="自定义游戏", custom="自定义游戏",
customOption={ customOption={
@@ -42,7 +43,7 @@ return{
wait=nil, wait=nil,
fall=nil, fall=nil,
next=nil, next=nil,
hold={"",""}, hold={"","","无限"},
sequence={"bag7","his4","随机"}, sequence={"bag7","his4","随机"},
visible={"可见","半隐","全隐","瞬隐"}, visible={"可见","半隐","全隐","瞬隐"},
target={10,20,40,100,200,500,1000,""}, target={10,20,40,100,200,500,1000,""},
@@ -52,12 +53,12 @@ return{
softdropdas="软降DAS:", softdropdas="软降DAS:",
softdroparr="软降ARR:", softdroparr="软降ARR:",
snapLevelName={"任意摆放","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"}, snapLevelName={"任意摆放","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"},
keyboard="键盘", keyboard="键盘",joystick="手柄",
joystick="手柄", space="空格",enter="回车",
setting2Help="方向键选择/翻页,回车修改,esc返回", setting2Help="方向键选择/翻页,回车修改,esc返回",
actName={"左移:","右移:","顺时针旋转:","逆时针旋转:","180°旋转","硬降:","软降:","暂存:","切换攻击:","重新开始:","左瞬移:","右瞬移:","软降到底:"}, actName={"左移:","右移:","顺时针旋转:","逆时针旋转:","180°旋转","硬降:","软降:","暂存:","功能键:","重新开始:","左瞬移:","右瞬移:","软降到底:"},
modeName={ modeName={
[0]="自定义", [0]="自定义",
"竞速","马拉松","大师","经典","","无尽","单挑","仅TSD","隐形","挖掘","生存","科研", "竞速","马拉松","大师","经典","","无尽","单挑","仅TSD","隐形","挖掘","生存","科研",
@@ -84,17 +85,26 @@ return{
hotseat="友尽模式", hotseat="友尽模式",
}, },
loadTip="真在加载,不只是动画!",
load={"加载材质ing","加载音乐ing","加载音效ing","加载完成",}, load={"加载材质ing","加载音乐ing","加载音效ing","加载完成",},
tips={ tips={
"The whole game is made by MrZ!", "不是动画,真的在加载!",
"Back to Back 10 combo Techrash PC!", "整个游戏都是MrZ完成的!",
"Techmino has a Nspire-CX edition!", "大满贯10连击消四全清!",
"Is B2B2B2B possible?", "<方块研究所>有一个Nspire-CX版本!",
"MrZ spin Penta!", "B2B2B2B存在吗?",
"MEGACMB!", "MEGACMB!",
"ALLSPIN!", "ALLSPIN!",
"O spin Techrash?" "O型回旋三清?",
"只用一个输入设备就可以游玩了",
"Miya:喵!",
"225238922,哔哩哔哩 干杯~",
"适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活",
"合群了就会消失,但是消失不代表没有意义",
"学会使用两个旋转键,三个更好",
"更小的DAS和ARR拥有更高的操作上限",
"注意到\"旋转\"到底对方块做了些什么吗?",
"20G是一套全新的游戏规则",
"请勿在上课时游玩本游戏!",
}, },
stat={ stat={
"游戏运行次数:", "游戏运行次数:",
@@ -145,7 +155,8 @@ return{
down="v", down="v",
left="<", left="<",
right=">", right=">",
start="开始", start1="消除开始",
start2="拼图开始",
draw="画图(D)", draw="画图(D)",
back="返回", back="返回",
}, },
@@ -167,7 +178,11 @@ return{
back="返回", back="返回",
}, },
play={ play={
back="返回", pause="暂停",
},
pause={
resume="继续",
quit="退出",
}, },
setting={ setting={
ghost=function()return setting.ghost and"阴影:开"or"阴影:关"end, ghost=function()return setting.ghost and"阴影:开"or"阴影:关"end,
@@ -175,6 +190,7 @@ return{
grid=function()return setting.grid and"网格:开"or"网格:关"end, grid=function()return setting.grid and"网格:开"or"网格:关"end,
swap=function()return setting.swap and"目标选择:组合键"or"目标选择:循环"end, swap=function()return setting.swap and"目标选择:组合键"or"目标选择:循环"end,
fxs=function()return setting.fxs and"特效:开"or"特效:关"end, fxs=function()return setting.fxs and"特效:开"or"特效:关"end,
bg=function()return setting.bg and"背景:开"or"背景:关"end,
dasD="-",dasU="+", dasD="-",dasU="+",
arrD="-",arrU="+", arrD="-",arrU="+",
sddasD="-",sddasU="+", sddasD="-",sddasU="+",
@@ -211,4 +227,4 @@ return{
path="打开存储目录", path="打开存储目录",
}, },
}, },
}--中文 }--中文

View File

@@ -21,6 +21,7 @@ return{
win="WIN", win="WIN",
lose="LOSE", lose="LOSE",
pause="PAUSE",
custom="Custom Game", custom="Custom Game",
customOption={ customOption={
@@ -42,7 +43,7 @@ return{
wait=nil, wait=nil,
fall=nil, fall=nil,
next=nil, next=nil,
hold={"ON","OFF"}, hold={"ON","OFF","FREE"},
sequence={"bag7","his4","random"}, sequence={"bag7","his4","random"},
visible={"normal","time","invisible","sudden"}, visible={"normal","time","invisible","sudden"},
target={10,20,40,100,200,500,1000,""}, target={10,20,40,100,200,500,1000,""},
@@ -52,12 +53,12 @@ return{
softdropdas="softdropDAS:", softdropdas="softdropDAS:",
softdroparr="softdropARR:", softdroparr="softdropARR:",
snapLevelName={"Free pos","Snap-10","Snap-20","Snap-40","Snap-60","Snap-80"}, snapLevelName={"Free pos","Snap-10","Snap-20","Snap-40","Snap-60","Snap-80"},
keyboard="Keyboard", keyboard="Keyboard",joystick="Joystick",
joystick="Joystick", space="Space",enter="Enter",
setting2Help="Arrowkey to select/change slot,Enter to change,Esc back", setting2Help="Arrowkey to select/change slot,Enter to change,Esc back",
actName={"Move Left:","Move Right:","Rotate Right:","Rotate Left:","Rotate Flip:","Hard Drop:","Soft Drop:","Hold:","Swap:","Restart:","Instant Left:","Instant Right:","Ins Down:"}, actName={"Move Left:","Move Right:","Rotate Right:","Rotate Left:","Rotate Flip:","Hard Drop:","Soft Drop:","Hold:","Function:","Restart:","Instant Left:","Instant Right:","Ins Down:"},
modeName={ modeName={
[0]="Custom", [0]="Custom",
"Sprint","Marathon","Master","Classic","Zen","Infinite","1v1","TSD-only","Blind","Dig","Survivor","Tech", "Sprint","Marathon","Master","Classic","Zen","Infinite","1v1","TSD-only","Blind","Dig","Survivor","Tech",
@@ -84,17 +85,26 @@ return{
hotseat="", hotseat="",
}, },
loadTip="not animation,real loading!",
load={"Loading textures","Loading BGM","Loading SFX","Finished",}, load={"Loading textures","Loading BGM","Loading SFX","Finished",},
tips={ tips={
"The whole game is made by MrZ!", "Not animation,real loading!",
"The WHOLE game is made by MrZ!",
"Back to Back 10 combo Techrash PC!", "Back to Back 10 combo Techrash PC!",
"Techmino has a Nspire-CX edition!", "Techmino has a Nspire-CX edition!",
"Is B2B2B2B possible?", "Is B2B2B2B possible?",
"MrZ spin Penta!",
"MEGACMB!", "MEGACMB!",
"ALLSPIN!", "ALLSPIN!",
"O spin Techrash?" "O spin triple?",
"You can play with any input device!",
"Miya:Nya!",
"225238922,Bilibili cheers!",
"Playing too much = taking drugs",
"Disappearing doesn't mean useless",
"Try to use two rotate button,three better",
"Small DAS&ARR can make you faster,if you can adapt to it",
"Have you noticed what does \"rotating\" do to block?",
"20G is a brand new game rule",
"Do not play this game in class!",
}, },
stat={ stat={
"Games run:", "Games run:",
@@ -110,7 +120,7 @@ return{
}, },
help={ help={
"I don't think you need \"help\".", "I don't think you need \"help\".",
"THIS IS ONLY A SMALL BLOCK GAME", "THIS IS ONLY A BLOCK GAME",
"But just play like playing TOP/C2/KOS/TGM3", "But just play like playing TOP/C2/KOS/TGM3",
"Game is not public now,so DO NOT DISTIRBUTE", "Game is not public now,so DO NOT DISTIRBUTE",
"", "",
@@ -145,7 +155,8 @@ return{
down="v", down="v",
left="<", left="<",
right=">", right=">",
start="Start", start1="Clear Start",
start2="Puzzle Start",
draw="Draw(D)", draw="Draw(D)",
back="Back", back="Back",
}, },
@@ -163,11 +174,15 @@ return{
gb4="", gb4="",
gb5="", gb5="",
erase="×", erase="×",
clear="clear", clear="Clear",
back="back", back="Back",
}, },
play={ play={
back="Back", pause="Pause",
},
pause={
resume="Resume",
quit="Quit",
}, },
setting={ setting={
ghost=function()return setting.ghost and"Ghost:ON"or"Ghost:OFF"end, ghost=function()return setting.ghost and"Ghost:ON"or"Ghost:OFF"end,
@@ -175,14 +190,11 @@ return{
grid=function()return setting.grid and"Grid:ON"or"Grid:OFF"end, grid=function()return setting.grid and"Grid:ON"or"Grid:OFF"end,
swap=function()return setting.swap and"Swap:comboKey"or"Swap:loop"end, swap=function()return setting.swap and"Swap:comboKey"or"Swap:loop"end,
fxs=function()return setting.fxs and"FXs:ON"or"FXs:OFF"end, fxs=function()return setting.fxs and"FXs:ON"or"FXs:OFF"end,
dasD="-", bg=function()return setting.bg and"BG:ON"or"BG:OFF"end,
dasU="+", dasD="-",dasU="+",
arrD="-", arrD="-",arrU="+",
arrU="+", sddasD="-",sddasU="+",
sddasD="-", sdarrD="-",sdarrU="+",
sddasU="+",
sdarrD="-",
sdarrU="+",
sfx=function()return setting.sfx and"SFX:ON"or"SFX:OFF"end, sfx=function()return setting.sfx and"SFX:ON"or"SFX:OFF"end,
bgm=function()return setting.bgm and"BGM:ON"or"BGM:OFF"end, bgm=function()return setting.bgm and"BGM:ON"or"BGM:OFF"end,
vib=function()return "Vibrate level:"..setting.vib end, vib=function()return "Vibrate level:"..setting.vib end,

157
list.lua
View File

@@ -1,7 +1,7 @@
local gc=love.graphics local gc=love.graphics
local sys=love.system local sys=love.system
local fs=love.filesystem local fs=love.filesystem
actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","swap","restart","insLeft","insRight","insDown"} actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","func","restart","insLeft","insRight","insDown"}
color={ color={
red={1,0,0}, red={1,0,0},
green={0,1,0}, green={0,1,0},
@@ -50,7 +50,8 @@ blockColor={
color.darkGreen, color.darkGreen,
} }
sfx={ sfx={
"button", "button","swipe",
"ready","start","win","fail","collect", "ready","start","win","fail","collect",
"move","rotate","rotatekick","hold", "move","rotate","rotatekick","hold",
"prerotate","prehold", "prerotate","prehold",
@@ -97,7 +98,7 @@ customRange={
wait={0,1,2,3,4,5,6,7,8,10,15,20,30,60}, wait={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
fall={0,1,2,3,4,5,6,7,8,10,15,20,30,60}, fall={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
next={0,1,2,3,4,5,6}, next={0,1,2,3,4,5,6},
hold={true,false}, hold={true,false,true},
sequence={"bag7","his4","rnd"}, sequence={"bag7","his4","rnd"},
visible={"show","time","fast","none"}, visible={"show","time","fast","none"},
target={10,20,40,100,200,500,1000,1e99}, target={10,20,40,100,200,500,1000,1e99},
@@ -105,9 +106,8 @@ customRange={
opponent={0,60,30,20,15,10,7,5,4,3,2,1}, opponent={0,60,30,20,15,10,7,5,4,3,2,1},
} }
snapLevelValue={1,10,20,40,60,80}
RCPB={10,33,200,33,105,5,105,60} RCPB={10,33,200,33,105,5,105,60}
snapLevelValue={1,10,20,40,60,80}
up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",} up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
percent0to5={[0]="0%","20%","40%","60%","80%","100%",} percent0to5={[0]="0%","20%","40%","60%","80%","100%",}
@@ -135,7 +135,7 @@ modeLevel={
techmino99={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"}, techmino99={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
drought={"NORMAL","MESS"}, drought={"NORMAL","MESS"},
hotseat={"2P","3P","4P",}, hotseat={"2P","3P","4P",},
custom={""}, custom={"Normal","Puzzle"},
} }
local t,f=true,false local t,f=true,false
blocks={ blocks={
@@ -160,7 +160,7 @@ local virtualkeySet={
{200,720-320,6400,80},--hardDrop {200,720-320,6400,80},--hardDrop
{200,720-80,6400,80},--softDrop {200,720-80,6400,80},--softDrop
{1280-320,720-200,6400,80},--hold {1280-320,720-200,6400,80},--hold
{1280-80,280,6400,80},--swap {1280-80,280,6400,80},--func
{80,280,6400,80},--restart {80,280,6400,80},--restart
},--Farter's set 3 },--Farter's set 3
{ {
@@ -172,7 +172,7 @@ local virtualkeySet={
{1280-200,720-320,6400,80},--hardDrop {1280-200,720-320,6400,80},--hardDrop
{1280-200,720-80,6400,80},--softDrop {1280-200,720-80,6400,80},--softDrop
{320,720-200,6400,80},--hold {320,720-200,6400,80},--hold
{80,280,6400,80},--swap {80,280,6400,80},--func
{1280-80,280,6400,80},--restart {1280-80,280,6400,80},--restart
},--Mirrored farter's set 3 },--Mirrored farter's set 3
{ {
@@ -184,7 +184,7 @@ local virtualkeySet={
{1280-80,720-80,6400,80},--hardDrop {1280-80,720-80,6400,80},--hardDrop
{1280-80,720-240,6400,80},--softDrop {1280-80,720-240,6400,80},--softDrop
{1280-80,720-400,6400,80},--hold {1280-80,720-400,6400,80},--hold
{80,360,6400,80},--swap {80,360,6400,80},--func
{80,80,6400,80},--restart {80,80,6400,80},--restart
},--Author's set },--Author's set
{ {
@@ -196,66 +196,67 @@ local virtualkeySet={
{1280-240,720-240,6400,80},--hardDrop {1280-240,720-240,6400,80},--hardDrop
{1280-240,720-80,6400,80},--softDrop {1280-240,720-80,6400,80},--softDrop
{1280-80,720-240,6400,80},--hold {1280-80,720-240,6400,80},--hold
{80,720-240,6400,80},--swap {80,720-240,6400,80},--func
{80,320,6400,80},--restart {80,320,6400,80},--restart
},--Keyboard set },--Keyboard set
{ {
{1200-360,40,0,40},--moveLeft {1200-360,40,1600,40},--moveLeft
{1200-280,40,0,40},--moveRight {1200-280,40,1600,40},--moveRight
{1200-520,40,0,40},--rotRight {1200-520,40,1600,40},--rotRight
{1200-600,40,0,40},--rotLeft {1200-600,40,1600,40},--rotLeft
{1200-440,40,0,40},--rotFlip {1200-440,40,1600,40},--rotFlip
{1200-40,40,0,40},--hardDrop {1200-40,40,1600,40},--hardDrop
{1200-120,40,0,40},--softDrop {1200-120,40,1600,40},--softDrop
{1200-200,40,0,40},--hold {1200-200,40,1600,40},--hold
{1200-680,40,0,40},--swap {1200-680,40,1600,40},--func
{1200-760,40,0,40},--restart {1200-760,40,1600,40},--restart
},--PC key feedback },--PC key feedback
} }
Buttons={ Buttons={
load={}, load={},
intro={}, intro={},
main={ main={
play={x=380,y=300,w=240,h=240,rgb=color.red,f=70,code=function()gotoScene("mode")end,down="stat",right="setting"}, play= {x=380,y=300,w=240,h=240,rgb=color.red,f=70,code=function()gotoScene("mode")end,down="stat",right="setting"},
setting={x=640,y=300,w=240,h=240,rgb=color.lightBlue,f=55,code=function()gotoScene("setting")end,down="stat",left="play",right="help"}, setting={x=640,y=300,w=240,h=240,rgb=color.lightBlue,f=55,code=function()gotoScene("setting")end,down="stat",left="play",right="help"},
stat={x=640,y=560,w=240,h=240,rgb=color.cyan,f=55,code=function()gotoScene("stat")end,up="setting",left="play",right="help"}, stat= {x=640,y=560,w=240,h=240,rgb=color.cyan,f=55,code=function()gotoScene("stat")end,up="setting",left="play",right="help"},
help={x=900,y=560,w=240,h=240,rgb=color.yellow,f=55,code=function()gotoScene("help")end,up="setting",left="stat",right="quit"}, help= {x=900,y=560,w=240,h=240,rgb=color.yellow,f=55,code=function()gotoScene("help")end,up="setting",left="stat",right="quit"},
quit={x=1180,y=620,w=120,h=120,rgb=color.lightGrey,f=50,code=function()gotoScene("quit")end,up="setting",left="help"}, quit= {x=1180,y=620,w=120,h=120,rgb=color.lightGrey,f=50,code=function()gotoScene("quit")end,up="setting",left="help"},
}, },
mode={ mode={
up= {x=1000, y=210,w=200,h=140,rgb=color.white, f=64, code=function()keyDown.mode("up")end, hide=function()return modeSel==1 end,}, up= {x=1000,y=210,w=200,h=140, rgb=color.white, f=64, code=function()keyDown.mode("up")end, hide=function()return modeSel==1 end,},
down= {x=1000, y=430,w=200,h=140,rgb=color.white, f=80, code=function()keyDown.mode("down")end, hide=function()return modeSel==#modeID end,}, down= {x=1000,y=430,w=200,h=140, rgb=color.white, f=80, code=function()keyDown.mode("down")end, hide=function()return modeSel==#modeID end,},
left= {x=190, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("left")end, hide=function()return levelSel==1 end,}, left= {x=190, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("left")end, hide=function()return levelSel==1 end,},
right={x=350, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("right")end,hide=function()return levelSel==#modeLevel[modeID[modeSel]]end,}, right= {x=350, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("right")end,hide=function()return levelSel==#modeLevel[modeID[modeSel]]end,},
start={x=1000, y=600,w=250,h=100,rgb=color.green, f=50, code=function() start={ x=1000, y=600,w=250,h=100, rgb=color.green, f=50, code=function()
loadGame(modeSel,levelSel)end}, loadGame(modeSel,levelSel)end},
custom={x=275, y=420,w=200,h=90, rgb=color.yellow, code=function()gotoScene("custom")end}, custom= {x=275, y=420,w=200,h=90, rgb=color.yellow, code=function()gotoScene("custom")end},
back= {x=640, y=630,w=230,h=90, rgb=color.white, f=45, code=back}, back= {x=640, y=630,w=230,h=90, rgb=color.white, f=45, code=back},
}, },
custom={ custom={
up= {x=1000, y=220,w=100,h=100,rgb=color.white, code=function()optSel=(optSel-2)%#customID+1 end}, up= {x=1000,y=220, w=100, h=100, rgb=color.white, code=function()optSel=(optSel-2)%#customID+1 end},
down= {x=1000, y=460,w=100,h=100,rgb=color.white,f=50, code=function()optSel=optSel%#customID+1 end}, down= {x=1000,y=460, w=100, h=100, rgb=color.white,f=50, code=function()optSel=optSel%#customID+1 end},
left= {x=880, y=340,w=100,h=100,rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=(customSel[k]-2)%#customRange[k]+1 end}, left= {x=880, y=340, w=100, h=100, rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=(customSel[k]-2)%#customRange[k]+1 end},
right={x=1120, y=340,w=100,h=100,rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=customSel[k]%#customRange[k]+1 end}, right= {x=1120,y=340, w=100, h=100, rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=customSel[k]%#customRange[k]+1 end},
start={x=1000, y=580,w=180,h=80, rgb=color.green, code=function()loadGame(0,1)end}, start1= {x=880, y=580, w=220, h=70, rgb=color.green, code=function()loadGame(0,1)end},
draw= {x=1000, y=90, w=190,h=85, rgb=color.cyan, code=function()gotoScene("draw")end}, start2= {x=1120,y=580, w=220, h=70, rgb=color.lightPurple, code=function()loadGame(0,2)end},
back= {x=640, y=630,w=180,h=60, rgb=color.white, code=back}, draw= {x=1000,y=90, w=190, h=85, rgb=color.cyan, code=function()gotoScene("draw")end},
back= {x=640, y=630 ,w=180, h=60, rgb=color.white, code=back},
}, },
draw={ draw={
block1= {x=840, y=80,w=120,h=120, f=65, rgb=color.red, code=function()pen=1 end}, block1= {x=840, y=80,w=120,h=120, f=65, rgb=color.red, code=function()pen=1 end},
block2= {x=980, y=80,w=120,h=120, f=65, rgb=color.green, code=function()pen=2 end}, block2= {x=980, y=80,w=120,h=120, f=65, rgb=color.green, code=function()pen=2 end},
block3= {x=1120, y=80,w=120,h=120, f=65, rgb=color.orange, code=function()pen=3 end}, block3= {x=1120,y=80,w=120,h=120, f=65, rgb=color.orange, code=function()pen=3 end},
block4= {x=840, y=220,w=120,h=120,f=65, rgb=color.blue, code=function()pen=4 end}, block4= {x=840, y=220,w=120,h=120, f=65, rgb=color.blue, code=function()pen=4 end},
block5= {x=980, y=220,w=120,h=120,f=65, rgb=color.magenta, code=function()pen=5 end}, block5= {x=980, y=220,w=120,h=120, f=65, rgb=color.magenta, code=function()pen=5 end},
block6= {x=1120, y=220,w=120,h=120,f=65, rgb=color.yellow, code=function()pen=6 end}, block6= {x=1120,y=220,w=120,h=120, f=65, rgb=color.yellow, code=function()pen=6 end},
block7= {x=840, y=360,w=120,h=120,f=65, rgb=color.cyan, code=function()pen=7 end}, block7= {x=840, y=360,w=120,h=120, f=65, rgb=color.cyan, code=function()pen=7 end},
gb1= {x=980, y=360,w=120,h=120,f=65, rgb=color.darkGrey, code=function()pen=9 end}, gb1= {x=980, y=360,w=120,h=120, f=65, rgb=color.darkGrey, code=function()pen=9 end},
gb2= {x=1120, y=360,w=120,h=120,f=65, rgb=color.grey, code=function()pen=10 end}, gb2= {x=1120,y=360,w=120,h=120, f=65, rgb=color.grey, code=function()pen=10 end},
gb3= {x=840, y=500,w=120,h=120,f=65, rgb=color.darkPurple, code=function()pen=11 end}, gb3= {x=840, y=500,w=120,h=120, f=65, rgb=color.darkPurple,code=function()pen=11 end},
gb4= {x=980, y=500,w=120,h=120,f=65, rgb=color.darkRed, code=function()pen=12 end}, gb4= {x=980, y=500,w=120,h=120, f=65, rgb=color.darkRed, code=function()pen=12 end},
gb5= {x=1120, y=500,w=120,h=120,f=65, rgb=color.darkGreen, code=function()pen=13 end}, gb5= {x=1120,y=500,w=120,h=120, f=65, rgb=color.darkGreen,code=function()pen=13 end},
erase= {x=840, y=640,w=120,h=120,f=70, rgb=color.grey, code=function()pen=0 end}, erase= {x=840, y=640,w=120,h=120, f=70, rgb=color.grey, code=function()pen=0 end},
clear= {x=1120, y=640,w=120,h=120, rgb=color.white, code=function() clear= {x=1120,y=640,w=120,h=120, rgb=color.white, code=function()
if clearSureTime>0 then if clearSureTime>0 then
for y=1,20 do for x=1,10 do preField[y][x]=0 end end for y=1,20 do for x=1,10 do preField[y][x]=0 end end
clearSureTime=0 clearSureTime=0
@@ -263,33 +264,39 @@ Buttons={
clearSureTime=50 clearSureTime=50
end end
end}, end},
back= {x=1235, y=45, w=80, h=80, f=35, rgb=color.white, code=back}, back= {x=1235,y=45,w=80,h=80, f=35, rgb=color.white, code=back},
}, },
play={ play={
back={x=1235,y=45,w=80,h=80,rgb=color.white,code=back,f=35}, pause={x=1235,y=45,w=80,h=80,rgb=color.white,f=30,code=pauseGame},
},
pause={
resume= {x=640,y=400,w=240,h=100, rgb=color.white,f=50,code=resumeGame},
quit= {x=640,y=550,w=240,h=100, rgb=color.white,f=50,code=back},
}, },
setting={--Normal setting setting={--Normal setting
ghost= {x=290, y=90, w=210,h=60, rgb=color.white, code=function()setting.ghost=not setting.ghost end,down="grid",right="center"}, ghost= {x=290, y=90, w=210, h=60, rgb=color.white,code=function()setting.ghost=not setting.ghost end,down="grid",right="center"},
center= {x=505, y=90, w=210,h=60, rgb=color.white, code=function()setting.center=not setting.center end,down="swap",left="ghost",right="sfx"}, center= {x=505, y=90, w=210, h=60, rgb=color.white,code=function()setting.center=not setting.center end,down="swap",left="ghost",right="sfx"},
grid= {x=290, y=160,w=210,h=60, rgb=color.white, code=function()setting.grid=not setting.grid end,up="ghost",down="fxs",right="swap"}, grid= {x=290, y=160, w=210, h=60, rgb=color.white,code=function()setting.grid=not setting.grid end,up="ghost",down="fxs",right="swap"},
swap= {x=505, y=160,w=210,h=60,f=28, rgb=color.white, code=function()setting.swap=not setting.swap end,up="center",down="arrD",left="grid",right="vib"}, swap= {x=505, y=160, w=210, h=60,f=28, rgb=color.white,code=function()setting.swap=not setting.swap end,up="center",down="bg",left="grid",right="vib"},
fxs= {x=290, y=230,w=210,h=60, rgb=color.white, code=function()setting.fxs=not setting.fxs end,up="grid",down="dasU",right="fullscreen"}, fxs= {x=290, y=230, w=210, h=60, rgb=color.white,code=function()setting.fxs=not setting.fxs end,up="grid",down="dasU",right="bg"},
dasD= {x=210, y=300,w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das-1)%31 end,up="fxs",down="sddasD",right="dasU"}, bg= {x=505, y=230, w=210, h=60, rgb=color.white,code=function()setting.bg=not setting.bg end,up="swap",down="arrD",right="fullscreen"},
dasU= {x=370, y=300,w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das+1)%31 end,up="fxs",down="sddasU",left="dasD",right="arrD"},
arrD= {x=425, y=300,w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr-1)%16 end,up="swap",down="sdarrD",left="dasU",right="arrU"},
arrU= {x=585, y=300,w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr+1)%16 end,up="swap",down="sdarrU",left="arrD",right="bgblock"},--3~6
sddasD= {x=210, y=370,w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas-1)%11 end,up="dasD",down="lang",right="sddasU"},
sddasU= {x=370, y=370,w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas+1)%11 end,up="dasU",down="lang",left="sddasD",right="sdarrD"},
sdarrD= {x=425, y=370,w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr-1)%4 end,up="arrD",down="lang",left="sddasU",right="sdarrU"},
sdarrU= {x=585, y=370,w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr+1)%4 end,up="arrU",down="lang",left="sdarrD",right="frame"},
sfx= {x=760,y=90, w=160,h=60,rgb=color.white, code=function()setting.sfx=not setting.sfx end,down="vib",left="center",right="bgm"}, dasD= {x=210, y=300, w=50, h=50, rgb=color.white,code=function()setting.das=(setting.das-1)%31 end,up="fxs",down="sddasD",right="dasU"},
bgm= {x=940,y=90, w=160,h=60,rgb=color.white, code=function() dasU= {x=370, y=300, w=50, h=50, rgb=color.white,code=function()setting.das=(setting.das+1)%31 end,up="fxs",down="sddasU",left="dasD",right="arrD"},
arrD= {x=425, y=300, w=50, h=50, rgb=color.white,code=function()setting.arr=(setting.arr-1)%16 end,up="bg",down="sdarrD",left="dasU",right="arrU"},
arrU= {x=585, y=300, w=50, h=50, rgb=color.white,code=function()setting.arr=(setting.arr+1)%16 end,up="bg",down="sdarrU",left="arrD",right="bgblock"},--3~6
sddasD= {x=210, y=370, w=50, h=50, rgb=color.white,code=function()setting.sddas=(setting.sddas-1)%11 end,up="dasD",down="lang",right="sddasU"},
sddasU= {x=370, y=370, w=50, h=50, rgb=color.white,code=function()setting.sddas=(setting.sddas+1)%11 end,up="dasU",down="lang",left="sddasD",right="sdarrD"},
sdarrD= {x=425, y=370, w=50, h=50, rgb=color.white,code=function()setting.sdarr=(setting.sdarr-1)%4 end,up="arrD",down="lang",left="sddasU",right="sdarrU"},
sdarrU= {x=585, y=370, w=50, h=50, rgb=color.white,code=function()setting.sdarr=(setting.sdarr+1)%4 end,up="arrU",down="lang",left="sdarrD",right="frame"},
sfx= {x=760,y=90, w=160, h=60, rgb=color.white,code=function()setting.sfx=not setting.sfx end,down="vib",left="center",right="bgm"},
bgm= {x=940,y=90, w=160, h=60, rgb=color.white,code=function()
BGM() BGM()
setting.bgm=not setting.bgm setting.bgm=not setting.bgm
BGM("blank") BGM("blank")
end,down="vib",left="sfx"}, end,down="vib",left="sfx"},
vib= {x=850,y=160, w=340,h=60,rgb=color.white, code=function() vib= {x=850,y=160, w=340,h=60,rgb=color.white, code=function()
setting.vib=(setting.vib+1)%5 setting.vib=(setting.vib+1)%5
VIB(2) VIB(2)
end,up="sfx",down="fullscreen",left="swap"}, end,up="sfx",down="fullscreen",left="swap"},
@@ -299,26 +306,26 @@ Buttons={
if not setting.fullscreen then if not setting.fullscreen then
love.resize(gc.getWidth(),gc.getHeight()) love.resize(gc.getWidth(),gc.getHeight())
end end
end,up="vib",down="bgblock",left="arrU"}, end,up="vib",down="bgblock",left="bg"},
bgblock= {x=850,y=300, w=340,h=60,rgb=color.white, code=function() bgblock={x=850,y=300, w=340,h=60,rgb=color.white, code=function()
setting.bgblock=not setting.bgblock setting.bgblock=not setting.bgblock
if not setting.bgblock then if not setting.bgblock then
for i=1,16 do for i=1,16 do
BGblockList[i].v=3*BGblockList[i].v BGblockList[i].v=3*BGblockList[i].v
end end
end end
end,up="fullscreen",down="frame",left="sdarrU"}, end,up="fullscreen",down="frame",left="arrU"},
frame= {x=850,y=370, w=340,h=60,rgb=color.white, code=function() frame= {x=850,y=370, w=340,h=60,rgb=color.white, code=function()
setting.frameMul=setting.frameMul+(setting.frameMul<50 and 5 or 10) setting.frameMul=setting.frameMul+(setting.frameMul<50 and 5 or 10)
if setting.frameMul>100 then setting.frameMul=25 end if setting.frameMul>100 then setting.frameMul=25 end
end,up="bgblock",down="control",left="sdarrU"}, end,up="bgblock",down="control",left="sdarrU"},
control= {x=850,y=440, w=340,h=60,rgb=color.green, code=function()gotoScene("setting2")end,up="frame",down="touch",left="lang"}, control={x=850,y=440, w=340,h=60,rgb=color.green, code=function()gotoScene("setting2")end,up="frame",down="touch",left="lang"},
touch= {x=850,y=510, w=340,h=60,rgb=color.yellow, code=function()gotoScene("setting3")end,up="control",down="back",left="lang"}, touch= {x=850,y=510, w=340,h=60,rgb=color.yellow,code=function()gotoScene("setting3")end,up="control",down="back",left="lang"},
lang= {x=280,y=510, w=200,h=60,rgb=color.red, code=function() lang= {x=280,y=510, w=200,h=60,rgb=color.red, code=function()
setting.lang=setting.lang%#langName+1 setting.lang=setting.lang%#langName+1
swapLanguage(setting.lang) swapLanguage(setting.lang)
end,up="sddasD",down="back",right="touch"}, end,up="sddasD",down="back",right="touch"},
back= {x=640,y=620, w=300,h=70,rgb=color.white, code=back,up="touch"}, back= {x=640,y=620, w=300,h=70,rgb=color.white, code=back,up="touch"},
}, },
setting2={--Control setting setting2={--Control setting
back={x=840,y=630,w=180,h=60,rgb=color.white,code=back}, back={x=840,y=630,w=180,h=60,rgb=color.white,code=back},

View File

@@ -4,6 +4,7 @@ local fs,sys=love.filesystem,love.system
int,ceil,abs,rnd,max,min,sin,cos,atan,pi=math.floor,math.ceil,math.abs,math.random,math.max,math.min,math.sin,math.cos,math.atan,math.pi int,ceil,abs,rnd,max,min,sin,cos,atan,pi=math.floor,math.ceil,math.abs,math.random,math.max,math.min,math.sin,math.cos,math.atan,math.pi
sub,gsub,find,format,byte,char=string.sub,string.gsub,string.find,string.format,string.byte,string.char sub,gsub,find,format,byte,char=string.sub,string.gsub,string.find,string.format,string.byte,string.char
ins,rem,sort=table.insert,table.remove,table.sort ins,rem,sort=table.insert,table.remove,table.sort
math.randomseed(os.time()*626)
null=function()end null=function()end
system=sys.getOS() system=sys.getOS()
@@ -40,17 +41,13 @@ gameEnv0={
drop=30,lock=45, drop=30,lock=45,
wait=0,fall=0, wait=0,fall=0,
next=6,hold=true,oncehold=true, next=6,hold=true,oncehold=true,
keepVisible=true,visible="show",
sequence="bag7", sequence="bag7",
block=true, block=true,
Fkey=false, keepVisible=true,visible="show",
ospin=true, Fkey=false,puzzle=false,ospin=true,
freshLimit=1e99, freshLimit=1e99,target=1e99,reach=null,
target=1e99, bg="none",bgm="race"
reach=null,
bg="none",
bgm="race"
} }
customSel={ customSel={
drop=20, drop=20,
@@ -74,7 +71,7 @@ end
setting={ setting={
ghost=true,center=true, ghost=true,center=true,
grid=false,swap=true, grid=false,swap=true,
fxs=true, fxs=true,bg=true,
das=10,arr=2, das=10,arr=2,
sddas=0,sdarr=2, sddas=0,sdarr=2,
@@ -144,7 +141,7 @@ virtualkey={
{1280-80,720-80,6400,80},--hardDrop {1280-80,720-80,6400,80},--hardDrop
{1280-80,720-240,6400,80},--softDrop {1280-80,720-240,6400,80},--softDrop
{1280-80,720-400,6400,80},--hold {1280-80,720-400,6400,80},--hold
{80,360,6400,80},--swap {80,360,6400,80},--func
{80,80,6400,80},--restart {80,80,6400,80},--restart
--[[ --[[
{x=0,y=0,r=0},--toLeft {x=0,y=0,r=0},--toLeft

View File

@@ -213,6 +213,9 @@ Pnt={BG={}}
function Pnt.BG.none() function Pnt.BG.none()
gc.clear(.15,.15,.15) gc.clear(.15,.15,.15)
end end
function Pnt.BG.grey()
gc.clear(.3,.3,.3)
end
function Pnt.BG.glow() function Pnt.BG.glow()
local t=((sin(Timer()*.5)+sin(Timer()*.7)+sin(Timer()*.9+1)+sin(Timer()*1.5)+sin(Timer()*2+3))+5)*.05 local t=((sin(Timer()*.5)+sin(Timer()*.7)+sin(Timer()*.9+1)+sin(Timer()*1.5)+sin(Timer()*2+3))+5)*.05
gc.clear(t,t,t) gc.clear(t,t,t)
@@ -262,8 +265,8 @@ function Pnt.load()
gc.rectangle("line",300,330,680,60,5) gc.rectangle("line",300,330,680,60,5)
setFont(40) setFont(40)
mStr(text.load[loading],640,335) mStr(text.load[loading],640,335)
setFont(25) setFont(30)
mStr(text.loadTip,640,400) mStr(loadTip,640,400)
end end
function Pnt.intro() function Pnt.intro()
gc.push() gc.push()
@@ -285,7 +288,7 @@ function Pnt.main()
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.draw(titleImage,300,30) gc.draw(titleImage,300,30)
setFont(30) setFont(30)
gc.print("Alpha V0.7.14",290,140) gc.print("Alpha V0.7.16",290,140)
gc.print(system,800,110) gc.print(system,800,110)
end end
function Pnt.mode() function Pnt.mode()
@@ -362,8 +365,8 @@ function Pnt.play()
P=players[p] P=players[p]
if P.small then if P.small then
gc.push("transform") gc.push("transform")
gc.translate(P.x,P.y)gc.scale(P.size)--Scale gc.translate(P.x,P.y)gc.scale(P.size)--Position
gc.setColor(0,0,0,.4)gc.rectangle("fill",0,0,60,120)--Black Background gc.setColor(0,0,0,.4)gc.rectangle("fill",0,0,60,120)--Background
gc.translate(0,P.fieldBeneath*.2) gc.translate(0,P.fieldBeneath*.2)
gc.setScissor(scr.x+P.x*scr.k,scr.y+P.y*scr.k,60*P.size*scr.k,120*P.size*scr.k) gc.setScissor(scr.x+P.x*scr.k,scr.y+P.y*scr.k,60*P.size*scr.k,120*P.size*scr.k)
gc.setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1) gc.setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1)
@@ -402,8 +405,8 @@ function Pnt.play()
gc.pop() gc.pop()
else else
gc.push("transform") gc.push("transform")
gc.translate(P.x,P.y)gc.scale(P.size) gc.translate(P.x,P.y)gc.scale(P.size)--Position
gc.setColor(0,0,0,.6)gc.rectangle("fill",0,0,600,690)--Black Background gc.setColor(0,0,0,.6)gc.rectangle("fill",0,0,600,690)--Background
gc.setLineWidth(7) gc.setLineWidth(7)
gc.setColor(frameColor[P.strength])gc.rectangle("line",0,0,600,690)--Big frame gc.setColor(frameColor[P.strength])gc.rectangle("line",0,0,600,690)--Big frame
gc.translate(150,70) gc.translate(150,70)
@@ -524,17 +527,17 @@ function Pnt.play()
--B2B indictator --B2B indictator
if P.gameEnv.hold then if P.gameEnv.hold then
gc.draw(drawableText.hold,-75-drawableText.hold:getWidth()*.5,-10)
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.draw(drawableText.hold,-124,-10)
for i=1,#P.hold.bk do for i=1,#P.hold.bk do
for j=1,#P.hold.bk[1] do for j=1,#P.hold.bk[1] do
if P.hold.bk[i][j]then if P.hold.bk[i][j]then
drawPixel(i+17.5-#P.hold.bk*.5,j-2.5-#P.hold.bk[1]*.5,P.holded and 9 or P.hold.color) drawPixel(i+17.5-#P.hold.bk*.5,j-2.7-#P.hold.bk[1]*.5,P.holded and 9 or P.hold.color)
end end
end end
end end
end--Hold end--Hold
gc.draw(drawableText.next,382-drawableText.next:getWidth()*.5,-10) gc.draw(drawableText.next,340,-10)
local N=1 local N=1
::L:: ::L::
local b,c=P.next[N].bk,P.next[N].color local b,c=P.next[N].bk,P.next[N].color
@@ -566,7 +569,7 @@ function Pnt.play()
gc.setColor(1,1,1) gc.setColor(1,1,1)
setFont(35) setFont(35)
mStr(format("%.2f",P.time),-75,520)--Draw time mStr(format("%.2f",P.time),-82,520)--Draw time
if mesDisp[curMode.id]then mesDisp[curMode.id]()end--Draw other message if mesDisp[curMode.id]then mesDisp[curMode.id]()end--Draw other message
gc.setColor(1,1,1) gc.setColor(1,1,1)
@@ -616,6 +619,20 @@ function Pnt.play()
end end
end end
end end
function Pnt.pause()
Pnt.play()
gc.setColor(0,0,0,pauseTime*.015)
gc.rectangle("fill",0,0,1280,720)
if system~="Android"then
setFont(40)
gc.setColor(1,1,1,pauseTime*.02)
mStr(text.space.."/"..text.enter,640,300)
gc.print("ESC",610,598)
end
setFont(120)
gc.setColor(1,1,1)
mStr(text.pause,640,140-12*(5-pauseTime*.1)^2)
end
function Pnt.setting() function Pnt.setting()
gc.setColor(1,1,1) gc.setColor(1,1,1)
setFont(35) setFont(35)

View File

@@ -1,3 +1,4 @@
local wd=love.window
local Timer=love.timer.getTime local Timer=love.timer.getTime
Tmr={} Tmr={}
@@ -274,4 +275,9 @@ function Tmr.play(dt)
end end
end end
if modeEnv.royaleMode and frame%120==0 then freshMostDangerous()end if modeEnv.royaleMode and frame%120==0 then freshMostDangerous()end
end
function Tmr.pause(dt)
if not wd.isMinimized()and pauseTime<50 then
pauseTime=pauseTime+1
end
end end

View File

@@ -1,3 +1,4 @@
local tm=love.timer
local gc=love.graphics local gc=love.graphics
local kb=love.keyboard local kb=love.keyboard
local setFont=setFont local setFont=setFont
@@ -169,6 +170,9 @@ function gotoScene(s,style)
draw=swap[style].d draw=swap[style].d
} }
Buttons.sel=nil Buttons.sel=nil
if style~="none"then
sysSFX("swipe")
end
end end
end end
local prevMenu={ local prevMenu={
@@ -186,6 +190,10 @@ local prevMenu={
clearTask("play") clearTask("play")
gotoScene(curMode.id~="custom"and"mode"or"custom","deck") gotoScene(curMode.id~="custom"and"mode"or"custom","deck")
end, end,
pause=function()
clearTask("play")
gotoScene(curMode.id~="custom"and"mode"or"custom","deck")
end,
help="main", help="main",
stat="main", stat="main",
setting=function() setting=function()
@@ -203,7 +211,22 @@ function back()
t() t()
end end
end end
function pauseGame()
if bgmPlaying then bgm[bgmPlaying]:pause()end
for i=1,#players.alive do
local l=players.alive[i].keyPressing
for j=1,#l do
if l[j]then
releaseKey(j,players.alive[i])
end
end
end
gotoScene("pause","none")
end
function resumeGame()
if bgmPlaying then bgm[bgmPlaying]:play()end
gotoScene("play","fade")
end
local dataOpt={ local dataOpt={
"run", "run",
"game", "game",
@@ -217,21 +240,17 @@ local dataOpt={
"spin", "spin",
} }
local saveOpt={ local saveOpt={
"ghost","center",
"grid","swap",
"fxs","bg",
"das","arr",
"sddas","sdarr",
"lang", "lang",
"ghost",
"center", "sfx","bgm",
"grid",
"swap",
"sfx",
"bgm",
"vib", "vib",
"fxs",
"das",
"arr",
"sddas",
"sdarr",
"fullscreen", "fullscreen",
"bgblock", "bgblock",
"virtualkeyAlpha", "virtualkeyAlpha",
@@ -326,7 +345,7 @@ function loadSetting()
elseif t=="das"or t=="arr"or t=="sddas"or t=="sdarr"then elseif t=="das"or t=="arr"or t=="sddas"or t=="sdarr"then
v=toN(v)if not v or v<0 then v=0 end v=toN(v)if not v or v<0 then v=0 end
setting[t]=int(v) setting[t]=int(v)
elseif t=="ghost"or t=="center"or t=="grid"or t=="swap"or t=="fxs"then elseif t=="ghost"or t=="center"or t=="grid"or t=="swap"or t=="fxs"or t=="bg"then
setting[t]=v=="true" setting[t]=v=="true"
elseif t=="lang"then elseif t=="lang"then
setting[t]=toN(v:match("[12]"))or 1 setting[t]=toN(v:match("[12]"))or 1