0.10.0:回放更新

This commit is contained in:
MrZ_26
2020-08-03 16:45:08 +08:00
parent 25fe724bf8
commit 5d74d980e9
6 changed files with 736 additions and 692 deletions

View File

@@ -2,6 +2,7 @@ local langList={
{ {
anykey="按任意键继续", anykey="按任意键继续",
newVersion="检测到更新!", newVersion="检测到更新!",
newBigVersion="检测到大更新!大量存档信息被改动",
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效", marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效",
lang="中文", lang="中文",
atkModeName={"随机","徽章","击杀","反击"}, atkModeName={"随机","徽章","击杀","反击"},
@@ -464,6 +465,7 @@ local langList={
{ {
anykey="按任意键继续", anykey="按任意键继续",
newVersion="检测到更新!", newVersion="检测到更新!",
newBigVersion="检测到大更新!大量存档信息被改动",
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效", marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效",
lang="全中文", lang="全中文",
atkModeName={"随机","徽章","击杀","反击"}, atkModeName={"随机","徽章","击杀","反击"},
@@ -923,6 +925,7 @@ local langList={
{ {
anykey="Press any button", anykey="Press any button",
newVersion="Updating detected!", newVersion="Updating detected!",
newBigVersion="Big updating detected! Save data altered",
marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid", marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
lang="English", lang="English",
atkModeName={"Random","Badges","K.O.s","Attackers"}, atkModeName={"Random","Badges","K.O.s","Attackers"},
@@ -1371,6 +1374,7 @@ local langList={
{ {
anykey="↓□↓", anykey="↓□↓",
newVersion="&!!!", newVersion="&!!!",
newBigVersion="&!!!~~~",
marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid", marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
lang="?????", lang="?????",
atkModeName={"?","( )","!","←→"}, atkModeName={"?","( )","!","←→"},

View File

@@ -1,4 +1,4 @@
gameVersion="Alpha V0.9.3" gameVersion="Alpha V0.10.0"
function love.conf(t) function love.conf(t)
t.identity="Techmino"--Saving folder t.identity="Techmino"--Saving folder
t.version="11.1" t.version="11.1"

View File

@@ -11,16 +11,15 @@ spin判定:
攻击系统: 攻击系统:
普通消除: 普通消除:
消1/2/3/4攻击0.25/1.25/2.25/4 消1/2/3/4攻击0.5/1.5/2.5/4
特殊消除: 特殊消除:
spin1/2/3攻击2/4/6,若mini则减半 spin1/2/3攻击2/4/6,若mini则减至一
B2B:加1(techrash/spin1/spin2)或2(spin3)攻击 B2B:加1(techrash/spin1/spin2)或2(spin3)攻击
B3B:在B2B效果之上消四再加1,spin再加0.5*消行数攻击,二者都+1额外抵挡 B3B:在B2B效果之上消四再加1,spin再加0.5*消行数攻击,二者都+1额外抵挡
堆楼连击:0,0,1,1,2,2,2,3,3,3,4,4,3, 之后都是2 连击:给予上述攻击[连击数*20%]的加成,上限200%,连消3次之后额外加1攻击
挖掘连击:0,0,1,1,2,2,3,3,4,4,4, 之后都是5
特殊消除会增加B2B点数,让之后的特殊消除获得B2B(B3B)增益(详细说明见下文) 特殊消除会增加B2B点数,让之后的特殊消除获得B2B(B3B)增益(详细说明见下文)
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):伤害+2,额外抵挡+2 半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):伤害+2,额外抵挡+2
全消:将上述伤害之和开根号,再+6~12(本局内递增)+2额外抵挡(注:本局消行数>4时会将B2B点数拉满) 全消:将上述伤害之和减半,再+6~12(本局内递增)+2额外抵挡(注:本局消行数>4时会将B2B点数拉满)
根据上述规则计算后,向下取整,攻击打出 根据上述规则计算后,向下取整,攻击打出
分数系统: 分数系统:
@@ -37,7 +36,7 @@ spin判定:
back to back(B2B)点数说明: back to back(B2B)点数说明:
B2B点数的范围在0~1200,在点数>=40时进行特殊消除为B2B,>1000时特殊消除为B3B B2B点数的范围在0~1200,在点数>=40时进行特殊消除为B2B,>1000时特殊消除为B3B
普通消除-250 普通消除-250
spin1/2/3:+50/100/180(mini变为原来40%) spin1/2/3:+50/100/180(mini变为原来25%)
消四:+100 消四:+100
空spin:+20,此法得到的点数不能超过1000 空spin:+20,此法得到的点数不能超过1000
当点数在1000以上时空放一块-40(不减到低于1000) 当点数在1000以上时空放一块-40(不减到低于1000)
@@ -67,16 +66,15 @@ Spin detection:
Attack system: Attack system:
Regular line clears: Regular line clears:
Single/Double/Triple/Techrash sends 0.25/1.25/2.25/4 Single/Double/Triple/Techrash sends 0.5/1.5/2.5/4
Special line clears: Special line clears:
Spin Single/Double/Triple sends 2/4/6, half if Mini Spin Single/Double/Triple sends 2/4/6, half if Mini
B2B: +1 (Techrash/Spin Single/Spin Double) or +2 (Spin Triple) B2B: +1 (Techrash/Spin Single/Spin Double) or +2 (Spin Triple)
B2B2B/B3B: In addition to B2B, +1 if Techrash, +(0.5 * lines cleared) if Spin, and in both cases +1 additional blocking B2B2B/B3B: In addition to B2B, +1 if Techrash, +(0.5 * lines cleared) if Spin, and in both cases +1 additional blocking
Wide Combo: 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 3, then 2 afterwards Combo: each combo gives 20% more attack (capped at 200%), extra 1 attack after 3 combo
Dig Combo: 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, then 5 afterwards
Special line clears will increase B2B gauge, making later special line clears have B2B or B2B2B bonus (see below) Special line clears will increase B2B gauge, making later special line clears have B2B or B2B2B bonus (see below)
Half Perfect Clear (a Perfect Clear "with blocks left below". If it's an I clearing 1 line, then the remaining blocks must not be player-placed): Attack +2, Extra Blocking +2 Half Perfect Clear (a Perfect Clear "with blocks left below". If it's an I clearing 1 line, then the remaining blocks must not be player-placed): Attack +2, Extra Blocking +2
Perfect Clear: square root all damage above, then +6 to +12 attack (increases within a round) and +2 extra blocking. (note: if lines cleared in this round >4, then B2B gauge will be filled) Perfect Clear: half all damage above, then +6 to +12 attack (increases within a round) and +2 extra blocking. (note: if lines cleared in this round >4, then B2B gauge will be filled)
After calculating all above, the damage value will be rounded down then sent After calculating all above, the damage value will be rounded down then sent
Score system: Score system:
@@ -93,7 +91,7 @@ Countering:
Back to Back (B2B) gauge: Back to Back (B2B) gauge:
The B2B gauge ranges from 0 to 1,200. Special line clears are B2B if the gauge is >=40, B2B2B if >1,000. The B2B gauge ranges from 0 to 1,200. Special line clears are B2B if the gauge is >=40, B2B2B if >1,000.
A regular line clear -250 A regular line clear -250
Spin Single/Double/Triple +50/100/180 (x40% if Mini) Spin Single/Double/Triple +50/100/180 (x25% if Mini)
Techrash +100 Techrash +100
Spin without clearing lines +20, but gauge cannot exceed 1,000 with this method Spin without clearing lines +20, but gauge cannot exceed 1,000 with this method
When gauge is above 1,000, a drop without clearing lines -40 (cannot drop below 1,000 with this method) When gauge is above 1,000, a drop without clearing lines -40 (cannot drop below 1,000 with this method)

View File

@@ -6,7 +6,7 @@
/_/ \___/ \___//_/ /_//_/ /_/ /_//_//_/ /_/ \____/ /_/ \___/ \___//_/ /_//_/ /_/ /_//_//_/ /_/ \____/
Techmino is my first "huge project" Techmino is my first "huge project"
optimization is welcomed if you also love tetromino game optimization is welcomed if you also love tetromino game
]] ]]--
--Global Setting & Vars --Global Setting & Vars
math.randomseed(os.time()*626) math.randomseed(os.time()*626)
@@ -18,17 +18,18 @@ function NULL()end
system=love.system.getOS() system=love.system.getOS()
game={} game={}
mapCam={ mapCam={
sel=nil,--selected mode ID sel=nil,--Selected mode ID
x=0,y=0,k=1,--camera pos/k --Basic paragrams
x1=0,y1=0,k1=1,--camera pos/k shown x=0,y=0,k=1,--Camera pos/k
--basic paras x1=0,y1=0,k1=1,--Camera pos/k shown
keyCtrl=false,--if controlling with key --If controlling with key
keyCtrl=false,
--For auto zooming when enter/leave scene
zoomMethod=nil, zoomMethod=nil,
zoomK=nil, zoomK=nil,
--for auto zooming when enter/leave scene
} }
scr={x=0,y=0,w=0,h=0,rad=0,k=1}--wid,hei,radius,scale K scr={x=0,y=0,w=0,h=0,rad=0,k=1}--wid,hei,radius,scale K
@@ -36,10 +37,23 @@ customSel={1,22,1,1,7,3,1,1,8,4,1,1,1}
preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
preBag={} preBag={}
players={alive={},human=0} game={
--blockSkin,blockSkinMini={},{}--redefined in SKIN.change frame=0, --Frame count
result=0, --Game result
pauseTime=0, --Time paused
pauseCount=0, --Pausing count
garbageSpeed=1, --Garbage timing speed
warnLVL0=0, --Warning level
warnLVL=0, --Warning level (show)
recording=false, --If recording
replaying=false, --If replaying
rec={}, --Recording list, key-time
}--Global game data
players={alive={}}--Players data
curMode=nil--Current mode object
--blockSkin,blockSkinMini={},{}--Redefined in SKIN.change
require("Zframework")--load Zframework require("Zframework")--Load Zframework
--Load modules --Load modules
blocks= require("parts/mino") blocks= require("parts/mino")
@@ -58,7 +72,7 @@ Modes= require("parts/modes")
TICK= require("parts/tick") TICK= require("parts/tick")
--load files & settings --Load files & settings
modeRanks={sprint_10=0} modeRanks={sprint_10=0}
local fs=love.filesystem local fs=love.filesystem
@@ -87,23 +101,37 @@ if fs.getInfo("virtualkey.dat")then FILE.loadVK()end
if fs.getInfo("tech_ultimate.dat")then fs.remove("tech_ultimate.dat")end if fs.getInfo("tech_ultimate.dat")then fs.remove("tech_ultimate.dat")end
if fs.getInfo("tech_ultimate+.dat")then fs.remove("tech_ultimate+.dat")end if fs.getInfo("tech_ultimate+.dat")then fs.remove("tech_ultimate+.dat")end
--update data file --Update modeRanks
S=stat R=modeRanks
while #modeRanks>73 do if R[1]then
table.remove(modeRanks) local L=R
end
if modeRanks[73]==6 then modeRanks[73]=0 end
if modeRanks[1]then--rename key of modeRanks
local L=modeRanks
for i=1,#L do for i=1,#L do
L[Modes[i].name],L[i]=L[i] L[Modes[i].name],L[i]=L[i]
end end
elseif R.master_adavnce then
R.master_advance,R.master_adavnce=R.master_adavnce
end end
--Update data file
S=stat
if S.version=="Alpha V0.9.1"or type(setting.spawn)~="number"then if S.version=="Alpha V0.9.1"or type(setting.spawn)~="number"then
setting.spawn=0 setting.spawn=0
end end
if S.version~=gameVersion then if S.version~=gameVersion then
S.version=gameVersion S.version=gameVersion
TEXT.show(text.newVersion,640,200,30,"fly",.3) TEXT.show(text.newBigVersion,640,200,30,"fly",.3)
newVersionLaunch=true
fs.remove("master_adavnce.dat")
fs.remove("master_beginner.dat")
for name,M in next,Modes do
if M.score then
if modeRanks[name]==6 then
modeRanks[name]=0
end end
S=nil else
modeRanks[name]=6
end
end
end
R,S=nil

View File

@@ -82,5 +82,5 @@ return{
{name="infinite_dig", x=-1000, y=-600, size=35,shape=1,icon="infinite_dig",unlock={}}, {name="infinite_dig", x=-1000, y=-600, size=35,shape=1,icon="infinite_dig",unlock={}},
{name="custom_clear", x=200, y=-350, size=45,shape=3,icon="custom", unlock={}}, {name="custom_clear", x=200, y=-350, size=45,shape=3,icon="custom", unlock={}},
{name="custom_puzzle", x=200, y=-200, size=45,shape=3,icon="puzzle", unlock={}}, {name="custom_puzzle", x=200, y=-200, size=45,shape=3,icon="puzzle", unlock={}},
{name="sprintPenta", x=-200, y=-200, size=45,shape=3,icon="sprint", unlock={}}, {name="sprintPenta", x=-200, y=-200, size=50,shape=2,icon="sprint", unlock={}},
} }

View File

@@ -27,10 +27,9 @@ Future outlook:
New modes: New modes:
PUYO PUYO
game tutorial game tutorial
finesse tutorial finesse tutorial/exam(3next, 1pt/mino, drop to score)
game Abbr. test game Abbr. test
backfire backfire
finesse exam(3next, 1pt/mino, drop to score)
round-based dig round-based dig
bigbang bigbang
rhythm rhythm
@@ -40,17 +39,14 @@ Future outlook:
task survival task survival
dig practice dig practice
dig zen dig zen
sprint_symmetry symmetry
hidden: sound only hidden: sound only
reverb (often repeat a piece many times) reverb (often repeat a piece many times)
KPP-locked KPP-locked
parkour parkour
Other: Other:
mod system with: mod system with:
block hidden block/field/up/low hidden
field hidden
up-hidden
low-hidden
next[1] hidden next[1] hidden
field flip(LR/UD) field flip(LR/UD)
no fail(∞ lives) no fail(∞ lives)
@@ -59,33 +55,51 @@ Future outlook:
2048 (with next (with deadly mode)) 2048 (with next (with deadly mode))
mine sweeper mine sweeper
tank battle tank battle
简易防沉迷系统(GMT+8限定)
new AI: task-Z new AI: task-Z
full-key control
drag control for mobile device
cool backgrounds cool backgrounds
'Encrypt'(compile to byte code) 'Encrypt'(compile to byte code)
better drop FX better drop FX
60+ fps supporting 60+ fps supporting
in-game document in-game document
game recording game recording
full-key control
drag control for mobile device
new widgets (joystick etc.) new widgets (joystick etc.)
splashing block splashing block
more graphic FXs & 3D features & animations more graphic FXs & 3D features & animations
network game network game
0.9.3: Details Update 0.10.0: 回放更新 Replay Update
新内容: 新内容:
中文更新说明 更新后跳转到此页面
单局回放,要是有cc会出问题,以后再说
支持复制场地+序列
修改连击攻击力算法,调整mini的属性
自定义序列显示方块颜色
自定义序列菜单ui调整
新控件:简化按钮 (用于自定义序列等菜单)
改动: 改动:
Chinese update log
控件动效优化
极简错误音效调整
模电吉备历史性同框 模电吉备历史性同框
暂停界面数据显示格式微 spin消3的分数下
暂停界面数据显示格式和布局微调
初心/上级20G评级要求改动,清除高分榜
100L/400L评级要求改动
这个页面更易读了
代码: 代码:
性能优化,部分老设备运行更流畅 帧率控制代码调整,运行可能更流畅(反正不会比以前卡)
修改部分玩家方法名
统一注释位置,所有注释开头大写
修复: 修复:
一些文本小错误 一些文本小错误
自定义序列相关的闪退 自定义序列相关的闪退
按键跟踪设置界面闪退
pc训练方块ghost浮空 pc训练方块ghost浮空
i平放顶层消1的奇怪行为
玩家掉出屏幕过程中绘制场地时剪裁不正确
限时打分的时间条和hold重合
0.9.2: Global Update 0.9.2: Global Update
new: new:
@@ -157,7 +171,7 @@ Future outlook:
new hidden BGM: Hay what kind of feeling new hidden BGM: Hay what kind of feeling
now can reset all data (hidden) now can reset all data (hidden)
changed: changed:
add a stat "offset", used to avoid strange radar chart in Attack Mode, show in total stat page only show "offset" in stat (only in total stat page)
6 more X-spin-wallkick added 6 more X-spin-wallkick added
fixed: fixed:
speed dial do not moving speed dial do not moving
@@ -193,7 +207,7 @@ Future outlook:
fixed: fixed:
error in modes with ai (rotate O in its rotation system, cause some strange error) error in modes with ai (rotate O in its rotation system, cause some strange error)
0.8.19/20: Fantastic Global Update II 0.8.19/20: Fantastic Global Update+
new: new:
new clearing FX new clearing FX
pentomino with new rotation system (testing) pentomino with new rotation system (testing)
@@ -222,7 +236,7 @@ Future outlook:
fixed: fixed:
impossible to get SS in attacker mode impossible to get SS in attacker mode
0.8.18: Details Update II 0.8.18: Details Update+
new: new:
adjustable virtualkey SFX & VIB adjustable virtualkey SFX & VIB
changed: changed:
@@ -294,7 +308,7 @@ Future outlook:
4 devMode now 4 devMode now
fixed: fixed:
error when set to max 0 next error when set to max 0 next
AI sequence initializing error when face setting changed I sequence initializing error when face setting changed
DAS error DAS error
0.8.15: Bug Fixed 0.8.15: Bug Fixed
@@ -305,11 +319,11 @@ Future outlook:
changed: changed:
animation time of lock effect little changed animation time of lock effect little changed
bone block of ball-skin changed bone block of ball-skin changed
AI change target more slowly I change target more slowly
Author.dignity-=1 uthor.dignity-=1
fixed: fixed:
180° I spin kicklist error 180° I spin kicklist error
AI will kill itself when spawn dir. of mino changed I will kill itself when spawn dir. of mino changed
error when reach 400 in 20G(Lunatic) error when reach 400 in 20G(Lunatic)
error block color in modes with starting field error block color in modes with starting field
@@ -408,7 +422,7 @@ Future outlook:
0.8.8: Space BG Update 0.8.8: Space BG Update
new: new:
background now is cool space with "planets" and "stars", instead of boring falling tetrominos background now is cool space with "planets" and "stars", instead of falling tetrominos
no black side in any screen size no black side in any screen size
adjustable waiting time before start adjustable waiting time before start
ajustable maxnext count ajustable maxnext count
@@ -463,7 +477,7 @@ Future outlook:
fixed: fixed:
many bugs many bugs
0.8.4: Miya Update II 0.8.4: Miya Update+
changed: changed:
vocal more natural(important, may cause new bug) vocal more natural(important, may cause new bug)
a bit better performence on mobile devices a bit better performence on mobile devices
@@ -557,7 +571,7 @@ Future outlook:
ALMOST reconstructed WHOLE PLAYER SYSTEM, NEED TEST ALMOST reconstructed WHOLE PLAYER SYSTEM, NEED TEST
many bug fixed many bug fixed
0.7.23/24: Feast of Hearing 0.7.23/24: Sound Update
all bgm remade all bgm remade
more settings with brand new GUI! more settings with brand new GUI!
new mode: Master-Final new mode: Master-Final
@@ -666,10 +680,10 @@ Future outlook:
code reconstructed code reconstructed
debug key change to F8 debug key change to F8
fixed: fixed:
error when seq=his error when sequence mode is his
error game area size of custom opponent error game area size of custom opponent
0.7.12: Total Update 0.7.12: Global Update
AI learned to switch attack mode AI learned to switch attack mode
seperate master mode from marathon mode seperate master mode from marathon mode
master mode more interesting master mode more interesting
@@ -683,7 +697,7 @@ Future outlook:
some Chinese translaton editted some Chinese translaton editted
[reconstruct event system] [reconstruct event system]
0.7.11: Total Update 0.7.11: Global Update
some Chinese translaton editted some Chinese translaton editted
add bone block in 2 hardest marathon(new block-fresh system) add bone block in 2 hardest marathon(new block-fresh system)
play sound when get badges in royale mode play sound when get badges in royale mode
@@ -740,7 +754,7 @@ Future outlook:
fix all attacking bug of royale mode fix all attacking bug of royale mode
change sequence of TSD-only mode to bag7 change sequence of TSD-only mode to bag7
0.7.5: Total Update 0.7.5: Global Update
reduce difficuly of PC training mode, and add more patterns reduce difficuly of PC training mode, and add more patterns
reduce difficuly of death mode reduce difficuly of death mode
add PC challenge mode add PC challenge mode
@@ -776,8 +790,8 @@ Future outlook:
]=] ]=]
local find,sub=string.find,string.sub local find,sub=string.find,string.sub
local L,c={},0--list, \n counter, local L,c={},0--List, \n counter,
local p,p1=1,0--cut start/end pos local p,p1=1,0--Cut start/end pos
local EOF=#S local EOF=#S
while true do while true do