垃圾行缓冲总数改为单独变量

This commit is contained in:
MrZ626
2021-05-10 22:42:32 +08:00
parent ae260f4908
commit 83c64785ec
12 changed files with 60 additions and 64 deletions

View File

@@ -505,7 +505,7 @@ do--function checkWarning()
end end
end end
end end
GAME.warnLVL0=math.log(height-(P1.gameEnv.fieldH-5)+P1.atkBuffer.sum*.8) GAME.warnLVL0=math.log(height-(P1.gameEnv.fieldH-5)+P1.atkBufferSum*.8)
end end
local _=GAME.warnLVL local _=GAME.warnLVL
if _<GAME.warnLVL0 then if _<GAME.warnLVL0 then

View File

@@ -8,20 +8,18 @@ return{
task=function(P) task=function(P)
while true do while true do
YIELD() YIELD()
if P.control and P.atkBuffer.sum==0 then if P.control and P.atkBufferSum==0 then
local p=#P.atkBuffer+1 local D=P.modeData
local B,D=P.atkBuffer,P.modeData
local t
if D.wave<20 then if D.wave<20 then
t=1500-30*D.wave--1500~900 local t=1500-30*D.wave--1500~900
B[p]= {line=generateLine(P:RND(4,7)),amount=12,countdown=t,cd0=t,time=0,sent=false,lv=3} table.insert(P.atkBuffer,{line=generateLine(P:RND(4,7)),amount=12,countdown=t,cd0=t,time=0,sent=false,lv=3})
B[p+1]= {line=generateLine(P:RND(3,8)),amount=10,countdown=t,cd0=t,time=0,sent=false,lv=4} table.insert(P.atkBuffer,{line=generateLine(P:RND(3,8)),amount=10,countdown=t,cd0=t,time=0,sent=false,lv=4})
else else
t=900-10*(D.wave-20)--900~600 local t=900-10*(D.wave-20)--900~600
B[p]= {line=generateLine(P:RND(10)),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=4} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=4})
B[p+1]= {line=generateLine(P:RND(4,7)),amount=8,countdown=t,cd0=t,time=0,sent=false,lv=5} table.insert(P.atkBuffer,{line=generateLine(P:RND(4,7)),amount=8,countdown=t,cd0=t,time=0,sent=false,lv=5})
end end
B.sum=B.sum+22 P.atkBufferSum=P.atkBufferSum+22
P.stat.recv=P.stat.recv+22 P.stat.recv=P.stat.recv+22
D.wave=D.wave+1 D.wave=D.wave+1
if D.wave%10==0 then if D.wave%10==0 then

View File

