Compare commits

..

28 Commits

Author SHA1 Message Date
ParticleG
63da1b5585 - Add logs to upload-artifact 2021-11-08 04:37:22 +08:00
ParticleG
929be4faf0 - Test Windows with curl 2021-11-08 04:11:04 +08:00
MrZ626
59a5b52993 整理代码 2021-11-08 03:08:42 +08:00
ParticleG
c412e07153 - Add Upload Action 2021-11-08 02:48:38 +08:00
MrZ626
252f19c6df 进入newRoom菜单时不会试图修改背景和bgm 2021-11-07 22:09:22 +08:00
MrZ626
8264fdd4bf 修改更新历史和build号 2021-11-07 21:27:39 +08:00
MrZ626
dfd28f2f10 只在更新后触发自动转换以旧版本模式名存储的数据文件 2021-11-07 21:19:49 +08:00
MrZ626
5fc1257e58 颜色表改用hsv生成 2021-11-07 17:44:17 +08:00
MrZ626
5c39765f71 微调词典
微调两个小程序
整理代码
2021-11-07 17:44:13 +08:00
MrZ626
ca92622d5d 微调中文词典两个词条 2021-11-07 12:28:26 +08:00
MrZ626
e28902bc97 无尽马拉松的are每300行减小一次,line are每100行减小一次 2021-11-07 05:42:03 +08:00
MrZ626
d228809a53 无尽马拉松添加1700行的终点 2021-11-07 05:28:08 +08:00
MrZ626
60f8a22dd5 微调排行榜字体大小 2021-11-07 05:20:58 +08:00
MrZ626
db4ae56990 无尽马拉松添加排行榜 2021-11-07 05:19:12 +08:00
MrZ626
e95288b171 修改更新历史
整理代码
2021-11-07 05:00:41 +08:00
MrZ626
2511555eb0 调整无尽马拉松的难度曲线 2021-11-07 04:58:37 +08:00
Not-A-Normal-Robot
4c4f01cb95 Decrease lock delay when level up above lvl20 2021-11-07 04:55:02 +08:00
Not-A-Normal-Robot
7177118f34 Added Infinite Marathon 2021-11-07 04:55:02 +08:00
MrZ626
a6d5c4a1bf 修改更新历史 2021-11-07 04:02:40 +08:00
MrZ626
73a828d73a 修改mph模式的bgm 2021-11-07 04:02:22 +08:00
MrZ626
a7df4d6aa7 新模式:竞速-效率 2021-11-07 04:02:12 +08:00
MrZ626
7fe4802887 修复超级消除结算时分数计算变量写错导致报错 2021-11-07 01:49:19 +08:00
MrZ626
7eac341b9a move音效在方块因重力或旋转触地时也会播放,而不只是移动后
move音效名改为touch
2021-11-07 01:41:29 +08:00
MrZ626
1fa02a18b2 修改更新历史 2021-11-06 20:57:30 +08:00
MrZ626
b15cb64681 修正pr的一个符号错误 2021-11-06 20:53:45 +08:00
C₂₉H₂₅N₃O₅
bf345c8655 Changed the font and CN tips (#433)
* 补全英文词典翻译

* 大改字体

- 西文部分采用IBM Plex
- 全角标点样式采用西文样式
- 添加类Plex的IPA符号

* 微调中文tips

* 更新 Legals

* 修正一个语法错误
2021-11-06 19:10:44 +08:00
C₂₉H₂₅N₃O₅
cbdb15d658 补全英文词典翻译 (#431) 2021-11-06 04:21:44 +08:00
MrZ626
8b4504bfa0 新BGM:1989(用于几个经典模式)
重新安排一些模式的BGM
2021-11-06 04:05:08 +08:00
23 changed files with 158 additions and 172 deletions

View File

@@ -19,9 +19,6 @@ inputs:
runs:
using: "composite"
steps:
- uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Install Webdav 4
shell: bash
run: |
@@ -37,7 +34,7 @@ runs:
auth=("${{ inputs.WEBDAV_USERNAME }}", "${{ inputs.WEBDAV_PASSWORD }}"),
timeout=None,
)
if '${{ inputs.ARTIFACT_TYPE }}' == 'release':
if '${{ inputs.ARTIFACT_TYPE }}' == 'release'
print('Removing previous ${{ inputs.ARTIFACT_PLATFORM }} release file...')
for file in client.ls('Techmino distribution'):
if re.search(r'(Techmino_a[0-9]+\.[0-9]+\.[0-9]_${{ inputs.ARTIFACT_PLATFORM }}.*)', file['name']):

View File

@@ -198,7 +198,7 @@ jobs:
- name: Pack Techmino
run: mv Techmino.ipa Techmino_pre${{ needs.get-info.outputs.release }}_${{ needs.get-info.outputs.commit }}_iOS.ipa
- name: Upload artifact to server
uses: ./.github/actions/upload-artifact
uses: ./.github/actions/upload-artifacts
with:
WEBDAV_USERNAME: ${{ secrets.WEBDAV_USERNAME }}
WEBDAV_PASSWORD: ${{ secrets.WEBDAV_PASSWORD }}

View File

@@ -16,62 +16,62 @@ end
local COLOR={
hsv=hsv,
red= {hsv(0.00, 0.89, 0.91)},
fire= {hsv(0.04, 0.93, 0.94)},
orange= {hsv(0.09, 0.99, 0.96)},
yellow= {hsv(0.16, 0.82, 0.90)},
lime= {hsv(0.18, 0.89, 0.88)},
jade= {hsv(0.23, 1.00, 0.82)},
green= {hsv(0.33, 1.00, 0.81)},
aqua= {hsv(0.48, 1.00, 0.74)},
cyan= {hsv(0.53, 1.00, 0.88)},
navy= {hsv(0.56, 1.00, 1.00)},
sea= {hsv(0.61, 1.00, 1.00)},
blue= {hsv(0.64, 1.00, 0.95)},
violet= {hsv(0.73, 1.00, 0.91)},
purple= {hsv(0.80, 1.00, 0.81)},
magenta= {hsv(0.86, 1.00, 0.78)},
wine= {hsv(0.94, 0.96, 0.91)},
red= {hsv(0, .85,.85)},
fire= {hsv(0.0625,.85,.85)},
orange= {hsv(0.125, .85,.85)},
yellow= {hsv(0.1875,.85,.85)},
lime= {hsv(0.25, .85,.85)},
jade= {hsv(0.3125,.85,.85)},
green= {hsv(0.375, .85,.85)},
aqua= {hsv(0.4375,.85,.85)},
cyan= {hsv(0.5, .85,.85)},
navy= {hsv(0.5625,.85,.85)},
sea= {hsv(0.625, .85,.85)},
blue= {hsv(0.6875,.85,.85)},
violet= {hsv(0.75, .85,.85)},
purple= {hsv(0.8125,.85,.85)},
magenta= {hsv(0.875, .85,.85)},
wine= {hsv(0.9375,.85,.85)},
lRed= {hsv(0.00, 0.38, 0.93)},
lFire= {hsv(0.04, 0.45, 0.91)},
lOrange= {hsv(0.10, 0.53, 0.92)},
lYellow= {hsv(0.15, 0.61, 0.95)},
lLime= {hsv(0.19, 0.66, 0.92)},
lJade= {hsv(0.24, 0.56, 0.90)},
lGreen= {hsv(0.34, 0.49, 0.89)},
lAqua= {hsv(0.49, 0.59, 0.85)},
lCyan= {hsv(0.51, 0.77, 0.88)},
lNavy= {hsv(0.54, 0.80, 0.95)},
lSea= {hsv(0.56, 0.72, 0.97)},
lBlue= {hsv(0.64, 0.44, 0.96)},
lViolet= {hsv(0.73, 0.47, 0.95)},
lPurple= {hsv(0.80, 0.62, 0.89)},
lMagenta= {hsv(0.86, 0.61, 0.89)},
lWine= {hsv(0.93, 0.57, 0.92)},
lRed= {hsv(0, .5,.95)},
lFire= {hsv(0.0625,.5,.95)},
lOrange= {hsv(0.125, .5,.95)},
lYellow= {hsv(0.1875,.5,.95)},
lLime= {hsv(0.25, .5,.95)},
lJade= {hsv(0.3125,.5,.95)},
lGreen= {hsv(0.375, .5,.95)},
lAqua= {hsv(0.4375,.5,.95)},
lCyan= {hsv(0.5, .5,.95)},
lNavy= {hsv(0.5625,.5,.95)},
lSea= {hsv(0.625, .5,.95)},
lBlue= {hsv(0.6875,.5,.95)},
lViolet= {hsv(0.75, .5,.95)},
lPurple= {hsv(0.8125,.5,.95)},
lMagenta={hsv(0.875, .5,.95)},
lWine= {hsv(0.9375,.5,.95)},
dRed= {hsv(0.00, 0.80, 0.48)},
dFire= {hsv(0.04, 0.80, 0.34)},
dOrange= {hsv(0.07, 0.80, 0.39)},
dYellow= {hsv(0.11, 0.80, 0.37)},
dLime= {hsv(0.17, 0.80, 0.26)},
dJade= {hsv(0.31, 0.80, 0.27)},
dGreen= {hsv(0.33, 0.80, 0.26)},
dAqua= {hsv(0.47, 0.80, 0.23)},
dCyan= {hsv(0.50, 0.80, 0.30)},
dNavy= {hsv(0.59, 0.80, 0.42)},
dSea= {hsv(0.64, 0.80, 0.40)},
dBlue= {hsv(0.67, 0.80, 0.34)},
dViolet= {hsv(0.71, 0.80, 0.35)},
dPurple= {hsv(0.76, 0.80, 0.32)},
dMagenta= {hsv(0.87, 0.80, 0.28)},
dWine= {hsv(0.92, 0.80, 0.28)},
dRed= {hsv(0, .9,.5)},
dFire= {hsv(0.0625,.9,.5)},
dOrange= {hsv(0.125, .9,.5)},
dYellow= {hsv(0.1875,.9,.5)},
dLime= {hsv(0.25, .9,.5)},
dJade= {hsv(0.3125,.9,.5)},
dGreen= {hsv(0.375, .9,.5)},
dAqua= {hsv(0.4375,.9,.5)},
dCyan= {hsv(0.5, .9,.5)},
dNavy= {hsv(0.5625,.9,.5)},
dSea= {hsv(0.625, .9,.5)},
dBlue= {hsv(0.6875,.9,.5)},
dViolet= {hsv(0.75, .9,.5)},
dPurple= {hsv(0.8125,.9,.5)},
dMagenta={hsv(0.875, .9,.5)},
dWine= {hsv(0.9375,.9,.5)},
black= {hsv(0.04, 0.04, 0.14)},
dGray= {hsv(0.02, 0.05, 0.44)},
gray= {hsv(0.02, 0.05, 0.65)},
lGray= {hsv(0.02, 0.06, 0.86)},
white= {hsv(0.01, 0.02, 0.99)},
black= {hsv(0,0,.05)},
dGray= {hsv(0,0,0.3)},
gray= {hsv(0,0,0.6)},
lGray= {hsv(0,0,0.8)},
white= {hsv(0,0,.97)},
}
for k,v in next,{
R='red', F='fire', O='orange', Y='yellow', L='lime', J='jade', G='green', A='aqua', C='cyan', N='navy', S='sea', B='blue', V='violet', P='purple', M='magenta', W='wine',

Binary file not shown.

View File

@@ -686,7 +686,13 @@ do
sfx='prerotate'
elseif P:ifoverlap(icb,x,y+1)and P:ifoverlap(icb,x-1,y)and P:ifoverlap(icb,x+1,y)then
sfx='rotatekick'
P:_rotateField(d)
if P.gameEnv.shakeFX then
if d==1 or d==3 then
P.fieldOff.va=P.fieldOff.va+(2-d)*6e-3
else
P.fieldOff.va=P.fieldOff.va+P:getCenterX()*3e-3
end
end
else
sfx='rotate'
end

View File

@@ -33,7 +33,6 @@ return{
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
end
end
P:shakeField(9)
D.wave=D.wave+1
end
end

View File

@@ -42,7 +42,6 @@ return{
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
end
end
P:shakeField(10)
D.wave=D.wave+1
end
end

View File

@@ -40,7 +40,6 @@ return{
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
P.dropDelay,P.gameEnv.drop=2,2
end
P:shakeField(3)
end
end
end

View File

@@ -40,7 +40,6 @@ return{
P.dropDelay,P.gameEnv.drop=5,5
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
end
P:shakeField(3)
end
end
end

View File

@@ -89,7 +89,6 @@ return
ENV.bone=true
P.modeData.target=62
SFX.play('reach')
else
p=41
end
@@ -113,7 +112,6 @@ return
ENV.fall=4
P.modeData.target=162
SFX.play('reach')
elseif T==162 then--Stage 7: speed up+++
P:stageComplete(7)
P.life=P.life+1
@@ -148,7 +146,6 @@ return
P.modeData.target=260
p=260
SFX.play('blip_2')
SFX.play('reach')
else
p=260
end

View File

@@ -21,7 +21,6 @@ return{
if D.wave==60 then
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
end
P:shakeField(3)
D.timer=0
D.wave=D.wave+1
end

View File

@@ -24,7 +24,6 @@ return{
if D.wave==30 then
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
end
P:shakeField(9)
D.timer=0
D.wave=D.wave+1
end

Binary file not shown.

Binary file not shown.

View File

@@ -4,7 +4,7 @@ return{
{"Translator Note 1",
"",
"help",
"This translation of the TetroDictionary is provided by me, User670 (Discord: User670#9501).\n\nThe translation may not completely reflect the contents of the original Chinese text.\n\nCorrected by C₂₉H₂₅N₃O₅.\n\nTo view the list of contributors or make contributions, feel free to visit the GitHub page.",
"This translation of the TetroDictionary is provided by me, User670 (Discord: User670#9501).\n\nThe translation may not completely reflect the contents of the original Chinese text.\n\nCorrected by C29H25N3O5.\n\nTo view the list of contributors or make contributions, feel free to visit the GitHub page.",
"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_en.lua",
},
{"Official Website",

View File

@@ -119,15 +119,8 @@ local function _stencilBoard()gc_rectangle('fill',0,-10,300,610)end
local function _applyField(P)
gc_push('transform')
--Apply shaking
if P.shakeTimer>0 then
local dx=int(P.shakeTimer/2)
local dy=int(P.shakeTimer/3)
gc_translate(dx^1.6*(dx%2*2-1)*(P.gameEnv.shakeFX+1)/30,dy^1.4*(dy%2*2-1)*(P.gameEnv.shakeFX+1)/30)
end
--Apply swingOffset
local O=P.swingOffset
--Apply fieldOffset
local O=P.fieldOff
if P.gameEnv.shakeFX then
local k=P.gameEnv.shakeFX
gc_translate(O.x*k+150+150,O.y*k+300)

View File

@@ -102,12 +102,11 @@ local function _newEmptyPlayer(id,mini)
end
--Field position
P.swingOffset={--Shake FX
P.fieldOff={--Shake FX
x=0,y=0,
vx=0,vy=0,
a=0,va=0,
}
P.shakeTimer=0
P.x,P.y,P.size=0,0,1
P.frameColor=COLOR.Z

View File

@@ -30,25 +30,6 @@ end
function Player:_createClearingFX(y,spd)--Not used
ins(self.clearFX,{y,0,spd})
end
function Player:_rotateField(dir)
if self.gameEnv.shakeFX then
if dir==1 or dir==3 then
self.swingOffset.va=self.swingOffset.va+(2-dir)*6e-3
else
self.swingOffset.va=self.swingOffset.va+self:getCenterX()*3e-3
end
end
end
function Player:shakeField(strength)--Range: 1~10
if self.gameEnv.shakeFX then
self.shakeTimer=max(self.shakeTimer,3*self.gameEnv.shakeFX+int(4*min(max(strength,1),10)))
end
end
function Player:checkTouchSound()
if self.sound and self.curY==self.ghoY then
SFX.play('touch')
end
end
function Player:showText(text,dx,dy,font,style,spd,stop)
if self.gameEnv.text then
ins(self.bonus,TEXT.getText(text,150+dx,300+dy,font,style,spd,stop))
@@ -158,7 +139,7 @@ function Player:createSplashFX(h)
if self.gameEnv.splashFX then
local L=self.field[h]
local size=self.size
local y=self.fieldY+size*(self.swingOffset.y+self.fieldBeneath+self.fieldUp+615)-30*h*size
local y=self.fieldY+size*(self.fieldOff.y+self.fieldBeneath+self.fieldUp+615)-30*h*size
for x=1,10 do
local c=L[x]
if c>0 then
@@ -500,9 +481,6 @@ function Player:receive(A,send,time,line)
if self.sound then
SFX.play(send<4 and'blip_1'or'blip_2',min(send+1,5)*.1)
end
if send>=2 then
self:shakeField(send/2)
end
end
end
function Player:clearAttackBuffer()
@@ -585,7 +563,7 @@ function Player:freshBlock(mode)--string mode: push/move/fresh/newBlock
if self.curY>self.ghoY then
self:createDropFX()
if ENV.shakeFX then
self.swingOffset.vy=.5
self.fieldOff.vy=.5
end
self.curY=self.ghoY
end
@@ -627,9 +605,10 @@ function Player:freshBlock(mode)--string mode: push/move/fresh/newBlock
end
--Play sound if touch ground
if mode=='move'then
self:checkTouchSound()
if mode=='move'and self.sound and self.curY==self.ghoY then
SFX.play('touch')
end
end
function Player:lock()
local CB=self.cur.bk
@@ -818,13 +797,19 @@ function Player:spin(d,ifpre)
self.freshTime=self.freshTime-1
end
--Sound & Field swinging
--Sound & Field shaking
local sfx
if ifpre then
sfx='prerotate'
elseif self:ifoverlap(icb,ix,iy+1)and self:ifoverlap(icb,ix-1,iy)and self:ifoverlap(icb,ix+1,iy)then
sfx='rotatekick'
self:_rotateField(d)
if self.gameEnv.shakeFX then
if d==1 or d==3 then
self.fieldOff.va=self.fieldOff.va+(2-d)*6e-3
else
self.fieldOff.va=self.fieldOff.va+self:getCenterX()*3e-3
end
end
else
sfx='rotate'
end
@@ -1861,10 +1846,10 @@ local function _updateMisc(P)
end
end
--Field swinging
--Field shaking
if P.gameEnv.shakeFX then
local O=P.swingOffset
O.vx=O.vx*.6-abs(O.x)^1.3*(O.x>0 and .1 or -.1)
local O=P.fieldOff
O.vx=O.vx*.7-abs(O.x)^1.3*(O.x>0 and .1 or -.1)
O.x=O.x+O.vx
O.vy=O.vy*.7-abs(O.y)^1.2*(O.y>0 and .1 or -.1)
@@ -1877,11 +1862,6 @@ local function _updateMisc(P)
end
end
--Field Shaking
if P.shakeTimer>0 then
P.shakeTimer=P.shakeTimer-1
end
--Update texts
if P.bonus then
TEXT.update(1/60,P.bonus)
@@ -1970,9 +1950,13 @@ local function update_alive(P)
if GAME.modeEnv.royaleMode then
local v=P.swappingAtkMode
local tar=#P.field>15 and 4 or 8
if v~=tar then
P.swappingAtkMode=v+(v<tar and 1 or -1)
if P.keyPressing[9]then
P.swappingAtkMode=min(v+2,30)
else
local tar=#P.field>15 and 4 or 8
if v~=tar then
P.swappingAtkMode=v+(v<tar and 1 or -1)
end
end
end
@@ -2014,7 +1998,7 @@ local function update_alive(P)
end
end
if mov>=das and ENV.shakeFX and P.cur and P:ifoverlap(P.cur.bk,P.curX+1,P.curY)then
P.swingOffset.vx=.5
P.fieldOff.vx=.5
end
else
P.movDir=0
@@ -2039,7 +2023,7 @@ local function update_alive(P)
end
end
if mov>=das and ENV.shakeFX and P.cur and P:ifoverlap(P.cur.bk,P.curX-1,P.curY)then
P.swingOffset.vx=-.5
P.fieldOff.vx=-.5
end
else
P.movDir=0
@@ -2058,7 +2042,7 @@ local function update_alive(P)
end
--Drop pressed
if P.keyPressing[7]then
if P.keyPressing[7]and not P.keyPressing[9]then
P.downing=P.downing+1
local d=P.downing-ENV.sddas
if d>1 then
@@ -2070,7 +2054,7 @@ local function update_alive(P)
P:act_insDown()
end
if ENV.shakeFX then
P.swingOffset.vy=.2
P.fieldOff.vy=.2
end
end
else
@@ -2132,8 +2116,9 @@ local function update_alive(P)
if P.ghoY~=P.curY then
P.dropDelay=ENV.drop
elseif P.sound then
SFX.play('touch')
end
P:checkTouchSound()
else
P.lockDelay=P.lockDelay-1
if P.lockDelay>=0 then
@@ -2450,7 +2435,12 @@ function Player:act_moveLeft(auto)
self.ctrlCount=self.ctrlCount+1
end
self.movDir=-1
if self.control and self.waiting==-1 then
if self.keyPressing[9]then
if self.gameEnv.swap then
self:changeAtkMode(1)
self.keyPressing[1]=false
end
elseif self.control and self.waiting==-1 then
if self.cur and not self:ifoverlap(self.cur.bk,self.curX-1,self.curY)then
self:createMoveFX('left')
self.curX=self.curX-1
@@ -2471,7 +2461,12 @@ function Player:act_moveRight(auto)
self.ctrlCount=self.ctrlCount+1
end
self.movDir=1
if self.control and self.waiting==-1 then
if self.keyPressing[9]then
if self.gameEnv.swap then
self:changeAtkMode(2)
self.keyPressing[2]=false
end
elseif self.control and self.waiting==-1 then
if self.cur and not self:ifoverlap(self.cur.bk,self.curX+1,self.curY)then
self:createMoveFX('right')
self.curX=self.curX+1
@@ -2510,7 +2505,12 @@ function Player:act_rot180()
end
function Player:act_hardDrop()
local ENV=self.gameEnv
if self.control and self.waiting==-1 and self.cur then
if self.keyPressing[9]then
if ENV.swap then
self:changeAtkMode(3)
end
self.keyPressing[6]=false
elseif self.control and self.waiting==-1 and self.cur then
if self.lastPiece.autoLock and self.frameRun-self.lastPiece.frame<ENV.dropcut then
SFX.play('drop_cancel',.3)
else
@@ -2524,8 +2524,8 @@ function Player:act_hardDrop()
end
end
if ENV.shakeFX then
self.swingOffset.vy=.6
self.swingOffset.va=self.swingOffset.va+self:getCenterX()*6e-4
self.fieldOff.vy=.6
self.fieldOff.va=self.fieldOff.va+self:getCenterX()*6e-4
end
self.lockDelay=-1
self:drop()
@@ -2535,25 +2535,30 @@ function Player:act_hardDrop()
end
function Player:act_softDrop()
local ENV=self.gameEnv
self.downing=1
if self.control and self.waiting==-1 and self.cur then
if self.curY>self.ghoY then
self.curY=self.curY-1
self:freshBlock('fresh')
self.spinLast=false
self:checkTouchSound()
elseif ENV.deepDrop then
local CB=self.cur.bk
local y=self.curY-1
while self:ifoverlap(CB,self.curX,y)and y>0 do
y=y-1
end
if y>0 then
self.ghoY=y
self:createDropFX()
self.curY=y
self:freshBlock('move')
SFX.play('swipe')
if self.keyPressing[9]then
if ENV.swap then
self:changeAtkMode(4)
end
else
self.downing=1
if self.control and self.waiting==-1 and self.cur then
if self.curY>self.ghoY then
self.curY=self.curY-1
self:freshBlock('fresh')
self.spinLast=false
elseif ENV.deepDrop then
local CB=self.cur.bk
local y=self.curY-1
while self:ifoverlap(CB,self.curX,y)and y>0 do
y=y-1
end
if y>0 then
self.ghoY=y
self:createDropFX()
self.curY=y
self:freshBlock('move')
SFX.play('swipe')
end
end
end
end
@@ -2587,7 +2592,7 @@ function Player:act_insLeft(auto)
self.spinLast=false
end
if self.gameEnv.shakeFX then
self.swingOffset.vx=-1.5
self.fieldOff.vx=-.5
end
if auto then
if self.ctrlCount==0 then
@@ -2611,7 +2616,7 @@ function Player:act_insRight(auto)
self.spinLast=false
end
if self.gameEnv.shakeFX then
self.swingOffset.vx=1.5
self.fieldOff.vx=.5
end
if auto then
if self.ctrlCount==0 then
@@ -2626,13 +2631,12 @@ function Player:act_insDown()
local ENV=self.gameEnv
self:createDropFX()
if ENV.shakeFX then
self.swingOffset.vy=.5
self.fieldOff.vy=.5
end
self.curY=self.ghoY
self.lockDelay=ENV.lock
self.spinLast=false
self:freshBlock('fresh')
self:checkTouchSound()
end
end
function Player:act_down1()

View File

@@ -25,16 +25,15 @@ local function _setLang(lid)
TEXT.show(langList[lid],640,360,100,'appear',.626)
collectgarbage()
end
scene.widgetList={
WIDGET.newButton{x=271,y=190,w=346,h=120,font=40, fText=langList.zh, color='O',code=function()_setLang('zh')end},
WIDGET.newButton{x=637,y=190,w=346,h=120,font=40, fText=langList.zh_trad, color='F',code=function()_setLang('zh_trad')end},
WIDGET.newButton{x=1003,y=190,w=346,h=120,font=40, fText=langList.zh_full, color='R',code=function()_setLang('zh_full')end},
WIDGET.newButton{x=225,y=331,w=255,h=120,font=40, fText=langList.en, color='L',code=function()_setLang('en')end},
WIDGET.newButton{x=500,y=331,w=255,h=120,font=40, fText=langList.fr, color='J',code=function()_setLang('fr')end},
WIDGET.newButton{x=775,y=331,w=255,h=120,font=40, fText=langList.es, color='G',code=function()_setLang('es')end},
WIDGET.newButton{x=1050,y=331,w=255,h=120,font=40, fText=langList.pt, color='dG',code=function()_setLang('pt')end},
WIDGET.newButton{x=225,y=331,w=255,h=120,font=40, fText=langList.en, color='Y',code=function()_setLang('en')end},
WIDGET.newButton{x=500,y=331,w=255,h=120,font=40, fText=langList.fr, color='L',code=function()_setLang('fr')end},
WIDGET.newButton{x=775,y=331,w=255,h=120,font=40, fText=langList.es, color='J',code=function()_setLang('es')end},
WIDGET.newButton{x=1050,y=331,w=255,h=120,font=40, fText=langList.pt, color='G',code=function()_setLang('pt')end},
WIDGET.newButton{x=271,y=472,w=346,h=120,font=45, fText=langList.zh_grass,color='N',code=function()_setLang('zh_grass')end},
WIDGET.newButton{x=637,y=472,w=346,h=120,font=45, fText=langList.zh_yygq, color='S',code=function()_setLang('zh_yygq')end},

View File

@@ -20,8 +20,8 @@ local author={
["secret7th remix"]="柒栎流星",
["jazz nihilism"]="Trebor",
["race remix"]="柒栎流星",
["sakura"]="ZUN & C₂₉H₂₅N₃O₅",
["1989"]="C₂₉H₂₅N₃O₅",
["sakura"]="ZUN & C29H25N3O5",
["1989"]="C29H25N3O5",
}
local scene={}

View File

@@ -91,10 +91,9 @@ end
function scene.draw()
setFont(15)
local l=#list
for i=1,l do
for i=1,#list do
gc.setColor(1,1,1,list[i][2]/30)
gc.print(list[i][1],20,20*(l-i+1))
gc.print(list[i][1],20,20*i)
end
end

View File

@@ -18,14 +18,12 @@ return[=[
新增:
新模式:竞速-效率
新模式:无尽马拉松
新增场地抖动特效
新增繁中语言,新语言设置菜单布局
新BGM:1989(用于经典模式,by C₂₉H₂₅N₃O₅)
新BGM:1989(用于经典模式,by C29H25N3O5)
改动:
移动音效改为触地音效,在方块因重力或旋转触地时也会播放
再调整场地晃动的阻力,看起来更舒服
更换数字和英文字符的字体
重做全局颜色表(by C₂₉H₂₅N₃O₅)
游戏颜色表改用hsv生成
重新安排一些模式的BGM
只在更新后触发自动转换以旧版本模式名存储的数据
修复:
@@ -79,16 +77,16 @@ return[=[
新语音包:miku(by vocaloidvictory)
新BGM:Jazz nihilism(用于节日主题,by Trebor)
新BGM:Race remix(用于大师-ph,by 柒栎流星)
新BGM:Sakura(用于限时打分,by C₂₉H₂₅N₃O₅)
新BGM:Sakura(用于限时打分,by C29H25N3O5)
新BGM:Null(用于节日主题)
新音效:单次消5/6行
新机制:swap(hold的另一种实现)
新皮肤:shiny(by C₂₉H₂₅N₃O₅)
新皮肤:shiny(by C29H25N3O5)
新语言:机翻
新小程序:Link,Arithmeic
新音效室UI(idea by Trebor)
新虚拟按键贴图(by C₂₉H₂₅N₃O₅)
新功能图标(by C₂₉H₂₅N₃O₅)
新虚拟按键贴图(by C29H25N3O5)
新功能图标(by C29H25N3O5)
添加失去焦点后自动静音的设置 #281
添加启动时是否联网的开关 #377
添加总音量滑条,移除静音按钮
@@ -101,7 +99,7 @@ return[=[
回合制模式改为7块一个回合与两条命
优化master-ex/ph的信息显示
节奏模式不再禁止瞬移 #287
字体文件裁剪整理,补充Tech定制字符(by C₂₉H₂₅N₃O₅)
字体文件裁剪整理,补充Tech定制字符(by C29H25N3O5)
可以收到不同语言的公告了(目前仅支持中英 其他不会写)
降低触发防沉迷的两个时间点为2/4小时
微调键位设置逻辑,添加文本说明

View File

@@ -1,5 +1,5 @@
return{
["apkCode"]=395,
["apkCode"]=394,
["code"]=1605,
["string"]="V0.16.5",
["room"]="ver A-0",