Zframework finished
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
local min=math.min
|
local min=math.min
|
||||||
local rem=table.remove
|
local rem=table.remove
|
||||||
|
|
||||||
local function fadeOut(_,id)
|
local function fadeOut(id)
|
||||||
local src=BGM.list[id]
|
local src=BGM.list[id]
|
||||||
local v=src:getVolume()-.025*setting.bgm*.1
|
local v=src:getVolume()-.025*setting.bgm*.1
|
||||||
src:setVolume(v>0 and v or 0)
|
src:setVolume(v>0 and v or 0)
|
||||||
@@ -10,7 +10,7 @@ local function fadeOut(_,id)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local function fadeIn(_,id)
|
local function fadeIn(id)
|
||||||
local src=BGM.list[id]
|
local src=BGM.list[id]
|
||||||
local v=min(src:getVolume()+.025*setting.bgm*.1,setting.bgm*.1)
|
local v=min(src:getVolume()+.025*setting.bgm*.1,setting.bgm*.1)
|
||||||
src:setVolume(v)
|
src:setVolume(v)
|
||||||
@@ -27,7 +27,7 @@ BGM.list={
|
|||||||
"secret7th","secret8th",
|
"secret7th","secret8th",
|
||||||
"shining terminal","oxygen","distortion","far",
|
"shining terminal","oxygen","distortion","far",
|
||||||
"rockblock","cruelty","final","8-bit happiness","end",
|
"rockblock","cruelty","final","8-bit happiness","end",
|
||||||
"hay what kind of feeling",
|
"how feeling",
|
||||||
}
|
}
|
||||||
BGM.len=#BGM.list
|
BGM.len=#BGM.list
|
||||||
function BGM.loadOne(N)
|
function BGM.loadOne(N)
|
||||||
@@ -53,12 +53,12 @@ function BGM.play(s)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
if BGM.nowPlay~=s then
|
if BGM.nowPlay~=s then
|
||||||
if BGM.nowPlay then TASK.new(fadeOut,nil,BGM.nowPlay)end
|
if BGM.nowPlay then TASK.new(fadeOut,BGM.nowPlay)end
|
||||||
TASK.changeCode(fadeIn,fadeOut)
|
TASK.changeCode(fadeIn,fadeOut)
|
||||||
TASK.removeTask_data(s)
|
TASK.removeTask_data(s)
|
||||||
|
|
||||||
BGM.nowPlay,BGM.suspend=s
|
BGM.nowPlay,BGM.suspend=s
|
||||||
TASK.new(fadeIn,nil,s)
|
TASK.new(fadeIn,s)
|
||||||
BGM.playing=BGM.list[s]
|
BGM.playing=BGM.list[s]
|
||||||
BGM.playing:play()
|
BGM.playing:play()
|
||||||
end
|
end
|
||||||
@@ -81,7 +81,7 @@ function BGM.freshVolume()
|
|||||||
end
|
end
|
||||||
function BGM.stop()
|
function BGM.stop()
|
||||||
if BGM.nowPlay then
|
if BGM.nowPlay then
|
||||||
TASK.new(fadeOut,nil,BGM.nowPlay)
|
TASK.new(fadeOut,BGM.nowPlay)
|
||||||
end
|
end
|
||||||
TASK.changeCode(fadeIn,fadeOut)
|
TASK.changeCode(fadeIn,fadeOut)
|
||||||
BGM.playing,BGM.nowPlay=nil
|
BGM.playing,BGM.nowPlay=nil
|
||||||
@@ -1,3 +1,24 @@
|
|||||||
|
require("Zframework/toolfunc")
|
||||||
|
color= require("Zframework/color")
|
||||||
|
SHADER= require("Zframework/shader")
|
||||||
|
VIB= require("Zframework/vib")
|
||||||
|
SFX= require("Zframework/sfx")
|
||||||
|
sysFX= require("Zframework/sysFX")
|
||||||
|
BG= require("Zframework/bg")
|
||||||
|
BGM= require("Zframework/bgm")
|
||||||
|
VOC= require("Zframework/voice")
|
||||||
|
LANG= require("Zframework/languages")
|
||||||
|
FILE= require("Zframework/file")
|
||||||
|
TEXT= require("Zframework/text")
|
||||||
|
TASK= require("Zframework/task")
|
||||||
|
IMG= require("Zframework/img")
|
||||||
|
WIDGET= require("Zframework/widget")
|
||||||
|
Widgets=require("Zframework/widgetList")
|
||||||
|
LIGHT= require("Zframework/light")
|
||||||
|
SCN= require("Zframework/scene")
|
||||||
|
local Tmr=require("Zframework/timer")
|
||||||
|
local Pnt=require("Zframework/paint")
|
||||||
|
|
||||||
local ms,kb,tc=love.mouse,love.keyboard,love.touch
|
local ms,kb,tc=love.mouse,love.keyboard,love.touch
|
||||||
local gc,sys=love.graphics,love.system
|
local gc,sys=love.graphics,love.system
|
||||||
local Timer=love.timer.getTime
|
local Timer=love.timer.getTime
|
||||||
@@ -14,9 +35,6 @@ joysticks={}
|
|||||||
|
|
||||||
local devMode
|
local devMode
|
||||||
|
|
||||||
local Tmr=require("timer")
|
|
||||||
local Pnt=require("paint")
|
|
||||||
|
|
||||||
local infoCanvas=gc.newCanvas(108,27)
|
local infoCanvas=gc.newCanvas(108,27)
|
||||||
local function updatePowerInfo()
|
local function updatePowerInfo()
|
||||||
local state,pow=sys.getPowerInfo()
|
local state,pow=sys.getPowerInfo()
|
||||||
@@ -9,17 +9,14 @@ end
|
|||||||
function TASK.update()
|
function TASK.update()
|
||||||
for i=#tasks,1,-1 do
|
for i=#tasks,1,-1 do
|
||||||
local T=tasks[i]
|
local T=tasks[i]
|
||||||
if T.code(T.P,T.data)then
|
if T.code(T.data)then
|
||||||
for i=i,#tasks do
|
rem(tasks,i)
|
||||||
tasks[i]=tasks[i+1]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function TASK.new(code,P,data)
|
function TASK.new(code,data)
|
||||||
tasks[#tasks+1]={
|
tasks[#tasks+1]={
|
||||||
code=code,
|
code=code,
|
||||||
P=P,
|
|
||||||
data=data,
|
data=data,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
|
local int=math.floor
|
||||||
|
local format=string.format
|
||||||
|
|
||||||
local fontData=love.filesystem.newFile("font.ttf")
|
local fontData=love.filesystem.newFile("font.ttf")
|
||||||
local newFont=gc.setNewFont
|
local newFont=gc.setNewFont
|
||||||
@@ -19,8 +21,6 @@ function setFont(s)
|
|||||||
return f
|
return f
|
||||||
end
|
end
|
||||||
|
|
||||||
local int=math.floor
|
|
||||||
local format=string.format
|
|
||||||
function toTime(s)
|
function toTime(s)
|
||||||
if s<60 then
|
if s<60 then
|
||||||
return format("%.3fs",s)
|
return format("%.3fs",s)
|
||||||
6
conf.lua
6
conf.lua
@@ -1,10 +1,10 @@
|
|||||||
gameVersion="Alpha V0.8.24"
|
gameVersion="Alpha V0.9.0"
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
t.identity="Techmino"--folder name
|
t.identity="Techmino"--saving folder
|
||||||
t.version="11.1"
|
t.version="11.1"
|
||||||
t.console=false
|
t.console=false
|
||||||
t.gammacorrect=false
|
t.gammacorrect=false
|
||||||
t.appendidentity=true--search files in source before save directory
|
t.appendidentity=true--search files in source then in save directory
|
||||||
t.accelerometerjoystick=false--accelerometer=joystick on ios/android
|
t.accelerometerjoystick=false--accelerometer=joystick on ios/android
|
||||||
if t.audio then t.audio.mixwithsystem=true end
|
if t.audio then t.audio.mixwithsystem=true end
|
||||||
|
|
||||||
|
|||||||
48
main.lua
48
main.lua
@@ -4,7 +4,6 @@
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
--Global Setting & Vars
|
--Global Setting & Vars
|
||||||
package.path="./?.lua;./parts/?.lua;./modules/?.lua"
|
|
||||||
math.randomseed(os.time()*626)
|
math.randomseed(os.time()*626)
|
||||||
love.keyboard.setKeyRepeat(true)
|
love.keyboard.setKeyRepeat(true)
|
||||||
love.keyboard.setTextInput(false)
|
love.keyboard.setTextInput(false)
|
||||||
@@ -32,41 +31,23 @@ preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
|
|||||||
players={alive={},human=0}
|
players={alive={},human=0}
|
||||||
--blockSkin,blockSkinMini={},{}--redefined in SKIN.change
|
--blockSkin,blockSkinMini={},{}--redefined in SKIN.change
|
||||||
|
|
||||||
|
require("Zframework")--load Zframework
|
||||||
|
|
||||||
--Load modules
|
--Load modules
|
||||||
color= require("color")
|
blocks= require("parts/mino")
|
||||||
blocks= require("mino")
|
AITemplate= require("parts/AITemplate")
|
||||||
AITemplate= require("AITemplate")
|
freeRow= require("parts/freeRow")
|
||||||
freeRow= require("freeRow")
|
|
||||||
|
|
||||||
require("toolfunc")
|
require("parts/list")
|
||||||
require("list")
|
require("parts/gametoolfunc")
|
||||||
require("gametoolfunc")
|
require("parts/texture")
|
||||||
require("texture")
|
require("parts/default_data")
|
||||||
require("default_data")
|
|
||||||
|
|
||||||
SKIN= require("skin")
|
SKIN= require("parts/skin")
|
||||||
PLY= require("player")
|
PLY= require("parts/player")
|
||||||
AIfunc= require("ai")
|
AIfunc= require("parts/ai")
|
||||||
Modes= require("modes")
|
Modes= require("parts/modes")
|
||||||
|
|
||||||
--load Z's Framework
|
|
||||||
SHADER= require("shader")
|
|
||||||
VIB= require("vib")
|
|
||||||
SFX= require("sfx")
|
|
||||||
sysFX= require("sysFX")
|
|
||||||
BG= require("bg")
|
|
||||||
BGM= require("bgm")
|
|
||||||
VOC= require("voice")
|
|
||||||
LANG= require("languages")
|
|
||||||
FILE= require("file")
|
|
||||||
TEXT= require("text")
|
|
||||||
TASK= require("task")
|
|
||||||
IMG= require("img")
|
|
||||||
WIDGET= require("widget")
|
|
||||||
Widgets=require("widgetList")
|
|
||||||
LIGHT= require("light")
|
|
||||||
SCN= require("scene")
|
|
||||||
require("callback")
|
|
||||||
|
|
||||||
--load files & settings
|
--load files & settings
|
||||||
modeRanks={}for i=1,#Modes do modeRanks[i]=false assert(i==Modes[i].id,"ModeID error:"..i)end
|
modeRanks={}for i=1,#Modes do modeRanks[i]=false assert(i==Modes[i].id,"ModeID error:"..i)end
|
||||||
@@ -76,7 +57,8 @@ local fs=love.filesystem
|
|||||||
if fs.getInfo("keymap.dat")then fs.remove("keymap.dat")end
|
if fs.getInfo("keymap.dat")then fs.remove("keymap.dat")end
|
||||||
if fs.getInfo("setting.dat")then fs.remove("setting.dat")end
|
if fs.getInfo("setting.dat")then fs.remove("setting.dat")end
|
||||||
|
|
||||||
if fs.getInfo("settings.dat")then FILE.loadSetting()
|
if fs.getInfo("settings.dat")then
|
||||||
|
FILE.loadSetting()
|
||||||
else
|
else
|
||||||
-- firstRun=true
|
-- firstRun=true
|
||||||
if system=="Android"or system=="iOS" then
|
if system=="Android"or system=="iOS" then
|
||||||
|
|||||||
@@ -23,9 +23,8 @@ return{
|
|||||||
end
|
end
|
||||||
B.sum=B.sum+22
|
B.sum=B.sum+22
|
||||||
P.stat.recv=P.stat.recv+22
|
P.stat.recv=P.stat.recv+22
|
||||||
if D.event<50 then
|
|
||||||
D.event=D.event+1
|
D.event=D.event+1
|
||||||
D.point=int(72e4/t)*.1
|
if D.event%10==0 then
|
||||||
if D.event==20 then
|
if D.event==20 then
|
||||||
P:showTextF(text.great,0,-140,100,"appear",.6)
|
P:showTextF(text.great,0,-140,100,"appear",.6)
|
||||||
P.gameEnv.pushSpeed=3
|
P.gameEnv.pushSpeed=3
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
local int,rnd=math.floor,math.random
|
local int,rnd,min=math.floor,math.random,math.min
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lightYellow,
|
||||||
env={
|
env={
|
||||||
@@ -7,31 +7,30 @@ return{
|
|||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
task=function(P)
|
task=function(P)
|
||||||
if not(P.control and SCN.cur=="play")then return end
|
if not(P.control and SCN.cur=="play")then return end
|
||||||
if P.atkBuffer.sum<2 then
|
if P.atkBuffer.sum<4 then
|
||||||
local p=#P.atkBuffer+1
|
local p=#P.atkBuffer+1
|
||||||
local B,D=P.atkBuffer,P.modeData
|
local B,D=P.atkBuffer,P.modeData
|
||||||
local s,t
|
local s,t
|
||||||
if D.event<10 then
|
if D.event<10 then
|
||||||
t=1000-20*D.event--1000~800
|
t=800-10*D.event--800~700
|
||||||
B[p]= {pos=rnd(5,6),amount=10,countdown=t,cd0=t,time=0,sent=false,lv=3}
|
B[p]= {pos=rnd(5,6),amount=9,countdown=t,cd0=t,time=0,sent=false,lv=3}
|
||||||
B[p+1]= {pos=rnd(4,7),amount=12,countdown=t,cd0=t,time=0,sent=false,lv=4}
|
B[p+1]= {pos=rnd(4,7),amount=11,countdown=t,cd0=t+62,time=0,sent=false,lv=4}
|
||||||
s=22
|
s=20
|
||||||
elseif D.event<20 then
|
elseif D.event<20 then
|
||||||
t=800-20*(D.event-15)--800~600
|
t=800-10*D.event--700~600
|
||||||
B[p]= {pos=rnd(3,8),amount=11,countdown=t,cd0=t,time=0,sent=false,lv=4}
|
B[p]= {pos=rnd(3,8),amount=11,countdown=t,cd0=t,time=0,sent=false,lv=4}
|
||||||
B[p+1]= {pos=rnd(4,7),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=5}
|
B[p+1]= {pos=rnd(4,7),amount=13,countdown=t,cd0=t+62,time=0,sent=false,lv=5}
|
||||||
s=25
|
s=24
|
||||||
else
|
else
|
||||||
t=600-15*(D.event-30)--600~450
|
t=600-15*(min(D.event-20,10))--600~450
|
||||||
B[p]= {pos=rnd(2)*9-8,amount=12,countdown=t,cd0=t,time=0,sent=false,lv=5}
|
B[p]= {pos=rnd(2)*9-8,amount=14,countdown=t,cd0=t,time=0,sent=false,lv=5}
|
||||||
B[p+1]= {pos=rnd(3,8),amount=16,countdown=t,cd0=t,time=0,sent=false,lv=5}
|
B[p+1]= {pos=rnd(3,8),amount=14,countdown=t+62,cd0=t,time=0,sent=false,lv=5}
|
||||||
s=28
|
s=28
|
||||||
end
|
end
|
||||||
B.sum=B.sum+s
|
B.sum=B.sum+s
|
||||||
P.stat.recv=P.stat.recv+s
|
P.stat.recv=P.stat.recv+s
|
||||||
if D.event<45 then
|
|
||||||
D.event=D.event+1
|
D.event=D.event+1
|
||||||
D.point=int(s*36e3/t)*.1
|
if D.event%10==0 then
|
||||||
if D.event==10 then
|
if D.event==10 then
|
||||||
P:showTextF(text.great,0,-140,100,"appear",.6)
|
P:showTextF(text.great,0,-140,100,"appear",.6)
|
||||||
P.gameEnv.pushSpeed=4
|
P.gameEnv.pushSpeed=4
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ return{
|
|||||||
if L==100 then
|
if L==100 then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=40 and 5 or
|
T<=36 and 5 or
|
||||||
T<=60 and 4 or
|
T<=60 and 4 or
|
||||||
3
|
3
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ return{
|
|||||||
if L==100 then
|
if L==100 then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=30 and 5 or
|
T<=32 and 5 or
|
||||||
T<=50 and 4 or
|
T<=50 and 4 or
|
||||||
T<=80 and 3 or
|
T<=80 and 3 or
|
||||||
2
|
2
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ local function newPC(P)
|
|||||||
P.modeData.symmetry=symmetry
|
P.modeData.symmetry=symmetry
|
||||||
P:pushNext(L,symmetry)
|
P:pushNext(L,symmetry)
|
||||||
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
||||||
TASK.new(task_PC,P)
|
P:newTask(task_PC)
|
||||||
|
|
||||||
local s=P.stat.pc*.25
|
local s=P.stat.pc*.25
|
||||||
if int(s)==s and s>0 then
|
if int(s)==s and s>0 then
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ local function newPC(P)
|
|||||||
P.modeData.symmetry=symmetry
|
P.modeData.symmetry=symmetry
|
||||||
P:pushNext(L,symmetry)
|
P:pushNext(L,symmetry)
|
||||||
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
||||||
TASK.new(task_PC,P)
|
P:newTask(task_PC)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ return{
|
|||||||
T<=62 and 5 or
|
T<=62 and 5 or
|
||||||
T<=90 and 4 or
|
T<=90 and 4 or
|
||||||
T<=130 and 3 or
|
T<=130 and 3 or
|
||||||
T<=200 and 2 or
|
T<=196 and 2 or
|
||||||
T<=360 and 1 or
|
T<=260 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -32,8 +32,8 @@ return{
|
|||||||
T<=626 and 5 or
|
T<=626 and 5 or
|
||||||
T<=1000 and 4 or
|
T<=1000 and 4 or
|
||||||
T<=1400 and 3 or
|
T<=1400 and 3 or
|
||||||
T<=2260 and 2 or
|
T<=2060 and 2 or
|
||||||
T<=3260 and 1 or
|
T<=2600 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -32,8 +32,8 @@ return{
|
|||||||
T<=255 and 5 or
|
T<=255 and 5 or
|
||||||
T<=326 and 4 or
|
T<=326 and 4 or
|
||||||
T<=462 and 3 or
|
T<=462 and 3 or
|
||||||
T<=626 and 2 or
|
T<=555 and 2 or
|
||||||
T<=1260 and 1 or
|
T<=626 and 1 or
|
||||||
0
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,9 @@ local function tech_check_hard(P)
|
|||||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
if P.stat.row>=200 then
|
||||||
|
P:win("finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ local function tech_check_easy(P)
|
|||||||
if #P.clearedRow>0 and P.b2b<40 then
|
if #P.clearedRow>0 and P.b2b<40 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
if P.stat.row>=200 then
|
||||||
|
P:win("finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ local function tech_check_hard(P)
|
|||||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
if P.stat.row>=200 then
|
||||||
|
P:win("finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ local function tech_check_easy(P)
|
|||||||
if #P.clearedRow>0 and P.b2b<40 then
|
if #P.clearedRow>0 and P.b2b<40 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
if P.stat.row>=200 then
|
||||||
|
P:win("finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ local function tech_check_hard(P)
|
|||||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
if P.stat.row>=200 then
|
||||||
|
P:win("finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ local function tech_check_easy(P)
|
|||||||
if #P.clearedRow>0 and P.b2b<40 then
|
if #P.clearedRow>0 and P.b2b<40 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
if P.stat.row>=200 then
|
||||||
|
P:win("finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ local function tech_check_hard(P)
|
|||||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
if P.stat.row>=200 then
|
||||||
|
P:win("finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ return{
|
|||||||
drop=1e99,lock=60,
|
drop=1e99,lock=60,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
target=200,
|
target=200,
|
||||||
|
dropPiece=PLY.reach_winCheck,
|
||||||
fineKill=true,
|
fineKill=true,
|
||||||
bg="flink",bgm="infinite",
|
bg="flink",bgm="infinite",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ function resetPartGameData()
|
|||||||
TEXT.clear()
|
TEXT.clear()
|
||||||
if modeEnv.task then
|
if modeEnv.task then
|
||||||
for i=1,#players do
|
for i=1,#players do
|
||||||
players[i].newTask(modeEnv.task)
|
players[i]:newTask(modeEnv.task)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if modeEnv.royaleMode then
|
if modeEnv.royaleMode then
|
||||||
@@ -271,7 +271,7 @@ function resetGameData()
|
|||||||
curMode.load()--bg/bgm need redefine in custom,so up here
|
curMode.load()--bg/bgm need redefine in custom,so up here
|
||||||
if modeEnv.task then
|
if modeEnv.task then
|
||||||
for i=1,#players do
|
for i=1,#players do
|
||||||
players[i].newTask(modeEnv.task)
|
players[i]:newTask(modeEnv.task)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
BG.set(modeEnv.bg)
|
BG.set(modeEnv.bg)
|
||||||
|
|||||||
262
parts/getTip.lua
262
parts/getTip.lua
@@ -1,155 +1,151 @@
|
|||||||
local L
|
local L
|
||||||
if setting.lang==1 then
|
if setting.lang==1 or setting.lang==2 then
|
||||||
L={
|
L={
|
||||||
"不是动画,真的在加载!",
|
"ZS JL T O I",
|
||||||
"大满贯10连击消四全清!",
|
"tetr.js 也很好玩!",
|
||||||
"<方块研究所>有一个Nspire-CX版本!",
|
"tetr.io 也很好玩!",
|
||||||
"B2B2B???",
|
"Techminohaowan",
|
||||||
"B2B2B2B存在吗?",
|
"Techmino 好玩!",
|
||||||
"MEGACMB!",
|
"S T S D 必 死",
|
||||||
"ALLSPIN!",
|
"REGRET!!",
|
||||||
"O型回旋三清!",
|
"osu好玩!",
|
||||||
|
"O spin Triple!",
|
||||||
|
"nullpomino 也很好玩!",
|
||||||
"Miya:喵!",
|
"Miya:喵!",
|
||||||
"2+2=Miya",
|
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
|
||||||
"225238922 哔哩哔哩 干杯~",
|
|
||||||
"适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活",
|
|
||||||
"合群了就会消失, 但是消失不代表没有意义",
|
|
||||||
"学会使用两个旋转键, 三个更好",
|
|
||||||
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
|
||||||
"注意到\"旋转\"到底对方块做了些什么吗?",
|
|
||||||
"20G本质是一套全新的游戏规则",
|
|
||||||
"不要在上课时玩游戏!",
|
|
||||||
"本游戏难度上限很高, 做好心理准备",
|
|
||||||
"本游戏可不是休闲游戏",
|
|
||||||
"调到特殊的日期也不会发生什么的",
|
|
||||||
"3.1415926535897932384",
|
|
||||||
"2.7182818284590452353",
|
|
||||||
"Let-The-Bass-Kick!",
|
"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引擎制作",
|
"使用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 好玩!",
|
"更小的DAS和ARR拥有更高的操作上限(如果你还能控制得了的话)",
|
||||||
"tetr.js 也很好玩!",
|
"俄罗斯方块环游记也不错!",
|
||||||
"jstris 也很好玩!",
|
"调到特殊的日期也不会发生什么的",
|
||||||
"tetr.io 也很好玩!",
|
"低帧率会降低游戏体验",
|
||||||
"nullpomino 也很好玩!",
|
"戴上耳机以获得最佳体验",
|
||||||
"↑↑↓↓←→←→BABA",
|
"大满贯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
|
elseif setting.lang==3 then
|
||||||
L={
|
L={
|
||||||
"Not animation,real loading!",
|
"ZS JL T O I",
|
||||||
"Back to Back 10 combo Techrash PC!",
|
"You can open saving directory from stat. page",
|
||||||
"Techmino has a Nspire-CX edition!",
|
"wwwwww",
|
||||||
"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!",
|
|
||||||
"Who is diao",
|
"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 tetr.js!",
|
||||||
"Also try jstris!",
|
|
||||||
"Also try tetr.io!",
|
"Also try tetr.io!",
|
||||||
"Also try nullpomino!",
|
"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",
|
"↑↑↓↓←→←→BABA",
|
||||||
"wwwwww",
|
"\"Free block game with royale mode\"",
|
||||||
"diaoyoumei so bully",
|
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||||
"iced so bully",
|
|
||||||
"diao so bully",
|
|
||||||
}
|
}
|
||||||
elseif setting.lang==4 then
|
elseif setting.lang==4 then
|
||||||
L={'!','@','#','$','%','^','&','*','(',')','-','=','_','+','[',']','{','}','\\','|',';',':','\'','"',',','<','.','>','/','?'}
|
L={'!','@','#','$','%','^','&','*','(',')','-','=','_','+','[',']','{','}','\\','|',';',':','\'','"',',','<','.','>','/','?'}
|
||||||
|
|||||||
@@ -153,8 +153,8 @@ local ren_n={}for i=1,11 do ren_n[i]="ren_"..i end
|
|||||||
--------------------------</GameData>--------------------------
|
--------------------------</GameData>--------------------------
|
||||||
|
|
||||||
--------------------------<LIB>--------------------------
|
--------------------------<LIB>--------------------------
|
||||||
local player={}
|
local player={}--player object
|
||||||
local PLY={}
|
local PLY={}--lib
|
||||||
--------------------------</LIB>--------------------------
|
--------------------------</LIB>--------------------------
|
||||||
|
|
||||||
--------------------------<Update>--------------------------
|
--------------------------<Update>--------------------------
|
||||||
@@ -217,6 +217,12 @@ local function updateFXs(P,dt)
|
|||||||
end
|
end
|
||||||
if P.fieldBeneath>0 then P.fieldBeneath=max(P.fieldBeneath-P.gameEnv.pushSpeed,0)end
|
if P.fieldBeneath>0 then P.fieldBeneath=max(P.fieldBeneath-P.gameEnv.pushSpeed,0)end
|
||||||
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)
|
local function Pupdate_alive(P,dt)
|
||||||
if P.timing then P.stat.time=P.stat.time+dt end
|
if P.timing then P.stat.time=P.stat.time+dt end
|
||||||
if P.keyRec then
|
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)
|
P.b2b1=max(P.b2b1*.95+P.b2b*.05-.6,P.b2b)
|
||||||
end
|
end
|
||||||
updateFXs(P,dt)
|
updateFXs(P,dt)
|
||||||
|
updateTasks(P)
|
||||||
end
|
end
|
||||||
local function Pupdate_dead(P,dt)
|
local function Pupdate_dead(P,dt)
|
||||||
if P.timing then P.stat.time=P.stat.time+dt end
|
if P.timing then P.stat.time=P.stat.time+dt end
|
||||||
@@ -422,6 +429,7 @@ local function Pupdate_dead(P,dt)
|
|||||||
end
|
end
|
||||||
if P.b2b1>0 then P.b2b1=max(0,P.b2b1*.92-1)end
|
if P.b2b1>0 then P.b2b1=max(0,P.b2b1*.92-1)end
|
||||||
updateFXs(P,dt)
|
updateFXs(P,dt)
|
||||||
|
updateTasks(P)
|
||||||
end
|
end
|
||||||
--------------------------</Update>--------------------------
|
--------------------------</Update>--------------------------
|
||||||
|
|
||||||
@@ -950,6 +958,13 @@ function player.createBeam(P,R,send,time,target,color,clear,spin,mini,combo)
|
|||||||
drag={},--Afterimage coordinate list
|
drag={},--Afterimage coordinate list
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
function player.newTask(P,code,data)
|
||||||
|
local L=P.tasks
|
||||||
|
L[#L+1]={
|
||||||
|
code=code,
|
||||||
|
data=data,
|
||||||
|
}
|
||||||
|
end
|
||||||
--------------------------</FX>--------------------------
|
--------------------------</FX>--------------------------
|
||||||
|
|
||||||
--------------------------<Method>--------------------------
|
--------------------------<Method>--------------------------
|
||||||
@@ -1801,10 +1816,10 @@ function tick.lose(P)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function tick.throwBadge(A,data)
|
function tick.throwBadge(data)--{ifAI,Sender,timer}
|
||||||
data[2]=data[2]-1
|
data[3]=data[3]-1
|
||||||
if data[2]%4==0 then
|
if data[3]%4==0 then
|
||||||
local S,R=data[1],data[1].lastRecv
|
local S,R=data[2],data[2].lastRecv
|
||||||
local x1,y1,x2,y2
|
local x1,y1,x2,y2
|
||||||
if S.small then
|
if S.small then
|
||||||
x1,y1=S.centerX,S.centerY
|
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}
|
FX_badge[#FX_badge+1]={x1,y1,x2,y2,t=0}
|
||||||
--generate badge object
|
--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")
|
SFX.play("collect")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if data[2]<=0 then return true end
|
if data[3]<=0 then return true end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function gameOver()
|
local function gameOver()
|
||||||
@@ -1872,7 +1887,7 @@ local function gameOver()
|
|||||||
end
|
end
|
||||||
end--Save record
|
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.alive=false
|
||||||
P.timing=false
|
P.timing=false
|
||||||
P.control=false
|
P.control=false
|
||||||
@@ -1913,7 +1928,7 @@ function player.win(P,result)
|
|||||||
if P.human then
|
if P.human then
|
||||||
gameOver()
|
gameOver()
|
||||||
end
|
end
|
||||||
TASK.new(tick.finish,P)
|
P:newTask(tick.finish)
|
||||||
end
|
end
|
||||||
function player.lose(P)
|
function player.lose(P)
|
||||||
if P.life>0 then
|
if P.life>0 then
|
||||||
@@ -1957,7 +1972,7 @@ function player.lose(P)
|
|||||||
end
|
end
|
||||||
P.lastRecv=A
|
P.lastRecv=A
|
||||||
if P.id==1 or A.id==1 then
|
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
|
end
|
||||||
freshMostBadge()
|
freshMostBadge()
|
||||||
end
|
end
|
||||||
@@ -1990,9 +2005,9 @@ function player.lose(P)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
gameOver()
|
gameOver()
|
||||||
TASK.new(#players>1 and tick.lose or tick.finish,P)
|
P:newTask(#players>1 and tick.lose or tick.finish)
|
||||||
else
|
else
|
||||||
TASK.new(tick.lose,P)
|
P:newTask(tick.lose)
|
||||||
end
|
end
|
||||||
if #players.alive==1 then
|
if #players.alive==1 then
|
||||||
players.alive[1]:win()
|
players.alive[1]:win()
|
||||||
@@ -2337,6 +2352,7 @@ local function newEmptyPlayer(id,x,y,size)
|
|||||||
|
|
||||||
P.score1,P.b2b1=0,0
|
P.score1,P.b2b1=0,0
|
||||||
P.dropFX,P.lockFX,P.clearFX={},{},{}
|
P.dropFX,P.lockFX,P.clearFX={},{},{}
|
||||||
|
P.tasks={}--tasks
|
||||||
P.bonus={}--texts
|
P.bonus={}--texts
|
||||||
|
|
||||||
P.endCounter=0--used after gameover
|
P.endCounter=0--used after gameover
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ local S=[=[
|
|||||||
PCX kagura77 呆喂 GlowingEmbers
|
PCX kagura77 呆喂 GlowingEmbers
|
||||||
轩辕辚 HimuroAki TCV100 tech有养成系统了@7065
|
轩辕辚 HimuroAki TCV100 tech有养成系统了@7065
|
||||||
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思 世界沃德
|
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思 世界沃德
|
||||||
蓝绿 天生的魔法师 saki 琳雨空
|
蓝绿 天生的魔法师 saki 琳雨空 T8779.易缄
|
||||||
|
|
||||||
Thanks!!!
|
Thanks!!!
|
||||||
|
|
||||||
@@ -55,9 +55,9 @@ Future outlook:
|
|||||||
field flip(LR/UD)
|
field flip(LR/UD)
|
||||||
no fail(∞ lives)
|
no fail(∞ lives)
|
||||||
mini games:
|
mini games:
|
||||||
15 puzzle
|
15 puzzle (with hidden mode)
|
||||||
|
2048 (with next (with deadly mode))
|
||||||
mine sweeper
|
mine sweeper
|
||||||
2048
|
|
||||||
tank battle
|
tank battle
|
||||||
time-based-rank for master advanced mode(1:58/2:28/3:03/300P/100P)
|
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
|
0.8.25: Custom Sequence Update
|
||||||
new:
|
new:
|
||||||
--TODO: custom sequence
|
--TODO: custom sequence
|
||||||
|
many new tips
|
||||||
changed:
|
changed:
|
||||||
|
faster&harder attacker-ultimate
|
||||||
little easier to get S in PC challenge (easy mode)
|
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:
|
code:
|
||||||
file sorted
|
file sorted
|
||||||
|
task system rewrited, now perfect
|
||||||
fixed:
|
fixed:
|
||||||
hard move won't deactive "spin"
|
hard move won't deactive "spin"
|
||||||
do not clear dead enemies' field
|
do not clear dead enemies' field
|
||||||
|
|||||||
Reference in New Issue
Block a user