Compare commits

...

39 Commits

Author SHA1 Message Date
MrZ_26
da716ea5c5 版本推进 2022-11-05 23:07:54 +08:00
MrZ_26
c6f92a3030 略微降低客户端发言频率限制
发言id和文本之间加一个空格
框架跟进,修复textBox控件和listBox控件显示范围问题
2022-11-05 22:59:21 +08:00
MrZ_26
267e2dc544 修复其他玩家进房check是否已存在的时候因为访问不存在的玩家而报错 2022-11-05 22:59:21 +08:00
MrZ_26
cb7d3afdfb 删除服务端的playerManager.noPassword消息 2022-11-05 22:59:21 +08:00
MrZ_26
b57e863c28 联网游戏可以用键盘ctrl+0123456切换队伍 2022-11-05 22:59:21 +08:00
MrZ_26
7aed15fd4f 修正其他玩家的结束游戏消息处理太早导致录像没放完出问题 2022-11-05 22:59:21 +08:00
MrZ_26
6d71b26595 自定义游戏菜单微调 2022-11-05 22:59:21 +08:00
sakurw
1df5406cb3 Update lang_ja.lua (#768) 2022-11-05 15:47:36 +08:00
MrZ_26
a2b762dcbc 添加几个房间内命令
添加房间被解散的语言文本
把一处神秘写法改正常一点
2022-11-05 02:14:51 +08:00
MrZ_26
c2d29c3d6a 联网游戏界面添加选队伍按钮,加一个没卵用的退出房间命令 2022-11-04 17:15:36 +08:00
MrZ_26
da602eb693 两个输入验证码的地方添加粘贴按钮
整理代码
2022-11-04 16:45:51 +08:00
MrZ_26
9e442a3073 整理代码
版本推进
2022-11-04 00:26:38 +08:00
Richard969
bc8b7e733b FIX c4wtrain_n getrank wrong (#766) 2022-11-04 00:25:22 +08:00
MrZ_26
94aa84e380 修复ultra进去就蓝屏(之前bgm模块更新忘了改对应用法) 2022-11-04 00:07:25 +08:00
MrZ_26
c462c28640 收到重复id玩家进入房间的时候会先触发把老的退掉防止出现复制人引起一堆问题 2022-11-03 23:55:04 +08:00
MrZ_26
b5fbf9cade 修复网战多队伍结束条件错误 2022-11-03 23:16:42 +08:00
MrZ_26
e88957296f 修改队伍颜色,看起来不扎眼一些(大概 2022-11-03 23:08:39 +08:00
MrZ_26
9e61cb995a 缓冲槽内有过多垃圾行时满了就不会再继续绘制,减少极端情况下的卡顿 2022-11-03 22:46:46 +08:00
MrZ_26
89a5a718da 实现房间内排名(方法有点小神秘 不过应该能用 2022-11-03 22:45:46 +08:00
MrZ_26
43649c54a3 基本完成中途加入的观战
修复从联网游戏房间退出不会把GAME.playing置false
checkWarning的玩家改成输入而不是自动获取
整理代码
2022-11-03 18:06:28 +08:00
MrZ_26
b2b5c99425 修复节日日期写错
修正简洁模式场景栈搜索有未触发漏洞
整理代码
框架跟进
2022-11-03 15:11:12 +08:00
MrZ_26
9e882e6188 框架跟进
推进中途加入房间的观战相关
2022-11-03 12:23:29 +08:00
渣渣120
e688458cfd 在 README 提供更多下载方式 便于那些完全不懂github的小白用户( (#765)
* 在 README 提供更多下载方式 便于那些完全不懂github的小白用户(

Co-authored-by: ParticleG <particle_g@outlook.com>
Co-authored-by: C₂₉H₂₅N₃O₅ <a1228465111@163.com>
2022-11-01 10:54:45 +08:00
MrZ_26
b7c528f5ac 修改获取对局种子的api 2022-10-31 18:59:04 +08:00
MrZ_26
c743fdcffc 修复连连看小游戏背景区域范围错误 2022-10-31 02:19:54 +08:00
MrZ_26
56e19dd91e 修复房间列表界面密码栏存在时刷新计时器不动导致很奇怪,现在会走时间但到0不会刷新 2022-10-30 00:17:07 +08:00
MrZ_26
308512d36a 修复暂停界面第一帧有时候会闪烁 2022-10-29 17:18:30 +08:00
MrZ_26
749806e553 修复100攻击模式打到40就算成绩 2022-10-29 15:55:53 +08:00
MrZ_26
78223334ee 再整理quarks背景代码 2022-10-29 02:22:52 +08:00
MrZ_26
7f50161ca7 再整理quarks背景代码 2022-10-29 02:20:52 +08:00
MrZ_26
dd872a72b2 整理代码,return后面跟空格 2022-10-29 00:59:41 +08:00
MrZ_26
0df17cb4ee 给一些模式换刚加的两个新背景 2022-10-29 00:52:35 +08:00
MrZ_26
27244dae04 优化两个新背景代码 2022-10-29 00:33:34 +08:00
NOT_A_ROBOT
c472d6cbd7 Add new backgrounds (#764)
* Add quark background

* add galaxy background
2022-10-28 23:39:34 +08:00
MrZ_26
e4c786a5d4 更新头像的函数检测如果缺数据就跳过流程
框架跟进
2022-10-28 16:33:19 +08:00
MrZ_26
e291a070f3 优化联网游戏体验(统计数据结算、远程玩家死亡结算时机) 2022-10-28 16:33:19 +08:00
MrZ_26
6b16fcd5f5 添加一点注释,整理代码 2022-10-28 16:33:19 +08:00
MrZ_26
d79279d1cd 音乐室可以按住shift+字符反向快速跳转 2022-10-28 16:33:19 +08:00
ParticleG
03fbfaa577 - Update workflow 2022-10-28 10:00:50 +08:00
235 changed files with 833 additions and 524 deletions

View File

@@ -232,6 +232,7 @@ jobs:
build-ios: build-ios:
runs-on: macos-latest runs-on: macos-latest
if: github.event_name != 'pull_request'
needs: [get-info, build-core, auto-test] needs: [get-info, build-core, auto-test]
env: env:
OUTPUT_FOLDER: ./build OUTPUT_FOLDER: ./build
@@ -396,6 +397,7 @@ jobs:
build-macos-appstore: build-macos-appstore:
runs-on: macos-latest runs-on: macos-latest
if: github.event_name != 'pull_request'
needs: [get-info, build-core, auto-test] needs: [get-info, build-core, auto-test]
env: env:
OUTPUT_FOLDER: ./build OUTPUT_FOLDER: ./build
@@ -487,6 +489,7 @@ jobs:
build-macos-portable: build-macos-portable:
runs-on: macos-latest runs-on: macos-latest
if: github.event_name != 'pull_request'
needs: [get-info, build-core, auto-test] needs: [get-info, build-core, auto-test]
env: env:
OUTPUT_FOLDER: ./build OUTPUT_FOLDER: ./build
@@ -697,35 +700,7 @@ jobs:
echo "# Summary" >> $GITHUB_STEP_SUMMARY echo "# Summary" >> $GITHUB_STEP_SUMMARY
echo "## Version: ${{ needs.get-info.outputs.version-string }}" >> $GITHUB_STEP_SUMMARY echo "## Version: ${{ needs.get-info.outputs.version-string }}" >> $GITHUB_STEP_SUMMARY
echo "## Package Name: ${{ needs.get-info.outputs.base-name }}" >> $GITHUB_STEP_SUMMARY echo "## Package Name: ${{ needs.get-info.outputs.base-name }}" >> $GITHUB_STEP_SUMMARY
echo "## Status: " >> $GITHUB_STEP_SUMMARY
echo "- Automatic tests: ${{ needs.auto-test.result }}" >> $GITHUB_STEP_SUMMARY
echo "- Core packages: ${{ needs.build-core.result }}" >> $GITHUB_STEP_SUMMARY
echo "- Android packages: ${{ needs.build-android.result }}" >> $GITHUB_STEP_SUMMARY
echo "- iOS packages: ${{ needs.build-ios.result }}" >> $GITHUB_STEP_SUMMARY
echo "- Linux packages: ${{ needs.build-linux.result }}" >> $GITHUB_STEP_SUMMARY
echo "- macOS packages(App Store version): ${{ needs.build-macos-appstore.result }}" >> $GITHUB_STEP_SUMMARY
echo "- macOS packages(Portable version): ${{ needs.build-macos-portable.result }}" >> $GITHUB_STEP_SUMMARY
echo "- Windows packages(Portable version): ${{ needs.build-windows.result }}" >> $GITHUB_STEP_SUMMARY
echo "## Download links: " >> $GITHUB_STEP_SUMMARY echo "## Download links: " >> $GITHUB_STEP_SUMMARY
# - name: Display build results
# shell: python3 {0}
# run: |
# import os
# with open(os.getenv('GITHUB_STEP_SUMMARY'), 'a') as f:
# if "${{ needs.build-core.result }}" == "success":
# f.write("- Bare love packages: [WeTransfer](${{ needs.build-core.outputs.download-url }})\n")
# if "${{ needs.build-android.result }}" == "success":
# f.write("- Android packages: [WeTransfer](${{ needs.build-android.outputs.download-url }})\n")
# if "${{ needs.build-ios.result }}" == "success":
# f.write("- iOS packages: [WeTransfer](${{ needs.build-ios.outputs.download-url }})\n")
# if "${{ needs.build-linux.result }}" == "success":
# f.write("- Linux packages: [WeTransfer](${{ needs.build-linux.outputs.download-url }})\n")
# if "${{ needs.build-macos-appstore.result }}" == "success":
# f.write("- macOS packages(App Store version): [WeTransfer](${{ needs.build-macos-appstore.outputs.download-url }})\n")
# if "${{ needs.build-macos-portable.result }}" == "success":
# f.write("- macOS packages(Portable version): [WeTransfer](${{ needs.build-macos-portable.outputs.download-url }})\n")
# if "${{ needs.build-windows.result }}" == "success":
# f.write("- Windows packages: [WeTransfer](${{ needs.build-windows.outputs.download-url }})\n")
- name: Display download links - name: Display download links
shell: python3 {0} shell: python3 {0}
run: | run: |

View File

@@ -60,13 +60,13 @@ BGM.setMaxSources(5)
VOC.setDiversion(.62) VOC.setDiversion(.62)
WIDGET.setOnChange(function() WIDGET.setOnChange(function()
if SCN.stack[#SCN.stack]~='custom_field' then if SCN.cur~='net_game' and SCN.cur~='custom_field' then
local colorList=THEME.getThemeColor() local colorList=THEME.getThemeColor()
if not colorList then return end if colorList then
local rnd=math.random for _,W in next,SCN.scenes[SCN.cur].widgetList do
for _,W in next,SCN.scenes[SCN.stack[#SCN.stack]].widgetList do if W.color then
if W.color then W.color=colorList[math.random(#colorList)]
W.color=colorList[rnd(#colorList)] end
end end
end end
end end
@@ -218,10 +218,10 @@ do-- Z.setOnFocus
TASK.new(task_autoSoundOn) TASK.new(task_autoSoundOn)
end end
else else
if SCN.stack[#SCN.stack]=='game' and SETTING.autoPause then if SCN.cur=='game' and SETTING.autoPause then
pauseGame() pauseGame()
end end
if SETTING.autoMute and SCN.stack[#SCN.stack]~='music' then if SETTING.autoMute and SCN.cur~='music' then
TASK.removeTask_code(task_autoSoundOn) TASK.removeTask_code(task_autoSoundOn)
TASK.new(task_autoSoundOff) TASK.new(task_autoSoundOff)
end end

View File

@@ -72,7 +72,7 @@ local function _flipList(O)
end end
local function _reflect(a) local function _reflect(a)
return{ return {
[03]=_flipList(a[01]), [03]=_flipList(a[01]),
[01]=_flipList(a[03]), [01]=_flipList(a[03]),
[30]=_flipList(a[10]), [30]=_flipList(a[10]),

View File

@@ -0,0 +1,41 @@
--Space with stars
local gc=love.graphics
local circle,setColor,hsv=gc.circle,gc.setColor,COLOR.hsv
local sin,cos=math.sin,math.cos
local back={}
local sDist,sRev={},{} -- star data in SoA [distance from center, revolution progress, color]
function back.init()
if sDist[1]then return end
local max
for i=0,20 do
max=16*(i+1)
for j=1,max do
sDist[#sDist+1]=i+math.random()
sRev[#sRev+1]=MATH.tau*j/max+MATH.tau*math.random()/max
end
end
end
function back.update(dt)
for i=1,#sDist do
sRev[i]=(sRev[i]+dt/(sDist[i]+1))%MATH.tau
end
end
function back.draw()
gc.clear()
gc.translate(SCR.cx,SCR.cy)
gc.scale(SCR.k)
gc.rotate(1)
for i=1,#sDist do
local d,r=sDist[i],sRev[i]
if d<5 then
setColor(hsv(.088,(d-2)/7,1,.7))
else
setColor(hsv(.572,d/70+.1,(22-d)/12,.7))
end
circle('fill',8*d*cos(r),24*d*sin(r),3)
end
end
return back

View File

@@ -0,0 +1,145 @@
local gc=love.graphics
local hsv=COLOR.hsv
local circle,push,pop,rot,translate,setColor=gc.circle,gc.push,gc.pop,gc.rotate,gc.translate,gc.setColor
local rnd,sin,cos,log,ceil=math.random,math.sin,math.cos,math.log,math.ceil
local back={}
local qX,qY,qdX,qdY={},{},{},{} -- quark data in SoA [size, X, Y, dx, dy, color]
local ptcclr={{1,0,0},{0,1,0},{0,0,1}}
local apcclr={{0,1,1},{1,0,1},{1,1,0}}
local blasts={} -- data about annihilation blasts from particles and antiparticles colliding
local ptc={} -- particle-antiparticle data (antiparticle is a mirror of particle)
local nextpair
local W,H,size
local quarkCount=400
local function spawnQuarkRandom(i)
qX[i]=rnd(W)-10 -- X
qY[i]=rnd(H)-10 -- Y
local theta=rnd()*MATH.tau
qdX[i]=cos(theta)*300 -- dx
qdY[i]=sin(theta)*300 -- dy
end
local function spawnQuarkEdge(i)
local side=rnd(4)
if side==1 then -- Up edge of screen
qX[i]=rnd(SCR.x-10,SCR.ex+10)
qY[i]=SCR.y-10
elseif side==2 then -- Right edge of screen
qX[i]=SCR.ex+10
qY[i]=rnd(SCR.y-10,SCR.ey+10)
elseif side==3 then -- Down edge of screen
qX[i]=rnd(SCR.x-10,SCR.ex+10)
qY[i]=SCR.ey+10
elseif side==4 then -- Left edge of screen
qX[i]=SCR.x-10
qY[i]=rnd(SCR.y-10,SCR.ey+10)
end
local theta=rnd()*MATH.tau
qdX[i]=cos(theta)*300 -- dx
qdY[i]=sin(theta)*300 -- dy
end
local function spawnParticlePair()
ptc[#ptc+1]={
x=rnd(W)-10,
y=rnd(H)-10,
dist=0,
theta=rnd()*MATH.tau,
v=500,
c=rnd(3),
}
end
local function spawnBlast(_x,_y)
blasts[#blasts+1]={x=_x,y=_y,t=0}
end
function back.init()
qX,qY,qdX,qdY={},{},{},{}
blasts={}
ptc={}
nextpair=0
BG.resize(SCR.w,SCR.h)
end
function back.resize(w,h)
W,H=w+20,h+20
for i=1,quarkCount do spawnQuarkRandom(i) end
size=2.6*SCR.k
end
function back.update(dt)
-- Move far-away quarks
for i=1,quarkCount do
qX[i]=qX[i]+qdX[i]*dt
qY[i]=qY[i]+qdY[i]*dt
if qX[i]<SCR.x-26 or qX[i]>SCR.ex+26 or qY[i]<SCR.y-26 or qY[i]>SCR.ey+26 then
spawnQuarkEdge(i)
end
end
-- Particle pair attraction & destruction
for i=#ptc,1,-1 do
local p=ptc[i]
if p then
p.dist=p.dist+p.v*dt
p.v=p.v-p.dist^2*dt
-- Destroy colliding particle pairs
if p.dist<=10 and p.v<=0 then
spawnBlast(p.x,p.y)
table.remove(ptc,i)
end
end
end
-- Age blasts, delete old blasts
for i=#blasts,1,-1 do
if blasts[i] then
blasts[i].t=blasts[i].t+dt
if blasts[i].t>=1 then
table.remove(blasts,i)
end
end
end
-- Spawn particle pairs
nextpair=nextpair-dt
if nextpair<=0 then
spawnParticlePair()
nextpair=rnd()*4
end
end
function back.draw()
gc.clear(.08,.04,.01)
translate(-10,-10)
-- Draw quarks in R/G/B
setColor(1,0,0,.8) for i=1, math.floor(quarkCount/3) do circle('fill',qX[i],qY[i],size) end
setColor(0,1,0,.8) for i=math.floor(quarkCount/3)+1, math.floor(quarkCount*2/3) do circle('fill',qX[i],qY[i],size) end
setColor(0,0,1,.8) for i=math.floor(quarkCount*2/3)+1,quarkCount do circle('fill',qX[i],qY[i],size) end
for i=1,#ptc do
local p=ptc[i]
push()
translate(p.x,p.y)
rot(p.theta)
setColor(ptcclr[p.c])
circle('fill', p.dist,0,4*size)
setColor(apcclr[p.c])
circle('fill',-p.dist,0,4*size)
pop()
end
for i=1,#blasts do
local t=blasts[i].t
setColor(hsv(-80*t,1-1.7*log(5*t,10),1,1-t))
circle('fill',blasts[i].x,blasts[i].y,62*t^.3)
end
end
function back.discard()
qX,qY,qdX,qdY,qC=nil
ptc,blasts=nil
collectgarbage()
end
return back

View File

@@ -62,7 +62,7 @@ local AISpeed={60,50,42,34,27,21,16,12,9,6}
]] ]]
function BOT.template(arg) function BOT.template(arg)
if arg.type=='CC' then if arg.type=='CC' then
return{ return {
type='CC', type='CC',
next=arg.next, next=arg.next,
hold=arg.hold, hold=arg.hold,
@@ -72,7 +72,7 @@ function BOT.template(arg)
_20G=arg._20G, _20G=arg._20G,
} }
elseif arg.type=='9S' then elseif arg.type=='9S' then
return{ return {
type='9S', type='9S',
delay=math.floor(AISpeed[arg.speedLV]), delay=math.floor(AISpeed[arg.speedLV]),
hold=arg.hold, hold=arg.hold,

View File

@@ -1,4 +1,4 @@
return{ return {
version=VERSION.code, version=VERSION.code,
-- Basic -- Basic

View File

@@ -413,7 +413,7 @@ function DATA.parseReplayData(fileName,fileData,ifFull)
-- Create unavailable replay object -- Create unavailable replay object
::BREAK_cannotParse:: ::BREAK_cannotParse::
return{ return {
fileName=fileName, fileName=fileName,
available=false, available=false,
} }

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
GC.mStr(P.modeData.wave,63,200) GC.mStr(P.modeData.wave,63,200)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
GC.mStr(P.modeData.wave,63,200) GC.mStr(P.modeData.wave,63,200)

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.lastPiece.atk>0 then if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,0,generateLine(P.holeRND:random(10))) P:receive(nil,P.lastPiece.atk,0,generateLine(P.holeRND:random(10)))

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.lastPiece.atk>0 then if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,120,generateLine(P.holeRND:random(10))) P:receive(nil,P.lastPiece.atk,120,generateLine(P.holeRND:random(10)))

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.lastPiece.atk>0 then if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,30,generateLine(P.holeRND:random(10))) P:receive(nil,P.lastPiece.atk,30,generateLine(P.holeRND:random(10)))

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.lastPiece.atk>0 then if P.lastPiece.atk>0 then
P:receive(nil,P.lastPiece.atk,60,generateLine(P.holeRND:random(10))) P:receive(nil,P.lastPiece.atk,60,generateLine(P.holeRND:random(10)))

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.lastPiece.row>0 then if P.lastPiece.row>0 then
for _=1,#P.clearedRow do for _=1,#P.clearedRow do

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
mText(TEXTOBJ.techrash,63,420) mText(TEXTOBJ.techrash,63,420)
setFont(75) setFont(75)

View File

@@ -1,6 +1,6 @@
local rem=table.remove local rem=table.remove
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(45) setFont(45)
GC.mStr(P.combo,63,310) GC.mStr(P.combo,63,310)

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.lastPiece.row>0 then if P.lastPiece.row>0 then
for _=1,#P.clearedRow do for _=1,#P.clearedRow do

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.lastPiece.row==0 then if P.lastPiece.row==0 then
P:lose() P:lose()

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(45) setFont(45)
GC.mStr(("%.1f"):format(P.stat.atk),63,190) GC.mStr(("%.1f"):format(P.stat.atk),63,190)

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.garbageBeneath==0 then if P.garbageBeneath==0 then
local D=P.modeData local D=P.modeData

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=10-P.stat.row local r=10-P.stat.row

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=100-P.stat.row local r=100-P.stat.row

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=1000-P.stat.row local r=1000-P.stat.row

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=20-P.stat.row local r=20-P.stat.row

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=200-P.stat.row local r=200-P.stat.row

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=40-P.stat.row local r=40-P.stat.row

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=400-P.stat.row local r=400-P.stat.row

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if #PLY_ALIVE>1 then if #PLY_ALIVE>1 then
P.control=false P.control=false

View File

@@ -1,4 +1,4 @@
return{ return {
hook_drop=function(P) hook_drop=function(P)
if P.stat.piece%7==0 and #PLY_ALIVE>1 then if P.stat.piece%7==0 and #PLY_ALIVE>1 then
P.control=false P.control=false

View File

@@ -23,7 +23,7 @@ local function GetGravity(lvl)
lvl<29 and 2 or lvl<29 and 2 or
1 1
end end
return{ return {
das=16,arr=6, das=16,arr=6,
sddas=6,sdarr=6, sddas=6,sdarr=6,
irs=false,ims=false, irs=false,ims=false,

View File

@@ -23,7 +23,7 @@ local function GetGravity(lvl)
lvl<29 and 2 or lvl<29 and 2 or
1 1
end end
return{ return {
das=16,arr=6, das=16,arr=6,
sddas=3,sdarr=3, sddas=3,sdarr=3,
irs=false,ims=false, irs=false,ims=false,

View File

@@ -23,7 +23,7 @@ local function GetGravity(lvl)
lvl<29 and 2 or lvl<29 and 2 or
1 1
end end
return{ return {
das=16,arr=6, das=16,arr=6,
sddas=2,sdarr=2, sddas=2,sdarr=2,
irs=false,ims=false, irs=false,ims=false,

View File

@@ -4,7 +4,7 @@ local function GetLevelStr(lvl)
lvl=lvl%256 lvl=lvl%256
return list[lvl] return list[lvl]
end end
return{ return {
das=16,arr=6, das=16,arr=6,
sddas=1,sdarr=1, sddas=1,sdarr=1,
irs=false,ims=false, irs=false,ims=false,

View File

@@ -1,4 +1,4 @@
return{ return {
drop=5,lock=60, drop=5,lock=60,
fall=6, fall=6,
mesDisp=function(P) mesDisp=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
drop=30,lock=60, drop=30,lock=60,
fall=10, fall=10,
mesDisp=function(P) mesDisp=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
GC.mStr(100-P.stat.dig,63,265) GC.mStr(100-P.stat.dig,63,265)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
GC.mStr(10-P.stat.dig,63,265) GC.mStr(10-P.stat.dig,63,265)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
GC.mStr(400-P.stat.dig,63,265) GC.mStr(400-P.stat.dig,63,265)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
GC.mStr(40-P.stat.dig,63,265) GC.mStr(40-P.stat.dig,63,265)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.wave,63,310) GC.mStr(P.modeData.wave,63,310)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.wave,63,310) GC.mStr(P.modeData.wave,63,310)

View File

@@ -1,6 +1,6 @@
local dropSpeed={50,40,30,25,20,15,12,9,7,5,4,3,2,1,1,.5,.5,.25,.25} local dropSpeed={50,40,30,25,20,15,12,9,7,5,4,3,2,1,1,.5,.5,.25,.25}
return{ return {
drop=60, drop=60,
wait=8, wait=8,
fall=20, fall=20,

View File

@@ -10,7 +10,7 @@ local function getRollGoal(P)
return goal+(rem>0.3 and 4 or rem*10) return goal+(rem>0.3 and 4 or rem*10)
end end
return{ return {
drop=0,lock=15, drop=0,lock=15,
wait=15,fall=6, wait=15,fall=6,
noTele=true, noTele=true,

View File

@@ -1,4 +1,4 @@
return{ return {
drop=0,lock=12, drop=0,lock=12,
wait=10,fall=10, wait=10,fall=10,
noTele=true, noTele=true,

View File

@@ -119,7 +119,7 @@ local function getRollGoal()
end end
end end
return{ return {
drop=64, drop=64,
lock=30, lock=30,
wait=23, wait=23,

View File

@@ -2,7 +2,7 @@ local death_lock={12,11,10,9,8, 8,8,7,7,6}
local death_wait={10,9, 8, 7,6, 7,6,6,5,5} local death_wait={10,9, 8, 7,6, 7,6,6,5,5}
local death_fall={10,9, 8, 7,6, 7,6,5,5,5} local death_fall={10,9, 8, 7,6, 7,6,5,5,5}
return{ return {
drop=0, drop=0,
lock=death_lock[1], lock=death_lock[1],
wait=death_wait[1], wait=death_wait[1],

View File

@@ -5,7 +5,7 @@ local inv_hide={20,17,14,11, 8, 5, 3, 2, 1, 0}
local hidetimer=0 local hidetimer=0
local held=false local held=false
return{ return {
drop=0, drop=0,
lock=inv_lock[1], lock=inv_lock[1],
wait=inv_wait[1], wait=inv_wait[1],

View File

@@ -2,7 +2,7 @@ local rush_lock={20,18,16,15,14, 14,13,12,11,11}
local rush_wait={12,11,11,10,10, 10,10, 9, 9, 9} local rush_wait={12,11,11,10,10, 10,10, 9, 9, 9}
local rush_fall={18,16,14,13,12, 12,11,11,10,10} local rush_fall={18,16,14,13,12, 12,11,11,10,10}
return{ return {
drop=0, drop=0,
lock=rush_lock[1], lock=rush_lock[1],
wait=rush_wait[1], wait=rush_wait[1],

View File

@@ -1,4 +1,4 @@
return{ return {
heightLimit=4, heightLimit=4,
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)

View File

@@ -41,7 +41,7 @@ local function _check(P)
end end
end end
end end
return{ return {
sequence='none', sequence='none',
RS="SRS", RS="SRS",
mesDisp=function(P) mesDisp=function(P)

View File

@@ -34,7 +34,7 @@ local function _check(P)
end end
end end
end end
return{ return {
sequence='none', sequence='none',
RS="SRS", RS="SRS",
mesDisp=function(P) mesDisp=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
layout='royale', layout='royale',
fkey1=function(P) fkey1=function(P)
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode) P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)

View File

@@ -45,7 +45,7 @@ local function generateGuide(num)
end end
end end
return{ return {
fkey1=function(P) P.modeData.showGuide=not P.modeData.showGuide end, fkey1=function(P) P.modeData.showGuide=not P.modeData.showGuide end,
mesDisp=function(P) mesDisp=function(P)
mText(TEXTOBJ.grade,63,190) mText(TEXTOBJ.grade,63,190)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(45) setFont(45)
GC.mStr(("%.1f"):format(P.stat.atk),63,270) GC.mStr(("%.1f"):format(P.stat.atk),63,270)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(55) setFont(55)
local r=40-P.stat.row local r=40-P.stat.row

View File

@@ -1,7 +1,7 @@
local oppo={ local oppo={
[1]=7,[7]=1,[11]=3,[3]=11,[14]=14,[4]=4,[9]=9, [1]=7,[7]=1,[11]=3,[3]=11,[14]=14,[4]=4,[9]=9,
} }
return{ return {
skin={ skin={
1,7,11,3,14,4,9, 1,7,11,3,14,4,9,
1,7,2,6,10,2,13,5,9,15,10,11,3,12,2,16,8,4, 1,7,2,6,10,2,13,5,9,15,10,11,3,12,2,16,8,4,

View File

@@ -1,4 +1,4 @@
return{ return {
fieldH=20, fieldH=20,
fillClear=false, fillClear=false,
mesDisp=function(P) mesDisp=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
fieldH=21, fieldH=21,
fillClear=false, fillClear=false,
mesDisp=function(P) mesDisp=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.wave,63,310) GC.mStr(P.modeData.wave,63,310)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.wave,63,310) GC.mStr(P.modeData.wave,63,310)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.wave,63,310) GC.mStr(P.modeData.wave,63,310)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.wave,63,310) GC.mStr(P.modeData.wave,63,310)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.wave,63,310) GC.mStr(P.modeData.wave,63,310)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.stat.clear[7][4],63,250) GC.mStr(P.stat.clear[7][4],63,250)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.techrash,63,250) GC.mStr(P.modeData.techrash,63,250)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.tsd,63,250) GC.mStr(P.modeData.tsd,63,250)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.tsd,63,250) GC.mStr(P.modeData.tsd,63,250)

View File

@@ -1,4 +1,4 @@
return{ return {
mesDisp=function(P) mesDisp=function(P)
setFont(60) setFont(60)
GC.mStr(P.modeData.tsd,63,250) GC.mStr(P.modeData.tsd,63,250)

View File

@@ -1,7 +1,7 @@
local warnTime={60,90,105,115,116,117,118,119,120} local warnTime={60,90,105,115,116,117,118,119,120}
for i=1,#warnTime do warnTime[i]=warnTime[i]*60 end for i=1,#warnTime do warnTime[i]=warnTime[i]*60 end
return{ return {
mesDisp=function(P) mesDisp=function(P)
GC.setLineWidth(2) GC.setLineWidth(2)
GC.setColor(.98,.98,.98,.8) GC.setColor(.98,.98,.98,.8)
@@ -18,7 +18,7 @@ return{
GC.mStr(T,63,268) GC.mStr(T,63,268)
end, end,
task=function(P) task=function(P)
BGM.seek(0) BGM.set('all','seek',0)
P.modeData.section=1 P.modeData.section=1
while true do while true do
coroutine.yield() coroutine.yield()

View File

@@ -51,7 +51,7 @@ do-- function tryDelete()
end end
end end
do-- function loadFile(name,args), function saveFile(data,name,args) do-- function loadFile(name,args), function saveFile(data,name,args)
local t=setmetatable({},{__index=function() return"'$1' loading failed: $2" end}) local t=setmetatable({},{__index=function() return "'$1' loading failed: $2" end})
function loadFile(name,args) function loadFile(name,args)
local text=text or t local text=text or t
if not args then args='' end if not args then args='' end
@@ -800,13 +800,12 @@ do-- function resetGameData(args)
collectgarbage() collectgarbage()
end end
end end
do-- function checkWarning() do-- function checkWarning(P,dt)
local max=math.max local max=math.max
function checkWarning(dt) function checkWarning(P,dt)
local P1=PLAYERS[1] if P.alive then
if P1.alive then if P.frameRun%26==0 then
if P1.frameRun%26==0 then local F=P.field
local F=P1.field
local height=0-- Max height of row 4~7 local height=0-- Max height of row 4~7
for x=4,7 do for x=4,7 do
for y=#F,1,-1 do for y=#F,1,-1 do
@@ -818,7 +817,7 @@ do-- function checkWarning()
end end
end end
end end
GAME.warnLVL0=math.log(height-(P1.gameEnv.fieldH-5)+P1.atkBufferSum*.8) GAME.warnLVL0=math.log(height-(P.gameEnv.fieldH-5)+P.atkBufferSum*.8)
end end
local _=GAME.warnLVL local _=GAME.warnLVL
if _<GAME.warnLVL0 then if _<GAME.warnLVL0 then
@@ -827,7 +826,7 @@ do-- function checkWarning()
_=max(_-.026,0) _=max(_-.026,0)
end end
GAME.warnLVL=_ GAME.warnLVL=_
if GAME.warnLVL>1.126 and P1.frameRun%30==0 then if GAME.warnLVL>1.126 and P.frameRun%30==0 then
SFX.fplay('warn_beep',SETTING.sfx_warn) SFX.fplay('warn_beep',SETTING.sfx_warn)
end end
elseif GAME.warnLVL>0 then elseif GAME.warnLVL>0 then

View File

@@ -22,12 +22,12 @@ RANK_COLORS={
} }
GROUP_COLORS={ GROUP_COLORS={
[0]=COLOR.Z, [0]=COLOR.Z,
[1]=COLOR.R, [1]={STRING.hexColor'e57373'},
[2]=COLOR.G, [2]={STRING.hexColor"4caf50"},
[3]=COLOR.B, [3]={STRING.hexColor'5c6bc0'},
[4]=COLOR.Y, [4]={STRING.hexColor'ffe082'},
[5]=COLOR.M, [5]={STRING.hexColor'ba68c8'},
[6]=COLOR.C, [6]={STRING.hexColor'80deea'},
} }
do-- SVG_TITLE_FILL, SVG_TITLE_LINE do-- SVG_TITLE_FILL, SVG_TITLE_LINE

View File

@@ -1,6 +1,6 @@
local HDsearch="https://harddrop.com/wiki?search=" local HDsearch="https://harddrop.com/wiki?search="
local HDwiki="\nFor more information, please visit Hard Drop Wiki. Click on the globe icon to open the link." local HDwiki="\nFor more information, please visit Hard Drop Wiki. Click on the globe icon to open the link."
return{ return {
{"Translator Note 1", {"Translator Note 1",
"", "",
"help", "help",

View File

@@ -1,6 +1,6 @@
local HDsearch="https://harddrop.com/wiki?search=" local HDsearch="https://harddrop.com/wiki?search="
local HDwiki="\nHard Drop Wikiに詳しい情報があります!" local HDwiki="\nHard Drop Wikiに詳しい情報があります!"
return{ return {
{"翻訳者からのメモ1", {"翻訳者からのメモ1",
"", "",
"help", "help",

View File

@@ -1,6 +1,6 @@
local HDsearch="https://harddrop.com/wiki?search=" local HDsearch="https://harddrop.com/wiki?search="
local HDwiki="\n更多内容见Hard Drop Wiki。" local HDwiki="\n更多内容见Hard Drop Wiki。"
return{ return {
{"新人须知", {"新人须知",
"读我 必读 萌新 xinren new noob readme", "读我 必读 萌新 xinren new noob readme",
"help", "help",

View File

@@ -1,5 +1,5 @@
local C=COLOR local C=COLOR
return{ return {
loadText={ loadText={
loadSFX="Loading sound effects", loadSFX="Loading sound effects",
loadSample="Loading instrument samples", loadSample="Loading instrument samples",
@@ -141,7 +141,6 @@ return{
invalidCode="Invalid code", invalidCode="Invalid code",
invalidEmail="Invalid email", invalidEmail="Invalid email",
playerNotFound="Player not found", playerNotFound="Player not found",
noPassword="No password",
invalidEmailPass="Invalid email or password", invalidEmailPass="Invalid email or password",
emailExists="Email exists", emailExists="Email exists",
emailSendError="Email send error", emailSendError="Email send error",
@@ -186,6 +185,7 @@ return{
started="Playing", started="Playing",
joinRoom="$1 has entered the room.", joinRoom="$1 has entered the room.",
leaveRoom="$1 has left the room.", leaveRoom="$1 has left the room.",
roomRemoved="Room was removed",
ready="Ready", ready="Ready",
spectating="Spectating", spectating="Spectating",

View File

@@ -1,4 +1,4 @@
return{ return {
loadText={ loadText={
loadSFX="Cargando efectos de sonido", loadSFX="Cargando efectos de sonido",
loadSample="Cargando samples de música", loadSample="Cargando samples de música",
@@ -140,7 +140,6 @@ return{
-- invalidCode="Invalid code", -- invalidCode="Invalid code",
-- invalidEmail="Invalid email", -- invalidEmail="Invalid email",
-- playerNotFound="Player not found", -- playerNotFound="Player not found",
-- noPassword="No password",
-- invalidEmailPass="Invalid email or password", -- invalidEmailPass="Invalid email or password",
-- emailExists="Email exists", -- emailExists="Email exists",
-- emailSendError="Email send error", -- emailSendError="Email send error",
@@ -185,6 +184,7 @@ return{
started="En juego", started="En juego",
joinRoom="$1 entró a la sala.", joinRoom="$1 entró a la sala.",
leaveRoom="$1 salió de la sala.", leaveRoom="$1 salió de la sala.",
-- roomRemoved="Room was removed",
ready="LISTO", ready="LISTO",
spectating="Espectando", spectating="Espectando",

View File

@@ -1,4 +1,4 @@
return{ return {
fallback='en', fallback='en',
sureQuit="Appuyez à nouveau pour sortir", sureQuit="Appuyez à nouveau pour sortir",
-- sureReset="Press again to reset", -- sureReset="Press again to reset",
@@ -131,7 +131,6 @@ return{
-- invalidCode="Invalid code", -- invalidCode="Invalid code",
-- invalidEmail="Invalid email", -- invalidEmail="Invalid email",
-- playerNotFound="Player not found", -- playerNotFound="Player not found",
-- noPassword="No password",
-- invalidEmailPass="Invalid email or password", -- invalidEmailPass="Invalid email or password",
-- emailExists="Email exists", -- emailExists="Email exists",
-- emailSendError="Email send error", -- emailSendError="Email send error",
@@ -177,13 +176,12 @@ return{
-- started="Playing", -- started="Playing",
joinRoom="$1 a rejoint le salon.", joinRoom="$1 a rejoint le salon.",
leaveRoom="$1 a quitté le salon.", leaveRoom="$1 a quitté le salon.",
-- roomRemoved="Room was removed",
-- ready="READY", -- ready="READY",
-- connStream="CONNECTING",
-- waitStream="WAITING",
-- spectating="Spectating", -- spectating="Spectating",
-- keySettingInstruction="Press to bind key\nescape: cancel\nbackspace: delete", -- keySettingInstruction="Press to bind key\nescape: cancel\nbackspace: delete",
-- customBGhelp="Drop image file here to apply custom background", -- customBGhelp="Drop image file here to apply custom background",
-- customBGloadFailed="Unsupport image format for custom background", -- customBGloadFailed="Unsupport image format for custom background",

View File

@@ -1,5 +1,5 @@
local C=COLOR local C=COLOR
return{ return {
fallback='en', fallback='en',
loadText={ loadText={
loadSFX="Memuat efek suara", loadSFX="Memuat efek suara",
@@ -142,7 +142,6 @@ return{
-- invalidCode="Invalid code", -- invalidCode="Invalid code",
-- invalidEmail="Invalid email", -- invalidEmail="Invalid email",
-- playerNotFound="Player not found", -- playerNotFound="Player not found",
-- noPassword="No password",
-- invalidEmailPass="Invalid email or password", -- invalidEmailPass="Invalid email or password",
-- emailExists="Email exists", -- emailExists="Email exists",
-- emailSendError="Email send error", -- emailSendError="Email send error",
@@ -187,6 +186,7 @@ return{
started="Bermain", started="Bermain",
joinRoom="$1 telah memasuki ruangan.", joinRoom="$1 telah memasuki ruangan.",
leaveRoom="$1 telah keluar dari ruangan.", leaveRoom="$1 telah keluar dari ruangan.",
-- roomRemoved="Room was removed",
ready="Siap", ready="Siap",
spectating="Menonton", spectating="Menonton",

View File

@@ -1,5 +1,5 @@
local C=COLOR local C=COLOR
return{ return {
fallback='en', fallback='en',
loadText={ loadText={
loadSFX="効果音をロード中", loadSFX="効果音をロード中",
@@ -142,7 +142,6 @@ return{
invalidCode="無効なコード", invalidCode="無効なコード",
invalidEmail="無効なEメールアドレス", invalidEmail="無効なEメールアドレス",
playerNotFound="プレイヤーが見つかりませんでした", playerNotFound="プレイヤーが見つかりませんでした",
noPassword="パスワードがありません",
invalidEmailPass="Eメールアドレスもしくはパスワードが違います", invalidEmailPass="Eメールアドレスもしくはパスワードが違います",
emailExists="Eメールアドレスは存在します", emailExists="Eメールアドレスは存在します",
emailSendError="送信できませんでした", emailSendError="送信できませんでした",
@@ -161,7 +160,7 @@ return{
}, },
}, },
tooFrequent="リクエストの頻度が高すぎます", tooFrequent="リクエストが多すぎます",
roomPasswordChanged="部屋のパスワードを変更しました", roomPasswordChanged="部屋のパスワードを変更しました",
oldVersion="バージョン$1のダウンロードが可能になりました", oldVersion="バージョン$1のダウンロードが可能になりました",
versionNotMatch="バージョンが一致しません", versionNotMatch="バージョンが一致しません",
@@ -177,7 +176,7 @@ return{
wsFailed="ウェブソケットとの通信に失敗しました: $1", wsFailed="ウェブソケットとの通信に失敗しました: $1",
wsClose="ウェブソケットとの通信を終了: $1", wsClose="ウェブソケットとの通信を終了: $1",
netTimeout="接続がタイムアウトしました", netTimeout="接続がタイムアウトしました",
serverDown="うわ! サーバーが落ちました", serverDown="うわ! サーバーが落ちています...",
requestFailed="リクエスト失敗", requestFailed="リクエスト失敗",
onlinePlayerCount="オンライン人数: $1", onlinePlayerCount="オンライン人数: $1",
@@ -186,6 +185,7 @@ return{
started="プレイ中", started="プレイ中",
joinRoom="$1 が入室しました", joinRoom="$1 が入室しました",
leaveRoom="$1 が退出しました", leaveRoom="$1 が退出しました",
roomRemoved="部屋が撤去されました",
ready="準備OK", ready="準備OK",
spectating="観戦中", spectating="観戦中",
@@ -195,7 +195,7 @@ return{
customBGhelp="カスタム背景にする画像ファイルをドロップ", customBGhelp="カスタム背景にする画像ファイルをドロップ",
customBGloadFailed="サポートされていないフォーマットのファイルです", customBGloadFailed="サポートされていないフォーマットのファイルです",
errorMsg="問題が発生! ゲームを再起動してください、できるならエラーログを開発者に送ってください", errorMsg="問題が発生! ゲームを再起動しエラーログを開発者に送ってください",
tryAnotherBuild="[Invalid UTF-8]使用しているOSがMicrosoft WindowsであればTechmino-win32かTechmino-win64をダウンロードしてください! (現在使用しているソフトは違うバージョンです)", tryAnotherBuild="[Invalid UTF-8]使用しているOSがMicrosoft WindowsであればTechmino-win32かTechmino-win64をダウンロードしてください! (現在使用しているソフトは違うバージョンです)",
modInstruction="Modを選択してください!\nModはゲームの中身を変えます\nしかしゲームが破損することもあります\nModを使用した場合スコアは保存されません", modInstruction="Modを選択してください!\nModはゲームの中身を変えます\nしかしゲームが破損することもあります\nModを使用した場合スコアは保存されません",
@@ -413,8 +413,8 @@ return{
}, },
net_menu={ net_menu={
league="テクリーグ", league="テクリーグ",
ffa="自由乱闘戦", ffa="",
rooms="ルーム・プライベート戦", rooms="ルーム",
resetPW="パスワード再設定", resetPW="パスワード再設定",
logout="ログアウト", logout="ログアウト",
}, },
@@ -879,9 +879,9 @@ return{
['blind_e']= {"目隠し", "HALF", "初心者用"}, ['blind_e']= {"目隠し", "HALF", "初心者用"},
['blind_n']= {"目隠し", "ALL", "中級者用"}, ['blind_n']= {"目隠し", "ALL", "中級者用"},
['blind_h']= {"目隠し", "SUDDEN", "上級者用"}, ['blind_h']= {"目隠し", "SUDDEN", "上級者用"},
['blind_l']= {"目隠し", "SUDDEN+", "プロフェッショナル用!"}, ['blind_l']= {"目隠し", "SUDDEN+", "プロフェッショナル用"},
['blind_u']= {"目隠し", "?", "覚悟は良いかい?"}, ['blind_u']= {"目隠し", "?", "覚悟は良いかい?"},
['blind_wtf']= {"目隠し", "WTF", "まだ覚悟が足りない!"}, ['blind_wtf']= {"目隠し", "WTF", "まだ覚悟が足りない"},
['classic_e']= {"クラシック", "EASY", "低速クラシック"}, ['classic_e']= {"クラシック", "EASY", "低速クラシック"},
['classic_h']= {"クラシック", "HARD", "通常速度クラシック"}, ['classic_h']= {"クラシック", "HARD", "通常速度クラシック"},
['classic_l']= {"クラシック", "LUNATIC", "中高速度クラシック"}, ['classic_l']= {"クラシック", "LUNATIC", "中高速度クラシック"},
@@ -901,9 +901,9 @@ return{
['c4wtrain_l']= {"C4Wトレーニング", "LUNATIC", "無限中開け"}, ['c4wtrain_l']= {"C4Wトレーニング", "LUNATIC", "無限中開け"},
['pctrain_n']= {"パフェトレーニング", "NORMAL", "パフェの練習!"}, ['pctrain_n']= {"パフェトレーニング", "NORMAL", "パフェの練習!"},
['pctrain_l']= {"パフェトレーニング", "LUNATIC", "もっと難しいパフェの練習!"}, ['pctrain_l']= {"パフェトレーニング", "LUNATIC", "もっと難しいパフェの練習!"},
['pc_n']= {"パフェチャレンジ", "NORMAL", "100 Line以内でパフェをできるだけたくさん取れ!"}, ['pc_n']= {"パフェチャレンジ", "NORMAL", "100Line以内で パフェをできるだけたくさん取れ!"},
['pc_h']= {"パフェチャレンジ", "HARD", "100 Line以内でパフェをできるだけたくさん取れ!"}, ['pc_h']= {"パフェチャレンジ", "HARD", "100Line以内で パフェをできるだけたくさん取れ!"},
['pc_l']= {"パフェチャレンジ", "LUNATIC", "100 Line以内でパフェをできるだけたくさん取れ!"}, ['pc_l']= {"パフェチャレンジ", "LUNATIC", "100Line以内で パフェをできるだけたくさん取れ!"},
['pc_inf']= {"無限パフェチャレンジ", "", "できる限りたくさんのパフェを取れ!"}, ['pc_inf']= {"無限パフェチャレンジ", "", "できる限りたくさんのパフェを取れ!"},
['tech_n']= {"テクニック", "NORMAL", "B2Bを繋げ続けよう!"}, ['tech_n']= {"テクニック", "NORMAL", "B2Bを繋げ続けよう!"},
['tech_n_plus']= {"テクニック", "NORMAL+", "回転入れとパフェだけ!"}, ['tech_n_plus']= {"テクニック", "NORMAL+", "回転入れとパフェだけ!"},
@@ -1015,7 +1015,7 @@ getTip={refuseCopy=true,
"ゲーム内にはモード選択マップからじゃ入れない隠しモードがいくつかあります!", "ゲーム内にはモード選択マップからじゃ入れない隠しモードがいくつかあります!",
"このゲームでは全てのSpinに火力補正があります!", "このゲームでは全てのSpinに火力補正があります!",
"このゲームのほとんどの楽曲はBeepboxを用いて作曲されました!", "このゲームのほとんどの楽曲はBeepboxを用いて作曲されました!",
"サーバーが不規則にダウンします", "サーバーが不規則に落ちます",
"スタッフロールの背景に流れている名前はスポンサーの名前です!", "スタッフロールの背景に流れている名前はスポンサーの名前です!",
"タブレットやスマホでもキーボードを接続できます!(iOSにはそんな機能ないと思うけど)", "タブレットやスマホでもキーボードを接続できます!(iOSにはそんな機能ないと思うけど)",
"なにかアイデアがありますか? Discordで提案してください!", "なにかアイデアがありますか? Discordで提案してください!",

View File

@@ -1,5 +1,5 @@
local C=COLOR local C=COLOR
return{ return {
fallback='en', fallback='en',
sureQuit="Aparte novamente para sair", sureQuit="Aparte novamente para sair",
-- sureReset="Press again to reset", -- sureReset="Press again to reset",
@@ -129,7 +129,6 @@ return{
-- invalidCode="Invalid code", -- invalidCode="Invalid code",
-- invalidEmail="Invalid email", -- invalidEmail="Invalid email",
-- playerNotFound="Player not found", -- playerNotFound="Player not found",
-- noPassword="No password",
-- invalidEmailPass="Invalid email or password", -- invalidEmailPass="Invalid email or password",
-- emailExists="Email exists", -- emailExists="Email exists",
-- emailSendError="Email send error", -- emailSendError="Email send error",
@@ -174,9 +173,8 @@ return{
-- started="Playing", -- started="Playing",
joinRoom="$1 Entrou a sala.", joinRoom="$1 Entrou a sala.",
leaveRoom="$1 Saiu da sala.", leaveRoom="$1 Saiu da sala.",
-- roomRemoved="Room was removed",
-- ready="READY", -- ready="READY",
-- connStream="CONNECTING",
-- waitStream="WAITING",
-- spectating="Spectating", -- spectating="Spectating",

View File

@@ -1,4 +1,4 @@
return{ return {
fallback='en', fallback='en',
loadText={ loadText={

View File

@@ -1,5 +1,5 @@
local C=COLOR local C=COLOR
return{ return {
loadText={ loadText={
loadSFX="加载音效资源", loadSFX="加载音效资源",
loadSample="加载乐器采样", loadSample="加载乐器采样",
@@ -141,7 +141,6 @@ return{
invalidCode="无效验证码", invalidCode="无效验证码",
invalidEmail="无效邮箱", invalidEmail="无效邮箱",
playerNotFound="找不到玩家", playerNotFound="找不到玩家",
noPassword="未输入密码",
invalidEmailPass="邮箱或密码无效", invalidEmailPass="邮箱或密码无效",
emailExists="邮箱存在", emailExists="邮箱存在",
emailSendError="邮箱发送错误", emailSendError="邮箱发送错误",
@@ -186,6 +185,7 @@ return{
started="游戏中", started="游戏中",
joinRoom="$1 进入房间", joinRoom="$1 进入房间",
leaveRoom="$1 离开房间", leaveRoom="$1 离开房间",
roomRemoved="房间被解散",
ready="各就各位!", ready="各就各位!",
spectating="观战中", spectating="观战中",

View File

@@ -1,5 +1,5 @@
local C=COLOR local C=COLOR
return{ return {
loadText={ loadText={
loadSFX="Load(SFX);", loadSFX="Load(SFX);",
loadSample="Load(Sample);", loadSample="Load(Sample);",
@@ -118,7 +118,6 @@ return{
noUsername="Error.NoUsername();", noUsername="Error.NoUsername();",
wrongEmail="Error.WrongEmail();", wrongEmail="Error.WrongEmail();",
wrongCode="Error.WrongVerificationCode();", wrongCode="Error.WrongVerificationCode();",
noPassword="Error.NoPassword();",
diffPassword="Error.DiffPassword();", diffPassword="Error.DiffPassword();",
checkEmail="register.RequestSent=true", checkEmail="register.RequestSent=true",
@@ -135,6 +134,7 @@ return{
started="Room.Playing();", started="Room.Playing();",
joinRoom="Room.Join($1);", joinRoom="Room.Join($1);",
leaveRoom="Room.Leave($1);", leaveRoom="Room.Leave($1);",
roomRemoved="Room.Removed();",
ready="Ready();", ready="Ready();",
spectating="Room.Spectating();", spectating="Room.Spectating();",

View File

@@ -1,4 +1,4 @@
return{ return {
fallback='zh', fallback='zh',
loadText={ loadText={
loadSFX="加載音效資源", loadSFX="加載音效資源",
@@ -141,7 +141,6 @@ return{
invalidCode="無效驗證碼", invalidCode="無效驗證碼",
invalidEmail="無效郵箱", invalidEmail="無效郵箱",
playerNotFound="找不到玩家", playerNotFound="找不到玩家",
noPassword="未輸入密碼",
invalidEmailPass="郵箱或密碼無效", invalidEmailPass="郵箱或密碼無效",
emailExists="郵箱存在", emailExists="郵箱存在",
emailSendError="郵箱發送錯誤", emailSendError="郵箱發送錯誤",
@@ -186,6 +185,7 @@ return{
started="遊戲中", started="遊戲中",
joinRoom="$1 進入房間", joinRoom="$1 進入房間",
leaveRoom="$1 離開房間", leaveRoom="$1 離開房間",
roomRemoved="房間被解散",
ready="準備!", ready="準備!",
spectating="旁觀中", spectating="旁觀中",

View File

@@ -1,4 +1,4 @@
return{ return {
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}}, {name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
{name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"}, {name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"},
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH','sprint123','secret_grade'}}, {name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH','sprint123','secret_grade'}},

View File

@@ -1,4 +1,4 @@
return{ return {
{ {
{ {
{4,4,4,3,3,3,7,0,0,0}, {4,4,4,3,3,3,7,0,0,0},

View File

@@ -1,4 +1,4 @@
return{ return {
-- 3*4 shape -- 3*4 shape
{{1,3,3},{1,3,4},{1,5,3},{3,1,3},{3,1,4},{3,2,4},{3,3,2},{3,3,5},{3,3,6},{3,3,7},{3,4,1},{3,4,5},{3,4,6},{3,5,3},{3,5,4},{3,5,5},{3,6,3},{3,6,4},{3,7,3},{3,7,4},{5,3,4},{5,3,5},{5,5,1},{5,5,3},{5,7,3},{6,3,3},{6,3,4},{6,6,7},{6,7,6},{7,3,3},{7,3,4},{7,5,3},{7,6,6},{7,7,7}}, {{1,3,3},{1,3,4},{1,5,3},{3,1,3},{3,1,4},{3,2,4},{3,3,2},{3,3,5},{3,3,6},{3,3,7},{3,4,1},{3,4,5},{3,4,6},{3,5,3},{3,5,4},{3,5,5},{3,6,3},{3,6,4},{3,7,3},{3,7,4},{5,3,4},{5,3,5},{5,5,1},{5,5,3},{5,7,3},{6,3,3},{6,3,4},{6,6,7},{6,7,6},{7,3,3},{7,3,4},{7,5,3},{7,6,6},{7,7,7}},

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=30,lock=60, drop=30,lock=60,
fall=12, fall=12,
@@ -7,7 +7,7 @@ return{
eventSet='attacker_h', eventSet='attacker_h',
bg='rainbow2',bgm='shining terminal', bg='rainbow2',bgm='shining terminal',
}, },
score=function(P) return{P.modeData.wave,P.stat.time} end, score=function(P) return {P.modeData.wave,P.stat.time} end,
scoreDisp=function(D) return D[1].." Waves "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Waves "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=5,lock=60, drop=5,lock=60,
fall=8, fall=8,
@@ -6,7 +6,7 @@ return{
eventSet='attacker_u', eventSet='attacker_u',
bg='rainbow2',bgm='shining terminal', bg='rainbow2',bgm='shining terminal',
}, },
score=function(P) return{P.modeData.wave,P.stat.time} end, score=function(P) return {P.modeData.wave,P.stat.time} end,
scoreDisp=function(D) return D[1].." Waves "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Waves "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=10,lock=60, drop=10,lock=60,
freshLimit=15, freshLimit=15,
@@ -13,7 +13,7 @@ return{
end, end,
bg='tunnel',bgm='echo', bg='tunnel',bgm='echo',
}, },
score=function(P) return{math.min(math.floor(P.stat.atk),100),P.stat.time} end, score=function(P) return {math.min(math.floor(P.stat.atk),100),P.stat.time} end,
scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=5,lock=45, drop=5,lock=45,
freshLimit=15, freshLimit=15,
@@ -13,7 +13,7 @@ return{
end, end,
bg='blockhole',bgm='echo', bg='blockhole',bgm='echo',
}, },
score=function(P) return{math.min(math.floor(P.stat.atk),100),P.stat.time} end, score=function(P) return {math.min(math.floor(P.stat.atk),100),P.stat.time} end,
scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=30,lock=60, drop=30,lock=60,
hook_drop={ hook_drop={
@@ -12,7 +12,7 @@ return{
end, end,
bg='tunnel',bgm='echo', bg='tunnel',bgm='echo',
}, },
score=function(P) return{math.min(math.floor(P.stat.atk),100),P.stat.time} end, score=function(P) return {math.min(math.floor(P.stat.atk),100),P.stat.time} end,
scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=2,lock=30, drop=2,lock=30,
freshLimit=10, freshLimit=10,
@@ -13,7 +13,7 @@ return{
end, end,
bg='blockhole',bgm='echo', bg='blockhole',bgm='echo',
}, },
score=function(P) return{math.min(math.floor(P.stat.atk),100),P.stat.time} end, score=function(P) return {math.min(math.floor(P.stat.atk),100),P.stat.time} end,
scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Attack "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
noTele=true, noTele=true,
mindas=7,minarr=1,minsdarr=1, mindas=7,minarr=1,minsdarr=1,
@@ -7,7 +7,7 @@ return{
eventSet='big_h', eventSet='big_h',
bg='cubes',bgm='push', bg='cubes',bgm='push',
}, },
score=function(P) return{math.min(P.stat.row,200),P.stat.time} end, score=function(P) return {math.min(P.stat.row,200),P.stat.time} end,
scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
noTele=true, noTele=true,
mindas=7,minarr=1,minsdarr=1, mindas=7,minarr=1,minsdarr=1,
@@ -7,7 +7,7 @@ return{
eventSet='big_n', eventSet='big_n',
bg='bg2',bgm='push', bg='bg2',bgm='push',
}, },
score=function(P) return{math.min(P.stat.row,200),P.stat.time} end, score=function(P) return {math.min(P.stat.row,200),P.stat.time} end,
scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=30,lock=45, drop=30,lock=45,
freshLimit=10, freshLimit=10,
@@ -7,7 +7,7 @@ return{
eventSet='checkLine_200', eventSet='checkLine_200',
bg='glow',bgm='sugar fairy', bg='glow',bgm='sugar fairy',
}, },
score=function(P) return{math.min(P.stat.row,200),P.stat.time} end, score=function(P) return {math.min(P.stat.row,200),P.stat.time} end,
scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=15,lock=45, drop=15,lock=45,
fall=10, fall=10,
@@ -10,7 +10,7 @@ return{
eventSet='checkLine_200', eventSet='checkLine_200',
bg='rgb',bgm='sugar fairy', bg='rgb',bgm='sugar fairy',
}, },
score=function(P) return{math.min(P.stat.row,200),P.stat.time} end, score=function(P) return {math.min(P.stat.row,200),P.stat.time} end,
scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

View File

@@ -1,4 +1,4 @@
return{ return {
env={ env={
drop=10,lock=60, drop=10,lock=60,
fall=5, fall=5,
@@ -11,7 +11,7 @@ return{
eventSet='checkLine_200', eventSet='checkLine_200',
bg='rgb',bgm='sugar fairy', bg='rgb',bgm='sugar fairy',
}, },
score=function(P) return{math.min(P.stat.row,200),P.stat.time} end, score=function(P) return {math.min(P.stat.row,200),P.stat.time} end,
scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end, scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end,
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end, comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
getRank=function(P) getRank=function(P)

Some files were not shown because too many files have changed in this diff Show More