Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa981160e8 | ||
|
|
24a95a36d0 | ||
|
|
583819e8c4 | ||
|
|
4c193efd41 | ||
|
|
8208e7b132 | ||
|
|
7e2bd7b08d | ||
|
|
29258e2a35 | ||
|
|
9e028bc907 | ||
|
|
75ae05ffc9 |
@@ -10,12 +10,12 @@ return {
|
|||||||
{"新人学习/练习路线",
|
{"新人学习/练习路线",
|
||||||
"读我 必读 萌新 xinren new noob readme",
|
"读我 必读 萌新 xinren new noob readme",
|
||||||
"help",
|
"help",
|
||||||
"以下是关于提升真正打块能力的指引,如果在以下任何项目练习过程中感到有困难,可以适当回去玩玩自己喜欢的项目。别忘了你是来 “玩” 游戏的,兴趣最重要。\n以下给出几个新手时期的主线任务树,前期主要就应该练习以下内容,学定式和T-Spin什么的对实力帮助很小(我们不认为靠定式对战秒其他萌新是有效实力):\n(注意,三段应当同时进行,不是A→B→C)\nA. 堆叠能力练习方法\n\tA1. 手上的块可以放的时候先别急着放,看看下一块有没有地方,如果放不下去就看看手上的能不能换个地方\n\tA2. 尝试把地形尽量控制得平整,因为大多数情况比较平的地形来啥块都比较容易放得下去\n\tA3. 允许hold的时候可以多想想手里和hold的块和后续几块应该怎么安排顺序,长远地使地形平整\nB. 操作效率与速度练习方法\n\tB1. 不要每一块都拿影子去对形状对位置,要自己想象这个块转一下是什么方向,想好了再开始按按键\n\tB2. 学习双旋,能逆时针转一次就不要顺时针转三次,费手\n\tB3. 学习极简,刚开始不用管速度,保证正确率最重要,养成良好习惯以后再提速快得很\nC. 堆叠能力考核\n\tC1. 稳定完成40行不死(可以用hold)\n\tC2. 稳定完成40行不死(不能用hold)\n\tC3. 稳定全消四完成40行(可以用hold)\n\tC4. 稳定全消四完成40行(不能用hold)\n以上都是根据社区和个人经验总结的模糊方法与目标,所以C的考核可以根据自身情况调整严格程度(例如 “稳定” 的具体成功率)。\n注:完成C的考核后,需要在未来一直注意没有上限的A1,这是方块的根本元素之一,强大的读next能力可以让你快速上手任何变种玩法。",
|
"以下是关于提升真正打块能力的指引,如果在以下任何项目练习过程中感到有困难,可以适当回去玩玩自己喜欢的项目。别忘了你是来 “玩” 游戏的,兴趣最重要。\n以下给出几个新手时期的主线任务树,前期主要就应该练习以下内容,学定式和T-Spin什么的对实力帮助很小(我们不认为靠定式对战秒其他萌新是有效实力):\n(注意,三段应当同时进行,不是A→B→C)\nA. 堆叠能力练习方法\n\tA1. 手上的块可以放的时候先别急着放,看看下一块有没有地方,如果放不下去就看看手上的能不能换个地方\n\tA2. 尝试把地形尽量控制得平整,因为大多数情况比较平的地形来啥块都比较容易放得下去\n\tA3. 允许hold的时候可以多想想手里和hold的块和后续几块应该怎么安排顺序,长远地使地形平整\nB. 操作效率与速度练习方法\n\tB1. 不要每一块都拿影子去对形状对位置,要自己想象这个块转一下是什么方向,想好了再开始按按键\n\tB2. 学习双旋,能逆时针转一次就不要顺时针转三次,费手\n\tB3. 学习极简,刚开始不用管速度,保证正确率最重要,养成良好习惯以后再提速快得很\nC. 堆叠能力考核\n\tC1. 稳定完成40行不死(可以用hold)\n\tC2. 稳定完成40行不死(不能用hold)\n\tC3. 稳定全程消四完成40行(可以用hold)\n\tC4. 稳定全程消四完成40行(不能用hold)\n以上都是根据社区和个人经验总结的模糊方法与目标,所以C的考核可以根据自身情况调整严格程度(例如 “稳定” 的具体成功率)。\n注:完成C的考核后,需要在未来一直注意没有上限的A1,这是方块的根本元素之一,强大的读next能力可以让你快速上手任何变种玩法。",
|
||||||
},
|
},
|
||||||
{"关于T-spin学习",
|
{"关于T-spin学习",
|
||||||
"T旋 T转 tspins",
|
"T旋 T转 tspins",
|
||||||
"help",
|
"help",
|
||||||
"首先指出:要能熟练做出各种T-spin并不是只看着T-spin的那一小部分地形就可以玩好的,对玩家堆叠能力和计算next能力同样也有较高的要求。\n\n如果不只是出于娱乐、随便玩玩的目的,是真的想不断提升T-spin能力变强,请在基础能力达到一定要求前不要刻意去学习太多的T-spin,而先把重点放在堆叠等基本功上。\n\n参考学T门槛水平:40L达到60s以内(可以视个人情况调整为40~120s)、能够轻松完成全消四的40L、不使用Hold不降太多速度的前提下比较轻松完成全消四的40L(培养看next的意识和算力)。",
|
"首先指出:要能熟练做出各种T-spin并不是只看着T-spin的那一小部分地形就可以玩好的,对玩家堆叠能力和计算next能力同样也有较高的要求。\n\n如果不只是出于娱乐、随便玩玩的目的,是真的想不断提升T-spin能力变强,请在基础能力达到一定要求前不要刻意去学习太多的T-spin,而先把重点放在堆叠等基本功上。\n\n参考学T门槛水平:40L达到60s以内(可以视个人情况调整为40~120s)、能够轻松完成全程消四的40L、不使用Hold不降太多速度的前提下比较轻松完成全程消四的40L(培养看next的意识和算力)。",
|
||||||
},
|
},
|
||||||
{"游戏官网",
|
{"游戏官网",
|
||||||
"official website homepage mainpage guanwang",
|
"official website homepage mainpage guanwang",
|
||||||
|
|||||||
@@ -976,6 +976,8 @@ C. Gamepad
|
|||||||
['infinite']= {"Infinite", "", "Just a sandbox"},
|
['infinite']= {"Infinite", "", "Just a sandbox"},
|
||||||
['infinite_dig']= {"Dig", "INFINITE", "Dig-diggin'-dug"},
|
['infinite_dig']= {"Dig", "INFINITE", "Dig-diggin'-dug"},
|
||||||
['marathon_inf']= {"Marathon", "INFINITE", "Infinite marathon."},
|
['marathon_inf']= {"Marathon", "INFINITE", "Infinite marathon."},
|
||||||
|
['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
-- ['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
|
||||||
['custom_clear']= {"Custom", "NORMAL"},
|
['custom_clear']= {"Custom", "NORMAL"},
|
||||||
['custom_puzzle']= {"Custom", "PUZZLE"},
|
['custom_puzzle']= {"Custom", "PUZZLE"},
|
||||||
|
|||||||
@@ -941,6 +941,7 @@ return {
|
|||||||
['infinite']= {"Infinito", "", "Modo Sandbox."},
|
['infinite']= {"Infinito", "", "Modo Sandbox."},
|
||||||
['infinite_dig']= {"Infinito: Queso", "", "Limpia, limpia, más limpia que tú."},
|
['infinite_dig']= {"Infinito: Queso", "", "Limpia, limpia, más limpia que tú."},
|
||||||
['marathon_inf']= {"Maratón", "Infinito", "Maratón infinita."},
|
['marathon_inf']= {"Maratón", "Infinito", "Maratón infinita."},
|
||||||
|
-- ['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
|
||||||
['custom_clear']= {"Personalizado", "Normal"},
|
['custom_clear']= {"Personalizado", "Normal"},
|
||||||
['custom_puzzle']= {"Personalizado", "Puzzle"},
|
['custom_puzzle']= {"Personalizado", "Puzzle"},
|
||||||
|
|||||||
@@ -915,6 +915,7 @@ return {
|
|||||||
['infinite']= {"Infini", "", "Mode tranquile."},
|
['infinite']= {"Infini", "", "Mode tranquile."},
|
||||||
['infinite_dig']= {"Infini : Dig", "", "Creuser, creuser, creuser."},
|
['infinite_dig']= {"Infini : Dig", "", "Creuser, creuser, creuser."},
|
||||||
['marathon_inf']= {"Marathon", "Infini", "Marathon infini."},
|
['marathon_inf']= {"Marathon", "Infini", "Marathon infini."},
|
||||||
|
-- ['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
|
||||||
['custom_clear']= {"Perso.", "NORMAL"},
|
['custom_clear']= {"Perso.", "NORMAL"},
|
||||||
['custom_puzzle']= {"Perso.", "PUZZLE"},
|
['custom_puzzle']= {"Perso.", "PUZZLE"},
|
||||||
|
|||||||
@@ -938,6 +938,7 @@ return {
|
|||||||
['infinite']= {"Tak Terbatas", "", "Bak pasir"},
|
['infinite']= {"Tak Terbatas", "", "Bak pasir"},
|
||||||
['infinite_dig']= {"Tak Terbatas: Gali","", "Gali, gali, gali"},
|
['infinite_dig']= {"Tak Terbatas: Gali","", "Gali, gali, gali"},
|
||||||
['marathon_inf']= {"Maraton", "TAK TERBATAS", "Maraton tanpa akhir."},
|
['marathon_inf']= {"Maraton", "TAK TERBATAS", "Maraton tanpa akhir."},
|
||||||
|
-- ['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
|
||||||
['custom_clear']= {"Tersesuai", "NORMAL"},
|
['custom_clear']= {"Tersesuai", "NORMAL"},
|
||||||
['custom_puzzle']= {"Tersesuai", "TEKA-TEKI"},
|
['custom_puzzle']= {"Tersesuai", "TEKA-TEKI"},
|
||||||
|
|||||||
@@ -982,6 +982,7 @@ C. ゲームパッド
|
|||||||
['infinite']= {"無限", "", "サンドボックス"},
|
['infinite']= {"無限", "", "サンドボックス"},
|
||||||
['infinite_dig']= {"無限: 掘り", "", "掘れ掘れ掘れ掘れ掘れ掘・・・"},
|
['infinite_dig']= {"無限: 掘り", "", "掘れ掘れ掘れ掘れ掘れ掘・・・"},
|
||||||
['marathon_inf']= {"マラソン", "INFINITE", "ずっと走れるね"},
|
['marathon_inf']= {"マラソン", "INFINITE", "ずっと走れるね"},
|
||||||
|
-- ['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
|
||||||
['custom_clear']= {"カスタム", "NORMAL"},
|
['custom_clear']= {"カスタム", "NORMAL"},
|
||||||
['custom_puzzle']= {"カスタム", "PUZZLE"},
|
['custom_puzzle']= {"カスタム", "PUZZLE"},
|
||||||
|
|||||||
@@ -928,6 +928,7 @@ return {
|
|||||||
['infinite']= {"Infinito", "", "Modo Sandbox."},
|
['infinite']= {"Infinito", "", "Modo Sandbox."},
|
||||||
['infinite_dig']= {"Infinito:Cave", "", "Cava, Cava, Cava."},
|
['infinite_dig']= {"Infinito:Cave", "", "Cava, Cava, Cava."},
|
||||||
['marathon_inf']= {"Maratona", "Infinito", "Infinito maratona."},
|
['marathon_inf']= {"Maratona", "Infinito", "Infinito maratona."},
|
||||||
|
-- ['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
|
||||||
['custom_clear']= {"Custom", "NORMAL"},
|
['custom_clear']= {"Custom", "NORMAL"},
|
||||||
['custom_puzzle']= {"Custom", "PUZZLE"},
|
['custom_puzzle']= {"Custom", "PUZZLE"},
|
||||||
|
|||||||
@@ -979,6 +979,7 @@ C. Tay cầm chơi game (Gamepad):
|
|||||||
['infinite']= {"Infinite", "", "Chỉ là một chế độ tự do"},
|
['infinite']= {"Infinite", "", "Chỉ là một chế độ tự do"},
|
||||||
['infinite_dig']= {"Infinite: Dig", "", "Đào, đào nữa, đào mãi"},
|
['infinite_dig']= {"Infinite: Dig", "", "Đào, đào nữa, đào mãi"},
|
||||||
['marathon_inf']= {"Marathon", "VÔ TẬN", "Marathon không có điểm dừng."},
|
['marathon_inf']= {"Marathon", "VÔ TẬN", "Marathon không có điểm dừng."},
|
||||||
|
-- ['spinren']= {"Spin Ren", "EFFICIENCY", "Spike in a blink"},
|
||||||
|
|
||||||
['custom_clear']= {"Custom", "NORMAL"},
|
['custom_clear']= {"Custom", "NORMAL"},
|
||||||
['custom_puzzle']= {"Custom", "PUZZLE"},
|
['custom_puzzle']= {"Custom", "PUZZLE"},
|
||||||
|
|||||||
@@ -966,6 +966,7 @@ return {
|
|||||||
['infinite']= {"无尽", "", "沙盒"},
|
['infinite']= {"无尽", "", "沙盒"},
|
||||||
['infinite_dig']= {"无尽:挖掘", "", "挖呀挖呀挖"},
|
['infinite_dig']= {"无尽:挖掘", "", "挖呀挖呀挖"},
|
||||||
['marathon_inf']= {"马拉松", "无尽", "无尽马拉松"},
|
['marathon_inf']= {"马拉松", "无尽", "无尽马拉松"},
|
||||||
|
['spinren']= {"Spin连击", "效率", "掌管效率的神"},
|
||||||
|
|
||||||
['custom_clear']= {"自定义", "普通"},
|
['custom_clear']= {"自定义", "普通"},
|
||||||
['custom_puzzle']= {"自定义", "拼图"},
|
['custom_puzzle']= {"自定义", "拼图"},
|
||||||
|
|||||||
@@ -881,10 +881,11 @@ return {
|
|||||||
['sprintAtk']= {"Sprint(100ATK);", "", "打出100攻击"},
|
['sprintAtk']= {"Sprint(100ATK);", "", "打出100攻击"},
|
||||||
['sprintEff']= {"Sprint(EFF);", "", "40行内打出更高的攻击"},
|
['sprintEff']= {"Sprint(EFF);", "", "40行内打出更高的攻击"},
|
||||||
['zen']= {"Zen(200L);", "", "不限时200行"},
|
['zen']= {"Zen(200L);", "", "不限时200行"},
|
||||||
['ultra']= {"Ultra(EXTRA);", "", "在两分钟内尽可能拿到最多的分数"},
|
['ultra']= {"Ultra(Extra);", "", "在两分钟内尽可能拿到最多的分数"},
|
||||||
['infinite']= {"Infinite();", "", "沙盒"},
|
['infinite']= {"Infinite();", "", "沙盒"},
|
||||||
['infinite_dig']= {"InfDig();", "", "挖呀挖呀挖"},
|
['infinite_dig']= {"InfDig();", "", "挖呀挖呀挖"},
|
||||||
['marathon_inf']= {"Marathon(Inf);", "", "无尽马拉松"},
|
['marathon_inf']= {"Marathon(Inf);", "", "无尽马拉松"},
|
||||||
|
['spinren']= {"Spinren(EFF)", "", "掌管效率的神"},
|
||||||
|
|
||||||
['custom_clear']= {"Custom(Clear);", ""},
|
['custom_clear']= {"Custom(Clear);", ""},
|
||||||
['custom_puzzle']= {"Custom(Puzzle);", ""},
|
['custom_puzzle']= {"Custom(Puzzle);", ""},
|
||||||
|
|||||||
@@ -938,6 +938,7 @@ return {
|
|||||||
['infinite']= {"無盡", "", "沙盒"},
|
['infinite']= {"無盡", "", "沙盒"},
|
||||||
['infinite_dig']= {"無盡:挖掘", "", "挖呀挖呀挖"},
|
['infinite_dig']= {"無盡:挖掘", "", "挖呀挖呀挖"},
|
||||||
['marathon_inf']= {"馬拉松", "無盡", "無盡馬拉松"},
|
['marathon_inf']= {"馬拉松", "無盡", "無盡馬拉松"},
|
||||||
|
['spinren']= {"Spin連擊", "效率", "掌管效率的神"},
|
||||||
|
|
||||||
['custom_clear']= {"自定義", "普通"},
|
['custom_clear']= {"自定義", "普通"},
|
||||||
['custom_puzzle']= {"自定義", "拼圖"},
|
['custom_puzzle']= {"自定義", "拼圖"},
|
||||||
|
|||||||
@@ -97,20 +97,22 @@ return {
|
|||||||
{name='dig_h', x=850, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
|
{name='dig_h', x=850, y=-800, size=40,shape=1,icon="dig", unlock={'dig_u'}},
|
||||||
{name='dig_u', x=850, y=-1000,size=40,shape=1,icon="dig"},
|
{name='dig_u', x=850, y=-1000,size=40,shape=1,icon="dig"},
|
||||||
|
|
||||||
{name='c4wtrain_n', x=700, y=-450, size=40,shape=1,icon="pc", unlock={'c4wtrain_l'}},
|
{name='c4wtrain_n', x=700, y=-140, size=40,shape=1,icon="pc", unlock={'c4wtrain_l'}},
|
||||||
{name='c4wtrain_l', x=900, y=-450, size=40,shape=1,icon="pc"},
|
{name='c4wtrain_l', x=900, y=-140, size=40,shape=1,icon="pc"},
|
||||||
|
|
||||||
{name='pctrain_n', x=700, y=-300, size=40,shape=1,icon="pc", unlock={'pctrain_l','pc_n'}},
|
{name='sprintAtk', x=500, y=-300, size=40,shape=1,icon="sprint2", unlock={'sprintEff','tech_n','tech_finesse','tsd_e','backfire_n','spinren'}},
|
||||||
{name='pctrain_l', x=900, y=-300, size=40,shape=1,icon="pc"},
|
|
||||||
|
|
||||||
{name='pc_n', x=800, y=-140, size=40,shape=1,icon="pc", unlock={'pc_h'}},
|
|
||||||
{name='pc_h', x=950, y=-140, size=40,shape=3,icon="pc", unlock={'pc_l','pc_inf'}},
|
|
||||||
{name='pc_l', x=1100, y=-140, size=40,shape=3,icon="pc"},
|
|
||||||
{name='pc_inf', x=1100, y=-280, size=40,shape=2,icon="pc"},
|
|
||||||
|
|
||||||
{name='sprintAtk', x=500, y=-280, size=40,shape=1,icon="sprint2", unlock={'sprintEff','tech_n','tech_finesse','tsd_e','backfire_n'}},
|
|
||||||
{name='sprintEff', x=360, y=-150, size=40,shape=1,icon="sprint2"},
|
{name='sprintEff', x=360, y=-150, size=40,shape=1,icon="sprint2"},
|
||||||
|
|
||||||
|
{name='spinren', x=710, y=-300, size=40,shape=2,icon="tsd"},
|
||||||
|
|
||||||
|
{name='pctrain_n', x=760, y=-450, size=40,shape=1,icon="pc", unlock={'pctrain_l','pc_n'}},
|
||||||
|
{name='pctrain_l', x=960, y=-450, size=40,shape=1,icon="pc"},
|
||||||
|
|
||||||
|
{name='pc_n', x=870, y=-300, size=40,shape=1,icon="pc", unlock={'pc_h'}},
|
||||||
|
{name='pc_h', x=1020, y=-300, size=40,shape=3,icon="pc", unlock={'pc_l','pc_inf'}},
|
||||||
|
{name='pc_l', x=1170, y=-300, size=40,shape=3,icon="pc"},
|
||||||
|
{name='pc_inf', x=1170, y=-450, size=40,shape=2,icon="pc"},
|
||||||
|
|
||||||
{name='tech_n', x=400, y=20, size=40,shape=1,icon="tech", unlock={'tech_n_plus','tech_h'}},
|
{name='tech_n', x=400, y=20, size=40,shape=1,icon="tech", unlock={'tech_n_plus','tech_h'}},
|
||||||
{name='tech_n_plus', x=200, y=-10, size=40,shape=3,icon="tech_plus"},
|
{name='tech_n_plus', x=200, y=-10, size=40,shape=3,icon="tech_plus"},
|
||||||
{name='tech_h', x=400, y=170, size=40,shape=1,icon="tech", unlock={'tech_h_plus','tech_l'}},
|
{name='tech_h', x=400, y=170, size=40,shape=1,icon="tech", unlock={'tech_h_plus','tech_l'}},
|
||||||
|
|||||||
@@ -6,23 +6,22 @@ return {
|
|||||||
eventSet='c4wBase',
|
eventSet='c4wBase',
|
||||||
bg='rgb',bgm='oxygen',
|
bg='rgb',bgm='oxygen',
|
||||||
},
|
},
|
||||||
score=function(P) return {math.min(P.modeData.maxCombo,100),P.stat.time} end,
|
score=function(P) return {math.min(P.stat.row,100),P.stat.time} end,
|
||||||
scoreDisp=function(D) return STRING.time(D[2]).." "..D[1].." Combo" end,
|
scoreDisp=function(D) return D[1].." Lines "..STRING.time(D[2]) end,
|
||||||
comp=function(a,b) return a[2]<b[2] or a[2]==b[2] and a[1]>b[1] 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 L=P.stat.row
|
local L=P.stat.row
|
||||||
if L>=100 then
|
if L>=100 then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=32 and 5 or
|
T<=32.6 and 5 or
|
||||||
T<=50 and 4 or
|
T<=49.5 and 4 or
|
||||||
T<=80 and 3 or
|
T<=94.2 and 3 or
|
||||||
2
|
2
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
L>=60 and 2 or
|
L>=42 and 1 or
|
||||||
L>=30 and 1 or
|
L>=26 and 0
|
||||||
L>=10 and 0
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
91
parts/modes/spinren.lua
Normal file
91
parts/modes/spinren.lua
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
local skip
|
||||||
|
---@param RND love.RandomGenerator
|
||||||
|
local function randomizer(RND)
|
||||||
|
local last=RND:random(2)==1 and 1 or 4
|
||||||
|
local function get_next()
|
||||||
|
local list={1,2,3,1,3,2}
|
||||||
|
local ret=list[last]
|
||||||
|
last=last+1
|
||||||
|
if last>6 then last=1 end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
local bag={}
|
||||||
|
local function fill_bag()
|
||||||
|
local weights=0
|
||||||
|
while weights<24 do
|
||||||
|
local x=get_next()
|
||||||
|
table.insert(bag,x)
|
||||||
|
weights=weights+(x==1 and 2 or 3)
|
||||||
|
end
|
||||||
|
local pos=RND:random(#bag)+1
|
||||||
|
table.insert(bag,pos,4)
|
||||||
|
if skip==1 then skip=0 end
|
||||||
|
end
|
||||||
|
return function()
|
||||||
|
if #bag==0 then fill_bag() end
|
||||||
|
return table.remove(bag,1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local lines={
|
||||||
|
{1,1,1,1,0,0,1,1,1,1},
|
||||||
|
{1,1,1,0,0,0,1,1,1,1},
|
||||||
|
{1,1,1,1,0,0,0,1,1,1},
|
||||||
|
{1,1,1,0,0,0,0,1,1,1}
|
||||||
|
}
|
||||||
|
local function get_lines(n,P)
|
||||||
|
local ret={}
|
||||||
|
for _=1,n do
|
||||||
|
local L=TABLE.shift(lines[P.randomizer_spinren()])
|
||||||
|
for i=1,#L do
|
||||||
|
if L[i]==1 then
|
||||||
|
L[i]=P.modeData.colorSet[P.holeRND:random(4)]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.insert(ret,L)
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
load=function()
|
||||||
|
PLY.newPlayer(1)
|
||||||
|
local P=PLY_ALIVE[1]
|
||||||
|
P.modeData.colorSet={}
|
||||||
|
for i=1,4 do
|
||||||
|
P.modeData.colorSet[i]=P.holeRND:random(25)
|
||||||
|
end
|
||||||
|
P.randomizer_spinren=randomizer(P.holeRND)
|
||||||
|
P:pushLineList(get_lines(18,P))
|
||||||
|
P.fieldBeneath=0
|
||||||
|
end,
|
||||||
|
env={
|
||||||
|
lock=1e99,
|
||||||
|
drop=1e99,
|
||||||
|
minsdarr=3,
|
||||||
|
infHold=true,
|
||||||
|
highCam=false,
|
||||||
|
bgm='lounge',
|
||||||
|
eventSet='sprintEff_40',
|
||||||
|
hook_drop=function(P)
|
||||||
|
if P.lastPiece.row==0 then
|
||||||
|
P:win('finish')
|
||||||
|
end
|
||||||
|
local up=MATH.clamp(22-P.stat.row+P.lastPiece.row,0,P.lastPiece.row)
|
||||||
|
P:pushLineList(get_lines(up,P))
|
||||||
|
end
|
||||||
|
},
|
||||||
|
score=function(P) return {P.stat.atk/P.stat.row,P.stat.time} end,
|
||||||
|
scoreDisp=function(D) return ("%.2f"):format(D[1]).." Efficiency "..STRING.time(D[2]) end,
|
||||||
|
comp=function(a,b) return a[1]>b[1] or a[1]==b[1] and a[2]<b[2] end,
|
||||||
|
getRank=function(P)
|
||||||
|
if P.stat.row<10 then return end
|
||||||
|
local E=P.stat.atk/P.stat.row
|
||||||
|
return
|
||||||
|
E>=10 and 5 or
|
||||||
|
E>=9 and 4 or
|
||||||
|
E>=8 and 3 or
|
||||||
|
E>=6 and 2 or
|
||||||
|
E>=3 and 1 or
|
||||||
|
0
|
||||||
|
end
|
||||||
|
}
|
||||||
@@ -42,6 +42,10 @@ function THEME.calculate(Y,M,D)
|
|||||||
M=='04' and D=='01' and
|
M=='04' and D=='01' and
|
||||||
'fool' or
|
'fool' or
|
||||||
|
|
||||||
|
-- April fool's day
|
||||||
|
M=='07' and (D=='14' or D=='15') and
|
||||||
|
'edm' or
|
||||||
|
|
||||||
-- Z day
|
-- Z day
|
||||||
D=='26' and (
|
D=='26' and (
|
||||||
(M=='03' or M=='04' or M=='05' or M=='06') and 'zday1' or
|
(M=='03' or M=='04' or M=='05' or M=='06') and 'zday1' or
|
||||||
@@ -61,7 +65,7 @@ end
|
|||||||
function THEME.set(theme,keepBGM)
|
function THEME.set(theme,keepBGM)
|
||||||
if type(theme)=='string' and theme:sub(1,6)=='season' then
|
if type(theme)=='string' and theme:sub(1,6)=='season' then
|
||||||
BG.setDefault(SETTING.defaultBG)
|
BG.setDefault(SETTING.defaultBG)
|
||||||
BGM.setDefault(({season1='null',season2='nil',season3='vaccum',season4='space'})[theme])
|
BGM.setDefault(({season1='null',season2='nil',season3='vacuum',season4='space'})[theme])
|
||||||
elseif not SETTING.noTheme then
|
elseif not SETTING.noTheme then
|
||||||
if theme=='xmas' then
|
if theme=='xmas' then
|
||||||
BG.setDefault('snow')
|
BG.setDefault('snow')
|
||||||
@@ -90,6 +94,10 @@ function THEME.set(theme,keepBGM)
|
|||||||
elseif theme=='fool' then
|
elseif theme=='fool' then
|
||||||
BG.setDefault('blockrain')
|
BG.setDefault('blockrain')
|
||||||
BGM.setDefault('how feeling')
|
BGM.setDefault('how feeling')
|
||||||
|
elseif theme=='edm' then
|
||||||
|
BG.setDefault('lightning2')
|
||||||
|
BGM.setDefault('malate')
|
||||||
|
MES.new('music'," 红 色 电 音\n 极 地 大 冲 击\n 只要你敢触电——\n 7月14日、15日 天地人间完全放电\n不用麻醉,一样情不自禁HI起来,飞起来")
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
未来计划:
|
未来计划:
|
||||||
正在点亮科技树...
|
正在点亮科技树...
|
||||||
|
|
||||||
|
0.17.18: 暂停 Break
|
||||||
|
新增:
|
||||||
|
新模式:Spin连击 (by Gompyn) #1129
|
||||||
|
修复:
|
||||||
|
第三季度主菜单音乐名称打错导致没有bgm和进音乐室报错
|
||||||
|
c4w普通的计分完全改为竞速 #1126
|
||||||
|
|
||||||
0.17.17: 暂停 Break
|
0.17.17: 暂停 Break
|
||||||
新增:
|
新增:
|
||||||
新语音包: neuro (by Petalzu) #1109
|
新语音包: neuro (by Petalzu) #1109
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
["apkCode"]=1717,
|
["apkCode"]=1718,
|
||||||
["code"]=1717,
|
["code"]=1718,
|
||||||
["string"]="V0.17.17",
|
["string"]="V0.17.18",
|
||||||
["room"]="ver A-12",
|
["room"]="ver A-12",
|
||||||
["name"]="暂停 Break",
|
["name"]="暂停 Break",
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user