Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4da080c6f5 |
2
conf.lua
2
conf.lua
@@ -1,4 +1,4 @@
|
|||||||
gameVersion="Alpha V0.8.6"
|
gameVersion="Alpha V0.8.7"
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
t.identity="Techmino"--Save directory name
|
t.identity="Techmino"--Save directory name
|
||||||
t.version="11.1"
|
t.version="11.1"
|
||||||
|
|||||||
34
dataList.lua
34
dataList.lua
@@ -38,26 +38,26 @@ local function gameOver()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
local D=M.score(P)
|
||||||
local D=M.score(P)
|
local L=M.records
|
||||||
local L=M.records
|
local p=#L--排名数-1
|
||||||
local p=#L--排名数-1
|
if p>0 then
|
||||||
if p>0 then
|
::L::
|
||||||
::L::
|
if M.comp(D,L[p])then--是否靠前
|
||||||
if M.comp(D,L[p])then--是否靠前
|
p=p-1
|
||||||
p=p-1
|
if p>0 then
|
||||||
if p>0 then
|
goto L
|
||||||
goto L
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
if p<10 then
|
||||||
if p<10 then
|
if p==0 then
|
||||||
if p==0 then
|
P:showText(text.newRecord,0,-100,100,"beat",.5)
|
||||||
P:showText(text.newRecord,0,-100,100,"beat",.5)
|
end
|
||||||
|
ins(L,p+1,D)
|
||||||
|
if L[11]then L[11]=nil end
|
||||||
|
saveRecord(M.saveFileName,L)
|
||||||
end
|
end
|
||||||
ins(L,p+1,D)
|
|
||||||
if L[11]then L[11]=nil end
|
|
||||||
saveRecord(M.saveFileName,L)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end--Save record
|
end--Save record
|
||||||
|
|||||||
30
document.txt
30
document.txt
@@ -11,12 +11,19 @@ spin判定:
|
|||||||
细节不赘述
|
细节不赘述
|
||||||
|
|
||||||
攻击系统:
|
攻击系统:
|
||||||
消1/2/3/4攻击0/1/2/4
|
普通消除:
|
||||||
spin1/2/3攻击2/4/6,若mini则减半
|
消1/2/3/4攻击0.25/1.25/2.25/4
|
||||||
B2B:增加1~2(techrash)/1~3(spin)攻击
|
特殊消除:
|
||||||
B3B:满B2B效果+1额外抵挡
|
spin1/2/3攻击2/4/6,若mini则减半
|
||||||
PC:将其它的伤害之和开根号后向上取整,再+6~10(本局内递增)+2额外抵挡
|
B2B:加1(techrash/spin1/spin2)或2(spin3)攻击
|
||||||
连击:0,0,1,1,2,2,3,3,4,4,3……
|
B3B:在B2B效果之上再+1攻击和+1额外抵挡
|
||||||
|
连击:0,0,1,1,2,2,3,3,4,4,3……
|
||||||
|
特殊消除会增加B2B点数,让之后的特殊消除获得B2B(B3B)增益(详细说明见下文)
|
||||||
|
PC:将上述伤害之和开根号,再+6~10(本局内递增)+2额外抵挡(注:本局消行数>4时会将B2B点数拉满)
|
||||||
|
根据上述规则计算后,向下取整,攻击打出
|
||||||
|
|
||||||
|
分数系统:
|
||||||
|
玩得越牛逼得分越高嗷(
|
||||||
|
|
||||||
攻击延迟:
|
攻击延迟:
|
||||||
消2/3的攻击生效最快,消四其次,spin攻击生效较慢,高连击生效最慢
|
消2/3的攻击生效最快,消四其次,spin攻击生效较慢,高连击生效最慢
|
||||||
@@ -27,13 +34,12 @@ spin判定:
|
|||||||
没有用上的额外抵挡会被丢弃,最后剩下的攻击力会发送给对手
|
没有用上的额外抵挡会被丢弃,最后剩下的攻击力会发送给对手
|
||||||
|
|
||||||
back to back(B2B)点数说明:
|
back to back(B2B)点数说明:
|
||||||
B2B点数的范围在0~1200
|
B2B点数的范围在0~1200,在点数>=40时进行特殊消除为B2B,>1000时特殊消除为B3B
|
||||||
在40及以上特殊消除时B2B,在1000以上特殊消除时B3B,1200封顶
|
|
||||||
消四+100
|
|
||||||
空spin加20,不超过1000
|
|
||||||
spin1~3+50/100/180 (mini*.5)
|
|
||||||
普通消除-250
|
普通消除-250
|
||||||
1000以上空放一块-40(不减到低于1000)
|
spin1/2/3:+50/100/180(mini减半)
|
||||||
|
消四:+100
|
||||||
|
空spin:+20,此法得到的点数不能超过1000
|
||||||
|
当点数在1000以上时空放一块-40(不减到低于1000)
|
||||||
|
|
||||||
混战模式说明:
|
混战模式说明:
|
||||||
许多玩家同时进行一局游戏(对手都是AI,不是真人).随着玩家数量的减少,方块下落/垃圾生效速度/垃圾升起速度都会增加.淘汰其它玩家后可以获得一个徽章和该玩家持有的徽章,增强自己的攻击力.
|
许多玩家同时进行一局游戏(对手都是AI,不是真人).随着玩家数量的减少,方块下落/垃圾生效速度/垃圾升起速度都会增加.淘汰其它玩家后可以获得一个徽章和该玩家持有的徽章,增强自己的攻击力.
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ return{
|
|||||||
bgm="背景音乐:",
|
bgm="背景音乐:",
|
||||||
},
|
},
|
||||||
customVal={
|
customVal={
|
||||||
drop={"[20G]",1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
drop={"0G","1/180G","1/60G","1/40G","1/30G","1/25G","1/20G","1/18G","1/16G","1/14G","1/12G","1/10G","1/9G","1/8G","1/7G","1/6G","1/5G","1/4G","1/3G","1/2G","1G","2G","4G","8G","20G"},
|
||||||
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
||||||
wait=nil,
|
wait=nil,
|
||||||
fall=nil,
|
fall=nil,
|
||||||
@@ -171,7 +171,7 @@ return{
|
|||||||
]],
|
]],
|
||||||
support="支持作者",
|
support="支持作者",
|
||||||
group="官方QQ群",
|
group="官方QQ群",
|
||||||
warning="禁 止 私 自 传 播",
|
warning="禁止直接传播游戏本体",
|
||||||
WidgetText={
|
WidgetText={
|
||||||
main={
|
main={
|
||||||
lang="言/A",
|
lang="言/A",
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ return{
|
|||||||
|
|
||||||
custom="自定义游戏",
|
custom="自定义游戏",
|
||||||
customOption={
|
customOption={
|
||||||
drop="下落延迟:",
|
drop="下落速度:",
|
||||||
lock="锁定延迟:",
|
lock="锁定延迟:",
|
||||||
wait="放块延迟:",
|
wait="放块延迟:",
|
||||||
fall="消行延迟:",
|
fall="消行延迟:",
|
||||||
@@ -54,7 +54,7 @@ return{
|
|||||||
bgm="背景音乐:",
|
bgm="背景音乐:",
|
||||||
},
|
},
|
||||||
customVal={
|
customVal={
|
||||||
drop={"[20G]",1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
drop={"0G","1/180G","1/60G","1/40G","1/30G","1/25G","1/20G","1/18G","1/16G","1/14G","1/12G","1/10G","1/9G","1/8G","1/7G","1/6G","1/5G","1/4G","1/3G","1/2G","1G","2G","4G","8G","20G"},
|
||||||
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
||||||
wait=nil,
|
wait=nil,
|
||||||
fall=nil,
|
fall=nil,
|
||||||
@@ -171,7 +171,7 @@ return{
|
|||||||
]],
|
]],
|
||||||
support="支持作者",
|
support="支持作者",
|
||||||
group="官方QQ群",
|
group="官方QQ群",
|
||||||
warning="禁 止 私 自 传 播",
|
warning="禁止直接传播游戏本体",
|
||||||
WidgetText={
|
WidgetText={
|
||||||
main={
|
main={
|
||||||
lang="言/A",
|
lang="言/A",
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ return{
|
|||||||
bgm="BGM:",
|
bgm="BGM:",
|
||||||
},
|
},
|
||||||
customVal={
|
customVal={
|
||||||
drop={"[20G]",1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
drop={"0G","1/180G","1/60G","1/40G","1/30G","1/25G","1/20G","1/18G","1/16G","1/14G","1/12G","1/10G","1/9G","1/8G","1/7G","1/6G","1/5G","1/4G","1/3G","1/2G","1G","2G","4G","8G","20G"},
|
||||||
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"∞"},
|
||||||
wait=nil,
|
wait=nil,
|
||||||
fall=nil,
|
fall=nil,
|
||||||
@@ -170,7 +170,7 @@ Lib used:
|
|||||||
]],
|
]],
|
||||||
support="Support Author",
|
support="Support Author",
|
||||||
group="Official QQ Group",
|
group="Official QQ Group",
|
||||||
warning="DO NOT DISTRIBUTE",
|
warning="DO NOT SHARE APP",
|
||||||
WidgetText={
|
WidgetText={
|
||||||
main={
|
main={
|
||||||
lang="言/A",
|
lang="言/A",
|
||||||
|
|||||||
2
list.lua
2
list.lua
@@ -160,7 +160,7 @@ customID={
|
|||||||
"bg","bgm",
|
"bg","bgm",
|
||||||
}
|
}
|
||||||
customRange={
|
customRange={
|
||||||
drop={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
|
drop={1e99,180,60,40,30,25,20,18,16,14,12,10,9,8,7,6,5,4,3,2,1,.5,.25,.125,0},
|
||||||
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
|
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
|
||||||
wait={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
wait={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
||||||
fall={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
fall={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
||||||
|
|||||||
14
main.lua
14
main.lua
@@ -9,8 +9,8 @@ local Timer=love.timer.getTime
|
|||||||
local int,rnd,max,min=math.floor,math.random,math.max,math.min
|
local int,rnd,max,min=math.floor,math.random,math.max,math.min
|
||||||
local rem=table.remove
|
local rem=table.remove
|
||||||
|
|
||||||
package.path="?.lua"
|
package.path="?.lua"--boost
|
||||||
NULL=function()end
|
function NULL()end
|
||||||
--Libs
|
--Libs
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
system=sys.getOS()
|
system=sys.getOS()
|
||||||
@@ -51,7 +51,7 @@ kb.setTextInput(false)
|
|||||||
ms.setVisible(false)
|
ms.setVisible(false)
|
||||||
--Application Vars
|
--Application Vars
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
customSel={22,22,1,1,7,3,1,1,8,4,1,1,1}
|
customSel={1,22,1,1,7,3,1,1,8,4,1,1,1}
|
||||||
preField={h=20}
|
preField={h=20}
|
||||||
for i=1,10 do preField[i]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}end
|
for i=1,10 do preField[i]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}end
|
||||||
for i=11,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
|
for i=11,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
|
||||||
@@ -798,9 +798,9 @@ end
|
|||||||
local lastX,lastY--last clickDown pos
|
local lastX,lastY--last clickDown pos
|
||||||
function love.mousepressed(x,y,k,t,num)
|
function love.mousepressed(x,y,k,t,num)
|
||||||
mouseShow=true
|
mouseShow=true
|
||||||
if devMode>0 then print(x,y)end
|
|
||||||
if t or scene.swapping then return end
|
|
||||||
mx,my=xOy:inverseTransformPoint(x,y)
|
mx,my=xOy:inverseTransformPoint(x,y)
|
||||||
|
if devMode>0 then print(mx,my)end
|
||||||
|
if t or scene.swapping then return end
|
||||||
if mouseDown[scene.cur]then
|
if mouseDown[scene.cur]then
|
||||||
mouseDown[scene.cur](mx,my,k)
|
mouseDown[scene.cur](mx,my,k)
|
||||||
elseif k==2 then
|
elseif k==2 then
|
||||||
@@ -816,8 +816,8 @@ function love.mousepressed(x,y,k,t,num)
|
|||||||
end
|
end
|
||||||
function love.mousemoved(x,y,dx,dy,t)
|
function love.mousemoved(x,y,dx,dy,t)
|
||||||
mouseShow=true
|
mouseShow=true
|
||||||
if t or scene.swapping then return end
|
|
||||||
mx,my=xOy:inverseTransformPoint(x,y)
|
mx,my=xOy:inverseTransformPoint(x,y)
|
||||||
|
if t or scene.swapping then return end
|
||||||
dx,dy=dx/scr.k,dy/scr.k
|
dx,dy=dx/scr.k,dy/scr.k
|
||||||
if mouseMove[scene.cur]then
|
if mouseMove[scene.cur]then
|
||||||
mouseMove[scene.cur](mx,my,dx,dy)
|
mouseMove[scene.cur](mx,my,dx,dy)
|
||||||
@@ -835,8 +835,8 @@ function love.mousemoved(x,y,dx,dy,t)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.mousereleased(x,y,k,t,num)
|
function love.mousereleased(x,y,k,t,num)
|
||||||
if t or scene.swapping then return end
|
|
||||||
mx,my=xOy:inverseTransformPoint(x,y)
|
mx,my=xOy:inverseTransformPoint(x,y)
|
||||||
|
if t or scene.swapping then return end
|
||||||
if mouseUp[scene.cur]then
|
if mouseUp[scene.cur]then
|
||||||
mouseUp[scene.cur](mx,my,k)
|
mouseUp[scene.cur](mx,my,k)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ return{
|
|||||||
Event.win(P,"finish")
|
Event.win(P,"finish")
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
arr=1,
|
minarr=1,
|
||||||
bg="game3",bgm="shining terminal",
|
bg="game3",bgm="shining terminal",
|
||||||
},
|
},
|
||||||
load=function()
|
load=function()
|
||||||
@@ -63,6 +63,6 @@ return{
|
|||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]>b[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)
|
getRank=function(P)
|
||||||
local P=P.modeData.point
|
local P=P.modeData.point
|
||||||
return P==80 and 5 or P>=70 and 4 or P>=60 and 3 or P>=40 and 2 or P>=20 and 1
|
return P==80 and 5 or P>=70 and 4 or P>=60 and 3 or P>=40 and 2 or P>=20 and 1 or P>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -67,6 +67,6 @@ return{
|
|||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[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)
|
getRank=function(P)
|
||||||
local W=P.modedata.event
|
local W=P.modedata.event
|
||||||
return W>100 and 4 or W>=80 and 3 or W>=50 and 2 or W>=20 and 1
|
return W>100 and 4 or W>=80 and 3 or W>=50 and 2 or W>=20 and 1 or W>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -80,6 +80,6 @@ return{
|
|||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[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)
|
getRank=function(P)
|
||||||
local W=P.modedata.event
|
local W=P.modedata.event
|
||||||
return W>40 and 4 or W>=30 and 3 or W>=20 and 2 or W>=10 and 1
|
return W>40 and 4 or W>=30 and 3 or W>=20 and 2 or W>=10 and 1 or W>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -48,7 +48,8 @@ return{
|
|||||||
return
|
return
|
||||||
L>=150 and 3 or
|
L>=150 and 3 or
|
||||||
L>=100 and 2 or
|
L>=100 and 2 or
|
||||||
L>=40 and 1
|
L>=40 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,8 @@ return{
|
|||||||
return
|
return
|
||||||
L>=150 and 3 or
|
L>=150 and 3 or
|
||||||
L>=90 and 2 or
|
L>=90 and 2 or
|
||||||
L>=40 and 1
|
L>=40 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,8 @@ return{
|
|||||||
return
|
return
|
||||||
L>=150 and 3 or
|
L>=150 and 3 or
|
||||||
L>=100 and 2 or
|
L>=100 and 2 or
|
||||||
L>=40 and 1
|
L>=40 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,8 @@ return{
|
|||||||
return
|
return
|
||||||
L>=150 and 3 or
|
L>=150 and 3 or
|
||||||
L>=100 and 2 or
|
L>=100 and 2 or
|
||||||
L>=40 and 1
|
L>=40 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -46,6 +46,7 @@ return{
|
|||||||
L>=100 and 4 or
|
L>=100 and 4 or
|
||||||
L>=50 and 3 or
|
L>=50 and 3 or
|
||||||
L>=26 and 2 or
|
L>=26 and 2 or
|
||||||
L>=10 and 1
|
L>=10 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,8 @@ return{
|
|||||||
return
|
return
|
||||||
L>=70 and 3 or
|
L>=70 and 3 or
|
||||||
L>=40 and 2 or
|
L>=40 and 2 or
|
||||||
L>=20 and 1
|
L>=20 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -78,7 +78,8 @@ return{
|
|||||||
else
|
else
|
||||||
return
|
return
|
||||||
L>=60 and 2 or
|
L>=60 and 2 or
|
||||||
L>=30 and 1
|
L>=30 and 1 or
|
||||||
|
L>=10 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -63,6 +63,7 @@ return{
|
|||||||
L>=191 and 4 or
|
L>=191 and 4 or
|
||||||
L>=110 and 3 or
|
L>=110 and 3 or
|
||||||
L>=50 and 2 or
|
L>=50 and 2 or
|
||||||
L>=2 and 1
|
L>=5 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -73,6 +73,7 @@ return{
|
|||||||
W>=80 and 4 or
|
W>=80 and 4 or
|
||||||
W>=55 and 3 or
|
W>=55 and 3 or
|
||||||
W>=30 and 2 or
|
W>=30 and 2 or
|
||||||
W>=20 and 1
|
W>=20 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -73,6 +73,7 @@ return{
|
|||||||
W>=100 and 4 or
|
W>=100 and 4 or
|
||||||
W>=70 and 3 or
|
W>=70 and 3 or
|
||||||
W>=40 and 2 or
|
W>=40 and 2 or
|
||||||
W>=10 and 1
|
W>=10 and 1 or
|
||||||
|
L>=3 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,7 @@ return{
|
|||||||
W>=110 and 4 or
|
W>=110 and 4 or
|
||||||
W>=80 and 3 or
|
W>=80 and 3 or
|
||||||
W>=50 and 2 or
|
W>=50 and 2 or
|
||||||
W>=20 and 1
|
W>=20 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,7 @@ return{
|
|||||||
W>=100 and 4 or
|
W>=100 and 4 or
|
||||||
W>=80 and 3 or
|
W>=80 and 3 or
|
||||||
W>=50 and 2 or
|
W>=50 and 2 or
|
||||||
W>=20 and 1
|
W>=20 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -35,13 +35,19 @@ return{
|
|||||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[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)
|
getRank=function(P)
|
||||||
if P.stat.row<100 then return end
|
local L=P.stat.row
|
||||||
local T=P.stat.time
|
if L>=100 then
|
||||||
return
|
local T=P.stat.time
|
||||||
T<=70 and 5 or
|
return
|
||||||
T<=110 and 4 or
|
T<=70 and 5 or
|
||||||
T<=160 and 3 or
|
T<=110 and 4 or
|
||||||
T<=240 and 2 or
|
T<=160 and 3 or
|
||||||
1
|
T<=240 and 2 or
|
||||||
|
1
|
||||||
|
else
|
||||||
|
return
|
||||||
|
L>=50 and 1 or
|
||||||
|
L>=10 and 0
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -35,13 +35,19 @@ return{
|
|||||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[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)
|
getRank=function(P)
|
||||||
if P.stat.row<100 then return end
|
local L=P.stat.row
|
||||||
local T=P.stat.time
|
if L>=100 then
|
||||||
return
|
local T=P.stat.time
|
||||||
T<=65 and 5 or
|
return
|
||||||
T<=100 and 4 or
|
T<=65 and 5 or
|
||||||
T<=145 and 3 or
|
T<=100 and 4 or
|
||||||
T<=220 and 2 or
|
T<=145 and 3 or
|
||||||
1
|
T<=220 and 2 or
|
||||||
|
1
|
||||||
|
else
|
||||||
|
return
|
||||||
|
L>=50 and 1 or
|
||||||
|
L>=10 and 0
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -41,6 +41,7 @@ return{
|
|||||||
L>=1500 and 4 or
|
L>=1500 and 4 or
|
||||||
L>=1000 and 3 or
|
L>=1000 and 3 or
|
||||||
L>=500 and 2 or
|
L>=500 and 2 or
|
||||||
L>=100 and 1
|
L>=100 and 1 or
|
||||||
|
L>=20 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -58,6 +58,7 @@ return{
|
|||||||
L>=400 and 4 or
|
L>=400 and 4 or
|
||||||
L>=200 and 3 or
|
L>=200 and 3 or
|
||||||
L>=100 and 2 or
|
L>=100 and 2 or
|
||||||
L>=10 and 1
|
L>=40 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,16 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local function check(P)
|
local function check(P)
|
||||||
if P.stat.row>=200 then
|
if P.stat.row>=P.gameEnv.target then
|
||||||
Event.win(P,"finish")
|
local T=P.gameEnv.target
|
||||||
|
if T==50 then
|
||||||
|
P.gameEnv.drop=.25
|
||||||
|
P.gameEnv.target=100
|
||||||
|
elseif T==100 then
|
||||||
|
P.gameEnv._20G=true
|
||||||
|
P.gameEnv.target=200
|
||||||
|
else
|
||||||
|
Event.win(P,"finish")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -23,8 +32,9 @@ return{
|
|||||||
},
|
},
|
||||||
color=color.magenta,
|
color=color.magenta,
|
||||||
env={
|
env={
|
||||||
_20G=true,fall=15,
|
drop=.5,fall=30,
|
||||||
dropPiece=check,
|
target=50,dropPiece=check,
|
||||||
|
mindas=7,minarr=1,
|
||||||
bg="strap",bgm="race",
|
bg="strap",bgm="race",
|
||||||
},
|
},
|
||||||
load=function()
|
load=function()
|
||||||
@@ -33,7 +43,7 @@ return{
|
|||||||
mesDisp=function(P,dx,dy)
|
mesDisp=function(P,dx,dy)
|
||||||
setFont(45)
|
setFont(45)
|
||||||
mStr(P.stat.row,-82,320)
|
mStr(P.stat.row,-82,320)
|
||||||
mStr(200,-82,370)
|
mStr(P.gameEnv.target,-82,370)
|
||||||
gc.rectangle("fill",-125,375,90,4)
|
gc.rectangle("fill",-125,375,90,4)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||||
@@ -45,12 +55,13 @@ return{
|
|||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=200 and 5 or
|
T<=200 and 5 or
|
||||||
T<=260 and 4 or
|
T<=270 and 4 or
|
||||||
3
|
3
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
L>=100 and 2 or
|
L>=100 and 2 or
|
||||||
L>=50 and 1
|
L>=50 and 1 or
|
||||||
|
L>=10 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,14 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local marathon_drop={[0]=60,48,40,30,24,18,15,12,10,8,7,6,5,4,3,2,1,1,0,0}
|
local dropSpeed={[0]=60,50,40,30,25,20,15,12,9,7,5,4,3,2,1,1,.5,.5,.25,.25}
|
||||||
local function check_LVup(P)
|
local function check_LVup(P)
|
||||||
local T=P.modeData.point+10
|
local T=P.modeData.point+10
|
||||||
if P.stat.row>=T then
|
if P.stat.row>=T then
|
||||||
if T==200 then
|
if T==200 then
|
||||||
Event.win(P,"finish")
|
Event.win(P,"finish")
|
||||||
else
|
else
|
||||||
P.gameEnv.drop=marathon_drop[T/10]
|
P.gameEnv.drop=dropSpeed[T/10]
|
||||||
if T==180 then P.gameEnv._20G=true end
|
|
||||||
SFX("reach")
|
|
||||||
P.modeData.point=T
|
P.modeData.point=T
|
||||||
|
SFX("reach")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -32,8 +31,9 @@ return{
|
|||||||
},
|
},
|
||||||
color=color.green,
|
color=color.green,
|
||||||
env={
|
env={
|
||||||
drop=60,fall=20,
|
fall=30,
|
||||||
target=10,dropPiece=check_LVup,
|
target=10,dropPiece=check_LVup,
|
||||||
|
mindas=7,minarr=1,
|
||||||
bg="strap",bgm="way",
|
bg="strap",bgm="way",
|
||||||
},
|
},
|
||||||
load=function()
|
load=function()
|
||||||
@@ -53,13 +53,14 @@ return{
|
|||||||
if L>=200 then
|
if L>=200 then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=180 and 5 or
|
T<=185 and 5 or
|
||||||
T<=240 and 4 or
|
T<=250 and 4 or
|
||||||
3
|
3
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
L>=150 and 2 or
|
L>=150 and 2 or
|
||||||
L>=100 and 1
|
L>=100 and 1 or
|
||||||
|
L>=20 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ return{
|
|||||||
wait=death_wait[1],
|
wait=death_wait[1],
|
||||||
fall=death_fall[1],
|
fall=death_fall[1],
|
||||||
dropPiece=score,
|
dropPiece=score,
|
||||||
das=6,arr=1,
|
mindas=6,minarr=1,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
bg="game2",bgm="secret7th",
|
bg="game2",bgm="secret7th",
|
||||||
},
|
},
|
||||||
@@ -85,7 +85,8 @@ return{
|
|||||||
return
|
return
|
||||||
S>=426 and 3 or
|
S>=426 and 3 or
|
||||||
S>=326 and 2 or
|
S>=326 and 2 or
|
||||||
S>=226 and 1
|
S>=226 and 1 or
|
||||||
|
S>=50 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -89,7 +89,8 @@ return{
|
|||||||
return
|
return
|
||||||
S>=420 and 3 or
|
S>=420 and 3 or
|
||||||
S>=250 and 2 or
|
S>=250 and 2 or
|
||||||
S>=120 and 1
|
S>=120 and 1 or
|
||||||
|
L>=30 and 0
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ return{
|
|||||||
_20G=true,lock=12,
|
_20G=true,lock=12,
|
||||||
wait=10,fall=10,
|
wait=10,fall=10,
|
||||||
dropPiece=score,
|
dropPiece=score,
|
||||||
das=5,arr=1,
|
mindas=5,minarr=1,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
easyFresh=false,bone=true,
|
easyFresh=false,bone=true,
|
||||||
bg="none",bgm="shining terminal",
|
bg="none",bgm="shining terminal",
|
||||||
@@ -79,6 +79,7 @@ return{
|
|||||||
S>=800 and 4 or
|
S>=800 and 4 or
|
||||||
S>=600 and 3 or
|
S>=600 and 3 or
|
||||||
S>=400 and 2 or
|
S>=400 and 2 or
|
||||||
S>=200 and 1
|
S>=200 and 1 or
|
||||||
|
L>=50 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -52,6 +52,7 @@ return{
|
|||||||
L>=13 and 4 or
|
L>=13 and 4 or
|
||||||
L>=10 and 3 or
|
L>=10 and 3 or
|
||||||
L>=7 and 2 or
|
L>=7 and 2 or
|
||||||
L>=4 and 1
|
L>=4 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -52,6 +52,7 @@ return{
|
|||||||
L>=12 and 4 or
|
L>=12 and 4 or
|
||||||
L>=9 and 3 or
|
L>=9 and 3 or
|
||||||
L>=6 and 2 or
|
L>=6 and 2 or
|
||||||
L>=3 and 1
|
L>=3 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -51,6 +51,7 @@ return{
|
|||||||
L>=20 and 4 or
|
L>=20 and 4 or
|
||||||
L>=16 and 3 or
|
L>=16 and 3 or
|
||||||
L>=13 and 2 or
|
L>=13 and 2 or
|
||||||
L>=10 and 1
|
L>=10 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -109,6 +109,7 @@ return{
|
|||||||
L>=40 and 4 or
|
L>=40 and 4 or
|
||||||
L>=30 and 3 or
|
L>=30 and 3 or
|
||||||
L>=20 and 2 or
|
L>=20 and 2 or
|
||||||
L>=10 and 1
|
L>=10 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -92,6 +92,7 @@ return{
|
|||||||
L>=60 and 4 or
|
L>=60 and 4 or
|
||||||
L>=40 and 3 or
|
L>=40 and 3 or
|
||||||
L>=25 and 2 or
|
L>=25 and 2 or
|
||||||
L>=15 and 1
|
L>=15 and 1 or
|
||||||
|
L>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ return{
|
|||||||
},
|
},
|
||||||
color=color.cyan,
|
color=color.cyan,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=1e99,lock=1e99,
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
dropPiece=update_round,
|
dropPiece=update_round,
|
||||||
bg="game2",bgm="push",
|
bg="game2",bgm="push",
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ return{
|
|||||||
},
|
},
|
||||||
color=color.green,
|
color=color.green,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=1e99,lock=1e99,
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
dropPiece=update_round,
|
dropPiece=update_round,
|
||||||
bg="game2",bgm="push",
|
bg="game2",bgm="push",
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ return{
|
|||||||
},
|
},
|
||||||
color=color.magenta,
|
color=color.magenta,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=1e99,lock=1e99,
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
dropPiece=update_round,
|
dropPiece=update_round,
|
||||||
bg="game2",bgm="push",
|
bg="game2",bgm="push",
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ return{
|
|||||||
},
|
},
|
||||||
color=color.red,
|
color=color.red,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=1e99,lock=1e99,
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
dropPiece=update_round,
|
dropPiece=update_round,
|
||||||
bg="game2",bgm="push",
|
bg="game2",bgm="push",
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ return{
|
|||||||
},
|
},
|
||||||
color=color.lightYellow,
|
color=color.lightYellow,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=1e99,lock=1e99,
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
dropPiece=update_round,
|
dropPiece=update_round,
|
||||||
bg="game2",bgm="push",
|
bg="game2",bgm="push",
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ return{
|
|||||||
T<=10 and 4 or
|
T<=10 and 4 or
|
||||||
T<=25 and 3 or
|
T<=25 and 3 or
|
||||||
T<=40 and 2 or
|
T<=40 and 2 or
|
||||||
T<=60 and 1
|
T<=60 and 1 or
|
||||||
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,7 @@ return{
|
|||||||
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<=200 and 2 or
|
||||||
T<=270 and 1
|
T<=270 and 1 or
|
||||||
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,7 @@ return{
|
|||||||
T<=1000 and 4 or
|
T<=1000 and 4 or
|
||||||
T<=1400 and 3 or
|
T<=1400 and 3 or
|
||||||
T<=2200 and 2 or
|
T<=2200 and 2 or
|
||||||
T<=3000 and 1
|
T<=3000 and 1 or
|
||||||
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,7 @@ return{
|
|||||||
T<=18 and 4 or
|
T<=18 and 4 or
|
||||||
T<=45 and 3 or
|
T<=45 and 3 or
|
||||||
T<=70 and 2 or
|
T<=70 and 2 or
|
||||||
T<=100 and 1
|
T<=100 and 1 or
|
||||||
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,8 @@ return{
|
|||||||
T<=25 and 5 or
|
T<=25 and 5 or
|
||||||
T<=32 and 4 or
|
T<=32 and 4 or
|
||||||
T<=40 and 3 or
|
T<=40 and 3 or
|
||||||
T<=60 and 2 or
|
T<=62 and 2 or
|
||||||
T<=120 and 1
|
T<=126 and 1 or
|
||||||
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,7 @@ return{
|
|||||||
T<=330 and 4 or
|
T<=330 and 4 or
|
||||||
T<=420 and 3 or
|
T<=420 and 3 or
|
||||||
T<=626 and 2 or
|
T<=626 and 2 or
|
||||||
T<=1000 and 1
|
T<=1000 and 1 or
|
||||||
|
0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -53,6 +53,7 @@ return{
|
|||||||
W>=60 and 4 or
|
W>=60 and 4 or
|
||||||
W>=45 and 3 or
|
W>=45 and 3 or
|
||||||
W>=30 and 2 or
|
W>=30 and 2 or
|
||||||
W>=15 and 1
|
W>=15 and 1 or
|
||||||
|
W>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -58,6 +58,7 @@ return{
|
|||||||
W>=60 and 4 or
|
W>=60 and 4 or
|
||||||
W>=45 and 3 or
|
W>=45 and 3 or
|
||||||
W>=30 and 2 or
|
W>=30 and 2 or
|
||||||
W>=15 and 1
|
W>=15 and 1 or
|
||||||
|
W>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -54,6 +54,7 @@ return{
|
|||||||
W>=80 and 4 or
|
W>=80 and 4 or
|
||||||
W>=55 and 3 or
|
W>=55 and 3 or
|
||||||
W>=30 and 2 or
|
W>=30 and 2 or
|
||||||
W>=15 and 1
|
W>=15 and 1 or
|
||||||
|
W>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -58,6 +58,7 @@ return{
|
|||||||
W>=55 and 4 or
|
W>=55 and 4 or
|
||||||
W>=45 and 3 or
|
W>=45 and 3 or
|
||||||
W>=30 and 2 or
|
W>=30 and 2 or
|
||||||
W>=15 and 1
|
W>=15 and 1 or
|
||||||
|
W>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -58,6 +58,7 @@ return{
|
|||||||
W>=26 and 4 or
|
W>=26 and 4 or
|
||||||
W>=20 and 3 or
|
W>=20 and 3 or
|
||||||
W>=10 and 2 or
|
W>=10 and 2 or
|
||||||
W>=5 and 1
|
W>=5 and 1 or
|
||||||
|
W>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,7 @@ return{
|
|||||||
L>=126 and 4 or
|
L>=126 and 4 or
|
||||||
L>=90 and 3 or
|
L>=90 and 3 or
|
||||||
L>=60 and 2 or
|
L>=60 and 2 or
|
||||||
L>=30 and 1
|
L>=30 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,7 @@ return{
|
|||||||
L>=126 and 4 or
|
L>=126 and 4 or
|
||||||
L>=90 and 3 or
|
L>=90 and 3 or
|
||||||
L>=60 and 2 or
|
L>=60 and 2 or
|
||||||
L>=30 and 1
|
L>=30 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,7 @@ return{
|
|||||||
L>=140 and 4 or
|
L>=140 and 4 or
|
||||||
L>=90 and 3 or
|
L>=90 and 3 or
|
||||||
L>=60 and 2 or
|
L>=60 and 2 or
|
||||||
L>=30 and 1
|
L>=30 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,7 @@ return{
|
|||||||
L>=140 and 4 or
|
L>=140 and 4 or
|
||||||
L>=90 and 3 or
|
L>=90 and 3 or
|
||||||
L>=60 and 2 or
|
L>=60 and 2 or
|
||||||
L>=30 and 1
|
L>=30 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,7 @@ return{
|
|||||||
L>=126 and 4 or
|
L>=126 and 4 or
|
||||||
L>=80 and 3 or
|
L>=80 and 3 or
|
||||||
L>=50 and 2 or
|
L>=50 and 2 or
|
||||||
L>=20 and 1
|
L>=20 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -49,6 +49,7 @@ return{
|
|||||||
L>=126 and 4 or
|
L>=126 and 4 or
|
||||||
L>=80 and 3 or
|
L>=80 and 3 or
|
||||||
L>=50 and 2 or
|
L>=50 and 2 or
|
||||||
L>=20 and 1
|
L>=20 and 1 or
|
||||||
|
L>=5 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -50,6 +50,7 @@ return{
|
|||||||
L>=150 and 4 or
|
L>=150 and 4 or
|
||||||
L>=100 and 3 or
|
L>=100 and 3 or
|
||||||
L>=70 and 2 or
|
L>=70 and 2 or
|
||||||
L>=40 and 1
|
L>=40 and 1 or
|
||||||
|
L>=10 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -50,6 +50,7 @@ return{
|
|||||||
L>=150 and 4 or
|
L>=150 and 4 or
|
||||||
L>=100 and 3 or
|
L>=100 and 3 or
|
||||||
L>=70 and 2 or
|
L>=70 and 2 or
|
||||||
L>=40 and 1
|
L>=40 and 1 or
|
||||||
|
L>=10 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -96,6 +96,7 @@ return{
|
|||||||
R<=3 and 4 or
|
R<=3 and 4 or
|
||||||
R<=5 and 3 or
|
R<=5 and 3 or
|
||||||
R<=10 and 2 or
|
R<=10 and 2 or
|
||||||
R<=15 and 1
|
R<=15 and 1 or
|
||||||
|
R<=45 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -96,6 +96,7 @@ return{
|
|||||||
R==2 and 4 or
|
R==2 and 4 or
|
||||||
R<=4 and 3 or
|
R<=4 and 3 or
|
||||||
R<=6 and 2 or
|
R<=6 and 2 or
|
||||||
R<=8 and 1
|
R<=8 and 1 or
|
||||||
|
R<=45 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -96,6 +96,7 @@ return{
|
|||||||
R==2 and 4 or
|
R==2 and 4 or
|
||||||
R==3 and 3 or
|
R==3 and 3 or
|
||||||
R==4 and 2 or
|
R==4 and 2 or
|
||||||
R<=6 and 1
|
R<=6 and 1 or
|
||||||
|
R<=45 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -96,6 +96,7 @@ return{
|
|||||||
R<=3 and 4 or
|
R<=3 and 4 or
|
||||||
R<=6 and 3 or
|
R<=6 and 3 or
|
||||||
R<=10 and 2 or
|
R<=10 and 2 or
|
||||||
R<=20 and 1
|
R<=20 and 1 or
|
||||||
|
R<=90 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -96,6 +96,7 @@ return{
|
|||||||
R<=3 and 4 or
|
R<=3 and 4 or
|
||||||
R<=6 and 3 or
|
R<=6 and 3 or
|
||||||
R<=8 and 2 or
|
R<=8 and 2 or
|
||||||
R<=10 and 1
|
R<=10 and 1 or
|
||||||
|
R<=90 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -96,6 +96,7 @@ return{
|
|||||||
R==2 and 4 or
|
R==2 and 4 or
|
||||||
R==3 and 3 or
|
R==3 and 3 or
|
||||||
R<=5 and 2 or
|
R<=5 and 2 or
|
||||||
R<=7 and 1
|
R<=7 and 1 or
|
||||||
|
R<=90 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -41,7 +41,7 @@ return{
|
|||||||
mDraw(drawableText.tsd,-82,407)
|
mDraw(drawableText.tsd,-82,407)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||||
scoreDisp=function(D)return"NO."..D[1]" KO:"..D[2]end,
|
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[2]end,
|
||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[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)
|
getRank=function(P)
|
||||||
local T=P.modeData.event
|
local T=P.modeData.event
|
||||||
@@ -50,6 +50,7 @@ return{
|
|||||||
T>=20 and 4 or
|
T>=20 and 4 or
|
||||||
T>=15 and 3 or
|
T>=15 and 3 or
|
||||||
T>=10 and 2 or
|
T>=10 and 2 or
|
||||||
T>=6 and 1
|
T>=6 and 1 or
|
||||||
|
T>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -41,7 +41,7 @@ return{
|
|||||||
mDraw(drawableText.tsd,-82,407)
|
mDraw(drawableText.tsd,-82,407)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||||
scoreDisp=function(D)return"NO."..D[1]" KO:"..D[2]end,
|
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[2]end,
|
||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[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)
|
getRank=function(P)
|
||||||
local T=P.modeData.event
|
local T=P.modeData.event
|
||||||
@@ -50,6 +50,7 @@ return{
|
|||||||
T>=19 and 4 or
|
T>=19 and 4 or
|
||||||
T>=16 and 3 or
|
T>=16 and 3 or
|
||||||
T>=13 and 2 or
|
T>=13 and 2 or
|
||||||
T>=10 and 1
|
T>=10 and 1 or
|
||||||
|
T>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -41,7 +41,7 @@ return{
|
|||||||
mDraw(drawableText.tsd,-82,407)
|
mDraw(drawableText.tsd,-82,407)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||||
scoreDisp=function(D)return"NO."..D[1]" KO:"..D[2]end,
|
scoreDisp=function(D)return"NO."..D[1].." KO:"..D[2]end,
|
||||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[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)
|
getRank=function(P)
|
||||||
local T=P.modeData.event
|
local T=P.modeData.event
|
||||||
@@ -50,6 +50,7 @@ return{
|
|||||||
T>=18 and 4 or
|
T>=18 and 4 or
|
||||||
T>=16 and 3 or
|
T>=16 and 3 or
|
||||||
T>=14 and 2 or
|
T>=14 and 2 or
|
||||||
T>=12 and 1
|
T>=12 and 1 or
|
||||||
|
T>=1 and 0
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
@@ -35,10 +35,10 @@ return{
|
|||||||
getRank=function(P)
|
getRank=function(P)
|
||||||
local T=P.stat.score
|
local T=P.stat.score
|
||||||
return
|
return
|
||||||
T>=1e5 and 5 or
|
T>=12e4 and 5 or
|
||||||
T>=8e4 and 4 or
|
T>=10e4 and 4 or
|
||||||
T>=5e4 and 3 or
|
T>=6e4 and 3 or
|
||||||
T>=2e4 and 2 or
|
T>=3e4 and 2 or
|
||||||
T>=1e4 and 1
|
T>=1e4 and 1
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
37
player.lua
37
player.lua
@@ -27,6 +27,7 @@ local gameEnv0={
|
|||||||
freshLimit=1e99,easyFresh=true,
|
freshLimit=1e99,easyFresh=true,
|
||||||
fine=false,fineKill=false,
|
fine=false,fineKill=false,
|
||||||
target=1e99,dropPiece=NULL,
|
target=1e99,dropPiece=NULL,
|
||||||
|
mindas=0,minarr=0,
|
||||||
bg="none",bgm="race"
|
bg="none",bgm="race"
|
||||||
}
|
}
|
||||||
local renATK={[0]=0,0,0,1,1,2,2,3,3,4,4}--3 else
|
local renATK={[0]=0,0,0,1,1,2,2,3,3,4,4}--3 else
|
||||||
@@ -41,9 +42,10 @@ local spinSCR={--[blockName][row]
|
|||||||
{250,800,1500},--T
|
{250,800,1500},--T
|
||||||
{300,1000,2200},--O
|
{300,1000,2200},--O
|
||||||
{300,1000,1800},--I
|
{300,1000,1800},--I
|
||||||
}--MUL:1.2,2.0
|
}
|
||||||
--Techrash:1K;MUL:1.3,1.8
|
--B2BMUL:1.2/2.0
|
||||||
--Mini*=.5
|
--Techrash:1K;MUL:1.3/1.8
|
||||||
|
--Mini*=.6
|
||||||
local visible_opt={show=1e99,time=300,fast=20,none=5}
|
local visible_opt={show=1e99,time=300,fast=20,none=5}
|
||||||
local reAtk={0,0,1,1,1,2,2,3,3}
|
local reAtk={0,0,1,1,1,2,2,3,3}
|
||||||
local reDef={0,1,1,2,3,3,4,4,5}
|
local reDef={0,1,1,2,3,3,4,4,5}
|
||||||
@@ -724,11 +726,23 @@ function player.update(P,dt)
|
|||||||
goto stop
|
goto stop
|
||||||
end
|
end
|
||||||
if P.curY~=P.y_img then
|
if P.curY~=P.y_img then
|
||||||
if P.dropDelay>=0 then
|
local D=P.dropDelay
|
||||||
P.dropDelay=P.dropDelay-1
|
if D>1 then
|
||||||
if P.dropDelay>0 then goto stop end
|
P.dropDelay=D-1
|
||||||
|
goto stop
|
||||||
|
end
|
||||||
|
if D==1 then
|
||||||
|
P.curY=P.curY-1
|
||||||
|
else
|
||||||
|
local _=P.curY-P.y_img--max fall dist
|
||||||
|
D=1/D--fall dist
|
||||||
|
if D<_ then
|
||||||
|
P.curY=P.curY-D
|
||||||
|
assert(P.curY==int(P.curY),"y:"..P.curY.." fall:"..D.." D_env:"..P.gameEnv.drop)
|
||||||
|
else
|
||||||
|
P.curY=P.y_img
|
||||||
|
end
|
||||||
end
|
end
|
||||||
P.curY=P.curY-1
|
|
||||||
P.spinLast=false
|
P.spinLast=false
|
||||||
if P.y_img~=P.curY then
|
if P.y_img~=P.curY then
|
||||||
P.dropDelay=P.gameEnv.drop
|
P.dropDelay=P.gameEnv.drop
|
||||||
@@ -1507,7 +1521,7 @@ function player.drop(P)--Place piece
|
|||||||
P:showText(text.mini,0,-80,35,"appear")
|
P:showText(text.mini,0,-80,35,"appear")
|
||||||
send=send*.5
|
send=send*.5
|
||||||
sendTime=sendTime+60
|
sendTime=sendTime+60
|
||||||
cscore=cscore*.5
|
cscore=cscore*.6
|
||||||
P.b2b=P.b2b+b2bPoint[cc]*.5
|
P.b2b=P.b2b+b2bPoint[cc]*.5
|
||||||
if P.human then
|
if P.human then
|
||||||
VOICE("mini",CHN)
|
VOICE("mini",CHN)
|
||||||
@@ -1524,7 +1538,7 @@ function player.drop(P)--Place piece
|
|||||||
elseif #P.field>0 then
|
elseif #P.field>0 then
|
||||||
P.b2b=max(P.b2b-250,0)
|
P.b2b=max(P.b2b-250,0)
|
||||||
P:showText(text.clear[cc],0,-30,27+cc*3,"appear",(8-cc)*.3)
|
P:showText(text.clear[cc],0,-30,27+cc*3,"appear",(8-cc)*.3)
|
||||||
send=cc-1
|
send=cc-.75
|
||||||
sendTime=20+send*20
|
sendTime=20+send*20
|
||||||
cscore=cscore+clearSCR[cc]
|
cscore=cscore+clearSCR[cc]
|
||||||
P.lastClear=cc
|
P.lastClear=cc
|
||||||
@@ -1542,7 +1556,7 @@ function player.drop(P)--Place piece
|
|||||||
end
|
end
|
||||||
if #P.field==0 then
|
if #P.field==0 then
|
||||||
P:showText(text.PC,0,-80,50,"flicker")
|
P:showText(text.PC,0,-80,50,"flicker")
|
||||||
send=ceil(send^.5)+min(6+P.stat.pc,10)
|
send=send^.5+min(6+P.stat.pc,10)
|
||||||
exblock=exblock+2
|
exblock=exblock+2
|
||||||
sendTime=sendTime+60
|
sendTime=sendTime+60
|
||||||
if P.stat.row>4 then
|
if P.stat.row>4 then
|
||||||
@@ -2100,6 +2114,9 @@ function newPlayer(id,x,y,size,AIdata)
|
|||||||
P.gameEnv[k]=v
|
P.gameEnv[k]=v
|
||||||
end
|
end
|
||||||
end--reset current game settings
|
end--reset current game settings
|
||||||
|
P.gameEnv.das=max(P.gameEnv.das,P.gameEnv.mindas)
|
||||||
|
P.gameEnv.arr=max(P.gameEnv.arr,P.gameEnv.minarr)
|
||||||
|
|
||||||
P.cur={bk={{}},id=0,color=0,name=0}--shape,shapeID,colorID,nameID
|
P.cur={bk={{}},id=0,color=0,name=0}--shape,shapeID,colorID,nameID
|
||||||
P.sc,P.dir,P.r,P.c={0,0},0,0,0--spinCenter,direction,row,col
|
P.sc,P.dir,P.r,P.c={0,0},0,0,0--spinCenter,direction,row,col
|
||||||
P.curX,P.curY,P.y_img=0,0,0--x,y,ghostY
|
P.curX,P.curY,P.y_img=0,0,0--x,y,ghostY
|
||||||
|
|||||||
@@ -50,7 +50,13 @@ local sceneInit={
|
|||||||
curBG="glow"
|
curBG="glow"
|
||||||
BGM("blank")
|
BGM("blank")
|
||||||
destroyPlayers()
|
destroyPlayers()
|
||||||
mapCam.zoomK=scene.swap.tar=="mode"and 5 or 1
|
local cam=mapCam
|
||||||
|
cam.zoomK=scene.swap.tar=="mode"and 5 or 1
|
||||||
|
if cam.sel then
|
||||||
|
local M=modes[cam.sel]
|
||||||
|
cam.x,cam.y=M.x*cam.k+180,M.y*cam.k
|
||||||
|
cam.x1,cam.y1=cam.x,cam.y
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
custom=function()
|
custom=function()
|
||||||
sceneTemp=1--option select
|
sceneTemp=1--option select
|
||||||
|
|||||||
72
toolfunc.lua
72
toolfunc.lua
@@ -20,12 +20,12 @@ end
|
|||||||
|
|
||||||
function toTime(s)
|
function toTime(s)
|
||||||
if s<60 then
|
if s<60 then
|
||||||
return format("%.3fs",s)
|
return format("%.3f",s)
|
||||||
elseif s<3600 then
|
elseif s<3600 then
|
||||||
return format("%dm%.2fs",int(s/60),s%60)
|
return format("%d:%.2f",int(s/60),s%60)
|
||||||
else
|
else
|
||||||
local h=int(s/3600)
|
local h=int(s/3600)
|
||||||
return format("%dh%dm%.2fs",h,int(s-h/60),s%60)
|
return format("%d:%d:%.2f",h,int(s-h/60),s%60)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function mStr(s,x,y)
|
function mStr(s,x,y)
|
||||||
@@ -145,53 +145,65 @@ function restoreVirtualKey()
|
|||||||
end
|
end
|
||||||
function copyBoard()
|
function copyBoard()
|
||||||
local str=""
|
local str=""
|
||||||
for y=1,20 do
|
local H=20
|
||||||
|
for y=20,1,-1 do
|
||||||
|
for x=1,10 do
|
||||||
|
if preField[y][x]~=0 then
|
||||||
|
H=y
|
||||||
|
goto L
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
::L::
|
||||||
|
for y=1,H do
|
||||||
local L=""
|
local L=""
|
||||||
for x=1,10 do
|
for x=1,10 do
|
||||||
local s=preField[y][x]
|
local s=preField[y][x]
|
||||||
if s>7 then s=s-1 end
|
if s>7 then s=s-1 end
|
||||||
L=L..char(66+s)
|
L=L..char(66+s)
|
||||||
end
|
end
|
||||||
str=str..L.."\n"
|
-- str=str..L.."\n"
|
||||||
end
|
end
|
||||||
love.system.setClipboardText("Techmino sketchpad:\n"..str)
|
love.system.setClipboardText("Techmino sketchpad:"..str)
|
||||||
TEXT(text.copySuccess,350,360,40,"appear",.5)
|
TEXT(text.copySuccess,350,360,40,"appear",.5)
|
||||||
end
|
end
|
||||||
function pasteBoard()
|
function pasteBoard()
|
||||||
local str=love.system.getClipboardText()
|
local str=love.system.getClipboardText()
|
||||||
local len=#str
|
local len=#str
|
||||||
local s,p,P,_=0,1,10--sum,pStr,pField
|
local _
|
||||||
if sub(str,1,20)=="Techmino sketchpad:\n"then
|
local p,P=1,10--sum,pStr,pField(r*10+(c-1))
|
||||||
p=21
|
p=find(str,":")
|
||||||
else
|
if p then
|
||||||
p=find(str,":")
|
|
||||||
if p then
|
|
||||||
p=p+1
|
|
||||||
else
|
|
||||||
p=find(str,"[A-N]")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
::L1::
|
|
||||||
_=byte(str,p)
|
|
||||||
if _<65 or _>78 then
|
|
||||||
p=p+1
|
p=p+1
|
||||||
goto L1
|
else
|
||||||
end
|
p=find(str,"[A-N]")
|
||||||
::L2::
|
if not p then
|
||||||
if s==200 then return end
|
|
||||||
if p>len then
|
|
||||||
if s~=200 then
|
|
||||||
goto E
|
goto E
|
||||||
end
|
end
|
||||||
end
|
end--int p*//head
|
||||||
_=byte(sub(str,p))-66
|
::L::
|
||||||
|
_=byte(str,p)
|
||||||
|
if P==210 then
|
||||||
|
return
|
||||||
|
elseif not _ then
|
||||||
|
if P%10~=0 then
|
||||||
|
goto E
|
||||||
|
else
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end--end check
|
||||||
|
_=_-66
|
||||||
|
if _<-1 or _>12 then
|
||||||
|
p=p+1
|
||||||
|
goto L
|
||||||
|
end--skip illegal char
|
||||||
if _>-2 and _<13 then
|
if _>-2 and _<13 then
|
||||||
if _>7 then _=_+1 end
|
if _>7 then _=_+1 end
|
||||||
preField[int(P/10)][P%10+1]=_
|
preField[int(P/10)][P%10+1]=_
|
||||||
s,P=s+1,P+1
|
P=P+1
|
||||||
end
|
end
|
||||||
p=p+1
|
p=p+1
|
||||||
goto L2
|
goto L
|
||||||
::E::
|
::E::
|
||||||
TEXT(text.dataCorrupted,350,360,35,"flicker",.5)
|
TEXT(text.dataCorrupted,350,360,35,"flicker",.5)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
--[[
|
|
||||||
big bang未完成
|
|
||||||
]]
|
|
||||||
local S=[=[
|
local S=[=[
|
||||||
Patron(rmb10+):
|
Patron(rmb10+):
|
||||||
Fireboos
|
Fireboos
|
||||||
@@ -34,12 +31,19 @@ Future outlook:
|
|||||||
auto GUI position in any screen size
|
auto GUI position in any screen size
|
||||||
more FXs & 3d features & animations
|
more FXs & 3d features & animations
|
||||||
Encrypt source code(compile to byte code)
|
Encrypt source code(compile to byte code)
|
||||||
|
0.8.7:
|
||||||
|
better user experience in mode selecting
|
||||||
|
support 2^n G falling speed
|
||||||
|
speed of marathon mode changed
|
||||||
|
shorter clipboard string(when air above)
|
||||||
|
attack system/score system little changed
|
||||||
|
bugs fixed(rank system,some mode error when enter)(again!)
|
||||||
0.8.6:
|
0.8.6:
|
||||||
gamepad can adjust key
|
gamepad can adjust key
|
||||||
add SFX when enter game
|
add SFX when enter game
|
||||||
map GUI little adjusted
|
map GUI little adjusted
|
||||||
event system little changed(no ctrl when scene swapping)
|
event system little changed(no ctrl when scene swapping)
|
||||||
bug fixed(rank system,some mode error when enter)
|
bugs fixed(rank system,some mode error when enter)
|
||||||
0.8.5-:
|
0.8.5-:
|
||||||
mode map!Brandly new GUI for mode selecting
|
mode map!Brandly new GUI for mode selecting
|
||||||
mode unlock system,not that scary for noob
|
mode unlock system,not that scary for noob
|
||||||
|
|||||||
@@ -73,11 +73,11 @@ local virtualkeySet={
|
|||||||
},--PC key feedback(top&in a row)
|
},--PC key feedback(top&in a row)
|
||||||
}
|
}
|
||||||
local customSet={
|
local customSet={
|
||||||
{20,20,1,1,7,1,1,1,3,4,1,2,3},
|
{3,20,1,1,7,1,1,1,3,4,1,2,3},
|
||||||
{18,20,1,1,7,1,1,1,8,3,8,3,3},
|
{5,20,1,1,7,1,1,1,8,3,8,3,3},
|
||||||
{22,22,1,1,7,3,1,1,8,4,1,7,7},
|
{1,22,1,1,7,3,1,1,8,4,1,7,7},
|
||||||
{20,20,1,1,7,1,1,3,8,3,1,7,8},
|
{3,20,1,1,7,1,1,3,8,3,1,7,8},
|
||||||
{1,11,8,11,4,1,2,1,8,3,1,4,9},
|
{25,11,8,11,4,1,2,1,8,3,1,4,9},
|
||||||
}
|
}
|
||||||
local function useDefaultSet(n)
|
local function useDefaultSet(n)
|
||||||
for i=1,#customSet[n]do
|
for i=1,#customSet[n]do
|
||||||
|
|||||||
Reference in New Issue
Block a user