Compare commits
13 Commits
v0.17.0
...
pre0.17.1-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29a049fe4e | ||
|
|
b5a9c8e1bb | ||
|
|
bb9a35c161 | ||
|
|
b25a345b42 | ||
|
|
b22b0e0194 | ||
|
|
55cf95f218 | ||
|
|
225ddbcfac | ||
|
|
9377090c7c | ||
|
|
ed002ec2e1 | ||
|
|
e33036d9ec | ||
|
|
ef03e7c009 | ||
|
|
aef4220ac0 | ||
|
|
46223e38cd |
@@ -6,7 +6,14 @@ function FILE.load(name,args)
|
|||||||
local F=fs.newFile(name)
|
local F=fs.newFile(name)
|
||||||
assert(F:open'r','open error')
|
assert(F:open'r','open error')
|
||||||
local s=F:read()F:close()
|
local s=F:read()F:close()
|
||||||
if args:sArg'-luaon'or args==''and s:sub(1,6)=='return{'then
|
local mode=
|
||||||
|
args:sArg'-luaon'and'luaon'or
|
||||||
|
args:sArg'-json'and'json'or
|
||||||
|
args:sArg'-string'and'string'or
|
||||||
|
s:sub(1,6)=='return{'and'luaon'or
|
||||||
|
(s:sub(1,1)=='['and s:sub(-1)==']'or s:sub(1,1)=='{'and s:sub(-1)=='}')and'json'or
|
||||||
|
'string'
|
||||||
|
if mode=='luaon'then
|
||||||
local func=loadstring(s)
|
local func=loadstring(s)
|
||||||
if func then
|
if func then
|
||||||
setfenv(func,{})
|
setfenv(func,{})
|
||||||
@@ -15,13 +22,13 @@ function FILE.load(name,args)
|
|||||||
else
|
else
|
||||||
error('decode error')
|
error('decode error')
|
||||||
end
|
end
|
||||||
elseif args:sArg'-json'or args==''and s:sub(1,1)=='['and s:sub(-1)==']'or s:sub(1,1)=='{'and s:sub(-1)=='}'then
|
elseif mode=='json'then
|
||||||
local res=JSON.decode(s)
|
local res=JSON.decode(s)
|
||||||
if res then
|
if res then
|
||||||
return res
|
return res
|
||||||
end
|
end
|
||||||
error('decode error')
|
error('decode error')
|
||||||
elseif args:sArg'-string'or args==''then
|
elseif mode=='string'then
|
||||||
return s
|
return s
|
||||||
else
|
else
|
||||||
error('unknown mode')
|
error('unknown mode')
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ function love.joystickremoved(JS)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.gamepadaxis(JS,axis,val)
|
function love.gamepadaxis(JS,axis,val)
|
||||||
if JS==jsState[1]._jsObj then
|
if jsState[1]and JS==jsState[1]._jsObj then
|
||||||
local js=jsState[1]
|
local js=jsState[1]
|
||||||
if axis=='leftx'or axis=='lefty'or axis=='rightx'or axis=='righty'then
|
if axis=='leftx'or axis=='lefty'or axis=='rightx'or axis=='righty'then
|
||||||
local newVal=--range: [0,1]
|
local newVal=--range: [0,1]
|
||||||
|
|||||||
@@ -169,6 +169,25 @@ function STRING.vcsDecrypt(text,key)
|
|||||||
end
|
end
|
||||||
return result..buffer
|
return result..buffer
|
||||||
end
|
end
|
||||||
|
function STRING.digezt(text)--Not powerful hash, just protect the original text
|
||||||
|
local out={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
|
||||||
|
local seed=26
|
||||||
|
for i=1,#text do
|
||||||
|
local c=byte(text,i)
|
||||||
|
seed=(seed+c)%26
|
||||||
|
c=c+seed
|
||||||
|
local pos=c*i%16
|
||||||
|
local step=(c+i)%4+1
|
||||||
|
local times=2+(c%6)
|
||||||
|
for _=1,times do
|
||||||
|
out[pos+1]=(out[pos+1]+c)%256
|
||||||
|
pos=(pos+step)%16
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local result=""
|
||||||
|
for i=1,16 do result=result..char(out[i])end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
function STRING.readLine(str)
|
function STRING.readLine(str)
|
||||||
local p=str:find("\n")
|
local p=str:find("\n")
|
||||||
|
|||||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
local death_lock={12,11,10,9,8, 7,7,7,7,6}
|
local death_lock={12,11,10,9,8, 8,8,7,7,6}
|
||||||
local death_wait={10,9, 8, 7,6, 6,6,5,5,4}
|
local death_wait={10,9, 8, 7,6, 7,6,6,5,5}
|
||||||
local death_fall={10,9, 8, 7,6, 6,5,5,4,4}
|
local death_fall={10,9, 8, 7,6, 7,6,5,5,5}
|
||||||
|
|
||||||
return{
|
return{
|
||||||
drop=0,
|
drop=0,
|
||||||
|
|||||||
@@ -5,15 +5,22 @@ local setFont=setFont
|
|||||||
local PLAYERS,PLY_ALIVE=PLAYERS,PLY_ALIVE
|
local PLAYERS,PLY_ALIVE=PLAYERS,PLY_ALIVE
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
layout='royale',
|
||||||
|
fkey1=function(P)
|
||||||
|
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
||||||
|
P.swappingAtkMode=45
|
||||||
|
end,
|
||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
setFont(35)
|
setFont(35)
|
||||||
mStr(#PLY_ALIVE.."/"..#PLAYERS,63,175)
|
mStr(#PLY_ALIVE.."/"..#PLAYERS,63,175)
|
||||||
mStr(P.modeData.ko,80,215)
|
mStr(P.modeData.ko,80,215)
|
||||||
gc_draw(TEXTOBJ.ko,60-TEXTOBJ.ko:getWidth(),222)
|
gc_draw(TEXTOBJ.ko,60-TEXTOBJ.ko:getWidth(),222)
|
||||||
|
|
||||||
setFont(20)
|
setFont(20)
|
||||||
gc_setColor(1,.5,0,.6)
|
gc_setColor(1,.5,0,.6)
|
||||||
gc_print(P.badge,103,227)
|
gc_print(P.badge,103,227)
|
||||||
gc_setColor(.97,.97,.97)
|
gc_setColor(.97,.97,.97)
|
||||||
|
|
||||||
setFont(25)
|
setFont(25)
|
||||||
mStr(text.powerUp[P.strength],63,290)
|
mStr(text.powerUp[P.strength],63,290)
|
||||||
gc_setColor(1,1,1)
|
gc_setColor(1,1,1)
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ do--function loadFile(name,args), function saveFile(data,name,args)
|
|||||||
local text=text or t
|
local text=text or t
|
||||||
local res,mes=pcall(FILE.save,data,name,args)
|
local res,mes=pcall(FILE.save,data,name,args)
|
||||||
if res then
|
if res then
|
||||||
return mes
|
return true
|
||||||
else
|
else
|
||||||
MES.new('error',
|
MES.new('error',
|
||||||
mes:find'duplicate'and
|
mes:find'duplicate'and
|
||||||
@@ -771,7 +771,7 @@ do--function resetGameData(args)
|
|||||||
BGM.play(type(bgm)=='string'and bgm or type(bgm)=='table'and bgm[math.random(#bgm)])
|
BGM.play(type(bgm)=='string'and bgm or type(bgm)=='table'and bgm[math.random(#bgm)])
|
||||||
|
|
||||||
TEXT.clear()
|
TEXT.clear()
|
||||||
if GAME.modeEnv.royaleMode then
|
if GAME.modeEnv.eventset=='royale'then
|
||||||
for i=1,#PLAYERS do
|
for i=1,#PLAYERS do
|
||||||
PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i]))
|
PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i]))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -859,12 +859,12 @@ return{
|
|||||||
"Any input device takes some time for the input to reach the game. This delay can range from a few milliseconds to a few dozen milliseconds.\nIf input delay is too long, the controls can feel uncomfortable.\nThis delay is often due to the performance of the hardware and software used, and often out of your control. Turn on performance mode (or turn off power saving mode) on your device, and turn on gaming mode on your monitor/TV (if you have one), may help reducing input delay.",
|
"Any input device takes some time for the input to reach the game. This delay can range from a few milliseconds to a few dozen milliseconds.\nIf input delay is too long, the controls can feel uncomfortable.\nThis delay is often due to the performance of the hardware and software used, and often out of your control. Turn on performance mode (or turn off power saving mode) on your device, and turn on gaming mode on your monitor/TV (if you have one), may help reducing input delay.",
|
||||||
},
|
},
|
||||||
{"Cold Clear",
|
{"Cold Clear",
|
||||||
"cc coldclear",
|
"cc coldclear ai bot",
|
||||||
"term",
|
"term",
|
||||||
"A Tetris bot. Originally built for Puyo Puyo Tetris, thus can be less powerful on Techmino.",
|
"A Tetris bot. Originally built for Puyo Puyo Tetris, thus can be less powerful on Techmino.",
|
||||||
},
|
},
|
||||||
{"ZZZbot",
|
{"ZZZbot",
|
||||||
"zzzbot",
|
"zzzbot ai bot",
|
||||||
"term",
|
"term",
|
||||||
"A Tetris bot. Built by the Chinese Tetris player 奏之章 (Zou Zhi Zhang) and has decent performance in many games",
|
"A Tetris bot. Built by the Chinese Tetris player 奏之章 (Zou Zhi Zhang) and has decent performance in many games",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -880,17 +880,17 @@ return{
|
|||||||
"一个游戏模式:\nMemoryless,Previewless,Holdless\n纯随机+无next+无hold,一个非常考验玩家反应速度的模式",
|
"一个游戏模式:\nMemoryless,Previewless,Holdless\n纯随机+无next+无hold,一个非常考验玩家反应速度的模式",
|
||||||
},
|
},
|
||||||
{"输入延迟",
|
{"输入延迟",
|
||||||
"输入延迟 input delay",
|
"输入延迟 input delay yanchi",
|
||||||
"term",
|
"term",
|
||||||
"用任何设备玩任何游戏时,所有的操作(按键盘,点鼠标等)都会晚一点点(很短,几毫秒到几十毫秒)才到达游戏,如果过长就会很影响游戏手感,作用效果类似于你拿QQ远程控制打fps游戏\nTOP、TE等游戏比较明显\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点",
|
"用任何设备玩任何游戏时,所有的操作(按键盘,点鼠标等)都会晚一点点(很短,几毫秒到几十毫秒)才到达游戏,如果过长就会很影响游戏手感,作用效果类似于你拿QQ远程控制打fps游戏\nTOP、TE等游戏比较明显\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点",
|
||||||
},
|
},
|
||||||
{"Cold Clear",
|
{"Cold Clear",
|
||||||
"cc coldclear",
|
"机器人 电脑 cc coldclear ai bot jiqiren",
|
||||||
"term",
|
"term",
|
||||||
"一个AI的名字(就跟AlphaGo一样)\n本身是为PPT开发,故在本游戏中使用效果欠佳,版本也较旧",
|
"一个AI的名字(就跟AlphaGo一样)\n本身是为PPT开发,故在本游戏中使用效果欠佳,版本也较旧",
|
||||||
},
|
},
|
||||||
{"ZZZbot",
|
{"ZZZbot",
|
||||||
"zzzbot",
|
"机器人 电脑 zzzbot ai bot jiqiren",
|
||||||
"term",
|
"term",
|
||||||
"一个AI的名字(就跟AlphaGo一样)\n由研究群群友奏之章开发,重新调参后在各个游戏平台上的表现都很不错",
|
"一个AI的名字(就跟AlphaGo一样)\n由研究群群友奏之章开发,重新调参后在各个游戏平台上的表现都很不错",
|
||||||
},
|
},
|
||||||
@@ -902,7 +902,7 @@ return{
|
|||||||
"开局定式,定式一般指开局定式这个概念。\n指开局后可以使用的套路摆法。局中情况合适的时候也可以摆出同样的形状,但是和摆法开局一般都不一样。\n\n能称为定式的摆法要尽量满足以下至少2~3条:\n能适应大多数块序\n输出高,尽量不浪费T块\n很多方块无需软降,极简操作数少\n有明确后续,分支尽量少。\n\n注:绝大多数定式基于bag7,序列规律性强才有发明定式的可能。",
|
"开局定式,定式一般指开局定式这个概念。\n指开局后可以使用的套路摆法。局中情况合适的时候也可以摆出同样的形状,但是和摆法开局一般都不一样。\n\n能称为定式的摆法要尽量满足以下至少2~3条:\n能适应大多数块序\n输出高,尽量不浪费T块\n很多方块无需软降,极简操作数少\n有明确后续,分支尽量少。\n\n注:绝大多数定式基于bag7,序列规律性强才有发明定式的可能。",
|
||||||
},
|
},
|
||||||
{"DT炮",
|
{"DT炮",
|
||||||
"dt炮",
|
"dt炮 dt cannon",
|
||||||
"setup",
|
"setup",
|
||||||
"Double-Triple Cannon.\n"..HDwiki,
|
"Double-Triple Cannon.\n"..HDwiki,
|
||||||
HDsearch.."dt",
|
HDsearch.."dt",
|
||||||
@@ -914,7 +914,7 @@ return{
|
|||||||
HDsearch.."dt",
|
HDsearch.."dt",
|
||||||
},
|
},
|
||||||
{"BT炮",
|
{"BT炮",
|
||||||
"bt炮",
|
"bt炮 bt cannon",
|
||||||
"setup",
|
"setup",
|
||||||
"β炮(Beta炮)。\n"..HDwiki,
|
"β炮(Beta炮)。\n"..HDwiki,
|
||||||
HDsearch.."bt_cannon",
|
HDsearch.."bt_cannon",
|
||||||
@@ -932,7 +932,7 @@ return{
|
|||||||
HDsearch.."TKI_3_Perfect_Clear",
|
HDsearch.."TKI_3_Perfect_Clear",
|
||||||
},
|
},
|
||||||
{"QT炮",
|
{"QT炮",
|
||||||
"qt炮",
|
"qt炮 qt cannon",
|
||||||
"setup",
|
"setup",
|
||||||
"QT炮,细节未知。",
|
"QT炮,细节未知。",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -339,7 +339,7 @@ return{
|
|||||||
title="Game Settings",
|
title="Game Settings",
|
||||||
graphic="←Video",
|
graphic="←Video",
|
||||||
sound="Audio→",
|
sound="Audio→",
|
||||||
layout="Layout",
|
-- style="Style",
|
||||||
|
|
||||||
ctrl="Control Settings",
|
ctrl="Control Settings",
|
||||||
key="Key Mappings",
|
key="Key Mappings",
|
||||||
@@ -460,7 +460,7 @@ return{
|
|||||||
},
|
},
|
||||||
setting_skin={
|
setting_skin={
|
||||||
skinSet="Block Skin",
|
skinSet="Block Skin",
|
||||||
title="Layout Settings",
|
title="Style Settings",
|
||||||
skinR="Reset Colors",
|
skinR="Reset Colors",
|
||||||
faceR="Reset Dir.",
|
faceR="Reset Dir.",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ return{
|
|||||||
title="Ajustes del Juego",
|
title="Ajustes del Juego",
|
||||||
graphic="←Video",
|
graphic="←Video",
|
||||||
sound="Sonido→",
|
sound="Sonido→",
|
||||||
layout="Diseño",
|
-- style="Style",
|
||||||
|
|
||||||
ctrl="Sensibilidad",
|
ctrl="Sensibilidad",
|
||||||
key="Teclas",
|
key="Teclas",
|
||||||
|
|||||||
@@ -299,10 +299,9 @@ return{
|
|||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="Paramètres du jeu",
|
title="Paramètres du jeu",
|
||||||
|
|
||||||
graphic="←Vidéo",
|
graphic="←Vidéo",
|
||||||
sound="Son→",
|
sound="Son→",
|
||||||
layout="Disposition",
|
-- style="Style",
|
||||||
|
|
||||||
ctrl="Paramètres de contrôle",
|
ctrl="Paramètres de contrôle",
|
||||||
key="Touches",
|
key="Touches",
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ return{
|
|||||||
title="Config. de jogo",
|
title="Config. de jogo",
|
||||||
graphic="←Video",
|
graphic="←Video",
|
||||||
sound="Som→",
|
sound="Som→",
|
||||||
layout="Layout",
|
-- style="Style",
|
||||||
|
|
||||||
ctrl="Config. controle",
|
ctrl="Config. controle",
|
||||||
key="Map. teclas",
|
key="Map. teclas",
|
||||||
|
|||||||
@@ -228,10 +228,9 @@ return{
|
|||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="%~~%",
|
title="%~~%",
|
||||||
|
|
||||||
graphic="←Video",
|
graphic="←Video",
|
||||||
sound="Sound→",
|
sound="Sound→",
|
||||||
layout="=-=-=",
|
style="=-=-=",
|
||||||
|
|
||||||
ctrl="=?=",
|
ctrl="=?=",
|
||||||
key="=?",
|
key="=?",
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ return{fallback='zh',
|
|||||||
WidgetText={
|
WidgetText={
|
||||||
setting_game={
|
setting_game={
|
||||||
title="改游戏",
|
title="改游戏",
|
||||||
|
|
||||||
graphic="←改画面",
|
graphic="←改画面",
|
||||||
sound="改声音→",
|
sound="改声音→",
|
||||||
|
|
||||||
|
|||||||
@@ -337,9 +337,9 @@ return{
|
|||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="游戏设置",
|
title="游戏设置",
|
||||||
graphic="←画面设置",
|
graphic="←画面",
|
||||||
sound="声音设置→",
|
sound="声音→",
|
||||||
layout="外观",
|
style="风格",
|
||||||
|
|
||||||
ctrl="控制设置",
|
ctrl="控制设置",
|
||||||
key="键位设置",
|
key="键位设置",
|
||||||
@@ -356,8 +356,8 @@ return{
|
|||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
title="画面设置",
|
title="画面设置",
|
||||||
sound="←声音设置",
|
sound="←声音",
|
||||||
game="游戏设置→",
|
game="游戏→",
|
||||||
|
|
||||||
block="方块可见",
|
block="方块可见",
|
||||||
smooth="平滑下落",
|
smooth="平滑下落",
|
||||||
@@ -403,8 +403,8 @@ return{
|
|||||||
},
|
},
|
||||||
setting_sound={
|
setting_sound={
|
||||||
title="声音设置",
|
title="声音设置",
|
||||||
game="←游戏设置",
|
game="←游戏",
|
||||||
graphic="画面设置→",
|
graphic="画面→",
|
||||||
|
|
||||||
mainVol="总音量",
|
mainVol="总音量",
|
||||||
bgm="音乐",
|
bgm="音乐",
|
||||||
@@ -1148,9 +1148,9 @@ return{
|
|||||||
{C.R,"《知识产权法》"},
|
{C.R,"《知识产权法》"},
|
||||||
{C.R,"本游戏难度上限很高,做好心理准备。"},
|
{C.R,"本游戏难度上限很高,做好心理准备。"},
|
||||||
{C.R,"不要向不感兴趣的路人推荐!!!!!!!!"},
|
{C.R,"不要向不感兴趣的路人推荐!!!!!!!!"},
|
||||||
{C.R,"不要在上课时玩游戏!"},
|
|
||||||
{C.R,"光敏性癫痫警告"},
|
|
||||||
{C.R,"请在有一定游戏基础之后再学Tspin!不然副作用非常大!"},
|
{C.R,"请在有一定游戏基础之后再学Tspin!不然副作用非常大!"},
|
||||||
|
{C.R,"上班时间不许摸鱼打块!"},
|
||||||
|
{C.R,"上课时间不许摸鱼打块!"},
|
||||||
{C.R,"新人请千万记住,打好基础,不要太早学那些花里胡哨的。"},
|
{C.R,"新人请千万记住,打好基础,不要太早学那些花里胡哨的。"},
|
||||||
{C.R,"长时间游戏状态会越来越差!玩久了记得放松一下~"},
|
{C.R,"长时间游戏状态会越来越差!玩久了记得放松一下~"},
|
||||||
{C.R,"DD",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z,"炮"},
|
{C.R,"DD",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z,"炮"},
|
||||||
|
|||||||
@@ -337,7 +337,7 @@ return{
|
|||||||
title="游戏设置",
|
title="游戏设置",
|
||||||
graphic="←视频",
|
graphic="←视频",
|
||||||
sound="声音→",
|
sound="声音→",
|
||||||
layout="布局",
|
style="风格",
|
||||||
|
|
||||||
ctrl="控制设置",
|
ctrl="控制设置",
|
||||||
key="键映射",
|
key="键映射",
|
||||||
|
|||||||
@@ -336,9 +336,9 @@ return{
|
|||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="遊戲設置",
|
title="遊戲設置",
|
||||||
graphic="←畫面設置",
|
graphic="←畫面",
|
||||||
sound="音頻設置→",
|
sound="音頻→",
|
||||||
layout="外觀",
|
style="風格",
|
||||||
|
|
||||||
ctrl="控制設置",
|
ctrl="控制設置",
|
||||||
key="鍵位設置",
|
key="鍵位設置",
|
||||||
@@ -355,8 +355,8 @@ return{
|
|||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
title="畫面設置",
|
title="畫面設置",
|
||||||
sound="←音頻設置",
|
sound="←音頻",
|
||||||
game="遊戲設置→",
|
game="遊戲→",
|
||||||
|
|
||||||
block="方塊可見",
|
block="方塊可見",
|
||||||
smooth="平滑下落",
|
smooth="平滑下落",
|
||||||
@@ -402,8 +402,8 @@ return{
|
|||||||
},
|
},
|
||||||
setting_sound={
|
setting_sound={
|
||||||
title="音頻設置",
|
title="音頻設置",
|
||||||
game="←遊戲設置",
|
game="←遊戲",
|
||||||
graphic="畫面設置→",
|
graphic="畫面→",
|
||||||
|
|
||||||
mainVol="主音量",
|
mainVol="主音量",
|
||||||
bgm="音樂",
|
bgm="音樂",
|
||||||
|
|||||||
@@ -16,6 +16,6 @@ return{
|
|||||||
L>=120 and 3 or
|
L>=120 and 3 or
|
||||||
L>=70 and 2 or
|
L>=70 and 2 or
|
||||||
L>=40 and 1 or
|
L>=40 and 1 or
|
||||||
L>=26 and 0
|
L>=16 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,6 @@ return{
|
|||||||
L>=80 and 3 or
|
L>=80 and 3 or
|
||||||
L>=40 and 2 or
|
L>=40 and 2 or
|
||||||
L>=20 and 1 or
|
L>=20 and 1 or
|
||||||
L>=26 and 0
|
L>=10 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
local function selectTarget(P)
|
|
||||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
|
||||||
P.swappingAtkMode=30
|
|
||||||
end
|
|
||||||
|
|
||||||
return{
|
return{
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
|
||||||
fkey1=selectTarget,
|
|
||||||
garbageSpeed=.3,
|
garbageSpeed=.3,
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
local function selectTarget(P)
|
|
||||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
|
||||||
P.swappingAtkMode=30
|
|
||||||
end
|
|
||||||
|
|
||||||
return{
|
return{
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
|
||||||
fkey1=selectTarget,
|
|
||||||
garbageSpeed=.3,
|
garbageSpeed=.3,
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
local function selectTarget(P)
|
|
||||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
|
||||||
P.swappingAtkMode=30
|
|
||||||
end
|
|
||||||
|
|
||||||
return{
|
return{
|
||||||
env={
|
env={
|
||||||
drop=15,lock=60,
|
drop=15,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
|
||||||
fkey1=selectTarget,
|
|
||||||
garbageSpeed=.3,
|
garbageSpeed=.3,
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
local function selectTarget(P)
|
|
||||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
|
||||||
P.swappingAtkMode=30
|
|
||||||
end
|
|
||||||
|
|
||||||
return{
|
return{
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
|
||||||
fkey1=selectTarget,
|
|
||||||
garbageSpeed=.3,
|
garbageSpeed=.3,
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
local function selectTarget(P)
|
|
||||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
|
||||||
P.swappingAtkMode=30
|
|
||||||
end
|
|
||||||
|
|
||||||
return{
|
return{
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
|
||||||
fkey1=selectTarget,
|
|
||||||
garbageSpeed=.3,
|
garbageSpeed=.3,
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
local function selectTarget(P)
|
|
||||||
P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode)
|
|
||||||
P.swappingAtkMode=30
|
|
||||||
end
|
|
||||||
|
|
||||||
return{
|
return{
|
||||||
env={
|
env={
|
||||||
drop=15,lock=60,
|
drop=15,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
|
||||||
fkey1=selectTarget,
|
|
||||||
garbageSpeed=.3,
|
garbageSpeed=.3,
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -240,8 +240,8 @@ function NET.uploadSave()
|
|||||||
{section=3,data=STRING.packTable(SETTING)},
|
{section=3,data=STRING.packTable(SETTING)},
|
||||||
{section=4,data=STRING.packTable(KEY_MAP)},
|
{section=4,data=STRING.packTable(KEY_MAP)},
|
||||||
{section=5,data=STRING.packTable(VK_ORG)},
|
{section=5,data=STRING.packTable(VK_ORG)},
|
||||||
{section=6,data=STRING.packTable(loadFile('conf/vkSave1'))},
|
{section=6,data=STRING.packTable(loadFile('conf/vkSave1','-canSkip')or{})},
|
||||||
{section=7,data=STRING.packTable(loadFile('conf/vkSave2'))},
|
{section=7,data=STRING.packTable(loadFile('conf/vkSave2','-canSkip')or{})},
|
||||||
}..'}}')
|
}..'}}')
|
||||||
MES.new('info',"Uploading")
|
MES.new('info',"Uploading")
|
||||||
end
|
end
|
||||||
@@ -287,10 +287,12 @@ function NET.loadSavedData(sections)
|
|||||||
TABLE.cover(NET.cloudData.VK_org,VK_ORG)
|
TABLE.cover(NET.cloudData.VK_org,VK_ORG)
|
||||||
success=success and saveFile(VK_ORG,'conf/virtualkey')
|
success=success and saveFile(VK_ORG,'conf/virtualkey')
|
||||||
|
|
||||||
success=success and saveFile(NET.cloudData.vkSave1,'conf/vkSave1')
|
if #NET.cloudData.vkSave1[1]then success=success and saveFile(NET.cloudData.vkSave1,'conf/vkSave1')end
|
||||||
success=success and saveFile(NET.cloudData.vkSave2,'conf/vkSave2')
|
if #NET.cloudData.vkSave2[1]then success=success and saveFile(NET.cloudData.vkSave2,'conf/vkSave2')end
|
||||||
if success then
|
if success then
|
||||||
MES.new('check',text.saveDone)
|
MES.new('check',text.saveDone)
|
||||||
|
else
|
||||||
|
MES.new('warn',text.dataCorrupted)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ local int,ceil,rnd=math.floor,math.ceil,math.random
|
|||||||
local max,min,sin,modf=math.max,math.min,math.sin,math.modf
|
local max,min,sin,modf=math.max,math.min,math.sin,math.modf
|
||||||
local setFont,mDraw,mStr=FONT.set,GC.draw,GC.mStr
|
local setFont,mDraw,mStr=FONT.set,GC.draw,GC.mStr
|
||||||
local SKIN,TEXTURE,IMG=SKIN,TEXTURE,IMG
|
local SKIN,TEXTURE,IMG=SKIN,TEXTURE,IMG
|
||||||
local TEXT,COLOR,GAME,TIME=TEXT,COLOR,GAME,TIME
|
local TEXT,COLOR,TIME=TEXT,COLOR,TIME
|
||||||
local shader_alpha,shader_lighter=SHADER.alpha,SHADER.lighter
|
local shader_alpha,shader_lighter=SHADER.alpha,SHADER.lighter
|
||||||
local shader_fieldSatur,shader_blockSatur=SHADER.fieldSatur,SHADER.blockSatur
|
local shader_fieldSatur,shader_blockSatur=SHADER.fieldSatur,SHADER.blockSatur
|
||||||
local TEXTOBJ,ENUM_MISSION,BLOCK_COLORS=TEXTOBJ,ENUM_MISSION,BLOCK_COLORS
|
local TEXTOBJ,ENUM_MISSION,BLOCK_COLORS=TEXTOBJ,ENUM_MISSION,BLOCK_COLORS
|
||||||
@@ -862,12 +862,12 @@ function draw.norm(P,repMode)
|
|||||||
_drawLDI(ENV.easyFresh,P.lockDelay/ENV.lock,P.freshTime)
|
_drawLDI(ENV.easyFresh,P.lockDelay/ENV.lock,P.freshTime)
|
||||||
|
|
||||||
--Draw target selecting pad
|
--Draw target selecting pad
|
||||||
if GAME.modeEnv.royaleMode then
|
if ENV.layout=='royale'then
|
||||||
if P.atkMode then
|
if P.atkMode then
|
||||||
gc_setColor(1,.8,0,P.swappingAtkMode*.02)
|
gc_setColor(1,.8,0,min(P.swappingAtkMode,30)*.02)
|
||||||
gc_rectangle('fill',RCPB[2*P.atkMode-1],RCPB[2*P.atkMode],90,35,8,4)
|
gc_rectangle('fill',RCPB[2*P.atkMode-1],RCPB[2*P.atkMode],90,35,8,4)
|
||||||
end
|
end
|
||||||
gc_setColor(1,1,1,P.swappingAtkMode*.025)
|
gc_setColor(1,1,1,min(P.swappingAtkMode,30)*.025)
|
||||||
setFont(35)
|
setFont(35)
|
||||||
gc_setLineWidth(1)
|
gc_setLineWidth(1)
|
||||||
for i=1,4 do
|
for i=1,4 do
|
||||||
@@ -953,7 +953,7 @@ function draw.small(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
--Draw badge
|
--Draw badge
|
||||||
if GAME.modeEnv.royaleMode then
|
if P.gameEnv.layout=='royale'then
|
||||||
gc_setColor(1,1,1)
|
gc_setColor(1,1,1)
|
||||||
for i=1,P.strength do
|
for i=1,P.strength do
|
||||||
gc_draw(IMG.badgeIcon,12*i-7,4,nil,.5)
|
gc_draw(IMG.badgeIcon,12*i-7,4,nil,.5)
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ return{
|
|||||||
bufferLimit=1e99,
|
bufferLimit=1e99,
|
||||||
fillClear=true,
|
fillClear=true,
|
||||||
|
|
||||||
|
layout='normal',
|
||||||
fkey1=false,fkey2=false,
|
fkey1=false,fkey2=false,
|
||||||
keyCancel={},
|
keyCancel={},
|
||||||
fine=false,fineKill=false,
|
fine=false,fineKill=false,
|
||||||
|
|||||||
@@ -193,9 +193,9 @@ function Player:createBeam(R,send)
|
|||||||
|
|
||||||
local c=BLOCK_COLORS[color]
|
local c=BLOCK_COLORS[color]
|
||||||
local r,g,b=c[1]*2,c[2]*2,c[3]*2
|
local r,g,b=c[1]*2,c[2]*2,c[3]*2
|
||||||
|
local a=(power+2)*.0626
|
||||||
local a=GAME.modeEnv.royaleMode and not(self.type=='human'or R.type=='human')and .2 or 1
|
if self.type~='human'and R.type~='human'then a=a*.2 end
|
||||||
SYSFX.newAttack(1-power*.1,x1,y1,x2,y2,int(send^.7*(4+power)),r,g,b,a*(power+2)*.0626)
|
SYSFX.newAttack(1-power*.1,x1,y1,x2,y2,int(send^.7*(4+power)),r,g,b,a)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
--------------------------</FX>--------------------------
|
--------------------------</FX>--------------------------
|
||||||
@@ -1847,7 +1847,7 @@ do
|
|||||||
end
|
end
|
||||||
|
|
||||||
--Bonus atk/def when focused
|
--Bonus atk/def when focused
|
||||||
if GAME.modeEnv.royaleMode then
|
if ENV.layout=='royale'then
|
||||||
local i=min(#self.atker,9)
|
local i=min(#self.atker,9)
|
||||||
if i>1 then
|
if i>1 then
|
||||||
atk=atk+reAtk[i]
|
atk=atk+reAtk[i]
|
||||||
@@ -1870,7 +1870,7 @@ do
|
|||||||
off=off+_
|
off=off+_
|
||||||
if send>0 then
|
if send>0 then
|
||||||
local T
|
local T
|
||||||
if GAME.modeEnv.royaleMode then
|
if ENV.layout=='royale'then
|
||||||
if self.atkMode==4 then
|
if self.atkMode==4 then
|
||||||
local M=#self.atker
|
local M=#self.atker
|
||||||
if M>0 then
|
if M>0 then
|
||||||
@@ -2144,7 +2144,7 @@ local function task_lose(self)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not GAME.modeEnv.royaleMode and #PLAYERS>1 then
|
if not self.gameEnv.layout=='royale'and #PLAYERS>1 then
|
||||||
self.y=self.y+self.endCounter*.26
|
self.y=self.y+self.endCounter*.26
|
||||||
self.absFieldY=self.absFieldY+self.endCounter*.26
|
self.absFieldY=self.absFieldY+self.endCounter*.26
|
||||||
end
|
end
|
||||||
@@ -2339,7 +2339,7 @@ local function update_alive(P)
|
|||||||
P.dropSpeed=P.dropSpeed*.99+v*.01
|
P.dropSpeed=P.dropSpeed*.99+v*.01
|
||||||
end
|
end
|
||||||
|
|
||||||
if GAME.modeEnv.royaleMode then
|
if P.gameEnv.layout=='royale'then
|
||||||
local v=P.swappingAtkMode
|
local v=P.swappingAtkMode
|
||||||
local tar=#P.field>15 and 4 or 8
|
local tar=#P.field>15 and 4 or 8
|
||||||
if v~=tar then
|
if v~=tar then
|
||||||
@@ -2596,7 +2596,7 @@ local function update_dead(P)
|
|||||||
--Final average speed
|
--Final average speed
|
||||||
P.dropSpeed=P.dropSpeed*.96+S.piece/S.frame*144
|
P.dropSpeed=P.dropSpeed*.96+S.piece/S.frame*144
|
||||||
|
|
||||||
if GAME.modeEnv.royaleMode then
|
if P.gameEnv.layout=='royale'then
|
||||||
P.swappingAtkMode=min(P.swappingAtkMode+2,30)
|
P.swappingAtkMode=min(P.swappingAtkMode+2,30)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -2714,7 +2714,7 @@ function Player:win(result)
|
|||||||
end
|
end
|
||||||
self:_die()
|
self:_die()
|
||||||
self.result='win'
|
self.result='win'
|
||||||
if GAME.modeEnv.royaleMode then
|
if self.gameEnv.layout=='royale'then
|
||||||
self.modeData.place=1
|
self.modeData.place=1
|
||||||
self:changeAtk()
|
self:changeAtk()
|
||||||
end
|
end
|
||||||
@@ -2729,7 +2729,7 @@ function Player:win(result)
|
|||||||
GAME.result=result or'gamewin'
|
GAME.result=result or'gamewin'
|
||||||
SFX.play('win')
|
SFX.play('win')
|
||||||
VOC.play('win')
|
VOC.play('win')
|
||||||
if GAME.modeEnv.royaleMode then
|
if self.gameEnv.layout=='royale'then
|
||||||
BGM.play('8-bit happiness')
|
BGM.play('8-bit happiness')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -2760,7 +2760,7 @@ function Player:lose(force)
|
|||||||
self:_die()
|
self:_die()
|
||||||
self.result='lose'
|
self.result='lose'
|
||||||
do local p=TABLE.find(PLY_ALIVE,self)if p then rem(PLY_ALIVE,p)end end
|
do local p=TABLE.find(PLY_ALIVE,self)if p then rem(PLY_ALIVE,p)end end
|
||||||
if GAME.modeEnv.royaleMode then
|
if self.gameEnv.layout=='royale'then
|
||||||
self:changeAtk()
|
self:changeAtk()
|
||||||
self.modeData.place=#PLY_ALIVE+1
|
self.modeData.place=#PLY_ALIVE+1
|
||||||
self.strength=0
|
self.strength=0
|
||||||
@@ -2802,7 +2802,7 @@ function Player:lose(force)
|
|||||||
GAME.result='gameover'
|
GAME.result='gameover'
|
||||||
SFX.play('fail')
|
SFX.play('fail')
|
||||||
VOC.play('lose')
|
VOC.play('lose')
|
||||||
if GAME.modeEnv.royaleMode then
|
if self.gameEnv.layout=='royale'then
|
||||||
BGM.play('end')
|
BGM.play('end')
|
||||||
end
|
end
|
||||||
gameOver()
|
gameOver()
|
||||||
|
|||||||
@@ -428,8 +428,8 @@ function scene.draw()
|
|||||||
setFont(55)
|
setFont(55)
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
for i=1,7 do
|
for i=1,7 do
|
||||||
local skin=SETTING.skin[i]
|
local skin=SETTING.skin[i]-1
|
||||||
mStr(text.block[i],500+skin%8*80,90+80*int(skin/8))
|
mStr(text.block[i],580+(skin%8)*80,90+80*int(skin/8))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ local function _update_common(dt)
|
|||||||
for p=1,#PLAYERS do PLAYERS[p]:update(dt)end
|
for p=1,#PLAYERS do PLAYERS[p]:update(dt)end
|
||||||
|
|
||||||
--Fresh royale target
|
--Fresh royale target
|
||||||
if GAME.modeEnv.royaleMode and PLAYERS[1].frameRun%120==0 then
|
if PLAYERS[1].frameRun%120==0 and PLAYERS[1].gameEnv.layout=='royale'then
|
||||||
freshMostDangerous()
|
freshMostDangerous()
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -339,7 +339,7 @@ function scene.draw()
|
|||||||
VK.draw()
|
VK.draw()
|
||||||
|
|
||||||
--Attacking & Being attacked
|
--Attacking & Being attacked
|
||||||
if GAME.modeEnv.royaleMode then
|
if PLAYERS[1].gameEnv.layout=='royale'then
|
||||||
local P=PLAYERS[1]
|
local P=PLAYERS[1]
|
||||||
gc_setLineWidth(5)
|
gc_setLineWidth(5)
|
||||||
gc_setColor(.8,1,0,.2)
|
gc_setColor(.8,1,0,.2)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ local function _login()
|
|||||||
elseif #password==0 then
|
elseif #password==0 then
|
||||||
MES.new('error',text.noPassword)return
|
MES.new('error',text.noPassword)return
|
||||||
end
|
end
|
||||||
|
-- password=STRING.digezt(password)
|
||||||
NET.wsconn_user_pswd(email,password)
|
NET.wsconn_user_pswd(email,password)
|
||||||
if savePW then
|
if savePW then
|
||||||
saveFile({email,password},'conf/account')
|
saveFile({email,password},'conf/account')
|
||||||
|
|||||||
@@ -55,11 +55,10 @@ function scene.keyDown(key,isRep)
|
|||||||
if key=='return'or key=='space'then
|
if key=='return'or key=='space'then
|
||||||
if BGM.nowPlay~=bgmList[S]then
|
if BGM.nowPlay~=bgmList[S]then
|
||||||
BGM.play(bgmList[S])
|
BGM.play(bgmList[S])
|
||||||
if SETTING.bgm>0 then
|
SFX.play('click')
|
||||||
SFX.play('click')
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
BGM.stop()
|
BGM.stop()
|
||||||
|
SFX.play('click')
|
||||||
end
|
end
|
||||||
elseif key=='tab'then
|
elseif key=='tab'then
|
||||||
SCN.swapTo('launchpad','none')
|
SCN.swapTo('launchpad','none')
|
||||||
@@ -126,7 +125,7 @@ scene.widgetList={
|
|||||||
},
|
},
|
||||||
WIDGET.newSlider{name='bgm', x=760,y=80,w=400,disp=SETval('bgm'),code=function(v)SETTING.bgm=v BGM.setVol(SETTING.bgm)end},
|
WIDGET.newSlider{name='bgm', x=760,y=80,w=400,disp=SETval('bgm'),code=function(v)SETTING.bgm=v BGM.setVol(SETTING.bgm)end},
|
||||||
WIDGET.newButton{name='up', x=200,y=250,w=120,code=pressKey'up',hideF=function()return selected==1 end,font=60,fText=CHAR.key.up},
|
WIDGET.newButton{name='up', x=200,y=250,w=120,code=pressKey'up',hideF=function()return selected==1 end,font=60,fText=CHAR.key.up},
|
||||||
WIDGET.newButton{name='play', x=200,y=390,w=120,code=pressKey'space',font=65,fText=CHAR.icon.play_pause},
|
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='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='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,font=60,sound='back',fText=CHAR.icon.back,code=backScene},
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ scene.widgetList={
|
|||||||
WIDGET.newButton{name='graphic', x=200, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_video','swipeR')},
|
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')},
|
WIDGET.newButton{name='sound', x=1080, y=80, w=240,h=80,color='lC',font=35,code=swapScene('setting_sound','swipeL')},
|
||||||
|
|
||||||
WIDGET.newButton{name='layout', x=250, y=540, w=200,h=70,font=35,code=goScene'setting_skin'},
|
WIDGET.newButton{name='style', x=250, y=540, w=200,h=70,font=35,code=goScene'setting_skin'},
|
||||||
|
|
||||||
WIDGET.newButton{name='ctrl', x=290, y=220, w=320,h=80,font=35,code=goScene'setting_control'},
|
WIDGET.newButton{name='ctrl', x=290, y=220, w=320,h=80,font=35,code=goScene'setting_control'},
|
||||||
WIDGET.newButton{name='key', x=640, y=220, w=320,h=80,color=MOBILE and'dH',font=35, code=goScene'setting_key'},
|
WIDGET.newButton{name='key', x=640, y=220, w=320,h=80,color=MOBILE and'dH',font=35, code=goScene'setting_key'},
|
||||||
|
|||||||
@@ -78,43 +78,42 @@ local function _nextDir(i)
|
|||||||
end
|
end
|
||||||
playEgg.hide=not selEggMode
|
playEgg.hide=not selEggMode
|
||||||
end
|
end
|
||||||
SFX.play('rotate')
|
|
||||||
end
|
end
|
||||||
|
|
||||||
scene.widgetList={
|
scene.widgetList={
|
||||||
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
|
WIDGET.newText{name='title', x=80,y=50,font=70,align='L'},
|
||||||
|
|
||||||
WIDGET.newSelector{name='skinSet',x=780,y=100,w=320,list=SKIN.getList(),disp=SETval('skinSet'),code=SETsto('skinSet')},
|
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,fText="↑",code=function()_prevSkin(1)end},
|
WIDGET.newButton{name='prev1', x=130,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(1)end},
|
||||||
WIDGET.newButton{name='prev2', x=270,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(2)end},
|
WIDGET.newButton{name='prev2', x=270,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(2)end},
|
||||||
WIDGET.newButton{name='prev3', x=410,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(3)end},
|
WIDGET.newButton{name='prev3', x=410,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(3)end},
|
||||||
WIDGET.newButton{name='prev4', x=550,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(4)end},
|
WIDGET.newButton{name='prev4', x=550,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(4)end},
|
||||||
WIDGET.newButton{name='prev5', x=690,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(5)end},
|
WIDGET.newButton{name='prev5', x=690,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(5)end},
|
||||||
WIDGET.newButton{name='prev6', x=830,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(6)end},
|
WIDGET.newButton{name='prev6', x=830,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(6)end},
|
||||||
WIDGET.newButton{name='prev7', x=970,y=220,w=80,h=65,fText="↑",code=function()_prevSkin(7)end},
|
WIDGET.newButton{name='prev7', x=970,y=220,w=80,h=65,sound='hold',font=40,fText="↑",code=function()_prevSkin(7)end},
|
||||||
|
|
||||||
WIDGET.newButton{name='next1', x=130,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(1)end},
|
WIDGET.newButton{name='next1', x=130,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(1)end},
|
||||||
WIDGET.newButton{name='next2', x=270,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(2)end},
|
WIDGET.newButton{name='next2', x=270,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(2)end},
|
||||||
WIDGET.newButton{name='next3', x=410,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(3)end},
|
WIDGET.newButton{name='next3', x=410,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(3)end},
|
||||||
WIDGET.newButton{name='next4', x=550,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(4)end},
|
WIDGET.newButton{name='next4', x=550,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(4)end},
|
||||||
WIDGET.newButton{name='next5', x=690,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(5)end},
|
WIDGET.newButton{name='next5', x=690,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(5)end},
|
||||||
WIDGET.newButton{name='next6', x=830,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(6)end},
|
WIDGET.newButton{name='next6', x=830,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(6)end},
|
||||||
WIDGET.newButton{name='next7', x=970,y=440,w=80,h=65,fText="↓",code=function()_nextSkin(7)end},
|
WIDGET.newButton{name='next7', x=970,y=440,w=80,h=65,sound='hold',font=40,fText="↓",code=function()_nextSkin(7)end},
|
||||||
|
|
||||||
WIDGET.newButton{name='spin1', x=130,y=540,w=80,h=65,code=function()_nextDir(1)end,font=50,fText=CHAR.icon.retry_spin},
|
WIDGET.newButton{name='spin1', x=130,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(1)end,fText=CHAR.icon.retry_spin},
|
||||||
WIDGET.newButton{name='spin2', x=270,y=540,w=80,h=65,code=function()_nextDir(2)end,font=50,fText=CHAR.icon.retry_spin},
|
WIDGET.newButton{name='spin2', x=270,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(2)end,fText=CHAR.icon.retry_spin},
|
||||||
WIDGET.newButton{name='spin3', x=410,y=540,w=80,h=65,code=function()_nextDir(3)end,font=50,fText=CHAR.icon.retry_spin},
|
WIDGET.newButton{name='spin3', x=410,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(3)end,fText=CHAR.icon.retry_spin},
|
||||||
WIDGET.newButton{name='spin4', x=550,y=540,w=80,h=65,code=function()_nextDir(4)end,font=50,fText=CHAR.icon.retry_spin},
|
WIDGET.newButton{name='spin4', x=550,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(4)end,fText=CHAR.icon.retry_spin},
|
||||||
WIDGET.newButton{name='spin5', x=690,y=540,w=80,h=65,code=function()_nextDir(5)end,font=50,fText=CHAR.icon.retry_spin},
|
WIDGET.newButton{name='spin5', x=690,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(5)end,fText=CHAR.icon.retry_spin},
|
||||||
WIDGET.newButton{name='spin6', x=825,y=540,w=80,h=65,code=function()_nextDir(6)end,font=50,fText=CHAR.icon.retry_spin},
|
WIDGET.newButton{name='spin6', x=825,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(6)end,fText=CHAR.icon.retry_spin},
|
||||||
WIDGET.newButton{name='spin7', x=970,y=540,w=80,h=65,code=function()_nextDir(7)end,font=50,fText=CHAR.icon.retry_spin},
|
WIDGET.newButton{name='spin7', x=970,y=540,w=80,h=65,sound='rotate',font=40,code=function()_nextDir(7)end,fText=CHAR.icon.retry_spin},
|
||||||
|
|
||||||
WIDGET.newButton{name='skinR', x=200,y=640,w=220,h=80,color='lV',font=35,
|
WIDGET.newButton{name='skinR', x=200,y=640,w=220,h=80,color='lV',font=35,sound='back',
|
||||||
code=function()
|
code=function()
|
||||||
SETTING.skin={1,7,11,3,14,4,9,1,7,2,6,10,2,13,5,9,15,10,11,3,10,2,16,8,4,10,13,2,8}
|
SETTING.skin={1,7,11,3,14,4,9,1,7,2,6,10,2,13,5,9,15,10,11,3,10,2,16,8,4,10,13,2,8}
|
||||||
SFX.play('rotate')
|
SFX.play('rotate')
|
||||||
end},
|
end},
|
||||||
WIDGET.newButton{name='faceR', x=480,y=640,w=220,h=80,color='lR',font=35,
|
WIDGET.newButton{name='faceR', x=480,y=640,w=220,h=80,color='lR',font=35,sound='back',
|
||||||
code=function()
|
code=function()
|
||||||
for i=1,29 do
|
for i=1,29 do
|
||||||
SETTING.face[i]=0
|
SETTING.face[i]=0
|
||||||
|
|||||||
@@ -12,6 +12,19 @@ return[=[
|
|||||||
更自由的攻击系统; 更多消除方式; 可调场地宽度;
|
更自由的攻击系统; 更多消除方式; 可调场地宽度;
|
||||||
task-Z(新AI); 自适应UI; 新联网游戏场景切换逻辑
|
task-Z(新AI); 自适应UI; 新联网游戏场景切换逻辑
|
||||||
|
|
||||||
|
0.17.1: 醒来 Wake Up
|
||||||
|
新增:
|
||||||
|
--TODO
|
||||||
|
改动:
|
||||||
|
修改选择模式音效
|
||||||
|
优化皮肤设置页面交互效果
|
||||||
|
略微降低master-h模式骨块出现后的难度
|
||||||
|
修复:
|
||||||
|
自定义场地16号色的方块名位置显示错误
|
||||||
|
登录界面读取本地账号密码数据错误
|
||||||
|
策略堆叠模式评级标准不当
|
||||||
|
云存档/读档的一处小问题
|
||||||
|
|
||||||
0.17.0: 硬着陆 Hard Landing
|
0.17.0: 硬着陆 Hard Landing
|
||||||
新增:
|
新增:
|
||||||
新模式:策略堆叠(原设计来自游戏Cambridge by Milla, NOT_A_ROBOT移植)
|
新模式:策略堆叠(原设计来自游戏Cambridge by Milla, NOT_A_ROBOT移植)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
return{
|
return{
|
||||||
["apkCode"]=418,
|
["apkCode"]=419,
|
||||||
["code"]=1700,
|
["code"]=1701,
|
||||||
["string"]="V0.17.0",
|
["string"]="V0.17.1",
|
||||||
["room"]="ver A-2",
|
["room"]="ver A-2",
|
||||||
["name"]="硬着陆 Hard Landing",
|
["name"]="醒来 Wake Up",
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user