diff --git a/VOICE/I_1.ogg b/VOICE/I_1.ogg deleted file mode 100644 index d83aa472..00000000 Binary files a/VOICE/I_1.ogg and /dev/null differ diff --git a/VOICE/I_2.ogg b/VOICE/I_2.ogg deleted file mode 100644 index 85c9a916..00000000 Binary files a/VOICE/I_2.ogg and /dev/null differ diff --git a/VOICE/J_1.ogg b/VOICE/J_1.ogg deleted file mode 100644 index ca0fdfe1..00000000 Binary files a/VOICE/J_1.ogg and /dev/null differ diff --git a/VOICE/J_2.ogg b/VOICE/J_2.ogg deleted file mode 100644 index b3649a41..00000000 Binary files a/VOICE/J_2.ogg and /dev/null differ diff --git a/VOICE/L_1.ogg b/VOICE/L_1.ogg deleted file mode 100644 index b9c88dbb..00000000 Binary files a/VOICE/L_1.ogg and /dev/null differ diff --git a/VOICE/L_2.ogg b/VOICE/L_2.ogg deleted file mode 100644 index b46df613..00000000 Binary files a/VOICE/L_2.ogg and /dev/null differ diff --git a/VOICE/O_1.ogg b/VOICE/O_1.ogg deleted file mode 100644 index 87c839a5..00000000 Binary files a/VOICE/O_1.ogg and /dev/null differ diff --git a/VOICE/O_2.ogg b/VOICE/O_2.ogg deleted file mode 100644 index 35b4298a..00000000 Binary files a/VOICE/O_2.ogg and /dev/null differ diff --git a/VOICE/PC_1.ogg b/VOICE/PC_1.ogg index 80d81bb8..3c3ad075 100644 Binary files a/VOICE/PC_1.ogg and b/VOICE/PC_1.ogg differ diff --git a/VOICE/S_1.ogg b/VOICE/S_1.ogg deleted file mode 100644 index 40f54eda..00000000 Binary files a/VOICE/S_1.ogg and /dev/null differ diff --git a/VOICE/S_2.ogg b/VOICE/S_2.ogg deleted file mode 100644 index 7588e267..00000000 Binary files a/VOICE/S_2.ogg and /dev/null differ diff --git a/VOICE/T_1.ogg b/VOICE/T_1.ogg deleted file mode 100644 index 9e56790b..00000000 Binary files a/VOICE/T_1.ogg and /dev/null differ diff --git a/VOICE/T_2.ogg b/VOICE/T_2.ogg deleted file mode 100644 index 90d57f79..00000000 Binary files a/VOICE/T_2.ogg and /dev/null differ diff --git a/VOICE/Z_1.ogg b/VOICE/Z_1.ogg deleted file mode 100644 index f14898fd..00000000 Binary files a/VOICE/Z_1.ogg and /dev/null differ diff --git a/VOICE/Z_2.ogg b/VOICE/Z_2.ogg deleted file mode 100644 index 2f02e54e..00000000 Binary files a/VOICE/Z_2.ogg and /dev/null differ diff --git a/VOICE/b2b_1.ogg b/VOICE/b2b_1.ogg index 3d717ff2..9825507a 100644 Binary files a/VOICE/b2b_1.ogg and b/VOICE/b2b_1.ogg differ diff --git a/VOICE/b2b_2.ogg b/VOICE/b2b_2.ogg index 2b13429b..fe4c83b8 100644 Binary files a/VOICE/b2b_2.ogg and b/VOICE/b2b_2.ogg differ diff --git a/VOICE/b2b_3.ogg b/VOICE/b2b_3.ogg index d72131f5..dca28454 100644 Binary files a/VOICE/b2b_3.ogg and b/VOICE/b2b_3.ogg differ diff --git a/VOICE/b3b_1.ogg b/VOICE/b3b_1.ogg index e336596b..533febbe 100644 Binary files a/VOICE/b3b_1.ogg and b/VOICE/b3b_1.ogg differ diff --git a/VOICE/b3b_2.ogg b/VOICE/b3b_2.ogg new file mode 100644 index 00000000..0dc6bcc6 Binary files /dev/null and b/VOICE/b3b_2.ogg differ diff --git a/VOICE/bye_1.ogg b/VOICE/bye_1.ogg new file mode 100644 index 00000000..13366f0c Binary files /dev/null and b/VOICE/bye_1.ogg differ diff --git a/VOICE/bye_2.ogg b/VOICE/bye_2.ogg new file mode 100644 index 00000000..045a26f8 Binary files /dev/null and b/VOICE/bye_2.ogg differ diff --git a/VOICE/double_1.ogg b/VOICE/double_1.ogg index 1f3f55e9..af2b2c63 100644 Binary files a/VOICE/double_1.ogg and b/VOICE/double_1.ogg differ diff --git a/VOICE/double_2.ogg b/VOICE/double_2.ogg index 3446bd88..ca10bc11 100644 Binary files a/VOICE/double_2.ogg and b/VOICE/double_2.ogg differ diff --git a/VOICE/double_3.ogg b/VOICE/double_3.ogg index 33e996b3..5e289815 100644 Binary files a/VOICE/double_3.ogg and b/VOICE/double_3.ogg differ diff --git a/VOICE/double_4.ogg b/VOICE/double_4.ogg new file mode 100644 index 00000000..6e2b9b63 Binary files /dev/null and b/VOICE/double_4.ogg differ diff --git a/VOICE/double_5.ogg b/VOICE/double_5.ogg new file mode 100644 index 00000000..950bb06d Binary files /dev/null and b/VOICE/double_5.ogg differ diff --git a/VOICE/ispin_1.ogg b/VOICE/ispin_1.ogg new file mode 100644 index 00000000..25a5539f Binary files /dev/null and b/VOICE/ispin_1.ogg differ diff --git a/VOICE/ispin_2.ogg b/VOICE/ispin_2.ogg new file mode 100644 index 00000000..661ea38b Binary files /dev/null and b/VOICE/ispin_2.ogg differ diff --git a/VOICE/ispin_3.ogg b/VOICE/ispin_3.ogg new file mode 100644 index 00000000..b0233fa7 Binary files /dev/null and b/VOICE/ispin_3.ogg differ diff --git a/VOICE/jspin_1.ogg b/VOICE/jspin_1.ogg new file mode 100644 index 00000000..efe10935 Binary files /dev/null and b/VOICE/jspin_1.ogg differ diff --git a/VOICE/jspin_2.ogg b/VOICE/jspin_2.ogg new file mode 100644 index 00000000..81abf3bc Binary files /dev/null and b/VOICE/jspin_2.ogg differ diff --git a/VOICE/jspin_3.ogg b/VOICE/jspin_3.ogg new file mode 100644 index 00000000..cb9c44e8 Binary files /dev/null and b/VOICE/jspin_3.ogg differ diff --git a/VOICE/jspin_4.ogg b/VOICE/jspin_4.ogg new file mode 100644 index 00000000..3b6eb33c Binary files /dev/null and b/VOICE/jspin_4.ogg differ diff --git a/VOICE/lose_1.ogg b/VOICE/lose_1.ogg index a06e28c5..0d6c2e70 100644 Binary files a/VOICE/lose_1.ogg and b/VOICE/lose_1.ogg differ diff --git a/VOICE/lose_2.ogg b/VOICE/lose_2.ogg index c79f0a7d..29ebd17b 100644 Binary files a/VOICE/lose_2.ogg and b/VOICE/lose_2.ogg differ diff --git a/VOICE/lose_3.ogg b/VOICE/lose_3.ogg index aeae0d62..da48ed4b 100644 Binary files a/VOICE/lose_3.ogg and b/VOICE/lose_3.ogg differ diff --git a/VOICE/lspin_1.ogg b/VOICE/lspin_1.ogg new file mode 100644 index 00000000..ff0342f2 Binary files /dev/null and b/VOICE/lspin_1.ogg differ diff --git a/VOICE/lspin_2.ogg b/VOICE/lspin_2.ogg new file mode 100644 index 00000000..102abe27 Binary files /dev/null and b/VOICE/lspin_2.ogg differ diff --git a/VOICE/mini_1.ogg b/VOICE/mini_1.ogg index 75f2de42..8678bc2e 100644 Binary files a/VOICE/mini_1.ogg and b/VOICE/mini_1.ogg differ diff --git a/VOICE/mini_2.ogg b/VOICE/mini_2.ogg new file mode 100644 index 00000000..4b1230a4 Binary files /dev/null and b/VOICE/mini_2.ogg differ diff --git a/VOICE/mini_3.ogg b/VOICE/mini_3.ogg new file mode 100644 index 00000000..cf10f229 Binary files /dev/null and b/VOICE/mini_3.ogg differ diff --git a/VOICE/nya_o0.ogg b/VOICE/nya_o0.ogg deleted file mode 100644 index 5eefd148..00000000 Binary files a/VOICE/nya_o0.ogg and /dev/null differ diff --git a/VOICE/nya_o1.ogg b/VOICE/nya_o1.ogg deleted file mode 100644 index e1774506..00000000 Binary files a/VOICE/nya_o1.ogg and /dev/null differ diff --git a/VOICE/nya_o2.ogg b/VOICE/nya_o2.ogg deleted file mode 100644 index 260fb6b4..00000000 Binary files a/VOICE/nya_o2.ogg and /dev/null differ diff --git a/VOICE/nya_o3.ogg b/VOICE/nya_o3.ogg deleted file mode 100644 index cb7bbcd1..00000000 Binary files a/VOICE/nya_o3.ogg and /dev/null differ diff --git a/VOICE/nya_o4.ogg b/VOICE/nya_o4.ogg deleted file mode 100644 index 0f3789ff..00000000 Binary files a/VOICE/nya_o4.ogg and /dev/null differ diff --git a/VOICE/nya_o5.ogg b/VOICE/nya_o5.ogg deleted file mode 100644 index b9b4d998..00000000 Binary files a/VOICE/nya_o5.ogg and /dev/null differ diff --git a/VOICE/ospin_1.ogg b/VOICE/ospin_1.ogg new file mode 100644 index 00000000..1d0651ed Binary files /dev/null and b/VOICE/ospin_1.ogg differ diff --git a/VOICE/ospin_2.ogg b/VOICE/ospin_2.ogg new file mode 100644 index 00000000..a70f0e17 Binary files /dev/null and b/VOICE/ospin_2.ogg differ diff --git a/VOICE/ospin_3.ogg b/VOICE/ospin_3.ogg new file mode 100644 index 00000000..b8523892 Binary files /dev/null and b/VOICE/ospin_3.ogg differ diff --git a/VOICE/pc_2.ogg b/VOICE/pc_2.ogg new file mode 100644 index 00000000..84cc57fa Binary files /dev/null and b/VOICE/pc_2.ogg differ diff --git a/VOICE/single_1.ogg b/VOICE/single_1.ogg index daafe258..41ec2798 100644 Binary files a/VOICE/single_1.ogg and b/VOICE/single_1.ogg differ diff --git a/VOICE/single_2.ogg b/VOICE/single_2.ogg index 7b2ac62f..e74c7103 100644 Binary files a/VOICE/single_2.ogg and b/VOICE/single_2.ogg differ diff --git a/VOICE/single_3.ogg b/VOICE/single_3.ogg index 808d2a92..b90251af 100644 Binary files a/VOICE/single_3.ogg and b/VOICE/single_3.ogg differ diff --git a/VOICE/single_4.ogg b/VOICE/single_4.ogg new file mode 100644 index 00000000..d66efcf7 Binary files /dev/null and b/VOICE/single_4.ogg differ diff --git a/VOICE/single_5.ogg b/VOICE/single_5.ogg new file mode 100644 index 00000000..b4ce46bd Binary files /dev/null and b/VOICE/single_5.ogg differ diff --git a/VOICE/single_6.ogg b/VOICE/single_6.ogg new file mode 100644 index 00000000..edf427ad Binary files /dev/null and b/VOICE/single_6.ogg differ diff --git a/VOICE/single_7.ogg b/VOICE/single_7.ogg new file mode 100644 index 00000000..f173c2df Binary files /dev/null and b/VOICE/single_7.ogg differ diff --git a/VOICE/spin-_1.ogg b/VOICE/spin-_1.ogg deleted file mode 100644 index ffc8f1a3..00000000 Binary files a/VOICE/spin-_1.ogg and /dev/null differ diff --git a/VOICE/spin-_2.ogg b/VOICE/spin-_2.ogg deleted file mode 100644 index 8b6ddfe6..00000000 Binary files a/VOICE/spin-_2.ogg and /dev/null differ diff --git a/VOICE/spin_1.ogg b/VOICE/spin_1.ogg deleted file mode 100644 index 8221ee23..00000000 Binary files a/VOICE/spin_1.ogg and /dev/null differ diff --git a/VOICE/spin_2.ogg b/VOICE/spin_2.ogg deleted file mode 100644 index 08243d0d..00000000 Binary files a/VOICE/spin_2.ogg and /dev/null differ diff --git a/VOICE/spin_3.ogg b/VOICE/spin_3.ogg deleted file mode 100644 index bc2d5dca..00000000 Binary files a/VOICE/spin_3.ogg and /dev/null differ diff --git a/VOICE/spin_4.ogg b/VOICE/spin_4.ogg deleted file mode 100644 index 71903226..00000000 Binary files a/VOICE/spin_4.ogg and /dev/null differ diff --git a/VOICE/spin_5.ogg b/VOICE/spin_5.ogg deleted file mode 100644 index 42ab4d52..00000000 Binary files a/VOICE/spin_5.ogg and /dev/null differ diff --git a/VOICE/sspin_1.ogg b/VOICE/sspin_1.ogg new file mode 100644 index 00000000..b620a7e0 Binary files /dev/null and b/VOICE/sspin_1.ogg differ diff --git a/VOICE/sspin_2.ogg b/VOICE/sspin_2.ogg new file mode 100644 index 00000000..e32904b5 Binary files /dev/null and b/VOICE/sspin_2.ogg differ diff --git a/VOICE/sspin_3.ogg b/VOICE/sspin_3.ogg new file mode 100644 index 00000000..e6cb6331 Binary files /dev/null and b/VOICE/sspin_3.ogg differ diff --git a/VOICE/sspin_4.ogg b/VOICE/sspin_4.ogg new file mode 100644 index 00000000..a1f18468 Binary files /dev/null and b/VOICE/sspin_4.ogg differ diff --git a/VOICE/sspin_5.ogg b/VOICE/sspin_5.ogg new file mode 100644 index 00000000..2494d3bb Binary files /dev/null and b/VOICE/sspin_5.ogg differ diff --git a/VOICE/sspin_6.ogg b/VOICE/sspin_6.ogg new file mode 100644 index 00000000..e2690ea5 Binary files /dev/null and b/VOICE/sspin_6.ogg differ diff --git a/VOICE/techrash_1.ogg b/VOICE/techrash_1.ogg new file mode 100644 index 00000000..4c4b6f14 Binary files /dev/null and b/VOICE/techrash_1.ogg differ diff --git a/VOICE/techrash_2.ogg b/VOICE/techrash_2.ogg new file mode 100644 index 00000000..c56a01f1 Binary files /dev/null and b/VOICE/techrash_2.ogg differ diff --git a/VOICE/techrash_3.ogg b/VOICE/techrash_3.ogg new file mode 100644 index 00000000..49bc7ab0 Binary files /dev/null and b/VOICE/techrash_3.ogg differ diff --git a/VOICE/techrash_4.ogg b/VOICE/techrash_4.ogg new file mode 100644 index 00000000..c001c793 Binary files /dev/null and b/VOICE/techrash_4.ogg differ diff --git a/VOICE/triple_1.ogg b/VOICE/triple_1.ogg index 6672e2ce..7d564188 100644 Binary files a/VOICE/triple_1.ogg and b/VOICE/triple_1.ogg differ diff --git a/VOICE/triple_2.ogg b/VOICE/triple_2.ogg index 3ef623d5..58518f14 100644 Binary files a/VOICE/triple_2.ogg and b/VOICE/triple_2.ogg differ diff --git a/VOICE/triple_3.ogg b/VOICE/triple_3.ogg new file mode 100644 index 00000000..eb9daf3b Binary files /dev/null and b/VOICE/triple_3.ogg differ diff --git a/VOICE/triple_4.ogg b/VOICE/triple_4.ogg new file mode 100644 index 00000000..cea64b4a Binary files /dev/null and b/VOICE/triple_4.ogg differ diff --git a/VOICE/triple_5.ogg b/VOICE/triple_5.ogg new file mode 100644 index 00000000..b19062fc Binary files /dev/null and b/VOICE/triple_5.ogg differ diff --git a/VOICE/triple_6.ogg b/VOICE/triple_6.ogg new file mode 100644 index 00000000..0221d843 Binary files /dev/null and b/VOICE/triple_6.ogg differ diff --git a/VOICE/triple_7.ogg b/VOICE/triple_7.ogg new file mode 100644 index 00000000..4dedec5b Binary files /dev/null and b/VOICE/triple_7.ogg differ diff --git a/VOICE/tspin_1.ogg b/VOICE/tspin_1.ogg new file mode 100644 index 00000000..982712b1 Binary files /dev/null and b/VOICE/tspin_1.ogg differ diff --git a/VOICE/tspin_2.ogg b/VOICE/tspin_2.ogg new file mode 100644 index 00000000..f597536a Binary files /dev/null and b/VOICE/tspin_2.ogg differ diff --git a/VOICE/tspin_3.ogg b/VOICE/tspin_3.ogg new file mode 100644 index 00000000..d15c5348 Binary files /dev/null and b/VOICE/tspin_3.ogg differ diff --git a/VOICE/tspin_4.ogg b/VOICE/tspin_4.ogg new file mode 100644 index 00000000..3747c6eb Binary files /dev/null and b/VOICE/tspin_4.ogg differ diff --git a/VOICE/tspin_5.ogg b/VOICE/tspin_5.ogg new file mode 100644 index 00000000..af2487ea Binary files /dev/null and b/VOICE/tspin_5.ogg differ diff --git a/VOICE/tspin_6.ogg b/VOICE/tspin_6.ogg new file mode 100644 index 00000000..0b569d33 Binary files /dev/null and b/VOICE/tspin_6.ogg differ diff --git a/VOICE/tts_1.ogg b/VOICE/tts_1.ogg deleted file mode 100644 index 0b4944ed..00000000 Binary files a/VOICE/tts_1.ogg and /dev/null differ diff --git a/VOICE/win_1.ogg b/VOICE/win_1.ogg index ee31baa1..502d5d22 100644 Binary files a/VOICE/win_1.ogg and b/VOICE/win_1.ogg differ diff --git a/VOICE/win_2.ogg b/VOICE/win_2.ogg index efa28813..543ca30a 100644 Binary files a/VOICE/win_2.ogg and b/VOICE/win_2.ogg differ diff --git a/VOICE/win_3.ogg b/VOICE/win_3.ogg new file mode 100644 index 00000000..f5055712 Binary files /dev/null and b/VOICE/win_3.ogg differ diff --git a/VOICE/win_4.ogg b/VOICE/win_4.ogg new file mode 100644 index 00000000..7528d392 Binary files /dev/null and b/VOICE/win_4.ogg differ diff --git a/VOICE/win_5.ogg b/VOICE/win_5.ogg new file mode 100644 index 00000000..c0e14db0 Binary files /dev/null and b/VOICE/win_5.ogg differ diff --git a/VOICE/win_6.ogg b/VOICE/win_6.ogg new file mode 100644 index 00000000..99f681c4 Binary files /dev/null and b/VOICE/win_6.ogg differ diff --git a/VOICE/win_7.ogg b/VOICE/win_7.ogg new file mode 100644 index 00000000..fa5fa03b Binary files /dev/null and b/VOICE/win_7.ogg differ diff --git a/VOICE/win_8.ogg b/VOICE/win_8.ogg new file mode 100644 index 00000000..bcf18792 Binary files /dev/null and b/VOICE/win_8.ogg differ diff --git a/VOICE/zspin_1.ogg b/VOICE/zspin_1.ogg new file mode 100644 index 00000000..8da82c52 Binary files /dev/null and b/VOICE/zspin_1.ogg differ diff --git a/VOICE/zspin_2.ogg b/VOICE/zspin_2.ogg new file mode 100644 index 00000000..776e5193 Binary files /dev/null and b/VOICE/zspin_2.ogg differ diff --git a/VOICE/zspin_3.ogg b/VOICE/zspin_3.ogg new file mode 100644 index 00000000..91bd6caa Binary files /dev/null and b/VOICE/zspin_3.ogg differ diff --git a/VOICE/这游戏有问题.ogg b/VOICE/这游戏有问题.ogg deleted file mode 100644 index c2fa0a08..00000000 Binary files a/VOICE/这游戏有问题.ogg and /dev/null differ diff --git a/ai.lua b/ai.lua index c56dc4b0..cd7e67b6 100644 --- a/ai.lua +++ b/ai.lua @@ -110,8 +110,8 @@ local FCL={ FCL[2]=FCL[1] FCL[4]=FCL[3] FCL[5]=FCL[3] -local LclearScore={[0]=0,-200,-140,-100,200} -local HclearScore={[0]=0,50,80,100,500} +local LclearScore={[0]=0,-200,-120,-80,200} +local HclearScore={[0]=0,100,140,200,500} local function ifoverlapAI(f,bk,x,y) if y<1 then return true end if y>#f then return end @@ -145,7 +145,7 @@ local function getScore(field,cb,cy) clear=clear+1 ::L:: end - if #field==0 then return 1e99 end--PC best + if #field==0 then return 1e99 end--PC for x=1,10 do local h=#field while field[h][x]==0 and h>1 do @@ -177,16 +177,17 @@ local function getScore(field,cb,cy) freeRow[#freeRow+1]=height freeRow.L=freeRow.L+1 score= - -#field*10 - -cy*35 - -#cb*25 + -#field*30 + -#cb*15 +(#field>10 and - HclearScore[clear] - -hole*70 - -sdh + HclearScore[clear]--Clearing + -hole*70--Hole + -cy*50--Height + -sdh--∫Δh or LclearScore[clear] -hole*100 + -cy*40 -sdh*3 ) if #field>6 then score=score-highest*5+20 end diff --git a/conf.lua b/conf.lua index 60d13578..51b3e247 100644 --- a/conf.lua +++ b/conf.lua @@ -1,5 +1,5 @@ math.randomseed(os.time()) -gameVersion="Alpha V0.7.33+" +gameVersion="Alpha V0.7.34" function love.conf(t) t.identity="Techmino"--Save directory name t.version="11.1" diff --git a/dataList.lua b/dataList.lua index 3058a8f6..04a1224c 100644 --- a/dataList.lua +++ b/dataList.lua @@ -1,6 +1,7 @@ local int,rnd,max,min=math.floor,math.random,math.max,math.min local format=string.format local ins,rem=table.insert,table.remove +local gc=love.graphics local PCbase={ {3,3,3,0,0,0,0,0,2,2}, {3,6,6,0,0,0,0,2,2,5}, @@ -32,20 +33,27 @@ local death_fall={10,9,8,7,6} local pc_drop={50,45,40,35,30,26,22,18,15,12} local pc_lock={55,50,45,40,36,32,30} local pc_fall={18,16,14,12,10,9,8,7,6} -local function throwBadge(S,R)--Sender/Receiver - local x1,y1,x2,y2 - if S.small then - x1,y1=S.centerX,S.centerY - else - x1,y1=S.x+308*S.size,S.y+450*S.size - end - if R.small then - x2,y2=R.centerX,R.centerY - else - x2,y2=R.x+66*R.size,R.y+344*R.size - end - FX_badge[#FX_badge+1]={x1,y1,x2,y2,t=0} -end +local sectionName={"M7","M8","M9","M","MK","MV","MO","MM","GM"} + +local Fkey_func={ + royale=function(P) + if setting.swap then + for i=1,#P.keyPressing do + if P.keyPressing[i]then + P.keyPressing[i]=false + end + end + P.keyPressing[9]=true + else + P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode) + P.swappingAtkMode=30 + end + end, + puzzle=function(P) + P.modeData.event=1-P.modeData.event + end, +} + local AISpeed={60,50,45,35,25,15,9,6,4,2} local function AITemplate(type,speedLV,next,hold,node) if type=="CC"then @@ -63,253 +71,6 @@ local function AITemplate(type,speedLV,next,hold,node) } end end -loadmode={} -function loadmode.sprint() - newPlayer(1,340,15) -end -function loadmode.marathon() - newPlayer(1,340,15) -end -function loadmode.master() - newPlayer(1,340,15) -end -function loadmode.classic() - newPlayer(1,340,15) -end -function loadmode.zen() - newPlayer(1,340,15) -end -function loadmode.infinite() - newPlayer(1,340,15) - if curMode.lv==2 then - pushSpeed=1 - for _=1,5 do - players[1]:garbageRise(10,1,rnd(10)) - end - end -end -function loadmode.solo() - newPlayer(1,340,15) - if curMode.lv==1 then - newPlayer(2,965,360,.5,AITemplate("9S",3)) - elseif curMode.lv==2 then - newPlayer(2,965,360,.5,AITemplate("CC",3,2,false,10000)) - elseif curMode.lv==3 then - newPlayer(2,965,360,.5,AITemplate("9S",5)) - elseif curMode.lv==4 then - newPlayer(2,965,360,.5,AITemplate("CC",5,2,true,20000)) - elseif curMode.lv==5 then - newPlayer(2,965,360,.5,AITemplate("9S",7)) - elseif curMode.lv==6 then - newPlayer(2,965,360,.5,AITemplate("CC",8,3,true,30000)) - elseif curMode.lv==7 then - newPlayer(2,965,360,.5,AITemplate("9S",8)) - elseif curMode.lv==8 then - newPlayer(2,965,360,.5,AITemplate("CC",9,3,true,40000)) - elseif curMode.lv==9 then - newPlayer(2,965,360,.5,AITemplate("9S",9)) - elseif curMode.lv==10 then - newPlayer(2,965,360,.5,AITemplate("CC",10,4,true,80000)) - end -end -function loadmode.round() - newPlayer(1,340,15) - if curMode.lv==1 then - newPlayer(2,965,360,.5,AITemplate("9S",10)) - elseif curMode.lv==2 then - newPlayer(2,965,360,.5,AITemplate("CC",10,2,false,10000)) - elseif curMode.lv==3 then - newPlayer(2,965,360,.5,AITemplate("CC",10,3,true,30000)) - elseif curMode.lv==4 then - newPlayer(2,965,360,.5,AITemplate("CC",10,4,true,60000)) - elseif curMode.lv==5 then - newPlayer(2,965,360,.5,AITemplate("CC",10,6,true,100000)) - end - garbageSpeed=1e4 -end -function loadmode.tsd() - newPlayer(1,340,15) -end -function loadmode.blind() - newPlayer(1,340,15) -end -function loadmode.dig() - newPlayer(1,340,15) - pushSpeed=1 -end -function loadmode.survivor() - newPlayer(1,340,15) - pushSpeed=curMode.lv>2 and 2 or 1 -end -function loadmode.defender() - newPlayer(1,340,15) - if curMode.lv==1 then - pushSpeed=1 - elseif curMode.lv==2 then - pushSpeed=2 - end -end -function loadmode.attacker() - newPlayer(1,340,15) - if curMode.lv==1 then - pushSpeed=2 - end -end -function loadmode.tech() - newPlayer(1,340,15) -end -function loadmode.c4wtrain() - newPlayer(1,340,15) - local P=players[1] - local F=P.field - for i=1,24 do - F[i]=getNewRow(10) - P.visTime[i]=getNewRow(20) - for x=4,7 do F[i][x]=0 end - end - local r=rnd(6) - if r==1 then F[1][5],F[1][4],F[2][4]=10,10,10 - elseif r==2 then F[1][6],F[1][7],F[2][7]=10,10,10 - elseif r==3 then F[1][4],F[2][4],F[2][5]=10,10,10 - elseif r==4 then F[1][7],F[2][7],F[2][6]=10,10,10 - elseif r==5 then F[1][4],F[1][5],F[1][6]=10,10,10 - elseif r==6 then F[1][7],F[1][6],F[1][5]=10,10,10 - end -end -function loadmode.pctrain() - newPlayer(1,340,15) - Event.newPC(players[1]) -end -function loadmode.pcchallenge() - newPlayer(1,340,15) -end -function loadmode.techmino49() - newPlayer(1,340,15) - local LV=curMode.lv - if LV==3 then players[1].gameEnv.drop=15 end - local L={}for i=1,49 do L[i]=true end - local t=system~="Windows"and 0 or 2*LV - while t>0 do - local r=rnd(2,49) - if L[r]then L[r],t=false,t-1 end - end - local min,max - if LV==1 then min,max=4,6 - elseif LV==2 then min,max=4,8 - elseif LV==3 then min,max=8,10 - end - local n=2 - for i=1,4 do for j=1,6 do - if L[n]then - newPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(min,max))) - else - newPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) - end - n=n+1 - end end - for i=9,12 do for j=1,6 do - if L[n]then - newPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(min,max))) - else - newPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) - end - n=n+1 - end end -end -function loadmode.techmino99() - newPlayer(1,340,15) - local LV=curMode.lv - if LV==3 then players[1].gameEnv.drop=15 end - local L={}for i=1,100 do L[i]=true end - local t=system~="Windows"and 0 or 1+3*LV - while t>0 do - local r=rnd(2,99) - if L[r]then L[r],t=false,t-1 end - end - local min,max - if LV==1 then min,max=4,6 - elseif LV==2 then min,max=4,8 - elseif LV==3 then min,max=8,10 - end - local n=2 - for i=1,7 do for j=1,7 do - if L[n]then - newPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(min,max))) - else - newPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) - end - n=n+1 - end end - for i=15,21 do for j=1,7 do - if L[n]then - newPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(min,max))) - else - newPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) - end - n=n+1 - end end -end -function loadmode.drought() - newPlayer(1,340,15) -end -function loadmode.hotseat() - if curMode.lv==1 then - newPlayer(1,20,15) - newPlayer(2,650,15) - elseif curMode.lv==2 then - newPlayer(1,20,100,.65) - newPlayer(2,435,100,.65) - newPlayer(3,850,100,.65) - elseif curMode.lv==3 then - newPlayer(1,25,160,.5) - newPlayer(2,335,160,.5) - newPlayer(3,645,160,.5) - newPlayer(4,955,160,.5) - end -end -function loadmode.custom() - for i=1,#customID do - local k=customID[i] - modeEnv[k]=customRange[k][customSel[i]] - end - modeEnv._20G=modeEnv.drop==0 - modeEnv.oncehold=customSel[6]==1 - if curMode.lv==2 then - modeEnv.target=0 - end - newPlayer(1,340,15) - local L=modeEnv.opponent - if L~=0 then - modeEnv.target=nil - if L<10 then - newPlayer(2,965,360,.5,AITemplate("9S",2*L)) - else - newPlayer(2,965,360,.5,AITemplate("CC",L-6,2+int((L-11)*.5),modeEnv.hold,15000+5000*(L-10))) - end - end - preField.h=20 - repeat - for i=1,10 do - if preField[preField.h][i]>0 or curMode.lv==2 and preField[preField.h][i]==-1 then - goto L - end - end - preField.h=preField.h-1 - until preField.h==0 - ::L:: - if curMode.lv==1 then - for _,P in next,players.alive do - local t=P.showTime*3 - for y=1,preField.h do - P.field[y]=getNewRow(0) - P.visTime[y]=getNewRow(t) - for x=1,10 do P.field[y][x]=preField[y][x]end - end - end - end - modeEnv.bg=customRange.bg[customSel[12]] - modeEnv.bgm=customRange.bgm[customSel[13]] -end -------------------------------------------------- Event={null=NULL} function Event.reach_winCheck(P) @@ -469,7 +230,7 @@ function Event.master_score(P) local E=P.gameEnv local mode=curMode.lv if mode==1 then - curBG=s==1 and"game1"or s==2 and"game2"or s==3 and"game3"or s==4 and"game4" + curBG=s==1 and"game1"or s==2 and"game2"or s==3 and"game3"or "game4" E.lock=rush_lock[s] E.wait=rush_wait[s] E.fall=rush_fall[s] @@ -477,7 +238,7 @@ function Event.master_score(P) if s==2 then P.gameEnv.arr=2 end if s==4 then P.gameEnv.bone=true end elseif mode==2 then - curBG=s==1 and"game3"or s==2 and"game4"or s==3 and"game5"or s==4 and"game6" + curBG=s==1 and"game3"or s==2 and"game4"or s==3 and"game5"or s==4 and"game6"or"game5" E.lock=death_lock[s] E.wait=death_wait[s] E.fall=death_fall[s] @@ -716,7 +477,21 @@ end function Event_task.throwBadge(A,data) data[2]=data[2]-1 if data[2]%4==0 then - throwBadge(data[1],data[1].lastRecv) + local S,R=data[1],data[1].lastRecv + local x1,y1,x2,y2 + if S.small then + x1,y1=S.centerX,S.centerY + else + x1,y1=S.x+308*S.size,S.y+450*S.size + end + if R.small then + x2,y2=R.centerX,R.centerY + else + x2,y2=R.x+66*R.size,R.y+344*R.size + end + FX_badge[#FX_badge+1]={x1,y1,x2,y2,t=0} + --generate badge object + if not A.ai and data[2]%8==0 then SFX("collect") end @@ -889,8 +664,8 @@ function Event_task.attacker_hard(P) B[p+1]= {pos=rnd(3,8),amount=10,countdown=t,cd0=t,time=0,sent=false,lv=4} else t=900-10*(D.event-20)--900~600 - B[p]= {pos=rnd(10),amount=6,countdown=t,cd0=t,time=0,sent=false,lv=4} - B[p+1]= {pos=rnd(4,7),amount=16,countdown=t,cd0=t,time=0,sent=false,lv=5} + B[p]= {pos=rnd(10),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=4} + B[p+1]= {pos=rnd(4,7),amount=8,countdown=t,cd0=t,time=0,sent=false,lv=5} end B.sum=B.sum+22 P.stat.recv=P.stat.recv+22 @@ -933,7 +708,7 @@ function Event_task.attacker_ultimate(P) if D.event<45 then D.event=D.event+1 D.point=int(s*36e3/t)*.1 - if D.event==10 then + if D.event==10 then P:showText(text.great,"appear",100,-140,.6) pushSpeed=4 elseif D.event==20 then @@ -977,476 +752,971 @@ function Event_task.bgmFadeIn(_,id) if v>=setting.bgm*.1 then return true end end -------------------------------------------------- - -local Fkey_func={ - royale=function(P) - if setting.swap then - for i=1,#P.keyPressing do - if P.keyPressing[i]then - P.keyPressing[i]=false - end - end - P.keyPressing[9]=true - else - P:changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode) - P.swappingAtkMode=30 +--------------------------------------------------- +modes={} +modes.sprint={ + level={"10L","20L","40L","100L","400L","1000L"}, + env={ + { + drop=60,lock=60, + target=10,dropPiece="reach_winCheck", + bg="strap",bgm="race", + }, + { + drop=60,lock=60, + target=20,dropPiece="reach_winCheck", + bg="strap",bgm="race", + }, + { + drop=60,lock=60, + target=40,dropPiece="reach_winCheck", + bg="strap",bgm="race", + }, + { + drop=60,lock=60, + target=100,dropPiece="reach_winCheck", + bg="strap",bgm="race", + }, + { + drop=60,lock=60, + target=400,dropPiece="reach_winCheck", + bg="strap",bgm="push", + }, + { + drop=60,lock=60, + target=1000,dropPiece="reach_winCheck", + bg="strap",bgm="push", + }, + }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(60) + local r=max(P.gameEnv.target-P.stat.row,0) + mStr(r,-82,265) + if r<21 and r>0 then + gc.setLineWidth(4) + gc.setColor(1,r>10 and 0 or rnd(),.5) + gc.line(0,600-30*r,300,600-30*r) end end, - puzzle=function(P) - P.modeData.event=1-P.modeData.event +} +modes.marathon={ + level={"EASY","NORMAL","HARD"}, + env={ + { + drop=60,lock=60,fall=30, + target=200,dropPiece="reach_winCheck", + bg="strap",bgm="way", + }, + { + drop=60,fall=20, + target=10,dropPiece="marathon_update", + bg="strap",bgm="way", + }, + { + _20G=true,fall=15, + target=200,dropPiece="reach_winCheck", + bg="strap",bgm="race", + }, + }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(50) + mStr(P.stat.row,-82,320) + mStr(P.gameEnv.target,-82,370) + gc.rectangle("fill",-125,375,90,4) end, } -defModeEnv={} -defModeEnv.sprint={ - { - drop=60,lock=60, - target=10,dropPiece="reach_winCheck", - bg="strap",bgm="race", - }, - { - drop=60,lock=60, - target=20,dropPiece="reach_winCheck", - bg="strap",bgm="race", - }, - { - drop=60,lock=60, - target=40,dropPiece="reach_winCheck", - bg="strap",bgm="race", - }, - { - drop=60,lock=60, - target=100,dropPiece="reach_winCheck", - bg="strap",bgm="race", - }, - { - drop=60,lock=60, - target=400,dropPiece="reach_winCheck", - bg="strap",bgm="push", - }, - { - drop=60,lock=60, - target=1000,dropPiece="reach_winCheck", - bg="strap",bgm="push", +modes.master={ + level={"LUNATIC","ULTIMATE","FINAL"}, + env={ + { + _20G=true,lock=rush_lock[1], + wait=rush_wait[1], + fall=rush_fall[1], + dropPiece="master_score", + das=9,arr=3, + freshLimit=15, + bg="strap",bgm="secret8th", + }, + { + _20G=true,lock=death_lock[1], + wait=death_wait[1], + fall=death_fall[1], + dropPiece="master_score", + das=6,arr=1, + freshLimit=15, + bg="game2",bgm="secret7th", + }, + { + _20G=true,lock=12, + wait=10,fall=10, + dropPiece="master_score_hard", + das=5,arr=1, + freshLimit=15, + easyFresh=false,bone=true, + bg="none",bgm="shining terminal", + }, }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(50) + mStr(P.modeData.point,-82,320) + mStr((P.modeData.event+1)*100,-82,370) + gc.rectangle("fill",-125,375,90,4) + end, } -defModeEnv.marathon={ - { - drop=60,lock=60,fall=30, - target=200,dropPiece="reach_winCheck", - bg="strap",bgm="way", - }, - { - drop=60,fall=20, - target=10,dropPiece="marathon_update", - bg="strap",bgm="way", - }, - { - _20G=true,fall=15, - target=200,dropPiece="reach_winCheck", - bg="strap",bgm="race", +modes.classic={ + level={"CTWC"}, + env={ + { + das=16,arr=6,sddas=2,sdarr=2, + ghost=false,center=false, + drop=3,lock=3,wait=10,fall=25, + next=1,hold=false, + sequence="rnd", + freshLimit=0, + target=10,dropPiece="classic_reach", + bg="rgb",bgm="rockblock", + }, }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(80) + local r=P.gameEnv.target*.1 + mStr(r<11 and 18 or r<22 and r+8 or r==22 and"00"or r==23 and"0a"or format("%x",r*10-220),-82,210) + mDraw(drawableText.speedLV,-82,290) + setFont(50) + mStr(P.stat.row,-82,320) + mStr(P.gameEnv.target,-82,370) + gc.rectangle("fill",-125,375,90,4) + end, } -defModeEnv.master={ - { - _20G=true,lock=rush_lock[1], - wait=rush_wait[1], - fall=rush_fall[1], - dropPiece="master_score", - das=9,arr=3, - freshLimit=15, - bg="strap",bgm="secret8th", - }, - { - _20G=true,lock=death_lock[1], - wait=death_wait[1], - fall=death_fall[1], - dropPiece="master_score", - das=6,arr=1, - freshLimit=15, - bg="game2",bgm="secret7th", - }, - { - _20G=true,lock=12, - wait=10,fall=10, - dropPiece="master_score_hard", - das=5,arr=1, - freshLimit=15, - easyFresh=false,bone=true, - bg="none",bgm="shining terminal", +modes.zen={ + level={"NORMAL"}, + env={ + { + drop=1e99,lock=1e99, + oncehold=false, + dropPiece="reach_winCheck", + bg="strap",bgm="infinite", + }, }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(75) + mStr(max(200-P.stat.row,0),-82,280) + end, } -defModeEnv.classic={ - { - das=16,arr=6,sddas=2,sdarr=2, - ghost=false,center=false, - drop=3,lock=3,wait=10,fall=25, - next=1,hold=false, - sequence="rnd", - freshLimit=0, - target=10,dropPiece="classic_reach", - bg="rgb",bgm="rockblock", +modes.infinite={ + level={"NORMAL","EXTRA"}, + env={ + { + drop=1e99,lock=1e99, + oncehold=false, + bg="glow",bgm="infinite", + }, + { + drop=1e99,lock=1e99, + oncehold=false, + dropPiece="infinite_check", + bg="glow",bgm="infinite", + }, }, + load=function() + newPlayer(1,340,15) + if curMode.lv==2 then + pushSpeed=1 + for _=1,5 do + players[1]:garbageRise(10,1,rnd(10)) + end + end + end, + mesDisp=function(P) + setFont(50) + mStr(P.stat.atk,-82,310) + mStr(format("%.2f",P.stat.atk/P.stat.row),-82,420) + mDraw(drawableText.atk,-82,363) + mDraw(drawableText.eff,-82,475) + end, } -defModeEnv.zen={ - { - drop=1e99,lock=1e99, - oncehold=false, - dropPiece="reach_winCheck", - bg="strap",bgm="infinite", +modes.solo={ + level={"EASY","EASY+","NORMAL","NORMAL+","HARD","HARD+","LUNATIC","LUNATIC+","ULTIMATE","ULTIMATE+"}, + env={ + { + drop=60,lock=60, + freshLimit=15, + bg="game2",bgm="race", + }, }, + load=function() + newPlayer(1,340,15) + if curMode.lv==1 then + newPlayer(2,965,360,.5,AITemplate("9S",3)) + elseif curMode.lv==2 then + newPlayer(2,965,360,.5,AITemplate("CC",3,2,false,10000)) + elseif curMode.lv==3 then + newPlayer(2,965,360,.5,AITemplate("9S",5)) + elseif curMode.lv==4 then + newPlayer(2,965,360,.5,AITemplate("CC",5,2,true,20000)) + elseif curMode.lv==5 then + newPlayer(2,965,360,.5,AITemplate("9S",7)) + elseif curMode.lv==6 then + newPlayer(2,965,360,.5,AITemplate("CC",8,3,true,30000)) + elseif curMode.lv==7 then + newPlayer(2,965,360,.5,AITemplate("9S",8)) + elseif curMode.lv==8 then + newPlayer(2,965,360,.5,AITemplate("CC",9,3,true,40000)) + elseif curMode.lv==9 then + newPlayer(2,965,360,.5,AITemplate("9S",9)) + elseif curMode.lv==10 then + newPlayer(2,965,360,.5,AITemplate("CC",10,4,true,80000)) + end + end, + mesDisp=function(P) + + end, } -defModeEnv.infinite={ - { - drop=1e99,lock=1e99, - oncehold=false, - bg="glow",bgm="infinite", - }, - { - drop=1e99,lock=1e99, - oncehold=false, - dropPiece="infinite_check", - bg="glow",bgm="infinite", +modes.round={ + level={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"}, + env={ + { + drop=1e99,lock=1e99, + oncehold=false, + dropPiece="round_check", + bg="game2",bgm="push", + }, }, + load=function() + newPlayer(1,340,15) + if curMode.lv==1 then + newPlayer(2,965,360,.5,AITemplate("9S",10)) + elseif curMode.lv==2 then + newPlayer(2,965,360,.5,AITemplate("CC",10,2,false,10000)) + elseif curMode.lv==3 then + newPlayer(2,965,360,.5,AITemplate("CC",10,3,true,30000)) + elseif curMode.lv==4 then + newPlayer(2,965,360,.5,AITemplate("CC",10,4,true,60000)) + elseif curMode.lv==5 then + newPlayer(2,965,360,.5,AITemplate("CC",10,6,true,100000)) + end + garbageSpeed=1e4 + end, + mesDisp=function(P) + + end, } -defModeEnv.solo={ - { - drop=60,lock=60, - freshLimit=15, - bg="game2",bgm="race", +modes.tsd={ + level={"NORMAL","HARD"}, + env={ + { + oncehold=false, + drop=1e99,lock=1e99, + dropPiece="tsd_reach", + ospin=false, + bg="matrix",bgm="reason", + }, + { + drop=60,lock=60, + freshLimit=15, + dropPiece="tsd_reach", + ospin=false, + bg="matrix",bgm="reason", + }, }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(80) + mStr(P.modeData.event,-82,330) + mDraw(drawableText.tsd,-82,407) + end, } -defModeEnv.round={ - { - drop=1e99,lock=1e99, - oncehold=false, - dropPiece="round_check", - bg="game2",bgm="push", +modes.blind={ + level={"EASY","HARD","HARD+","LUNATIC","ULTIMATE","GM"}, + env={ + { + drop=30,lock=45, + freshLimit=10, + visible="time", + bg="glow",bgm="newera", + }, + { + drop=15,lock=45, + freshLimit=10, + visible="fast", + freshLimit=10, + bg="glow",bgm="reason", + }, + { + drop=15,lock=45, + fall=10,lock=60, + center=false, + visible="none", + freshLimit=15, + bg="rgb",bgm="secret7th", + }, + { + drop=10,lock=45, + fall=5,lock=60, + center=false,ghost=false, + visible="none", + freshLimit=15, + bg="rgb",bgm="secret8th", + }, + { + drop=30,lock=60, + fall=5, + block=false, + center=false,ghost=false, + visible="none", + freshLimit=15, + bg="rgb",bgm="secret7th", + }, + { + _20G=true, + drop=0,lock=15, + wait=10,fall=15, + visible="fast", + freshLimit=15, + dropPiece="GM_score", + arr=1, + bg="game3",bgm="shining terminal", + }, }, + load=function() + newPlayer(1,340,15) + if curMode.lv==6 then + players[1].modeData.event="M7" + end + end, + mesDisp=function(P) + mDraw(drawableText.line,-82,300) + mDraw(drawableText.techrash,-82,420) + if curMode.lv==6 then + mDraw(drawableText.grade,-82,170) + setFont(60) + mStr(P.modeData.event,-82,110) + end + setFont(80) + mStr(P.stat.row,-82,220) + mStr(P.stat.clear_4,-82,340) + end, } -defModeEnv.tsd={ - { - oncehold=false, - drop=1e99,lock=1e99, - dropPiece="tsd_reach", - ospin=false, - bg="matrix",bgm="reason", - }, - { - drop=60,lock=60, - freshLimit=15, - dropPiece="tsd_reach", - ospin=false, - bg="matrix",bgm="reason", +modes.dig={ + level={"NORMAL","LUNATIC"}, + env={ + { + drop=60,lock=120, + fall=20, + freshLimit=15, + task="dig_normal", + bg="game2",bgm="push", + }, + { + drop=10,lock=30, + freshLimit=15, + task="dig_lunatic", + bg="game2",bgm="secret7th", + }, }, + load=function() + newPlayer(1,340,15) + pushSpeed=1 + end, + mesDisp=function(P) + setFont(70) + mStr(P.modeData.event,-82,310) + mDraw(drawableText.wave,-82,375) + end, } -defModeEnv.blind={ - { - drop=30,lock=45, - freshLimit=10, - visible="time", - bg="glow",bgm="newera", - }, - { - drop=15,lock=45, - freshLimit=10, - visible="fast", - freshLimit=10, - bg="glow",bgm="reason", - }, - { - drop=15,lock=45, - fall=10,lock=60, - center=false, - visible="none", - freshLimit=15, - bg="rgb",bgm="secret7th", - }, - { - drop=10,lock=45, - fall=5,lock=60, - center=false,ghost=false, - visible="none", - freshLimit=15, - bg="rgb",bgm="secret8th", - }, - { - drop=30,lock=60, - fall=5, - block=false, - center=false,ghost=false, - visible="none", - freshLimit=15, - bg="rgb",bgm="secret7th", - }, - { - _20G=true, - drop=0,lock=15, - wait=10,fall=15, - visible="fast", - freshLimit=15, - dropPiece="GM_score", - arr=1, - bg="game3",bgm="shining terminal", +modes.survivor={ + level={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"}, + env={ + { + drop=60,lock=120, + fall=30, + freshLimit=15, + task="survivor_easy", + bg="game2",bgm="push", + }, + { + drop=30,lock=60, + fall=20, + freshLimit=15, + task="survivor_normal", + bg="game2",bgm="newera", + }, + { + drop=10,lock=60, + fall=15, + freshLimit=15, + task="survivor_hard", + bg="game2",bgm="secret8th", + }, + { + drop=6,lock=60, + fall=10, + freshLimit=15, + task="survivor_lunatic", + bg="game3",bgm="secret7th", + }, + { + drop=5,lock=60, + fall=10, + freshLimit=15, + task="survivor_ultimate", + bg="rgb",bgm="secret7th", + }, }, + load=function() + newPlayer(1,340,15) + pushSpeed=curMode.lv>2 and 2 or 1 + end, + mesDisp=function(P) + setFont(70) + mStr(P.modeData.event,-82,310) + mDraw(drawableText.wave,-82,375) + end, } -defModeEnv.dig={ - { - drop=60,lock=120, - fall=20, - freshLimit=15, - task="dig_normal", - bg="game2",bgm="push", - }, - { - drop=10,lock=30, - freshLimit=15, - task="dig_lunatic", - bg="game2",bgm="secret7th", +modes.defender={ + level={"NORMAL","LUNATIC"}, + env={ + { + drop=30,lock=60, + fall=10, + freshLimit=15, + task="defender_normal", + bg="game3",bgm="way", + }, + { + drop=5,lock=60, + fall=6, + freshLimit=15, + task="defender_lunatic", + bg="game4",bgm="way", + }, }, + load=function() + newPlayer(1,340,15) + if curMode.lv==1 then + pushSpeed=1 + elseif curMode.lv==2 then + pushSpeed=2 + end + end, + mesDisp=function(P) + setFont(60) + mStr(P.modeData.event,-82,200) + mStr(P.modeData.point,-82,320) + mDraw(drawableText.wave,-82,260) + mDraw(drawableText.rpm,-82,380) + end, } -defModeEnv.survivor={ - { - drop=60,lock=120, - fall=30, - freshLimit=15, - task="survivor_easy", - bg="game2",bgm="push", - }, - { - drop=30,lock=60, - fall=20, - freshLimit=15, - task="survivor_normal", - bg="game2",bgm="newera", - }, - { - drop=10,lock=60, - fall=15, - freshLimit=15, - task="survivor_hard", - bg="game2",bgm="secret8th", - }, - { - drop=6,lock=60, - fall=10, - freshLimit=15, - task="survivor_lunatic", - bg="game3",bgm="secret7th", - }, - { - drop=5,lock=60, - fall=10, - freshLimit=15, - task="survivor_ultimate", - bg="rgb",bgm="secret7th", +modes.attacker={ + level={"HARD","ULTIMATE"}, + env={ + { + drop=30,lock=60, + fall=12, + freshLimit=15, + task="attacker_hard", + bg="game3",bgm="push", + }, + { + drop=5,lock=60, + fall=8, + freshLimit=15, + task="attacker_ultimate", + bg="game4",bgm="shining terminal", + }, }, + load=function() + newPlayer(1,340,15) + if curMode.lv==1 then + pushSpeed=2 + end + end, + mesDisp=function(P) + setFont(60) + mStr(P.modeData.event,-82,200) + mStr( + curMode.lv==1 and 24 + or P.modeData.event<10 and 22 + or P.modeData.event<20 and 25 + or 28,-82,320) + mDraw(drawableText.wave,-82,260) + mDraw(drawableText.nextWave,-82,380) + end, } -defModeEnv.defender={ - { - drop=30,lock=60, - fall=10, - freshLimit=15, - task="defender_normal", - bg="game3",bgm="way", - }, - { - drop=5,lock=60, - fall=6, - freshLimit=15, - task="defender_lunatic", - bg="game4",bgm="way", +modes.tech={ + level={"NORMAL","NORMAL+","HARD","HARD+","LUNATIC","LUNATIC+","ULTIMATE","ULTIMATE+"}, + env={ + { + oncehold=false, + drop=1e99,lock=1e99, + dropPiece="tech_reach_easy", + bg="matrix",bgm="newera", + }, + { + oncehold=false, + drop=1e99,lock=1e99, + dropPiece="tech_reach_ultimate", + bg="matrix",bgm="newera", + }, + { + drop=10,lock=60, + freshLimit=15, + dropPiece="tech_reach_easy", + bg="matrix",bgm="secret8th", + }, + { + drop=30,lock=60, + freshLimit=15, + dropPiece="tech_reach_ultimate", + bg="matrix",bgm="secret8th", + }, + { + _20G=true,lock=60, + freshLimit=15, + dropPiece="tech_reach_hard", + bg="matrix",bgm="secret7th", + }, + { + _20G=true,lock=60, + freshLimit=15, + dropPiece="tech_reach_ultimate", + bg="matrix",bgm="secret7th", + }, + { + drop=1e99,lock=60, + freshLimit=15, + fine=true,fineKill=true, + dropPiece="tech_reach_hard", + bg="flink",bgm="infinite", + }, + { + drop=1e99,lock=60, + freshLimit=15, + fine=true,fineKill=true, + dropPiece="tech_reach_ultimate", + bg="flink",bgm="infinite", + }, }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(50) + mStr(P.stat.atk,-82,310) + mStr(format("%.2f",P.stat.atk/P.stat.row),-82,420) + mDraw(drawableText.atk,-82,363) + mDraw(drawableText.eff,-82,475) + end, } -defModeEnv.attacker={ - { - drop=30,lock=60, - fall=12, - freshLimit=15, - task="attacker_hard", - bg="game3",bgm="push", - }, - { - drop=5,lock=60, - fall=8, - freshLimit=15, - task="attacker_ultimate", - bg="game4",bgm="shining terminal", +modes.c4wtrain={ + level={"NORMAL","LUNATIC"}, + env={ + { + drop=30,lock=60, + oncehold=false, + freshLimit=15, + dropPiece="c4w_reach", + ospin=false, + bg="rgb",bgm="newera", + }, + { + drop=5,lock=30, + freshLimit=15, + dropPiece="c4w_reach", + ospin=false, + bg="rgb",bgm="newera", + }, }, + load=function() + newPlayer(1,340,15) + local P=players[1] + local F=P.field + for i=1,24 do + F[i]=getNewRow(10) + P.visTime[i]=getNewRow(20) + for x=4,7 do F[i][x]=0 end + end + local r=rnd(6) + if r==1 then F[1][5],F[1][4],F[2][4]=10,10,10 + elseif r==2 then F[1][6],F[1][7],F[2][7]=10,10,10 + elseif r==3 then F[1][4],F[2][4],F[2][5]=10,10,10 + elseif r==4 then F[1][7],F[2][7],F[2][6]=10,10,10 + elseif r==5 then F[1][4],F[1][5],F[1][6]=10,10,10 + elseif r==6 then F[1][7],F[1][6],F[1][5]=10,10,10 + end + end, + mesDisp=function(P) + setFont(50) + mStr(max(100-P.stat.row,0),-82,220) + mStr(P.combo,-82,310) + mStr(P.modeData.point,-82,400) + mDraw(drawableText.combo,-82,358) + mDraw(drawableText.mxcmb,-82,450) + end, } -defModeEnv.tech={ - { - oncehold=false, - drop=1e99,lock=1e99, - dropPiece="tech_reach_easy", - bg="matrix",bgm="newera", - }, - { - oncehold=false, - drop=1e99,lock=1e99, - dropPiece="tech_reach_ultimate", - bg="matrix",bgm="newera", - }, - { - drop=10,lock=60, - freshLimit=15, - dropPiece="tech_reach_easy", - bg="matrix",bgm="secret8th", - }, - { - drop=30,lock=60, - freshLimit=15, - dropPiece="tech_reach_ultimate", - bg="matrix",bgm="secret8th", - }, - { - _20G=true,lock=60, - freshLimit=15, - dropPiece="tech_reach_hard", - bg="matrix",bgm="secret7th", - }, - { - _20G=true,lock=60, - freshLimit=15, - dropPiece="tech_reach_ultimate", - bg="matrix",bgm="secret7th", - }, - { - drop=1e99,lock=60, - freshLimit=15, - fine=true,fineKill=true, - dropPiece="tech_reach_hard", - bg="flink",bgm="infinite", - }, - { - drop=1e99,lock=60, - freshLimit=15, - fine=true,fineKill=true, - dropPiece="tech_reach_ultimate", - bg="flink",bgm="infinite", +modes.pctrain={ + level={"NORMAL","EXTRA"}, + env={ + { + next=4, + hold=false, + drop=150,lock=150, + fall=20, + sequence="none", + dropPiece="newPC", + ospin=false, + bg="rgb",bgm="newera", + }, + { + next=4, + hold=false, + drop=60,lock=60, + fall=20, + sequence="none", + freshLimit=15, + dropPiece="newPC", + ospin=false, + bg="rgb",bgm="newera", + }, }, + load=function() + newPlayer(1,340,15) + Event.newPC(players[1]) + end, + mesDisp=function(P) + setFont(80) + mStr(P.stat.pc,-82,330) + mDraw(drawableText.pc,-82,412) + end, } -defModeEnv.c4wtrain={ - { - drop=30,lock=60, - oncehold=false, - freshLimit=15, - dropPiece="c4w_reach", - ospin=false, - bg="rgb",bgm="newera", - }, - { - drop=5,lock=30, - freshLimit=15, - dropPiece="c4w_reach", - ospin=false, - bg="rgb",bgm="newera", +modes.pcchallenge={ + level={"NORMAL","HARD","LUNATIC"}, + env={ + { + oncehold=false, + drop=300,lock=1e99, + target=100,dropPiece="reach_winCheck", + ospin=false, + bg="rgb",bgm="newera", + }, + { + drop=60,lock=120, + fall=10, + target=100,dropPiece="reach_winCheck", + freshLimit=15, + ospin=false, + bg="rgb",bgm="infinite", + }, + { + drop=20,lock=60, + fall=20, + target=100,dropPiece="reach_winCheck", + freshLimit=15, + ospin=false, + bg="rgb",bgm="infinite", + }, }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(50) + mStr(max(100-P.stat.row,0),-82,250) + + setFont(80) + mStr(P.stat.pc,-82,350) + mDraw(drawableText.pc,-82,432) + + gc.setColor(.5,.5,.5) + if frame>179 then + local y=72*(7-(P.stat.piece+(P.hd.id>0 and 2 or 1))%7)-36 + gc.line(320,y,442,y) + end + end, } -defModeEnv.pctrain={ - { - next=4, - hold=false, - drop=150,lock=150, - fall=20, - sequence="none", - dropPiece="newPC", - ospin=false, - bg="rgb",bgm="newera", - }, - { - next=4, - hold=false, - drop=60,lock=60, - fall=20, - sequence="none", - freshLimit=15, - dropPiece="newPC", - ospin=false, - bg="rgb",bgm="newera", +modes.techmino49={ + level={"EASY","HARD","ULTIMATE"}, + env={ + { + drop=60,lock=60, + fall=20, + royaleMode=true, + Fkey=Fkey_func.royale, + royalePowerup={2,5,10,20}, + royaleRemain={30,20,15,10,5}, + pushSpeed=2, + freshLimit=15, + bg="game3",bgm="rockblock", + }, }, + load=function() + newPlayer(1,340,15) + local LV=curMode.lv + if LV==3 then players[1].gameEnv.drop=15 end + local L={}for i=1,49 do L[i]=true end + local t=system~="Windows"and 0 or 2*LV + while t>0 do + local r=rnd(2,49) + if L[r]then L[r],t=false,t-1 end + end + local min,max + if LV==1 then min,max=4,6 + elseif LV==2 then min,max=4,8 + elseif LV==3 then min,max=8,10 + end + local n=2 + for i=1,4 do for j=1,6 do + if L[n]then + newPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(min,max))) + else + newPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) + end + n=n+1 + end end + for i=9,12 do for j=1,6 do + if L[n]then + newPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(min,max))) + else + newPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) + end + n=n+1 + end end + end, + mesDisp=function(P) + setFont(40) + mStr(#players.alive.."/49",-82,175) + mStr(P.ko,-70,215) + gc.draw(drawableText.ko,-127,225) + setFont(25) + gc.setColor(1,.5,0,.6) + gc.print(P.badge,-47,227) + gc.setColor(1,1,1) + setFont(30) + gc.print(up0to4[P.strength],-132,290) + for i=1,P.strength do + gc.draw(badgeIcon,16*i-138,260) + end + end, } -defModeEnv.pcchallenge={ - { - oncehold=false, - drop=300,lock=1e99, - target=100,dropPiece="reach_winCheck", - ospin=false, - bg="rgb",bgm="newera", - }, - { - drop=60,lock=120, - fall=10, - target=100,dropPiece="reach_winCheck", - freshLimit=15, - ospin=false, - bg="rgb",bgm="infinite", - }, - { - drop=20,lock=60, - fall=20, - target=100,dropPiece="reach_winCheck", - freshLimit=15, - ospin=false, - bg="rgb",bgm="infinite", +modes.techmino99={ + level={"EASY","HARD","ULTIMATE"}, + env={ + { + drop=60,lock=60, + fall=20, + royaleMode=true, + Fkey=Fkey_func.royale, + royalePowerup={2,6,14,30}, + royaleRemain={75,50,35,20,10}, + pushSpeed=2, + freshLimit=15, + bg="game3",bgm="rockblock", + }, }, + load=function() + newPlayer(1,340,15) + local LV=curMode.lv + if LV==3 then players[1].gameEnv.drop=15 end + local L={}for i=1,100 do L[i]=true end + local t=system~="Windows"and 0 or 1+3*LV + while t>0 do + local r=rnd(2,99) + if L[r]then L[r],t=false,t-1 end + end + local min,max + if LV==1 then min,max=4,6 + elseif LV==2 then min,max=4,8 + elseif LV==3 then min,max=8,10 + end + local n=2 + for i=1,7 do for j=1,7 do + if L[n]then + newPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(min,max))) + else + newPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) + end + n=n+1 + end end + for i=15,21 do for j=1,7 do + if L[n]then + newPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(min,max))) + else + newPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(min,max)-1,LV+1,true,LV*10000)) + end + n=n+1 + end end + end, + mesDisp=function(P) + setFont(40) + mStr(#players.alive.."/99",-82,175) + mStr(P.ko,-70,215) + gc.draw(drawableText.ko,-127,225) + setFont(25) + gc.setColor(1,.5,0,.6) + gc.print(P.badge,-47,227) + gc.setColor(1,1,1) + setFont(30) + gc.print(up0to4[P.strength],-132,290) + for i=1,P.strength do + gc.draw(badgeIcon,16*i-138,260) + end + end, } -defModeEnv.techmino49={ - { - drop=60,lock=60, - fall=20, - royaleMode=true, - Fkey=Fkey_func.royale, - royalePowerup={2,5,10,20}, - royaleRemain={30,20,15,10,5}, - pushSpeed=2, - freshLimit=15, - bg="game3",bgm="rockblock", +modes.drought={ + level={"NORMAL","MESS"}, + env={ + { + drop=20,lock=60, + sequence="drought1", + target=100,dropPiece="reach_winCheck", + ospin=false, + freshLimit=15, + bg="glow",bgm="reason", + }, + { + drop=20,lock=60, + sequence="drought2", + target=100,dropPiece="reach_winCheck", + ospin=false, + freshLimit=15, + bg="glow",bgm="reason", + }, }, + load=function() + newPlayer(1,340,15) + end, + mesDisp=function(P) + setFont(75) + mStr(max(100-P.stat.row,0),-82,280) + end, } -defModeEnv.techmino99={ - { - drop=60,lock=60, - fall=20, - royaleMode=true, - Fkey=Fkey_func.royale, - royalePowerup={2,6,14,30}, - royaleRemain={75,50,35,20,10}, - pushSpeed=2, - freshLimit=15, - bg="game3",bgm="rockblock", +modes.hotseat={ + level={"2P","3P","4P",}, + env={ + { + drop=60,lock=60, + freshLimit=15, + bg="none",bgm="way", + }, }, + load=function() + if curMode.lv==1 then + newPlayer(1,20,15) + newPlayer(2,650,15) + elseif curMode.lv==2 then + newPlayer(1,20,100,.65) + newPlayer(2,435,100,.65) + newPlayer(3,850,100,.65) + elseif curMode.lv==3 then + newPlayer(1,25,160,.5) + newPlayer(2,335,160,.5) + newPlayer(3,645,160,.5) + newPlayer(4,955,160,.5) + end + end, + mesDisp=function(P) + + end, } -defModeEnv.drought={ - { - drop=20,lock=60, - sequence="drought1", - target=100,dropPiece="reach_winCheck", - ospin=false, - freshLimit=15, - bg="glow",bgm="reason", - }, - { - drop=20,lock=60, - sequence="drought2", - target=100,dropPiece="reach_winCheck", - ospin=false, - freshLimit=15, - bg="glow",bgm="reason", +modes.custom={ + level={"Normal","Puzzle"}, + env={ + { + dropPiece="reach_winCheck", + }, + { + Fkey=Fkey_func.puzzle,puzzle=true, + dropPiece="puzzleCheck", + }, }, + load=function() + for i=1,#customID do + local k=customID[i] + modeEnv[k]=customRange[k][customSel[i]] + end + modeEnv._20G=modeEnv.drop==0 + modeEnv.oncehold=customSel[6]==1 + if curMode.lv==2 then + modeEnv.target=0 + end + newPlayer(1,340,15) + local L=modeEnv.opponent + if L~=0 then + modeEnv.target=nil + if L<10 then + newPlayer(2,965,360,.5,AITemplate("9S",2*L)) + else + newPlayer(2,965,360,.5,AITemplate("CC",L-6,2+int((L-11)*.5),modeEnv.hold,15000+5000*(L-10))) + end + end + preField.h=20 + repeat + for i=1,10 do + if preField[preField.h][i]>0 or curMode.lv==2 and preField[preField.h][i]==-1 then + goto L + end + end + preField.h=preField.h-1 + until preField.h==0 + ::L:: + if curMode.lv==1 then + for _,P in next,players.alive do + local t=P.showTime*3 + for y=1,preField.h do + P.field[y]=getNewRow(0) + P.visTime[y]=getNewRow(t) + for x=1,10 do P.field[y][x]=preField[y][x]end + end + end + end + modeEnv.bg=customRange.bg[customSel[12]] + modeEnv.bgm=customRange.bgm[customSel[13]] + end, + mesDisp=function(P) + if P.gameEnv.puzzle or P.gameEnv.target>1e10 then + setFont(60) + mStr(P.stat.row,-82,225) + mDraw(drawableText.line,-82,290) + else + setFont(60) + mStr(max(P.gameEnv.target-P.stat.row,0),-82,240) + end + if P.gameEnv.puzzle and P.modeData.event==0 then + gc.setLineWidth(3) + for y=1,preField.h do for x=1,10 do + local B=preField[y][x] + if B>7 then + gc.setColor(blockColor[B]) + gc.rectangle("line",30*x-23,607-30*y,16,16) + elseif B>0 then + local c=blockColor[B] + gc.setColor(c[1],c[2],c[3],.6) + gc.rectangle("line",30*x-25,605-30*y,20,20) + gc.rectangle("line",30*x-20,610-30*y,10,10) + elseif B==-1 then + gc.setColor(1,1,1,.4) + gc.line(30*x-25,605-30*y,30*x-5,625-30*y) + gc.line(30*x-25,625-30*y,30*x-5,605-30*y) + end + end end + end + end, } -defModeEnv.hotseat={ - { - drop=60,lock=60, - freshLimit=15, - bg="none",bgm="way", - }, -} -defModeEnv.custom={ - { - dropPiece="reach_winCheck", - }, - { - Fkey=Fkey_func.puzzle,puzzle=true, - dropPiece="puzzleCheck", - }, -} \ No newline at end of file +-------------------------------------------------- \ No newline at end of file diff --git a/default_data.lua b/default_data.lua index 1223a00b..e4bcb109 100644 --- a/default_data.lua +++ b/default_data.lua @@ -8,7 +8,7 @@ setting={ ghost=true,center=true, smo=true,grid=false, dropFX=3, - shakeFX=3, + shakeFX=1, atkFX=3, frameMul=100, -- @@ -59,15 +59,6 @@ stat={ b2b=0,b3b=0,pc=0,score=0, } --Things related to virtualkey -function restoreVirtualKey() - for i=1,#VK_org do - local B,O=virtualkey[i],VK_org[i] - B.ava=O.ava - B.x=O.x - B.y=O.y - B.r=O.r - end -end local O,_=true,false VK_org={--Original set,for restore VK' position {ava=O,x=80, y=720-200, r=80},--moveLeft diff --git a/list.lua b/list.lua index 9daccb90..72f5e02f 100644 --- a/list.lua +++ b/list.lua @@ -91,33 +91,36 @@ bgm={ } voiceBank={} voiceName={ - "Z","S","L","J","T","O","I", - "single","double","triple","tts", - "spin","spin_","mini","b2b","b3b","pc", - "win","lose","voc_nya","nya", + "zspin","sspin","lspin","jspin","tspin","ospin","ispin", + "single","double","triple","techrash", + "mini","b2b","b3b","pc", + "win","lose", + "bye", + "nya","voc_nya", } voiceList={ - Z={"Z_1","Z_2"}, - S={"S_1","S_2"}, - J={"J_1","J_2"}, - L={"L_1","L_2"}, - T={"T_1","T_2"}, - O={"O_1","O_2"}, - I={"I_1","I_2"}, - single={"single_1","single_2","single_3"}, - double={"double_1","double_2","double_3"}, - triple={"triple_1","triple_2"}, - tts={"tts_1"}, - spin={"spin_1","spin_2","spin_3","spin_4","spin_5"}, - spin_={"spin-_1","spin-_2"}, - mini={"mini_1"}, - b2b={"b2b_1","b2b_2"}, - b3b={"b3b_1"}, - pc={"PC_1"}, - win={"win_1","win_2"}, + zspin={"zspin_1","zspin_2","zspin_3"}, + sspin={"sspin_1","sspin_2","sspin_3","sspin_4","sspin_5","sspin_6"}, + lspin={"lspin_1","lspin_2"}, + jspin={"jspin_1","jspin_2","jspin_3","jspin_4"}, + tspin={"tspin_1","tspin_2","tspin_3","tspin_4","tspin_5","tspin_6"}, + ospin={"ospin_1","ospin_2","ospin_3"}, + ispin={"ispin_1","ispin_2","ispin_3"}, + + single={"single_1","single_2","single_3","single_4","single_5","single_6","single_7"}, + double={"double_1","double_2","double_3","double_4","double_5"}, + triple={"triple_1","triple_2","triple_3","triple_4","triple_5","triple_6","triple_7"}, + techrash={"techrash_1","techrash_2","techrash_3","techrash_4"}, + + mini={"mini_1","mini_2","mini_3"}, + b2b={"b2b_1","b2b_2","b2b_3"}, + b3b={"b3b_1","b3b_2"}, + pc={"pc_1","pc_2"}, + win={"win_1","win_2","win_3","win_4","win_5","win_6","win_6","win_7"}, lose={"lose_1","lose_2","lose_3"}, - voc_nya={"nya_11","nya_12","nya_13","nya_21","nya_22"}, + bye={"bye_1","bye_2"}, nya={"nya_1","nya_2","nya_3","nya_4"}, + voc_nya={"nya_11","nya_12","nya_13","nya_21","nya_22"}, } musicID={ @@ -166,38 +169,12 @@ customRange={ RCPB={10,33,200,33,105,5,105,60} snapLevelValue={1,10,20,40,60,80} up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",} -sectionName={"M7","M8","M9","M","MK","MV","MO","MM","GM"} modeID={ [0]="custom", "sprint","marathon","master","classic","zen","infinite","solo","round","tsd","blind", "dig","survivor","defender","attacker","tech", "c4wtrain","pctrain","pcchallenge","techmino49","techmino99","drought","hotseat", } -modeLevel={ - sprint={"10L","20L","40L","100L","400L","1000L"}, - marathon={"EASY","NORMAL","HARD"}, - master={"LUNATIC","ULTIMATE","FINAL"}, - classic={"CTWC"}, - zen={"NORMAL"}, - infinite={"NORMAL","EXTRA"}, - solo={"EASY","EASY+","NORMAL","NORMAL+","HARD","HARD+","LUNATIC","LUNATIC+","ULTIMATE","ULTIMATE+"}, - round={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"}, - tsd={"NORMAL","HARD"}, - blind={"EASY","HARD","HARD+","LUNATIC","ULTIMATE","GM"}, - dig={"NORMAL","LUNATIC"}, - survivor={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"}, - defender={"NORMAL","LUNATIC"}, - attacker={"HARD","ULTIMATE"}, - tech={"NORMAL","NORMAL+","HARD","HARD+","LUNATIC","LUNATIC+","ULTIMATE","ULTIMATE+",}, - c4wtrain={"NORMAL","LUNATIC"}, - pctrain={"NORMAL","EXTRA"}, - pcchallenge={"NORMAL","HARD","LUNATIC"}, - techmino49={"EASY","HARD","ULTIMATE"}, - techmino99={"EASY","HARD","ULTIMATE"}, - drought={"NORMAL","MESS"}, - hotseat={"2P","3P","4P",}, - custom={"Normal","Puzzle"}, -} local O,_=true,false blocks={ {[0]={{_,O,O},{O,O,_}},{{O,_},{O,O},{_,O}}}, @@ -334,6 +311,7 @@ local function VKAcode(n) end end local C=color +-- T1,T2=0,0 Widget={ load={},intro={},quit={}, main={ @@ -347,13 +325,15 @@ Widget={ setting.lang=setting.lang%#langName+1 swapLanguage(setting.lang) end,nil,"quit"), - quit= newButton(370,620,280,100,C.lightGrey, 60,function()scene.swapTo("quit")end, nil,"play"), + -- S1= newSlider(520,550,380,10,10,nil,function()return T1 end,function(i)T1=i end), + -- S2= newSlider(520,590,380,10,10,nil,function()return T2 end,function(i)T2=i end), + quit= newButton(370,620,280,100,C.lightGrey, 60,function()VOICE("bye")scene.swapTo("quit","slowFade")end,nil,"play"), }, mode={ up= newButton(1000, 210,200,140,C.white, 80,pressKey("up"), function()return modeSel==1 end), down= newButton(1000, 430,200,140,C.white, 80,pressKey("down"), function()return modeSel==#modeID end), left= newButton(190, 160,100,80, C.white, 40,pressKey("left"), function()return levelSel==1 end), - right= newButton(350, 160,100,80, C.white, 40,pressKey("right"), function()return levelSel==#modeLevel[modeID[modeSel]]end), + right= newButton(350, 160,100,80, C.white, 40,pressKey("right"), function()return levelSel==#modes[modeID[modeSel]].level end), start= newButton(1000, 600,250,100,C.green, 50,function()scene.push()loadGame(modeSel,levelSel)end), custom= newButton(275, 420,200,90, C.yellow, 40,function()scene.push()scene.swapTo("custom")end), back= newButton(640, 630,230,90, C.white, 45,scene.back), @@ -418,8 +398,22 @@ Widget={ setting_game={ graphic=newButton(200,80,240,80,C.lightGreen,40,function()scene.swapTo("setting_graphic")end, nil,"sound"), sound= newButton(1080,80,240,80,C.lightGreen,40,function()scene.swapTo("setting_sound")end, nil,"dasD"), - dasD= newButton(180,230,50,50,C.white,40,function()setting.das=(setting.das-1)%31 end, nil,"dasU"), - dasU= newButton(400,230,50,50,C.white,40,function()setting.das=(setting.das+1)%31 end, nil,"arrD"), + dasD= newButton(180,230,50,50,C.white,40,function() + setting.das=(setting.das-1)%31 + if setting.arr>setting.das then + setting.arr=setting.das + Widget.setting_game.arrD:FX() + SFX("blip_1",.4) + end + end,nil,"dasU"), + dasU= newButton(400,230,50,50,C.white,40,function() + setting.das=(setting.das+1)%31 + if setting.arr>setting.das then + setting.das=setting.arr + Widget.setting_game.arrD:FX() + SFX("blip_1",.4) + end + end,nil,"arrD"), arrD= newButton(500,230,50,50,C.white,40,function() setting.arr=(setting.arr-1)%16 if setting.arr>setting.das then diff --git a/main.lua b/main.lua index 6fc19fac..08a343df 100644 --- a/main.lua +++ b/main.lua @@ -160,6 +160,7 @@ local keyDown,keyUp={},{} local gamepadDown,gamepadUp={},{} function mouseDown.intro(x,y,k) if k==2 then + VOICE("bye") scene.back() else scene.push() @@ -172,6 +173,7 @@ function touchDown.intro(id,x,y) end function keyDown.intro(key) if key=="escape"then + VOICE("bye") scene.back() else scene.push() @@ -187,13 +189,13 @@ function keyDown.mode(key) if key=="down"then if modeSel<#modeID then modeSel=modeSel+1 - levelSel=int(#modeLevel[modeID[modeSel]]*.4)+1 + levelSel=1 SFX("move",.4) end elseif key=="up"then if modeSel>1 then modeSel=modeSel-1 - levelSel=int(#modeLevel[modeID[modeSel]]*.4)+1 + levelSel=1 SFX("move",.4) end elseif key=="left"then @@ -201,7 +203,7 @@ function keyDown.mode(key) levelSel=levelSel-1 end elseif key=="right"then - if levelSel<#modeLevel[modeID[modeSel]]then + if levelSel<#modes[modeID[modeSel]].level then levelSel=levelSel+1 end elseif key=="return"then diff --git a/paint.lua b/paint.lua index 6641d7cd..3a0a785d 100644 --- a/paint.lua +++ b/paint.lua @@ -330,7 +330,7 @@ function Pnt.main() setFont(35) gc.print(gameVersion,70,125) gc.print(system,610,100) - gc.print(modeLevel[modeID[modeSel]][levelSel],600,373) + gc.print(modes[modeID[modeSel]].level[levelSel],600,373) setFont(30) gc.print(text.modeName[modeSel],600,414) players[1]:demoDraw() @@ -339,8 +339,9 @@ function Pnt.mode() gc.setColor(1,1,1) gc.draw(titleImage,830,30) setFont(40) - gc.setColor(modeLevelColor[modeLevel[modeID[modeSel]][levelSel]]or color.white) - mStr(modeLevel[modeID[modeSel]][levelSel],270,215) + local lv=modes[modeID[modeSel]].level[levelSel] + gc.setColor(modeLevelColor[lv]or color.white) + mStr(lv,270,215) setFont(30) gc.setColor(color.white) mStr(text.modeInfo[modeID[modeSel]],270,255) diff --git a/player.lua b/player.lua index 591be250..9961a8af 100644 --- a/player.lua +++ b/player.lua @@ -46,7 +46,7 @@ local spinSCR={--[blockName][row] local visible_opt={show=1e99,time=300,fast=20,none=5} local reAtk={0,0,1,1,1,2,2,3,3} local reDef={0,1,1,2,3,3,4,4,5} -local blockName={"Z","S","L","J","T","O","I"} +local spinName={"zspin","sspin","lspin","jspin","tspin","ospin","ispin"} local clearName={"single","double","triple"} local spin_n={[0]="spin_0","spin_1","spin_2","spin_3"} local clear_n={"clear_1","clear_2","clear_3","clear_4"} @@ -260,186 +260,6 @@ local function drawDial(x,y,speed) gc.setColor(1,1,1,.6) gc.draw(dialNeedle,x,y,2.094+(speed<=175 and .02094*speed or 4.712-52.36/(speed-125)),nil,nil,5,4) end -local mesDisp={ - --Default:font=35,white - sprint=function(P) - setFont(60) - local r=max(P.gameEnv.target-P.stat.row,0) - mStr(r,-82,265) - if r<21 and r>0 then - gc.setLineWidth(4) - gc.setColor(1,r>10 and 0 or rnd(),.5) - gc.line(0,600-30*r,300,600-30*r) - end - end, - marathon=function(P) - setFont(50) - mStr(P.stat.row,-82,320) - mStr(P.gameEnv.target,-82,370) - gc.rectangle("fill",-125,375,90,4) - end, - master=function(P) - setFont(50) - mStr(P.modeData.point,-82,320) - mStr((P.modeData.event+1)*100,-82,370) - gc.rectangle("fill",-125,375,90,4) - end, - classic=function(P) - setFont(80) - local r=P.gameEnv.target*.1 - mStr(r<11 and 18 or r<22 and r+8 or r==22 and"00"or r==23 and"0a"or format("%x",r*10-220),-82,210) - mDraw(drawableText.speedLV,-82,290) - setFont(50) - mStr(P.stat.row,-82,320) - mStr(P.gameEnv.target,-82,370) - gc.rectangle("fill",-125,375,90,4) - end, - zen=function(P) - setFont(75) - mStr(max(200-P.stat.row,0),-82,280) - end, - infinite=function(P) - setFont(50) - mStr(P.stat.atk,-82,310) - mStr(format("%.2f",P.stat.atk/P.stat.row),-82,420) - mDraw(drawableText.atk,-82,363) - mDraw(drawableText.eff,-82,475) - end, - tsd=function(P) - setFont(80) - mStr(P.modeData.event,-82,330) - mDraw(drawableText.tsd,-82,407) - end, - blind=function(P) - mDraw(drawableText.line,-82,300) - mDraw(drawableText.techrash,-82,420) - if curMode.lv==6 then - mDraw(drawableText.grade,-82,170) - setFont(60) - mStr(P.modeData.event,-82,110) - end - setFont(80) - mStr(P.stat.row,-82,220) - mStr(P.stat.clear_4,-82,340) - end, - dig=function(P) - setFont(70) - mStr(P.modeData.event,-82,310) - mDraw(drawableText.wave,-82,375) - end, - survivor=function(P) - setFont(70) - mStr(P.modeData.event,-82,310) - mDraw(drawableText.wave,-82,375) - end, - defender=function(P) - setFont(60) - mStr(P.modeData.point,-82,315) - mDraw(drawableText.rpm,-82,375) - end, - attacker=function(P) - setFont(60) - mStr(P.modeData.point,-82,315) - mDraw(drawableText.rpm,-82,375) - end, - tech=function(P) - setFont(50) - mStr(P.stat.atk,-82,310) - mStr(format("%.2f",P.stat.atk/P.stat.row),-82,420) - mDraw(drawableText.atk,-82,363) - mDraw(drawableText.eff,-82,475) - end, - c4wtrain=function(P) - setFont(50) - mStr(max(100-P.stat.row,0),-82,220) - mStr(P.combo,-82,310) - mStr(P.modeData.point,-82,400) - mDraw(drawableText.combo,-82,358) - mDraw(drawableText.mxcmb,-82,450) - end, - pctrain=function(P) - setFont(80) - mStr(P.stat.pc,-82,330) - mDraw(drawableText.pc,-82,412) - end, - pcchallenge=function(P) - setFont(50) - mStr(max(100-P.stat.row,0),-82,250) - - setFont(80) - mStr(P.stat.pc,-82,350) - mDraw(drawableText.pc,-82,432) - - gc.setColor(.5,.5,.5) - if frame>179 then - local y=72*(7-(P.stat.piece+(P.hd.id>0 and 2 or 1))%7)-36 - gc.line(320,y,442,y) - end - end, - techmino49=function(P) - setFont(40) - mStr(#players.alive.."/49",-82,175) - mStr(P.ko,-70,215) - gc.draw(drawableText.ko,-127,225) - setFont(25) - gc.setColor(1,.5,0,.6) - gc.print(P.badge,-47,227) - gc.setColor(1,1,1) - setFont(30) - gc.print(up0to4[P.strength],-132,290) - for i=1,P.strength do - gc.draw(badgeIcon,16*i-138,260) - end - end, - techmino99=function(P) - setFont(40) - mStr(#players.alive.."/99",-82,175) - mStr(P.ko,-70,215) - gc.draw(drawableText.ko,-127,225) - setFont(25) - gc.setColor(1,.5,0,.6) - gc.print(P.badge,-47,227) - gc.setColor(1,1,1) - setFont(30) - gc.print(up0to4[P.strength],-132,290) - for i=1,P.strength do - gc.draw(badgeIcon,16*i-138,260) - end - end, - drought=function(P) - setFont(75) - mStr(max(100-P.stat.row,0),-82,280) - end, - custom=function(P) - if P.gameEnv.puzzle or P.gameEnv.target>1e10 then - setFont(60) - mStr(P.stat.row,-82,225) - mDraw(drawableText.line,-82,290) - else - setFont(60) - mStr(max(P.gameEnv.target-P.stat.row,0),-82,240) - end - if P.gameEnv.puzzle and P.modeData.event==0 then - gc.setLineWidth(3) - for y=1,preField.h do for x=1,10 do - local B=preField[y][x] - if B>7 then - gc.setColor(blockColor[B]) - gc.rectangle("line",30*x-23,607-30*y,16,16) - elseif B>0 then - local c=blockColor[B] - gc.setColor(c[1],c[2],c[3],.6) - gc.rectangle("line",30*x-25,605-30*y,20,20) - gc.rectangle("line",30*x-20,610-30*y,10,10) - elseif B==-1 then - gc.setColor(1,1,1,.4) - gc.line(30*x-25,605-30*y,30*x-5,625-30*y) - gc.line(30*x-25,625-30*y,30*x-5,605-30*y) - end - end end - end - end -} --------------Used in draw player↑ player={}local player=player @@ -449,7 +269,7 @@ function newDemoPlayer(id,x,y,size) for k,v in next,player do P[k]=v end players.alive[#players.alive+1]=P P.x,P.y,P.size=x,y,size - P.fieldOffX,P.fieldOffY=0,0 + P.fieldOff={x=0,y=0,vx=0,vy=0} P.small,P.keyRec=false,false P.centerX,P.centerY=P.x+300*P.size,P.y+670*P.size @@ -560,7 +380,7 @@ function newPlayer(id,x,y,size,AIdata) for k,v in next,player do P[k]=v end--Class function players.alive[#players.alive+1]=P P.x,P.y,P.size=x,y,size or 1 - P.fieldOffX,P.fieldOffY=0,0--for Shake fx + P.fieldOff={x=0,y=0,vx=0,vy=0}--for shake FX P.small=P.size<.1--if draw in small mode P.keyRec=not P.small--if calculate keySpeed if P.small then @@ -750,7 +570,11 @@ function player.update(P,dt) else P.act.insLeft(P,true) end - if x~=P.curX then P.moving=P.moving+P.gameEnv.arr-1 end + if x~=P.curX then + P.moving=P.moving+P.gameEnv.arr-1 + elseif not P.small then + P.fieldOff.vx=-setting.shakeFX*.8 + end end else P.moving=0 @@ -766,14 +590,18 @@ function player.update(P,dt) else P.act.insRight(P,true) end - if x~=P.curX then P.moving=P.moving-P.gameEnv.arr+1 end + if x~=P.curX then + P.moving=P.moving-P.gameEnv.arr+1 + elseif not P.small then + P.fieldOff.vx=setting.shakeFX*.8 + end end else P.moving=0 end end if P.keyPressing[7]and not P.keyPressing[9]then - local d=abs(P.downing)-P.gameEnv.sddas + local d=P.downing-P.gameEnv.sddas P.downing=P.downing+1 if d>1 then if P.gameEnv.sdarr>0 then @@ -783,6 +611,9 @@ function player.update(P,dt) else P.act.insDown(P) end + if not P.small then + P.fieldOff.vy=setting.shakeFX*.5 + end end else P.downing=0 @@ -878,12 +709,13 @@ function player.update(P,dt) rem(P.shade,i) end end - if P.fieldOffY>0 then - P.fieldOffY=P.fieldOffY-(P.fieldOffY>3 and 2 or 1) - end - if P.fieldOffX~=0 then - P.fieldOffX=P.fieldOffX-(P.fieldOffX>0 and 1 or -1) - end + + if setting.shakeFX>0 then + local O=P.fieldOff + O.vx,O.vy=O.vx*.8-abs(O.x)^1.2*(O.x>0 and .08 or -.08),O.vy*.8-abs(O.y)^1.2*(O.y>0 and .08 or -.08) + O.x,O.y=O.x+O.vx,O.y+O.vy + end--field shaking + for i=#P.bonus,1,-1 do local b=P.bonus[i] if b.inf then @@ -964,7 +796,7 @@ function player.draw(P) gc.setColor(0,0,0,.6)gc.rectangle("fill",0,0,600,690) gc.setLineWidth(7)gc.setColor(frameColor[P.strength])gc.rectangle("line",0,0,600,690,3) --Frame - gc.translate(150+P.fieldOffX,70+P.fieldOffY) + gc.translate(150+P.fieldOff.x,70+P.fieldOff.y) if P.gameEnv.grid then gc.setLineWidth(1) gc.setColor(1,1,1,.2) @@ -975,7 +807,7 @@ function player.draw(P) end end--Grid gc.translate(0,P.fieldBeneath) - gc.setScissor(scr.x+P.absFieldX*scr.k,scr.y+P.absFieldY*scr.k,300*P.size*scr.k,610*P.size*scr.k) + gc.setScissor(scr.x+(P.absFieldX+P.fieldOff.x)*scr.k,scr.y+(P.absFieldY+P.fieldOff.y)*scr.k,300*P.size*scr.k,610*P.size*scr.k) if P.falling==-1 then for j=int(P.fieldBeneath/30+1),#P.field do for i=1,10 do @@ -1120,7 +952,7 @@ function player.draw(P) end gc.rectangle("line",-16,-3,15,604)--Draw b2b bar boarder --B2B indictator - gc.translate(-P.fieldOffX,-P.fieldOffY) + gc.translate(-P.fieldOff.x,-P.fieldOff.y) gc.setBlendMode("alpha") if P.gameEnv.hold then @@ -1175,7 +1007,7 @@ function player.draw(P) drawDial(405,575,P.keySpeed) --Speed dials gc.setColor(1,1,1) - if mesDisp[curMode.id]then mesDisp[curMode.id](P)end--Other messages + modes[curMode.id].mesDisp(P)--Other messages if modeEnv.royaleMode then if P.atkMode then gc.setColor(1,.8,0,P.swappingAtkMode*.02) @@ -1189,7 +1021,7 @@ function player.draw(P) end function player.demoDraw(P) gc.push("transform") - gc.translate(P.x,P.y)gc.scale(P.size)gc.translate(P.fieldOffX,P.fieldOffY) + gc.translate(P.x,P.y)gc.scale(P.size)gc.translate(P.fieldOff.x,P.fieldOff.y) --Camera gc.setColor(.1,.1,.1,.8)gc.rectangle("fill",0,0,300,600) gc.setLineWidth(2)gc.setColor(1,1,1)gc.rectangle("line",-1,-1,302,602) @@ -1264,7 +1096,7 @@ function player.demoDraw(P) --Next gc.setColor(1,1,1) gc.draw(PTC.dust[P.id]) - gc.translate(-P.fieldOffX,-P.fieldOffY) + gc.translate(-P.fieldOff.x,-P.fieldOff.y) for i=1,#P.bonus do P.bonus[i]:draw(min((30-abs(P.bonus[i].t-30))*.05,1)*(not P.bonus[i].inf and #P.field>(9-P.bonus[i].dy*.0333)and .7 or 1)) end--Effects @@ -1544,9 +1376,7 @@ function player:freshgho() if setting.dropFX>0 then self:createShade(self.curX,self.curY+1,self.curX+self.c-1,self.y_img+self.r-1) end - if setting.shakeFX>0 then - self.fieldOffY=2*setting.shakeFX+1 - end + self.fieldOff.vy=setting.shakeFX*.8 end self.curY=self.y_img end @@ -1917,7 +1747,7 @@ function player:drop()--Place piece self.lastClear=74 self.stat.clear_4=self.stat.clear_4+1 if self.human then - VOICE("tts",CHN) + VOICE("techrash",CHN) end elseif cc>0 then local clearKey=clear_n @@ -1961,8 +1791,7 @@ function player:drop()--Place piece clearKey=spin_n if self.human then SFX(spin_n[cc]) - VOICE(blockName[self.cur.name],CHN) - VOICE("spin_",CHN) + VOICE(spinName[self.cur.name],CHN) end elseif #self.field>0 then self.b2b=max(self.b2b-250,0) @@ -2080,18 +1909,33 @@ function player:drop()--Place piece end else self.combo=0 + local dropScore=10 if dospin then self:showText(text.spin[self.cur.name],"appear",50,-30) self.b2b=self.b2b+20 self.stat.spin_0=self.stat.spin_0+1 if self.human then SFX("spin_0") - VOICE(blockName[self.cur.name],CHN) - VOICE("spin",CHN) + VOICE(spinName[self.cur.name],CHN) end - cscore=cscore+30 + dropScore=25--spin bonus end - cscore=cscore+10 + + if self.gameEnv._20G then + dropScore=dropScore*2 + elseif self.gameEnv.drop<3 then + dropScore=dropScore*1.5 + end--dropSpeed bonus + + if self.dropSpeed>60 then + dropScore=dropScore*self.dropSpeed/60 + elseif self.dropSpeed>120 then + dropScore=dropScore*1,2*self.dropSpeed/120 + elseif self.dropSpeed>180 then + dropScore=dropScore*1.5*self.dropSpeed/180 + end--speed bonus + + cscore=cscore+int(dropScore) if self.b2b>1000 then self.b2b=max(self.b2b-40,1000) end @@ -2209,19 +2053,19 @@ function player.act.hardDrop(P) if setting.dropFX>0 then P:createShade(P.curX,P.curY+1,P.curX+P.c-1,P.y_img+P.r-1) end - if setting.shakeFX>0 then - P.fieldOffY=2*setting.shakeFX+1 - end end P.curY=P.y_img P.spinLast=false + if not P.small then + P.fieldOff.vy=setting.shakeFX + end if P.human then SFX("drop",nil,getBlockDirection(P)) VIB(1) end end P.lockDelay=-1 - P:drop()------------------------------------BUG:drop==number? + P:drop() P.keyPressing[6]=false end end @@ -2264,11 +2108,11 @@ function player.act.insLeft(P,auto) P:freshgho() end if x0~=P.curX then - if P.human and setting.shakeFX>0 then - P.fieldOffX=-2*setting.shakeFX - end if P.gameEnv.easyFresh or y0~=P.curY then P:freshLockDelay()end end + if not P.small then + P.fieldOff.vx=-setting.shakeFX*.8 + end if auto then if P.ctrlCount==0 then P.ctrlCount=1 end else @@ -2285,11 +2129,11 @@ function player.act.insRight(P,auto) P:freshgho() end if x0~=P.curX then - if P.human and setting.shakeFX>0 then - P.fieldOffX=2*setting.shakeFX - end if P.gameEnv.easyFresh or y0~=P.curY then P:freshLockDelay()end end + if not P.small then + P.fieldOff.vx=setting.shakeFX*.8 + end if auto then if P.ctrlCount==0 then P.ctrlCount=1 end else @@ -2302,9 +2146,6 @@ function player.act.insDown(P) if setting.dropFX>0 then P:createShade(P.curX,P.curY+1,P.curX+P.c-1,P.y_img+P.r-1) end - if setting.shakeFX>0 then - P.fieldOffY=2*setting.shakeFX - end end P.curY,P.lockDelay,P.spinLast=P.y_img,P.gameEnv.lock,false end diff --git a/texture.lua b/texture.lua index b91f1917..934448e5 100644 --- a/texture.lua +++ b/texture.lua @@ -73,6 +73,7 @@ drawableText={ grade=T(25,"Grade"), wave=T(30,"Wave"), rpm=T(35,"RPM"), + nextWave=T(30,"Next"), combo=T(20,"Combo"), mxcmb=T(20,"Max Combo"), pc=T(22,"Perfect Clear"), diff --git a/toolfunc.lua b/toolfunc.lua index 8b0159e0..d7212bda 100644 --- a/toolfunc.lua +++ b/toolfunc.lua @@ -122,6 +122,16 @@ function changeBlockSkin(n) gc.pop() gc.setCanvas() end +function restoreVirtualKey() + for i=1,#VK_org do + local B,O=virtualkey[i],VK_org[i] + B.ava=O.ava + B.x=O.x + B.y=O.y + B.r=O.r + end +end + local vibrateLevel={0,.015,.02,.03,.04,.05,.06,.07,.08,.09} function VIB(t) @@ -309,16 +319,19 @@ function resumeGame() end function loadGame(mode,level) --rec={} - curMode={id=modeID[mode],lv=level} + curMode={ + id=modeID[mode], + lv=level, + } drawableText.modeName:set(text.modeName[mode]) - drawableText.levelName:set(modeLevel[modeID[mode]][level]) + drawableText.levelName:set(modes[modeID[modeSel]].level[levelSel]) needResetGameData=true scene.swapTo("play","deck") end function resetPartGameData() frame=30 destroyPlayers() - loadmode[curMode.id]() + modes[curMode.id].load() if modeEnv.task then for i=1,#players do newTask(Event_task[modeEnv.task],players[i]) @@ -340,9 +353,9 @@ function resetGameData() pauseTime=0--Time paused pauseCount=0--Times paused destroyPlayers() - local E=defModeEnv[curMode.id] + local E=modes[curMode.id].env modeEnv=E[curMode.lv]or E[1] - loadmode[curMode.id]()--bg/bgm need redefine in custom,so up here + modes[curMode.id].load()--bg/bgm need redefine in custom,so up here if modeEnv.task then for i=1,#players do newTask(Event_task[modeEnv.task],players[i])