Compare commits

..

1 Commits

Author SHA1 Message Date
MrZ_26
42d7b1be94 Alpha V0.7.10 2020-02-04 19:32:10 +08:00
9 changed files with 147 additions and 74 deletions

BIN
BGM/rockblock.ogg Normal file

Binary file not shown.

View File

@@ -9,7 +9,7 @@ function love.conf(t)
t.audio.mixwithsystem=true--Switch on to keep sysBGM
local W=t.window
W.title="Techmino V0.7.9"
W.title="Techmino V0.7.10"
W.icon="/image/icon.png"
W.width,W.height=1280,720
W.minwidth,W.minheight=640,360

Binary file not shown.

View File

@@ -92,7 +92,7 @@ function createPlayer(id,x,y,size,AIspeed,data)
P.atkMode,P.swappingAtkMode=1,20
P.atker,P.atking,P.lastRecv={}
--Royale-related
P.gameEnv={}--Game setting vars,like dropDelay setting
for k,v in pairs(gameEnv0)do
if data and data[k]~=nil then
@@ -161,7 +161,7 @@ function createPlayer(id,x,y,size,AIspeed,data)
P.result=nil--string,"win"/"lose"
P.task={}
P.bonus={}
end
end
function showText(P,text,type,font,dy,spd,inf)
if not P.small then
ins(P.bonus,{t=0,text=text,draw=FX[type],font=font,dy=dy or 0,speed=spd or 1,inf=inf})
@@ -513,7 +513,7 @@ function spin(d,ifpre)
end
function hold(ifpre)
if not P.holded and P.waiting<=0 and P.gameEnv.hold then
P.hid,P.bid,P.bc=P.bid,P.hid,P.hid
P.hid,P.bid,P.bc,P.hc=P.bid,P.hid,P.hc,P.bc
P.hb,P.cb=blocks[P.hid][0],P.hb
if P.bid==0 then
@@ -604,11 +604,11 @@ function drop()
elseif cc>0 then
if dospin then
if P.b2b>480 then
showText(P,text.spin[P.bc]..text.clear[cc]..text.b3b,"spin",40)
showText(P,text.b3b..text.spin[P.bc]..text.clear[cc],"spin",40)
csend=b2bATK[cc]+1
exblock=exblock+1
elseif P.b2b>=30 then
showText(P,text.spin[P.bc]..text.clear[cc]..text.b2b,"spin",40)
showText(P,text.b2b..text.spin[P.bc]..text.clear[cc],"spin",40)
csend=b2bATK[cc]
else
showText(P,text.spin[P.bc]..text.clear[cc],"spin",50)
@@ -616,7 +616,7 @@ function drop()
end
sendTime=20+csend*20
if mini then
showText(P,text.mini,"drive",40,10)
showText(P,text.mini,"appear",40,-60)
csend=ceil(csend*.5)
sendTime=sendTime+60
P.b2b=P.b2b+b2bPoint[cc]*.8
@@ -630,7 +630,7 @@ function drop()
SFX(spin_n[cc])
elseif #P.clearing<#P.field then
P.b2b=P.b2b-150-cc*50
showText(P,text.clear[cc],"appear",25+cc*5)
showText(P,text.clear[cc],"appear",32+cc*3,0,(8-cc)*.3)
csend=cc-1
sendTime=20+csend*20
P.lastClear=cc

View File

