Compare commits

..

16 Commits

Author SHA1 Message Date
MrZ_26
d46d111900 0.10.3:软件锁 2020-08-12 00:04:48 +08:00
MrZ_26
87d6e0b501 回放时暂停不打断玩家操作 2020-08-12 00:02:26 +08:00
MrZ_26
45430a6a4a 修复禁断连c4wtrain的成绩为随机(我傻逼) 2020-08-11 23:22:57 +08:00
MrZ_26
7f8a10327b 剩余锁延重置次数指示器改为长方形 2020-08-11 18:28:19 +08:00
MrZ_26
bebe4b96a3 设置添加软件锁,debug界面改为重置界面,进入方法调整 2020-08-11 17:57:57 +08:00
MrZ_26
c1fd22f0b4 场景系统逻辑微调 2020-08-11 00:35:26 +08:00
MrZ_26
0f204e8659 取消按钮喵叫 2020-08-11 00:34:40 +08:00
MrZ_26
9529597a0d 取消"找不到语音"的print 2020-08-11 00:32:19 +08:00
MrZ_26
392ec9abab 加载完毕标记 2020-08-11 00:31:37 +08:00
MrZ_26
d0c7e14f74 "声明"变量 2020-08-11 00:26:44 +08:00
MrZ_26
3cd86472f8 修复回放也计入排行榜 2020-08-10 23:18:21 +08:00
MrZ_26
1e6e3d0d50 时间tip报错 2020-08-10 19:00:25 +08:00
MrZ_26
ed89685925 语音音量设置连续 2020-08-10 01:44:26 +08:00
MrZ_26
971dce6a66 极简提示音量放大 2020-08-10 01:44:00 +08:00
MrZ_26
5de78e924d 取消quickR设置,修改游戏设置布局,增加相关tip 2020-08-10 01:43:39 +08:00
MrZ_26
de0de3a771 修复无尽挖掘报错,小改垃圾行出现代码 2020-08-10 01:37:49 +08:00
17 changed files with 288 additions and 155 deletions

View File

