diff --git a/BGM/hay what kind of feeling.ogg b/BGM/hay what kind of feeling.ogg new file mode 100644 index 00000000..16d576e1 Binary files /dev/null and b/BGM/hay what kind of feeling.ogg differ diff --git a/callback.lua b/callback.lua index c493b3c3..c8c93e91 100644 --- a/callback.lua +++ b/callback.lua @@ -120,7 +120,7 @@ function keyDown.load(k) sceneTemp.skip=true end end -function touchDown.load() +function touchDown.load(id,x,y) if #tc.getTouches()==2 then sceneTemp.skip=true end @@ -669,17 +669,43 @@ function touchDown.help(id,x,y) sceneTemp.pw=pw end -function keyDown.staff(key) +function keyDown.staff(key,RESET) if key=="escape"then SCN.back() elseif key=="\122"then - if kb.isDown("\109")and kb.isDown("\114")then - sceneTemp.v=-2.6 + if kb.isDown("\109")and kb.isDown("\114")or RESET 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 + TEXT.show("RESET ALL DATA?",640,200,40,"appear",.3,.2) + elseif sceneTemp.ct==26 then + local L=love.filesystem.getDirectoryItems("") + for i=1,#L do + local s=L[i] + if s:sub(-4)==".dat"then + love.filesystem.remove(s) + end + end + SFX.play("lock") + SFX.play("clear_4") + SFX.play("finesseError_long") + SCN.back() + TEXT.clear() + end + sceneTemp.v=-6.26 marking=nil SFX.play("reach") end end end +function touchDown.staff(id,x,y) + if #tc.getTouches()==5 then + keyDown.staff('\122',true) + end +end function wheelMoved.history(x,y) wheelScroll(y) diff --git a/conf.lua b/conf.lua index 9b424a81..1e29a6ed 100644 --- a/conf.lua +++ b/conf.lua @@ -1,4 +1,4 @@ -gameVersion="Alpha V0.8.22" +gameVersion="Alpha V0.8.23" function love.conf(t) t.identity="Techmino"--folder name t.version="11.1" diff --git a/font.ttf b/font.ttf index 88057032..22b1a683 100644 Binary files a/font.ttf and b/font.ttf differ diff --git a/modes/dig_ultimate.lua b/modes/dig_ultimate.lua index 48fbe539..3b239ca9 100644 --- a/modes/dig_ultimate.lua +++ b/modes/dig_ultimate.lua @@ -9,7 +9,7 @@ return{ local D=P.modeData D.counter=D.counter+1 if D.counter>=max(30,80-.3*D.event)then - P:garbageRise(11+D.event%3,1,rnd(10)) + P:garbageRise(13+D.event%5,1,rnd(10)) P.stat.recv=P.stat.recv+1 D.counter=0 D.event=D.event+1 diff --git a/paint.lua b/paint.lua index f838ec98..1d6ffe75 100644 --- a/paint.lua +++ b/paint.lua @@ -418,7 +418,7 @@ function Pnt.play() gc.origin() if restartCount>0 then gc.setColor(0,0,0,restartCount*.05) - gc.rectangle("fill",0,0,scr.w,scr.h) + gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi) end if game.warnLVL>0 then gc.setColor(0,0,0,0) @@ -443,7 +443,7 @@ function Pnt.pause() gc.setColor(.15,.15,.15,_) gc.push("transform") gc.origin() - gc.rectangle("fill",0,0,scr.w,scr.h) + gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi) gc.pop() --Pause Info @@ -692,7 +692,6 @@ end function Pnt.staff() local L=text.staff local t=sceneTemp.time - if t>45 then t=45 end if t>0 then setFont(40) for i=1,#L do diff --git a/parts/bgm.lua b/parts/bgm.lua index f5440e0a..b537bbc8 100644 --- a/parts/bgm.lua +++ b/parts/bgm.lua @@ -10,6 +10,7 @@ BGM.list={ "secret7th","secret8th", "shining terminal","oxygen","distortion","far", "rockblock","cruelty","final","8-bit happiness","end", + "hay what kind of feeling", } BGM.len=#BGM.list function BGM.loadOne(N) diff --git a/parts/default_data.lua b/parts/default_data.lua index bd4ebaa5..90e03840 100644 --- a/parts/default_data.lua +++ b/parts/default_data.lua @@ -58,7 +58,8 @@ s={ key=0,rotate=0,hold=0, extraPiece=0,extraRate=0, piece=0,row=0,dig=0, - atk=0,digatk=0,send=0,recv=0,pend=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}, pc=0,hpc=0,b2b=0,b3b=0,score=0, diff --git a/parts/file.lua b/parts/file.lua index 58dd4148..6f946a7d 100644 --- a/parts/file.lua +++ b/parts/file.lua @@ -200,6 +200,9 @@ function File.loadData() 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 + S.off=S.recv-S.pend + end if #modeRanks==76 then for i=1,4 do table.remove(modeRanks) diff --git a/parts/kickList.lua b/parts/kickList.lua index cfc9b9c1..23dbf239 100644 --- a/parts/kickList.lua +++ b/parts/kickList.lua @@ -63,9 +63,9 @@ local OspinList={ {323,6,0,-1,-1,2},{332,6,0,-2,-1,2},{322,6,0,-1,-2,2},--O }--{key,id,dir,dx,dy,freeLv(0=unmovable,1=L/R unmovable,2=free)} local XspinList={ - {{ 1,-1},{ 1, 0},{ 1, 1}}, - {{ 0,-1},{ 0,-2},{ 0, 1}}, - {{-1,-1},{-1, 0},{-1, 1}}, + {{ 1,-1},{ 1, 0},{ 1, 1},{ 1,-2},{ 1, 2}}, + {{ 0,-1},{ 0,-2},{ 0, 1},{ 0,-2},{ 0, 2}}, + {{-1,-1},{-1, 0},{-1, 1},{-1,-2},{-1, 2}}, } local TRS={ { diff --git a/parts/languages.lua b/parts/languages.lua index 328f776c..6a14042a 100644 --- a/parts/languages.lua +++ b/parts/languages.lua @@ -155,11 +155,11 @@ local langList={ "", "使用LOVE2D引擎", "", - "程序:MrZ, (FinnTenzor)", + "程序:MrZ, FinnTenzor", "美术:MrZ, (Gnyar)", "音乐:MrZ, (T0722)", "音效:MrZ", - "语音:Miya, (MrZ)", + "语音:Miya, MrZ", "", "特别感谢:", "Flyz, Farter, 蕴空之灵,", @@ -580,11 +580,11 @@ local langList={ "", "使用LOVE2D引擎", "", - "程序:MrZ, (FinnTenzor)", + "程序:MrZ, FinnTenzor", "美术:MrZ, (Gnyar)", "音乐:MrZ, (T0722)", "音效:MrZ", - "语音:Miya, (MrZ)", + "语音:Miya, MrZ", "", "特别感谢:", "Flyz, Farter, 蕴空之灵,", @@ -1002,11 +1002,11 @@ local langList={ "", "Powered by LOVE2D", "", - "Program: MrZ, (FinnTenzor)", + "Program: MrZ, FinnTenzor", "Art: MrZ, (Gnyar)", "Music: MrZ, (T0722)", "Sound: MrZ", - "Voice: Miya, (MrZ)", + "Voice: Miya, MrZ", "", "Secial Thanks:", "Flyz, Farter, 蕴空之灵,", @@ -1416,11 +1416,11 @@ local langList={ "", "Powered by LOVE2D", "", - "Program: MrZ, (FinnTenzor)", + "Program: MrZ, FinnTenzor", "Art: MrZ, (Gnyar)", "Music: MrZ, (T0722)", "Sound: MrZ", - "Voice: Miya, (MrZ)", + "Voice: Miya, MrZ", "", "Secial Thanks:", "Flyz, Farter, 蕴空之灵,", diff --git a/player.lua b/player.lua index 9615b76d..6995edad 100644 --- a/player.lua +++ b/player.lua @@ -957,7 +957,8 @@ local function getNewStatTable() key=0,rotate=0,hold=0, extraPiece=0,extraRate=0, piece=0,row=0,dig=0, - atk=0,digatk=0,send=0,recv=0,pend=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}, pc=0,hpc=0,b2b=0,b3b=0, @@ -1337,11 +1338,12 @@ function player.drop(P)--Place piece local STAT=P.stat local clear--if (perfect)clear local cc,gbcc=0,0--row/garbage-row cleared,full-part - local atk,send=0,0--Send&Send Time - local exblock=0--extra defense - local cscore,sendTime=0,0 + local atk,exblock=0,0--attack & extra defense + local send,off=0,0--sending lines remain & offset + local cscore,sendTime=0,0--score & send Time local dospin=0 local mini + --spin check if P.spinLast then if P.cur.id<6 then @@ -1470,8 +1472,7 @@ function player.drop(P)--Place piece if not finesse then--finesse: control if dospin then P.ctrlCount=P.ctrlCount-2 end--allow 2 more step for roof-less spin local id=P.cur.id - local dir=P.dir+1 - local d=P.ctrlCount-finesseList[id][dir][P.curX] + local d=P.ctrlCount-finesseList[id][P.dir+1][P.curX] if d>=2 then P:fineError(2) elseif d>0 then P:fineError(d) end--not finesse @@ -1595,7 +1596,7 @@ function player.drop(P)--Place piece sendTime=sendTime+25*cmb if cmb>1 then atk=atk+(gbcc>0 and(DigComboAtk[cmb]or 5)or(WidComboAtk[cmb]or 2)) - P:showText(text.cmb[min(cmb,20)],0,25,15+min(cmb,25)*3,cmb<10 and"appear"or"flicker") + P:showText(text.cmb[min(cmb,21)],0,25,15+min(cmb,25)*3,cmb<10 and"appear"or"flicker") cscore=cscore+min(20*cmb,300)*cc end @@ -1614,6 +1615,7 @@ function player.drop(P)--Place piece if exblock then exblock=int(exblock*(1+P.strength*.25))end send=int(send*(1+P.strength*.25)) --Badge Buff + if send>0 then P:showText(send,0,80,35,"zoomout") if exblock>0 then @@ -1631,12 +1633,15 @@ function player.drop(P)--Place piece if not A then goto E end until not A.sent if send>=A.amount then - send=send-A.amount - P.atkBuffer.sum=P.atkBuffer.sum-A.amount + local O=A.amount--cur Offset + send=send-O + P.atkBuffer.sum=P.atkBuffer.sum-O + off=off+O A.sent,A.time=true,0 if send>0 then goto R end else A.amount=A.amount-send + off=off+send P.atkBuffer.sum=P.atkBuffer.sum-send send=0 end @@ -1718,6 +1723,9 @@ function player.drop(P)--Place piece if send>0 then STAT.send=STAT.send+int(send) end + if off>0 then + STAT.off=STAT.off+off + end end if gbcc>0 then STAT.dig=STAT.dig+gbcc @@ -1875,7 +1883,6 @@ function player.lose(P) if modeEnv.royaleMode then P:changeAtk() P.modeData.event=#players.alive+1 - P:showTextF(P.modeData.event,0,-120,60,"appear",1,12) P.strength=0 if P.lastRecv then local A,i=P,0 @@ -1901,6 +1908,7 @@ function player.lose(P) else P.badge=-1 end + freshMostDangerous() for i=1,#players.alive do if players.alive[i].atking==P then @@ -1910,14 +1918,21 @@ function player.lose(P) if #players.alive==royaleData.stage[game.stage]then royaleLevelup() end + P:showTextF(P.modeData.event,0,120,60,"appear",.26,.9) end P.gameEnv.keepVisible=P.gameEnv.visible~="show" - P:showTextF(text.lose,0,0,90,"appear",.5,.2) + P:showTextF(text.lose,0,0,90,"appear",.26,.9) if P.human then game.result="lose" SFX.play("fail") VOC.play("lose") - if modeEnv.royaleMode then BGM.play("end")end + if modeEnv.royaleMode then + if P.modeData.event==2 then + BGM.play("hay what kind of feeling") + else + BGM.play("end") + end + end gameOver() TASK.new(#players>1 and tickEvent.lose or tickEvent.finish,P) end @@ -2208,7 +2223,6 @@ local function newEmptyPlayer(id,x,y,size) for k,v in next,player do P[k]=v end P.small=false - P.keyRec=false--if calculate keySpeed P.life=0 P.alive=true P.control=false diff --git a/scene.lua b/scene.lua index 7312f353..719e5f0b 100644 --- a/scene.lua +++ b/scene.lua @@ -123,8 +123,8 @@ function sceneInit.pause(org) --from right-down, 60 degree each radar={ - (S.recv-S.pend+S.dig)/S.time*60,--DefPM - (S.recv-S.pend)/S.time*60, --OffPM + (S.off+S.dig)/S.time*60,--DefPM + (S.off)/S.time*60, --OffPM S.atk/S.time*60, --AtkPM S.send/S.time*60, --SendPM S.piece/S.time*24, --LinePM @@ -214,6 +214,7 @@ function sceneInit.staff() sceneTemp={ time=0, v=1, + ct=0, } BG.set("space") end @@ -231,7 +232,7 @@ function sceneInit.stat() toTime(S.time), S.key.." "..S.rotate.." "..S.hold, S.piece.." "..S.row.." "..int(S.atk), - S.recv.." "..(S.recv-S.pend).." "..S.pend, + S.recv.." "..S.off.." "..S.pend, S.dig.." "..int(S.digatk), format("%.2f %.2f",S.atk/S.row,S.digatk/S.dig), format("%d/%.3f%%",S.extraPiece,100*max(1-S.extraRate/S.piece,0)), @@ -259,17 +260,17 @@ local swap={ fade={30,15,function(t) local t=t>15 and 2-t/15 or t/15 gc.setColor(0,0,0,t) - gc.rectangle("fill",0,0,scr.w,scr.h) + gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi) end}, fade_togame={120,20,function(t) local t=t>20 and (120-t)/100 or t/20 gc.setColor(0,0,0,t) - gc.rectangle("fill",0,0,scr.w,scr.h) + gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi) end}, slowFade={180,90,function(t) local t=t>90 and 2-t/90 or t/90 gc.setColor(0,0,0,t) - gc.rectangle("fill",0,0,scr.w,scr.h) + gc.rectangle("fill",0,0,scr.w*scr.dpi,scr.h*scr.dpi) end}, }--Scene swapping animations local backFunc={ diff --git a/timer.lua b/timer.lua index b953a21b..8ed68870 100644 --- a/timer.lua +++ b/timer.lua @@ -319,5 +319,10 @@ function Tmr.staff(dt) S.v=S.v-.26 end S.time=S.time+S.v*dt + if S.time>45 then + S.time=45 + elseif S.time<-10 then + S.time=-10 + end end return Tmr \ No newline at end of file diff --git a/updateLog.lua b/updateLog.lua index 77341d51..bfdcf2bc 100644 --- a/updateLog.lua +++ b/updateLog.lua @@ -6,7 +6,8 @@ local S=[=[ 弥佑瑶 Alan 幽灵3383 - [rmb10+]: + 靏鸖龘龘 + [rmb10+]: 八零哥 蕴空之灵 gggf127 @@ -16,6 +17,7 @@ local S=[=[ 金巧 10元 立斐 + Deep_Sea 时雪 yyangdid sfqr @@ -44,15 +46,16 @@ local S=[=[ TCV100 tech有养成系统了@7065 HAGE KANOBU + 闪电和拐棍 葡萄味的曼妥思 - (闪电和拐棍) - (D*a) + 世界沃德 Thanks!!! Future outlook: New mode: - tutorial + game tutorial + finesse tutorial game Abbr. test backfire finesse exam(3next, 1pt/mino, drop to score) @@ -65,10 +68,10 @@ Future outlook: task survival dig practice dig zen - symmetry - hidden mode: sound only + sprint_symmetry + hidden: sound only reverb mode (often repeat a piece many times) - 4 keys limit per piece + KPP-locked mode Other: mod system with: block hidden @@ -78,7 +81,12 @@ Future outlook: next hidden field flip(LR/UD) no fail(∞ lives) + mini games: + 15 puzzle + mine sweeper + 2048 简易防沉迷系统 + next SFX better drop FX 60+ fps supporting in-game document @@ -94,6 +102,17 @@ Future outlook: network game new AI: task-Z +0.8.23: Details Update + new: + new hidden BGM: Hay what kind of feeling + now can reset all data (hidden) + changed: + add a stat "offset", used to avoid strange radar chart in Attack Mode, show in total stat page only + 6 more X-spin-wallkick added + fixed: + speed dial do not moving + do not show 20+ combo + 0.8.22: Shader Update new: new background: aura (using shader) @@ -394,7 +413,7 @@ Future outlook: fixed: many bugs -0.8.4: Miya Update+ +0.8.4: Miya Update II changed: vocal more natural(important, may cause new bug) a bit better performence on mobile devices