Compare commits
20 Commits
pre0.17.1-
...
pre0.17.1-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41e7b8e0f4 | ||
|
|
4bd723a7ee | ||
|
|
66d5bd5490 | ||
|
|
351d0258b2 | ||
|
|
26fb9a7052 | ||
|
|
307fd637fa | ||
|
|
93fb716f89 | ||
|
|
7b41551e2d | ||
|
|
4806af5f7d | ||
|
|
85cb55cdd0 | ||
|
|
27a9697e47 | ||
|
|
7d230cc3b0 | ||
|
|
0db2fffad1 | ||
|
|
2a3296a0e8 | ||
|
|
941b875afa | ||
|
|
99155bb9cf | ||
|
|
0701dd2ad3 | ||
|
|
5570c19e1f | ||
|
|
a728c91476 | ||
|
|
6a43481067 |
BIN
.github/build/macOS/backgroundImage.tiff
vendored
@@ -19,11 +19,11 @@ local COLOR={
|
||||
red= {hsv(0.00, 0.89, 0.91)},
|
||||
fire= {hsv(0.04, 0.93, 0.94)},
|
||||
orange= {hsv(0.09, 0.99, 0.96)},
|
||||
yellow= {hsv(0.16, 0.82, 0.90)},
|
||||
lime= {hsv(0.18, 0.89, 0.88)},
|
||||
jade= {hsv(0.23, 1.00, 0.82)},
|
||||
yellow= {hsv(0.15, 0.82, 0.90)},
|
||||
lime= {hsv(0.20, 0.89, 0.88)},
|
||||
jade= {hsv(0.25, 1.00, 0.82)},
|
||||
green= {hsv(0.33, 1.00, 0.81)},
|
||||
aqua= {hsv(0.48, 1.00, 0.74)},
|
||||
aqua= {hsv(0.47, 1.00, 0.76)},
|
||||
cyan= {hsv(0.53, 1.00, 0.88)},
|
||||
navy= {hsv(0.56, 1.00, 1.00)},
|
||||
sea= {hsv(0.61, 1.00, 1.00)},
|
||||
@@ -36,14 +36,14 @@ local COLOR={
|
||||
lRed= {hsv(0.00, 0.38, 0.93)},
|
||||
lFire= {hsv(0.04, 0.45, 0.91)},
|
||||
lOrange= {hsv(0.10, 0.53, 0.92)},
|
||||
lYellow= {hsv(0.15, 0.61, 0.95)},
|
||||
lLime= {hsv(0.19, 0.66, 0.92)},
|
||||
lJade= {hsv(0.24, 0.56, 0.90)},
|
||||
lYellow= {hsv(0.14, 0.61, 0.95)},
|
||||
lLime= {hsv(0.20, 0.66, 0.92)},
|
||||
lJade= {hsv(0.26, 0.56, 0.90)},
|
||||
lGreen= {hsv(0.34, 0.49, 0.89)},
|
||||
lAqua= {hsv(0.49, 0.59, 0.85)},
|
||||
lAqua= {hsv(0.47, 0.59, 0.86)},
|
||||
lCyan= {hsv(0.51, 0.77, 0.88)},
|
||||
lNavy= {hsv(0.54, 0.80, 0.95)},
|
||||
lSea= {hsv(0.56, 0.72, 0.97)},
|
||||
lSea= {hsv(0.57, 0.72, 0.97)},
|
||||
lBlue= {hsv(0.64, 0.44, 0.96)},
|
||||
lViolet= {hsv(0.72, 0.47, 0.95)},
|
||||
lPurple= {hsv(0.80, 0.62, 0.89)},
|
||||
@@ -53,13 +53,13 @@ local COLOR={
|
||||
dRed= {hsv(0.00, 0.80, 0.48)},
|
||||
dFire= {hsv(0.04, 0.80, 0.34)},
|
||||
dOrange= {hsv(0.07, 0.80, 0.39)},
|
||||
dYellow= {hsv(0.11, 0.80, 0.37)},
|
||||
dLime= {hsv(0.17, 0.80, 0.26)},
|
||||
dJade= {hsv(0.31, 0.80, 0.27)},
|
||||
dYellow= {hsv(0.12, 0.80, 0.37)},
|
||||
dLime= {hsv(0.20, 0.80, 0.26)},
|
||||
dJade= {hsv(0.29, 0.80, 0.27)},
|
||||
dGreen= {hsv(0.33, 0.80, 0.26)},
|
||||
dAqua= {hsv(0.47, 0.80, 0.23)},
|
||||
dAqua= {hsv(0.46, 0.80, 0.24)},
|
||||
dCyan= {hsv(0.50, 0.80, 0.30)},
|
||||
dNavy= {hsv(0.59, 0.80, 0.42)},
|
||||
dNavy= {hsv(0.58, 0.80, 0.42)},
|
||||
dSea= {hsv(0.64, 0.80, 0.40)},
|
||||
dBlue= {hsv(0.67, 0.80, 0.34)},
|
||||
dViolet= {hsv(0.71, 0.80, 0.35)},
|
||||
|
||||
@@ -15,6 +15,8 @@ local SCN={
|
||||
draw=false, --Swap draw func
|
||||
},
|
||||
stack={},--Scene stack
|
||||
prev=false,
|
||||
args={},--Arguments from previous scene
|
||||
|
||||
scenes=scenes,
|
||||
|
||||
@@ -52,14 +54,15 @@ function SCN.swapUpdate(dt)
|
||||
S.time=S.time-dt
|
||||
if S.time<S.changeTime and S.time+dt>=S.changeTime then
|
||||
--Scene swapped this frame
|
||||
SCN.init(S.tar,SCN.cur)
|
||||
SCN.prev=SCN.cur
|
||||
SCN.init(S.tar)
|
||||
SCN.mainTouchID=nil
|
||||
end
|
||||
if S.time<0 then
|
||||
SCN.swapping=false
|
||||
end
|
||||
end
|
||||
function SCN.init(s,org)
|
||||
function SCN.init(s)
|
||||
love.keyboard.setTextInput(false)
|
||||
|
||||
local S=scenes[s]
|
||||
@@ -89,7 +92,7 @@ function SCN.init(s,org)
|
||||
SCN.update=S.update
|
||||
SCN.draw=S.draw
|
||||
if S.sceneInit then
|
||||
S.sceneInit(org)
|
||||
S.sceneInit()
|
||||
end
|
||||
end
|
||||
function SCN.push(tar,style)
|
||||
@@ -165,11 +168,12 @@ local swap={
|
||||
end
|
||||
},
|
||||
}--Scene swapping animations
|
||||
function SCN.swapTo(tar,style)--Parallel scene swapping, cannot back
|
||||
function SCN.swapTo(tar,style,...)--Parallel scene swapping, cannot back
|
||||
if scenes[tar]then
|
||||
if not SCN.swapping and tar~=SCN.cur then
|
||||
style=style or'fade'
|
||||
SCN.swapping=true
|
||||
SCN.args={...}
|
||||
local S=SCN.stat
|
||||
S.tar,S.style=tar,style
|
||||
S.time=swap[style].duration
|
||||
@@ -180,15 +184,15 @@ function SCN.swapTo(tar,style)--Parallel scene swapping, cannot back
|
||||
MES.new('warn',"No Scene: "..tar)
|
||||
end
|
||||
end
|
||||
function SCN.go(tar,style)--Normal scene swapping, can back
|
||||
function SCN.go(tar,style,...)--Normal scene swapping, can back
|
||||
if scenes[tar]then
|
||||
SCN.push()
|
||||
SCN.swapTo(tar,style)
|
||||
SCN.swapTo(tar,style,...)
|
||||
else
|
||||
MES.new('warn',"No Scene: "..tar)
|
||||
end
|
||||
end
|
||||
function SCN.back()
|
||||
function SCN.back(...)
|
||||
if SCN.swapping then return end
|
||||
|
||||
--Leave scene
|
||||
@@ -199,7 +203,7 @@ function SCN.back()
|
||||
--Poll&Back to previous Scene
|
||||
local m=#SCN.stack
|
||||
if m>0 then
|
||||
SCN.swapTo(SCN.stack[m-1],SCN.stack[m])
|
||||
SCN.swapTo(SCN.stack[m-1],SCN.stack[m],...)
|
||||
SCN.stack[m],SCN.stack[m-1]=nil
|
||||
end
|
||||
end
|
||||
|
||||
@@ -72,20 +72,23 @@ function text:draw()
|
||||
if self.alpha>0 then
|
||||
local c=self.color
|
||||
gc_setColor(c[1],c[2],c[3],self.alpha)
|
||||
local w=self.obj:getWidth()
|
||||
local k=min(self.lim/self.obj:getWidth(),1)
|
||||
if self.align=='M'then
|
||||
gc_draw(self.obj,self.x-self.obj:getWidth()*.5,self.y)
|
||||
gc_draw(self.obj,self.x,self.y,nil,k,1,w*.5,0)
|
||||
elseif self.align=='L'then
|
||||
gc_draw(self.obj,self.x,self.y)
|
||||
gc_draw(self.obj,self.x,self.y,nil,k,1)
|
||||
elseif self.align=='R'then
|
||||
gc_draw(self.obj,self.x-self.obj:getWidth(),self.y)
|
||||
gc_draw(self.obj,self.x,self.y,nil,k,1,w,0)
|
||||
end
|
||||
end
|
||||
end
|
||||
function WIDGET.newText(D)--name,x,y[,fText][,color][,font=30][,fType][,align='M'][,hideF][,hide]
|
||||
function WIDGET.newText(D)--name,x,y[,lim][,fText][,color][,font=30][,fType][,align='M'][,hideF][,hide]
|
||||
local _={
|
||||
name= D.name or"_",
|
||||
x= D.x,
|
||||
y= D.y,
|
||||
lim= D.lim or 1e99,
|
||||
|
||||
fText=D.fText,
|
||||
color=D.color and(COLOR[D.color]or D.color)or COLOR.Z,
|
||||
|
||||
19
main.lua
@@ -24,7 +24,7 @@ VERSION=require"version"
|
||||
TIME=love.timer.getTime
|
||||
YIELD=coroutine.yield
|
||||
SYSTEM=love.system.getOS()if SYSTEM=='OS X'then SYSTEM='macOS'end
|
||||
FNSF=SYSTEM:find'\79\83'--What does FNSF stand for? IDK so don't ask me lol
|
||||
FNNS=true or SYSTEM:find'\79\83'--What does FNSF stand for? IDK so don't ask me lol
|
||||
MOBILE=SYSTEM=='Android'or SYSTEM=='iOS'
|
||||
SAVEDIR=fs.getSaveDirectory()
|
||||
|
||||
@@ -256,13 +256,15 @@ IMG.init{
|
||||
pay1='media/image/mess/pay1.png',
|
||||
pay2='media/image/mess/pay2.png',
|
||||
|
||||
miyaCH='media/image/characters/miya.png',
|
||||
miyaF1='media/image/characters/miya_f1.png',
|
||||
miyaF2='media/image/characters/miya_f2.png',
|
||||
miyaF3='media/image/characters/miya_f3.png',
|
||||
miyaF4='media/image/characters/miya_f4.png',
|
||||
miyaCH1='media/image/characters/miya1.png',
|
||||
miyaCH2='media/image/characters/miya2.png',
|
||||
miyaCH3='media/image/characters/miya3.png',
|
||||
miyaCH4='media/image/characters/miya4.png',
|
||||
miyaHeart='media/image/characters/miya_heart.png',
|
||||
miyaGlow='media/image/characters/miya_glow.png',
|
||||
monoCH='media/image/characters/mono.png',
|
||||
xiaoyaCH='media/image/characters/xiaoya.png',
|
||||
xiaoyaOmino='media/image/characters/xiaoya_Omino.png',
|
||||
mikuCH='media/image/characters/miku.png',
|
||||
electric='media/image/characters/electric.png',
|
||||
hbm='media/image/characters/hbm.png',
|
||||
@@ -279,7 +281,7 @@ IMG.init{
|
||||
SKIN.load{
|
||||
{name="crystal_scf",path='media/image/skin/crystal_scf.png'},
|
||||
{name="matte_mrz",path='media/image/skin/matte_mrz.png'},
|
||||
{name="shiny_cho",path='media/image/skin/shiny_cho.png'},
|
||||
{name="shiny_chno",path='media/image/skin/shiny_chno.png'},
|
||||
{name="contrast_mrz",path='media/image/skin/contrast_mrz.png'},
|
||||
{name="polkadots_scf",path='media/image/skin/polkadots_scf.png'},
|
||||
{name="toy_scf",path='media/image/skin/toy_scf.png'},
|
||||
@@ -302,6 +304,7 @@ SKIN.load{
|
||||
{name="classic",path='media/image/skin/classic_unknown.png'},
|
||||
{name="ball_shaw",path='media/image/skin/ball_shaw.png'},
|
||||
{name="retro_notypey",path='media/image/skin/retro_notypey.png'},
|
||||
{name="pixel_chno",path='media/image/skin/pixel_chno.png'},
|
||||
{name="textbone_mrz",path='media/image/skin/textbone_mrz.png'},
|
||||
{name="coloredbone_mrz",path='media/image/skin/coloredbone_mrz.png'},
|
||||
{name="wtf",path='media/image/skin/wtf_mrz.png'},
|
||||
@@ -346,6 +349,7 @@ LANG.init('zh',
|
||||
fr=require'parts.language.lang_fr',
|
||||
es=require'parts.language.lang_es',
|
||||
pt=require'parts.language.lang_pt',
|
||||
id=require'parts.language.lang_id',
|
||||
zh_grass=require'parts.language.lang_zh_grass',
|
||||
zh_yygq=require'parts.language.lang_yygq',
|
||||
symbol=require'parts.language.lang_symbol',
|
||||
@@ -519,6 +523,7 @@ do
|
||||
if not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul)then SETTING.frameMul=100 end
|
||||
if SETTING.cv then SETTING.vocPack,SETTING.cv=SETTING.cv end
|
||||
if type(SETTING.bg)~='string'then SETTING.bg='on'end
|
||||
if SETTING.skin[18]==10 then SETTING.skin[18]=4 end
|
||||
if RANKS.infinite then RANKS.infinite=0 end
|
||||
if RANKS.infinite_dig then RANKS.infinite_dig=0 end
|
||||
if not RANKS.sprint_10l then RANKS.sprint_10l=0 end
|
||||
|
||||
|
Before Width: | Height: | Size: 74 KiB |
BIN
media/image/characters/miya1.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
media/image/characters/miya2.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
media/image/characters/miya3.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
media/image/characters/miya4.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
BIN
media/image/characters/miya_glow.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
media/image/characters/miya_heart.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
BIN
media/image/characters/xiaoya_Omino.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
media/image/skin/pixel_chno.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
@@ -9,7 +9,7 @@ return
|
||||
PLY.draw.drawTargetLine(P,200-P.stat.row)
|
||||
end,
|
||||
task=function(P)
|
||||
local F=P.field
|
||||
local F=P.field
|
||||
for i=1,24 do
|
||||
F[i]=LINE.new(20)
|
||||
P.visTime[i]=LINE.new(20)
|
||||
@@ -31,7 +31,7 @@ return
|
||||
P:set20G(true)
|
||||
P.modeData.target=200
|
||||
SFX.play('reach')
|
||||
else
|
||||
else
|
||||
P:win('finish')
|
||||
end
|
||||
end
|
||||
|
||||
@@ -11,7 +11,7 @@ return
|
||||
PLY.draw.drawTargetLine(P,200-P.stat.row)
|
||||
end,
|
||||
task=function(P)
|
||||
local F=P.field
|
||||
local F=P.field
|
||||
for i=1,24 do
|
||||
F[i]=LINE.new(20)
|
||||
P.visTime[i]=LINE.new(20)
|
||||
|
||||
38
parts/eventsets/strategy_e_plus.lua
Normal file
@@ -0,0 +1,38 @@
|
||||
local waitSpeed={60,59,58,57,56,55,54,52,50,48,46,44,42,40,38,36,34,32,30}
|
||||
|
||||
return
|
||||
{
|
||||
holdCount=0,
|
||||
das=5,arr=1,
|
||||
drop=0,lock=7,
|
||||
wait=60,fall=0,
|
||||
freshLimit=12,
|
||||
mesDisp=function(P)
|
||||
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
|
||||
PLY.draw.drawTargetLine(P,200-P.stat.row)
|
||||
end,
|
||||
task=function(P)
|
||||
P.modeData.target=10
|
||||
end,
|
||||
hook_drop=function(P)
|
||||
if P.stat.row>=P.modeData.target then
|
||||
if P.modeData.target==200 then
|
||||
P:win('finish')
|
||||
else
|
||||
if P.modeData.target==40 then
|
||||
BG.set('rainbow')
|
||||
elseif P.modeData.target==80 then
|
||||
BG.set('rainbow2')
|
||||
elseif P.modeData.target==100 then
|
||||
BG.set('glow')
|
||||
P.modeData.lock=6
|
||||
elseif P.modeData.target==120 then
|
||||
BG.set('lightning')
|
||||
end
|
||||
P.gameEnv.wait=waitSpeed[P.modeData.target/10]
|
||||
P.modeData.target=P.modeData.target+10
|
||||
SFX.play('reach')
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
39
parts/eventsets/strategy_h_plus.lua
Normal file
@@ -0,0 +1,39 @@
|
||||
local waitSpeed={30,29,28,27,26,25,24,23,22,21,20,19,18,18,17,17,16,16,15}
|
||||
|
||||
return
|
||||
{
|
||||
holdCount=0,
|
||||
das=4,arr=1,
|
||||
drop=0,lock=6,
|
||||
wait=30,fall=0,
|
||||
freshLimit=12,
|
||||
mesDisp=function(P)
|
||||
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
|
||||
PLY.draw.drawTargetLine(P,200-P.stat.row)
|
||||
end,
|
||||
task=function(P)
|
||||
P.modeData.target=10
|
||||
end,
|
||||
hook_drop=function(P)
|
||||
if P.stat.row>=P.modeData.target then
|
||||
if P.modeData.target==200 then
|
||||
P:win('finish')
|
||||
else
|
||||
if P.modeData.target==40 then
|
||||
BG.set('rainbow')
|
||||
elseif P.modeData.target==80 then
|
||||
BG.set('rainbow2')
|
||||
elseif P.modeData.target==100 then
|
||||
BG.set('glow')
|
||||
P.modeData.lock=5
|
||||
BGM.play('secret8th remix')
|
||||
elseif P.modeData.target==120 then
|
||||
BG.set('lightning')
|
||||
end
|
||||
P.gameEnv.wait=waitSpeed[P.modeData.target/10]
|
||||
P.modeData.target=P.modeData.target+10
|
||||
SFX.play('reach')
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
39
parts/eventsets/strategy_u_plus.lua
Normal file
@@ -0,0 +1,39 @@
|
||||
local waitSpeed={15,15,14,14,13,13,12,12,11,11,10,10,9,9,8,8,7,7,7}
|
||||
|
||||
return
|
||||
{
|
||||
holdCount=0,
|
||||
das=3,arr=1,
|
||||
drop=0,lock=5,
|
||||
wait=15,fall=0,
|
||||
freshLimit=12,
|
||||
mesDisp=function(P)
|
||||
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
|
||||
PLY.draw.drawTargetLine(P,200-P.stat.row)
|
||||
end,
|
||||
task=function(P)
|
||||
P.modeData.target=10
|
||||
end,
|
||||
hook_drop=function(P)
|
||||
if P.stat.row>=P.modeData.target then
|
||||
if P.modeData.target==200 then
|
||||
P:win('finish')
|
||||
else
|
||||
if P.modeData.target==40 then
|
||||
BG.set('rainbow')
|
||||
elseif P.modeData.target==80 then
|
||||
BG.set('rainbow2')
|
||||
elseif P.modeData.target==100 then
|
||||
BG.set('glow')
|
||||
P.modeData.lock=4
|
||||
BGM.play('secret7th remix')
|
||||
elseif P.modeData.target==120 then
|
||||
BG.set('lightning')
|
||||
end
|
||||
P.gameEnv.wait=waitSpeed[P.modeData.target/10]
|
||||
P.modeData.target=P.modeData.target+10
|
||||
SFX.play('reach')
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
@@ -607,7 +607,7 @@ do--Userdata tables
|
||||
skinSet='crystal_scf',
|
||||
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,7,2,6,10,2,13,5,9,15,4,11,3,12,2,16,8,4,
|
||||
10,13,2,8
|
||||
},
|
||||
face={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
|
||||
|
||||
@@ -80,11 +80,22 @@ return{
|
||||
"Google \"Tetris Online Poland\" for the Poland server.\nClick on the globe icon for information about the Tetris Online Study server.",
|
||||
"http://teatube.ltd/tos",
|
||||
},
|
||||
{"P\97\116\114\101\111\110",
|
||||
"p\97\116\114\101\111\110 support",
|
||||
{"Support 1",
|
||||
"support wechat vx alipay zfb",
|
||||
"org",
|
||||
"Techmino's P\97\116\114\101\111\110 Page",
|
||||
FNSF and"https://www.youtube.com/watch?v=DVl0IiUKX_g"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
"vx/zfb-console-support",
|
||||
},
|
||||
{"Support 2",
|
||||
"support afdian",
|
||||
"org",
|
||||
"Afdian",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://afdian.net/@MrZ_26",
|
||||
},
|
||||
{"Support 3",
|
||||
"support p\97\116\114\101\111\110",
|
||||
"org",
|
||||
"P\97\116\114\101\111\110",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
},
|
||||
--Games
|
||||
{"TTT",
|
||||
|
||||
@@ -73,11 +73,22 @@ return{
|
||||
"TO-S的添加方法、说明等关于茶服的一切",
|
||||
"http://teatube.ltd/tos",
|
||||
},
|
||||
{"P\97\116\114\101\111\110",
|
||||
"赞助 p\97\116\114\101\111\110 support zanzhu daqian",
|
||||
{"赞助1",
|
||||
"赞助 support weixin vx zhifubao zfb zanzhu daqian qia",
|
||||
"org",
|
||||
"Techmino的P\97\116\114\101\111\110",
|
||||
FNSF and"https://www.youtube.com/watch?v=DVl0IiUKX_g"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
"vx/zfb-控制台-support",
|
||||
},
|
||||
{"赞助2",
|
||||
"赞助 support aifadian afdian zanzhu daqian qia",
|
||||
"org",
|
||||
"Afdian",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://afdian.net/@MrZ_26",
|
||||
},
|
||||
{"赞助3",
|
||||
"赞助 support zanzhu daqian qia",
|
||||
"org",
|
||||
"P\97\116\114\101\111\110",
|
||||
FNNS and"https://www.bilibili.com/video/BV1GJ411x7h7"or"https://www.p\97\116\114\101\111\110.com/techmino",
|
||||
},
|
||||
|
||||
--游戏(题库)
|
||||
|
||||
@@ -206,9 +206,8 @@ return{
|
||||
"Make sure to get the game only from official sources,",
|
||||
"as we can't make sure you're safe if you got it elsewhere.",
|
||||
"The author is not responsible for any modifications.",
|
||||
FNSF and"/"or"While the game is free, donations are appreciated.",
|
||||
FNSF and"/"or"If you are unable to use both WeChat Pay and AliPay,",
|
||||
FNSF and"/"or"you can go to our P\97\116\114\101\111\110 page (Link in Zictionary) to support us!",
|
||||
FNNS and"/"or"While the game is free, donations are appreciated.",
|
||||
FNNS and"/"or"Check Zictionary for more",
|
||||
},
|
||||
staff={
|
||||
"Author: MrZ Email: 1046101471@qq.com",
|
||||
@@ -219,7 +218,7 @@ return{
|
||||
"Music: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
|
||||
"Voice & Sound: Miya, Xiaoya, Mono, MrZ, Trebor",
|
||||
"Performance: 模电, HBM",
|
||||
"Translations: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
|
||||
"Translations: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
|
||||
"",
|
||||
"Special Thanks:",
|
||||
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
|
||||
@@ -339,7 +338,7 @@ return{
|
||||
title="Game Settings",
|
||||
graphic="←Video",
|
||||
sound="Audio→",
|
||||
-- style="Style",
|
||||
style="Style",
|
||||
|
||||
ctrl="Control Settings",
|
||||
key="Key Mappings",
|
||||
@@ -676,101 +675,104 @@ return{
|
||||
},
|
||||
},
|
||||
modes={
|
||||
['sprint_10l']= {"Sprint", "10L", "Clear 10 lines!"},
|
||||
['sprint_20l']= {"Sprint", "20L", "Clear 20 lines!"},
|
||||
['sprint_40l']= {"Sprint", "40L", "Clear 40 lines!"},
|
||||
['sprint_100l']= {"Sprint", "100L", "Clear 100 lines!"},
|
||||
['sprint_400l']= {"Sprint", "400L", "Clear 400 lines!"},
|
||||
['sprint_1000l']= {"Sprint", "1,000L", "Clear 1,000 lines!"},
|
||||
['sprintPenta']= {"Sprint", "PENTOMINO", "40L with 18 pentominoes"},
|
||||
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
||||
['dig_10l']= {"Dig", "10L", "Dig 10 garbage lines"},
|
||||
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines"},
|
||||
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines"},
|
||||
['dig_400l']= {"Dig", "400L", "Dig 400 garbage lines"},
|
||||
['drought_n']= {"Drought", "100L", "No I-pieces available"},
|
||||
['drought_l']= {"Drought+", "100L", "W T F"},
|
||||
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with increasing speed"},
|
||||
['marathon_h']= {"Marathon", "HARD", "200-line high-speed marathon"},
|
||||
['solo_e']= {"Battle", "EASY", "Defeat the AI!"},
|
||||
['solo_n']= {"Battle", "NORMAL", "Defeat the AI!"},
|
||||
['solo_h']= {"Battle", "HARD", "Defeat the AI!"},
|
||||
['solo_l']= {"Battle", "LUNATIC", "Defeat the AI!"},
|
||||
['solo_u']= {"Battle", "ULTIMATE", "Defeat the AI!"},
|
||||
['techmino49_e']= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins"},
|
||||
['techmino49_h']= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins"},
|
||||
['techmino49_u']= {"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins"},
|
||||
['techmino99_e']= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins"},
|
||||
['techmino99_h']= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins"},
|
||||
['techmino99_u']= {"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins"},
|
||||
['round_e']= {"Turn-Based", "EASY", "Take turns to play against the AI!"},
|
||||
['round_n']= {"Turn-Based", "NORMAL", "Take turns to play against the AI!"},
|
||||
['round_h']= {"Turn-Based", "HARD", "Take turns to play against the AI!"},
|
||||
['round_l']= {"Turn-Based", "LUNATIC", "Take turns to play against the AI!"},
|
||||
['round_u']= {"Turn-Based", "ULTIMATE", "Take turns to play against the AI!"},
|
||||
['master_n']= {"Master", "NORMAL", "For 20G beginners"},
|
||||
['master_h']= {"Master", "HARD", "For 20G pros"},
|
||||
['master_m']= {"Master", "M21", "For 20G Masters"},
|
||||
['master_final']= {"Master", "FINAL", "20G and beyond"},
|
||||
['master_ph']= {"Master", "PHANTASM", "???"},
|
||||
['master_ex']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant"},
|
||||
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
['blind_e']= {"Invisible", "HALF", "For novices"},
|
||||
['blind_n']= {"Invisible", "ALL", "For intermediates"},
|
||||
['blind_h']= {"Invisible", "SUDDEN", "For the experienced"},
|
||||
['blind_l']= {"Invisible", "SUDDEN+", "For professionals"},
|
||||
['blind_u']= {"Invisible", "?", "Are you ready?"},
|
||||
['blind_wtf']= {"Invisible", "WTF", "You're not ready"},
|
||||
['classic_e']= {"Classic", "EASY", "A very low-speed recreation from the 80s"},
|
||||
['classic_h']= {"Classic", "HARD", "A medium speed recreation from the 80s"},
|
||||
['classic_u']= {"Classic", "ULTIMATE", "A very high-speed recreation from the 80s"},
|
||||
['survivor_e']= {"Survival", "EASY", "How long can you survive?"},
|
||||
['survivor_n']= {"Survival", "NORMAL", "How long can you survive?"},
|
||||
['survivor_h']= {"Survival", "HARD", "How long can you survive?"},
|
||||
['survivor_l']= {"Survival", "LUNATIC", "How long can you survive?"},
|
||||
['survivor_u']= {"Survival", "ULTIMATE", "How long can you survive?"},
|
||||
['attacker_h']= {"Attacker", "HARD", "Practice your attacking skills!"},
|
||||
['attacker_u']= {"Attacker", "ULTIMATE", "Practice your attacking skills!"},
|
||||
['defender_n']= {"Defender", "NORMAL", "Practice your defencing skills!"},
|
||||
['defender_l']= {"Defender", "LUNATIC", "Practice your defencing skills!"},
|
||||
['dig_h']= {"Driller", "HARD", "Digging practice!"},
|
||||
['dig_u']= {"Driller", "ULTIMATE", "Digging practice!"},
|
||||
['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
|
||||
['c4wtrain_n']= {"C4W Training", "NORMAL", "Infinite combos"},
|
||||
['c4wtrain_l']= {"C4W Training", "LUNATIC", "Infinite combos"},
|
||||
['pctrain_n']= {"PC Training", "NORMAL", "Perfect Clear practice"},
|
||||
['pctrain_l']= {"PC Training", "LUNATIC", "A harder Perfect Clear practice"},
|
||||
['pc_n']= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
|
||||
['pc_h']= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
|
||||
['pc_l']= {"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
|
||||
['pc_inf']= {"Inf. PC Challenge", "", "Get PCs as much as you can"},
|
||||
['tech_n']= {"Tech", "NORMAL", "Try to keep the\nBack-to-Back chain!"},
|
||||
['tech_n_plus']= {"Tech", "NORMAL+", "Spins & PCs only"},
|
||||
['tech_h']= {"Tech", "HARD", "Try to keep the\nBack-to-Back chain!"},
|
||||
['tech_h_plus']= {"Tech", "HARD+", "Spins & PCs only"},
|
||||
['tech_l']= {"Tech", "LUNATIC", "Try to keep the\nBack-to-Back chain!"},
|
||||
['tech_l_plus']= {"Tech", "LUNATIC+", "Spins & PCs only"},
|
||||
['tech_finesse']= {"Tech", "FINESSE", "No finesse faults!"},
|
||||
['tech_finesse_f']={"Tech", "FINESSE+", "No normal clears and finesse faults!"},
|
||||
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
|
||||
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
|
||||
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
|
||||
['backfire_n']= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines"},
|
||||
['backfire_h']= {"Backfire", "HARD", "Hold back the backfiring garbage lines"},
|
||||
['backfire_l']= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines"},
|
||||
['backfire_u']= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines"},
|
||||
['sprintAtk']= {"Sprint", "100 Attack", "Send 100 lines!"},
|
||||
['sprintEff']= {"Sprint", "Efficiency", "Send more attack in 40lines!"},
|
||||
['zen']= {'Zen', "200", "A 200-line run without a time limit"},
|
||||
['ultra']= {'Ultra', "EXTRA", "A 2-minute score attack"},
|
||||
['infinite']= {"Infinite", "", "Just a sandbox"},
|
||||
['infinite_dig']= {"Infinite: Dig", "", "Dig-diggin'-dug"},
|
||||
['marathon_inf']= {"Marathon", "INFINITE", "Infinite marathon."},
|
||||
['sprint_10l']= {"Sprint", "10L", "Clear 10 lines!"},
|
||||
['sprint_20l']= {"Sprint", "20L", "Clear 20 lines!"},
|
||||
['sprint_40l']= {"Sprint", "40L", "Clear 40 lines!"},
|
||||
['sprint_100l']= {"Sprint", "100L", "Clear 100 lines!"},
|
||||
['sprint_400l']= {"Sprint", "400L", "Clear 400 lines!"},
|
||||
['sprint_1000l']= {"Sprint", "1,000L", "Clear 1,000 lines!"},
|
||||
['sprintPenta']= {"Sprint", "PENTOMINO", "40L with 18 pentominoes"},
|
||||
['sprintMPH']= {"Sprint", "MPH", "Memoryless\nPreviewless\nHoldless"},
|
||||
['dig_10l']= {"Dig", "10L", "Dig 10 garbage lines"},
|
||||
['dig_40l']= {"Dig", "40L", "Dig 40 garbage lines"},
|
||||
['dig_100l']= {"Dig", "100L", "Dig 100 garbage lines"},
|
||||
['dig_400l']= {"Dig", "400L", "Dig 400 garbage lines"},
|
||||
['drought_n']= {"Drought", "100L", "No I-pieces available"},
|
||||
['drought_l']= {"Drought+", "100L", "W T F"},
|
||||
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with increasing speed"},
|
||||
['marathon_h']= {"Marathon", "HARD", "200-line high-speed marathon"},
|
||||
['solo_e']= {"Battle", "EASY", "Defeat the AI!"},
|
||||
['solo_n']= {"Battle", "NORMAL", "Defeat the AI!"},
|
||||
['solo_h']= {"Battle", "HARD", "Defeat the AI!"},
|
||||
['solo_l']= {"Battle", "LUNATIC", "Defeat the AI!"},
|
||||
['solo_u']= {"Battle", "ULTIMATE", "Defeat the AI!"},
|
||||
['techmino49_e']= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins"},
|
||||
['techmino49_h']= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins"},
|
||||
['techmino49_u']= {"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins"},
|
||||
['techmino99_e']= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins"},
|
||||
['techmino99_h']= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins"},
|
||||
['techmino99_u']= {"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins"},
|
||||
['round_e']= {"Turn-Based", "EASY", "Take turns to play against the AI!"},
|
||||
['round_n']= {"Turn-Based", "NORMAL", "Take turns to play against the AI!"},
|
||||
['round_h']= {"Turn-Based", "HARD", "Take turns to play against the AI!"},
|
||||
['round_l']= {"Turn-Based", "LUNATIC", "Take turns to play against the AI!"},
|
||||
['round_u']= {"Turn-Based", "ULTIMATE", "Take turns to play against the AI!"},
|
||||
['master_n']= {"Master", "NORMAL", "For 20G beginners"},
|
||||
['master_h']= {"Master", "HARD", "For 20G pros"},
|
||||
['master_m']= {"Master", "M21", "For 20G Masters"},
|
||||
['master_final']= {"Master", "FINAL", "20G and beyond"},
|
||||
['master_ph']= {"Master", "PHANTASM", "???"},
|
||||
['master_ex']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant"},
|
||||
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
['strategy_e_plus']={"Strategy", "EASY+", "Fast 20G decision"},
|
||||
['strategy_h_plus']={"Strategy", "HARD+", "Fast 20G decision"},
|
||||
['strategy_u_plus']={"Strategy", "ULTIMATE+", "Fast 20G decision"},
|
||||
['blind_e']= {"Invisible", "HALF", "For novices"},
|
||||
['blind_n']= {"Invisible", "ALL", "For intermediates"},
|
||||
['blind_h']= {"Invisible", "SUDDEN", "For the experienced"},
|
||||
['blind_l']= {"Invisible", "SUDDEN+", "For professionals"},
|
||||
['blind_u']= {"Invisible", "?", "Are you ready?"},
|
||||
['blind_wtf']= {"Invisible", "WTF", "You're not ready"},
|
||||
['classic_e']= {"Classic", "EASY", "A very low-speed recreation from the 80s"},
|
||||
['classic_h']= {"Classic", "HARD", "A medium speed recreation from the 80s"},
|
||||
['classic_u']= {"Classic", "ULTIMATE", "A very high-speed recreation from the 80s"},
|
||||
['survivor_e']= {"Survival", "EASY", "How long can you survive?"},
|
||||
['survivor_n']= {"Survival", "NORMAL", "How long can you survive?"},
|
||||
['survivor_h']= {"Survival", "HARD", "How long can you survive?"},
|
||||
['survivor_l']= {"Survival", "LUNATIC", "How long can you survive?"},
|
||||
['survivor_u']= {"Survival", "ULTIMATE", "How long can you survive?"},
|
||||
['attacker_h']= {"Attacker", "HARD", "Practice your attacking skills!"},
|
||||
['attacker_u']= {"Attacker", "ULTIMATE", "Practice your attacking skills!"},
|
||||
['defender_n']= {"Defender", "NORMAL", "Practice your defencing skills!"},
|
||||
['defender_l']= {"Defender", "LUNATIC", "Practice your defencing skills!"},
|
||||
['dig_h']= {"Driller", "HARD", "Digging practice!"},
|
||||
['dig_u']= {"Driller", "ULTIMATE", "Digging practice!"},
|
||||
['clearRush']= {"Clear Rush", "NORMAL", "All-spin tutorial!\n[Under construction]"},
|
||||
['c4wtrain_n']= {"C4W Training", "NORMAL", "Infinite combos"},
|
||||
['c4wtrain_l']= {"C4W Training", "LUNATIC", "Infinite combos"},
|
||||
['pctrain_n']= {"PC Training", "NORMAL", "Perfect Clear practice"},
|
||||
['pctrain_l']= {"PC Training", "LUNATIC", "A harder Perfect Clear practice"},
|
||||
['pc_n']= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
|
||||
['pc_h']= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
|
||||
['pc_l']= {"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
|
||||
['pc_inf']= {"Inf. PC Challenge", "", "Get PCs as much as you can"},
|
||||
['tech_n']= {"Tech", "NORMAL", "Try to keep the\nBack-to-Back chain!"},
|
||||
['tech_n_plus']= {"Tech", "NORMAL+", "Spins & PCs only"},
|
||||
['tech_h']= {"Tech", "HARD", "Try to keep the\nBack-to-Back chain!"},
|
||||
['tech_h_plus']= {"Tech", "HARD+", "Spins & PCs only"},
|
||||
['tech_l']= {"Tech", "LUNATIC", "Try to keep the\nBack-to-Back chain!"},
|
||||
['tech_l_plus']= {"Tech", "LUNATIC+", "Spins & PCs only"},
|
||||
['tech_finesse']= {"Tech", "FINESSE", "No finesse faults!"},
|
||||
['tech_finesse_f']= {"Tech", "FINESSE+", "No normal clears and finesse faults!"},
|
||||
['tsd_e']= {"TSD Challenge", "EASY", "T-Spin Doubles only!"},
|
||||
['tsd_h']= {"TSD Challenge", "HARD", "T-Spin Doubles only!"},
|
||||
['tsd_u']= {"TSD Challenge", "ULTIMATE", "T-Spin Doubles only!"},
|
||||
['backfire_n']= {"Backfire", "NORMAL", "Hold back the backfiring garbage lines"},
|
||||
['backfire_h']= {"Backfire", "HARD", "Hold back the backfiring garbage lines"},
|
||||
['backfire_l']= {"Backfire", "LUNATIC", "Hold back the backfiring garbage lines"},
|
||||
['backfire_u']= {"Backfire", "ULTIMATE", "Hold back the backfiring garbage lines"},
|
||||
['sprintAtk']= {"Sprint", "100 Attack", "Send 100 lines!"},
|
||||
['sprintEff']= {"Sprint", "Efficiency", "Send more attack in 40lines!"},
|
||||
['zen']= {'Zen', "200", "A 200-line run without a time limit"},
|
||||
['ultra']= {'Ultra', "EXTRA", "A 2-minute score attack"},
|
||||
['infinite']= {"Infinite", "", "Just a sandbox"},
|
||||
['infinite_dig']= {"Infinite: Dig", "", "Dig-diggin'-dug"},
|
||||
['marathon_inf']= {"Marathon", "INFINITE", "Infinite marathon."},
|
||||
|
||||
['custom_clear']= {"Custom", "NORMAL"},
|
||||
['custom_puzzle']= {"Custom", "PUZZLE"},
|
||||
['custom_clear']= {"Custom", "NORMAL"},
|
||||
['custom_puzzle']= {"Custom", "PUZZLE"},
|
||||
},
|
||||
getTip={refuseCopy=true,
|
||||
":pog:",
|
||||
|
||||
@@ -172,9 +172,8 @@ return{
|
||||
"Descarga disponible únicamente vía el grupo de testeo y discord.gg/f9pUvkh",
|
||||
"Descargas desde otros sitios pueden contener malware/viruses, y en smartphones sólo requiere permisos de internet y vibración.",
|
||||
"El autor no se responabiliza por daños ocasionados debido a modificaciones del juego.",
|
||||
FNSF and"/"or"Por favor descarga las últimas versiones desde los sitios oficiales. El juego es gratuito",
|
||||
FNSF and"/"or"Si no puede usar WeChat Pay y AliPay,",
|
||||
FNSF and"/"or"puede ir a nuestra página de P\97\116\114\101\111\110 para apoyarnos.",
|
||||
FNNS and"/"or"Por favor descarga las últimas versiones desde los sitios oficiales. El juego es gratuito",
|
||||
-- FNNS and"/"or"Check Zictionary for more",
|
||||
},
|
||||
staff={
|
||||
"Autor:MrZ Email: 1046101471@qq.com",
|
||||
@@ -185,7 +184,7 @@ return{
|
||||
"Música: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
|
||||
"Voces/Sonidos: Miya, Xiaoya, Mono, MrZ, Trebor",
|
||||
"Performance: 模电, HBM",
|
||||
"Traducción: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
|
||||
"Traducción: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
|
||||
"",
|
||||
"Agradecimientos:",
|
||||
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
|
||||
@@ -670,9 +669,12 @@ return{
|
||||
-- ['master_m']= {"Master", "M21", "For 20G Masters."},
|
||||
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo: el final es inalcanzable."},
|
||||
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro, acepta este desafío"},
|
||||
-- ['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
-- ['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
-- ['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
-- ['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
|
||||
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
|
||||
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
|
||||
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
|
||||
|
||||
@@ -172,9 +172,8 @@ return{
|
||||
"Ce jeu est gratuit et est uniquement disponible via discord.gg/f9pUvkh",
|
||||
"Ne téléchargez pas ce jeu depuis une autre source au risque d'avoir des virus,",
|
||||
"et vous n'avez besoin que des permissions de vibration et de communication réseau pour les versions mobiles !",
|
||||
FNSF and"/"or"Le créateur n'est pas responsable pour n'importe quel type de perte de données suite à une modification du jeu.",
|
||||
FNSF and"/"or"Si vous ne parvenez pas à utiliser à la fois WeChat Pay et AliPay,",
|
||||
FNSF and"/"or"vous pouvez vous rendre sur notre page P\97\116\114\101\111\110 pour nous soutenir !",
|
||||
FNNS and"/"or"Le créateur n'est pas responsable pour n'importe quel type de perte de données suite à une modification du jeu.",
|
||||
-- FNNS and"/"or"Check Zictionary for more",
|
||||
},
|
||||
staff={
|
||||
"Author: MrZ E-mail: 1046101471@qq.com",
|
||||
@@ -185,7 +184,7 @@ return{
|
||||
"Musique : MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
|
||||
"Voix & Sons: Miya, Xiaoya, Mono, MrZ, Trebor",
|
||||
"Performance: 模电, HBM",
|
||||
"Traduction: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
|
||||
"Traduction: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
|
||||
"",
|
||||
"Merci à:",
|
||||
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
|
||||
@@ -673,9 +672,12 @@ return{
|
||||
['master_final']= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
|
||||
-- ['master_ph']= {"Mester", "FANTASMA", "20G: ???"},
|
||||
['master_ex']= {"GrandMaster", "EXTRA", "Tentez de devenir un Grandmaster."},
|
||||
-- ['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
-- ['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
-- ['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
-- ['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
|
||||
['blind_e']= {"Aveugle", "MOITIE", "Pour les novices."},
|
||||
['blind_n']= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
|
||||
['blind_h']= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},
|
||||
|
||||
898
parts/language/lang_id.lua
Normal file
@@ -0,0 +1,898 @@
|
||||
local C=COLOR
|
||||
return{
|
||||
loadText={
|
||||
loadSFX="Memuat efek suara",
|
||||
loadSample="Memuat sampel-sampel instrumen",
|
||||
loadVoice="Memuat kumpulan suara",
|
||||
loadFont="Memuat fon",
|
||||
loadModeIcon="Memuat ikon-ikon mode",
|
||||
loadMode="Memuat mode-mode",
|
||||
loadOther="Memuat aset-aset yang lain",
|
||||
finish="Tekan tombol apapun untuk memulai!",
|
||||
},
|
||||
sureQuit="Tekan lagi untuk keluar",
|
||||
sureReset="Tekan lagi untuk mereset",
|
||||
sureDelete="Tekan lagi untuk menghapus",
|
||||
newDay="Hari baru, awal baru!",
|
||||
playedLong="Anda telah bermain lama. Waktunya istirahat!",
|
||||
playedTooMuch="Anda telah bermain terlalu lama! Techmino sangat menyenangkan, tetapi jangan lupa istirahat!",
|
||||
settingWarn="Awas, Anda akan mengubah beberapa pengaturan yang tidak biasanya diubah!",
|
||||
|
||||
atkModeName={"Acak","Badge","K.O.","Penyerang"},
|
||||
royale_remain="$1 Pemain Tersisa",
|
||||
powerUp={[0]="+000%","+025%","+050%","+075%","+100%"},
|
||||
cmb={nil,"1 Kombo","2 Kombo","3 Kombo","4 Kombo","5 Kombo","6 Kombo","7 Kombo","8 Kombo","9 Kombo","10 Kombo!","11 Kombo!","12 Kombo!","13 Kombo!","14 Kombo!!","15 Kombo!!","16 Kombo!!","17 Kombo!!!","18 Kombo!!!","19 Kombo!!!","MEGA KOMBO"},
|
||||
spin=" spin",
|
||||
clear={"Single","Double","Triple","Techrash","Pentacrash","Hexacrash","Heptacrash","Octacrash","Nonacrash","Decacrash","Undecacrash","Dodecacrash","Tridecacrash","Tetradecacrash","Pentadecacrash","Hexadecacrash","Heptadecacrash","Octadecacrash","Nonadecacrash","Ultracrash","Impossicrash"},
|
||||
cleared="$1 baris",
|
||||
mini="Mini",b2b="B2B ",b3b="B2B2B ",
|
||||
PC="PC",HPC="Hampir PC",
|
||||
replaying="[Diulang]",
|
||||
tasUsing="[TAS]",
|
||||
|
||||
stage="Tahap $1 selesai!",
|
||||
great="Bagus!",
|
||||
awesome="Luar biasa!",
|
||||
almost="Hampir!",
|
||||
continue="Lanjut!",
|
||||
maxspeed="KECEPATAN MAXIMUM!",
|
||||
speedup="Percepatkan!",
|
||||
missionFailed="Salah",
|
||||
|
||||
speedLV="Kecepatan lvl",
|
||||
piece="Blok",line="Baris",atk="Baris Terkirim",eff="Efisiensi",
|
||||
rpm="RPM",tsd="TSD",
|
||||
grade="Nilai",techrash="Techrash",
|
||||
wave="Gelombang",nextWave="Lanjutan",
|
||||
combo="Kombo",maxcmb="Max Kombo",
|
||||
pc="PC",ko="KOs",
|
||||
|
||||
win="Menang!",
|
||||
lose="Kalah",
|
||||
|
||||
finish="Selesai",
|
||||
gamewin="Anda menang!",
|
||||
gameover="Tamat",
|
||||
|
||||
pause="Terjeda",
|
||||
pauseCount="Jeda-jeda",
|
||||
finesse_ap="Semua sempurna",
|
||||
finesse_fc="Kombo penuh",
|
||||
|
||||
page="Halaman:",
|
||||
|
||||
cc_fixed="CC tidak cocok dengan urutan tetap.",
|
||||
cc_swap="CC tidak cocok dengan mode simpan tukar.",
|
||||
ai_prebag="AI tidak cocok dengan urutan terubah yang memiliki non-tetromino.",
|
||||
ai_mission="AI tidak cocok dengan misi terubah.",
|
||||
switchSpawnSFX="Nyalakan efek suara munculan blok!",
|
||||
needRestart="Ulangi untuk menerapkan perubahan.",
|
||||
|
||||
loadError_errorMode="'$1' eror memuat: tidak ada mode memuat '$2'",
|
||||
loadError_read="'$1' eror memuat: gagal membaca",
|
||||
loadError_noFile="'$1' eror memuat: tidak ada file:",
|
||||
loadError_other="'$1' eror memuat: $2",
|
||||
loadError_unknown="'$1' eror memuat: alasan tidak diketahui",
|
||||
|
||||
saveError_duplicate="'$1' eror menyimpan: nama file tergAnda",
|
||||
saveError_encode="'$1' eror menyimpan: gagal menyandi",
|
||||
saveError_other="'$1' eror menyimpan: $2",
|
||||
saveError_unknown="'$1' eror menyimpan: alasan tidak diketahui",
|
||||
|
||||
copyDone="Tersalin!",
|
||||
saveDone="Data disimpan",
|
||||
exportSuccess="Ekspor berhasil",
|
||||
importSuccess="Impor berhasil",
|
||||
dataCorrupted="Data rusak",
|
||||
pasteWrongPlace="Menempel di tempat yang salah?",
|
||||
noFile="File tidak ada",
|
||||
|
||||
nowPlaying="Sekarang mendengarkan:",
|
||||
|
||||
VKTchW="Berat sentuhan",
|
||||
VKOrgW="Berat asal",
|
||||
VKCurW="Berat posisi saat ini",
|
||||
|
||||
noScore="Tidak ada nilai",
|
||||
modeLocked="Terkunci",
|
||||
unlockHint="Raih nilai B keatas dalam mode sebelumnya untuk membuka kunci.",
|
||||
highScore="Nilai-nilai tertinggi",
|
||||
newRecord="Rekor baru!",
|
||||
|
||||
replayBroken="Tidak bisa memuat ulangan permainan",
|
||||
|
||||
dictNote="==Tersalin dari TetroDictionary==",
|
||||
|
||||
getNoticeFail="Gagal mengambil pengumuman-pengumuman",
|
||||
oldVersion="Versi $1 sekarang tersedia",
|
||||
needUpdate="Butuh versi lebih baru!",
|
||||
versionNotMatch="Versi tidak sama!",
|
||||
notFinished="Segera akan datang!",
|
||||
|
||||
jsonError="Eror JSON",
|
||||
|
||||
noUsername="Silahkan masukki username Anda",
|
||||
wrongEmail="Alamat email tidak sah",
|
||||
noPassword="Silahkan masukki kata sandi Anda",
|
||||
diffPassword="Kata sandi tidak sama",
|
||||
registerRequestSent="Permintaan daftar telah terkirim.",
|
||||
registerSuccessed="Pendaftaran sukses!",
|
||||
loginSuccessed="Anda sekarang tergabung!",
|
||||
accessSuccessed="Akses diberikan",
|
||||
|
||||
wsConnecting="Menghubungkan websocket…",
|
||||
wsFailed="Koneksi websocket gagal",
|
||||
wsClose="Websocket tertutup:",
|
||||
netTimeout="Koneksi waktu habis",
|
||||
|
||||
onlinePlayerCount="Online",
|
||||
createRoomSuccessed="Ruang dibuat",
|
||||
started="Bermain",
|
||||
joinRoom="telah memasuki ruangan.",
|
||||
leaveRoom="telah keluar dari ruangan.",
|
||||
ready="Siap",
|
||||
connStream="Menghubungi",
|
||||
waitStream="Menunggu",
|
||||
spectating="Menonton",
|
||||
chatRemain="Online",
|
||||
chatStart="------Awal percakapan------",
|
||||
chatHistory="------Pesan-pesan baru di bawah ini------",
|
||||
|
||||
keySettingInstruction="Tekan untuk menghubung tombol ke aksi tertentu\nescape: batal\nbackspace: hapus",
|
||||
customBGhelp="Seret file gambar di sini untuk memasangkan background",
|
||||
customBGloadFailed="Format file gambar tidak didukung untuk background",
|
||||
|
||||
errorMsg="Techmino mengalami eror dan harus memuat ulang.\nAnda bisa mengirim log eror ke developer.",
|
||||
tryAnotherBuild="[Invalid UTF-8] Jika Anda di Windows, coba download Techmino-win32 atau Techmino-win64 (berbeda dari yang Anda menggunakan sekarang).",
|
||||
|
||||
modInstruction="Pilih mod Anda!\nMod memungkinkan Anda untuk mengubah permainan,\ntetapi juga bisa menghancur permainan.\nNilai-nilai tidak akan disimpan saat menggunakan mod.",
|
||||
modInfo={
|
||||
next="BLOK LANJUT\nMengubah jumlah blok lanjut yang ditampilkan.",
|
||||
hold="SIMPAN\nMengubah jumlah blok yang bisa disimpan.",
|
||||
hideNext="BLOK LANJUT Tersembunyi\nMenyembunyikan beberapa blok lanjut.",
|
||||
infHold="SIMPAN SELAMANYA\nMemungkinkan Anda untuk menyimpan blok-blok selamanya.",
|
||||
hideBlock="Sembunyikan Blok Aktif\nMenyembunyikan blok yang Anda mengontrol.",
|
||||
hideGhost="Sembunyikan Blok Hantu\nMenyembunyikan blok yang menunjukkan tempat blok yang sedang dikontrol akan jatuh.",
|
||||
hidden="Sembunyikan Blok Terdarat\nMenyembunyikan blok yang sudah mendarat setelah waktu yang tertentu.",
|
||||
hideBoard="Sembunyikan Tempat Main\nMenyembunyikan bagian atau seluruh tempat main.",
|
||||
flipBoard="Putar Tempat Main\nMembalik atau memutar tempat main.",
|
||||
dropDelay="Gravitasi\nMengubah gravitasi dalam frame per blok.",
|
||||
lockDelay="Tunda Mengunci\nMengubah tunda mengunci dalam frame.",
|
||||
waitDelay="Tunda Muncul\nMengubah tunda muncul blok dalam frame.",
|
||||
fallDelay="Tunda Baris\nMengubah tunda saat membuat baris dalam frame.",
|
||||
life="Nyawa\nMengubah nomor awal nyawa.",
|
||||
forceB2B="Hanya B2B\nMengakhirkan permainan jika meter B2B jatuh ke 0.",
|
||||
forceFinesse="Efisiensi Tombol Maximum\nMengakhirkan permainan jika efisiensi tombol tidak maksimum.",
|
||||
tele="Teleport\nMengubah DAS dan ARR ke 0.",
|
||||
noRotation="Tidak berputar\nMematikan pemutaran blok.",
|
||||
noMove="Tidak bergerak\nMematikan pergerakan kiri dan kanan blok.",
|
||||
customSeq="Pengacak\nMengganti pengacak blok.",
|
||||
pushSpeed="Kecepatan blok serangan\nMengubah kecepatan muncul blok serangan (blok/frame).",
|
||||
boneBlock="[ ]\nMain dengan blok [ ].",
|
||||
},
|
||||
pauseStat={
|
||||
"Waktu:",
|
||||
"Tombol/Putar/Simpan:",
|
||||
"Blok:",
|
||||
"Baris/Baris Gali:",
|
||||
"Serangan/Serangan Gali:",
|
||||
"Diterima:",
|
||||
"Jumlah Tindakan Membuat Baris:",
|
||||
"Spins:",
|
||||
"B2B/B3B/PC/Hampir PC:",
|
||||
"Efisiensi Tombol:",
|
||||
},
|
||||
radar={"BLOK","SERANGAN","SRGN + BLOK","SRGN TERKIRIM","KECEPATAN","GALI"},
|
||||
radarData={"D'PM","ADPM","APM","SPM","L'PM","DPM"},
|
||||
stat={
|
||||
"Jumlah Pembukaan:",
|
||||
"Jumlah Permainan:",
|
||||
"Jumlah Waktu Bermain:",
|
||||
"Tombol/Putar/Simpan:",
|
||||
"Blok/Baris/Serangan:",
|
||||
"Serangan Diterima/Ditolak/Muncul:", -- what is this
|
||||
"Gali/Serangan Gali:",
|
||||
"Efisiensi/Efisiensi Gali:",
|
||||
"B2B/B2B2B:",
|
||||
"PC/Hampir PC:",
|
||||
"Efisiensi Tombol Tidak Maksimal/Nilai:",
|
||||
},
|
||||
aboutTexts={
|
||||
"Ini hanya penyusun blok *normal*. Sungguh, hanya itu saja.",
|
||||
"Terinspirasi oleh C2, IO, JS, WWC, KOS, dll.",
|
||||
"",
|
||||
"Dipersembahkan oleh kerangka permainan LÖVE",
|
||||
"Saran dan laporan bug dihargai!",
|
||||
"Pastikan untuk mendapat permainan ini hanya dari sumber resmi,",
|
||||
"karena kita tidak bisa meyakinkan Anda aman jika Anda mendapat permainan ini dari sumber lain.",
|
||||
"Penciptanya tidak bertanggung jawab untuk modifikasi.",
|
||||
FNNS and"/"or"Permainan ini gratis, tetapi sumbangan sangat dihargai.",
|
||||
-- FNNS and"/"or"Check Zictionary for more",
|
||||
},
|
||||
staff={
|
||||
"Pencipta: MrZ Email: 1046101471@qq.com",
|
||||
"Dipersembahkan oleh kerangka permainan LÖVE",
|
||||
"",
|
||||
"Program: MrZ, Particle_G, [scdhh, FinnTenzor]",
|
||||
"Penggambar: MrZ, Gnyar, C₂₉H₂₅N₃O₅, ScF, [旋律星萤, T0722]",
|
||||
"Musik: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
|
||||
"Suara: Miya, Xiaoya, Mono, MrZ, Trebor",
|
||||
"Pertunjukan: 模电, HBM",
|
||||
"Translasi: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
|
||||
"",
|
||||
"Terima Kasih Khusus:",
|
||||
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
|
||||
"Farter, Teatube, 蕴空之灵, T9972, [All test staff]",
|
||||
},
|
||||
used=[[
|
||||
Alat-alat yang digunakan:
|
||||
BeepBox
|
||||
GoldWave
|
||||
GFIE
|
||||
FL Mobile
|
||||
Library yang digunakan:
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="Dukung pencipta",
|
||||
WidgetText={
|
||||
main={
|
||||
offline="Main Sendiri",
|
||||
qplay="Terakhir Dimain",
|
||||
online="Multipemain",
|
||||
custom="Permainan Tersesuai",
|
||||
setting="Pengaturan",
|
||||
stat="Statistik",
|
||||
dict="Zictionary",
|
||||
replays="Permainan Terulang",
|
||||
},
|
||||
main_simple={
|
||||
sprint="Balapan",
|
||||
marathon="Maraton",
|
||||
},
|
||||
mode={
|
||||
mod="Mod (F1)",
|
||||
start="Mulai",
|
||||
},
|
||||
mod={
|
||||
title="Mod",
|
||||
reset="Reset (tab)",
|
||||
unranked="Tidak Berperingkat",
|
||||
},
|
||||
pause={
|
||||
setting="Pengaturan (S)",
|
||||
replay="Ulang (P)",
|
||||
save="Simpan Pengulangan (O)",
|
||||
resume="Lanjut (esc)",
|
||||
restart="Coba lagi (R)",
|
||||
quit="Berhenti (Q)",
|
||||
tas="TAS (T)",
|
||||
},
|
||||
net_menu={
|
||||
league="Tech League",
|
||||
ffa="FFA",
|
||||
rooms="Ruang-ruang",
|
||||
logout="Log out",
|
||||
},
|
||||
net_league={
|
||||
match="Cari Tandingan",
|
||||
},
|
||||
net_rooms={
|
||||
password="Password",
|
||||
refreshing="Merefresh daftar",
|
||||
noRoom="Tidak ada ruangan",
|
||||
refresh="Refresh",
|
||||
new="Ruangan Baru",
|
||||
join="Masuk",
|
||||
},
|
||||
net_newRoom={
|
||||
title="Pengaturan Ruangan",
|
||||
roomName="Nama ruangan (Jika kosong: \"[username]'s room\")",
|
||||
password="Password (opsional)",
|
||||
description="Deskripsi Ruangan",
|
||||
|
||||
life="Nyawa",
|
||||
pushSpeed="Kcptn. Dorongan",
|
||||
garbageSpeed="Kcptn. Serangan",
|
||||
visible="Visibilitas",
|
||||
freshLimit="Batas Reset Tunda Kunci",
|
||||
|
||||
fieldH="Ketinggian",
|
||||
bufferLimit="Batas Serangan",
|
||||
heightLimit="Batas Tinggi",
|
||||
|
||||
drop="Tunda Jatuh",
|
||||
lock="Tunda Kunci",
|
||||
wait="Tunda Muncul",
|
||||
fall="Tunda Baris",
|
||||
hang="Tunda Kalah",
|
||||
hurry="Menggangu Tunda",
|
||||
|
||||
capacity="Kapasitas",
|
||||
create="Buat",
|
||||
|
||||
ospin="O-spin",
|
||||
fineKill="100% Efisiensi Tombol",
|
||||
b2bKill="Akhirkan Permainan Jika Tidak B2B",
|
||||
lockout="Akhirkan Permainan Jika Lock Out",
|
||||
easyFresh="Reset Tunda Kunci Normal",
|
||||
deepDrop="Jatuh Dalam",
|
||||
bone="Blok [ ]",
|
||||
|
||||
eventSet="Aturan",
|
||||
|
||||
holdMode="Mode Simpan",
|
||||
nextCount="Pratinjau Blok Lanjut",
|
||||
holdCount="Blok Simpan",
|
||||
infHold="Simpan Selamanya",
|
||||
phyHold="Simpan Di Tempat",
|
||||
},
|
||||
net_game={
|
||||
ready="Siap",
|
||||
spectate="Nonton",
|
||||
cancel="Batal Siap",
|
||||
},
|
||||
setting_game={
|
||||
title="Pengaturan Permainan",
|
||||
graphic="←Video",
|
||||
sound="Audio→",
|
||||
layout="Ubah Blok-blok",
|
||||
|
||||
ctrl="Ubah Kontrol",
|
||||
key="Ubah Tindakan Tombol",
|
||||
touch="Pengaturan Sentuhan",
|
||||
showVK="Tunjuk Tombol Sentuh",
|
||||
reTime="Tunda Mulai",
|
||||
RS="Sistem Putar",
|
||||
menuPos="Pos. Tombol Menu",
|
||||
sysCursor="Guna Mouse Bawaan",
|
||||
autoPause="Jeda Jika Tidak Difokus",
|
||||
autoSave="Simpan Rekor Otomatis",
|
||||
autoLogin="Auto-login Saat Membuka",
|
||||
simpMode="Mode Sederhana",
|
||||
},
|
||||
setting_video={
|
||||
title="Pengaturan Video",
|
||||
sound="←Audio",
|
||||
game="Permainan→",
|
||||
|
||||
block="Gambarkan Blok",
|
||||
smooth="Jatuh Halus",
|
||||
upEdge="Blok 3D",
|
||||
bagLine="Pemisah Kantong",
|
||||
|
||||
ghostType="Tipe Hantu",
|
||||
ghost="Kegelapan Hantu",
|
||||
center="Kegelapan Tengah Pemutaran",
|
||||
grid="Kegelapan Kisi",
|
||||
lineNum="Kegelapan Nomor Baris",
|
||||
|
||||
lockFX="Efek Kunci",
|
||||
dropFX="Efek Jatuh",
|
||||
moveFX="Efek Pindah",
|
||||
clearFX="Efek Baris",
|
||||
splashFX="Efek Guyuran Baris",
|
||||
shakeFX="Goyang Tempat Main",
|
||||
atkFX="Efek Serang",
|
||||
|
||||
frame="Kecepatan Bingkai (%)",
|
||||
FTlock="Lewat Bingkai",
|
||||
|
||||
text="Teks Baris",
|
||||
score="Teks Nilai",
|
||||
bufferWarn="Peringatan Serangan",
|
||||
showSpike="Teks Serang",
|
||||
nextPos="Pratinjau Muncul Blok",
|
||||
highCam="Scroll Tempat Main",
|
||||
warn="Peringatan Bahaya",
|
||||
|
||||
clickFX="Efek Klik",
|
||||
power="Info Baterai",
|
||||
clean="Gambar Cepat",
|
||||
fullscreen="Layar Penuh",
|
||||
|
||||
bg_on="B.G. Normal",
|
||||
bg_off="Tidak Ada B.G.",
|
||||
bg_custom="Ubah B.G.",
|
||||
|
||||
blockSatur="Kejenuhan Blok Aktif",
|
||||
fieldSatur="Kejenuhan Blok Terkunci",
|
||||
},
|
||||
setting_sound={
|
||||
title="Pengaturan Audio",
|
||||
|
||||
game="←Permainan",
|
||||
graphic="Video→",
|
||||
|
||||
mainVol="Volume Utama",
|
||||
bgm="Musik",
|
||||
sfx="Efek Suara",
|
||||
stereo="Stereo",
|
||||
spawn="Efek Muncul Blok",
|
||||
warn="Efek Bahaya",
|
||||
vib="Getaran",
|
||||
voc="Suara",
|
||||
|
||||
autoMute="Bisukan Bila Tidak Fokus",
|
||||
fine="Efek Efisiensi Tombol Tidak Maksimum",
|
||||
sfxPack="Kumpulan Efek Suara",
|
||||
vocPack="Kumpulan Suara",
|
||||
apply="Terapkan",
|
||||
},
|
||||
setting_control={
|
||||
title="Pengaturan Kontrol",
|
||||
preview="Pratinjau",
|
||||
|
||||
das="DAS",arr="ARR",
|
||||
dascut="Gangguan DAS",
|
||||
dropcut="Gangguan Auto-kunci",
|
||||
sddas="DAS Jatuh",sdarr="ARR Jatuh",
|
||||
ihs="Simpan Saat Tunda",
|
||||
irs="Putar Saat Tunda",
|
||||
ims="Pindah Saat Tunda",
|
||||
reset="Reset",
|
||||
},
|
||||
setting_key={
|
||||
a1="Pindah Kiri",
|
||||
a2="Pindah Kanan",
|
||||
a3="Putar Kanan",
|
||||
a4="Putar Kiri",
|
||||
a5="Putar 180°",
|
||||
a6="Jatuh Cepat",
|
||||
a7="Jatuh Pelan",
|
||||
a8="Simpan",
|
||||
a9="Fungsi 1",
|
||||
a10="Fungsi 2",
|
||||
a11="Kiri Instan",
|
||||
a12="Kanan Instan",
|
||||
a13="Jatuh Instan",
|
||||
a14="Jatuh 1",
|
||||
a15="Jatuh 4",
|
||||
a16="Jatuh 10",
|
||||
a17="Jatuh Kiri",
|
||||
a18="Jatuh Kanan",
|
||||
a19="Zangi Kiri",
|
||||
a20="Zangi Kanan",
|
||||
restart="Coba Lagi",
|
||||
},
|
||||
setting_skin={
|
||||
skinSet="Tekstur Blok",
|
||||
title="Pengaturan Ragam",
|
||||
skinR="Reset Warna",
|
||||
faceR="Reset Arah",
|
||||
},
|
||||
setting_touch={
|
||||
default="Bawaan",
|
||||
snap="Kisi",
|
||||
size="Ukuran",
|
||||
shape="Bentuk",
|
||||
},
|
||||
setting_touchSwitch={
|
||||
b1= "Pindah Kiri:", b2="Pindah Kanan:",b3="Putar Kanan:", b4="Putar Kiri:",
|
||||
b5= "Putar 180°:", b6="Jatuh Cepat:", b7="Jatuh Pelan:", b8="Simpan:",
|
||||
b9= "Fungsi 1:", b10="Fungsi 2:", b11="Kiri Instan:",b12="Kanan Instan:",
|
||||
b13="Jatuh Instan:",b14="Jatuh 1:", b15="Jatuh 4:", b16="Jatuh 10:",
|
||||
b17="Jatuh Kiri:", b18="Jatuh Kanan:",b19="Zangi Kiri:", b20="Zangi Kanan:",
|
||||
|
||||
norm="Normal",
|
||||
pro="Canggih",
|
||||
icon="Ikon",
|
||||
sfx="Efek Suara",
|
||||
vib="Getaran",
|
||||
alpha="Kegelapan",
|
||||
|
||||
track="Auto Lacak",
|
||||
dodge="Auto Hindar",
|
||||
},
|
||||
customGame={
|
||||
title="Permainan Tersesuai",
|
||||
defSeq="Urutan Bawaan",
|
||||
noMsn="Tidak Ada Misi",
|
||||
|
||||
drop="Tunda Jatuh",
|
||||
lock="Tunda Kunci",
|
||||
wait="Tunda Muncul",
|
||||
fall="Tunda Garis",
|
||||
hang="Tunda Kalah",
|
||||
hurry="Gangguan Tunda",
|
||||
|
||||
bg="Latar Belakang",
|
||||
bgm="Musik",
|
||||
|
||||
copy="Salin Permainan",
|
||||
paste="Tempel Permainan",
|
||||
play_clear="Mulai Normal",
|
||||
play_puzzle="Mulai Membangun",
|
||||
|
||||
reset="Reset (del)",
|
||||
advance="More (A)",
|
||||
mod="Mod (F1)",
|
||||
field="Ubah Blok (F)",
|
||||
sequence="Ubah Urutan (S)",
|
||||
mission="Ubah Misi (M)",
|
||||
|
||||
eventSet="Aturan",
|
||||
|
||||
holdMode="Mode Simpan",
|
||||
nextCount="Pratinjau Blok Lanjut",
|
||||
holdCount="Simpan Blok",
|
||||
infHold="Simpan Selamanya",
|
||||
phyHold="Simpan Di Tempat",
|
||||
|
||||
fieldH="Ketinggian",
|
||||
visible="Visibilitas",
|
||||
freshLimit="Batas Reset Tunda Kunci",
|
||||
opponent="Lawan",
|
||||
life="Nyawa",
|
||||
pushSpeed="Kcptn. Dorongan",
|
||||
garbageSpeed="Kcptn. Serangan",
|
||||
|
||||
bufferLimit="Batas Serangan",
|
||||
heightLimit="Batas Tinggi",
|
||||
ospin="O-Spin",
|
||||
fineKill="Maksimum Efisiensi Tombol",
|
||||
b2bKill="Akhirkan Permainan Jika Tidak B2B",
|
||||
lockout="Akhirkan Permainan Jika Lock Out",
|
||||
easyFresh="Reset Tunda Kunci Normal",
|
||||
deepDrop="Jatuh Dalam",
|
||||
bone="Blok []",
|
||||
},
|
||||
custom_field={
|
||||
title="Permainan Tersesuai",
|
||||
subTitle="Blok Awalan",
|
||||
|
||||
any="Hapus",
|
||||
smart="Auto",
|
||||
|
||||
push="Tambah Baris (K)",
|
||||
del="Hapus Garis (L)",
|
||||
|
||||
demo="Jangan Menunjukkan ×",
|
||||
|
||||
newPg="Hal. Baru (N)",
|
||||
delPg="Hapus Hal. (M)",
|
||||
prevPg="Hal. Sebelumnya",
|
||||
nextPg="Hal. Selanjuynya",
|
||||
},
|
||||
custom_sequence={
|
||||
title="Permainan Tersesuai",
|
||||
subTitle="Urutan Blok",
|
||||
sequence="Urutan Blok",
|
||||
},
|
||||
custom_mission={
|
||||
title="Permainan Tersesuai",
|
||||
subTitle="Misi",
|
||||
|
||||
_1="1",_2="2",_3="3",_4="4",
|
||||
any1="apapun-1",any2="apapun-2",any3="apapun-3",any4="apapun-4",
|
||||
PC="PC",
|
||||
Z1="Z1",S1="S1",J1="J1",L1="L1",T1="T1",O1="O1",I1="I1",
|
||||
Z2="Z2",S2="S2",J2="J2",L2="L2",T2="T2",O2="O2",I2="I2",
|
||||
Z3="Z3",S3="S3",J3="J3",L3="L3",T3="T3",O3="O3",I3="I3",
|
||||
O4="O4",I4="I4",
|
||||
mission="Paksa Misi",
|
||||
},
|
||||
about={
|
||||
staff="Staf",
|
||||
his="Riwayat",
|
||||
legals="Info Legal",
|
||||
},
|
||||
dict={
|
||||
title="TetroKamus",
|
||||
},
|
||||
stat={
|
||||
path="Buka Folder Data",
|
||||
save="Kelola Data",
|
||||
},
|
||||
music={
|
||||
title="Ruang Musik",
|
||||
arrow="→",
|
||||
now="Sekarang bermain:",
|
||||
|
||||
bgm="Volume",
|
||||
sound="Efek Suara",
|
||||
},
|
||||
launchpad={
|
||||
title="Ruang Efek Suara",
|
||||
bgm="Volume Musik",
|
||||
sfx="Volume Efek",
|
||||
voc="Volume Suara",
|
||||
music="Musik",
|
||||
label="label",
|
||||
},
|
||||
login={
|
||||
title="Masuk",
|
||||
register="Daftar",
|
||||
email="Alamat Email",
|
||||
password="Password",
|
||||
keepPW="Ingat Saya",
|
||||
login="Masuk",
|
||||
},
|
||||
register={
|
||||
title="Daftar",
|
||||
login="Masuk",
|
||||
username="Username",
|
||||
email="Alamat Email",
|
||||
password="Password",
|
||||
password2="Ulangi Password",
|
||||
register="Daftar",
|
||||
registering="Menunggu respon…",
|
||||
},
|
||||
account={
|
||||
title="Akun",
|
||||
},
|
||||
app_15p={
|
||||
color="Warna",
|
||||
invis="Sembunyi",
|
||||
slide="Geser",
|
||||
pathVis="Tunjuk Jalur",
|
||||
revKB="Dibalik",
|
||||
},
|
||||
app_schulteG={
|
||||
rank="Ukuran",
|
||||
invis="Sembunyi",
|
||||
disappear="Hilangkan",
|
||||
tapFX="Efek Sentuh",
|
||||
},
|
||||
app_AtoZ={
|
||||
level="Level",
|
||||
keyboard="Keyboard",
|
||||
},
|
||||
app_2048={
|
||||
invis="Sembunyi",
|
||||
tapControl="Kontrol Sentuh",
|
||||
|
||||
skip="Lewati Ronde",
|
||||
},
|
||||
app_ten={
|
||||
next="Pratinjau",
|
||||
invis="Sembunyi",
|
||||
fast="Cepat",
|
||||
},
|
||||
app_dtw={
|
||||
color="Warna",
|
||||
mode="Mode",
|
||||
bgm="Musik",
|
||||
arcade="Arcade",
|
||||
},
|
||||
app_link={
|
||||
invis="Sembunyi",
|
||||
},
|
||||
savedata={
|
||||
export="Expor ke papan klip",
|
||||
import="Impor dari papan klip",
|
||||
unlock="Kemajuan",
|
||||
data="Statistik",
|
||||
setting="Pengaturan",
|
||||
vk="Aturan Tombol Sentuh",
|
||||
|
||||
couldSave="Penyimpanan Cloud (PERINGATAN: HANYA PERCOBAAN)",
|
||||
notLogin="[Masuk ke akun untuk mengakses penyimpanan cloud",
|
||||
upload="Unggah ke Cloud",
|
||||
download="Unduh dari Cloud",
|
||||
},
|
||||
},
|
||||
modes={
|
||||
['sprint_10l']= {"Balapan", "10L", "Buat 10 baris!"},
|
||||
['sprint_20l']= {"Balapan", "20L", "Buat 20 baris!"},
|
||||
['sprint_40l']= {"Balapan", "40L", "Buat 40 baris!"},
|
||||
['sprint_100l']= {"Balapan", "100L", "Buat 100 baris!"},
|
||||
['sprint_400l']= {"Balapan", "400L", "Buat 400 baris!"},
|
||||
['sprint_1000l']= {"Balapan", "1.000L", "Buat 1.000 baris!"},
|
||||
['sprintPenta']= {"Balapan", "PENTOMINO", "40L dengan pentomino!"},
|
||||
['sprintMPH']= {"Balapan", "MPH", "Tanpa ingatan\nTanpa pratinjau\nTanpa simpan"},
|
||||
['dig_10l']= {"Gali", "10L", "Gali 10 baris!"},
|
||||
['dig_40l']= {"Gali", "40L", "Gali 40 baris!"},
|
||||
['dig_100l']= {"Gali", "100L", "Gali 100 baris!"},
|
||||
['dig_400l']= {"Gali", "400L", "Gali 400 baris!"},
|
||||
['drought_n']= {"Nasib Buruk", "100L", "Tidak ada blok I..."},
|
||||
['drought_l']= {"Nasib Buruk+", "100L", "Nasib sangat buruk..."},
|
||||
['marathon_n']= {"Maraton", "NORMAL", "200-baris maraton dengan kecepatan meningkat"},
|
||||
['marathon_h']= {"Maraton", "SULIT", "200-baris maraton dengan kecepatan tinggi"},
|
||||
['solo_e']= {"Tarung", "MUDAH", "Kalahkan AInya!"},
|
||||
['solo_n']= {"Tarung", "NORMAL", "Kalahkan AInya!"},
|
||||
['solo_h']= {"Tarung", "SULIT", "Kalahkan AInya!"},
|
||||
['solo_l']= {"Tarung", "GILA", "Kalahkan AInya!"},
|
||||
['solo_u']= {"Tarung", "TERAKHIR", "Kalahkan AInya!"},
|
||||
['techmino49_e']= {"Tech 49", "MUDAH", "Pertarungan dengan 49 pemain."},
|
||||
['techmino49_h']= {"Tech 49", "SULIT", "Pertarungan dengan 49 pemain."},
|
||||
['techmino49_u']= {"Tech 49", "TERAKHIR", "Pertarungan dengan 49 pemain."},
|
||||
['techmino99_e']= {"Tech 99", "MUDAH", "Pertarungan dengan 99 pemain."},
|
||||
['techmino99_h']= {"Tech 99", "SULIT", "Pertarungan dengan 99 pemain."},
|
||||
['techmino99_u']= {"Tech 99", "TERAKHIR", "Pertarungan dengan 99 pemain."},
|
||||
['round_e']= {"Giliran", "MUDAH", "Giliran main melawan AI!"},
|
||||
['round_n']= {"Giliran", "NORMAL", "Giliran main melawan AI!"},
|
||||
['round_h']= {"Giliran", "SULIT", "Giliran main melawan AI!"},
|
||||
['round_l']= {"Giliran", "GILA", "Giliran main melawan AI!"},
|
||||
['round_u']= {"Giliran", "TERAKHIR", "Giliran main melawan AI!"},
|
||||
['master_n']= {"Jago", "NORMAL", "Untuk pemula 20G"},
|
||||
['master_h']= {"Jago", "SULIT", "Untuk pro 20G"},
|
||||
['master_m']= {"Jago", "M21", "Untuk jago 20G"},
|
||||
['master_final']= {"Jago", "TERAKHIR", "Lebih dari 20G"},
|
||||
['master_ph']= {"Jago", "KHAYALAN", "???"},
|
||||
['master_ex']= {"Sangat Jago", "EKSTRA", "Blok tidak kelihatan"},
|
||||
['strategy_e']= {"Strategi", "MUDAH", "Keputusan 20G cepat"},
|
||||
['strategy_h']= {"Strategi", "SULIT", "Keputusan 20G cepat"},
|
||||
['strategy_u']= {"Strategi", "TERAKHIR", "Keputusan 20G cepat"},
|
||||
['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
|
||||
['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
|
||||
['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
|
||||
['blind_e']= {"Tak Terlihat", "MUDAH", "Untuk pemula"},
|
||||
['blind_n']= {"Tak Terlihat", "NORMAL", "Untuk amatir"},
|
||||
['blind_h']= {"Tak Terlihat", "SULIT", "Untuk orang berpengalaman"},
|
||||
['blind_l']= {"Tak Terlihat", "GILA", "Untuk profesional"},
|
||||
['blind_u']= {"Tak Terlihat", "???", "Apakah Anda siap?"},
|
||||
['blind_wtf']= {"Tak Terlihat", "TERAKHIR", "Anda belum siap"},
|
||||
['classic_e']= {"Klasik", "MUDAH", "Rekreasi berkecepatan rendah dari tahun 80-an"},
|
||||
['classic_h']= {"Klasik", "SULIT", "Rekreasi berkecepatan medium dari tahun 80-an"},
|
||||
['classic_u']= {"Klasik", "TERAKHIR", "Rekreasi berkecepatan tinggi dari tahun 80-an"},
|
||||
['survivor_e']= {"Bertahan", "MUDAH", "Berapa lama Anda bisa bertahan?"},
|
||||
['survivor_n']= {"Bertahan", "NORMAL", "Berapa lama Anda bisa bertahan?"},
|
||||
['survivor_h']= {"Bertahan", "SULIT", "Berapa lama Anda bisa bertahan?"},
|
||||
['survivor_l']= {"Bertahan", "GILA", "Berapa lama Anda bisa bertahan?"},
|
||||
['survivor_u']= {"Bertahan", "TERAKHIR", "Berapa lama Anda bisa bertahan?"},
|
||||
['attacker_h']= {"Penyerang", "SULIT", "Praktekkan keahlian menyerang Anda!"},
|
||||
['attacker_u']= {"Penyerang", "TERAKHIR", "Praktekkan keahlian menyerang Anda!"},
|
||||
['defender_n']= {"Pembela", "NORMAL", "Praktekkan keahlian membela Anda!"},
|
||||
['defender_l']= {"Pembela", "GILA", "Praktekkan keahlian membela Anda!"},
|
||||
['dig_h']= {"Pembor", "SULIT", "Praktekkan keahlian menggali Anda!"},
|
||||
['dig_u']= {"Pembor", "TERAKHIR", "Praktekkan keahlian menggali Anda!"},
|
||||
['clearRush']= {"Gegas Baris", "NORMAL", "Tutorial all-spin!\n[Dalam pengembangan]"},
|
||||
['c4wtrain_n']= {"Latihan C4W", "NORMAL", "Kombo tidak terbatas."},
|
||||
['c4wtrain_l']= {"Latihan C4W", "GILA", "Kombo tidak terbatas."},
|
||||
['pctrain_n']= {"Latihan PC", "NORMAL", "Latihan PC"},
|
||||
['pctrain_l']= {"Latihan PC", "GILA", "Latihan PC yang lebih sulit"},
|
||||
['pc_n']= {"Tantangan PC", "NORMAL", "Dapatkan PC sampai 100 baris!"},
|
||||
['pc_h']= {"Tantangan PC", "SULIT", "Dapatkan PC sampai 100 baris!"},
|
||||
['pc_l']= {"Tantangan PC", "GILA", "Dapatkan PC sampai 100 baris!"},
|
||||
['pc_inf']= {"Tantangan PC", "TAK TERBATAS", "Dapatkan PC sebanyaknya!"},
|
||||
['tech_n']= {"Tech", "NORMAL", "Coba jaga deret Back-To-Back!"},
|
||||
['tech_n_plus']= {"Tech", "NORMAL+", "Hanya Spins & PCs dibolehkan"},
|
||||
['tech_h']= {"Tech", "SULIT", "Coba jaga deret Back-To-Back!"},
|
||||
['tech_h_plus']= {"Tech", "SULIT+", "Hanya Spins & PCs dibolehkan"},
|
||||
['tech_l']= {"Tech", "GILA", "Coba jaga deret Back-To-Back!"},
|
||||
['tech_l_plus']= {"Tech", "GILA+", "Hanya Spins & PCs dibolehkan"},
|
||||
['tech_finesse']= {"Tech", "EF. TOMBOL", "Efisiensi tombol harus maksimal!"},
|
||||
['tech_finesse_f']= {"Tech", "EF. TOMBOL+", "Efisiensi tombol maksimal dan tidak ada garis normal!"},
|
||||
['tsd_e']= {"Tantangan TSD", "MUDAH", "Hanya T-Spin Double dibolehkan!"},
|
||||
['tsd_h']= {"Tantangan TSD", "SULIT", "Hanya T-Spin Double dibolehkan!"},
|
||||
['tsd_u']= {"Tantangan TSD", "TERAKHIR", "Hanya T-Spin Double dibolehkan!"},
|
||||
['backfire_n']= {"Serangan Balik", "NORMAL", "Tahankan serang baliknya!"},
|
||||
['backfire_h']= {"Serangan Balik", "SULIT", "Tahankan serang baliknya!"},
|
||||
['backfire_l']= {"Serangan Balik", "GILA", "Tahankan serang baliknya!"},
|
||||
['backfire_u']= {"Serangan Balik", "TERAKHIR", "Tahankan serang baliknya!"},
|
||||
['sprintAtk']= {"Balapan", "100 Serangan", "Kirim 100 baris serangan!"},
|
||||
['sprintEff']= {"Balapan", "Efisiensi", "Kirim lebih banyak serangan sampai 40 baris!"},
|
||||
['zen']= {"Zen", "200L", "Permainan 200-garis tanpa batas waktu"},
|
||||
['ultra']= {"Ultra", "EKSTRA", "Permainan 2 menit. Dapatkan nilai sebanyaknya!"},
|
||||
['infinite']= {"Tak Terbatas", "", "Bak pasir"},
|
||||
['infinite_dig']= {"Tak Terbatas: Gali","", "Gali, gali, gali"},
|
||||
['marathon_inf']= {"Maraton", "TAK TERBATAS", "Maraton tanpa akhir."},
|
||||
|
||||
['custom_clear']= {"Tersesuai", "NORMAL"},
|
||||
['custom_puzzle']= {"Tersesuai", "TEKA-TEKI"},
|
||||
},
|
||||
getTip={refuseCopy=true,
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
"\"Techmino.app\" tidak bisa dibuka karena penciptanya tidak bisa diverifikasi.",
|
||||
"\"Techmino.app\" akan merusak komputer Anda. Anda sebaiknya memindah itu ke tempat sampah.",
|
||||
"\"TechminOS\"",
|
||||
"\\jezevec/\\jezevec/\\jezevec/",
|
||||
"\\osk/\\osk/\\osk/",
|
||||
"↑↑↓↓←→←→BA",
|
||||
"$include<studio.h>",
|
||||
"20G sebenarnya peraturan permainan baru!",
|
||||
"Rekor dunia 40L: 14.915s dari Reset_",
|
||||
"Sistem pencapaian segera akan datang!",
|
||||
"ALL SPIN!",
|
||||
"Am G F G",
|
||||
"B2B2B???",
|
||||
"B2B2B2B tidak ada.",
|
||||
"Back-to-Back Techrash, 10 Kombo, PC!",
|
||||
"Pastikan untuk memberikan yang terbaik lagi hari ini!",
|
||||
"Bridge clear segera akan datang!",
|
||||
"Bisakah Anda menguasai penyusun modern namun akrab ini?",
|
||||
"Changelog dalam Bahasa Inggris bisa ditemukan di Discord.",
|
||||
"Color clear segera akan datang!",
|
||||
"Menurunkan DAS dan ARR membuat permainannya lebih cepat tetapi lebih sulit untuk mengontrol.",
|
||||
"Apakah saya baru saja melihat Back-to-Back-to-Back?",
|
||||
"Apakah B2B2B2B ada?",
|
||||
"Jangan biarkan bug kecil menghancur harimu!",
|
||||
"Jangan melihat langsung ke bug!",
|
||||
"Nikmati sistem rotasi Techmino!",
|
||||
"Luar biasa, tapi mari kita pergi lebih baik lain kali…",
|
||||
"Cari tahu apa yang ada di pengaturan!",
|
||||
"Apakah Anda menemukan bug? Buka issue di halaman GitHub kami!",
|
||||
"Permainan penyusun blok gratis dengan mode Battle Royale!",
|
||||
"git commit",
|
||||
"git push -f",
|
||||
"Punya saran? Post sarannya di Discord kami!",
|
||||
"Pernahkah Anda memperhatikan apa \"memutar\" melakukan ke blok?",
|
||||
"Headphone direkomendasikan untuk pengalaman yang lebih baik.",
|
||||
"Hello world!",
|
||||
"Hanya ada 2 jenis trimino, yaitu I3 dan L3.",
|
||||
"if a==true",
|
||||
"Tingkatkan frekuensi gambar Anda untuk pengalaman yang lebih baik.",
|
||||
"Sistem [tindakan] awal dapat menyelamatkan Anda.",
|
||||
"Apakah B2B2B2B mungkin?",
|
||||
"Ini sedang memuat! Bukan sekedar cutscene!",
|
||||
"Anda dapat menyelesaikan 40L tanpa tombol kiri/kanan.",
|
||||
"Anda dapat menyelesaikan 40L tanpa tombol putar.",
|
||||
"Bergabunglah server Discord kami!",
|
||||
"l-=-1",
|
||||
"Biarkan bass menendang!",
|
||||
"Kecepatan bingkai rendah mengurangi pengalaman bermain game Anda.",
|
||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||
"Lua No.1",
|
||||
"Mix clear segera akan datang!",
|
||||
"Sebagian besar ikon tombol dibuat oleh mesin terbang yang digambar sendiri di Unicode Private Use Area.",
|
||||
"Apakah musiknya terlalu mengganggu? Anda dapat mematikannya.",
|
||||
"Tidak ada easter egg di menu ini jika Anda menyalakan gaya sederhana!",
|
||||
"O-Spin Triple!",
|
||||
"OHHHHHHHHHHHHHH",
|
||||
"Main dengan satu tangan!",
|
||||
"Bermain bagus membutuhkan waktu!",
|
||||
"dipersembahkan oleh LÖVE",
|
||||
"dipersembahkan oleh Un..LÖVE",
|
||||
"Server kadang tidak berfungsi",
|
||||
"Beberapa persyaratan untuk mencapai peringkat X sengaja dibuat sulit bahkan untuk pemain terbaik.",
|
||||
"Segera Anda akan dapat bermain melawan teman dan musuh di seluruh dunia.",
|
||||
"Split Clear segera akan datang!",
|
||||
"sudo rm -rf /*",
|
||||
"Techmino merupakan kombinasi dari Technique dan Tetromino.",
|
||||
"Techmino memiliki edisi Nspire-CX!",
|
||||
"Techmino sangat menyenangkan!",
|
||||
"TetroDictionary sekarang tersedia dalam bahasa Inggris.",
|
||||
"Sebagian besar musik dalam permainan ini dibuat menggunakan Beepbox.",
|
||||
"Nama-nama yang muncul di latar belakang halaman Staf adalah daftar pendukung kami.",
|
||||
"Masa depan penyusun blok milik Anda di Techmino!",
|
||||
"Ada beberapa mode tersembunyi dalam permainan ini yang tidak dapat dimasuki menggunakan peta.",
|
||||
"Ada total 18 pentomino yang berbeda.",
|
||||
"Ada total 7 tetromino yang berbeda.",
|
||||
"Coba gunakan beberapa slot simpan!",
|
||||
"Try using two rotation buttons. Using all three of them is better.",
|
||||
"Peringatan: Seni Programmer",
|
||||
"Bagaimana dengan 20 PCs?",
|
||||
"Bagaimana dengan 23 PCs dalam 100 baris?",
|
||||
"Bagaimana dengan 26 TSDs?",
|
||||
"while(false)",
|
||||
"Anda adalah seorang jago!",
|
||||
"Anda dipersilakan untuk membantu kami membuat musik dan efek suara!",
|
||||
"Anda dapat menghubungkan keyboard ke ponsel atau tablet Anda (tetapi tidak berfungsi di iOS).",
|
||||
"Anda bisa mengubah tindakan tombol di pengaturan!",
|
||||
"Anda bisa menavigasi menu dengan keyboard.",
|
||||
"Anda bisa membuka folder penyimpanan data dari halaman Statistik.",
|
||||
"Anda bisa melakukan spin dengan semua blok di permainan ini kecuali blok O1.",
|
||||
"Anda bisa mengubah arah muncul blok.",
|
||||
"ZS JL T O I",
|
||||
{C.C,"Coba juga 15puzzle!"},
|
||||
{C.C,"Coba juga Ballance!"},
|
||||
{C.C,"Coba juga Minecraft!"},
|
||||
{C.C,"Coba juga Minesweeper!"},
|
||||
{C.C,"Coba juga Orzmic!"},
|
||||
{C.C,"Coba juga osu!"},
|
||||
{C.C,"Coba juga Phigros!"},
|
||||
{C.C,"Coba juga Puyo Puyo!"},
|
||||
{C.C,"Coba juga Rubik's cube!"},
|
||||
{C.C,"Coba juga Terraria!"},
|
||||
{C.C,"Coba juga Touhou Project!"},
|
||||
{C.C,"Coba juga VVVVVV!"},
|
||||
{C.C,"Coba juga World of goo!"},
|
||||
{C.C,"Coba juga Zuma!"},
|
||||
{C.H,"REGRET!!"},
|
||||
{C.lP,"Nomor rahasia: 626"},
|
||||
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
|
||||
{C.lY,"COOL!!"},
|
||||
{C.N,"Lua",C.Z," No.1"},
|
||||
{C.P,"T-spin!"},
|
||||
{C.R,"\"Penyalahgunaan DMCA\""},
|
||||
{C.R,"\"Hukum kekayaan intelektual\""},
|
||||
{C.R,"DD",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z," Cannon"},
|
||||
{C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"},
|
||||
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},
|
||||
{C.Y,"O-Spin Triple!"},
|
||||
{C.Z,"Apa? ",C.lC,"X-spin?"},
|
||||
}
|
||||
}
|
||||
@@ -194,9 +194,8 @@ return{
|
||||
"certifique-se de pegar o jogo de fontes oficiais;",
|
||||
"binários obtidos em outros lugares pode conter malware.",
|
||||
"O autor não é responsável por qualquer binários modificados",
|
||||
FNSF and"/"or"O jogo é gratis, mas doações são apreciadas.",
|
||||
FNSF and"/"or"Se você não conseguir usar o WeChat Pay e o AliPay,",
|
||||
FNSF and"/"or"pode acessar a página do P\97\116\114\101\111\110 para nos ajudar!",
|
||||
FNNS and"/"or"O jogo é gratis, mas doações são apreciadas.",
|
||||
-- FNNS and"/"or"Check Zictionary for more",
|
||||
},
|
||||
staff={
|
||||
"Author: MrZ E-mail: 1046101471@qq.com",
|
||||
@@ -207,7 +206,7 @@ return{
|
||||
"Music: MrZ, 柒栎流星, ERM, Trebor, C₂₉H₂₅N₃O₅, [T0722, Aether]",
|
||||
"Voice & Sound: Miya, Xiaoya, Mono, MrZ, Trebor",
|
||||
"Performance: 模电, HBM",
|
||||
"Traduzir: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅",
|
||||
"Traduzir: User670, MattMayuga, Mizu, Mr.Faq, ScF, C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
|
||||
"",
|
||||
"Special Thanks:",
|
||||
"Flyz, Big_True, NOT_A_ROBOT, 思竣, yuhao7370",
|
||||
@@ -707,6 +706,9 @@ return{
|
||||
-- ['strategy_e']= {"Strategy", "EASY", "Fast 20G decision"},
|
||||
-- ['strategy_h']= {"Strategy", "HARD", "Fast 20G decision"},
|
||||
-- ['strategy_u']= {"Strategy", "ULTIMATE", "Fast 20G decision"},
|
||||
-- ['strategy_e_plus']={"Strategi", "MUDAH+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_h_plus']={"Strategi", "SULIT+", "Keputusan 20G cepat"},
|
||||
-- ['strategy_u_plus']={"Strategi", "TERAKHIR+", "Keputusan 20G cepat"},
|
||||
['blind_e']= {"Cego", "METADE", "Para novatos."},
|
||||
['blind_n']= {"Cego", "TUDO", "Para intermediários."},
|
||||
['blind_h']= {"Cego", "DE REPENTE", "Para experientes."},
|
||||
|
||||
@@ -130,8 +130,7 @@ return{
|
||||
"MrZ XXX A→B",
|
||||
"",
|
||||
"□$X, ↑$↑ XD!",
|
||||
"C0, 支 XXX,",
|
||||
"|^O : )",
|
||||
"[z]~~~",
|
||||
},
|
||||
WidgetText={
|
||||
main={
|
||||
|
||||
@@ -232,6 +232,9 @@ return{fallback='zh',
|
||||
['strategy_e']= {"策略堆叠", "简单", "有区别吗"},
|
||||
['strategy_h']= {"策略堆叠", "困难", "没区别吧"},
|
||||
['strategy_u']= {"策略堆叠", "极限", "没区别"},
|
||||
['strategy_e_plus']={"策略堆叠", "简单+", "有区别吗"},
|
||||
['strategy_h_plus']={"策略堆叠", "困难+", "没区别吧"},
|
||||
['strategy_u_plus']={"策略堆叠", "极限+", "没区别"},
|
||||
['blind_e']= {"隐形", "半隐", "谁都能玩"},
|
||||
['blind_n']= {"隐形", "全隐", "稍加练习即可"},
|
||||
['blind_h']= {"隐形", "瞬隐", "和上一个一样"},
|
||||
|
||||
@@ -206,9 +206,8 @@ return{
|
||||
"仅通过官网 home.techmino.org 免费下载/更新",
|
||||
"其他渠道获得游戏皆有被修改/加广告/植入病毒的风险,程序只申请了振动&联网权限!",
|
||||
"若由于被修改的本游戏产生的各种损失作者不负责(怎么负责啊我又没法管)",
|
||||
FNSF and"/"or"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
||||
FNSF and"/"or"记得备注id备注id备注id,不然可能会没法记录到赞助列表!",
|
||||
FNSF and"/"or"你也可以去我们的P\97\116\114\101\111\110页面(链接见小Z词典)来支持我们!",
|
||||
FNNS and"/"or"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
||||
FNNS and"/"or"更多信息见小z词典",
|
||||
},
|
||||
staff={
|
||||
"作者:MrZ 邮箱:1046101471@qq.com",
|
||||
@@ -219,7 +218,7 @@ return{
|
||||
"音乐: MrZ,柒栎流星,ERM,Trebor,C₂₉H₂₅N₃O₅,[T0722,Aether]",
|
||||
"音效/语音: Miya,Xiaoya,Mono,MrZ,Trebor",
|
||||
"演出: 模电,HBM",
|
||||
"翻译: User670,MattMayuga,Mizu,Mr.Faq,ScF,C₂₉H₂₅N₃O₅",
|
||||
"翻译: User670,MattMayuga,Mizu,Mr.Faq,ScF,C₂₉H₂₅N₃O₅,NOT_A_ROBOT",
|
||||
"",
|
||||
"特别感谢:",
|
||||
"Flyz,Big_True,NOT_A_ROBOT,思竣,yuhao7370",
|
||||
@@ -716,6 +715,9 @@ return{
|
||||
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
|
||||
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
|
||||
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
|
||||
['strategy_e_plus']={"策略堆叠", "简单+", "20G堆叠中速决策练习"},
|
||||
['strategy_h_plus']={"策略堆叠", "困难+", "20G堆叠快速决策练习"},
|
||||
['strategy_u_plus']={"策略堆叠", "极限+", "20G堆叠极速决策练习"},
|
||||
['blind_e']= {"隐形", "半隐", "不强大脑"},
|
||||
['blind_n']= {"隐形", "全隐", "挺强大脑"},
|
||||
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
|
||||
|
||||
@@ -122,6 +122,9 @@ return{
|
||||
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
|
||||
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
|
||||
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
|
||||
['strategy_e_plus']={"策略堆叠", "简单+", "20G堆叠中速决策练习"},
|
||||
['strategy_h_plus']={"策略堆叠", "困难+", "20G堆叠快速决策练习"},
|
||||
['strategy_u_plus']={"策略堆叠", "极限+", "20G堆叠极速决策练习"},
|
||||
['blind_e']= {"隐形", "半隐", "不强大脑"},
|
||||
['blind_n']= {"隐形", "全隐", "挺强大脑"},
|
||||
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
|
||||
|
||||
@@ -204,9 +204,8 @@ return{
|
||||
"确保只从官方渠道获得游戏,",
|
||||
"因为如果你在别处找到它,我们无法确保你的安全",
|
||||
"作者不对任何修改负责",
|
||||
FNSF and"/"or"虽然游戏是免费的,但我们会感谢捐赠.",
|
||||
FNSF and"/"or"如果您无法同时使用我们的聊天支付和阿里支付,",
|
||||
FNSF and"/"or"你可以去我们的P\97\116\114\111\110页面(连接到四联词典)支持我们!",
|
||||
FNNS and"/"or"虽然游戏是免费的,但我们感谢捐款。",
|
||||
FNNS and"/"or"查看Zictionary以了解更多信息",
|
||||
},
|
||||
staff={
|
||||
"作者:Z先生 邮箱:1046101471@qq.com",
|
||||
@@ -217,7 +216,7 @@ return{
|
||||
"音乐: Z先生,柒栎流星,ERM,特雷伯尔,蛋白激酶G抑制剂,[T0722,以太]",
|
||||
"音效/语音: 米娅,小亚,东西,Z先生,特雷伯尔",
|
||||
"演出: 模电,HBM",
|
||||
"翻译: 用户670,马特·马尤加,水,法克先生,氟化钪,蛋白激酶G抑制剂",
|
||||
"翻译: 用户670,马特·马尤加,水,法克先生,氟化钪,蛋白激酶G抑制剂,不是机器人",
|
||||
"",
|
||||
"特别感谢:",
|
||||
"飞天,大真,不是机器人,思竣,yuhao7370",
|
||||
@@ -673,100 +672,103 @@ return{
|
||||
},
|
||||
},
|
||||
modes={
|
||||
['sprint_10l']= {"冲刺", "10升", "清除10行!"},
|
||||
['sprint_20l']= {"冲刺", "20升", "清除20行!"},
|
||||
['sprint_40l']= {"冲刺", "40升", "清除40行!"},
|
||||
['sprint_100l']= {"冲刺", "100升", "清除100行!"},
|
||||
['sprint_400l']= {"冲刺", "400升", "清除400行!"},
|
||||
['sprint_1000l']= {"冲刺", "1000升", "清除1000行!"},
|
||||
['sprintPenta']= {"冲刺", "五联骨牌", "40升,配18个五分钟"},
|
||||
['sprintMPH']= {"冲刺", "每小时英里数", "无记忆\n无先前\n无记忆"},
|
||||
['dig_10l']= {"挖掘", "10升", "挖10条垃圾线"},
|
||||
['dig_40l']= {"挖掘", "40升", "挖40条垃圾线"},
|
||||
['dig_100l']= {"挖掘", "100升", "挖100条垃圾线"},
|
||||
['dig_400l']= {"挖掘", "400升", "挖400条垃圾线"},
|
||||
['drought_n']= {"干旱", "100升", "没有工装"},
|
||||
['drought_l']= {"干旱+", "100升", "搞什么呀"},
|
||||
['marathon_n']= {"马拉松赛跑", "正常", "200线加速马拉松"},
|
||||
['marathon_h']= {"马拉松赛跑", "硬的", "200线高速马拉松"},
|
||||
['solo_e']= {"战争", "容易", "打败AI!"},
|
||||
['solo_n']= {"战争", "正常", "打败AI!"},
|
||||
['solo_h']= {"战争", "硬的", "打败AI!"},
|
||||
['solo_l']= {"战争", "疯子", "打败AI!"},
|
||||
['solo_u']= {"战争", "终极", "打败AI!"},
|
||||
['techmino49_e']= {"技术49", "容易", "49人战斗\n最后一个站着的人获胜"},
|
||||
['techmino49_h']= {"技术49", "硬的", "49人战斗\n最后一个站着的人获胜"},
|
||||
['techmino49_u']= {"技术49", "终极", "49人战斗\n最后一个站着的人获胜"},
|
||||
['techmino99_e']= {"科技99", "容易", "99人战斗\n最后一个站着的人获胜"},
|
||||
['techmino99_h']= {"科技99", "硬的", "99人战斗\n最后一个站着的人获胜"},
|
||||
['techmino99_u']= {"科技99", "终极", "99人战斗\n最后一个站着的人获胜"},
|
||||
['round_e']= {"回合制", "容易", "轮流玩AI!"},
|
||||
['round_n']= {"回合制", "正常", "轮流玩AI!"},
|
||||
['round_h']= {"回合制", "硬的", "轮流玩AI!"},
|
||||
['round_l']= {"回合制", "疯子", "轮流玩AI!"},
|
||||
['round_u']= {"回合制", "终极", "轮流玩AI!"},
|
||||
['master_n']= {"主人", "正常", "适合20G初学者"},
|
||||
['master_h']= {"主人", "硬的", "20克的职业选手"},
|
||||
['master_m']= {"主人", "M21", "20克大师赛"},
|
||||
['master_final']= {"主人", "最终", "20G及以上"},
|
||||
['master_ph']= {"主人", "幻觉", "???"},
|
||||
['master_ex']= {"大师", "额外的", "比瞬间还短的永恒"},
|
||||
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
|
||||
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
|
||||
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
|
||||
['blind_e']= {"看不见的", "一半", "对于新手来说"},
|
||||
['blind_n']= {"看不见的", "全部", "对于中间产品"},
|
||||
['blind_h']= {"看不见的", "突然", "对于有经验的人"},
|
||||
['blind_l']= {"看不见的", "突然+", "对于专业人士"},
|
||||
['blind_u']= {"看不见的", "?", "你准备好了吗?"},
|
||||
['blind_wtf']= {"看不见的", "世界跆拳道联盟", "你还没准备好"},
|
||||
['classic_e']= {"经典", "容易", "80年代的低速娱乐"},
|
||||
['classic_h']= {"经典", "困难", "80年代的中速娱乐"},
|
||||
['classic_u']= {"经典", "终极", "80年代的高速娱乐"},
|
||||
['survivor_e']= {"幸存者", "容易", "你能活多久?"},
|
||||
['survivor_n']= {"幸存者", "正常", "你能活多久?"},
|
||||
['survivor_h']= {"幸存者", "硬的", "你能活多久?"},
|
||||
['survivor_l']= {"幸存者", "疯子", "你能活多久?"},
|
||||
['survivor_u']= {"幸存者", "终极", "你能活多久?"},
|
||||
['attacker_h']= {"攻击者", "硬的", "练习你的进攻技巧!"},
|
||||
['attacker_u']= {"攻击者", "终极", "练习你的进攻技巧!"},
|
||||
['defender_n']= {"防守者", "正常", "练习你的防守技巧!"},
|
||||
['defender_l']= {"防守者", "疯子", "练习你的防守技巧!"},
|
||||
['dig_h']= {"钻机", "硬的", "挖掘练习!"},
|
||||
['dig_u']= {"钻机", "终极", "挖掘练习!"},
|
||||
['clearRush']= {"清晰的冲", "普通", "所有旋转教程\n[在建]"},
|
||||
['c4wtrain_n']= {"C4W训练", "正常", "无限组合"},
|
||||
['c4wtrain_l']= {"C4W训练", "疯子", "无限组合"},
|
||||
['pctrain_n']= {"电脑培训", "正常", "完美清晰的实践"},
|
||||
['pctrain_l']= {"电脑培训", "疯子", "更难的完美清晰的练习"},
|
||||
['pc_n']= {"电脑挑战", "正常", "让电脑在100线以内!"},
|
||||
['pc_h']= {"电脑挑战", "硬的", "让电脑在100线以内!"},
|
||||
['pc_l']= {"电脑挑战", "疯子", "让电脑在100线以内!"},
|
||||
['pc_inf']= {"无尽个人电脑挑战", "", "尽可能多地获取个人电脑"},
|
||||
['tech_n']= {"技术人员", "正常", "试着保持背靠背的链条!"},
|
||||
['tech_n_plus']= {"技术人员", "正常+", "仅限旋转和个人电脑"},
|
||||
['tech_h']= {"技术人员", "硬的", "试着保持背靠背的链条!"},
|
||||
['tech_h_plus']= {"技术人员", "硬的+", "仅限旋转和个人电脑"},
|
||||
['tech_l']= {"技术人员", "疯子", "试着保持背靠背的链条!"},
|
||||
['tech_l_plus']= {"技术人员", "疯子+", "仅限旋转和个人电脑"},
|
||||
['tech_finesse']= {"技术人员", "手腕", "没有技巧错误!"},
|
||||
['tech_finesse_f']={"技术人员", "技巧+", "没有正常的清除和技巧错误!"},
|
||||
['tsd_e']= {"热关断挑战赛", "容易", "只有T-Spin双打!"},
|
||||
['tsd_h']= {"热关断挑战赛", "硬的", "只有T-Spin双打!"},
|
||||
['tsd_u']= {"热关断挑战赛", "终极", "只有T-Spin双打!"},
|
||||
['backfire_n']= {"适得其反", "正常", "挡住回火的垃圾管道"},
|
||||
['backfire_h']= {"适得其反", "硬的", "挡住回火的垃圾管道"},
|
||||
['backfire_l']= {"适得其反", "疯子", "挡住回火的垃圾管道"},
|
||||
['backfire_u']= {"适得其反", "终极", "挡住回火的垃圾管道"},
|
||||
['sprintAtk']= {"冲刺", "100次攻击", "发送100行!"},
|
||||
['sprintEff']= {"竞速", "效率", "在40行内发动更多攻击!"},
|
||||
['zen']= {"禅宗", "200", "没有时间限制的200线跑步"},
|
||||
['ultra']= {"Ultra", "额外", "2分钟的得分进攻"},
|
||||
['infinite']= {"无限", "", "这只是一个沙箱"},
|
||||
['infinite_dig']= {"无限:挖掘", "", "挖,挖,挖"},
|
||||
['marathon_inf']= {"马拉松", "无尽", "无尽马拉松"},
|
||||
['sprint_10l']= {"冲刺", "10升", "清除10行!"},
|
||||
['sprint_20l']= {"冲刺", "20升", "清除20行!"},
|
||||
['sprint_40l']= {"冲刺", "40升", "清除40行!"},
|
||||
['sprint_100l']= {"冲刺", "100升", "清除100行!"},
|
||||
['sprint_400l']= {"冲刺", "400升", "清除400行!"},
|
||||
['sprint_1000l']= {"冲刺", "1000升", "清除1000行!"},
|
||||
['sprintPenta']= {"冲刺", "五联骨牌", "40升,配18个五分钟"},
|
||||
['sprintMPH']= {"冲刺", "每小时英里数", "无记忆\n无先前\n无记忆"},
|
||||
['dig_10l']= {"挖掘", "10升", "挖10条垃圾线"},
|
||||
['dig_40l']= {"挖掘", "40升", "挖40条垃圾线"},
|
||||
['dig_100l']= {"挖掘", "100升", "挖100条垃圾线"},
|
||||
['dig_400l']= {"挖掘", "400升", "挖400条垃圾线"},
|
||||
['drought_n']= {"干旱", "100升", "没有工装"},
|
||||
['drought_l']= {"干旱+", "100升", "搞什么呀"},
|
||||
['marathon_n']= {"马拉松赛跑", "正常", "200线加速马拉松"},
|
||||
['marathon_h']= {"马拉松赛跑", "硬的", "200线高速马拉松"},
|
||||
['solo_e']= {"战争", "容易", "打败AI!"},
|
||||
['solo_n']= {"战争", "正常", "打败AI!"},
|
||||
['solo_h']= {"战争", "硬的", "打败AI!"},
|
||||
['solo_l']= {"战争", "疯子", "打败AI!"},
|
||||
['solo_u']= {"战争", "终极", "打败AI!"},
|
||||
['techmino49_e']= {"技术49", "容易", "49人战斗\n最后一个站着的人获胜"},
|
||||
['techmino49_h']= {"技术49", "硬的", "49人战斗\n最后一个站着的人获胜"},
|
||||
['techmino49_u']= {"技术49", "终极", "49人战斗\n最后一个站着的人获胜"},
|
||||
['techmino99_e']= {"科技99", "容易", "99人战斗\n最后一个站着的人获胜"},
|
||||
['techmino99_h']= {"科技99", "硬的", "99人战斗\n最后一个站着的人获胜"},
|
||||
['techmino99_u']= {"科技99", "终极", "99人战斗\n最后一个站着的人获胜"},
|
||||
['round_e']= {"回合制", "容易", "轮流玩AI!"},
|
||||
['round_n']= {"回合制", "正常", "轮流玩AI!"},
|
||||
['round_h']= {"回合制", "硬的", "轮流玩AI!"},
|
||||
['round_l']= {"回合制", "疯子", "轮流玩AI!"},
|
||||
['round_u']= {"回合制", "终极", "轮流玩AI!"},
|
||||
['master_n']= {"主人", "正常", "适合20G初学者"},
|
||||
['master_h']= {"主人", "硬的", "20克的职业选手"},
|
||||
['master_m']= {"主人", "M21", "20克大师赛"},
|
||||
['master_final']= {"主人", "最终", "20G及以上"},
|
||||
['master_ph']= {"主人", "幻觉", "???"},
|
||||
['master_ex']= {"大师", "额外的", "比瞬间还短的永恒"},
|
||||
['strategy_e']= {"策略堆叠", "简单", "20G堆叠中速决策练习"},
|
||||
['strategy_h']= {"策略堆叠", "困难", "20G堆叠快速决策练习"},
|
||||
['strategy_u']= {"策略堆叠", "极限", "20G堆叠极速决策练习"},
|
||||
['strategy_e_plus']={"策略堆叠", "简单", "20G堆叠中速决策练习"},
|
||||
['strategy_h_plus']={"策略堆叠", "困难", "20G堆叠快速决策练习"},
|
||||
['strategy_u_plus']={"策略堆叠", "极限", "20G堆叠极速决策练习"},
|
||||
['blind_e']= {"看不见的", "一半", "对于新手来说"},
|
||||
['blind_n']= {"看不见的", "全部", "对于中间产品"},
|
||||
['blind_h']= {"看不见的", "突然", "对于有经验的人"},
|
||||
['blind_l']= {"看不见的", "突然+", "对于专业人士"},
|
||||
['blind_u']= {"看不见的", "?", "你准备好了吗?"},
|
||||
['blind_wtf']= {"看不见的", "世界跆拳道联盟", "你还没准备好"},
|
||||
['classic_e']= {"经典", "容易", "80年代的低速娱乐"},
|
||||
['classic_h']= {"经典", "困难", "80年代的中速娱乐"},
|
||||
['classic_u']= {"经典", "终极", "80年代的高速娱乐"},
|
||||
['survivor_e']= {"幸存者", "容易", "你能活多久?"},
|
||||
['survivor_n']= {"幸存者", "正常", "你能活多久?"},
|
||||
['survivor_h']= {"幸存者", "硬的", "你能活多久?"},
|
||||
['survivor_l']= {"幸存者", "疯子", "你能活多久?"},
|
||||
['survivor_u']= {"幸存者", "终极", "你能活多久?"},
|
||||
['attacker_h']= {"攻击者", "硬的", "练习你的进攻技巧!"},
|
||||
['attacker_u']= {"攻击者", "终极", "练习你的进攻技巧!"},
|
||||
['defender_n']= {"防守者", "正常", "练习你的防守技巧!"},
|
||||
['defender_l']= {"防守者", "疯子", "练习你的防守技巧!"},
|
||||
['dig_h']= {"钻机", "硬的", "挖掘练习!"},
|
||||
['dig_u']= {"钻机", "终极", "挖掘练习!"},
|
||||
['clearRush']= {"清晰的冲", "普通", "所有旋转教程\n[在建]"},
|
||||
['c4wtrain_n']= {"C4W训练", "正常", "无限组合"},
|
||||
['c4wtrain_l']= {"C4W训练", "疯子", "无限组合"},
|
||||
['pctrain_n']= {"电脑培训", "正常", "完美清晰的实践"},
|
||||
['pctrain_l']= {"电脑培训", "疯子", "更难的完美清晰的练习"},
|
||||
['pc_n']= {"电脑挑战", "正常", "让电脑在100线以内!"},
|
||||
['pc_h']= {"电脑挑战", "硬的", "让电脑在100线以内!"},
|
||||
['pc_l']= {"电脑挑战", "疯子", "让电脑在100线以内!"},
|
||||
['pc_inf']= {"无尽个人电脑挑战", "", "尽可能多地获取个人电脑"},
|
||||
['tech_n']= {"技术人员", "正常", "试着保持背靠背的链条!"},
|
||||
['tech_n_plus']= {"技术人员", "正常+", "仅限旋转和个人电脑"},
|
||||
['tech_h']= {"技术人员", "硬的", "试着保持背靠背的链条!"},
|
||||
['tech_h_plus']= {"技术人员", "硬的+", "仅限旋转和个人电脑"},
|
||||
['tech_l']= {"技术人员", "疯子", "试着保持背靠背的链条!"},
|
||||
['tech_l_plus']= {"技术人员", "疯子+", "仅限旋转和个人电脑"},
|
||||
['tech_finesse']= {"技术人员", "手腕", "没有技巧错误!"},
|
||||
['tech_finesse_f']= {"技术人员", "技巧+", "没有正常的清除和技巧错误!"},
|
||||
['tsd_e']= {"热关断挑战赛", "容易", "只有T-Spin双打!"},
|
||||
['tsd_h']= {"热关断挑战赛", "硬的", "只有T-Spin双打!"},
|
||||
['tsd_u']= {"热关断挑战赛", "终极", "只有T-Spin双打!"},
|
||||
['backfire_n']= {"适得其反", "正常", "挡住回火的垃圾管道"},
|
||||
['backfire_h']= {"适得其反", "硬的", "挡住回火的垃圾管道"},
|
||||
['backfire_l']= {"适得其反", "疯子", "挡住回火的垃圾管道"},
|
||||
['backfire_u']= {"适得其反", "终极", "挡住回火的垃圾管道"},
|
||||
['sprintAtk']= {"冲刺", "100次攻击", "发送100行!"},
|
||||
['sprintEff']= {"竞速", "效率", "在40行内发动更多攻击!"},
|
||||
['zen']= {"禅宗", "200", "没有时间限制的200线跑步"},
|
||||
['ultra']= {"Ultra", "额外", "2分钟的得分进攻"},
|
||||
['infinite']= {"无限", "", "这只是一个沙箱"},
|
||||
['infinite_dig']= {"无限:挖掘", "", "挖,挖,挖"},
|
||||
['marathon_inf']= {"马拉松", "无尽", "无尽马拉松"},
|
||||
|
||||
['custom_clear']= {"习俗", "正常"},
|
||||
['custom_puzzle']= {"习俗", "令人费解的"},
|
||||
['custom_clear']= {"习俗", "正常"},
|
||||
['custom_puzzle']= {"习俗", "令人费解的"},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -206,8 +206,8 @@ return{
|
||||
"僅透過內測QQ群/discord伺服器進行免費下載/更新",
|
||||
"從其他渠道獲得遊戲皆有被修改/加入廣告/植入病毒的風險,程序只申請了振動&網路權限!",
|
||||
"若由於被修改的本遊戲產生的各種損失作者概不負責(我怎麼負責啊跟我有什麼關係)",
|
||||
FNSF and"/"or"請從正規途徑獲得最新版,遊戲現為免費,不過有讚賞當然感謝啦~ 記得備註用戶名,方便記錄!",
|
||||
FNSF and"/"or"如果你不使用微信或支付寶,你可以前往我們的P\97\116\114\101\111\110頁面來贊助我們!"
|
||||
FNNS and"/"or"請從正規途徑獲得最新版,遊戲現為免費,不過有打賞當然感謝啦~",
|
||||
FNNS and"/"or"更多資訊見小z詞典"
|
||||
},
|
||||
staff={
|
||||
"作者:MrZ 電郵:1046101471@qq.com",
|
||||
@@ -218,7 +218,7 @@ return{
|
||||
"音樂: MrZ,柒栎流星,ERM,Trebor,C₂₉H₂₅N₃O₅,[T0722,Aether]",
|
||||
"音效/語音: Miya,Xiaoya,Mono,MrZ,Trebor",
|
||||
"演出: 模电,HBM",
|
||||
"翻譯: User670,MattMayuga,Mizu,Mr.Faq,ScF,C₂₉H₂₅N₃O₅",
|
||||
"翻譯: User670,MattMayuga,Mizu,Mr.Faq,ScF,C₂₉H₂₅N₃O₅, NOT_A_ROBOT",
|
||||
"",
|
||||
"特別感謝:",
|
||||
"Flyz,Big_True,NOT_A_ROBOT,思竣,yuhao7370",
|
||||
@@ -715,6 +715,9 @@ return{
|
||||
['strategy_e']= {"策略堆疊", "簡單", "20G堆疊中速決策練習"},
|
||||
['strategy_h']= {"策略堆疊", "困難", "20G堆疊快速決策練習"},
|
||||
['strategy_u']= {"策略堆疊", "極限", "20G堆疊極速決策練習"},
|
||||
['strategy_e_plus']={"策略堆疊", "簡單+", "20G堆疊中速決策練習"},
|
||||
['strategy_h_plus']={"策略堆疊", "困難+", "20G堆疊快速決策練習"},
|
||||
['strategy_u_plus']={"策略堆疊", "極限+", "20G堆疊極速決策練習"},
|
||||
['blind_e']= {"隱形", "半隱", "不強大腦"},
|
||||
['blind_n']= {"隱形", "全隱", "挺強大腦"},
|
||||
['blind_h']= {"隱形", "瞬隱", "很強大腦"},
|
||||
|
||||
@@ -4,7 +4,7 @@ return{
|
||||
mindas=7,minarr=1,minsdarr=1,
|
||||
sequence="bagES",
|
||||
hook_drop=require'parts.eventsets.bigWallGen'.hook_drop,
|
||||
eventSet='big_h',
|
||||
eventSet='big_h',
|
||||
bg='cubes',bgm='push',
|
||||
},
|
||||
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
|
||||
|
||||
@@ -4,7 +4,7 @@ return{
|
||||
mindas=7,minarr=1,minsdarr=1,
|
||||
sequence="bagES",
|
||||
hook_drop=require'parts.eventsets.bigWallGen'.hook_drop,
|
||||
eventSet='big_n',
|
||||
eventSet='big_n',
|
||||
bg='bg2',bgm='push',
|
||||
},
|
||||
score=function(P)return{math.min(P.modeData.maxCombo,100),P.stat.time}end,
|
||||
|
||||
21
parts/modes/strategy_e_plus.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
return{
|
||||
env={
|
||||
sequence="bagES",
|
||||
eventSet='strategy_e_plus',
|
||||
bg='bg2',bgm='push',
|
||||
},
|
||||
slowMark=true,
|
||||
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)
|
||||
local L=P.stat.row
|
||||
return
|
||||
L>=200 and 5 or
|
||||
L>=170 and 4 or
|
||||
L>=150 and 3 or
|
||||
L>=120 and 2 or
|
||||
L>=60 and 1 or
|
||||
L>=26 and 0
|
||||
end,
|
||||
}
|
||||
21
parts/modes/strategy_h_plus.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
return{
|
||||
env={
|
||||
sequence="bagES",
|
||||
eventSet='strategy_h_plus',
|
||||
bg='bg2',bgm='secret8th',
|
||||
},
|
||||
slowMark=true,
|
||||
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)
|
||||
local L=P.stat.row
|
||||
return
|
||||
L>=200 and 5 or
|
||||
L>=160 and 4 or
|
||||
L>=120 and 3 or
|
||||
L>=70 and 2 or
|
||||
L>=40 and 1 or
|
||||
L>=16 and 0
|
||||
end,
|
||||
}
|
||||
21
parts/modes/strategy_u_plus.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
return{
|
||||
env={
|
||||
sequence="bagES",
|
||||
eventSet='strategy_u_plus',
|
||||
bg='bg2',bgm='secret7th',
|
||||
},
|
||||
slowMark=true,
|
||||
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)
|
||||
local L=P.stat.row
|
||||
return
|
||||
L>=200 and 5 or
|
||||
L>=150 and 4 or
|
||||
L>=80 and 3 or
|
||||
L>=40 and 2 or
|
||||
L>=20 and 1 or
|
||||
L>=10 and 0
|
||||
end,
|
||||
}
|
||||
@@ -28,38 +28,22 @@ function scene.draw()
|
||||
setFont(20)
|
||||
gc.setColor(COLOR.Z)
|
||||
for i=1,#text.aboutTexts do
|
||||
gc.printf(text.aboutTexts[i],150,35*i+50,1000,'center')
|
||||
gc.print(text.aboutTexts[i],62,35*i)
|
||||
end
|
||||
|
||||
--Lib used
|
||||
setFont(15)
|
||||
gc.print(text.used,50,325)
|
||||
gc.print(text.used,495,462)--❤Flandre❤
|
||||
|
||||
--Logo
|
||||
local t=TIME()
|
||||
gc.draw(TEXTURE.title,280,610,.1,.4+.03*sin(t*2.6),nil,580,118)
|
||||
gc.setLineWidth(3)
|
||||
|
||||
if SYSTEM~='iOS'then
|
||||
--QR Code frame
|
||||
gc.rectangle('line',18,18,263,263)
|
||||
gc.rectangle('line',1012,18,250,250)
|
||||
|
||||
--Support text
|
||||
gc.setColor(1,1,1,sin(t*20)*.3+.6)
|
||||
setFont(30)
|
||||
mStr(text.support,150+sin(t*4)*20,283)
|
||||
mStr(text.support,1138-sin(t*4)*20,270)
|
||||
end
|
||||
gc.draw(TEXTURE.title,280,610,.1,.4+.03*sin(TIME()*2.6),nil,580,118)
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newImage{name='pay1', x=20, y=20,hide=SYSTEM=='iOS'},
|
||||
WIDGET.newImage{name='pay2', x=1014,y=20,hide=SYSTEM=='iOS'},
|
||||
WIDGET.newButton{name='staff', x=1140,y=380,w=220,h=80,font=35,code=goScene'staff'},
|
||||
WIDGET.newButton{name='his', x=1140,y=480,w=220,h=80,font=35,code=goScene'history'},
|
||||
WIDGET.newButton{name='legals', x=1140,y=580,w=220,h=80,font=35,code=goScene'legals'},
|
||||
WIDGET.newButton{name='back', x=640, y=600,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='staff', x=1140,y=340,w=200,h=80,font=35,code=goScene'staff'},
|
||||
WIDGET.newButton{name='his', x=1140,y=440,w=200,h=80,font=35,code=goScene'history'},
|
||||
WIDGET.newButton{name='legals', x=1140,y=540,w=200,h=80,font=35,code=goScene'legals'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -8,7 +8,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title',x=80,y=50,font=70,align='L'},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -315,7 +315,7 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='slide', x=240, y=420,lim=200,font=40,disp=function()return slide end, code=pressKey'e',hideF=ifGaming},
|
||||
WIDGET.newSwitch{name='pathVis',x=240, y=510,lim=200,font=40,disp=function()return pathVis end,code=pressKey'r',hideF=function()return state==1 or not slide end},
|
||||
WIDGET.newSwitch{name='revKB', x=240, y=600,lim=200,font=40,disp=function()return revKB end, code=pressKey't',hideF=ifGaming},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -493,7 +493,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='record2', x=1100,y=450,w=220,h=50,fText="", color='H',code=pressKey'2', hideF=function()return state==2 end},
|
||||
WIDGET.newKey{name='replay1', x=1245,y=390,w=50,fText="!", color='G',code=pressKey'c1', hideF=function()return state==2 or #repeater.seq[1]==0 end},
|
||||
WIDGET.newKey{name='replay2', x=1245,y=450,w=50,fText="!", color='G',code=pressKey'c2', hideF=function()return state==2 or #repeater.seq[2]==0 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -119,7 +119,7 @@ scene.widgetList={
|
||||
WIDGET.newSelector{name='level', x=640,y=640,w=200,list={'A_Z','Z_A','Tech1','Tech2','KeyTest1','KeyTest2','Hello','Roll1','Roll2','Roll3','ZZZ','ZXZX','ZMZM','Stair','Stair2','Stair3','BPW'},disp=function()return levelName end,code=function(i)levelName=i;targetString=levels[i]end,hideF=function()return state>0 end},
|
||||
WIDGET.newButton{name='reset', x=160,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'space'},
|
||||
WIDGET.newButton{name='keyboard',x=160,y=210,w=180,h=100,code=function()love.keyboard.setTextInput(true,0,select(2,SCR.xOy:transformPoint(0,500)),1,1)end,hide=not MOBILE},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -232,7 +232,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=1140,y=540,w=170,h=80,font=50,fText=CHAR.icon.retry_spin,color='lG',code=restart},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -165,7 +165,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='/',x=445,y=600,w=90,sound=false,fText="/",color='lB',font=50,code=pressKey'/'},
|
||||
WIDGET.newKey{name='<',x=545,y=300,w=90,sound=false,fText=CHAR.key.backspace,color='lR',font=50,code=pressKey'backspace'},
|
||||
WIDGET.newKey{name='=',x=545,y=400,w=90,sound=false,fText="=",color='lY',font=50,code=pressKey'return'},
|
||||
WIDGET.newKey{name='back',x=1135,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=1135,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -127,7 +127,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -526,6 +526,25 @@ local commands={}do
|
||||
"Usage: test",
|
||||
},
|
||||
}
|
||||
commands.support={
|
||||
code=function(arg)
|
||||
if FNNS then
|
||||
if arg:find"pl"and arg:find"fk"then
|
||||
SCN.go('support','none')
|
||||
else
|
||||
love.system.openURL("https://www.bilibili.com/video/BV1GJ411x7h7?secretcode=fkpl")
|
||||
end
|
||||
else
|
||||
SCN.go('support','none')
|
||||
end
|
||||
end,
|
||||
description="Enter support scene",
|
||||
details={
|
||||
"Go to an support scene",
|
||||
"",
|
||||
"Usage: support",
|
||||
},
|
||||
}
|
||||
do--app
|
||||
local APPs={
|
||||
{
|
||||
|
||||
@@ -318,7 +318,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='back',x=1140,y=80,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=1140,y=80,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -236,7 +236,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='back',x=1140,y=60,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=60,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -383,7 +383,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=155,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
|
||||
modeSelector,bgmSelector,colorSelector,
|
||||
arcadeSwitch,
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -48,6 +48,6 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
|
||||
@@ -165,7 +165,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='back',x=1140,y=60,w=170,h=80,color='D',font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='back',x=1140,y=60,w=170,h=80,color='D',sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -175,7 +175,7 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='invis', x=240,y=330,lim=200,font=40,disp=function()return invis end, code=pressKey'q',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='disappear',x=240,y=420,lim=200,font=40,disp=function()return disappear end,code=pressKey'w',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='tapFX', x=240,y=510,lim=200,font=40,disp=function()return tapFX end, code=pressKey'e',hideF=function()return state==1 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -43,6 +43,6 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name="spin", x=1140,y=360,w=120,font=60,fText=CHAR.icon.retry_spin,code=pressKey'space'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
|
||||
@@ -72,7 +72,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='tap',x=640,y=540,w=626,h=260,sound='touch',fText="TAP",color='Z',font=100,code=function(i)love.keypressed('b'..i)end},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -308,7 +308,7 @@ scene.widgetList={
|
||||
WIDGET.newSwitch{name='next', x=240,y=235,lim=200,font=40,disp=function()return nexts end,code=pressKey'q',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='invis',x=240,y=305,lim=200,font=40,disp=function()return invis end,code=pressKey'w',hideF=function()return state==1 end},
|
||||
WIDGET.newSwitch{name='fast', x=240,y=375,lim=200,font=30,disp=function()return fast end,code=pressKey'e',hideF=function()return state==1 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -39,6 +39,7 @@ local textColor={
|
||||
{.08, .80, .34},
|
||||
}
|
||||
local tileTexts=setmetatable({
|
||||
[-2]="B",
|
||||
[-1]="×",
|
||||
},{__index=function(self,k)self[k]=k return k end})
|
||||
|
||||
@@ -172,7 +173,7 @@ function player:click(y,x)
|
||||
|
||||
local getScore=4^cur*count
|
||||
self.score=self.score+getScore
|
||||
TEXT.show(getScore,player.x+self.selectX*100-50,player.y+self.selectY*100-50,40,'score')
|
||||
TEXT.show(getScore,player.x+self.selectX*100-50,player.y+self.selectY*100-50,40,'score',1.626/math.log(getScore,3))
|
||||
for i=1,#self.mergedTiles do
|
||||
newMergeFX(self.mergedTiles[i][1],self.mergedTiles[i][2],cur+1)
|
||||
end
|
||||
@@ -268,12 +269,15 @@ function scene.sceneInit()
|
||||
BGM.play('truth')
|
||||
end
|
||||
|
||||
function scene.mouseDown(x,y)
|
||||
function scene.mouseClick(x,y)
|
||||
x,y=int((x-player.x)/100)+1,int((y-player.y)/100)+1
|
||||
if x>=1 and x<=6 and y>=1 and y<=6 then
|
||||
player:click(y,x)
|
||||
end
|
||||
end
|
||||
function scene.touchClick(x,y)
|
||||
scene.mouseClick(x,y)
|
||||
end
|
||||
function scene.keyDown(key,isRep)
|
||||
if isRep then return end
|
||||
if key=='up'or key=='down'or key=='left'or key=='right'then
|
||||
@@ -286,7 +290,7 @@ function scene.keyDown(key,isRep)
|
||||
elseif key=='right'then player.selectX=math.min(player.selectX+1,6)
|
||||
end
|
||||
end
|
||||
elseif key=='z'or key=='space'then
|
||||
elseif key=='x'or key=='space'then
|
||||
if not player.selectX then
|
||||
player.selectX,player.selectY=3,3
|
||||
else
|
||||
@@ -294,7 +298,9 @@ function scene.keyDown(key,isRep)
|
||||
player:click(player.selectY,player.selectX)
|
||||
player.selectY,player.selectX=y,x
|
||||
end
|
||||
elseif key=='x'then
|
||||
elseif key=='w'then
|
||||
love.mousepressed(love.mouse.getPosition())
|
||||
elseif key=='z'or key=='q'then
|
||||
player:click(1,1)
|
||||
elseif key=='r'then
|
||||
if player.state~=1 or tryReset()then
|
||||
@@ -345,6 +351,6 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='reset',x=160,y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
|
||||
@@ -173,7 +173,7 @@ end
|
||||
|
||||
scene.widgetScrollHeight=450
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=520,y=15,font=70,align='R'},
|
||||
WIDGET.newText{name='title', x=40,y=15,lim=900,font=70,align='L'},
|
||||
|
||||
WIDGET.newKey{name='reset', x=1110,y=90,w=230,h=90,color='R',code=pressKey'delete'},
|
||||
WIDGET.newKey{name='mod', x=1110,y=200,w=230,h=90,color='Z',code=pressKey'f1'},
|
||||
@@ -210,7 +210,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='paste', x=1070,y=380,w=310,h=70,color='lB',font=25,code=pressKey'cV'},
|
||||
WIDGET.newButton{name='play_clear', x=1070,y=460,w=310,h=70,color='lY',font=35,code=pressKey'play1'},
|
||||
WIDGET.newButton{name='play_puzzle', x=1070,y=540,w=310,h=70,color='lM',font=35,code=pressKey'play2',hideF=function()return #FIELD[1]==0 end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
|
||||
--Rule set
|
||||
WIDGET.newSelector{name='eventSet', x=1050,y=760,w=340,color='H',list=sList.eventSet,disp=CUSval('eventSet'),code=CUSsto('eventSet')},
|
||||
|
||||
@@ -435,8 +435,8 @@ end
|
||||
|
||||
local function _setPen(i)return function(k)pens[k]=i end end
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=1020,y=5,font=70,align='R'},
|
||||
WIDGET.newText{name='subTitle', x=1030,y=50,font=35,align='L',color='H'},
|
||||
WIDGET.newText{name='title', x=1020,y=5,lim=480,font=70,align='R'},
|
||||
WIDGET.newText{name='subTitle', x=1030,y=50,lim=170,font=35,align='L',color='H'},
|
||||
|
||||
WIDGET.newButton{name='b1', x=580, y=130,w=73,fText="",color='R',code=_setPen(1)},--B1
|
||||
WIDGET.newButton{name='b2', x=660, y=130,w=73,fText="",color='F',code=_setPen(2)},--B2
|
||||
@@ -481,7 +481,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='prevPg', x=100, y=350,w=160,h=110,color='lG',font=20,code=pressKey'pageup',hideF=function()return page==1 end},
|
||||
WIDGET.newButton{name='nextPg', x=100, y=470,w=160,h=110,color='lG',font=20,code=pressKey'pagedown',hideF=function()return page==#FIELD end},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -175,8 +175,8 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=520,y=5,font=70,align='R'},
|
||||
WIDGET.newText{name='subTitle',x=530,y=50,font=35,align='L',color='H'},
|
||||
WIDGET.newText{name='title', x=520,y=5,lim=460,font=70,align='R'},
|
||||
WIDGET.newText{name='subTitle',x=530,y=50,lim=170,font=35,align='L',color='H'},
|
||||
|
||||
WIDGET.newKey{name='_1', x=800,y=540,w=90,font=50,code=pressKey(01)},
|
||||
WIDGET.newKey{name='_2', x=900,y=540,w=90,font=50,code=pressKey(02)},
|
||||
@@ -224,7 +224,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='paste', x=1140,y=540,w=170,h=80,color='lB',font=50,code=pressKey'cV', fText=CHAR.icon.import},
|
||||
WIDGET.newSwitch{name='mission',x=1150,y=340,lim=280,disp=CUSval('missionKill'),code=CUSrev('missionKill')},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -171,8 +171,8 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title',x=520,y=5,font=70,align='R'},
|
||||
WIDGET.newText{name='subTitle',x=530,y=50,font=35,align='L',color='H'},
|
||||
WIDGET.newText{name='title',x=520,y=5,lim=460,font=70,align='R'},
|
||||
WIDGET.newText{name='subTitle',x=530,y=50,lim=170,font=35,align='L',color='H'},
|
||||
|
||||
WIDGET.newSelector{name='sequence',x=1080,y=60,w=200,color='Y',
|
||||
list={'bag','bagES','his','hisPool','c2','rnd','mess','reverb','loop','fixed'},
|
||||
@@ -220,7 +220,7 @@ scene.widgetList={
|
||||
|
||||
WIDGET.newButton{name='copy', x=1140,y=460,w=170,h=80,color='lR',font=50,fText=CHAR.icon.export,code=pressKey'cC',hideF=function()return #BAG==0 end},
|
||||
WIDGET.newButton{name='paste',x=1140,y=550,w=170,h=80,color='lB',font=50,fText=CHAR.icon.import,code=pressKey'cV'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -32,7 +32,7 @@ local typeColor={
|
||||
local function _filter(word_org)
|
||||
local word=word_org
|
||||
word=word:gsub("[Tt]etris",CHAR.zChan.thinking)
|
||||
if FNSF then word=word:gsub("[Pp]\97\116\114\101\111\110",CHAR.zChan.qualified)end
|
||||
if FNNS then word=word:gsub("[Pp]\97\116\114\101\111\110",CHAR.zChan.qualified)end
|
||||
return word,word_org
|
||||
end
|
||||
local function _scanDict(D)
|
||||
@@ -221,7 +221,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='down', x=1120,y=565,w=80,font=50,fText=CHAR.key.down, code=pressKey'down',hide=not MOBILE},
|
||||
WIDGET.newKey{name='pageup', x=1210,y=475,w=80,font=50,fText=CHAR.icon.toUp, code=pressKey'pageup',hide=not MOBILE},
|
||||
WIDGET.newKey{name='pagedown',x=1210,y=565,w=80,font=50,fText=CHAR.icon.toDown,code=pressKey'pagedown',hide=not MOBILE},
|
||||
WIDGET.newButton{name='back', x=1165,y=60,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1165,y=60,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -135,7 +135,7 @@ local function _checkGameKeyDown(key)
|
||||
return true--No key pressed
|
||||
end
|
||||
|
||||
function scene.sceneInit(org)
|
||||
function scene.sceneInit()
|
||||
if GAME.init then
|
||||
resetGameData()
|
||||
GAME.init=false
|
||||
@@ -145,7 +145,7 @@ function scene.sceneInit(org)
|
||||
noKey=replaying
|
||||
noTouch=not SETTING.VKSwitch or replaying
|
||||
|
||||
if org~='depause'and org~='pause'then
|
||||
if SCN.prev~='depause'and SCN.prev~='pause'then
|
||||
trigGameRate,gameRate=0,1
|
||||
elseif not replaying then
|
||||
if GAME.tasUsed then
|
||||
|
||||
@@ -24,7 +24,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=20,fix=true},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -6,23 +6,16 @@ local langList={
|
||||
fr="Français",
|
||||
es=" Español\n(Castellano)",
|
||||
pt="Português",
|
||||
|
||||
id="Bahasa Indonesia",
|
||||
zh_grass="机翻",
|
||||
zh_yygq="就这?",
|
||||
symbol="?????",
|
||||
}
|
||||
local languages={
|
||||
"Language",
|
||||
"语言",
|
||||
"言語",
|
||||
"Langue",
|
||||
"Idioma",
|
||||
"Línguas",
|
||||
"Sprache",
|
||||
"Lingua",
|
||||
"Язык",
|
||||
"Γλώσσα",
|
||||
"언어",
|
||||
"Language Langue Lingua",
|
||||
"语言 言語 언어",
|
||||
"Idioma Línguas Sprache",
|
||||
"Язык Γλώσσα Bahasa",
|
||||
}
|
||||
local curLang=1
|
||||
|
||||
@@ -33,7 +26,7 @@ function scene.sceneBack()
|
||||
end
|
||||
|
||||
function scene.update(dt)
|
||||
curLang=curLang+dt*1.626
|
||||
curLang=curLang+dt*1.26
|
||||
if curLang>=#languages+1 then
|
||||
curLang=1
|
||||
end
|
||||
@@ -57,20 +50,21 @@ local function _setLang(lid)
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{x=271,y=210,w=346,h=100,font=40, fText=langList.en, color='R',code=function()_setLang('en')end},
|
||||
WIDGET.newButton{x=271,y=329,w=346,h=100,font=40, fText=langList.fr, color='F',code=function()_setLang('fr')end},
|
||||
WIDGET.newButton{x=271,y=508,w=346,h=220,font=40, fText=langList.es, color='O',code=function()_setLang('es')end},
|
||||
WIDGET.newButton{x=271,y=210,w=346,h=100,font=40, fText=langList.en, color='R',sound='click',code=function()_setLang('en')end},
|
||||
WIDGET.newButton{x=271,y=329,w=346,h=100,font=40, fText=langList.fr, color='F',sound='click',code=function()_setLang('fr')end},
|
||||
WIDGET.newButton{x=271,y=449,w=346,h=100,font=35, fText=langList.es, color='O',sound='click',code=function()_setLang('es')end},
|
||||
WIDGET.newButton{x=271,y=568,w=346,h=100,font=35, fText=langList.id, color='Y',sound='click',code=function()_setLang('id')end},
|
||||
|
||||
WIDGET.newButton{x=637,y=210,w=346,h=100,font=40, fText=langList.pt, color='G',code=function()_setLang('pt')end},
|
||||
WIDGET.newButton{x=637,y=329,w=346,h=100,font=40, fText=langList.symbol, color='J',code=function()_setLang('symbol')end},
|
||||
WIDGET.newButton{x=637,y=449,w=346,h=100,font=40, fText=langList.zh_yygq, color='L',code=function()_setLang('zh_yygq')end},
|
||||
WIDGET.newButton{x=637,y=568,w=346,h=100,font=40, fText=langList.zh_grass,color='Y',code=function()_setLang('zh_grass')end},
|
||||
WIDGET.newButton{x=637,y=210,w=346,h=100,font=40, fText=langList.pt, color='A',sound='click',code=function()_setLang('pt')end},
|
||||
WIDGET.newButton{x=637,y=329,w=346,h=100,font=40, fText=langList.symbol, color='G',sound='click',code=function()_setLang('symbol')end},
|
||||
WIDGET.newButton{x=637,y=449,w=346,h=100,font=40, fText=langList.zh_yygq, color='J',sound='click',code=function()_setLang('zh_yygq')end},
|
||||
WIDGET.newButton{x=637,y=568,w=346,h=100,font=40, fText=langList.zh_grass,color='L',sound='click',code=function()_setLang('zh_grass')end},
|
||||
|
||||
WIDGET.newButton{x=1003,y=210,w=346,h=100,font=40,fText=langList.zh, color='B',code=function()_setLang('zh')end},
|
||||
WIDGET.newButton{x=1003,y=329,w=346,h=100,font=40,fText=langList.zh_full, color='S',code=function()_setLang('zh_full')end},
|
||||
WIDGET.newButton{x=1003,y=449,w=346,h=100,font=40,fText=langList.zh_trad, color='N',code=function()_setLang('zh_trad')end},
|
||||
WIDGET.newButton{x=1003,y=210,w=346,h=100,font=40,fText=langList.zh, color='C',sound='click',code=function()_setLang('zh')end},
|
||||
WIDGET.newButton{x=1003,y=329,w=346,h=100,font=40,fText=langList.zh_full, color='N',sound='click',code=function()_setLang('zh_full')end},
|
||||
WIDGET.newButton{x=1003,y=449,w=346,h=100,font=40,fText=langList.zh_trad, color='S',sound='click',code=function()_setLang('zh_trad')end},
|
||||
|
||||
WIDGET.newButton{name='back',x=1003,y=568,w=346,h=100,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1003,y=568,w=346,h=100,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -287,7 +287,7 @@ scene.widgetList={
|
||||
WIDGET.newSlider{name='voc', x=1000,y=220,lim=130,w=250,disp=SETval('voc'),code=function(v)SETTING.voc=v VOC.setVol(SETTING.voc)end},
|
||||
WIDGET.newSwitch{name='label',x=1200,y=290,lim=160,disp=function()return showLabel end,code=pressKey'space',},
|
||||
WIDGET.newButton{name='music',x=1140,y=540,w=170,h=80,font=40,code=pressKey'tab'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -28,7 +28,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=15,fix=true},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -37,7 +37,7 @@ scene.widgetList={
|
||||
passwordBox,
|
||||
WIDGET.newSwitch{name='keepPW', x=900, y=420,disp=function()return savePW end,code=function()savePW=not savePW end},
|
||||
WIDGET.newKey{name='login', x=1140,y=540,w=170,h=80,font=40,code=_login},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -30,7 +30,7 @@ end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newTextBox{name='texts',x=30,y=45,w=1000,h=640,font=15,fix=true},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -158,7 +158,7 @@ scene.widgetList={
|
||||
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
|
||||
WIDGET.newText{name='unranked',x=1200,y=60,color='Y',font=50,align='R'},
|
||||
WIDGET.newButton{name='reset', x=1140,y=540,w=170,h=80,font=25,code=pressKey'tab'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -28,9 +28,9 @@ local touchDist
|
||||
|
||||
local scene={}
|
||||
|
||||
function scene.sceneInit(org)
|
||||
function scene.sceneInit()
|
||||
BG.set()
|
||||
mapCam.zoomK=org=='main'and 5 or 1
|
||||
mapCam.zoomK=SCN.prev=='main'and 5 or 1
|
||||
visibleModes={}--1=unlocked, 2=locked but visible
|
||||
for name,M in next,MODES do
|
||||
if RANKS[name]and M.x then
|
||||
@@ -331,7 +331,7 @@ end
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='mod', x=140,y=655,w=220,h=80,font=35,code=goScene'mod'},
|
||||
WIDGET.newButton{name='start',x=1040,y=655,w=180,h=80,font=40,code=pressKey'return',hideF=function()return not mapCam.sel end},
|
||||
WIDGET.newButton{name='back', x=1200,y=655,w=120,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1200,y=655,w=120,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -128,7 +128,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='play', x=200,y=390,w=120,code=pressKey'space',sound=false,font=65,fText=CHAR.icon.play_pause},
|
||||
WIDGET.newButton{name='down', x=200,y=530,w=120,code=pressKey'down',hideF=function()return selected==#bgmList end,font=60,fText=CHAR.key.down},
|
||||
WIDGET.newButton{name='sound',x=1140,y=540,w=170,h=80,font=40,code=pressKey'tab'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -57,7 +57,7 @@ end
|
||||
|
||||
local scene={}
|
||||
|
||||
function scene.sceneInit(org)
|
||||
function scene.sceneInit()
|
||||
textBox.hide=true
|
||||
textBox:clear()
|
||||
inputBox.hide=true
|
||||
@@ -68,7 +68,7 @@ function scene.sceneInit(org)
|
||||
upstreamProgress=1
|
||||
newMessageTimer=0
|
||||
|
||||
if org=='setting_game'then
|
||||
if SCN.prev=='setting_game'then
|
||||
NET.changeConfig()
|
||||
end
|
||||
if GAME.prevBG then
|
||||
|
||||
@@ -17,7 +17,7 @@ end
|
||||
scene.widgetList={
|
||||
WIDGET.newKey{name='setting',x=1200,y=160,w=90,h=90,font=60,fText=CHAR.icon.settings,code=goScene'setting_game'},
|
||||
WIDGET.newKey{name='match',x=640,y=500,w=760,h=140,font=60,code=function()MES.new('warn',text.notFinished)end},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -30,7 +30,7 @@ scene.widgetList={
|
||||
end
|
||||
end
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -86,7 +86,7 @@ scene.widgetList={
|
||||
--Capacity & Create & Back
|
||||
WIDGET.newSelector{name='capacity', x=1070,y=330,w=310,color='lY',list={2,3,4,5,7,10,17,31,49,99},disp=ROOMval('capacity'),code=ROOMsto('capacity')},
|
||||
WIDGET.newButton{name='create', x=1070,y=480,w=310,h=140,color='lN',font=40,code=_createRoom},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
|
||||
--Special rules
|
||||
WIDGET.newSwitch{name='ospin', x=850, y=850, lim=210,disp=ROOMval('ospin'), code=ROOMrev('ospin')},
|
||||
|
||||
@@ -140,7 +140,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='refresh', x=250,y=630,w=140,h=120,code=_fetchRoom,hideF=function()return fetchTimer>7 end},
|
||||
WIDGET.newKey{name='new', x=510,y=630,w=260,h=120,code=goScene'net_newRoom'},
|
||||
WIDGET.newKey{name='join', x=780,y=630,w=140,h=120,code=pressKey'join',hideF=function()return roomList:getLen()==0 or NET.getlock('enterRoom')end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=pressKey'escape'},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -17,15 +17,15 @@ local rank--Current rank
|
||||
local trophy--Current trophy
|
||||
local trophyColor--Current trophy color
|
||||
|
||||
function scene.sceneInit(org)
|
||||
function scene.sceneInit()
|
||||
page=0
|
||||
if org:find("setting")then
|
||||
if SCN.prev:find("setting")then
|
||||
TEXT.show(text.needRestart,640,410,50,'fly',.6)
|
||||
end
|
||||
local P1=PLAYERS[1]
|
||||
local S=P1.stat
|
||||
|
||||
timer1=org=='game'and 0 or 50
|
||||
timer1=SCN.prev=='game'and 0 or 50
|
||||
timer2=timer1
|
||||
|
||||
local frameLostRate=(S.frame/S.time/60-1)*100
|
||||
|
||||
@@ -28,7 +28,7 @@ scene.widgetList={
|
||||
WIDGET.newKey{name='register', x=640, y=640,w=300,h=80,font=40,code=_register,hideF=function()return NET.getlock('register')end},
|
||||
WIDGET.newText{name='registering', x=640, y=605,font=50,hideF=function()return not NET.getlock('register')end},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -143,7 +143,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='import',x=350,y=640,w=140,h=80,color='lN',code=pressKey'cV',font=50,fText=CHAR.icon.import},
|
||||
WIDGET.newButton{name='play', x=700,y=640,w=170,h=80,color='lY',code=pressKey'return',font=65,fText=CHAR.icon.play},
|
||||
WIDGET.newButton{name='delete',x=850,y=640,w=80,h=80,color='lR',code=pressKey'delete',font=50,fText=CHAR.icon.trash},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -82,7 +82,7 @@ scene.widgetList={
|
||||
WIDGET.newText{name='notLogin', x=55,y=550,color='dB',align='L',font=30,hideF=function()return WS.status('user')=='running'end},
|
||||
WIDGET.newButton{name='upload', x=190,y=610,w=280,h=90,color='lB',font=25,code=NET.uploadSave,hideF=function()return WS.status('user')~='running'end},
|
||||
WIDGET.newButton{name='download', x=490,y=610,w=280,h=90,color='lB',font=25,code=NET.downloadSave,hideF=function()return WS.status('user')~='running'end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -86,7 +86,7 @@ local function _sliderShow(S)
|
||||
return S.."F "..math.floor(S*16.67).."ms"
|
||||
end
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=80, y=50,font=70,align='L'},
|
||||
WIDGET.newText{name='title', x=100, y=50,lim=500,font=70,align='L'},
|
||||
WIDGET.newText{name='preview', x=520, y=610,font=40,align='R'},
|
||||
|
||||
WIDGET.newSlider{name='das', x=250, y=190,lim=230,w=600,unit=20,disp=SETval('das'), show=_sliderShow,code=SETsto('das')},
|
||||
@@ -105,7 +105,7 @@ scene.widgetList={
|
||||
_.sddas,_.sdarr=0,2
|
||||
_.ihs,_.irs,_.ims=false,false,false
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140, y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140, y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -31,7 +31,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=640,y=15,font=80},
|
||||
WIDGET.newText{name='title', x=640,y=15,lim=630,font=80},
|
||||
|
||||
WIDGET.newButton{name='graphic', x=200, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_video','swipeR')},
|
||||
WIDGET.newButton{name='sound', x=1080, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_sound','swipeL')},
|
||||
@@ -59,7 +59,7 @@ scene.widgetList={
|
||||
end
|
||||
end
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -231,7 +231,7 @@ scene.widgetList={
|
||||
|
||||
WIDGET.newKey{name='restart',x=150,y=670,w=180,h=60,code=function()_setSel(0)end},
|
||||
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -81,7 +81,7 @@ local function _nextDir(i)
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
|
||||
WIDGET.newText{name='title', x=80,y=50,lim=500,font=70,align='L'},
|
||||
|
||||
WIDGET.newSelector{name='skinSet',x=780,y=100,w=320,list=SKIN.getList(),disp=SETval('skinSet'),code=SETsto('skinSet')},
|
||||
WIDGET.newButton{name='prev1', x=130,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(1)end},
|
||||
@@ -123,7 +123,7 @@ scene.widgetList={
|
||||
end
|
||||
SFX.play('hold')
|
||||
end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
playEgg,
|
||||
}
|
||||
|
||||
|
||||
@@ -4,13 +4,12 @@ local sin=math.sin
|
||||
|
||||
local scene={}
|
||||
|
||||
local last--Last touch time
|
||||
local jump--Animation timer(10 to 0)
|
||||
local last1,last2--Last touch/sound time
|
||||
local sfxPack=SETTING.sfxPack
|
||||
local vocPack=SETTING.vocPack
|
||||
|
||||
function scene.sceneInit()
|
||||
last,jump=0,0
|
||||
last1,last2=0,0
|
||||
sfxPack=SETTING.sfxPack
|
||||
vocPack=SETTING.vocPack
|
||||
WIDGET.active.sfxPack:reset()
|
||||
@@ -22,16 +21,15 @@ function scene.sceneBack()
|
||||
end
|
||||
|
||||
function scene.mouseDown(x,y)
|
||||
if x>780 and x<980 and y>470 and y<720 and jump==0 then
|
||||
jump=10
|
||||
local t=TIME()-last
|
||||
if t>1 then
|
||||
if t>2.6 and t<3 and not GAME.playing then
|
||||
loadGame('sprintSmooth',true)
|
||||
else
|
||||
VOC.play((t<1.26 or t>6.26)and'doubt'or'happy')
|
||||
last=TIME()
|
||||
end
|
||||
local t1=TIME()-last1
|
||||
if x>780 and x<980 and y>470 and y<720 and t1>.626 then
|
||||
last1=TIME()
|
||||
local t2=TIME()-last2
|
||||
if t2>2.6 and t2<3 and not GAME.playing then
|
||||
loadGame('sprintSmooth',true)
|
||||
else
|
||||
VOC.play((t2<1.26 or t2>6.26)and'doubt'or'happy')
|
||||
last2=TIME()
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -45,36 +43,43 @@ function scene.keyDown(key)
|
||||
end
|
||||
end
|
||||
|
||||
function scene.update()
|
||||
if jump>0 then
|
||||
jump=jump-1
|
||||
end
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
gc.setColor(1,1,1)
|
||||
local t=TIME()
|
||||
local x,y=800,340+10*sin(t*.5)+(jump-10)*jump*.3
|
||||
gc.translate(x,y)
|
||||
gc.push('transform')
|
||||
if vocPack=="miya"then
|
||||
gc.draw(IMG.miyaCH)
|
||||
gc.setColor(1,1,1,.7)
|
||||
gc.draw(IMG.miyaF1,4,47+4*sin(t*.9))
|
||||
gc.draw(IMG.miyaF2,42,107+5*sin(t))
|
||||
gc.draw(IMG.miyaF3,93,126+3*sin(t*.7))
|
||||
gc.draw(IMG.miyaF4,129,98+3*sin(t*.5))
|
||||
gc.translate(780,340+6*sin(TIME()*.5))
|
||||
gc.draw(IMG.miyaGlow,-4,-4)
|
||||
if TIME()-last1<1 then
|
||||
if TIME()%60>30 then
|
||||
gc.draw(IMG.miyaCH3)
|
||||
else
|
||||
gc.draw(IMG.miyaCH4)
|
||||
end
|
||||
elseif TIME()%2>.126 then
|
||||
gc.draw(IMG.miyaCH1)
|
||||
else
|
||||
gc.draw(IMG.miyaCH2)
|
||||
end
|
||||
gc.translate(0,-6*sin(TIME()*.5))
|
||||
gc.setColor(1,1,1,1-(TIME()-last1))
|
||||
gc.draw(IMG.miyaHeart,162,52,nil,.3)
|
||||
elseif vocPack=="mono"then
|
||||
local jump=math.max(30-(TIME()-last1)*60,0)%10
|
||||
gc.translate(800,340+6*sin(TIME()*.5)+(jump-10)*jump*.3)
|
||||
gc.draw(IMG.monoCH,-30)
|
||||
elseif vocPack=="xiaoya"then
|
||||
gc.draw(IMG.xiaoyaCH,-30)
|
||||
gc.translate(770,340+4*sin(TIME()*.5))
|
||||
gc.draw(IMG.xiaoyaCH)
|
||||
gc.draw(IMG.xiaoyaOmino,16,168,26/(1+TIME()-last1),.36,.36,33,37)
|
||||
elseif vocPack=="miku"then
|
||||
gc.translate(800,340+12*sin(TIME()*.5))
|
||||
gc.draw(IMG.mikuCH,-30)
|
||||
end
|
||||
gc.translate(-x,-y)
|
||||
gc.pop()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=640, y=15,font=80},
|
||||
WIDGET.newText{name='title', x=640, y=15,lim=630,font=80},
|
||||
|
||||
WIDGET.newButton{name='game', x=200, y=80,w=240,h=80,color='lC',font=35,code=swapScene('setting_game','swipeR')},
|
||||
WIDGET.newButton{name='graphic', x=1080,y=80,w=240,h=80,color='lC',font=35,code=swapScene('setting_video','swipeL')},
|
||||
@@ -95,7 +100,7 @@ scene.widgetList={
|
||||
WIDGET.newButton{name='apply', x=1100,y=400,w=180,h=60,code=function()SETTING.sfxPack=sfxPack SFX.load('media/effect/'..sfxPack..'/')end,hideF=function()return SETTING.sfxPack==sfxPack end},
|
||||
WIDGET.newSelector{name='vocPack',x=1100,y=470,w=200,color='lV',list=VOCPACKS,disp=function()return vocPack end,code=function(i)vocPack=i end},
|
||||
WIDGET.newButton{name='apply', x=1100,y=540,w=180,h=60,code=function()SETTING.vocPack=vocPack VOC.load('media/vocal/'..vocPack..'/')end,hideF=function()return SETTING.vocPack==vocPack end},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -115,7 +115,7 @@ scene.widgetList={
|
||||
end},
|
||||
WIDGET.newSelector{name='snap', x=750,y=90,w=200,h=80,color='Y',list={1,10,20,40,60,80},disp=function()return snapUnit end,code=function(i)snapUnit=i end},
|
||||
WIDGET.newButton{name='option', x=530,y=190,w=200,h=80,font=60,fText=CHAR.icon.menu,code=function()SCN.go('setting_touchSwitch')end},
|
||||
WIDGET.newButton{name='back', x=750,y=190,w=200,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=750,y=190,w=200,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newKey{name='save1', x=475,y=290,w=90,h=70,code=_save1,font=45,fText=CHAR.icon.saveOne},
|
||||
WIDGET.newKey{name='load1', x=585,y=290,w=90,h=70,code=_load1,font=45,fText=CHAR.icon.loadOne},
|
||||
WIDGET.newKey{name='save2', x=695,y=290,w=90,h=70,code=_save2,font=45,fText=CHAR.icon.saveTwo},
|
||||
|
||||
@@ -62,7 +62,7 @@ scene.widgetList={
|
||||
WIDGET.newSlider{name='tchW', x=140, y=860, w=1000, font=35,disp=SETval('VKTchW'),code=function(i)SETTING.VKTchW=i SETTING.VKCurW=math.max(SETTING.VKCurW,i)end,hideF=_notTrack},
|
||||
WIDGET.newSlider{name='curW', x=140, y=930, w=1000, font=35,disp=SETval('VKCurW'),code=function(i)SETTING.VKCurW=i SETTING.VKTchW=math.min(SETTING.VKTchW,i)end,hideF=_notTrack},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140, y=640, w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -44,7 +44,7 @@ end
|
||||
|
||||
scene.widgetScrollHeight=900
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=640,y=15,font=80},
|
||||
WIDGET.newText{name='title', x=640,y=15,lim=630,font=80},
|
||||
|
||||
WIDGET.newButton{name='sound', x=200,y=80,w=240,h=80,color='lC',font=35,code=swapScene('setting_sound','swipeR')},
|
||||
WIDGET.newButton{name='game', x=1080,y=80,w=240,h=80,color='lC',font=35,code=swapScene('setting_game','swipeL')},
|
||||
@@ -113,7 +113,7 @@ scene.widgetList={
|
||||
code=function(v)SETTING.fieldSatur=v;applyFieldSatur(SETTING.fieldSatur)end
|
||||
},
|
||||
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -95,7 +95,7 @@ function scene.draw()
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -131,7 +131,7 @@ scene.widgetList={
|
||||
end
|
||||
},
|
||||
WIDGET.newButton{name='save',x=820,y=640,w=250,h=80,font=25,code=goScene'savedata'},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newButton{name='back',x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
23
parts/scenes/support.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local gc=love.graphics
|
||||
|
||||
local scene={}
|
||||
|
||||
function scene.draw()
|
||||
--QR Code frame
|
||||
gc.setLineWidth(2)
|
||||
gc.rectangle('line',298,98,263,263)
|
||||
gc.rectangle('line',718,318,250,250)
|
||||
|
||||
--Support text
|
||||
gc.setColor(1,1,1,MATH.sin(TIME()*20)*.3+.6)
|
||||
setFont(30)
|
||||
mStr(text.support,430+MATH.sin(TIME()*4)*20,363)
|
||||
mStr(text.support,844-MATH.sin(TIME()*4)*20,570)
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newImage{name='pay1', x=300,y=100},
|
||||
WIDGET.newImage{name='pay2', x=720,y=320},
|
||||
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
return scene
|
||||
@@ -12,18 +12,24 @@ return[=[
|
||||
更自由的攻击系统; 更多消除方式; 可调场地宽度;
|
||||
task-Z(新AI); 自适应UI; 新联网游戏场景切换逻辑
|
||||
|
||||
0.17.1: 醒来 Wake Up
|
||||
0.17.1: 苏醒 Wake Up
|
||||
新增:
|
||||
--TODO
|
||||
新皮肤:pixel(by C₂₉H₂₅N₃O₅)
|
||||
新语言:Bahasa Indonesia(by NOT_A_ROBOT)
|
||||
改动:
|
||||
修改选择模式音效
|
||||
优化皮肤设置页面交互效果
|
||||
重做关于页面
|
||||
换新miya立绘,给不同立绘添加不同点击动画
|
||||
略微降低master-h模式骨块出现后的难度
|
||||
X块的默认色改为黄色
|
||||
微调全局颜色表
|
||||
修复:
|
||||
自定义场地16号色的方块名位置显示错误
|
||||
登录界面读取本地账号密码数据错误
|
||||
策略堆叠模式评级标准不当
|
||||
云存档/读档的一处小问题
|
||||
部分场景文本重叠问题
|
||||
|
||||
0.17.0: 硬着陆 Hard Landing
|
||||
新增:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
return{
|
||||
["apkCode"]=419,
|
||||
["apkCode"]=420,
|
||||
["code"]=1701,
|
||||
["string"]="V0.17.1",
|
||||
["room"]="ver A-2",
|
||||
["name"]="醒来 Wake Up",
|
||||
["name"]="苏醒 Wake Up",
|
||||
}
|
||||
|
||||