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