Compare commits

...

1 Commits

Author SHA1 Message Date
MrZ_26
e7c797bf14 Alpha V0.7.5 2020-02-04 19:30:42 +08:00
9 changed files with 175 additions and 150 deletions

9
ai.lua
View File

@@ -112,7 +112,7 @@ function getScore(field,bn,cb,cx,cy)
ins(freeRow,height) ins(freeRow,height)
score= score=
#field*20 #field*20
-cy*40 -cy*35
-#cb*25 -#cb*25
+clearScore[clear]*(8+#field) +clearScore[clear]*(8+#field)
-hole*50 -hole*50
@@ -167,4 +167,11 @@ function AI_getControls(ctrl)
ins(ctrl,l[i]) ins(ctrl,l[i])
end end
ins(ctrl,6) ins(ctrl,6)
if rnd()<.1 then
if P.atkMode~=4 and P==mostDangerous then
ins(P.ai.controls,9)
--Smarter AI???
end
end
end end

View File

@@ -530,7 +530,7 @@ function love.run()
end end
end end
else else
tm.sleep(.2) tm.sleep(.5)
if wd.hasFocus()then if wd.hasFocus()then
tm.step() tm.step()
focus=true focus=true

View File

@@ -1,7 +1,7 @@
function love.conf(t) function love.conf(t)
local X=nil local X=nil
t.identity="Techmino"--The name of the save directory (string) t.identity="Techmino"--Save directory name
t.appendidentity=X--Search files in source directory before save directory (boolean) t.appendidentity=X--If search files in source before save directory
t.version="11.1" t.version="11.1"
t.console=X t.console=X
t.accelerometerjoystick=X--If exposing accelerometer on iOS and Android as a Joystick t.accelerometerjoystick=X--If exposing accelerometer on iOS and Android as a Joystick
@@ -9,7 +9,7 @@ function love.conf(t)
t.audio.mixwithsystem=true--Switch on to keep sysBGM t.audio.mixwithsystem=true--Switch on to keep sysBGM
local W=t.window local W=t.window
W.title="Techmino V0.7.4" W.title="Techmino V0.7.5"
W.icon="/image/icon.png" W.icon="/image/icon.png"
W.width,W.height=1280,720 W.width,W.height=1280,720
W.borderless=X W.borderless=X
@@ -20,7 +20,7 @@ function love.conf(t)
W.vsync=X--0 to set ∞fps W.vsync=X--0 to set ∞fps
W.msaa=X--The number of samples to use with multi-sampled antialiasing (number) W.msaa=X--The number of samples to use with multi-sampled antialiasing (number)
W.depth=X--Bits per sample in the depth buffer W.depth=X--Bits per sample in the depth buffer
W.stencil=8--The number of bits per sample in the stencil buffer W.stencil=1--The number of bits per sample in the stencil buffer
W.display=1--Monitor ID W.display=1--Monitor ID
W.highdpi=X--Enable high-dpi mode for the window on a Retina display (boolean) W.highdpi=X--Enable high-dpi mode for the window on a Retina display (boolean)
W.x,W.y=nil W.x,W.y=nil

View File

@@ -23,8 +23,7 @@ function resetGameData()
until P.atking~=P until P.atking~=P
end end
end end
mostBadge=nil mostBadge,mostDangerous,secBadge,secDangerous=nil
mostDangerous=nil
end end
for i=1,#virtualkey do for i=1,#virtualkey do
virtualkey[i].press=false virtualkey[i].press=false
@@ -102,7 +101,13 @@ function createPlayer(id,x,y,size,AIspeed,data)
P.dropDelay,P.lockDelay=P.gameEnv.drop,P.gameEnv.lock P.dropDelay,P.lockDelay=P.gameEnv.drop,P.gameEnv.lock
P.freshTime=0 P.freshTime=0
P.lastSpin=false P.lastSpin=false
if P.gameEnv.sequence<5 then if P.gameEnv.sequence==3 then
for i=1,6 do
local r=rnd(7)
P.nxt[i]=r
P.nb[i]=blocks[r][0]
end
elseif P.gameEnv.sequence<5 then
local bag1={1,2,3,4,5,6,7} local bag1={1,2,3,4,5,6,7}
for i=1,7 do for i=1,7 do
P.nxt[i]=rem(bag1,rnd(#bag1)) P.nxt[i]=rem(bag1,rnd(#bag1))
@@ -166,28 +171,37 @@ function throwBadge(S,R,amount)--Player id
end end
ins(FX.badge,{x1,y1,x2,y2,t=0,size=(10+min(amount,10))*.1}) ins(FX.badge,{x1,y1,x2,y2,t=0,size=(10+min(amount,10))*.1})
end end
function randomTarget(p)
if #players.alive>1 then
local r
repeat
r=players.alive[rnd(#players.alive)]
until r~=p
return r
end
end
function freshRoyaleTarget() function freshRoyaleTarget()
local b,sec=0 mostBadge,secBadge,mostDangerous,secDangerous=nil
local h,b=0,0
for i=1,#players.alive do for i=1,#players.alive do
if players.alive[i].badge>b then if players.alive[i].badge>=h then
mostBadge,secBadge=players.alive[i],mostBadge mostBadge,secBadge=players.alive[i],mostBadge
b=players[i].badge h=players[i].badge
end
if #players.alive[i].field>=b then
mostDangerous,secDangerous=players.alive[i],mostDangerous
b=#players[i].field
end end
end end
for i=1,#players.alive do for i=1,#players.alive do
if P.atkMode==2 then local P=players.alive[i]
if P.atkMode==1 then
if not P.atking then
P.atking=randomTarget(P)
end
elseif P.atkMode==2 then
P.atking=P~=mostBadge and mostBadge or secBadge P.atking=P~=mostBadge and mostBadge or secBadge
end elseif P.atkMode==3 then
end
h,sec=0
for i=1,#players.alive do
if #players.alive[i].field>h then
mostDangerous,secDangerous=players.alive[i],mostBadge
h=#players[i].field
end
end
for i=1,#players.alive do
if P.atkMode==3 then
P.atking=P~=mostDangerous and mostDangerous or secDangerous P.atking=P~=mostDangerous and mostDangerous or secDangerous
end end
end end
@@ -268,7 +282,8 @@ function resetblock()
freshgho() freshgho()
if P.keyPressing[6]then act.hardDrop()P.keyPressing[6]=false end if P.keyPressing[6]then act.hardDrop()P.keyPressing[6]=false end
end end
function pressKey(i,P) function pressKey(i,p)
P=p
P.keyPressing[i]=true P.keyPressing[i]=true
if i==10 then if i==10 then
act.restart() act.restart()
@@ -276,10 +291,23 @@ function pressKey(i,P)
if P.control and P.waiting<=0 then if P.control and P.waiting<=0 then
act[actName[i]]() act[actName[i]]()
if i>2 and i<7 then P.keyPressing[i]=false end if i>2 and i<7 then P.keyPressing[i]=false end
elseif i==1 then elseif P.keyPressing[9]then
P.moving=-1 if i==1 then
elseif i==2 then P.atkMode=1
P.moving=1 P.atking=randomTarget(P)
elseif i==2 then
P.atkMode=2
elseif i==6 then
P.atkMode=3
elseif i==7 then
P.atkMode=4
end
else
if i==1 then
P.moving=-1
elseif i==2 then
P.moving=1
end
end end
ins(P.keyTime,1,frame)rem(P.keyTime,11) ins(P.keyTime,1,frame)rem(P.keyTime,11)
P.cstat.key=P.cstat.key+1 P.cstat.key=P.cstat.key+1
@@ -287,8 +315,8 @@ function pressKey(i,P)
end end
--ins(rec,{i,frame}) --ins(rec,{i,frame})
end end
function releaseKey(i,player) function releaseKey(i,p)
(player or players[1]).keyPressing[i]=false p.keyPressing[i]=false
-- if playmode=="recording"then ins(rec,{-i,frame})end -- if playmode=="recording"then ins(rec,{-i,frame})end
end end
function spin(d,ifpre) function spin(d,ifpre)
@@ -487,8 +515,8 @@ function drop()
end end
end end
if atker>1 then if atker>1 then
csend=csend+ceil(atker*.5) csend=csend+reAtk[atker]
exblock=exblock+int(atker*.5) exblock=exblock+reDef[atker]
end end
end end
@@ -503,6 +531,12 @@ function drop()
if P.id==1 then stat.atk=stat.atk+csend end if P.id==1 then stat.atk=stat.atk+csend end
--ATK statistics --ATK statistics
if csend>0 then
showText(csend,"zoomout",25,70)
if exblock>0 then
showText(exblock,"zoomout",10,70)
end
end
while csend>0 and P.atkBuffer[1]do while csend>0 and P.atkBuffer[1]do
if exblock>0 then if exblock>0 then
exblock=exblock-1 exblock=exblock-1
@@ -519,34 +553,23 @@ function drop()
end end
end end
if csend>0 then if csend>0 then
showText(csend,"zoomout",25,70)
if modeEnv.royaleMode then if modeEnv.royaleMode then
if #players.alive>1 then if P.atkMode==4 then
if P.atkMode==4 then local f
for i=1,#players.alive do for i=1,#players.alive do
if players.alive[i].atking==P then if players.alive[i].atking==P then
garbageSend(P,players.alive[i],csend,sendTime) garbageSend(P,players.alive[i],csend,sendTime)
end f=true
end
else
if P.atkMode==1 and rnd()<.2 or not P.atking then
local r
repeat
r=players.alive[rnd(#players.alive)]
until r~=P
P.atking=r
end
if P.atking then
garbageSend(P,P.atking,csend,sendTime)
end end
end end
if not f then
garbageSend(P,P.atking or randomTarget(P),csend,sendTime)
end
else
garbageSend(P,P.atking or randomTarget(P),csend,sendTime)
end end
elseif #players.alive>1 then elseif #players.alive>1 then
local r garbageSend(P,randomTarget(P),csend,sendTime)
repeat
r=players.alive[rnd(#players.alive)]
until r~=P
garbageSend(P,r,csend,sendTime)
end end
end end
elseif cc==0 then elseif cc==0 then
@@ -630,7 +653,7 @@ act={
if P.keyPressing[9]then if P.keyPressing[9]then
if P.atkMode~=2 then if P.atkMode~=2 then
P.atkMode=2 P.atkMode=2
P.atking=mostBadge P.atking=P~=mostBadge and mostBadge or secBadge
end end
else else
if not auto then if not auto then
@@ -652,7 +675,7 @@ act={
if P.keyPressing[9]then if P.keyPressing[9]then
if P.atkMode~=3 then if P.atkMode~=3 then
P.atkMode=3 P.atkMode=3
P.atking=mostDangerous P.atking=P~=mostDangerous and mostDangerous or secDangerous
end end
else else
if P.waiting<=0 then if P.waiting<=0 then
@@ -695,6 +718,7 @@ act={
end, end,
restart=function() restart=function()
resetGameData() resetGameData()
frame=90
end, end,
insDown=function()if P.cy~=P.y_img then P.cy,P.lockDelay,P.spinLast=P.y_img,P.gameEnv.lock,false end end, insDown=function()if P.cy~=P.y_img then P.cy,P.lockDelay,P.spinLast=P.y_img,P.gameEnv.lock,false end end,
insLeft=function() insLeft=function()

View File

@@ -246,10 +246,11 @@ testScore={[0]=0,[-1]=1,[-2]=0,[-3]=1,2,2,2}
spin_n={"spin_1","spin_2","spin_3"} spin_n={"spin_1","spin_2","spin_3"}
clear_n={"clear_1","clear_2","clear_3","clear_4"} clear_n={"clear_1","clear_2","clear_3","clear_4"}
ren_n={"ren_1","ren_2","ren_3","ren_4","ren_5","ren_6","ren_7","ren_8","ren_9","ren_10","ren_11"} ren_n={"ren_1","ren_2","ren_3","ren_4","ren_5","ren_6","ren_7","ren_8","ren_9","ren_10","ren_11"}
atkModeName={"Random","Badges","K.O.s","Attackers"} atkModeName={"Random","Badges","K.O.s","Counters"}
up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",} up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
percent0to5={[0]="0%","20%","40%","60%","80%","100%",} percent0to5={[0]="0%","20%","40%","60%","80%","100%",}
reAtk={0,0,1,1,1,2,2,3,3}
reDef={0,1,1,2,3,3,4,4,5}
marathon_drop={[0]=60,48,40,30,24,18,15,12,10,8,7,6,5,4,3,2,1,1,0,0} marathon_drop={[0]=60,48,40,30,24,18,15,12,10,8,7,6,5,4,3,2,1,1,0,0}
death_lock={12,11,10,9,8} death_lock={12,11,10,9,8}
death_wait={9,8,7,6,5} death_wait={9,8,7,6,5}

View File

@@ -270,6 +270,7 @@ loadmode={
techmino41=function() techmino41=function()
modeEnv={ modeEnv={
freshLimit=15, freshLimit=15,
fall=20,
royaleMode=true, royaleMode=true,
royale={2,5,10,20}, royale={2,5,10,20},
} }
@@ -278,13 +279,13 @@ loadmode={
local n=2 local n=2
for i=1,4 do for i=1,4 do
for j=1,5 do for j=1,5 do
createPlayer(n,75*i-48,142*j-130,.19,rnd(15)) createPlayer(n,77*i-55,140*j-125,.2,rnd(15))
n=n+1 n=n+1
end end
end end
for i=9,12 do for i=9,12 do
for j=1,5 do for j=1,5 do
createPlayer(n,75*i+292,142*j-130,.19,rnd(15)) createPlayer(n,77*i+275,140*j-125,.2,rnd(15))
n=n+1 n=n+1
end end
end--AIs end--AIs
@@ -295,6 +296,7 @@ loadmode={
techmino99=function() techmino99=function()
modeEnv={ modeEnv={
freshLimit=15, freshLimit=15,
fall=20,
royaleMode=true, royaleMode=true,
royale={2,6,14,30}, royale={2,6,14,30},
} }
@@ -455,26 +457,28 @@ mesDisp={
techmino41=function() techmino41=function()
setFont(40) setFont(40)
mStr(#players.alive.."/41",-80,180) mStr(#players.alive.."/41",-80,180)
mStr(P.ko,-55,220) mStr(P.ko,-65,220)
setFont(25) setFont(25)
gc.print("KO",-105,229) gc.print("KO",-120,229)
gc.print(P.badge,-40,233)
setFont(30)
gc.print(up0to4[P.strength],-125,295)
for i=1,P.strength do for i=1,P.strength do
gc.draw(badgeIcon,16*i-130,260) gc.draw(badgeIcon,16*i-130,260)
end end
setFont(30)
gc.print(up0to4[P.strength],-125,295)
end, end,
techmino99=function() techmino99=function()
setFont(40) setFont(40)
mStr(#players.alive.."/99",-80,180) mStr(#players.alive.."/99",-80,180)
mStr(P.ko,-55,220) mStr(P.ko,-65,220)
setFont(25) setFont(25)
gc.print("KO",-105,229) gc.print("KO",-120,229)
gc.print(P.badge,-40,233)
setFont(30)
gc.print(up0to4[P.strength],-125,295)
for i=1,P.strength do for i=1,P.strength do
gc.draw(badgeIcon,16*i-130,260) gc.draw(badgeIcon,16*i-130,260)
end end
setFont(30)
gc.print(up0to4[P.strength],-125,295)
end, end,
blind=function() blind=function()
setFont(25) setFont(25)
@@ -498,8 +502,9 @@ Event={
P.control=false P.control=false
P.timing=false P.timing=false
P.waiting=1e99 P.waiting=1e99
P.result="WIN" P.atking=nil
P.b2b=0 P.b2b=0
P.result="WIN"
for i=1,#P.field do for i=1,#P.field do
for j=1,10 do for j=1,10 do
P.visTime[i][j]=min(P.visTime[i][j],20) P.visTime[i][j]=min(P.visTime[i][j],20)
@@ -513,17 +518,14 @@ Event={
P.alive=false P.alive=false
P.control=false P.control=false
P.timing=false P.timing=false
P.result=" K.O."
P.waiting=1e99 P.waiting=1e99
P.atking=nil P.atking=nil
P.b2b=0 P.b2b=0
P.result=" K.O."
showText("LOSE","appear",100,nil,true) showText("LOSE","appear",100,nil,true)
for i=1,#players.alive do for i=1,#players.alive do
if players.alive[i]==P then if players.alive[i]==P then
rem(players.alive,i) rem(players.alive,i)
if #players.alive==1 then
ins(players.alive[1].task,Event.task.winTrigger)
end
break break
end end
end end
@@ -558,6 +560,9 @@ Event={
end end
if P.id==1 and players[2]and players[2].ai then SFX("fail")end if P.id==1 and players[2]and players[2].ai then SFX("fail")end
ins(P.task,Event.task.lose) ins(P.task,Event.task.lose)
if #players.alive==1 then
ins(players.alive[1].task,Event.task.winTrigger)
end
end, end,
}, },
marathon_reach=function() marathon_reach=function()
@@ -618,7 +623,7 @@ Event={
end, end,
win=function() win=function()
P.counter=P.counter+1 P.counter=P.counter+1
if P.counter>60 then if P.counter>80 then
for i=1,#P.field do for i=1,#P.field do
for j=1,10 do for j=1,10 do
if P.visTime[i][j]>0 then if P.visTime[i][j]>0 then
@@ -637,7 +642,7 @@ Event={
end, end,
lose=function() lose=function()
P.counter=P.counter+1 P.counter=P.counter+1
if P.counter>60 then if P.counter>80 then
for i=1,#P.field do for i=1,#P.field do
for j=1,10 do for j=1,10 do
if P.visTime[i][j]>0 then if P.visTime[i][j]>0 then

View File

@@ -134,16 +134,15 @@ function drawDial(x,y,speed)
mStr(int(speed),0,-14) mStr(int(speed),0,-14)
gc.draw(dialCircle,0,0,nil,nil,nil,32,32) gc.draw(dialCircle,0,0,nil,nil,nil,32,32)
gc.setColor(1,1,1,.6) gc.setColor(1,1,1,.6)
gc.draw(dialNeedle,0,0,2.0944+(speed<=175 and .020944*speed or 4.712389-52.35988/(speed-125)),nil,nil,5,4) gc.draw(dialNeedle,0,0,2.094+(speed<=175 and .02094*speed or 4.712-52.36/(speed-125)),nil,nil,5,4)
gc.pop() gc.pop()
end end
function drawPixel(y,x,id,alpha) function drawPixel(y,x,id,alpha)
gc.setColor(1,1,1,alpha) gc.setColor(1,1,1,alpha)
gc.draw(blockSkin[id],30*x-30,600-30*y) gc.draw(blockSkin[id],30*x-30,600-30*y)
end end
function drawPixelmini(y,x,id,alpha) function drawPixelmini(y,x,id)
gc.setColor(1,1,1,alpha) gc.draw(blockSkinmini[id],30*x-30,600-30*y,nil,5)
gc.draw(blockSkinmini[id],30*x-30,600-30*y,nil,2.5)
end end
function drawVirtualkey(s) function drawVirtualkey(s)
gc.setLineWidth(10) gc.setLineWidth(10)
@@ -223,25 +222,25 @@ function Pnt.load()
end end
function Pnt.intro() function Pnt.intro()
gc.push() gc.push()
gc.translate(250,150) gc.translate(250,150)
gc.scale(30) gc.scale(30)
gc.setColor(1,1,1,min(count,80)*.005) gc.stencil(stencil_miniTitle,"replace",1)
gc.draw(miniTitle)
gc.setColor(1,1,1)
gc.stencil(stencil_miniTitle,"replace",1)
gc.setStencilTest("equal",1) gc.setStencilTest("equal",1)
gc.setColor(1,1,1,min(count,80)*.005)
gc.rectangle("fill",0,0,26,14)
gc.pop() gc.pop()
gc.setColor(1,1,1,.125) gc.setColor(1,1,1)
for i=19,5,-2 do gc.setColor(1,1,1,.125)
gc.setLineWidth(i) for i=19,5,-2 do
gc.line(250+(count-80)*25,150,(count-80)*25-150,570) gc.setLineWidth(i)
end gc.line(250+(count-80)*25,150,(count-80)*25-150,570)
end
gc.setStencilTest() gc.setStencilTest()
end end
function Pnt.main() function Pnt.main()
gc.setColor(1,1,1) gc.setColor(1,1,1)
setFont(30) setFont(30)
gc.print("Alpha V0.7.4",370,150) gc.print("Alpha V0.7.5",370,150)
gc.print(system,530,110) gc.print(system,530,110)
gc.draw(titleImage,30,30) gc.draw(titleImage,30,30)
end end
@@ -291,23 +290,12 @@ function Pnt.play()
gc.stencil(stencil_field_small,"replace",1) gc.stencil(stencil_field_small,"replace",1)
gc.translate(0,P.fieldBeneath) gc.translate(0,P.fieldBeneath)
gc.setStencilTest("equal",1) gc.setStencilTest("equal",1)
if P.result then gc.setColor(1,1,1,P.result and max(20-P.counter,0)*.05 or 1)
for j=int(P.fieldBeneath/30+1),#P.field do for j=int(P.fieldBeneath/30+1),#P.field do
if P.falling<=0 or without(P.clearing,j)then if P.falling<=0 or without(P.clearing,j)then
for i=1,10 do for i=1,10 do
if P.field[j][i]>0 then if P.field[j][i]>0 then
drawPixelmini(j,i,P.field[j][i],min(P.visTime[j][i],20)*.05) drawPixelmini(j,i,P.field[j][i])
end
end
end
end
else
for j=int(P.fieldBeneath/30+1),#P.field do
if P.falling<=0 or without(P.clearing,j)then
for i=1,10 do
if P.field[j][i]>0 then
drawPixelmini(j,i,P.field[j][i],1)
end
end end
end end
end end
@@ -448,7 +436,7 @@ function Pnt.play()
end end
end--Next end--Next
if frame<180 then if frame<180 then
local count=180-frame local count=179-frame
gc.push("transform") gc.push("transform")
gc.translate(155,220) gc.translate(155,220)
gc.setColor(1,1,1) gc.setColor(1,1,1)
@@ -491,18 +479,25 @@ function Pnt.play()
drawVirtualkey() drawVirtualkey()
end end
if modeEnv.royaleMode then if modeEnv.royaleMode then
gc.setLineWidth(5)
gc.setColor(1,1,0,.2)
P=players[1] P=players[1]
if P.atkMode~=4 then
gc.setLineWidth(5)
gc.setColor(.8,1,0,.2)
else
gc.setLineWidth(9)
gc.setColor(1,.6,.2,.4)
end
for i=1,#players.alive do for i=1,#players.alive do
local p=players.alive[i] local p=players.alive[i]
if p.atking==players[1]then if p.atking==players[1]then
gc.line(p.centerX,p.centerY,P.centerX,P.centerY) gc.line(p.centerX,p.centerY,P.centerX,P.centerY)
end end
end end
if P.atking then if P.atkMode~=4 then
gc.setColor(0,.5,1,.2+(sin(Timer()*7)+1)*.1) if P.atking then
gc.line(P.centerX,P.centerY,P.atking.centerX,P.atking.centerY) gc.setColor(0,.5,1,.2+(sin(Timer()*7)+1)*.1)
gc.line(P.centerX,P.centerY,P.atking.centerX,P.atking.centerY)
end
end end
end end
end end

View File

@@ -6,18 +6,20 @@ function C(x,y)
end end
gc.setDefaultFilter("nearest","nearest") gc.setDefaultFilter("nearest","nearest")
miniTitle=C(26,14)
gc.setColor(1,1,1)
for i=1,#miniTitle_pixel do
gc.rectangle("fill",unpack(miniTitle_pixel[i]))
end
gc.setDefaultFilter("linear","linear")
titleImage=N("/image/mess/title.png")
spinCenter=N("/image/mess/spinCenter.png")
dialCircle=N("/image/mess/dialCircle.png")
dialNeedle=N("/image/mess/dialNeedle.png")
badgeIcon=N("/image/mess/badge.png")
local blockImg=N("/image/block/1.png")
blockSkin,blockSkinmini={},{}
for i=1,13 do
C(30,30)
gc.draw(blockImg,30-30*i,0)
blockSkin[i]=c
C(6,6)
gc.draw(blockImg,6-6*i,0,nil,.2)
blockSkinmini[i]=c
end
for i=1,13 do
end
blockImg:release()
RCPB={10,33,200,33,105,5,105,60} RCPB={10,33,200,33,105,5,105,60}
do royaleCtrlPad=C(300,100) do royaleCtrlPad=C(300,100)
@@ -30,25 +32,6 @@ do royaleCtrlPad=C(300,100)
end end
end end
do local img=N("/image/block/1.png")
blockSkin,blockSkinmini={},{}
for i=1,13 do
C(30,30)
gc.draw(img,30-30*i,0)
blockSkin[i]=c
C(12,12)
gc.draw(img,12-12*i,0,nil,.4)
blockSkinmini[i]=c
end
img:release()
end
background={
N("/image/BG/bg1.jpg"),
N("/image/BG/bg2.png"),
}
gc.setDefaultFilter("nearest","nearest")
virtualkeyIcon={} virtualkeyIcon={}
for i=1,10 do for i=1,10 do
virtualkeyIcon[i]=N("/image/virtualkey/"..actName[i]..".png") virtualkeyIcon[i]=N("/image/virtualkey/"..actName[i]..".png")
@@ -98,6 +81,16 @@ PTC.attack[3]:setSpin(6)
PTC.attack[3]:setColors(1,1,1,.7,1,1,1,0) PTC.attack[3]:setColors(1,1,1,.7,1,1,1,0)
--Attack particles --Attack particles
gc.setDefaultFilter("linear","linear")
titleImage=N("/image/mess/title.png")
spinCenter=N("/image/mess/spinCenter.png")
dialCircle=N("/image/mess/dialCircle.png")
dialNeedle=N("/image/mess/dialNeedle.png")
badgeIcon=N("/image/mess/badge.png")
background={
N("/image/BG/bg1.jpg"),
N("/image/BG/bg2.png"),
}
c=nil c=nil
gc.setCanvas() gc.setCanvas()
gc.setDefaultFilter("linear","linear")

View File

@@ -105,7 +105,7 @@ function Tmr.play(dt)
P.ai.controlDelay=P.ai.controlDelay0+2 P.ai.controlDelay=P.ai.controlDelay0+2
else else
AI_getControls(P.ai.controls) AI_getControls(P.ai.controls)
P.ai.controlDelay=2*P.ai.controlDelay0 P.ai.controlDelay=rnd(3)*P.ai.controlDelay0
end end
end end
end end
@@ -243,7 +243,7 @@ function Tmr.play(dt)
PTC.dust[p]:update(dt) PTC.dust[p]:update(dt)
end end
end end
if modeEnv.royale and frame%120==0 then if modeEnv.royale and frame%75==0 then
freshRoyaleTarget() freshRoyaleTarget()
end end
setmetatable(_G,nil) setmetatable(_G,nil)