Zframework finished
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
return{
|
||||
red={1,0,0},
|
||||
green={0,1,0},
|
||||
blue={.2,.2,1},
|
||||
yellow={1,1,0},
|
||||
magenta={1,0,1},
|
||||
cyan={0,1,1},
|
||||
grey={.6,.6,.6},
|
||||
|
||||
lightRed={1,.5,.5},
|
||||
lightGreen={.5,1,.5},
|
||||
lightBlue={.6,.6,1},
|
||||
lightYellow={1,1,.5},
|
||||
lightMagenta={1,.5,1},
|
||||
lightCyan={.5,1,1},
|
||||
lightGrey={.8,.8,.8},
|
||||
|
||||
darkRed={.6,0,0},
|
||||
darkGreen={0,.6,0},
|
||||
darkBlue={0,0,.6},
|
||||
darkYellow={.6,.6,0},
|
||||
darkMagenta={.6,0,.6},
|
||||
darkCyan={0,.6,.6},
|
||||
darkGrey={.3,.3,.3},
|
||||
|
||||
black={0,0,0},
|
||||
orange={1,.6,0},
|
||||
pink={1,0,.6},
|
||||
grass={.6,1,0},
|
||||
water={0,1,.6},
|
||||
bronze={.7,.4,0},
|
||||
white={1,1,1},
|
||||
lightOrange={1,.7,.3},
|
||||
darkOrange={.6,.4,0},
|
||||
purple={.5,0,1},
|
||||
lightPurple={.8,.4,1},
|
||||
darkPurple={.3,0,.6},
|
||||
}
|
||||
@@ -20,9 +20,9 @@ function freeRow.get(val)
|
||||
end
|
||||
_=_+10
|
||||
end
|
||||
local t=L[_]
|
||||
local t=L[_]
|
||||
for i=1,10 do t[i]=val end
|
||||
L[_]=nil
|
||||
L[_]=nil
|
||||
_=_-1
|
||||
return t
|
||||
end
|
||||
@@ -31,6 +31,6 @@ function freeRow.discard(t)
|
||||
L[_]=t
|
||||
end
|
||||
function freeRow.getCount()
|
||||
return _
|
||||
return _
|
||||
end
|
||||
return freeRow
|
||||
@@ -236,7 +236,7 @@ function resetPartGameData()
|
||||
TEXT.clear()
|
||||
if modeEnv.task then
|
||||
for i=1,#players do
|
||||
players[i].newTask(modeEnv.task)
|
||||
players[i]:newTask(modeEnv.task)
|
||||
end
|
||||
end
|
||||
if modeEnv.royaleMode then
|
||||
@@ -271,7 +271,7 @@ function resetGameData()
|
||||
curMode.load()--bg/bgm need redefine in custom,so up here
|
||||
if modeEnv.task then
|
||||
for i=1,#players do
|
||||
players[i].newTask(modeEnv.task)
|
||||
players[i]:newTask(modeEnv.task)
|
||||
end
|
||||
end
|
||||
BG.set(modeEnv.bg)
|
||||
|
||||
262
parts/getTip.lua
262
parts/getTip.lua
@@ -1,155 +1,151 @@
|
||||
local L
|
||||
if setting.lang==1 then
|
||||
if setting.lang==1 or setting.lang==2 then
|
||||
L={
|
||||
"不是动画,真的在加载!",
|
||||
"大满贯10连击消四全清!",
|
||||
"<方块研究所>有一个Nspire-CX版本!",
|
||||
"B2B2B???",
|
||||
"B2B2B2B存在吗?",
|
||||
"MEGACMB!",
|
||||
"ALLSPIN!",
|
||||
"O型回旋三清!",
|
||||
"ZS JL T O I",
|
||||
"tetr.js 也很好玩!",
|
||||
"tetr.io 也很好玩!",
|
||||
"Techminohaowan",
|
||||
"Techmino 好玩!",
|
||||
"S T S D 必 死",
|
||||
"REGRET!!",
|
||||
"osu好玩!",
|
||||
"O spin Triple!",
|
||||
"nullpomino 也很好玩!",
|
||||
"Miya:喵!",
|
||||
"2+2=Miya",
|
||||
"225238922 哔哩哔哩 干杯~",
|
||||
"适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活",
|
||||
"合群了就会消失, 但是消失不代表没有意义",
|
||||
"学会使用两个旋转键, 三个更好",
|
||||
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
||||
"注意到\"旋转\"到底对方块做了些什么吗?",
|
||||
"20G本质是一套全新的游戏规则",
|
||||
"不要在上课时玩游戏!",
|
||||
"本游戏难度上限很高, 做好心理准备",
|
||||
"本游戏可不是休闲游戏",
|
||||
"调到特殊的日期也不会发生什么的",
|
||||
"3.1415926535897932384",
|
||||
"2.7182818284590452353",
|
||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||
"Let-The-Bass-Kick!",
|
||||
"使用love2d引擎制作",
|
||||
"l-=-1",
|
||||
"jstris 也很好玩!",
|
||||
"iced,永远的神",
|
||||
"DT炮=TSD+TST炮",
|
||||
"COOL!!",
|
||||
"CLASSIC SEXY RUSSIAN BLOCKS",
|
||||
"BT炮=beta炮",
|
||||
"bdg tql wsl",
|
||||
"B2B2B2B存在吗?",
|
||||
"B2B2B???",
|
||||
"Am G F G",
|
||||
"ALLSPIN!",
|
||||
"注意到\"旋转\"到底对方块做了些什么吗?",
|
||||
"有疑问? 先看设置有没有你想要的",
|
||||
"有建议的话可以把信息反馈给作者~",
|
||||
"不要按F10",
|
||||
"秘密数字:626",
|
||||
"CLASSIC SEXY RUSSIAN BLOCKS",
|
||||
"戴上耳机以获得最佳体验",
|
||||
"少女祈祷中",
|
||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
"Am G F G",
|
||||
"联网还没做呢, 别急",
|
||||
"\"免费吃鸡方块\"",
|
||||
"Techminohaowan",
|
||||
"Techmino 好玩!",
|
||||
"tetr.js 也很好玩!",
|
||||
"jstris 也很好玩!",
|
||||
"tetr.io 也很好玩!",
|
||||
"nullpomino 也很好玩!",
|
||||
"↑↑↓↓←→←→BABA",
|
||||
"草(日本语)",
|
||||
"dym,永远的神",
|
||||
"iced,永远的神",
|
||||
}
|
||||
elseif setting.lang==2 then
|
||||
L={
|
||||
"不是动画,真的在加载!",
|
||||
"大满贯10连击消四全清!",
|
||||
"<方块研究所>有一个Nspire-CX版本!",
|
||||
"B2B2B???",
|
||||
"B2B2B2B存在吗?",
|
||||
"MEGACMB!",
|
||||
"ALLSPIN!",
|
||||
"O spin triple!",
|
||||
"Miya:喵!",
|
||||
"2*2=Miya",
|
||||
"225238922 哔哩哔哩 干杯~",
|
||||
"学会使用两个旋转键, 三个更好",
|
||||
"享受特色旋转系统!",
|
||||
"我的世界好玩!",
|
||||
"提前旋转等设置可以用来救命",
|
||||
"泰拉瑞亚好玩!",
|
||||
"适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活",
|
||||
"合群了就会消失,但是消失不代表没有意义",
|
||||
"学会使用两个旋转键,三个更好",
|
||||
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
||||
"注意到\"旋转\"到底对方块做了些什么吗?",
|
||||
"20G本质是一套全新的游戏规则",
|
||||
"不要在上课时玩游戏!",
|
||||
"本游戏难度上限很高,做好心理准备",
|
||||
"本游戏可不是休闲游戏",
|
||||
"调到特殊的日期也不会发生什么的",
|
||||
"3.1415926535897932384",
|
||||
"2.7182818284590452353",
|
||||
"Let-The-Bass-Kick!",
|
||||
"使用love2d引擎制作",
|
||||
"有疑问?先看设置有没有你想要的",
|
||||
"有建议的话可以把信息反馈给作者~",
|
||||
"不要按F10",
|
||||
"秘密数字:626",
|
||||
"CLASSIC SEXY RUSSIAN BLOCKS",
|
||||
"戴上耳机以获得最佳体验",
|
||||
"少女祈祷中",
|
||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
"Am G F G",
|
||||
"扫雷好玩!",
|
||||
"你可以从统计页面打开游戏存档目录",
|
||||
"你好 世界!",
|
||||
"魔方好玩!",
|
||||
"秘密数字:626",
|
||||
"每个虚拟按键都可以隐藏/显示",
|
||||
"联网还没做呢, 别急",
|
||||
"\"免费吃鸡方块\"",
|
||||
"Techminohaowan",
|
||||
"Techmino 好玩!",
|
||||
"tetr.js 也很好玩!",
|
||||
"jstris 也很好玩!",
|
||||
"tetr.io 也很好玩!",
|
||||
"nullpomino 也很好玩!",
|
||||
"↑↑↓↓←→←→BABA",
|
||||
"键位是可以自定义的",
|
||||
"合群了就会消失, 但是消失不代表没有意义",
|
||||
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
||||
"俄罗斯方块环游记也不错!",
|
||||
"调到特殊的日期也不会发生什么的",
|
||||
"低帧率会降低游戏体验",
|
||||
"戴上耳机以获得最佳体验",
|
||||
"大满贯10连击消四全清!",
|
||||
"草(日本语)",
|
||||
"dym,永远的神",
|
||||
"iced,永远的神",
|
||||
"不要在上课时玩游戏!",
|
||||
"不要盯着bug不放",
|
||||
"不要按F10",
|
||||
"不是动画,真的在加载!",
|
||||
"本游戏难度上限很高, 做好心理准备",
|
||||
"本游戏可不是休闲游戏",
|
||||
"3.1415926535897932384",
|
||||
"26连T2来一个?",
|
||||
"225238922 哔哩哔哩 干杯~",
|
||||
"20G本质是一套全新的游戏规则",
|
||||
"20连PC来一个?",
|
||||
"2+2=Miya",
|
||||
"2.7182818284590452353",
|
||||
"15puzzle好玩!",
|
||||
"11renPC!",
|
||||
"<方块研究所>有一个Nspire-CX版本!",
|
||||
"↑↑↓↓←→←→BABA",
|
||||
"\"免费吃鸡方块\"",
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
}
|
||||
elseif setting.lang==3 then
|
||||
L={
|
||||
"Not animation,real loading!",
|
||||
"Back to Back 10 combo Techrash PC!",
|
||||
"Techmino has a Nspire-CX edition!",
|
||||
"B2B2B???",
|
||||
"Is B2B2B2B possible?",
|
||||
"MEGACMB!",
|
||||
"ALLSPIN!",
|
||||
"O spin triple!",
|
||||
"Miya:Nya!",
|
||||
"2^2=Miya",
|
||||
"225238922 Bilibili cheers!",
|
||||
"Playing too much = taking drugs",
|
||||
"Disappearing doesn't mean useless",
|
||||
"Try to use two rotate button,three better",
|
||||
"Small DAS&ARR can make you faster,if you can control block correctly",
|
||||
"Have you noticed what does \"rotating\" do to block?",
|
||||
"20G actually is a brand new game rule",
|
||||
"Do not play game in class!",
|
||||
"This game can be very hard,be mentally perpared",
|
||||
"This in not a casual game",
|
||||
"Nothing will happen when some special day come",
|
||||
"3.1415926535897932384",
|
||||
"2.7182818284590452353",
|
||||
"Let-The-Bass-Kick!",
|
||||
"Powered by love2d",
|
||||
"Find out what's in the setting!",
|
||||
"Any suggestions to author!",
|
||||
"DO NOT PRESS F10",
|
||||
"Secret num:626",
|
||||
"Techmino=Technique+Tetromino",
|
||||
"CLASSIC SEXY RUSSIAN BLOCKS",
|
||||
"Headphones for better experience",
|
||||
"少女祈禱中",
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
"Am G F G",
|
||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||
"Only offline game now",
|
||||
"\"Free block game with royale-mode\"",
|
||||
"Techmino is so fun!",
|
||||
"ZS JL T O I",
|
||||
"You can open saving directory from stat. page",
|
||||
"wwwwww",
|
||||
"Who is diao",
|
||||
"What about 26 TSDs?",
|
||||
"What about 20 PCs?",
|
||||
"Try to use two rotate button,three better",
|
||||
"This in not a casual game",
|
||||
"This game can be very hard,be mentally perpared",
|
||||
"Tetris journey has network battle!",
|
||||
"Terraria is fun!",
|
||||
"Techmino=Technique+Tetromino",
|
||||
"Techmino is so fun!",
|
||||
"Techmino has a Nspire-CX edition!",
|
||||
"Small DAS&ARR can make you faster,if you can control block correctly",
|
||||
"Secret num:626",
|
||||
"Rubik's cube is fun!",
|
||||
"REGRET!!",
|
||||
"Powered by love2d",
|
||||
"Playing too much = taking drugs",
|
||||
"osu is fun!",
|
||||
"Only offline game now",
|
||||
"OHHHHHHHHHHHHHH",
|
||||
"O spin triple!",
|
||||
"Nothing will happen when some special day come",
|
||||
"Not animation,real loading!",
|
||||
"Miya:Nya!",
|
||||
"Minesweeper is fun!",
|
||||
"Minecraft is fun!",
|
||||
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||
"lower fps causes lower game experience",
|
||||
"Let-The-Bass-Kick!",
|
||||
"l-=-1",
|
||||
"Is B2B2B2B possible?",
|
||||
"Initial Rotation etc. can save your life",
|
||||
"iced so bully",
|
||||
"Hello world!",
|
||||
"Headphones for better experience",
|
||||
"Have you noticed what does \"rotating\" do to block?",
|
||||
"Find out what's in the setting!",
|
||||
"Enjoy Tech. Rotation System!",
|
||||
"DT cannon=TSD+TST",
|
||||
"Don't look directly at the bugs!",
|
||||
"DO NOT PRESS F10",
|
||||
"Do not play game in class!",
|
||||
"Disappearing doesn't mean useless",
|
||||
"diaoyoumei so bully",
|
||||
"diao so bully",
|
||||
"COOL!!",
|
||||
"CLASSIC SEXY RUSSIAN BLOCKS",
|
||||
"BT cannon=beta",
|
||||
"Back to Back 10 combo Techrash PC!",
|
||||
"B2B2B???",
|
||||
"Any suggestions to author!",
|
||||
"Am G F G",
|
||||
"Also try tetr.js!",
|
||||
"Also try jstris!",
|
||||
"Also try tetr.io!",
|
||||
"Also try nullpomino!",
|
||||
"Also try jstris!",
|
||||
"ALLSPIN!",
|
||||
"少女祈禱中",
|
||||
"3.1415926535897932384",
|
||||
"225238922 Bilibili cheers!",
|
||||
"20G actually is a brand new game rule",
|
||||
"2^2=Miya",
|
||||
"2.7182818284590452353",
|
||||
"15puzzle is fun!",
|
||||
"11renPC!",
|
||||
"↑↑↓↓←→←→BABA",
|
||||
"wwwwww",
|
||||
"diaoyoumei so bully",
|
||||
"iced so bully",
|
||||
"diao so bully",
|
||||
"\"Free block game with royale mode\"",
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
}
|
||||
elseif setting.lang==4 then
|
||||
L={'!','@','#','$','%','^','&','*','(',')','-','=','_','+','[',']','{','}','\\','|',';',':','\'','"',',','<','.','>','/','?'}
|
||||
|
||||
@@ -153,8 +153,8 @@ local ren_n={}for i=1,11 do ren_n[i]="ren_"..i end
|
||||
--------------------------</GameData>--------------------------
|
||||
|
||||
--------------------------<LIB>--------------------------
|
||||
local player={}
|
||||
local PLY={}
|
||||
local player={}--player object
|
||||
local PLY={}--lib
|
||||
--------------------------</LIB>--------------------------
|
||||
|
||||
--------------------------<Update>--------------------------
|
||||
@@ -217,6 +217,12 @@ local function updateFXs(P,dt)
|
||||
end
|
||||
if P.fieldBeneath>0 then P.fieldBeneath=max(P.fieldBeneath-P.gameEnv.pushSpeed,0)end
|
||||
end
|
||||
local function updateTasks(P)
|
||||
local L=P.tasks
|
||||
for i=#L,1,-1 do
|
||||
if L[i].code(P,L[i].data)then end
|
||||
end
|
||||
end
|
||||
local function Pupdate_alive(P,dt)
|
||||
if P.timing then P.stat.time=P.stat.time+dt end
|
||||
if P.keyRec then
|
||||
@@ -393,6 +399,7 @@ local function Pupdate_alive(P,dt)
|
||||
P.b2b1=max(P.b2b1*.95+P.b2b*.05-.6,P.b2b)
|
||||
end
|
||||
updateFXs(P,dt)
|
||||
updateTasks(P)
|
||||
end
|
||||
local function Pupdate_dead(P,dt)
|
||||
if P.timing then P.stat.time=P.stat.time+dt end
|
||||
@@ -422,6 +429,7 @@ local function Pupdate_dead(P,dt)
|
||||
end
|
||||
if P.b2b1>0 then P.b2b1=max(0,P.b2b1*.92-1)end
|
||||
updateFXs(P,dt)
|
||||
updateTasks(P)
|
||||
end
|
||||
--------------------------</Update>--------------------------
|
||||
|
||||
@@ -950,6 +958,13 @@ function player.createBeam(P,R,send,time,target,color,clear,spin,mini,combo)
|
||||
drag={},--Afterimage coordinate list
|
||||
}
|
||||
end
|
||||
function player.newTask(P,code,data)
|
||||
local L=P.tasks
|
||||
L[#L+1]={
|
||||
code=code,
|
||||
data=data,
|
||||
}
|
||||
end
|
||||
--------------------------</FX>--------------------------
|
||||
|
||||
--------------------------<Method>--------------------------
|
||||
@@ -1801,10 +1816,10 @@ function tick.lose(P)
|
||||
end
|
||||
end
|
||||
end
|
||||
function tick.throwBadge(A,data)
|
||||
data[2]=data[2]-1
|
||||
if data[2]%4==0 then
|
||||
local S,R=data[1],data[1].lastRecv
|
||||
function tick.throwBadge(data)--{ifAI,Sender,timer}
|
||||
data[3]=data[3]-1
|
||||
if data[3]%4==0 then
|
||||
local S,R=data[2],data[2].lastRecv
|
||||
local x1,y1,x2,y2
|
||||
if S.small then
|
||||
x1,y1=S.centerX,S.centerY
|
||||
@@ -1819,11 +1834,11 @@ function tick.throwBadge(A,data)
|
||||
FX_badge[#FX_badge+1]={x1,y1,x2,y2,t=0}
|
||||
--generate badge object
|
||||
|
||||
if not A.ai and data[2]%8==0 then
|
||||
if not data[1]and data[3]%8==0 then
|
||||
SFX.play("collect")
|
||||
end
|
||||
end
|
||||
if data[2]<=0 then return true end
|
||||
if data[3]<=0 then return true end
|
||||
end
|
||||
|
||||
local function gameOver()
|
||||
@@ -1872,7 +1887,7 @@ local function gameOver()
|
||||
end
|
||||
end--Save record
|
||||
|
||||
function player.die(P)--Same thing when win/lose,not really die!
|
||||
function player.die(P)--Called when win/lose,not really die!
|
||||
P.alive=false
|
||||
P.timing=false
|
||||
P.control=false
|
||||
@@ -1913,7 +1928,7 @@ function player.win(P,result)
|
||||
if P.human then
|
||||
gameOver()
|
||||
end
|
||||
TASK.new(tick.finish,P)
|
||||
P:newTask(tick.finish)
|
||||
end
|
||||
function player.lose(P)
|
||||
if P.life>0 then
|
||||
@@ -1957,7 +1972,7 @@ function player.lose(P)
|
||||
end
|
||||
P.lastRecv=A
|
||||
if P.id==1 or A.id==1 then
|
||||
TASK.new(tick.throwBadge,A,{P,max(3,P.badge)*4})
|
||||
TASK.new(tick.throwBadge,{A.ai,P,max(3,P.badge)*4})
|
||||
end
|
||||
freshMostBadge()
|
||||
end
|
||||
@@ -1990,9 +2005,9 @@ function player.lose(P)
|
||||
end
|
||||
end
|
||||
gameOver()
|
||||
TASK.new(#players>1 and tick.lose or tick.finish,P)
|
||||
P:newTask(#players>1 and tick.lose or tick.finish)
|
||||
else
|
||||
TASK.new(tick.lose,P)
|
||||
P:newTask(tick.lose)
|
||||
end
|
||||
if #players.alive==1 then
|
||||
players.alive[1]:win()
|
||||
@@ -2337,6 +2352,7 @@ local function newEmptyPlayer(id,x,y,size)
|
||||
|
||||
P.score1,P.b2b1=0,0
|
||||
P.dropFX,P.lockFX,P.clearFX={},{},{}
|
||||
P.tasks={}--tasks
|
||||
P.bonus={}--texts
|
||||
|
||||
P.endCounter=0--used after gameover
|
||||
|
||||
@@ -19,7 +19,7 @@ local S=[=[
|
||||
PCX kagura77 呆喂 GlowingEmbers
|
||||
轩辕辚 HimuroAki TCV100 tech有养成系统了@7065
|
||||
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思 世界沃德
|
||||
蓝绿 天生的魔法师 saki 琳雨空
|
||||
蓝绿 天生的魔法师 saki 琳雨空 T8779.易缄
|
||||
|
||||
Thanks!!!
|
||||
|
||||
@@ -55,9 +55,9 @@ Future outlook:
|
||||
field flip(LR/UD)
|
||||
no fail(∞ lives)
|
||||
mini games:
|
||||
15 puzzle
|
||||
15 puzzle (with hidden mode)
|
||||
2048 (with next (with deadly mode))
|
||||
mine sweeper
|
||||
2048
|
||||
tank battle
|
||||
time-based-rank for master advanced mode(1:58/2:28/3:03/300P/100P)
|
||||
简易防沉迷系统
|
||||
@@ -82,11 +82,15 @@ Future outlook:
|
||||
0.8.25: Custom Sequence Update
|
||||
new:
|
||||
--TODO: custom sequence
|
||||
many new tips
|
||||
changed:
|
||||
faster&harder attacker-ultimate
|
||||
little easier to get S in PC challenge (easy mode)
|
||||
easier to get S in infinite mode
|
||||
easier to get S in infinite mode, c4w, PC
|
||||
harder to unlock sprint 400/1000
|
||||
code:
|
||||
file sorted
|
||||
task system rewrited, now perfect
|
||||
fixed:
|
||||
hard move won't deactive "spin"
|
||||
do not clear dead enemies' field
|
||||
|
||||
Reference in New Issue
Block a user