Compare commits
39 Commits
pre0.17.7-
...
v0.17.8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da716ea5c5 | ||
|
|
c6f92a3030 | ||
|
|
267e2dc544 | ||
|
|
cb7d3afdfb | ||
|
|
b57e863c28 | ||
|
|
7aed15fd4f | ||
|
|
6d71b26595 | ||
|
|
1df5406cb3 | ||
|
|
a2b762dcbc | ||
|
|
c2d29c3d6a | ||
|
|
da602eb693 | ||
|
|
9e442a3073 | ||
|
|
bc8b7e733b | ||
|
|
94aa84e380 | ||
|
|
c462c28640 | ||
|
|
b5fbf9cade | ||
|
|
e88957296f | ||
|
|
9e61cb995a | ||
|
|
89a5a718da | ||
|
|
43649c54a3 | ||
|
|
b2b5c99425 | ||
|
|
9e882e6188 | ||
|
|
e688458cfd | ||
|
|
b7c528f5ac | ||
|
|
c743fdcffc | ||
|
|
56e19dd91e | ||
|
|
308512d36a | ||
|
|
749806e553 | ||
|
|
78223334ee | ||
|
|
7f50161ca7 | ||
|
|
dd872a72b2 | ||
|
|
0df17cb4ee | ||
|
|
27244dae04 | ||
|
|
c472d6cbd7 | ||
|
|
e4c786a5d4 | ||
|
|
e291a070f3 | ||
|
|
6b16fcd5f5 | ||
|
|
d79279d1cd | ||
|
|
03fbfaa577 |
31
.github/workflows/main.yml
vendored
31
.github/workflows/main.yml
vendored
@@ -232,6 +232,7 @@ jobs:
|
||||
|
||||
build-ios:
|
||||
runs-on: macos-latest
|
||||
if: github.event_name != 'pull_request'
|
||||
needs: [get-info, build-core, auto-test]
|
||||
env:
|
||||
OUTPUT_FOLDER: ./build
|
||||
@@ -396,6 +397,7 @@ jobs:
|
||||
|
||||
build-macos-appstore:
|
||||
runs-on: macos-latest
|
||||
if: github.event_name != 'pull_request'
|
||||
needs: [get-info, build-core, auto-test]
|
||||
env:
|
||||
OUTPUT_FOLDER: ./build
|
||||
@@ -487,6 +489,7 @@ jobs:
|
||||
|
||||
build-macos-portable:
|
||||
runs-on: macos-latest
|
||||
if: github.event_name != 'pull_request'
|
||||
needs: [get-info, build-core, auto-test]
|
||||
env:
|
||||
OUTPUT_FOLDER: ./build
|
||||
@@ -697,35 +700,7 @@ jobs:
|
||||
echo "# Summary" >> $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 "## 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
|
||||
# - 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
|
||||
shell: python3 {0}
|
||||
run: |
|
||||
|
||||
Submodule Zframework updated: 69e580b988...8e39257d64
16
main.lua
16
main.lua
@@ -60,13 +60,13 @@ BGM.setMaxSources(5)
|
||||
VOC.setDiversion(.62)
|
||||
|
||||
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()
|
||||
if not colorList then return end
|
||||
local rnd=math.random
|
||||
for _,W in next,SCN.scenes[SCN.stack[#SCN.stack]].widgetList do
|
||||
if W.color then
|
||||
W.color=colorList[rnd(#colorList)]
|
||||
if colorList then
|
||||
for _,W in next,SCN.scenes[SCN.cur].widgetList do
|
||||
if W.color then
|
||||
W.color=colorList[math.random(#colorList)]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -218,10 +218,10 @@ do-- Z.setOnFocus
|
||||
TASK.new(task_autoSoundOn)
|
||||
end
|
||||
else
|
||||
if SCN.stack[#SCN.stack]=='game' and SETTING.autoPause then
|
||||
if SCN.cur=='game' and SETTING.autoPause then
|
||||
pauseGame()
|
||||
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.new(task_autoSoundOff)
|
||||
end
|
||||
|
||||
@@ -72,7 +72,7 @@ local function _flipList(O)
|
||||
end
|
||||
|
||||
local function _reflect(a)
|
||||
return{
|
||||
return {
|
||||
[03]=_flipList(a[01]),
|
||||
[01]=_flipList(a[03]),
|
||||
[30]=_flipList(a[10]),
|
||||
|
||||
41
parts/backgrounds/galaxy.lua
Normal file
41
parts/backgrounds/galaxy.lua
Normal 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
|
||||
145
parts/backgrounds/quarks.lua
Normal file
145
parts/backgrounds/quarks.lua
Normal 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
|
||||
@@ -62,7 +62,7 @@ local AISpeed={60,50,42,34,27,21,16,12,9,6}
|
||||
]]
|
||||
function BOT.template(arg)
|
||||
if arg.type=='CC' then
|
||||
return{
|
||||
return {
|
||||
type='CC',
|
||||
next=arg.next,
|
||||
hold=arg.hold,
|
||||
@@ -72,7 +72,7 @@ function BOT.template(arg)
|
||||
_20G=arg._20G,
|
||||
}
|
||||
elseif arg.type=='9S' then
|
||||
return{
|
||||
return {
|
||||
type='9S',
|
||||
delay=math.floor(AISpeed[arg.speedLV]),
|
||||
hold=arg.hold,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
version=VERSION.code,
|
||||
|
||||
-- Basic
|
||||
|
||||
@@ -413,7 +413,7 @@ function DATA.parseReplayData(fileName,fileData,ifFull)
|
||||
|
||||
-- Create unavailable replay object
|
||||
::BREAK_cannotParse::
|
||||
return{
|
||||
return {
|
||||
fileName=fileName,
|
||||
available=false,
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
GC.mStr(P.modeData.wave,63,200)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
GC.mStr(P.modeData.wave,63,200)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.lastPiece.atk>0 then
|
||||
P:receive(nil,P.lastPiece.atk,0,generateLine(P.holeRND:random(10)))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.lastPiece.atk>0 then
|
||||
P:receive(nil,P.lastPiece.atk,120,generateLine(P.holeRND:random(10)))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.lastPiece.atk>0 then
|
||||
P:receive(nil,P.lastPiece.atk,30,generateLine(P.holeRND:random(10)))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.lastPiece.atk>0 then
|
||||
P:receive(nil,P.lastPiece.atk,60,generateLine(P.holeRND:random(10)))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.lastPiece.row>0 then
|
||||
for _=1,#P.clearedRow do
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
mText(TEXTOBJ.techrash,63,420)
|
||||
setFont(75)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local rem=table.remove
|
||||
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(45)
|
||||
GC.mStr(P.combo,63,310)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.lastPiece.row>0 then
|
||||
for _=1,#P.clearedRow do
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.lastPiece.row==0 then
|
||||
P:lose()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(45)
|
||||
GC.mStr(("%.1f"):format(P.stat.atk),63,190)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.garbageBeneath==0 then
|
||||
local D=P.modeData
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=10-P.stat.row
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=100-P.stat.row
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=1000-P.stat.row
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=20-P.stat.row
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=200-P.stat.row
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=40-P.stat.row
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=400-P.stat.row
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if #PLY_ALIVE>1 then
|
||||
P.control=false
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
hook_drop=function(P)
|
||||
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
|
||||
P.control=false
|
||||
|
||||
@@ -23,7 +23,7 @@ local function GetGravity(lvl)
|
||||
lvl<29 and 2 or
|
||||
1
|
||||
end
|
||||
return{
|
||||
return {
|
||||
das=16,arr=6,
|
||||
sddas=6,sdarr=6,
|
||||
irs=false,ims=false,
|
||||
|
||||
@@ -23,7 +23,7 @@ local function GetGravity(lvl)
|
||||
lvl<29 and 2 or
|
||||
1
|
||||
end
|
||||
return{
|
||||
return {
|
||||
das=16,arr=6,
|
||||
sddas=3,sdarr=3,
|
||||
irs=false,ims=false,
|
||||
|
||||
@@ -23,7 +23,7 @@ local function GetGravity(lvl)
|
||||
lvl<29 and 2 or
|
||||
1
|
||||
end
|
||||
return{
|
||||
return {
|
||||
das=16,arr=6,
|
||||
sddas=2,sdarr=2,
|
||||
irs=false,ims=false,
|
||||
|
||||
@@ -4,7 +4,7 @@ local function GetLevelStr(lvl)
|
||||
lvl=lvl%256
|
||||
return list[lvl]
|
||||
end
|
||||
return{
|
||||
return {
|
||||
das=16,arr=6,
|
||||
sddas=1,sdarr=1,
|
||||
irs=false,ims=false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
drop=5,lock=60,
|
||||
fall=6,
|
||||
mesDisp=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
drop=30,lock=60,
|
||||
fall=10,
|
||||
mesDisp=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
GC.mStr(100-P.stat.dig,63,265)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
GC.mStr(10-P.stat.dig,63,265)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
GC.mStr(400-P.stat.dig,63,265)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
GC.mStr(40-P.stat.dig,63,265)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.wave,63,310)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.wave,63,310)
|
||||
|
||||
@@ -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}
|
||||
|
||||
return{
|
||||
return {
|
||||
drop=60,
|
||||
wait=8,
|
||||
fall=20,
|
||||
|
||||
@@ -10,7 +10,7 @@ local function getRollGoal(P)
|
||||
return goal+(rem>0.3 and 4 or rem*10)
|
||||
end
|
||||
|
||||
return{
|
||||
return {
|
||||
drop=0,lock=15,
|
||||
wait=15,fall=6,
|
||||
noTele=true,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
drop=0,lock=12,
|
||||
wait=10,fall=10,
|
||||
noTele=true,
|
||||
|
||||
@@ -119,7 +119,7 @@ local function getRollGoal()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
return {
|
||||
drop=64,
|
||||
lock=30,
|
||||
wait=23,
|
||||
|
||||
@@ -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_fall={10,9, 8, 7,6, 7,6,5,5,5}
|
||||
|
||||
return{
|
||||
return {
|
||||
drop=0,
|
||||
lock=death_lock[1],
|
||||
wait=death_wait[1],
|
||||
|
||||
@@ -5,7 +5,7 @@ local inv_hide={20,17,14,11, 8, 5, 3, 2, 1, 0}
|
||||
local hidetimer=0
|
||||
local held=false
|
||||
|
||||
return{
|
||||
return {
|
||||
drop=0,
|
||||
lock=inv_lock[1],
|
||||
wait=inv_wait[1],
|
||||
|
||||
@@ -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_fall={18,16,14,13,12, 12,11,11,10,10}
|
||||
|
||||
return{
|
||||
return {
|
||||
drop=0,
|
||||
lock=rush_lock[1],
|
||||
wait=rush_wait[1],
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
heightLimit=4,
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
|
||||
@@ -41,7 +41,7 @@ local function _check(P)
|
||||
end
|
||||
end
|
||||
end
|
||||
return{
|
||||
return {
|
||||
sequence='none',
|
||||
RS="SRS",
|
||||
mesDisp=function(P)
|
||||
|
||||
@@ -34,7 +34,7 @@ local function _check(P)
|
||||
end
|
||||
end
|
||||
end
|
||||
return{
|
||||
return {
|
||||
sequence='none',
|
||||
RS="SRS",
|
||||
mesDisp=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
layout='royale',
|
||||
fkey1=function(P)
|
||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||
|
||||
@@ -45,7 +45,7 @@ local function generateGuide(num)
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
return {
|
||||
fkey1=function(P) P.modeData.showGuide=not P.modeData.showGuide end,
|
||||
mesDisp=function(P)
|
||||
mText(TEXTOBJ.grade,63,190)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(45)
|
||||
GC.mStr(("%.1f"):format(P.stat.atk),63,270)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(55)
|
||||
local r=40-P.stat.row
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local oppo={
|
||||
[1]=7,[7]=1,[11]=3,[3]=11,[14]=14,[4]=4,[9]=9,
|
||||
}
|
||||
return{
|
||||
return {
|
||||
skin={
|
||||
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,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
fieldH=20,
|
||||
fillClear=false,
|
||||
mesDisp=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
fieldH=21,
|
||||
fillClear=false,
|
||||
mesDisp=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.wave,63,310)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.wave,63,310)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.wave,63,310)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.wave,63,310)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.wave,63,310)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.stat.clear[7][4],63,250)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.techrash,63,250)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.tsd,63,250)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.tsd,63,250)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
setFont(60)
|
||||
GC.mStr(P.modeData.tsd,63,250)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local warnTime={60,90,105,115,116,117,118,119,120}
|
||||
for i=1,#warnTime do warnTime[i]=warnTime[i]*60 end
|
||||
|
||||
return{
|
||||
return {
|
||||
mesDisp=function(P)
|
||||
GC.setLineWidth(2)
|
||||
GC.setColor(.98,.98,.98,.8)
|
||||
@@ -18,7 +18,7 @@ return{
|
||||
GC.mStr(T,63,268)
|
||||
end,
|
||||
task=function(P)
|
||||
BGM.seek(0)
|
||||
BGM.set('all','seek',0)
|
||||
P.modeData.section=1
|
||||
while true do
|
||||
coroutine.yield()
|
||||
|
||||
@@ -51,7 +51,7 @@ do-- function tryDelete()
|
||||
end
|
||||
end
|
||||
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)
|
||||
local text=text or t
|
||||
if not args then args='' end
|
||||
@@ -800,13 +800,12 @@ do-- function resetGameData(args)
|
||||
collectgarbage()
|
||||
end
|
||||
end
|
||||
do-- function checkWarning()
|
||||
do-- function checkWarning(P,dt)
|
||||
local max=math.max
|
||||
function checkWarning(dt)
|
||||
local P1=PLAYERS[1]
|
||||
if P1.alive then
|
||||
if P1.frameRun%26==0 then
|
||||
local F=P1.field
|
||||
function checkWarning(P,dt)
|
||||
if P.alive then
|
||||
if P.frameRun%26==0 then
|
||||
local F=P.field
|
||||
local height=0-- Max height of row 4~7
|
||||
for x=4,7 do
|
||||
for y=#F,1,-1 do
|
||||
@@ -818,7 +817,7 @@ do-- function checkWarning()
|
||||
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
|
||||
local _=GAME.warnLVL
|
||||
if _<GAME.warnLVL0 then
|
||||
@@ -827,7 +826,7 @@ do-- function checkWarning()
|
||||
_=max(_-.026,0)
|
||||
end
|
||||
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)
|
||||
end
|
||||
elseif GAME.warnLVL>0 then
|
||||
|
||||
@@ -22,12 +22,12 @@ RANK_COLORS={
|
||||
}
|
||||
GROUP_COLORS={
|
||||
[0]=COLOR.Z,
|
||||
[1]=COLOR.R,
|
||||
[2]=COLOR.G,
|
||||
[3]=COLOR.B,
|
||||
[4]=COLOR.Y,
|
||||
[5]=COLOR.M,
|
||||
[6]=COLOR.C,
|
||||
[1]={STRING.hexColor'e57373'},
|
||||
[2]={STRING.hexColor"4caf50"},
|
||||
[3]={STRING.hexColor'5c6bc0'},
|
||||
[4]={STRING.hexColor'ffe082'},
|
||||
[5]={STRING.hexColor'ba68c8'},
|
||||
[6]={STRING.hexColor'80deea'},
|
||||
}
|
||||
|
||||
do-- SVG_TITLE_FILL, SVG_TITLE_LINE
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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."
|
||||
return{
|
||||
return {
|
||||
{"Translator Note 1",
|
||||
"",
|
||||
"help",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local HDsearch="https://harddrop.com/wiki?search="
|
||||
local HDwiki="\nHard Drop Wikiに詳しい情報があります!"
|
||||
return{
|
||||
return {
|
||||
{"翻訳者からのメモ1",
|
||||
"",
|
||||
"help",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local HDsearch="https://harddrop.com/wiki?search="
|
||||
local HDwiki="\n更多内容见Hard Drop Wiki。"
|
||||
return{
|
||||
return {
|
||||
{"新人须知",
|
||||
"读我 必读 萌新 xinren new noob readme",
|
||||
"help",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
return {
|
||||
loadText={
|
||||
loadSFX="Loading sound effects",
|
||||
loadSample="Loading instrument samples",
|
||||
@@ -141,7 +141,6 @@ return{
|
||||
invalidCode="Invalid code",
|
||||
invalidEmail="Invalid email",
|
||||
playerNotFound="Player not found",
|
||||
noPassword="No password",
|
||||
invalidEmailPass="Invalid email or password",
|
||||
emailExists="Email exists",
|
||||
emailSendError="Email send error",
|
||||
@@ -186,6 +185,7 @@ return{
|
||||
started="Playing",
|
||||
joinRoom="$1 has entered the room.",
|
||||
leaveRoom="$1 has left the room.",
|
||||
roomRemoved="Room was removed",
|
||||
ready="Ready",
|
||||
spectating="Spectating",
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
loadText={
|
||||
loadSFX="Cargando efectos de sonido",
|
||||
loadSample="Cargando samples de música",
|
||||
@@ -140,7 +140,6 @@ return{
|
||||
-- invalidCode="Invalid code",
|
||||
-- invalidEmail="Invalid email",
|
||||
-- playerNotFound="Player not found",
|
||||
-- noPassword="No password",
|
||||
-- invalidEmailPass="Invalid email or password",
|
||||
-- emailExists="Email exists",
|
||||
-- emailSendError="Email send error",
|
||||
@@ -185,6 +184,7 @@ return{
|
||||
started="En juego",
|
||||
joinRoom="$1 entró a la sala.",
|
||||
leaveRoom="$1 salió de la sala.",
|
||||
-- roomRemoved="Room was removed",
|
||||
ready="LISTO",
|
||||
spectating="Espectando",
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
fallback='en',
|
||||
sureQuit="Appuyez à nouveau pour sortir",
|
||||
-- sureReset="Press again to reset",
|
||||
@@ -131,7 +131,6 @@ return{
|
||||
-- invalidCode="Invalid code",
|
||||
-- invalidEmail="Invalid email",
|
||||
-- playerNotFound="Player not found",
|
||||
-- noPassword="No password",
|
||||
-- invalidEmailPass="Invalid email or password",
|
||||
-- emailExists="Email exists",
|
||||
-- emailSendError="Email send error",
|
||||
@@ -177,13 +176,12 @@ return{
|
||||
-- started="Playing",
|
||||
joinRoom="$1 a rejoint le salon.",
|
||||
leaveRoom="$1 a quitté le salon.",
|
||||
-- roomRemoved="Room was removed",
|
||||
-- ready="READY",
|
||||
-- connStream="CONNECTING",
|
||||
-- waitStream="WAITING",
|
||||
-- spectating="Spectating",
|
||||
|
||||
|
||||
|
||||
|
||||
-- keySettingInstruction="Press to bind key\nescape: cancel\nbackspace: delete",
|
||||
-- customBGhelp="Drop image file here to apply custom background",
|
||||
-- customBGloadFailed="Unsupport image format for custom background",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
return {
|
||||
fallback='en',
|
||||
loadText={
|
||||
loadSFX="Memuat efek suara",
|
||||
@@ -142,7 +142,6 @@ return{
|
||||
-- invalidCode="Invalid code",
|
||||
-- invalidEmail="Invalid email",
|
||||
-- playerNotFound="Player not found",
|
||||
-- noPassword="No password",
|
||||
-- invalidEmailPass="Invalid email or password",
|
||||
-- emailExists="Email exists",
|
||||
-- emailSendError="Email send error",
|
||||
@@ -187,6 +186,7 @@ return{
|
||||
started="Bermain",
|
||||
joinRoom="$1 telah memasuki ruangan.",
|
||||
leaveRoom="$1 telah keluar dari ruangan.",
|
||||
-- roomRemoved="Room was removed",
|
||||
ready="Siap",
|
||||
spectating="Menonton",
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
return {
|
||||
fallback='en',
|
||||
loadText={
|
||||
loadSFX="効果音をロード中",
|
||||
@@ -142,7 +142,6 @@ return{
|
||||
invalidCode="無効なコード",
|
||||
invalidEmail="無効なEメールアドレス",
|
||||
playerNotFound="プレイヤーが見つかりませんでした",
|
||||
noPassword="パスワードがありません",
|
||||
invalidEmailPass="Eメールアドレスもしくはパスワードが違います",
|
||||
emailExists="Eメールアドレスは存在します",
|
||||
emailSendError="送信できませんでした",
|
||||
@@ -161,7 +160,7 @@ return{
|
||||
},
|
||||
},
|
||||
|
||||
tooFrequent="リクエストの頻度が高すぎます",
|
||||
tooFrequent="リクエストが多すぎます",
|
||||
roomPasswordChanged="部屋のパスワードを変更しました",
|
||||
oldVersion="バージョン$1のダウンロードが可能になりました",
|
||||
versionNotMatch="バージョンが一致しません",
|
||||
@@ -177,7 +176,7 @@ return{
|
||||
wsFailed="ウェブソケットとの通信に失敗しました: $1",
|
||||
wsClose="ウェブソケットとの通信を終了: $1",
|
||||
netTimeout="接続がタイムアウトしました",
|
||||
serverDown="うわ! サーバーが落ちました",
|
||||
serverDown="うわ! サーバーが落ちています...",
|
||||
requestFailed="リクエスト失敗",
|
||||
|
||||
onlinePlayerCount="オンライン人数: $1",
|
||||
@@ -186,6 +185,7 @@ return{
|
||||
started="プレイ中",
|
||||
joinRoom="$1 が入室しました",
|
||||
leaveRoom="$1 が退出しました",
|
||||
roomRemoved="部屋が撤去されました",
|
||||
ready="準備OK",
|
||||
spectating="観戦中",
|
||||
|
||||
@@ -195,7 +195,7 @@ return{
|
||||
customBGhelp="カスタム背景にする画像ファイルをドロップ",
|
||||
customBGloadFailed="サポートされていないフォーマットのファイルです",
|
||||
|
||||
errorMsg="問題が発生! ゲームを再起動してください、できるならエラーログを開発者に送ってください",
|
||||
errorMsg="問題が発生! ゲームを再起動し、エラーログを開発者に送ってください",
|
||||
tryAnotherBuild="[Invalid UTF-8]使用しているOSがMicrosoft WindowsであればTechmino-win32かTechmino-win64をダウンロードしてください! (現在使用しているソフトは違うバージョンです)",
|
||||
|
||||
modInstruction="Modを選択してください!\nModはゲームの中身を変えます\nしかしゲームが破損することもあります\nModを使用した場合スコアは保存されません",
|
||||
@@ -413,8 +413,8 @@ return{
|
||||
},
|
||||
net_menu={
|
||||
league="テクリーグ",
|
||||
ffa="自由乱闘戦",
|
||||
rooms="ルーム・プライベート戦",
|
||||
ffa="",
|
||||
rooms="ルーム",
|
||||
resetPW="パスワード再設定",
|
||||
logout="ログアウト",
|
||||
},
|
||||
@@ -879,9 +879,9 @@ return{
|
||||
['blind_e']= {"目隠し", "HALF", "初心者用"},
|
||||
['blind_n']= {"目隠し", "ALL", "中級者用"},
|
||||
['blind_h']= {"目隠し", "SUDDEN", "上級者用"},
|
||||
['blind_l']= {"目隠し", "SUDDEN+", "プロフェッショナル用!"},
|
||||
['blind_l']= {"目隠し", "SUDDEN+", "プロフェッショナル用"},
|
||||
['blind_u']= {"目隠し", "?", "覚悟は良いかい?"},
|
||||
['blind_wtf']= {"目隠し", "WTF", "まだ覚悟が足りない!"},
|
||||
['blind_wtf']= {"目隠し", "WTF", "まだ覚悟が足りない"},
|
||||
['classic_e']= {"クラシック", "EASY", "低速クラシック"},
|
||||
['classic_h']= {"クラシック", "HARD", "通常速度クラシック"},
|
||||
['classic_l']= {"クラシック", "LUNATIC", "中高速度クラシック"},
|
||||
@@ -901,9 +901,9 @@ return{
|
||||
['c4wtrain_l']= {"C4Wトレーニング", "LUNATIC", "無限中開け"},
|
||||
['pctrain_n']= {"パフェトレーニング", "NORMAL", "パフェの練習!"},
|
||||
['pctrain_l']= {"パフェトレーニング", "LUNATIC", "もっと難しいパフェの練習!"},
|
||||
['pc_n']= {"パフェチャレンジ", "NORMAL", "100 Line以内でパフェをできるだけたくさん取れ!"},
|
||||
['pc_h']= {"パフェチャレンジ", "HARD", "100 Line以内でパフェをできるだけたくさん取れ!"},
|
||||
['pc_l']= {"パフェチャレンジ", "LUNATIC", "100 Line以内でパフェをできるだけたくさん取れ!"},
|
||||
['pc_n']= {"パフェチャレンジ", "NORMAL", "100Line以内で パフェをできるだけたくさん取れ!"},
|
||||
['pc_h']= {"パフェチャレンジ", "HARD", "100Line以内で パフェをできるだけたくさん取れ!"},
|
||||
['pc_l']= {"パフェチャレンジ", "LUNATIC", "100Line以内で パフェをできるだけたくさん取れ!"},
|
||||
['pc_inf']= {"無限パフェチャレンジ", "", "できる限りたくさんのパフェを取れ!"},
|
||||
['tech_n']= {"テクニック", "NORMAL", "B2Bを繋げ続けよう!"},
|
||||
['tech_n_plus']= {"テクニック", "NORMAL+", "回転入れとパフェだけ!"},
|
||||
@@ -1015,7 +1015,7 @@ getTip={refuseCopy=true,
|
||||
"ゲーム内にはモード選択マップからじゃ入れない隠しモードがいくつかあります!",
|
||||
"このゲームでは全てのSpinに火力補正があります!",
|
||||
"このゲームのほとんどの楽曲はBeepboxを用いて作曲されました!",
|
||||
"サーバーが不規則にダウンします",
|
||||
"サーバーが不規則に落ちます",
|
||||
"スタッフロールの背景に流れている名前はスポンサーの名前です!",
|
||||
"タブレットやスマホでもキーボードを接続できます!(iOSにはそんな機能ないと思うけど)",
|
||||
"なにかアイデアがありますか? Discordで提案してください!",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
return {
|
||||
fallback='en',
|
||||
sureQuit="Aparte novamente para sair",
|
||||
-- sureReset="Press again to reset",
|
||||
@@ -129,7 +129,6 @@ return{
|
||||
-- invalidCode="Invalid code",
|
||||
-- invalidEmail="Invalid email",
|
||||
-- playerNotFound="Player not found",
|
||||
-- noPassword="No password",
|
||||
-- invalidEmailPass="Invalid email or password",
|
||||
-- emailExists="Email exists",
|
||||
-- emailSendError="Email send error",
|
||||
@@ -174,9 +173,8 @@ return{
|
||||
-- started="Playing",
|
||||
joinRoom="$1 Entrou a sala.",
|
||||
leaveRoom="$1 Saiu da sala.",
|
||||
-- roomRemoved="Room was removed",
|
||||
-- ready="READY",
|
||||
-- connStream="CONNECTING",
|
||||
-- waitStream="WAITING",
|
||||
-- spectating="Spectating",
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
fallback='en',
|
||||
|
||||
loadText={
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
return {
|
||||
loadText={
|
||||
loadSFX="加载音效资源",
|
||||
loadSample="加载乐器采样",
|
||||
@@ -141,7 +141,6 @@ return{
|
||||
invalidCode="无效验证码",
|
||||
invalidEmail="无效邮箱",
|
||||
playerNotFound="找不到玩家",
|
||||
noPassword="未输入密码",
|
||||
invalidEmailPass="邮箱或密码无效",
|
||||
emailExists="邮箱存在",
|
||||
emailSendError="邮箱发送错误",
|
||||
@@ -186,6 +185,7 @@ return{
|
||||
started="游戏中",
|
||||
joinRoom="$1 进入房间",
|
||||
leaveRoom="$1 离开房间",
|
||||
roomRemoved="房间被解散",
|
||||
ready="各就各位!",
|
||||
spectating="观战中",
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
return {
|
||||
loadText={
|
||||
loadSFX="Load(SFX);",
|
||||
loadSample="Load(Sample);",
|
||||
@@ -118,7 +118,6 @@ return{
|
||||
noUsername="Error.NoUsername();",
|
||||
wrongEmail="Error.WrongEmail();",
|
||||
wrongCode="Error.WrongVerificationCode();",
|
||||
noPassword="Error.NoPassword();",
|
||||
diffPassword="Error.DiffPassword();",
|
||||
checkEmail="register.RequestSent=true",
|
||||
|
||||
@@ -135,6 +134,7 @@ return{
|
||||
started="Room.Playing();",
|
||||
joinRoom="Room.Join($1);",
|
||||
leaveRoom="Room.Leave($1);",
|
||||
roomRemoved="Room.Removed();",
|
||||
ready="Ready();",
|
||||
spectating="Room.Spectating();",
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
fallback='zh',
|
||||
loadText={
|
||||
loadSFX="加載音效資源",
|
||||
@@ -141,7 +141,6 @@ return{
|
||||
invalidCode="無效驗證碼",
|
||||
invalidEmail="無效郵箱",
|
||||
playerNotFound="找不到玩家",
|
||||
noPassword="未輸入密碼",
|
||||
invalidEmailPass="郵箱或密碼無效",
|
||||
emailExists="郵箱存在",
|
||||
emailSendError="郵箱發送錯誤",
|
||||
@@ -186,6 +185,7 @@ return{
|
||||
started="遊戲中",
|
||||
joinRoom="$1 進入房間",
|
||||
leaveRoom="$1 離開房間",
|
||||
roomRemoved="房間被解散",
|
||||
ready="準備!",
|
||||
spectating="旁觀中",
|
||||
|
||||
|
||||
@@ -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_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'}},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
{
|
||||
{
|
||||
{4,4,4,3,3,3,7,0,0,0},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
-- 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,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=30,lock=60,
|
||||
fall=12,
|
||||
@@ -7,7 +7,7 @@ return{
|
||||
eventSet='attacker_h',
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=5,lock=60,
|
||||
fall=8,
|
||||
@@ -6,7 +6,7 @@ return{
|
||||
eventSet='attacker_u',
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=10,lock=60,
|
||||
freshLimit=15,
|
||||
@@ -13,7 +13,7 @@ return{
|
||||
end,
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=5,lock=45,
|
||||
freshLimit=15,
|
||||
@@ -13,7 +13,7 @@ return{
|
||||
end,
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=30,lock=60,
|
||||
hook_drop={
|
||||
@@ -12,7 +12,7 @@ return{
|
||||
end,
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=2,lock=30,
|
||||
freshLimit=10,
|
||||
@@ -13,7 +13,7 @@ return{
|
||||
end,
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
noTele=true,
|
||||
mindas=7,minarr=1,minsdarr=1,
|
||||
@@ -7,7 +7,7 @@ return{
|
||||
eventSet='big_h',
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
noTele=true,
|
||||
mindas=7,minarr=1,minsdarr=1,
|
||||
@@ -7,7 +7,7 @@ return{
|
||||
eventSet='big_n',
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=30,lock=45,
|
||||
freshLimit=10,
|
||||
@@ -7,7 +7,7 @@ return{
|
||||
eventSet='checkLine_200',
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=15,lock=45,
|
||||
fall=10,
|
||||
@@ -10,7 +10,7 @@ return{
|
||||
eventSet='checkLine_200',
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
return{
|
||||
return {
|
||||
env={
|
||||
drop=10,lock=60,
|
||||
fall=5,
|
||||
@@ -11,7 +11,7 @@ return{
|
||||
eventSet='checkLine_200',
|
||||
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,
|
||||
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||
getRank=function(P)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user