From 73bf4e301ff59779108ec96539e5e89e3e99824c Mon Sep 17 00:00:00 2001 From: MrZ_26 <1046101471@qq.com> Date: Sat, 30 Nov 2024 06:57:48 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90WIP=E3=80=91tspin=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=94=B9=E4=B8=BAspin=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/game/exteriorMap.lua | 8 +- assets/game/mechanicLib/brik/chargeLimit.lua | 478 +++++++++++++----- assets/game/mechanicLib/brik/misc.lua | 6 +- assets/game/mode/brik/exterior/spin.lua | 87 ++++ assets/game/mode/brik/exterior/sprint.lua | 6 +- .../exterior/{tspin.lua => tspin_legacy.lua} | 14 +- assets/language/lang_en.lua | 15 +- assets/language/lang_eo.lua | 12 +- assets/language/lang_it.lua | 12 +- assets/language/lang_zh.lua | 15 +- assets/progress.lua | 7 + 11 files changed, 490 insertions(+), 170 deletions(-) create mode 100644 assets/game/mode/brik/exterior/spin.lua rename assets/game/mode/brik/exterior/{tspin.lua => tspin_legacy.lua} (87%) diff --git a/assets/game/exteriorMap.lua b/assets/game/exteriorMap.lua index 65126a9c..bbcd3f43 100644 --- a/assets/game/exteriorMap.lua +++ b/assets/game/exteriorMap.lua @@ -15,7 +15,7 @@ local tau=MATH.tau ---| 'sprint' ---| 'sequence' ---| 'invis' ----| 'tspin' +---| 'spin' ---| 'marathon' ---| 'allclear' ---| 'combo' @@ -35,7 +35,7 @@ local modes={ {pos={25,35,00},selColor=COLOR.lP,name='sprint'}, {pos={25,50,00},selColor=COLOR.lP,name='sequence'}, {pos={25,65,15},selColor=COLOR.lP,name='invis'}, - {pos={25,50,15},selColor=COLOR.lP,name='tspin'}, + {pos={25,50,15},selColor=COLOR.lP,name='spin'}, {pos={45,45,00},selColor=COLOR.lP,name='marathon'}, {pos={45,60,00},selColor=COLOR.lP,name='allclear'}, @@ -67,7 +67,7 @@ local modes_str={} for i=1,#modes do modes_str[modes[i].name]=modes[i] end local bridgeLinks={ 'marathon - dig - sprint - marathon', - 'sprint - tspin', + 'sprint - spin', 'sprint - invis', 'sprint - sequence', 'marathon - hypersonic', @@ -75,7 +75,7 @@ local bridgeLinks={ 'marathon - allclear', 'dig - excavate - backfire', 'dig - drill - survivor', - 'tspin - chain', + 'spin - chain', 'drill - action', } local bridges={} diff --git a/assets/game/mechanicLib/brik/chargeLimit.lua b/assets/game/mechanicLib/brik/chargeLimit.lua index f42b0158..e4518de9 100644 --- a/assets/game/mechanicLib/brik/chargeLimit.lua +++ b/assets/game/mechanicLib/brik/chargeLimit.lua @@ -1,9 +1,348 @@ +local max=math.max local gc=love.graphics +local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth +local gc_rectangle,gc_circle,gc_polygon=gc.rectangle,gc.circle,gc.polygon + +local mRect=GC.mRect ---@type Map local chargeLimit={} -do -- tspin +do -- techrash + local initPower=3 + local initSidePower=0 + local maxPower=6 + local maxSidePower=4 + local sidePowerRate=0.5 + local maxCharge=6 + + function chargeLimit.techrash_event_playerInit(P) + P.modeData.techrash=0 + P.modeData.chargePower=initPower + P.modeData.sidePower=initSidePower + P.modeData.techrashInfo={} + end + function chargeLimit.techrash_event_always(P) + for _,v in next,P.modeData.techrashInfo do + if v._charge~=v.charge then + if v._charge1 then + local n=P.modeData.techrash + P:playSound('charge', + n<=2 and 1 or + n<=4 and 2 or + n<=6 and 3 or + n<=8 and 4 or + n<=10 and 5 or + n<=13 and 6 or + n<=16 and 7 or + n<=19 and 8 or + n<=22 and 9 or + n<=25 and 10 or + 11 + ) + end + if not list[x] then list[x]={charge=0,_charge=0} end + if list[x].charge>=maxCharge then + list[x].dead=true + P:finish('rule') + else + for k,v in next,list do + if k~=x then + v.charge=max(v.charge-1,0) + end + end + end + list[x].charge=list[x].charge+P.modeData.chargePower + if not list[x-1] then list[x-1]={charge=0,_charge=0} end + list[x-1].charge=list[x-1].charge+math.floor(P.modeData.sidePower/2) + if not list[x+1] then list[x+1]={charge=0,_charge=0} end + list[x+1].charge=list[x+1].charge+math.floor(P.modeData.sidePower/2) + + local r1,r2=P.modeData.chargePower,P.modeData.sidePower/sidePowerRate + if P.modeData.chargePower>=maxPower then r1=0 end + if P.modeData.sidePower>=maxSidePower then r2=0 end + if r1*r2>0 then r1,r2=r1>=r2 and 1 or 0,r2>=r1 and 1 or 0 end + if r1>0 then + P.modeData.sidePower=P.modeData.sidePower+1 + elseif r2>0 then + P.modeData.chargePower=P.modeData.chargePower+1 + end + else + P:finish('rule') + end + end + function chargeLimit.techrash_event_drawBelowMarks(P) + local t=love.timer.getTime() + for k,v in next,P.modeData.techrashInfo do + if v._charge>0 or v.dead then + local x=40*k-20 + local chargeRate=v._charge/maxCharge + local barHeight=chargeRate*P.settings.fieldW*80 + if v.dead then + if t%.2<.1 then + gc_setColor(.6,.4,.8,.626) + else + gc_setColor(.6,.6,.6,.42) + end + gc_rectangle('fill',x-15,0,30,-barHeight) + else + if chargeRate<1 then + gc_setColor(.8,0,0,.3+.06*math.sin(t*2+k)) + elseif t%.2<.1 then + gc_setColor(.8,.4,.4,.626) + else + gc_setColor(.6,.6,.6,.42) + end + gc_rectangle('fill',x-15,0,30,-barHeight) + gc_setColor(1,1,1,.42) + gc_rectangle('fill',x-15,-barHeight,30,2) + end + end + end + end + function chargeLimit.techrash_event_drawOnPlayer(P) + P:drawInfoPanel(-380,-60,160,120) + FONT.set(80) GC.mStr(P.modeData.techrash,-300,-70) + FONT.set(30) GC.mStr(Text.target_techrash,-300,15) + end +end + +do -- spin + function chargeLimit.spin_event_playerInit(P) + P.modeData.spinClear=0 + P:addEvent('afterClear',{-1e99,chargeLimit.spin_event_afterClear}) + end + function chargeLimit.spin_event_afterClear(P,clear) + if P.lastMovement.immobile then + P.modeData.spinClear=P.modeData.spinClear+clear.line + end + end + + local styles={ + {name='I',id=7,x=-300,y=-60-40*3,w=160,h=30,color=RGB9 [488], colorDanger=RGB9 [233]}, + {name='L',id=4,x=-300,y=-60-40*2,w=160,h=30,color=RGB9 [864], colorDanger=RGB9 [332]}, + {name='J',id=3,x=-300,y=-60-40*1,w=160,h=30,color=RGB9 [448], colorDanger=RGB9 [223]}, + {name='O',id=6,x=-300,y= 00+00*0,w=160,h=60,color=RGBA9[8843],colorDanger=RGBA9[3323]}, + {name='Z',id=1,x=-300,y= 60+40*1,w=160,h=30,color=RGB9 [844], colorDanger=RGB9 [322]}, + {name='S',id=2,x=-300,y= 60+40*2,w=160,h=30,color=RGB9 [484], colorDanger=RGB9 [232]}, + {name='T',id=5,x=-300,y= 60+40*3,w=160,h=30,color=RGB9 [748], colorDanger=RGB9 [423]}, + } + local colorToID={ + [defaultBrikColor[1]]=1, + [defaultBrikColor[2]]=2, + [defaultBrikColor[3]]=3, + [defaultBrikColor[4]]=4, + [defaultBrikColor[5]]=5, + [defaultBrikColor[6]]=6, + [defaultBrikColor[7]]=7, + } + local columnPureTextColor={ + RGB9[966], + RGB9[696], + RGB9[679], + RGB9[986], + RGB9[869], + RGB9[996], + RGB9[699], + } + + ---@class Techmino.Mech.Brik.PieceDevice + ---@field pow number power + ---@field _pow number show power + ---@field service boolean + ---@field display boolean show power correctly or not + ---@field visible boolean show the whole device or not + + local safeThres=4 + function chargeLimit.spin_piece_event_init(P) + if not P.modeData.spinClear then + chargeLimit.spin_event_playerInit(P) + end + local devices={} + for i=1,7 do + devices[i]={ + pow=20, + _pow=20, + service=true, + display=true, + visible=true, + } + end + devices[6].visible=false + P.modeData.spin_powDevice=devices + P:addEvent('always',chargeLimit.spin_piece_event_always) + P:addEvent('beforeClear',{-1,chargeLimit.spin_piece_event_beforeClear}) + P:addEvent('drawOnPlayer',chargeLimit.spin_piece_event_drawOnPlayer) + end + function chargeLimit.spin_piece_event_always(P) + ---@type Techmino.Mech.Brik.PieceDevice[] + local devices=P.modeData.spin_powDevice + for i=1,7 do + local device=devices[i] + if device._pow~=device.pow then + if device._pow=safeThres + gc_setColor(safe and styles[i].color or styles[i].colorDanger) + mRect('fill',x,y,w*device._pow/26,h) + gc_setColor(1,1,1,styles[i].color[4]) + mRect('line',x,y,w,h) + else + gc_setColor(styles[i].color) + mRect('fill',x,y,w,h*.26) + gc_setColor(.42,.42,.42,styles[i].color[4]) + mRect('line',x,y,w,h) + end + elseif love.timer.getTime()%.42<.26 then + gc_setColor(styles[i].color) + mRect('line',x,y,w,h) + end + end + end + end + + function chargeLimit.spin_column_event_init(P,shape) + if not P.modeData.spinClear then + chargeLimit.spin_event_playerInit(P) + end + P.modeData.spin_powColumn={} + P.modeData.spin_column_pure=shape + for i=1,P.settings.fieldW do + P.modeData.spin_powColumn[i]={ + pow=20, + _pow=0, + } + end + P:addEvent('always',chargeLimit.spin_column_event_always) + P:addEvent('beforeClear',{-1,chargeLimit.spin_column_event_beforeClear}) + P:addEvent('drawBelowMarks',chargeLimit.spin_column_event_drawBelowMarks) + end + function chargeLimit.spin_column_event_always(P) + for _,v in next,P.modeData.spin_powColumn do + if v._pow~=v.pow then + if v._pow1 then - local n=P.modeData.techrash - P:playSound('charge', - n<=2 and 1 or - n<=4 and 2 or - n<=6 and 3 or - n<=8 and 4 or - n<=10 and 5 or - n<=13 and 6 or - n<=16 and 7 or - n<=19 and 8 or - n<=22 and 9 or - n<=25 and 10 or - 11 - ) - end - if not list[x] then list[x]={charge=0,_charge=0} end - if list[x].charge>=maxCharge then - list[x].dead=true - P:finish('rule') - else - for k,v in next,list do - if k~=x then - v.charge=math.max(v.charge-1,0) - end - end - end - list[x].charge=list[x].charge+P.modeData.chargePower - if not list[x-1] then list[x-1]={charge=0,_charge=0} end - list[x-1].charge=list[x-1].charge+math.floor(P.modeData.sidePower/2) - if not list[x+1] then list[x+1]={charge=0,_charge=0} end - list[x+1].charge=list[x+1].charge+math.floor(P.modeData.sidePower/2) - - local r1,r2=P.modeData.chargePower,P.modeData.sidePower/sidePowerRate - if P.modeData.chargePower>=maxPower then r1=0 end - if P.modeData.sidePower>=maxSidePower then r2=0 end - if r1*r2>0 then r1,r2=r1>=r2 and 1 or 0,r2>=r1 and 1 or 0 end - if r1>0 then - P.modeData.sidePower=P.modeData.sidePower+1 - elseif r2>0 then - P.modeData.chargePower=P.modeData.chargePower+1 - end - else - P:finish('rule') - end - end - function chargeLimit.techrash_event_drawBelowMarks(P) - local t=love.timer.getTime() - for k,v in next,P.modeData.techrashInfo do - if v._charge>0 or v.dead then - local x=40*k-20 - local chargeRate=v._charge/maxCharge - local barHeight=chargeRate*P.settings.fieldW*80 - if v.dead then - if t%.2<.1 then - gc.setColor(.6,.4,.8,.626) - else - gc.setColor(.6,.6,.6,.42) - end - gc.rectangle('fill',x-15,0,30,-barHeight) - else - if chargeRate<1 then - gc.setColor(.8,0,0,.3+.06*math.sin(t*2+k)) - elseif t%.2<.1 then - gc.setColor(.8,.4,.4,.626) - else - gc.setColor(.6,.6,.6,.42) - end - gc.rectangle('fill',x-15,0,30,-barHeight) - gc.setColor(1,1,1,.42) - gc.rectangle('fill',x-15,-barHeight,30,2) - end - end - end - end - function chargeLimit.techrash_event_drawOnPlayer(P) - P:drawInfoPanel(-380,-60,160,120) - FONT.set(80) GC.mStr(P.modeData.techrash,-300,-70) - FONT.set(30) GC.mStr(Text.target_techrash,-300,15) - end -end - return chargeLimit diff --git a/assets/game/mechanicLib/brik/misc.lua b/assets/game/mechanicLib/brik/misc.lua index 2f31238a..98135a1d 100644 --- a/assets/game/mechanicLib/brik/misc.lua +++ b/assets/game/mechanicLib/brik/misc.lua @@ -580,9 +580,9 @@ do -- Haunted local powID=P.modeData.ghostLight_powerID+1 P.modeData.ghostLight_powerID=powID local bx,by=P.handX-1,P.handY-1 - local B=P.hand.matrix - for y=1,#B do for x=1,#B[1] do - if B[y][x] then newLight(P,bx+x,by+y,powID) end + local CB=P.hand.matrix + for y=1,#CB do for x=1,#CB[1] do + if CB[y][x] then newLight(P,bx+x,by+y,powID) end end end end function misc.haunted_drawInField(P) diff --git a/assets/game/mode/brik/exterior/spin.lua b/assets/game/mode/brik/exterior/spin.lua new file mode 100644 index 00000000..2744ee1f --- /dev/null +++ b/assets/game/mode/brik/exterior/spin.lua @@ -0,0 +1,87 @@ +local function degraded_tspin_event_drawOnPlayer(P) + P:drawInfoPanel(-380,-60,160,120) + FONT.set(80) GC.mStr(P.modeData.tspin,-300,-70) + FONT.set(30) GC.mStr(Text[P.modeData.tspinText],-300,15) +end +regFuncLib(degraded_tspin_event_drawOnPlayer,'exterior_tspin.degraded_tspin_event_drawOnPlayer') + +---@type Techmino.Mode +return { + initialize=function() + GAME.newPlayer(1,'brik') + GAME.setMain(1) + playBgm('way') + end, + settings={brik={ + spin_immobile=true, + seqType='bag7_luckyT', + event={ + playerInit=function(P) + mechLib.brik.chargeLimit.spin_event_playerInit(P) + mechLib.common.music.set(P,{path='.spinClear',s=12,e=26},'afterClear') + local T=mechLib.common.task + T.install(P) + if PROGRESS.getExteriorModeScore('spin','showPiece') then + T.add(P,'spin_piece','modeTask_spin_piece_title','modeTask_spin_piece_desc') + end + T.add(P,'spin_column','modeTask_spin_column_title','modeTask_spin_column_desc') + end, + always=mechLib.brik.chargeLimit.spin_event_always, + beforePress=mechLib.brik.misc.skipReadyWithHardDrop_beforePress, + afterClear={ + function(P) + -- if P.modeData.subMode=='piece' or P.modeData.subMode=='hero' then + -- PROGRESS.setExteriorScore('spin','piece',P.modeData.spinClear,'>') + -- end + -- if P.modeData.subMode=='column' or P.modeData.subMode=='hero' then + -- PROGRESS.setExteriorScore('spin','column',P.modeData.spinClear,'>') + -- if P.modeData.spin_column_pure then + -- PROGRESS.setExteriorScore('spin','column_pure',P.modeData.spinClear,'>') + -- end + -- end + end, + function(P) + if PROGRESS.getSecret('exterior_spin_destructor') or P.modeData.subMode=='column' then return true end + if P.modeData.spin_powDevice then + for i=1,7 do if P.modeData.spin_powDevice[i].service then return end end + PROGRESS.setSecret('exterior_spin_destructor') + end + end, + function(P,clear) + local T=mechLib.common.task + if not P.modeData.subMode and P.lastMovement.immobile then + local activePiece,activeColumn + if clear.line==1 then + P.modeData.subMode='piece' + mechLib.brik.chargeLimit.spin_piece_event_init(P) + activePiece=true + elseif clear.line==2 then + P.modeData.subMode='column' + mechLib.brik.chargeLimit.spin_column_event_init(P,P.hand.shape) + activeColumn=true + else + P.modeData.subMode='hero' + mechLib.brik.chargeLimit.spin_piece_event_init(P) + mechLib.brik.chargeLimit.spin_column_event_init(P,P.hand.shape) + activePiece=true + activeColumn=true + end + if activePiece then + if not PROGRESS.getExteriorModeScore('spin','showPiece') then + PROGRESS.setExteriorScore('spin','showPiece',1,'>') + T.add(P,'spin_piece','modeTask_spin_piece_title','modeTask_spin_piece_desc') + TABLE.reverse(P.modeData.task) + end + T.set(P,'spin_piece',true) + end + if activeColumn then + T.set(P,'spin_column',true) + end + return true + end + end, + }, + drawOnPlayer=mechLib.brik.chargeLimit.spin_event_drawOnPlayer, + }, + }}, +} diff --git a/assets/game/mode/brik/exterior/sprint.lua b/assets/game/mode/brik/exterior/sprint.lua index 43618e84..72d2451b 100644 --- a/assets/game/mode/brik/exterior/sprint.lua +++ b/assets/game/mode/brik/exterior/sprint.lua @@ -33,7 +33,7 @@ return { if not PROGRESS.getExteriorUnlock('combo') then P.settings.combo_sound=true end - if PROGRESS.getExteriorUnlock('tspin') then + if PROGRESS.getExteriorUnlock('spin') then P.settings.spin_immobile=false P.settings.spin_corners=false end @@ -56,10 +56,10 @@ return { P.modeData.curKeyCount=0 end, afterPress=function(P) - if PROGRESS.getExteriorUnlock('tspin') then return true end + if PROGRESS.getExteriorUnlock('spin') then return true end local move=P.lastMovement if move and (move.immobile or move.corners) then - PROGRESS.setExteriorUnlock('tspin') + PROGRESS.setExteriorUnlock('spin') P.settings.spin_immobile=false P.settings.spin_corners=false return true diff --git a/assets/game/mode/brik/exterior/tspin.lua b/assets/game/mode/brik/exterior/tspin_legacy.lua similarity index 87% rename from assets/game/mode/brik/exterior/tspin.lua rename to assets/game/mode/brik/exterior/tspin_legacy.lua index 5348f69f..366aabc8 100644 --- a/assets/game/mode/brik/exterior/tspin.lua +++ b/assets/game/mode/brik/exterior/tspin_legacy.lua @@ -67,21 +67,13 @@ return { end end local goSecretApp - if P.modeData.tspin==4 and P.modeData.tspinText=='target_tss' and PROGRESS.getSecret('exterior_tspin_10TSS') then + if P.modeData.tspin==4 and P.modeData.tspinText=='target_tss' then goSecretApp='polyforge' - elseif P.modeData.tspin==3 and P.modeData.tspinText=='target_tst' and PROGRESS.getSecret('exterior_tspin_10TST') then + elseif P.modeData.tspin==3 and P.modeData.tspinText=='target_tst' then goSecretApp='uttt' elseif P.modeData.tspin>=10 then PROGRESS.setExteriorScore('tspin','any',P.modeData.tspin,'>') - if P.modeData.tspinText=='target_tss' then - PROGRESS.setSecret('exterior_tspin_10TSS') - goSecretApp='polyforge' - elseif P.modeData.tspinText=='target_tst' then - PROGRESS.setSecret('exterior_tspin_10TST') - goSecretApp='uttt' - else - P:finish('win') - end + P:finish('win') end if goSecretApp then TASK.new(task_unloadGame) diff --git a/assets/language/lang_en.lua b/assets/language/lang_en.lua index 97dca0c3..82b21f2d 100644 --- a/assets/language/lang_en.lua +++ b/assets/language/lang_en.lua @@ -228,7 +228,7 @@ local L={ sprint= {"Sprint","Speed is all we need"}, sequence= {"Sequence","Face strange piece sequences"}, invis= {"Invis","Pieces go invisible after falling"}, - tspin= {"T-Spin","Build special terrains"}, + spin= {"Spin","Build special terrains"}, marathon= {"Marathon","Fight against increasing gravity"}, allclear= {"All Clear","Controllable All-Clear is possible"}, combo= {"Combo","Everyone loves combo"}, @@ -247,6 +247,11 @@ local L={ modeTask_unknown_title="???", modeTask_unknown_desc="??????", + modeTask_spin_piece_title="Piece", + modeTask_spin_piece_desc="Clear a Spin Single", + modeTask_spin_column_title="Column", + modeTask_spin_column_desc="Clear a Spin Double", + modeTask_sequence_flood_title="Flood", modeTask_sequence_flood_desc="Clear with S or Z", modeTask_sequence_drought_title="Drought", @@ -304,11 +309,11 @@ local L={ achievementMessage={ -- TRASLATING NOTE: The tone can be lighter dict_shortcut="Hotkey Expert", exterior_sprint_gunJumping="Gun jumping detected", + exterior_spin_destructor="Destructor", + exterior_spin_howDareYou="How dare you", exterior_excavate_notDig="What are you doing?", - exterior_invis_superBrain="COOL", - exterior_invis_rhythmMaster="To the beat!", -- Keep this as it is. Original from "osu!" title music - exterior_tspin_10TSS="What's this?", - exterior_tspin_10TST="EZ.", + exterior_invis_superBrain="Super Brain", + exterior_invis_rhythmMaster="To the beat", -- Keep this as it is. Original from "osu!" title music exterior_hypersonic_holdlessTitan="You can hold", interior_console="What's this?", language_japanese="あ?", diff --git a/assets/language/lang_eo.lua b/assets/language/lang_eo.lua index 5f5b4ded..242591c9 100644 --- a/assets/language/lang_eo.lua +++ b/assets/language/lang_eo.lua @@ -227,8 +227,8 @@ local L={ exteriorModeInfo={ -- TRASLATING NOTE: Unnecessary to be accurate, try to quote some short proverbs in your language sprint= {"Sprinto","La rapideco estas ĉio, kion vi bezonas"}, sequence= {"Sinsekvo","Alfrontu strangajn tetrominsinsekvojn"}, - invis= {"Nevidebla","tuj kiam ili estas metitaj, la pecoj fariĝas nevideblaj"}, - tspin= {"T-Spin","Konstruas specialajn scenarojn"}, + invis= {"Nevidebla","tuj kiam ili estas metitaj, la pecoj fariĝas nevideblaj"}, + spin= {"Spin","Konstruas specialajn scenarojn"}, marathon= {"Maratono","Rezistu kontraŭ kreskanta gravito"}, allclear= {"All Clear","Kontrolitaj All-Clear estas eblaj"}, combo= {"Kombo","Ĉiuj amas la komboj"}, @@ -304,11 +304,11 @@ local L={ achievementMessage={ dict_shortcut="Fakulo de Hotkeys", exterior_sprint_gunJumping="KANONPAFO!!!", + -- exterior_spin_destructor="Destructor", + -- exterior_spin_howDareYou="How dare you", exterior_excavate_notDig="Kion vi faras?", - exterior_invis_superBrain="COOL", - exterior_invis_rhythmMaster="To the beat!", -- Keep this as it is. Original from "osu!" title music - exterior_tspin_10TSS="Kio estas ĉi tio?", - exterior_tspin_10TST="EZ.", + -- exterior_invis_superBrain="Super Brain", + exterior_invis_rhythmMaster="To the beat", -- Keep this as it is. Original from "osu!" title music exterior_hypersonic_holdlessTitan="Vi povas uzi la rezervo", interior_console="Kio estas ĉi tio?", language_japanese="あ?", diff --git a/assets/language/lang_it.lua b/assets/language/lang_it.lua index 361dc048..2f5b87ac 100644 --- a/assets/language/lang_it.lua +++ b/assets/language/lang_it.lua @@ -227,8 +227,8 @@ local L={ exteriorModeInfo={ -- TRASLATING NOTE: Unnecessary to be accurate, try to quote some short proverbs in your language sprint= {"Sprint","La velocità è tutto ciò di cui hai bisogno"}, sequence= {"Sequenza","Affronta strane sequenze di tetromini"}, - invis= {"Invisibile","I pezzi diventano invisibili appena piazzati"}, - tspin= {"T-Spin","Costruisci terreni speciali"}, + invis= {"Invisibile","I pezzi diventano invisibili appena piazzati"}, + spin= {"Spin","Costruisci terreni speciali"}, marathon= {"Maratona","Resisti contro la gravità in aumento"}, allclear= {"All Clear","Gli All-Clear controllati sono possibili"}, combo= {"Combo","Tutti amano le combo"}, @@ -305,11 +305,11 @@ local L={ achievementMessage={ -- TRASLATING NOTE: The tone can be lighter dict_shortcut="Esperto di Hotkeys", exterior_sprint_gunJumping="SCANNONATA!!!", + -- exterior_spin_destructor="Destructor", + -- exterior_spin_howDareYou="How dare you", exterior_excavate_notDig="Che stai facendo?", - exterior_invis_superBrain="COOL", - exterior_invis_rhythmMaster="To the beat!", -- Keep this as it is. Original from "osu!" title music - exterior_tspin_10TSS="Cos'è questo?", - exterior_tspin_10TST="EZ.", + -- exterior_invis_superBrain="Super Brain", + exterior_invis_rhythmMaster="To the beat", -- Keep this as it is. Original from "osu!" title music exterior_hypersonic_holdlessTitan="Puoi usare la riserva", interior_console="Cos'è questo?", language_japanese="あ?", diff --git a/assets/language/lang_zh.lua b/assets/language/lang_zh.lua index ba4fdaae..75953be8 100644 --- a/assets/language/lang_zh.lua +++ b/assets/language/lang_zh.lua @@ -228,7 +228,7 @@ local L={ sprint= {"竞速","速度即一切"}, sequence= {"序列","面对奇异的方块序列"}, invis= {"隐形","方块落下后将不可见"}, - tspin= {"T旋","构建特殊的地形"}, + spin= {"卡块","构建特殊的地形"}, marathon= {"马拉松","对抗逐渐增加的重力"}, allclear= {"全消","可控的全消并非不可能"}, combo= {"连击","开局送楼连到爽"}, @@ -247,6 +247,11 @@ local L={ modeTask_unknown_title="???", modeTask_unknown_desc="??????", + modeTask_spin_piece_title="Piece", + modeTask_spin_piece_desc="卡块消一", + modeTask_spin_column_title="Column", + modeTask_spin_column_desc="卡块消二", + modeTask_sequence_flood_title="Flood", modeTask_sequence_flood_desc="用S/Z消除", modeTask_sequence_drought_title="Drought", @@ -304,11 +309,11 @@ local L={ achievementMessage={ -- TRASLATING NOTE: 语气可以更轻松 dict_shortcut="快捷键高手", exterior_sprint_gunJumping="检测到抢跑", + exterior_spin_destructor="破坏王", + exterior_spin_howDareYou="你怎么敢的", exterior_excavate_notDig="你在干什么?", - exterior_invis_superBrain="COOL", - exterior_invis_rhythmMaster="To the beat!", -- 保持原样。 出处为游戏 osu! 标题曲 - exterior_tspin_10TSS="这是什么?", - exterior_tspin_10TST="轻松。", + exterior_invis_superBrain="最强大脑", + exterior_invis_rhythmMaster="To the beat", -- 保持原样。 出处为游戏 osu! 标题曲 exterior_hypersonic_holdlessTitan="你可以暂存的", interior_console="这是什么?", language_japanese="あ?", diff --git a/assets/progress.lua b/assets/progress.lua index f1b2a7c4..6f451b70 100644 --- a/assets/progress.lua +++ b/assets/progress.lua @@ -172,6 +172,13 @@ function PROGRESS.fix() prgs.tuto7_score,prgs.tuto7_time=nil,nil prgs.tuto8_keys=nil prgs.brik_stdMap=nil + prgs.secretFound.exterior_tspin_10TSS=nil + prgs.secretFound.exterior_tspin_10TST=nil + prgs.secretFound.dial_password=nil + if prgs.exteriorMap.tspin then + prgs.exteriorMap.tspin=nil + prgs.exteriorMap.spin={} + end end --------------------------------------------------------------