Compare commits
64 Commits
pre1
...
pre0.16.5-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
510f7d7513 | ||
|
|
3128eb38c0 | ||
|
|
14ef654612 | ||
|
|
bc5193f95e | ||
|
|
8cbb4a38bc | ||
|
|
fce08c83ef | ||
|
|
018e99f9e6 | ||
|
|
7fe390b34b | ||
|
|
8c7202c569 | ||
|
|
ab386bb53c | ||
|
|
87c791b8c7 | ||
|
|
00e3e2d19d | ||
|
|
8d7d5c7b04 | ||
|
|
849a18e159 | ||
|
|
a4357d0843 | ||
|
|
e2b4a78b59 | ||
|
|
01387b5488 | ||
|
|
168e2f80b8 | ||
|
|
4f79ef8708 | ||
|
|
16497833df | ||
|
|
cd6a50d5a0 | ||
|
|
4c5a61f2d8 | ||
|
|
1fd8d39970 | ||
|
|
d133d64890 | ||
|
|
b27aa8b60d | ||
|
|
230d67492e | ||
|
|
4f9d5b282c | ||
|
|
a2955e8722 | ||
|
|
df892671d5 | ||
|
|
7fa96eee1a | ||
|
|
a1030906c7 | ||
|
|
e6a9a4f4be | ||
|
|
efa1247596 | ||
|
|
069fcee721 | ||
|
|
66621404f1 | ||
|
|
e09609ea21 | ||
|
|
d02ae67bc0 | ||
|
|
27327d57c4 | ||
|
|
cce93b6df9 | ||
|
|
546104ba5b | ||
|
|
ca5816ba14 | ||
|
|
e5bd16476e | ||
|
|
94431d4c2e | ||
|
|
f98d6892f1 | ||
|
|
1fe436cbe3 | ||
|
|
c5a37a9920 | ||
|
|
eed7e96096 | ||
|
|
a7f36a4162 | ||
|
|
8ba872d45d | ||
|
|
7a55451faa | ||
|
|
372571bd80 | ||
|
|
77120c0b90 | ||
|
|
01d1e44644 | ||
|
|
0ad8cddefe | ||
|
|
ce67253502 | ||
|
|
cb9f2c0617 | ||
|
|
635d9407ed | ||
|
|
0f9f6565f1 | ||
|
|
a45b6ad57e | ||
|
|
a5de06dedb | ||
|
|
fbfbd1ed98 | ||
|
|
8f06b3bd1a | ||
|
|
7e0dbceefc | ||
|
|
7e3db1de17 |
5
.github/actions/upload-artifact/action.yml
vendored
5
.github/actions/upload-artifact/action.yml
vendored
@@ -19,6 +19,9 @@ inputs:
|
|||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
steps:
|
steps:
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '3.9'
|
||||||
- name: Install Webdav 4
|
- name: Install Webdav 4
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@@ -34,7 +37,7 @@ runs:
|
|||||||
auth=("${{ inputs.WEBDAV_USERNAME }}", "${{ inputs.WEBDAV_PASSWORD }}"),
|
auth=("${{ inputs.WEBDAV_USERNAME }}", "${{ inputs.WEBDAV_PASSWORD }}"),
|
||||||
timeout=None,
|
timeout=None,
|
||||||
)
|
)
|
||||||
if '${{ inputs.ARTIFACT_TYPE }}' == 'release'
|
if '${{ inputs.ARTIFACT_TYPE }}' == 'release':
|
||||||
print('Removing previous ${{ inputs.ARTIFACT_PLATFORM }} release file...')
|
print('Removing previous ${{ inputs.ARTIFACT_PLATFORM }} release file...')
|
||||||
for file in client.ls('Techmino distribution'):
|
for file in client.ls('Techmino distribution'):
|
||||||
if re.search(r'(Techmino_a[0-9]+\.[0-9]+\.[0-9]_${{ inputs.ARTIFACT_PLATFORM }}.*)', file['name']):
|
if re.search(r'(Techmino_a[0-9]+\.[0-9]+\.[0-9]_${{ inputs.ARTIFACT_PLATFORM }}.*)', file['name']):
|
||||||
|
|||||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -198,7 +198,7 @@ jobs:
|
|||||||
- name: Pack Techmino
|
- name: Pack Techmino
|
||||||
run: mv Techmino.ipa Techmino_pre${{ needs.get-info.outputs.release }}_${{ needs.get-info.outputs.commit }}_iOS.ipa
|
run: mv Techmino.ipa Techmino_pre${{ needs.get-info.outputs.release }}_${{ needs.get-info.outputs.commit }}_iOS.ipa
|
||||||
- name: Upload artifact to server
|
- name: Upload artifact to server
|
||||||
uses: ./.github/actions/upload-artifacts
|
uses: ./.github/actions/upload-artifact
|
||||||
with:
|
with:
|
||||||
WEBDAV_USERNAME: ${{ secrets.WEBDAV_USERNAME }}
|
WEBDAV_USERNAME: ${{ secrets.WEBDAV_USERNAME }}
|
||||||
WEBDAV_PASSWORD: ${{ secrets.WEBDAV_PASSWORD }}
|
WEBDAV_PASSWORD: ${{ secrets.WEBDAV_PASSWORD }}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
local abs=math.abs
|
local abs=math.abs
|
||||||
local function hsv(h,s,v,a)
|
local function hsv(h,s,v,a)
|
||||||
if s<=0 then return v,v,v end
|
if s<=0 then return v,v,v,a end
|
||||||
h=h*6
|
h=h*6
|
||||||
local c=v*s
|
local c=v*s
|
||||||
local x=abs((h-1)%2-1)*c
|
local x=abs((h-1)%2-1)*c
|
||||||
@@ -16,62 +16,62 @@ end
|
|||||||
local COLOR={
|
local COLOR={
|
||||||
hsv=hsv,
|
hsv=hsv,
|
||||||
|
|
||||||
red= {hsv(0, .85,.85)},
|
red= {hsv(0.00, 0.89, 0.91)},
|
||||||
fire= {hsv(0.0625,.85,.85)},
|
fire= {hsv(0.04, 0.93, 0.94)},
|
||||||
orange= {hsv(0.125, .85,.85)},
|
orange= {hsv(0.09, 0.99, 0.96)},
|
||||||
yellow= {hsv(0.1875,.85,.85)},
|
yellow= {hsv(0.16, 0.82, 0.90)},
|
||||||
lime= {hsv(0.25, .85,.85)},
|
lime= {hsv(0.18, 0.89, 0.88)},
|
||||||
jade= {hsv(0.3125,.85,.85)},
|
jade= {hsv(0.23, 1.00, 0.82)},
|
||||||
green= {hsv(0.375, .85,.85)},
|
green= {hsv(0.33, 1.00, 0.81)},
|
||||||
aqua= {hsv(0.4375,.85,.85)},
|
aqua= {hsv(0.48, 1.00, 0.74)},
|
||||||
cyan= {hsv(0.5, .85,.85)},
|
cyan= {hsv(0.53, 1.00, 0.88)},
|
||||||
navy= {hsv(0.5625,.85,.85)},
|
navy= {hsv(0.56, 1.00, 1.00)},
|
||||||
sea= {hsv(0.625, .85,.85)},
|
sea= {hsv(0.61, 1.00, 1.00)},
|
||||||
blue= {hsv(0.6875,.85,.85)},
|
blue= {hsv(0.64, 1.00, 0.95)},
|
||||||
violet= {hsv(0.75, .85,.85)},
|
violet= {hsv(0.73, 1.00, 0.91)},
|
||||||
purple= {hsv(0.8125,.85,.85)},
|
purple= {hsv(0.80, 1.00, 0.81)},
|
||||||
magenta= {hsv(0.875, .85,.85)},
|
magenta= {hsv(0.86, 1.00, 0.78)},
|
||||||
wine= {hsv(0.9375,.85,.85)},
|
wine= {hsv(0.94, 0.96, 0.91)},
|
||||||
|
|
||||||
lRed= {hsv(0, .5,.95)},
|
lRed= {hsv(0.00, 0.38, 0.93)},
|
||||||
lFire= {hsv(0.0625,.5,.95)},
|
lFire= {hsv(0.04, 0.45, 0.91)},
|
||||||
lOrange= {hsv(0.125, .5,.95)},
|
lOrange= {hsv(0.10, 0.53, 0.92)},
|
||||||
lYellow= {hsv(0.1875,.5,.95)},
|
lYellow= {hsv(0.15, 0.61, 0.95)},
|
||||||
lLime= {hsv(0.25, .5,.95)},
|
lLime= {hsv(0.19, 0.66, 0.92)},
|
||||||
lJade= {hsv(0.3125,.5,.95)},
|
lJade= {hsv(0.24, 0.56, 0.90)},
|
||||||
lGreen= {hsv(0.375, .5,.95)},
|
lGreen= {hsv(0.34, 0.49, 0.89)},
|
||||||
lAqua= {hsv(0.4375,.5,.95)},
|
lAqua= {hsv(0.49, 0.59, 0.85)},
|
||||||
lCyan= {hsv(0.5, .5,.95)},
|
lCyan= {hsv(0.51, 0.77, 0.88)},
|
||||||
lNavy= {hsv(0.5625,.5,.95)},
|
lNavy= {hsv(0.54, 0.80, 0.95)},
|
||||||
lSea= {hsv(0.625, .5,.95)},
|
lSea= {hsv(0.56, 0.72, 0.97)},
|
||||||
lBlue= {hsv(0.6875,.5,.95)},
|
lBlue= {hsv(0.64, 0.44, 0.96)},
|
||||||
lViolet= {hsv(0.75, .5,.95)},
|
lViolet= {hsv(0.73, 0.47, 0.95)},
|
||||||
lPurple= {hsv(0.8125,.5,.95)},
|
lPurple= {hsv(0.80, 0.62, 0.89)},
|
||||||
lMagenta={hsv(0.875, .5,.95)},
|
lMagenta= {hsv(0.86, 0.61, 0.89)},
|
||||||
lWine= {hsv(0.9375,.5,.95)},
|
lWine= {hsv(0.93, 0.57, 0.92)},
|
||||||
|
|
||||||
dRed= {hsv(0, .9,.5)},
|
dRed= {hsv(0.00, 0.80, 0.48)},
|
||||||
dFire= {hsv(0.0625,.9,.5)},
|
dFire= {hsv(0.04, 0.80, 0.34)},
|
||||||
dOrange= {hsv(0.125, .9,.5)},
|
dOrange= {hsv(0.07, 0.80, 0.39)},
|
||||||
dYellow= {hsv(0.1875,.9,.5)},
|
dYellow= {hsv(0.11, 0.80, 0.37)},
|
||||||
dLime= {hsv(0.25, .9,.5)},
|
dLime= {hsv(0.17, 0.80, 0.26)},
|
||||||
dJade= {hsv(0.3125,.9,.5)},
|
dJade= {hsv(0.31, 0.80, 0.27)},
|
||||||
dGreen= {hsv(0.375, .9,.5)},
|
dGreen= {hsv(0.33, 0.80, 0.26)},
|
||||||
dAqua= {hsv(0.4375,.9,.5)},
|
dAqua= {hsv(0.47, 0.80, 0.23)},
|
||||||
dCyan= {hsv(0.5, .9,.5)},
|
dCyan= {hsv(0.50, 0.80, 0.30)},
|
||||||
dNavy= {hsv(0.5625,.9,.5)},
|
dNavy= {hsv(0.59, 0.80, 0.42)},
|
||||||
dSea= {hsv(0.625, .9,.5)},
|
dSea= {hsv(0.64, 0.80, 0.40)},
|
||||||
dBlue= {hsv(0.6875,.9,.5)},
|
dBlue= {hsv(0.67, 0.80, 0.34)},
|
||||||
dViolet= {hsv(0.75, .9,.5)},
|
dViolet= {hsv(0.71, 0.80, 0.35)},
|
||||||
dPurple= {hsv(0.8125,.9,.5)},
|
dPurple= {hsv(0.76, 0.80, 0.32)},
|
||||||
dMagenta={hsv(0.875, .9,.5)},
|
dMagenta= {hsv(0.87, 0.80, 0.28)},
|
||||||
dWine= {hsv(0.9375,.9,.5)},
|
dWine= {hsv(0.92, 0.80, 0.28)},
|
||||||
|
|
||||||
black= {hsv(0,0,.05)},
|
black= {hsv(0.04, 0.04, 0.14)},
|
||||||
dGray= {hsv(0,0,0.3)},
|
dGray= {hsv(0.02, 0.05, 0.44)},
|
||||||
gray= {hsv(0,0,0.6)},
|
gray= {hsv(0.02, 0.05, 0.65)},
|
||||||
lGray= {hsv(0,0,0.8)},
|
lGray= {hsv(0.02, 0.06, 0.86)},
|
||||||
white= {hsv(0,0,.97)},
|
white= {hsv(0.01, 0.02, 0.99)},
|
||||||
}
|
}
|
||||||
for k,v in next,{
|
for k,v in next,{
|
||||||
R='red', F='fire', O='orange', Y='yellow', L='lime', J='jade', G='green', A='aqua', C='cyan', N='navy', S='sea', B='blue', V='violet', P='purple', M='magenta', W='wine',
|
R='red', F='fire', O='orange', Y='yellow', L='lime', J='jade', G='green', A='aqua', C='cyan', N='navy', S='sea', B='blue', V='violet', P='purple', M='magenta', W='wine',
|
||||||
|
|||||||
@@ -622,9 +622,8 @@ function love.run()
|
|||||||
--Left-down infos
|
--Left-down infos
|
||||||
gc_setColor(devColor[devMode])
|
gc_setColor(devColor[devMode])
|
||||||
gc_print("MEM "..gcinfo(),safeX+5,-40)
|
gc_print("MEM "..gcinfo(),safeX+5,-40)
|
||||||
gc_print("Lines "..FREEROW.getCount(),safeX+5,-60)
|
gc_print("Tasks "..TASK.getCount(),safeX+5,-60)
|
||||||
gc_print("Tasks "..TASK.getCount(),safeX+5,-80)
|
gc_print("Voices "..VOC.getQueueCount(),safeX+5,-80)
|
||||||
gc_print("Voices "..VOC.getQueueCount(),safeX+5,-100)
|
|
||||||
|
|
||||||
--Update & draw frame time
|
--Update & draw frame time
|
||||||
table.insert(frameTimeList,1,dt)table.remove(frameTimeList,126)
|
table.insert(frameTimeList,1,dt)table.remove(frameTimeList,126)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
local type,rem=type,table.remove
|
local type,rem=type,table.remove
|
||||||
|
local rnd=math.random
|
||||||
|
|
||||||
local sfxList={}
|
local sfxList={}
|
||||||
local packSetting={}
|
local packSetting={}
|
||||||
@@ -55,14 +56,14 @@ function SFX.loadSample(pack)
|
|||||||
assert(type(pack)=='table',"Usage: SFX.loadsample([table])")
|
assert(type(pack)=='table',"Usage: SFX.loadsample([table])")
|
||||||
assert(pack.name,"No field: name")
|
assert(pack.name,"No field: name")
|
||||||
assert(pack.path,"No field: path")
|
assert(pack.path,"No field: path")
|
||||||
packSetting[pack.name]={
|
|
||||||
base=(_getTuneHeight(pack.base)or 37)-1,
|
|
||||||
}
|
|
||||||
local num=1
|
local num=1
|
||||||
while love.filesystem.getInfo(pack.path..'/'..num..'.ogg')do
|
while love.filesystem.getInfo(pack.path..'/'..num..'.ogg')do
|
||||||
Sources[pack.name..num]={love.audio.newSource(pack.path..'/'..num..'.ogg','static')}
|
Sources[pack.name..num]={love.audio.newSource(pack.path..'/'..num..'.ogg','static')}
|
||||||
num=num+1
|
num=num+1
|
||||||
end
|
end
|
||||||
|
local base=(_getTuneHeight(pack.base)or 37)-1
|
||||||
|
local top=base+num-1
|
||||||
|
packSetting[pack.name]={base=base,top=top}
|
||||||
LOG((num-1).." "..pack.name.." samples loaded")
|
LOG((num-1).." "..pack.name.." samples loaded")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -87,14 +88,21 @@ function SFX.playSample(pack,...)--vol-2, sampSet1, vol-3, sampSet2, vol-1
|
|||||||
if type(arg[i])=='number'then
|
if type(arg[i])=='number'then
|
||||||
vol=arg[i]
|
vol=arg[i]
|
||||||
else
|
else
|
||||||
local tune=arg[i]
|
local base=packSetting[pack].base
|
||||||
tune=_getTuneHeight(tune)-packSetting[pack].base
|
local top=packSetting[pack].top
|
||||||
SFX.play(pack..tune,vol)
|
local tune=_getTuneHeight(arg[i])--Absolute tune in number
|
||||||
|
local playTune=tune+rnd(-2,2)
|
||||||
|
if playTune<base then--Too low notes
|
||||||
|
playTune=base
|
||||||
|
elseif playTune>top then--Too high notes
|
||||||
|
playTune=top
|
||||||
|
end
|
||||||
|
SFX.play(pack..playTune-base,vol,nil,tune-playTune)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function SFX.play(name,vol,pos)
|
function SFX.play(name,vol,pos,pitch)
|
||||||
if volume==0 or vol==0 then return end
|
if volume==0 or vol==0 then return end
|
||||||
local S=Sources[name]--Source list
|
local S=Sources[name]--Source list
|
||||||
if not S then return end
|
if not S then return end
|
||||||
@@ -117,6 +125,7 @@ function SFX.play(name,vol,pos)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
S:setVolume(((vol or 1)*volume)^1.626)
|
S:setVolume(((vol or 1)*volume)^1.626)
|
||||||
|
S:setPitch(pitch and 1.0594630943592953^pitch or 1)
|
||||||
S:play()
|
S:play()
|
||||||
end
|
end
|
||||||
function SFX.fplay(name,vol,pos)
|
function SFX.fplay(name,vol,pos)
|
||||||
|
|||||||
10
legals.md
10
legals.md
@@ -2,11 +2,7 @@
|
|||||||
TECHMINO and "26F Studio" are trademarks of 26F Studio.
|
TECHMINO and "26F Studio" are trademarks of 26F Studio.
|
||||||
The TECHMINO game and source code are under a GNU Lesser General Public License Version 3.
|
The TECHMINO game and source code are under a GNU Lesser General Public License Version 3.
|
||||||
|
|
||||||
|
"Tetris" is the registered trademark of The Tetris Holding, LLC, licensed to The Tetris Company, Inc. TECHMINO is not a fan game of Tetris. TECHMINO and 26F Studio are not affiliated with Tetris Holding, LLC or The Tetris Company, Inc. in any way.
|
||||||
TECHMINO is not a fan game of Tetris. TECHMINO and 26F Studio are not affiliated with Tetris Holding, LLC or The Tetris Company, Inc. in any way.
|
|
||||||
|
|
||||||
|
|
||||||
"Tetris" is the registered trademark of The Tetris Holding, LLC, licensed to The Tetris Company, Inc.
|
|
||||||
|
|
||||||
|
|
||||||
Powered by LÖVE, © 2006-2021 LÖVE Development Team.
|
Powered by LÖVE, © 2006-2021 LÖVE Development Team.
|
||||||
@@ -21,7 +17,7 @@ The Apple logo, "Apple Inc.," iOS, iPadOS, macOS, iPhone, and Mac are registered
|
|||||||
"Windows", the Windows logo, "Xbox", Xbox logo, and "Microsoft" are registered trademarks of Microsoft Corporation in the United States of America and other countries or regions.
|
"Windows", the Windows logo, "Xbox", Xbox logo, and "Microsoft" are registered trademarks of Microsoft Corporation in the United States of America and other countries or regions.
|
||||||
|
|
||||||
|
|
||||||
Alibaba Sans is copyrighted by Alibaba Group Holding Limited. Alibaba is a trademark of Alibaba Group Holding Limited in the People’s Republic of China and other countries or regions.
|
Source Han Sans is copyrighted by Adobe Inc. Source Han Sans and Abode are registered trademarks of Adobe Inc. in United States and other countries or regions. Source Han Sans is licensed under the SIL Open Font License.
|
||||||
|
|
||||||
|
|
||||||
IBM Plex is copyrighted by the International Business Machines Corporation. IBM and IBM Plex are trademarks of IBM Corp, registered in many jurisdictions worldwide. IBM Plex is licensed under the SIL Open Font License.
|
IBM Plex is copyrighted by the International Business Machines Corporation. IBM and IBM Plex are trademarks of IBM Corp, registered in many jurisdictions worldwide. IBM Plex is licensed under the SIL Open Font License.
|
||||||
@@ -50,5 +46,5 @@ Linux is a registered trademark of Linus Torvalds.
|
|||||||
|
|
||||||
Touhou Project © Team Shanghai Alice 2002-2021.
|
Touhou Project © Team Shanghai Alice 2002-2021.
|
||||||
|
|
||||||
|
|
||||||
All other trademarks are the properties of their respective owners.
|
All other trademarks are the properties of their respective owners.
|
||||||
|
|
||||||
|
|||||||
18
main.lua
18
main.lua
@@ -90,7 +90,7 @@ for _,v in next,fs.getDirectoryItems('parts/shaders')do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
FREEROW= require'parts.freeRow'
|
LINE= require'parts.line'
|
||||||
DATA= require'parts.data'
|
DATA= require'parts.data'
|
||||||
|
|
||||||
TEXTURE= require'parts.texture'
|
TEXTURE= require'parts.texture'
|
||||||
@@ -104,6 +104,12 @@ PLY= require'parts.player'
|
|||||||
NETPLY= require'parts.netPlayer'
|
NETPLY= require'parts.netPlayer'
|
||||||
MODES= require'parts.modes'
|
MODES= require'parts.modes'
|
||||||
|
|
||||||
|
setmetatable(TEXTURE,{__index=function(self,k)
|
||||||
|
MES.new('warn',"No texture called: "..k)
|
||||||
|
self[k]=love.graphics.newCanvas(1,1)
|
||||||
|
return self[k]
|
||||||
|
end})
|
||||||
|
|
||||||
table.insert(_LOADTIMELIST_,("Load Parts: %.3fs"):format(TIME()-_LOADTIME_))
|
table.insert(_LOADTIMELIST_,("Load Parts: %.3fs"):format(TIME()-_LOADTIME_))
|
||||||
|
|
||||||
--Init Zframework
|
--Init Zframework
|
||||||
@@ -444,7 +450,7 @@ do
|
|||||||
fs.remove('record/round_l.rec')
|
fs.remove('record/round_l.rec')
|
||||||
fs.remove('record/round_u.rec')
|
fs.remove('record/round_u.rec')
|
||||||
end
|
end
|
||||||
if STAT.version<1604 then
|
if RANKS.stack_e then
|
||||||
RANKS.stack_e=nil
|
RANKS.stack_e=nil
|
||||||
RANKS.stack_h=nil
|
RANKS.stack_h=nil
|
||||||
RANKS.stack_u=nil
|
RANKS.stack_u=nil
|
||||||
@@ -460,6 +466,14 @@ do
|
|||||||
fs.remove('record/stack_40l.rec')
|
fs.remove('record/stack_40l.rec')
|
||||||
fs.remove('record/stack_100l.rec')
|
fs.remove('record/stack_100l.rec')
|
||||||
end
|
end
|
||||||
|
if RANKS.rhythm_e then
|
||||||
|
RANKS.rhythm_e=nil
|
||||||
|
RANKS.rhythm_h=nil
|
||||||
|
RANKS.rhythm_u=nil
|
||||||
|
fs.remove('record/rhythm_e.rec')
|
||||||
|
fs.remove('record/rhythm_h.rec')
|
||||||
|
fs.remove('record/rhythm_u.rec')
|
||||||
|
end
|
||||||
if STAT.version~=VERSION.code then
|
if STAT.version~=VERSION.code then
|
||||||
for k,v in next,MODE_UPDATE_MAP do
|
for k,v in next,MODE_UPDATE_MAP do
|
||||||
if RANKS[k]then
|
if RANKS[k]then
|
||||||
|
|||||||
Binary file not shown.
BIN
media/music/peak.ogg
Normal file
BIN
media/music/peak.ogg
Normal file
Binary file not shown.
@@ -686,13 +686,7 @@ do
|
|||||||
sfx='prerotate'
|
sfx='prerotate'
|
||||||
elseif P:ifoverlap(icb,x,y+1)and P:ifoverlap(icb,x-1,y)and P:ifoverlap(icb,x+1,y)then
|
elseif P:ifoverlap(icb,x,y+1)and P:ifoverlap(icb,x-1,y)and P:ifoverlap(icb,x+1,y)then
|
||||||
sfx='rotatekick'
|
sfx='rotatekick'
|
||||||
if P.gameEnv.shakeFX then
|
P:_rotateField(d)
|
||||||
if d==1 or d==3 then
|
|
||||||
P.fieldOff.va=P.fieldOff.va+(2-d)*6e-3
|
|
||||||
else
|
|
||||||
P.fieldOff.va=P.fieldOff.va+P:getCenterX()*3e-3
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
sfx='rotate'
|
sfx='rotate'
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,10 +12,9 @@ local ins,rem=table.insert,table.remove
|
|||||||
local back={}
|
local back={}
|
||||||
|
|
||||||
local t
|
local t
|
||||||
local fan,petal
|
local petal
|
||||||
function back.init()
|
function back.init()
|
||||||
t=0
|
t=0
|
||||||
fan=SVG_TITLE_FAN
|
|
||||||
petal={}
|
petal={}
|
||||||
end
|
end
|
||||||
function back.update()
|
function back.update()
|
||||||
@@ -62,7 +61,7 @@ function back.draw()
|
|||||||
|
|
||||||
gc_setLineWidth(6)
|
gc_setLineWidth(6)
|
||||||
gc_setColor(.8,.9,1,.3)
|
gc_setColor(.8,.9,1,.3)
|
||||||
for i=1,8 do gc_polygon('line',fan[i])end
|
for i=1,8 do gc_polygon('line',SVG_TITLE_FAN[i])end
|
||||||
|
|
||||||
gc_setLineWidth(2)
|
gc_setLineWidth(2)
|
||||||
gc_setColor(1,.5,.7,.3)
|
gc_setColor(1,.5,.7,.3)
|
||||||
|
|||||||
@@ -44,8 +44,7 @@ local function _ifoverlapAI(f,bk,x,y)
|
|||||||
end
|
end
|
||||||
end end
|
end end
|
||||||
end
|
end
|
||||||
local discardRow=FREEROW.discard
|
local getRow,discardRow=LINE.new,LINE.discard
|
||||||
local getRow=FREEROW.get
|
|
||||||
local function _resetField(f0,f,start)
|
local function _resetField(f0,f,start)
|
||||||
for _=#f,start,-1 do
|
for _=#f,start,-1 do
|
||||||
discardRow(f[_])
|
discardRow(f[_])
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ return{
|
|||||||
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
P:shakeField(9)
|
||||||
D.wave=D.wave+1
|
D.wave=D.wave+1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ return{
|
|||||||
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
P:shakeField(10)
|
||||||
D.wave=D.wave+1
|
D.wave=D.wave+1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.atk>0 then
|
if P.lastPiece.atk>0 then
|
||||||
P:receive(nil,P.lastPiece.atk,0,generateLine(P.holeRND:random(10)))
|
P:receive(nil,P.lastPiece.atk,0,generateLine(P.holeRND:random(10)))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.atk>0 then
|
if P.lastPiece.atk>0 then
|
||||||
P:receive(nil,P.lastPiece.atk,120,generateLine(P.holeRND:random(10)))
|
P:receive(nil,P.lastPiece.atk,120,generateLine(P.holeRND:random(10)))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.atk>0 then
|
if P.lastPiece.atk>0 then
|
||||||
P:receive(nil,P.lastPiece.atk,30,generateLine(P.holeRND:random(10)))
|
P:receive(nil,P.lastPiece.atk,30,generateLine(P.holeRND:random(10)))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.atk>0 then
|
if P.lastPiece.atk>0 then
|
||||||
P:receive(nil,P.lastPiece.atk,60,generateLine(P.holeRND:random(10)))
|
P:receive(nil,P.lastPiece.atk,60,generateLine(P.holeRND:random(10)))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ return{
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
local F=P.field
|
local F=P.field
|
||||||
for i=1,24 do
|
for i=1,24 do
|
||||||
F[i]=FREEROW.get(20)
|
F[i]=LINE.new(20)
|
||||||
P.visTime[i]=FREEROW.get(20)
|
P.visTime[i]=LINE.new(20)
|
||||||
for x=4,7 do F[i][x]=0 end
|
for x=4,7 do F[i][x]=0 end
|
||||||
end
|
end
|
||||||
if P.holeRND:random()<.6 then
|
if P.holeRND:random()<.6 then
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.row>0 then
|
if P.lastPiece.row>0 then
|
||||||
for _=1,#P.clearedRow do
|
for _=1,#P.clearedRow do
|
||||||
local h=#P.field
|
local h=#P.field
|
||||||
P.field[h+1]=FREEROW.get(20)
|
P.field[h+1]=LINE.new(20)
|
||||||
P.visTime[h+1]=FREEROW.get(20)
|
P.visTime[h+1]=LINE.new(20)
|
||||||
for i=4,7 do P.field[h+1][i]=0 end
|
for i=4,7 do P.field[h+1][i]=0 end
|
||||||
end
|
end
|
||||||
if P.combo>P.modeData.maxCombo then
|
if P.combo>P.modeData.maxCombo then
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.row==0 then
|
if P.lastPiece.row==0 then
|
||||||
P:lose()
|
P:lose()
|
||||||
else
|
else
|
||||||
for _=1,P.lastPiece.row do
|
for _=1,P.lastPiece.row do
|
||||||
local h=#P.field
|
local h=#P.field
|
||||||
P.field[h+1]=FREEROW.get(20)
|
P.field[h+1]=LINE.new(20)
|
||||||
P.visTime[h+1]=FREEROW.get(20)
|
P.visTime[h+1]=LINE.new(20)
|
||||||
for i=4,7 do P.field[h+1][i]=0 end
|
for i=4,7 do P.field[h+1][i]=0 end
|
||||||
end
|
end
|
||||||
if P.combo>P.modeData.maxCombo then
|
if P.combo>P.modeData.maxCombo then
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mText(TEXTOBJ.atk,63,243)
|
mText(TEXTOBJ.atk,63,243)
|
||||||
mText(TEXTOBJ.eff,63,363)
|
mText(TEXTOBJ.eff,63,363)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.atk>=100 then
|
if P.stat.atk>=100 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.garbageBeneath==0 then
|
if P.garbageBeneath==0 then
|
||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
D.finished=D.finished+1
|
D.finished=D.finished+1
|
||||||
if FIELD[D.finished+1]then
|
if FIELD[D.finished+1]then
|
||||||
P.waiting=26
|
P.waiting=26
|
||||||
for i=#P.field,1,-1 do
|
for i=#P.field,1,-1 do
|
||||||
FREEROW.discard(P.field[i])
|
|
||||||
FREEROW.discard(P.visTime[i])
|
|
||||||
P.field[i],P.visTime[i]=nil
|
P.field[i],P.visTime[i]=nil
|
||||||
end
|
end
|
||||||
setField(P,D.finished+1)
|
setField(P,D.finished+1)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=10 then
|
if P.stat.row>=10 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=100 then
|
if P.stat.row>=100 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=1000 then
|
if P.stat.row>=1000 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=20 then
|
if P.stat.row>=20 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=200 then
|
if P.stat.row>=200 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=40 then
|
if P.stat.row>=40 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=400 then
|
if P.stat.row>=400 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if #PLY_ALIVE>1 then
|
if #PLY_ALIVE>1 then
|
||||||
P.control=false
|
P.control=false
|
||||||
local id1=P.sid
|
local id1=P.sid
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
|
if P.stat.piece%7==0 and #PLY_ALIVE>1 then
|
||||||
P.control=false
|
P.control=false
|
||||||
local id1=P.sid
|
local id1=P.sid
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ return{
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=10
|
P.modeData.target=10
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
if P.stat.row>=D.target then
|
if P.stat.row>=D.target then
|
||||||
if D.target==110 then
|
if D.target==110 then
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ return{
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=10
|
P.modeData.target=10
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
if P.stat.row>=D.target then
|
if P.stat.row>=D.target then
|
||||||
if D.target==110 then
|
if D.target==110 then
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ return{
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=10
|
P.modeData.target=10
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
if P.stat.row>=D.target then
|
if P.stat.row>=D.target then
|
||||||
if D.target==100 then
|
if D.target==100 then
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ return{
|
|||||||
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
||||||
P.dropDelay,P.gameEnv.drop=2,2
|
P.dropDelay,P.gameEnv.drop=2,2
|
||||||
end
|
end
|
||||||
|
P:shakeField(3)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ return{
|
|||||||
P.dropDelay,P.gameEnv.drop=5,5
|
P.dropDelay,P.gameEnv.drop=5,5
|
||||||
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
||||||
end
|
end
|
||||||
|
P:shakeField(3)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ return{
|
|||||||
setFont(55)
|
setFont(55)
|
||||||
mStr(100-P.stat.dig,63,265)
|
mStr(100-P.stat.dig,63,265)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
for _=1,math.min(10,100-P.stat.dig)-P.garbageBeneath do
|
for _=1,math.min(10,100-P.stat.dig)-P.garbageBeneath do
|
||||||
P:garbageRise(21,1,P:getHolePos())
|
P:garbageRise(21,1,P:getHolePos())
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ return{
|
|||||||
setFont(55)
|
setFont(55)
|
||||||
mStr(10-P.stat.dig,63,265)
|
mStr(10-P.stat.dig,63,265)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.dig==10 then
|
if P.stat.dig==10 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ return{
|
|||||||
setFont(55)
|
setFont(55)
|
||||||
mStr(400-P.stat.dig,63,265)
|
mStr(400-P.stat.dig,63,265)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
for _=1,math.min(10,400-P.stat.dig)-P.garbageBeneath do
|
for _=1,math.min(10,400-P.stat.dig)-P.garbageBeneath do
|
||||||
P:garbageRise(21,1,P:getHolePos())
|
P:garbageRise(21,1,P:getHolePos())
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ return{
|
|||||||
setFont(55)
|
setFont(55)
|
||||||
mStr(40-P.stat.dig,63,265)
|
mStr(40-P.stat.dig,63,265)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
for _=1,math.min(10,40-P.stat.dig)-P.garbageBeneath do
|
for _=1,math.min(10,40-P.stat.dig)-P.garbageBeneath do
|
||||||
P:garbageRise(21,1,P:getHolePos())
|
P:garbageRise(21,1,P:getHolePos())
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ return{
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=10
|
P.modeData.target=10
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local flag
|
local flag
|
||||||
local l=P.lastPiece
|
local l=P.lastPiece
|
||||||
if P.combo>1 then flag=true;P:showText("2x",0,-220,40,'flicker',.3)end
|
if P.combo>1 then flag=true;P:showText("2x",0,-220,40,'flicker',.3)end
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ return
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=50
|
P.modeData.target=50
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=P.modeData.target then
|
if P.stat.row>=P.modeData.target then
|
||||||
if P.modeData.target==50 then
|
if P.modeData.target==50 then
|
||||||
P.gameEnv.drop=.25
|
P.gameEnv.drop=.25
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ return
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=10
|
P.modeData.target=10
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=P.modeData.target then
|
if P.stat.row>=P.modeData.target then
|
||||||
if P.modeData.target%300==0 then
|
if P.modeData.target%300==0 then
|
||||||
P.gameEnv.wait=P.gameEnv.wait-1
|
P.gameEnv.wait=P.gameEnv.wait-1
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ return
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=10
|
P.modeData.target=10
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=P.modeData.target then
|
if P.stat.row>=P.modeData.target then
|
||||||
if P.modeData.target==200 then
|
if P.modeData.target==200 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ return{
|
|||||||
mStr(P.stat.row,63,230)
|
mStr(P.stat.row,63,230)
|
||||||
mStr(P.stat.clears[4],63,340)
|
mStr(P.stat.clears[4],63,340)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.modeData.rankPoint<140-passPoint then--If Less then X
|
if P.modeData.rankPoint<140-passPoint then--If Less then X
|
||||||
local R=#P.clearedRow
|
local R=#P.clearedRow
|
||||||
if R>0 then
|
if R>0 then
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ return{
|
|||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
|
|
||||||
local c=#P.clearedRow
|
local c=#P.clearedRow
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ return{
|
|||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
|
|
||||||
local c=#P.clearedRow
|
local c=#P.clearedRow
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ return
|
|||||||
task=function(P)
|
task=function(P)
|
||||||
P.modeData.target=10
|
P.modeData.target=10
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=P.modeData.target then
|
if P.stat.row>=P.modeData.target then
|
||||||
if P.modeData.target==200 then
|
if P.modeData.target==200 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ return{
|
|||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local D=P.modeData
|
local D=P.modeData
|
||||||
|
|
||||||
local c=#P.clearedRow
|
local c=#P.clearedRow
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ return
|
|||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local p=P.modeData.pt+P.lastPiece.row
|
local p=P.modeData.pt+P.lastPiece.row
|
||||||
if p>=P.modeData.target then
|
if p>=P.modeData.target then
|
||||||
local ENV=P.gameEnv
|
local ENV=P.gameEnv
|
||||||
@@ -55,8 +55,8 @@ return
|
|||||||
P.field[i][P.holeRND:random(10)]=0
|
P.field[i][P.holeRND:random(10)]=0
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
P.field[i]=FREEROW.get(0)
|
P.field[i]=LINE.new(0)
|
||||||
P.visTime[i]=FREEROW.get(30)
|
P.visTime[i]=LINE.new(30)
|
||||||
for j=1,10 do
|
for j=1,10 do
|
||||||
if P.holeRND:random()>.9 then
|
if P.holeRND:random()>.9 then
|
||||||
P.field[i][j]=P.holeRND:random(16)
|
P.field[i][j]=P.holeRND:random(16)
|
||||||
@@ -89,6 +89,7 @@ return
|
|||||||
ENV.bone=true
|
ENV.bone=true
|
||||||
|
|
||||||
P.modeData.target=62
|
P.modeData.target=62
|
||||||
|
SFX.play('reach')
|
||||||
else
|
else
|
||||||
p=41
|
p=41
|
||||||
end
|
end
|
||||||
@@ -112,6 +113,7 @@ return
|
|||||||
ENV.fall=4
|
ENV.fall=4
|
||||||
|
|
||||||
P.modeData.target=162
|
P.modeData.target=162
|
||||||
|
SFX.play('reach')
|
||||||
elseif T==162 then--Stage 7: speed up+++
|
elseif T==162 then--Stage 7: speed up+++
|
||||||
P:stageComplete(7)
|
P:stageComplete(7)
|
||||||
P.life=P.life+1
|
P.life=P.life+1
|
||||||
@@ -146,6 +148,7 @@ return
|
|||||||
P.modeData.target=260
|
P.modeData.target=260
|
||||||
p=260
|
p=260
|
||||||
SFX.play('blip_2')
|
SFX.play('blip_2')
|
||||||
|
SFX.play('reach')
|
||||||
else
|
else
|
||||||
p=260
|
p=260
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ return{
|
|||||||
mStr(P.stat.pc,63,340)
|
mStr(P.stat.pc,63,340)
|
||||||
mText(TEXTOBJ.pc,63,410)
|
mText(TEXTOBJ.pc,63,410)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.pc and P.stat.row%4==0 then
|
if P.lastPiece.pc and P.stat.row%4==0 then
|
||||||
P.gameEnv.heightLimit=4
|
P.gameEnv.heightLimit=4
|
||||||
if P.stat.pc%5==0 then
|
if P.stat.pc%5==0 then
|
||||||
|
|||||||
@@ -46,6 +46,6 @@ return{
|
|||||||
mStr(P.stat.pc,63,340)
|
mStr(P.stat.pc,63,340)
|
||||||
mText(TEXTOBJ.pc,63,410)
|
mText(TEXTOBJ.pc,63,410)
|
||||||
end,
|
end,
|
||||||
dropPiece=check,
|
hook_drop=check,
|
||||||
task=check,
|
task=check,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,6 @@ return{
|
|||||||
mStr(P.stat.pc,63,340)
|
mStr(P.stat.pc,63,340)
|
||||||
mText(TEXTOBJ.pc,63,410)
|
mText(TEXTOBJ.pc,63,410)
|
||||||
end,
|
end,
|
||||||
dropPiece=check,
|
hook_drop=check,
|
||||||
task=check,
|
task=check,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
local gc=love.graphics
|
|
||||||
local dropSpeed={[0]=40,33,27,20,16,12,11,10,9,8,7,6,5,4,3,3,2,2,1,1}
|
|
||||||
|
|
||||||
return{
|
|
||||||
drop=40,
|
|
||||||
lock=1e99,
|
|
||||||
wait=20,
|
|
||||||
fall=90,
|
|
||||||
mesDisp=function(P)
|
|
||||||
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
|
|
||||||
|
|
||||||
setFont(30)
|
|
||||||
mStr(P.modeData.bpm,63,178)
|
|
||||||
|
|
||||||
gc.setLineWidth(4)
|
|
||||||
gc.circle('line',63,200,30)
|
|
||||||
|
|
||||||
local beat=P.modeData.counter/P.modeData.beatFrame
|
|
||||||
gc.setColor(1,1,1,1-beat)
|
|
||||||
gc.setLineWidth(3)
|
|
||||||
gc.circle('line',63,200,30+45*beat)
|
|
||||||
end,
|
|
||||||
dropPiece=function(P)
|
|
||||||
if P.stat.row>=P.modeData.target then
|
|
||||||
if P.modeData.target==200 then
|
|
||||||
P:win('finish')
|
|
||||||
else
|
|
||||||
P.modeData.bpm=40+2*P.modeData.target/10
|
|
||||||
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
|
|
||||||
P.gameEnv.fall=P.modeData.beatFrame
|
|
||||||
P.gameEnv.wait=math.max(P.gameEnv.wait-2,0)
|
|
||||||
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
|
|
||||||
P.modeData.target=P.modeData.target+10
|
|
||||||
SFX.play('reach')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
task=function(P)
|
|
||||||
P.modeData.target=10
|
|
||||||
P.modeData.bpm=40
|
|
||||||
P.modeData.beatFrame=90
|
|
||||||
P.modeData.counter=90
|
|
||||||
while true do
|
|
||||||
YIELD()
|
|
||||||
P.modeData.counter=P.modeData.counter-1
|
|
||||||
if P.modeData.counter==0 then
|
|
||||||
P.modeData.counter=P.modeData.beatFrame
|
|
||||||
SFX.play('click',.3)
|
|
||||||
P:act_hardDrop()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
local gc=love.graphics
|
|
||||||
local dropSpeed={[0]=30,26,23,20,17,14,12,10,8,6,5,4,3,2,1,1,.5,.5,.25,.25}
|
|
||||||
|
|
||||||
return{
|
|
||||||
drop=30,
|
|
||||||
lock=1e99,
|
|
||||||
wait=10,
|
|
||||||
fall=60,
|
|
||||||
mesDisp=function(P)
|
|
||||||
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
|
|
||||||
|
|
||||||
setFont(30)
|
|
||||||
mStr(P.modeData.bpm,63,178)
|
|
||||||
|
|
||||||
gc.setLineWidth(4)
|
|
||||||
gc.circle('line',63,200,30)
|
|
||||||
|
|
||||||
local beat=P.modeData.counter/P.modeData.beatFrame
|
|
||||||
gc.setColor(1,1,1,1-beat)
|
|
||||||
gc.setLineWidth(3)
|
|
||||||
gc.circle('line',63,200,30+45*beat)
|
|
||||||
end,
|
|
||||||
dropPiece=function(P)
|
|
||||||
if P.stat.row>=P.modeData.target then
|
|
||||||
if P.modeData.target==200 then
|
|
||||||
P:win('finish')
|
|
||||||
else
|
|
||||||
P.modeData.bpm=60+3*P.modeData.target/10
|
|
||||||
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
|
|
||||||
P.gameEnv.fall=P.modeData.beatFrame
|
|
||||||
P.gameEnv.wait=math.max(P.gameEnv.wait-1,0)
|
|
||||||
P.gameEnv.drop=dropSpeed[P.modeData.target/10]
|
|
||||||
P.modeData.target=P.modeData.target+10
|
|
||||||
SFX.play('reach')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
task=function(P)
|
|
||||||
P.modeData.target=10
|
|
||||||
P.modeData.bpm=60
|
|
||||||
P.modeData.beatFrame=60
|
|
||||||
P.modeData.counter=60
|
|
||||||
while true do
|
|
||||||
YIELD()
|
|
||||||
P.modeData.counter=P.modeData.counter-1
|
|
||||||
if P.modeData.counter==0 then
|
|
||||||
P.modeData.counter=P.modeData.beatFrame
|
|
||||||
SFX.play('click',.3)
|
|
||||||
P:act_hardDrop()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
local gc=love.graphics
|
|
||||||
|
|
||||||
return{
|
|
||||||
drop=.5,
|
|
||||||
lock=1e99,
|
|
||||||
wait=5,
|
|
||||||
fall=30,
|
|
||||||
mesDisp=function(P)
|
|
||||||
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
|
|
||||||
|
|
||||||
setFont(30)
|
|
||||||
mStr(P.modeData.bpm,63,178)
|
|
||||||
|
|
||||||
gc.setLineWidth(4)
|
|
||||||
gc.circle('line',63,200,30)
|
|
||||||
|
|
||||||
local beat=P.modeData.counter/P.modeData.beatFrame
|
|
||||||
gc.setColor(1,1,1,1-beat)
|
|
||||||
gc.setLineWidth(3)
|
|
||||||
gc.circle('line',63,200,30+45*beat)
|
|
||||||
end,
|
|
||||||
dropPiece=function(P)
|
|
||||||
if P.stat.row>=P.modeData.target then
|
|
||||||
if P.modeData.target==200 then
|
|
||||||
P:win('finish')
|
|
||||||
else
|
|
||||||
P.modeData.bpm=120+2*P.modeData.target/10
|
|
||||||
P.modeData.beatFrame=math.floor(3600/P.modeData.bpm)
|
|
||||||
P.gameEnv.fall=P.modeData.beatFrame
|
|
||||||
P.gameEnv.wait=math.max(P.gameEnv.wait-1,0)
|
|
||||||
if P.modeData.target==50 then
|
|
||||||
P.gameEnv.das=5
|
|
||||||
P.gameEnv.drop=.25
|
|
||||||
elseif P.modeData.target==100 then
|
|
||||||
P.gameEnv.das=4
|
|
||||||
P:set20G(true)
|
|
||||||
end
|
|
||||||
P.modeData.target=P.modeData.target+10
|
|
||||||
SFX.play('reach')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
task=function(P)
|
|
||||||
P.modeData.target=10
|
|
||||||
P.modeData.bpm=120
|
|
||||||
P.modeData.beatFrame=30
|
|
||||||
P.modeData.counter=30
|
|
||||||
while true do
|
|
||||||
YIELD()
|
|
||||||
P.modeData.counter=P.modeData.counter-1
|
|
||||||
if P.modeData.counter==0 then
|
|
||||||
P.modeData.counter=P.modeData.beatFrame
|
|
||||||
SFX.play('click',.3)
|
|
||||||
P:act_hardDrop()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,24 @@
|
|||||||
|
local gc=love.graphics
|
||||||
|
local gc_draw,gc_print,gc_setColor=gc.draw,gc.print,gc.setColor
|
||||||
|
local setFont=setFont
|
||||||
|
|
||||||
|
local PLAYERS,PLY_ALIVE=PLAYERS,PLY_ALIVE
|
||||||
|
|
||||||
return{
|
return{
|
||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
PLY.draw.drawRoyaleInfo(P)
|
setFont(35)
|
||||||
|
mStr(#PLY_ALIVE.."/"..#PLAYERS,63,175)
|
||||||
|
mStr(P.modeData.ko,80,215)
|
||||||
|
gc_draw(TEXTOBJ.ko,60-TEXTOBJ.ko:getWidth(),222)
|
||||||
|
setFont(20)
|
||||||
|
gc_setColor(1,.5,0,.6)
|
||||||
|
gc_print(P.badge,103,227)
|
||||||
|
gc_setColor(.97,.97,.97)
|
||||||
|
setFont(25)
|
||||||
|
mStr(text.powerUp[P.strength],63,290)
|
||||||
|
gc_setColor(1,1,1)
|
||||||
|
for i=1,P.strength do
|
||||||
|
gc_draw(IMG.badgeIcon,16*i+6,260)
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ return{
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.stat.row>=40 then
|
if P.stat.row>=40 then
|
||||||
P:win('finish')
|
P:win('finish')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ return{
|
|||||||
mStr(r,63,265)
|
mStr(r,63,265)
|
||||||
PLY.draw.drawTargetLine(P,r)
|
PLY.draw.drawTargetLine(P,r)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local F=P.field
|
local F=P.field
|
||||||
for y=1,#F do
|
for y=1,#F do
|
||||||
local l=F[y]
|
local l=F[y]
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ return{
|
|||||||
mText(TEXTOBJ.line,63,350)
|
mText(TEXTOBJ.line,63,350)
|
||||||
PLY.draw.drawMarkLine(P,20,.3,1,1,TIME()%.42<.21 and .95 or .6)
|
PLY.draw.drawMarkLine(P,20,.3,1,1,TIME()%.42<.21 and .95 or .6)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_die=function(P)
|
||||||
if #P.field>20 then
|
local cc=P:clearFilledLines(P.garbageBeneath+1,#P.field-P.garbageBeneath)
|
||||||
local cc=P:clearFilledLines(P.garbageBeneath+1,#P.field-P.garbageBeneath)
|
if cc>0 then
|
||||||
local h=20-cc-P.garbageBeneath
|
local h=20-cc-P.garbageBeneath
|
||||||
if h>0 then
|
if h>0 then
|
||||||
P:garbageRise(21,h,2e10-1)
|
P:garbageRise(21,h,2e10-1)
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
return{
|
|
||||||
fieldH=21,
|
|
||||||
fillClear=false,
|
|
||||||
mesDisp=function(P)
|
|
||||||
setFont(60)
|
|
||||||
mStr(P.stat.row,63,280)
|
|
||||||
mText(TEXTOBJ.line,63,350)
|
|
||||||
PLY.draw.drawMarkLine(P,18,.3,1,1,TIME()%.42<.21 and .95 or .6)
|
|
||||||
end,
|
|
||||||
dropPiece=function(P)
|
|
||||||
if #P.field>20 then
|
|
||||||
local cc=P:clearFilledLines(P.garbageBeneath+1,#P.field-P.garbageBeneath)
|
|
||||||
local h=20-cc-P.garbageBeneath-2
|
|
||||||
if h>0 then
|
|
||||||
P:garbageRise(21,h,2e10-1)
|
|
||||||
if P.garbageBeneath>=20 then
|
|
||||||
P:lose()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -7,9 +7,9 @@ return{
|
|||||||
mText(TEXTOBJ.line,63,350)
|
mText(TEXTOBJ.line,63,350)
|
||||||
PLY.draw.drawMarkLine(P,17,.3,1,1,TIME()%.42<.21 and .95 or .6)
|
PLY.draw.drawMarkLine(P,17,.3,1,1,TIME()%.42<.21 and .95 or .6)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_die=function(P)
|
||||||
if #P.field>20 then
|
local cc=P:clearFilledLines(P.garbageBeneath+1,#P.field-P.garbageBeneath)
|
||||||
local cc=P:clearFilledLines(P.garbageBeneath+1,#P.field-P.garbageBeneath)
|
if cc>0 then
|
||||||
local h=20-cc-P.garbageBeneath-3
|
local h=20-cc-P.garbageBeneath-3
|
||||||
if h>0 then
|
if h>0 then
|
||||||
P:garbageRise(21,h,2e10-1)
|
P:garbageRise(21,h,2e10-1)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ return{
|
|||||||
if D.wave==60 then
|
if D.wave==60 then
|
||||||
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
||||||
end
|
end
|
||||||
|
P:shakeField(3)
|
||||||
D.timer=0
|
D.timer=0
|
||||||
D.wave=D.wave+1
|
D.wave=D.wave+1
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ return{
|
|||||||
if D.wave==30 then
|
if D.wave==30 then
|
||||||
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
P:_showText(text.maxspeed,0,-140,100,'appear',.6)
|
||||||
end
|
end
|
||||||
|
P:shakeField(9)
|
||||||
D.timer=0
|
D.timer=0
|
||||||
D.wave=D.wave+1
|
D.wave=D.wave+1
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ return{
|
|||||||
mStr(P.stat.clear[7][4],63,250)
|
mStr(P.stat.clear[7][4],63,250)
|
||||||
mText(TEXTOBJ.techrash,63,315)
|
mText(TEXTOBJ.techrash,63,315)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
if P.lastPiece.row>0 and P.lastPiece.row<4 then
|
if P.lastPiece.row>0 and P.lastPiece.row<4 then
|
||||||
P:lose()
|
P:lose()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ return{
|
|||||||
PLY.draw.applyField(P)
|
PLY.draw.applyField(P)
|
||||||
local L=P.modeData.history
|
local L=P.modeData.history
|
||||||
for i=1,#L do
|
for i=1,#L do
|
||||||
gc.setColor(1,.3,.3,.45-i*.04)
|
gc.setColor(1,.3,.3,.5-i*.04)
|
||||||
gc.rectangle('fill',30*L[i]-30,0,30,600)
|
gc.rectangle('fill',30*L[i]-30,0,30,600)
|
||||||
end
|
end
|
||||||
PLY.draw.cancelField(P)
|
PLY.draw.cancelField(P)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local C=P.lastPiece
|
local C=P.lastPiece
|
||||||
if C.row>0 then
|
if C.row>0 then
|
||||||
if C.row==4 then
|
if C.row==4 then
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ return{
|
|||||||
mStr(P.modeData.tsd,63,250)
|
mStr(P.modeData.tsd,63,250)
|
||||||
mText(TEXTOBJ.tsd,63,315)
|
mText(TEXTOBJ.tsd,63,315)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local C=P.lastPiece
|
local C=P.lastPiece
|
||||||
if C.row>0 then
|
if C.row>0 then
|
||||||
if C.id==5 and C.row==2 and C.spin then
|
if C.id==5 and C.row==2 and C.spin then
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ return{
|
|||||||
PLY.draw.cancelField(P)
|
PLY.draw.cancelField(P)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local C=P.lastPiece
|
local C=P.lastPiece
|
||||||
if C.row>0 then
|
if C.row>0 then
|
||||||
if C.id==5 and C.row==2 and C.spin then
|
if C.id==5 and C.row==2 and C.spin then
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ return{
|
|||||||
PLY.draw.applyField(P)
|
PLY.draw.applyField(P)
|
||||||
local L=P.modeData.history
|
local L=P.modeData.history
|
||||||
for i=1,#L do
|
for i=1,#L do
|
||||||
gc.setColor(1,.3,.3,.3-i*.05)
|
gc.setColor(1,.3,.3,.4-i*.05)
|
||||||
gc.rectangle('fill',30*L[i]-30,0,30,600)
|
gc.rectangle('fill',30*L[i]-30,0,30,600)
|
||||||
end
|
end
|
||||||
PLY.draw.cancelField(P)
|
PLY.draw.cancelField(P)
|
||||||
end,
|
end,
|
||||||
dropPiece=function(P)
|
hook_drop=function(P)
|
||||||
local C=P.lastPiece
|
local C=P.lastPiece
|
||||||
if C.row>0 then
|
if C.row>0 then
|
||||||
if C.id==5 and C.row==2 and C.spin then
|
if C.id==5 and C.row==2 and C.spin then
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,37 +0,0 @@
|
|||||||
local FREEROW={}
|
|
||||||
local L={}--Storage
|
|
||||||
local len=0--Length
|
|
||||||
function FREEROW.reset(num)
|
|
||||||
if num<len then
|
|
||||||
for i=len,num+1,-1 do
|
|
||||||
L[i]=nil
|
|
||||||
end
|
|
||||||
elseif num>len then
|
|
||||||
for i=len+1,num do
|
|
||||||
L[i]={0,0,0,0,0,0,0,0,0,0,garbage=false}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
len=num
|
|
||||||
end
|
|
||||||
function FREEROW.get(val,ifGarbage)
|
|
||||||
if len==0 then
|
|
||||||
for i=1,10 do
|
|
||||||
L[i]={0,0,0,0,0,0,0,0,0,0,garbage=false}
|
|
||||||
end
|
|
||||||
len=len+10
|
|
||||||
end
|
|
||||||
local t=L[len]
|
|
||||||
for i=1,10 do t[i]=val end
|
|
||||||
t.garbage=ifGarbage==true
|
|
||||||
L[len]=nil
|
|
||||||
len=len-1
|
|
||||||
return t
|
|
||||||
end
|
|
||||||
function FREEROW.discard(t)
|
|
||||||
len=len+1
|
|
||||||
L[len]=t
|
|
||||||
end
|
|
||||||
function FREEROW.getCount()
|
|
||||||
return len
|
|
||||||
end
|
|
||||||
return FREEROW
|
|
||||||
@@ -257,8 +257,8 @@ function setField(P,page)
|
|||||||
local t=P.showTime*3
|
local t=P.showTime*3
|
||||||
for y=1,height do
|
for y=1,height do
|
||||||
local notEmpty=notEmptyLine(F[y])
|
local notEmpty=notEmptyLine(F[y])
|
||||||
P.field[y]=FREEROW.get(0,notEmpty)
|
P.field[y]=LINE.new(0,notEmpty)
|
||||||
P.visTime[y]=FREEROW.get(t)
|
P.visTime[y]=LINE.new(t)
|
||||||
if notEmpty then
|
if notEmpty then
|
||||||
for x=1,10 do
|
for x=1,10 do
|
||||||
P.field[y][x]=F[y][x]
|
P.field[y][x]=F[y][x]
|
||||||
@@ -331,8 +331,8 @@ function destroyPlayers()--Destroy all player objects, restore freerows and free
|
|||||||
P.canvas:release()
|
P.canvas:release()
|
||||||
end
|
end
|
||||||
while P.field[1]do
|
while P.field[1]do
|
||||||
FREEROW.discard(rem(P.field))
|
rem(P.field)
|
||||||
FREEROW.discard(rem(P.visTime))
|
rem(P.visTime)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
TABLE.cut(PLAYERS)
|
TABLE.cut(PLAYERS)
|
||||||
@@ -668,7 +668,6 @@ do--function resetGameData(args)
|
|||||||
GAME.secDangerous=false
|
GAME.secDangerous=false
|
||||||
GAME.stage=1
|
GAME.stage=1
|
||||||
end
|
end
|
||||||
FREEROW.reset(30*#PLAYERS)
|
|
||||||
TASK.removeTask_code(task_showMods)
|
TASK.removeTask_code(task_showMods)
|
||||||
if GAME.setting.allowMod then
|
if GAME.setting.allowMod then
|
||||||
TASK.new(task_showMods)
|
TASK.new(task_showMods)
|
||||||
|
|||||||
@@ -345,7 +345,6 @@ EVENTSETS={
|
|||||||
'marathon_n','marathon_h',
|
'marathon_n','marathon_h',
|
||||||
'master_n','master_h','master_final','master_m','master_ex','master_ph',
|
'master_n','master_h','master_final','master_m','master_ex','master_ph',
|
||||||
'pctrain_n','pctrain_l','pc_inf',
|
'pctrain_n','pctrain_l','pc_inf',
|
||||||
'rhythm_e','rhythm_h','rhythm_u',
|
|
||||||
'survivor_e','survivor_n','survivor_h','survivor_l','survivor_u',
|
'survivor_e','survivor_n','survivor_h','survivor_l','survivor_u',
|
||||||
'tsd_e','tsd_h','tsd_u',
|
'tsd_e','tsd_h','tsd_u',
|
||||||
'ultra',
|
'ultra',
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ return{
|
|||||||
{"Translator Note 1",
|
{"Translator Note 1",
|
||||||
"",
|
"",
|
||||||
"help",
|
"help",
|
||||||
"This translation of the TetroDictionary is provided by me, User670 (Discord: User670#9501).\n\nThe translation may not completely reflect the contents of the original Chinese text.\n\nCorrected by C29H25N3O5.\n\nTo view the list of contributors or make contributions, feel free to visit the GitHub page.",
|
"This translation of the TetroDictionary is provided by me, User670 (Discord: User670#9501).\n\nThe translation may not completely reflect the contents of the original Chinese text.\n\nCorrected by C₂₉H₂₅N₃O₅.\n\nTo view the list of contributors or make contributions, feel free to visit the GitHub page.",
|
||||||
"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_en.lua",
|
"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_en.lua",
|
||||||
},
|
},
|
||||||
{"Official Website",
|
{"Official Website",
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ return{
|
|||||||
net_game={
|
net_game={
|
||||||
ready="Ready",
|
ready="Ready",
|
||||||
spectate="Spectate",
|
spectate="Spectate",
|
||||||
cancel="Cancel",
|
cancel="Cancel ready",
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="Game Settings",
|
title="Game Settings",
|
||||||
@@ -677,9 +677,6 @@ return{
|
|||||||
['dig_400l']= {"Dig", "400L", "Dig 400 garbage lines"},
|
['dig_400l']= {"Dig", "400L", "Dig 400 garbage lines"},
|
||||||
['drought_n']= {"Drought", "100L", "No I-pieces available"},
|
['drought_n']= {"Drought", "100L", "No I-pieces available"},
|
||||||
['drought_l']= {"Drought+", "100L", "W T F"},
|
['drought_l']= {"Drought+", "100L", "W T F"},
|
||||||
['stack_e']= {"Stack", "EASY", "Pack them!"},
|
|
||||||
['stack_h']= {"Stack", "HARD", "Pack them!"},
|
|
||||||
['stack_u']= {"Stack", "ULTIMATE", "Pack them!"},
|
|
||||||
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with increasing speed"},
|
['marathon_n']= {"Marathon", "NORMAL", "200-line marathon with increasing speed"},
|
||||||
['marathon_h']= {"Marathon", "HARD", "200-line high-speed marathon"},
|
['marathon_h']= {"Marathon", "HARD", "200-line high-speed marathon"},
|
||||||
['solo_e']= {"Battle", "EASY", "Defeat the AI!"},
|
['solo_e']= {"Battle", "EASY", "Defeat the AI!"},
|
||||||
@@ -704,9 +701,6 @@ return{
|
|||||||
['master_final']= {"Master", "FINAL", "20G and beyond"},
|
['master_final']= {"Master", "FINAL", "20G and beyond"},
|
||||||
['master_ph']= {"Master", "PHANTASM", "???"},
|
['master_ph']= {"Master", "PHANTASM", "???"},
|
||||||
['master_ex']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant"},
|
['master_ex']= {"GrandMaster", "EXTRA", "An eternity shorter than an instant"},
|
||||||
['rhythm_e']= {"Rhythm", "EASY", "200-line low-BPM rhythm marathon"},
|
|
||||||
['rhythm_h']= {"Rhythm", "HARD", "200-line medium BPM rhythm marathon"},
|
|
||||||
['rhythm_u']= {"Rhythm", "ULTIMATE", "200-line high-BPM rhythm marathon"},
|
|
||||||
['blind_e']= {"Invisible", "HALF", "For novices"},
|
['blind_e']= {"Invisible", "HALF", "For novices"},
|
||||||
['blind_n']= {"Invisible", "ALL", "For intermediates"},
|
['blind_n']= {"Invisible", "ALL", "For intermediates"},
|
||||||
['blind_h']= {"Invisible", "SUDDEN", "For the experienced"},
|
['blind_h']= {"Invisible", "SUDDEN", "For the experienced"},
|
||||||
@@ -837,7 +831,7 @@ return{
|
|||||||
"Powered by Un..LÖVE",
|
"Powered by Un..LÖVE",
|
||||||
"pps-0.01",
|
"pps-0.01",
|
||||||
"Server down randomly",
|
"Server down randomly",
|
||||||
"Some requirements to achieve rank S are intentionally set to be difficult for even the best players.",
|
"Some requirements to achieve rank X are intentionally set to be difficult for even the best players.",
|
||||||
"Soon you'll be able to play against friends and foes all over the world.",
|
"Soon you'll be able to play against friends and foes all over the world.",
|
||||||
"Split clear coming soon!",
|
"Split clear coming soon!",
|
||||||
"sudo rm -rf /*",
|
"sudo rm -rf /*",
|
||||||
@@ -868,6 +862,7 @@ return{
|
|||||||
"You can set the spawning orientation for each tetromino.",
|
"You can set the spawning orientation for each tetromino.",
|
||||||
"ZS JL T O I",
|
"ZS JL T O I",
|
||||||
{C.C,"Also try 15puzzle!"},
|
{C.C,"Also try 15puzzle!"},
|
||||||
|
{C.C,"Also try Ballance!"},
|
||||||
{C.C,"Also try Minecraft!"},
|
{C.C,"Also try Minecraft!"},
|
||||||
{C.C,"Also try Minesweeper!"},
|
{C.C,"Also try Minesweeper!"},
|
||||||
{C.C,"Also try Orzmic!"},
|
{C.C,"Also try Orzmic!"},
|
||||||
@@ -878,6 +873,8 @@ return{
|
|||||||
{C.C,"Also try Terraria!"},
|
{C.C,"Also try Terraria!"},
|
||||||
{C.C,"Also try Touhou Project!"},
|
{C.C,"Also try Touhou Project!"},
|
||||||
{C.C,"Also try VVVVVV!"},
|
{C.C,"Also try VVVVVV!"},
|
||||||
|
{C.C,"Also try World of goo!"},
|
||||||
|
{C.C,"Also try Zuma!"},
|
||||||
{C.H,"REGRET!!"},
|
{C.H,"REGRET!!"},
|
||||||
{C.lP,"Secret number: 626"},
|
{C.lP,"Secret number: 626"},
|
||||||
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
|
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
|
||||||
|
|||||||
@@ -283,7 +283,7 @@ return{
|
|||||||
net_game={
|
net_game={
|
||||||
ready="Estoy Listo",
|
ready="Estoy Listo",
|
||||||
spectate="Espectear",
|
spectate="Espectear",
|
||||||
cancel="Cancelar",
|
-- cancel="Cancel ready",
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="Ajustes del Juego",
|
title="Ajustes del Juego",
|
||||||
@@ -636,9 +636,6 @@ return{
|
|||||||
['dig_400l']= {"Queso", "400L", "Limpia 400 líneas de queso."},
|
['dig_400l']= {"Queso", "400L", "Limpia 400 líneas de queso."},
|
||||||
['drought_n']= {"Sequía", "100L", "¡Sin piezas I!"},
|
['drought_n']= {"Sequía", "100L", "¡Sin piezas I!"},
|
||||||
['drought_l']= {"Sequía+", "100L", "Guat de foc..."},
|
['drought_l']= {"Sequía+", "100L", "Guat de foc..."},
|
||||||
['stack_e']= {"Stack", "Fácil", "¡Sin dejar huecos!"},
|
|
||||||
['stack_h']= {"Stack", "Difícil", "¡Sin dejar huecos!"},
|
|
||||||
['stack_u']= {"Stack", "Supremo", "¡Sin dejar huecos!"},
|
|
||||||
['marathon_n']= {"Maratón", "Normal", "Maratón de 200 líneas con velocidad en aumento."},
|
['marathon_n']= {"Maratón", "Normal", "Maratón de 200 líneas con velocidad en aumento."},
|
||||||
['marathon_h']= {"Maratón", "Difícil", "Maratón de 200 líneas a velocidad máxima."},
|
['marathon_h']= {"Maratón", "Difícil", "Maratón de 200 líneas a velocidad máxima."},
|
||||||
['solo_e']= {"VS.", "Fácil", "¡Derrota a la CPU!"},
|
['solo_e']= {"VS.", "Fácil", "¡Derrota a la CPU!"},
|
||||||
@@ -662,9 +659,6 @@ return{
|
|||||||
-- ['master_m']= {"Master", "M21", "For 20G Masters."},
|
-- ['master_m']= {"Master", "M21", "For 20G Masters."},
|
||||||
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo: el final es inalcanzable."},
|
['master_final']= {"Master", "FINAL", "El verdadero 20G Supremo: el final es inalcanzable."},
|
||||||
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro, acepta este desafío"},
|
['master_ex']= {"GrandMaster", "EXTRA", "Para ser un gran maestro, acepta este desafío"},
|
||||||
['rhythm_e']= {"Al Ritmo", "Fácil", "Maratón rítmica de 200 líneas con bajo bpm."},
|
|
||||||
['rhythm_h']= {"Al Ritmo", "Difícil", "Maratón rítmica de 200 líneas con bpm moderado."},
|
|
||||||
['rhythm_u']= {"Al Ritmo", "Supremo", "Maratón rítmica de 200 líneas con bpm elevado."},
|
|
||||||
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
|
['blind_e']= {"A Ciegas", "Parcial", "Para novatos."},
|
||||||
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
|
['blind_n']= {"A Ciegas", "Total", "Para jugadores intermedios."},
|
||||||
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
|
['blind_h']= {"A Ciegas", "Inmediato", "Para jugadores experimentados"},
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ return{
|
|||||||
net_game={
|
net_game={
|
||||||
-- ready="Ready",
|
-- ready="Ready",
|
||||||
-- spectate="Spectate",
|
-- spectate="Spectate",
|
||||||
-- cancel="Cancel",
|
-- cancel="Cancel ready",
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="Paramètres du jeu",
|
title="Paramètres du jeu",
|
||||||
@@ -638,7 +638,6 @@ return{
|
|||||||
['drought_n']= {"Drought", "100L", "Pas de pièce I !"},
|
['drought_n']= {"Drought", "100L", "Pas de pièce I !"},
|
||||||
['drought_l']= {"Drought+", "100L", "WTF ??!!"},
|
['drought_l']= {"Drought+", "100L", "WTF ??!!"},
|
||||||
-- ['stack_e']= {"Stack", "FACILE", "Pack them!"},
|
-- ['stack_e']= {"Stack", "FACILE", "Pack them!"},
|
||||||
-- ['stack_h']= {"Stack", "DIFFICILE", "Pack them!"},
|
|
||||||
-- ['stack_u']= {"Stack", "ULTIME", "Pack them!"},
|
-- ['stack_u']= {"Stack", "ULTIME", "Pack them!"},
|
||||||
['marathon_n']= {"Marathon", "NORMAL", "Marathon de 200 lignes."},
|
['marathon_n']= {"Marathon", "NORMAL", "Marathon de 200 lignes."},
|
||||||
['marathon_h']= {"Marathon", "DIFFICILE", "Marathon de 200 lignes à très haute vitesse"},
|
['marathon_h']= {"Marathon", "DIFFICILE", "Marathon de 200 lignes à très haute vitesse"},
|
||||||
@@ -664,9 +663,6 @@ return{
|
|||||||
['master_final']= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
|
['master_final']= {"Master", "FINAL", "20G : Un point final impossible à atteindre !"},
|
||||||
-- ['master_ph']= {"Mester", "FANTASMA", "20G: ???"},
|
-- ['master_ph']= {"Mester", "FANTASMA", "20G: ???"},
|
||||||
['master_ex']= {"GrandMaster", "EXTRA", "Tentez de devenir un Grandmaster."},
|
['master_ex']= {"GrandMaster", "EXTRA", "Tentez de devenir un Grandmaster."},
|
||||||
-- ['rhythm_e']= {"Rhythm", "EASY", "200-line low-bpm rhythm marathon."},
|
|
||||||
-- ['rhythm_h']= {"Rhythm", "HARD", "200-line medium-bpm rhythm marathon"},
|
|
||||||
-- ['rhythm_u']= {"Rhythm", "ULTIMATE", "200-line high-bpm rhythm marathon."},
|
|
||||||
['blind_e']= {"Aveugle", "MOITIE", "Pour les novices."},
|
['blind_e']= {"Aveugle", "MOITIE", "Pour les novices."},
|
||||||
['blind_n']= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
|
['blind_n']= {"Aveugle", "TOUT", "Pour les joueurs intermédiaires."},
|
||||||
['blind_h']= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},
|
['blind_h']= {"Aveugle", "SOUDAIN", "Pour les bons jooeurs."},
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ return{
|
|||||||
net_game={
|
net_game={
|
||||||
-- ready="Ready",
|
-- ready="Ready",
|
||||||
-- spectate="Spectate",
|
-- spectate="Spectate",
|
||||||
-- cancel="Cancel",
|
-- cancel="Cancel ready",
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="Config. de jogo",
|
title="Config. de jogo",
|
||||||
@@ -668,7 +668,6 @@ return{
|
|||||||
['drought_n']= {"Drought", "100L", "Sem peça I !"},
|
['drought_n']= {"Drought", "100L", "Sem peça I !"},
|
||||||
['drought_l']= {"Drought+", "100L", "WTF"},
|
['drought_l']= {"Drought+", "100L", "WTF"},
|
||||||
-- ['stack_e']= {"Stack", "FÁCIL", "Pack them!"},
|
-- ['stack_e']= {"Stack", "FÁCIL", "Pack them!"},
|
||||||
-- ['stack_h']= {"Stack", "DIFÍCIL", "Pack them!"},
|
|
||||||
-- ['stack_u']= {"Stack", "ULTIMATE", "Pack them!"},
|
-- ['stack_u']= {"Stack", "ULTIMATE", "Pack them!"},
|
||||||
['marathon_n']= {"Maratona", "NORMAL", "200-line Maratona com velocidade aumentando."},
|
['marathon_n']= {"Maratona", "NORMAL", "200-line Maratona com velocidade aumentando."},
|
||||||
['marathon_h']= {"Maratona", "DIFÍCIL", "200-line Maratona com velocidade alta."},
|
['marathon_h']= {"Maratona", "DIFÍCIL", "200-line Maratona com velocidade alta."},
|
||||||
@@ -694,9 +693,6 @@ return{
|
|||||||
['master_final']= {"Mestre", "FINAL", "20G: Final inalcançável!"},
|
['master_final']= {"Mestre", "FINAL", "20G: Final inalcançável!"},
|
||||||
['master_ph']= {"Mestre", "FANTASMA", "20G: ???"},
|
['master_ph']= {"Mestre", "FANTASMA", "20G: ???"},
|
||||||
['master_ex']= {"GrandMaster", "EXTRA", "Para ser um Grand Master, aceite \nesse desafio."},
|
['master_ex']= {"GrandMaster", "EXTRA", "Para ser um Grand Master, aceite \nesse desafio."},
|
||||||
-- ['rhythm_e']= {"Rhythm", "EASY", "200-line low-bpm rhythm marathon."},
|
|
||||||
-- ['rhythm_h']= {"Rhythm", "HARD", "200-line medium-bpm rhythm marathon"},
|
|
||||||
-- ['rhythm_u']= {"Rhythm", "ULTIMATE", "200-line high-bpm rhythm marathon."},
|
|
||||||
['blind_e']= {"Cego", "METADE", "Para novatos."},
|
['blind_e']= {"Cego", "METADE", "Para novatos."},
|
||||||
['blind_n']= {"Cego", "TUDO", "Para intermediários."},
|
['blind_n']= {"Cego", "TUDO", "Para intermediários."},
|
||||||
['blind_h']= {"Cego", "DE REPENTE", "Para experientes."},
|
['blind_h']= {"Cego", "DE REPENTE", "Para experientes."},
|
||||||
@@ -833,13 +829,16 @@ return{
|
|||||||
"Você pode escolher uma orientação pra cada blococan.",
|
"Você pode escolher uma orientação pra cada blococan.",
|
||||||
"ZS JL T O I",
|
"ZS JL T O I",
|
||||||
{C.C,"Tente também 15puzzle"},
|
{C.C,"Tente também 15puzzle"},
|
||||||
|
{C.C,"Tente também Ballance!"},
|
||||||
|
{C.C,"Tente também Cubo de Rubik"},
|
||||||
{C.C,"Tente também Minecraft"},
|
{C.C,"Tente também Minecraft"},
|
||||||
{C.C,"Tente também Minesweeper"},
|
{C.C,"Tente também Minesweeper"},
|
||||||
{C.C,"Tente também osu!"},
|
{C.C,"Tente também osu!"},
|
||||||
{C.C,"Tente também Phigros"},
|
{C.C,"Tente também Phigros"},
|
||||||
{C.C,"Tente também Cubo de Rubik"},
|
|
||||||
{C.C,"Tente também Terraria"},
|
{C.C,"Tente também Terraria"},
|
||||||
{C.C,"Tente também VVVVVV"},
|
{C.C,"Tente também VVVVVV"},
|
||||||
|
{C.C,"Tente também World of goo!"},
|
||||||
|
{C.C,"Tente também Zuma!"},
|
||||||
{C.F,"Tente também Cultris II"},
|
{C.F,"Tente também Cultris II"},
|
||||||
{C.F,"Tente também Jstris"},
|
{C.F,"Tente também Jstris"},
|
||||||
{C.F,"Tente também Nullpomino"},
|
{C.F,"Tente também Nullpomino"},
|
||||||
|
|||||||
@@ -206,9 +206,6 @@ return{fallback='zh',
|
|||||||
['dig_400l']= {"挖掘", "400L", "挖400行"},
|
['dig_400l']= {"挖掘", "400L", "挖400行"},
|
||||||
['drought_n']= {"干旱", "100L", "放轻松,简单得很"},
|
['drought_n']= {"干旱", "100L", "放轻松,简单得很"},
|
||||||
['drought_l']= {"干旱+", "100L", "有趣的要来了"},
|
['drought_l']= {"干旱+", "100L", "有趣的要来了"},
|
||||||
['stack_e']= {"堆叠", "简单", "智力启蒙玩具(确信"},
|
|
||||||
['stack_h']= {"堆叠", "困难", "智力启蒙玩具(确信"},
|
|
||||||
['stack_u']= {"堆叠", "极限", "智力启蒙玩具(确信"},
|
|
||||||
['marathon_n']= {"马拉松", "普通", "休闲模式"},
|
['marathon_n']= {"马拉松", "普通", "休闲模式"},
|
||||||
['marathon_h']= {"马拉松", "困难", "休闲模式"},
|
['marathon_h']= {"马拉松", "困难", "休闲模式"},
|
||||||
['solo_e']= {"单挑", "简单", "鲨AI"},
|
['solo_e']= {"单挑", "简单", "鲨AI"},
|
||||||
@@ -233,9 +230,6 @@ return{fallback='zh',
|
|||||||
['master_final']= {"大师", "终点", "真正的20G"},
|
['master_final']= {"大师", "终点", "真正的20G"},
|
||||||
['master_ph']= {"大师", "虚幻", "好玩的20G"},
|
['master_ph']= {"大师", "虚幻", "好玩的20G"},
|
||||||
['master_ex']= {"宗师", "EX", "考试20G"},
|
['master_ex']= {"宗师", "EX", "考试20G"},
|
||||||
['rhythm_e']= {"节奏", "简单", "很无聊的"},
|
|
||||||
['rhythm_h']= {"节奏", "困难", "好玩么?"},
|
|
||||||
['rhythm_u']= {"节奏", "极限", "真男人不玩低难度"},
|
|
||||||
['blind_e']= {"隐形", "半隐", "谁都能玩"},
|
['blind_e']= {"隐形", "半隐", "谁都能玩"},
|
||||||
['blind_n']= {"隐形", "全隐", "稍加练习即可"},
|
['blind_n']= {"隐形", "全隐", "稍加练习即可"},
|
||||||
['blind_h']= {"隐形", "瞬隐", "和上一个一样"},
|
['blind_h']= {"隐形", "瞬隐", "和上一个一样"},
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ return{
|
|||||||
net_game={
|
net_game={
|
||||||
ready="准备",
|
ready="准备",
|
||||||
spectate="观战",
|
spectate="观战",
|
||||||
cancel="取消",
|
cancel="取消准备",
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="游戏设置",
|
title="游戏设置",
|
||||||
@@ -681,9 +681,6 @@ return{
|
|||||||
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
|
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
|
||||||
['drought_n']= {"干旱", "100L", "你I没了"},
|
['drought_n']= {"干旱", "100L", "你I没了"},
|
||||||
['drought_l']= {"干旱+", "100L", "后 妈 发 牌"},
|
['drought_l']= {"干旱+", "100L", "后 妈 发 牌"},
|
||||||
['stack_e']= {"堆积", "简单", "搭积木"},
|
|
||||||
['stack_h']= {"堆积", "困难", "搭积木"},
|
|
||||||
['stack_u']= {"堆积", "极限", "搭积木"},
|
|
||||||
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
|
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
|
||||||
['marathon_h']= {"马拉松", "困难", "200行高速马拉松"},
|
['marathon_h']= {"马拉松", "困难", "200行高速马拉松"},
|
||||||
['solo_e']= {"单挑", "简单", "打败AI"},
|
['solo_e']= {"单挑", "简单", "打败AI"},
|
||||||
@@ -708,9 +705,6 @@ return{
|
|||||||
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
|
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
|
||||||
['master_ph']= {"大师", "虚幻", "虚幻20G:???"},
|
['master_ph']= {"大师", "虚幻", "虚幻20G:???"},
|
||||||
['master_ex']= {"宗师", "EX", "成为方块大师"},
|
['master_ex']= {"宗师", "EX", "成为方块大师"},
|
||||||
['rhythm_e']= {"节奏", "简单", "200行低速节奏马拉松"},
|
|
||||||
['rhythm_h']= {"节奏", "困难", "200行中速节奏马拉松"},
|
|
||||||
['rhythm_u']= {"节奏", "极限", "200行高速节奏马拉松"},
|
|
||||||
['blind_e']= {"隐形", "半隐", "不强大脑"},
|
['blind_e']= {"隐形", "半隐", "不强大脑"},
|
||||||
['blind_n']= {"隐形", "全隐", "挺强大脑"},
|
['blind_n']= {"隐形", "全隐", "挺强大脑"},
|
||||||
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
|
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
|
||||||
@@ -936,7 +930,7 @@ return{
|
|||||||
"请勿大力敲打设备!敲坏了就没有Techmino玩了",
|
"请勿大力敲打设备!敲坏了就没有Techmino玩了",
|
||||||
"请勿使用三只手游玩",
|
"请勿使用三只手游玩",
|
||||||
"去玩别的方块的时候记得没有Ospin!",
|
"去玩别的方块的时候记得没有Ospin!",
|
||||||
"全球应该没人能全S评价(大爆炸不算)",
|
"全球目前应该没人能全X评价(大爆炸不算)",
|
||||||
"群友翻译的中文方块百科全书! tetris.huijiwiki.com",
|
"群友翻译的中文方块百科全书! tetris.huijiwiki.com",
|
||||||
"让他三尺又何妨",
|
"让他三尺又何妨",
|
||||||
"如何O-spin: 一秒转626圈(误",
|
"如何O-spin: 一秒转626圈(误",
|
||||||
@@ -1092,10 +1086,11 @@ return{
|
|||||||
"Z块等身抱枕来一个(x",
|
"Z块等身抱枕来一个(x",
|
||||||
{C.C,"<PURE ",C.P,"MEMORY>"},
|
{C.C,"<PURE ",C.P,"MEMORY>"},
|
||||||
{C.C,"15puzzle好玩!"},
|
{C.C,"15puzzle好玩!"},
|
||||||
{C.C,"东方Project,好玩!"},
|
{C.C,"东方Project好玩!"},
|
||||||
{C.C,"魔方好玩!"},
|
{C.C,"魔方好玩!"},
|
||||||
{C.C,"噗哟噗哟好玩!"},
|
{C.C,"噗哟噗哟好玩!"},
|
||||||
{C.C,"扫雷好玩!"},
|
{C.C,"扫雷好玩!"},
|
||||||
|
{C.C,"Ballance好玩!"},
|
||||||
{C.C,"Celeste好玩!"},
|
{C.C,"Celeste好玩!"},
|
||||||
{C.C,"Minecraft好玩!"},
|
{C.C,"Minecraft好玩!"},
|
||||||
{C.C,"Orzmic好玩!"},
|
{C.C,"Orzmic好玩!"},
|
||||||
@@ -1103,6 +1098,8 @@ return{
|
|||||||
{C.C,"Phigros好玩!"},
|
{C.C,"Phigros好玩!"},
|
||||||
{C.C,"Terraria好玩!"},
|
{C.C,"Terraria好玩!"},
|
||||||
{C.C,"VVVVVV好玩!"},
|
{C.C,"VVVVVV好玩!"},
|
||||||
|
{C.C,"World of goo好玩!"},
|
||||||
|
{C.C,"Zuma好玩!"},
|
||||||
{C.H,"暂定段位:9"},
|
{C.H,"暂定段位:9"},
|
||||||
{C.H,"REGRET!!"},
|
{C.H,"REGRET!!"},
|
||||||
{C.lC,"Xspin",C.Z,"是啥"},
|
{C.lC,"Xspin",C.Z,"是啥"},
|
||||||
|
|||||||
@@ -95,9 +95,6 @@ return{
|
|||||||
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
|
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
|
||||||
['drought_n']= {"干旱", "100行", "你I没了"},
|
['drought_n']= {"干旱", "100行", "你I没了"},
|
||||||
['drought_l']= {"干旱+", "100行", "后 妈 发 牌"},
|
['drought_l']= {"干旱+", "100行", "后 妈 发 牌"},
|
||||||
['stack_e']= {"堆积", "简单", "搭积木"},
|
|
||||||
['stack_h']= {"堆积", "困难", "搭积木"},
|
|
||||||
['stack_u']= {"堆积", "极限", "搭积木"},
|
|
||||||
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
|
['marathon_n']= {"马拉松", "普通", "200行加速马拉松"},
|
||||||
['marathon_h']= {"马拉松", "困难", "200行高速马拉松"},
|
['marathon_h']= {"马拉松", "困难", "200行高速马拉松"},
|
||||||
['solo_e']= {"单挑", "简单", "打败机器人"},
|
['solo_e']= {"单挑", "简单", "打败机器人"},
|
||||||
@@ -122,9 +119,6 @@ return{
|
|||||||
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
|
['master_final']= {"大师", "终点", "究极20G:无法触及的终点"},
|
||||||
['master_ph']= {"大师", "虚幻", "虚幻20G:???"},
|
['master_ph']= {"大师", "虚幻", "虚幻20G:???"},
|
||||||
['master_ex']= {"宗师", "EX", "成为方块大师"},
|
['master_ex']= {"宗师", "EX", "成为方块大师"},
|
||||||
['rhythm_e']= {"节奏", "简单", "200行低速节奏马拉松"},
|
|
||||||
['rhythm_h']= {"节奏", "困难", "200行中速节奏马拉松"},
|
|
||||||
['rhythm_u']= {"节奏", "极限", "200行高速节奏马拉松"},
|
|
||||||
['blind_e']= {"隐形", "半隐", "不强大脑"},
|
['blind_e']= {"隐形", "半隐", "不强大脑"},
|
||||||
['blind_n']= {"隐形", "全隐", "挺强大脑"},
|
['blind_n']= {"隐形", "全隐", "挺强大脑"},
|
||||||
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
|
['blind_h']= {"隐形", "瞬隐", "很强大脑"},
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ return{
|
|||||||
net_game={
|
net_game={
|
||||||
ready="准备好的",
|
ready="准备好的",
|
||||||
spectate="凝视",
|
spectate="凝视",
|
||||||
cancel="取消",
|
cancel="取消准备",
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="游戏设置",
|
title="游戏设置",
|
||||||
@@ -678,9 +678,6 @@ return{
|
|||||||
['dig_400l']= {"挖掘", "400升", "挖400条垃圾线"},
|
['dig_400l']= {"挖掘", "400升", "挖400条垃圾线"},
|
||||||
['drought_n']= {"干旱", "100升", "没有工装"},
|
['drought_n']= {"干旱", "100升", "没有工装"},
|
||||||
['drought_l']= {"干旱+", "100升", "搞什么呀"},
|
['drought_l']= {"干旱+", "100升", "搞什么呀"},
|
||||||
['stack_e']= {"堆栈", "容易", "打包!"},
|
|
||||||
['stack_h']= {"堆栈", "硬的", "打包!"},
|
|
||||||
['stack_u']= {"堆栈", "终极", "打包!"},
|
|
||||||
['marathon_n']= {"马拉松赛跑", "正常", "200线加速马拉松"},
|
['marathon_n']= {"马拉松赛跑", "正常", "200线加速马拉松"},
|
||||||
['marathon_h']= {"马拉松赛跑", "硬的", "200线高速马拉松"},
|
['marathon_h']= {"马拉松赛跑", "硬的", "200线高速马拉松"},
|
||||||
['solo_e']= {"战争", "容易", "打败AI!"},
|
['solo_e']= {"战争", "容易", "打败AI!"},
|
||||||
@@ -705,9 +702,6 @@ return{
|
|||||||
['master_final']= {"主人", "最终", "20G及以上"},
|
['master_final']= {"主人", "最终", "20G及以上"},
|
||||||
['master_ph']= {"主人", "幻觉", "???"},
|
['master_ph']= {"主人", "幻觉", "???"},
|
||||||
['master_ex']= {"大师", "额外的", "比瞬间还短的永恒"},
|
['master_ex']= {"大师", "额外的", "比瞬间还短的永恒"},
|
||||||
['rhythm_e']= {"节奏", "容易", "200线低节奏马拉松"},
|
|
||||||
['rhythm_h']= {"节奏", "硬的", "200线中等节奏马拉松"},
|
|
||||||
['rhythm_u']= {"节奏", "终极", "200线高节奏马拉松"},
|
|
||||||
['blind_e']= {"看不见的", "一半", "对于新手来说"},
|
['blind_e']= {"看不见的", "一半", "对于新手来说"},
|
||||||
['blind_n']= {"看不见的", "全部", "对于中间产品"},
|
['blind_n']= {"看不见的", "全部", "对于中间产品"},
|
||||||
['blind_h']= {"看不见的", "突然", "对于有经验的人"},
|
['blind_h']= {"看不见的", "突然", "对于有经验的人"},
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ return{
|
|||||||
net_game={
|
net_game={
|
||||||
ready="準備",
|
ready="準備",
|
||||||
spectate="觀賽",
|
spectate="觀賽",
|
||||||
cancel="取消",
|
cancel="取消準備",
|
||||||
},
|
},
|
||||||
setting_game={
|
setting_game={
|
||||||
title="遊戲設置",
|
title="遊戲設置",
|
||||||
@@ -681,9 +681,6 @@ return{
|
|||||||
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
|
['dig_400l']= {"挖掘", "400L", "挖掘400行"},
|
||||||
['drought_n']= {"乾旱", "100L", "你I沒了"},
|
['drought_n']= {"乾旱", "100L", "你I沒了"},
|
||||||
['drought_l']= {"乾旱+", "100L", "後 媽 發 牌"},
|
['drought_l']= {"乾旱+", "100L", "後 媽 發 牌"},
|
||||||
['stack_e']= {"堆疊", "簡單", "搭積木"},
|
|
||||||
['stack_h']= {"堆疊", "困難", "搭積木"},
|
|
||||||
['stack_u']= {"堆疊", "極限", "搭積木"},
|
|
||||||
['marathon_n']= {"馬拉松", "普通", "200行加速馬拉松"},
|
['marathon_n']= {"馬拉松", "普通", "200行加速馬拉松"},
|
||||||
['marathon_h']= {"馬拉松", "困難", "200行高速馬拉松"},
|
['marathon_h']= {"馬拉松", "困難", "200行高速馬拉松"},
|
||||||
['solo_e']= {"單挑", "簡單", "打敗AI"},
|
['solo_e']= {"單挑", "簡單", "打敗AI"},
|
||||||
@@ -708,9 +705,6 @@ return{
|
|||||||
['master_final']= {"大師", "究極", "究極20G:無法觸及的終點"},
|
['master_final']= {"大師", "究極", "究極20G:無法觸及的終點"},
|
||||||
['master_ph']= {"大師", "虛幻", "虛幻20G:???"},
|
['master_ph']= {"大師", "虛幻", "虛幻20G:???"},
|
||||||
['master_ex']= {"宗師", "EX", "成為方塊大師"},
|
['master_ex']= {"宗師", "EX", "成為方塊大師"},
|
||||||
['rhythm_e']= {"節奏", "簡單", "200行低速節奏馬拉松"},
|
|
||||||
['rhythm_h']= {"節奏", "困難", "200行中速節奏馬拉松"},
|
|
||||||
['rhythm_u']= {"節奏", "極限", "200行高速節奏馬拉松"},
|
|
||||||
['blind_e']= {"隱形", "半隱", "不強大腦"},
|
['blind_e']= {"隱形", "半隱", "不強大腦"},
|
||||||
['blind_n']= {"隱形", "全隱", "挺強大腦"},
|
['blind_n']= {"隱形", "全隱", "挺強大腦"},
|
||||||
['blind_h']= {"隱形", "瞬隱", "很強大腦"},
|
['blind_h']= {"隱形", "瞬隱", "很強大腦"},
|
||||||
|
|||||||
22
parts/line.lua
Normal file
22
parts/line.lua
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
local LINE={}
|
||||||
|
local L={}--Storage
|
||||||
|
local len=0--Length
|
||||||
|
function LINE.new(val,isGarbage)
|
||||||
|
if len==0 then
|
||||||
|
for i=1,10 do
|
||||||
|
L[i]={0,0,0,0,0,0,0,0,0,0,garbage=false}
|
||||||
|
end
|
||||||
|
len=len+10
|
||||||
|
end
|
||||||
|
local t=L[len]
|
||||||
|
for i=1,10 do t[i]=val end
|
||||||
|
t.garbage=isGarbage==true
|
||||||
|
L[len]=nil
|
||||||
|
len=len-1
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
function LINE.discard(t)
|
||||||
|
len=len+1
|
||||||
|
L[len]=t
|
||||||
|
end
|
||||||
|
return LINE
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
return{
|
return{
|
||||||
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
|
{name='sprint_10l', x=0, y=0, size=40,shape=1,icon="sprint1", unlock={'sprint_20l','sprint_40l'}},
|
||||||
{name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"},
|
{name='sprint_20l', x=-200, y=200, size=50,shape=1,icon="sprint1"},
|
||||||
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH','stack_e'}},
|
{name='sprint_40l', x=0, y=-300, size=40,shape=1,icon="sprint2", unlock={'dig_10l','sprint_100l','marathon_n','sprintPenta','sprintMPH'}},
|
||||||
{name='sprint_100l', x=-200, y=0, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
|
{name='sprint_100l', x=-200, y=0, size=50,shape=1,icon="sprint2", unlock={'sprint_400l','drought_n'}},
|
||||||
{name='sprint_400l', x=-400, y=0, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
|
{name='sprint_400l', x=-400, y=0, size=40,shape=1,icon="sprint3", unlock={'sprint_1000l'}},
|
||||||
{name='sprint_1000l', x=-600, y=0, size=40,shape=1,icon="sprint3"},
|
{name='sprint_1000l', x=-600, y=0, size=40,shape=1,icon="sprint3"},
|
||||||
@@ -12,16 +12,12 @@ return{
|
|||||||
{name='drought_n', x=-400, y=200, size=40,shape=1,icon="drought", unlock={'drought_l'}},
|
{name='drought_n', x=-400, y=200, size=40,shape=1,icon="drought", unlock={'drought_l'}},
|
||||||
{name='drought_l', x=-600, y=200, size=40,shape=1,icon="drought"},
|
{name='drought_l', x=-600, y=200, size=40,shape=1,icon="drought"},
|
||||||
|
|
||||||
{name='stack_e', x=-200, y=-400, size=40,shape=1,icon="mess", unlock={'stack_h'}},
|
|
||||||
{name='stack_h', x=-400, y=-400, size=40,shape=1,icon="mess", unlock={'stack_u'}},
|
|
||||||
{name='stack_u', x=-600, y=-400, size=40,shape=1,icon="mess"},
|
|
||||||
|
|
||||||
{name='dig_10l', x=-200, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_40l'}},
|
{name='dig_10l', x=-200, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_40l'}},
|
||||||
{name='dig_40l', x=-400, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_100l'}},
|
{name='dig_40l', x=-400, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_100l'}},
|
||||||
{name='dig_100l', x=-600, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_400l'}},
|
{name='dig_100l', x=-600, y=-200, size=40,shape=1,icon="dig_sprint", unlock={'dig_400l'}},
|
||||||
{name='dig_400l', x=-800, y=-200, size=40,shape=1,icon="dig_sprint"},
|
{name='dig_400l', x=-800, y=-200, size=40,shape=1,icon="dig_sprint"},
|
||||||
|
|
||||||
{name='marathon_n', x=0, y=-600, size=60,shape=1,icon="marathon", unlock={'marathon_h','rhythm_e','solo_e','round_e','blind_e','classic_e','survivor_e','bigbang','zen'}},
|
{name='marathon_n', x=0, y=-600, size=60,shape=1,icon="marathon", unlock={'marathon_h','solo_e','round_e','blind_e','classic_e','survivor_e','bigbang','zen'}},
|
||||||
{name='marathon_h', x=0, y=-800, size=50,shape=1,icon="marathon", unlock={'master_n'}},
|
{name='marathon_h', x=0, y=-800, size=50,shape=1,icon="marathon", unlock={'master_n'}},
|
||||||
|
|
||||||
{name='solo_e', x=-600, y=-1000, size=40,shape=1,icon="solo", unlock={'solo_n'}},
|
{name='solo_e', x=-600, y=-1000, size=40,shape=1,icon="solo", unlock={'solo_n'}},
|
||||||
@@ -50,10 +46,6 @@ return{
|
|||||||
{name='master_ph', x=-150, y=-1500, size=40,shape=2,icon="master"},
|
{name='master_ph', x=-150, y=-1500, size=40,shape=2,icon="master"},
|
||||||
{name='master_ex', x=150, y=-1500, size=40,shape=2,icon="master_ex"},
|
{name='master_ex', x=150, y=-1500, size=40,shape=2,icon="master_ex"},
|
||||||
|
|
||||||
{name='rhythm_e', x=-350, y=-1000, size=40,shape=1,icon="rhythm", unlock={'rhythm_h'}},
|
|
||||||
{name='rhythm_h', x=-350, y=-1200, size=40,shape=3,icon="rhythm", unlock={'rhythm_u'}},
|
|
||||||
{name='rhythm_u', x=-350, y=-1400, size=40,shape=2,icon="rhythm"},
|
|
||||||
|
|
||||||
{name='blind_e', x=150, y=-700, size=40,shape=1,icon="hidden", unlock={'blind_n'}},
|
{name='blind_e', x=150, y=-700, size=40,shape=1,icon="hidden", unlock={'blind_n'}},
|
||||||
{name='blind_n', x=150, y=-800, size=40,shape=1,icon="hidden", unlock={'blind_h'}},
|
{name='blind_n', x=150, y=-800, size=40,shape=1,icon="hidden", unlock={'blind_h'}},
|
||||||
{name='blind_h', x=150, y=-900, size=35,shape=1,icon="hidden", unlock={'blind_l'}},
|
{name='blind_h', x=150, y=-900, size=35,shape=1,icon="hidden", unlock={'blind_l'}},
|
||||||
@@ -61,9 +53,9 @@ return{
|
|||||||
{name='blind_u', x=150, y=-1100, size=30,shape=3,icon="hidden", unlock={'blind_wtf'}},
|
{name='blind_u', x=150, y=-1100, size=30,shape=3,icon="hidden", unlock={'blind_wtf'}},
|
||||||
{name='blind_wtf', x=150, y=-1200, size=25,shape=2,icon="hidden"},
|
{name='blind_wtf', x=150, y=-1200, size=25,shape=2,icon="hidden"},
|
||||||
|
|
||||||
{name='classic_e', x=-150, y=-850, size=40,shape=1,icon="classic", unlock={'classic_h'}},
|
{name='classic_e', x=-170, y=-850, size=40,shape=1,icon="classic", unlock={'classic_h'}},
|
||||||
{name='classic_h', x=-150, y=-970, size=35,shape=2,icon="classic", unlock={'classic_u'}},
|
{name='classic_h', x=-180, y=-1000, size=35,shape=2,icon="classic", unlock={'classic_u'}},
|
||||||
{name='classic_u', x=-150, y=-1090, size=30,shape=2,icon="classic"},
|
{name='classic_u', x=-190, y=-1150, size=30,shape=2,icon="classic"},
|
||||||
|
|
||||||
{name='survivor_e', x=300, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_n'}},
|
{name='survivor_e', x=300, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_n'}},
|
||||||
{name='survivor_n', x=500, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_h','attacker_h','defender_n','dig_h'}},
|
{name='survivor_n', x=500, y=-600, size=40,shape=1,icon="survivor", unlock={'survivor_h','attacker_h','defender_n','dig_h'}},
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.magenta,
|
|
||||||
env={
|
env={
|
||||||
drop=30,lock=60,
|
drop=30,lock=60,
|
||||||
fall=12,
|
fall=12,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.lYellow,
|
|
||||||
env={
|
env={
|
||||||
drop=5,lock=60,
|
drop=5,lock=60,
|
||||||
fall=8,
|
fall=8,
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.magenta,
|
|
||||||
env={
|
env={
|
||||||
drop=10,lock=60,
|
drop=10,lock=60,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
dropPiece={
|
hook_drop={
|
||||||
require'parts.eventsets.backfire_60'.dropPiece,
|
require'parts.eventsets.backfire_60'.hook_drop,
|
||||||
require'parts.eventsets.checkAttack_100'.dropPiece,
|
require'parts.eventsets.checkAttack_100'.hook_drop,
|
||||||
},
|
},
|
||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
setFont(60)
|
setFont(60)
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.red,
|
|
||||||
env={
|
env={
|
||||||
drop=5,lock=45,
|
drop=5,lock=45,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
dropPiece={
|
hook_drop={
|
||||||
require'parts.eventsets.backfire_30'.dropPiece,
|
require'parts.eventsets.backfire_30'.hook_drop,
|
||||||
require'parts.eventsets.checkAttack_100'.dropPiece,
|
require'parts.eventsets.checkAttack_100'.hook_drop,
|
||||||
},
|
},
|
||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
setFont(60)
|
setFont(60)
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.green,
|
|
||||||
env={
|
env={
|
||||||
drop=30,lock=60,
|
drop=30,lock=60,
|
||||||
dropPiece={
|
hook_drop={
|
||||||
require'parts.eventsets.backfire_120'.dropPiece,
|
require'parts.eventsets.backfire_120'.hook_drop,
|
||||||
require'parts.eventsets.checkAttack_100'.dropPiece,
|
require'parts.eventsets.checkAttack_100'.hook_drop,
|
||||||
},
|
},
|
||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
setFont(60)
|
setFont(60)
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.lYellow,
|
|
||||||
env={
|
env={
|
||||||
drop=2,lock=30,
|
drop=2,lock=30,
|
||||||
freshLimit=10,
|
freshLimit=10,
|
||||||
dropPiece={
|
hook_drop={
|
||||||
require'parts.eventsets.backfire_0'.dropPiece,
|
require'parts.eventsets.backfire_0'.hook_drop,
|
||||||
require'parts.eventsets.checkAttack_100'.dropPiece,
|
require'parts.eventsets.checkAttack_100'.hook_drop,
|
||||||
},
|
},
|
||||||
mesDisp=function(P)
|
mesDisp=function(P)
|
||||||
setFont(60)
|
setFont(60)
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.lGray,
|
|
||||||
env={
|
env={
|
||||||
drop=1e99,lock=1e99,
|
drop=1e99,lock=1e99,
|
||||||
holdCount=0,
|
holdCount=0,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.cyan,
|
|
||||||
env={
|
env={
|
||||||
drop=30,lock=45,
|
drop=30,lock=45,
|
||||||
freshLimit=10,
|
freshLimit=10,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.magenta,
|
|
||||||
env={
|
env={
|
||||||
drop=15,lock=45,
|
drop=15,lock=45,
|
||||||
fall=10,
|
fall=10,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.red,
|
|
||||||
env={
|
env={
|
||||||
drop=10,lock=60,
|
drop=10,lock=60,
|
||||||
fall=5,
|
fall=5,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.green,
|
|
||||||
env={
|
env={
|
||||||
drop=15,lock=45,
|
drop=15,lock=45,
|
||||||
freshLimit=10,
|
freshLimit=10,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
return{
|
return{
|
||||||
color=COLOR.red,
|
|
||||||
env={
|
env={
|
||||||
drop=30,lock=60,
|
drop=30,lock=60,
|
||||||
block=false,center=0,ghost=0,
|
block=false,center=0,ghost=0,
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ local border=GC.DO{334,620,
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local sin,min=math.sin,math.min
|
local sin,min=math.sin,math.min
|
||||||
return{
|
return{
|
||||||
color=COLOR.red,
|
|
||||||
env={
|
env={
|
||||||
drop=30,lock=60,
|
drop=30,lock=60,
|
||||||
nextCount=1,
|
nextCount=1,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user