Compare commits

..

1 Commits

Author SHA1 Message Date
MrZ_26
1641440886 0.7.31+α 2020-02-04 19:37:41 +08:00
29 changed files with 545 additions and 489 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -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")

View File

@@ -1,5 +1,5 @@
math.randomseed(os.time())
gameVersion="Alpha V0.7.30"
gameVersion="Alpha V0.7.31+"
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

View File

@@ -532,7 +532,9 @@ end
function Event.classic_reach(P)
if P.stat.row>=P.gameEnv.target then
P.gameEnv.target=P.gameEnv.target+10
if P.gameEnv.target==100 then
if P.gameEnv.target==110 then
P.gameEnv.drop,P.gameEnv.lock=2,2
elseif P.gameEnv.target==210 then
P.gameEnv.drop,P.gameEnv.lock=1,1
end
SFX("reach")
@@ -561,6 +563,7 @@ function Event.GM_reach(P)
if R==4 then R=10 end
P.modeData.point=P.modeData.point+R
if P.stat.time>=53.5 then
P.modeData.point=P.modeData.point+15
Event.win(P)
end
end
@@ -949,7 +952,7 @@ function Event_task.PC(P)
end
end
function Event_task.bgmFadeOut(_,id)
local v=bgm[id]:getVolume()-.025*setting.bgm*.125
local v=bgm[id]:getVolume()-.025*setting.bgm*.1
bgm[id]:setVolume(v>0 and v or 0)
if v<=0 then
bgm[id]:stop()
@@ -957,9 +960,9 @@ function Event_task.bgmFadeOut(_,id)
end
end
function Event_task.bgmFadeIn(_,id)
local v=min(bgm[id]:getVolume()+.025*setting.bgm*.125,setting.bgm*.125)
local v=min(bgm[id]:getVolume()+.025*setting.bgm*.1,setting.bgm*.1)
bgm[id]:setVolume(v)
if v>=setting.bgm*.125 then return true end
if v>=setting.bgm*.1 then return true end
end
-------------------------</Tasks>-------------------------
@@ -981,458 +984,457 @@ local Fkey_func={
P.modeData.event=1-P.modeData.event
end,
}
defaultModeEnv={
sprint={
{
drop=60,lock=60,
target=10,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
{
drop=60,lock=60,
target=20,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
{
drop=60,lock=60,
target=40,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
{
drop=60,lock=60,
target=100,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
{
drop=60,lock=60,
target=400,dropPiece="reach_winCheck",
bg="strap",bgm="push",
},
{
drop=60,lock=60,
target=1000,dropPiece="reach_winCheck",
bg="strap",bgm="push",
},
defModeEnv={}
defModeEnv.sprint={
{
drop=60,lock=60,
target=10,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
marathon={
{
drop=60,lock=60,fall=30,
target=200,dropPiece="reach_winCheck",
bg="strap",bgm="way",
},
{
drop=60,fall=20,
target=10,dropPiece="marathon_update",
bg="strap",bgm="way",
},
{
_20G=true,fall=15,
target=200,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
{
drop=60,lock=60,
target=20,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
master={
{
_20G=true,lock=rush_lock[1],
wait=rush_wait[1],
fall=rush_fall[1],
dropPiece="master_score",
das=9,arr=3,
freshLimit=15,
bg="strap",bgm="secret8th",
},
{
_20G=true,lock=death_lock[1],
wait=death_wait[1],
fall=death_fall[1],
dropPiece="master_score",
das=6,arr=1,
freshLimit=15,
bg="game2",bgm="secret7th",
},
{
_20G=true,lock=12,
wait=10,fall=10,
dropPiece="master_score_hard",
das=5,arr=1,
freshLimit=15,
easyFresh=false,bone=true,
bg="none",bgm="shining terminal",
},
{
drop=60,lock=60,
target=40,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
classic={
{
das=15,arr=3,sddas=2,sdarr=2,
ghost=false,center=false,
drop=2,lock=2,wait=10,fall=25,
next=1,hold=false,
sequence="rnd",
freshLimit=0,
target=10,dropPiece="classic_reach",
bg="rgb",bgm="rockblock",
},
{
drop=60,lock=60,
target=100,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
zen={
{
drop=1e99,lock=1e99,
oncehold=false,
dropPiece="reach_winCheck",
bg="strap",bgm="infinite",
},
{
drop=60,lock=60,
target=400,dropPiece="reach_winCheck",
bg="strap",bgm="push",
},
infinite={
{
drop=1e99,lock=1e99,
oncehold=false,
bg="glow",bgm="infinite",
},
{
drop=1e99,lock=1e99,
oncehold=false,
dropPiece="infinite_check",
bg="glow",bgm="infinite",
},
{
drop=60,lock=60,
target=1000,dropPiece="reach_winCheck",
bg="strap",bgm="push",
},
solo={
{
drop=60,lock=60,
freshLimit=15,
bg="game2",bgm="race",
},
}
defModeEnv.marathon={
{
drop=60,lock=60,fall=30,
target=200,dropPiece="reach_winCheck",
bg="strap",bgm="way",
},
round={
{
drop=1e99,lock=1e99,
oncehold=false,
dropPiece="round_check",
bg="game2",bgm="push",
},
{
drop=60,fall=20,
target=10,dropPiece="marathon_update",
bg="strap",bgm="way",
},
tsd={
{
oncehold=false,
drop=1e99,lock=1e99,
dropPiece="tsd_reach",
ospin=false,
bg="matrix",bgm="reason",
},
{
drop=60,lock=60,
freshLimit=15,
dropPiece="tsd_reach",
ospin=false,
bg="matrix",bgm="reason",
},
{
_20G=true,fall=15,
target=200,dropPiece="reach_winCheck",
bg="strap",bgm="race",
},
blind={
{
drop=30,lock=45,
freshLimit=10,
visible="time",
bg="glow",bgm="newera",
},
{
drop=15,lock=45,
freshLimit=10,
visible="fast",
freshLimit=10,
bg="glow",bgm="reason",
},
{
drop=15,lock=45,
fall=10,lock=60,
center=false,
visible="none",
freshLimit=15,
bg="rgb",bgm="secret7th",
},
{
drop=10,lock=45,
fall=5,lock=60,
center=false,ghost=false,
visible="none",
freshLimit=15,
bg="rgb",bgm="secret8th",
},
{
drop=30,lock=60,
fall=5,
block=false,
center=false,ghost=false,
visible="none",
freshLimit=15,
bg="rgb",bgm="secret7th",
},
{
_20G=true,
drop=0,lock=15,
wait=10,fall=15,
visible="fast",
freshLimit=15,
dropPiece="GM_reach",
arr=1,
bg="game3",bgm="shining terminal",
},
}
defModeEnv.master={
{
_20G=true,lock=rush_lock[1],
wait=rush_wait[1],
fall=rush_fall[1],
dropPiece="master_score",
das=9,arr=3,
freshLimit=15,
bg="strap",bgm="secret8th",
},
dig={
{
drop=60,lock=120,
fall=20,
freshLimit=15,
task="dig_normal",
bg="game2",bgm="push",
},
{
drop=10,lock=30,
freshLimit=15,
task="dig_lunatic",
bg="game2",bgm="secret7th",
},
{
_20G=true,lock=death_lock[1],
wait=death_wait[1],
fall=death_fall[1],
dropPiece="master_score",
das=6,arr=1,
freshLimit=15,
bg="game2",bgm="secret7th",
},
survivor={
{
drop=60,lock=120,
fall=30,
freshLimit=15,
task="survivor_easy",
bg="game2",bgm="push",
},
{
drop=30,lock=60,
fall=20,
freshLimit=15,
task="survivor_normal",
bg="game2",bgm="newera",
},
{
drop=10,lock=60,
fall=15,
freshLimit=15,
task="survivor_hard",
bg="game2",bgm="secret8th",
},
{
drop=6,lock=60,
fall=10,
freshLimit=15,
task="survivor_lunatic",
bg="game3",bgm="secret7th",
},
{
drop=5,lock=60,
fall=10,
freshLimit=15,
task="survivor_ultimate",
bg="rgb",bgm="secret7th",
},
{
_20G=true,lock=12,
wait=10,fall=10,
dropPiece="master_score_hard",
das=5,arr=1,
freshLimit=15,
easyFresh=false,bone=true,
bg="none",bgm="shining terminal",
},
defender={
{
drop=30,lock=60,
fall=10,
freshLimit=15,
task="defender_normal",
bg="game3",bgm="way",
},
{
drop=5,lock=60,
fall=6,
freshLimit=15,
task="defender_lunatic",
bg="game4",bgm="way",
},
}
defModeEnv.classic={
{
das=16,arr=6,sddas=2,sdarr=2,
ghost=false,center=false,
drop=3,lock=3,wait=10,fall=25,
next=1,hold=false,
sequence="rnd",
freshLimit=0,
target=10,dropPiece="classic_reach",
bg="rgb",bgm="rockblock",
},
attacker={
{
drop=30,lock=60,
fall=12,
freshLimit=15,
task="attacker_hard",
bg="game3",bgm="push",
},
{
drop=5,lock=60,
fall=8,
freshLimit=15,
task="attacker_ultimate",
bg="game4",bgm="shining terminal",
},
}
defModeEnv.zen={
{
drop=1e99,lock=1e99,
oncehold=false,
dropPiece="reach_winCheck",
bg="strap",bgm="infinite",
},
tech={
{
oncehold=false,
drop=1e99,lock=1e99,
dropPiece="tech_reach_easy",
bg="matrix",bgm="newera",
},
{
oncehold=false,
drop=1e99,lock=1e99,
dropPiece="tech_reach_ultimate",
bg="matrix",bgm="newera",
},
{
drop=10,lock=60,
freshLimit=15,
dropPiece="tech_reach_easy",
bg="matrix",bgm="secret8th",
},
{
drop=30,lock=60,
freshLimit=15,
dropPiece="tech_reach_ultimate",
bg="matrix",bgm="secret8th",
},
{
_20G=true,lock=60,
freshLimit=15,
dropPiece="tech_reach_hard",
bg="matrix",bgm="secret7th",
},
{
_20G=true,lock=60,
freshLimit=15,
dropPiece="tech_reach_ultimate",
bg="matrix",bgm="secret7th",
},
{
drop=1e99,lock=60,
freshLimit=15,
fine=true,fineKill=true,
dropPiece="tech_reach_hard",
bg="flink",bgm="infinite",
},
{
drop=1e99,lock=60,
freshLimit=15,
fine=true,fineKill=true,
dropPiece="tech_reach_ultimate",
bg="flink",bgm="infinite",
},
}
defModeEnv.infinite={
{
drop=1e99,lock=1e99,
oncehold=false,
bg="glow",bgm="infinite",
},
c4wtrain={
{
drop=30,lock=60,
oncehold=false,
freshLimit=15,
dropPiece="c4w_reach",
ospin=false,
bg="rgb",bgm="newera",
},
{
drop=5,lock=30,
freshLimit=15,
dropPiece="c4w_reach",
ospin=false,
bg="rgb",bgm="newera",
},
{
drop=1e99,lock=1e99,
oncehold=false,
dropPiece="infinite_check",
bg="glow",bgm="infinite",
},
pctrain={
{
next=4,
hold=false,
drop=150,lock=150,
fall=20,
sequence="none",
dropPiece="newPC",
ospin=false,
bg="rgb",bgm="newera",
},
{
next=4,
hold=false,
drop=60,lock=60,
fall=20,
sequence="none",
freshLimit=15,
dropPiece="newPC",
ospin=false,
bg="rgb",bgm="newera",
},
}
defModeEnv.solo={
{
drop=60,lock=60,
freshLimit=15,
bg="game2",bgm="race",
},
pcchallenge={
{
oncehold=false,
drop=300,lock=1e99,
target=100,dropPiece="reach_winCheck",
ospin=false,
bg="rgb",bgm="newera",
},
{
drop=60,lock=120,
fall=10,
target=100,dropPiece="reach_winCheck",
freshLimit=15,
ospin=false,
bg="rgb",bgm="infinite",
},
{
drop=20,lock=60,
fall=20,
target=100,dropPiece="reach_winCheck",
freshLimit=15,
ospin=false,
bg="rgb",bgm="infinite",
},
}
defModeEnv.round={
{
drop=1e99,lock=1e99,
oncehold=false,
dropPiece="round_check",
bg="game2",bgm="push",
},
techmino49={
{
drop=60,lock=60,
fall=20,
royaleMode=true,
Fkey=Fkey_func.royale,
royalePowerup={2,5,10,20},
royaleRemain={30,20,15,10,5},
pushSpeed=2,
freshLimit=15,
bg="game3",bgm="rockblock",
},
}
defModeEnv.tsd={
{
oncehold=false,
drop=1e99,lock=1e99,
dropPiece="tsd_reach",
ospin=false,
bg="matrix",bgm="reason",
},
techmino99={
{
drop=60,lock=60,
fall=20,
royaleMode=true,
Fkey=Fkey_func.royale,
royalePowerup={2,6,14,30},
royaleRemain={75,50,35,20,10},
pushSpeed=2,
freshLimit=15,
bg="game3",bgm="rockblock",
},
{
drop=60,lock=60,
freshLimit=15,
dropPiece="tsd_reach",
ospin=false,
bg="matrix",bgm="reason",
},
drought={
{
drop=20,lock=60,
sequence="drought1",
target=100,dropPiece="reach_winCheck",
ospin=false,
freshLimit=15,
bg="glow",bgm="reason",
},
{
drop=20,lock=60,
sequence="drought2",
target=100,dropPiece="reach_winCheck",
ospin=false,
freshLimit=15,
bg="glow",bgm="reason",
},
}
defModeEnv.blind={
{
drop=30,lock=45,
freshLimit=10,
visible="time",
bg="glow",bgm="newera",
},
hotseat={
{
drop=60,lock=60,
freshLimit=15,
bg="none",bgm="way",
},
{
drop=15,lock=45,
freshLimit=10,
visible="fast",
freshLimit=10,
bg="glow",bgm="reason",
},
custom={
{
dropPiece="reach_winCheck",
},
{
Fkey=Fkey_func.puzzle,puzzle=true,
dropPiece="puzzleCheck",
},
{
drop=15,lock=45,
fall=10,lock=60,
center=false,
visible="none",
freshLimit=15,
bg="rgb",bgm="secret7th",
},
{
drop=10,lock=45,
fall=5,lock=60,
center=false,ghost=false,
visible="none",
freshLimit=15,
bg="rgb",bgm="secret8th",
},
{
drop=30,lock=60,
fall=5,
block=false,
center=false,ghost=false,
visible="none",
freshLimit=15,
bg="rgb",bgm="secret7th",
},
{
_20G=true,
drop=0,lock=15,
wait=10,fall=15,
visible="fast",
freshLimit=15,
dropPiece="GM_reach",
arr=1,
bg="game3",bgm="shining terminal",
},
}
defModeEnv.dig={
{
drop=60,lock=120,
fall=20,
freshLimit=15,
task="dig_normal",
bg="game2",bgm="push",
},
{
drop=10,lock=30,
freshLimit=15,
task="dig_lunatic",
bg="game2",bgm="secret7th",
},
}
defModeEnv.survivor={
{
drop=60,lock=120,
fall=30,
freshLimit=15,
task="survivor_easy",
bg="game2",bgm="push",
},
{
drop=30,lock=60,
fall=20,
freshLimit=15,
task="survivor_normal",
bg="game2",bgm="newera",
},
{
drop=10,lock=60,
fall=15,
freshLimit=15,
task="survivor_hard",
bg="game2",bgm="secret8th",
},
{
drop=6,lock=60,
fall=10,
freshLimit=15,
task="survivor_lunatic",
bg="game3",bgm="secret7th",
},
{
drop=5,lock=60,
fall=10,
freshLimit=15,
task="survivor_ultimate",
bg="rgb",bgm="secret7th",
},
}
defModeEnv.defender={
{
drop=30,lock=60,
fall=10,
freshLimit=15,
task="defender_normal",
bg="game3",bgm="way",
},
{
drop=5,lock=60,
fall=6,
freshLimit=15,
task="defender_lunatic",
bg="game4",bgm="way",
},
}
defModeEnv.attacker={
{
drop=30,lock=60,
fall=12,
freshLimit=15,
task="attacker_hard",
bg="game3",bgm="push",
},
{
drop=5,lock=60,
fall=8,
freshLimit=15,
task="attacker_ultimate",
bg="game4",bgm="shining terminal",
},
}
defModeEnv.tech={
{
oncehold=false,
drop=1e99,lock=1e99,
dropPiece="tech_reach_easy",
bg="matrix",bgm="newera",
},
{
oncehold=false,
drop=1e99,lock=1e99,
dropPiece="tech_reach_ultimate",
bg="matrix",bgm="newera",
},
{
drop=10,lock=60,
freshLimit=15,
dropPiece="tech_reach_easy",
bg="matrix",bgm="secret8th",
},
{
drop=30,lock=60,
freshLimit=15,
dropPiece="tech_reach_ultimate",
bg="matrix",bgm="secret8th",
},
{
_20G=true,lock=60,
freshLimit=15,
dropPiece="tech_reach_hard",
bg="matrix",bgm="secret7th",
},
{
_20G=true,lock=60,
freshLimit=15,
dropPiece="tech_reach_ultimate",
bg="matrix",bgm="secret7th",
},
{
drop=1e99,lock=60,
freshLimit=15,
fine=true,fineKill=true,
dropPiece="tech_reach_hard",
bg="flink",bgm="infinite",
},
{
drop=1e99,lock=60,
freshLimit=15,
fine=true,fineKill=true,
dropPiece="tech_reach_ultimate",
bg="flink",bgm="infinite",
},
}
defModeEnv.c4wtrain={
{
drop=30,lock=60,
oncehold=false,
freshLimit=15,
dropPiece="c4w_reach",
ospin=false,
bg="rgb",bgm="newera",
},
{
drop=5,lock=30,
freshLimit=15,
dropPiece="c4w_reach",
ospin=false,
bg="rgb",bgm="newera",
},
}
defModeEnv.pctrain={
{
next=4,
hold=false,
drop=150,lock=150,
fall=20,
sequence="none",
dropPiece="newPC",
ospin=false,
bg="rgb",bgm="newera",
},
{
next=4,
hold=false,
drop=60,lock=60,
fall=20,
sequence="none",
freshLimit=15,
dropPiece="newPC",
ospin=false,
bg="rgb",bgm="newera",
},
}
defModeEnv.pcchallenge={
{
oncehold=false,
drop=300,lock=1e99,
target=100,dropPiece="reach_winCheck",
ospin=false,
bg="rgb",bgm="newera",
},
{
drop=60,lock=120,
fall=10,
target=100,dropPiece="reach_winCheck",
freshLimit=15,
ospin=false,
bg="rgb",bgm="infinite",
},
{
drop=20,lock=60,
fall=20,
target=100,dropPiece="reach_winCheck",
freshLimit=15,
ospin=false,
bg="rgb",bgm="infinite",
},
}
defModeEnv.techmino49={
{
drop=60,lock=60,
fall=20,
royaleMode=true,
Fkey=Fkey_func.royale,
royalePowerup={2,5,10,20},
royaleRemain={30,20,15,10,5},
pushSpeed=2,
freshLimit=15,
bg="game3",bgm="rockblock",
},
}
defModeEnv.techmino99={
{
drop=60,lock=60,
fall=20,
royaleMode=true,
Fkey=Fkey_func.royale,
royalePowerup={2,6,14,30},
royaleRemain={75,50,35,20,10},
pushSpeed=2,
freshLimit=15,
bg="game3",bgm="rockblock",
},
}
defModeEnv.drought={
{
drop=20,lock=60,
sequence="drought1",
target=100,dropPiece="reach_winCheck",
ospin=false,
freshLimit=15,
bg="glow",bgm="reason",
},
{
drop=20,lock=60,
sequence="drought2",
target=100,dropPiece="reach_winCheck",
ospin=false,
freshLimit=15,
bg="glow",bgm="reason",
},
}
defModeEnv.hotseat={
{
drop=60,lock=60,
freshLimit=15,
bg="none",bgm="way",
},
}
defModeEnv.custom={
{
dropPiece="reach_winCheck",
},
{
Fkey=Fkey_func.puzzle,puzzle=true,
dropPiece="puzzleCheck",
},
}

View File

@@ -19,8 +19,9 @@ setting={
skin=1,
--graphic
sfx=8,bgm=6,
sfx=10,bgm=7,
vib=3,voc=0,
stereo=6,
--sound
keyMap={

BIN
font.ttf

Binary file not shown.

View File

@@ -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={

View File

@@ -192,7 +192,7 @@ return{
warning="禁 止 私 自 传 播",
WidgetText={
main={
lang="全中",
lang="-Lang",
qplay="快速开始",
play="开始",
setting="设置",
@@ -256,6 +256,7 @@ return{
pause={
resume= "继续",
restart="重新开始",
setting="设置",
quit= "退出",
},
@@ -342,4 +343,4 @@ return{
back=BK,
},
},
}--部分译文
}

View File

@@ -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={

View File

@@ -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",
@@ -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={

View File

@@ -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
@@ -930,7 +932,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

View File

@@ -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,
@@ -317,7 +318,7 @@ local mesDisp={
mStr("Lines",-82,300)
mStr("Techrash",-82,420)
if curMode.lv==6 then
mStr("Point",-82,170)
mStr("Grade",-82,170)
setFont(60)
mStr(P.modeData.point*.1,-82,110)
end
@@ -1410,6 +1411,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 +1701,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 +1709,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 +1740,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 +1813,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 +2089,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 +2114,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 +2139,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 +2156,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 +2165,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 +2182,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 +2192,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 +2230,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 +2241,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 +2263,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 +2369,4 @@ function player.act.addRight(P)
P.act.insLeft(P)
P.act.hardDrop(P)
end
-------------------------</Controls>-------------------------

View File

@@ -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

View File

@@ -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,20 +446,24 @@ 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"
@@ -511,6 +525,7 @@ local saveOpt={
"sfx","bgm",
"vib","voc",
"stereo",
"VKSwitch",
"VKTrack",

View File

@@ -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,13 @@ Future outlook:
infinite 1v1
square mode
more FXs & 3d features & animations
0.7.29:
0.7.31+:
in-game setting
little changes
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