@@ -7,25 +7,24 @@ return{
task=function(P) task=function(P)
while true do while true do
YIELD() YIELD()
if P.control and P.atkBuffer.sum<4 then if P.control and P.atkBufferSum<4 then
local p=#P.atkBuffer+1 local D=P.modeData
local B,D=P.atkBuffer,P.modeData
local s local s
local t=800-10*D.wave--800~700~600~500 local t=800-10*D.wave--800~700~600~500
if D.wave<10 then if D.wave<10 then
B[p]= {line=generateLine(P:RND(5,6)),amount=9,countdown=t,cd0=t,time=0,sent=false,lv=3} table.insert(P.atkBuffer,{line=generateLine(P:RND(5,6)),amount=9,countdown=t,cd0=t,time=0,sent=false,lv=3})
B[p+1]= {line=generateLine(P:RND(4,7)),amount=11,countdown=t,cd0=t+62,time=0,sent=false,lv=4} table.insert(P.atkBuffer,{line=generateLine(P:RND(4,7)),amount=11,countdown=t,cd0=t+62,time=0,sent=false,lv=4})
s=20 s=20
elseif D.wave<20 then elseif D.wave<20 then
B[p]= {line=generateLine(P:RND(3,8)),amount=11,countdown=t,cd0=t,time=0,sent=false,lv=4} table.insert(P.atkBuffer,{line=generateLine(P:RND(3,8)),amount=11,countdown=t,cd0=t,time=0,sent=false,lv=4})
B[p+1]= {line=generateLine(P:RND(4,7)),amount=13,countdown=t,cd0=t+62,time=0,sent=false,lv=5} table.insert(P.atkBuffer,{line=generateLine(P:RND(4,7)),amount=13,countdown=t,cd0=t+62,time=0,sent=false,lv=5})
s=24 s=24
else else
B[p]= {line=generateLine(P:RND(2)*9-8),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=5} table.insert(P.atkBuffer,{line=generateLine(P:RND(2)*9-8),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=5})
B[p+1]= {line=generateLine(P:RND(3,8)),amount=14,countdown=t+62,cd0=t,time=0,sent=false,lv=5} table.insert(P.atkBuffer,{line=generateLine(P: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 P.atkBufferSum=P.atkBufferSum+s
P.stat.recv=P.stat.recv+s P.stat.recv=P.stat.recv+s
D.wave=D.wave+1 D.wave=D.wave+1
if D.wave%10==0 then if D.wave%10==0 then

View File

@@ -16,9 +16,9 @@ return{
if D.counter>=t then if D.counter>=t then
D.counter=0 D.counter=0
for _=1,4 do for _=1,4 do
P.atkBuffer[#P.atkBuffer+1]={line=generateLine(P:RND(10)),amount=1,countdown=5*t,cd0=5*t,time=0,sent=false,lv=2} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=1,countdown=5*t,cd0=5*t,time=0,sent=false,lv=2})
end end
P.atkBuffer.sum=P.atkBuffer.sum+4 P.atkBufferSum=P.atkBufferSum+4
P.stat.recv=P.stat.recv+4 P.stat.recv=P.stat.recv+4
D.wave=D.wave+1 D.wave=D.wave+1
if D.wave<=75 then if D.wave<=75 then

View File

@@ -16,9 +16,9 @@ return{
if D.counter>=t then if D.counter>=t then
D.counter=0 D.counter=0
for _=1,3 do for _=1,3 do
P.atkBuffer[#P.atkBuffer+1]={line=generateLine(P:RND(10)),amount=1,countdown=2*t,cd0=2*t,time=0,sent=false,lv=1} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=1,countdown=2*t,cd0=2*t,time=0,sent=false,lv=1})
end end
P.atkBuffer.sum=P.atkBuffer.sum+3 P.atkBufferSum=P.atkBufferSum+3
P.stat.recv=P.stat.recv+3 P.stat.recv=P.stat.recv+3
D.wave=D.wave+1 D.wave=D.wave+1
if D.wave<=90 then if D.wave<=90 then

View File

@@ -9,9 +9,9 @@ return{
if P.control then if P.control then
local D=P.modeData local D=P.modeData
D.timer=D.timer+1 D.timer=D.timer+1
if D.timer>=math.max(60,150-2*D.wave)and P.atkBuffer.sum<4 then if D.timer>=math.max(60,150-2*D.wave)and P.atkBufferSum<4 then
P.atkBuffer[#P.atkBuffer+1]={line=generateLine(P:RND(10)),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1})
P.atkBuffer.sum=P.atkBuffer.sum+1 P.atkBufferSum=P.atkBufferSum+1
P.stat.recv=P.stat.recv+1 P.stat.recv=P.stat.recv+1
if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0 D.timer=0

View File

@@ -9,16 +9,17 @@ return{
if P.control then if P.control then
local D=P.modeData local D=P.modeData
D.timer=D.timer+1 D.timer=D.timer+1
local B=P.atkBuffer if D.timer>=math.max(60,180-2*D.wave)and P.atkBufferSum<15 then
if D.timer>=math.max(60,180-2*D.wave)and B.sum<15 then local s
B[#B+1]= if D.wave%3<2 then
D.wave%3<2 and table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1})
{line=generateLine(P:RND(10)),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1} s=1
or else
{line=generateLine(P:RND(10)),amount=3,countdown=60,cd0=60,time=0,sent=false,lv=2} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=3,countdown=60,cd0=60,time=0,sent=false,lv=2})
local R=(D.wave%3<2 and 1 or 3) s=3
B.sum=B.sum+R end
P.stat.recv=P.stat.recv+R P.atkBufferSum=P.atkBufferSum+s
P.stat.recv=P.stat.recv+s
if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0 D.timer=0
D.wave=D.wave+1 D.wave=D.wave+1

View File

@@ -9,10 +9,10 @@ return{
if P.control then if P.control then
local D=P.modeData local D=P.modeData
D.timer=D.timer+1 D.timer=D.timer+1
if D.timer>=math.max(60,150-D.wave)and P.atkBuffer.sum<20 then if D.timer>=math.max(60,150-D.wave)and P.atkBufferSum<20 then
local t=math.max(60,90-D.wave) local t=math.max(60,90-D.wave)
P.atkBuffer[#P.atkBuffer+1]={line=generateLine(P:RND(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
P.atkBuffer.sum=P.atkBuffer.sum+4 P.atkBufferSum=P.atkBufferSum+4
P.stat.recv=P.stat.recv+4 P.stat.recv=P.stat.recv+4
if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end if D.wave==60 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0 D.timer=0

View File

@@ -9,14 +9,15 @@ return{
if P.control then if P.control then
local D=P.modeData local D=P.modeData
D.timer=D.timer+1 D.timer=D.timer+1
if D.timer>=math.max(90,180-2*D.wave)and P.atkBuffer.sum<8 then if D.timer>=math.max(90,180-2*D.wave)and P.atkBufferSum<8 then
local d=D.wave+1 local d=D.wave+1
P.atkBuffer[#P.atkBuffer+1]= table.insert(P.atkBuffer,
d%4==0 and{line=generateLine(P:RND(10)),amount=1,countdown=60,cd0=60,time=0,sent=false,lv=1}or d%4==0 and{line=generateLine(P:RND(10)),amount=1,countdown=60,cd0=60,time=0,sent=false,lv=1}or
d%4==1 and{line=generateLine(P:RND(10)),amount=2,countdown=70,cd0=70,time=0,sent=false,lv=1}or d%4==1 and{line=generateLine(P:RND(10)),amount=2,countdown=70,cd0=70,time=0,sent=false,lv=1}or
d%4==2 and{line=generateLine(P:RND(10)),amount=3,countdown=80,cd0=80,time=0,sent=false,lv=2}or d%4==2 and{line=generateLine(P:RND(10)),amount=3,countdown=80,cd0=80,time=0,sent=false,lv=2}or
d%4==3 and{line=generateLine(P:RND(10)),amount=4,countdown=90,cd0=90,time=0,sent=false,lv=3} d%4==3 and{line=generateLine(P:RND(10)),amount=4,countdown=90,cd0=90,time=0,sent=false,lv=3}
P.atkBuffer.sum=P.atkBuffer.sum+d%4+1 )
P.atkBufferSum=P.atkBufferSum+d%4+1
P.stat.recv=P.stat.recv+d%4+1 P.stat.recv=P.stat.recv+d%4+1
if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end if D.wave==45 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0 D.timer=0

View File

@@ -11,14 +11,13 @@ return{
if P.control then if P.control then
local D=P.modeData local D=P.modeData
D.timer=D.timer+1 D.timer=D.timer+1
if D.timer>=math.max(300,600-10*D.wave)and P.atkBuffer.sum<20 then if D.timer>=math.max(300,600-10*D.wave)and P.atkBufferSum<20 then
local t=math.max(300,480-12*D.wave) local t=math.max(300,480-12*D.wave)
local p=#P.atkBuffer+1 table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=2})
P.atkBuffer[p] ={line=generateLine(P:RND(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=2} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3})
P.atkBuffer[p+1]={line=generateLine(P:RND(10)),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=6,countdown=1.2*t,cd0=1.2*t,time=0,sent=false,lv=4})
P.atkBuffer[p+2]={line=generateLine(P:RND(10)),amount=6,countdown=1.2*t,cd0=1.2*t,time=0,sent=false,lv=4} table.insert(P.atkBuffer,{line=generateLine(P:RND(10)),amount=6,countdown=1.5*t,cd0=1.5*t,time=0,sent=false,lv=5})
P.atkBuffer[p+3]={line=generateLine(P:RND(10)),amount=6,countdown=1.5*t,cd0=1.5*t,time=0,sent=false,lv=5} P.atkBufferSum=P.atkBufferSum+20
P.atkBuffer.sum=P.atkBuffer.sum+20
P.stat.recv=P.stat.recv+20 P.stat.recv=P.stat.recv+20
if D.wave==31 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end if D.wave==31 then P:showTextF(text.maxspeed,0,-140,100,'appear',.6)end
D.timer=0 D.timer=0

View File

@@ -127,7 +127,8 @@ local function newEmptyPlayer(id,mini)
for i=1,10 do P.dropTime[i]=-1e99 end for i=1,10 do P.dropTime[i]=-1e99 end
P.field,P.visTime={},{} P.field,P.visTime={},{}
P.atkBuffer={sum=0} P.atkBuffer={}
P.atkBufferSum=0
--Royale-related --Royale-related
P.badge,P.strength=0,0 P.badge,P.strength=0,0

View File

@@ -242,7 +242,7 @@ function Player:garbageRelease()--Check garbage buffer and try to release them
local A=self.atkBuffer[n] local A=self.atkBuffer[n]
if A and A.countdown<=0 and not A.sent then if A and A.countdown<=0 and not A.sent then
self:garbageRise(19+A.lv,A.amount,A.line) self:garbageRise(19+A.lv,A.amount,A.line)
self.atkBuffer.sum=self.atkBuffer.sum-A.amount self.atkBufferSum=self.atkBufferSum-A.amount
A.sent,A.time=true,0 A.sent,A.time=true,0
self.stat.pend=self.stat.pend+A.amount self.stat.pend=self.stat.pend+A.amount
n=n+1 n=n+1
@@ -371,14 +371,11 @@ end
function Player:receive(A,send,time,line) function Player:receive(A,send,time,line)
self.lastRecv=A self.lastRecv=A
local B=self.atkBuffer local B=self.atkBuffer
if send+B.sum>self.gameEnv.bufferLimit then send=self.gameEnv.bufferLimit-B.sum end if send+self.atkBufferSum>self.gameEnv.bufferLimit then send=self.gameEnv.bufferLimit-self.atkBufferSum end
if send>0 then if send>0 then
local m,k=#B,1 local m,k=#B,1
while k<=m and time>B[k].countdown do k=k+1 end while k<=m and time>B[k].countdown do k=k+1 end
for i=m,k,-1 do ins(B,k,{
B[i+1]=B[i]
end
B[k]={
line=line, line=line,
amount=send, amount=send,
countdown=time, countdown=time,
@@ -386,8 +383,8 @@ function Player:receive(A,send,time,line)
time=0, time=0,
sent=false, sent=false,
lv=min(int(send^.69),5), lv=min(int(send^.69),5),
}--Sorted insert(by time) })--Sorted insert(by time)
B.sum=B.sum+send self.atkBufferSum=self.atkBufferSum+send
self.stat.recv=self.stat.recv+send self.stat.recv=self.stat.recv+send
if self.sound then if self.sound then
SFX.play(send<4 and'blip_1'or'blip_2',min(send+1,5)*.1) SFX.play(send<4 and'blip_1'or'blip_2',min(send+1,5)*.1)
@@ -812,7 +809,7 @@ function Player:cancel(N)--Cancel Garbage
local off=0--Lines offseted local off=0--Lines offseted
local bf=self.atkBuffer local bf=self.atkBuffer
for i=1,#bf do for i=1,#bf do
if bf.sum==0 or N==0 then break end if self.atkBufferSum==0 or N==0 then break end
local A=bf[i] local A=bf[i]
if not A.sent then if not A.sent then
local O=min(A.amount,N)--Cur Offset local O=min(A.amount,N)--Cur Offset
@@ -822,7 +819,7 @@ function Player:cancel(N)--Cancel Garbage
A.sent,A.time=true,0 A.sent,A.time=true,0
end end
off=off+O off=off+O
bf.sum=bf.sum-O self.atkBufferSum=self.atkBufferSum-O
N=N-O N=N-O
end end
end end
@@ -1699,7 +1696,7 @@ function Player:lose(force)
A.time=0 A.time=0
end end
end end
self.atkBuffer.sum=0 self.atkBufferSum=0
for i=1,h do for i=1,h do
self:createClearingFX(i,1.5) self:createClearingFX(i,1.5)