Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd5fac4e8a |
2
conf.lua
2
conf.lua
@@ -1,5 +1,5 @@
|
||||
math.randomseed(os.time())
|
||||
gameVersion="Alpha V0.7.31+"
|
||||
gameVersion="Alpha V0.7.32"
|
||||
function love.conf(t)
|
||||
t.identity="Techmino"--Save directory name
|
||||
t.version="11.1"
|
||||
|
||||
48
dataList.lua
48
dataList.lua
@@ -453,7 +453,7 @@ function Event.marathon_update(P)
|
||||
end
|
||||
end
|
||||
function Event.master_score(P)
|
||||
local c=#P.clearing
|
||||
local c=#P.cleared
|
||||
if c==0 and P.modeData.point%100==99 then return end
|
||||
local s=c<3 and c+1 or c==3 and 5 or 7
|
||||
if P.combo>7 then s=s+2
|
||||
@@ -492,7 +492,7 @@ function Event.master_score(P)
|
||||
end
|
||||
end
|
||||
function Event.master_score_hard(P)
|
||||
local c=#P.clearing
|
||||
local c=#P.cleared
|
||||
if c==0 then return end
|
||||
local s
|
||||
if P.lastClear<10 then
|
||||
@@ -534,15 +534,17 @@ function Event.classic_reach(P)
|
||||
P.gameEnv.target=P.gameEnv.target+10
|
||||
if P.gameEnv.target==110 then
|
||||
P.gameEnv.drop,P.gameEnv.lock=2,2
|
||||
elseif P.gameEnv.target==210 then
|
||||
elseif P.gameEnv.target==200 then
|
||||
P.gameEnv.drop,P.gameEnv.lock=1,1
|
||||
end
|
||||
SFX("reach")
|
||||
if P.gameEnv.target>100 then
|
||||
SFX("reach")
|
||||
end
|
||||
end
|
||||
end
|
||||
function Event.infinite_check(P)
|
||||
for i=1,#P.clearing do
|
||||
if P.clearing[i]<6 then
|
||||
for i=1,#P.cleared do
|
||||
if P.cleared[i]<6 then
|
||||
P:garbageRise(10,1,rnd(10))
|
||||
end
|
||||
end
|
||||
@@ -558,46 +560,54 @@ function Event.round_check(P)
|
||||
players[ID].control=true
|
||||
end
|
||||
end
|
||||
function Event.GM_reach(P)
|
||||
local R=#P.clearing
|
||||
if R==4 then R=10 end
|
||||
P.modeData.point=P.modeData.point+R
|
||||
function Event.GM_score(P)
|
||||
local F=false
|
||||
if P.modeData.point<70 then--if Less then MM
|
||||
local R=#P.cleared
|
||||
if R==4 then R=10 end
|
||||
P.modeData.point=P.modeData.point+R
|
||||
F=true
|
||||
end
|
||||
if P.stat.time>=53.5 then
|
||||
P.modeData.point=P.modeData.point+15
|
||||
P.modeData.point=min(P.modeData.point+15,80)
|
||||
F=true
|
||||
Event.win(P)
|
||||
end
|
||||
if F then
|
||||
P.modeData.event=sectionName[int(P.modeData.point*.1)+1]
|
||||
end
|
||||
end
|
||||
function Event.tsd_reach(P)
|
||||
if #P.clearing>0 then
|
||||
if #P.cleared>0 then
|
||||
if P.lastClear~=52 then
|
||||
Event.lose(P)
|
||||
elseif #P.clearing>0 then
|
||||
elseif #P.cleared>0 then
|
||||
P.modeData.event=P.modeData.event+1
|
||||
end
|
||||
end
|
||||
end
|
||||
function Event.tech_reach_easy(P)
|
||||
if #P.clearing>0 and P.b2b<40 then
|
||||
if #P.cleared>0 and P.b2b<40 then
|
||||
Event.lose(P)
|
||||
end
|
||||
end
|
||||
function Event.tech_reach_hard(P)
|
||||
if #P.clearing>0 and P.lastClear<10 then
|
||||
if #P.cleared>0 and P.lastClear<10 then
|
||||
Event.lose(P)
|
||||
end
|
||||
end
|
||||
function Event.tech_reach_ultimate(P)
|
||||
if #P.clearing>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
if #P.cleared>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
Event.lose(P)
|
||||
end
|
||||
end
|
||||
function Event.c4w_reach(P)
|
||||
for i=1,#P.clearing do
|
||||
for i=1,#P.cleared do
|
||||
P.field[#P.field+1]=getNewRow(10)
|
||||
P.visTime[#P.visTime+1]=getNewRow(20)
|
||||
for i=4,7 do P.field[#P.field][i]=0 end
|
||||
end
|
||||
if #P.clearing==0 then
|
||||
if #P.cleared==0 then
|
||||
if curMode.lv==2 then
|
||||
Event.lose(P)
|
||||
end
|
||||
@@ -1172,7 +1182,7 @@ defModeEnv.blind={
|
||||
wait=10,fall=15,
|
||||
visible="fast",
|
||||
freshLimit=15,
|
||||
dropPiece="GM_reach",
|
||||
dropPiece="GM_score",
|
||||
arr=1,
|
||||
bg="game3",bgm="shining terminal",
|
||||
},
|
||||
|
||||
@@ -34,6 +34,7 @@ setting={
|
||||
},
|
||||
VKSwitch=true,
|
||||
VKTrack=true,--If tracked
|
||||
VKDodge=false,--If repel
|
||||
VKTchW=3,--Touch Weight
|
||||
VKCurW=4,--CurPos Weight
|
||||
VKIcon=true,
|
||||
|
||||
@@ -325,6 +325,7 @@ return{
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="自动避让",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
|
||||
@@ -326,6 +326,7 @@ return{
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="自动避让",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
|
||||
@@ -324,6 +324,7 @@ Lib used:
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="Auto Dodge",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
|
||||
3
list.lua
3
list.lua
@@ -166,7 +166,7 @@ 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",
|
||||
@@ -534,6 +534,7 @@ Widget={
|
||||
back= newButton(1080,600,240,80,color.white,50,scene.back),
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge= newSwitch(400,200, 40,function()return setting.VKDodge end,function()setting.VKDodge=not setting.VKDodge end),
|
||||
VKTchW= newSlider(140,310,1000,10,40,nil,function()return setting.VKTchW end,function(i)setting.VKTchW=i;setting.VKCurW=math.max(setting.VKCurW,i)end),
|
||||
VKCurW= newSlider(140,370,1000,10,40,nil,function()return setting.VKCurW end,function(i)setting.VKCurW=i;setting.VKTchW=math.min(setting.VKTchW,i)end),
|
||||
back= newButton(1080,600,240,80,color.white,50,scene.back),
|
||||
|
||||
16
main.lua
16
main.lua
@@ -499,15 +499,17 @@ function touchDown.play(id,x,y)
|
||||
players[1]:pressKey(t)
|
||||
if setting.VKTrack then
|
||||
local B=virtualkey[t]
|
||||
for i=1,#virtualkey do
|
||||
local b=virtualkey[i]
|
||||
local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5--碰撞深度(负数=间隔距离)
|
||||
if d>0 then
|
||||
b.x=b.x+(b.x-B.x)*d*b.r*.00005
|
||||
b.y=b.y+(b.y-B.y)*d*b.r*.00005
|
||||
--按钮软碰撞(做不来hhh随便做一个,效果还行!)
|
||||
if setting.VKDodge then
|
||||
for i=1,#virtualkey do
|
||||
local b=virtualkey[i]
|
||||
local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5--碰撞深度(负数=间隔距离)
|
||||
if d>0 then
|
||||
b.x=b.x+(b.x-B.x)*d*b.r*.00005
|
||||
b.y=b.y+(b.y-B.y)*d*b.r*.00005
|
||||
end
|
||||
end
|
||||
end
|
||||
--按钮软碰撞(做不来hhh随便做一个,效果还行!)
|
||||
local O=VK_org[t]
|
||||
local _FW,_CW=setting.VKTchW*.1,1-setting.VKCurW*.1
|
||||
local _OW=1-_FW-_CW
|
||||
|
||||
76
player.lua
76
player.lua
@@ -287,9 +287,8 @@ local mesDisp={
|
||||
classic=function(P)
|
||||
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),-82,210)
|
||||
setFont(20)
|
||||
mStr("speed level",-82,290)
|
||||
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)
|
||||
@@ -303,24 +302,21 @@ local mesDisp={
|
||||
setFont(50)
|
||||
mStr(P.stat.atk,-82,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-82,420)
|
||||
setFont(20)
|
||||
mStr("Attack",-82,363)
|
||||
mStr("Efficiency",-82,475)
|
||||
mDraw(drawableText.atk,-82,363)
|
||||
mDraw(drawableText.eff,-82,475)
|
||||
end,
|
||||
tsd=function(P)
|
||||
setFont(35)
|
||||
mStr("TSD",-82,407)
|
||||
setFont(80)
|
||||
mStr(P.modeData.event,-82,330)
|
||||
mDraw(drawableText.tsd,-82,407)
|
||||
end,
|
||||
blind=function(P)
|
||||
setFont(25)
|
||||
mStr("Lines",-82,300)
|
||||
mStr("Techrash",-82,420)
|
||||
mDraw(drawableText.line,-82,300)
|
||||
mDraw(drawableText.techrash,-82,420)
|
||||
if curMode.lv==6 then
|
||||
mStr("Grade",-82,170)
|
||||
mDraw(drawableText.grade,-82,170)
|
||||
setFont(60)
|
||||
mStr(P.modeData.point*.1,-82,110)
|
||||
mStr(P.modeData.event,-82,110)
|
||||
end
|
||||
setFont(80)
|
||||
mStr(P.stat.row,-82,220)
|
||||
@@ -329,57 +325,51 @@ local mesDisp={
|
||||
dig=function(P)
|
||||
setFont(70)
|
||||
mStr(P.modeData.event,-82,310)
|
||||
setFont(30)
|
||||
mStr("Wave",-82,375)
|
||||
mDraw(drawableText.wave,-82,375)
|
||||
end,
|
||||
survivor=function(P)
|
||||
setFont(70)
|
||||
mStr(P.modeData.event,-82,310)
|
||||
setFont(30)
|
||||
mStr("Wave",-82,375)
|
||||
mDraw(drawableText.wave,-82,375)
|
||||
end,
|
||||
defender=function(P)
|
||||
setFont(60)
|
||||
mStr(P.modeData.point,-82,315)
|
||||
setFont(30)
|
||||
mStr("RPM",-82,375)
|
||||
mDraw(drawableText.rpm,-82,375)
|
||||
end,
|
||||
attacker=function(P)
|
||||
setFont(60)
|
||||
mStr(P.modeData.point,-82,315)
|
||||
setFont(30)
|
||||
mStr("RPM",-82,375)
|
||||
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)
|
||||
setFont(20)
|
||||
mStr("Attack",-82,363)
|
||||
mStr("Efficiency",-82,475)
|
||||
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)
|
||||
setFont(20)
|
||||
mStr("combo",-82,358)
|
||||
mStr("max combo",-82,450)
|
||||
mDraw(drawableText.combo,-82,358)
|
||||
mDraw(drawableText.mxcmb,-82,450)
|
||||
end,
|
||||
pctrain=function(P)
|
||||
setFont(22)
|
||||
mStr("Perfect Clear",-82,412)
|
||||
setFont(80)
|
||||
mStr(P.stat.pc,-82,330)
|
||||
mDraw(drawableText.pc,-82,412)
|
||||
end,
|
||||
pcchallenge=function(P)
|
||||
setFont(22)
|
||||
mStr("Perfect Clear",-82,432)
|
||||
setFont(80)
|
||||
mStr(P.stat.pc,-82,350)
|
||||
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
|
||||
@@ -390,8 +380,8 @@ local mesDisp={
|
||||
setFont(40)
|
||||
mStr(#players.alive.."/49",-82,175)
|
||||
mStr(P.ko,-70,215)
|
||||
gc.draw(drawableText.ko,-127,225)
|
||||
setFont(25)
|
||||
gc.print("KO",-127,225)
|
||||
gc.setColor(1,.5,0,.6)
|
||||
gc.print(P.badge,-47,227)
|
||||
gc.setColor(1,1,1)
|
||||
@@ -405,8 +395,8 @@ local mesDisp={
|
||||
setFont(40)
|
||||
mStr(#players.alive.."/99",-82,175)
|
||||
mStr(P.ko,-70,215)
|
||||
gc.draw(drawableText.ko,-127,225)
|
||||
setFont(25)
|
||||
gc.print("KO",-127,225)
|
||||
gc.setColor(1,.5,0,.6)
|
||||
gc.print(P.badge,-47,227)
|
||||
gc.setColor(1,1,1)
|
||||
@@ -422,10 +412,9 @@ local mesDisp={
|
||||
end,
|
||||
custom=function(P)
|
||||
if P.gameEnv.puzzle or P.gameEnv.target>1e10 then
|
||||
setFont(25)
|
||||
mStr("Lines",-82,290)
|
||||
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)
|
||||
@@ -555,7 +544,7 @@ function newDemoPlayer(id,x,y,size)
|
||||
P.keyPressing={}for i=1,12 do P.keyPressing[i]=false end
|
||||
P.moving,P.downing=0,0
|
||||
P.waiting,P.falling=-1,-1
|
||||
P.clearing={}
|
||||
P.clearing,P.cleared={},{}
|
||||
P.combo,P.b2b=0,0
|
||||
P.fieldBeneath=0
|
||||
P.shade={}
|
||||
@@ -704,7 +693,7 @@ function newPlayer(id,x,y,size,AIdata)
|
||||
P.keyPressing={}for i=1,12 do P.keyPressing[i]=false end
|
||||
P.moving,P.downing=0,0
|
||||
P.waiting,P.falling=-1,-1
|
||||
P.clearing={}
|
||||
P.clearing,P.cleared={},{}
|
||||
P.combo,P.b2b=0,0
|
||||
P.fieldBeneath=0
|
||||
|
||||
@@ -805,9 +794,7 @@ function player.update(P,dt)
|
||||
else
|
||||
local L=#P.clearing
|
||||
if P.human and P.gameEnv.fall>0 and #P.field+L>P.clearing[L]then SFX("fall")end
|
||||
for i=1,L do
|
||||
P.clearing[i]=nil
|
||||
end
|
||||
P.clearing,P.cleared={},{}
|
||||
end
|
||||
end
|
||||
if not P.control then goto stop end
|
||||
@@ -866,9 +853,7 @@ function player.update(P,dt)
|
||||
else
|
||||
local L=#P.clearing
|
||||
if P.human and P.gameEnv.fall>0 and #P.field+L>P.clearing[L]then SFX("fall")end
|
||||
for i=1,L do
|
||||
P.clearing[i]=nil
|
||||
end
|
||||
P.clearing,P.cleared={},{}
|
||||
end
|
||||
end::stop::
|
||||
if P.endCounter<40 then
|
||||
@@ -1384,6 +1369,7 @@ local function checkrow(P,start,height)--(cy,r)
|
||||
for i=1,height do
|
||||
if ckfull(P,h)then
|
||||
ins(P.clearing,h)
|
||||
ins(P.cleared,h+c)
|
||||
removeRow(P.field,h)
|
||||
removeRow(P.visTime,h)
|
||||
c=c+1
|
||||
|
||||
13
texture.lua
13
texture.lua
@@ -64,6 +64,19 @@ payCode=N("/image/mess/paycode.png")
|
||||
drawableText={
|
||||
question=T(100,"?"),
|
||||
bpm=T(15,"BPM"),kpm=T(15,"KPM"),
|
||||
speedLV=T(20,"speed level"),
|
||||
atk=T(20,"Attack"),
|
||||
eff=T(20,"Efficiency"),
|
||||
tsd=T(35,"TSD"),
|
||||
line=T(25,"Lines"),
|
||||
techrash=T(25,"Techrash"),
|
||||
grade=T(25,"Grade"),
|
||||
wave=T(30,"Wave"),
|
||||
rpm=T(35,"RPM"),
|
||||
combo=T(20,"Combo"),
|
||||
mxcmb=T(20,"Max Combo"),
|
||||
pc=T(22,"Perfect Clear"),
|
||||
ko=T(25,"KO"),
|
||||
|
||||
modeName=T(30),levelName=T(30),
|
||||
next=T(40),hold=T(40),
|
||||
|
||||
@@ -466,7 +466,7 @@ function loadSetting()
|
||||
t=="bg"or
|
||||
t=="ghost"or t=="center"or t=="grid"or t=="swap"or
|
||||
t=="quickR"or t=="fine"or t=="bgblock"or t=="smo"or
|
||||
t=="VKSwitch"or t=="VKTrack"or t=="VKIcon"
|
||||
t=="VKSwitch"or t=="VKTrack"or t=="VKDodge"or t=="VKIcon"
|
||||
then
|
||||
setting[t]=v=="true"
|
||||
elseif t=="frameMul"then
|
||||
@@ -529,6 +529,7 @@ local saveOpt={
|
||||
|
||||
"VKSwitch",
|
||||
"VKTrack",
|
||||
"VKDodge",
|
||||
"VKIcon",
|
||||
"VKAlpha",
|
||||
}
|
||||
|
||||
@@ -23,9 +23,13 @@ Future outlook:
|
||||
infinite 1v1
|
||||
square mode
|
||||
more FXs & 3d features & animations
|
||||
0.7.31+:
|
||||
0.7.32:
|
||||
Blind-GM now show section directly
|
||||
easier&more standard classic mode
|
||||
can switch Virtualkey's auto dodging
|
||||
in-game setting
|
||||
little changes
|
||||
code optimized
|
||||
bug fixed
|
||||
0.7.31:
|
||||
stereo system
|
||||
fixed a problem in finesse calculating
|
||||
|
||||
Reference in New Issue
Block a user