Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1d92a166b | ||
|
|
99b55b72e0 | ||
|
|
08883b952f | ||
|
|
76fab86692 | ||
|
|
725eb4e26f | ||
|
|
486a64cca3 | ||
|
|
8e5f6f8b7c | ||
|
|
c0149d5830 | ||
|
|
28d5136e95 | ||
|
|
2768fa748b | ||
|
|
00026bc46b | ||
|
|
7d63386410 |
BIN
BGM/far.ogg
Normal file
BIN
BGM/hay what kind of feeling.ogg
Normal file
BIN
SFX/virtualKey.ogg
Normal file
BIN
SFX/welcome.ogg
BIN
SFX/welcome_sfx.ogg
Normal file
BIN
VOICE/welcome_voc.ogg
Normal file
1068
callback.lua
Normal file
14
conf.lua
@@ -1,11 +1,11 @@
|
||||
gameVersion="Alpha V0.8.15"
|
||||
gameVersion="Alpha V0.8.24"
|
||||
function love.conf(t)
|
||||
t.identity="Techmino"--SaveDir name
|
||||
t.identity="Techmino"--folder name
|
||||
t.version="11.1"
|
||||
t.console=false
|
||||
t.gammacorrect=false
|
||||
t.appendidentity=true--Search files in source before save directory
|
||||
t.accelerometerjoystick=false--ios/android加速度计=摇杆
|
||||
t.appendidentity=true--search files in source before save directory
|
||||
t.accelerometerjoystick=false--accelerometer=joystick on ios/android
|
||||
t.audio.mixwithsystem=true
|
||||
|
||||
local W=t.window
|
||||
@@ -17,12 +17,12 @@ function love.conf(t)
|
||||
W.resizable=true
|
||||
W.fullscreentype="desktop"--"exclusive"
|
||||
W.fullscreen=false
|
||||
W.vsync=0--∞fps
|
||||
W.vsync=0--infinite fps
|
||||
W.msaa=false--num of samples to use with multi-sampled antialiasing
|
||||
W.depth=0--bits/samp of depth buffer
|
||||
W.stencil=1--bits/samp of stencil buffer
|
||||
W.display=1--Monitor ID
|
||||
W.highdpi=false--High-dpi mode for the window on a Retina display
|
||||
W.display=1--monitor ID
|
||||
W.highdpi=false--high-dpi mode for the window on a Retina display
|
||||
W.x,W.y=nil
|
||||
|
||||
local M=t.modules
|
||||
|
||||
79
document.txt
@@ -1,14 +1,13 @@
|
||||
(ENG ver. below)
|
||||
游戏方法:
|
||||
系统会提供的一个个四联骨牌("方块",总共7种),玩家需要控制(左右移动和旋转90,180,270度),每填满场地的一行就会将其消除,根据消除方式会给对手攻击(如果有对手的话)
|
||||
活到最后或者完成目标即胜利.
|
||||
|
||||
旋转系统:
|
||||
使用Techmino专属旋转系统
|
||||
细节懒得写(?)
|
||||
使用Techmino专属旋转系统,细节懒得写(
|
||||
|
||||
spin判定:
|
||||
结合了不可移动判定和三角判定,是否为mini也与判定过程数据有关
|
||||
细节也懒得写(?)
|
||||
结合了不可移动判定和三角判定,是否为mini也与判定过程数据有关,细节也懒得写(
|
||||
|
||||
攻击系统:
|
||||
普通消除:
|
||||
@@ -17,10 +16,11 @@ spin判定:
|
||||
spin1/2/3攻击2/4/6,若mini则减半
|
||||
B2B:加1(techrash/spin1/spin2)或2(spin3)攻击
|
||||
B3B:在B2B效果之上消四再加1,spin再加0.5*消行数攻击,二者都+1额外抵挡
|
||||
连击:0,0,1,1,2,2,2,3,3,4,3,2…(后面都是2)
|
||||
堆楼连击:0,0,1,1,2,2,2,3,3,3,4,4,3, 之后都是2
|
||||
挖掘连击:0,0,1,1,2,2,3,3,4,4,4, 之后都是5
|
||||
特殊消除会增加B2B点数,让之后的特殊消除获得B2B(B3B)增益(详细说明见下文)
|
||||
半全消("下方有剩余方块"的全消):伤害+2,额外抵挡+2
|
||||
全消:将上述伤害之和开根号,再+6~10(本局内递增)+2额外抵挡(注:本局消行数>4时会将B2B点数拉满)
|
||||
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):伤害+2,额外抵挡+2
|
||||
全消:将上述伤害之和开根号,再+6~12(本局内递增)+2额外抵挡(注:本局消行数>4时会将B2B点数拉满)
|
||||
根据上述规则计算后,向下取整,攻击打出
|
||||
|
||||
分数系统:
|
||||
@@ -37,7 +37,7 @@ spin判定:
|
||||
back to back(B2B)点数说明:
|
||||
B2B点数的范围在0~1200,在点数>=40时进行特殊消除为B2B,>1000时特殊消除为B3B
|
||||
普通消除-250
|
||||
spin1/2/3:+50/100/180(mini减半)
|
||||
spin1/2/3:+50/100/180(mini变为原来40%)
|
||||
消四:+100
|
||||
空spin:+20,此法得到的点数不能超过1000
|
||||
当点数在1000以上时空放一块-40(不减到低于1000)
|
||||
@@ -48,9 +48,68 @@ back to back(B2B)点数说明:
|
||||
1.随机:每次攻击后10%随机挑选一个玩家锁定
|
||||
2.最多徽章:攻击后或者锁定玩家死亡时锁定徽章最多的玩家
|
||||
3.最高:攻击后或者锁定玩家死亡时锁定场地最高的玩家(每秒刷新)
|
||||
4.反击:攻击所有锁定自己的玩家(攻击AOE),若未被任何人锁定则伏击随机玩家
|
||||
4.反击:攻击所有锁定自己的玩家(攻击AOE),若未被任何人锁定则攻击随机玩家(不锁定)
|
||||
坚持到最后的玩家就是胜利者.
|
||||
|
||||
自定义模式说明:
|
||||
玩家可以自由调整大多数参数(不包括上述各种游戏模式的特殊效果),也可以画一个场地去消除或者是作为提示模板来进行拼图模式.
|
||||
在拼图模式下,按功能键切换是否展示提示.其中打"X"的格子不允许有方块,空的格子可以是任何状态,普通的七种彩色方块必须颜色对应,垃圾行方块的为止只要有方块就可以,但是不能是空气,玩家拼出自己画的图后就会判定胜利.
|
||||
在拼图模式下,按功能键切换是否展示提示.其中打"X"的格子不允许有方块,空的格子可以是任何状态,普通的七种彩色方块必须颜色对应,垃圾行方块的为止只要有方块就可以,但是不能是空气,玩家拼出自己画的图后就会判定胜利.
|
||||
|
||||
Gameplay:
|
||||
System will offer a series of tetrominoes ("Pieces". There are 7 types), and the player needs to control [them] (move left and right, rotate 90, 180 or 270 degrees), filling a row on the play field will clear it, attack will be sent depending on the type of the line clear (if there is an opponent)
|
||||
Survive till the last or complete the level's goal to win.
|
||||
|
||||
Rotation system:
|
||||
Uses Techmino's custom rotation system. Too lazy to write the details
|
||||
|
||||
Spin detection:
|
||||
Combines immobile and 3-corner detection, and whether a spin is mini also depends on the data used for detection. Also too lazy to write the details
|
||||
|
||||
Attack system:
|
||||
Regular line clears:
|
||||
Single/Double/Triple/Techrash sends 0.25/1.25/2.25/4
|
||||
Special line clears:
|
||||
Spin Single/Double/Triple sends 2/4/6, half if Mini
|
||||
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
|
||||
Wide Combo: 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 3, then 2 afterwards
|
||||
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)
|
||||
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)
|
||||
After calculating all above, the damage value will be rounded down then sent
|
||||
|
||||
Score system:
|
||||
The more impressive you play, the more score you get
|
||||
|
||||
Attack delay:
|
||||
Attack from Doubles/Triples take effect the faster, then Techrash, Spins send rather slow attack, and high combos will send the slowest
|
||||
B2B or B2B2B, while they increase lines sent, they also increase the attack delay. Minis will greatly increase delay.
|
||||
|
||||
Countering:
|
||||
When you send attack, if there is garbage in queue, extra blocking will be used first, then attack, countering the earliest attack at a 1:1 ratio.
|
||||
Unused extra blocking will be discarded, then remaining attack will be sent to your opponent.
|
||||
|
||||
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.
|
||||
A regular line clear -250
|
||||
Spin Single/Double/Triple +50/100/180 (x40% if Mini)
|
||||
Techrash +100
|
||||
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)
|
||||
|
||||
Battle Royale modes:
|
||||
Many players play within one game (all opponents are bots, not real players). As players get eliminated, blocks fall faster, and garbage take effect faster, as well as rise faster. KO-ing another player grants you one badge plus all badge that player has, increasing your attack power.
|
||||
Players can select one of 4 attack modes:
|
||||
1. Random: Every time you attack, 10% chance to lock onto a random player.
|
||||
2. Badges: After you attack or when your target dies, lock onto the player with the most badges.
|
||||
3. KOs: After you attack or when your target dies, lock onto the player with the highest field. (This refreshes every second)
|
||||
4. Counter: attack all players locking onto yourself. Your attack will be sent to all of them. If you are not targetted, you attack a random player (not locking).
|
||||
The last survivor wins.
|
||||
|
||||
Custom mode:
|
||||
You can freely adjust most parameters (not including special effects of other game modes), and you can also draw a field to clear or make a template to build.
|
||||
In build (puzzle) mode, you can toggle template display with Function key. Cells with a X cannot have blocks; empty cells can be in any state; regular colored cells have to be made of the corresponding block; garbage-colored cells can be any block but not air. Once you make the shape, you will win.
|
||||
|
||||
附录Appendix:
|
||||
ZXC's cool O-spin map:XY0BCgAwCAIR7v9vHtUSt8AS0xKqgpnNGyXkrmFNePf6qi3BbQPrHT2Owxe6D66NeKi86dwB
|
||||
BIN
image/BG/bg1.png
|
Before Width: | Height: | Size: 1.7 KiB |
BIN
image/BG/bg2.png
|
Before Width: | Height: | Size: 227 B |
BIN
image/mess/electric.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 28 KiB |
BIN
image/mess/pay1.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
image/mess/pay2.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 3.6 KiB |
BIN
image/skin/brick(notypey).png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
image/skin/classic(_).png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
image/skin/paper(mrz).png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
330
language/chi.lua
@@ -1,330 +0,0 @@
|
||||
local BK="返回"
|
||||
local actName={
|
||||
"左移:","右移:",
|
||||
"顺时针旋转:","逆时针旋转:","180°旋转:",
|
||||
"硬降:","软降:",
|
||||
"暂存:","功能键:",
|
||||
"重新开始:",
|
||||
"左瞬移:","右瞬移:","软降到底:","软降一格:","软降四格:","软降十格:",
|
||||
"落在最左:","落在最右:","列在最左:","列在最右:",
|
||||
}
|
||||
return{
|
||||
lang="中文",
|
||||
atkModeName={"随机","徽章","击杀","反击"},
|
||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||
cmb={nil,nil,"3 Combo","4 Combo","5 Combo","6 Combo","7 Combo","8 Combo","9 Combo","10 Combo!","11 Combo!","12 Combo!","13 Combo!","14 Combo!","15 Combo!","16 Combo!","17 Combo!","18 Combo!","19 Combo!","MEGACMB"},
|
||||
techrash="Techrash",
|
||||
techrashB2B="B2B Techrash",
|
||||
techrashB3B="B2B2B Techrash",
|
||||
block={"Z","S","L","J","T","O","I"},
|
||||
clear={" single"," double"," triple"},
|
||||
spin={"Z-spin","S-spin","L-spin","J-spin","T-spin","O-spin","I-spin"},
|
||||
b2b="B2B ",b3b="B2B2B ",
|
||||
mini="Mini",
|
||||
PC="Perfect Clear",
|
||||
C="Clear",
|
||||
hold="暂存",next="下一个",
|
||||
|
||||
stage=function(n)return"关卡 "..n end,
|
||||
great="Great!",
|
||||
awesome="Awesome.",
|
||||
continue="Continue.",
|
||||
maxspeed="最高速度",
|
||||
speedup="速度加快",
|
||||
|
||||
win="胜利",
|
||||
finish="结束",
|
||||
lose="失败",
|
||||
pause="暂停",
|
||||
pauseCount="暂停统计",
|
||||
|
||||
custom="自定义游戏",
|
||||
customOption={
|
||||
drop="下落速度:",
|
||||
lock="锁定延迟:",
|
||||
wait="放块延迟:",
|
||||
fall="消行延迟:",
|
||||
next="序列数量:",
|
||||
hold="暂存:",
|
||||
sequence="序列:",
|
||||
visible="可见性:",
|
||||
target="目标行数:",
|
||||
freshLimit="锁延刷新次数:",
|
||||
opponent="对手速度等级:",
|
||||
bg="背景:",
|
||||
bgm="背景音乐:",
|
||||
},
|
||||
customVal={
|
||||
drop={"0G","1/180G","1/60G","1/40G","1/30G","1/25G","1/20G","1/18G","1/16G","1/14G","1/12G","1/10G","1/9G","1/8G","1/7G","1/6G","1/5G","1/4G","1/3G","1/2G","1G","2G","4G","8G","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={"无电脑","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||
},
|
||||
softdropdas="软降DAS:",
|
||||
softdroparr="软降ARR:",
|
||||
snapLevelName={"无吸附","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"},
|
||||
setting_game="游戏设置",
|
||||
setting_graphic="画面设置",
|
||||
setting_sound="声音设置",
|
||||
setting_control="控制设置",
|
||||
setting_skin="外观设置",
|
||||
preview="预览",
|
||||
keyboard="键盘",joystick="手柄",
|
||||
ctrlSetHelp="方向键选择/翻页,回车修改,esc返回",
|
||||
musicRoom="音乐室",
|
||||
nowPlaying="正在播放:",
|
||||
|
||||
settingSaved="设置已保存",
|
||||
settingSavingError="设置保存失败:",
|
||||
keyMapSaved="键位设置已保存",
|
||||
keyMapSavingError="键位保存失败:",
|
||||
VKSaved="虚拟按键设置已保存",
|
||||
VKSavingError="虚拟按键保存失败:",
|
||||
statSavingError="统计保存失败:",
|
||||
unlockSavingError="解锁保存失败:",
|
||||
recSavingError="纪录保存失败:",
|
||||
|
||||
needRestart="重新开始以生效",
|
||||
copySuccess="已复制到剪切板",
|
||||
dataCorrupted="数据损坏",
|
||||
VKTchW="触摸点权重",
|
||||
VKOrgW="原始点权重",
|
||||
VKCurW="当前点权重",
|
||||
noScore="暂无成绩",
|
||||
highScore="最佳成绩",
|
||||
newRecord="打破纪录",
|
||||
errorMsg="Techmino遇到了问题,需要重新启动.\n我们已收集了一些错误信息,你可以向作者进行反馈.",
|
||||
|
||||
actName=actName,
|
||||
|
||||
load={[0]="加载完成","加载语音ing","加载音乐ing","加载音效ing","加载模式ing","加载乱七八糟的东西ing"},
|
||||
pauseStat={
|
||||
"时间:",
|
||||
"按键/旋转/暂存:",
|
||||
"使用方块:",
|
||||
"消行数:",
|
||||
"攻击数:",
|
||||
"发送数:",
|
||||
"接收数:",
|
||||
"直接消除数:",
|
||||
"旋转消除数:",
|
||||
"满贯数:",
|
||||
"全清数:",
|
||||
"效率:",
|
||||
"多余操作方块:",
|
||||
"最简操作率:",
|
||||
},
|
||||
stat={
|
||||
"游戏运行次数:",
|
||||
"游戏局数:",
|
||||
"游戏时间:",
|
||||
"按键数:",
|
||||
"旋转数:",
|
||||
"暂存数:",
|
||||
"方块使用:",
|
||||
"消行数:",
|
||||
"攻击(发送)数:",
|
||||
"接收数:",
|
||||
"直接消除数:",
|
||||
"旋转消除数:",
|
||||
"满贯数:",
|
||||
"全清数:",
|
||||
"效率:",
|
||||
"多余操作:",
|
||||
},
|
||||
help={
|
||||
"好像也没啥好帮助的吧?就当是关于了",
|
||||
"这只是一个普通的方块游戏,请勿称此游戏为某某某方块",
|
||||
"从TO/C2/KOS/TGM3/JS等方块获得过灵感",
|
||||
"",
|
||||
"使用LOVE2D引擎",
|
||||
"作者:MrZ 邮箱:1046101471@qq.com",
|
||||
"程序:MrZ 美术:MrZ 音乐:MrZ 音效:MrZ 语音:Miya",
|
||||
"特别感谢:Flyz,Farter,196,Teatube,T830,[所有内测人员]和 你!",
|
||||
"",
|
||||
"错误或者建议请附带截图发送到内测群或者作者邮箱~",
|
||||
"仅通过唯一内测群1057456078进行免费下载/更新",
|
||||
"其他渠道获得游戏皆有被修改/植入病毒的风险,程序只申请了震动&联网权限!",
|
||||
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
|
||||
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
||||
},
|
||||
used=[[
|
||||
使用工具:
|
||||
Beepbox
|
||||
GFIE
|
||||
Goldwave
|
||||
使用库:
|
||||
Cold_Clear[MinusKelvin]
|
||||
simple-love-lights[dylhunn]
|
||||
]],
|
||||
support="支持作者",
|
||||
group="官方QQ群",
|
||||
WidgetText={
|
||||
main={
|
||||
play="开始",
|
||||
setting="设置",
|
||||
music="音乐室",
|
||||
stat="统计信息",
|
||||
help="帮助",
|
||||
qplay="快速开始",
|
||||
lang="言/A",
|
||||
quit="退出",
|
||||
},
|
||||
mode={
|
||||
draw="画图(Q)",
|
||||
custom="参数(E)",
|
||||
start="开始",
|
||||
back=BK,
|
||||
},
|
||||
music={
|
||||
bgm="BGM",
|
||||
up="↑",
|
||||
play="播放",
|
||||
down="↓",
|
||||
back=BK,
|
||||
},
|
||||
custom={
|
||||
up="↑",
|
||||
down="↓",
|
||||
left="←",
|
||||
right="→",
|
||||
set1="40行(1)",
|
||||
set2="1v1(2)",
|
||||
set3="无尽(3)",
|
||||
set4="隐形(4)",
|
||||
set5="极限(5)",
|
||||
back=BK,
|
||||
},
|
||||
draw={
|
||||
any="不定",
|
||||
space="×",
|
||||
clear="清除",
|
||||
demo="不显示×",
|
||||
copy="复制",
|
||||
paste="粘贴",
|
||||
back=BK,
|
||||
},
|
||||
play={
|
||||
pause="暂停",
|
||||
},
|
||||
pause={
|
||||
resume= "继续(空格)",
|
||||
restart="重新开始(R)",
|
||||
setting="设置(S)",
|
||||
quit= "退出(esc)",
|
||||
},
|
||||
setting_game={
|
||||
graphic="←画面设置",
|
||||
sound="声音设置→",
|
||||
ctrl="控制设置",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
autoPause="自动暂停",
|
||||
layout="外观",
|
||||
key="键位设置",
|
||||
touch="触屏设置",
|
||||
quickR="快速重新开始",
|
||||
autoPause="自动暂停",
|
||||
swap="组合键切换攻击模式",
|
||||
fine="极简操作提示音",
|
||||
back=BK,
|
||||
},
|
||||
setting_graphic={
|
||||
sound="←声音设置",
|
||||
game="游戏设置→",
|
||||
ghost="阴影",
|
||||
grid="网格",
|
||||
center="旋转中心",
|
||||
bg="背景",
|
||||
bgspace="星空背景",
|
||||
smooth="平滑下落",
|
||||
lockFX="锁定特效等级",
|
||||
dropFX="下落特效等级",
|
||||
shakeFX="晃动特效等级",
|
||||
atkFX="攻击特效等级",
|
||||
text="消行文本",
|
||||
fullscreen="全屏",
|
||||
frame="绘制帧率",
|
||||
back=BK,
|
||||
},
|
||||
setting_sound={
|
||||
game="←游戏设置",
|
||||
graphic="画面设置→",
|
||||
sfx="音效",
|
||||
bgm="音乐",
|
||||
vib="震动",
|
||||
voc="语音",
|
||||
stereo="立体声",
|
||||
back=BK,
|
||||
},
|
||||
setting_control={
|
||||
das="DAS",arr="ARR",
|
||||
sddas="软降DAS",sdarr="软降ARR",
|
||||
reset="重置",
|
||||
back=BK,
|
||||
},
|
||||
setting_key={
|
||||
back=BK,
|
||||
},
|
||||
setting_skin={
|
||||
prev="←",next="→",
|
||||
prev1="↑",next1="↓",spin1="R",
|
||||
prev2="↑",next2="↓",spin2="R",
|
||||
prev3="↑",next3="↓",spin3="R",
|
||||
prev4="↑",next4="↓",spin4="R",
|
||||
prev5="↑",next5="↓",spin5="R",
|
||||
prev6="↑",next6="↓",spin6="R",
|
||||
prev7="↑",next7="↓",spin7="R",
|
||||
skinR="重置配色",
|
||||
faceR="重置方向",
|
||||
back=BK,
|
||||
},
|
||||
setting_touch={
|
||||
default="默认组合",
|
||||
snap=function()return text.snapLevelName[sceneTemp.snap]end,
|
||||
option="选项",
|
||||
back=BK,
|
||||
size="大小",
|
||||
},
|
||||
setting_touchSwitch={
|
||||
b1= actName[1],b2=actName[2],b3=actName[3],b4=actName[4],
|
||||
b5= actName[5],b6=actName[6],b7=actName[7],b8=actName[8],
|
||||
b9= actName[9],b10=actName[10],b11=actName[11],b12=actName[12],
|
||||
b13=actName[13],b14=actName[14],b15=actName[15],b16=actName[16],
|
||||
b17=actName[17],b18=actName[18],b19=actName[19],b20=actName[20],
|
||||
norm="标准",
|
||||
pro="专业",
|
||||
hide="显示虚拟按键",
|
||||
track="按键自动跟踪",
|
||||
icon="图标",
|
||||
tkset="跟踪设置",
|
||||
alpha="透明度",
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="自动避让",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
his="历史",
|
||||
qq="作者QQ",
|
||||
back=BK,
|
||||
},
|
||||
history={
|
||||
prev="↑",
|
||||
next="↓",
|
||||
back=BK,
|
||||
},
|
||||
stat={
|
||||
path="打开存储目录",
|
||||
back=BK,
|
||||
},
|
||||
},
|
||||
}--文
|
||||
@@ -1,327 +0,0 @@
|
||||
local BK="返回"
|
||||
local actName={
|
||||
"左移:","右移:",
|
||||
"顺时针旋转:","逆时针旋转:","180°旋转:",
|
||||
"硬降:","软降:",
|
||||
"暂存:","功能键:",
|
||||
"重新开始:",
|
||||
"左瞬移:","右瞬移:","软降到底:","软降一格:","软降四格:","软降十格:",
|
||||
"落在最左:","落在最右:","列在最左:","列在最右:",
|
||||
}
|
||||
return{
|
||||
lang="全中文",
|
||||
atkModeName={"随机","徽章","击杀","反击"},
|
||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||
cmb={nil,nil,"3 Combo","4 Combo","5 Combo","6 Combo","7 Combo","8 Combo","9 Combo","10 Combo!","11 Combo!","12 Combo!","13 Combo!","14 Combo!","15 Combo!","16 Combo!","17 Combo!","18 Combo!","19 Combo!","MEGACMB"},
|
||||
techrash="四清",
|
||||
techrashB2B="满贯 四清",
|
||||
techrashB3B="大满贯 四清",
|
||||
block={"Z","S","L","J","T","O","I"},
|
||||
clear={"单清","双清","三清"},
|
||||
spin={"Z型回旋","S型回旋","L型回旋","J型回旋","T型回旋","O型回旋","I型回旋"},
|
||||
b2b="满贯",b3b="大满贯",
|
||||
mini="迷你",
|
||||
PC="场地全清",
|
||||
C="场地半清",
|
||||
hold="暂存",next="下一个",
|
||||
|
||||
stage=function(n)return"关卡 "..n end,
|
||||
great="不错!",
|
||||
awesome="精彩。",
|
||||
continue="继续。",
|
||||
maxspeed="最高速度",
|
||||
speedup="速度加快",
|
||||
|
||||
win="胜利",
|
||||
finish="结束",
|
||||
lose="失败",
|
||||
pause="暂停",
|
||||
pauseCount="暂停统计",
|
||||
|
||||
custom="自定义游戏",
|
||||
customOption={
|
||||
drop="下落速度:",
|
||||
lock="锁定延迟:",
|
||||
wait="放块延迟:",
|
||||
fall="消行延迟:",
|
||||
next="序列数量:",
|
||||
hold="暂存:",
|
||||
sequence="序列:",
|
||||
visible="可见性:",
|
||||
target="目标行数:",
|
||||
freshLimit="锁延刷新次数:",
|
||||
opponent="对手速度等级:",
|
||||
bg="背景:",
|
||||
bgm="背景音乐:",
|
||||
},
|
||||
customVal={
|
||||
drop={"0G","1/180G","1/60G","1/40G","1/30G","1/25G","1/20G","1/18G","1/16G","1/14G","1/12G","1/10G","1/9G","1/8G","1/7G","1/6G","1/5G","1/4G","1/3G","1/2G","1G","2G","4G","8G","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={"无电脑","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||
},
|
||||
snapLevelName={"无吸附","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"},
|
||||
setting_game="游戏设置",
|
||||
setting_graphic="画面设置",
|
||||
setting_sound="声音设置",
|
||||
setting_control="控制设置",
|
||||
setting_skin="外观设置",
|
||||
preview="预览",
|
||||
keyboard="键盘",joystick="手柄",
|
||||
ctrlSetHelp="方向键选择/翻页,回车修改,esc返回",
|
||||
musicRoom="音乐室",
|
||||
nowPlaying="正在播放:",
|
||||
|
||||
settingSaved="设置已保存",
|
||||
settingSavingError="设置保存失败:",
|
||||
keyMapSaved="键位设置已保存",
|
||||
keyMapSavingError="键位保存失败:",
|
||||
VKSaved="虚拟按键设置已保存",
|
||||
VKSavingError="虚拟按键保存失败:",
|
||||
statSavingError="统计保存失败:",
|
||||
unlockSavingError="解锁保存失败:",
|
||||
recSavingError="纪录保存失败:",
|
||||
|
||||
needRestart="重新开始以生效",
|
||||
copySuccess="已复制到剪切板",
|
||||
dataCorrupted="数据损坏",
|
||||
VKTchW="触摸点权重",
|
||||
VKOrgW="原始点权重",
|
||||
VKCurW="当前点权重",
|
||||
noScore="暂无成绩",
|
||||
highScore="最佳成绩",
|
||||
newRecord="打破纪录",
|
||||
errorMsg="Techmino遇到了问题,需要重新启动.\n我们已收集了一些错误信息,你可以向作者进行反馈.",
|
||||
|
||||
actName=actName,
|
||||
|
||||
load={[0]="加载完成","加载语音ing","加载音乐ing","加载音效ing","加载模式ing","加载乱七八糟的东西ing"},
|
||||
pauseStat={
|
||||
"时间:",
|
||||
"按键/旋转/暂存:",
|
||||
"使用方块:",
|
||||
"消行数:",
|
||||
"攻击数:",
|
||||
"发送数:",
|
||||
"接收数:",
|
||||
"直接消除数:",
|
||||
"旋转消除数:",
|
||||
"满贯数:",
|
||||
"全清数:",
|
||||
"效率:",
|
||||
"多余操作方块:",
|
||||
"最简操作率:",
|
||||
},
|
||||
stat={
|
||||
"游戏运行次数:",
|
||||
"游戏局数:",
|
||||
"游戏时间:",
|
||||
"按键数:",
|
||||
"旋转数:",
|
||||
"暂存数:",
|
||||
"方块使用:",
|
||||
"消行数:",
|
||||
"攻击(发送)数:",
|
||||
"接收数:",
|
||||
"直接消除数:",
|
||||
"旋转消除数:",
|
||||
"满贯数:",
|
||||
"全清数:",
|
||||
"效率:",
|
||||
"多余操作:",
|
||||
},
|
||||
help={
|
||||
"好像也没啥好帮助的吧?就当是关于了",
|
||||
"这只是一个普通的方块游戏,请勿称此游戏为某某某方块",
|
||||
"从TO/C2/KOS/TGM3/JS等方块获得过灵感",
|
||||
"",
|
||||
"使用LOVE2D引擎",
|
||||
"作者:MrZ 邮箱:1046101471@qq.com",
|
||||
"程序:MrZ 美术:MrZ 音乐:MrZ 音效:MrZ 语音:Miya",
|
||||
"特别感谢:Flyz,Farter,196,Teatube,T830,[所有内测人员]和 你!",
|
||||
"",
|
||||
"错误或者建议请附带截图发送到内测群或者作者邮箱~",
|
||||
"仅通过唯一内测群1057456078进行免费下载/更新",
|
||||
"其他渠道获得游戏皆有被修改/植入病毒的风险,程序只申请了震动&联网权限!",
|
||||
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
|
||||
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
|
||||
},
|
||||
used=[[
|
||||
使用工具:
|
||||
Beepbox
|
||||
GFIE
|
||||
Goldwave
|
||||
使用库:
|
||||
Cold_Clear[MinusKelvin]
|
||||
simple-love-lights[dylhunn]
|
||||
]],
|
||||
support="支持作者",
|
||||
group="官方QQ群",
|
||||
WidgetText={
|
||||
main={
|
||||
play="开始",
|
||||
setting="设置",
|
||||
music="音乐室",
|
||||
stat="统计信息",
|
||||
help="帮助",
|
||||
qplay="快速开始",
|
||||
lang="言/A",
|
||||
quit="退出",
|
||||
},
|
||||
mode={
|
||||
draw="画图(Q)",
|
||||
custom="参数(E)",
|
||||
start="开始",
|
||||
back=BK,
|
||||
},
|
||||
music={
|
||||
bgm="BGM",
|
||||
up="↑",
|
||||
play="播放",
|
||||
down="↓",
|
||||
back=BK,
|
||||
},
|
||||
custom={
|
||||
up="↑",
|
||||
down="↓",
|
||||
left="←",
|
||||
right="→",
|
||||
set1="40行(1)",
|
||||
set2="1v1(2)",
|
||||
set3="无尽(3)",
|
||||
set4="隐形(4)",
|
||||
set5="极限(5)",
|
||||
back=BK,
|
||||
},
|
||||
draw={
|
||||
any="不定",
|
||||
space="×",
|
||||
clear="清除",
|
||||
demo="不显示×",
|
||||
copy="复制",
|
||||
paste="粘贴",
|
||||
back=BK,
|
||||
},
|
||||
play={
|
||||
pause="暂停",
|
||||
},
|
||||
pause={
|
||||
resume= "继续(空格)",
|
||||
restart="重新开始(R)",
|
||||
setting="设置(S)",
|
||||
quit= "退出(esc)",
|
||||
},
|
||||
setting_game={
|
||||
graphic="←画面设置",
|
||||
sound="声音设置→",
|
||||
ctrl="控制设置",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
autoPause="自动暂停",
|
||||
layout="外观",
|
||||
key="键位设置",
|
||||
touch="触屏设置",
|
||||
quickR="快速重新开始",
|
||||
swap="组合键切换攻击模式",
|
||||
fine="极简操作提示音",
|
||||
back=BK,
|
||||
},
|
||||
setting_graphic={
|
||||
sound="←声音设置",
|
||||
game="游戏设置→",
|
||||
ghost="阴影",
|
||||
grid="网格",
|
||||
center="旋转中心",
|
||||
bg="背景",
|
||||
bgspace="星空背景",
|
||||
smooth="平滑下落",
|
||||
lockFX="锁定特效等级",
|
||||
dropFX="下落特效等级",
|
||||
shakeFX="晃动特效等级",
|
||||
atkFX="攻击特效等级",
|
||||
text="消行文本",
|
||||
fullscreen="全屏",
|
||||
frame="绘制帧率",
|
||||
back=BK,
|
||||
},
|
||||
setting_sound={
|
||||
game="←游戏设置",
|
||||
graphic="画面设置→",
|
||||
sfx="音效",
|
||||
bgm="音乐",
|
||||
vib="震动",
|
||||
voc="语音",
|
||||
stereo="立体声",
|
||||
back=BK,
|
||||
},
|
||||
setting_control={
|
||||
das="首次移动延迟",arr="移动重复延迟",
|
||||
sddas="首次软降延迟",sdarr="软降重复延迟",
|
||||
reset="重置",
|
||||
back=BK,
|
||||
},
|
||||
setting_key={
|
||||
back=BK,
|
||||
},
|
||||
setting_skin={
|
||||
prev="←",next="→",
|
||||
prev1="↑",next1="↓",spin1="转",
|
||||
prev2="↑",next2="↓",spin2="转",
|
||||
prev3="↑",next3="↓",spin3="转",
|
||||
prev4="↑",next4="↓",spin4="转",
|
||||
prev5="↑",next5="↓",spin5="转",
|
||||
prev6="↑",next6="↓",spin6="转",
|
||||
prev7="↑",next7="↓",spin7="转",
|
||||
skinR="重置配色",
|
||||
faceR="重置方向",
|
||||
back=BK,
|
||||
},
|
||||
setting_touch={
|
||||
default="默认组合",
|
||||
snap=function()return text.snapLevelName[sceneTemp.snap]end,
|
||||
option="选项",
|
||||
back=BK,
|
||||
size="大小",
|
||||
},
|
||||
setting_touchSwitch={
|
||||
b1= actName[1],b2=actName[2],b3=actName[3],b4=actName[4],
|
||||
b5= actName[5],b6=actName[6],b7=actName[7],b8=actName[8],
|
||||
b9= actName[9],b10=actName[10],b11=actName[11],b12=actName[12],
|
||||
b13=actName[13],b14=actName[14],b15=actName[15],b16=actName[16],
|
||||
b17=actName[17],b18=actName[18],b19=actName[19],b20=actName[20],
|
||||
norm="标准",
|
||||
pro="专业",
|
||||
hide="显示虚拟按键",
|
||||
track="按键自动跟踪",
|
||||
icon="图标",
|
||||
tkset="跟踪设置",
|
||||
alpha="透明度",
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="自动避让",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
his="历史",
|
||||
qq="作者QQ",
|
||||
back=BK,
|
||||
},
|
||||
history={
|
||||
prev="↑",
|
||||
next="↓",
|
||||
back=BK,
|
||||
},
|
||||
stat={
|
||||
path="打开存储目录",
|
||||
back=BK,
|
||||
},
|
||||
},
|
||||
}--译
|
||||
326
language/eng.lua
@@ -1,326 +0,0 @@
|
||||
local BK="Back"
|
||||
local actName={
|
||||
"Move Left:","Move Right:",
|
||||
"Rotate Right:","Rotate Left:","Rotate 180°:",
|
||||
"Hard Drop:","Soft Drop:","Hold:","Function:","Restart:",
|
||||
"Instant Left:","Instant Right:","Ins Down:","Down 1:","Down 4:","Down 10:",
|
||||
"Left Drop:","Right Drop:","Left INS:","Right INS:",
|
||||
}
|
||||
return{
|
||||
lang="English",
|
||||
atkModeName={"Random","Badges","K.O.s","Counters"},
|
||||
royale_remain=function(n)return n.." Players Remain"end,
|
||||
cmb={nil,nil,"3 Combo","4 Combo","5 Combo","6 Combo","7 Combo","8 Combo","9 Combo","10 Combo!","11 Combo!","12 Combo!","13 Combo!","14 Combo!","15 Combo!","16 Combo!","17 Combo!","18 Combo!","19 Combo!","MEGACMB"},
|
||||
techrash="Techrash",
|
||||
techrashB2B="B2B Techrash",
|
||||
techrashB3B="B2B2B Techrash",
|
||||
block={"Z","S","L","J","T","O","I"},
|
||||
clear={" single"," double"," triple"},
|
||||
spin={"Z-spin","S-spin","L-spin","J-spin","T-spin","O-spin","I-spin"},
|
||||
b2b="B2B ",b3b="B2B2B ",
|
||||
mini="Mini",
|
||||
PC="Perfect Clear",
|
||||
C="Clear",
|
||||
hold="Hold",next="Next",
|
||||
|
||||
stage=function(n)return"STAGE "..n end,
|
||||
great="Great!",
|
||||
awesome="Awesome.",
|
||||
continue="Continue.",
|
||||
maxspeed="Max speed",
|
||||
speedup="Speed up",
|
||||
|
||||
win="WIN",
|
||||
finish="FINISH",
|
||||
lose="LOSE",
|
||||
pause="PAUSE",
|
||||
pauseCount="Pause Count",
|
||||
|
||||
custom="Custom Game",
|
||||
customOption={
|
||||
drop="Drop speed:",
|
||||
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:",
|
||||
bg="Background:",
|
||||
bgm="BGM:",
|
||||
},
|
||||
customVal={
|
||||
drop={"0G","1/180G","1/60G","1/40G","1/30G","1/25G","1/20G","1/18G","1/16G","1/14G","1/12G","1/10G","1/9G","1/8G","1/7G","1/6G","1/5G","1/4G","1/3G","1/2G","1G","2G","4G","8G","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","FREE"},
|
||||
sequence={"bag7","his4","random"},
|
||||
visible={"normal","time","invisible","sudden"},
|
||||
target={10,20,40,100,200,500,1000,"∞"},
|
||||
freshLimit={0,8,15,"∞"},
|
||||
opponent={"No CPU","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||
},
|
||||
snapLevelName={"Free pos","Snap-10","Snap-20","Snap-40","Snap-60","Snap-80"},
|
||||
setting_game="Game setting",
|
||||
setting_graphic="Graphic setting",
|
||||
setting_sound="Sound setting",
|
||||
setting_control="Control Setting",
|
||||
setting_skin="Layout Setting",
|
||||
preview="Preview",
|
||||
keyboard="Keyboard",joystick="Joystick",
|
||||
ctrlSetHelp="Arrowkey to select/change slot,Enter to change,Esc back",
|
||||
musicRoom="Music Room",
|
||||
nowPlaying="Now Playing:",
|
||||
|
||||
settingSaved="Setting Saved",
|
||||
settingSavingError="Failed to save setting:",
|
||||
keyMapSaved="Key setting saved",
|
||||
keyMapSavingError="Failed to save key setting:",
|
||||
VKSaved="virtual key saved",
|
||||
VKSavingError="Failed to save virtual key:",
|
||||
statSavingError="Failed to save stat:",
|
||||
unlockSavingError="Failed to save unlock:",
|
||||
recSavingError="Failed to save record:",
|
||||
|
||||
needRestart="Effective after restart",
|
||||
copySuccess="Copy Success",
|
||||
dataCorrupted="Data Corrupted",
|
||||
VKTchW="Touch weight",
|
||||
VKOrgW="Origion weight",
|
||||
VKCurW="CurPos weight",
|
||||
noScore="No Score Yet",
|
||||
highScore="Highscore",
|
||||
newRecord="New Rocord",
|
||||
errorMsg="Techmino ran into a problem and needs to restart.\nWe collected some error info,and you can send them to author.",
|
||||
|
||||
actName=actName,
|
||||
|
||||
load={[0]="Finished","Loading VOICE","Loading BGM","Loading SFX","Loading modes","Loading other things"},
|
||||
pauseStat={
|
||||
"Time:",
|
||||
"Key/Rot./Hold:",
|
||||
"Block used:",
|
||||
"Lines:",
|
||||
"Attack:",
|
||||
"Send:",
|
||||
"Receive:",
|
||||
"Clear:",
|
||||
"Spin:",
|
||||
"B2B:",
|
||||
"PC:",
|
||||
"Efficiency:",
|
||||
"Finesse err:",
|
||||
"Finesse rate:",
|
||||
},
|
||||
stat={
|
||||
"Games run:",
|
||||
"Games played:",
|
||||
"Game time:",
|
||||
"Key pressed:",
|
||||
"Rotate:",
|
||||
"Hold:",
|
||||
"Block used:",
|
||||
"Lines cleared:",
|
||||
"Attack(Sent):",
|
||||
"Receive:",
|
||||
"Clear:",
|
||||
"Spin:",
|
||||
"B2B:",
|
||||
"PC:",
|
||||
"Efficiency:",
|
||||
"Finesse error:",
|
||||
},
|
||||
help={
|
||||
"I don't think you need \"help\".",
|
||||
"THIS IS ONLY A BLOCK GAME,not T****s",
|
||||
"But just play like playing TO/C2/KOS/TGM3",
|
||||
"",
|
||||
"Powered by LOVE2D",
|
||||
"Author:MrZ E-mail:1046101471@qq.com",
|
||||
"Program:MrZ Art:MrZ Music:MrZ SFX:MrZ VOICE:Miya",
|
||||
"Special thanks:Flyz,Farter,196,Teatube,T830,[all test staff] and YOU!",
|
||||
"",
|
||||
"Any bugs/suggestions to my E-mail.(may with screenshot)",
|
||||
"Only released in test group for FREE",
|
||||
"Game downloaded from other way may implanted with virous",
|
||||
"Only network/vibrating permission applied",
|
||||
"Author is not responsible for any loss by eddited game",
|
||||
},
|
||||
used=[[
|
||||
Tool used:
|
||||
Beepbox
|
||||
GFIE
|
||||
Goldwave
|
||||
Lib used:
|
||||
Cold_Clear[MinusKelvin]
|
||||
simple-love-lights[dylhunn]
|
||||
]],
|
||||
support="Support Author",
|
||||
group="Official QQ Group",
|
||||
WidgetText={
|
||||
main={
|
||||
play="Play",
|
||||
setting="Settings",
|
||||
music="Music room",
|
||||
stat="Statistics",
|
||||
help="Help",
|
||||
qplay="qPlay",
|
||||
lang="言/A",
|
||||
quit="Quit",
|
||||
},
|
||||
mode={
|
||||
draw="Draw(Q)",
|
||||
custom="Setting(E)",
|
||||
start="Start",
|
||||
back=BK,
|
||||
},
|
||||
music={
|
||||
bgm="BGM",
|
||||
up="↑",
|
||||
play="Play",
|
||||
down="↓",
|
||||
back=BK,
|
||||
},
|
||||
custom={
|
||||
up="↑",
|
||||
down="↓",
|
||||
left="←",
|
||||
right="→",
|
||||
set1="40L(1)",
|
||||
set2="1v1(2)",
|
||||
set3="infinite(3)",
|
||||
set4="blind(4)",
|
||||
set5="master(5)",
|
||||
back=BK,
|
||||
},
|
||||
draw={
|
||||
any="Erase",
|
||||
space="×",
|
||||
clear="Clear",
|
||||
demo="Don't show ×",
|
||||
copy="Copy",
|
||||
paste="Paste",
|
||||
back=BK,
|
||||
},
|
||||
play={
|
||||
pause="Pause",
|
||||
},
|
||||
pause={
|
||||
resume="Resume(space)",
|
||||
restart="Restart(R)",
|
||||
setting="Setting(S)",
|
||||
quit="Quit(esc)",
|
||||
},
|
||||
setting_game={
|
||||
graphic="←Graphic",
|
||||
sound="Sound→",
|
||||
ctrl="Control setting",
|
||||
reTime="Delay before game",
|
||||
maxNext="Max next count",
|
||||
autoPause="Auto pause",
|
||||
layout="Layout",
|
||||
key="Key Setting",
|
||||
touch="Touch Setting",
|
||||
quickR="Quick restart",
|
||||
autoPause="Auto pause",
|
||||
swap="Combo key to change ATK mode",
|
||||
fine="Finesse error SFX",
|
||||
back=BK,
|
||||
},
|
||||
setting_graphic={
|
||||
sound="←Sound",
|
||||
game="Game→",
|
||||
ghost="Ghost",
|
||||
grid="Grid",
|
||||
center="Center",
|
||||
bg="Background",
|
||||
bgspace="BG space",
|
||||
smooth="Smooth drop",
|
||||
lockFX="Lock FX level",
|
||||
dropFX="Drop FX level",
|
||||
shakeFX="Shake FX level",
|
||||
atkFX="ATK FX level",
|
||||
text="Line-clear text",
|
||||
fullscreen="Fullscreen",
|
||||
frame="draw FPS",
|
||||
back=BK,
|
||||
},
|
||||
setting_sound={
|
||||
game="←Game",
|
||||
graphic="Graphic→",
|
||||
sfx="SFX",
|
||||
bgm="BGM",
|
||||
vib="Vibration",
|
||||
voc="Vocal",
|
||||
stereo="Stereo",
|
||||
back=BK,
|
||||
},
|
||||
setting_control={
|
||||
das="DAS",arr="ARR",
|
||||
sddas="softdrop DAS",sdarr="softdrop ARR",
|
||||
reset="Reset",
|
||||
back=BK,
|
||||
},
|
||||
setting_key={
|
||||
back=BK,
|
||||
},
|
||||
setting_skin={
|
||||
prev="←",next="→",
|
||||
prev1="↑",next1="↓",spin1="R",
|
||||
prev2="↑",next2="↓",spin2="R",
|
||||
prev3="↑",next3="↓",spin3="R",
|
||||
prev4="↑",next4="↓",spin4="R",
|
||||
prev5="↑",next5="↓",spin5="R",
|
||||
prev6="↑",next6="↓",spin6="R",
|
||||
prev7="↑",next7="↓",spin7="R",
|
||||
skinR="Reset Color",
|
||||
faceR="Reset Dir.",
|
||||
back=BK,
|
||||
},
|
||||
setting_touch={
|
||||
default="Defaults",
|
||||
snap=function()return text.snapLevelName[sceneTemp.snap]end,
|
||||
option="Option",
|
||||
back=BK,
|
||||
size="Size",
|
||||
},
|
||||
setting_touchSwitch={
|
||||
b1= actName[1],b2=actName[2],b3=actName[3],b4=actName[4],
|
||||
b5= actName[5],b6=actName[6],b7=actName[7],b8=actName[8],
|
||||
b9= actName[9],b10=actName[10],b11=actName[11],b12=actName[12],
|
||||
b13=actName[13],b14=actName[14],b15=actName[15],b16=actName[16],
|
||||
b17=actName[17],b18=actName[18],b19=actName[19],b20=actName[20],
|
||||
norm="Normal",
|
||||
pro="Professioanl",
|
||||
hide="Show Virtual Key",
|
||||
track="Auto track",
|
||||
icon="Icon",
|
||||
tkset="Track setting",
|
||||
alpha="Alpha",
|
||||
back=BK,
|
||||
},
|
||||
setting_trackSetting={
|
||||
VKDodge="Auto Dodge",
|
||||
back=BK,
|
||||
},
|
||||
help={
|
||||
his="History",
|
||||
qq="Author's qq",
|
||||
back=BK,
|
||||
},
|
||||
history={
|
||||
prev="↑",
|
||||
next="↓",
|
||||
back=BK,
|
||||
},
|
||||
stat={
|
||||
path="Open Data Folder",
|
||||
back=BK,
|
||||
},
|
||||
}
|
||||
}
|
||||
27
modes/GM.lua
@@ -12,21 +12,6 @@ local function score(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"宗师",
|
||||
"宗师",
|
||||
"GrandMaster",
|
||||
},
|
||||
level={
|
||||
"GM",
|
||||
"GM",
|
||||
"GM",
|
||||
},
|
||||
info={
|
||||
"成为方块大师",
|
||||
"成为方块大师",
|
||||
"To be Grand Master",
|
||||
},
|
||||
color=color.lightBlue,
|
||||
env={
|
||||
noFly=true,
|
||||
@@ -45,22 +30,22 @@ return{
|
||||
P:win("finish")
|
||||
end
|
||||
end,
|
||||
bg="game3",bgm="shining terminal",
|
||||
bg="aura",bgm="far",
|
||||
},
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
players[1].modeData.event="M7"
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
mDraw(drawableText.line,-81,300)
|
||||
mDraw(drawableText.techrash,-81,420)
|
||||
mDraw(drawableText.grade,-81,170)
|
||||
mText(drawableText.line,-81,300)
|
||||
mText(drawableText.techrash,-81,420)
|
||||
mText(drawableText.grade,-81,170)
|
||||
setFont(55)
|
||||
mStr(P.modeData.event,-81,110)
|
||||
setFont(75)
|
||||
mStr(P.stat.row,-81,220)
|
||||
mStr(P.stat.clear_4,-81,340)
|
||||
mStr(P.stat.clear_S[4],-81,340)
|
||||
end,
|
||||
score=function(P)return{P.modeData.point,P.stat.score}end,
|
||||
scoreDisp=function(D)return sectionName[int(D[1]*.1)+1].." "..D[2]end,
|
||||
|
||||
@@ -1,20 +1,5 @@
|
||||
local int,rnd=math.floor,math.random
|
||||
return{
|
||||
name={
|
||||
"进攻",
|
||||
"进攻",
|
||||
"Attacker",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"进攻练习",
|
||||
"进攻练习",
|
||||
"Attacking better then defending",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=30,lock=60,
|
||||
@@ -22,7 +7,7 @@ return{
|
||||
freshLimit=15,
|
||||
pushSpeed=2,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
if P.atkBuffer.sum==0 then
|
||||
local p=#P.atkBuffer+1
|
||||
local B,D=P.atkBuffer,P.modeData
|
||||
@@ -54,20 +39,26 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(55)
|
||||
mStr(P.modeData.event,-81,200)
|
||||
mStr("24",-81,320)
|
||||
mDraw(drawableText.wave,-81,260)
|
||||
mDraw(drawableText.nextWave,-81,380)
|
||||
mText(drawableText.wave,-81,260)
|
||||
mText(drawableText.nextWave,-81,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
|
||||
getRank=function(P)
|
||||
local W=P.modeData.event
|
||||
return W>100 and 4 or W>=80 and 3 or W>=50 and 2 or W>=20 and 1 or W>=5 and 0
|
||||
return
|
||||
W>=100 and 5 or
|
||||
W>=80 and 4 or
|
||||
W>=60 and 3 or
|
||||
W>=40 and 2 or
|
||||
W>=20 and 1 or
|
||||
W>=5 and 0
|
||||
end,
|
||||
}
|
||||
@@ -1,27 +1,12 @@
|
||||
local int,rnd=math.floor,math.random
|
||||
return{
|
||||
name={
|
||||
"进攻",
|
||||
"进攻",
|
||||
"Attacker",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"进攻练习",
|
||||
"进攻练习",
|
||||
"Attacking better then defending",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
drop=5,lock=60,
|
||||
fall=8,
|
||||
freshLimit=15,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
if P.atkBuffer.sum<2 then
|
||||
local p=#P.atkBuffer+1
|
||||
local B,D=P.atkBuffer,P.modeData
|
||||
@@ -63,7 +48,7 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(55)
|
||||
@@ -73,14 +58,20 @@ return{
|
||||
or P.modeData.event<20 and 25
|
||||
or 28
|
||||
,-81,320)
|
||||
mDraw(drawableText.wave,-81,260)
|
||||
mDraw(drawableText.nextWave,-81,380)
|
||||
mText(drawableText.wave,-81,260)
|
||||
mText(drawableText.nextWave,-81,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
|
||||
getRank=function(P)
|
||||
local W=P.modeData.event
|
||||
return W>40 and 4 or W>=30 and 3 or W>=20 and 2 or W>=10 and 1 or W>=5 and 0
|
||||
return
|
||||
W>=50 and 5 or
|
||||
W>=40 and 4 or
|
||||
W>=30 and 3 or
|
||||
W>=20 and 2 or
|
||||
W>=10 and 1 or
|
||||
W>=5 and 0
|
||||
end,
|
||||
}
|
||||
@@ -4,35 +4,20 @@ local function getField()
|
||||
return F
|
||||
end
|
||||
local function newField(P)
|
||||
|
||||
|
||||
end
|
||||
return{
|
||||
name={
|
||||
"大爆炸",
|
||||
"大爆炸",
|
||||
"Big Bang",
|
||||
},
|
||||
level={
|
||||
"简单",
|
||||
"简单",
|
||||
"EASY",
|
||||
},
|
||||
info={
|
||||
"All-spin 入门教程\n未制作完成,下块即通",
|
||||
"All-spin 入门教程\n未制作完成,下块即通",
|
||||
"All-spin Tutorial!\nUNFINISHED,drop to win",
|
||||
},
|
||||
color=color.lightGrey,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
hold=false,
|
||||
dropPiece=player.lose,
|
||||
dropPiece=function(P)P:lose()end,
|
||||
task=nil,
|
||||
bg="game1",bgm="newera",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
|
||||
@@ -1,39 +1,24 @@
|
||||
local min=math.min
|
||||
return{
|
||||
name={
|
||||
"隐形",
|
||||
"隐形",
|
||||
"Blind",
|
||||
},
|
||||
level={
|
||||
"半隐",
|
||||
"半隐",
|
||||
"HALF",
|
||||
},
|
||||
info={
|
||||
"最强大脑",
|
||||
"最强大脑",
|
||||
"Invisible board",
|
||||
},
|
||||
color=color.cyan,
|
||||
env={
|
||||
drop=30,lock=45,
|
||||
visible="time",
|
||||
dropPiece=player.reach_winCheck,
|
||||
dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=10,
|
||||
target=200,
|
||||
bg="glow",bgm="newera",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
mDraw(drawableText.line,-81,300)
|
||||
mDraw(drawableText.techrash,-81,420)
|
||||
mText(drawableText.line,-81,300)
|
||||
mText(drawableText.techrash,-81,420)
|
||||
setFont(75)
|
||||
mStr(P.stat.row,-81,220)
|
||||
mStr(P.stat.clear_4,-81,340)
|
||||
mStr(P.stat.clear_S[4],-81,340)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,41 +1,29 @@
|
||||
local gc=love.graphics
|
||||
local min=math.min
|
||||
return{
|
||||
name={
|
||||
"隐形",
|
||||
"隐形",
|
||||
"Blind",
|
||||
},
|
||||
level={
|
||||
"瞬隐",
|
||||
"瞬隐",
|
||||
"SUDDEN",
|
||||
},
|
||||
info={
|
||||
"最强大脑",
|
||||
"最强大脑",
|
||||
"Invisible board",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=15,lock=45,
|
||||
fall=10,lock=60,
|
||||
center=false,
|
||||
visible="none",
|
||||
dropPiece=player.reach_winCheck,
|
||||
dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
bg="rgb",bgm="secret7th",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
mDraw(drawableText.line,-81,300)
|
||||
mDraw(drawableText.techrash,-81,420)
|
||||
mText(drawableText.line,-81,300)
|
||||
mText(drawableText.techrash,-81,420)
|
||||
setFont(75)
|
||||
mStr(P.stat.row,-81,220)
|
||||
mStr(P.stat.clear_4,-81,340)
|
||||
mStr(P.stat.clear_S[4],-81,340)
|
||||
gc.setColor(1,1,1,.2)
|
||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,41 +1,30 @@
|
||||
local gc=love.graphics
|
||||
local min=math.min
|
||||
return{
|
||||
name={
|
||||
"隐形",
|
||||
"隐形",
|
||||
"Blind",
|
||||
},
|
||||
level={
|
||||
"瞬隐+",
|
||||
"瞬隐+",
|
||||
"SUDDEN+",
|
||||
},
|
||||
info={
|
||||
"最强大脑",
|
||||
"最强大脑",
|
||||
"Invisible board",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=10,lock=60,
|
||||
fall=5,
|
||||
center=false,ghost=false,
|
||||
dropFX=0,lockFX=0,
|
||||
visible="none",
|
||||
dropPiece=player.reach_winCheck,
|
||||
dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
bg="rgb",bgm="secret8th",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
mDraw(drawableText.line,-81,300)
|
||||
mDraw(drawableText.techrash,-81,420)
|
||||
mText(drawableText.line,-81,300)
|
||||
mText(drawableText.techrash,-81,420)
|
||||
setFont(75)
|
||||
mStr(P.stat.row,-81,220)
|
||||
mStr(P.stat.clear_4,-81,340)
|
||||
mStr(P.stat.clear_S[4],-81,340)
|
||||
gc.setColor(1,1,1,.2)
|
||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,40 +1,28 @@
|
||||
local gc=love.graphics
|
||||
local min=math.min
|
||||
return{
|
||||
name={
|
||||
"隐形",
|
||||
"隐形",
|
||||
"Blind",
|
||||
},
|
||||
level={
|
||||
"全隐",
|
||||
"全隐",
|
||||
"ALL",
|
||||
},
|
||||
info={
|
||||
"最强大脑",
|
||||
"最强大脑",
|
||||
"Invisible board",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=15,lock=45,
|
||||
freshLimit=10,
|
||||
visible="fast",
|
||||
dropPiece=player.reach_winCheck,
|
||||
dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=10,
|
||||
target=200,
|
||||
bg="glow",bgm="reason",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
mDraw(drawableText.line,-81,300)
|
||||
mDraw(drawableText.techrash,-81,420)
|
||||
mText(drawableText.line,-81,300)
|
||||
mText(drawableText.techrash,-81,420)
|
||||
setFont(75)
|
||||
mStr(P.stat.row,-81,220)
|
||||
mStr(P.stat.clear_4,-81,340)
|
||||
mStr(P.stat.clear_S[4],-81,340)
|
||||
gc.setColor(1,1,1,.2)
|
||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
@@ -49,8 +37,8 @@ return{
|
||||
3
|
||||
else
|
||||
return
|
||||
L>=150 and 3 or
|
||||
L>=100 and 2 or
|
||||
L>=126 and 3 or
|
||||
L>=80 and 2 or
|
||||
L>=40 and 1 or
|
||||
L>=1 and 0
|
||||
end
|
||||
|
||||
@@ -1,42 +1,31 @@
|
||||
local gc=love.graphics
|
||||
local min=math.min
|
||||
return{
|
||||
name={
|
||||
"隐形",
|
||||
"隐形",
|
||||
"Blind",
|
||||
},
|
||||
level={
|
||||
"啥都不剩隐",
|
||||
"啥都不剩隐",
|
||||
"NOTHING",
|
||||
},
|
||||
info={
|
||||
"最强大脑",
|
||||
"最强大脑",
|
||||
"Invisible board",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=30,lock=60,
|
||||
fall=5,
|
||||
block=false,
|
||||
center=false,ghost=false,
|
||||
dropFX=0,lockFX=0,
|
||||
visible="none",
|
||||
dropPiece=player.reach_winCheck,
|
||||
dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
bg="rgb",bgm="secret7th",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
mDraw(drawableText.line,-81,300)
|
||||
mDraw(drawableText.techrash,-81,420)
|
||||
mText(drawableText.line,-81,300)
|
||||
mText(drawableText.techrash,-81,420)
|
||||
setFont(75)
|
||||
mStr(P.stat.row,-81,220)
|
||||
mStr(P.stat.clear_4,-81,340)
|
||||
mStr(P.stat.clear_S[4],-81,340)
|
||||
gc.setColor(1,1,1,.2)
|
||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
||||
end,
|
||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -18,21 +18,6 @@ local function check_c4w(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"C4W练习",
|
||||
"中四宽练习",
|
||||
"C4W Training",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"无 限 连 击",
|
||||
"无 限 连 击",
|
||||
"Infinite combo",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=5,lock=30,
|
||||
@@ -42,7 +27,7 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local F=P.field
|
||||
for i=1,24 do
|
||||
@@ -63,8 +48,8 @@ return{
|
||||
setFont(45)
|
||||
mStr(P.combo,-81,310)
|
||||
mStr(P.modeData.point,-81,400)
|
||||
mDraw(drawableText.combo,-81,358)
|
||||
mDraw(drawableText.mxcmb,-81,450)
|
||||
mText(drawableText.combo,-81,358)
|
||||
mText(drawableText.mxcmb,-81,450)
|
||||
end,
|
||||
score=function(P)return{min(P.modeData.point,100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Combo "..toTime(D[2])end,
|
||||
|
||||
@@ -16,21 +16,6 @@ local function check_c4w(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"C4W练习",
|
||||
"中四宽练习",
|
||||
"C4W Training",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"无 限 连 击",
|
||||
"无 限 连 击",
|
||||
"Infinite combo",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=30,lock=60,oncehold=false,
|
||||
@@ -40,7 +25,7 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local F=P.field
|
||||
for i=1,24 do
|
||||
@@ -61,8 +46,8 @@ return{
|
||||
setFont(45)
|
||||
mStr(P.combo,-81,310)
|
||||
mStr(P.modeData.point,-81,400)
|
||||
mDraw(drawableText.combo,-81,358)
|
||||
mDraw(drawableText.mxcmb,-81,450)
|
||||
mText(drawableText.combo,-81,358)
|
||||
mText(drawableText.mxcmb,-81,450)
|
||||
end,
|
||||
score=function(P)return{min(P.modeData.point,100),P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Combo "..toTime(D[2])end,
|
||||
|
||||
@@ -12,23 +12,8 @@ local function check_LVup(P)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return{
|
||||
name={
|
||||
"高速经典",
|
||||
"高速经典",
|
||||
"Classic",
|
||||
},
|
||||
level={
|
||||
"CTWC",
|
||||
"锦标赛",
|
||||
"CTWC",
|
||||
},
|
||||
info={
|
||||
"高速经典",
|
||||
"高速经典",
|
||||
"Vintage car drag racing",
|
||||
},
|
||||
color=color.lightBlue,
|
||||
env={
|
||||
noFly=true,
|
||||
@@ -44,13 +29,13 @@ return{
|
||||
},
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(75)
|
||||
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),-81,210)
|
||||
mDraw(drawableText.speedLV,-81,290)
|
||||
mText(drawableText.speedLV,-81,290)
|
||||
setFont(45)
|
||||
mStr(P.stat.row,-81,320)
|
||||
mStr(P.gameEnv.target,-81,370)
|
||||
|
||||
@@ -1,24 +1,9 @@
|
||||
local gc=love.graphics
|
||||
local int=math.floor
|
||||
return{
|
||||
name={
|
||||
"自定义",
|
||||
"自定义",
|
||||
"Custom",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"画点什么然后把它消除!",
|
||||
"画点什么然后把它消除!",
|
||||
"Draw something then clear it!",
|
||||
},
|
||||
color=color.white,
|
||||
env={
|
||||
dropPiece=player.reach_winCheck,
|
||||
dropPiece=PLY.reach_winCheck,
|
||||
},
|
||||
load=function()
|
||||
for i=1,#customID do
|
||||
@@ -27,14 +12,14 @@ return{
|
||||
end
|
||||
modeEnv._20G=modeEnv.drop==0
|
||||
modeEnv.oncehold=customSel[6]==1
|
||||
newPlayer(1,340,15)
|
||||
PLY.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))
|
||||
PLY.newAIPlayer(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)))
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",L-6,2+int((L-11)*.5),modeEnv.hold,15000+5000*(L-10)))
|
||||
end
|
||||
end
|
||||
preField.h=20
|
||||
@@ -54,6 +39,7 @@ return{
|
||||
P.visTime[y]=freeRow.get(t)
|
||||
for x=1,10 do P.field[y][x]=preField[y][x]end
|
||||
end
|
||||
P.garbageBeneath=preField.h
|
||||
end
|
||||
modeEnv.bg=customRange.bg[customSel[12]]
|
||||
modeEnv.bgm=customRange.bgm[customSel[13]]
|
||||
@@ -62,7 +48,7 @@ return{
|
||||
setFont(55)
|
||||
if P.gameEnv.puzzle or P.gameEnv.target>1e10 then
|
||||
mStr(P.stat.row,-81,225)
|
||||
mDraw(drawableText.line,-81,290)
|
||||
mText(drawableText.line,-81,290)
|
||||
else
|
||||
local R=P.gameEnv.target-P.stat.row
|
||||
mStr(R>=0 and R or 0,-81,240)
|
||||
|
||||
@@ -18,21 +18,6 @@ local function puzzleCheck(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"自定义",
|
||||
"自定义",
|
||||
"Custom",
|
||||
},
|
||||
level={
|
||||
"拼图",
|
||||
"拼图",
|
||||
"PUZZLE",
|
||||
},
|
||||
info={
|
||||
"画点什么然后把它拼出来吧!",
|
||||
"画点什么然后把它拼出来吧!",
|
||||
"Draw something then stack it!",
|
||||
},
|
||||
color=color.white,
|
||||
env={
|
||||
puzzle=true,
|
||||
@@ -47,14 +32,14 @@ return{
|
||||
modeEnv._20G=modeEnv.drop==0
|
||||
modeEnv.oncehold=customSel[6]==1
|
||||
modeEnv.target=0
|
||||
newPlayer(1,340,15)
|
||||
PLY.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))
|
||||
PLY.newAIPlayer(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)))
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",L-6,2+int((L-11)*.5),modeEnv.hold,15000+5000*(L-10)))
|
||||
end
|
||||
end
|
||||
preField.h=20
|
||||
@@ -74,7 +59,7 @@ return{
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
setFont(55)
|
||||
mStr(P.stat.row,-81,225)
|
||||
mDraw(drawableText.line,-81,290)
|
||||
mText(drawableText.line,-81,290)
|
||||
if P.gameEnv.puzzle and P.modeData.event==0 then
|
||||
local m=puzzleMark
|
||||
for y=1,preField.h do for x=1,10 do
|
||||
|
||||
@@ -1,28 +1,14 @@
|
||||
local int,rnd=math.floor,math.random
|
||||
return{
|
||||
name={
|
||||
"防守",
|
||||
"防守",
|
||||
"Defender",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"Lunatic",
|
||||
},
|
||||
info={
|
||||
"防守练习",
|
||||
"防守练习",
|
||||
"Hand them!",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=5,lock=60,
|
||||
fall=6,
|
||||
next=3,
|
||||
freshLimit=15,
|
||||
pushSpeed=2,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
local t=240-2*P.modeData.event
|
||||
if P.modeData.counter>=t then
|
||||
@@ -55,14 +41,14 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(55)
|
||||
mStr(P.modeData.event,-81,200)
|
||||
mStr(P.modeData.point,-81,320)
|
||||
mDraw(drawableText.wave,-81,260)
|
||||
mDraw(drawableText.rpm,-81,380)
|
||||
mText(drawableText.wave,-81,260)
|
||||
mText(drawableText.rpm,-81,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -1,28 +1,14 @@
|
||||
local int,rnd=math.floor,math.random
|
||||
return{
|
||||
name={
|
||||
"防守",
|
||||
"防守",
|
||||
"Defender",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"防守练习",
|
||||
"防守练习",
|
||||
"Hand them!",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=30,lock=60,
|
||||
fall=10,
|
||||
next=3,
|
||||
freshLimit=15,
|
||||
pushSpeed=1,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
local t=360-P.modeData.event*2
|
||||
if P.modeData.counter>=t then
|
||||
@@ -55,14 +41,14 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(55)
|
||||
mStr(P.modeData.event,-81,200)
|
||||
mStr(P.modeData.point,-81,320)
|
||||
mDraw(drawableText.wave,-81,260)
|
||||
mDraw(drawableText.rpm,-81,380)
|
||||
mText(drawableText.wave,-81,260)
|
||||
mText(drawableText.rpm,-81,380)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -1,31 +1,17 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
name={
|
||||
"挖掘",
|
||||
"挖掘",
|
||||
"Dig",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"挖掘练习",
|
||||
"挖掘练习",
|
||||
"Downstack!",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=60,lock=120,
|
||||
fall=20,
|
||||
freshLimit=15,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
local D=P.modeData
|
||||
D.counter=D.counter+1
|
||||
if D.counter>=max(90,180-D.event)then
|
||||
P:garbageRise(10,1,rnd(10))
|
||||
P.stat.recv=P.stat.recv+1
|
||||
D.counter=0
|
||||
D.event=D.event+1
|
||||
end
|
||||
@@ -34,12 +20,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(65)
|
||||
mStr(P.modeData.event,-81,310)
|
||||
mDraw(drawableText.wave,-81,375)
|
||||
mText(drawableText.wave,-81,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.row}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..D[2].." Lines"end,
|
||||
|
||||
@@ -1,30 +1,16 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
name={
|
||||
"挖掘",
|
||||
"挖掘",
|
||||
"Dig",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"挖掘练习",
|
||||
"挖掘练习",
|
||||
"Downstack!",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
drop=10,lock=30,
|
||||
freshLimit=15,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
local D=P.modeData
|
||||
D.counter=D.counter+1
|
||||
if D.counter>=max(30,80-.3*D.event)then
|
||||
P:garbageRise(11+D.event%3,1,rnd(10))
|
||||
P:garbageRise(13+D.event%5,1,rnd(10))
|
||||
P.stat.recv=P.stat.recv+1
|
||||
D.counter=0
|
||||
D.event=D.event+1
|
||||
end
|
||||
@@ -33,12 +19,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(65)
|
||||
mStr(P.modeData.event,-81,310)
|
||||
mDraw(drawableText.wave,-81,375)
|
||||
mText(drawableText.wave,-81,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.row}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..D[2].." Lines"end,
|
||||
|
||||
@@ -1,32 +1,96 @@
|
||||
local min=math.min
|
||||
local rnd,min,rem=math.random,math.min,table.remove
|
||||
return{
|
||||
name={
|
||||
"干旱",
|
||||
"干旱",
|
||||
"Drought",
|
||||
},
|
||||
level={
|
||||
"100L",
|
||||
"100行",
|
||||
"100L",
|
||||
},
|
||||
info={
|
||||
"后 妈 发 牌",
|
||||
"后 妈 发 牌",
|
||||
"ERRSEQ flood attack",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=20,lock=60,
|
||||
sequence="drought2",
|
||||
target=100,dropPiece=player.reach_winCheck,
|
||||
sequence=function(P)
|
||||
for i=1,3 do P:getNext(7)end
|
||||
end,
|
||||
freshMethod=function(P)
|
||||
if not P.next[1] then
|
||||
local height=freeRow.get(0)
|
||||
local max=#P.field
|
||||
for x=1,10 do
|
||||
local h=max
|
||||
while P.field[h][x]==0 and h>1 do
|
||||
h=h-1
|
||||
end
|
||||
height[x]=h
|
||||
end--get heights
|
||||
height[11]=999
|
||||
|
||||
local res={1,1,2,2,3,4}
|
||||
local d=0
|
||||
local A
|
||||
for i=1,10 do
|
||||
d=d+height[i]
|
||||
end
|
||||
if d<40 or P.stat.row>2*42 then
|
||||
A=#res+1
|
||||
for i=A,A+5 do
|
||||
res[i]=1
|
||||
res[i+6]=2
|
||||
end
|
||||
goto END
|
||||
end
|
||||
|
||||
--give I when no hole
|
||||
d=-999--height difference
|
||||
--A=hole mark
|
||||
for x=2,11 do
|
||||
local _=height[x]-height[x-1]
|
||||
if d<-2 and _>2 then
|
||||
A=true
|
||||
end
|
||||
d=_
|
||||
end
|
||||
if not A then
|
||||
A=#res+1
|
||||
res[A]=7
|
||||
res[A+1]=7
|
||||
res[A+2]=7
|
||||
end
|
||||
|
||||
--give O when no d=0/give T when no d=1
|
||||
d=0--d=0 count
|
||||
A=0--d=1 count
|
||||
for x=2,10 do
|
||||
local _=height[x]-height[x-1]
|
||||
if _==0 then
|
||||
d=d+1
|
||||
elseif _==1 or _==-1 then
|
||||
A=A+1
|
||||
end
|
||||
end
|
||||
if d<3 then
|
||||
A=#res+1
|
||||
res[A]=6
|
||||
res[A+1]=6
|
||||
res[A+2]=6
|
||||
end
|
||||
if A<3 then
|
||||
A=#res+1
|
||||
res[A]=5
|
||||
res[A+1]=5
|
||||
res[A+2]=5
|
||||
res[A+3]=5
|
||||
res[A+4]=5
|
||||
end
|
||||
|
||||
::END::
|
||||
freeRow.discard(height)
|
||||
P:getNext(res[rnd(#res)])
|
||||
end
|
||||
end,
|
||||
target=100,dropPiece=PLY.reach_winCheck,
|
||||
next=1,hold=false,
|
||||
ospin=false,
|
||||
freshLimit=15,
|
||||
bg="glow",bgm="reason",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(70)
|
||||
@@ -40,7 +104,7 @@ return{
|
||||
local L=P.stat.row
|
||||
if L>=100 then
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=70 and 5 or
|
||||
T<=110 and 4 or
|
||||
T<=160 and 3 or
|
||||
|
||||
@@ -1,32 +1,19 @@
|
||||
local min=math.min
|
||||
return{
|
||||
name={
|
||||
"干旱",
|
||||
"干旱",
|
||||
"Drought",
|
||||
},
|
||||
level={
|
||||
"100L",
|
||||
"100行",
|
||||
"100L",
|
||||
},
|
||||
info={
|
||||
"你I没了",
|
||||
"你I没了",
|
||||
"B a g 6",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=20,lock=60,
|
||||
sequence="drought1",
|
||||
target=100,dropPiece=player.reach_winCheck,
|
||||
sequence="bag",
|
||||
bag={1,1,2,2,3,3,4,4,5,5,6,6},
|
||||
target=100,dropPiece=PLY.reach_winCheck,
|
||||
next=3,
|
||||
ospin=false,
|
||||
freshLimit=15,
|
||||
bg="glow",bgm="reason",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(70)
|
||||
@@ -40,7 +27,7 @@ return{
|
||||
local L=P.stat.row
|
||||
if L>=100 then
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=65 and 5 or
|
||||
T<=100 and 4 or
|
||||
T<=145 and 3 or
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
return{
|
||||
name={
|
||||
"本地多人",
|
||||
"本地多人",
|
||||
"Multiplayer",
|
||||
},
|
||||
level={
|
||||
"2P",
|
||||
"2P",
|
||||
"2P",
|
||||
},
|
||||
info={
|
||||
"友尽模式(非联网/局域网)",
|
||||
"友尽模式(非联网/局域网)",
|
||||
"End of friendship",
|
||||
},
|
||||
color=color.white,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="none",bgm="way",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,20,15)
|
||||
newPlayer(2,650,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
return{
|
||||
name={
|
||||
"本地多人",
|
||||
"本地多人",
|
||||
"Multiplayer",
|
||||
},
|
||||
level={
|
||||
"3P",
|
||||
"3P",
|
||||
"3P",
|
||||
},
|
||||
info={
|
||||
"友尽模式(非联网/局域网)",
|
||||
"友尽模式(非联网/局域网)",
|
||||
"End of friendship",
|
||||
},
|
||||
color=color.white,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="none",bgm="way",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,20,100,.65)
|
||||
newPlayer(2,435,100,.65)
|
||||
newPlayer(3,850,100,.65)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
return{
|
||||
name={
|
||||
"本地多人",
|
||||
"本地多人",
|
||||
"Multiplayer",
|
||||
},
|
||||
level={
|
||||
"4P",
|
||||
"4P",
|
||||
"4P",
|
||||
},
|
||||
info={
|
||||
"友尽模式(非联网/局域网)",
|
||||
"友尽模式(非联网/局域网)",
|
||||
"End of friendship",
|
||||
},
|
||||
color=color.white,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
bg="none",bgm="way",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,25,160,.5)
|
||||
newPlayer(2,335,160,.5)
|
||||
newPlayer(3,645,160,.5)
|
||||
newPlayer(4,955,160,.5)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
}
|
||||
@@ -1,20 +1,5 @@
|
||||
local format=string.format
|
||||
return{
|
||||
name={
|
||||
"无尽",
|
||||
"无尽",
|
||||
"Infinite",
|
||||
},
|
||||
level={
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
},
|
||||
info={
|
||||
"沙盒",
|
||||
"沙盒",
|
||||
"Sandbox",
|
||||
},
|
||||
color=color.lightGrey,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -22,14 +7,14 @@ return{
|
||||
bg="glow",bgm="infinite",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,260)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,370)
|
||||
mDraw(drawableText.atk,-81,313)
|
||||
mDraw(drawableText.eff,-81,425)
|
||||
mText(drawableText.atk,-81,313)
|
||||
mText(drawableText.eff,-81,425)
|
||||
end,
|
||||
score=function(P)return{P.stat.score}end,
|
||||
scoreDisp=function(D)return tostring(D[1])end,
|
||||
|
||||
@@ -1,30 +1,13 @@
|
||||
local format,rnd=string.format,math.random
|
||||
local function check_rise(P)
|
||||
local L=P.clearedRow
|
||||
for i=1,#L do
|
||||
if L[i]<6 then
|
||||
P:garbageRise(10,1,rnd(10))
|
||||
P.modeData.point=P.modeData.point+1
|
||||
if #P.clearedRow==0 then
|
||||
for i=1,8-P.garbageBeneath do
|
||||
P:garbageRise(13,1,rnd(10))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"无尽:挖掘",
|
||||
"无尽:挖掘",
|
||||
"Infinite:dig",
|
||||
},
|
||||
level={
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
},
|
||||
info={
|
||||
"挖呀挖呀挖",
|
||||
"挖呀挖呀挖",
|
||||
"Dig to Nether?",
|
||||
},
|
||||
color=color.white,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -34,25 +17,25 @@ return{
|
||||
bg="glow",bgm="infinite",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
for _=1,5 do
|
||||
players[1]:garbageRise(10,1,rnd(10))
|
||||
PLY.newPlayer(1,340,15)
|
||||
for _=1,8 do
|
||||
players[1]:garbageRise(13,1,rnd(10))
|
||||
end
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.modeData.point,-81,190)
|
||||
mStr(P.stat.dig,-81,190)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.line,-81,243)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.line,-81,243)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.modeData.point}end,
|
||||
score=function(P)return{P.stat.dig}end,
|
||||
scoreDisp=function(D)return D[1].." Lines"end,
|
||||
comp=function(a,b)return a[1]>b[1]end,
|
||||
getRank=function(P)
|
||||
local L=P.modeData.point
|
||||
local L=P.stat.dig
|
||||
return
|
||||
L>=626 and 5 or
|
||||
L>=400 and 4 or
|
||||
|
||||
@@ -15,33 +15,18 @@ local function check(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"马拉松",
|
||||
"马拉松",
|
||||
"Marathon",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"200行高速马拉松",
|
||||
"200行高速马拉松",
|
||||
"200L marathon in high speed",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
noFly=true,
|
||||
mindas=7,minarr=1,minsdarr=1,
|
||||
drop=.5,fall=30,
|
||||
drop=.5,wait=8,fall=20,
|
||||
target=50,dropPiece=check,
|
||||
bg="strap",bgm="race",
|
||||
bg="strap",bgm="push",
|
||||
},
|
||||
pauseLimit=true,
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
|
||||
@@ -14,34 +14,19 @@ local function check_LVup(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"马拉松",
|
||||
"马拉松",
|
||||
"Marathon",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"200行加速马拉松",
|
||||
"200行加速马拉松",
|
||||
"200L marathon with acceleration",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
noFly=true,
|
||||
minsdarr=1,
|
||||
fall=30,
|
||||
wait=8,fall=20,
|
||||
target=10,dropPiece=check_LVup,
|
||||
mindas=7,minarr=1,minsdarr=1,
|
||||
bg="strap",bgm="way",
|
||||
bg="strap",bgm="push",
|
||||
},
|
||||
pauseLimit=true,
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
@@ -57,8 +42,8 @@ return{
|
||||
if L>=200 then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=185 and 5 or
|
||||
T<=250 and 4 or
|
||||
T<=226 and 5 or
|
||||
T<=262 and 4 or
|
||||
3
|
||||
else
|
||||
return
|
||||
|
||||
@@ -16,7 +16,7 @@ local function score(P)
|
||||
elseif P.modeData.point>=100*(P.modeData.event+1)then
|
||||
local s=P.modeData.event+1;P.modeData.event=s--level up!
|
||||
local E=P.gameEnv
|
||||
curBG=s==1 and"game3"or s==2 and"game4"or s==3 and"game5"or s==4 and"game6"or"game5"
|
||||
BG.set(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]
|
||||
@@ -33,21 +33,6 @@ local function score(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"大师",
|
||||
"大师",
|
||||
"Master",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"20G:上级者的挑战",
|
||||
"20G:上级者的挑战",
|
||||
"20G:For Pro",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
noFly=true,
|
||||
@@ -62,7 +47,7 @@ return{
|
||||
},
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
@@ -78,7 +63,7 @@ return{
|
||||
getRank=function(P)
|
||||
local S=P.modeData.point
|
||||
if S==500 then
|
||||
local L=P.stat.clear_4
|
||||
local L=P.stat.clear_S[4]
|
||||
return
|
||||
L>=30 and 5 or
|
||||
L>=25 and 4 or
|
||||
|
||||
@@ -15,7 +15,7 @@ local function score(P)
|
||||
elseif P.modeData.point>=100*(P.modeData.event+1)then
|
||||
local s=P.modeData.event+1;P.modeData.event=s--level up!
|
||||
local E=P.gameEnv
|
||||
curBG=s==1 and"game1"or s==2 and"game2"or s==3 and"game3"or "game4"
|
||||
BG.set(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]
|
||||
@@ -37,21 +37,6 @@ local function score(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"大师",
|
||||
"大师",
|
||||
"Master",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"20G:初心者适用",
|
||||
"20G:初心者适用",
|
||||
"20G:Back to beginner",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
noFly=true,
|
||||
@@ -66,7 +51,7 @@ return{
|
||||
},
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
@@ -82,7 +67,7 @@ return{
|
||||
getRank=function(P)
|
||||
local S=P.modeData.point
|
||||
if S==500 then
|
||||
local L=P.stat.clear_4
|
||||
local L=P.stat.clear_S[4]
|
||||
return
|
||||
L>=30 and 5 or
|
||||
L>=25 and 4 or
|
||||
|
||||
@@ -34,21 +34,6 @@ local function score(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"大师",
|
||||
"大师",
|
||||
"Master",
|
||||
},
|
||||
level={
|
||||
"终点",
|
||||
"终点",
|
||||
"FINAL",
|
||||
},
|
||||
info={
|
||||
"究极20G:无法触及的终点",
|
||||
"究极20G:无法触及的终点",
|
||||
"Extreme 20G:Unreachable destination",
|
||||
},
|
||||
color=color.lightGrey,
|
||||
env={
|
||||
noFly=true,
|
||||
@@ -62,7 +47,7 @@ return{
|
||||
},
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
|
||||
@@ -1,32 +1,17 @@
|
||||
local gc=love.graphics
|
||||
return{
|
||||
name={
|
||||
"全清挑战",
|
||||
"全清挑战",
|
||||
"PC Challenge",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"100行内刷PC",
|
||||
"100行内刷全清",
|
||||
"More PCs in 100L",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=60,lock=120,
|
||||
fall=10,
|
||||
target=100,dropPiece=player.reach_winCheck,
|
||||
target=100,dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=15,
|
||||
ospin=false,
|
||||
bg="rgb",bgm="infinite",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
@@ -35,13 +20,7 @@ return{
|
||||
|
||||
setFont(75)
|
||||
mStr(P.stat.pc,-81,350)
|
||||
mDraw(drawableText.pc,-81,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
|
||||
mText(drawableText.pc,-81,432)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..toTime(D[2])end,
|
||||
|
||||
@@ -1,32 +1,17 @@
|
||||
local gc=love.graphics
|
||||
return{
|
||||
name={
|
||||
"全清挑战",
|
||||
"全清挑战",
|
||||
"PC Challenge",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"100行内刷PC",
|
||||
"100行内刷全清",
|
||||
"More PCs in 100L",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=20,lock=60,
|
||||
fall=20,
|
||||
target=100,dropPiece=player.reach_winCheck,
|
||||
target=100,dropPiece=PLY.reach_winCheck,
|
||||
freshLimit=15,
|
||||
ospin=false,
|
||||
bg="rgb",bgm="infinite",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
@@ -35,13 +20,7 @@ return{
|
||||
|
||||
setFont(75)
|
||||
mStr(P.stat.pc,-81,350)
|
||||
mDraw(drawableText.pc,-81,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
|
||||
mText(drawableText.pc,-81,432)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..toTime(D[2])end,
|
||||
|
||||
@@ -1,31 +1,16 @@
|
||||
local gc=love.graphics
|
||||
return{
|
||||
name={
|
||||
"全清挑战",
|
||||
"全清挑战",
|
||||
"PC Challenge",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"100行内刷PC",
|
||||
"100行内刷全清",
|
||||
"More PCs in 100L",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
oncehold=false,
|
||||
drop=300,lock=1e99,
|
||||
target=100,dropPiece=player.reach_winCheck,
|
||||
target=100,dropPiece=PLY.reach_winCheck,
|
||||
ospin=false,
|
||||
bg="rgb",bgm="newera",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
@@ -34,13 +19,7 @@ return{
|
||||
|
||||
setFont(75)
|
||||
mStr(P.stat.pc,-81,350)
|
||||
mDraw(drawableText.pc,-81,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
|
||||
mText(drawableText.pc,-81,432)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..toTime(D[2])end,
|
||||
|
||||
@@ -5,52 +5,35 @@ local pc_lock={55,50,45,40,36,32,30}
|
||||
local pc_fall={18,16,14,12,10,9,8,7,6}
|
||||
local PCbase=require("parts/PCbase")
|
||||
local PClist=require("parts/PClist")
|
||||
local PCtype={[0]=1,2,1,3,2,3}
|
||||
|
||||
local function task_PC(P)
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter==21 then
|
||||
local t=P.stat.pc%2
|
||||
local S=P.gameEnv.skin
|
||||
for i=1,4 do
|
||||
local r=freeRow.get(0)
|
||||
for j=1,10 do
|
||||
local _=PCbase[4*t+i][j]
|
||||
r[j]=S[_]or 0
|
||||
end
|
||||
ins(P.field,1,r)
|
||||
ins(P.visTime,1,freeRow.get(20))
|
||||
end
|
||||
P.fieldBeneath=P.fieldBeneath+120
|
||||
P.curY=P.curY+4
|
||||
P:freshgho()
|
||||
if P.modeData.counter==26 then
|
||||
local base=PCbase[P.modeData.type]
|
||||
P:pushLine(base[rnd(#base)],P.modeData.symmetry)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local function newPC(P)
|
||||
local r=P.field;r=r[#r]
|
||||
if r then
|
||||
local r=P.field
|
||||
if r[1]then
|
||||
r=r[#r]
|
||||
local c=0
|
||||
for i=1,10 do if r[i]>0 then c=c+1 end end
|
||||
if c<5 then
|
||||
P:lose()
|
||||
end
|
||||
if c<5 then P:lose()end
|
||||
end
|
||||
if P.stat.piece%4==0 and #P.field==0 then
|
||||
P.modeData.event=P.modeData.event==0 and 1 or 0
|
||||
local r=rnd(#PClist)
|
||||
local f=P.modeData.event==0
|
||||
for i=1,4 do
|
||||
local b=PClist[r][i]
|
||||
if f then
|
||||
if b<3 then b=3-b
|
||||
elseif b<5 then b=7-b
|
||||
end
|
||||
end
|
||||
P:getNext(b)
|
||||
end
|
||||
if #P.field==0 then
|
||||
local type=PCtype[P.stat.pc]or rnd(2,3)
|
||||
local L=PClist[type][rnd(#PClist[1])]
|
||||
local symmetry=rnd()>.5
|
||||
P.modeData.type=type
|
||||
P.modeData.symmetry=symmetry
|
||||
P:pushNext(L,symmetry)
|
||||
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
||||
newTask(task_PC,P)
|
||||
local s=P.stat.pc*.5
|
||||
TASK.new(task_PC,P)
|
||||
|
||||
local s=P.stat.pc*.25
|
||||
if int(s)==s and s>0 then
|
||||
P.gameEnv.drop=pc_drop[s]or 10
|
||||
P.gameEnv.lock=pc_lock[s]or 20
|
||||
@@ -65,21 +48,6 @@ local function newPC(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"全清训练",
|
||||
"全清训练",
|
||||
"PC Training",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"简易PC题库,熟悉全清定式的组合",
|
||||
"简易全清题库,熟悉全清定式的组合",
|
||||
"Let's learn some PCs",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
next=4,
|
||||
@@ -94,13 +62,13 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
newPC(players[1])
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(75)
|
||||
mStr(P.stat.pc,-81,330)
|
||||
mDraw(drawableText.pc,-81,412)
|
||||
mText(drawableText.pc,-81,412)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..toTime(D[2])end,
|
||||
@@ -108,11 +76,11 @@ return{
|
||||
getRank=function(P)
|
||||
local L=P.stat.pc
|
||||
return
|
||||
L>=50 and 5 or
|
||||
L>=40 and 4 or
|
||||
L>=30 and 3 or
|
||||
L>=100 and 5 or
|
||||
L>=70 and 4 or
|
||||
L>=40 and 3 or
|
||||
L>=20 and 2 or
|
||||
L>=10 and 1 or
|
||||
L>=1 and 0
|
||||
L>=2 and 0
|
||||
end,
|
||||
}
|
||||
@@ -1,74 +1,51 @@
|
||||
local rnd=math.random
|
||||
local ins=table.insert
|
||||
local PCbase=require("parts/PCbase")
|
||||
local PClist=require("parts/PClist")
|
||||
local PCtype={
|
||||
[0]=1,1,1,1,2,
|
||||
1,1,1,1,3,
|
||||
1,1,1,2,
|
||||
1,1,1,3,
|
||||
1,1,2,
|
||||
1,1,3,
|
||||
1,2,
|
||||
1,3,
|
||||
2,
|
||||
3,
|
||||
}
|
||||
local function task_PC(P)
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter==21 then
|
||||
local t=P.stat.pc%2
|
||||
local S=P.gameEnv.skin
|
||||
for i=1,4 do
|
||||
local r=freeRow.get(0)
|
||||
for j=1,10 do
|
||||
local _=PCbase[4*t+i][j]
|
||||
r[j]=S[_]or 0
|
||||
end
|
||||
ins(P.field,1,r)
|
||||
ins(P.visTime,1,freeRow.get(20))
|
||||
end
|
||||
P.fieldBeneath=P.fieldBeneath+120
|
||||
P.curY=P.curY+4
|
||||
P:freshgho()
|
||||
if P.modeData.counter==26 then
|
||||
local base=PCbase[P.modeData.type]
|
||||
P:pushLine(base[rnd(#base)],P.modeData.symmetry)
|
||||
return true
|
||||
end
|
||||
end
|
||||
local function newPC(P)
|
||||
local r=P.field;r=r[#r]
|
||||
if r then
|
||||
local r=P.field
|
||||
if r[1]then
|
||||
r=r[#r]
|
||||
local c=0
|
||||
for i=1,10 do if r[i]>0 then c=c+1 end end
|
||||
if c<5 then
|
||||
P:lose()
|
||||
end
|
||||
if c<5 then P:lose()end
|
||||
end
|
||||
if P.stat.piece%4==0 and #P.field==0 then
|
||||
P.modeData.event=P.modeData.event==0 and 1 or 0
|
||||
local r=rnd(#PClist)
|
||||
local f=P.modeData.event==0
|
||||
for i=1,4 do
|
||||
local b=PClist[r][i]
|
||||
if f then
|
||||
if b<3 then b=3-b
|
||||
elseif b<5 then b=7-b
|
||||
end
|
||||
end
|
||||
P:getNext(b)
|
||||
end
|
||||
if #P.field==0 then
|
||||
local type=PCtype[P.stat.pc]or rnd(2,3)
|
||||
local L=PClist[type][rnd(#PClist[1])]
|
||||
local symmetry=rnd()>.5
|
||||
P.modeData.type=type
|
||||
P.modeData.symmetry=symmetry
|
||||
P:pushNext(L,symmetry)
|
||||
P.modeData.counter=P.stat.piece==0 and 20 or 0
|
||||
newTask(task_PC,P)
|
||||
TASK.new(task_PC,P)
|
||||
end
|
||||
end
|
||||
return{
|
||||
name={
|
||||
"全清训练",
|
||||
"全清训练",
|
||||
"PC Training",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"简易PC题库,熟悉全清定式的组合",
|
||||
"简易全清题库,熟悉全清定式的组合",
|
||||
"Let's learn some PCs",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
next=4,
|
||||
hold=false,
|
||||
drop=150,lock=150,
|
||||
drop=120,lock=180,
|
||||
fall=20,
|
||||
sequence="none",
|
||||
dropPiece=newPC,
|
||||
@@ -77,13 +54,13 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
newPC(players[1])
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(75)
|
||||
mStr(P.stat.pc,-81,330)
|
||||
mDraw(drawableText.pc,-81,412)
|
||||
mText(drawableText.pc,-81,412)
|
||||
end,
|
||||
score=function(P)return{P.stat.pc,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." PCs "..toTime(D[2])end,
|
||||
@@ -91,11 +68,11 @@ return{
|
||||
getRank=function(P)
|
||||
local L=P.stat.pc
|
||||
return
|
||||
L>=100 and 5 or
|
||||
L>=60 and 4 or
|
||||
L>=40 and 3 or
|
||||
L>=25 and 2 or
|
||||
L>=15 and 1 or
|
||||
L>=1 and 0
|
||||
L>=260 and 5 or
|
||||
L>=126 and 4 or
|
||||
L>=62 and 3 or
|
||||
L>=26 and 2 or
|
||||
L>=12 and 1 or
|
||||
L>=2 and 0
|
||||
end,
|
||||
}
|
||||
@@ -11,21 +11,6 @@ local function update_round(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"回合制",
|
||||
"回合制",
|
||||
"Turn-Based",
|
||||
},
|
||||
level={
|
||||
"简单",
|
||||
"简单",
|
||||
"EASY",
|
||||
},
|
||||
info={
|
||||
"下棋模式",
|
||||
"下棋模式",
|
||||
"Chess?",
|
||||
},
|
||||
color=color.cyan,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -34,8 +19,9 @@ return{
|
||||
bg="game2",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",10))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,1,true,5000))
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -46,7 +32,7 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.piece
|
||||
return
|
||||
T<=20 and 5 or
|
||||
T<=23 and 5 or
|
||||
T<=26 and 4 or
|
||||
T<=40 and 3 or
|
||||
T<=60 and 2 or
|
||||
|
||||
@@ -11,21 +11,6 @@ local function update_round(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"回合制",
|
||||
"回合制",
|
||||
"Turn-Based",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"下棋模式",
|
||||
"下棋模式",
|
||||
"Chess?",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -34,8 +19,9 @@ return{
|
||||
bg="game2",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",10))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,1,true,10000))
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -46,10 +32,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.piece
|
||||
return
|
||||
T<=30 and 5 or
|
||||
T<=40 and 4 or
|
||||
T<=55 and 3 or
|
||||
T<=70 and 2 or
|
||||
T<=23 and 5 or
|
||||
T<=26 and 4 or
|
||||
T<=40 and 3 or
|
||||
T<=60 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -11,21 +11,6 @@ local function update_round(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"回合制",
|
||||
"回合制",
|
||||
"Turn-Based",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"下棋模式",
|
||||
"下棋模式",
|
||||
"Chess?",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -34,8 +19,9 @@ return{
|
||||
bg="game2",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",10))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,2,true,12600))
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -46,10 +32,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.piece
|
||||
return
|
||||
T<=35 and 5 or
|
||||
T<=45 and 4 or
|
||||
T<=65 and 3 or
|
||||
T<=85 and 2 or
|
||||
T<=30 and 5 or
|
||||
T<=40 and 4 or
|
||||
T<=55 and 3 or
|
||||
T<=75 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -11,21 +11,6 @@ local function update_round(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"回合制",
|
||||
"回合制",
|
||||
"Turn-Based",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"下棋模式",
|
||||
"下棋模式",
|
||||
"Chess?",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -34,8 +19,9 @@ return{
|
||||
bg="game2",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",10))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,16260))
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -46,10 +32,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.piece
|
||||
return
|
||||
T<=40 and 5 or
|
||||
T<=50 and 4 or
|
||||
T<=75 and 3 or
|
||||
T<=100 and 2 or
|
||||
T<=30 and 5 or
|
||||
T<=40 and 4 or
|
||||
T<=55 and 3 or
|
||||
T<=75 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -11,21 +11,6 @@ local function update_round(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"回合制",
|
||||
"回合制",
|
||||
"Turn-Based",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"下棋模式",
|
||||
"下棋模式",
|
||||
"Chess?",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -34,8 +19,9 @@ return{
|
||||
bg="game2",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",10))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,26000))
|
||||
game.garbageSpeed=1e99
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -46,10 +32,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.piece
|
||||
return
|
||||
T<=50 and 5 or
|
||||
T<=60 and 4 or
|
||||
T<=80 and 3 or
|
||||
T<=100 and 2 or
|
||||
T<=30 and 5 or
|
||||
T<=40 and 4 or
|
||||
T<=55 and 3 or
|
||||
T<=75 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -1,19 +1,4 @@
|
||||
return{
|
||||
name={
|
||||
"单挑",
|
||||
"单挑",
|
||||
"Battle",
|
||||
},
|
||||
level={
|
||||
"简单",
|
||||
"简单",
|
||||
"EASY",
|
||||
},
|
||||
info={
|
||||
"打败AI",
|
||||
"打败电脑",
|
||||
"Beat AI",
|
||||
},
|
||||
color=color.cyan,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -22,8 +7,8 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",3))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",3))
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -34,10 +19,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=15 and 5 or
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=40 and 3 or
|
||||
T<=80 and 2 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -1,19 +1,4 @@
|
||||
return{
|
||||
name={
|
||||
"单挑",
|
||||
"单挑",
|
||||
"Battle",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"打败AI",
|
||||
"打败AI",
|
||||
"Beat AI",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -22,8 +7,8 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",5))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",5))
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -34,10 +19,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=16 and 5 or
|
||||
T<=28 and 4 or
|
||||
T<=45 and 3 or
|
||||
T<=90 and 2 or
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=40 and 3 or
|
||||
T<=62 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -1,19 +1,4 @@
|
||||
return{
|
||||
name={
|
||||
"单挑",
|
||||
"单挑",
|
||||
"Battle",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"打败AI",
|
||||
"打败AI",
|
||||
"Beat AI",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -22,8 +7,8 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",7))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",7))
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -34,9 +19,9 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=17 and 5 or
|
||||
T<=26 and 4 or
|
||||
T<=45 and 3 or
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
1
|
||||
end
|
||||
|
||||
@@ -1,19 +1,4 @@
|
||||
return{
|
||||
name={
|
||||
"单挑",
|
||||
"单挑",
|
||||
"Battle",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"打败AI",
|
||||
"打败AI",
|
||||
"Beat AI",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -22,8 +7,8 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",8))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",9,2,true,26000))
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -34,10 +19,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=18 and 5 or
|
||||
T<=30 and 4 or
|
||||
T<=50 and 3 or
|
||||
T<=70 and 2 or
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -1,19 +1,4 @@
|
||||
return{
|
||||
name={
|
||||
"单挑",
|
||||
"单挑",
|
||||
"Battle",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"打败AI",
|
||||
"打败AI",
|
||||
"Beat AI",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -22,8 +7,8 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
newPlayer(2,965,360,.5,AITemplate("9S",9))
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,50000))
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
end,
|
||||
@@ -35,8 +20,8 @@ return{
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=20 and 5 or
|
||||
T<=30 and 4 or
|
||||
T<=45 and 3 or
|
||||
T<=25 and 4 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
1
|
||||
end
|
||||
|
||||
44
modes/sprintPenta.lua
Normal file
@@ -0,0 +1,44 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
color=color.green,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
sequence="bag",bag={8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
|
||||
target=40,dropPiece=PLY.reach_winCheck,
|
||||
bg="aura",bgm="race",
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
setFont(55)
|
||||
local r=40-P.stat.row
|
||||
if r<0 then r=0 end
|
||||
mStr(r,-81,265)
|
||||
if r<21 and r>0 then
|
||||
gc.setLineWidth(4)
|
||||
gc.setColor(1,r>10 and 0 or rnd(),.5)
|
||||
gc.line(dx,600-30*r+dy,300+dx,600-30*r+dy)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.stat.time,P.stat.piece}end,
|
||||
scoreDisp=function(D)return toTime(D[1]).." "..D[2].." Pieces"end,
|
||||
comp=function(a,b)return a[2]>b[2]or a[2]==b[2]and a[1]<b[1]end,
|
||||
getRank=function(P)
|
||||
local T=P.stat.row
|
||||
if T<5 then
|
||||
return
|
||||
elseif T<40 then
|
||||
return 0
|
||||
end
|
||||
T=P.stat.time
|
||||
return
|
||||
T<=76 and 5 or
|
||||
T<=90 and 4 or
|
||||
T<=150 and 3 or
|
||||
T<=260 and 2 or
|
||||
1
|
||||
end,
|
||||
}
|
||||
@@ -1,29 +1,14 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
name={
|
||||
"竞速",
|
||||
"竞速",
|
||||
"Sprint",
|
||||
},
|
||||
level={
|
||||
"10L",
|
||||
"10行",
|
||||
"10L",
|
||||
},
|
||||
info={
|
||||
"消除10行",
|
||||
"消除10行",
|
||||
"Clear 10 lines",
|
||||
},
|
||||
color=color.cyan,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=10,dropPiece=player.reach_winCheck,
|
||||
target=10,dropPiece=PLY.reach_winCheck,
|
||||
bg="strap",bgm="race",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
@@ -43,7 +28,7 @@ return{
|
||||
getRank=function(P)
|
||||
if P.stat.row<10 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=7 and 5 or
|
||||
T<=10 and 4 or
|
||||
T<=25 and 3 or
|
||||
|
||||
@@ -1,29 +1,14 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
name={
|
||||
"竞速",
|
||||
"竞速",
|
||||
"Sprint",
|
||||
},
|
||||
level={
|
||||
"100L",
|
||||
"100行",
|
||||
"100L",
|
||||
},
|
||||
info={
|
||||
"消除100行",
|
||||
"消除100行",
|
||||
"Clear 100 lines",
|
||||
},
|
||||
color=color.orange,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=100,dropPiece=player.reach_winCheck,
|
||||
target=100,dropPiece=PLY.reach_winCheck,
|
||||
bg="strap",bgm="race",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
@@ -43,12 +28,12 @@ return{
|
||||
getRank=function(P)
|
||||
if P.stat.row<100 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=62 and 5 or
|
||||
T<=90 and 4 or
|
||||
T<=130 and 3 or
|
||||
T<=200 and 2 or
|
||||
T<=270 and 1 or
|
||||
T<=360 and 1 or
|
||||
0
|
||||
end,
|
||||
}
|
||||
@@ -1,29 +1,14 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
name={
|
||||
"竞速",
|
||||
"竞速",
|
||||
"Sprint",
|
||||
},
|
||||
level={
|
||||
"1000L",
|
||||
"1000行",
|
||||
"1000L",
|
||||
},
|
||||
info={
|
||||
"消除1000行",
|
||||
"消除1000行",
|
||||
"Clear 1000 lines",
|
||||
},
|
||||
color=color.lightGrey,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=1000,dropPiece=player.reach_winCheck,
|
||||
target=1000,dropPiece=PLY.reach_winCheck,
|
||||
bg="strap",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
@@ -43,12 +28,12 @@ return{
|
||||
getRank=function(P)
|
||||
if P.stat.row<1000 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=626 and 5 or
|
||||
T<=1000 and 4 or
|
||||
T<=1400 and 3 or
|
||||
T<=2200 and 2 or
|
||||
T<=3000 and 1 or
|
||||
T<=2260 and 2 or
|
||||
T<=3260 and 1 or
|
||||
0
|
||||
end,
|
||||
}
|
||||
}
|
||||
@@ -1,29 +1,14 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
name={
|
||||
"竞速",
|
||||
"竞速",
|
||||
"Sprint",
|
||||
},
|
||||
level={
|
||||
"20L",
|
||||
"20行",
|
||||
"20L",
|
||||
},
|
||||
info={
|
||||
"消除20行",
|
||||
"消除20行",
|
||||
"Clear 20 lines",
|
||||
},
|
||||
color=color.lightBlue,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=20,dropPiece=player.reach_winCheck,
|
||||
target=20,dropPiece=PLY.reach_winCheck,
|
||||
bg="strap",bgm="race",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
@@ -43,11 +28,11 @@ return{
|
||||
getRank=function(P)
|
||||
if P.stat.row<20 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=13 and 5 or
|
||||
T<=18 and 4 or
|
||||
T<=45 and 3 or
|
||||
T<=80 and 2 or
|
||||
T<=32.6 and 3 or
|
||||
T<=62.6 and 2 or
|
||||
T<=126 and 1 or
|
||||
0
|
||||
end,
|
||||
|
||||
@@ -1,29 +1,14 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
name={
|
||||
"竞速",
|
||||
"竞速",
|
||||
"Sprint",
|
||||
},
|
||||
level={
|
||||
"40L",
|
||||
"40行",
|
||||
"40L",
|
||||
},
|
||||
info={
|
||||
"消除40行",
|
||||
"消除40行",
|
||||
"Clear 40 lines",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=40,dropPiece=player.reach_winCheck,
|
||||
target=40,dropPiece=PLY.reach_winCheck,
|
||||
bg="strap",bgm="race",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
@@ -43,11 +28,11 @@ return{
|
||||
getRank=function(P)
|
||||
if P.stat.row<40 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=26 and 5 or
|
||||
T<=32.6 and 4 or
|
||||
T<=40 and 3 or
|
||||
T<=62 and 2 or
|
||||
T<=52.6 and 3 or
|
||||
T<=92.9 and 2 or
|
||||
T<=183 and 1 or
|
||||
0
|
||||
end,
|
||||
|
||||
@@ -1,29 +1,14 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
name={
|
||||
"竞速",
|
||||
"竞速",
|
||||
"Sprint",
|
||||
},
|
||||
level={
|
||||
"400L",
|
||||
"400行",
|
||||
"400L",
|
||||
},
|
||||
info={
|
||||
"消除400行",
|
||||
"消除400行",
|
||||
"Clear 400 lines",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=400,dropPiece=player.reach_winCheck,
|
||||
target=400,dropPiece=PLY.reach_winCheck,
|
||||
bg="strap",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
local dx,dy=P.fieldOff.x,P.fieldOff.y
|
||||
@@ -43,12 +28,12 @@ return{
|
||||
getRank=function(P)
|
||||
if P.stat.row<400 then return end
|
||||
local T=P.stat.time
|
||||
return
|
||||
return
|
||||
T<=255 and 5 or
|
||||
T<=330 and 4 or
|
||||
T<=420 and 3 or
|
||||
T<=326 and 4 or
|
||||
T<=462 and 3 or
|
||||
T<=626 and 2 or
|
||||
T<=1000 and 1 or
|
||||
T<=1260 and 1 or
|
||||
0
|
||||
end,
|
||||
}
|
||||
@@ -1,26 +1,11 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
name={
|
||||
"生存",
|
||||
"生存",
|
||||
"Survivor",
|
||||
},
|
||||
level={
|
||||
"简单",
|
||||
"简单",
|
||||
"EASY",
|
||||
},
|
||||
info={
|
||||
"你能存活多久?",
|
||||
"你能存活多久?",
|
||||
"Survive Longer!",
|
||||
},
|
||||
color=color.cyan,
|
||||
env={
|
||||
drop=30,lock=45,
|
||||
freshLimit=10,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter>=max(60,150-2*P.modeData.event)and P.atkBuffer.sum<4 then
|
||||
P.atkBuffer[#P.atkBuffer+1]={pos=rnd(10),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1}
|
||||
@@ -35,12 +20,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(65)
|
||||
mStr(P.modeData.event,-81,310)
|
||||
mDraw(drawableText.wave,-81,375)
|
||||
mText(drawableText.wave,-81,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -1,35 +1,21 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
name={
|
||||
"生存",
|
||||
"生存",
|
||||
"Survivor",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"你能存活多久?",
|
||||
"你能存活多久?",
|
||||
"Survive Longer!",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=30,lock=45,
|
||||
freshLimit=10,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter>=max(60,180-2*P.modeData.event)and P.atkBuffer.sum<15 then
|
||||
P.atkBuffer[#P.atkBuffer+1]=
|
||||
local B=P.atkBuffer
|
||||
if P.modeData.counter>=max(60,180-2*P.modeData.event)and B.sum<15 then
|
||||
B[#B+1]=
|
||||
P.modeData.event%3<2 and
|
||||
{pos=rnd(10),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1}
|
||||
or
|
||||
{pos=rnd(10),amount=3,countdown=60,cd0=60,time=0,sent=false,lv=2}
|
||||
local R=(P.modeData.event%3<2 and 1 or 3)
|
||||
P.atkBuffer.sum=P.atkBuffer.sum+R
|
||||
B.sum=B.sum+R
|
||||
P.stat.recv=P.stat.recv+R
|
||||
if P.modeData.event==60 then P:showTextF(text.maxspeed,0,-140,100,"appear",.6)end
|
||||
P.modeData.counter=0
|
||||
@@ -40,12 +26,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(65)
|
||||
mStr(P.modeData.event,-81,310)
|
||||
mDraw(drawableText.wave,-81,375)
|
||||
mText(drawableText.wave,-81,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -1,26 +1,11 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
name={
|
||||
"生存",
|
||||
"生存",
|
||||
"Survivor",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"你能存活多久?",
|
||||
"你能存活多久?",
|
||||
"Survive Longer!",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
drop=30,lock=45,
|
||||
freshLimit=10,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter>=max(60,150-P.modeData.event)and P.atkBuffer.sum<20 then
|
||||
local t=max(60,90-P.modeData.event)
|
||||
@@ -36,12 +21,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(65)
|
||||
mStr(P.modeData.event,-81,310)
|
||||
mDraw(drawableText.wave,-81,375)
|
||||
mText(drawableText.wave,-81,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -1,26 +1,11 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
name={
|
||||
"生存",
|
||||
"生存",
|
||||
"Survivor",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"你能存活多久?",
|
||||
"你能存活多久?",
|
||||
"Survive Longer!",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=30,lock=45,
|
||||
freshLimit=10,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter>=max(90,180-2*P.modeData.event)and P.atkBuffer.sum<8 then
|
||||
local d=P.modeData.event+1
|
||||
@@ -40,12 +25,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(65)
|
||||
mStr(P.modeData.event,-81,310)
|
||||
mDraw(drawableText.wave,-81,375)
|
||||
mText(drawableText.wave,-81,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -1,20 +1,5 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
name={
|
||||
"生存",
|
||||
"生存",
|
||||
"Survivor",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"你能存活多久?",
|
||||
"你能存活多久?",
|
||||
"Survive Longer!",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
drop=5,lock=60,
|
||||
@@ -22,7 +7,7 @@ return{
|
||||
freshLimit=15,
|
||||
pushSpeed=2,
|
||||
task=function(P)
|
||||
if not(P.control and scene.cur=="play")then return end
|
||||
if not(P.control and SCN.cur=="play")then return end
|
||||
P.modeData.counter=P.modeData.counter+1
|
||||
if P.modeData.counter>=max(300,600-10*P.modeData.event)and P.atkBuffer.sum<20 then
|
||||
local t=max(300,480-12*P.modeData.event)
|
||||
@@ -42,12 +27,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(65)
|
||||
mStr(P.modeData.event,-81,310)
|
||||
mDraw(drawableText.wave,-81,375)
|
||||
mText(drawableText.wave,-81,375)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -1,43 +1,28 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"困难+",
|
||||
"困难+",
|
||||
"HARD+",
|
||||
},
|
||||
info={
|
||||
"仅允许spin与PC",
|
||||
"仅允许spin与全清",
|
||||
"Spin&PC only",
|
||||
},
|
||||
color=color.darkMagenta,
|
||||
env={
|
||||
drop=30,lock=60,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="secret8th",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -6,21 +6,6 @@ local function tech_check_easy(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"禁止断B2B",
|
||||
"禁止断满贯",
|
||||
"Keep B2B",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=20,lock=60,
|
||||
@@ -30,14 +15,14 @@ return{
|
||||
bg="matrix",bgm="secret8th",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,43 +1,28 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"疯狂+",
|
||||
"疯狂+",
|
||||
"LUNATIC+",
|
||||
},
|
||||
info={
|
||||
"仅允许spin与PC",
|
||||
"仅允许spin与全清",
|
||||
"Spin&PC only",
|
||||
},
|
||||
color=color.darkRed,
|
||||
env={
|
||||
_20G=true,lock=60,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="secret7th",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,43 +1,28 @@
|
||||
local format=string.format
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 then
|
||||
local function tech_check_easy(P)
|
||||
if #P.clearedRow>0 and P.b2b<40 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"疯狂",
|
||||
"疯狂",
|
||||
"LUNATIC",
|
||||
},
|
||||
info={
|
||||
"禁止普通消除",
|
||||
"禁止普通消除",
|
||||
"No normal clear",
|
||||
},
|
||||
color=color.red,
|
||||
env={
|
||||
_20G=true,lock=60,
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_hard,
|
||||
dropPiece=tech_check_easy,
|
||||
bg="matrix",bgm="secret7th",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,43 +1,28 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"普通+",
|
||||
"普通+",
|
||||
"NORMAL+",
|
||||
},
|
||||
info={
|
||||
"仅允许spin与PC",
|
||||
"仅允许spin与全清",
|
||||
"Spin&PC only",
|
||||
},
|
||||
color=color.darkGreen,
|
||||
env={
|
||||
oncehold=false,
|
||||
drop=1e99,lock=1e99,
|
||||
target=200,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="newera",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -6,21 +6,6 @@ local function tech_check_easy(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"普通",
|
||||
"普通",
|
||||
"NORMAL",
|
||||
},
|
||||
info={
|
||||
"禁止断B2B",
|
||||
"禁止断B2B",
|
||||
"Keep B2B",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
oncehold=false,
|
||||
@@ -30,14 +15,14 @@ return{
|
||||
bg="matrix",bgm="newera",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,26 +1,11 @@
|
||||
local format=string.format
|
||||
local function tech_check_ultimate(P)
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 or P.lastClear==74 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"极限+",
|
||||
"极限+",
|
||||
"ULTIMATE+",
|
||||
},
|
||||
info={
|
||||
"仅允许spin与PC,强制最简操作",
|
||||
"仅允许spin与全清,强制最简操作",
|
||||
"Spin&PC only,no finesse error",
|
||||
},
|
||||
color=color.grey,
|
||||
env={
|
||||
arr=0,
|
||||
@@ -28,19 +13,19 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
fineKill=true,
|
||||
dropPiece=tech_check_ultimate,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="flink",bgm="infinite",
|
||||
},
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -1,26 +1,6 @@
|
||||
local format=string.format
|
||||
local function tech_check_hard(P)
|
||||
if #P.clearedRow>0 and P.lastClear<10 then
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"科研",
|
||||
"科研",
|
||||
"Tech",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"禁止普通消除,强制最简操作",
|
||||
"禁止普通消除,强制最简操作",
|
||||
"No normal clear,no finesse error",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
arr=0,
|
||||
@@ -28,19 +8,18 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
fineKill=true,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="flink",bgm="infinite",
|
||||
},
|
||||
slowMark=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(45)
|
||||
mStr(P.stat.atk,-81,310)
|
||||
mStr(format("%.2f",P.stat.atk/P.stat.row),-81,420)
|
||||
mDraw(drawableText.atk,-81,363)
|
||||
mDraw(drawableText.eff,-81,475)
|
||||
mText(drawableText.atk,-81,363)
|
||||
mText(drawableText.eff,-81,475)
|
||||
end,
|
||||
score=function(P)return{P.stat.row<=200 and P.stat.row or 200,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||
|
||||
@@ -16,21 +16,6 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"49人混战",
|
||||
"49人混战",
|
||||
"Techmino49",
|
||||
},
|
||||
level={
|
||||
"简单",
|
||||
"简单",
|
||||
"EASY",
|
||||
},
|
||||
info={
|
||||
"49人混战,活到最后",
|
||||
"49人混战,活到最后",
|
||||
"49P melee fight",
|
||||
},
|
||||
color=color.cyan,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -46,7 +31,7 @@ return{
|
||||
powerUp={2,5,10,20},
|
||||
stage={30,20,15,10,5},
|
||||
}
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,49 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 2
|
||||
while t>0 do
|
||||
@@ -56,17 +41,17 @@ return{
|
||||
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(2,5)))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
newPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(2,5)-1,2,true,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(2,5)))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
newPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -83,7 +68,7 @@ return{
|
||||
setFont(25)
|
||||
gc.print(powerUp[P.strength],-132,290)
|
||||
for i=1,P.strength do
|
||||
gc.draw(badgeIcon,16*i-138,260)
|
||||
gc.draw(IMG.badgeIcon,16*i-138,260)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.modeData.point}end,
|
||||
|
||||
@@ -16,21 +16,6 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"49人混战",
|
||||
"49人混战",
|
||||
"Techmino49",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"49人混战,活到最后",
|
||||
"49人混战,活到最后",
|
||||
"49P melee fight",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -46,7 +31,7 @@ return{
|
||||
powerUp={2,5,10,20},
|
||||
stage={30,20,15,10,5},
|
||||
}
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,49 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
while t>0 do
|
||||
@@ -56,17 +41,17 @@ return{
|
||||
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(4,7)))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
newPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
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(4,7)))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
newPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -83,7 +68,7 @@ return{
|
||||
setFont(25)
|
||||
gc.print(powerUp[P.strength],-132,290)
|
||||
for i=1,P.strength do
|
||||
gc.draw(badgeIcon,16*i-138,260)
|
||||
gc.draw(IMG.badgeIcon,16*i-138,260)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.modeData.point}end,
|
||||
|
||||
@@ -16,21 +16,6 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"49人混战",
|
||||
"49人混战",
|
||||
"Techmino49",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"49人混战,活到最后",
|
||||
"49人混战,活到最后",
|
||||
"49P melee fight",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
drop=15,lock=60,
|
||||
@@ -46,7 +31,7 @@ return{
|
||||
powerUp={2,5,10,20},
|
||||
stage={30,20,15,10,5},
|
||||
}
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,49 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 6
|
||||
while t>0 do
|
||||
@@ -56,17 +41,17 @@ return{
|
||||
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(8,10)))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
newPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
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(8,10)))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
newPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -83,7 +68,7 @@ return{
|
||||
setFont(25)
|
||||
gc.print(powerUp[P.strength],-132,290)
|
||||
for i=1,P.strength do
|
||||
gc.draw(badgeIcon,16*i-138,260)
|
||||
gc.draw(IMG.badgeIcon,16*i-138,260)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.modeData.point}end,
|
||||
|
||||
@@ -16,21 +16,6 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"99人混战",
|
||||
"99人混战",
|
||||
"Techmino99",
|
||||
},
|
||||
level={
|
||||
"简单",
|
||||
"简单",
|
||||
"EASY",
|
||||
},
|
||||
info={
|
||||
"99人混战,活到最后",
|
||||
"99人混战,活到最后",
|
||||
"99P melee fight",
|
||||
},
|
||||
color=color.cyan,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -46,7 +31,7 @@ return{
|
||||
powerUp={2,6,14,30},
|
||||
stage={75,50,35,20,10},
|
||||
}
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,100 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
while t>0 do
|
||||
@@ -56,17 +41,17 @@ return{
|
||||
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(2,5)))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
newPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(2,5)-1,2,true,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(2,5)))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
newPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(2,5)-1,2,true,10000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -83,7 +68,7 @@ return{
|
||||
setFont(25)
|
||||
gc.print(powerUp[P.strength],-132,290)
|
||||
for i=1,P.strength do
|
||||
gc.draw(badgeIcon,16*i-138,260)
|
||||
gc.draw(IMG.badgeIcon,16*i-138,260)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.modeData.point}end,
|
||||
|
||||
@@ -16,21 +16,6 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"99人混战",
|
||||
"99人混战",
|
||||
"Techmino99",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"99人混战,活到最后",
|
||||
"99人混战,活到最后",
|
||||
"99P melee fight",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -46,7 +31,7 @@ return{
|
||||
powerUp={2,6,14,30},
|
||||
stage={75,50,35,20,10},
|
||||
}
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,100 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
while t>0 do
|
||||
@@ -56,17 +41,17 @@ return{
|
||||
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(4,7)))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
newPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
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(4,7)))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(4,7)))
|
||||
else
|
||||
newPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(4,7)-1,3,true,20000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -83,7 +68,7 @@ return{
|
||||
setFont(25)
|
||||
gc.print(powerUp[P.strength],-132,290)
|
||||
for i=1,P.strength do
|
||||
gc.draw(badgeIcon,16*i-138,260)
|
||||
gc.draw(IMG.badgeIcon,16*i-138,260)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.modeData.point}end,
|
||||
|
||||
@@ -16,21 +16,6 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"99人混战",
|
||||
"99人混战",
|
||||
"Techmino99",
|
||||
},
|
||||
level={
|
||||
"极限",
|
||||
"极限",
|
||||
"ULTIMATE",
|
||||
},
|
||||
info={
|
||||
"99人混战,活到最后",
|
||||
"99人混战,活到最后",
|
||||
"99P melee fight",
|
||||
},
|
||||
color=color.lightYellow,
|
||||
env={
|
||||
drop=15,lock=60,
|
||||
@@ -46,7 +31,7 @@ return{
|
||||
powerUp={2,6,14,30},
|
||||
stage={75,50,35,20,10},
|
||||
}
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
local L={}for i=1,100 do L[i]=true end
|
||||
local t=system~="Windows"and 0 or 4
|
||||
while t>0 do
|
||||
@@ -56,17 +41,17 @@ return{
|
||||
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(8,10)))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
newPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
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(8,10)))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
newPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(8,10)-1,4,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -83,7 +68,7 @@ return{
|
||||
setFont(25)
|
||||
gc.print(powerUp[P.strength],-132,290)
|
||||
for i=1,P.strength do
|
||||
gc.draw(badgeIcon,16*i-138,260)
|
||||
gc.draw(IMG.badgeIcon,16*i-138,260)
|
||||
end
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.modeData.point}end,
|
||||
|
||||
@@ -4,26 +4,14 @@ local function check_tsd(P)
|
||||
P:lose()
|
||||
elseif #P.clearedRow>0 then
|
||||
P.modeData.event=P.modeData.event+1
|
||||
if P.modeData.event==20 then
|
||||
P:win()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"TSD挑战",
|
||||
"T旋双清挑战",
|
||||
"TSD Challenge",
|
||||
},
|
||||
level={
|
||||
"简单",
|
||||
"简单",
|
||||
"EASY",
|
||||
},
|
||||
info={
|
||||
"你能连续做几个TSD?",
|
||||
"你能连续做几个T旋双清?",
|
||||
"T-spin-doubles only",
|
||||
},
|
||||
color=color.green,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
@@ -33,12 +21,12 @@ return{
|
||||
bg="matrix",bgm="reason",
|
||||
},
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(75)
|
||||
mStr(P.modeData.event,-81,330)
|
||||
mDraw(drawableText.tsd,-81,407)
|
||||
mText(drawableText.tsd,-81,407)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."TSD "..toTime(D[2])end,
|
||||
@@ -46,11 +34,11 @@ return{
|
||||
getRank=function(P)
|
||||
local T=P.modeData.event
|
||||
return
|
||||
T>=23 and 5 or
|
||||
T>=20 and 4 or
|
||||
T>=20 and 5 or
|
||||
T>=18 and 4 or
|
||||
T>=15 and 3 or
|
||||
T>=10 and 2 or
|
||||
T>=6 and 1 or
|
||||
T>=4 and 1 or
|
||||
T>=1 and 0
|
||||
end,
|
||||
}
|
||||
@@ -9,21 +9,6 @@ local function check_tsd(P)
|
||||
end
|
||||
|
||||
return{
|
||||
name={
|
||||
"TSD挑战",
|
||||
"T旋双清挑战",
|
||||
"TSD Challenge",
|
||||
},
|
||||
level={
|
||||
"困难",
|
||||
"困难",
|
||||
"HARD",
|
||||
},
|
||||
info={
|
||||
"你能连续做几个TSD?",
|
||||
"你能连续做几个T旋双清?",
|
||||
"T-spin-doubles only",
|
||||
},
|
||||
color=color.magenta,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
@@ -34,12 +19,12 @@ return{
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
newPlayer(1,340,15)
|
||||
PLY.newPlayer(1,340,15)
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(75)
|
||||
mStr(P.modeData.event,-81,330)
|
||||
mDraw(drawableText.tsd,-81,407)
|
||||
mText(drawableText.tsd,-81,407)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].."TSD "..toTime(D[2])end,
|
||||
|
||||