@@ -25,6 +25,7 @@ local Timer=love.timer.getTime
local int,rnd,max,min=math.floor,math.random,math.max,math.min local int,rnd,max,min=math.floor,math.random,math.max,math.min
local abs=math.abs local abs=math.abs
local ins,rem=table.insert,table.remove local ins,rem=table.insert,table.remove
local byte=string.byte
local scr=scr local scr=scr
local xOy=love.math.newTransform() local xOy=love.math.newTransform()
@@ -127,6 +128,75 @@ local touchDown,touchUp,touchMove={},{},{}
local keyDown,keyUp={},{} local keyDown,keyUp={},{}
local gamepadDown,gamepadUp={},{} local gamepadDown,gamepadUp={},{}
function keyDown.calculator(k)
local S=sceneTemp
if byte(k)>=48 and byte(k)<=57 then
if S.sym=="="then
S.val=tonumber(k)
S.sym=false
elseif S.sym then
if not S.reg then
S.reg=S.val
S.val=tonumber(k)
elseif S.val<1e13 then
S.val=S.val*10+tonumber(k)
end
else
if S.val<1e13 then
S.val=S.val*10+tonumber(k)
end
end
elseif k=="backspace"then
if S.val>0 then
S.val=int(S.val/10)
end
elseif k=="+"or k=="="and kb.isDown("rshift","lshift")then
S.sym="+"
elseif k=="-"then
S.sym="-"
elseif k=="*"or k=="8"and kb.isDown("rshift","lshift")then
S.sym="*"
elseif k=="/"then
S.sym="/"
elseif k=="return"then
if S.val then
if S.sym and S.reg then
S.val=
S.sym=="+"and S.reg+S.val or
S.sym=="-"and S.reg-S.val or
S.sym=="*"and S.reg*S.val or
S.sym=="/"and S.reg/S.val or
-1
end
S.sym="="
S.reg=false
if S.val==626 then
S.pass=true
elseif S.val==196022 then
marking=nil
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
SFX.play("clear")
elseif S.val==72943816 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("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
SFX.play("clear_2")
elseif S.val==137926261379 then
SCN.goto("debug")
end
end
elseif k=="space"then
if S.pass then
SCN.goto("load")
end
end
end
function keyDown.load(k) function keyDown.load(k)
if k=="a"then if k=="a"then
sceneTemp.skip=true sceneTemp.skip=true
@@ -738,34 +808,6 @@ function gamepadUp.play(key)
end end
end end
function keyDown.staff(key,RESET)
if key=="escape"then
SCN.back()
elseif key=="\122"then
if RESET or kb.isDown("\109")and kb.isDown("\114")then
SCN.goto("debug")
end
end
end
function touchDown.staff(id,x,y)
local pw=sceneTemp.pw
local t=pw%4
if
t==0 and x<640 and y<360 or
t==1 and x>640 and y<360 or
t==2 and x<640 and y>360 or
t==3 and x>640 and y>360
then
pw=pw+1
if pw==8 then
SCN.goto("debug")
end
else
pw=x<640 and y<360==1 and 1 or 0
end
sceneTemp.pw=pw
end
function wheelMoved.history(x,y) function wheelMoved.history(x,y)
wheelScroll(y) wheelScroll(y)
end end
@@ -1050,7 +1092,7 @@ function love.run()
local FCT=0--Framedraw counter local FCT=0--Framedraw counter
love.resize(gc.getWidth(),gc.getHeight()) love.resize(gc.getWidth(),gc.getHeight())
SCN.init("load")--Scene Launch SCN.init(setting.lock and "calculator"or"load")--Scene Launch
marking=true marking=true
return function() return function()
@@ -1152,7 +1194,7 @@ function love.run()
end end
--Fresh power info. --Fresh power info.
if Timer()-lastFreshPow>2 and setting.powerInfo and SCN.cur~="load"then if Timer()-lastFreshPow>2 and setting.powerInfo and loadingFinished then
updatePowerInfo() updatePowerInfo()
lastFreshPow=Timer() lastFreshPow=Timer()
_=gc.getWidth() _=gc.getWidth()

View File

@@ -186,6 +186,17 @@ local langList={
support="支持作者", support="支持作者",
group="官方QQ群(如果没有被暗改的话就是这个):1080457319", group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
WidgetText={ WidgetText={
calculator={
_1="1",_2="2",_3="3",
_4="4",_5="5",_6="6",
_7="7",_8="8",_9="9",
_0="0",["<"]="<",["="]="=",
["+"]="+",
["-"]="-",
["*"]="*",
["/"]="/",
play="开始",
},
main={ main={
play="开始", play="开始",
setting="设置", setting="设置",
@@ -258,15 +269,15 @@ local langList={
graphic="←画面设置", graphic="←画面设置",
sound="声音设置→", sound="声音设置→",
ctrl="控制设置", ctrl="控制设置",
reTime="开局等待时间",
maxNext="最大预览数量",
autoPause="自动暂停",
layout="外观",
key="键位设置", key="键位设置",
touch="触屏设置", touch="触屏设置",
quickR="快速重新开始", reTime="开局等待时间",
maxNext="最大预览数量",
layout="外观",
autoPause="失去焦点自动暂停",
swap="组合键切换攻击模式", swap="组合键切换攻击模式",
fine="极简操作提示音", fine="极简操作提示音",
lock="软件锁(密码626)",
back="返回", back="返回",
}, },
setting_video={ setting_video={
@@ -376,8 +387,6 @@ local langList={
back="返回", back="返回",
}, },
debug={ debug={
killWTM="关闭水印",
unlock="解锁全模式",
reset="重置?", reset="重置?",
reset1="重置解锁/等级", reset1="重置解锁/等级",
reset2="重置统计", reset2="重置统计",
@@ -646,6 +655,17 @@ local langList={
support="支持作者", support="支持作者",
group="官方QQ群(如果没有被暗改的话就是这个):1080457319", group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
WidgetText={ WidgetText={
calculator={
_1="1",_2="2",_3="3",
_4="4",_5="5",_6="6",
_7="7",_8="8",_9="9",
_0="0",["<"]="<",["="]="=",
["+"]="+",
["-"]="-",
["*"]="*",
["/"]="/",
play="开始",
},
main={ main={
play="开始", play="开始",
setting="设置", setting="设置",
@@ -718,15 +738,15 @@ local langList={
graphic="←画面设置", graphic="←画面设置",
sound="声音设置→", sound="声音设置→",
ctrl="控制设置", ctrl="控制设置",
reTime="开局等待时间",
maxNext="最大预览数量",
autoPause="自动暂停",
layout="外观",
key="键位设置", key="键位设置",
touch="触屏设置", touch="触屏设置",
quickR="快速重新开始", reTime="开局等待时间",
maxNext="最大预览数量",
layout="外观",
autoPause="失去焦点自动暂停",
swap="组合键切换攻击模式", swap="组合键切换攻击模式",
fine="极简操作提示音", fine="极简操作提示音",
lock="软件锁(密码626)",
back="返回", back="返回",
}, },
setting_video={ setting_video={
@@ -836,8 +856,6 @@ local langList={
back="返回", back="返回",
}, },
debug={ debug={
killWTM="关闭水印",
unlock="解锁全模式",
reset="重置?", reset="重置?",
reset1="重置解锁/等级", reset1="重置解锁/等级",
reset2="重置统计", reset2="重置统计",
@@ -1095,6 +1113,17 @@ local langList={
support="Support author", support="Support author",
group="Official QQ Group(if not hacked):1080457319", group="Official QQ Group(if not hacked):1080457319",
WidgetText={ WidgetText={
calculator={
_1="1",_2="2",_3="3",
_4="4",_5="5",_6="6",
_7="7",_8="8",_9="9",
_0="0",["<"]="<",["="]="=",
["+"]="+",
["-"]="-",
["*"]="*",
["/"]="/",
play="Play",
},
main={ main={
play="Play", play="Play",
setting="Settings", setting="Settings",
@@ -1167,15 +1196,15 @@ local langList={
graphic="←Video", graphic="←Video",
sound="Sound→", sound="Sound→",
ctrl="Control settings", ctrl="Control settings",
reTime="Start Delay",
maxNext="Next Queue Length",
autoPause="Auto pause",
layout="Layout",
key="Key Mappings", key="Key Mappings",
touch="Touch Settings", touch="Touch Settings",
quickR="Quick Retry", reTime="Start Delay",
maxNext="Next Queue Length",
layout="Layout",
autoPause="Pause when lose focus",
swap="Key Combination (Change Atk. Mode)", swap="Key Combination (Change Atk. Mode)",
fine="Finesse Error Sound", fine="Finesse Error Sound",
lock="Game Lock(pw=626)",
back="Back", back="Back",
}, },
setting_video={ setting_video={
@@ -1285,8 +1314,6 @@ local langList={
back="Back", back="Back",
}, },
debug={ debug={
killWTM="Kill watermark",
unlock="Unlock all",
reset="Reset?", reset="Reset?",
reset1="Reset rank", reset1="Reset rank",
reset2="Reset data", reset2="Reset data",
@@ -1540,6 +1567,17 @@ local langList={
support="Support author", support="Support author",
group="Official QQ Group(if not hacked):1080457319", group="Official QQ Group(if not hacked):1080457319",
WidgetText={ WidgetText={
calculator={
_1="1",_2="2",_3="3",
_4="4",_5="5",_6="6",
_7="7",_8="8",_9="9",
_0="0",["<"]="<",["="]="=",
["+"]="+",
["-"]="-",
["*"]="*",
["/"]="/",
play="!!!",
},
main={ main={
play="!!!", play="!!!",
setting="_?_", setting="_?_",
@@ -1612,15 +1650,15 @@ local langList={
graphic="←Video", graphic="←Video",
sound="Sound→", sound="Sound→",
ctrl="=?=", ctrl="=?=",
reTime="3-2-1",
maxNext="=123",
autoPause="A||",
layout="=-=-=",
key="=?", key="=?",
touch="_?", touch="_?",
quickR="R!", reTime="3-2-1",
maxNext="=123",
layout="=-=-=",
autoPause="A||",
swap="=+=+=", swap="=+=+=",
fine="!#!X #!#", fine="!#!X #!#",
lock="?XX(=626)",
back="X", back="X",
}, },
setting_video={ setting_video={
@@ -1730,8 +1768,6 @@ local langList={
back="X", back="X",
}, },
debug={ debug={
killWTM="Kill watermark",
unlock="Unlock all",
reset="Reset?", reset="Reset?",
reset1="Reset rank", reset1="Reset rank",
reset2="Reset data", reset2="Reset data",
@@ -2003,6 +2039,17 @@ local langList={
support="支持作者", support="支持作者",
group="官方QQ群(如果没有被暗改的话就是这个):1080457319", group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
WidgetText={ WidgetText={
calculator={
_1="1",_2="2",_3="3",
_4="4",_5="5",_6="6",
_7="7",_8="8",_9="9",
_0="0",["<"]="<",["="]="=",
["+"]="+",
["-"]="-",
["*"]="*",
["/"]="/",
play="开始",
},
main={ main={
play="开始", play="开始",
setting="设置", setting="设置",
@@ -2075,15 +2122,15 @@ local langList={
graphic="←改画面", graphic="←改画面",
sound="改声音→", sound="改声音→",
ctrl="改控制", ctrl="改控制",
reTime="开局等待时间",
maxNext="最大预览数量",
autoPause="自动暂停",
layout="外观",
key="改键位", key="改键位",
touch="改触屏", touch="改触屏",
quickR="快速重新开始", reTime="开局等待时间",
maxNext="最大预览数量",
layout="外观",
autoPause="失去焦点自动暂停",
swap="组合键切换攻击模式", swap="组合键切换攻击模式",
fine="极简操作提示音", fine="极简操作提示音",
lock="家长锁(密码626)",
back="返回", back="返回",
}, },
setting_video={ setting_video={
@@ -2193,8 +2240,6 @@ local langList={
back="返回", back="返回",
}, },
debug={ debug={
killWTM="关水印",
unlock="解锁全模式",
reset="重置?", reset="重置?",
reset1="重置解锁/等级", reset1="重置解锁/等级",
reset2="重置统计", reset2="重置统计",
@@ -2356,7 +2401,6 @@ function LANG.set(l)
end end
end end
for _,s in next,drawableTextLoad do for _,s in next,drawableTextLoad do
print(s)
drawableText[s]:set(text[s]) drawableText[s]:set(text[s])
end end
collectgarbage() collectgarbage()

View File

@@ -94,6 +94,16 @@ end
local Pnt={} local Pnt={}
function Pnt.calculator()
local S=sceneTemp
gc.setLineWidth(4)
gc.rectangle("line",100,80,650,150)
setFont(45)
if S.reg then gc.printf(S.reg,0,100,720,"right")end
if S.val then gc.printf(S.val,0,150,720,"right")end
setFont(50)
if S.sym then gc.print(S.sym,126,150)end
end
function Pnt.load() function Pnt.load()
local S=sceneTemp local S=sceneTemp
gc.setLineWidth(4) gc.setLineWidth(4)
@@ -381,7 +391,6 @@ function Pnt.sequence()
gc.draw(drawableText.question,980,470) gc.draw(drawableText.question,980,470)
end end
end end
function Pnt.draw() function Pnt.draw()
local sx,sy=sceneTemp.x,sceneTemp.y local sx,sy=sceneTemp.x,sceneTemp.y
gc.translate(200,60) gc.translate(200,60)
@@ -531,10 +540,10 @@ function Pnt.play()
end end
gc.pop() gc.pop()
end end
local hexList={1,0,.5,1.732*.5,-.5,1.732*.5}for i=1,6 do hexList[i]=hexList[i]*150 end local hexList={1,0,.5,1.732*.5,-.5,1.732*.5}for i=1,6 do hexList[i]=hexList[i]*150 end
local textPos={90,131,-90,131,-200,-25,-90,-181,90,-181,200,-25} local textPos={90,131,-90,131,-200,-25,-90,-181,90,-181,200,-25}
local dataPos={90,143,-90,143,-200,-13,-90,-169,90,-169,200,-13} local dataPos={90,143,-90,143,-200,-13,-90,-169,90,-169,200,-13}
function Pnt.pause() function Pnt.pause()
local S=sceneTemp local S=sceneTemp
local T=S.timer*.02 local T=S.timer*.02
@@ -625,7 +634,7 @@ end
function Pnt.setting_game() function Pnt.setting_game()
gc.setColor(1,1,1) gc.setColor(1,1,1)
mText(drawableText.setting_game,640,15) mText(drawableText.setting_game,640,15)
gc.draw(blockSkin[int(Timer()*2)%11+1],720,540,Timer()%6.28319,2,nil,15,15) gc.draw(blockSkin[int(Timer()*2)%11+1],590,540,Timer()%6.28319,2,nil,15,15)
end end
function Pnt.setting_video() function Pnt.setting_video()
gc.setColor(1,1,1) gc.setColor(1,1,1)
@@ -646,6 +655,7 @@ function Pnt.setting_sound()
gc.draw(IMG.miyaF4,129,98+3*sin(t*.7)) gc.draw(IMG.miyaF4,129,98+3*sin(t*.7))
gc.translate(-x,-y) gc.translate(-x,-y)
end end
local function timeConv(t) local function timeConv(t)
return t.."F "..int(t*16.67).."ms" return t.."F "..int(t*16.67).."ms"
end end

View File

@@ -7,6 +7,14 @@ local scr=scr
local sceneInit={} local sceneInit={}
sceneInit.quit=love.event.quit sceneInit.quit=love.event.quit
function sceneInit.calculator()
sceneTemp={
reg=false,
val=0,
sym=false,
pass=false,
}
end
function sceneInit.load() function sceneInit.load()
sceneTemp={ sceneTemp={
phase=1,--Loading stage phase=1,--Loading stage
@@ -221,7 +229,6 @@ function sceneInit.help()
end end
function sceneInit.staff() function sceneInit.staff()
sceneTemp={ sceneTemp={
pw=0,
time=0, time=0,
v=1, v=1,
} }
@@ -337,8 +344,6 @@ function SCN.swapUpdate()
S.time=S.time-1 S.time=S.time-1
if S.time==S.mid then if S.time==S.mid then
SCN.init(S.tar,SCN.cur) SCN.init(S.tar,SCN.cur)
SCN.cur=S.tar
WIDGET.set(Widgets[S.tar])
collectgarbage() collectgarbage()
--Scene swapped this moment --Scene swapped this moment
end end
@@ -348,6 +353,8 @@ function SCN.swapUpdate()
end end
function SCN.init(s,org) function SCN.init(s,org)
if sceneInit[s]then sceneInit[s](org)end if sceneInit[s]then sceneInit[s](org)end
SCN.cur=s
WIDGET.set(Widgets[s])
end end
function SCN.push(tar,style) function SCN.push(tar,style)
if not SCN.swapping then if not SCN.swapping then

View File

@@ -52,6 +52,7 @@ function Tmr.load()
SCN.swapTo("intro","none") SCN.swapTo("intro","none")
end end
end end
loadingFinished=true
return return
end end
S.cur=S.cur+1 S.cur=S.cur+1

View File

@@ -91,13 +91,13 @@ function VOC.update()
end end
elseif Q.s==1 then--Waiting load source elseif Q.s==1 then--Waiting load source
Q[1]=getVoice(Q[1]) Q[1]=getVoice(Q[1])
Q[1]:setVolume(setting.voc*.1) Q[1]:setVolume(setting.voc*.01)
Q[1]:play() Q[1]:play()
Q.s=Q[2]and 2 or 4 Q.s=Q[2]and 2 or 4
elseif Q.s==2 then--Playing 1,ready 2 elseif Q.s==2 then--Playing 1,ready 2
if Q[1]:getDuration()-Q[1]:tell()<.08 then if Q[1]:getDuration()-Q[1]:tell()<.08 then
Q[2]=getVoice(Q[2]) Q[2]=getVoice(Q[2])
Q[2]:setVolume(setting.voc*.1) Q[2]:setVolume(setting.voc*.01)
Q[2]:play() Q[2]:play()
Q.s=3 Q.s=3
end end
@@ -121,7 +121,7 @@ function VOC.play(s,chn)
if chn then if chn then
local L=voiceQueue[chn] local L=voiceQueue[chn]
local _=VOC.list[s] local _=VOC.list[s]
if not _ then DBP("no VOC called:"..s)return end if not _ then return end
L[#L+1]=_[rnd(#_)] L[#L+1]=_[rnd(#_)]
L.s=1 L.s=1
--Add to queue[chn] --Add to queue[chn]

View File

@@ -395,7 +395,6 @@ function WIDGET.press(x,y)
W.code() W.code()
W:FX() W:FX()
SFX.play("button") SFX.play("button")
VOC.play("nya")
elseif W.type=="key"then elseif W.type=="key"then
W.code() W.code()
SFX.play("lock") SFX.play("lock")

View File

@@ -98,6 +98,25 @@ newSlider=WIDGET.newSlider
--All widgets --All widgets
local Widgets={ local Widgets={
load={},intro={},quit={}, load={},intro={},quit={},
calculator={
newKey({name="_1", x=300,y=300,w=90,h=90, color="white", font=50,code=pressKey("1")}),
newKey({name="_2", x=400,y=300,w=90,h=90, color="white", font=50,code=pressKey("2")}),
newKey({name="_3", x=500,y=300,w=90,h=90, color="white", font=50,code=pressKey("3")}),
newKey({name="_4", x=300,y=400,w=90,h=90, color="white", font=50,code=pressKey("4")}),
newKey({name="_5", x=400,y=400,w=90,h=90, color="white", font=50,code=pressKey("5")}),
newKey({name="_6", x=500,y=400,w=90,h=90, color="white", font=50,code=pressKey("6")}),
newKey({name="_7", x=300,y=500,w=90,h=90, color="white", font=50,code=pressKey("7")}),
newKey({name="_8", x=400,y=500,w=90,h=90, color="white", font=50,code=pressKey("8")}),
newKey({name="_9", x=500,y=500,w=90,h=90, color="white", font=50,code=pressKey("9")}),
newKey({name="_0", x=300,y=600,w=90,h=90, color="white", font=50,code=pressKey("0")}),
newKey({name="<", x=400,y=600,w=90,h=90, color="lRed", font=50,code=pressKey("backspace")}),
newKey({name="=", x=500,y=600,w=90,h=90, color="lYellow",font=50,code=pressKey("return")}),
newKey({name="+", x=600,y=300,w=90,h=90, color="lBlue", font=50,code=pressKey("+")}),
newKey({name="-", x=600,y=400,w=90,h=90, color="lBlue", font=50,code=pressKey("-")}),
newKey({name="*", x=600,y=500,w=90,h=90, color="lBlue", font=50,code=pressKey("*")}),
newKey({name="/", x=600,y=600,w=90,h=90, color="lBlue", font=50,code=pressKey("/")}),
newButton({name="play", x=800,y=600,w=180,h=90, color="lGreen", font=40,code=pressKey("space"),hide=function()return not sceneTemp.pass end}),
},
main={ main={
newButton({name="play", x=150,y=280,w=200,h=160,color="lRed", font=55,code=function()SCN.goto("mode")end}), newButton({name="play", x=150,y=280,w=200,h=160,color="lRed", font=55,code=function()SCN.goto("mode")end}),
newButton({name="setting", x=370,y=280,w=200,h=160,color="lBlue", font=45,code=function()SCN.goto("setting_game")end}), newButton({name="setting", x=370,y=280,w=200,h=160,color="lBlue", font=45,code=function()SCN.goto("setting_game")end}),
@@ -224,13 +243,13 @@ local Widgets={
newButton({name="touch", x=990, y=220, w=320,h=80, color="lBlue", font=35,code=function()SCN.goto("setting_touch")end}), newButton({name="touch", x=990, y=220, w=320,h=80, color="lBlue", font=35,code=function()SCN.goto("setting_touch")end}),
newSlider({name="reTime", x=350, y=340, w=300,unit=10, font=30,disp=SETval("reTime"), code=SETsto("reTime")}), newSlider({name="reTime", x=350, y=340, w=300,unit=10, font=30,disp=SETval("reTime"), code=SETsto("reTime")}),
newSlider({name="maxNext", x=350, y=440, w=300,unit=6, font=30,disp=SETval("maxNext"), code=SETsto("maxNext")}), newSlider({name="maxNext", x=350, y=440, w=300,unit=6, font=30,disp=SETval("maxNext"), code=SETsto("maxNext")}),
newSwitch({name="autoPause",x=350, y=540, font=20,disp=SETval("autoPause"),code=SETrev("autoPause")}), newButton({name="layout", x=460, y=540, w=140,h=70,color="white", font=35,code=function()
newButton({name="layout", x=590, y=540, w=140,h=70,color="white", font=35,code=function()
SCN.goto("setting_skin") SCN.goto("setting_skin")
end}), end}),
newSwitch({name="quickR", x=1050, y=320, font=35,disp=SETval("quickR"), code=SETrev("quickR")}), newSwitch({name="autoPause",x=1080, y=320, font=20,disp=SETval("autoPause"), code=SETrev("autoPause")}),
newSwitch({name="swap", x=1050, y=400, font=20,disp=SETval("swap"), code=SETrev("swap")}), newSwitch({name="swap", x=1080, y=380, font=20,disp=SETval("swap"), code=SETrev("swap")}),
newSwitch({name="fine", x=1050, y=480, font=20,disp=SETval("fine"), code=SETrev("fine")}), newSwitch({name="fine", x=1080, y=440, font=20,disp=SETval("fine"), code=SETrev("fine")}),
newSwitch({name="lock", x=1080, y=500, font=20,disp=SETval("lock"), code=SETrev("lock")}),
newButton({name="back", x=1140, y=650, w=200,h=80,color="white", font=40,code=BACK}), newButton({name="back", x=1140, y=650, w=200,h=80,color="white", font=40,code=BACK}),
}, },
setting_video={ setting_video={
@@ -278,10 +297,10 @@ local Widgets={
newButton({name="graphic", x=1080, y=80,w=240,h=80,color="lCyan",font=35,code=function()SCN.swapTo("setting_video","swipe")end}), newButton({name="graphic", x=1080, y=80,w=240,h=80,color="lCyan",font=35,code=function()SCN.swapTo("setting_video","swipe")end}),
newSlider({name="sfx", x=180, y=200,w=400,unit=100,noUnit=true,font=35,change=function()SFX.play("blip_1")end, disp=SETval("sfx"), code=SETsto("sfx")}), newSlider({name="sfx", x=180, y=200,w=400,unit=100,noUnit=true,font=35,change=function()SFX.play("blip_1")end, disp=SETval("sfx"), code=SETsto("sfx")}),
newSlider({name="stereo", x=180, y=500,w=400,unit=10, font=35,change=function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, disp=SETval("stereo"), code=SETsto("stereo"),hide=function()return setting.sfx==0 end}), newSlider({name="stereo", x=180, y=500,w=400,unit=10, font=35,change=function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, disp=SETval("stereo"), code=SETsto("stereo"),hide=function()return setting.sfx==0 end}),
newSlider({name="spawn", x=180, y=300,w=400,unit=100,noUnit=true,font=30,change=function()SFX.fplay("spawn_1",setting.spawn)end, disp=SETval("spawn"), code=SETsto("spawn")}), newSlider({name="spawn", x=180, y=300,w=400,unit=100,noUnit=true,font=30,change=function()SFX.fplay("spawn_1",setting.spawn)end, disp=SETval("spawn"), code=SETsto("spawn")}),
newSlider({name="bgm", x=180, y=400,w=400,unit=100,noUnit=true,font=35,change=function()BGM.freshVolume()end, disp=SETval("bgm"), code=SETsto("bgm")}), newSlider({name="bgm", x=180, y=400,w=400,unit=100,noUnit=true,font=35,change=function()BGM.freshVolume()end, disp=SETval("bgm"), code=SETsto("bgm")}),
newSlider({name="vib", x=750, y=200,w=400,unit=5, font=28,change=function()VIB(2)end, disp=SETval("vib"), code=SETsto("vib")}), newSlider({name="vib", x=750, y=200,w=400,unit=5, font=28,change=function()VIB(2)end, disp=SETval("vib"), code=SETsto("vib")}),
newSlider({name="voc", x=750, y=300,w=400,unit=10,font=32,change=function()VOC.play("nya")end, disp=SETval("voc"), code=SETsto("voc")}), newSlider({name="voc", x=750, y=300,w=400,unit=100,noUnit=true,font=32,change=function()VOC.play("nya")end, disp=SETval("voc"), code=SETsto("voc")}),
newButton({name="back", x=1140, y=650,w=200,h=80,color="white",font=40,code=BACK}), newButton({name="back", x=1140, y=650,w=200,h=80,color="white",font=40,code=BACK}),
}, },
setting_control={ setting_control={
@@ -458,27 +477,7 @@ local Widgets={
newButton({name="back", x=640, y=620,w=200,h=80,color="white",font=40,code=BACK}), newButton({name="back", x=640, y=620,w=200,h=80,color="white",font=40,code=BACK}),
}, },
debug={ debug={
newButton({name="killWTM", x=340,y=200,w=260,h=100,color="white",font=35, newButton({name="reset", x=640,y=200,w=260,h=100,color="yellow",font=40,
code=function()
marking=nil
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
SFX.play("clear")
end,
hide=function()
return not marking
end}),
newButton({name="unlock", x=640,y=200,w=260,h=100,color="white",font=40,
code=function()
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("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
SFX.play("clear_2")
end}),
newButton({name="reset", x=940,y=200,w=260,h=100,color="yellow",font=40,
code=function() code=function()
sceneTemp.reset=true sceneTemp.reset=true
end, end,

View File

@@ -1,4 +1,4 @@
gameVersion="Alpha V0.10.2" gameVersion="Alpha V0.10.3"
function love.conf(t) function love.conf(t)
t.identity="Techmino"--Saving folder t.identity="Techmino"--Saving folder
t.version="11.1" t.version="11.1"

View File

@@ -34,7 +34,7 @@ mapCam={
zoomMethod=nil, zoomMethod=nil,
zoomK=nil, zoomK=nil,
} }
scr={x=0,y=0,w=0,h=0,rad=0,k=1}--wid,hei,radius,scale K scr={x=0,y=0,w=0,h=0,W=0,H=0,rad=0,k=1}--wid,hei,radius,scale K
customSel={1,22,1,1,7,3,1,1,8,4,1,1,1} customSel={1,22,1,1,7,3,1,1,8,4,1,1,1}
preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
@@ -121,12 +121,12 @@ end
--Update data file --Update data file
S=stat S=stat
if S.version=="Alpha V0.9.1"or type(setting.spawn)~="number"then if type(setting.spawn)~="number"then
setting.spawn=0 setting.spawn=0
end end
if S.version~=gameVersion then if S.version~=gameVersion then
S.version=gameVersion S.version=gameVersion
TEXT.show(text.newBigVersion,640,200,30,"fly",.3) TEXT.show(text.newVersion,640,200,30,"fly",.3)
newVersionLaunch=true newVersionLaunch=true
fs.remove("sprintPenta.dat") fs.remove("sprintPenta.dat")

View File

@@ -1,4 +1,4 @@
local min=math.random,math.min local min=math.min
local function check_c4w(P) local function check_c4w(P)
for i=1,#P.clearedRow do for i=1,#P.clearedRow do
P.field[#P.field+1]=freeRow.get(13) P.field[#P.field+1]=freeRow.get(13)
@@ -59,7 +59,7 @@ return{
if L==100 then if L==100 then
local T=P.stat.time local T=P.stat.time
return return
T<=36 and 5 or T<=40 and 5 or
T<=60 and 4 or T<=60 and 4 or
3 3
else else

View File

@@ -18,8 +18,9 @@ return{
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)
local P=players[1]
for _=1,8 do for _=1,8 do
players[1]:garbageRise(13,1,P:RND(10)) P:garbageRise(13,1,P:RND(10))
end end
end, end,
mesDisp=function(P,dx,dy) mesDisp=function(P,dx,dy)

View File

@@ -3,12 +3,14 @@ setting={
das=10,arr=2, das=10,arr=2,
sddas=0,sdarr=2, sddas=0,sdarr=2,
ihs=true,irs=true,ims=true, ihs=true,irs=true,ims=true,
reTime=4,
maxNext=6, maxNext=6,
autoPause=true,
quickR=true,
swap=true, swap=true,
--System
reTime=4,
autoPause=true,
fine=false, fine=false,
lock=false,
lang=1, lang=1,
skinSet=1, skinSet=1,
skin={1,5,8,2,10,3,7,1,5,1,5,8,2,10,3,7,10,7,8,2,8,2,1,5,3}, skin={1,5,8,2,10,3,7,1,5,1,5,8,2,10,3,7,10,7,8,2,8,2,1,5,3},

View File

@@ -263,11 +263,13 @@ function pauseGame()
if not game.result then if not game.result then
game.pauseCount=game.pauseCount+1 game.pauseCount=game.pauseCount+1
end end
for i=1,#players do if not game.replaying then
local l=players[i].keyPressing for i=1,#players do
for j=1,#l do local l=players[i].keyPressing
if l[j]then for j=1,#l do
players[i]:releaseKey(j) if l[j]then
players[i]:releaseKey(j)
end
end end
end end
end end

View File

@@ -68,7 +68,7 @@ if setting.lang==1 or setting.lang==2 then
"戴上耳机以获得最佳体验", "戴上耳机以获得最佳体验",
"大满贯10连击消四全清!", "大满贯10连击消四全清!",
"打好块没有捷径,多练", "打好块没有捷径,多练",
"车车人在此", "你可以长按R键重新开始游戏(也不是很长)",
"茶娘 可爱!", "茶娘 可爱!",
"草(日本语)", "草(日本语)",
"不要在上课时玩游戏!", "不要在上课时玩游戏!",
@@ -143,6 +143,7 @@ elseif setting.lang==3 then
"Hello world!", "Hello world!",
"Headphones for better experience", "Headphones for better experience",
"Have you noticed what does \"rotating\" do to block?", "Have you noticed what does \"rotating\" do to block?",
"Hold R key to restart game",
"Find out what's in the setting!", "Find out what's in the setting!",
"Enjoy Tech. Rotation System!", "Enjoy Tech. Rotation System!",
"e^(pi*i/2)=i", "e^(pi*i/2)=i",
@@ -196,31 +197,32 @@ elseif setting.lang==5 then
local R=math.random() local R=math.random()
if R<.05 then if R<.05 then
local time={ local time={
"大半夜的在这干啥呢?不睡觉是会猝死的", --[[00]]"大半夜的在这干啥呢?不睡觉是会猝死的",
"大半夜的在这干啥呢?不睡觉是会猝死的", --[[01]]"大半夜的在这干啥呢?不睡觉是会猝死的",
"现在打块你是认真的?", --[[02]]"现在打块你是认真的?",
"现在打块你是认真的?", --[[03]]"现在打块你是认真的?",
"早起是好的,但是你不应该打块", --[[04]]"早起是好的,但是你不应该打块",
"早起是好的,但是你不应该打块", --[[05]]"早起是好的,但是你不应该打块",
"早饭吃好了?", --[[06]]"早饭吃好了?",
"早饭吃好了?", --[[07]]"早饭吃好了?",
"九点多了,没自己的事情要做?", --[[08]]"九点多了,没自己的事情要做?",
"十点多了,没自己的事情要做?", --[[09]]"十点多了,没自己的事情要做?",
"十一点多了,午饭有的吃么", --[[10]]"十一点多了,午饭有的吃么",
"十二点多了,午饭有的吃么", --[[11]]"十二点多了,午饭有的吃么",
"累了累了,现在不想说你", --[[12]]"累了累了,现在不想说你",
"累了累了,现在不想说你", --[[13]]"累了累了,现在不想说你",
"累了累了,现在不想说你", --[[14]]"累了累了,现在不想说你",
"累了累了,现在不想说你", --[[15]]"累了累了,现在不想说你",
"累了累了,现在不想说你", --[[16]]"累了累了,现在不想说你",
"晚饭吃好了?", --[[17]]"晚饭吃好了?",
"晚饭吃好了?", --[[18]]"晚饭吃好了?",
"累了累了,现在不想说你", --[[19]]"累了累了,现在不想说你",
"累了累了,现在不想说你", --[[20]]"累了累了,现在不想说你",
"好睡了,作息健康活得久", --[[21]]"好睡了,作息健康活得久",
"大半夜的在这干啥呢?不睡觉是会猝死的", --[[22]]"好睡了,作息健康活得久",
--[[23]]"大半夜的在这干啥呢?不睡觉是会猝死的",
} }
return time[os.date("%H")] return time[tonumber(os.date("%H"))+1]
elseif true or R<.1 then elseif true or R<.1 then
local int=math.floor local int=math.floor
L={ L={
@@ -260,6 +262,7 @@ elseif setting.lang==5 then
"0202年了,还在玩这种小孩子玩的游戏?", "0202年了,还在玩这种小孩子玩的游戏?",
"天天卖弱,你一定把把150apm吧?", "天天卖弱,你一定把把150apm吧?",
"别会个c4w就以为自己多强,这是基本功罢了", "别会个c4w就以为自己多强,这是基本功罢了",
"少玩点,多眨眼,到时候瞎了别怪我没提醒你",
} }
end end
end end

View File

@@ -5,13 +5,15 @@ local int,ceil,abs,rnd,max,min=math.floor,math.ceil,math.abs,math.random,math.ma
local ins,rem=table.insert,table.remove local ins,rem=table.insert,table.remove
local format=string.format local format=string.format
local scr=scr--Screen camera local scr=scr--Screen camera
local setFont=setFont
--------------------------<GameData>-------------------------- --------------------------<GameData>--------------------------
local gameEnv0={ local gameEnv0={
noFly=false, noFly=false,
das=10,arr=2, das=10,arr=2,
sddas=2,sdarr=2, sddas=2,sdarr=2,
ihs=true,irs=true,ims=true, ihs=true,irs=true,ims=true,
quickR=true,swap=true, swap=true,
ghost=true,center=true, ghost=true,center=true,
smooth=false,grid=false, smooth=false,grid=false,
bagLine=false, bagLine=false,
@@ -688,9 +690,9 @@ local function Pdraw_norm(P)
if P.lockDelay>=0 then if P.lockDelay>=0 then
gc.rectangle("fill",0,602,300*P.lockDelay/P.gameEnv.lock,6)--Lock delay indicator gc.rectangle("fill",0,602,300*P.lockDelay/P.gameEnv.lock,6)--Lock delay indicator
end end
_=10 _=3
for i=1,min(P.gameEnv.freshLimit-P.freshTime,15)do for i=1,min(P.gameEnv.freshLimit-P.freshTime,15)do
gc.circle("fill",_,615,5) gc.rectangle("fill",_,615,14,5)
_=_+20 _=_+20
end end
@@ -1136,7 +1138,7 @@ function player.finesseError(P,rate)
SFX.play("finesseError_long",.6) SFX.play("finesseError_long",.6)
P:lose() P:lose()
elseif setting.fine then elseif setting.fine then
SFX.play("finesseError",.3) SFX.play("finesseError",.8)
end end
elseif P.gameEnv.fineKill then elseif P.gameEnv.fineKill then
P:lose() P:lose()
@@ -1197,9 +1199,11 @@ function player.garbageRise(P,color,amount,pos)
P.field[1][pos]=0 P.field[1][pos]=0
end end
P.fieldBeneath=P.fieldBeneath+amount*30 P.fieldBeneath=P.fieldBeneath+amount*30
P.curY=P.curY+amount if P.cur then
P.curY=P.curY+amount
P.imgY=P.imgY+amount
end
P.garbageBeneath=P.garbageBeneath+amount P.garbageBeneath=P.garbageBeneath+amount
P.imgY=P.imgY+amount
for i=1,#P.clearingRow do for i=1,#P.clearingRow do
P.clearingRow[i]=P.clearingRow[i]+amount P.clearingRow[i]=P.clearingRow[i]+amount
end end
@@ -2029,6 +2033,7 @@ end
--------------------------<Events>-------------------------- --------------------------<Events>--------------------------
local function gameOver()--Save record local function gameOver()--Save record
if game.replaying then return end
FILE.saveData() FILE.saveData()
local M=curMode local M=curMode
local R=M.getRank local R=M.getRank
@@ -2342,7 +2347,7 @@ function player.act.func(P)
P.gameEnv.Fkey(P) P.gameEnv.Fkey(P)
end end
function player.act.restart(P) function player.act.restart(P)
if P.gameEnv.quickR or game.frame<180 then if game.frame<240 or game.result then
TASK.removeTask_code(TICK.autoPause) TASK.removeTask_code(TICK.autoPause)
resetPartGameData() resetPartGameData()
end end
@@ -2687,7 +2692,7 @@ function PLY.newDemoPlayer(id,x,y,size)
noFly=false, noFly=false,
das=10,arr=2, das=10,arr=2,
sddas=2,sdarr=2, sddas=2,sdarr=2,
quickR=true,swap=true, swap=true,
ghost=setting.ghost,center=setting.center, ghost=setting.ghost,center=setting.center,
smooth=setting.smooth,grid=setting.grid, smooth=setting.smooth,grid=setting.grid,
text=setting.text, text=setting.text,

View File

@@ -56,7 +56,6 @@ Future outlook:
mine sweeper mine sweeper
tank battle tank battle
new AI: task-Z new AI: task-Z
self protection
cool backgrounds cool backgrounds
'Encrypt'(compile to byte code) 'Encrypt'(compile to byte code)
better drop FX better drop FX
@@ -70,11 +69,30 @@ Future outlook:
more graphic FXs & 3D features & animations more graphic FXs & 3D features & animations
network game network game
0.10.3: 软件锁 APP Lock
新内容:
设置增加软件锁选项,打开游戏后进入伪装界面
改动:
剩余锁延重置次数指示器改为长方形
debug界面改为重置界面,进入方法修改
游戏设置页面布局更改
语音音量条改为无刻度
取消快速重开设置,游戏过程中长按重开,结束后开局一秒内点击重开
修复:
无尽挖掘报错
极简错误提示声音太小
修复回放也计入排行榜
回放时暂停不打断玩家操作
c4w练习的lunatic分数bug
0.10.2: 锁延修复 Lock Delay Fixed 0.10.2: 锁延修复 Lock Delay Fixed
改动: 改动:
锁延机制再修正 锁延机制再修正
"失败"字样改为"游戏结束" "失败"改为"游戏结束"
修复: 修复:
纠正部分rank文件转换错误
模式文件使用玩家的随机器以正确回放
游戏结束后马上暂停并解除还会自动暂停
改设置后回放错误 改设置后回放错误
字库缺字 字库缺字