0.8.19/20: Fantastic Global Update II
This commit is contained in:
@@ -53,6 +53,12 @@ return{
|
||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
|
||||
getRank=function(P)
|
||||
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 or W>=5 and 0
|
||||
return
|
||||
W>=100 and 5 or
|
||||
W>=80 and 4 or
|
||||
W>=60 and 3 or
|
||||
W>=40 and 2 or
|
||||
W>=20 and 1 or
|
||||
W>=5 and 0
|
||||
end,
|
||||
}
|
||||
@@ -66,6 +66,12 @@ return{
|
||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
|
||||
getRank=function(P)
|
||||
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 or W>=5 and 0
|
||||
return
|
||||
W>=50 and 5 or
|
||||
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,
|
||||
}
|
||||
@@ -51,9 +51,9 @@ return{
|
||||
res[A+2]=7
|
||||
end
|
||||
|
||||
--give O when no Δ=0/give T when no Δ=1
|
||||
d=0--Δ=0
|
||||
A=0--Δ=1
|
||||
--give O when no d=0/give T when no d=1
|
||||
d=0--d=0 count
|
||||
A=0--d=1 count
|
||||
for x=2,10 do
|
||||
local _=height[x]-height[x-1]
|
||||
if _==0 then
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
return{
|
||||
color=color.white,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="none",bgm="way",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,20,15)
|
||||
newPlayer(2,650,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
return{
|
||||
color=color.white,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="none",bgm="way",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,20,100,.65)
|
||||
newPlayer(2,435,100,.65)
|
||||
newPlayer(3,850,100,.65)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
return{
|
||||
color=color.white,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="none",bgm="way",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,25,160,.5)
|
||||
newPlayer(2,335,160,.5)
|
||||
newPlayer(3,645,160,.5)
|
||||
newPlayer(4,955,160,.5)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
}
|
||||
@@ -42,8 +42,8 @@ return{
|
||||
if L>=200 then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=185 and 5 or
|
||||
T<=250 and 4 or
|
||||
T<=226 and 5 or
|
||||
T<=262 and 4 or
|
||||
3
|
||||
else
|
||||
return
|
||||
|
||||
@@ -5,53 +5,35 @@ local pc_lock={55,50,45,40,36,32,30}
|
||||
local pc_fall={18,16,14,12,10,9,8,7,6}
|
||||
local PCbase=require("parts/PCbase")
|
||||
local PClist=require("parts/PClist")
|
||||
local PCtype={[0]=1,2,1,3,2,3}
|
||||
|
||||
local function task_PC(P)
|
||||
local _
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter==21 then
|
||||
local t=P.stat.pc%2
|
||||
local S=P.gameEnv.skin
|
||||
for i=1,4 do
|
||||
local r=freeRow.get(0)
|
||||
for j=1,10 do
|
||||
_=PCbase[4*t+i][j]
|
||||
r[j]=S[_]or 0
|
||||
end
|
||||
ins(P.field,1,r)
|
||||
ins(P.visTime,1,freeRow.get(20))
|
||||
end
|
||||
P.fieldBeneath=P.fieldBeneath+120
|
||||
P.curY=P.curY+4
|
||||
P:freshgho()
|
||||
if P.modeData.counter==26 then
|
||||
local base=PCbase[P.modeData.type]
|
||||
P:pushLine(base[rnd(#base)],P.modeData.symmetry)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local function newPC(P)
|
||||
local r=P.field;r=r[#r]
|
||||
if r then
|
||||
local r=P.field
|
||||
if r[1]then
|
||||
r=r[#r]
|
||||
local c=0
|
||||
for i=1,10 do if r[i]>0 then c=c+1 end end
|
||||
if c<5 then
|
||||
P:lose()
|
||||
end
|
||||
if c<5 then P:lose()end
|
||||
end
|
||||
if P.stat.piece%4==0 and #P.field==0 then
|
||||
P.modeData.event=P.modeData.event==0 and 1 or 0
|
||||
local r=rnd(#PClist)
|
||||
local f=P.modeData.event==0
|
||||
for i=1,4 do
|
||||
local b=PClist[r][i]
|
||||
if f then
|
||||
if b<3 then b=3-b
|
||||
elseif b<5 then b=7-b
|
||||
end
|
||||
end
|
||||
P:getNext(b)
|
||||
end
|
||||
if #P.field==0 then
|
||||
local type=PCtype[P.stat.pc]or rnd(2,3)
|
||||
local L=PClist[type][rnd(#PClist[1])]
|
||||
local symmetry=rnd()>.5
|
||||
P.modeData.type=type
|
||||
P.modeData.symmetry=symmetry
|
||||
P:pushNext(L,symmetry)
|
||||
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
||||
TASK.new(task_PC,P)
|
||||
local s=P.stat.pc*.5
|
||||
|
||||
local s=P.stat.pc*.25
|
||||
if int(s)==s and s>0 then
|
||||
P.gameEnv.drop=pc_drop[s]or 10
|
||||
P.gameEnv.lock=pc_lock[s]or 20
|
||||
@@ -94,11 +76,11 @@ return{
|
||||
getRank=function(P)
|
||||
local L=P.stat.pc
|
||||
return
|
||||
L>=50 and 5 or
|
||||
L>=40 and 4 or
|
||||
L>=30 and 3 or
|
||||
L>=100 and 5 or
|
||||
L>=70 and 4 or
|
||||
L>=40 and 3 or
|
||||
L>=20 and 2 or
|
||||
L>=10 and 1 or
|
||||
L>=1 and 0
|
||||
L>=2 and 0
|
||||
end,
|
||||
}
|
||||
@@ -1,50 +1,41 @@
|
||||
local rnd=math.random
|
||||
local ins=table.insert
|
||||
local PCbase=require("parts/PCbase")
|
||||
local PClist=require("parts/PClist")
|
||||
local PCtype={
|
||||
[0]=1,1,1,1,2,
|
||||
1,1,1,1,3,
|
||||
1,1,1,2,
|
||||
1,1,1,3,
|
||||
1,1,2,
|
||||
1,1,3,
|
||||
1,2,
|
||||
1,3,
|
||||
2,
|
||||
3,
|
||||
}
|
||||
local function task_PC(P)
|
||||
local _
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter==21 then
|
||||
local t=P.stat.pc%2
|
||||
local S=P.gameEnv.skin
|
||||
for i=1,4 do
|
||||
local r=freeRow.get(0)
|
||||
for j=1,10 do
|
||||
_=PCbase[4*t+i][j]
|
||||
r[j]=S[_]or 0
|
||||
end
|
||||
ins(P.field,1,r)
|
||||
ins(P.visTime,1,freeRow.get(20))
|
||||
end
|
||||
P.fieldBeneath=P.fieldBeneath+120
|
||||
P.curY=P.curY+4
|
||||
P:freshgho()
|
||||
if P.modeData.counter==26 then
|
||||
local base=PCbase[P.modeData.type]
|
||||
P:pushLine(base[rnd(#base)],P.modeData.symmetry)
|
||||
return true
|
||||
end
|
||||
end
|
||||
local function newPC(P)
|
||||
local r=P.field;r=r[#r]
|
||||
if r then
|
||||
local r=P.field
|
||||
if r[1]then
|
||||
r=r[#r]
|
||||
local c=0
|
||||
for i=1,10 do if r[i]>0 then c=c+1 end end
|
||||
if c<5 then
|
||||
P:lose()
|
||||
end
|
||||
if c<5 then P:lose()end
|
||||
end
|
||||
if P.stat.piece%4==0 and #P.field==0 then
|
||||
P.modeData.event=P.modeData.event==0 and 1 or 0
|
||||
local r=rnd(#PClist)
|
||||
local f=P.modeData.event==0
|
||||
for i=1,4 do
|
||||
local b=PClist[r][i]
|
||||
if f then
|
||||
if b<3 then b=3-b
|
||||
elseif b<5 then b=7-b
|
||||
end
|
||||
end
|
||||
P:getNext(b)
|
||||
end
|
||||
if #P.field==0 then
|
||||
local type=PCtype[P.stat.pc]or rnd(2,3)
|
||||
local L=PClist[type][rnd(#PClist[1])]
|
||||
local symmetry=rnd()>.5
|
||||
P.modeData.type=type
|
||||
P.modeData.symmetry=symmetry
|
||||
P:pushNext(L,symmetry)
|
||||
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
||||
TASK.new(task_PC,P)
|
||||
end
|
||||
@@ -54,7 +45,7 @@ return{
|
||||
env={
|
||||
next=4,
|
||||
hold=false,
|
||||
drop=150,lock=150,
|
||||
drop=120,lock=180,
|
||||
fall=20,
|
||||
sequence="none",
|
||||
dropPiece=newPC,
|
||||
@@ -77,11 +68,11 @@ return{
|
||||
getRank=function(P)
|
||||
local L=P.stat.pc
|
||||
return
|
||||
L>=100 and 5 or
|
||||
L>=60 and 4 or
|
||||
L>=40 and 3 or
|
||||
L>=25 and 2 or
|
||||
L>=15 and 1 or
|
||||
L>=1 and 0
|
||||
L>=260 and 5 or
|
||||
L>=126 and 4 or
|
||||
L>=62 and 3 or
|
||||
L>=26 and 2 or
|
||||
L>=12 and 1 or
|
||||
L>=2 and 0
|
||||
end,
|
||||
}
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newAIPlayer(2,965,360,.5,AITemplate("CC",10,1,true,5000))
|
||||
garbageSpeed=1e99
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newAIPlayer(2,965,360,.5,AITemplate("CC",10,1,true,10000))
|
||||
garbageSpeed=1e99
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newAIPlayer(2,965,360,.5,AITemplate("CC",10,2,true,12600))
|
||||
garbageSpeed=1e99
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,16260))
|
||||
garbageSpeed=1e99
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,26000))
|
||||
garbageSpeed=1e99
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
|
||||
44
modes/sprintPenta.lua
Normal file
44
modes/sprintPenta.lua
Normal file
@@ -0,0 +1,44 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
color=color.green,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
sequence="bag",bag={8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
|
||||
target=40,dropPiece=player.reach_winCheck,
|
||||
bg="strap",bgm="race",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
setFont(55)
|
||||
local r=40-P.stat.row
|
||||
if r<0 then r=0 end
|
||||
mStr(r,-81,265)
|
||||
if r<21 and r>0 then
|
||||
gc.setLineWidth(4)
|
||||
gc.setColor(1,r>10 and 0 or rnd(),.5)
|
||||
gc.line(dx,600-30*r+dy,300+dx,600-30*r+dy)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return toTime(D[1]).." "..D[2].." Pieces"end,
|
||||
comp=function(a,b)return a[1]<b[1]or a[1]==b[1]and a[2]<b[2]end,
|
||||
getRank=function(P)
|
||||
local T=P.stat.row
|
||||
if T<5 then
|
||||
return
|
||||
elseif T<40 then
|
||||
return 0
|
||||
end
|
||||
T=P.stat.time
|
||||
return
|
||||
T<=76 and 5 or
|
||||
T<=90 and 4 or
|
||||
T<=150 and 3 or
|
||||
T<=260 and 2 or
|
||||
1
|
||||
end,
|
||||
}
|
||||
@@ -29,11 +29,11 @@ return{
|
||||
if P.stat.row<400 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=62,255 and 5 or
|
||||
T<=90,326 and 4 or
|
||||
T<=130,462 and 3 or
|
||||
T<=200,626 and 2 or
|
||||
T<=360,1260 and 1 or
|
||||
T<=255 and 5 or
|
||||
T<=326 and 4 or
|
||||
T<=462 and 3 or
|
||||
T<=626 and 2 or
|
||||
T<=1260 and 1 or
|
||||
0
|
||||
end,
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
@@ -11,7 +11,7 @@ return{
|
||||
drop=30,lock=60,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="secret8th",
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
@@ -11,7 +11,7 @@ return{
|
||||
_20G=true,lock=60,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="secret7th",
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local format=string.format
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 then
|
||||
local function tech_check_easy(P)
|
||||
if #P.clearedRow>0 and P.b2b<40 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
@@ -11,7 +11,7 @@ return{
|
||||
_20G=true,lock=60,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_hard,
|
||||
dropPiece=tech_check_easy,
|
||||
bg="matrix",bgm="secret7th",
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
@@ -11,7 +11,7 @@ return{
|
||||
oncehold=false,
|
||||
drop=1e99,lock=1e99,
|
||||
target=200,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="newera",
|
||||
},
|
||||
load=function()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
@@ -13,7 +13,7 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
fineKill=true,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="flink",bgm="infinite",
|
||||
},
|
||||
slowMark=true,
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
local format=string.format
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
@@ -13,7 +8,6 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
fineKill=true,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="flink",bgm="infinite",
|
||||
},
|
||||
slowMark=true,
|
||||
|
||||
Reference in New Issue
Block a user