@@ -4,15 +4,17 @@ return{
end,
cmb={nil,nil,"3连击","4连击","5连击","6连击","7连击","8连击","9连击","10连击!","11连击!","12连击!","13连击!","14连击!","15连击!","16连击!","17连击!","18连击!","19连击!","巨型连击"},
techrash="四清",
techrashB2B="四清 B2B",
techrashB3B="四清 B2B2B",
techrashB2B="满贯 四清",
techrashB3B="大满贯 四清",
block={"Z","S","L","J","T","O","I"},
spin={"Z旋","S旋","L旋","J旋","T旋","O旋","I旋"},
clear={"","","三清"},
b2b="B2B",
b3b="B2B2B",
spin={"Z型回","S型回","L型回","J型回","T型回","O型回","I型回"},
clear={"","","三清"},
b2b="满贯 ",
b3b="大满贯 ",
mini="次级",
PC="场地全清",
hold="暂存",
next="下一个",
stage={"关卡 1","关卡 2","关卡 3","关卡 4","关卡 5",},
maxspeed="最高速度",
@@ -22,8 +24,35 @@ return{
lose="失败",
custom="自定义游戏",
customOption={
drop="下落延迟:",
lock="锁定延迟:",
wait="放块延迟:",
fall="消行延迟:",
next="序列数量:",
hold="暂存:",
sequence="序列:",
visible="可见性:",
target="目标行数:",
freshLimit="锁延刷新次数:",
opponent="对手速度等级:",
},
customVal={
drop={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"","[20G]"},
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,""},
wait=nil,
fall=nil,
next=nil,
hold={"",""},
sequence={"bag7","his4","随机"},
visible={"可见","半隐形","全隐形"},
target={10,20,40,100,200,500,1000,""},
freshLimit={0,8,15,""},
opponent={"无电脑",1,2,3,4,5,6,7,8,9,10,11},
},
softdropdas="软降DAS:",
softdroparr="软降ARR:",
snapLevelName={"任意摆放","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"},
keyboard="键盘",
joystick="手柄",
setting2Help="方向键选择/翻页,回车修改,esc返回",
@@ -32,12 +61,13 @@ return{
actName={"左移:","右移:","顺时针旋转:","顺时针旋转:","180°旋转","硬降:","软降:","暂存:","切换攻击:","重新开始:","左瞬移:","右瞬移:","软降到底:"},
modeName={
[0]="自定义",
"竞速","马拉松","","无尽","单挑","仅TSD","隐形","挖掘","生存","科研",
"竞速","马拉松","经典","","无尽","单挑","仅TSD","隐形","挖掘","生存","科研",
"全清训练","全清挑战","41人混战","99人混战","干旱","多人",
},
modeInfo={
sprint="挑战世界纪录",
marathon="尝试坚持到最后",
classic="高速经典",
zen="无重力消除200行",
infinite="科研沙盒",
solo="打败AI",
@@ -81,7 +111,7 @@ return{
help={
"好像也没啥好帮助的吧?就当是关于了",
"这只是一个方块游戏,请勿过度解读和随意联想",
"不过就当成TOP/C2/KOS/TGM3玩好了",
"不过就当成TOP/C2/KOS/TGM3/JS玩好了",
"游戏还在测试阶段,请 勿 外 传",
"",
"使用LOVE2D引擎",
@@ -145,7 +175,7 @@ return{
"返回",
function()return setting.virtualkeySwitch and"隐藏虚拟按键"or"显示虚拟按键"end,
"默认组合",
function()return snapLevelName[snapLevel]end,
function()return text.snapLevelName[snapLevel]end,
function()return percent0to5[setting.virtualkeyAlpha]end,
"图标",
"大小",

View File

@@ -13,6 +13,8 @@ return{
b3b=" B2B2B",
mini="Mini",
PC="Perfect Clear",
hold="hold",
next="next",
stage={"STAGE 1","STAGE 2","STAGE 3","STAGE 4","STAGE 5",},
maxspeed="Max speed",
@@ -22,8 +24,35 @@ return{
lose="LOSE",
custom="Custom Game",
customOption={
drop="Drop delay:",
lock="Lock delay:",
wait="Next piece delay:",
fall="Clear row delay:",
next="Next count:",
hold="Hold:",
sequence="Sequence:",
visible="Visible:",
target="Line limit:",
freshLimit="Lock fresh limit:",
opponent="Opponent speed:",
},
customVal={
drop={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"","[20G]"},
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,""},
wait=nil,
fall=nil,
next=nil,
hold={"on","off"},
sequence={"bag7","his4","random"},
visible={"normal","time","invisible"},
target={10,20,40,100,200,500,1000,""},
freshLimit={0,8,15,""},
opponent={"No CPU",1,2,3,4,5,6,7,8,9,10,11},
},
softdropdas="softdropDAS:",
softdroparr="softdropARR:",
snapLevelName={"Free pos","Snap-10","Snap-20","Snap-40","Snap-60","Snap-80"},
keyboard="Keyboard",
joystick="Joystick",
setting2Help="Arrowkey to select/change slot,Enter to change,Esc back",
@@ -32,12 +61,13 @@ return{
actName={"Move Left:","Move Right:","Rotate Right:","Rotate Left:","Rotate Flip:","Hard Drop:","Soft Drop:","Hold:","Swap:","Restart:","Instant Left:","Instant Right:","Ins Down:"},
modeName={
[0]="Custom",
"Sprint","Marathon","Zen","Infinite","1v1","TSD-only","Blind","Dig","Survivor","Tech",
"Sprint","Marathon","Classic","Zen","Infinite","1v1","TSD-only","Blind","Dig","Survivor","Tech",
"PC Train","PC Challenge","Techmino41","Techmino99","Drought","Hotseat",
},
modeInfo={
sprint="Speed run",
marathon="Survive and reach target",
classic="Vintage car drag racing",
zen="Clear 200 Lines without gravity",
infinite="Infinite game,infinite happiness",
solo="Beat AI",
@@ -145,7 +175,7 @@ return{
"Back",
function()return setting.virtualkeySwitch and"Hide Virtual Key"or"Show Virtual Key"end,
"Defaults",
function()return snapLevelName[snapLevel]end,
function()return text.snapLevelName[snapLevel]end,
function()return percent0to5[setting.virtualkeyAlpha]end,
"Icon",
"Size",

View File

@@ -128,6 +128,7 @@ bgm={
"final",
"secret7th",
"secret8th",
"rockblock",
}
prevMenu={
@@ -162,33 +163,7 @@ customID={
"target",
"freshLimit",
"opponent",
}--Order
customOption={
drop="Drop delay:",
lock="Lock delay:",
wait="Next piece delay:",
fall="Clear row delay:",
next="Next count:",
hold="Hold:",
sequence="Sequence:",
visible="Visible:",
target="Line limit:",
freshLimit="Lock fresh limit:",
opponent="Opponent speed:",
}--Key str
customVal={
drop={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,"","[20G]"},
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,""},
wait=nil,
fall=nil,
next=nil,
hold={"on","off"},
sequence={"bag7","his4","random"},
visible={"normal","time","invisible"},
target={10,20,40,100,200,500,1000,""},
freshLimit={0,8,15,""},
opponent={"No CPU",1,2,3,4,5,6,7,8,9,10,11},
}--number-Val str
}
customRange={
drop={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99,-1},
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
@@ -234,7 +209,6 @@ pc_fall={18,16,14,12,10,9,8,7,6}
atkModeName={"Random","Badges","K.O.s","Counters"}
up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
percent0to5={[0]="0%","20%","40%","60%","80%","100%",}
snapLevelName={"Free pos","Snap-10","Snap-20","Snap-40","Snap-60","Snap-80"}
defaultModeEnv={
sprint={
@@ -332,6 +306,22 @@ defaultModeEnv={
bgm="secret7th",
},
},
classic={
{
das=15,arr=3,
sddas=2,sdarr=2,
ghost=false,center=false,
drop=1,lock=1,
wait=10,fall=25,
next=6,hold=false,
sequence="rnd",
freshLimit=0,
target=10,
reach=Event.classic_reach,
bg="rgb",
bgm="rockblock",
},
},
zen={
{
drop=1e99,
@@ -622,9 +612,15 @@ defaultModeEnv={
},
},
}
modeID={
[0]="custom",
"sprint","marathon","classic","zen","infinite","solo","tsd","blind","dig","survivor","tech",
"pctrain","pcchallenge","techmino41","techmino99","drought","hotseat",
}
modeLevel={
sprint={"10L","20L","40L","100L","400L","1000L"},
marathon={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
classic={"CTWC"},
zen={"NORMAL"},
infinite={"NORMAL"},
solo={"EASY","NORMAL","HARD","LUNATIC"},
@@ -633,7 +629,7 @@ modeLevel={
dig={"NORMAL","LUNATIC"},
survivor={"EASY","NORMAL","HARD","LUNATIC"},
tech={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
pctrain={"NORMAL","LUNATIC"},
pctrain={"NORMAL","EXTRA"},
pcchallenge={"NORMAL","HARD","LUNATIC"},
techmino41={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
techmino99={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
@@ -647,11 +643,12 @@ modeLevelColor={
HARD=color.purple,
LUNATIC=color.red,
EXTRA=color.lightPurple,
ULTIMATE=color.lightYellow,
MESS=color.lightGrey,
GM=color.blue,
ULTIMATE=color.lightYellow,
DEATH=color.lightRed,
CTWC=color.lightBlue,
["10L"]=color.cyan,
["20L"]=color.lightBlue,
["40L"]=color.green,
@@ -659,11 +656,6 @@ modeLevelColor={
["400L"]=color.red,
["1000L"]=color.darkRed,
}
modeID={
[0]="custom",
"sprint","marathon","zen","infinite","solo","tsd","blind","dig","survivor","tech",
"pctrain","pcchallenge","techmino41","techmino99","drought","hotseat",
}
freshMethod={
bag7=function()
@@ -944,16 +936,16 @@ Buttons={
{x=850,y=370,w=340,h=60,rgb=color.white,code=function()
setting.frameMul=setting.frameMul+(setting.frameMul<50 and 5 or 10)
if setting.frameMul>100 then setting.frameMul=25 end
end,up=15,down=17},
end,up=15,down=17,left=19},
--11~16
{x=850,y=440,w=340,h=60,rgb=color.green,code=function()gotoScene("setting2")end,up=16,down=18},
{x=850,y=510,w=340,h=60,rgb=color.yellow,code=function()gotoScene("setting3")end,up=17,down=20},
{x=850,y=440,w=340,h=60,rgb=color.green,code=function()gotoScene("setting2")end,up=16,down=18,left=19},
{x=850,y=510,w=340,h=60,rgb=color.yellow,code=function()gotoScene("setting3")end,up=17,down=20,left=19},
{x=280,y=510,w=200,h=60,rgb=color.red,code=function()
setting.lang=setting.lang%#langName+1
swapLanguage(setting.lang)
end,up=10,down=20,right=18},
end,up=7,down=20,right=18},
{x=640,y=620,w=300,h=70,rgb=color.white,code=back,up=19},
--17~19
--17~20
},
setting2={--Control setting
{x=840,y=630,w=180,h=60,rgb=color.white,code=back},

View File

@@ -39,7 +39,7 @@ function setFont(s)
if Fonts[s]then
gc.setFont(Fonts[s])
else
local t=gc.setNewFont("allph.ttf",s-5)
local t=gc.setNewFont("font.ttf",s-5)
Fonts[s]=t
gc.setFont(t)
end
@@ -83,6 +83,9 @@ loadmode={
marathon=function()
createPlayer(1,340,15)
end,
classic=function()
createPlayer(1,340,15)
end,
zen=function()
createPlayer(1,340,15)
end,
@@ -209,6 +212,23 @@ mesDisp={
setFont(70)
mStr(max(P.gameEnv.target-P.cstat.row,0),-75,260)
end,
marathon=function()
setFont(50)
mStr(P.cstat.row,-75,320)
mStr(P.gameEnv.target,-75,370)
gc.rectangle("fill",-120,376,90,4)
end,
classic=function()
setFont(80)
local r=P.gameEnv.target*.1
mStr(r<11 and 19+r or r==11 and"00"or r==12 and"0a"or format("%x",r*10-110),-75,210)
setFont(20)
mStr("speed level",-75,290)
setFont(50)
mStr(P.cstat.row,-75,320)
mStr(P.gameEnv.target,-75,370)
gc.rectangle("fill",-120,376,90,4)
end,
zen=function()
setFont(75)
mStr(max(200-P.cstat.row,0),-75,280)
@@ -221,12 +241,6 @@ mesDisp={
mStr("Attack",-75,363)
mStr("Efficiency",-75,475)
end,
marathon=function()
setFont(50)
mStr(P.cstat.row,-75,320)
mStr(P.gameEnv.target,-75,370)
gc.rectangle("fill",-120,376,90,4)
end,
tsd=function()
setFont(35)
mStr("TSD",-75,405)
@@ -470,11 +484,18 @@ Event={
SFX("reach")
end
end,
classic_reach=function()
P.gameEnv.target=P.gameEnv.target+10
if P.gameEnv.target==100 then
P.gameEnv.drop,P.gameEnv.lock=0,0
end
SFX("reach")
end,
tsd_reach=function()
if P.lastClear~=52 then
Event.gameover.lose()
else
P.gameEnv.target=P.gameEnv.target+2
P.gameEnv.target=P.gameEnv.target+20
P.cstat.event=P.cstat.event+1
if #P.field>11 and P.cstat.event%5~=1 then
ins(P.clearing,1)

View File

@@ -267,7 +267,7 @@ end
function Pnt.main()
gc.setColor(1,1,1)
setFont(30)
gc.print("Alpha V0.7.9",370,140)
gc.print("Alpha V0.7.10",370,140)
gc.print(system,530,110)
gc.draw(titleImage,30,30)
end
@@ -300,9 +300,9 @@ function Pnt.custom()
for i=1,#customID do
local k=customID[i]
local y=90+40*i
gc.print(customOption[k],50,y)
if customVal[k]then
gc.print(customVal[k][customSel[k]],350,y)
gc.printf(text.customOption[k],50,y,300,"right")
if text.customVal[k]then
gc.print(text.customVal[k][customSel[k]],350,y)
else
gc.print(customRange[k][customSel[k]],350,y)
end
@@ -445,16 +445,16 @@ function Pnt.play()
setFont(40)
gc.setColor(1,1,1)
if P.gameEnv.hold then
gc.print("Hold",-115,-10)
mStr(text.hold,-75,-10)
for i=1,#P.hb do
for j=1,#P.hb[1] do
if P.hb[i][j]>0 then
drawPixel(i+17.5-#P.hb*.5,j-2.5-#P.hb[1]*.5,P.holded and 13 or P.hid,1)
drawPixel(i+17.5-#P.hb*.5,j-2.5-#P.hb[1]*.5,P.holded and 13 or P.hc,1)
end
end
end
end--Hold
gc.print("Next",336,-10)
gc.print(text.next,325,-10)
for N=1,P.gameEnv.next do
local b=P.nb[N]
for i=1,#b do