Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd5fac4e8a | ||
|
|
1641440886 |
Binary file not shown.
BIN
BGM/blank.ogg
BIN
BGM/blank.ogg
Binary file not shown.
BIN
BGM/cruelty.ogg
BIN
BGM/cruelty.ogg
Binary file not shown.
BIN
BGM/end.ogg
BIN
BGM/end.ogg
Binary file not shown.
BIN
BGM/final.ogg
BIN
BGM/final.ogg
Binary file not shown.
BIN
BGM/infinite.ogg
BIN
BGM/infinite.ogg
Binary file not shown.
BIN
BGM/newera.ogg
BIN
BGM/newera.ogg
Binary file not shown.
BIN
BGM/push.ogg
BIN
BGM/push.ogg
Binary file not shown.
BIN
BGM/race.ogg
BIN
BGM/race.ogg
Binary file not shown.
BIN
BGM/reason.ogg
BIN
BGM/reason.ogg
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
BGM/way.ogg
BIN
BGM/way.ogg
Binary file not shown.
@@ -108,7 +108,6 @@ function switch:draw()
|
||||
--frame
|
||||
local t=self.text
|
||||
if t then
|
||||
if type(t)=="function"then t=t()end
|
||||
gc.setColor(1,1,1)
|
||||
setFont(self.font)
|
||||
gc.printf(t,x-412,y+20-self.font*.7,400,"right")
|
||||
|
||||
4
conf.lua
4
conf.lua
@@ -1,5 +1,5 @@
|
||||
math.randomseed(os.time())
|
||||
gameVersion="Alpha V0.7.30"
|
||||
gameVersion="Alpha V0.7.32"
|
||||
function love.conf(t)
|
||||
t.identity="Techmino"--Save directory name
|
||||
t.version="11.1"
|
||||
@@ -23,7 +23,7 @@ function love.conf(t)
|
||||
W.resizable=1
|
||||
W.fullscreentype="desktop"--"exclusive"
|
||||
W.fullscreen=X
|
||||
W.vsync=X--0→∞fps
|
||||
W.vsync=0--0→∞fps
|
||||
W.msaa=X--The number of samples to use with multi-sampled antialiasing (number)
|
||||
W.depth=X--Bits per sample in the depth buffer
|
||||
W.stencil=1--The number of bits per sample in the stencil buffer
|
||||
|
||||
914
dataList.lua
914
dataList.lua
File diff suppressed because it is too large
Load Diff
@@ -19,8 +19,9 @@ setting={
|
||||
skin=1,
|
||||
--graphic
|
||||
|
||||
sfx=8,bgm=6,
|
||||
sfx=10,bgm=7,
|
||||
vib=3,voc=0,
|
||||
stereo=6,
|
||||
--sound
|
||||
|
||||
keyMap={
|
||||
@@ -33,6 +34,7 @@ setting={
|
||||
},
|
||||
VKSwitch=true,
|
||||
VKTrack=true,--If tracked
|
||||
VKDodge=false,--If repel
|
||||
VKTchW=3,--Touch Weight
|
||||
VKCurW=4,--CurPos Weight
|
||||
VKIcon=true,
|
||||
|
||||
@@ -192,7 +192,7 @@ return{
|
||||
warning="禁 止 私 自 传 播",
|
||||
WidgetText={
|
||||
main={
|
||||
lang="中文",
|
||||
lang="文-Lang",
|
||||
qplay="快速开始",
|
||||
play="开始",
|
||||
setting="设置",
|
||||
@@ -256,6 +256,7 @@ return{
|
||||
pause={
|
||||
resume= "继续",
|
||||
restart="重新开始",
|
||||
setting="设置",
|
||||
quit= "退出",
|
||||
},
|
||||
setting_game={
|
||||
@@ -324,6 +325,7 @@ return{
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="自动避让",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
|
||||
@@ -192,7 +192,7 @@ return{
|
||||
warning="禁 止 私 自 传 播",
|
||||
WidgetText={
|
||||
main={
|
||||
lang="全中文",
|
||||
lang="文-Lang",
|
||||
qplay="快速开始",
|
||||
play="开始",
|
||||
setting="设置",
|
||||
@@ -256,6 +256,7 @@ return{
|
||||
pause={
|
||||
resume= "继续",
|
||||
restart="重新开始",
|
||||
setting="设置",
|
||||
quit= "退出",
|
||||
},
|
||||
|
||||
@@ -325,6 +326,7 @@ return{
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="自动避让",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
@@ -342,4 +344,4 @@ return{
|
||||
back=BK,
|
||||
},
|
||||
},
|
||||
}--部分译文
|
||||
}
|
||||
@@ -191,7 +191,7 @@ Lib used:
|
||||
warning="DO NOT DISTRIBUTE",
|
||||
WidgetText={
|
||||
main={
|
||||
lang="English",
|
||||
lang="文-Lang",
|
||||
qplay="Qplay",
|
||||
play="Play",
|
||||
setting="Settings",
|
||||
@@ -255,6 +255,7 @@ Lib used:
|
||||
pause={
|
||||
resume="Resume",
|
||||
restart="Restart",
|
||||
setting="Setting",
|
||||
quit="Quit",
|
||||
},
|
||||
setting_game={
|
||||
@@ -323,6 +324,7 @@ Lib used:
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="Auto Dodge",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
|
||||
20
list.lua
20
list.lua
@@ -57,17 +57,20 @@ blockColor={
|
||||
}
|
||||
sfx={
|
||||
"welcome",
|
||||
"error","error_long",
|
||||
--Stereo sfxs
|
||||
"button","swipe",
|
||||
"ready","start","win","fail","collect",
|
||||
"move","rotate","rotatekick","hold",
|
||||
"prerotate","prehold",
|
||||
"lock","drop","fall",
|
||||
"error","error_long","reach",
|
||||
"reach",
|
||||
"ren_1","ren_2","ren_3","ren_4","ren_5","ren_6","ren_7","ren_8","ren_9","ren_10","ren_11","ren_mega",
|
||||
"clear_1","clear_2","clear_3","clear_4",
|
||||
"spin_0","spin_1","spin_2","spin_3",
|
||||
"emit","blip_1","blip_2",
|
||||
"perfectclear",
|
||||
--mono sfxs
|
||||
}
|
||||
bgm={
|
||||
"blank",
|
||||
@@ -163,7 +166,7 @@ customRange={
|
||||
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",}
|
||||
|
||||
sectionName={"M7","M8","M9","M","MK","MV","MO","MM","GM"}
|
||||
modeID={
|
||||
[0]="custom",
|
||||
"sprint","marathon","master","classic","zen","infinite","solo","round","tsd","blind",
|
||||
@@ -330,7 +333,7 @@ Widget={
|
||||
back= newButton(640, 630,230,90, color.white, 45,scene.back),
|
||||
},
|
||||
music={
|
||||
bgm= newSlider(760, 80,400,8,40,nil,function()return setting.bgm end,function(i)setting.bgm=i;BGM(bgmPlaying)end),
|
||||
bgm= newSlider(760, 80,400,10,40,nil,function()return setting.bgm end,function(i)setting.bgm=i;BGM(bgmPlaying)end),
|
||||
up= newButton(1100, 200,120,120,color.white,60,function()love.keypressed("up")end),
|
||||
play= newButton(1100, 340,120,120,color.white,40,function()love.keypressed("space")end,function()return setting.bgm==0 end),
|
||||
down= newButton(1100, 480,120,120,color.white,60,function()love.keypressed("down")end),
|
||||
@@ -380,6 +383,10 @@ Widget={
|
||||
resetGameData()
|
||||
scene.swapTo("play","none")
|
||||
end),
|
||||
setting=newButton(1150,80,200,100,color.yellow,45,function()
|
||||
scene.push()
|
||||
scene.swapTo("setting_sound")
|
||||
end),
|
||||
quit= newButton(640,600,240,100,color.white,50,scene.back),
|
||||
},
|
||||
setting_game={
|
||||
@@ -445,10 +452,10 @@ Widget={
|
||||
setting_sound={
|
||||
game= newButton(200,80,240,80,color.lightGreen,40,function()scene.swapTo("setting_game")end, nil,"graphic"),
|
||||
graphic=newButton(1080,80,240,80,color.lightGreen,40,function()scene.swapTo("setting_graphic")end, nil,"sfx"),
|
||||
sfx=newSlider(180,250,400,8,40,function()SFX("blip_1")end, function()return setting.sfx end,function(i)setting.sfx=i end,nil,"bgm"),
|
||||
bgm=newSlider(750,250,400,8,40,function()BGM(bgmPlaying or"blank")end, function()return setting.bgm end,function(i)setting.bgm=i end,nil,"vib"),
|
||||
sfx=newSlider(180,250,400,10,40,function()SFX("blip_1")end, function()return setting.sfx end,function(i)setting.sfx=i end,nil,"bgm"),
|
||||
bgm=newSlider(750,250,400,10,40,function()BGM(bgmPlaying or"blank")end, function()return setting.bgm end,function(i)setting.bgm=i end,nil,"vib"),
|
||||
vib=newSlider(180,440,400,5,40,function()VIB(1)end, function()return setting.vib end,function(i)setting.vib=i end,nil,"voc"),
|
||||
voc=newSlider(750,440,400,8,40,function()VOICE("nya")end, function()return setting.voc end,function(i)setting.voc=i end,nil,"back"),
|
||||
voc=newSlider(750,440,400,10,40,function()VOICE("nya")end, function()return setting.voc end,function(i)setting.voc=i end,nil,"back"),
|
||||
back=newButton(1160,600,160,160,color.white,55,scene.back,nil,"game"),
|
||||
},
|
||||
setting_key={
|
||||
@@ -527,6 +534,7 @@ Widget={
|
||||
back= newButton(1080,600,240,80,color.white,50,scene.back),
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge= newSwitch(400,200, 40,function()return setting.VKDodge end,function()setting.VKDodge=not setting.VKDodge end),
|
||||
VKTchW= newSlider(140,310,1000,10,40,nil,function()return setting.VKTchW end,function(i)setting.VKTchW=i;setting.VKCurW=math.max(setting.VKCurW,i)end),
|
||||
VKCurW= newSlider(140,370,1000,10,40,nil,function()return setting.VKCurW end,function(i)setting.VKCurW=i;setting.VKTchW=math.min(setting.VKTchW,i)end),
|
||||
back= newButton(1080,600,240,80,color.white,50,scene.back),
|
||||
|
||||
30
main.lua
30
main.lua
@@ -121,13 +121,15 @@ local function getNewBlock()
|
||||
return t
|
||||
end
|
||||
local function onVirtualkey(x,y)
|
||||
local d1,nearest,distance
|
||||
local dist,nearest=1e15
|
||||
for K=1,#virtualkey do
|
||||
local b=virtualkey[K]
|
||||
d1=(x-b.x)^2+(y-b.y)^2
|
||||
if d1<b.r^2 then
|
||||
if not nearest or d1<distance then
|
||||
nearest,distance=K,d1
|
||||
if b.ava then
|
||||
local d1=(x-b.x)^2+(y-b.y)^2
|
||||
if d1<b.r^2 then
|
||||
if d1<dist then
|
||||
nearest,dist=K,d1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -497,15 +499,17 @@ function touchDown.play(id,x,y)
|
||||
players[1]:pressKey(t)
|
||||
if setting.VKTrack then
|
||||
local B=virtualkey[t]
|
||||
for i=1,#virtualkey do
|
||||
local b=virtualkey[i]
|
||||
local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5--碰撞深度(负数=间隔距离)
|
||||
if d>0 then
|
||||
b.x=b.x+(b.x-B.x)*d*b.r*.00005
|
||||
b.y=b.y+(b.y-B.y)*d*b.r*.00005
|
||||
--按钮软碰撞(做不来hhh随便做一个,效果还行!)
|
||||
if setting.VKDodge then
|
||||
for i=1,#virtualkey do
|
||||
local b=virtualkey[i]
|
||||
local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5--碰撞深度(负数=间隔距离)
|
||||
if d>0 then
|
||||
b.x=b.x+(b.x-B.x)*d*b.r*.00005
|
||||
b.y=b.y+(b.y-B.y)*d*b.r*.00005
|
||||
end
|
||||
end
|
||||
end
|
||||
--按钮软碰撞(做不来hhh随便做一个,效果还行!)
|
||||
local O=VK_org[t]
|
||||
local _FW,_CW=setting.VKTchW*.1,1-setting.VKCurW*.1
|
||||
local _OW=1-_FW-_CW
|
||||
@@ -930,7 +934,7 @@ function love.update(dt)
|
||||
end
|
||||
end
|
||||
Q[1]=L[n]
|
||||
Q[1]:setVolume(setting.voc*.125)
|
||||
Q[1]:setVolume(setting.voc*.1)
|
||||
Q[1]:play()
|
||||
--load voice with string
|
||||
end
|
||||
|
||||
117
player.lua
117
player.lua
@@ -11,6 +11,7 @@ local scr=scr--screen camera
|
||||
local gameEnv0={
|
||||
das=10,arr=2,
|
||||
sddas=2,sdarr=2,
|
||||
quickR=true,swap=true,
|
||||
ghost=true,center=true,
|
||||
grid=false,swap=true,
|
||||
_20G=false,bone=false,
|
||||
@@ -286,9 +287,8 @@ local mesDisp={
|
||||
classic=function(P)
|
||||
setFont(80)
|
||||
local r=P.gameEnv.target*.1
|
||||
mStr(r<11 and 19+r or r==11 and"00"or r==12 and"0a"or format("%x",r*10-110),-82,210)
|
||||
setFont(20)
|
||||
mStr("speed level",-82,290)
|
||||
mStr(r<11 and 18 or r<22 and r+8 or r==22 and"00"or r==23 and"0a"or format("%x",r*10-220),-82,210)
|
||||
mDraw(drawableText.speedLV,-82,290)
|
||||
setFont(50)
|
||||
mStr(P.stat.row,-82,320)
|
||||
mStr(P.gameEnv.target,-82,370)
|
||||
@@ -302,24 +302,21 @@ local mesDisp={
|
||||
setFont(50)
|
||||
mStr(P.stat.atk,-82,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-82,420)
|
||||
setFont(20)
|
||||
mStr("Attack",-82,363)
|
||||
mStr("Efficiency",-82,475)
|
||||
mDraw(drawableText.atk,-82,363)
|
||||
mDraw(drawableText.eff,-82,475)
|
||||
end,
|
||||
tsd=function(P)
|
||||
setFont(35)
|
||||
mStr("TSD",-82,407)
|
||||
setFont(80)
|
||||
mStr(P.modeData.event,-82,330)
|
||||
mDraw(drawableText.tsd,-82,407)
|
||||
end,
|
||||
blind=function(P)
|
||||
setFont(25)
|
||||
mStr("Lines",-82,300)
|
||||
mStr("Techrash",-82,420)
|
||||
mDraw(drawableText.line,-82,300)
|
||||
mDraw(drawableText.techrash,-82,420)
|
||||
if curMode.lv==6 then
|
||||
mStr("Point",-82,170)
|
||||
mDraw(drawableText.grade,-82,170)
|
||||
setFont(60)
|
||||
mStr(P.modeData.point*.1,-82,110)
|
||||
mStr(P.modeData.event,-82,110)
|
||||
end
|
||||
setFont(80)
|
||||
mStr(P.stat.row,-82,220)
|
||||
@@ -328,57 +325,51 @@ local mesDisp={
|
||||
dig=function(P)
|
||||
setFont(70)
|
||||
mStr(P.modeData.event,-82,310)
|
||||
setFont(30)
|
||||
mStr("Wave",-82,375)
|
||||
mDraw(drawableText.wave,-82,375)
|
||||
end,
|
||||
survivor=function(P)
|
||||
setFont(70)
|
||||
mStr(P.modeData.event,-82,310)
|
||||
setFont(30)
|
||||
mStr("Wave",-82,375)
|
||||
mDraw(drawableText.wave,-82,375)
|
||||
end,
|
||||
defender=function(P)
|
||||
setFont(60)
|
||||
mStr(P.modeData.point,-82,315)
|
||||
setFont(30)
|
||||
mStr("RPM",-82,375)
|
||||
mDraw(drawableText.rpm,-82,375)
|
||||
end,
|
||||
attacker=function(P)
|
||||
setFont(60)
|
||||
mStr(P.modeData.point,-82,315)
|
||||
setFont(30)
|
||||
mStr("RPM",-82,375)
|
||||
mDraw(drawableText.rpm,-82,375)
|
||||
end,
|
||||
tech=function(P)
|
||||
setFont(50)
|
||||
mStr(P.stat.atk,-82,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-82,420)
|
||||
setFont(20)
|
||||
mStr("Attack",-82,363)
|
||||
mStr("Efficiency",-82,475)
|
||||
mDraw(drawableText.atk,-82,363)
|
||||
mDraw(drawableText.eff,-82,475)
|
||||
end,
|
||||
c4wtrain=function(P)
|
||||
setFont(50)
|
||||
mStr(max(100-P.stat.row,0),-82,220)
|
||||
mStr(P.combo,-82,310)
|
||||
mStr(P.modeData.point,-82,400)
|
||||
setFont(20)
|
||||
mStr("combo",-82,358)
|
||||
mStr("max combo",-82,450)
|
||||
mDraw(drawableText.combo,-82,358)
|
||||
mDraw(drawableText.mxcmb,-82,450)
|
||||
end,
|
||||
pctrain=function(P)
|
||||
setFont(22)
|
||||
mStr("Perfect Clear",-82,412)
|
||||
setFont(80)
|
||||
mStr(P.stat.pc,-82,330)
|
||||
mDraw(drawableText.pc,-82,412)
|
||||
end,
|
||||
pcchallenge=function(P)
|
||||
setFont(22)
|
||||
mStr("Perfect Clear",-82,432)
|
||||
setFont(80)
|
||||
mStr(P.stat.pc,-82,350)
|
||||
setFont(50)
|
||||
mStr(max(100-P.stat.row,0),-82,250)
|
||||
|
||||
setFont(80)
|
||||
mStr(P.stat.pc,-82,350)
|
||||
mDraw(drawableText.pc,-82,432)
|
||||
|
||||
gc.setColor(.5,.5,.5)
|
||||
if frame>179 then
|
||||
local y=72*(7-(P.stat.piece+(P.hd.id>0 and 2 or 1))%7)-36
|
||||
@@ -389,8 +380,8 @@ local mesDisp={
|
||||
setFont(40)
|
||||
mStr(#players.alive.."/49",-82,175)
|
||||
mStr(P.ko,-70,215)
|
||||
gc.draw(drawableText.ko,-127,225)
|
||||
setFont(25)
|
||||
gc.print("KO",-127,225)
|
||||
gc.setColor(1,.5,0,.6)
|
||||
gc.print(P.badge,-47,227)
|
||||
gc.setColor(1,1,1)
|
||||
@@ -404,8 +395,8 @@ local mesDisp={
|
||||
setFont(40)
|
||||
mStr(#players.alive.."/99",-82,175)
|
||||
mStr(P.ko,-70,215)
|
||||
gc.draw(drawableText.ko,-127,225)
|
||||
setFont(25)
|
||||
gc.print("KO",-127,225)
|
||||
gc.setColor(1,.5,0,.6)
|
||||
gc.print(P.badge,-47,227)
|
||||
gc.setColor(1,1,1)
|
||||
@@ -421,10 +412,9 @@ local mesDisp={
|
||||
end,
|
||||
custom=function(P)
|
||||
if P.gameEnv.puzzle or P.gameEnv.target>1e10 then
|
||||
setFont(25)
|
||||
mStr("Lines",-82,290)
|
||||
setFont(60)
|
||||
mStr(P.stat.row,-82,225)
|
||||
mDraw(drawableText.line,-82,290)
|
||||
else
|
||||
setFont(60)
|
||||
mStr(max(P.gameEnv.target-P.stat.row,0),-82,240)
|
||||
@@ -554,7 +544,7 @@ function newDemoPlayer(id,x,y,size)
|
||||
P.keyPressing={}for i=1,12 do P.keyPressing[i]=false end
|
||||
P.moving,P.downing=0,0
|
||||
P.waiting,P.falling=-1,-1
|
||||
P.clearing={}
|
||||
P.clearing,P.cleared={},{}
|
||||
P.combo,P.b2b=0,0
|
||||
P.fieldBeneath=0
|
||||
P.shade={}
|
||||
@@ -703,7 +693,7 @@ function newPlayer(id,x,y,size,AIdata)
|
||||
P.keyPressing={}for i=1,12 do P.keyPressing[i]=false end
|
||||
P.moving,P.downing=0,0
|
||||
P.waiting,P.falling=-1,-1
|
||||
P.clearing={}
|
||||
P.clearing,P.cleared={},{}
|
||||
P.combo,P.b2b=0,0
|
||||
P.fieldBeneath=0
|
||||
|
||||
@@ -804,9 +794,7 @@ function player.update(P,dt)
|
||||
else
|
||||
local L=#P.clearing
|
||||
if P.human and P.gameEnv.fall>0 and #P.field+L>P.clearing[L]then SFX("fall")end
|
||||
for i=1,L do
|
||||
P.clearing[i]=nil
|
||||
end
|
||||
P.clearing,P.cleared={},{}
|
||||
end
|
||||
end
|
||||
if not P.control then goto stop end
|
||||
@@ -865,9 +853,7 @@ function player.update(P,dt)
|
||||
else
|
||||
local L=#P.clearing
|
||||
if P.human and P.gameEnv.fall>0 and #P.field+L>P.clearing[L]then SFX("fall")end
|
||||
for i=1,L do
|
||||
P.clearing[i]=nil
|
||||
end
|
||||
P.clearing,P.cleared={},{}
|
||||
end
|
||||
end::stop::
|
||||
if P.endCounter<40 then
|
||||
@@ -1383,6 +1369,7 @@ local function checkrow(P,start,height)--(cy,r)
|
||||
for i=1,height do
|
||||
if ckfull(P,h)then
|
||||
ins(P.clearing,h)
|
||||
ins(P.cleared,h+c)
|
||||
removeRow(P.field,h)
|
||||
removeRow(P.visTime,h)
|
||||
c=c+1
|
||||
@@ -1410,6 +1397,9 @@ local function solid(P,x,y)
|
||||
if y>#P.field then return false end
|
||||
return P.field[y][x]>0
|
||||
end
|
||||
local function getBlockDirection(P)
|
||||
return(P.curX+P.sc[2]-6.5)*.15
|
||||
end
|
||||
|
||||
function player:fineError(rate)
|
||||
self.stat.extraPiece=self.stat.extraPiece+1
|
||||
@@ -1697,7 +1687,7 @@ function player:spin(d,ifpre)
|
||||
self.spinLast=2
|
||||
self.stat.rotate=self.stat.rotate+1
|
||||
self:freshgho()
|
||||
SFX("rotatekick")
|
||||
SFX("rotatekick",nil,getBlockDirection(self))
|
||||
return
|
||||
end
|
||||
else
|
||||
@@ -1705,7 +1695,7 @@ function player:spin(d,ifpre)
|
||||
end
|
||||
end
|
||||
if self.human then
|
||||
SFX(ifpre and"prerotate"or"rotate")
|
||||
SFX(ifpre and"prerotate"or"rotate",nil,getBlockDirection(self))
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -1736,9 +1726,8 @@ function player:spin(d,ifpre)
|
||||
if not ifpre then self:freshgho()end
|
||||
if self.gameEnv.easyFresh or y0>self.curY then self:freshLockDelay()end
|
||||
if self.human then
|
||||
SFX(ifpre and"prerotate"or ifoverlap(self,self.cur.bk,self.curX,self.curY+1)and ifoverlap(self,self.cur.bk,self.curX-1,self.curY)and ifoverlap(self,self.cur.bk,self.curX+1,self.curY)and"rotatekick"or"rotate")
|
||||
SFX(ifpre and"prerotate"or ifoverlap(self,self.cur.bk,self.curX,self.curY+1)and ifoverlap(self,self.cur.bk,self.curX-1,self.curY)and ifoverlap(self,self.cur.bk,self.curX+1,self.curY)and"rotatekick"or"rotate",nil,getBlockDirection(self))
|
||||
end
|
||||
self.ctrlCount=self.ctrlCount+(d==2 and 2 or 1)
|
||||
self.stat.rotate=self.stat.rotate+1
|
||||
end
|
||||
function player:hold(ifpre)
|
||||
@@ -1810,7 +1799,7 @@ function player:resetblock()
|
||||
self:freshgho()
|
||||
if self.keyPressing[6]then self.act.hardDrop(self)self.keyPressing[6]=false end
|
||||
end
|
||||
function player:drop()--(Place piece)
|
||||
function player:drop()--Place piece
|
||||
self.dropTime[11]=ins(self.dropTime,1,frame)--update speed dial
|
||||
self.waiting=self.gameEnv.wait
|
||||
local dospin=0
|
||||
@@ -2086,7 +2075,7 @@ function player:drop()--(Place piece)
|
||||
self:garbageSend(T,send,sendTime,1,self.cur.color,self.lastClear,dospin,mini,self.combo)
|
||||
end
|
||||
self.stat.send=self.stat.send+send
|
||||
if self.human and send>3 then SFX("emit",min(send,8)*.125)end
|
||||
if self.human and send>3 then SFX("emit",min(send,8)*.1)end
|
||||
end
|
||||
end
|
||||
else
|
||||
@@ -2111,7 +2100,7 @@ function player:drop()--(Place piece)
|
||||
self.stat.score=self.stat.score+cscore
|
||||
self.stat.piece,self.stat.row=self.stat.piece+1,self.stat.row+cc
|
||||
Event[self.gameEnv.dropPiece](self)
|
||||
if self.human then SFX("lock")end
|
||||
if self.human then SFX("lock",nil,getBlockDirection(self))end
|
||||
end
|
||||
function player:pressKey(i)
|
||||
self.keyPressing[i]=true
|
||||
@@ -2136,8 +2125,11 @@ end
|
||||
-------------------------<Controls>-------------------------
|
||||
player.act={}
|
||||
function player.act.moveLeft(P,auto)
|
||||
if not auto then
|
||||
P.ctrlCount=P.ctrlCount+1
|
||||
end
|
||||
if P.keyPressing[9]then
|
||||
if setting.swap then
|
||||
if P.gameEnv.swap then
|
||||
P:changeAtkMode(1)
|
||||
end
|
||||
elseif P.control and P.waiting==-1 then
|
||||
@@ -2150,7 +2142,6 @@ function player.act.moveLeft(P,auto)
|
||||
P.spinLast=false
|
||||
if not auto then
|
||||
P.moving=-1
|
||||
P.ctrlCount=P.ctrlCount+1
|
||||
end
|
||||
else
|
||||
P.moving=-P.gameEnv.das-1
|
||||
@@ -2160,8 +2151,11 @@ function player.act.moveLeft(P,auto)
|
||||
end
|
||||
end
|
||||
function player.act.moveRight(P,auto)
|
||||
if not auto then
|
||||
P.ctrlCount=P.ctrlCount+1
|
||||
end
|
||||
if P.keyPressing[9]then
|
||||
if setting.swap then
|
||||
if P.gameEnv.swap then
|
||||
P:changeAtkMode(2)
|
||||
end
|
||||
elseif P.control and P.waiting==-1 then
|
||||
@@ -2174,7 +2168,6 @@ function player.act.moveRight(P,auto)
|
||||
P.spinLast=false
|
||||
if not auto then
|
||||
P.moving=1
|
||||
P.ctrlCount=P.ctrlCount+1
|
||||
end
|
||||
else
|
||||
P.moving=P.gameEnv.das+1
|
||||
@@ -2185,25 +2178,28 @@ function player.act.moveRight(P,auto)
|
||||
end
|
||||
function player.act.rotRight(P)
|
||||
if P.control and P.waiting==-1 then
|
||||
P.ctrlCount=P.ctrlCount+1
|
||||
P:spin(1)
|
||||
P.keyPressing[3]=false
|
||||
end
|
||||
end
|
||||
function player.act.rotLeft(P)
|
||||
if P.control and P.waiting==-1 then
|
||||
P.ctrlCount=P.ctrlCount+1
|
||||
P:spin(3)
|
||||
P.keyPressing[4]=false
|
||||
end
|
||||
end
|
||||
function player.act.rotFlip(P)
|
||||
if P.control and P.waiting==-1 then
|
||||
P.ctrlCount=P.ctrlCount+2
|
||||
P:spin(2)
|
||||
P.keyPressing[5]=false
|
||||
end
|
||||
end
|
||||
function player.act.hardDrop(P)
|
||||
if P.keyPressing[9]then
|
||||
if setting.swap then
|
||||
if P.gameEnv.swap then
|
||||
P:changeAtkMode(3)
|
||||
end
|
||||
P.keyPressing[6]=false
|
||||
@@ -2220,7 +2216,7 @@ function player.act.hardDrop(P)
|
||||
P.curY=P.y_img
|
||||
P.spinLast=false
|
||||
if P.human then
|
||||
SFX("drop")
|
||||
SFX("drop",nil,getBlockDirection(P))
|
||||
VIB(1)
|
||||
end
|
||||
end
|
||||
@@ -2231,7 +2227,7 @@ function player.act.hardDrop(P)
|
||||
end
|
||||
function player.act.softDrop(P)
|
||||
if P.keyPressing[9]then
|
||||
if setting.swap then
|
||||
if P.gameEnv.swap then
|
||||
P:changeAtkMode(4)
|
||||
end
|
||||
else
|
||||
@@ -2253,7 +2249,7 @@ function player.act.func(P)
|
||||
P.gameEnv.Fkey(P)
|
||||
end
|
||||
function player.act.restart(P)
|
||||
if setting.quickR or frame<180 then
|
||||
if P.gameEnv.quickR or frame<180 then
|
||||
clearTask("play")
|
||||
resetPartGameData()
|
||||
end
|
||||
@@ -2359,5 +2355,4 @@ function player.act.addRight(P)
|
||||
P.act.insLeft(P)
|
||||
P.act.hardDrop(P)
|
||||
end
|
||||
|
||||
-------------------------</Controls>-------------------------
|
||||
13
scene.lua
13
scene.lua
@@ -66,13 +66,23 @@ local sceneInit={
|
||||
if needResetGameData then
|
||||
resetGameData()
|
||||
needResetGameData=nil
|
||||
else
|
||||
BGM(modeEnv.bgm)
|
||||
end
|
||||
curBG=modeEnv.bg
|
||||
end,
|
||||
pause=function()
|
||||
curBG=modeEnv.bg
|
||||
end,
|
||||
setting_game=function()
|
||||
curBG="none"
|
||||
end,
|
||||
setting_graphic=function()
|
||||
curBG="none"
|
||||
end,
|
||||
setting_sound=function()
|
||||
curBG="none"
|
||||
end,
|
||||
setting_key=function()
|
||||
curBoard=1
|
||||
keyboardSet=1
|
||||
@@ -170,6 +180,9 @@ function scene.push(tar,style)
|
||||
scene.seq[m+2]=style or"fade"
|
||||
end
|
||||
end
|
||||
function scene.pop()
|
||||
scene.seq={}
|
||||
end
|
||||
function scene.swapTo(tar,style)
|
||||
local S=scene.swap
|
||||
if not scene.swapping and tar~=scene.cur then
|
||||
|
||||
13
texture.lua
13
texture.lua
@@ -64,6 +64,19 @@ payCode=N("/image/mess/paycode.png")
|
||||
drawableText={
|
||||
question=T(100,"?"),
|
||||
bpm=T(15,"BPM"),kpm=T(15,"KPM"),
|
||||
speedLV=T(20,"speed level"),
|
||||
atk=T(20,"Attack"),
|
||||
eff=T(20,"Efficiency"),
|
||||
tsd=T(35,"TSD"),
|
||||
line=T(25,"Lines"),
|
||||
techrash=T(25,"Techrash"),
|
||||
grade=T(25,"Grade"),
|
||||
wave=T(30,"Wave"),
|
||||
rpm=T(35,"RPM"),
|
||||
combo=T(20,"Combo"),
|
||||
mxcmb=T(20,"Max Combo"),
|
||||
pc=T(22,"Perfect Clear"),
|
||||
ko=T(25,"KO"),
|
||||
|
||||
modeName=T(30),levelName=T(30),
|
||||
next=T(40),hold=T(40),
|
||||
|
||||
50
toolfunc.lua
50
toolfunc.lua
@@ -129,19 +129,29 @@ function VIB(t)
|
||||
love.system.vibrate(vibrateLevel[setting.vib+t])
|
||||
end
|
||||
end
|
||||
function SFX(s,v)
|
||||
function SFX(s,v,pos)
|
||||
if setting.sfx>0 then
|
||||
local S=sfx[s]--AU_Queue
|
||||
local n=1
|
||||
while sfx[s][n]:isPlaying()do
|
||||
while S[n]:isPlaying()do
|
||||
n=n+1
|
||||
if not sfx[s][n]then
|
||||
sfx[s][n]=sfx[s][n-1]:clone()
|
||||
sfx[s][n]:seek(0)
|
||||
if not S[n]then
|
||||
S[n]=S[n-1]:clone()
|
||||
S[n]:seek(0)
|
||||
break
|
||||
end
|
||||
end
|
||||
sfx[s][n]:setVolume((v or 1)*setting.sfx*.125)
|
||||
sfx[s][n]:play()
|
||||
S=S[n]--AU_SRC
|
||||
if S:getChannelCount()==1 then
|
||||
if pos then
|
||||
pos=pos*setting.stereo*.1
|
||||
S:setPosition(pos,1-pos^2,0)
|
||||
else
|
||||
S:setPosition(0,0,0)
|
||||
end
|
||||
end
|
||||
S:setVolume((v or 1)*setting.sfx*.1)
|
||||
S:play()
|
||||
end
|
||||
end
|
||||
function getFreeVoiceChannel()
|
||||
@@ -182,7 +192,7 @@ function BGM(s)
|
||||
bgmPlaying=s
|
||||
else
|
||||
if bgmPlaying then
|
||||
local v=setting.bgm*.125
|
||||
local v=setting.bgm*.1
|
||||
bgm[bgmPlaying]:setVolume(v)
|
||||
if v>0 then
|
||||
bgm[bgmPlaying]:play()
|
||||
@@ -330,7 +340,7 @@ function resetGameData()
|
||||
pauseTime=0--Time paused
|
||||
pauseCount=0--Times paused
|
||||
destroyPlayers()
|
||||
local E=defaultModeEnv[curMode.id]
|
||||
local E=defModeEnv[curMode.id]
|
||||
modeEnv=E[curMode.lv]or E[1]
|
||||
loadmode[curMode.id]()--bg/bgm need redefine in custom,so up here
|
||||
if modeEnv.task then
|
||||
@@ -436,23 +446,27 @@ function loadSetting()
|
||||
local p=find(t[i],"=")
|
||||
if p then
|
||||
local t,v=sub(t[i],1,p-1),sub(t[i],p+1)
|
||||
if t=="sfx"or t=="bgm"or t=="voc"then
|
||||
setting[t]=toN(v:match("[012345678]"))or setting[t]
|
||||
if
|
||||
--声音
|
||||
t=="sfx"or t=="bgm"or t=="voc"or t=="stereo"or
|
||||
--三个触摸设置项
|
||||
t=="VKTchW"or t=="VKCurW"or t=="VKAlpha"
|
||||
then
|
||||
v=toN(v)
|
||||
if v==int(v)and v>=0 and v<=10 then
|
||||
setting[t]=v
|
||||
end
|
||||
elseif t=="vib"then
|
||||
setting.vib=toN(v:match("[012345]"))or 0
|
||||
elseif t=="fullscreen"then
|
||||
setting.fullscreen=v=="true"
|
||||
love.window.setFullscreen(setting.fullscreen)
|
||||
elseif
|
||||
--三个触摸设置项
|
||||
t=="VKTchW"or t=="VKCurW"or t=="VKAlpha"
|
||||
then
|
||||
setting.VKTchW=min(int(abs(toN(v))),10)
|
||||
elseif
|
||||
--开关设置们
|
||||
t=="bg"or
|
||||
t=="ghost"or t=="center"or t=="grid"or t=="swap"or
|
||||
t=="quickR"or t=="fine"or t=="bgblock"or t=="smo"or
|
||||
t=="VKSwitch"or t=="VKTrack"or t=="VKIcon"
|
||||
t=="VKSwitch"or t=="VKTrack"or t=="VKDodge"or t=="VKIcon"
|
||||
then
|
||||
setting[t]=v=="true"
|
||||
elseif t=="frameMul"then
|
||||
@@ -511,9 +525,11 @@ local saveOpt={
|
||||
|
||||
"sfx","bgm",
|
||||
"vib","voc",
|
||||
"stereo",
|
||||
|
||||
"VKSwitch",
|
||||
"VKTrack",
|
||||
"VKDodge",
|
||||
"VKIcon",
|
||||
"VKAlpha",
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ Patron(rmb10+):
|
||||
[D*a]?
|
||||
Future outlook:
|
||||
Normal Things:
|
||||
in-game setting(scene-sequence system)
|
||||
powerinfo switch
|
||||
splashing block
|
||||
ajustable next count
|
||||
@@ -24,7 +23,17 @@ Future outlook:
|
||||
infinite 1v1
|
||||
square mode
|
||||
more FXs & 3d features & animations
|
||||
0.7.29:
|
||||
0.7.32:
|
||||
Blind-GM now show section directly
|
||||
easier&more standard classic mode
|
||||
can switch Virtualkey's auto dodging
|
||||
in-game setting
|
||||
code optimized
|
||||
bug fixed
|
||||
0.7.31:
|
||||
stereo system
|
||||
fixed a problem in finesse calculating
|
||||
0.7.30:
|
||||
auto-tracking virtual key,adjustable parameters!
|
||||
can switch on/off virtuakeys
|
||||
add 7 more key
|
||||
|
||||
Reference in New Issue
Block a user