From f8d17b23b6c466714dcddaac584461c5acbfd86f Mon Sep 17 00:00:00 2001 From: MrZ_26 <1046101471@qq.com> Date: Mon, 3 Oct 2022 02:43:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E5=90=8E=E5=8A=A0=E7=A9=BA?= =?UTF-8?q?=E6=A0=BC=20=E8=81=94=E7=BD=91=E7=A8=8D=E5=BE=AE=E6=8E=A8?= =?UTF-8?q?=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Zframework | 2 +- conf.lua | 18 +- main.lua | 64 ++-- parts/RSlist.lua | 428 +++++++++++++-------------- parts/backgrounds/aura.lua | 2 +- parts/backgrounds/bg1.lua | 2 +- parts/backgrounds/bg2.lua | 2 +- parts/backgrounds/blockfall.lua | 2 +- parts/backgrounds/blockhole.lua | 6 +- parts/backgrounds/blockrain.lua | 2 +- parts/backgrounds/blockspace.lua | 2 +- parts/backgrounds/cubes.lua | 2 +- parts/backgrounds/custom.lua | 2 +- parts/backgrounds/fan.lua | 2 +- parts/backgrounds/firework.lua | 2 +- parts/backgrounds/fixColor.lua | 2 +- parts/backgrounds/flink.lua | 2 +- parts/backgrounds/glow.lua | 2 +- parts/backgrounds/lanterns.lua | 2 +- parts/backgrounds/league.lua | 2 +- parts/backgrounds/lightning.lua | 2 +- parts/backgrounds/lightning2.lua | 2 +- parts/backgrounds/matrix.lua | 2 +- parts/backgrounds/rainbow.lua | 2 +- parts/backgrounds/rainbow2.lua | 2 +- parts/backgrounds/rgb.lua | 2 +- parts/backgrounds/snow.lua | 2 +- parts/backgrounds/space.lua | 14 +- parts/backgrounds/tunnel.lua | 2 +- parts/backgrounds/welcome.lua | 2 +- parts/backgrounds/wing.lua | 2 +- parts/bot/bot_9s.lua | 30 +- parts/bot/bot_cc.lua | 8 +- parts/bot/init.lua | 2 +- parts/char.lua | 12 +- parts/customEnv0.lua | 10 +- parts/data.lua | 54 ++-- parts/eventsets/attacker_h.lua | 4 +- parts/eventsets/attacker_u.lua | 2 +- parts/eventsets/classic_l.lua | 4 +- parts/eventsets/marathon_inf.lua | 4 +- parts/eventsets/master_ex.lua | 4 +- parts/eventsets/master_final.lua | 6 +- parts/eventsets/master_g.lua | 8 +- parts/eventsets/master_h.lua | 2 +- parts/eventsets/master_instinct.lua | 2 +- parts/eventsets/master_n.lua | 2 +- parts/eventsets/master_ph.lua | 20 +- parts/eventsets/pctrain_l.lua | 2 +- parts/eventsets/pctrain_n.lua | 2 +- parts/eventsets/secret_grade.lua | 2 +- parts/gameFuncs.lua | 116 ++++---- parts/gameTables.lua | 252 ++++++++-------- parts/language/dict_en.lua | 18 +- parts/language/dict_ja.lua | 20 +- parts/language/dict_zh.lua | 30 +- parts/language/lang_fr.lua | 2 +- parts/language/lang_pt.lua | 2 +- parts/language/lang_symbol.lua | 6 +- parts/language/lang_zh_code.lua | 2 +- parts/line.lua | 4 +- parts/modes/PCbase.lua | 10 +- parts/modes/PClist.lua | 10 +- parts/modes/blind_wtf.lua | 6 +- parts/modes/custom_clear.lua | 2 +- parts/modes/drought_l.lua | 14 +- parts/net.lua | 166 ++++++----- parts/netPlayer.lua | 22 +- parts/player/draw.lua | 128 ++++---- parts/player/init.lua | 122 ++++---- parts/player/player.lua | 436 ++++++++++++++-------------- parts/player/seqGenerators.lua | 32 +- parts/scenes/about.lua | 8 +- parts/scenes/app_15p.lua | 28 +- parts/scenes/app_2048.lua | 64 ++-- parts/scenes/app_AtoZ.lua | 6 +- parts/scenes/app_UTTT.lua | 16 +- parts/scenes/app_calc.lua | 6 +- parts/scenes/app_cannon.lua | 34 +-- parts/scenes/app_console.lua | 46 +-- parts/scenes/app_cubefield.lua | 22 +- parts/scenes/app_dropper.lua | 10 +- parts/scenes/app_dtw.lua | 32 +- parts/scenes/app_link.lua | 46 +-- parts/scenes/app_memorize.lua | 2 +- parts/scenes/app_piano.lua | 2 +- parts/scenes/app_polyforge.lua | 10 +- parts/scenes/app_pong.lua | 26 +- parts/scenes/app_reflect.lua | 18 +- parts/scenes/app_schulteG.lua | 8 +- parts/scenes/app_ten.lua | 6 +- parts/scenes/app_triple.lua | 42 +-- parts/scenes/customGame.lua | 20 +- parts/scenes/custom_field.lua | 136 ++++----- parts/scenes/custom_mission.lua | 18 +- parts/scenes/custom_sequence.lua | 16 +- parts/scenes/depause.lua | 6 +- parts/scenes/dict.lua | 12 +- parts/scenes/game.lua | 22 +- parts/scenes/launchpad.lua | 6 +- parts/scenes/load.lua | 12 +- parts/scenes/main.lua | 20 +- parts/scenes/mod.lua | 4 +- parts/scenes/mode.lua | 36 +-- parts/scenes/music.lua | 10 +- parts/scenes/net_game.lua | 24 +- parts/scenes/net_newRoom.lua | 12 +- parts/scenes/net_rooms.lua | 8 +- parts/scenes/pause.lua | 70 ++--- parts/scenes/savedata.lua | 2 +- parts/scenes/setting_control.lua | 4 +- parts/scenes/setting_game.lua | 4 +- parts/scenes/setting_key.lua | 2 +- parts/scenes/setting_sound.lua | 2 +- parts/scenes/setting_touch.lua | 2 +- parts/scenes/stat.lua | 4 +- parts/scenes/support.lua | 4 +- parts/spinner.lua | 6 +- parts/texture.lua | 26 +- parts/theme.lua | 18 +- parts/virtualKey.lua | 150 +++++----- 121 files changed, 1628 insertions(+), 1622 deletions(-) diff --git a/Zframework b/Zframework index 779c841f..17e3cb26 160000 --- a/Zframework +++ b/Zframework @@ -1 +1 @@ -Subproject commit 779c841f1a84aeb6490198e33c744780fad21c5e +Subproject commit 17e3cb26ed78f40f6e913a145d7e58269b29d37a diff --git a/conf.lua b/conf.lua index 0cb09d85..ef1723c0 100644 --- a/conf.lua +++ b/conf.lua @@ -1,9 +1,9 @@ function love.conf(t) - t.identity='Techmino'--Saving folder + t.identity='Techmino'-- Saving folder t.version="11.1" t.gammacorrect=false - t.appendidentity=true--Search files in source then in save directory - t.accelerometerjoystick=false--Accelerometer=joystick on ios/android + t.appendidentity=true-- Search files in source then in save directory + t.accelerometerjoystick=false-- Accelerometer=joystick on ios/android if t.audio then t.audio.mic=false t.audio.mixwithsystem=true @@ -16,12 +16,12 @@ function love.conf(t) W.borderless=false W.resizable=true W.fullscreen=false - W.vsync=0--Unlimited FPS - W.msaa=0--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=true--High-dpi mode for the window on a Retina display + W.vsync=0-- Unlimited FPS + W.msaa=0-- 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=true-- High-dpi mode for the window on a Retina display W.x,W.y=nil local M=t.modules diff --git a/main.lua b/main.lua index 61b40a32..e52bdcd6 100644 --- a/main.lua +++ b/main.lua @@ -15,24 +15,24 @@ ]]-- ---Var leak check +-- Var leak check -- setmetatable(_G,{__newindex=function(self,k,v) print('>>'..k..string.rep(" ",26-#k),debug.traceback():match("\n.-\n\t(.-): "))rawset(self,k,v) end}) ---System Global Vars Declaration +-- System Global Vars Declaration local fs=love.filesystem VERSION=require"version" TIME=love.timer.getTime SYSTEM=love.system.getOS() if SYSTEM=='OS X' then SYSTEM='macOS' end -FNNS=SYSTEM:find'\79\83'--What does FNSF stand for? IDK so don't ask me lol +FNNS=SYSTEM:find'\79\83'-- What does FNSF stand for? IDK so don't ask me lol MOBILE=SYSTEM=='Android' or SYSTEM=='iOS' ---Global Vars & Settings +-- Global Vars & Settings SFXPACKS={'chiptune'} VOCPACKS={'miya','mono','xiaoya','miku'} FIRSTLAUNCH=false DAILYLAUNCH=false ---System setting +-- System setting math.randomseed(os.time()*626) love.setDeprecationOutput(false) love.keyboard.setKeyRepeat(true) @@ -46,7 +46,7 @@ end local _LOADTIMELIST_={} local _LOADTIME_=TIME() ---Load modules +-- Load modules Z=require'Zframework' FONT.load{ norm='parts/fonts/proportional.otf', @@ -55,7 +55,7 @@ FONT.load{ FONT.setDefault('norm') FONT.setFallback('norm') -SCR.setSize(1280,720)--Initialize Screen size +SCR.setSize(1280,720)-- Initialize Screen size BGM.setMaxSources(5) VOC.setDiversion(.62) @@ -74,7 +74,7 @@ end) table.insert(_LOADTIMELIST_,("Load Zframework: %.3fs"):format(TIME()-_LOADTIME_)) ---Create shortcuts +-- Create shortcuts setFont=FONT.set getFont=FONT.get mText=GC.simpX @@ -84,10 +84,10 @@ string.repD=STRING.repD string.sArg=STRING.sArg string.split=STRING.split ---Delete all naked files (from ancient versions) +-- Delete all naked files (from ancient versions) FILE.clear('') ---Create directories +-- Create directories for _,v in next,{'conf','record','replay','cache','lib'} do local info=fs.getInfo(v) if not info then @@ -102,7 +102,7 @@ CHAR=require'parts.char' require'parts.gameTables' require'parts.gameFuncs' ---Load shader files from SOURCE ONLY +-- Load shader files from SOURCE ONLY SHADER={} for _,v in next,fs.getDirectoryItems('parts/shaders') do if FILE.isSafe('parts/shaders/'..v) then @@ -134,8 +134,8 @@ end}) table.insert(_LOADTIMELIST_,("Load Parts: %.3fs"):format(TIME()-_LOADTIME_)) ---Init Zframework -do--Z.setCursor +-- Init Zframework +do-- Z.setCursor local normImg=GC.DO{16,16, {'fCirc',8,8,4}, {'setCL',1,1,1,.7}, @@ -190,7 +190,7 @@ Z.setDebugInfo{ {"Voices",VOC.getQueueCount}, {"Audios",love.audio.getSourceCount}, } -do--Z.setOnFocus +do-- Z.setOnFocus local function task_autoSoundOff() while true do coroutine.yield() @@ -230,7 +230,7 @@ do--Z.setOnFocus end Z.setOnQuit(destroyPlayers) ---Load settings and statistics +-- Load settings and statistics if not ( pcall(TABLE.cover, loadFile('conf/user', '-json -canSkip') or loadFile('conf/user', '-luaon -canSkip') or{},USER) and @@ -244,7 +244,7 @@ then MES.new('error',"An error occured during loading, and some data was lost.") end ---Initialize fields, sequence, missions, gameEnv for cutsom game +-- Initialize fields, sequence, missions, gameEnv for cutsom game local fieldData=loadFile('conf/customBoards','-string -canSkip') if fieldData then fieldData=STRING.split(fieldData,"!") @@ -269,7 +269,7 @@ end TABLE.complete(require"parts.customEnv0",CUSTOMENV) ---Initialize image libs +-- Initialize image libs IMG.init{ lock='media/image/mess/lock.png', dialCircle='media/image/mess/dialCircle.png', @@ -348,7 +348,7 @@ SKIN.load{ {name="wtf",path='media/image/skin/wtf_mrz.png'}, } ---Initialize sound libs +-- Initialize sound libs SFX.init((function()--[Warning] Not loading files here, just get the list of sound needed local L={} for _,v in next,fs.getDirectoryItems('media/effect/chiptune/') do @@ -377,7 +377,7 @@ VOC.init{ 'welcome', } ---Initialize language lib +-- Initialize language lib LANG.init('zh', { zh=require'parts.language.lang_zh', @@ -390,9 +390,9 @@ LANG.init('zh', ja=require'parts.language.lang_ja', symbol=require'parts.language.lang_symbol', zh_code=require'parts.language.lang_zh_code', - --1. Add language file to LANG folder; - --2. Require it; - --3. Add a button in parts/scenes/lang.lua; + -- 1. Add language file to LANG folder; + -- 2. Require it; + -- 3. Add a button in parts/scenes/lang.lua; }, { block=BLOCK_NAMES @@ -414,7 +414,7 @@ LANG.init('zh', table.insert(_LOADTIMELIST_,("Initialize Parts: %.3fs"):format(TIME()-_LOADTIME_)) ---Load background files from SOURCE ONLY +-- Load background files from SOURCE ONLY for _,v in next,fs.getDirectoryItems('parts/backgrounds') do if FILE.isSafe('parts/backgrounds/'..v) and v:sub(-3)=='lua' then local name=v:sub(1,-5) @@ -422,7 +422,7 @@ for _,v in next,fs.getDirectoryItems('parts/backgrounds') do end end BG.remList('none')BG.remList('gray')BG.remList('custom') ---Load scene files from SOURCE ONLY +-- Load scene files from SOURCE ONLY for _,v in next,fs.getDirectoryItems('parts/scenes') do if FILE.isSafe('parts/scenes/'..v) then local sceneName=v:sub(1,-5) @@ -430,9 +430,9 @@ for _,v in next,fs.getDirectoryItems('parts/scenes') do LANG.addScene(sceneName) end end ---Load mode files +-- Load mode files for i=1,#MODES do - local m=MODES[i]--Mode template + local m=MODES[i]-- Mode template if FILE.isSafe('parts/modes/'..m.name) then TABLE.complete(require('parts.modes.'..m.name),MODES[i]) MODES[m.name],MODES[i]=MODES[i] @@ -451,7 +451,7 @@ end table.insert(_LOADTIMELIST_,("Load Files: %.3fs"):format(TIME()-_LOADTIME_)) ---Update data +-- Update data do local needSave @@ -603,7 +603,7 @@ do end end ---First start +-- First start FIRSTLAUNCH=STAT.run==0 if FIRSTLAUNCH and MOBILE then SETTING.VKSwitch=true @@ -611,10 +611,10 @@ if FIRSTLAUNCH and MOBILE then SETTING.cleanCanvas=true end ---Apply system setting +-- Apply system setting applySettings() ---Load replays +-- Load replays for _,fileName in next,fs.getDirectoryItems('replay') do if fileName:sub(12,12):match("[a-zA-Z]") then local date,mode,version,player,seed,setting,mod @@ -664,8 +664,8 @@ table.insert(_LOADTIMELIST_,("Initialize Data: %.3fs"):format(TIME()-_LOADTIME_) for i=1,#_LOADTIMELIST_ do LOG(_LOADTIMELIST_[i]) end ---Launch testing task if launch param received -if TABLE.find(arg,'--test') then +-- Launch testing task if launch param received +if TABLE.find(arg,'-- test') then TASK.new(function() while not LOADED do coroutine.yield() end diff --git a/parts/RSlist.lua b/parts/RSlist.lua index 0f32e81d..0fa118f6 100644 --- a/parts/RSlist.lua +++ b/parts/RSlist.lua @@ -1,43 +1,43 @@ -local defaultCenterTex=GC.DO{1,1}--No texture -local defaultCenterPos={--For SRS-like RSs - --Tetromino - {[0]={0,1},{1,0},{1,1},{1,1}},--Z - {[0]={0,1},{1,0},{1,1},{1,1}},--S - {[0]={0,1},{1,0},{1,1},{1,1}},--J - {[0]={0,1},{1,0},{1,1},{1,1}},--L - {[0]={0,1},{1,0},{1,1},{1,1}},--T - {[0]={.5,.5},{.5,.5},{.5,.5},{.5,.5}},--O - {[0]={-.5,1.5},{1.5,-.5},{.5,1.5},{1.5,.5}},--I +local defaultCenterTex=GC.DO{1,1}-- No texture +local defaultCenterPos={-- For SRS-like RSs + -- Tetromino + {[0]={0,1},{1,0},{1,1},{1,1}},-- Z + {[0]={0,1},{1,0},{1,1},{1,1}},-- S + {[0]={0,1},{1,0},{1,1},{1,1}},-- J + {[0]={0,1},{1,0},{1,1},{1,1}},-- L + {[0]={0,1},{1,0},{1,1},{1,1}},-- T + {[0]={.5,.5},{.5,.5},{.5,.5},{.5,.5}},-- O + {[0]={-.5,1.5},{1.5,-.5},{.5,1.5},{1.5,.5}},-- I - --Pentomino - {[0]={1,1},{1,1},{1,1},{1,1}},--Z5 - {[0]={1,1},{1,1},{1,1},{1,1}},--S5 - {[0]={0,1},{1,0},{1,1},{1,1}},--P - {[0]={0,1},{1,0},{1,1},{1,1}},--Q - {[0]={1,1},{1,1},{1,1},{1,1}},--F - {[0]={1,1},{1,1},{1,1},{1,1}},--E - {[0]={1,1},{1,1},{1,1},{1,1}},--T5 - {[0]={0,1},{1,0},{1,1},{1,1}},--U - {[0]={.5,1.5},{.5,.5},{1.5,.5},{1.5,1.5}},--V - {[0]={1,1},{1,1},{1,1},{1,1}},--W - {[0]={1,1},{1,1},{1,1},{1,1}},--X - {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},--J5 - {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},--L5 - {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},--R - {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},--Y - {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},--N - {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},--H - {[0]={0,2},{2,0},{0,2},{2,0}},--I5 + -- Pentomino + {[0]={1,1},{1,1},{1,1},{1,1}},-- Z5 + {[0]={1,1},{1,1},{1,1},{1,1}},-- S5 + {[0]={0,1},{1,0},{1,1},{1,1}},-- P + {[0]={0,1},{1,0},{1,1},{1,1}},-- Q + {[0]={1,1},{1,1},{1,1},{1,1}},-- F + {[0]={1,1},{1,1},{1,1},{1,1}},-- E + {[0]={1,1},{1,1},{1,1},{1,1}},-- T5 + {[0]={0,1},{1,0},{1,1},{1,1}},-- U + {[0]={.5,1.5},{.5,.5},{1.5,.5},{1.5,1.5}},-- V + {[0]={1,1},{1,1},{1,1},{1,1}},-- W + {[0]={1,1},{1,1},{1,1},{1,1}},-- X + {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},-- J5 + {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},-- L5 + {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},-- R + {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},-- Y + {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},-- N + {[0]={.5,1.5},{1.5,.5},{.5,1.5},{1.5,.5}},-- H + {[0]={0,2},{2,0},{0,2},{2,0}},-- I5 - --Trimino - {[0]={0,1},{1,0},{0,1},{1,0}},--I3 - {[0]={.5,.5},{.5,.5},{.5,.5},{.5,.5}},--C + -- Trimino + {[0]={0,1},{1,0},{0,1},{1,0}},-- I3 + {[0]={.5,.5},{.5,.5},{.5,.5},{.5,.5}},-- C - --Domino - {[0]={-.5,.5},{.5,-.5},{.5,.5},{.5,.5}},--I2 + -- Domino + {[0]={-.5,.5},{.5,-.5},{.5,.5},{.5,.5}},-- I2 - --Dot - {[0]={0,0},{0,0},{0,0},{0,0}},--O1 + -- Dot + {[0]={0,0},{0,0},{0,0},{0,0}},-- O1 } local noKickSet,noKickSet_180 do @@ -52,14 +52,14 @@ local function _strToVec(list) return list end ---Use this if the block is centrosymmetry, *PTR!!! +-- Use this if the block is centrosymmetry, *PTR!!! local function _centroSymSet(L) L[23]=L[01]L[32]=L[10] L[21]=L[03]L[12]=L[30] L[20]=L[02]L[31]=L[13] end ---Use this to copy a symmetry set +-- Use this to copy a symmetry set local function _flipList(O) if not O then return @@ -91,21 +91,21 @@ end local TRS do local OspinList={ - {111,5,2, 0,-1,0},{111,5,2,-1,-1,0},{111,5,0,-1, 0,0},--T - {333,5,2,-1,-1,0},{333,5,2, 0,-1,0},{333,5,0, 0, 0,0},--T - {313,1,2,-1, 0,0},{313,1,2, 0,-1,0},{313,1,2, 0, 0,0},--Z - {131,2,2, 0, 0,0},{131,2,2,-1,-1,0},{131,2,2,-1, 0,0},--S - {131,1,2,-1, 0,0},{131,1,2, 0,-1,0},{131,1,2, 0, 0,0},--Z(misOrder) - {313,2,2, 0, 0,0},{313,2,2,-1,-1,0},{313,2,2,-1, 0,0},--S(misOrder) - {331,3,2, 0,-1,0},--J(farDown) - {113,4,2,-1,-1,0},--L(farDown) - {113,3,2,-1,-1,0},{113,3,0, 0, 0,0},--J - {331,4,2, 0,-1,0},{331,4,0,-1, 0,0},--L - {222,7,0,-1, 1,1},{222,7,0,-2, 1,1},{222,7,0, 0, 1,1},--I(high) - {222,7,2,-1, 0,2},{222,7,2,-2, 0,2},{222,7,2, 0, 0,2},--I(low) - {121,6,0, 1,-1,2},{112,6,0, 2,-1,2},{122,6,0, 1,-2,2},--O - {323,6,0,-1,-1,2},{332,6,0,-2,-1,2},{322,6,0,-1,-2,2},--O - }--{keys, ID, dir, dx, dy, freeLevel (0=immovable, 1=U/D-immovable, 2=free)} + {111,5,2, 0,-1,0},{111,5,2,-1,-1,0},{111,5,0,-1, 0,0},-- T + {333,5,2,-1,-1,0},{333,5,2, 0,-1,0},{333,5,0, 0, 0,0},-- T + {313,1,2,-1, 0,0},{313,1,2, 0,-1,0},{313,1,2, 0, 0,0},-- Z + {131,2,2, 0, 0,0},{131,2,2,-1,-1,0},{131,2,2,-1, 0,0},-- S + {131,1,2,-1, 0,0},{131,1,2, 0,-1,0},{131,1,2, 0, 0,0},-- Z(misOrder) + {313,2,2, 0, 0,0},{313,2,2,-1,-1,0},{313,2,2,-1, 0,0},-- S(misOrder) + {331,3,2, 0,-1,0},-- J(farDown) + {113,4,2,-1,-1,0},-- L(farDown) + {113,3,2,-1,-1,0},{113,3,0, 0, 0,0},-- J + {331,4,2, 0,-1,0},{331,4,0,-1, 0,0},-- L + {222,7,0,-1, 1,1},{222,7,0,-2, 1,1},{222,7,0, 0, 1,1},-- I(high) + {222,7,2,-1, 0,2},{222,7,2,-2, 0,2},{222,7,2, 0, 0,2},-- I(low) + {121,6,0, 1,-1,2},{112,6,0, 2,-1,2},{122,6,0, 1,-2,2},-- O + {323,6,0,-1,-1,2},{332,6,0,-2,-1,2},{322,6,0,-1,-2,2},-- O + }-- {keys, ID, dir, dx, dy, freeLevel (0=immovable, 1=U/D-immovable, 2=free)} local XspinList={ {{ 1,-1},{ 1, 0},{ 1, 1},{ 1,-2},{ 1, 2}}, {{ 0,-1},{ 0,-2},{ 0, 1},{ 0,-2},{ 0, 2}}, @@ -137,8 +137,8 @@ do [20]={'+0+0','-1+0','+1+0','+0+1','+0-1'}, [13]={'+0+0','+0-1','+0+1','+0-2'}, [31]={'+0+0','+0+1','+0-1','+0+2'}, - },--Z - false,--S + },-- Z + false,-- S { [01]={'+0+0','-1+0','-1+1','+0-2','+1+1','+0+1','+0-1'}, [10]={'+0+0','+1+0','+1-1','+0+2','-1-1','+0-1','+0+1'}, @@ -152,8 +152,8 @@ do [20]={'+0+0','+1+0','-1+0','+0+1','+0-1'}, [13]={'+0+0','+0-1','+0+1','+1+0'}, [31]={'+0+0','+0+1','+0-1','-1+0'}, - },--J - false,--L + },-- J + false,-- L { [01]={'+0+0','-1+0','-1+1','+0-2','-1-2','+0+1'}, [10]={'+0+0','+1+0','+1-1','+0+2','+1+2','+0+1','+0-1'}, @@ -167,7 +167,7 @@ do [20]={'+0+0','+1+0','-1+0','+0-1'}, [13]={'+0+0','+0-1','+0+1','+1+0','+0-2','+0+2'}, [31]={'+0+0','+0-1','+0+1','-1+0','+0-2','+0+2'}, - },--T + },-- T function(P,d) if P.gameEnv.easyFresh then P:freshBlock('fresh') @@ -220,7 +220,7 @@ do SFX.play('rotate',nil,P:getCenterX()*.15) end end - end,--O + end,-- O { [01]={'+0+0','+0+1','+1+0','-2+0','-2-1','+1+2'}, [10]={'+0+0','+2+0','-1+0','-1-2','+2+1','+0+1'}, @@ -234,14 +234,14 @@ do [20]={'+0+0','+1+0','-1+0','+0+1','+0-1'}, [13]={'+0+0','+0-1','-1+0','+1+0','+0+1'}, [31]={'+0+0','+0-1','+1+0','-1+0','+0+1'}, - },--I + },-- I { [01]={'+0+0','+0+1','+1+1','-1+0','+0-3','+0+2','+0-2','+0+3','-1+2'}, [10]={'+0+0','+0-1','-1-1','+1+0','+0-3','+0+2','+0-2','+0+3','+1-2'}, [03]={'+0+0','+1+0','+0-3','+0-1','+0+1','+0-2','+0+2','+0+3','+1+2'}, [30]={'+0+0','-1+0','+0-1','+0+1','+0-2','+0-3','+0+2','+0+3','-1-2'}, - },--Z5 - false,--S5 + },-- Z5 + false,-- S5 { [01]={'+0+0','-1+0','-1+1','+0-2','-1-2','-1-1','+0+1'}, [10]={'+0+0','+1+0','+1-1','+0+2','+1+2','+0-1','+1+1'}, @@ -255,8 +255,8 @@ do [20]={'+0+0','+1+0','+0+1','+0-1'}, [13]={'+0+0','+1+0','+0+1','-1+0'}, [31]={'+0+0','-1+0','+0-1','+1+0'}, - },--P - false,--Q + },-- P + false,-- Q { [01]={'+0+0','-1+0','+1+0','-1+1','+0-2','+0-3'}, [10]={'+0+0','+1+0','+1-1','-1+0','+0+2','+0+3'}, @@ -270,8 +270,8 @@ do [20]={'+0+0','-1+0','+1+0','+1+1'}, [13]={'+0+0','+0-1','-1+1','+0+1'}, [31]={'+0+0','+0-1','+1-1','+0+1'}, - },--F - false,--E + },-- F + false,-- E { [01]={'+0+0','+0-1','-1-1','+1+0','+1+1','+0-3','-1+0','+0+2','-1+2'}, [10]={'+0+0','+1+0','+0-1','-1-1','+0-2','-1+1','+0-3','+1-2','+0+1'}, @@ -285,7 +285,7 @@ do [20]={'+0+0','+0-1','+0+1','+0-2'}, [13]={'+0+0','+1+0','-1+1','-2+0'}, [31]={'+0+0','-1+0','+1+1','+2+0'}, - },--T5 + },-- T5 { [01]={'+0+0','-1+0','-1+1','+0-2','-1-2'}, [10]={'+0+0','+1+0','+1-1','+0+2','+1+2'}, @@ -299,7 +299,7 @@ do [20]={'+0+0','+0-1'}, [13]={'+0+0','+0-1','+0+1','+1+0'}, [31]={'+0+0','+0-1','+0+1','-1+0'}, - },--U + },-- U { [01]={'+0+0','+0+1','-1+0','+0-2','-1-2'}, [10]={'+0+0','+0+1','+1+0','+0-2','+1-2'}, @@ -313,7 +313,7 @@ do [20]={'+0+0','+1-1','-1+1'}, [13]={'+0+0','+1+1','-1-1'}, [31]={'+0+0','-1-1','+1+1'}, - },--V + },-- V { [01]={'+0+0','+0-1','-1+0','+1+0','+1-1','+0+2'}, [10]={'+0+0','+0-1','-1-1','+0+1','+0-2','+1-2','+0+2'}, @@ -327,7 +327,7 @@ do [20]={'+0+0','+0+1','+1+0'}, [13]={'+0+0','+0+1','-1+0'}, [31]={'+0+0','+0-1','+1+0'}, - },--W + },-- W function(P,d) if P.type=='human' then SFX.play('rotate',nil,P:getCenterX()*.15) @@ -344,7 +344,7 @@ do end end P:freshBlock('fresh') - end,--X + end,-- X { [01]={'+0+0','-1+0','-1+1','+0-3','-1+1','-1+2','+0+1'}, [10]={'+0+0','-1+0','+1-1','+0+3','+1-1','+1-2','+0+1'}, @@ -358,8 +358,8 @@ do [20]={'+0+0','+0+1','+1+1','-1+1','+1+0','-2+1'}, [13]={'+0+0','-1+0','-1-1','+0+1','-1-2'}, [31]={'+0+0','+1+0','+1+1','+0-1','+1+2'}, - },--J5 - false,--L5 + },-- J5 + false,-- L5 { [01]={'+0+0','-1+0','-1+1','+1+0','-1+2','-1-1','+0-3','+0+1'}, [10]={'+0+0','-1+0','+1+0','+1-1','+1-2','+1+1','+0+3','+0+1'}, @@ -373,8 +373,8 @@ do [20]={'+0+0','+0+1','-1+1','+1+0','-2+1','+0-1'}, [13]={'+0+0','-1+0','-1-1','+0+1','-1-2'}, [31]={'+0+0','+1+0','+1+1','+0-1','+1+2'}, - },--R - false,--Y + },-- R + false,-- Y { [01]={'+0+0','-1+0','-1+1','+0+1','+1+0','+1+1','-1+2','-2+0','+0-2'}, [10]={'+0+0','+1+0','-1+0','+0-1','-1-1','+1-1','+1-2','+2+0','+0+2'}, @@ -388,20 +388,20 @@ do [20]={'+0+0','+1+0','+0-2','+0+1'}, [13]={'+0+0','-1+0','-1-1','+0+1','+1+2'}, [31]={'+0+0','+1+0','+1+1','+0-1','-1-2'}, - },--N - false,--H + },-- N + false,-- H { [01]={'+0+0','+1-1','+1+0','+1+1','+0+1','-1+1','-1+0','-1-1','+0-1','+0-2','-2-1','-2-2','+2+0','+2-1','+2-2','+1+2','+2+2','-1+2','-2+2'}, [10]={'+0+0','-1+0','-1-1','+0-1','+1-1','-2-2','-2-1','-2+0','-1-2','+0-2','+1-2','+2-2','-1+1','-2+1','-2+2','+1+0','+2+0','+2-1','+0+1','+1-1','+2-2'}, [03]={'+0+0','-1-1','-1+0','-1+1','+0+1','+1+1','+1+0','+1-1','+0-1','+0-2','+2-1','+2-2','-2+0','-2-1','-2-2','-1+2','-2+2','+1+2','+2+2'}, [30]={'+0+0','+1+0','+1-1','+0-1','-1-1','+2-2','+2-1','+2+0','+1-2','+0-2','-1-2','-2-2','+1+1','+2+1','+2+2','-1+0','-2+0','-2-1','+0+1','-1-1','-2-2'}, - },--I5 + },-- I5 { [01]={'+0+0','-1+0','-1-1','+1+1','-1+1'}, [10]={'+0+0','-1+0','+1+0','-1-1','+1+1'}, [03]={'+0+0','+1+0','+1-1','-1+1','+1+1'}, [30]={'+0+0','+1+0','-1+0','+1-1','-1+1'}, - },--I3 + },-- I3 { [01]={'+0+0','-1+0','+1+0'}, [10]={'+0+0','+1+0','-1+0'}, @@ -415,7 +415,7 @@ do [20]={'+0+0','+0+1','-1+1','+1+1'}, [13]={'+0+0','+0-1','-1-1','+1-1'}, [31]={'+0+0','+0+1','+1+1','-1+1'}, - },--C + },-- C { [01]={'+0+0','-1+0','+0+1'}, [10]={'+0+0','+1+0','+0+1'}, @@ -429,22 +429,22 @@ do [20]={'+0+0','+0+1','+0-1'}, [13]={'+0+0','-1+0','+1+0'}, [31]={'+0+0','+1+0','-1+0'}, - },--I2 - nil,--O1 + },-- I2 + nil,-- O1 } } TRS.centerDisp[6]=false TRS.centerDisp[18]=false - TRS.kickTable[2]= _reflect(TRS.kickTable[1])--SZ - TRS.kickTable[4]= _reflect(TRS.kickTable[3])--LJ - TRS.kickTable[9]= _reflect(TRS.kickTable[8])--S5Z5 - TRS.kickTable[11]=_reflect(TRS.kickTable[10])--PQ - TRS.kickTable[13]=_reflect(TRS.kickTable[12])--FE - TRS.kickTable[20]=_reflect(TRS.kickTable[19])--L5J5 - TRS.kickTable[22]=_reflect(TRS.kickTable[21])--RY - TRS.kickTable[24]=_reflect(TRS.kickTable[23])--NH - _centroSymSet(TRS.kickTable[8])_centroSymSet(TRS.kickTable[9])--S5Z5 - _centroSymSet(TRS.kickTable[25])_centroSymSet(TRS.kickTable[26])--I5I3 + TRS.kickTable[2]= _reflect(TRS.kickTable[1])-- SZ + TRS.kickTable[4]= _reflect(TRS.kickTable[3])-- LJ + TRS.kickTable[9]= _reflect(TRS.kickTable[8])-- S5Z5 + TRS.kickTable[11]=_reflect(TRS.kickTable[10])-- PQ + TRS.kickTable[13]=_reflect(TRS.kickTable[12])-- FE + TRS.kickTable[20]=_reflect(TRS.kickTable[19])-- L5J5 + TRS.kickTable[22]=_reflect(TRS.kickTable[21])-- RY + TRS.kickTable[24]=_reflect(TRS.kickTable[23])-- NH + _centroSymSet(TRS.kickTable[8])_centroSymSet(TRS.kickTable[9])-- S5Z5 + _centroSymSet(TRS.kickTable[25])_centroSymSet(TRS.kickTable[26])-- I5I3 end local SRS @@ -469,12 +469,12 @@ do [32]={'+0+0','-1+0','-1-1','+0+2','-1+2'}, [23]={'+0+0','+1+0','+1+1','+0-2','+1-2'}, [02]={'+0+0'},[20]={'+0+0'},[13]={'+0+0'},[31]={'+0+0'}, - },--Z - false,--S - false,--J - false,--L - false,--T - noKickSet,--O + },-- Z + false,-- S + false,-- J + false,-- L + false,-- T + noKickSet,-- O { [01]={'+0+0','-2+0','+1+0','-2-1','+1+2'}, [10]={'+0+0','+2+0','-1+0','+2+1','-1-2'}, @@ -485,7 +485,7 @@ do [30]={'+0+0','+1+0','-2+0','+1-2','-2+1'}, [03]={'+0+0','-1+0','+2+0','-1+2','+2-1'}, [02]={'+0+0'},[20]={'+0+0'},[13]={'+0+0'},[31]={'+0+0'}, - }--I + }-- I } } for i=2,5 do SRS.kickTable[i]=SRS.kickTable[1] end @@ -519,12 +519,12 @@ do [20]={'+0+0','+1+0','-1+0','+0-1','+0+1'}, [13]={'+0+0','+0-1','-1+0','+1+0','+0+1'}, [31]={'+0+0','+0-1','-1+0','+1+0','+0+1'}, - },--Z - false,--S - false,--J - false,--L - false,--T - noKickSet,--O + },-- Z + false,-- S + false,-- J + false,-- L + false,-- T + noKickSet,-- O { [01]={'+0+0','-2+0','+1+0','-2-1','+1+2'}, [10]={'+0+0','+2+0','-1+0','+2+1','-1-2'}, @@ -538,7 +538,7 @@ do [20]={'+0+0','+1+0','-1+0','+0+1','+0-1'}, [13]={'+0+0','+0-1','-1+0','+1+0','+0+1'}, [31]={'+0+0','+0-1','+1+0','-1+0','+0+1'}, - }--I + }-- I } } for i=2,5 do SRS_plus.kickTable[i]=SRS_plus.kickTable[1] end @@ -570,19 +570,19 @@ do [20]={'+0+0','+1+0','-1+0','+0-1','+0+1'}, [13]={'+0+0','+0-1','-1+0','+1+0','+0+1'}, [31]={'+0+0','+0-1','-1+0','+1+0','+0+1'}, - },--Z - false,--S - false,--J - false,--L - false,--T - noKickSet,--O - false,--I + },-- Z + false,-- S + false,-- J + false,-- L + false,-- T + noKickSet,-- O + false,-- I } } for i=2,5 do SRS_X.kickTable[i]=SRS_X.kickTable[1] end for i=7,29 do SRS_X.kickTable[i]=TRS.kickTable[i] end - SRS_X.kickTable[10]=SRS_X.kickTable[1]--P - SRS_X.kickTable[11]=SRS_X.kickTable[1]--Q + SRS_X.kickTable[10]=SRS_X.kickTable[1]-- P + SRS_X.kickTable[11]=SRS_X.kickTable[1]-- Q end local BiRS @@ -591,37 +591,37 @@ do local L=_strToVec{'+0+0','+1+0','+1-1','+0-1','+1+1','-1-1','-1+0','+0+1','-1+1','+0+2','+1+2','-1+2','+2+0','-2+0'} local F=_strToVec{'+0+0','+0-1','+0+1','+0+2'} local list={ - {[02]=L,[20]=R,[13]=R,[31]=L},--Z - {[02]=R,[20]=L,[13]=L,[31]=R},--S - {[02]=L,[20]=R,[13]=L,[31]=R},--J - {[02]=R,[20]=L,[13]=L,[31]=R},--L - {[02]=F,[20]=F,[13]=L,[31]=R},--T - {[02]=F,[20]=F,[13]=F,[31]=F},--O - {[02]=F,[20]=F,[13]=R,[31]=L},--I + {[02]=L,[20]=R,[13]=R,[31]=L},-- Z + {[02]=R,[20]=L,[13]=L,[31]=R},-- S + {[02]=L,[20]=R,[13]=L,[31]=R},-- J + {[02]=R,[20]=L,[13]=L,[31]=R},-- L + {[02]=F,[20]=F,[13]=L,[31]=R},-- T + {[02]=F,[20]=F,[13]=F,[31]=F},-- O + {[02]=F,[20]=F,[13]=R,[31]=L},-- I - {[02]=L,[20]=L,[13]=R,[31]=R},--Z5 - {[02]=R,[20]=R,[13]=L,[31]=L},--S5 - {[02]=L,[20]=R,[13]=L,[31]=R},--P - {[02]=R,[20]=L,[13]=R,[31]=L},--Q - {[02]=R,[20]=L,[13]=L,[31]=R},--F - {[02]=L,[20]=R,[13]=R,[31]=L},--E - {[02]=F,[20]=F,[13]=L,[31]=R},--T5 - {[02]=F,[20]=F,[13]=L,[31]=R},--U - {[02]=R,[20]=L,[13]=L,[31]=R},--V - {[02]=R,[20]=L,[13]=L,[31]=R},--W - {[02]=F,[20]=F,[13]=F,[31]=F},--X - {[02]=L,[20]=R,[13]=R,[31]=L},--J5 - {[02]=R,[20]=L,[13]=L,[31]=R},--L5 - {[02]=L,[20]=R,[13]=R,[31]=L},--R - {[02]=R,[20]=L,[13]=L,[31]=R},--Y - {[02]=L,[20]=R,[13]=R,[31]=L},--N - {[02]=R,[20]=L,[13]=L,[31]=R},--H - {[02]=F,[20]=F,[13]=F,[31]=F},--I5 + {[02]=L,[20]=L,[13]=R,[31]=R},-- Z5 + {[02]=R,[20]=R,[13]=L,[31]=L},-- S5 + {[02]=L,[20]=R,[13]=L,[31]=R},-- P + {[02]=R,[20]=L,[13]=R,[31]=L},-- Q + {[02]=R,[20]=L,[13]=L,[31]=R},-- F + {[02]=L,[20]=R,[13]=R,[31]=L},-- E + {[02]=F,[20]=F,[13]=L,[31]=R},-- T5 + {[02]=F,[20]=F,[13]=L,[31]=R},-- U + {[02]=R,[20]=L,[13]=L,[31]=R},-- V + {[02]=R,[20]=L,[13]=L,[31]=R},-- W + {[02]=F,[20]=F,[13]=F,[31]=F},-- X + {[02]=L,[20]=R,[13]=R,[31]=L},-- J5 + {[02]=R,[20]=L,[13]=L,[31]=R},-- L5 + {[02]=L,[20]=R,[13]=R,[31]=L},-- R + {[02]=R,[20]=L,[13]=L,[31]=R},-- Y + {[02]=L,[20]=R,[13]=R,[31]=L},-- N + {[02]=R,[20]=L,[13]=L,[31]=R},-- H + {[02]=F,[20]=F,[13]=F,[31]=F},-- I5 - {[02]=F,[20]=F,[13]=F,[31]=F},--I3 - {[02]=R,[20]=L,[13]=L,[31]=R},--C - {[02]=F,[20]=F,[13]=R,[31]=L},--I2 - {[02]=F,[20]=F,[13]=F,[31]=F},--O1 + {[02]=F,[20]=F,[13]=F,[31]=F},-- I3 + {[02]=R,[20]=L,[13]=L,[31]=R},-- C + {[02]=F,[20]=F,[13]=R,[31]=L},-- I2 + {[02]=F,[20]=F,[13]=F,[31]=F},-- O1 } for i=1,29 do local a,b=R,L @@ -700,7 +700,7 @@ do end end - --Try release left/right, then softdrop, failed to rotate otherwise + -- Try release left/right, then softdrop, failed to rotate otherwise if dx~=0 then dx=0 elseif dy~=0 then @@ -728,24 +728,24 @@ do [02]=upOnly,[20]=upOnly,[13]=upOnly,[31]=upOnly, } local centerPos=TABLE.copy(defaultCenterPos) - centerPos[1]={[0]={1,1},{1,0},{1,1},{1,0}}--Z - centerPos[2]={[0]={1,1},{1,1},{1,1},{1,1}}--S - centerPos[3]={[0]={1,1},{1,0},{1,1},{1,1}}--L - centerPos[4]={[0]={1,1},{1,0},{1,1},{1,1}}--J - centerPos[5]={[0]={1,1},{1,0},{1,1},{1,1}}--T - centerPos[7]={[0]={0,2},{2,0},{0,2},{2,0}}--I - centerPos[10]={[0]={1,1},{1,0},{1,1},{1,0}}--P - centerPos[11]={[0]={1,1},{1,1},{1,1},{1,1}}--Q - centerPos[15]={[0]={1,1},{1,0},{1,1},{1,1}}--U - centerPos[16]={[0]={1,1},{1,1},{1,1},{1,1}}--V - centerPos[19]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--J5 - centerPos[20]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--L5 - centerPos[21]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--R - centerPos[22]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--Y - centerPos[23]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--N - centerPos[24]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--H - centerPos[26]={[0]={0,1},{0,0},{0,1},{0,0}}--I3 - centerPos[28]={[0]={0,1},{0,0},{0,1},{0,0}}--I2 + centerPos[1]={[0]={1,1},{1,0},{1,1},{1,0}}-- Z + centerPos[2]={[0]={1,1},{1,1},{1,1},{1,1}}-- S + centerPos[3]={[0]={1,1},{1,0},{1,1},{1,1}}-- L + centerPos[4]={[0]={1,1},{1,0},{1,1},{1,1}}-- J + centerPos[5]={[0]={1,1},{1,0},{1,1},{1,1}}-- T + centerPos[7]={[0]={0,2},{2,0},{0,2},{2,0}}-- I + centerPos[10]={[0]={1,1},{1,0},{1,1},{1,0}}-- P + centerPos[11]={[0]={1,1},{1,1},{1,1},{1,1}}-- Q + centerPos[15]={[0]={1,1},{1,0},{1,1},{1,1}}-- U + centerPos[16]={[0]={1,1},{1,1},{1,1},{1,1}}-- V + centerPos[19]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- J5 + centerPos[20]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- L5 + centerPos[21]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- R + centerPos[22]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- Y + centerPos[23]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- N + centerPos[24]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- H + centerPos[26]={[0]={0,1},{0,0},{0,1},{0,0}}-- I3 + centerPos[28]={[0]={0,1},{0,0},{0,1},{0,0}}-- I2 ARS_Z={ centerTex=GC.DO{10,10, @@ -765,24 +765,24 @@ end local DRS_weak do local centerPos=TABLE.copy(defaultCenterPos) - centerPos[1]={[0]={1,1},{1,0},{1,1},{1,1}}--Z - centerPos[2]={[0]={1,1},{1,0},{1,1},{1,1}}--S - centerPos[3]={[0]={1,1},{1,0},{1,1},{1,1}}--L - centerPos[4]={[0]={1,1},{1,0},{1,1},{1,1}}--J - centerPos[5]={[0]={1,1},{1,0},{1,1},{1,1}}--T - centerPos[7]={[0]={.5,1.5},{1.5,-.5},{.5,1.5},{1.5,.5}}--I - centerPos[10]={[0]={1,1},{1,0},{1,1},{1,0}}--P - centerPos[11]={[0]={1,1},{1,1},{1,1},{1,1}}--Q - centerPos[15]={[0]={1,1},{1,0},{1,1},{1,1}}--U - centerPos[16]={[0]={1,1},{1,1},{1,1},{1,1}}--V - centerPos[19]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--J5 - centerPos[20]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--L5 - centerPos[21]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--R - centerPos[22]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--Y - centerPos[23]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--N - centerPos[24]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}--H - centerPos[26]={[0]={0,1},{0,0},{0,1},{0,0}}--I3 - centerPos[28]={[0]={0,1},{0,0},{0,1},{0,0}}--I2 + centerPos[1]={[0]={1,1},{1,0},{1,1},{1,1}}-- Z + centerPos[2]={[0]={1,1},{1,0},{1,1},{1,1}}-- S + centerPos[3]={[0]={1,1},{1,0},{1,1},{1,1}}-- L + centerPos[4]={[0]={1,1},{1,0},{1,1},{1,1}}-- J + centerPos[5]={[0]={1,1},{1,0},{1,1},{1,1}}-- T + centerPos[7]={[0]={.5,1.5},{1.5,-.5},{.5,1.5},{1.5,.5}}-- I + centerPos[10]={[0]={1,1},{1,0},{1,1},{1,0}}-- P + centerPos[11]={[0]={1,1},{1,1},{1,1},{1,1}}-- Q + centerPos[15]={[0]={1,1},{1,0},{1,1},{1,1}}-- U + centerPos[16]={[0]={1,1},{1,1},{1,1},{1,1}}-- V + centerPos[19]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- J5 + centerPos[20]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- L5 + centerPos[21]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- R + centerPos[22]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- Y + centerPos[23]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- N + centerPos[24]={[0]={1.5,1.5},{1.5,0.5},{1.5,1.5},{1.5,0.5}}-- H + centerPos[26]={[0]={0,1},{0,0},{0,1},{0,0}}-- I3 + centerPos[28]={[0]={0,1},{0,0},{0,1},{0,0}}-- I2 local L={'+0+0','-1+0','+1+0','+0-1','-1-1','+1-1'} local R={'+0+0','+1+0','-1+0','+0-1','+1-1','-1-1'} @@ -802,24 +802,24 @@ do }, centerPos=centerPos, kickTable={ - Z,S,--Z,S - Z,S,--J,L - Z,--T - noKickSet,--O - Z,--I + Z,S,-- Z,S + Z,S,-- J,L + Z,-- T + noKickSet,-- O + Z,-- I - Z,S,--Z5,S5 - Z,S,--P,Q - Z,S,--F,E - Z,Z,Z,Z,--T5,U,V,W - noKickSet,--X - Z,S,--J5,L5 - Z,S,--R,Y - Z,S,--N,H - Z,--I5 + Z,S,-- Z5,S5 + Z,S,-- P,Q + Z,S,-- F,E + Z,Z,Z,Z,-- T5,U,V,W + noKickSet,-- X + Z,S,-- J5,L5 + Z,S,-- R,Y + Z,S,-- N,H + Z,-- I5 - Z,Z,--I3,C - Z,Z,--I2,O1 + Z,Z,-- I3,C + Z,Z,-- I2,O1 } } end @@ -916,24 +916,24 @@ do {'fRect',3,3,4,4}, }, kickTable={ - Z,S,--Z,S - Z,S,--J,L - Z,--T - noKickSet,--O - Z,--I + Z,S,-- Z,S + Z,S,-- J,L + Z,-- T + noKickSet,-- O + Z,-- I - Z,S,--Z5,S5 - Z,S,--P,Q - Z,S,--F,E - Z,Z,Z,Z,--T5,U,V,W - noKickSet,--X - Z,S,--J5,L5 - Z,S,--R,Y - Z,S,--N,H - Z,--I5 + Z,S,-- Z5,S5 + Z,S,-- P,Q + Z,S,-- F,E + Z,Z,Z,Z,-- T5,U,V,W + noKickSet,-- X + Z,S,-- J5,L5 + Z,S,-- R,Y + Z,S,-- N,H + Z,-- I5 - Z,Z,--I3,C - Z,Z,--I2,O1 + Z,Z,-- I3,C + Z,Z,-- I2,O1 } } end @@ -1013,7 +1013,7 @@ for _,rs in next,RSlist do if not rs.centerPos then rs.centerPos=defaultCenterPos end if not rs.centerTex then rs.centerTex=defaultCenterTex end - --Make all string vec to the same table vec + -- Make all string vec to the same table vec for _,set in next,rs.kickTable do if type(set)=='table' then for _,list in next,set do diff --git a/parts/backgrounds/aura.lua b/parts/backgrounds/aura.lua index aad80a96..20debdaf 100644 --- a/parts/backgrounds/aura.lua +++ b/parts/backgrounds/aura.lua @@ -1,4 +1,4 @@ ---Cool liquid background +-- Cool liquid background local back={} local shader=SHADER.aura local t diff --git a/parts/backgrounds/bg1.lua b/parts/backgrounds/bg1.lua index 4d741e05..a5bb9f42 100644 --- a/parts/backgrounds/bg1.lua +++ b/parts/backgrounds/bg1.lua @@ -1,4 +1,4 @@ ---Horizonal red-blue gradient +-- Horizonal red-blue gradient local back={} local shader=SHADER.grad1 diff --git a/parts/backgrounds/bg2.lua b/parts/backgrounds/bg2.lua index 5953d32b..dc95ce82 100644 --- a/parts/backgrounds/bg2.lua +++ b/parts/backgrounds/bg2.lua @@ -1,4 +1,4 @@ ---Vertical red-green gradient +-- Vertical red-green gradient local back={} local shader=SHADER.grad2 diff --git a/parts/backgrounds/blockfall.lua b/parts/backgrounds/blockfall.lua index 04c6fd5a..bce4c32b 100644 --- a/parts/backgrounds/blockfall.lua +++ b/parts/backgrounds/blockfall.lua @@ -1,4 +1,4 @@ ---Large falling tetrominoes +-- Large falling tetrominoes local gc=love.graphics local gc_clear=gc.clear local gc_setColor,gc_draw=gc.setColor,gc.draw diff --git a/parts/backgrounds/blockhole.lua b/parts/backgrounds/blockhole.lua index 8f14f2ac..f759b518 100644 --- a/parts/backgrounds/blockhole.lua +++ b/parts/backgrounds/blockhole.lua @@ -1,4 +1,4 @@ ---blockhole +-- blockhole local gc=love.graphics local gc_clear,gc_replaceTransform=gc.clear,gc.replaceTransform local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth @@ -44,14 +44,14 @@ function back.draw() gc_clear(.1,.1,.1) gc_replaceTransform(SCR.xOy_m) - --Squares + -- Squares gc_setColor(1,1,1,.2) for i=1,#squares do local S=squares[i] gc_draw(S.texture,S.d*cos(S.ang),S.d*sin(S.ang),S.rotate,S.size*.026,nil,15,15) end - --blockhole + -- blockhole gc_setColor(.07,.07,.07) gc_circle('fill',0,0,157) gc_setLineWidth(6) diff --git a/parts/backgrounds/blockrain.lua b/parts/backgrounds/blockrain.lua index c1a6b775..fc2eba5a 100644 --- a/parts/backgrounds/blockrain.lua +++ b/parts/backgrounds/blockrain.lua @@ -1,4 +1,4 @@ ---Block rain +-- Block rain local gc=love.graphics local rnd=math.random local ins,rem=table.insert,table.remove diff --git a/parts/backgrounds/blockspace.lua b/parts/backgrounds/blockspace.lua index 9011a98c..ff5ce285 100644 --- a/parts/backgrounds/blockspace.lua +++ b/parts/backgrounds/blockspace.lua @@ -1,4 +1,4 @@ ---Space but tetrominoes +-- Space but tetrominoes local gc=love.graphics local gc_clear,gc_translate=gc.clear,gc.translate local gc_setColor,gc_draw=gc.setColor,gc.draw diff --git a/parts/backgrounds/cubes.lua b/parts/backgrounds/cubes.lua index 84442a1f..bbf9724c 100644 --- a/parts/backgrounds/cubes.lua +++ b/parts/backgrounds/cubes.lua @@ -1,4 +1,4 @@ ---Flying cubes +-- Flying cubes local gc=love.graphics local gc_clear=gc.clear local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth diff --git a/parts/backgrounds/custom.lua b/parts/backgrounds/custom.lua index a881b8e9..06afbe50 100644 --- a/parts/backgrounds/custom.lua +++ b/parts/backgrounds/custom.lua @@ -1,4 +1,4 @@ ---Custom background +-- Custom background local gc_clear,gc_setColor=love.graphics.clear,love.graphics.setColor local back={} diff --git a/parts/backgrounds/fan.lua b/parts/backgrounds/fan.lua index 3e931ede..2938fe1a 100644 --- a/parts/backgrounds/fan.lua +++ b/parts/backgrounds/fan.lua @@ -1,4 +1,4 @@ ---Yuyuko's fan +-- Yuyuko's fan local gc=love.graphics local gc_clear,gc_origin,gc_replaceTransform=gc.clear,gc.origin,gc.replaceTransform local gc_translate=gc.translate diff --git a/parts/backgrounds/firework.lua b/parts/backgrounds/firework.lua index f5ec21e1..0ba9be88 100644 --- a/parts/backgrounds/firework.lua +++ b/parts/backgrounds/firework.lua @@ -1,4 +1,4 @@ ---Firework +-- Firework local gc=love.graphics local gc_clear=gc.clear local gc_setColor,gc_setLineWidth=gc.setColor,gc.setLineWidth diff --git a/parts/backgrounds/fixColor.lua b/parts/backgrounds/fixColor.lua index d4e6bfcc..7bc8b9aa 100644 --- a/parts/backgrounds/fixColor.lua +++ b/parts/backgrounds/fixColor.lua @@ -1,4 +1,4 @@ ---Customizable grey background +-- Customizable grey background local back={} local r,g,b=.26,.26,.26 function back.draw() diff --git a/parts/backgrounds/flink.lua b/parts/backgrounds/flink.lua index d69b6901..73112c25 100644 --- a/parts/backgrounds/flink.lua +++ b/parts/backgrounds/flink.lua @@ -1,4 +1,4 @@ ---Flash after random time +-- Flash after random time local back={} local t diff --git a/parts/backgrounds/glow.lua b/parts/backgrounds/glow.lua index b2d1e9b4..42e4a8ad 100644 --- a/parts/backgrounds/glow.lua +++ b/parts/backgrounds/glow.lua @@ -1,4 +1,4 @@ ---Light-dark +-- Light-dark local sin=math.sin local back={} diff --git a/parts/backgrounds/lanterns.lua b/parts/backgrounds/lanterns.lua index 27cd55bd..2a507f1d 100644 --- a/parts/backgrounds/lanterns.lua +++ b/parts/backgrounds/lanterns.lua @@ -1,4 +1,4 @@ ---A lantern background which is full of festive atmosphere. Lantern image by ScF +-- A lantern background which is full of festive atmosphere. Lantern image by ScF local int,rnd=math.floor,math.random local ins,rem=table.insert,table.remove local mDraw=mDraw diff --git a/parts/backgrounds/league.lua b/parts/backgrounds/league.lua index 7d7a29dc..26508233 100644 --- a/parts/backgrounds/league.lua +++ b/parts/backgrounds/league.lua @@ -1,4 +1,4 @@ ---Space with stars +-- Space with stars local back={} local upCover do diff --git a/parts/backgrounds/lightning.lua b/parts/backgrounds/lightning.lua index 32c7236e..0ae68584 100644 --- a/parts/backgrounds/lightning.lua +++ b/parts/backgrounds/lightning.lua @@ -1,4 +1,4 @@ ---Lightning +-- Lightning local back={} local t diff --git a/parts/backgrounds/lightning2.lua b/parts/backgrounds/lightning2.lua index 407bb743..1d8fd08b 100644 --- a/parts/backgrounds/lightning2.lua +++ b/parts/backgrounds/lightning2.lua @@ -1,4 +1,4 @@ ---Fast lightning + spining tetromino +-- Fast lightning + spining tetromino local int,rnd=math.floor,math.random local back={} diff --git a/parts/backgrounds/matrix.lua b/parts/backgrounds/matrix.lua index 0dc8f646..e1d413d4 100644 --- a/parts/backgrounds/matrix.lua +++ b/parts/backgrounds/matrix.lua @@ -1,4 +1,4 @@ ---Black-White grid +-- Black-White grid local gc=love.graphics local gc_clear,gc_scale=gc.clear,gc.scale local gc_setColor=gc.setColor diff --git a/parts/backgrounds/rainbow.lua b/parts/backgrounds/rainbow.lua index a05d89ad..3c73f349 100644 --- a/parts/backgrounds/rainbow.lua +++ b/parts/backgrounds/rainbow.lua @@ -1,4 +1,4 @@ ---Colorful RGB +-- Colorful RGB local back={} local shader=SHADER.rgb1 diff --git a/parts/backgrounds/rainbow2.lua b/parts/backgrounds/rainbow2.lua index 58ee2366..da906a81 100644 --- a/parts/backgrounds/rainbow2.lua +++ b/parts/backgrounds/rainbow2.lua @@ -1,4 +1,4 @@ ---Blue RGB +-- Blue RGB local back={} local shader=SHADER.rgb2 diff --git a/parts/backgrounds/rgb.lua b/parts/backgrounds/rgb.lua index d0861905..2951e46c 100644 --- a/parts/backgrounds/rgb.lua +++ b/parts/backgrounds/rgb.lua @@ -1,4 +1,4 @@ ---Changing pure color +-- Changing pure color local sin=math.sin local back={} diff --git a/parts/backgrounds/snow.lua b/parts/backgrounds/snow.lua index d3a65803..d377a926 100644 --- a/parts/backgrounds/snow.lua +++ b/parts/backgrounds/snow.lua @@ -1,4 +1,4 @@ ---Snow +-- Snow local gc=love.graphics local ellipse=gc.ellipse local rnd=math.random diff --git a/parts/backgrounds/space.lua b/parts/backgrounds/space.lua index 305024dd..4d2f32fe 100644 --- a/parts/backgrounds/space.lua +++ b/parts/backgrounds/space.lua @@ -1,4 +1,4 @@ ---Space with stars +-- Space with stars local gc=love.graphics local rectangle=gc.rectangle local rnd=math.random @@ -15,16 +15,16 @@ function back.resize(w,h) local S=stars for i=1,1260,5 do local s=rnd(26,40)*.1 - S[i]=s*SCR.k --Size - S[i+1]=rnd(W)-10 --X - S[i+2]=rnd(H)-10 --Y - S[i+3]=(rnd()-.5)*.01*s--Vx - S[i+4]=(rnd()-.5)*.01*s--Vy + S[i]=s*SCR.k -- Size + S[i+1]=rnd(W)-10 -- X + S[i+2]=rnd(H)-10 -- Y + S[i+3]=(rnd()-.5)*.01*s-- Vx + S[i+4]=(rnd()-.5)*.01*s-- Vy end end function back.update(dt) local S=stars - --Star moving + -- Star moving for i=1,1260,5 do S[i+1]=(S[i+1]+S[i+3]*dt*60)%W S[i+2]=(S[i+2]+S[i+4]*dt*60)%H diff --git a/parts/backgrounds/tunnel.lua b/parts/backgrounds/tunnel.lua index 1ca68ebe..5391a25a 100644 --- a/parts/backgrounds/tunnel.lua +++ b/parts/backgrounds/tunnel.lua @@ -1,4 +1,4 @@ ---Cool Tunnel +-- Cool Tunnel local rnd=math.random local ins,rem=table.insert,table.remove local back={} diff --git a/parts/backgrounds/welcome.lua b/parts/backgrounds/welcome.lua index 2ee48884..09a95755 100644 --- a/parts/backgrounds/welcome.lua +++ b/parts/backgrounds/welcome.lua @@ -1,4 +1,4 @@ ---Welcome to Techmino +-- Welcome to Techmino local sin=math.sin local back={} diff --git a/parts/backgrounds/wing.lua b/parts/backgrounds/wing.lua index 4dfcb0da..822812fb 100644 --- a/parts/backgrounds/wing.lua +++ b/parts/backgrounds/wing.lua @@ -1,4 +1,4 @@ ---Flandre's wing +-- Flandre's wing local back={} local crystal_img,crystals local wingColor={ diff --git a/parts/bot/bot_9s.lua b/parts/bot/bot_9s.lua index 5c63c4f3..ac13f8ba 100644 --- a/parts/bot/bot_9s.lua +++ b/parts/bot/bot_9s.lua @@ -74,7 +74,7 @@ local function _getScore(field,cb,cy) clear=clear+1 ::CONTINUE_notFull:: end - if #field==0 then--PC + if #field==0 then-- PC return 1e99 end for x=1,10 do @@ -116,10 +116,10 @@ local function _getScore(field,cb,cy) -#field*30 -#cb*15 +(#field>10 and - HclearScore[clear]--Clearing - -hole*70--Hole - -cy*50--Height - -sdh--Sum of DeltaH + HclearScore[clear]-- Clearing + -hole*70-- Hole + -cy*50-- Height + -sdh-- Sum of DeltaH or LclearScore[clear] -hole*100 @@ -139,10 +139,10 @@ local bot_9s={} function bot_9s.thread(bot) local P,data,keys=bot.P,bot.data,bot.keys while true do - --Thinking + -- Thinking yield() - local Tfield={}--Test field - local best={x=1,dir=0,hold=false,score=-1e99}--Best method + local Tfield={}-- Test field + local best={x=1,dir=0,hold=false,score=-1e99}-- Best method local field_org=P.field for i=1,#field_org do Tfield[i]=getRow(0) @@ -152,7 +152,7 @@ function bot_9s.thread(bot) end for ifhold=0,data.hold and P.gameEnv.holdCount>0 and 1 or 0 do - --Get block id + -- Get block id local bn if ifhold==0 then bn=P.cur and P.cur.id @@ -160,17 +160,17 @@ function bot_9s.thread(bot) bn=P.holdQueue[1] and P.holdQueue[1].id or P.nextQueue[1] and P.nextQueue[1].id end if bn then - for dir=0,dirCount[bn] do--Each dir + for dir=0,dirCount[bn] do-- Each dir local cb=BLOCKS[bn][dir] - for cx=1,11-#cb[1] do--Each pos + for cx=1,11-#cb[1] do-- Each pos local cy=#Tfield+1 - --Move to bottom + -- Move to bottom while cy>1 and not _ifoverlapAI(Tfield,cb,cx,cy-1) do cy=cy-1 end - --Simulate lock + -- Simulate lock for i=1,#cb do local y=cy+i-1 if not Tfield[y] then @@ -194,7 +194,7 @@ function bot_9s.thread(bot) end if not best.bn then return 1 end - --Release cache + -- Release cache while #Tfield>0 do discardRow(rem(Tfield,1)) end @@ -207,7 +207,7 @@ function bot_9s.thread(bot) end ins(keys,6) - --Check if time to change target + -- Check if time to change target yield() if P.aiRND:random()<.00126 then P:changeAtkMode(P.aiRND:random()<.85 and 1 or #P.atker>3 and 4 or P.aiRND:random()<.3 and 2 or 3) diff --git a/parts/bot/bot_cc.lua b/parts/bot/bot_cc.lua index 4146812e..68655e30 100644 --- a/parts/bot/bot_cc.lua +++ b/parts/bot/bot_cc.lua @@ -50,11 +50,11 @@ function bot_cc:thread() local P,keys=self.P,self.keys local ccBot=self.ccBot while true do - --Start thinking + -- Start thinking yield() ccBot:think() - --Poll keys + -- Poll keys local success,result,dest,hold,move,b2b,attack,extra,spawn repeat yield() @@ -73,7 +73,7 @@ function bot_cc:thread() dest.extra = extra dest.spawn = spawn P.destFX=dest - if hold then--Hold + if hold then-- Hold keys[1]=8 end while move[1] do @@ -89,7 +89,7 @@ function bot_cc:thread() ins(keys,6) end - --Check if time to change target + -- Check if time to change target yield() if P.aiRND:random()<.00126 then P:changeAtkMode(P.aiRND:random()<.85 and 1 or #P.atker>3 and 4 or P.aiRND:random()<.3 and 2 or 3) diff --git a/parts/bot/init.lua b/parts/bot/init.lua index ef3fd8f8..24e42fab 100644 --- a/parts/bot/init.lua +++ b/parts/bot/init.lua @@ -127,7 +127,7 @@ function BOT.new(P,data) end bot.runningThread=coroutine.wrap(cc_lua.thread) bot.runningThread(bot) - else--if data.type=="9S" then--9s or else + else-- if data.type=="9S" then-- 9s or else TABLE.cover(baseBot,bot) TABLE.cover(require"parts.bot.bot_9s",bot) P:setRS('TRS') diff --git a/parts/char.lua b/parts/char.lua index dbefe33c..2ef81499 100644 --- a/parts/char.lua +++ b/parts/char.lua @@ -1,5 +1,5 @@ local L={ - zChan={--F0000~F003F + zChan={-- F0000~F003F none= 0xF0000, normal= 0xF0001, full= 0xF0002, @@ -24,7 +24,7 @@ local L={ thinking= 0xF0015, spark= 0xF0016, }, - mino={--F0040~F007F + mino={-- F0040~F007F Z=0xF0040, S=0xF0041, J=0xF0042, @@ -57,7 +57,7 @@ local L={ I2=0xF005B, O1=0xF005C, }, - icon={--F0080~F00FF + icon={-- F0080~F00FF menu= 0xF0080, music= 0xF0081, language= 0xF0082, @@ -131,7 +131,7 @@ local L={ garbage= 0xF00C6, copy= 0xF00C7, }, - key={--F0100~F017F + key={-- F0100~F017F macCmd= 0xF0100, macOpt= 0xF0101, macCtrl= 0xF0102, @@ -172,7 +172,7 @@ local L={ macPgdnAlt= 0xF0125, iecPower= 0xF0126, }, - controller={--F0180~F01FF + controller={-- F0180~F01FF xbox= 0xF0180, lt= 0xF0181, rt= 0xF0182, @@ -212,7 +212,7 @@ local L={ psCreate= 0xF01A4, psOption= 0xF01A5, }, - mahjong={--F0200~F027F + mahjong={-- F0200~F027F m1= 0xF0200, m2= 0xF0201, m3= 0xF0202, diff --git a/parts/customEnv0.lua b/parts/customEnv0.lua index 075304d0..9c7a6c2c 100644 --- a/parts/customEnv0.lua +++ b/parts/customEnv0.lua @@ -1,7 +1,7 @@ return{ version=VERSION.code, - --Basic + -- Basic drop=1e99, lock=1e99, wait=0, @@ -9,17 +9,17 @@ return{ hang=5, hurry=1e99, - --Control + -- Control nextCount=6, holdMode='hold', holdCount=1, infHold=true, phyHold=false, - --Visual + -- Visual bone=false, - --Rule + -- Rule sequence='bag', lockout=false, fieldH=20, @@ -40,7 +40,7 @@ return{ garbageSpeed=1, missionKill=false, - --Else + -- Else bg='blockrain', bgm='hang out', diff --git a/parts/data.lua b/parts/data.lua index d4236e27..74770ad9 100644 --- a/parts/data.lua +++ b/parts/data.lua @@ -5,8 +5,8 @@ local ins=table.insert local BAG,FIELD,MISSION,CUSTOMENV,GAME=BAG,FIELD,MISSION,CUSTOMENV,GAME local DATA={} ---Sep symbol: 33 (!) ---Safe char: 34~126 +-- Sep symbol: 33 (!) +-- Safe char: 34~126 --[[ Count: 34~96 Block: 97~125 @@ -66,14 +66,14 @@ local fieldMeta={__index=function(self,h) end return self[h] end} -function DATA.newBoard(f)--Generate a new board +function DATA.newBoard(f)-- Generate a new board return setmetatable(f and TABLE.shift(f) or{},fieldMeta) end -function DATA.copyBoard(page)--Copy the [page] board +function DATA.copyBoard(page)-- Copy the [page] board local F=FIELD[page or 1] local str="" - --Encode field + -- Encode field for y=1,#F do local S="" local L=F[y] @@ -91,7 +91,7 @@ function DATA.copyBoards() end return table.concat(out,"!") end -function DATA.pasteBoard(str,page)--Paste [str] data to [page] board +function DATA.pasteBoard(str,page)-- Paste [str] data to [page] board if not page then page=1 end @@ -100,16 +100,16 @@ function DATA.pasteBoard(str,page)--Paste [str] data to [page] board end local F=FIELD[page] - --Decode + -- Decode str=STRING.unpackBin(str) if not str then return end - local fX,fY=1,1--*ptr for Field(r*10+(c-1)) + local fX,fY=1,1-- *ptr for Field(r*10+(c-1)) local p=1 while true do - local b=byte(str,p)--1byte + local b=byte(str,p)-- 1byte - --Str end + -- Str end if not b then if fX~=1 then return @@ -118,9 +118,9 @@ function DATA.pasteBoard(str,page)--Paste [str] data to [page] board end end - local id=b%32-1--Block id - if id>26 then return end--Illegal blockid - b=int(b/32)--Mode id + local id=b%32-1-- Block id + if id>26 then return end-- Illegal blockid + b=int(b/32)-- Mode id F[fY][fX]=id if fX<10 then @@ -254,13 +254,13 @@ function DATA.dumpRecording(list,ptr) if not ptr then ptr=1 end local prevFrm=list[ptr-2] or 0 while list[ptr] do - --Flush buffer + -- Flush buffer if #buffer>10 then out=out..buffer buffer="" end - --Encode time + -- Encode time local t=list[ptr]-prevFrm prevFrm=list[ptr] if t>=128 then @@ -275,7 +275,7 @@ function DATA.dumpRecording(list,ptr) buffer=buffer..char(t) end - --Encode event + -- Encode event t=list[ptr+1] if t>=128 then buffer2=char(t%128) @@ -289,7 +289,7 @@ function DATA.dumpRecording(list,ptr) buffer=buffer..char(t) end - --Step + -- Step ptr=ptr+2 end return out..buffer,ptr @@ -301,7 +301,7 @@ function DATA.pumpRecording(str,L) local curFrm=L[#L-1] or 0 local code while p<=len do - --Read delta time + -- Read delta time code=0 local b=byte(str,p) while b>=128 do @@ -324,7 +324,7 @@ function DATA.pumpRecording(str,L) p=p+1 end end -do--function DATA.saveReplay() +do-- function DATA.saveReplay() local noRecList={"custom","solo","round","techmino"} local function _getModList() local res={} @@ -336,7 +336,7 @@ do--function DATA.saveReplay() return res end function DATA.saveReplay() - --Filtering modes that cannot be saved + -- Filtering modes that cannot be saved for _,v in next,noRecList do if GAME.curModeName:find(v) then MES.new('error',"Cannot save recording of this mode now!") @@ -344,7 +344,7 @@ do--function DATA.saveReplay() end end - --Write file + -- Write file local fileName=os.date("replay/%Y_%m_%d_%H%M%S.rep") if not love.filesystem.getInfo(fileName) then love.filesystem.write(fileName, @@ -371,7 +371,7 @@ do--function DATA.saveReplay() end function DATA.parseReplay(fileName,ifFull) local fileData - --Read file + -- Read file fileData=love.filesystem.read(fileName) return DATA.parseReplayData(fileName,fileData,ifFull) end @@ -380,20 +380,20 @@ function DATA.parseReplayData(fileName,fileData,ifFull) if not (fileData and #fileData>0) then goto BREAK_cannotParse end - --Decompress file + -- Decompress file success,fileData=pcall(love.data.decompress,'string','zlib',fileData) if not success then goto BREAK_cannotParse end - --Load metadata + -- Load metadata metaData,fileData=STRING.readLine(fileData) metaData=JSON.decode(metaData) if not metaData then goto BREAK_cannotParse end - --Convert ancient replays + -- Convert ancient replays metaData.mode=MODE_UPDATE_MAP[metaData.mode] or metaData.mode if not MODES[metaData.mode] then goto BREAK_cannotParse end - --Create replay object + -- Create replay object rep={ fileName=fileName, available=true, @@ -411,7 +411,7 @@ function DATA.parseReplayData(fileName,fileData,ifFull) if ifFull then rep.data=fileData end do return rep end - --Create unavailable replay object + -- Create unavailable replay object ::BREAK_cannotParse:: return{ fileName=fileName, diff --git a/parts/eventsets/attacker_h.lua b/parts/eventsets/attacker_h.lua index 5adf277f..ecd92c13 100644 --- a/parts/eventsets/attacker_h.lua +++ b/parts/eventsets/attacker_h.lua @@ -15,11 +15,11 @@ return{ P:win('finish') else if D.wave<20 then - local t=1500-30*D.wave--1500~900 + local t=1500-30*D.wave-- 1500~900 table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=12,countdown=t,cd0=t,time=0,sent=false,lv=3}) table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(3,8)),amount=10,countdown=t,cd0=t,time=0,sent=false,lv=4}) else - local t=900-10*(D.wave-20)--900~600 + local t=900-10*(D.wave-20)-- 900~600 table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(10)),amount=14,countdown=t,cd0=t,time=0,sent=false,lv=4}) table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=8,countdown=t,cd0=t,time=0,sent=false,lv=5}) end diff --git a/parts/eventsets/attacker_u.lua b/parts/eventsets/attacker_u.lua index ec814a12..27ccf2b4 100644 --- a/parts/eventsets/attacker_u.lua +++ b/parts/eventsets/attacker_u.lua @@ -15,7 +15,7 @@ return{ P:win('finish') else local s - local t=800-10*D.wave--800~700~600~500 + local t=800-10*D.wave-- 800~700~600~500 if D.wave<10 then table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(5,6)),amount=9,countdown=t,cd0=t,time=0,sent=false,lv=3}) table.insert(P.atkBuffer,{line=generateLine(P.holeRND:random(4,7)),amount=11,countdown=t,cd0=t+62,time=0,sent=false,lv=4}) diff --git a/parts/eventsets/classic_l.lua b/parts/eventsets/classic_l.lua index 8ca43bd8..fae97d5c 100644 --- a/parts/eventsets/classic_l.lua +++ b/parts/eventsets/classic_l.lua @@ -62,9 +62,9 @@ return{ local D=P.modeData D.drought=P.lastPiece.id==7 and 0 or D.drought+1 if P.stat.row>=D.target then - --if D.target>=200 then + -- if D.target>=200 then D.lvl=D.lvl+1 - --end + -- end local dropSpd=GetGravity(D.lvl) if dropSpd~=P.gameEnv.drop then P.gameEnv.drop,P.gameEnv.lock=dropSpd,dropSpd diff --git a/parts/eventsets/marathon_inf.lua b/parts/eventsets/marathon_inf.lua index 80e8fa12..d9f88cfb 100644 --- a/parts/eventsets/marathon_inf.lua +++ b/parts/eventsets/marathon_inf.lua @@ -2,7 +2,7 @@ local dropSpeed={ 50,42,35,30,25,20,16,13,11,10, 9,8,7,6,5,5,4,4,3,3, 3,2,2,2,2,1,1,1,1,1, - .5,.5,.5,.5,.25,.25,.25,.125,.125,--Total 39 numbers, switch to 20G when reach 400 lines + .5,.5,.5,.5,.25,.25,.25,.125,.125,-- Total 39 numbers, switch to 20G when reach 400 lines } local lockDelay={ 57,54,51,48,46,44,42,40,38,36, @@ -17,7 +17,7 @@ local lockDelay={ 4,4,4,4,4,4,4,4,4,4, 3,3,3,3,3,3,3,3,3,3, 2,2,2,2,2,2,2,2,2,2, - 1,1,1,1,1,1,1,1,1,--Finish at 1700 + 1,1,1,1,1,1,1,1,1,-- Finish at 1700 } return diff --git a/parts/eventsets/master_ex.lua b/parts/eventsets/master_ex.lua index 641081bc..b6e7f032 100644 --- a/parts/eventsets/master_ex.lua +++ b/parts/eventsets/master_ex.lua @@ -40,10 +40,10 @@ return{ PLY.draw.drawTargetLine(P,getRollGoal(P)) end, 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 if R>0 then - if R==4 then R=10 end--Techrash +10 + if R==4 then R=10 end-- Techrash +10 P.modeData.rankPoint=math.min(P.modeData.rankPoint+R,140-passPoint) P.modeData.rankName=sectionName[math.floor(P.modeData.rankPoint/10)+1] end diff --git a/parts/eventsets/master_final.lua b/parts/eventsets/master_final.lua index 0366e255..54b203cd 100644 --- a/parts/eventsets/master_final.lua +++ b/parts/eventsets/master_final.lua @@ -21,12 +21,12 @@ return{ if D.pt%100==99 then SFX.play('warn_1') - elseif D.pt>=D.target then--Level up! - s=D.target/100--range from 1 to 9 + elseif D.pt>=D.target then-- Level up! + s=D.target/100-- range from 1 to 9 local E=P.gameEnv if s<4 then P:stageComplete(s) - --First 300 + -- First 300 if s~=1 then E.lock=E.lock-1 end if s~=2 then E.wait=E.wait-1 end if s~=3 then E.fall=E.fall-1 end diff --git a/parts/eventsets/master_g.lua b/parts/eventsets/master_g.lua index f1965fb2..6c609d16 100644 --- a/parts/eventsets/master_g.lua +++ b/parts/eventsets/master_g.lua @@ -18,8 +18,8 @@ local isInRoll=false local rollGrades=0 local cool_time={3120,3120,2940,2700,2700,2520,2520,2280,2280,0} local reg_time= {5400,4500,4500,4080,3600,3600,3000,3000,3000,3000} -local prevDrop70=false --determines if previous piece has level less than __70 -local nextSpeedUp=false --determines if the next section speed should be boosted by 100 +local prevDrop70=false -- determines if previous piece has level less than __70 +local nextSpeedUp=false -- determines if the next section speed should be boosted by 100 local isInRollTrans=false local function getGrav(l) return @@ -220,7 +220,7 @@ return{ if D.pt+1==D.target then SFX.play('warn_1') - elseif D.pt>=D.target then--Level up! + elseif D.pt>=D.target then-- Level up! spd_lvl=nextSpeedUp and spd_lvl+100 or spd_lvl nextSpeedUp=false prevDrop70=false @@ -301,7 +301,7 @@ return{ end if isInRollTrans then if P.waiting>=220 then - --Make field invisible + -- Make field invisible for y=1,#P.field do for x=1,10 do P.visTime[y][x]=P.waiting-220 end end diff --git a/parts/eventsets/master_h.lua b/parts/eventsets/master_h.lua index 8934830a..3d9d7d86 100644 --- a/parts/eventsets/master_h.lua +++ b/parts/eventsets/master_h.lua @@ -25,7 +25,7 @@ return{ if D.pt%100==99 then SFX.play('warn_1') - elseif D.pt>=D.target then--Level up! + elseif D.pt>=D.target then-- Level up! s=D.target/100 local E=P.gameEnv E.lock=death_lock[s] diff --git a/parts/eventsets/master_instinct.lua b/parts/eventsets/master_instinct.lua index 3f04e566..ab97e083 100644 --- a/parts/eventsets/master_instinct.lua +++ b/parts/eventsets/master_instinct.lua @@ -40,7 +40,7 @@ return{ if D.pt%100==99 then SFX.play('warn_1') - elseif D.pt>=D.target then--Level up! + elseif D.pt>=D.target then-- Level up! s=D.target/100 local E=P.gameEnv E.lock=inv_lock[s] diff --git a/parts/eventsets/master_n.lua b/parts/eventsets/master_n.lua index ef573852..9dd868b1 100644 --- a/parts/eventsets/master_n.lua +++ b/parts/eventsets/master_n.lua @@ -25,7 +25,7 @@ return{ if D.pt%100==99 then SFX.play('warn_1') - elseif D.pt>=D.target then--Level up! + elseif D.pt>=D.target then-- Level up! s=D.target/100 local E=P.gameEnv E.lock=rush_lock[s] diff --git a/parts/eventsets/master_ph.lua b/parts/eventsets/master_ph.lua index ea095c9f..2f072aec 100644 --- a/parts/eventsets/master_ph.lua +++ b/parts/eventsets/master_ph.lua @@ -18,8 +18,8 @@ return if p>=P.modeData.target then local ENV=P.gameEnv local T=P.modeData.target - --Stage 1: clear 3 techrash - if T==12 then--Stage 2: swap color of S/Z & J/L + -- Stage 1: clear 3 techrash + if T==12 then-- Stage 2: swap color of S/Z & J/L P:stageComplete(2) P.waiting=30 P.curMission=false @@ -34,9 +34,9 @@ return P.modeData.target=26 SFX.play('reach') - elseif T==26 then--Stage 3: dig to bottom + elseif T==26 then-- Stage 3: dig to bottom P:stageComplete(3) - if not P.holdQueue[1] then--1 up if ban hold + if not P.holdQueue[1] then-- 1 up if ban hold P.life=P.life+1 end P.waiting=45 @@ -79,7 +79,7 @@ return P.modeData.target=42 SFX.play('reach') - elseif T==42 then--Stage 4: survive in high speed + elseif T==42 then-- Stage 4: survive in high speed if P.garbageBeneath==0 then P:stageComplete(4) P.waiting=30 @@ -93,7 +93,7 @@ return else p=41 end - elseif T==62 then--Stage 5: survive without easy-fresh rule + elseif T==62 then-- Stage 5: survive without easy-fresh rule P:stageComplete(5) P.life=P.life+1 ENV.lock=13 @@ -104,7 +104,7 @@ return P.modeData.target=126 SFX.play('reach') - elseif T==126 then--Stage 6: speed up + elseif T==126 then-- Stage 6: speed up P:stageComplete(6) P.life=P.life+1 @@ -114,7 +114,7 @@ return 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.life=P.life+1 @@ -125,7 +125,7 @@ return P.modeData.target=226 SFX.play('reach') - elseif T==226 then--Stage 8: final invisible + elseif T==226 then-- Stage 8: final invisible P:stageComplete(8) P.life=P.life+1 @@ -134,7 +134,7 @@ return P.modeData.target=259 SFX.play('reach') - elseif T==259 then--Stage 9: ending + elseif T==259 then-- Stage 9: ending P:stageComplete(9) P.life=P.life+1 for i=1,7 do ENV.skin[i]=P.holeRND:random(16) end diff --git a/parts/eventsets/pctrain_l.lua b/parts/eventsets/pctrain_l.lua index 6d8956bb..11f015a3 100644 --- a/parts/eventsets/pctrain_l.lua +++ b/parts/eventsets/pctrain_l.lua @@ -50,5 +50,5 @@ return{ mText(TEXTOBJ.pc,63,330) end, hook_drop=_check, - task=_check,--Just run one time at first to start first level + task=_check,-- Just run one time at first to start first level } diff --git a/parts/eventsets/pctrain_n.lua b/parts/eventsets/pctrain_n.lua index 030ed791..dfaf7835 100644 --- a/parts/eventsets/pctrain_n.lua +++ b/parts/eventsets/pctrain_n.lua @@ -43,5 +43,5 @@ return{ mText(TEXTOBJ.pc,63,330) end, hook_drop=_check, - task=_check,--Just run one time at first to start first level + task=_check,-- Just run one time at first to start first level } diff --git a/parts/eventsets/secret_grade.lua b/parts/eventsets/secret_grade.lua index 2464381b..1fa2c5c4 100644 --- a/parts/eventsets/secret_grade.lua +++ b/parts/eventsets/secret_grade.lua @@ -6,7 +6,7 @@ end local F={} -- local ranks={"10","9","8","7","6","5","4","3","2","1","S1","S2","S3","S4","S5","S6","S7","S8","S9","GM","GM+","TM","TM+","TM+₂","TM+₃", "TM+₄","TM+₅"} --- lines: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +-- lines: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 local function getSmallNum(num) local smalldigit={[0]="₀","₁","₂","₃","₄","₅","₆","₇","₈","₉"} diff --git a/parts/gameFuncs.lua b/parts/gameFuncs.lua index 7fe6a957..ee1a5f47 100644 --- a/parts/gameFuncs.lua +++ b/parts/gameFuncs.lua @@ -14,8 +14,8 @@ local playSFX=SFX.play ---System -do--function tryBack() +-- System +do-- function tryBack() local sureTime=-1e99 function tryBack() if TIME()-sureTime<1 then @@ -27,7 +27,7 @@ do--function tryBack() end end end -do--function tryReset() +do-- function tryReset() local sureTime=-1e99 function tryReset() if TIME()-sureTime<1 then @@ -39,7 +39,7 @@ do--function tryReset() end end end -do--function tryDelete() +do-- function tryDelete() local sureTime=-1e99 function tryDelete() if TIME()-sureTime<1 then @@ -51,7 +51,7 @@ do--function tryDelete() end end end -do--function loadFile(name,args), function saveFile(data,name,args) +do-- function loadFile(name,args), function saveFile(data,name,args) local t=setmetatable({},{__index=function() return"'$1' loading failed: $2" end}) function loadFile(name,args) local text=text or t @@ -102,7 +102,7 @@ end function saveSettings() return saveFile(SETTING,'conf/settings') end -do--function applySettings() +do-- function applySettings() local saturateValues={ normal={0,1}, soft={.2,.7}, @@ -111,7 +111,7 @@ do--function applySettings() color={-.2,1.2}, } function applySettings() - --Apply language + -- Apply language text=LANG.get(SETTING.locale) WIDGET.setLang(text.WidgetText) for k,v in next,TEXTOBJ do @@ -120,29 +120,29 @@ do--function applySettings() end end - --Apply cursor + -- Apply cursor love.mouse.setVisible(SETTING.sysCursor) - --Apply fullscreen + -- Apply fullscreen love.window.setFullscreen(SETTING.fullscreen) love.resize(GC.getWidth(),GC.getHeight()) - --Apply Zframework setting + -- Apply Zframework setting Z.setClickFX(SETTING.clickFX) Z.setFrameMul(SETTING.frameMul) Z.setPowerInfo(SETTING.powerInfo) Z.setCleanCanvas(SETTING.cleanCanvas) - --Apply VK shape + -- Apply VK shape VK.setShape(SETTING.VKSkin) - --Apply sound + -- Apply sound love.audio.setVolume(SETTING.mainVol) BGM.setVol(SETTING.bgm) SFX.setVol(SETTING.sfx) VOC.setVol(SETTING.voc) - --Apply saturs + -- Apply saturs local m m=saturateValues[SETTING.blockSatur] or saturateValues.normal SHADER.blockSatur:send('b',m[1]) @@ -151,7 +151,7 @@ do--function applySettings() SHADER.fieldSatur:send('b',m[1]) SHADER.fieldSatur:send('k',m[2]) - --Apply BG + -- Apply BG if SETTING.bg=='on' then BG.unlock() BG.set() @@ -171,7 +171,7 @@ do--function applySettings() else MES.new('error',text.customBGloadFailed) end - else--Switch off when custom BG not found + else-- Switch off when custom BG not found SETTING.bg='off' BG.unlock() BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha) @@ -181,8 +181,8 @@ do--function applySettings() end end ---Royale mode -function randomTarget(P)--Return a random opponent for P +-- Royale mode +function randomTarget(P)-- Return a random opponent for P if #PLY_ALIVE>1 then local R repeat @@ -277,7 +277,7 @@ function royaleLevelup() end end ---Sound shortcuts +-- Sound shortcuts function playClearSFX(cc) if cc<=0 or cc%1~=0 then return end if cc<=4 then @@ -329,7 +329,7 @@ function playReadySFX(i,vol) end ---Game +-- Game function getItem(itemName,amount) STAT.item[itemName]=STAT.item[itemName]+(amount or 1) end @@ -381,7 +381,7 @@ function freshDate(args) return true end end -function legalGameTime()--Check if today's playtime is legal +function legalGameTime()-- Check if today's playtime is legal if SETTING.locale:find'zh' and RANKS.sprint_10l<4 and @@ -399,7 +399,7 @@ function legalGameTime()--Check if today's playtime is legal end return true end -do--function trySettingWarn() +do-- function trySettingWarn() local lastWarnTime=0 function trySettingWarn() if TIME()-lastWarnTime>2.6 then @@ -409,7 +409,7 @@ do--function trySettingWarn() end end -function mergeStat(stat,delta)--Merge delta stat. to global stat. +function mergeStat(stat,delta)-- Merge delta stat. to global stat. for k,v in next,delta do if type(v)=='table' then if type(stat[k])=='table' then @@ -422,7 +422,7 @@ function mergeStat(stat,delta)--Merge delta stat. to global stat. end end end -function scoreValid()--Check if any unranked mods are activated +function scoreValid()-- Check if any unranked mods are activated for _,M in next,GAME.mod do if M.unranked then return false @@ -433,7 +433,7 @@ function scoreValid()--Check if any unranked mods are activated end return true end -function destroyPlayers()--Destroy all player objects, restore freerows and free CCs +function destroyPlayers()-- Destroy all player objects, restore freerows and free CCs for i=#PLAYERS,1,-1 do local P=PLAYERS[i] if P.canvas then @@ -468,7 +468,7 @@ function pauseGame() SCN.swapTo('pause','none') end end -function applyCustomGame()--Apply CUSTOMENV, BAG, MISSION +function applyCustomGame()-- Apply CUSTOMENV, BAG, MISSION for k,v in next,CUSTOMENV do GAME.modeEnv[k]=v end @@ -483,7 +483,7 @@ function applyCustomGame()--Apply CUSTOMENV, BAG, MISSION GAME.modeEnv.mission=nil end end -function loadGame(mode,ifQuickPlay,ifNet)--Load a mode and go to game scene +function loadGame(mode,ifQuickPlay,ifNet)-- Load a mode and go to game scene freshDate() if legalGameTime() then if not MODES[mode] and FILE.isSafe('parts/modes/'..mode) then @@ -510,7 +510,7 @@ function loadGame(mode,ifQuickPlay,ifNet)--Load a mode and go to game scene end end end -function gameOver()--Save record +function gameOver()-- Save record if GAME.replaying then local R=GAME.curMode.getRank if R then @@ -526,13 +526,13 @@ function gameOver()--Save record local R=M.getRank if R then local P=PLAYERS[1] - R=R(P)--New rank + R=R(P)-- New rank if R then if R>0 then GAME.rank=R end if not GAME.replaying and M.score and scoreValid() then - if RANKS[M.name] then--Old rank exist + if RANKS[M.name] then-- Old rank exist local needSave if R>RANKS[M.name] then RANKS[M.name]=R @@ -558,9 +558,9 @@ function gameOver()--Save record end local D=M.score(P) local L=M.records - local p=#L--Rank-1 + local p=#L-- Rank-1 if p>0 then - while M.comp(D,L[p]) do--If higher rank + while M.comp(D,L[p]) do-- If higher rank p=p-1 if p==0 then break end end @@ -592,9 +592,9 @@ function trySave() saveStats() end end -do--function freshPlayerPosition(sudden) +do-- function freshPlayerPosition(sudden) local posLists={ - --1~5 + -- 1~5 { {340,75,1}, {965,390,.5}, @@ -602,7 +602,7 @@ do--function freshPlayerPosition(sudden) {20,390,.5}, {20,30,.5}, }, - --6~17 + -- 6~17 (function() local L={{340,75,1}} for i=1,4 do ins(L,{15,-160+180*i,.25}) end @@ -611,7 +611,7 @@ do--function freshPlayerPosition(sudden) for i=1,4 do ins(L,{1120,-160+180*i,.25}) end return L end)(), - --18~31 + -- 18~31 (function() local L={{340,75,1}} for i=1,5 do ins(L,{10, -100+135*i,.18}) end @@ -622,14 +622,14 @@ do--function freshPlayerPosition(sudden) for i=1,5 do ins(L,{1160,-100+135*i,.18}) end return L end)(), - --32~49 + -- 32~49 (function() local L={{340,75,1}} for i=1,4 do for j=1,6 do ins(L,{78*i-54,115*j-98,.09}) end end for i=9,12 do for j=1,6 do ins(L,{78*i+267,115*j-98,.09}) end end return L end)(), - --50~99 + -- 50~99 (function() local L={{340,75,1}} for i=1,7 do for j=1,7 do ins(L,{46*i-36,97*j-72,.068}) end end @@ -637,7 +637,7 @@ do--function freshPlayerPosition(sudden) return L end)(), } - function freshPlayerPosition(sudden)--Set initial position for every player + function freshPlayerPosition(sudden)-- Set initial position for every player local L=PLY_ALIVE if not sudden then for i=1,#L do @@ -657,21 +657,21 @@ do--function freshPlayerPosition(sudden) for i=1,#L do L[i][method](L[i],unpack(posList[i])) end end end -do--function dumpBasicConfig() +do-- function dumpBasicConfig() local gameSetting={ - --Tuning + -- Tuning 'das','arr','dascut','dropcut','sddas','sdarr', 'ihs','irs','ims','RS', - --System + -- System 'skin','face', - --Graphic + -- Graphic 'ghostType','block','ghost','center','bagLine', 'dropFX','moveFX','shakeFX', 'text','highCam','nextPos', - --Unnecessary graphic + -- Unnecessary graphic -- 'grid','smooth', -- 'lockFX','clearFX','splashFX','atkFX', -- 'score', @@ -684,7 +684,7 @@ do--function dumpBasicConfig() return JSON.encode(S) end end -do--function resetGameData(args) +do-- function resetGameData(args) local function task_showMods() local time=0 while true do @@ -701,14 +701,14 @@ do--function resetGameData(args) end end local gameSetting={ - --Tuning + -- Tuning 'das','arr','dascut','dropcut','sddas','sdarr', 'ihs','irs','ims','RS', - --System + -- System 'skin','face', - --Graphic + -- Graphic 'block','ghost','center','smooth','grid','bagLine', 'lockFX','dropFX','moveFX','clearFX','splashFX','shakeFX','atkFX', 'text','score','warn','highCam','nextPos', @@ -785,14 +785,14 @@ do--function resetGameData(args) collectgarbage() end end -do--function checkWarning() +do-- function checkWarning() local max=math.max function checkWarning(dt) local P1=PLAYERS[1] if P1.alive then if P1.frameRun%26==0 then local F=P1.field - local height=0--Max height of row 4~7 + local height=0-- Max height of row 4~7 for x=4,7 do for y=#F,1,-1 do if F[y][x]>0 then @@ -823,8 +823,8 @@ end ---Game draw -do--function drawSelfProfile() +-- Game draw +do-- function drawSelfProfile() local name local textObj,scaleK,width,offY function drawSelfProfile() @@ -832,14 +832,14 @@ do--function drawSelfProfile() gc_push('transform') gc_replaceTransform(SCR.xOy_ur) - --Draw avatar + -- Draw avatar gc_setLineWidth(2) gc_setColor(COLOR.X)gc_rectangle('fill',0,0,-300,80) gc_setColor(1,1,1)gc_rectangle('line',-300,0,300,80,5) gc_rectangle('line',-73,7,66,66,2) gc_draw(selfAvatar,-72,8,nil,.5) - --Draw username + -- Draw username if name~=USERS.getUsername(USER.uid) then name=USERS.getUsername(USER.uid) textObj=GC.newText(getFont(30),name) @@ -874,9 +874,9 @@ end ---Widget function shortcuts +-- Widget function shortcuts function backScene() SCN.back() end -do--function goScene(name,style) +do-- function goScene(name,style) local cache={} function goScene(name,style) local hash=style and name..style or name @@ -886,7 +886,7 @@ do--function goScene(name,style) return cache[hash] end end -do--function swapScene(name,style) +do-- function swapScene(name,style) local cache={} function swapScene(name,style) local hash=style and name..style or name @@ -896,7 +896,7 @@ do--function swapScene(name,style) return cache[hash] end end -do--function pressKey(k) +do-- function pressKey(k) local cache={} function pressKey(k) if not cache[k] then @@ -905,7 +905,7 @@ do--function pressKey(k) return cache[k] end end -do--CUS/SETXXX(k) +do-- CUS/SETXXX(k) local CUSTOMENV=CUSTOMENV local warnList={ 'das','arr','dascut','dropcut','sddas','sdarr', diff --git a/parts/gameTables.lua b/parts/gameTables.lua index f3b9b61a..886325ae 100644 --- a/parts/gameTables.lua +++ b/parts/gameTables.lua @@ -1,4 +1,4 @@ ---Static data tables +-- Static data tables BLOCK_NAMES={ 'Z','S','J','L','T','O','I', 'Z5','S5','P','Q','F','E', @@ -20,7 +20,7 @@ RANK_COLORS={ {1,.5,.4}, {.95,.5,.95}, } -do--SVG_TITLE_FILL, SVG_TITLE_LINE +do-- SVG_TITLE_FILL, SVG_TITLE_LINE SVG_TITLE_FILL={ { 0,0, @@ -134,21 +134,21 @@ do--SVG_TITLE_FILL, SVG_TITLE_LINE for j=1,16 do SVG_TITLE_LINE[8][j]=SVG_TITLE_FILL[8][j] end for j=19,#SVG_TITLE_FILL[8]-2 do SVG_TITLE_LINE[9][j-18]=SVG_TITLE_FILL[8][j] end end -do--SVG_TITLE_FAN +do-- SVG_TITLE_FAN SVG_TITLE_FAN={} local sin,cos=math.sin,math.cos for i=1,9 do local L=TABLE.copy(SVG_TITLE_LINE[i]) SVG_TITLE_FAN[i]=L for j=1,#L,2 do - local x,y=L[j],L[j+1]--0) and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA were licensed by TTC. These two companies do not have the copyright of Tetris.",--Thanks to Alexey Pajitnov! + "The name of the game (and its trademark). Also the term for clearing four lines at one time in official games.\nCoined from Tetra (Greek for “four” <τέτταρες>) and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA were licensed by TTC. These two companies do not have the copyright of Tetris.",-- Thanks to Alexey Pajitnov! }, {"All Clear", "pc perfectclear ac allclear", @@ -675,7 +675,7 @@ return{ {"Donation", "donate", "term", - "A method of “plugging” up the Tetris hole to send a T-Spin. After the T-Spin, the Tetris hole is opened up once again to allow the continuation of Tetris or downstacking.\n--Harddrop wiki", + "A method of “plugging” up the Tetris hole to send a T-Spin. After the T-Spin, the Tetris hole is opened up once again to allow the continuation of Tetris or downstacking.\n-- Harddrop wiki", }, {"‘Debt’", "qianzhai debt owe", @@ -975,7 +975,7 @@ return{ "A Tetris bot. Built by the Chinese Tetris player 奏之章 (Zòu Zhī Zhāng, see entry below) and has decent performance in many games", }, - --Setups + -- Setups {"Openers", "setup openers", "setup", @@ -1090,7 +1090,7 @@ return{ HDsearch.."Gamushiro_Stacking", }, - --Pattern + -- Pattern {"Mid-game Setups", "midgamesetups", "pattern", @@ -1174,7 +1174,7 @@ return{ "https://four.lol/perfect-clears/5th", }, - --Savedata managing + -- Savedata managing {"Console", "cmd commamd minglinghang kongzhitai terminal", "command", @@ -1216,7 +1216,7 @@ return{ "Go to console, type “rm -s cache” and then press enter/return.\nTake effect immediately.", }, - --English + -- English {"SFX", "soundeffects", "english", diff --git a/parts/language/dict_ja.lua b/parts/language/dict_ja.lua index 10f07498..5cda9866 100644 --- a/parts/language/dict_ja.lua +++ b/parts/language/dict_ja.lua @@ -55,7 +55,7 @@ return{ "https://tetris.huijiwiki.com", }, - --Webpages / Organizations + -- Webpages / Organizations {"Githubリポジトリー", "githubrepository sourcecode リポジトリー ソースコード", "org", @@ -98,7 +98,7 @@ return{ FNNS and "https://youtu.be/dQw4w9WgXcQ" or "https://www.p\97\116\114\101\111\110.com/techmino", }, - --Games + -- Games {"テトリス トレーナー トレビアン (TTT)", "tetris trainer tres bien テトリス トレーナー トレビアン", "game", @@ -320,7 +320,7 @@ return{ "Windows | Multiplayer\n(火拼俄罗斯)\n\nThe Tetris game on Tencent Game Center, 12-wide board, DAS/ARR the same as your typing, 1 next, no hold. Can only send garbage through Tetris (sends 3 lines) and Triple (sends 2 lines). Garbage is checker-board-shaped and is nearly impossible to dig through.", }, - --Terms + -- Terms {"Translator Note 2", "", "help", @@ -405,7 +405,7 @@ return{ {"Tetris", "tetris", "term", - "The name of the game (and its trademark). Also the name for clearing 4 lines at one time in official games.\nCoined from Tetra (greek for \"four\") and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA was licensed by TTC and these two companies do not have the copyright of Tetris.",--Thanks to Alexey Pajitnov! + "The name of the game (and its trademark). Also the name for clearing 4 lines at one time in official games.\nCoined from Tetra (greek for \"four\") and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA was licensed by TTC and these two companies do not have the copyright of Tetris.",-- Thanks to Alexey Pajitnov! }, {"All Clear", "pc perfectclear ac allclear", @@ -612,7 +612,7 @@ return{ {"Donation", "donate", "term", - "A method of \"plugging\" up the Tetris hole to send a T-Spin. After the T-Spin, the Tetris hole is opened up once again to allow the continuation of Tetris or downstacking.\n--Harddrop wiki", + "A method of \"plugging\" up the Tetris hole to send a T-Spin. After the T-Spin, the Tetris hole is opened up once again to allow the continuation of Tetris or downstacking.\n-- Harddrop wiki", }, {"\"Debt\"", "qianzhai debt owe", @@ -833,7 +833,7 @@ return{ {"Passthrough", "pingthrough", "term", - "",--TODO + "",-- TODO }, {"Tetris OL attack", "top tetrisonlineattack", @@ -917,7 +917,7 @@ return{ "A Tetris bot. Built by the Chinese Tetris player 奏之章 (Zou Zhi Zhang) and has decent performance in many games", }, - --Setups + -- Setups {"Openers", "setup openers", "setup", @@ -1009,7 +1009,7 @@ return{ "An All Clear opener with a high success rate. In Techmino's PC Practice modes, the setup that leaves an irregular opening is this setup.", }, - --Pattern + -- Pattern {"Mid-game Setups", "midgamesetups", "pattern", @@ -1072,7 +1072,7 @@ return{ "Stacking TST(s) on top of a STSD.", }, - --Savedata managing + -- Savedata managing {"Console", "cmd commamd minglinghang kongzhitai terminal", "command", @@ -1114,7 +1114,7 @@ return{ "Go to console and type \"rm -s cache\" then press enter.\nTake effect immediately.", }, - --English + -- English {"SFX", "soundeffects", "english", diff --git a/parts/language/dict_zh.lua b/parts/language/dict_zh.lua index bc87e801..e55913d4 100644 --- a/parts/language/dict_zh.lua +++ b/parts/language/dict_zh.lua @@ -84,7 +84,7 @@ return{ "https://knewjade.github.io/fumen-for-mobile/" }, - --相关网页/组织 + -- 相关网页/组织 {"GitHub仓库", "源代码 源码 github git sourcecode yuandaima src", "org", @@ -126,7 +126,7 @@ return{ FNNS and "https://b23.tv/BV1uT4y1P7CX" or "https://www.p\97\116\114\101\111\110.com/techmino", }, - --游戏(题库) + -- 游戏(题库) {"TTT", "教程 trainer tres bien", "game", @@ -152,7 +152,7 @@ return{ "http://121.36.2.245:3000/tpo" }, - --游戏(网页) + -- 游戏(网页) {"注[1]", "备注 notice", "game", @@ -228,7 +228,7 @@ return{ "网页游戏 | 单机\ntetris.com官网上的俄罗斯方块,在马拉松基础上添加了技能,场地上会随机冒出技能方块,消除后会得到各种各样或好或坏的技能。", }, - --游戏(跨平台) + -- 游戏(跨平台) {"Techmino", "铁壳米诺 方块研究所 tieke", "game", @@ -250,7 +250,7 @@ return{ "Windows/Android | 单机\n块圈玩家自制方块,正在开发中,有一个原创旋转系统。", }, - --游戏(街机/类街机) + -- 游戏(街机/类街机) {"TGM", "俄罗斯方块大师 tetrisgrandmaster", "game", @@ -273,7 +273,7 @@ return{ "Windows | 单机\n简称Tex,包含TGM的所有模式,可以用来练习TGM,但World规则不完全一样(如软降到底无锁延,踢墙表有细节不同等)。", }, - --游戏(其他) + -- 游戏(其他) {"Tetris Effect", "效应 tec tetriseffectconnected xiaoyinglianjie", "game", @@ -356,7 +356,7 @@ return{ "Windows | 多人\n腾讯游戏大厅的方块,场地12列,打字的 DAS 和 ARR,1 Next无 Hold,攻击途径只有消4打3、 消3打2,垃圾行为国际象棋棋盘式,几乎不可能挖掘。", }, - --术语(缩写) + -- 术语(缩写) {"LPM", "速度 sudu", "term", @@ -413,7 +413,7 @@ return{ "Attack Per Line\n攻击每行,也叫效率,体现玩家攻击的行利用率。例如消四和T旋的效率就比消二和消三高。", }, - --术语(消除名) + -- 术语(消除名) {"Single", "1 xiaoyi", "term", @@ -450,7 +450,7 @@ return{ "Half-PC\nPC(全消)的外延,“下方有剩余方块” 的全消(特别地,如果只消1行则必须不剩余玩家放置的方块),能打出一些攻击和防御(Techmino限定)。", }, - --术语(旋转相关) + -- 术语(旋转相关) {"Spin", "转 xuanzhuan zuandong", "term", @@ -578,7 +578,7 @@ return{ "X Rotation System\nT-ex原创旋转系统,引入了 “按住方向键换一套踢墙表” 的设定(在对应的方向需要顶住墙),让 “想去哪” 能被游戏捕获从而转到玩家希望到达的位置。\n\n其他旋转系统无论踢墙表怎么设计,块处在某个位置时旋转后最终只能按固定顺序测试,这导致不同的踢墙是竞争的,若存在两个可能想去的位置就只能二选一,XRS解决了这个问题。", }, - --术语(其他) + -- 术语(其他) {"B2B", "大满贯 btb backtoback", "term", @@ -903,7 +903,7 @@ return{ {"C2序列", "seq", "term", - "(七个块初始权重设为0)\n要取块的时候,\n先把七个数都除以2然后加上0~1的随机数,\n最大的数字是第几个的就出对应的块,然后将其权重除以3.5\n循环。",--Discovered by zxc + "(七个块初始权重设为0)\n要取块的时候,\n先把七个数都除以2然后加上0~1的随机数,\n最大的数字是第几个的就出对应的块,然后将其权重除以3.5\n循环。",-- Discovered by zxc }, {"堆叠(Stack)", "duidie stacking", @@ -972,7 +972,7 @@ return{ "一个AI的名字(就跟AlphaGo一样)\n由研究群群友奏之章开发,重新调参后在各个游戏平台上的表现都很不错。", }, - --定式 + -- 定式 {"开局定式(Setup)", "opening kaijudingshi opener", "setup", @@ -1086,7 +1086,7 @@ return{ HDsearch.."Gamushiro_Stacking", }, - --形状 + -- 形状 {"中局定式", "setup dingshi", "pattern", @@ -1171,7 +1171,7 @@ return{ "https://four.lol/perfect-clears/5th" }, - --存档管理 + -- 存档管理 {"控制台", "console cmd commamd minglinghang kongzhitai", "command", @@ -1213,7 +1213,7 @@ return{ "前往控制台输入 “rm -s cache” 并回车。\n立即生效。", }, - --英文 + -- 英文 {"SFX", "", "english", diff --git a/parts/language/lang_fr.lua b/parts/language/lang_fr.lua index 9661bc71..8c38cacd 100644 --- a/parts/language/lang_fr.lua +++ b/parts/language/lang_fr.lua @@ -54,7 +54,7 @@ return{ -- cc_fixed="CC is incompatible with fixed sequences", -- cc_swap="CC is incompatible with swap holdmode", - --ai_prebag="The AI is incompatible with custom sequences which have nontetromino.",'IA est incompatible avec les séquences personnalisées.", + -- ai_prebag="The AI is incompatible with custom sequences which have nontetromino.",'IA est incompatible avec les séquences personnalisées.", ai_mission="L'IA est incompatible avec les missions personnalisées.", switchSpawnSFX="Activez les effets sonores d'apparition des pièces pour jouer", needRestart="Fonctionnera dès la prochaine partie", diff --git a/parts/language/lang_pt.lua b/parts/language/lang_pt.lua index 21dbcbbf..cecbdc1a 100644 --- a/parts/language/lang_pt.lua +++ b/parts/language/lang_pt.lua @@ -54,7 +54,7 @@ return{ -- cc_fixed="CC is incompatible with fixed sequences", -- cc_swap="CC is incompatible with swap holdmode", - --ai_prebag="The AI is incompatible with custom sequences which have nontetromino.", inteligência é incompatível com sequências fixas.", + -- ai_prebag="The AI is incompatible with custom sequences which have nontetromino.", inteligência é incompatível com sequências fixas.", ai_mission="A inteligência é incompatível com missões costumizadas.", switchSpawnSFX="Switch on spawn SFX to play", needRestart="Funciona após reiniciar", diff --git a/parts/language/lang_symbol.lua b/parts/language/lang_symbol.lua index 39e767c6..c16cc53d 100644 --- a/parts/language/lang_symbol.lua +++ b/parts/language/lang_symbol.lua @@ -235,7 +235,7 @@ return{ ctrl="=?=", key="=?", touch="_?", - showVK="--?", + showVK="-- ?", reTime="3-2-1", RS="''?", menuPos="←M→?", @@ -258,7 +258,7 @@ return{ ghost="__↓__", center="+", grid="#", - lineNum="--No.", + lineNum="-- No.", lockFX="↓_~", dropFX="↓~", @@ -509,7 +509,7 @@ return{ color="~~~", invis="???", slide="~_~", - pathVis="--==>", + pathVis="-- ==>", revKB="Reverse", }, app_schulteG={ diff --git a/parts/language/lang_zh_code.lua b/parts/language/lang_zh_code.lua index 53cc594d..f3730de4 100644 --- a/parts/language/lang_zh_code.lua +++ b/parts/language/lang_zh_code.lua @@ -283,7 +283,7 @@ return{ "NOT_A_ROBOT", "sakurw", "Airun", - --"XMiao", + -- "XMiao", "幽灵3383", "", "Performances", diff --git a/parts/line.lua b/parts/line.lua index 983d2238..84b4de92 100644 --- a/parts/line.lua +++ b/parts/line.lua @@ -1,6 +1,6 @@ local LINE={} -local L={}--Storage -local len=0--Length +local L={}-- Storage +local len=0-- Length function LINE.new(val,isGarbage) if len==0 then for i=1,10 do diff --git a/parts/modes/PCbase.lua b/parts/modes/PCbase.lua index 73b2b7d3..f7d6f94c 100644 --- a/parts/modes/PCbase.lua +++ b/parts/modes/PCbase.lua @@ -24,7 +24,7 @@ return{ {3,2,6,6,1,4,0,0,0,7}, {3,3,3,4,4,4,0,0,0,7}, }, - },--3*4 shape + },-- 3*4 shape { { {1,1,0,0,0,0,0,3,3,3}, @@ -50,7 +50,7 @@ return{ {3,6,6,5,5,2,2,0,0,0}, {3,3,3,5,2,2,0,0,0,0}, }, - },--7 piece opener(right>)(without i) + },-- 7 piece opener(right>)(without i) { { {4,4,4,3,3,3,0,0,0,0}, @@ -64,7 +64,7 @@ return{ {3,2,6,6,1,4,0,0,0,0}, {3,3,3,4,4,4,0,0,0,0}, }, - },--6 piece opener + },-- 6 piece opener { { {0,0,0,0,0,1,3,5,6,7}, @@ -84,7 +84,7 @@ return{ {1,3,0,0,0,0,0,5,6,7}, {1,3,0,0,0,0,0,5,6,7}, }, - },--4*5 + },-- 4*5 { { {0,0,0,0,0,0,1,3,5,7}, @@ -104,5 +104,5 @@ return{ {5,7,0,0,0,0,0,0,3,1}, {1,3,0,0,0,0,0,0,7,5}, }, - },--4*6 + },-- 4*6 } diff --git a/parts/modes/PClist.lua b/parts/modes/PClist.lua index 4f7b847b..79112858 100644 --- a/parts/modes/PClist.lua +++ b/parts/modes/PClist.lua @@ -1,16 +1,16 @@ return{ - --3*4 shape + -- 3*4 shape {{1,3,3},{1,3,4},{1,5,3},{3,1,3},{3,1,4},{3,2,4},{3,3,2},{3,3,5},{3,3,6},{3,3,7},{3,4,1},{3,4,5},{3,4,6},{3,5,3},{3,5,4},{3,5,5},{3,6,3},{3,6,4},{3,7,3},{3,7,4},{5,3,4},{5,3,5},{5,5,1},{5,5,3},{5,7,3},{6,3,3},{6,3,4},{6,6,7},{6,7,6},{7,3,3},{7,3,4},{7,5,3},{7,6,6},{7,7,7}}, - --7 piece opener (right>) + -- 7 piece opener (right>) {{5,3,4,4},{5,3,7,7},{5,7,4,4},{4,2,4,4},{3,5,4,4},{3,4,5,4},{3,3,7,4},{7,5,4,4},{1,5,1,1},{1,5,5,5},{1,5,7,4},{1,2,4,5},{1,4,5,5},{1,4,5,2},{1,4,2,5},{1,4,4,4},{5,1,4,5},{5,5,4,1},{5,5,4,2},{5,5,4,4},{5,4,5,4},{5,4,4,5},{5,4,4,3},{5,7,4,6},{5,7,4,3},{2,5,4,4},{6,4,4,4},{6,7,4,6},{4,1,2,5},{4,1,4,4},{4,5,4,5},{4,5,7,7},{4,6,4,4},{4,4,6,4},{4,4,3,5},{4,4,3,6},{4,3,4,5},{4,3,4,6},{4,7,3,4},{4,7,7,5},{3,1,4,4},{3,1,4,3},{3,1,3,4},{3,5,5,4},{3,5,4,5},{3,5,7,7},{3,2,5,2},{3,2,4,4},{3,6,4,4},{3,6,3,3},{3,4,1,3},{3,4,4,5},{3,4,4,6},{3,4,3,7},{3,3,6,3},{3,7,5,7},{3,7,4,3},{3,7,3,4},{7,5,4,6},{7,5,4,3},{7,5,3,4},{7,5,7,1},{7,6,4,6},{7,4,1,5},{7,4,5,6},{7,4,3,4},{7,4,7,5},{7,3,1,5},{7,3,5,7},{7,3,4,4},{7,3,3,4},{7,3,7,5},{7,7,4,5},{7,7,7,4},{1,1,5,2},{1,1,7,4},{1,5,1,2},{1,5,1,3},{1,5,5,2},{1,5,2,1},{1,5,2,3},{1,5,6,3},{1,5,6,7},{1,5,4,1},{1,5,4,5},{1,5,4,2},{1,5,4,3},{1,5,4,7},{1,5,3,1},{1,5,3,4},{1,5,7,2},{1,5,7,6},{1,5,7,7},{1,2,5,1},{1,2,5,4},{1,2,7,4},{1,4,1,5},{1,4,5,1},{1,4,5,4},{1,4,6,5},{1,4,4,3},{1,4,3,3},{1,3,1,2},{1,3,5,2},{1,3,4,4},{1,3,4,3},{1,3,3,4},{1,7,1,4},{1,7,5,6},{1,7,5,4},{1,7,5,3},{1,7,5,7},{1,7,2,3},{1,7,6,4},{1,7,4,1},{1,7,4,5},{1,7,4,7},{1,7,3,1},{1,7,7,4},{5,1,5,5},{5,1,5,2},{5,1,5,4},{5,1,2,3},{5,1,6,3},{5,1,4,1},{5,1,4,2},{5,1,4,7},{5,1,7,2},{5,1,7,4},{5,5,1,5},{5,5,1,2},{5,5,1,4},{5,5,5,1},{5,5,5,2},{5,5,5,4},{5,5,5,7},{5,5,2,1},{5,5,2,5},{5,5,6,7},{5,5,4,5},{5,5,4,3},{5,5,3,1},{5,5,3,4},{5,5,7,5},{5,5,7,6},{5,2,1,3},{5,2,5,4},{5,2,4,5},{5,2,3,1},{5,2,3,6},{5,2,7,1},{5,6,1,3},{5,6,5,7},{5,6,6,1},{5,4,1,5},{5,4,1,7},{5,4,5,1},{5,4,5,5},{5,4,5,2},{5,4,5,3},{5,4,2,5},{5,4,4,1},{5,4,4,4},{5,4,3,1},{5,4,3,5},{5,4,3,4},{5,4,7,1},{5,3,5,4},{5,3,5,3},{5,3,2,2},{5,3,6,6},{5,3,4,1},{5,3,4,5},{5,3,4,3},{5,3,3,1},{5,3,3,4},{5,3,3,3},{5,7,1,2},{5,7,1,4},{5,7,1,3},{5,7,5,5},{5,7,5,7},{5,7,2,1},{5,7,6,4},{5,7,6,7},{5,7,4,1},{5,7,4,2},{5,7,4,7},{5,7,3,1},{5,7,3,2},{5,7,3,6},{5,7,3,4},{5,7,3,7},{5,7,7,1},{5,7,7,6},{5,7,7,4},{5,7,7,3},{2,1,5,1},{2,1,4,5},{2,1,7,4},{2,5,1,1},{2,5,4,5},{2,5,3,6},{2,4,1,5},{2,4,4,4},{2,4,4,3},{2,3,5,6},{2,7,1,4},{2,7,5,5},{2,7,4,1},{2,7,3,7},{2,7,7,3},{6,5,6,1},{6,5,3,1},{6,6,5,1},{6,6,4,5},{6,6,7,4},{6,4,6,5},{6,4,7,5},{6,3,4,3},{6,3,3,4},{6,7,6,4},{6,7,4,1},{6,7,4,5},{6,7,4,7},{6,7,7,4},{4,1,1,5},{4,1,5,1},{4,1,5,5},{4,1,5,2},{4,1,5,7},{4,1,6,5},{4,1,4,3},{4,1,3,4},{4,1,3,3},{4,1,7,5},{4,5,5,4},{4,5,4,1},{4,5,4,4},{4,5,4,3},{4,5,3,1},{4,5,3,5},{4,2,1,5},{4,2,4,3},{4,2,3,4},{4,6,6,5},{4,6,4,3},{4,6,3,4},{4,4,1,4},{4,4,1,3},{4,4,5,1},{4,4,5,4},{4,4,5,3},{4,4,2,4},{4,4,4,1},{4,4,4,5},{4,4,4,6},{4,4,7,4},{4,4,7,3},{4,3,6,4},{4,3,4,7},{4,3,3,5},{4,3,7,4},{4,7,1,5},{4,7,5,6},{4,7,5,7},{4,7,2,1},{4,7,2,5},{4,7,6,5},{4,7,4,4},{4,7,4,3},{3,1,1,2},{3,1,5,1},{3,1,5,2},{3,1,2,1},{3,1,6,5},{3,1,6,7},{3,1,7,6},{3,5,1,2},{3,5,5,1},{3,5,5,6},{3,5,5,3},{3,5,2,1},{3,5,2,2},{3,5,6,5},{3,5,6,6},{3,5,4,1},{3,5,4,3},{3,5,3,1},{3,5,3,5},{3,5,3,4},{3,5,3,3},{3,2,1,5},{3,2,5,1},{3,2,2,5},{3,6,1,5},{3,6,1,7},{3,6,5,5},{3,6,5,6},{3,6,6,5},{3,6,4,3},{3,6,3,4},{3,4,5,3},{3,4,2,4},{3,4,6,4},{3,4,6,3},{3,4,3,1},{3,4,3,5},{3,4,3,2},{3,4,3,6},{3,4,7,3},{3,3,1,4},{3,3,5,1},{3,3,5,4},{3,3,5,3},{3,3,6,4},{3,3,4,1},{3,3,4,5},{3,3,4,2},{3,3,4,6},{3,3,4,7},{3,3,3,1},{3,3,3,5},{3,3,3,6},{3,7,1,5},{3,7,5,1},{3,7,5,2},{3,7,2,5},{3,7,6,5},{3,7,7,5},{7,1,1,4},{7,1,5,6},{7,1,5,4},{7,1,5,3},{7,1,5,7},{7,1,2,3},{7,1,6,4},{7,1,4,1},{7,1,4,5},{7,1,4,7},{7,1,3,1},{7,1,7,4},{7,5,1,2},{7,5,1,6},{7,5,1,4},{7,5,1,3},{7,5,1,7},{7,5,5,5},{7,5,5,7},{7,5,2,1},{7,5,6,4},{7,5,6,7},{7,5,4,1},{7,5,4,2},{7,5,4,7},{7,5,3,1},{7,5,3,2},{7,5,3,6},{7,5,3,7},{7,5,7,6},{7,5,7,4},{7,5,7,3},{7,2,1,4},{7,2,1,3},{7,2,5,5},{7,2,4,1},{7,2,3,7},{7,2,7,3},{7,6,1,4},{7,6,5,4},{7,6,6,4},{7,6,4,1},{7,6,4,5},{7,6,4,7},{7,6,7,4},{7,4,5,1},{7,4,5,2},{7,4,5,7},{7,4,2,1},{7,4,2,5},{7,4,6,5},{7,4,4,4},{7,4,4,3},{7,3,5,1},{7,3,5,2},{7,3,5,6},{7,3,5,4},{7,3,2,5},{7,3,2,7},{7,3,6,1},{7,3,6,5},{7,3,4,3},{7,3,7,2},{7,3,7,6},{7,7,1,4},{7,7,5,1},{7,7,5,6},{7,7,5,4},{7,7,5,3},{7,7,2,3},{7,7,6,4},{7,7,6,3},{7,7,4,7},{7,7,3,6}}, - --6 piece opener + -- 6 piece opener {{1,1,3,4},{1,1,4,3},{1,2,5,3},{1,2,5,4},{1,3,4,7},{1,3,5,5},{1,3,7,3},{1,3,7,4},{1,4,1,4},{1,4,4,6},{1,5,2,3},{1,5,3,2},{1,5,3,5},{1,5,4,7},{1,5,5,2},{1,5,5,4},{1,5,5,5},{1,5,7,3},{1,5,7,4},{1,6,3,3},{1,6,5,3},{1,7,3,3},{1,7,3,4},{1,7,5,3},{1,7,5,4},{3,1,3,7},{3,1,4,7},{3,1,5,5},{3,1,6,3},{3,1,7,3},{3,1,7,4},{3,2,2,3},{3,2,3,2},{3,2,3,6},{3,2,4,5},{3,2,4,7},{3,2,5,5},{3,2,6,3},{3,2,6,4},{3,2,7,4},{3,3,1,5},{3,3,2,6},{3,3,2,7},{3,3,3,3},{3,3,3,4},{3,3,4,3},{3,3,4,4},{3,3,5,3},{3,3,5,4},{3,3,6,1},{3,3,6,6},{3,3,6,7},{3,3,7,2},{3,3,7,5},{3,3,7,6},{3,3,7,7},{3,4,1,2},{3,4,1,5},{3,4,1,7},{3,4,2,1},{3,4,2,5},{3,4,2,7},{3,4,3,3},{3,4,3,4},{3,4,4,3},{3,4,4,4},{3,4,5,3},{3,4,5,4},{3,4,5,7},{3,4,6,1},{3,4,6,2},{3,4,6,7},{3,4,7,1},{3,4,7,2},{3,4,7,5},{3,4,7,6},{3,5,1,2},{3,5,2,3},{3,5,2,5},{3,5,3,2},{3,5,3,3},{3,5,3,4},{3,5,4,3},{3,5,4,6},{3,5,4,7},{3,5,5,5},{3,5,5,7},{3,5,6,4},{3,5,7,3},{3,5,7,4},{3,5,7,5},{3,6,1,3},{3,6,2,3},{3,6,2,4},{3,6,3,1},{3,6,3,5},{3,6,3,6},{3,6,3,7},{3,6,4,2},{3,6,4,7},{3,6,5,4},{3,6,6,3},{3,6,6,4},{3,6,7,3},{3,6,7,4},{3,7,1,3},{3,7,1,4},{3,7,2,4},{3,7,3,2},{3,7,3,5},{3,7,3,6},{3,7,3,7},{3,7,4,1},{3,7,4,2},{3,7,4,5},{3,7,4,6},{3,7,5,3},{3,7,5,4},{3,7,5,5},{3,7,6,3},{3,7,6,4},{3,7,7,3},{3,7,7,4},{5,1,2,3},{5,1,3,2},{5,1,3,4},{5,1,4,1},{5,1,4,7},{5,1,5,4},{5,1,5,5},{5,1,7,4},{5,3,1,2},{5,3,1,4},{5,3,2,5},{5,3,3,3},{5,3,3,4},{5,3,3,6},{5,3,4,3},{5,3,5,2},{5,3,5,4},{5,3,5,5},{5,3,5,7},{5,3,7,4},{5,3,7,5},{5,5,1,2},{5,5,1,4},{5,5,3,2},{5,5,3,3},{5,5,3,4},{5,5,3,5},{5,5,3,7},{5,5,5,1},{5,5,5,5},{5,5,6,3},{5,5,6,7},{5,5,7,1},{5,5,7,3},{5,5,7,6},{5,6,3,5},{5,6,3,6},{5,6,3,7},{5,6,5,3},{5,6,6,3},{5,6,7,3},{5,7,1,4},{5,7,3,4},{5,7,3,5},{5,7,5,1},{5,7,5,3},{5,7,5,6},{5,7,6,3},{5,7,7,3},{6,1,3,3},{6,3,3,5},{6,3,3,6},{6,3,3,7},{6,3,4,7},{6,3,6,3},{6,3,6,4},{6,3,7,3},{6,3,7,4},{6,5,3,5},{6,5,3,6},{6,5,3,7},{6,5,6,3},{6,5,7,3},{6,6,3,3},{6,6,3,4},{6,6,5,3},{6,6,6,6},{6,6,7,7},{6,7,3,3},{6,7,3,4},{6,7,5,3},{6,7,6,7},{6,7,7,6},{7,1,3,3},{7,1,3,4},{7,1,5,3},{7,1,5,4},{7,3,1,3},{7,3,1,4},{7,3,2,4},{7,3,3,2},{7,3,3,5},{7,3,3,6},{7,3,3,7},{7,3,4,1},{7,3,4,2},{7,3,4,5},{7,3,4,6},{7,3,5,3},{7,3,5,4},{7,3,5,5},{7,3,6,3},{7,3,6,4},{7,3,7,3},{7,3,7,4},{7,5,1,4},{7,5,3,4},{7,5,3,5},{7,5,5,1},{7,5,5,3},{7,5,5,6},{7,5,6,3},{7,5,7,3},{7,6,3,3},{7,6,3,4},{7,6,5,3},{7,6,6,7},{7,6,7,6},{7,7,3,3},{7,7,3,4},{7,7,5,3},{7,7,6,6},{7,7,7,7}}, - --4*5 + -- 4*5 {{7,3,5,1,2},{7,3,1,5,5},{7,3,1,5,4},{7,3,1,5,3},{2,3,7,6,4},{2,3,7,6,3},{3,2,7,6,4},{3,2,7,6,3},{3,2,6,7,4},{3,2,6,7,3},{7,1,3,5,5},{7,1,3,5,4},{7,1,3,5,3},{5,7,1,2,4},{5,7,1,2,3},{1,7,3,5,5},{5,1,7,2,3},{1,7,5,3,5},{1,7,5,3,2},{1,5,7,2,3},{7,1,5,3,5},{7,1,5,3,4},{7,1,5,3,3},{7,1,5,3,2},{1,5,2,7,3},{7,5,1,3,4},{5,1,2,7,4},{7,5,1,3,3},{5,1,2,7,3},{7,5,1,3,2},{7,5,3,1,5},{7,5,3,1,4},{7,5,3,1,3},{7,5,3,1,2},{5,7,3,2,5},{5,7,3,2,7},{5,7,3,2,4},{5,7,2,3,5},{5,7,2,3,7},{5,7,2,3,2},{5,2,7,3,5},{5,2,7,3,7},{5,2,7,3,3},{5,2,7,3,2},{2,1,5,7,4},{2,5,7,3,7},{2,5,7,3,3},{3,6,2,7,4},{3,6,2,7,3},{6,3,2,7,4},{6,3,2,7,3},{6,3,7,2,3},{3,6,7,2,4},{3,6,7,2,3},{3,7,6,2,4},{3,7,6,2,3},{1,2,7,5,4},{1,2,7,5,3},{2,7,1,5,4},{2,7,1,5,3},{2,7,5,1,4},{7,2,5,1,4},{7,2,5,1,3},{7,2,1,5,4},{7,2,1,5,3},{3,7,2,6,4},{3,7,2,6,3},{7,5,1,2,4},{7,3,2,1,3},{7,5,1,2,3},{7,3,1,2,4},{7,3,1,2,3},{7,1,3,2,4},{2,5,3,7,5},{2,5,3,7,3},{5,2,3,7,3},{5,3,2,7,5},{5,3,2,7,3},{5,3,7,2,5},{5,3,7,2,4},{5,3,7,2,3},{3,5,7,2,5},{3,5,7,2,4},{3,5,7,2,3},{3,5,2,7,5},{3,5,2,7,3},{3,2,5,7,5},{3,2,5,7,3},{2,3,5,7,5},{2,3,5,7,3},{2,3,5,7,2},{2,3,7,5,5},{2,3,7,5,4},{2,3,7,5,3},{2,3,7,5,6},{3,2,7,5,5},{3,2,7,5,7},{3,2,7,5,4},{3,2,7,5,3},{3,2,7,5,6},{3,7,2,5,5},{3,7,2,5,7},{3,7,2,5,4},{3,7,2,5,3},{3,7,2,5,6},{3,7,5,2,5},{3,7,5,2,7},{3,7,5,2,4},{3,7,5,2,3},{3,7,5,2,6},{7,3,5,2,5},{7,3,5,2,3},{7,3,2,5,5},{2,7,3,5,4},{2,7,3,5,3},{2,7,3,5,6},{2,7,5,3,7},{7,2,5,3,7},{7,2,5,3,3},{7,5,2,3,5},{7,5,2,3,7},{7,5,2,3,4},{7,5,2,3,3},{7,5,2,3,2},{7,5,3,2,5},{7,5,3,2,3},{5,7,4,6,5},{5,7,4,6,3},{5,7,4,6,2},{5,7,6,4,5},{5,7,6,4,7},{5,7,6,4,1},{5,7,6,4,6},{5,6,7,4,5},{5,6,7,4,7},{5,6,7,4,3},{5,6,7,4,1},{5,6,7,4,6},{6,5,7,4,5},{6,5,7,4,7},{6,5,7,4,3},{6,5,7,4,1},{6,5,7,4,6},{6,5,4,7,5},{6,5,4,7,3},{5,6,4,7,5},{5,6,4,7,3},{5,4,6,7,3},{5,4,7,6,5},{5,4,7,6,3},{4,5,7,6,5},{4,5,7,6,4},{4,5,7,6,3},{4,5,6,7,3},{4,6,5,7,3},{6,4,5,7,5},{6,4,7,5,4},{4,6,7,5,4},{4,6,7,5,3},{4,7,6,5,4},{4,7,6,5,3},{4,7,5,6,4},{4,7,5,6,3},{7,4,5,6,5},{7,4,5,6,4},{7,4,5,6,3},{7,4,6,5,5},{7,4,6,5,7},{7,4,6,5,4},{7,4,6,5,3},{7,6,4,5,5},{7,6,4,5,7},{7,6,4,5,3},{6,7,5,4,5},{6,7,5,4,7},{6,7,5,4,6},{7,6,5,4,5},{7,6,5,4,7},{7,6,5,4,3},{7,6,5,4,6},{7,5,6,4,5},{7,5,6,4,7},{7,5,6,4,3},{7,5,6,4,6},{7,5,4,6,5},{7,5,4,6,4},{7,5,4,6,3},{5,3,1,6,5},{5,3,1,6,7},{5,3,6,1,5},{5,3,6,1,7},{1,5,6,3,5},{1,5,6,3,7},{1,5,6,3,6},{1,6,5,3,5},{1,6,5,3,7},{1,6,5,3,3},{1,6,5,3,6},{6,1,5,3,5},{6,1,5,3,7},{6,1,5,3,3},{6,1,5,3,6},{6,1,3,5,5},{1,6,3,5,5},{1,3,6,5,7},{1,3,5,6,7},{3,1,6,5,7},{3,6,1,5,7},{6,3,1,5,5},{3,6,5,1,5},{3,5,6,1,5},{3,5,6,1,7},{3,5,1,6,5},{3,5,1,6,7},{5,3,2,6,5},{5,6,2,3,3},{5,2,6,3,3},{5,2,3,6,5},{6,2,3,5,7},{6,2,3,5,3},{6,2,3,5,6},{2,6,3,5,7},{2,6,3,5,3},{2,6,3,5,6},{2,3,6,5,3},{2,3,6,5,6},{7,1,2,3,4},{5,7,3,1,5},{6,3,2,5,7},{5,7,3,1,4},{5,7,3,1,3},{5,7,3,1,2},{5,7,1,3,4},{5,7,1,3,2},{5,7,1,3,1},{5,1,7,3,4},{5,1,7,3,3},{5,1,7,3,2},{5,1,7,3,1},{3,5,2,6,5},{1,5,7,3,5},{1,5,7,3,3},{1,5,7,3,2},{5,3,2,1,5},{1,5,7,3,1},{5,3,2,1,4},{1,5,3,7,5},{1,5,3,7,3},{5,3,1,2,5},{5,3,1,2,1},{5,1,3,7,4},{5,1,3,7,3},{5,1,3,2,5},{5,3,1,7,4},{1,5,3,2,5},{5,3,1,7,3},{5,3,1,7,6},{5,3,7,1,5},{5,3,7,1,4},{1,5,2,3,5},{5,3,7,1,3},{1,5,2,3,7},{5,3,7,1,2},{1,5,2,3,2},{3,5,7,1,5},{5,1,2,3,5},{3,5,7,1,2},{5,2,1,3,5},{5,2,1,3,3},{3,5,1,7,6},{4,3,1,7,7},{4,3,1,7,2},{4,3,1,7,6},{4,1,3,7,5},{4,1,3,7,7},{4,1,3,7,2},{4,1,3,7,6},{1,4,3,7,5},{1,4,3,7,7},{3,1,5,7,5},{1,4,7,3,5},{1,4,7,3,7},{1,3,5,7,5},{1,4,7,3,2},{1,4,7,3,1},{1,3,5,7,6},{1,3,7,5,5},{3,1,7,5,5},{1,4,7,3,6},{4,1,7,3,5},{4,1,7,3,7},{3,7,1,5,5},{4,1,7,3,2},{4,1,7,3,1},{4,1,7,3,6},{4,7,1,3,5},{4,7,1,3,7},{3,7,5,1,3},{3,7,5,1,2},{7,3,5,1,5},{7,3,5,1,4},{7,3,5,1,3},{3,5,2,4,4},{7,2,1,3,4},{3,5,2,4,3},{3,5,2,4,1},{3,2,5,4,4},{3,2,5,4,3},{3,2,5,4,1},{7,2,3,1,3},{2,3,5,4,6},{2,3,4,5,4},{2,3,4,5,3},{2,3,4,5,6},{3,2,4,5,5},{2,7,3,1,4},{2,7,3,1,3},{3,2,4,5,4},{3,2,4,5,3},{3,4,2,5,5},{3,4,2,5,3},{3,4,5,2,5},{4,3,5,2,5},{4,3,2,5,5},{4,3,2,5,4},{4,2,3,5,4},{4,2,3,5,3},{2,4,3,5,4},{2,4,3,5,3},{2,4,5,3,5},{2,4,5,3,4},{2,4,5,3,3},{4,2,5,3,5},{4,2,5,3,4},{4,2,5,3,3},{4,5,2,3,4},{4,5,2,3,3},{4,5,3,2,5},{4,5,3,2,7},{4,5,3,2,4},{5,7,1,6,4},{5,7,6,1,4},{5,1,7,6,4},{1,5,7,6,3},{1,5,6,7,3},{1,6,5,7,3},{6,1,5,7,3},{1,6,7,5,3},{1,7,6,5,3},{7,1,6,5,3},{7,6,5,1,4},{7,5,6,1,4},{7,5,1,6,4},{2,3,7,1,4},{3,2,7,1,4},{3,2,7,1,3},{3,2,1,7,3},{3,1,2,7,3},{1,3,2,7,3},{1,3,7,2,4},{3,1,7,2,4},{3,7,1,2,4},{3,7,2,1,4},{7,4,1,6,4},{7,4,1,6,3},{7,4,6,1,4},{7,4,6,1,3},{7,6,4,1,4},{7,6,4,1,3},{7,6,3,1,4},{7,6,3,1,3},{6,7,1,3,3},{7,6,1,3,3},{7,1,6,3,3},{7,1,3,6,4},{7,1,3,6,3},{1,7,3,6,4},{1,7,3,6,3},{1,7,6,3,3},{1,6,7,3,3},{6,1,7,3,3},{6,1,3,7,3},{1,6,3,7,3},{1,3,7,6,3},{3,1,7,6,3},{3,1,6,7,4},{3,1,6,7,3},{3,6,1,7,4},{3,6,1,7,3},{6,3,1,7,4},{6,3,1,7,3},{3,6,7,1,3},{3,7,6,1,3},{3,7,1,6,3},{7,6,2,3,4},{7,6,2,3,3},{7,2,6,3,4},{7,2,6,3,3},{7,2,3,6,4},{7,2,3,6,3},{2,7,3,6,4},{2,7,3,6,3},{2,7,6,3,3},{2,6,7,3,4},{6,2,7,3,4},{6,2,3,7,4},{2,6,3,7,4},{2,3,6,7,4},{5,7,4,3,4},{5,7,4,3,3},{5,7,4,3,2},{5,7,4,3,6},{5,3,7,4,7},{5,3,7,4,3},{5,3,7,4,2},{5,3,7,4,1},{5,3,7,4,6},{3,5,7,4,7},{3,5,7,4,4},{3,5,7,4,3},{3,5,7,4,2},{3,5,7,4,1},{3,5,7,4,6},{3,5,4,7,4},{3,5,4,7,3},{5,3,4,7,3},{4,3,5,7,4},{4,3,5,7,3},{4,7,1,3,2},{4,7,1,3,6},{4,7,3,1,5},{4,7,3,1,7},{3,4,7,5,7},{4,7,3,1,2},{3,4,7,5,4},{3,4,7,5,3},{3,4,7,5,2},{3,4,7,5,1},{3,4,7,5,6},{7,4,3,2,5},{7,4,3,2,7},{7,4,3,2,1},{7,4,2,3,5},{4,7,3,5,7},{4,7,3,5,4},{7,4,2,3,7},{4,7,3,5,3},{4,7,3,5,2},{4,7,3,5,6},{7,4,2,3,1},{4,7,5,3,7},{7,4,2,3,6},{4,7,5,3,4},{7,2,4,3,5},{4,7,5,3,3},{4,7,5,3,2},{7,2,4,3,7},{4,7,5,3,1},{4,7,5,3,6},{7,4,5,3,7},{7,2,4,3,1},{7,4,5,3,4},{7,2,4,3,6},{7,4,5,3,3},{2,7,4,3,7},{7,4,5,3,6},{7,4,3,5,7},{7,4,3,5,4},{2,7,4,3,1},{7,4,3,5,3},{2,7,4,3,6},{2,7,3,4,5},{7,4,3,5,6},{2,7,3,4,2},{2,7,3,4,1},{2,7,3,4,6},{7,2,3,4,7},{7,2,3,4,2},{7,2,3,4,1},{7,2,3,4,6},{7,3,2,4,5},{7,3,2,4,7},{7,3,2,4,1},{7,3,2,4,6},{7,3,4,2,5},{7,3,4,2,7},{7,5,3,4,4},{7,5,3,4,3},{7,3,4,2,1},{4,6,3,2,7},{4,6,3,2,1},{4,6,3,2,6},{6,4,3,2,5},{6,4,3,2,7},{6,4,3,2,1},{6,4,3,2,6},{6,4,2,3,7},{6,4,2,3,6},{4,6,2,3,7},{3,4,2,7,5},{4,6,2,3,6},{4,2,6,3,7},{4,2,6,3,6},{3,4,7,2,5},{3,4,7,2,7},{4,2,3,6,6},{3,4,7,2,1},{4,3,7,2,5},{4,3,7,2,7},{2,4,3,6,6},{4,3,7,2,1},{4,3,2,7,5},{4,3,2,7,7},{4,3,2,7,1},{2,4,6,3,6},{4,2,3,7,5},{4,2,3,7,7},{4,2,3,7,6},{2,4,3,7,5},{2,4,3,7,7},{2,4,7,3,5},{2,4,7,3,7},{4,2,7,3,5},{2,6,3,4,6},{4,2,7,3,7},{4,2,7,3,6},{2,3,6,4,6},{4,7,2,3,7},{2,3,4,6,6},{3,2,4,6,7},{4,7,3,2,5},{4,7,3,2,7},{3,2,4,6,6},{3,2,6,4,5},{3,2,6,4,7},{4,7,3,2,1},{3,2,6,4,6},{3,6,2,4,5},{3,6,2,4,7},{3,6,2,4,6},{6,3,2,4,5},{6,3,2,4,7},{6,3,2,4,6},{6,3,4,2,5},{6,3,4,2,7},{6,3,4,2,1},{6,3,4,2,6},{3,6,4,2,5},{3,6,4,2,7},{3,6,4,2,1},{3,4,2,6,7},{6,7,3,4,1},{4,3,1,2,7},{6,7,3,4,6},{7,6,3,4,5},{7,6,3,4,7},{7,6,3,4,2},{7,6,3,4,1},{7,3,6,4,5},{7,3,6,4,7},{7,3,6,4,2},{4,3,1,2,6},{7,3,6,4,1},{7,3,6,4,6},{4,1,3,2,7},{7,3,4,6,5},{7,3,4,6,7},{7,3,4,6,2},{7,3,4,6,1},{4,1,3,2,6},{7,3,4,6,6},{3,7,4,6,5},{3,7,4,6,7},{3,7,4,6,2},{3,7,4,6,1},{3,7,4,6,6},{3,7,6,4,5},{3,7,6,4,7},{3,7,6,4,2},{3,7,6,4,1},{3,7,6,4,6},{3,6,7,4,5},{3,6,7,4,7},{3,6,7,4,2},{3,6,7,4,1},{3,6,7,4,6},{6,3,7,4,7},{6,3,7,4,2},{6,3,7,4,1},{6,3,7,4,6},{6,3,4,7,7},{6,3,4,7,2},{6,3,4,7,1},{6,3,4,7,6},{3,6,4,7,7},{3,6,4,7,2},{3,6,4,7,1},{3,6,4,7,6},{3,4,6,7,7},{3,4,6,7,2},{3,4,6,7,1},{3,4,6,7,6},{3,4,7,6,5},{3,4,7,6,7},{3,4,7,6,2},{3,4,7,6,1},{2,1,5,4,7},{2,1,5,4,1},{1,2,4,5,7},{1,2,4,5,4},{2,1,4,5,7},{2,1,4,5,4},{2,4,1,5,5},{2,4,1,5,7},{2,4,5,1,5},{4,2,5,1,5},{4,2,1,5,5},{4,2,1,5,7},{4,1,2,5,5},{1,4,2,5,4},{1,4,5,2,5},{4,1,5,2,5},{4,1,5,2,3},{4,5,1,2,5},{4,5,1,2,3},{4,5,2,1,5},{4,5,2,1,2},{5,4,3,6,4},{5,4,3,6,3},{7,4,2,6,4},{7,4,2,6,3},{5,4,6,3,4},{5,4,6,3,3},{7,4,6,2,4},{7,4,6,2,3},{5,6,4,3,4},{6,5,4,3,4},{3,5,4,6,5},{3,5,4,6,4},{3,5,4,6,3},{3,5,6,4,5},{3,5,6,4,7},{3,5,6,4,4},{3,5,6,4,3},{3,6,5,4,5},{3,6,5,4,7},{3,6,5,4,4},{3,6,5,4,3},{6,3,5,4,4},{6,3,5,4,3},{2,1,4,6,4},{6,7,4,3,7},{3,2,1,6,4},{2,4,1,6,4},{6,3,2,1,3},{3,1,2,6,3},{6,2,1,3,3},{6,2,3,1,3},{2,3,1,6,4},{2,1,3,4,6},{2,3,1,4,6},{2,3,4,1,2},{2,3,4,1,1},{3,2,1,4,2},{3,2,1,4,1},{3,2,1,4,6},{3,1,2,4,2},{3,1,2,4,1},{1,3,2,4,2},{1,3,2,4,1},{1,3,4,2,2},{1,3,4,2,1},{3,1,4,2,2},{3,1,4,2,1},{5,1,4,2,5},{5,1,4,2,4},{1,5,4,2,5},{1,5,4,2,4},{1,5,2,4,4},{2,1,4,3,6},{5,4,3,1,5},{5,4,3,1,7},{5,4,3,1,3},{5,4,1,3,5},{5,4,1,3,4},{5,4,1,3,3},{5,4,1,3,2},{5,1,4,3,5},{5,1,4,3,3},{1,5,4,3,6},{1,5,3,4,5},{1,5,3,4,4},{1,5,3,4,3},{5,1,3,4,5},{5,1,3,4,4},{5,1,3,4,3},{5,3,1,4,5},{5,3,1,4,4},{5,3,1,4,3},{5,3,4,1,5},{5,3,4,1,7},{5,3,4,1,3},{4,5,1,3,5},{4,5,3,1,5},{4,5,3,1,3},{6,3,4,5,4},{6,3,4,5,3},{3,6,4,5,7},{3,6,4,5,4},{3,6,4,5,3},{3,4,6,5,7},{3,4,6,5,4},{3,4,6,5,3}}, - --4*6 + -- 4*6 {{1,6,5,3,7,5},{1,6,5,3,7,3},{1,6,5,3,7,2},{5,1,6,3,2,5},{5,1,6,3,2,7},{5,1,6,3,2,6},{5,6,1,3,2,5},{5,6,1,3,2,7},{5,6,1,3,2,6},{6,5,1,3,2,5},{6,1,5,3,7,5},{6,5,1,3,2,7},{6,1,5,3,7,3},{6,1,5,3,7,2},{6,5,1,3,2,6},{6,1,5,3,2,5},{3,4,7,1,5,5},{6,1,5,3,2,7},{5,7,2,1,4,5},{3,4,7,1,5,3},{3,4,7,1,5,2},{3,4,7,1,5,1},{3,4,7,1,5,6},{3,4,1,7,5,5},{3,4,1,7,5,4},{3,4,1,7,5,3},{6,1,5,3,2,6},{1,6,5,3,2,5},{1,6,5,3,2,7},{3,4,1,7,5,2},{3,4,1,7,5,1},{5,7,2,1,4,3},{1,6,5,3,2,6},{1,5,6,3,2,5},{5,7,2,4,1,5},{1,5,6,3,2,7},{1,5,6,3,2,6},{5,2,7,4,1,5},{3,4,1,7,5,6},{3,1,4,7,5,5},{1,5,3,2,6,5},{5,2,7,4,1,4},{1,5,2,3,6,5},{3,1,4,7,5,4},{5,2,7,1,4,5},{5,2,7,1,4,3},{5,2,7,1,4,2},{5,2,1,7,4,5},{3,1,4,7,5,3},{5,2,1,7,4,4},{1,3,4,7,5,5},{5,2,1,7,4,3},{1,3,4,7,5,4},{1,3,4,7,5,3},{1,5,2,6,3,5},{1,5,2,6,3,7},{5,1,2,7,4,5},{5,1,2,7,4,4},{1,5,2,7,4,4},{6,5,1,3,7,4},{1,5,2,7,4,2},{6,5,1,3,7,3},{1,2,5,7,4,3},{6,5,1,3,7,2},{1,2,5,7,4,2},{2,1,5,7,4,7},{2,1,5,7,4,3},{2,1,5,7,4,2},{2,1,5,7,4,1},{5,6,1,3,7,4},{2,5,1,7,4,5},{2,5,1,7,4,7},{2,5,1,7,4,4},{2,5,1,7,4,3},{2,5,1,7,4,1},{2,5,7,1,4,5},{2,5,7,1,4,7},{5,6,1,3,7,2},{2,5,7,1,4,4},{2,5,7,1,4,3},{2,5,7,1,4,2},{2,5,7,1,4,1},{2,5,7,4,1,5},{2,5,7,4,1,4},{5,1,6,3,7,4},{5,1,6,3,7,2},{5,1,3,6,7,4},{5,1,3,7,6,5},{2,5,7,4,1,6},{5,1,3,7,6,4},{2,5,4,7,1,5},{2,5,4,7,1,4},{2,5,4,1,7,5},{5,3,1,7,6,5},{2,5,4,1,7,4},{2,5,4,1,7,3},{5,3,1,7,6,4},{5,3,1,6,7,5},{5,3,1,6,7,4},{5,3,6,1,7,5},{5,3,6,1,7,4},{5,3,6,1,7,3},{5,6,3,1,7,4},{2,5,1,4,7,5},{2,5,1,4,7,4},{2,5,1,4,7,3},{6,5,3,1,7,4},{6,5,3,1,7,3},{2,5,1,4,7,1},{6,5,3,7,1,4},{2,1,5,4,7,3},{2,1,5,4,7,1},{1,2,5,4,7,3},{1,5,2,4,7,5},{5,6,3,7,1,4},{1,5,2,4,7,4},{1,5,2,4,7,3},{1,5,2,4,7,2},{5,1,2,4,7,5},{5,1,2,4,7,4},{5,1,2,4,7,2},{5,3,6,7,1,5},{5,3,7,6,1,5},{5,3,7,6,1,7},{5,3,7,1,6,5},{5,3,7,1,6,7},{1,4,3,7,5,5},{1,4,3,7,5,4},{3,5,7,1,6,5},{1,4,3,7,5,3},{3,5,7,1,6,7},{3,5,7,1,6,3},{3,5,7,6,1,5},{3,5,7,6,1,7},{3,5,7,6,1,4},{3,5,6,7,1,5},{3,5,6,7,1,4},{3,6,5,7,1,5},{3,6,5,7,1,4},{4,1,3,7,5,5},{1,5,2,6,3,6},{1,5,6,2,3,5},{4,1,3,7,5,4},{4,1,3,7,5,3},{1,5,6,2,3,7},{4,1,3,7,5,2},{4,1,3,7,5,1},{4,1,3,7,5,6},{4,3,1,7,5,5},{1,5,6,2,3,6},{4,3,1,7,5,4},{4,3,1,7,5,3},{4,3,1,7,5,2},{5,2,1,4,7,5},{4,3,1,7,5,1},{4,3,1,7,5,6},{4,3,7,1,5,5},{4,3,7,1,5,4},{4,3,7,1,5,3},{4,3,7,1,5,2},{4,3,7,1,5,1},{5,2,1,4,7,4},{4,3,7,1,5,6},{5,2,1,4,7,3},{4,3,7,5,1,5},{5,2,1,4,7,2},{5,2,1,4,7,1},{4,3,7,5,1,4},{4,3,7,5,1,3},{5,2,4,1,7,5},{4,7,3,5,1,5},{5,2,4,1,7,4},{5,2,4,1,7,3},{4,7,3,5,1,4},{4,7,3,5,1,3},{4,7,3,1,5,5},{4,7,3,1,5,7},{4,7,3,1,5,4},{4,7,3,1,5,3},{4,7,3,1,5,2},{4,7,3,1,5,1},{5,2,4,7,1,5},{4,7,1,3,5,5},{5,2,4,7,1,4},{4,7,1,3,5,4},{4,7,1,3,5,3},{4,7,1,3,5,2},{4,7,1,3,5,1},{5,4,2,7,1,5},{4,7,1,3,5,6},{4,1,7,3,5,5},{5,4,2,7,1,4},{4,1,7,3,5,4},{4,1,7,3,5,3},{4,1,7,3,5,2},{4,1,7,3,5,1},{4,1,7,3,5,6},{1,4,7,3,5,5},{5,4,2,7,1,3},{1,4,7,3,5,4},{1,4,7,3,5,3},{1,4,7,3,5,6},{1,4,7,5,3,5},{1,4,7,5,3,4},{1,4,7,5,3,1},{5,4,2,1,7,5},{1,4,7,5,3,6},{4,1,7,5,3,5},{5,4,2,1,7,4},{5,4,2,1,7,3},{4,1,7,5,3,4},{4,1,7,5,3,3},{4,1,7,5,3,2},{4,1,7,5,3,1},{4,1,7,5,3,6},{4,7,1,5,3,5},{4,7,1,5,3,7},{4,7,1,5,3,4},{4,7,1,5,3,3},{4,7,1,5,3,2},{4,7,1,5,3,1},{4,7,1,5,3,6},{1,6,5,2,3,5},{4,7,5,1,3,5},{1,6,5,2,3,7},{4,7,5,1,3,7},{4,7,5,1,3,4},{4,7,5,1,3,3},{4,7,5,1,3,2},{4,7,5,3,1,5},{4,7,5,3,1,7},{4,7,5,3,1,4},{4,7,5,3,1,3},{7,4,5,3,1,5},{7,4,5,3,1,7},{7,4,5,3,1,4},{7,4,5,3,1,3},{5,4,1,2,7,5},{7,4,5,1,3,5},{7,4,5,1,3,7},{5,4,1,2,7,4},{7,4,5,1,3,4},{7,4,5,1,3,3},{7,4,5,1,3,2},{7,4,1,5,3,5},{7,4,1,5,3,7},{7,4,1,5,3,4},{7,4,1,5,3,3},{7,4,1,5,3,2},{7,1,4,5,3,5},{7,1,4,5,3,7},{7,1,4,5,3,4},{7,1,4,5,3,3},{7,1,4,5,3,6},{1,7,4,5,3,5},{1,7,4,5,3,4},{1,7,4,5,3,1},{1,7,4,5,3,6},{1,7,4,3,5,5},{1,7,4,3,5,4},{1,7,4,3,5,3},{5,4,1,2,7,3},{1,7,4,3,5,6},{7,1,4,3,5,5},{7,1,4,3,5,4},{5,1,4,2,7,5},{7,1,4,3,5,3},{5,1,4,2,7,7},{7,1,4,3,5,2},{5,1,4,2,7,4},{7,1,4,3,5,6},{7,4,1,3,5,5},{7,4,1,3,5,4},{7,4,1,3,5,3},{7,4,1,3,5,2},{1,5,4,2,7,5},{7,4,1,3,5,6},{7,4,3,1,5,5},{1,5,4,2,7,4},{7,4,3,1,5,7},{7,4,3,1,5,4},{7,4,3,1,5,3},{7,4,3,1,5,2},{1,5,4,2,7,3},{7,4,3,1,5,6},{1,6,5,2,3,6},{1,5,4,2,7,6},{6,1,5,2,3,5},{6,1,5,2,3,7},{1,5,4,7,2,5},{1,5,4,7,2,4},{6,1,5,2,3,6},{1,5,4,7,2,3},{6,5,1,2,3,5},{6,5,1,2,3,7},{6,5,1,2,3,6},{5,6,1,2,3,5},{5,6,1,2,3,7},{5,1,4,7,2,5},{5,6,1,2,3,6},{5,1,4,7,2,4},{5,1,6,2,3,5},{5,1,6,2,3,7},{5,1,6,2,3,6},{5,1,2,6,3,5},{5,1,2,6,3,7},{5,1,2,6,3,6},{5,4,1,7,2,5},{5,4,1,7,2,4},{5,2,1,6,3,5},{5,4,1,7,2,3},{5,2,1,6,3,7},{5,4,7,1,2,5},{5,4,7,1,2,4},{5,4,7,1,2,3},{5,2,1,6,3,6},{5,6,2,1,3,5},{5,4,7,2,1,5},{5,4,7,2,1,3},{5,4,7,2,1,2},{6,5,2,1,3,5},{4,5,7,2,1,5},{4,5,7,2,1,4},{4,5,7,2,1,3},{4,5,7,2,1,2},{6,5,2,3,1,5},{4,5,7,1,2,5},{6,3,5,7,1,4},{4,5,7,1,2,4},{4,5,7,1,2,3},{6,3,5,1,7,4},{4,5,1,7,2,5},{6,3,5,1,7,3},{4,5,1,7,2,4},{4,5,1,7,2,3},{3,6,5,1,7,5},{3,6,5,1,7,4},{3,6,5,1,7,3},{4,1,5,7,2,5},{4,1,5,7,2,7},{4,1,5,7,2,4},{3,5,6,1,7,5},{3,5,6,1,7,4},{3,5,6,1,7,3},{4,1,5,7,2,3},{3,5,1,6,7,5},{1,4,5,7,2,5},{3,5,1,6,7,4},{1,4,5,7,2,4},{1,4,5,7,2,3},{3,5,1,7,6,5},{1,4,5,2,7,5},{3,5,1,7,6,4},{1,4,5,2,7,4},{3,5,1,7,6,3},{1,4,5,2,7,3},{1,4,5,2,7,6},{4,1,5,2,7,5},{4,1,5,2,7,7},{4,1,5,2,7,3},{4,1,5,2,7,6},{4,5,1,2,7,5},{4,5,1,2,7,3},{4,5,2,1,7,5},{4,5,2,1,7,4},{4,5,2,1,7,3},{4,5,2,7,1,5},{4,5,2,7,1,4},{4,5,2,7,1,3},{4,2,5,7,1,5},{4,2,5,7,1,4},{4,2,5,1,7,5},{4,2,5,1,7,4},{4,2,5,1,7,3},{3,1,5,7,6,5},{4,2,1,5,7,5},{4,2,1,5,7,4},{4,2,1,5,7,3},{5,6,2,3,1,5},{3,1,5,7,6,3},{4,1,2,5,7,5},{3,1,5,6,7,5},{4,1,2,5,7,3},{3,1,5,6,7,3},{1,4,2,5,7,3},{3,1,6,5,7,5},{3,1,6,5,7,3},{1,2,4,5,7,3},{3,6,1,5,7,5},{3,6,1,5,7,3},{2,1,4,5,7,3},{2,4,1,5,7,5},{6,3,1,5,7,5},{2,4,5,1,7,5},{6,1,3,5,7,5},{5,2,6,3,1,5},{1,6,3,5,7,5},{1,3,6,5,7,3},{2,5,3,1,6,5},{1,3,5,6,7,3},{2,5,3,1,6,7},{2,5,3,1,6,4},{1,3,5,7,6,5},{2,5,3,6,1,5},{2,5,3,6,1,7},{2,5,3,6,1,4},{1,3,7,5,6,5},{1,3,7,5,6,7},{1,3,7,6,5,7},{7,4,3,5,1,5},{1,3,7,6,5,3},{7,4,3,5,1,7},{7,4,3,5,1,4},{7,4,3,5,1,3},{1,3,6,7,5,7},{1,3,6,7,5,3},{1,6,3,7,5,5},{7,3,4,5,1,5},{1,6,3,7,5,7},{7,3,4,5,1,7},{1,6,3,7,5,3},{7,3,4,5,1,4},{6,1,3,7,5,5},{7,3,4,5,1,3},{7,3,4,1,5,5},{6,3,1,7,5,5},{7,3,4,1,5,7},{7,3,4,1,5,4},{7,3,4,1,5,3},{7,3,4,1,5,2},{7,3,4,1,5,6},{3,6,1,7,5,5},{3,6,1,7,5,7},{7,3,1,4,5,5},{7,3,1,4,5,7},{7,3,1,4,5,4},{7,3,1,4,5,3},{7,3,1,4,5,2},{3,1,6,7,5,5},{3,1,6,7,5,7},{3,1,6,7,5,3},{3,1,7,6,5,5},{3,1,7,6,5,7},{3,1,7,6,5,3},{3,1,7,5,6,5},{3,1,7,5,6,3},{3,7,1,5,6,5},{3,7,1,5,6,3},{7,3,1,4,5,6},{3,7,1,6,5,5},{3,7,1,6,5,7},{7,1,3,4,5,5},{3,7,1,6,5,3},{7,1,3,4,5,4},{7,1,3,4,5,3},{3,7,6,1,5,5},{7,1,3,4,5,2},{3,7,6,1,5,7},{7,1,3,4,5,6},{3,7,6,1,5,3},{1,7,3,4,5,5},{1,7,3,4,5,4},{3,6,7,1,5,5},{3,6,7,1,5,7},{1,7,3,4,5,3},{1,7,3,4,5,1},{1,3,7,4,5,5},{6,3,7,1,5,5},{1,3,7,4,5,4},{1,3,7,4,5,3},{1,3,7,4,5,1},{6,3,7,5,1,4},{3,1,7,4,5,5},{6,3,7,5,1,3},{3,1,7,4,5,4},{3,1,7,4,5,3},{3,6,7,5,1,5},{3,1,7,4,5,1},{3,7,1,4,5,5},{3,7,6,5,1,5},{3,7,1,4,5,4},{3,7,1,4,5,3},{3,7,1,4,5,2},{3,7,5,6,1,5},{3,7,5,6,1,7},{3,7,4,1,5,5},{3,7,4,1,5,3},{3,7,4,1,5,2},{3,7,5,1,6,5},{3,7,4,1,5,1},{3,7,5,1,6,7},{3,7,4,1,5,6},{3,7,4,5,1,5},{3,7,5,1,6,3},{3,7,4,5,1,7},{3,7,4,5,1,4},{7,3,5,1,6,5},{7,3,5,1,6,7},{7,3,5,1,6,3},{3,7,5,4,1,5},{3,7,5,4,1,7},{3,7,5,4,1,4},{3,7,5,4,1,3},{7,3,5,6,1,5},{7,3,5,6,1,7},{3,7,5,4,1,2},{7,3,6,5,1,5},{7,3,6,5,1,4},{3,7,5,1,4,5},{3,7,5,1,4,7},{3,7,5,1,4,4},{3,7,5,1,4,3},{3,7,5,1,4,2},{3,7,1,5,4,5},{3,7,1,5,4,4},{3,7,1,5,4,3},{3,7,1,5,4,2},{6,2,5,3,1,5},{3,1,7,5,4,5},{3,1,7,5,4,4},{3,1,7,5,4,3},{6,2,5,1,3,5},{3,1,7,5,4,2},{1,3,7,5,4,5},{1,3,7,5,4,4},{1,3,7,5,4,3},{1,3,7,5,4,2},{1,7,3,5,4,5},{1,7,3,5,4,4},{1,7,3,5,4,3},{7,1,3,5,4,5},{7,1,3,5,4,4},{7,1,3,5,4,3},{2,5,1,3,6,4},{7,1,3,5,4,2},{7,3,1,5,4,5},{7,3,1,5,4,7},{7,3,1,5,4,4},{2,1,5,3,6,4},{7,3,1,5,4,3},{7,3,1,5,4,2},{7,3,1,5,4,1},{7,3,5,1,4,5},{7,3,5,1,4,7},{7,3,5,1,4,4},{7,3,5,1,4,3},{7,3,5,1,4,2},{2,1,6,5,3,7},{7,3,5,1,4,1},{7,3,5,1,4,6},{2,1,6,5,3,4},{7,3,5,4,1,5},{7,3,5,4,1,7},{7,3,5,4,1,4},{2,1,6,5,3,6},{7,3,5,4,1,3},{7,3,5,4,1,2},{7,3,5,4,1,1},{2,6,1,5,3,7},{2,6,1,5,3,4},{7,5,3,4,1,5},{7,5,3,4,1,7},{7,5,3,4,1,4},{7,5,3,4,1,3},{2,6,1,5,3,6},{7,5,3,4,1,2},{7,5,3,4,1,1},{6,2,1,5,3,7},{6,2,1,5,3,4},{7,5,3,1,4,5},{7,5,3,1,4,7},{7,5,3,1,4,4},{7,5,3,1,4,3},{6,2,1,5,3,6},{7,5,3,1,4,2},{7,5,3,1,4,1},{2,4,5,1,7,4},{7,5,3,1,4,6},{6,1,2,5,3,7},{6,1,2,5,3,4},{2,4,5,1,7,3},{7,5,1,3,4,5},{7,5,1,3,4,7},{7,5,1,3,4,4},{7,5,1,3,4,3},{7,5,1,3,4,1},{2,4,5,7,1,5},{7,5,1,3,4,6},{7,1,5,3,4,5},{7,1,5,3,4,7},{2,4,5,7,1,4},{7,1,5,3,4,4},{7,1,5,3,4,3},{7,1,5,3,4,6},{1,7,5,3,4,5},{2,4,7,5,1,5},{1,7,5,3,4,4},{2,4,7,5,1,4},{1,7,5,3,4,3},{1,7,5,4,3,5},{2,4,7,1,5,5},{1,7,5,4,3,4},{2,4,7,1,5,7},{1,7,5,4,3,3},{1,7,5,4,3,6},{7,1,5,4,3,5},{7,1,5,4,3,7},{7,1,5,4,3,4},{2,4,1,7,5,5},{2,4,1,7,5,7},{7,1,5,4,3,6},{7,5,1,4,3,5},{7,5,1,4,3,7},{7,5,1,4,3,4},{7,5,1,4,3,3},{7,5,1,4,3,6},{2,1,4,7,5,7},{7,5,4,1,3,5},{2,1,4,7,5,4},{7,5,4,1,3,7},{7,5,4,1,3,4},{7,5,4,1,3,3},{2,1,4,7,5,3},{7,5,4,1,3,2},{2,1,4,7,5,6},{7,5,4,3,1,5},{7,5,4,3,1,7},{7,5,4,3,1,4},{7,5,4,3,1,3},{7,5,4,3,1,2},{1,2,4,7,5,7},{1,2,4,7,5,4},{5,7,4,3,2,5},{1,2,4,7,5,3},{5,7,4,3,2,7},{5,7,4,3,2,4},{1,2,4,7,5,6},{5,7,4,3,2,3},{5,7,4,3,2,2},{1,4,2,7,5,4},{5,7,4,2,3,5},{1,4,2,7,5,3},{5,7,4,2,3,7},{5,7,4,2,3,4},{5,7,4,2,3,3},{5,7,4,2,3,2},{1,4,2,7,5,6},{5,7,4,2,3,1},{4,1,2,7,5,5},{5,7,2,4,3,5},{4,1,2,7,5,7},{4,1,2,7,5,4},{5,7,2,4,3,4},{4,1,2,7,5,3},{5,7,2,4,3,3},{5,7,2,4,3,2},{4,1,2,7,5,6},{5,2,7,4,3,5},{4,2,1,7,5,5},{4,2,1,7,5,7},{5,2,7,4,3,4},{5,2,7,4,3,3},{5,2,7,4,3,2},{2,5,7,4,3,5},{4,2,7,1,5,5},{2,5,7,4,3,4},{2,5,7,4,3,3},{4,2,7,1,5,7},{4,2,7,1,5,4},{2,5,7,3,4,5},{2,5,7,3,4,4},{2,5,7,3,4,3},{4,2,7,5,1,5},{2,5,7,3,4,1},{4,2,7,5,1,4},{2,5,7,3,4,6},{5,2,7,3,4,5},{5,2,7,3,4,4},{5,2,7,3,4,3},{5,2,7,3,4,2},{5,2,7,3,4,1},{5,2,7,3,4,6},{4,7,2,5,1,5},{5,7,2,3,4,5},{4,7,2,5,1,4},{5,7,2,3,4,4},{4,7,2,5,1,3},{5,7,2,3,4,2},{6,1,2,5,3,6},{1,6,2,5,3,7},{1,6,2,5,3,4},{4,7,2,1,5,5},{4,7,2,1,5,7},{4,7,2,1,5,4},{4,7,2,1,5,3},{7,6,3,5,1,4},{7,6,3,5,1,3},{4,7,1,2,5,5},{4,7,1,2,5,7},{4,7,1,2,5,4},{4,7,1,2,5,3},{4,7,1,2,5,6},{6,7,3,5,1,4},{4,1,7,2,5,5},{4,1,7,2,5,7},{6,7,3,5,1,3},{4,1,7,2,5,4},{4,1,7,2,5,3},{4,1,7,2,5,6},{6,7,3,1,5,5},{1,4,7,2,5,4},{1,4,7,2,5,3},{1,4,7,5,2,5},{7,6,3,1,5,5},{1,4,7,5,2,4},{1,4,7,5,2,3},{7,6,3,1,5,3},{4,1,7,5,2,5},{4,1,7,5,2,7},{4,1,7,5,2,4},{4,1,7,5,2,3},{7,3,6,1,5,5},{7,3,6,1,5,7},{4,1,7,5,2,6},{4,7,1,5,2,5},{7,3,6,1,5,3},{4,7,1,5,2,7},{4,7,1,5,2,4},{4,7,1,5,2,3},{7,3,1,6,5,5},{7,3,1,6,5,7},{7,3,1,6,5,3},{4,7,1,5,2,6},{4,7,5,1,2,5},{4,7,5,1,2,7},{7,3,1,5,6,5},{7,3,1,5,6,3},{4,7,5,1,2,3},{7,1,3,5,6,5},{7,1,3,5,6,7},{4,7,5,2,1,5},{4,7,5,2,1,4},{7,1,3,6,5,5},{4,7,5,2,1,3},{4,7,5,2,1,2},{7,1,3,6,5,7},{7,4,5,2,1,5},{7,4,5,2,1,4},{7,1,6,3,5,5},{7,4,5,2,1,3},{7,4,5,2,1,2},{7,4,5,1,2,5},{7,6,1,3,5,5},{7,4,5,1,2,7},{7,4,5,1,2,3},{7,4,1,5,2,5},{6,7,1,3,5,5},{7,4,1,5,2,7},{7,4,1,5,2,3},{6,1,7,3,5,5},{7,1,4,5,2,5},{7,1,4,5,2,7},{7,1,4,5,2,3},{1,6,7,3,5,5},{1,6,7,3,5,3},{1,7,4,5,2,5},{1,7,4,5,2,4},{1,7,6,3,5,5},{1,7,4,5,2,3},{1,7,6,3,5,4},{1,7,6,3,5,3},{1,7,4,2,5,5},{1,7,3,6,5,5},{1,7,4,2,5,4},{1,7,3,6,5,7},{1,7,3,6,5,4},{1,7,4,2,5,3},{1,7,3,5,6,5},{7,1,4,2,5,5},{1,7,3,5,6,7},{1,7,3,5,6,4},{7,1,4,2,5,4},{7,1,4,2,5,3},{1,7,5,3,6,5},{1,7,5,3,6,4},{7,4,1,2,5,5},{1,7,5,3,6,2},{1,7,5,6,3,5},{7,4,1,2,5,3},{1,7,5,6,3,7},{1,7,5,6,3,4},{1,7,5,6,3,3},{1,7,5,6,3,2},{7,4,2,1,5,5},{7,4,2,1,5,7},{1,7,5,6,3,6},{7,4,2,1,5,4},{1,7,6,5,3,5},{7,4,2,1,5,3},{1,7,6,5,3,7},{1,7,6,5,3,4},{1,7,6,5,3,3},{7,4,2,5,1,5},{1,7,6,5,3,6},{1,6,7,5,3,5},{7,4,2,5,1,4},{1,6,7,5,3,7},{7,4,2,5,1,3},{1,6,7,5,3,3},{1,6,7,5,3,2},{1,6,7,5,3,6},{7,2,4,5,1,5},{6,1,7,5,3,5},{6,1,7,5,3,7},{7,2,4,5,1,3},{6,1,7,5,3,3},{6,1,7,5,3,2},{6,1,7,5,3,6},{7,2,4,1,5,5},{6,7,1,5,3,5},{7,2,4,1,5,7},{6,7,1,5,3,7},{6,7,1,5,3,4},{6,7,1,5,3,3},{7,2,4,1,5,3},{6,7,1,5,3,2},{6,7,1,5,3,6},{7,6,1,5,3,5},{7,6,1,5,3,7},{7,2,1,4,5,7},{7,6,1,5,3,4},{7,6,1,5,3,3},{7,2,1,4,5,4},{7,2,1,4,5,3},{7,6,1,5,3,1},{7,6,1,5,3,6},{7,1,6,5,3,5},{7,1,6,5,3,7},{7,1,2,4,5,7},{7,1,6,5,3,4},{7,1,2,4,5,4},{7,1,6,5,3,3},{7,1,2,4,5,3},{7,1,6,5,3,1},{7,1,6,5,3,6},{7,1,5,6,3,5},{7,1,5,6,3,7},{7,1,5,6,3,3},{1,7,2,4,5,7},{7,1,5,6,3,1},{1,7,2,4,5,4},{7,1,5,6,3,6},{1,7,2,4,5,3},{7,1,5,3,6,5},{1,2,7,4,5,7},{1,2,7,4,5,4},{7,5,1,3,6,5},{1,2,7,4,5,3},{1,2,7,4,5,6},{2,1,7,4,5,7},{2,1,7,4,5,4},{7,5,1,6,3,4},{2,1,7,4,5,3},{2,1,7,4,5,6},{2,7,1,4,5,7},{2,7,1,4,5,4},{7,5,6,1,3,4},{2,7,1,4,5,3},{2,7,1,4,5,6},{2,7,4,1,5,5},{7,6,5,1,3,4},{2,7,4,1,5,7},{6,7,5,1,3,4},{2,7,4,5,1,5},{2,7,4,5,1,4},{6,7,5,3,1,4},{6,7,5,3,1,3},{2,7,5,4,1,5},{7,6,5,3,1,4},{5,7,2,3,4,1},{7,6,5,3,1,3},{5,7,2,3,4,6},{5,7,3,2,4,5},{5,7,3,2,4,4},{7,5,6,3,1,4},{5,7,3,2,4,3},{7,5,6,3,1,3},{5,7,3,2,4,2},{7,5,3,6,1,5},{7,5,3,6,1,7},{5,7,3,2,4,1},{7,5,3,1,6,5},{7,5,3,1,6,7},{5,7,3,2,4,6},{5,7,3,4,2,5},{1,6,2,5,3,6},{1,2,6,5,3,7},{5,7,3,4,2,7},{5,7,3,2,6,5},{5,7,3,4,2,4},{5,7,3,2,6,4},{5,7,3,2,6,3},{5,7,3,4,2,3},{5,7,3,4,2,2},{5,7,3,4,2,6},{5,7,3,6,2,4},{5,3,7,4,2,5},{5,7,3,6,2,3},{5,3,7,4,2,7},{5,3,7,4,2,4},{5,3,7,4,2,2},{5,7,6,3,2,3},{5,3,7,4,2,6},{5,3,7,2,4,5},{1,2,6,5,3,4},{5,6,7,3,2,3},{5,6,7,3,2,1},{1,2,6,5,3,6},{6,5,7,3,2,3},{6,5,7,3,2,1},{1,2,5,6,3,6},{1,2,5,3,6,5},{6,5,7,2,3,3},{1,2,3,5,6,5},{5,6,7,2,3,3},{5,3,7,2,4,4},{5,3,7,2,4,3},{5,3,7,2,4,2},{5,3,7,2,4,1},{5,3,7,2,4,6},{5,3,2,7,4,5},{1,2,3,6,5,5},{5,3,2,7,4,4},{1,2,3,6,5,4},{5,3,2,7,4,3},{5,3,2,7,4,2},{5,3,2,7,4,1},{5,3,2,7,4,6},{1,2,3,6,5,6},{5,2,3,7,4,5},{1,2,6,3,5,7},{5,2,3,7,4,4},{1,2,6,3,5,4},{5,2,3,7,4,3},{5,2,3,7,4,2},{5,2,3,7,4,1},{1,2,6,3,5,6},{5,2,3,7,4,6},{1,6,2,3,5,7},{2,5,3,7,4,5},{1,6,2,3,5,4},{2,5,3,7,4,4},{2,5,3,7,4,3},{1,6,2,3,5,6},{6,1,2,3,5,7},{2,5,3,7,4,1},{6,1,2,3,5,4},{2,5,3,7,4,6},{2,3,5,7,4,5},{6,1,2,3,5,6},{2,3,5,7,4,4},{2,3,5,7,4,3},{2,3,5,7,4,2},{6,2,1,3,5,7},{2,3,5,7,4,1},{6,2,1,3,5,4},{2,3,5,7,4,6},{3,2,5,7,4,5},{3,2,5,7,4,4},{6,2,1,3,5,6},{3,2,5,7,4,3},{3,2,5,7,4,2},{2,6,1,3,5,7},{3,2,5,7,4,1},{3,2,5,7,4,6},{2,6,1,3,5,4},{3,5,2,7,4,5},{3,5,2,7,4,4},{2,6,1,3,5,6},{3,5,2,7,4,3},{3,5,2,7,4,2},{3,5,2,7,4,1},{2,1,6,3,5,7},{3,5,2,7,4,6},{2,1,6,3,5,4},{3,5,7,2,4,5},{3,5,7,2,4,4},{3,5,7,2,4,3},{2,1,6,3,5,6},{3,5,7,2,4,1},{3,5,7,4,2,5},{2,1,3,6,5,4},{3,5,7,4,2,7},{3,5,7,4,2,4},{3,5,7,4,2,3},{2,1,3,6,5,6},{3,5,4,7,2,5},{3,5,4,7,2,3},{3,5,4,2,7,5},{3,5,4,2,7,4},{3,5,4,2,7,3},{3,5,2,4,7,5},{2,3,1,6,5,4},{3,5,2,4,7,4},{3,5,2,4,7,3},{2,3,1,6,5,6},{3,5,2,4,7,2},{2,3,6,1,5,4},{3,2,5,4,7,5},{2,3,6,1,5,6},{3,2,5,4,7,4},{3,2,5,4,7,3},{3,2,5,4,7,2},{2,6,3,1,5,4},{3,2,5,4,7,6},{2,3,5,4,7,5},{2,6,3,1,5,6},{2,3,5,4,7,4},{6,2,3,1,5,4},{2,3,5,4,7,3},{2,3,5,4,7,6},{6,2,3,1,5,6},{2,5,3,4,7,5},{6,2,3,5,1,5},{2,5,3,4,7,4},{2,5,3,4,7,3},{2,5,3,4,7,6},{5,2,3,4,7,5},{5,2,3,4,7,4},{5,2,3,4,7,6},{5,3,2,4,7,5},{2,3,6,5,1,5},{5,3,2,4,7,4},{5,3,2,4,7,3},{5,3,2,4,7,2},{2,3,5,6,1,5},{2,3,5,6,1,7},{5,3,4,2,7,5},{2,3,5,6,1,4},{5,3,4,2,7,4},{5,3,4,2,7,3},{2,3,5,1,6,5},{2,3,5,1,6,7},{2,3,5,1,6,4},{5,3,4,7,2,5},{5,3,4,7,2,7},{3,2,5,1,6,5},{3,2,5,1,6,7},{3,2,5,1,6,4},{3,2,5,6,1,5},{3,2,5,6,1,7},{3,2,5,6,1,4},{5,3,4,7,2,3},{3,2,6,5,1,5},{5,4,3,7,2,5},{5,4,3,7,2,7},{5,4,3,7,2,3},{5,4,3,2,7,5},{5,4,3,2,7,4},{5,4,3,2,7,3},{3,6,2,5,1,5},{5,4,2,3,7,5},{5,4,2,3,7,4},{5,4,2,3,7,3},{5,4,2,3,7,1},{6,3,2,5,1,5},{5,4,2,3,7,6},{5,2,4,3,7,5},{5,2,4,3,7,4},{5,2,4,3,7,3},{5,2,4,3,7,1},{5,2,4,3,7,6},{2,5,4,3,7,5},{3,6,2,1,5,5},{2,5,4,3,7,4},{2,5,4,3,7,3},{2,5,4,3,7,1},{2,5,4,3,7,6},{3,2,6,1,5,5},{2,5,4,7,3,5},{2,5,4,7,3,4},{2,5,4,7,3,3},{3,2,1,6,5,5},{2,5,4,7,3,1},{5,2,4,7,3,5},{5,2,4,7,3,4},{3,2,1,5,6,5},{5,2,4,7,3,3},{5,2,4,7,3,1},{5,4,2,7,3,5},{5,4,2,7,3,4},{3,1,2,5,6,5},{5,4,2,7,3,3},{5,4,2,7,3,1},{5,4,7,2,3,5},{3,1,2,6,5,5},{5,4,7,2,3,4},{5,4,7,2,3,3},{5,4,7,2,3,1},{5,4,7,3,2,5},{5,4,7,3,2,7},{5,4,7,3,2,4},{4,5,7,3,2,5},{4,5,7,3,2,7},{4,5,7,3,2,4},{6,3,1,2,5,7},{4,5,7,2,3,5},{4,5,7,2,3,4},{4,5,7,2,3,3},{4,5,7,2,3,1},{6,1,3,2,5,7},{4,5,2,7,3,5},{4,5,2,7,3,4},{4,5,2,7,3,3},{4,5,2,7,3,1},{1,6,3,2,5,7},{4,2,5,7,3,5},{4,2,5,7,3,4},{4,2,5,7,3,3},{4,2,5,7,3,1},{2,4,5,7,3,5},{2,4,5,7,3,4},{2,4,5,7,3,3},{1,3,2,6,5,5},{2,4,5,7,3,1},{2,4,5,3,7,4},{2,4,5,3,7,3},{1,3,2,5,6,5},{2,4,5,3,7,1},{4,2,5,3,7,5},{4,2,5,3,7,4},{4,2,5,3,7,3},{1,3,5,2,6,5},{4,2,5,3,7,1},{4,5,2,3,7,5},{4,5,2,3,7,4},{4,5,2,3,7,3},{4,5,2,3,7,1},{4,5,2,3,7,6},{2,7,5,4,1,4},{2,7,5,4,1,6},{2,7,5,1,4,5},{2,7,5,1,4,7},{2,7,5,1,4,4},{2,7,5,1,4,1},{5,7,6,2,3,5},{2,7,1,5,4,7},{2,7,1,5,4,4},{5,7,6,2,3,3},{2,7,1,5,4,2},{2,7,1,5,4,1},{5,7,2,6,3,5},{2,1,7,5,4,7},{2,1,7,5,4,2},{2,1,7,5,4,1},{5,7,2,6,3,4},{1,2,7,5,4,3},{5,7,2,6,3,3},{1,2,7,5,4,2},{5,7,2,3,6,5},{5,7,2,3,6,4},{5,7,2,3,6,3},{1,7,2,5,4,3},{5,2,7,3,6,5},{5,2,7,3,6,4},{7,1,2,5,4,3},{5,2,7,3,6,3},{5,2,7,6,3,5},{7,2,1,5,4,7},{5,2,7,6,3,4},{5,2,7,6,3,3},{7,2,1,5,4,2},{7,2,1,5,4,1},{7,2,5,1,4,5},{7,2,5,1,4,7},{7,2,5,1,4,4},{5,2,6,7,3,4},{5,2,6,7,3,3},{7,2,5,1,4,2},{7,2,5,1,4,1},{5,6,2,7,3,3},{6,5,2,7,3,3},{7,2,5,4,1,5},{6,2,5,7,3,3},{6,2,5,7,3,1},{7,5,2,4,1,5},{2,6,5,7,3,4},{2,6,5,7,3,3},{2,6,5,7,3,1},{7,5,2,1,4,5},{2,5,6,7,3,4},{2,5,6,7,3,3},{2,5,6,7,3,1},{7,5,1,2,4,5},{2,5,7,6,3,4},{7,5,1,2,4,4},{7,5,1,2,4,3},{2,5,7,6,3,1},{2,5,7,3,6,5},{2,5,7,3,6,4},{2,5,7,3,6,3},{7,1,5,2,4,4},{7,1,5,2,4,3},{2,5,7,3,6,1},{2,5,3,7,6,5},{2,5,3,7,6,4},{2,5,3,7,6,3},{1,7,5,2,4,4},{1,7,5,2,4,3},{1,7,5,2,4,2},{2,5,3,6,7,4},{1,7,5,4,2,5},{2,5,3,6,7,3},{1,7,5,4,2,4},{1,7,5,4,2,3},{1,7,5,4,2,1},{2,5,6,3,7,4},{7,1,5,4,2,5},{2,5,6,3,7,3},{7,1,5,4,2,7},{7,1,5,4,2,4},{7,1,5,4,2,3},{2,5,6,3,7,6},{2,6,5,3,7,4},{7,5,1,4,2,5},{2,6,5,3,7,3},{7,5,1,4,2,7},{7,5,1,4,2,4},{2,6,5,3,7,6},{6,2,5,3,7,4},{7,5,4,1,2,5},{6,2,5,3,7,3},{7,5,4,1,2,7},{7,5,4,1,2,3},{7,5,4,2,1,5},{7,5,4,2,1,4},{7,5,4,2,1,3},{7,5,4,2,1,2},{5,7,4,3,6,7},{5,7,4,3,6,4},{5,7,4,3,6,3},{6,2,5,3,7,6},{5,7,4,6,3,5},{5,7,4,6,3,7},{6,5,2,3,7,3},{6,5,2,3,7,2},{5,7,4,6,3,4},{5,7,4,6,3,3},{6,5,2,3,7,6},{5,7,4,6,3,1},{5,7,6,4,3,5},{5,6,2,3,7,3},{5,6,2,3,7,2},{5,7,6,4,3,4},{5,6,2,3,7,6},{5,7,6,4,3,3},{5,7,6,4,3,2},{5,2,6,3,7,3},{5,7,6,4,3,6},{5,2,6,3,7,2},{5,6,7,4,3,5},{5,2,6,3,7,6},{5,2,3,6,7,5},{5,2,3,6,7,3},{5,6,7,4,3,4},{5,2,3,7,6,5},{5,6,7,4,3,6},{6,5,7,4,3,5},{5,2,3,7,6,4},{5,2,3,7,6,3},{6,5,7,4,3,4},{5,3,2,7,6,5},{5,3,2,7,6,4},{5,3,2,6,7,5},{5,3,2,6,7,3},{5,3,6,2,7,3},{5,6,3,2,7,4},{5,3,7,4,6,7},{6,5,3,2,7,4},{6,5,3,2,7,3},{5,3,7,4,6,4},{5,3,7,4,6,3},{5,3,7,6,4,5},{6,5,3,7,2,3},{5,3,7,6,4,4},{5,3,7,6,4,3},{6,5,3,7,2,1},{5,3,7,6,4,2},{5,3,6,7,4,5},{5,3,6,7,4,4},{5,6,3,7,2,1},{5,3,6,7,4,3},{5,6,3,7,4,5},{5,3,6,7,2,3},{5,6,3,7,4,4},{5,6,3,7,4,3},{5,6,3,7,4,2},{5,3,7,6,2,4},{6,5,3,7,4,5},{5,3,7,2,6,5},{5,3,7,2,6,4},{6,5,3,7,4,4},{3,5,7,2,6,5},{6,5,3,7,4,3},{6,5,3,7,4,2},{6,3,5,7,4,5},{6,3,5,7,4,7},{6,3,5,7,4,4},{6,3,5,7,4,3},{6,3,5,7,4,2},{3,5,7,6,2,3},{3,6,5,7,4,5},{3,6,5,7,4,7},{3,6,5,7,4,4},{3,6,5,7,4,3},{3,5,6,7,2,3},{3,5,6,7,4,5},{3,5,6,7,4,7},{3,5,6,7,4,4},{3,5,6,7,4,3},{3,6,5,7,2,3},{6,3,5,7,2,3},{6,3,5,7,2,1},{3,5,7,6,4,5},{3,5,7,6,4,7},{3,5,7,6,4,4},{6,3,5,2,7,4},{6,3,5,2,7,3},{3,5,7,6,4,3},{3,5,7,4,6,5},{3,5,7,4,6,7},{3,5,7,4,6,4},{3,6,5,2,7,3},{3,5,7,4,6,3},{3,5,4,7,6,5},{3,5,4,7,6,3},{3,5,4,6,7,5},{3,5,4,6,7,4},{3,5,6,2,7,3},{3,5,2,6,7,5},{3,5,2,6,7,3},{3,5,2,7,6,5},{4,5,3,2,7,5},{4,5,3,2,7,4},{4,5,3,2,7,3},{4,5,3,7,2,5},{4,5,3,7,2,7},{4,5,3,7,2,3},{1,6,3,5,2,5},{4,3,5,7,2,5},{4,3,5,7,2,3},{6,1,3,5,2,5},{4,3,5,2,7,5},{4,3,5,2,7,4},{4,3,5,2,7,3},{6,3,1,5,2,5},{4,3,2,5,7,5},{4,3,2,5,7,4},{4,3,2,5,7,3},{4,3,2,5,7,2},{4,2,3,5,7,4},{4,2,3,5,7,3},{4,2,3,5,7,6},{3,1,5,2,6,5},{2,4,3,5,7,4},{2,4,3,5,7,3},{2,4,3,5,7,6},{2,3,4,5,7,4},{2,3,4,5,7,3},{2,3,4,5,7,6},{3,2,4,5,7,5},{3,2,4,5,7,4},{3,2,4,5,7,3},{3,2,4,5,7,2},{3,4,2,5,7,5},{3,5,6,1,2,4},{3,4,2,5,7,4},{3,4,2,5,7,3},{3,4,2,5,7,2},{3,4,5,2,7,5},{6,3,5,1,2,5},{3,4,5,2,7,4},{6,3,5,2,1,5},{3,4,5,2,7,3},{3,4,5,7,2,5},{3,6,5,2,1,4},{3,4,5,7,2,3},{3,5,6,2,1,4},{3,5,2,6,1,4},{3,5,2,1,6,4},{5,4,6,2,1,3},{5,6,4,2,1,5},{5,6,4,2,1,3},{6,5,4,2,1,5},{6,5,4,1,2,5},{5,6,4,1,2,5},{4,3,7,5,2,5},{4,3,7,5,2,4},{4,3,7,5,2,3},{3,5,4,6,7,3},{3,5,6,4,7,5},{3,5,6,4,7,7},{3,5,6,4,7,4},{3,5,2,7,6,3},{3,5,6,4,7,3},{3,5,6,4,7,6},{3,2,5,7,6,5},{3,6,5,4,7,5},{3,6,5,4,7,7},{3,2,5,7,6,4},{3,2,5,7,6,3},{3,6,5,4,7,4},{3,6,5,4,7,3},{3,6,5,4,7,6},{3,2,5,6,7,5},{6,3,5,4,7,5},{6,3,5,4,7,7},{3,2,5,6,7,4},{3,2,5,6,7,3},{6,3,5,4,7,4},{6,3,5,4,7,3},{6,3,5,4,7,2},{6,3,5,4,7,6},{6,5,3,4,7,5},{6,5,3,4,7,4},{6,5,3,4,7,3},{6,5,3,4,7,2},{5,6,3,4,7,5},{5,6,3,4,7,4},{5,6,3,4,7,3},{5,6,3,4,7,2},{3,2,6,5,7,5},{5,3,6,4,7,5},{3,2,6,5,7,3},{3,6,2,5,7,5},{3,6,2,5,7,4},{3,6,2,5,7,3},{5,3,6,4,7,4},{6,3,2,5,7,4},{5,3,6,4,7,3},{6,3,2,5,7,3},{5,3,6,4,7,6},{5,3,4,6,7,5},{5,3,4,6,7,4},{6,2,3,5,7,4},{5,3,4,6,7,3},{6,2,3,5,7,3},{2,6,3,5,7,4},{2,6,3,5,7,3},{2,3,6,5,7,3},{2,3,5,6,7,4},{2,3,5,6,7,3},{2,3,5,7,6,5},{2,3,5,7,6,4},{2,3,5,7,6,3},{2,3,7,5,6,5},{2,3,7,5,6,4},{2,3,7,6,5,5},{2,3,7,6,5,4},{2,3,7,6,5,3},{2,3,7,6,5,6},{2,3,6,7,5,4},{2,3,6,7,5,3},{2,3,6,7,5,6},{2,6,3,7,5,7},{2,6,3,7,5,4},{2,6,3,7,5,3},{2,6,3,7,5,6},{6,2,3,7,5,7},{6,2,3,7,5,4},{6,2,3,7,5,3},{6,2,3,7,5,6},{6,3,2,7,5,7},{6,3,2,7,5,4},{6,3,2,7,5,3},{3,6,2,7,5,4},{3,6,2,7,5,3},{3,2,6,7,5,4},{3,2,6,7,5,3},{3,2,7,6,5,4},{3,2,7,5,6,5},{3,2,7,5,6,4},{3,2,7,5,6,3},{3,7,2,5,6,5},{3,7,2,5,6,4},{3,7,2,6,5,4},{3,7,6,2,5,3},{3,6,7,2,5,4},{6,3,7,2,5,7},{6,3,7,2,5,4},{6,3,7,5,2,3},{3,6,7,5,2,3},{4,3,5,7,6,5},{3,6,7,5,2,1},{4,3,5,7,6,4},{4,3,5,7,6,3},{3,7,6,5,2,3},{4,3,5,6,7,5},{3,7,6,5,2,1},{4,3,5,6,7,4},{4,3,5,6,7,3},{3,7,5,6,2,1},{4,3,6,5,7,5},{3,7,5,2,6,5},{4,3,6,5,7,4},{4,3,6,5,7,3},{4,3,6,5,7,6},{3,7,5,2,6,1},{4,6,3,5,7,5},{7,3,5,2,6,5},{4,6,3,5,7,4},{4,6,3,5,7,3},{7,3,5,2,6,3},{4,6,3,5,7,6},{6,4,3,5,7,4},{6,4,3,5,7,3},{6,4,3,5,7,6},{7,3,5,6,2,3},{7,3,6,5,2,3},{7,6,3,5,2,3},{6,7,3,5,2,3},{6,7,3,2,5,7},{6,7,3,2,5,4},{7,6,3,2,5,7},{7,6,3,2,5,4},{7,3,6,2,5,5},{7,3,2,6,5,5},{7,3,2,5,6,5},{6,4,2,7,3,7},{6,4,2,7,3,1},{6,4,2,7,3,6},{4,6,2,7,3,5},{4,6,2,7,3,7},{4,6,2,7,3,1},{4,6,2,7,3,6},{4,2,6,7,3,5},{4,2,6,7,3,7},{4,2,6,7,3,6},{4,2,7,6,3,5},{4,2,7,6,3,7},{4,2,7,6,3,6},{4,2,7,3,6,7},{4,2,7,3,6,2},{4,2,7,3,6,1},{4,2,7,3,6,6},{4,7,2,3,6,1},{4,7,2,3,6,6},{4,7,2,6,3,7},{4,7,2,6,3,6},{4,7,6,2,3,5},{4,7,6,2,3,7},{4,7,6,2,3,1},{4,7,6,2,3,6},{4,6,7,2,3,5},{4,6,7,2,3,7},{4,6,7,2,3,1},{4,6,7,2,3,6},{6,4,7,2,3,5},{6,4,7,2,3,7},{6,4,7,2,3,1},{6,4,7,2,3,6},{6,4,7,3,2,5},{6,4,7,3,2,7},{6,4,7,3,2,1},{6,4,7,3,2,6},{4,6,7,3,2,5},{4,6,7,3,2,7},{4,6,7,3,2,2},{4,6,7,3,2,1},{4,6,7,3,2,6},{4,7,6,3,2,7},{4,7,6,3,2,2},{4,7,6,3,2,1},{4,7,6,3,2,6},{4,7,3,6,2,5},{4,7,3,6,2,7},{4,7,3,6,2,2},{4,7,3,6,2,1},{4,7,3,6,2,6},{4,7,3,2,6,5},{4,7,3,2,6,7},{4,7,3,2,6,2},{4,7,3,2,6,1},{4,7,3,2,6,6},{7,4,3,2,1,5},{7,4,3,2,1,2},{7,4,3,2,1,1},{7,4,3,1,2,5},{7,4,3,1,2,7},{7,4,3,1,2,2},{7,4,3,1,2,1},{7,4,3,1,2,6},{7,4,1,3,2,5},{7,4,1,3,2,7},{7,4,1,3,2,2},{7,4,1,3,2,6},{7,1,4,3,2,5},{7,1,4,3,2,7},{7,1,4,3,2,2},{7,1,4,3,2,1},{1,7,4,3,2,7},{1,7,4,3,2,2},{2,6,1,7,4,4},{2,6,1,7,4,3},{6,2,1,7,4,4},{1,7,4,3,2,1},{6,2,1,7,4,3},{1,7,4,3,2,6},{1,7,4,2,3,7},{1,7,4,2,3,2},{6,1,2,7,4,4},{1,7,4,2,3,6},{6,1,2,7,4,3},{7,1,4,2,3,5},{7,1,4,2,3,7},{1,6,2,7,4,4},{1,6,2,7,4,3},{7,1,4,2,3,6},{7,4,1,2,3,5},{7,4,1,2,3,7},{7,4,1,2,3,2},{7,4,1,2,3,1},{7,4,1,2,3,6},{7,4,2,1,3,5},{7,4,2,1,3,7},{7,4,2,1,3,2},{7,4,2,1,3,1},{7,4,2,3,1,5},{7,4,2,3,1,2},{7,4,2,3,1,1},{7,2,4,3,1,5},{7,2,4,3,1,7},{7,2,3,5,6,5},{3,4,7,5,6,4},{7,2,3,5,6,4},{3,4,7,5,6,3},{3,4,7,6,5,5},{7,2,3,6,5,5},{3,4,7,6,5,7},{3,4,7,6,5,4},{7,2,3,6,5,4},{3,4,7,6,5,3},{7,2,3,6,5,3},{7,2,3,6,5,6},{3,4,6,7,5,5},{7,2,6,3,5,5},{3,4,6,7,5,7},{7,2,6,3,5,7},{3,4,6,7,5,4},{7,2,6,3,5,4},{3,4,6,7,5,3},{7,2,6,3,5,3},{3,6,4,7,5,5},{7,2,6,3,5,6},{3,6,4,7,5,7},{7,6,2,3,5,5},{7,6,2,3,5,7},{3,6,4,7,5,4},{7,6,2,3,5,4},{3,6,4,7,5,3},{7,6,2,3,5,3},{7,6,2,3,5,6},{6,7,2,3,5,7},{3,6,4,7,5,6},{6,3,4,7,5,5},{6,7,2,3,5,4},{6,7,2,3,5,3},{6,3,4,7,5,4},{6,3,4,7,5,3},{6,7,2,3,5,6},{6,2,7,3,5,7},{6,3,4,7,5,6},{6,2,7,3,5,4},{6,2,7,3,5,3},{6,2,7,3,5,6},{2,6,7,3,5,7},{2,6,7,3,5,4},{2,6,7,3,5,3},{2,6,7,3,5,6},{2,7,6,3,5,5},{2,7,6,3,5,7},{2,7,6,3,5,4},{2,7,6,3,5,3},{2,7,6,3,5,6},{2,7,3,6,5,5},{2,7,3,6,5,4},{2,7,3,6,5,3},{2,7,3,6,5,6},{2,7,3,5,6,5},{2,7,3,5,6,4},{2,7,5,3,6,5},{2,7,5,3,6,4},{4,7,3,5,6,5},{4,7,3,5,6,7},{2,7,5,3,6,1},{4,7,3,5,6,4},{4,7,3,5,6,3},{2,7,5,6,3,5},{2,7,5,6,3,4},{4,7,3,6,5,5},{4,7,3,6,5,7},{2,7,5,6,3,1},{4,7,3,6,5,4},{4,7,3,6,5,3},{2,7,6,5,3,5},{2,7,6,5,3,4},{4,7,6,3,5,5},{4,7,6,3,5,7},{4,7,6,3,5,4},{4,7,6,3,5,3},{2,6,7,5,3,4},{4,6,7,3,5,5},{2,6,7,5,3,1},{4,6,7,3,5,7},{4,6,7,3,5,4},{4,6,7,3,5,3},{6,2,7,5,3,4},{4,6,7,3,5,6},{6,2,7,5,3,1},{6,4,7,3,5,5},{6,4,7,3,5,4},{6,7,2,5,3,4},{6,4,7,3,5,3},{6,7,2,5,3,1},{6,4,7,3,5,6},{6,4,7,5,3,5},{7,6,2,5,3,5},{6,4,7,5,3,7},{6,4,7,5,3,4},{7,6,2,5,3,4},{6,4,7,5,3,3},{7,6,2,5,3,3},{6,4,7,5,3,1},{4,6,7,5,3,5},{7,2,6,5,3,5},{4,6,7,5,3,7},{4,6,7,5,3,4},{7,2,6,5,3,4},{4,6,7,5,3,3},{7,2,6,5,3,3},{4,7,6,5,3,5},{7,2,5,6,3,5},{4,7,6,5,3,7},{7,2,5,6,3,4},{4,7,6,5,3,4},{7,2,5,6,3,3},{4,7,6,5,3,3},{7,2,5,3,6,5},{4,7,5,6,3,5},{7,2,5,3,6,4},{4,7,5,6,3,7},{4,7,5,6,3,4},{4,7,5,6,3,3},{7,5,2,3,6,5},{4,7,5,3,6,5},{4,7,5,3,6,7},{7,5,2,3,6,3},{4,7,5,3,6,4},{4,7,5,3,6,3},{7,5,2,6,3,5},{7,4,5,3,6,5},{7,4,5,3,6,7},{7,5,2,6,3,3},{7,4,5,3,6,4},{7,5,6,2,3,5},{7,5,6,2,3,4},{7,5,6,2,3,3},{7,6,5,2,3,5},{7,6,5,2,3,4},{7,6,5,2,3,3},{6,7,5,2,3,4},{7,4,5,3,6,3},{6,7,5,2,3,3},{7,4,5,6,3,5},{7,4,5,6,3,7},{7,4,5,6,3,4},{7,4,5,6,3,3},{6,7,5,3,2,3},{7,4,5,6,3,6},{7,4,6,5,3,5},{7,4,6,5,3,7},{7,4,6,5,3,4},{7,6,5,3,2,3},{7,4,6,5,3,3},{7,4,6,5,3,2},{7,4,6,5,3,6},{7,6,4,5,3,5},{7,6,4,5,3,4},{7,6,4,5,3,3},{7,6,4,5,3,2},{7,6,4,5,3,6},{6,7,4,5,3,5},{6,7,4,5,3,7},{6,7,4,5,3,4},{6,7,4,5,3,3},{7,5,3,6,2,3},{6,7,4,3,5,5},{7,5,3,2,6,5},{6,7,4,3,5,4},{6,7,4,3,5,3},{7,5,3,2,6,3},{6,7,4,3,5,6},{7,6,4,3,5,5},{5,7,3,2,1,5},{7,6,4,3,5,4},{7,6,4,3,5,3},{5,7,3,2,1,4},{5,7,3,2,1,3},{7,6,4,3,5,6},{7,4,6,3,5,5},{7,4,6,3,5,7},{5,7,3,1,2,5},{7,4,6,3,5,4},{5,7,3,1,2,4},{7,4,6,3,5,3},{5,7,3,1,2,3},{5,7,3,1,2,1},{7,4,6,3,5,6},{7,4,3,6,5,5},{7,4,3,6,5,7},{7,4,3,6,5,4},{7,4,3,6,5,3},{7,4,3,5,6,5},{7,4,3,5,6,7},{7,4,3,5,6,4},{7,4,3,5,6,3},{5,7,2,1,3,5},{5,7,2,1,3,3},{5,7,2,3,1,5},{5,7,2,3,1,3},{5,2,7,3,1,5},{5,2,7,3,1,3},{5,2,7,1,3,5},{5,2,7,1,3,3},{1,2,6,7,4,4},{1,2,6,7,4,3},{1,2,7,6,4,3},{1,2,7,4,6,4},{1,2,7,4,6,3},{1,2,4,7,6,4},{1,2,4,7,6,3},{1,2,4,6,7,4},{7,2,4,3,1,2},{7,2,4,3,1,1},{1,2,6,4,7,4},{7,2,4,1,3,5},{7,2,4,1,3,2},{7,2,4,1,3,1},{1,6,2,4,7,4},{7,2,1,4,3,5},{7,2,1,4,3,6},{6,1,2,4,7,4},{7,1,2,4,3,5},{6,2,1,4,7,4},{7,1,2,4,3,6},{6,2,1,4,7,3},{1,7,2,4,3,2},{2,6,1,4,7,4},{1,7,2,4,3,6},{2,1,6,4,7,4},{1,2,7,4,3,2},{1,2,7,4,3,6},{2,1,4,6,7,4},{2,1,7,4,3,1},{2,1,7,4,3,6},{2,1,4,7,6,4},{2,7,1,4,3,1},{2,7,1,4,3,6},{2,7,4,1,3,5},{2,7,4,1,3,2},{2,7,4,1,3,1},{2,7,4,1,3,6},{2,7,4,3,1,7},{2,7,4,3,1,2},{2,4,1,7,6,4},{2,7,4,3,1,1},{2,7,4,3,1,6},{2,4,1,6,7,4},{6,2,4,1,7,3},{6,2,4,7,1,3},{2,4,7,1,6,4},{4,2,7,1,6,4},{4,6,2,7,1,3},{6,4,2,7,1,3},{6,4,2,1,7,3},{4,6,2,1,7,3},{4,2,1,6,7,4},{4,2,1,6,7,3},{4,2,1,7,6,4},{4,1,2,7,6,4},{4,1,2,7,6,3},{3,7,4,2,1,5},{3,7,4,2,1,7},{3,7,4,2,1,2},{4,1,2,6,7,4},{3,7,4,2,1,1},{3,7,4,2,1,6},{3,7,4,1,2,5},{3,7,4,1,2,7},{4,1,6,2,7,4},{3,7,4,1,2,1},{3,7,4,1,2,6},{3,7,1,4,2,5},{3,7,1,4,2,2},{4,6,1,2,7,4},{3,7,1,4,2,1},{3,7,1,4,2,6},{3,1,7,4,2,7},{3,1,7,4,2,2},{3,1,7,4,2,1},{6,4,1,2,7,4},{3,1,7,4,2,6},{1,3,7,4,2,7},{1,3,7,4,2,2},{1,3,7,4,2,1},{6,1,4,2,7,4},{1,3,7,2,4,5},{1,3,7,2,4,2},{1,6,4,2,7,4},{1,3,7,2,4,1},{3,1,7,2,4,5},{3,1,7,2,4,2},{1,4,6,2,7,4},{3,1,7,2,4,1},{3,7,1,2,4,5},{3,7,1,2,4,2},{1,4,2,6,7,4},{3,7,1,2,4,1},{3,7,2,1,4,5},{3,7,2,1,4,2},{1,4,2,7,6,4},{3,7,2,1,4,1},{3,7,2,1,4,6},{3,7,2,4,1,5},{3,7,2,4,1,7},{1,4,7,2,6,3},{3,7,2,4,1,1},{3,7,2,4,1,6},{3,2,7,4,1,5},{3,2,7,4,1,7},{3,2,7,4,1,1},{3,2,7,4,1,6},{3,2,7,1,4,5},{3,2,7,1,4,2},{2,5,7,1,3,4},{2,5,7,1,3,3},{2,5,7,1,3,1},{2,5,7,3,1,5},{2,5,7,3,1,4},{2,5,7,3,1,3},{2,5,7,3,1,2},{7,5,3,4,6,7},{7,5,3,4,6,4},{7,5,3,4,6,3},{7,5,3,6,4,5},{7,5,3,6,4,7},{7,5,3,6,4,4},{7,5,3,6,4,3},{7,5,6,3,4,5},{7,5,6,3,4,4},{7,5,6,3,4,3},{7,5,6,3,4,1},{7,6,5,3,4,5},{7,6,5,3,4,4},{7,6,5,3,4,3},{7,6,5,3,4,1},{6,7,5,3,4,5},{6,7,5,3,4,3},{3,2,7,1,4,1},{3,2,7,1,4,6},{1,4,7,6,2,3},{3,2,1,7,4,5},{3,2,1,7,4,2},{3,2,1,7,4,1},{3,2,1,7,4,6},{3,1,2,7,4,2},{3,1,2,7,4,1},{1,3,2,7,4,2},{1,3,2,7,4,1},{6,1,4,7,2,4},{1,2,3,7,4,2},{1,2,3,7,4,6},{6,4,1,7,2,4},{6,4,1,7,2,3},{2,1,3,7,4,2},{4,6,1,7,2,4},{4,6,1,7,2,3},{2,1,3,7,4,6},{4,1,6,7,2,4},{4,1,6,7,2,3},{2,3,1,7,4,2},{2,3,1,7,4,6},{2,3,7,1,4,2},{4,1,7,6,2,3},{2,3,7,1,4,6},{2,3,7,4,1,7},{4,1,7,2,6,3},{2,3,7,4,1,2},{2,3,7,4,1,1},{4,7,1,2,6,3},{2,3,4,7,1,2},{2,3,4,7,1,1},{4,7,1,6,2,4},{2,3,4,1,7,2},{4,7,1,6,2,3},{2,3,4,1,7,1},{4,7,6,1,2,4},{2,3,1,4,7,2},{2,3,1,4,7,1},{2,3,1,4,7,6},{2,1,3,4,7,2},{4,6,7,1,2,4},{2,1,3,4,7,1},{4,6,7,1,2,3},{2,1,3,4,7,6},{6,4,7,1,2,4},{1,2,3,4,7,2},{6,4,7,1,2,3},{1,2,3,4,7,1},{1,2,3,4,7,6},{1,3,2,4,7,2},{6,4,7,2,1,3},{1,3,2,4,7,1},{3,1,2,4,7,2},{4,6,7,2,1,3},{3,1,2,4,7,1},{4,7,6,2,1,3},{3,2,1,4,7,2},{3,2,1,4,7,1},{3,2,1,4,7,6},{3,2,4,1,7,6},{3,2,4,7,1,5},{4,7,2,1,6,4},{3,2,4,7,1,7},{7,4,3,1,6,5},{7,4,3,1,6,7},{3,2,4,7,1,6},{3,4,2,7,1,5},{3,4,2,7,1,7},{3,4,2,7,1,6},{7,4,3,1,6,2},{7,4,3,1,6,6},{7,4,3,6,1,5},{7,4,3,6,1,7},{3,4,2,1,7,6},{7,4,3,6,1,2},{7,4,3,6,1,6},{7,4,6,3,1,5},{7,4,6,3,1,7},{3,4,1,2,7,6},{7,4,6,3,1,2},{7,4,6,3,1,6},{7,6,4,3,1,5},{7,6,4,3,1,7},{3,1,4,2,7,2},{3,1,4,2,7,1},{7,6,4,3,1,2},{3,1,4,2,7,6},{7,6,4,3,1,6},{6,7,4,3,1,5},{6,7,4,3,1,7},{1,3,4,2,7,2},{6,7,4,3,1,2},{1,3,4,2,7,1},{6,7,4,3,1,6},{6,7,4,1,3,5},{6,7,4,1,3,7},{6,7,4,1,3,2},{1,3,4,7,2,2},{6,7,4,1,3,1},{1,3,4,7,2,1},{6,7,4,1,3,6},{7,6,4,1,3,5},{7,6,4,1,3,7},{3,1,4,7,2,7},{7,6,4,1,3,2},{7,6,4,1,3,1},{3,1,4,7,2,2},{7,6,4,1,3,6},{3,1,4,7,2,1},{3,1,4,7,2,6},{7,4,6,1,3,5},{3,4,1,7,2,5},{7,4,6,1,3,7},{3,4,1,7,2,7},{3,4,1,7,2,6},{7,4,6,1,3,6},{3,4,7,1,2,5},{7,4,1,6,3,5},{3,4,7,1,2,7},{7,4,1,6,3,7},{3,4,7,1,2,2},{3,4,7,1,2,1},{7,4,1,6,3,2},{3,4,7,1,2,6},{3,4,7,2,1,5},{7,4,1,6,3,6},{3,4,7,2,1,7},{7,4,1,3,6,5},{3,4,7,2,1,2},{7,4,1,3,6,7},{3,4,7,2,1,1},{3,4,7,2,1,6},{7,4,1,3,6,2},{7,4,1,3,6,6},{7,1,4,3,6,7},{7,1,4,3,6,6},{7,1,4,6,3,5},{7,1,4,6,3,7},{7,1,4,6,3,2},{7,1,4,6,3,1},{7,1,4,6,3,6},{7,1,6,4,3,5},{7,1,6,4,3,7},{7,1,6,4,3,2},{7,1,6,4,3,1},{7,1,6,4,3,6},{7,6,1,4,3,5},{7,6,1,4,3,7},{7,6,1,4,3,2},{7,6,1,4,3,1},{7,6,1,4,3,6},{6,7,1,4,3,5},{6,7,1,4,3,2},{6,7,1,4,3,1},{6,7,1,4,3,6},{6,1,7,4,3,5},{6,1,7,4,3,6},{1,6,7,4,3,6},{1,7,6,4,3,7},{1,7,6,4,3,2},{1,7,6,4,3,1},{1,7,6,4,3,6},{1,7,4,6,3,7},{1,7,4,6,3,1},{1,7,4,6,3,6},{1,7,4,3,6,7},{1,7,4,3,6,6},{1,7,3,4,6,7},{1,7,3,4,6,6},{1,7,3,6,4,5},{1,7,3,6,4,7},{1,7,3,6,4,2},{1,7,3,6,4,6},{1,7,6,3,4,7},{1,7,6,3,4,2},{1,7,6,3,4,1},{1,6,7,3,4,5},{6,1,7,3,4,5},{4,1,5,3,2,2},{4,1,5,3,2,6},{4,5,1,3,2,5},{4,5,1,3,2,6},{4,5,3,1,2,5},{4,5,3,2,1,5},{5,1,7,2,6,4},{1,5,7,6,2,3},{1,5,7,2,6,3},{1,5,2,7,6,3},{1,5,2,6,7,3},{1,5,6,2,7,3},{1,6,5,2,7,3},{6,1,5,2,7,3},{6,5,1,2,7,3},{6,1,7,3,4,6},{6,7,1,3,4,5},{6,7,1,3,4,2},{6,7,1,3,4,1},{6,7,1,3,4,6},{7,6,1,3,4,5},{7,6,1,3,4,7},{7,6,1,3,4,2},{7,6,1,3,4,1},{7,6,1,3,4,6},{7,1,6,3,4,7},{7,1,6,3,4,2},{7,1,6,3,4,1},{7,1,3,6,4,7},{7,1,3,6,4,2},{7,1,3,6,4,1},{7,1,3,6,4,6},{7,1,3,4,6,7},{7,1,3,4,6,6},{7,3,1,4,6,7},{7,3,1,4,6,1},{7,3,1,4,6,6},{7,3,1,6,4,5},{7,3,1,6,4,7},{7,3,1,6,4,2},{7,3,1,6,4,6},{7,3,6,1,4,5},{7,3,6,1,4,7},{7,3,6,1,4,2},{7,3,6,1,4,1},{7,3,6,1,4,6},{7,6,3,1,4,5},{7,6,3,1,4,7},{7,6,3,1,4,2},{7,6,3,1,4,1},{7,6,3,1,4,6},{6,7,3,1,4,5},{6,7,3,1,4,7},{6,7,3,1,4,2},{6,7,3,1,4,6},{6,7,3,4,1,5},{6,7,3,4,1,7},{6,7,3,4,1,2},{6,7,3,4,1,6},{7,6,3,4,1,5},{7,6,3,4,1,7},{7,6,3,4,1,2},{7,6,3,4,1,6},{7,3,6,4,1,5},{7,3,6,4,1,7},{7,3,6,4,1,2},{7,3,6,4,1,6},{7,3,4,6,1,5},{7,3,4,6,1,7},{7,3,4,6,1,2},{7,3,4,6,1,6},{7,3,4,1,6,5},{7,3,4,1,6,7},{7,3,4,1,6,2},{7,3,4,1,6,6},{6,3,1,7,4,5},{6,1,3,7,4,5},{6,1,3,7,4,2},{6,1,3,7,4,6},{6,1,3,4,5,5},{1,6,3,7,4,5},{6,1,3,4,5,7},{6,1,3,4,5,4},{6,1,3,4,5,3},{1,6,3,7,4,2},{1,6,3,7,4,6},{1,3,6,7,4,5},{6,3,1,4,5,5},{6,3,1,4,5,7},{6,3,1,4,5,3},{1,3,6,7,4,6},{1,3,7,6,4,5},{3,6,1,4,5,7},{1,3,7,6,4,7},{3,6,1,4,5,3},{1,3,7,6,4,6},{1,3,7,4,6,7},{3,1,6,4,5,3},{1,3,7,4,6,6},{3,1,4,6,5,7},{3,1,4,6,5,4},{3,1,4,6,5,3},{1,3,4,7,6,6},{1,3,4,6,7,5},{3,1,4,5,6,5},{3,1,4,5,6,7},{3,1,4,5,6,4},{3,1,4,5,6,3},{1,3,4,6,7,6},{3,4,1,5,6,5},{3,4,1,5,6,4},{1,3,6,4,7,6},{1,6,3,4,7,5},{3,4,1,6,5,5},{3,4,1,6,5,4},{1,6,3,4,7,2},{1,6,3,4,7,6},{6,1,3,4,7,5},{3,4,6,1,5,5},{3,4,6,1,5,3},{6,1,3,4,7,2},{6,1,3,4,7,6},{3,4,6,1,5,6},{6,3,1,4,7,5},{3,6,4,1,5,5},{6,3,1,4,7,7},{3,6,4,1,5,3},{6,3,1,4,7,2},{6,3,1,4,7,6},{6,3,4,1,5,5},{3,6,1,4,7,5},{3,6,1,4,7,7},{3,6,1,4,7,2},{3,6,1,4,7,6},{6,3,4,5,1,5},{3,1,6,4,7,7},{3,6,4,5,1,5},{3,1,6,4,7,6},{3,1,4,6,7,5},{3,1,4,6,7,2},{3,1,4,6,7,1},{3,4,6,5,1,5},{3,1,4,6,7,6},{3,1,4,7,6,7},{3,1,4,7,6,2},{3,1,4,7,6,1},{3,4,5,6,1,5},{3,1,4,7,6,6},{3,4,1,7,6,7},{3,4,1,7,6,2},{3,4,5,1,6,5},{3,4,1,7,6,1},{3,4,1,7,6,6},{3,4,1,6,7,2},{4,3,5,1,6,5},{3,4,1,6,7,1},{3,4,1,6,7,6},{3,4,6,1,7,2},{3,4,6,1,7,1},{3,4,6,1,7,6},{3,6,4,1,7,7},{3,6,4,1,7,2},{3,6,4,1,7,1},{3,6,4,1,7,6},{6,3,4,1,7,5},{6,3,4,1,7,7},{6,3,4,1,7,2},{5,6,1,2,7,3},{5,1,6,2,7,3},{5,1,2,6,7,4},{5,1,2,6,7,3},{5,1,2,7,6,4},{5,1,2,7,6,3},{5,7,4,2,6,5},{5,7,4,2,6,7},{5,7,4,6,2,5},{5,7,4,6,2,7},{5,7,6,4,2,3},{6,5,7,4,2,3},{6,5,7,2,4,3},{5,6,7,2,4,4},{5,6,7,2,4,3},{5,7,6,2,4,4},{5,7,6,2,4,3},{5,7,2,6,4,3},{5,7,2,4,6,5},{5,2,7,4,6,5},{5,2,7,4,6,3},{5,2,7,6,4,5},{5,2,7,6,4,3},{5,2,6,7,4,5},{5,2,6,7,4,3},{5,6,2,7,4,5},{5,6,2,7,4,3},{6,5,2,7,4,5},{6,5,2,7,4,4},{6,5,2,7,4,3},{6,2,5,7,4,5},{6,2,5,7,4,7},{6,2,5,7,4,4},{6,2,5,7,4,1},{6,2,5,7,4,6},{2,6,5,7,4,5},{2,1,6,5,7,4},{2,6,5,7,4,7},{2,1,6,5,7,3},{2,6,5,7,4,4},{2,6,5,7,4,1},{2,6,5,7,4,6},{2,5,6,7,4,5},{2,6,1,5,7,4},{2,5,6,7,4,7},{2,6,1,5,7,3},{2,5,6,7,4,4},{2,5,6,7,4,3},{2,5,6,7,4,1},{2,5,6,7,4,6},{2,5,7,6,4,5},{6,2,1,5,7,4},{2,5,7,6,4,7},{6,2,1,5,7,3},{2,5,7,6,4,4},{2,5,7,6,4,3},{2,5,7,6,4,1},{2,5,7,6,4,6},{2,5,7,4,6,5},{2,5,7,4,6,3},{2,5,7,4,6,1},{2,5,4,7,6,5},{2,5,4,6,7,4},{2,5,6,4,7,5},{2,5,6,4,7,4},{2,5,6,4,7,1},{4,3,5,6,1,5},{6,3,4,1,7,6},{6,3,4,7,1,5},{6,3,4,7,1,7},{4,3,6,5,1,5},{6,3,4,7,1,2},{6,3,4,7,1,6},{4,6,3,5,1,5},{3,6,4,7,1,7},{3,6,4,7,1,2},{3,6,4,7,1,1},{3,6,4,7,1,6},{3,4,6,7,1,5},{6,4,3,5,1,5},{3,4,6,7,1,7},{3,4,6,7,1,2},{3,4,6,7,1,1},{3,4,6,7,1,6},{6,4,3,1,5,5},{3,4,7,6,1,5},{3,4,7,6,1,7},{3,4,7,6,1,2},{6,4,3,1,5,6},{3,4,7,6,1,1},{4,6,3,1,5,5},{3,4,7,6,1,6},{3,4,7,1,6,5},{3,4,7,1,6,7},{4,6,3,1,5,3},{3,4,7,1,6,2},{4,6,3,1,5,6},{4,3,6,1,5,5},{3,4,7,1,6,1},{3,4,7,1,6,6},{4,3,7,1,6,5},{4,3,6,1,5,3},{4,3,7,1,6,7},{4,3,6,1,5,6},{4,3,1,6,5,5},{4,3,7,1,6,2},{4,3,7,1,6,1},{4,3,1,6,5,4},{4,3,7,1,6,6},{4,3,1,6,5,3},{4,3,7,6,1,5},{4,3,7,6,1,7},{4,3,1,5,6,5},{4,3,7,6,1,2},{4,3,1,5,6,4},{4,3,7,6,1,1},{4,3,7,6,1,6},{4,3,1,5,6,3},{4,3,6,7,1,5},{4,3,6,7,1,7},{4,1,3,5,6,5},{4,1,3,5,6,4},{4,3,6,7,1,2},{4,1,3,5,6,3},{4,3,6,7,1,1},{4,3,6,7,1,6},{4,6,3,7,1,5},{4,6,3,7,1,7},{4,1,3,6,5,5},{4,1,3,6,5,4},{4,1,3,6,5,3},{4,6,3,7,1,2},{4,6,3,7,1,1},{4,6,3,7,1,6},{4,1,6,3,5,5},{6,4,3,7,1,5},{6,4,3,7,1,7},{4,1,6,3,5,4},{4,1,6,3,5,3},{6,4,3,7,1,2},{6,4,3,7,1,6},{6,4,3,1,7,5},{4,6,1,3,5,5},{6,4,3,1,7,7},{4,6,1,3,5,4},{6,4,3,1,7,2},{4,6,1,3,5,3},{6,4,3,1,7,6},{4,6,3,1,7,5},{6,4,1,3,5,5},{4,6,3,1,7,7},{6,4,1,3,5,7},{6,4,1,3,5,4},{4,6,3,1,7,2},{4,6,3,1,7,1},{4,6,3,1,7,6},{6,1,4,3,5,5},{6,1,4,3,5,7},{6,1,4,3,5,4},{6,1,4,3,5,3},{4,3,6,1,7,2},{4,3,6,1,7,1},{1,6,4,3,5,5},{4,3,6,1,7,6},{1,6,4,3,5,7},{1,6,4,3,5,3},{4,3,1,6,7,2},{1,4,6,3,5,5},{4,3,1,6,7,1},{1,4,6,3,5,7},{4,3,1,6,7,6},{1,4,6,3,5,3},{4,3,1,7,6,7},{4,3,1,7,6,2},{1,4,3,6,5,7},{4,3,1,7,6,1},{1,4,3,6,5,3},{4,3,1,7,6,6},{4,1,3,7,6,7},{1,4,3,5,6,5},{1,4,3,5,6,7},{1,4,3,5,6,3},{4,1,3,7,6,1},{4,1,3,7,6,6},{1,4,5,3,6,5},{1,4,5,3,6,7},{4,1,3,6,7,7},{1,4,5,3,6,4},{1,4,5,3,6,3},{1,4,5,3,6,2},{4,1,3,6,7,1},{4,1,3,6,7,6},{4,1,6,3,7,5},{1,4,5,6,3,5},{4,1,6,3,7,7},{1,4,5,6,3,7},{1,4,5,6,3,4},{1,4,5,6,3,3},{4,1,6,3,7,1},{1,4,5,6,3,2},{4,1,6,3,7,6},{4,6,1,3,7,5},{4,6,1,3,7,7},{1,4,6,5,3,5},{4,6,1,3,7,2},{4,6,1,3,7,1},{1,4,6,5,3,3},{4,6,1,3,7,6},{6,4,1,3,7,5},{6,4,1,3,7,7},{1,6,4,5,3,5},{1,6,4,5,3,7},{6,4,1,3,7,2},{1,6,4,5,3,4},{6,4,1,3,7,6},{6,1,4,3,7,5},{6,1,4,5,3,5},{6,1,4,3,7,2},{6,1,4,5,3,7},{6,1,4,5,3,4},{6,1,4,3,7,6},{6,1,4,5,3,3},{1,6,4,3,7,5},{6,4,1,5,3,5},{1,6,4,3,7,2},{6,4,1,5,3,7},{1,6,4,3,7,6},{6,4,1,5,3,4},{1,4,6,3,7,5},{6,4,1,5,3,3},{1,4,6,3,7,2},{4,6,1,5,3,5},{1,4,6,3,7,6},{4,6,1,5,3,7},{1,4,3,6,7,5},{4,6,1,5,3,4},{4,6,1,5,3,3},{4,1,6,5,3,5},{1,4,3,6,7,6},{4,1,6,5,3,4},{4,1,6,5,3,3},{4,1,5,6,3,5},{1,4,3,7,6,6},{4,1,5,6,3,7},{1,4,7,3,6,7},{4,1,5,6,3,4},{4,1,5,6,3,3},{4,1,5,6,3,2},{4,1,5,3,6,5},{1,4,7,3,6,6},{4,1,5,3,6,7},{4,1,5,3,6,4},{4,1,5,3,6,3},{4,1,5,3,6,2},{1,4,7,6,3,1},{1,4,7,6,3,6},{4,5,1,3,6,5},{4,5,1,3,6,2},{1,4,6,7,3,6},{4,5,1,6,3,5},{4,5,1,6,3,4},{4,5,1,6,3,2},{1,6,4,7,3,6},{6,1,4,7,3,5},{4,5,6,1,3,5},{4,5,6,1,3,4},{4,5,6,1,3,2},{6,1,4,7,3,6},{6,4,1,7,3,5},{4,6,5,1,3,5},{6,4,1,7,3,7},{4,6,5,1,3,4},{4,6,5,1,3,2},{6,4,1,7,3,6},{4,6,1,7,3,5},{4,6,1,7,3,7},{6,4,5,1,3,5},{6,4,5,1,3,7},{6,4,5,1,3,3},{4,6,1,7,3,1},{4,6,1,7,3,6},{4,1,6,7,3,5},{4,1,6,7,3,7},{6,4,5,3,1,5},{6,4,5,3,1,7},{4,1,6,7,3,1},{4,1,6,7,3,6},{6,4,5,3,1,2},{4,1,7,6,3,5},{4,1,7,6,3,7},{4,6,5,3,1,5},{4,1,7,6,3,1},{4,6,5,3,1,2},{4,1,7,6,3,6},{4,1,7,3,6,7},{4,5,6,3,1,5},{4,1,7,3,6,2},{4,5,6,3,1,2},{4,1,7,3,6,1},{4,1,7,3,6,6},{4,7,1,3,6,5},{4,5,3,6,1,5},{4,7,1,3,6,7},{4,5,3,6,1,2},{4,7,1,3,6,2},{4,5,3,1,6,5},{4,7,1,3,6,6},{4,7,1,6,3,5},{4,7,1,6,3,7},{4,7,1,6,3,2},{4,7,1,6,3,6},{4,7,6,1,3,5},{4,7,6,1,3,7},{4,7,6,1,3,6},{4,6,7,1,3,5},{4,6,7,1,3,7},{5,4,6,3,2,5},{4,6,7,1,3,2},{4,6,7,1,3,6},{6,4,7,1,3,5},{6,4,7,1,3,7},{6,4,7,1,3,2},{5,6,4,3,2,5},{6,4,7,1,3,1},{6,4,7,1,3,6},{6,4,7,3,1,5},{6,4,7,3,1,7},{6,5,4,3,2,5},{6,4,7,3,1,2},{6,4,7,3,1,6},{4,6,7,3,1,5},{6,5,4,3,2,1},{4,6,7,3,1,7},{6,5,4,2,3,5},{6,5,4,2,3,7},{4,6,7,3,1,2},{4,6,7,3,1,6},{6,5,4,2,3,1},{6,5,4,2,3,6},{4,7,6,3,1,5},{5,6,4,2,3,5},{4,7,6,3,1,7},{5,6,4,2,3,7},{4,7,6,3,1,2},{5,6,4,2,3,6},{4,7,3,6,1,5},{5,4,6,2,3,5},{4,7,3,6,1,7},{5,4,6,2,3,7},{5,4,6,2,3,4},{4,7,3,6,1,2},{4,7,3,6,1,1},{4,7,3,1,6,5},{4,7,3,1,6,7},{4,7,3,1,6,2},{5,4,6,2,3,6},{4,7,3,1,6,6},{5,4,2,6,3,5},{5,4,2,6,3,7},{5,4,2,6,3,4},{5,4,2,6,3,6},{5,4,2,3,6,7},{5,4,2,3,6,4},{5,2,4,3,6,7},{5,2,4,6,3,5},{5,2,4,6,3,7},{5,2,4,6,3,6},{5,2,6,4,3,5},{5,2,6,4,3,7},{5,2,6,4,3,4},{5,2,6,4,3,6},{5,6,2,4,3,5},{5,6,2,4,3,7},{5,6,2,4,3,4},{2,7,6,5,1,4},{2,7,5,6,1,4},{2,7,5,1,6,4},{7,2,5,1,6,4},{7,2,5,6,1,4},{7,2,6,5,1,4},{7,6,2,5,1,4},{5,6,2,4,3,6},{6,5,2,4,3,5},{6,5,2,4,3,7},{6,5,2,4,3,4},{6,5,2,4,3,6},{6,2,5,4,3,5},{6,2,5,4,3,4},{2,6,5,4,3,5},{2,6,5,4,3,4},{2,5,6,4,3,5},{2,5,6,4,3,4},{2,5,4,6,3,4},{2,5,4,3,6,5},{2,5,4,3,6,7},{2,5,4,3,6,4},{2,5,3,4,6,5},{2,5,3,4,6,7},{2,5,3,4,6,4},{2,5,3,4,6,3},{2,5,3,4,6,1},{2,5,3,6,4,5},{2,5,3,6,4,7},{2,5,3,6,4,4},{2,5,3,6,4,3},{2,5,3,6,4,1},{2,5,6,3,4,5},{2,5,6,3,4,7},{2,5,6,3,4,4},{2,5,6,3,4,3},{2,6,5,3,4,5},{2,6,5,3,4,7},{2,6,5,3,4,4},{2,6,5,3,4,3},{6,2,5,3,4,5},{6,2,5,3,4,7},{6,2,5,3,4,4},{6,2,5,3,4,3},{6,5,2,3,4,5},{6,5,2,3,4,4},{5,6,2,3,4,5},{5,6,2,3,4,4},{5,2,6,3,4,5},{5,2,6,3,4,4},{5,2,3,6,4,5},{5,2,3,4,6,7},{5,3,2,6,4,3},{5,3,6,2,4,3},{5,6,3,2,4,5},{5,6,3,2,4,7},{5,6,3,2,4,4},{6,5,3,2,4,5},{6,5,3,2,4,7},{6,5,3,2,4,4},{6,5,3,4,2,5},{6,5,3,4,2,7},{6,5,3,4,2,1},{5,6,3,4,2,5},{5,6,3,4,2,7},{2,6,4,3,5,5},{2,6,4,3,5,7},{2,6,4,3,5,4},{2,4,6,3,5,4},{2,4,3,6,5,7},{2,4,3,6,5,4},{2,4,3,5,6,5},{2,4,3,5,6,7},{2,4,3,5,6,4},{2,4,5,3,6,5},{2,4,5,3,6,4},{2,4,5,6,3,4},{2,4,6,5,3,4},{2,6,4,5,3,5},{2,6,4,5,3,4},{6,2,4,5,3,5},{6,2,4,5,3,4},{6,4,2,5,3,5},{6,4,2,5,3,4},{4,6,2,5,3,4},{4,2,6,5,3,4},{4,2,5,6,3,4},{4,2,5,3,6,5},{4,2,5,3,6,4},{4,5,2,3,6,7},{4,5,2,3,6,4},{4,5,2,3,6,2},{4,5,2,6,3,7},{4,5,2,6,3,4},{4,5,2,6,3,2},{4,5,6,2,3,5},{4,5,6,2,3,7},{4,5,6,2,3,4},{4,5,6,2,3,2},{4,6,5,2,3,5},{4,6,5,2,3,7},{4,6,5,2,3,4},{4,6,5,2,3,2},{4,6,5,2,3,1},{6,4,5,2,3,5},{6,4,5,2,3,7},{6,4,5,2,3,1},{6,4,5,3,2,1},{4,6,5,3,2,5},{4,6,5,3,2,1},{4,5,6,3,2,5},{4,5,3,6,2,5},{4,5,3,2,6,5},{5,4,3,2,1,5},{5,4,3,1,2,5},{5,4,1,3,2,5},{5,1,4,3,2,2},{5,1,4,3,2,1},{1,5,4,3,2,4},{1,5,4,3,2,3},{1,5,4,3,2,2},{1,5,4,3,2,6},{1,5,4,2,3,7},{1,5,4,2,3,4},{1,5,4,2,3,3},{1,5,4,2,3,2},{1,5,4,2,3,1},{1,5,4,2,3,6},{5,1,4,2,3,4},{5,1,4,2,3,2},{5,1,4,2,3,1},{5,4,1,2,3,5},{5,4,1,2,3,2},{5,4,1,2,3,6},{5,4,2,1,3,7},{5,4,2,1,3,2},{5,4,2,1,3,6},{5,4,2,3,1,7},{5,4,2,3,1,2},{5,4,2,3,1,6},{5,2,4,3,1,7},{5,2,4,3,1,2},{5,2,4,3,1,6},{5,2,4,1,3,7},{5,2,4,1,3,4},{5,2,4,1,3,2},{5,2,4,1,3,6},{5,2,1,4,3,4},{5,2,1,4,3,3},{5,2,1,4,3,2},{5,2,1,4,3,1},{5,2,1,4,3,6},{5,1,2,4,3,4},{5,1,2,4,3,3},{5,1,2,4,3,2},{5,1,2,4,3,1},{1,5,2,4,3,4},{1,5,2,4,3,3},{1,5,2,4,3,2},{1,5,2,4,3,1},{1,5,2,4,3,6},{1,2,5,4,3,7},{1,2,5,4,3,4},{1,2,5,4,3,3},{1,2,5,4,3,2},{1,2,5,4,3,6},{2,1,5,4,3,4},{2,1,5,4,3,3},{2,5,1,4,3,4},{2,5,1,4,3,3},{2,5,4,1,3,7},{2,5,4,1,3,4},{2,5,4,1,3,3},{2,5,4,3,1,7},{3,5,1,4,2,7},{3,5,1,4,2,3},{3,5,1,4,2,1},{3,1,5,4,2,7},{3,1,5,4,2,3},{7,6,1,2,3,4},{3,1,5,4,2,1},{7,6,1,2,3,3},{1,3,5,4,2,7},{1,3,5,4,2,3},{7,1,6,2,3,4},{7,1,6,2,3,3},{1,3,5,2,4,5},{1,3,5,2,4,7},{1,3,5,2,4,4},{1,3,5,2,4,3},{7,1,2,6,3,4},{7,1,2,6,3,3},{3,1,5,2,4,5},{3,1,5,2,4,7},{3,1,5,2,4,4},{3,1,5,2,4,3},{7,1,2,3,6,3},{3,5,1,2,4,5},{3,5,1,2,4,7},{7,2,1,3,6,4},{3,5,2,1,4,5},{3,5,2,1,4,7},{7,2,1,6,3,4},{3,5,2,1,4,6},{7,2,1,6,3,3},{3,2,5,4,1,5},{7,2,6,1,3,4},{7,2,6,1,3,3},{7,6,2,1,3,4},{7,6,2,1,3,3},{6,7,2,1,3,3},{6,7,2,3,1,3},{7,6,2,3,1,4},{7,6,2,3,1,3},{7,2,6,3,1,4},{7,2,6,3,1,3},{7,2,3,6,1,4},{7,2,3,6,1,3},{7,2,3,1,6,4},{2,7,3,1,6,4},{2,7,3,6,1,4},{2,7,6,3,1,4},{6,2,7,3,1,3},{6,2,7,1,3,3},{2,7,6,1,3,4},{2,7,1,6,3,4},{2,7,1,3,6,4},{1,2,6,7,3,4},{1,2,6,7,3,3},{1,2,7,6,3,4},{1,2,7,6,3,3},{1,2,7,3,6,4},{1,2,7,3,6,3},{3,2,5,4,1,3},{3,2,5,1,4,5},{3,2,5,1,4,7},{3,2,5,1,4,4},{3,2,5,1,4,3},{3,2,5,1,4,2},{3,2,5,1,4,1},{3,2,5,1,4,6},{3,2,1,5,4,5},{3,2,1,5,4,7},{3,2,1,5,4,4},{3,2,1,5,4,3},{3,1,2,5,4,7},{3,1,2,5,4,4},{3,1,2,5,4,3},{1,3,2,5,4,4},{1,3,2,5,4,3},{1,2,3,5,4,4},{1,2,3,5,4,3},{2,1,3,5,4,7},{2,1,3,5,4,4},{2,1,3,5,4,3},{2,3,1,5,4,7},{2,3,1,5,4,4},{2,3,1,5,4,3},{2,3,5,1,4,7},{2,3,5,1,4,4},{2,3,5,1,4,3},{2,3,5,1,4,2},{2,3,5,1,4,1},{2,3,5,1,4,6},{2,3,5,4,1,4},{2,3,5,4,1,3},{2,3,5,4,1,1},{2,3,5,4,1,6},{2,3,4,5,1,3},{2,3,4,1,5,3},{2,3,1,4,5,4},{1,3,2,4,5,4},{1,3,2,4,5,3},{3,1,2,4,5,4},{3,1,2,4,5,3},{3,2,1,4,5,5},{3,2,1,4,5,4},{3,2,1,4,5,3},{3,2,1,4,5,2},{3,2,1,4,5,1},{3,2,4,1,5,5},{3,2,4,1,5,3},{3,2,4,1,5,2},{3,2,4,1,5,1},{3,2,4,5,1,5},{3,4,2,5,1,5},{3,4,2,5,1,3},{3,4,2,5,1,2},{3,4,2,1,5,5},{3,4,2,1,5,3},{3,4,2,1,5,2},{3,4,2,1,5,1},{3,4,1,2,5,5},{3,4,1,2,5,4},{3,4,1,2,5,2},{3,4,1,2,5,1},{3,1,4,2,5,4},{3,1,4,2,5,1},{1,3,4,2,5,4},{1,3,4,5,2,4},{3,1,4,5,2,4},{3,1,4,5,2,1},{3,4,1,5,2,5},{3,4,1,5,2,4},{3,4,1,5,2,1},{3,4,5,1,2,5},{3,4,5,2,1,5},{7,4,2,1,6,4},{4,3,2,1,6,5},{4,3,2,1,6,7},{4,3,2,6,1,5},{4,3,2,6,1,7},{4,3,2,6,1,2},{4,3,6,2,1,5},{4,3,6,2,1,7},{4,3,6,2,1,2},{4,6,3,2,1,5},{4,6,3,2,1,7},{6,4,3,2,1,7},{6,4,3,1,2,7},{4,6,3,1,2,5},{4,6,3,1,2,7},{4,6,3,1,2,1},{4,3,6,1,2,5},{4,3,6,1,2,7},{4,3,6,1,2,1},{4,3,1,6,2,5},{4,3,1,6,2,7},{4,3,1,6,2,1},{4,3,1,2,6,5},{4,3,1,2,6,7},{6,7,4,1,2,4},{6,7,4,1,2,3},{4,1,3,2,6,5},{4,1,3,2,6,7},{7,6,4,1,2,4},{4,1,3,6,2,5},{4,1,3,6,2,7},{4,1,3,6,2,1},{7,4,6,1,2,4},{4,1,6,3,2,5},{4,1,6,3,2,7},{4,1,6,3,2,1},{4,6,1,3,2,5},{4,6,1,3,2,7},{7,4,1,6,2,4},{7,4,1,6,2,3},{4,6,1,3,2,1},{6,4,1,3,2,7},{7,4,1,2,6,3},{6,1,4,3,2,5},{6,1,4,3,2,7},{1,6,4,3,2,5},{1,6,4,3,2,7},{1,4,6,3,2,5},{1,4,6,3,2,7},{1,4,2,6,3,5},{1,4,6,2,3,5},{1,6,4,2,3,5},{6,1,4,2,3,5},{6,4,1,2,3,5},{6,7,2,1,4,4},{7,2,4,1,6,4},{2,7,4,1,6,4},{2,7,4,1,6,3},{2,7,4,6,1,4},{2,7,4,6,1,3},{2,7,6,4,1,3},{4,2,1,6,3,7},{4,6,2,1,3,7},{6,4,2,1,3,7},{6,2,7,1,4,4},{6,4,2,3,1,5},{6,4,2,3,1,7},{2,6,7,1,4,4},{4,6,2,3,1,7},{2,7,6,1,4,4},{2,7,6,1,4,3},{2,7,1,6,4,4},{2,7,1,6,4,3},{4,2,3,6,1,7},{2,7,1,4,6,4},{2,7,1,4,6,3},{4,2,3,1,6,7},{2,6,4,3,1,5},{2,6,4,3,1,7},{6,2,4,3,1,5},{6,2,4,3,1,7},{6,2,4,1,3,7},{2,1,4,6,3,5},{2,1,6,4,3,5},{2,6,1,4,3,5},{6,2,1,4,3,5},{6,2,1,4,3,7},{6,1,2,4,3,5},{1,6,2,4,3,5},{1,2,6,4,3,5},{1,2,4,6,3,5}}, } diff --git a/parts/modes/blind_wtf.lua b/parts/modes/blind_wtf.lua index 88ac1e01..f9c4e531 100644 --- a/parts/modes/blind_wtf.lua +++ b/parts/modes/blind_wtf.lua @@ -26,7 +26,7 @@ return{ GC.clear(.2,.2,.2) GC.setColor(.5,.5,.5) - --Frame & Username + -- Frame & Username GC.setColor(.8,.8,.8) GC.setLineWidth(2) GC.rectangle('line',12,20,100,80,5) @@ -38,13 +38,13 @@ return{ GC.pop() end - --Figures + -- Figures local t=TIME() GC.setColor(1,1,1,.5+.2*sin(t)) GC.draw(IMG.hbm,-276,-86,0,1.5) GC.draw(IMG.electric,476,152,0,2.6) - --Texts + -- Texts GC.setColor(.8,.8,.8) mText(TEXTOBJ.techrash,63,420) setFont(75) diff --git a/parts/modes/custom_clear.lua b/parts/modes/custom_clear.lua index e5eba697..bce04814 100644 --- a/parts/modes/custom_clear.lua +++ b/parts/modes/custom_clear.lua @@ -3,7 +3,7 @@ return{ load=function() applyCustomGame() - --Switch clear sprint mode on + -- Switch clear sprint mode on if #FIELD[1]>0 then GAME.modeEnv.hook_drop=require'parts.eventsets.checkClearBoard'.hook_drop else diff --git a/parts/modes/drought_l.lua b/parts/modes/drought_l.lua index 0171aeff..53aa3bcd 100644 --- a/parts/modes/drought_l.lua +++ b/parts/modes/drought_l.lua @@ -10,7 +10,7 @@ return{ local height=TABLE.new(0,10) local max=#P.field if max>0 then - --Get heights + -- Get heights for x=1,10 do local h=max while P.field[h][x]==0 and h>1 do @@ -30,15 +30,15 @@ return{ for i=1,10 do d=d+height[i] end - if d<40 or P.stat.row>2*42 then--Low field or almost win, give SZO + if d<40 or P.stat.row>2*42 then-- Low field or almost win, give SZO for _=1,4 do ins(wei,1) ins(wei,2) ins(wei,6) end else - --Give I when no hole - local tempDeltaHei=-999--Height difference + -- Give I when no hole + local tempDeltaHei=-999-- Height difference for x=2,11 do local deltaHei=height[x]-height[x-1] if tempDeltaHei<-2 and deltaHei>2 then @@ -50,9 +50,9 @@ return{ end end - --Give O when no d=0/give T when no d=1 - local flatCount=0--d=0 count - local stairCount=0--d=1 count + -- Give O when no d=0/give T when no d=1 + local flatCount=0-- d=0 count + local stairCount=0-- d=1 count for x=2,10 do local _=height[x]-height[x-1] if _==0 then diff --git a/parts/net.lua b/parts/net.lua index e8a4271b..5c3dcc8e 100644 --- a/parts/net.lua +++ b/parts/net.lua @@ -5,7 +5,7 @@ local NET={ accessToken=false, cloudData={}, - roomState={--A copy of room structure on server + roomState={-- A copy of room structure on server info={ name=false, type=false, @@ -17,8 +17,8 @@ local NET={ private=false, start=false, }, - spectate=false,--If player is spectating - specSRID=false,--Cached SRID when enter playing room, for connect WS after scene swapped + spectate=false,-- If player is spectating + specSRID=false,-- Cached SRID when enter playing room, for connect WS after scene swapped seed=false, roomReadyState=false, @@ -293,18 +293,16 @@ local function wsSend(act,data) }) end ---Room +-- Room NET.room={} function NET.room.chat(mes,rid) wsSend(1300,{ message=mes, - roomId=rid,--Admin + roomId=rid,-- Admin }) end function NET.room.create(roomName,description,capacity,roomType,roomData,password) - if not TASK.lock('enterRoom',2) then return end - NET.roomState.private=not not password - NET.roomState.capacity=capacity + if not TASK.lock('enterRoom',6) then return end wsSend(1301,{ capacity=capacity, info={ @@ -314,84 +312,86 @@ function NET.room.create(roomName,description,capacity,roomType,roomData,passwor description=description, }, data=roomData, - password=password, }) + WAIT{ + quit=function() + TASK.unlock('enterRoom') + end, + timeout=1e99, + } end function NET.room.getData(rid) wsSend(1302,{ - roomId=rid,--Admin + roomId=rid,-- Admin }) end function NET.room.setData(data,rid) wsSend(1303,{ data=data, - roomId=rid,--Admin + roomId=rid,-- Admin }) end function NET.room.getInfo(rid) wsSend(1304,{ - roomId=rid,--Admin + roomId=rid,-- Admin }) end function NET.room.setInfo(info,rid) wsSend(1305,{ info=info, - roomId=rid,--Admin + roomId=rid,-- Admin }) end function NET.room.enter(rid,password) - if TASK.lock('enterRoom',6) then - SFX.play('reach',.6) - wsSend(1306,{ - data={ - roomId=rid, - password=password, - } - }) - end + if not TASK.lock('enterRoom',6) then return end + SFX.play('reach',.6) + wsSend(1306,{ + data={ + roomId=rid, + password=password, + } + }) end function NET.room.kick(pid,rid) wsSend(1307,{ - playerId=pid,--Host - roomId=rid,--Admin + playerId=pid,-- Host + roomId=rid,-- Admin }) end function NET.room.leave() wsSend(1308) end function NET.room.fetch() - if TASK.lock('fetchRoom',3) then - wsSend(1309,{ - data={ - pageIndex=0, - pageSize=26, - } - }) - end + if not TASK.lock('fetchRoom',3) then return end + wsSend(1309,{ + data={ + pageIndex=0, + pageSize=26, + } + }) end function NET.room.setPW(pw,rid) - if TASK.lock('fetchRoom',3) then - wsSend(1310,{ - data={ - password=pw, - roomId=rid,--Admin - } - }) - end + if not TASK.lock('setRoomPW',2) then return end + wsSend(1310,{ + data={ + password=pw, + roomId=rid,-- Admin + } + }) end function NET.room.remove(rid) wsSend(1311,{ - roomId=rid--Admin + roomId=rid-- Admin }) end ---Player +-- Player NET.player={} function NET.player.updateConf() wsSend(1200,dumpBasicConfig()) end -function NET.player.finish(mes)--what mes? +function NET.player.finish(mes)-- what mes? wsSend(1201,mes) end function NET.player.joinGroup(gid) @@ -416,7 +416,7 @@ function NET.player.setPlaying(playing) wsSend(1207,playing and 'Gamer' or 'Spectator') end ---WS +-- WS function NET.connectWS() if WS.status('game')=='dead' then WS.connect('game','',{['x-access-token']=USER.aToken},6) @@ -450,26 +450,34 @@ function NET.updateWS() elseif res.action==1100 then-- TODO elseif res.action==1101 then-- TODO elseif res.action==1102 then-- TODO - elseif res.action==1201 then-- TODO - elseif res.action==1202 then-- TODO - elseif res.action==1203 then-- TODO - elseif res.action==1204 then-- TODO - elseif res.action==1205 then-- TODO - elseif res.action==1206 then-- TODO - elseif res.action==1207 then-- TODO - elseif res.action==1301 then-- TODO - elseif res.action==1302 then-- TODO - elseif res.action==1303 then-- TODO - elseif res.action==1304 then-- TODO - elseif res.action==1305 then-- TODO - elseif res.action==1306 then-- TODO - elseif res.action==1307 then-- TODO - elseif res.action==1308 then-- TODO - elseif res.action==1309 then--Fetch rooms + elseif res.action==1201 then-- Finish + elseif res.action==1202 then-- Join group + elseif res.action==1203 then-- Set ready + elseif res.action==1204 then-- Set host + elseif res.action==1205 then-- Set state + elseif res.action==1206 then-- Stream + elseif res.action==1207 then-- Set playing + elseif res.action==1301 then-- Create room + TASK.unlock('enterRoom') + -- NET.roomState=... + -- SCN.go('net_game') + WAIT.interrupt() + elseif res.action==1302 then-- Get room data + elseif res.action==1303 then-- Set room data + elseif res.action==1304 then-- Get room info + elseif res.action==1305 then-- Set room info + elseif res.action==1306 then-- Enter room + TASK.unlock('enterRoom') + -- NET.roomState=... + -- SCN.go('net_game') + WAIT.interrupt() + elseif res.action==1307 then-- Kick room + elseif res.action==1308 then-- Leave room + elseif res.action==1309 then-- Fetch rooms TASK.unlock('fetchRoom') if res.data then SCN.scenes.net_rooms.widgetList.roomList:setList(res.data) end - elseif res.action==1310 then-- TODO - elseif res.action==1311 then-- TODO + elseif res.action==1310 then-- Set password + elseif res.action==1311 then-- Remove room end else WS.alert('user') @@ -480,7 +488,7 @@ function NET.updateWS() end -------------------------- ---Account & User +-- Account & User function NET.getUserInfo(uid) wsSend({ data={ @@ -490,26 +498,24 @@ function NET.getUserInfo(uid) }) end ---Save +-- Save function NET.uploadSave() - if TASK.lock('uploadSave',8) then - wsSend({data={sections={ - {section=1,data=STRING.packTable(STAT)}, - {section=2,data=STRING.packTable(RANKS)}, - {section=3,data=STRING.packTable(SETTING)}, - {section=4,data=STRING.packTable(KEY_MAP)}, - {section=5,data=STRING.packTable(VK_ORG)}, - {section=6,data=STRING.packTable(loadFile('conf/vkSave1','-canSkip') or{})}, - {section=7,data=STRING.packTable(loadFile('conf/vkSave2','-canSkip') or{})}, - }}}) - MES.new('info',"Uploading") - end + if not TASK.lock('uploadSave',8) then return end + wsSend({data={sections={ + {section=1,data=STRING.packTable(STAT)}, + {section=2,data=STRING.packTable(RANKS)}, + {section=3,data=STRING.packTable(SETTING)}, + {section=4,data=STRING.packTable(KEY_MAP)}, + {section=5,data=STRING.packTable(VK_ORG)}, + {section=6,data=STRING.packTable(loadFile('conf/vkSave1','-canSkip') or{})}, + {section=7,data=STRING.packTable(loadFile('conf/vkSave2','-canSkip') or{})}, + }}}) + MES.new('info',"Uploading") end function NET.downloadSave() - if TASK.lock('downloadSave',8) then - wsSend({data={sections={1,2,3,4,5,6,7}}}) - MES.new('info',"Downloading") - end + if not TASK.lock('downloadSave',8) then return end + wsSend({data={sections={1,2,3,4,5,6,7}}}) + MES.new('info',"Downloading") end function NET.loadSavedData(sections) for _,sec in next,sections do diff --git a/parts/netPlayer.lua b/parts/netPlayer.lua index 3e798d5a..37b0f702 100644 --- a/parts/netPlayer.lua +++ b/parts/netPlayer.lua @@ -7,7 +7,7 @@ local ins,rem=table.insert,table.remove local setFont=FONT.set local posLists={ - --1~5 + -- 1~5 (function() local L={} for i=1,5 do @@ -15,7 +15,7 @@ local posLists={ end return L end)(), - --6~17 + -- 6~17 (function() local L={} for i=1,10 do @@ -26,7 +26,7 @@ local posLists={ end return L end)(), - --18~31 + -- 18~31 (function() local L={} for i=1,11 do L[i]= {x=40,y=65+50*i,w=330,h=45} end @@ -34,7 +34,7 @@ local posLists={ for i=1,9 do L[22+i]= {x=760,y=65+50*i,w=330,h=45} end return L end)(), - --32~49 + -- 32~49 (function() local L={} for i=1,10 do L[i]= {x=30,y=60+50*i,w=200,h=45} end @@ -44,7 +44,7 @@ local posLists={ for i=1,9 do L[40+i]= {x=870,y=60+50*i,w=200,h=45} end return L end)(), - --50~99 + -- 50~99 (function() local L={} for i=1,11 do L[i]= {x=30,y=60+50*i,w=100,h=45} end @@ -90,7 +90,7 @@ local function _freshPos() posList=posLists[3] elseif #PLYlist<=49 then posList=posLists[4] - else--if #PLY<=99 then + else-- if #PLY<=99 then posList=posLists[5] end end @@ -211,7 +211,7 @@ function NETPLY.draw() for i=1,#PLYlist do local p=PLYlist[i] gc_translate(p.x,p.y) - --Rectangle + -- Rectangle gc_setColor(COLOR[ p.mode==0 and 'lH' or p.mode==1 and 'N' or @@ -225,17 +225,17 @@ function NETPLY.draw() gc_rectangle('fill',0,0,p.w,p.h) end - --Stencil + -- Stencil stencilW,stencilH=p.w,p.h gc_setStencilTest('equal',1) gc_stencil(_playerFrameStencil) gc_setColor(1,1,1) - --Avatar + -- Avatar local avatarSize=math.min(p.h,50)/128*.9 gc_draw(USERS.getAvatar(p.uid),2,2,nil,avatarSize) - --UID & Username + -- UID & Username if p.h>=47 then setFont(40) gc_print("#"..p.uid,50,-5) @@ -247,7 +247,7 @@ function NETPLY.draw() gc_print(p.username,p.h,8) end - --Stat + -- Stat local S=p.stat if S and (p.h>=55 or p.w>=180) then setFont(20) diff --git a/parts/player/draw.lua b/parts/player/draw.lua index 498e475c..ea5d4199 100644 --- a/parts/player/draw.lua +++ b/parts/player/draw.lua @@ -118,14 +118,14 @@ local function _stencilBoard() gc_rectangle('fill',0,-10,300,610) end local function _applyField(P) gc_push('transform') - --Apply shaking + -- Apply shaking if P.shakeTimer>0 then local dx=int(P.shakeTimer/2) local dy=int(P.shakeTimer/3) gc_translate(dx^1.6*(dx%2*2-1)*(P.gameEnv.shakeFX+1)/30,dy^1.4*(dy%2*2-1)*(P.gameEnv.shakeFX+1)/30) end - --Apply swingOffset + -- Apply swingOffset local O=P.swingOffset if P.gameEnv.shakeFX then local k=P.gameEnv.shakeFX @@ -136,11 +136,11 @@ local function _applyField(P) gc_translate(150,0) end - --Apply stencil + -- Apply stencil gc_stencil(_stencilBoard) gc_setStencilTest('equal',1) - --Move camera + -- Move camera gc_push('transform') _boardTransform(P.gameEnv.flipBoard) gc_translate(0,P.fieldBeneath+P.fieldUp) @@ -170,23 +170,23 @@ local function _drawField(P,showInvis) local V,F=P.visTime,P.field local start=int((P.fieldBeneath+P.fieldUp)/30+1) local texture=P.skinLib - if P.falling==0 then--Blocks only + if P.falling==0 then-- Blocks only if ENV.upEdge then gc_setShader(shader_lighter) gc_translate(0,-4) - -- + -- for j=start,min(start+21,#F) do _drawRow(texture,j,V[j],F[j]) end - -- + -- gc_setShader(shader_fieldSatur) gc_translate(0,4) else gc_setShader(shader_fieldSatur) end - -- + -- for j=start,min(start+21,#F) do _drawRow(texture,j,V[j],F[j],showInvis) end - -- - else--With falling animation + -- + else-- With falling animation local stepY=ENV.smooth and (P.falling/(ENV.fall+1))^1.6*30 or 30 local alpha=P.falling/ENV.fall local h=1 @@ -194,7 +194,7 @@ local function _drawField(P,showInvis) gc_push('transform') gc_setShader(shader_lighter) gc_translate(0,-4) - -- + -- for j=start,min(start+21,#F) do while j==P.clearingRow[h] do h=h+1 @@ -202,7 +202,7 @@ local function _drawField(P,showInvis) end _drawRow(texture,j,V[j],F[j]) end - -- + -- gc_setShader(shader_fieldSatur) gc_pop() h=1 @@ -211,7 +211,7 @@ local function _drawField(P,showInvis) end gc_push('transform') - -- + -- for j=start,min(start+21,#F) do while j==P.clearingRow[h] do h=h+1 @@ -221,13 +221,13 @@ local function _drawField(P,showInvis) end _drawRow(texture,j,V[j],F[j],showInvis) end - -- + -- gc_pop() end gc_setShader() end local function _drawFXs(P) - --LockFX + -- LockFX for i=1,#P.lockFX do local S=P.lockFX[i] if S[3]<.5 then @@ -239,7 +239,7 @@ local function _drawFXs(P) end end - --DropFX + -- DropFX for i=1,#P.dropFX do local S=P.dropFX[i] gc_setColor(1,1,1,.6-S[5]*.6) @@ -247,7 +247,7 @@ local function _drawFXs(P) gc_rectangle('fill',30*S[1]-30+15*S[3]-w*.5,-30*S[2],w,30*S[4]) end - --MoveFX + -- MoveFX local texture=P.skinLib for i=1,#P.moveFX do local S=P.moveFX[i] @@ -255,7 +255,7 @@ local function _drawFXs(P) gc_draw(texture[S[1]],30*S[2]-30,-30*S[3]) end - --ClearFX + -- ClearFX for i=1,#P.clearFX do local S=P.clearFX[i] local t=S[2] @@ -383,12 +383,12 @@ local function _drawBuffer(atkBuffer,bufferWarn,atkBufferSum1,atkBufferSum) local bar=A.amount*30 if h+bar>600 then bar=600-h end if not A.sent then - --Appear + -- Appear if A.time<20 then bar=bar*(20*A.time)^.5*.05 end if A.countdown>0 then - --Timing + -- Timing gc_setColor(attackColor[A.lv][1]) gc_rectangle('fill',303,600-h-bar,11,bar,2) gc_setColor(1,1,1) @@ -398,7 +398,7 @@ local function _drawBuffer(atkBuffer,bufferWarn,atkBufferSum1,atkBufferSum) gc_setColor(attackColor[A.lv][2]) gc_rectangle('fill',303,600-h-bar,11,bar*(1-A.countdown/A.cd0),2) else - --Warning + -- Warning local a=math.sin((TIME()-i)*30)*.5+.5 local c1,c2=attackColor[A.lv][1],attackColor[A.lv][2] gc_setColor(c1[1]*a+c2[1]*(1-a),c1[2]*a+c2[2]*(1-a),c1[3]*a+c2[3]*(1-a)) @@ -408,7 +408,7 @@ local function _drawBuffer(atkBuffer,bufferWarn,atkBufferSum1,atkBufferSum) gc_setColor(attackColor[A.lv][1]) bar=bar*(20-A.time)*.05 gc_rectangle('fill',303,600-h-bar,11,bar,2) - --Disappear + -- Disappear end h=h+bar end @@ -445,7 +445,7 @@ local function _drawB2Bbar(b2b,b2b1) end end end -local function _drawLDI(easyFresh,length,freshTime)--Lock Delay Indicator +local function _drawLDI(easyFresh,length,freshTime)-- Lock Delay Indicator if easyFresh then gc_setColor(.97,.97,.97) else @@ -506,7 +506,7 @@ local function _drawNext(P,repMode) gc_push('transform') gc_translate(50,40) - --Draw nexts + -- Draw nexts gc_setLineWidth(6) gc_setColor(1,1,1,.2) gc_setShader(shader_blockSatur) @@ -540,7 +540,7 @@ local function _drawNext(P,repMode) end gc_setShader() - --Draw more nexts + -- Draw more nexts if repMode then gc_translate(50,-28) local blockImg=TEXTURE.miniBlock @@ -564,7 +564,7 @@ local function _drawNext(P,repMode) end if ENV.bagLine then gc_setColor(.8,.8,.8,.8) - for i=-P.pieceCount%ENV.bagLine,N-1,ENV.bagLine do--i=phase + for i=-P.pieceCount%ENV.bagLine,N-1,ENV.bagLine do-- i=phase gc_rectangle('fill',1,72*i+3,98,2) end end @@ -624,7 +624,7 @@ local function _drawLife(life) end end local function _drawMission(curMission,L,missionkill) - --Draw current mission + -- Draw current mission setFont(35) if missionkill then gc_setColor(1,.7+.2*sin(TIME()*6.26),.4) @@ -633,7 +633,7 @@ local function _drawMission(curMission,L,missionkill) end gc_print(ENUM_MISSION[L[curMission]],85,110) - --Draw next mission + -- Draw next mission setFont(20) for i=1,3 do local m=L[curMission+i] @@ -719,25 +719,25 @@ function draw.norm(P,repMode) gc_translate(P.x,P.y) gc_scale(P.size) - --Draw username + -- Draw username setFont(30) gc_setColor(.97,.97,.97) GC.mStr(P.username,300,-60) - --Draw HUD + -- Draw HUD if ENV.nextCount>0 then _drawNext(P,repMode) end if ENV.holdMode=='hold' and ENV.holdCount>0 then _drawHold(P.holdQueue,ENV.holdCount,P.holdTime,P.skinLib) end if P.curMission then _drawMission(P.curMission,ENV.mission,ENV.missionKill) end _drawDial(499,505,P.dropSpeed) if P.life>0 then _drawLife(P.life) end - --Field-related things + -- Field-related things _applyField(P) - --Fill field + -- Fill field gc_setColor(0,0,0,.6) gc_rectangle('fill',0,-10-camDY,300,610) - --Draw grid + -- Draw grid if ENV.grid then gc_setColor(1,1,1,ENV.grid) gc_draw(gridLines,0,-40-(camDY-camDY%30)) @@ -747,16 +747,16 @@ function draw.norm(P,repMode) local fieldTop=-ENV.fieldH*30 - --Draw dangerous area + -- Draw dangerous area if fieldTop-camDY<610 then gc_setColor(1,0,0,.26) gc_rectangle('fill',0,fieldTop,300,-10-camDY-(600-fieldTop)) end - --Draw field + -- Draw field _drawField(P,repMode) - --Draw line number + -- Draw line number if ENV.lineNum then setFont(20) local dy=camDY<900 and 0 or camDY-camDY%300-600 @@ -772,19 +772,19 @@ function draw.norm(P,repMode) end end - --Draw spawn line + -- Draw spawn line gc_setLineWidth(4) gc_setColor(1,sin(t)*.4+.5,0,.5) gc_rectangle('fill',0,fieldTop,300,4) - --Draw height limit line + -- Draw height limit line gc_setColor(.4,.7+sin(t*12)*.3,1,.7) gc_rectangle('fill',0,-ENV.heightLimit*30-FBN-2,300,4) - --Draw FXs + -- Draw FXs _drawFXs(P) - --Draw current block + -- Draw current block if P.alive and P.control and P.cur then local C=P.cur local curColor=C.color @@ -793,7 +793,7 @@ function draw.norm(P,repMode) local centerPos=C.RS.centerPos[C.id][C.dir] local centerX=30*(P.curX+centerPos[2])-20 - --Draw ghost & rotation center + -- Draw ghost & rotation center local centerDisp=ENV.center and C.RS.centerDisp[C.id] if ENV.ghost then drawGhost[ENV.ghostType](P.cur.bk,P.curX,P.ghoY,ENV.ghost,P.skinLib,curColor) @@ -807,7 +807,7 @@ function draw.norm(P,repMode) local dy=ENV.smooth and P.ghoY~=P.curY and (P.dropDelay/ENV.drop-1)*30 or 0 gc_translate(0,-dy) - --Draw block & rotation center + -- Draw block & rotation center if ENV.block then _drawBlockOutline(P.cur.bk,P.curX,P.curY,P.skinLib[curColor],trans) _drawBlock(P.cur.bk,P.curX,P.curY,P.skinLib[curColor]) @@ -821,13 +821,13 @@ function draw.norm(P,repMode) gc_translate(0,dy) end - --Draw next preview + -- Draw next preview if ENV.nextPos then if P.nextQueue[1] then _drawNextPreview(P.nextQueue[1],ENV.fieldH,P.fieldBeneath) end if P.holdQueue[1] then _drawHoldPreview(P.holdQueue[1],ENV.fieldH,P.fieldBeneath) end end - --Draw AI's drop destination + -- Draw AI's drop destination if P.destFX then local L=P.destFX local texture=TEXTURE.puzzleMark[21] @@ -836,7 +836,7 @@ function draw.norm(P,repMode) end end - --Board cover + -- Board cover if ENV.hideBoard then gc_stencil(hideBoardStencil[ENV.hideBoard]) gc_setStencilTest('equal',1) @@ -857,14 +857,14 @@ function draw.norm(P,repMode) gc_translate(0,-600) gc_setStencilTest() gc_pop() - --Draw Frame and buffers + -- Draw Frame and buffers gc_setColor(P.frameColor) gc_draw(playerborder,-17,-12) _drawBuffer(P.atkBuffer,ENV.bufferWarn,P.atkBufferSum1,P.atkBufferSum) _drawB2Bbar(P.b2b,P.b2b1) _drawLDI(ENV.easyFresh,P.lockDelay/ENV.lock,P.freshTime) - --Draw target selecting pad + -- Draw target selecting pad if ENV.layout=='royale' then if P.atkMode then gc_setColor(1,.8,0,min(P.swappingAtkMode,30)*.02) @@ -879,7 +879,7 @@ function draw.norm(P,repMode) end end - --Spike + -- Spike local sp,spt=P.spike,P.spikeTime if ENV.showSpike and spt>0 and sp>=10 then local rg=10/sp @@ -892,18 +892,18 @@ function draw.norm(P,repMode) mDraw(P.spikeText,x,y,nil,min(.3+(sp/26)*.4+spt/100*.3,1)) end - --Bonus texts + -- Bonus texts TEXT.draw(P.bonus) - --Display Ys + -- Display Ys -- gc_setLineWidth(6) -- if P.curY then gc_setColor(COLOR.R)gc_line(0,611-P.curY*30,300,610-P.curY*30) end -- if P.ghoY then gc_setColor(COLOR.G)gc_line(0,615-P.ghoY*30,300,615-P.ghoY*30) end -- if P.minY then gc_setColor(COLOR.B)gc_line(0,619-P.minY*30,300,620-P.minY*30) end - -- gc_line(0,600-P.garbageBeneath*30,300,600-P.garbageBeneath*30) + -- gc_line(0,600-P.garbageBeneath*30,300,600-P.garbageBeneath*30) gc_pop() - --Score & Time + -- Score & Time setFont(25) local tm=STRING.time(P.stat.time) gc_setColor(0,0,0,.3) @@ -914,10 +914,10 @@ function draw.norm(P,repMode) gc_setColor(.85,.9,.97) gc_print(tm,20,540) - --FinesseCombo + -- FinesseCombo ;(P.type=='remote' and _drawFinesseCombo_remote or _drawFinesseCombo_norm)(P) - --Mode informations + -- Mode informations for i=1,#ENV.mesDisp do gc_setColor(.97,.97,.97) ENV.mesDisp[i](P,repMode) @@ -929,7 +929,7 @@ function draw.norm(P,repMode) gc_pop() end function draw.small(P) - --Update canvas + -- Update canvas P.frameWait=P.frameWait-1 if P.frameWait==0 then P.frameWait=10 @@ -939,7 +939,7 @@ function draw.small(P) gc_origin() gc_setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1) - --Field + -- Field local F=P.field local texture=SKIN.libMini[SETTING.skinSet] for j=1,#F do @@ -948,14 +948,14 @@ function draw.small(P) end end end - --Draw border + -- Draw border if P.alive then gc_setLineWidth(2) gc_setColor(P.frameColor) gc_rectangle('line',0,0,60,120) end - --Draw badge + -- Draw badge if P.gameEnv.layout=='royale' then gc_setColor(1,1,1) for i=1,P.strength do @@ -963,7 +963,7 @@ function draw.small(P) end end - --Draw result + -- Draw result if P.result then gc_setColor(1,1,1,min(P.endCounter,60)*.01) setFont(20)mDraw(TEXTOBJ[P.result],30,60,nil,P.size) @@ -973,7 +973,7 @@ function draw.small(P) gc_setCanvas() end - --Draw Canvas + -- Draw Canvas gc_setColor(1,1,1) local size=P.size gc_draw(P.canvas,P.x,P.y,nil,size*10) @@ -985,7 +985,7 @@ end function draw.demo(P) local ENV=P.gameEnv - --Camera + -- Camera gc_push('transform') gc_translate(P.x,P.y) gc_scale(P.size) @@ -1017,7 +1017,7 @@ function draw.demo(P) local blockImg=TEXTURE.miniBlock local skinSet=ENV.skin - --Draw hold + -- Draw hold local N=1 while P.holdQueue[N] do local id=P.holdQueue[N].id @@ -1028,7 +1028,7 @@ function draw.demo(P) N=N+1 end - --Draw next + -- Draw next N=1 while N<=ENV.nextCount and P.nextQueue[N] do local id=P.nextQueue[N].id @@ -1039,7 +1039,7 @@ function draw.demo(P) N=N+1 end - --Frame + -- Frame gc_setLineWidth(2) gc_setColor(COLOR.Z) gc_rectangle('line',-1,-1,302,602,3) diff --git a/parts/player/init.lua b/parts/player/init.lua index 429bd585..51e8fde3 100644 --- a/parts/player/init.lua +++ b/parts/player/init.lua @@ -41,11 +41,11 @@ local function _newEmptyPlayer(id,mini) PLAYERS[id]=P PLY_ALIVE[id]=P - --Inherit functions of Player class + -- Inherit functions of Player class for k,v in next,Player do P[k]=v end - --Field position - P.swingOffset={--Shake FX + -- Field position + P.swingOffset={-- Shake FX x=0,y=0, vx=0,vy=0, a=0,va=0, @@ -54,12 +54,12 @@ local function _newEmptyPlayer(id,mini) P.x,P.y,P.size=0,0,1 P.frameColor=COLOR.Z - --Set these at Player:setPosition() + -- Set these at Player:setPosition() -- P.fieldX,P.fieldY=... -- P.centerX,P.centerY=... -- P.absFieldX,P.absFieldY=... - --Minimode + -- Minimode P.miniMode=mini if mini then P.canvas=love.graphics.newCanvas(60,120) @@ -69,37 +69,37 @@ local function _newEmptyPlayer(id,mini) P.draw=ply_draw.norm end - --States + -- States P.type='none' P.sound=false P.alive=true P.control=false P.timing=false P.trigFrame=0 - P.result=false--String: 'finish'|'win'|'lose' + P.result=false-- String: 'finish'|'win'|'lose' P.stat=_getNewStatTable() - P.modeData=setmetatable({},modeDataMeta)--Data use by mode + P.modeData=setmetatable({},modeDataMeta)-- Data use by mode P.keyPressing={} for i=1,12 do P.keyPressing[i]=false end - P.clearingRow,P.clearedRow={},{}--Clearing animation height,cleared row mark + P.clearingRow,P.clearedRow={},{}-- Clearing animation height,cleared row mark P.dropFX,P.moveFX,P.lockFX,P.clearFX={},{},{},{} - -- P.destFX={}--Normally created by bot + -- P.destFX={}-- Normally created by bot P.tasks={} - P.bonus={}--Texts + P.bonus={}-- Texts - --Times - P.frameRun=GAME.frameStart--Frame run, mainly for replay - P.endCounter=0--Used after gameover + -- Times + P.frameRun=GAME.frameStart-- Frame run, mainly for replay + P.endCounter=0-- Used after gameover P.dropTime={} for i=1,10 do P.dropTime[i]=-1e99 end P.dropSpeed=0 P.stream={} - P.streamProgress=false--1 to start play recording + P.streamProgress=false-- 1 to start play recording - --Randomizers + -- Randomizers P.seqRND=love.math.newRandomGenerator(GAME.seed) P.atkRND=love.math.newRandomGenerator(GAME.seed) P.holeRND=love.math.newRandomGenerator(GAME.seed) P.aiRND=love.math.newRandomGenerator(GAME.seed+P.id) - --Field-related + -- Field-related P.field,P.visTime={},{} P.keepVisible=true P.showTime=false @@ -107,25 +107,25 @@ local function _newEmptyPlayer(id,mini) P.fieldBeneath=0 P.fieldUp=0 - --Attack-related + -- Attack-related P.atkBuffer={} P.atkBufferSum,P.atkBufferSum1=0,0 P.spike,P.spikeTime=0,0 P.spikeText=love.graphics.newText(getFont(100)) - --Attacker-related + -- Attacker-related P.badge,P.strength=0,0 P.atkMode,P.swappingAtkMode=1,20 P.atker,P.atking,P.lastRecv={} - --User-related + -- User-related P.username="" P.uid=false P.sid=id - --Block states + -- Block states --[[ - P.curX,P.curY,P.ghoY,P.minY=0,0,0,0--x,y,ghostY + P.curX,P.curY,P.ghoY,P.minY=0,0,0,0-- x,y,ghostY P.cur={ id=shapeID, bk=matrix[2], @@ -134,66 +134,66 @@ local function _newEmptyPlayer(id,mini) name=nameID color=colorID, } - P.newNext=false--Warped coroutine to get new next, loaded in applyGameEnv() + P.newNext=false-- Warped coroutine to get new next, loaded in applyGameEnv() ]] - P.movDir,P.moving,P.downing=0,0,-1--Last move key,DAS charging,downDAS charging + P.movDir,P.moving,P.downing=0,0,-1-- Last move key,DAS charging,downDAS charging P.dropDelay,P.lockDelay=0,0 P.waiting,P.falling=0,0 P.freshTime=0 P.spinLast=false - P.ctrlCount=0--Key press time, for finesse check + P.ctrlCount=0-- Key press time, for finesse check - --Game states + -- Game states P.combo=0 - P.b2b,P.b2b1=0,0--B2B point & Displayed B2B point - P.score1=0--Displayed score - P.pieceCount=0--Count pieces from next, for drawing bagline + P.b2b,P.b2b1=0,0-- B2B point & Displayed B2B point + P.score1=0-- Displayed score + P.pieceCount=0-- Count pieces from next, for drawing bagline P.finesseCombo,P.finesseComboTime=0,0 P.nextQueue={} P.holdQueue={} P.holdTime=0 P.lastPiece={ - id=0,name=0,--block id/name + id=0,name=0,-- block id/name - curX=0,curY=0,--block position - centX=0,centY=0,--center position - dir=0,--direction + curX=0,curY=0,-- block position + centX=0,centY=0,-- center position + dir=0,-- direction - frame=-1e99,--lock time - autoLock=true,--if lock with gravity + frame=-1e99,-- lock time + autoLock=true,-- if lock with gravity - finePts=0,--finesse Points + finePts=0,-- finesse Points - row=0,dig=0,--lines/garbage cleared - score=0,--score gained - atk=0,exblock=0,--lines attack/defend - off=0,send=0,--lines offset/sent + row=0,dig=0,-- lines/garbage cleared + score=0,-- score gained + atk=0,exblock=0,-- lines attack/defend + off=0,send=0,-- lines offset/sent - spin=false,mini=false,--if spin/mini - pc=false,hpc=false,--if pc/hpc - special=false,--if special clear (spin, >=4, pc) + spin=false,mini=false,-- if spin/mini + pc=false,hpc=false,-- if pc/hpc + special=false,-- if special clear (spin, >=4, pc) } return P end -local function _loadGameEnv(P)--Load gameEnv - P.gameEnv={}--Current game setting environment +local function _loadGameEnv(P)-- Load gameEnv + P.gameEnv={}-- Current game setting environment local ENV=P.gameEnv local GAME,SETTING=GAME,SETTING - --Load game settings + -- Load game settings for k,v in next,gameEnv0 do if GAME.modeEnv[k]~=nil then - v=GAME.modeEnv[k] --Mode setting + v=GAME.modeEnv[k] -- Mode setting -- print("mode-"..k..":"..tostring(v)) elseif GAME.setting[k]~=nil then - v=GAME.setting[k] --Game setting + v=GAME.setting[k] -- Game setting -- print("game-"..k..":"..tostring(v)) elseif SETTING[k]~=nil then - v=SETTING[k] --Global setting + v=SETTING[k] -- Global setting -- print("global-"..k..":"..tostring(v)) -- else -- print("default-"..k..":"..tostring(v)) end - if type(v)~='table' then --Default setting + if type(v)~='table' then -- Default setting ENV[k]=v else ENV[k]=TABLE.copy(v) @@ -205,26 +205,26 @@ local function _loadGameEnv(P)--Load gameEnv end end end -local function _loadRemoteEnv(P,confStr)--Load gameEnv +local function _loadRemoteEnv(P,confStr)-- Load gameEnv confStr=JSON.decode(confStr) if not confStr then confStr={} MES.new('warn',"Bad conf from "..P.username.."#"..P.uid) end - P.gameEnv={}--Current game setting environment + P.gameEnv={}-- Current game setting environment local ENV=P.gameEnv local GAME,SETTING=GAME,SETTING - --Load game settings + -- Load game settings for k,v in next,gameEnv0 do if GAME.modeEnv[k]~=nil then - v=GAME.modeEnv[k] --Mode setting + v=GAME.modeEnv[k] -- Mode setting elseif confStr[k]~=nil then - v=confStr[k] --Game setting + v=confStr[k] -- Game setting elseif SETTING[k]~=nil then - v=SETTING[k] --Global setting + v=SETTING[k] -- Global setting end - if type(v)~='table' then--Default setting + if type(v)~='table' then-- Default setting ENV[k]=v else ENV[k]=TABLE.copy(v) @@ -241,16 +241,16 @@ local function _mergeFuncTable(f,L) end return L end -local function _applyGameEnv(P)--Finish gameEnv processing +local function _applyGameEnv(P)-- Finish gameEnv processing local ENV=P.gameEnv - --Apply events + -- Apply events ENV.mesDisp=_mergeFuncTable(ENV.mesDisp,{}) ENV.hook_drop=_mergeFuncTable(ENV.hook_drop,{}) ENV.hook_die=_mergeFuncTable(ENV.hook_die,{}) ENV.task=_mergeFuncTable(ENV.task,{}) - --Apply eventSet + -- Apply eventSet if ENV.eventSet and ENV.eventSet~="X" then if type(ENV.eventSet)=='string' then local eventSet=require('parts.eventsets.'..ENV.eventSet) @@ -362,7 +362,7 @@ local function _applyGameEnv(P)--Finish gameEnv processing if ENV.center==0 then ENV.center=false end if ENV.lineNum==0 then ENV.lineNum=false end - --Load tasks + -- Load tasks for i=1,#ENV.task do P:newTask(ENV.task[i]) end end ---------------------------------------------------- diff --git a/parts/player/player.lua b/parts/player/player.lua index 4c9ee3b7..11a541f6 100644 --- a/parts/player/player.lua +++ b/parts/player/player.lua @@ -1,8 +1,8 @@ ------------------------------------------------- ---Var P in other files represent Player object!-- +-- Var P in other files represent Player object!-- ------------------------------------------------- -local Player={}--Player class +local Player={}-- Player class local int,ceil,rnd=math.floor,math.ceil,math.random local max,min,abs,modf=math.max,math.min,math.abs,math.modf @@ -19,16 +19,16 @@ local SETTING=SETTING function Player:_showText(text,dx,dy,font,style,spd,stop) ins(self.bonus,TEXT.getText(text,150+dx,300+dy,font,style,spd,stop)) end -function Player:_createLockFX(x,y,t)--Not used +function Player:_createLockFX(x,y,t)-- Not used ins(self.lockFX,{x,y,0,t}) end -function Player:_createDropFX(x,y,w,h)--Not used +function Player:_createDropFX(x,y,w,h)-- Not used ins(self.dropFX,{x,y,w,h}) end -function Player:_createMoveFX(color,x,y,spd)--Not used +function Player:_createMoveFX(color,x,y,spd)-- Not used ins(self.moveFX,{color,x,y,0,spd}) end -function Player:_createClearingFX(y,spd)--Not used +function Player:_createClearingFX(y,spd)-- Not used ins(self.clearFX,{y,0,spd}) end function Player:_rotateField(dir) @@ -40,7 +40,7 @@ function Player:_rotateField(dir) end end end -function Player:shakeField(strength)--Range: 1~10 +function Player:shakeField(strength)-- Range: 1~10 if self.gameEnv.shakeFX then self.shakeTimer=max(self.shakeTimer,3*self.gameEnv.shakeFX+int(4*min(max(strength,1),10))) end @@ -493,26 +493,26 @@ end ---------------------------------------------------- local playerActions={ - Player.act_moveLeft, --1 - Player.act_moveRight, --2 - Player.act_rotRight, --3 - Player.act_rotLeft, --4 - Player.act_rot180, --5 - Player.act_hardDrop, --6 - Player.act_softDrop, --7 - Player.act_hold, --8 - Player.act_func1, --9 - Player.act_func2, --10 - Player.act_insLeft, --11 - Player.act_insRight, --12 - Player.act_insDown, --13 - Player.act_down1, --14 - Player.act_down4, --15 - Player.act_down10, --16 - Player.act_dropLeft, --17 - Player.act_dropRight, --18 - Player.act_zangiLeft, --19 - Player.act_zangiRight,--20 + Player.act_moveLeft, -- 1 + Player.act_moveRight, -- 2 + Player.act_rotRight, -- 3 + Player.act_rotLeft, -- 4 + Player.act_rot180, -- 5 + Player.act_hardDrop, -- 6 + Player.act_softDrop, -- 7 + Player.act_hold, -- 8 + Player.act_func1, -- 9 + Player.act_func2, -- 10 + Player.act_insLeft, -- 11 + Player.act_insRight, -- 12 + Player.act_insDown, -- 13 + Player.act_down1, -- 14 + Player.act_down4, -- 15 + Player.act_down10, -- 16 + Player.act_dropLeft, -- 17 + Player.act_dropRight, -- 18 + Player.act_zangiLeft, -- 19 + Player.act_zangiRight,-- 20 }function Player:pressKey(keyID) if self.id==1 then if GAME.recording then @@ -576,7 +576,7 @@ function Player:setPosition(x,y,size) self.absFieldX,self.absFieldY=x+150*size,y-10*size end end -do--function Player:movePosition(x,y,size) +do-- function Player:movePosition(x,y,size) local function task_movePosition(self,x,y,size) local x1,y1,size1=self.x,self.y,self.size while true do @@ -624,7 +624,7 @@ function Player:set20G(if20g) self.bot:switch20G() end end -function Player:setHold(count)--Set hold count (false/true as 0/1) +function Player:setHold(count)-- Set hold count (false/true as 0/1) if not count then count=0 elseif count==true then @@ -635,10 +635,10 @@ function Player:setHold(count)--Set hold count (false/true as 0/1) self.holdTime=count while self.holdQueue[count+1] do rem(self.holdQueue) end end -function Player:setNext(next)--Set next count +function Player:setNext(next)-- Set next count self.gameEnv.nextCount=next end -function Player:setInvisible(time)--Time in frames +function Player:setInvisible(time)-- Time in frames if time<0 then self.keepVisible=true self.showTime=1e99 @@ -651,7 +651,7 @@ function Player:setRS(RSname) local rs=RSlist[RSname] or RSlist.TRS self.RS=rs - --Reset all player's blocks' RSs + -- Reset all player's blocks' RSs for i=1,#self.nextQueue do self.nextQueue[i].RS=rs end for i=1,#self.holdQueue do self.holdQueue[i].RS=rs end if self.cur then @@ -669,7 +669,7 @@ function Player:_triggerEvent(eventName) end end -function Player:getHolePos()--Get a good garbage-line hole position +function Player:getHolePos()-- Get a good garbage-line hole position if self.garbageBeneath==0 then return generateLine(self.holeRND:random(10)) else @@ -680,7 +680,7 @@ function Player:getHolePos()--Get a good garbage-line hole position return generateLine(p) end end -function Player:garbageRelease()--Check garbage buffer and try to release them +function Player:garbageRelease()-- Check garbage buffer and try to release them local n=1 while true do local A=self.atkBuffer[n] @@ -695,7 +695,7 @@ function Player:garbageRelease()--Check garbage buffer and try to release them end end end -function Player:garbageRise(color,amount,line)--Release n-lines garbage to field +function Player:garbageRise(color,amount,line)-- Release n-lines garbage to field local _ local t=self.showTime*2 for _=1,amount do @@ -717,7 +717,7 @@ function Player:garbageRise(color,amount,line)--Release n-lines garbage to field self:freshBlock('push') for i=1,#self.lockFX do _=self.lockFX[i] - _[2]=_[2]-30*amount--Shift 30px per line cleared + _[2]=_[2]-30*amount-- Shift 30px per line cleared end for i=1,#self.dropFX do _=self.dropFX[i] @@ -734,7 +734,7 @@ function Player:garbageRise(color,amount,line)--Release n-lines garbage to field end local invList={2,1,4,3,5,6,7} -function Player:pushLineList(L,mir)--Push some lines to field +function Player:pushLineList(L,mir)-- Push some lines to field local l=#L local S=self.gameEnv.skin for i=1,l do @@ -758,7 +758,7 @@ function Player:pushLineList(L,mir)--Push some lines to field end self:freshBlock('push') end -function Player:pushNextList(L,mir)--Push some nexts to nextQueue +function Player:pushNextList(L,mir)-- Push some nexts to nextQueue for i=1,#L do self:getNext(mir and invList[L[i]] or L[i]) end @@ -780,7 +780,7 @@ function Player:solid(x,y) return false end return self.field[y] - [x]>0--to catch bug (nil[*]) + [x]>0-- to catch bug (nil[*]) end function Player:ifoverlap(bk,x,y) local C=#bk[1] @@ -802,7 +802,7 @@ function Player:ifoverlap(bk,x,y) end function Player:attack(R,send,time,line,fromStream) if GAME.net then - if self.type=='human' then--Local player attack others + if self.type=='human' then-- Local player attack others ins(GAME.rep,self.frameRun) ins(GAME.rep, R.sid+ @@ -813,7 +813,7 @@ function Player:attack(R,send,time,line,fromStream) ) self:createBeam(R,send) end - if fromStream and R.type=='human' then--Local player receiving lines + if fromStream and R.type=='human' then-- Local player receiving lines ins(GAME.rep,R.frameRun) ins(GAME.rep, self.sid+ @@ -846,7 +846,7 @@ function Player:receive(A,send,time,line) time=0, sent=false, lv=min(int(send^.69),5), - })--Sorted insert(by time) + })-- Sorted insert(by time) self.atkBufferSum=self.atkBufferSum+send self.stat.recv=self.stat.recv+send if self.sound then @@ -899,7 +899,7 @@ function Player:changeAtkMode(m) end end function Player:changeAtk(R) - -- if self.type~='human' then R=PLAYERS[1] end--1vALL mode? + -- if self.type~='human' then R=PLAYERS[1] end-- 1vALL mode? if self.atking then local K=self.atking.atker local i=TABLE.find(K,self) @@ -914,26 +914,26 @@ function Player:changeAtk(R) self.atking=false end end -function Player:freshBlock(mode,ifTele)--string mode: push/move/fresh/newBlock +function Player:freshBlock(mode,ifTele)-- string mode: push/move/fresh/newBlock local ENV=self.gameEnv - --Fresh ghost + -- Fresh ghost if (mode=='move' or mode=='newBlock' or mode=='push') and self.cur then local CB=self.cur.bk self.ghoY=min(#self.field+1,self.curY) if self._20G or ENV.sdarr==0 and self.keyPressing[7] and self.downing>=ENV.sddas then local _=self.ghoY - --Move ghost to bottom + -- Move ghost to bottom while not self:ifoverlap(CB,self.curX,self.ghoY-1) do self.ghoY=self.ghoY-1 end - --Cancel spinLast + -- Cancel spinLast if _~=self.ghoY then self.spinLast=false end - --Create FX if dropped + -- Create FX if dropped if self.curY>self.ghoY then self:createDropFX() if ENV.shakeFX then @@ -948,7 +948,7 @@ function Player:freshBlock(mode,ifTele)--string mode: push/move/fresh/newBlock end end - --Fresh delays + -- Fresh delays if mode=='move' or mode=='newBlock' or mode=='fresh' then local d0,l0=ENV.drop,ENV.lock local C=self.cur @@ -978,7 +978,7 @@ function Player:freshBlock(mode,ifTele)--string mode: push/move/fresh/newBlock end end - --Play sound if touch ground + -- Play sound if touch ground if mode=='move' and not ifTele then self:checkTouchSound() end @@ -1005,7 +1005,7 @@ function Player:_checkClear(field,start,height,CB,CX) for i=1,height do local h=start+i-2 - --Bomb trigger (optional, must with CB) + -- Bomb trigger (optional, must with CB) if CB and h>0 and field[h] and self.clearedRow[cc]~=h then for x=1,#CB[1] do if CB[i][x] and field[h][CX+x-1]==19 then @@ -1018,7 +1018,7 @@ function Player:_checkClear(field,start,height,CB,CX) end h=h+1 - --Row filled + -- Row filled for x=1,10 do if field[h][x]<=0 then goto CONTINUE_notFull @@ -1037,12 +1037,12 @@ function Player:_roofCheck() for x=1,#CB[1] do local y=#CB - --Find the highest y of blocks' x-th column + -- Find the highest y of blocks' x-th column while not CB[y][x] do y=y-1 end - local testX=self.curX+x-1--Optimize + local testX=self.curX+x-1-- Optimize - --Test the whole column of field to find roof + -- Test the whole column of field to find roof for testY=self.curY+y,#self.field do if self:solid(testX,testY) then return true @@ -1111,7 +1111,7 @@ function Player:_checkSuffocate() end local spawnSFX_name={'spawn_1','spawn_2','spawn_3','spawn_4','spawn_5','spawn_6','spawn_7'} -function Player:resetBlock()--Reset Block's position and execute I*S +function Player:resetBlock()-- Reset Block's position and execute I*S local C=self.cur local sc=C.RS.centerPos[C.id][C.dir] @@ -1121,7 +1121,7 @@ function Player:resetBlock()--Reset Block's position and execute I*S self.minY=y+sc[1] local pressing=self.keyPressing - --IMS + -- IMS if self.gameEnv.ims and (pressing[1] and self.movDir==-1 or pressing[2] and self.movDir==1) and self.moving>=self.gameEnv.das then local x=self.curX+self.movDir if not self:ifoverlap(C.bk,x,y) then @@ -1129,7 +1129,7 @@ function Player:resetBlock()--Reset Block's position and execute I*S end end - --IRS + -- IRS if self.gameEnv.irs then if pressing[5] then self:spin(2,true) @@ -1145,12 +1145,12 @@ function Player:resetBlock()--Reset Block's position and execute I*S pressing[3],pressing[4],pressing[5]=false,false,false end - --DAS cut + -- DAS cut if self.gameEnv.dascut>0 then self.moving=self.moving-(self.moving>0 and 1 or -1)*self.gameEnv.dascut end - --Spawn SFX + -- Spawn SFX if self.sound and C.id<8 then SFX.fplay(spawnSFX_name[C.id],SETTING.sfx_spawn) end @@ -1179,15 +1179,15 @@ function Player:spin(d,ifpre) for test=1,#kickData do local ix,iy=baseX+kickData[test][1],baseY+kickData[test][2] if (self.freshTime>0 or kickData[test][2]<=0) and not self:ifoverlap(icb,ix,iy) then - --Create moveFX at the original position + -- Create moveFX at the original position self:createMoveFX() - --Change block position + -- Change block position sc,C.bk,C.dir=isc,icb,idir self.curX,self.curY=ix,iy self.spinLast=test==2 and 0 or 1 - --Fresh ghost and freshTime + -- Fresh ghost and freshTime local t=self.freshTime if not ifpre then self:freshBlock('move') @@ -1196,7 +1196,7 @@ function Player:spin(d,ifpre) self.freshTime=self.freshTime-1 end - --Sound & Field swinging + -- Sound & Field swinging local sfx if ifpre then sfx='prerotate' @@ -1221,23 +1221,23 @@ function Player:spin(d,ifpre) end end local phyHoldKickX={ - [true]={0,-1,1},--X==?.0 tests - [false]={-.5,.5},--X==?.5 tests + [true]={0,-1,1},-- X==?.0 tests + [false]={-.5,.5},-- X==?.5 tests } function Player:hold_norm(ifpre) local ENV=self.gameEnv - if #self.holdQueue All test failed, interrupt with sound + -- All test failed, interrupt with sound SFX.play('drop_cancel') do return end - -- + -- ::BREAK_success:: self.spinLast=false @@ -1267,7 +1267,7 @@ function Player:hold_norm(ifpre) self.cur=rem(self.holdQueue,1) self.curX,self.curY=x,y - else--Normal hold + else-- Normal hold self.spinLast=false if C then @@ -1304,7 +1304,7 @@ function Player:hold_swap(ifpre) local C,H=self.cur,self.nextQueue[hid] self.ctrlCount=0 - if ENV.phyHold and C and not ifpre then--Physical hold + if ENV.phyHold and C and not ifpre then-- Physical hold local x,y=self.curX,self.curY x=x+(#C.bk[1]-#H.bk[1])*.5 y=y+(#C.bk-#H.bk)*.5 @@ -1319,10 +1319,10 @@ function Player:hold_swap(ifpre) end end end - -- All test failed, interrupt with sound + -- All test failed, interrupt with sound SFX.play('finesseError') do return end - -- + -- ::BREAK_success:: self.spinLast=false @@ -1333,7 +1333,7 @@ function Player:hold_swap(ifpre) self.cur,self.nextQueue[hid]=self.nextQueue[hid],hb self.curX,self.curY=x,y - else--Normal hold + else-- Normal hold self.spinLast=false local hb=self:getBlock(C.id) @@ -1371,7 +1371,7 @@ function Player:hold(ifpre,force) end end -function Player:getBlock(id,name,color)--Get a block object +function Player:getBlock(id,name,color)-- Get a block object local ENV=self.gameEnv local dir=ENV.face[id] return{ @@ -1383,13 +1383,13 @@ function Player:getBlock(id,name,color)--Get a block object color=ENV.bone and 17 or color or ENV.skin[id], } end -function Player:getNext(id)--Push a block to nextQueue +function Player:getNext(id)-- Push a block to nextQueue ins(self.nextQueue,self:getBlock(id)) if self.bot then self.bot:pushNewNext(id) end end -function Player:popNext(ifhold)--Pop nextQueue to hand +function Player:popNext(ifhold)-- Pop nextQueue to hand local ENV=self.gameEnv if not ifhold then self.holdTime=min(self.holdTime+1,ENV.holdCount) @@ -1404,7 +1404,7 @@ function Player:popNext(ifhold)--Pop nextQueue to hand local pressing=self.keyPressing - --IHS + -- IHS if not ifhold and pressing[8] and ENV.ihs and self.holdTime>0 then self:hold(true) pressing[8]=false @@ -1421,20 +1421,20 @@ function Player:popNext(ifhold)--Pop nextQueue to hand self:freshBlock('newBlock') end - --IHdS + -- IHdS if pressing[6] and not ifhold then self:act_hardDrop() pressing[6]=false end - elseif self.holdQueue[1] then--Force using hold + elseif self.holdQueue[1] then-- Force using hold self:hold(true,true) - else--Next queue is empty, force lose + else-- Next queue is empty, force lose self:lose(true) end end -function Player:cancel(N)--Cancel Garbage - local off=0--Lines offseted +function Player:cancel(N)-- Cancel Garbage + local off=0-- Lines offseted local bf=self.atkBuffer for i=1,#bf do if self.atkBufferSum==0 or N==0 then @@ -1442,7 +1442,7 @@ function Player:cancel(N)--Cancel Garbage end local A=bf[i] if not A.sent then - local O=min(A.amount,N)--Cur Offset + local O=min(A.amount,N)-- Cur Offset if N0 then if cc>0 then dospin=dospin+(self.spinLast or 0) @@ -1671,19 +1671,19 @@ do dospin=false end - --Finesse: roof check + -- Finesse: roof check local finesse=CY>ENV.fieldH-2 or self:_roofCheck() - --Remove rows need to be cleared + -- Remove rows need to be cleared self:_removeClearedLines() - --Cancel top clearing FX & get clear flag + -- Cancel top clearing FX & get clear flag clear=self:removeTopClearingFX() - --Finesse check (control) + -- Finesse check (control) local finePts if not finesse then - if dospin then--Allow 2 more step for roof-less spin + if dospin then-- Allow 2 more step for roof-less spin self.ctrlCount=self.ctrlCount-2 end local id=C.id @@ -1727,7 +1727,7 @@ do piece.spin,piece.mini=dospin,false piece.pc,piece.hpc=false,false piece.special=false - if cc>0 then--If lines cleared,about 200 lines of codes below + if cc>0 then-- If lines cleared,about 200 lines of codes below cmb=cmb+1 if dospin then cscore=(spinSCR[C.name] or spinSCR[8])[cc] @@ -1819,7 +1819,7 @@ do VOC.play(clearVoice[cc],CHN) end - --Combo bonus + -- Combo bonus sendTime=sendTime+25*cmb if cmb>1 then atk=atk*(1+(cc==1 and .15 or .25)*min(cmb-1,12)) @@ -1831,7 +1831,7 @@ do cscore=cscore+min(50*cmb,500)*(2*cc-1) end - --PC/HPC + -- PC/HPC if clear and cc>=#C.bk then if CY==1 then piece.pc=true @@ -1878,7 +1878,7 @@ do finish='lose' end - --Bonus atk/def when focused + -- Bonus atk/def when focused if ENV.layout=='royale' then local i=min(#self.atker,9) if i>1 then @@ -1887,11 +1887,11 @@ do end end - --Send Lines - atk=int(atk*(1+self.strength*.25))--Badge Buff + -- Send Lines + atk=int(atk*(1+self.strength*.25))-- Badge Buff send=atk if exblock>0 then - exblock=int(exblock*(1+self.strength*.25))--Badge Buff + exblock=int(exblock*(1+self.strength*.25))-- Badge Buff self:showText("+"..exblock,0,53,20,'fly') off=off+self:cancel(exblock) end @@ -1928,7 +1928,7 @@ do end end - --SFX & Vibrate + -- SFX & Vibrate if self.sound then playClearSFX(cc) SFX.play(renSFX[min(cmb,11)],.75) @@ -1937,10 +1937,10 @@ do end if SETTING.vib>0 then VIB(SETTING.vib+cc+1) end end - else--No lines clear + else-- No lines clear cmb=0 - --Spin bonus + -- Spin bonus if dospin then self:showText(text.block[C.name]..text.spinNC,0,-30,45,'appear') self.b2b=self.b2b+20 @@ -1959,14 +1959,14 @@ do self.combo=cmb - --Spike + -- Spike if atk>0 then self.spike=self.spikeTime==0 and atk or self.spike+atk self.spikeTime=min(self.spikeTime+atk*20,100) self.spikeText:set(self.spike) end - --DropSpeed bonus + -- DropSpeed bonus if self._20G then cscore=cscore*2 elseif ENV.drop<1 then @@ -1975,7 +1975,7 @@ do cscore=cscore*1.2 end - --Speed bonus + -- Speed bonus if self.dropSpeed>60 then cscore=cscore*(.9+self.dropSpeed/600) end @@ -1988,7 +1988,7 @@ do piece.atk,piece.exblock=atk,exblock piece.off,piece.send=off,send - --Check clearing task + -- Check clearing task if cc>0 and self.curMission then if self:_checkMission(piece,ENV.mission[self.curMission]) then self.curMission=self.curMission+1 @@ -2006,10 +2006,10 @@ do end end - --Fresh ARE + -- Fresh ARE self.waiting=ENV.wait - --Prevent sudden death if hang>0 + -- Prevent sudden death if hang>0 if ENV.hang>ENV.wait and self.nextQueue[1] then local B=self.nextQueue[1] if self:ifoverlap(B.bk,int(6-#B.bk[1]*.5),int(ENV.fieldH+1-modf(B.RS.centerPos[B.id][B.dir][1]))+ceil(self.fieldBeneath/30)) then @@ -2017,19 +2017,19 @@ do end end - --Check bot things + -- Check bot things if self.bot then self.bot:checkDest(self.b2b,atk,exblock,yomi) self.bot:updateB2B(self.b2b) self.bot:updateCombo(self.combo) end - --Check height limit + -- Check height limit if cc==0 and (#self.field>ENV.heightLimit or ENV.lockout and CY>ENV.fieldH) then finish='lose' end - --Update stat + -- Update stat Stat.piece=Stat.piece+1 Stat.row=Stat.row+cc Stat.maxFinesseCombo=max(Stat.maxFinesseCombo,self.finesseCombo) @@ -2052,11 +2052,11 @@ do end local n=C.name if dospin then - _=Stat.spin[n] _[cc+1]=_[cc+1]+1--Spin[1~25][0~4] - _=Stat.spins _[cc+1]=_[cc+1]+1--Spin[0~4] + _=Stat.spin[n] _[cc+1]=_[cc+1]+1-- Spin[1~25][0~4] + _=Stat.spins _[cc+1]=_[cc+1]+1-- Spin[0~4] elseif cc>0 then - _=Stat.clear[n] _[cc]=_[cc]+1--Clear[1~25][1~5] - _=Stat.clears _[cc]=_[cc]+1--Clear[1~5] + _=Stat.clear[n] _[cc]=_[cc]+1-- Clear[1~25][1~5] + _=Stat.clears _[cc]=_[cc]+1-- Clear[1~5] end if finish then @@ -2072,7 +2072,7 @@ do self:_triggerEvent('hook_drop') end - --Remove controling block + -- Remove controling block self.cur=nil if self.waiting==0 and self.falling==0 then @@ -2100,7 +2100,7 @@ do return _cc,_gbcc end end -function Player:loadAI(data)--Load AI with params +function Player:loadAI(data)-- Load AI with params self.bot=BOT.new(self,data) self.bot.data=data end @@ -2125,7 +2125,7 @@ local function task_throwBadge(ifAI,sender,time) x2,y2=R.x+66*R.size,R.y+274*R.size end - --Generate badge object + -- Generate badge object SYSFX.newBadge(x1,y1,x2,y2) if not ifAI and time%8==0 then @@ -2142,7 +2142,7 @@ local function task_finish(self) yield() self.endCounter=self.endCounter+1 if self.endCounter<40 then - --Make field visible + -- Make field visible for j=1,#self.field do for i=1,10 do if self.visTime[j][i]<20 then self.visTime[j][i]=self.visTime[j][i]+.5 @@ -2158,7 +2158,7 @@ local function task_lose(self) yield() self.endCounter=self.endCounter+1 if self.endCounter<40 then - --Make field visible + -- Make field visible for j=1,#self.field do for i=1,10 do if self.visTime[j][i]<20 then self.visTime[j][i]=self.visTime[j][i]+.5 @@ -2204,17 +2204,17 @@ end ---------------------------------------------------- local function _updateMisc(P,dt) - --Finesse combo animation + -- Finesse combo animation if P.finesseComboTime>0 then P.finesseComboTime=P.finesseComboTime-1 end - --Update spike counter + -- Update spike counter if P.spikeTime>0 then P.spikeTime=P.spikeTime-1 end - --Update atkBuffer alert + -- Update atkBuffer alert local t=P.atkBufferSum1 if t0 then P.fieldBeneath=max(y-P.gameEnv.pushSpeed,0) end - --Move camera + -- Move camera if P.gameEnv.highCam then if not P.alive then y=0 @@ -2257,7 +2257,7 @@ local function _updateMisc(P,dt) end end - --Update Score + -- Update Score if P.stat.score>P.score1 then if P.stat.score-P.score1<10 then P.score1=P.score1+1 @@ -2266,7 +2266,7 @@ local function _updateMisc(P,dt) end end - --Field swinging + -- Field swinging if P.gameEnv.shakeFX then local O=P.swingOffset O.vx=O.vx*.6-abs(O.x)^1.3*(O.x>0 and .1 or -.1) @@ -2282,17 +2282,17 @@ local function _updateMisc(P,dt) end end - --Field Shaking + -- Field Shaking if P.shakeTimer>0 then P.shakeTimer=P.shakeTimer-1 end - --Update texts + -- Update texts if P.bonus then TEXT.update(1/60,P.bonus) end - --Update tasks + -- Update tasks local L=P.tasks for i=#L,1,-1 do local tr=L[i].thread @@ -2303,7 +2303,7 @@ local function _updateMisc(P,dt) end end local function _updateFX(P,dt) - --Update lock FX + -- Update lock FX for i=#P.lockFX,1,-1 do local S=P.lockFX[i] S[3]=S[3]+S[4]*dt @@ -2312,7 +2312,7 @@ local function _updateFX(P,dt) end end - --Update drop FX + -- Update drop FX for i=#P.dropFX,1,-1 do local S=P.dropFX[i] S[5]=S[5]+S[6]*dt @@ -2321,7 +2321,7 @@ local function _updateFX(P,dt) end end - --Update move FX + -- Update move FX for i=#P.moveFX,1,-1 do local S=P.moveFX[i] S[4]=S[4]+S[5]*dt @@ -2330,7 +2330,7 @@ local function _updateFX(P,dt) end end - --Update clear FX + -- Update clear FX for i=#P.clearFX,1,-1 do local S=P.clearFX[i] S[2]=S[2]+S[3]*dt @@ -2369,7 +2369,7 @@ local function update_alive(P,dt) if P.timing then P.stat.frame=P.stat.frame+1 end - --Calculate drop speed + -- Calculate drop speed do local v=0 for i=2,10 do v=v+i*(i-1)*72/(P.frameRun-P.dropTime[i]) end @@ -2384,7 +2384,7 @@ local function update_alive(P,dt) end end - --Fresh visible time + -- Fresh visible time if not P.keepVisible then local V=P.visTime for j=1,#P.field do @@ -2397,7 +2397,7 @@ local function update_alive(P,dt) end end - --Moving pressed + -- Moving pressed if P.movDir~=0 then local das,arr=ENV.das,ENV.arr local mov=P.moving @@ -2465,7 +2465,7 @@ local function update_alive(P,dt) P.moving=0 end - --Drop pressed + -- Drop pressed if P.keyPressing[7] then P.downing=P.downing+1 if P.downing>=ENV.sddas then @@ -2482,7 +2482,7 @@ local function update_alive(P,dt) local stopAtFalling - --Falling animation + -- Falling animation if P.falling>0 then stopAtFalling=true P:_updateFalling(P.falling-1) @@ -2491,9 +2491,9 @@ local function update_alive(P,dt) end end - --Update block state + -- Update block state if P.control then - --Try spawn new block + -- Try spawn new block if not P.cur then if not stopAtFalling and P.waiting>0 then P.waiting=P.waiting-1 @@ -2504,11 +2504,11 @@ local function update_alive(P,dt) goto THROW_stop end - --Natural block falling + -- Natural block falling if P.cur then if P.curY>P.ghoY then local D=P.dropDelay - local dist--Drop distance + local dist-- Drop distance if D>1 then D=D-1 if P.keyPressing[7] and P.downing>=ENV.sddas then @@ -2521,16 +2521,16 @@ local function update_alive(P,dt) P.dropDelay=D goto THROW_stop end - elseif D==1 then--We don't know why dropDelay is 1, so checking ENV.drop>1 is neccessary + elseif D==1 then-- We don't know why dropDelay is 1, so checking ENV.drop>1 is neccessary if ENV.drop>1 and P.downing>=ENV.sddas and (P.downing-ENV.sddas)%ENV.sdarr==0 then dist=2 else dist=1 end - --Reset drop delay + -- Reset drop delay P.dropDelay=ENV.drop - else--High gravity case (>1G) - --Add extra 1 if time to auto softdrop + else-- High gravity case (>1G) + -- Add extra 1 if time to auto softdrop if P.downing>ENV.sddas and (P.downing-ENV.sddas)%ENV.sdarr==0 then dist=1/D+1 else @@ -2538,10 +2538,10 @@ local function update_alive(P,dt) end end - --Limit dropping to ghost at max + -- Limit dropping to ghost at max dist=min(dist,P.curY-P.ghoY) - --Drop and create FXs + -- Drop and create FXs if ENV.moveFX and ENV.block and dist>1 then for _=1,dist do P:createMoveFX('down') @@ -2568,7 +2568,7 @@ local function update_alive(P,dt) end ::THROW_stop:: - --B2B bar animation + -- B2B bar animation if P.b2b1~=P.b2b then if P.b2b10x2000000000000 then--Sending lines + elseif event>0x2000000000000 then-- Sending lines local sid=event%0x100 local amount=int(event/0x100)%0x100 local time=int(event/0x10000)%0x10000 @@ -2610,15 +2610,15 @@ local function update_streaming(P) break end end - elseif event>0x1000000000000 then--Receiving lines + elseif event>0x1000000000000 then-- Receiving lines local sid=event%0x100 for _,p in next,PLY_ALIVE do if p.sid==sid then P:receive( p, - int(event/0x100)%0x100,--amount - int(event/0x10000)%0x10000,--time - int(event/0x100000000)%0x10000--line + int(event/0x100)%0x100,-- amount + int(event/0x10000)%0x10000,-- time + int(event/0x100000000)%0x10000-- line ) break end @@ -2631,7 +2631,7 @@ end local function update_dead(P,dt) local S=P.stat - --Final average speed + -- Final average speed P.dropSpeed=approach(P.dropSpeed,S.piece/S.frame*3600,dt) if P.gameEnv.layout=='royale' then diff --git a/parts/player/seqGenerators.lua b/parts/player/seqGenerators.lua index dd6f81f6..191ba3be 100644 --- a/parts/player/seqGenerators.lua +++ b/parts/player/seqGenerators.lua @@ -23,10 +23,10 @@ local seqGenerators={ local rndGen=P.seqRND local len=#seq0 local bag=TABLE.shift(seq0) - do--Get a good first-bag - --Shuffle + do-- Get a good first-bag + -- Shuffle for i=1,len-1 do ins(bag,rem(bag,rndGen:random(len-i+1))) end - --Skip Uncomfortable minoes + -- Skip Uncomfortable minoes for _=1,len-1 do if bag[1]==1 or bag[1]==2 or bag[1]==6 or bag[1]==8 or bag[1]==9 or @@ -39,7 +39,7 @@ local seqGenerators={ break end end - --Finish + -- Finish for i=1,len do P:getNext(bag[i]) end end bag={} @@ -63,7 +63,7 @@ local seqGenerators={ while true do while #P.nextQueue<10 do local r - for _=1,hisLen do--Reroll up to [hisLen] times + for _=1,hisLen do-- Reroll up to [hisLen] times r=rndGen:random(len) for i=1,hisLen do if r==history[i] then @@ -86,17 +86,17 @@ local seqGenerators={ local rndGen=P.seqRND local len=#seq0 local hisLen=math.ceil(len*.5) - local history=TABLE.new(0,hisLen)--Indexes of mino-index + local history=TABLE.new(0,hisLen)-- Indexes of mino-index local poolLen=5*len - local droughtTimes=TABLE.new(len,len)--Drought times of seq0 - local pool={} for i=1,len do for _=1,5 do ins(pool,i) end end--5 times indexes of seq0 + local droughtTimes=TABLE.new(len,len)-- Drought times of seq0 + local pool={} for i=1,len do for _=1,5 do ins(pool,i) end end-- 5 times indexes of seq0 local function _poolPick() local r=rndGen:random(poolLen) local res=pool[r] - --Find droughtest(s) minoes - local droughtList={1}--Droughtst minoes' indexes of seq0 + -- Find droughtest(s) minoes + local droughtList={1}-- Droughtst minoes' indexes of seq0 local maxTime=droughtTimes[1] for i=2,len do if droughtTimes[i]>maxTime then @@ -111,11 +111,11 @@ local seqGenerators={ end end - --Update droughtTimes + -- Update droughtTimes for i=1,len do droughtTimes[i]=droughtTimes[i]+1 end droughtTimes[res]=0 - --Update pool + -- Update pool -- print("Rem "..res) pool[r]=droughtList[rndGen:random(#droughtList)] -- print("Add "..pool[r]) @@ -126,10 +126,10 @@ local seqGenerators={ while true do while #P.nextQueue<10 do -- print"======================" - --Pick a mino from pool + -- Pick a mino from pool local tryTime=0 ::REPEAT_pickAgain:: - local r=_poolPick()--Random mino-index in pool + local r=_poolPick()-- Random mino-index in pool for i=1,len do if r==history[i] then tryTime=tryTime+1 @@ -139,7 +139,7 @@ local seqGenerators={ end end - --Give mino to player & update history + -- Give mino to player & update history if history[1]~=0 then P:getNext(seq0[r]) end @@ -263,7 +263,7 @@ local seqGenerators={ end end, } -return function(P)--Return a piece-generating function for player P +return function(P)-- Return a piece-generating function for player P local s=P.gameEnv.sequence if type(s)=='function' then return s diff --git a/parts/scenes/about.lua b/parts/scenes/about.lua index 190109e9..5abd4666 100644 --- a/parts/scenes/about.lua +++ b/parts/scenes/about.lua @@ -24,18 +24,18 @@ function scene.keyDown(key) end function scene.draw() - --Texts + -- Texts setFont(20) gc.setColor(COLOR.Z) for i=1,#text.aboutTexts do gc.print(text.aboutTexts[i],62,35*i) end - --Lib used + -- Lib used setFont(15) - gc.print(text.used,495,426)--❤Flandre❤ + gc.print(text.used,495,426)-- ❤Flandre❤ - --Logo + -- Logo gc.draw(TEXTURE.title,280,610,.1,.4+.03*sin(TIME()*2.6),nil,580,118) end diff --git a/parts/scenes/app_15p.lua b/parts/scenes/app_15p.lua index ed78300f..2d8a1edc 100644 --- a/parts/scenes/app_15p.lua +++ b/parts/scenes/app_15p.lua @@ -198,31 +198,31 @@ local frontColor={ COLOR.lG,COLOR.lB,COLOR.lB,COLOR.lB, COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV, COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV, - },--Colored(rank) + },-- Colored(rank) rainbow={ COLOR.lR,COLOR.lR,COLOR.lR,COLOR.lR, COLOR.lO,COLOR.lY,COLOR.lY,COLOR.lY, COLOR.lO,COLOR.lG,COLOR.lB,COLOR.lB, COLOR.lO,COLOR.lG,COLOR.lB,COLOR.lB, - },--Rainbow(rank) + },-- Rainbow(rank) color2={ COLOR.lR,COLOR.lR,COLOR.lR,COLOR.lR, COLOR.lB,COLOR.lB,COLOR.lB,COLOR.lB, COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV, COLOR.lG,COLOR.lY,COLOR.lV,COLOR.lV, - },--Colored(row) + },-- Colored(row) gray={ COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, - },--Gray + },-- Gray black={ COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, COLOR.Z,COLOR.Z,COLOR.Z,COLOR.Z, - },--Black + },-- Black } local backColor={ color1={ @@ -230,31 +230,31 @@ local backColor={ COLOR.dG,COLOR.dB,COLOR.dB,COLOR.dB, COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP, COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP, - },--Colored(rank) + },-- Colored(rank) rainbow={ COLOR.dR,COLOR.dR,COLOR.dR,COLOR.dR, COLOR.dO,COLOR.dY,COLOR.dY,COLOR.dY, COLOR.dO,COLOR.dG,COLOR.dB,COLOR.dB, COLOR.dO,COLOR.dG,COLOR.dB,COLOR.dB, - },--Rainbow(rank) + },-- Rainbow(rank) color2={ COLOR.dR,COLOR.dR,COLOR.dR,COLOR.dR, COLOR.dB,COLOR.dB,COLOR.dB,COLOR.dB, COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP, COLOR.dG,COLOR.dY,COLOR.dP,COLOR.dP, - },--Colored(row) + },-- Colored(row) gray={ COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH, COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH, COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH, COLOR.dH,COLOR.dH,COLOR.dH,COLOR.dH, - },--Gray + },-- Gray black={ COLOR.D,COLOR.D,COLOR.D,COLOR.D, COLOR.D,COLOR.D,COLOR.D,COLOR.D, COLOR.D,COLOR.D,COLOR.D,COLOR.D, COLOR.D,COLOR.D,COLOR.D,COLOR.D, - },--Black + },-- Black } function scene.draw() FONT.set(40) @@ -266,15 +266,15 @@ function scene.draw() gc.print(push,1026,180) if state==2 then - --Draw no-setting area + -- Draw no-setting area gc.setColor(1,0,0,.3) gc.rectangle('fill',15,295,285,340) - gc.setColor(.9,.9,0)--win + gc.setColor(.9,.9,0)-- win elseif state==1 then - gc.setColor(.9,.9,.9)--game + gc.setColor(.9,.9,.9)-- game elseif state==0 then - gc.setColor(.2,.8,.2)--ready + gc.setColor(.2,.8,.2)-- ready end gc.setLineWidth(10) gc.rectangle('line',313,33,654,654,18) diff --git a/parts/scenes/app_2048.lua b/parts/scenes/app_2048.lua index 6066e175..f642a4fe 100644 --- a/parts/scenes/app_2048.lua +++ b/parts/scenes/app_2048.lua @@ -54,13 +54,13 @@ local tileColor={ {.22,.19,.17}, } local tileFont={ - 80,80,80,--2/4/8 - 70,70,70,--16/32/64 - 60,60,60,--128/256/512 - 55,55,55,55,--1024/2048/4096/8192 - 50,50,50,--16384/32768/65536 - 45,45,45,--131072/262144/524288 - 30,--1048576 + 80,80,80,-- 2/4/8 + 70,70,70,-- 16/32/64 + 60,60,60,-- 128/256/512 + 55,55,55,55,-- 1024/2048/4096/8192 + 50,50,50,-- 16384/32768/65536 + 45,45,45,-- 131072/262144/524288 + 30,-- 1048576 } local tileName={[0]="X","2","4","8","16","32","64","128","256","512","1024","2048","4096","8192","16384","32768","65536","131072","262144","524288","2^20"} local function airExist() @@ -71,7 +71,7 @@ local function airExist() end end local function newTile() - --Select position & generate number + -- Select position & generate number nextPos=(nextPos+6)%16+1 while board[nextPos] do nextPos=(nextPos-4)%16+1 @@ -80,11 +80,11 @@ local function newTile() prevPos=nextPos prevSpawnTime=0 - --Fresh score + -- Fresh score score=score+2^nextTile TEXT.show("+"..2^nextTile,1130+rnd(-60,60),575+rnd(-30,30),30,'score',1.5) - --Generate next number + -- Generate next number nextCD=nextCD-1 if nextCD>0 then nextTile=1 @@ -93,10 +93,10 @@ local function newTile() nextCD=rnd(8,12) end - --Check if board is full + -- Check if board is full if airExist() then return end - --Check if board is locked in all-directions + -- Check if board is locked in all-directions for i=1,12 do if board[i]==board[i+4] then return @@ -112,7 +112,7 @@ local function newTile() end end - --Die. + -- Die. state=2 SFX.play(maxTile>=10 and 'win' or 'fail') end @@ -139,10 +139,10 @@ local function squash(L) p1=p1+1 end else - if not L[p1] then--air←2 + if not L[p1] then-- air←2 L[p1],L[p2]=L[p2],false moved=true - elseif L[p1]==L[p2] then--2←2 + elseif L[p1]==L[p2] then-- 2←2 L[p1],L[p2]=L[p1]+1,false if L[p1]>maxTile then freshMaxTile() @@ -150,11 +150,11 @@ local function squash(L) L[p2]=false p1=p1+1 moved=true - elseif p1+1~=p2 then--2←4 + elseif p1+1~=p2 then-- 2←4 L[p1+1],L[p2]=L[p2],false p1=p1+1 moved=true - else--2,4 + else-- 2,4 p1=p1+1 end end @@ -351,14 +351,14 @@ function scene.draw() gc.print(("%.3f"):format(time),1000,10) gc.print(move,1000,45) - --Progress time list + -- Progress time list setFont(20) setColor(.6,.6,.6) for i=1,#progress do gc.print(progress[i],1000,65+20*i) end - --Repeater + -- Repeater gc.setLineWidth(6) setFont(25) for i=1,2 do @@ -377,27 +377,27 @@ function scene.draw() gc.print(repeater.seq[i],1000,313+60*i) end - --Score + -- Score setFont(40) setColor(1,.7,.7) GC.mStr(score,1130,510) - --Messages + -- Messages if state==2 then - --Draw no-setting area + -- Draw no-setting area setColor(1,0,0,.3) rectangle('fill',15,265,285,140) - setColor(.9,.9,0)--win + setColor(.9,.9,0)-- win elseif state==1 then - setColor(.9,.9,.9)--game + setColor(.9,.9,.9)-- game elseif state==0 then - setColor(.2,.8,.2)--ready + setColor(.2,.8,.2)-- ready end gc.setLineWidth(10) rectangle('line',310,30,660,660) - --Board + -- Board for i=1,16 do if board[i] then local x,y=1+(i-1)%4,int((i+3)/4) @@ -429,7 +429,7 @@ function scene.draw() end end - --Next indicator + -- Next indicator setColor(1,1,1) if nextCD<=12 then for i=1,nextCD do @@ -437,7 +437,7 @@ function scene.draw() end end - --Next + -- Next setFont(40) gc.print("Next",50,195) if nextTile>1 then @@ -446,27 +446,27 @@ function scene.draw() setFont(70) GC.mStr(tileName[nextTile],220,175) - --Skip CoolDown + -- Skip CoolDown if skipper.cd and skipper.cd>0 then setFont(50) setColor(1,1,.5) GC.mStr(skipper.cd,155,600) end - --Skip mark + -- Skip mark if skipper.used then setColor(1,1,.5) gc.circle('fill',280,675,10) end - --New tile position + -- New tile position local x,y=1+(prevPos-1)%4,int((prevPos+3)/4) gc.setLineWidth(8) setColor(.2,.8,0,prevSpawnTime) local d=25-prevSpawnTime*25 rectangle('line',x*160+163-d,y*160-117-d,154+2*d,154+2*d,15) - --Touch control border line + -- Touch control border line if tapControl then gc.setLineWidth(6) setColor(1,1,1,.2) diff --git a/parts/scenes/app_AtoZ.lua b/parts/scenes/app_AtoZ.lua index 90fbbbb5..aff7a8d1 100644 --- a/parts/scenes/app_AtoZ.lua +++ b/parts/scenes/app_AtoZ.lua @@ -96,11 +96,11 @@ function scene.draw() end if state==2 then - gc.setColor(.9,.9,0)--win + gc.setColor(.9,.9,0)-- win elseif state==1 then - gc.setColor(.9,.9,.9)--game + gc.setColor(.9,.9,.9)-- game elseif state==0 then - gc.setColor(.2,.8,.2)--ready + gc.setColor(.2,.8,.2)-- ready end FONT.set(100) diff --git a/parts/scenes/app_UTTT.lua b/parts/scenes/app_UTTT.lua index db9f8e7c..1d0f0a24 100644 --- a/parts/scenes/app_UTTT.lua +++ b/parts/scenes/app_UTTT.lua @@ -130,15 +130,15 @@ scene.touchUp=scene.mouseDown function scene.draw() gc.push('transform') - --origin pos:0,140; scale:4 + -- origin pos:0,140; scale:4 gc.translate(280,0) gc.scale(8) - --Draw board + -- Draw board gc.setColor(COLOR.dX) gc.rectangle('fill',0,0,90,90) - --Draw target area + -- Draw target area gc.setColor(1,1,1,math.sin((TIME()-placeTime)*5)*.1+.15) if target then gc.rectangle('fill',(target-1)%3*30,int((target-1)/3)*30,30,30) @@ -146,7 +146,7 @@ function scene.draw() gc.rectangle('fill',0,0,90,90) end - --Draw cursor + -- Draw cursor if curX then gc.setColor(1,1,1,.3) gc.rectangle('fill',(curX-1)%3*30+(curx-1)%3*10-.5,int((curX-1)/3)*30+int((curx-1)/3)*10-.5,11,11) @@ -181,7 +181,7 @@ function scene.draw() end end - --Draw board line + -- Draw board line gc.setLineWidth(.8) for x=0,9 do gc.setColor(1,1,1,x%3==0 and 1 or .3) @@ -189,7 +189,7 @@ function scene.draw() gc.line(0,10*x,90,10*x) end - --Draw last pos + -- Draw last pos if lastX then gc.setColor(.5,1,.4,.8) local r=.5+.5*math.sin(TIME()*6.26) @@ -198,7 +198,7 @@ function scene.draw() gc.pop() if gameover then - --Draw result + -- Draw result FONT.set(60) if gameover==0 then gc.setColor(1,.6,.6) @@ -211,7 +211,7 @@ function scene.draw() GC.mStr("TIE",1140,240) end else - --Draw current round mark + -- Draw current round mark gc.setColor(COLOR.X) gc.rectangle('fill',80,80,160,160) gc.setColor(COLOR.Z) diff --git a/parts/scenes/app_calc.lua b/parts/scenes/app_calc.lua index 1a5cd949..2c79a14a 100644 --- a/parts/scenes/app_calc.lua +++ b/parts/scenes/app_calc.lua @@ -12,9 +12,9 @@ local keySounds={ local scene={} -local reg--register -local val--result value -local sym--symbol +local reg-- register +local val-- result value +local sym-- symbol local function _autoReturn() if reg and sym then diff --git a/parts/scenes/app_cannon.lua b/parts/scenes/app_cannon.lua index a6fd855c..99a6711e 100644 --- a/parts/scenes/app_cannon.lua +++ b/parts/scenes/app_cannon.lua @@ -75,24 +75,24 @@ function scene.update() end local scoreColor={ - 'Z',--0 - 'A',--20 - 'N',--40 - 'B',--60 - 'P',--80 - 'W',--100 - 'R','F','O','Y','lA',--200 - 'lN','lB','lP','lW','lR',--300 - 'lF','lO','lY','dA','dN',--400 - 'dB','dP','dW','dR','dF',--500 - 'dY','lH','H','dH',--before 600, black after + 'Z',-- 0 + 'A',-- 20 + 'N',-- 40 + 'B',-- 60 + 'P',-- 80 + 'W',-- 100 + 'R','F','O','Y','lA',-- 200 + 'lN','lB','lP','lW','lR',-- 300 + 'lF','lO','lY','dA','dN',-- 400 + 'dB','dP','dW','dR','dF',-- 500 + 'dY','lH','H','dH',-- before 600, black after } function scene.draw() - --Spawn area + -- Spawn area gc.setColor(1,1,1,.2) gc.rectangle('fill',85,0,190,720) - --Power & Angle + -- Power & Angle gc.setColor(COLOR.Z) if state~=2 then gc.setLineWidth(2) @@ -104,7 +104,7 @@ function scene.draw() end end - --Info + -- Info FONT.set(40) if combo>1 then gc.setColor(1,1,.6) @@ -113,15 +113,15 @@ function scene.draw() gc.setColor(COLOR[scoreColor[int(score/20)+1] or 'D']) gc.print(score,300,30) - --Cannon ball + -- Cannon ball gc.circle('fill',x,y,15) - --Arrow + -- Arrow if y<-15 then gc.print("↑",x-20.5,0) end - --Target + -- Target gc.setColor(1,1,.4) gc.circle('fill',ex,ey,15) end diff --git a/parts/scenes/app_console.lua b/parts/scenes/app_console.lua index 344b3872..666da08c 100644 --- a/parts/scenes/app_console.lua +++ b/parts/scenes/app_console.lua @@ -27,13 +27,13 @@ local commands={} do details: an array of strings containing documents, shows when user types 'help [command]'. ]] - local cmdList={}--List of all non-alias commands + local cmdList={}-- List of all non-alias commands - --Basic + -- Basic commands.help={ code=function(arg) if #arg>0 then - --help [command] + -- help [command] if commands[arg] then if commands[arg].description then log{C.H,("%s"):format(commands[arg].description)} @@ -47,7 +47,7 @@ local commands={} do log{C.Y,("No command called '%s'"):format(arg)} end else - --help + -- help for i=1,#cmdList do local cmd=cmdList[i] local body=commands[cmd] @@ -111,8 +111,8 @@ local commands={} do }, } - --File - do--tree + -- File + do-- tree local function tree(path,name,depth) local info=love.filesystem.getInfo(path..name) if info.type=='file' then @@ -144,7 +144,7 @@ local commands={} do }, } end - do--del + do-- del local function delFile(name) if love.filesystem.remove(name) then log{C.Y,("Deleted: '%s'"):format(name)} @@ -231,7 +231,7 @@ local commands={} do end commands.mv={ code=function(arg) - --Check arguments + -- Check arguments arg=arg:split(" ") if #arg>2 then log{C.lY,"Warning: file names must have no spaces"} @@ -241,7 +241,7 @@ local commands={} do return end - --Check file exist + -- Check file exist local info info=love.filesystem.getInfo(arg[1]) if not (info and info.type=='file') then @@ -254,21 +254,21 @@ local commands={} do return end - --Read file + -- Read file local data,err1=love.filesystem.read('data',arg[1]) if not data then log{C.R,("Failed to read file '%s': "):format(arg[1],err1 or "Unknown error")} return end - --Write file + -- Write file local res,err2=love.filesystem.write(arg[2],data) if not res then log{C.R,("Failed to write file: "):format(err2 or "Unknown error")} return end - --Delete file + -- Delete file if not love.filesystem.remove(arg[1]) then log{C.R,("Failed to delete old file ''"):format(arg[1])} return @@ -315,7 +315,7 @@ local commands={} do }, } - --System + -- System commands.crash={ code=function() error("ERROR") end, description="Manually crash the game", @@ -545,7 +545,7 @@ local commands={} do "Usage: support", }, } - do--app + do-- app local APPs={ { code="calc", @@ -754,7 +754,7 @@ local commands={} do end, } - --Game + -- Game commands.rmconf={ code=function(key) if #key>0 then @@ -869,7 +869,7 @@ local commands={} do description="Show a random tip", } - --Network + -- Network commands.switchhost={ code=function(arg) arg=arg:split(" ") @@ -944,7 +944,7 @@ local combKey={ end, } ---Environment for user's function +-- Environment for user's function local userG={ timer=TIME, @@ -992,7 +992,7 @@ setmetatable(userG.package,dangerousLibMeta) setmetatable(userG.io,dangerousLibMeta) setmetatable(userG.os,dangerousLibMeta) ---Puzzle box +-- Puzzle box local first_key={} local fleg={ pw=the_secret, @@ -1028,16 +1028,16 @@ function scene.keyDown(key) local input=STRING.trim(inputBox:getText()) if input=="" then return end - --Write History + -- Write History ins(history,input) if history[27] then rem(history,1) end hisPtr=nil - --Execute + -- Execute if input:byte()==35 then - --Execute lua code + -- Execute lua code log{C.lC,"> "..input} local code,err=loadstring(input:sub(2)) if code then @@ -1062,7 +1062,7 @@ function scene.keyDown(key) log{C.R,"[SyntaxErr] ",C.R,err} end else - --Execute builtin command + -- Execute builtin command log{C.lS,"> "..input} local p=input:find(" ") local cmd,arg @@ -1081,7 +1081,7 @@ function scene.keyDown(key) end inputBox:clear() - --Insert empty line + -- Insert empty line log"" elseif key=='up' then if not hisPtr then diff --git a/parts/scenes/app_cubefield.lua b/parts/scenes/app_cubefield.lua index 25d8a73a..9ec7fdec 100644 --- a/parts/scenes/app_cubefield.lua +++ b/parts/scenes/app_cubefield.lua @@ -125,7 +125,7 @@ function scene.update(dt) if dt>.06 then dt=.06 end dt=dt*600 - --Update cubes' position + -- Update cubes' position local cy=cubesY local step=speed*dt*.005 for i=1,40 do @@ -141,7 +141,7 @@ function scene.update(dt) end end - --Collision detect + -- Collision detect if play then for j=1,40 do local i=(j+lastCube-2)%40+1 @@ -159,7 +159,7 @@ function scene.update(dt) end end - --Screen rotation + -- Screen rotation if moveDir~=0 then player=player+moveDir*dt*.003*speed^.8 if abs(rot)<.16 or moveDir*rot>0 then @@ -220,42 +220,42 @@ local function _sunStencil() gc.rectangle('fill',-60,-440,120,120) end function scene.draw() - --Health bar + -- Health bar if life1>0 then gc.setColor(1,0,0) gc.rectangle('fill',640-life1*.64,710,life1*1.28,10) end - --Draw player + -- Draw player if play and inv%8<4 then gc.setColor(COLOR.Z) gc.rectangle('fill',620,670,40,40) end - --Set screen rotation + -- Set screen rotation gc.push('transform') gc.translate(640,690) gc.rotate(rot) - --Draw sun + -- Draw sun gc.setStencilTest('notequal',1) gc.stencil(_sunStencil) gc.setColor(.7,.5,.3) gc.circle('fill',0,-380-sunH,60) gc.setStencilTest() - --Draw direction + -- Draw direction if play then gc.setLineWidth(3) gc.setColor(1,1,1,.1) gc.polygon('fill',-15,30,0,-440,15,30) end - --Draw Horizon/Direction + -- Draw Horizon/Direction gc.setColor(COLOR.Z) gc.line(-942,-440,942,-440) - --Draw cubes + -- Draw cubes for j=1,40 do local i=(j+lastCube-2)%40+1 local Y=cubesY[i] @@ -273,7 +273,7 @@ function scene.draw() end end - --Draw menu + -- Draw menu if play then setFont(60) mStr(int(score),-300,-640) diff --git a/parts/scenes/app_dropper.lua b/parts/scenes/app_dropper.lua index 3b51556a..a9357bc3 100644 --- a/parts/scenes/app_dropper.lua +++ b/parts/scenes/app_dropper.lua @@ -2,9 +2,9 @@ local gc=love.graphics local rnd,int,max=math.random,math.floor,math.max local setFont,mStr=FONT.set,GC.mStr ---This mini-game is written for TI-nSpire CX CAS many years ago. ---Deliberately, some grammar mistakes and typos in the 'great' list remained. ---So no need to correct them. +-- This mini-game is written for TI-nSpire CX CAS many years ago. +-- Deliberately, some grammar mistakes and typos in the 'great' list remained. +-- So no need to correct them. local perfect={"Perfect!","Excellent!","Nice!","Good!","Great!","Just!","300"} local great={"Pay attention!","Be carefully!","Teacher behind you!","Feel tired?","You are in danger!","Do your homework!","A good game!","Minecraft!","y=ax^2+bx+c!","No music?","Internet unavailable.","It's raining!","Too hard!","Shorter?","Higher!","English messages!","Hi!","^_^","Drop!","Colorful!",":)","100$","~~~wave~~~","★★★","中文!","NOW!!!!!","Also try the TEN!","I'm a programer!","Also try minesweeperZ!","This si Dropper!","Hold your calculatoor!","Look! UFO!","Bonjour!","[string]","Author:MrZ","Boom!","PvZ!","China!","TI-nspire!","I love LUA!"} @@ -175,7 +175,7 @@ backColor.__index=function(t,lv) end setmetatable(backColor,backColor) function scene.draw() - --Background + -- Background local lv,height=int(camY/700),camY%700 gc.setColor(backColor[lv+1] or COLOR.D) gc.rectangle('fill',0,720,1280,height-700) @@ -205,7 +205,7 @@ function scene.draw() gc.print("Ported / Rewritten / Balanced by MrZ",740,260) end if state~='menu' then - --High floor + -- High floor gc.setColor(COLOR.Z) gc.setLineWidth(2) local y=690+camY-30*highFloor diff --git a/parts/scenes/app_dtw.lua b/parts/scenes/app_dtw.lua index 41644d92..71722904 100644 --- a/parts/scenes/app_dtw.lua +++ b/parts/scenes/app_dtw.lua @@ -20,7 +20,7 @@ local keyTime local speed,maxSpeed local arcade,rollSpeed -local reset=error--function, defined later +local reset=error-- function, defined later local bgm="secret7th" local tileColor="black" @@ -134,37 +134,37 @@ local generator={ Singlestream=function() ins(pos,get1(pos[#pos] or 0)) end, - Light_Jumpstream=function()--2111 + Light_Jumpstream=function()-- 2111 ins(pos,get2(pos[#pos] or 0)) ins(pos,get1(pos[#pos])) ins(pos,get1(pos[#pos])) ins(pos,get1(pos[#pos])) end, - Dense_Jumpstream=function()--2121 + Dense_Jumpstream=function()-- 2121 ins(pos,get2(pos[#pos] or 0)) ins(pos,get1(pos[#pos])) ins(pos,get2(pos[#pos])) ins(pos,get1(pos[#pos])) end, - Light_Handstream=function()--3111 + Light_Handstream=function()-- 3111 ins(pos,get3(pos[#pos] or 0)) ins(pos,get1(pos[#pos])) ins(pos,get1(pos[#pos])) ins(pos,get1(pos[#pos])) end, - Dense_Handstream=function()--3121 + Dense_Handstream=function()-- 3121 ins(pos,get3(pos[#pos] or 0)) ins(pos,get1(pos[#pos])) ins(pos,get2(pos[#pos])) ins(pos,get1(pos[#pos])) end, - Light_Quadstream=function()--4111 + Light_Quadstream=function()-- 4111 ins(pos,1234) ins(pos,get1(pos[#pos-1] or 0)) ins(pos,get1(pos[#pos])) ins(pos,get1(pos[#pos])) end, - Quadstream=function()--4121 + Quadstream=function()-- 4121 ins(pos,1234) ins(pos,get1(pos[#pos-1] or 0)) ins(pos,get2(pos[#pos])) @@ -306,36 +306,36 @@ local function boardStencil() gc.rectangle('fill',300,0,680,720) end function scene.draw() setFont(50) if arcade then - --Draw rolling speed + -- Draw rolling speed mStr(("%.2f/s"):format(rollSpeed/2),155,490) else - --Draw speed + -- Draw speed setFont(45) gc.setColor(1,.6,.6) mStr(("%.2f"):format(maxSpeed/60),155,460) gc.setColor(COLOR.Z) mStr(("%.2f"):format(speed/60),155,520) - --Progress time list + -- Progress time list setFont(30) gc.setColor(.6,.6,.6) for i=1,#progress do gc.print(progress[i],1030,120+25*i) end - --Draw time + -- Draw time gc.setColor(COLOR.Z) setFont(45) gc.print(("%.3f"):format(time),1030,70) end - --Draw mode + -- Draw mode if state~=0 then gc.setColor(COLOR.Z) setFont(30)mStr(mode,155,212) end - --Draw tiles + -- Draw tiles gc.stencil(boardStencil) gc.setStencilTest('equal',1) gc.rectangle('fill',300,0,680,720) @@ -351,7 +351,7 @@ function scene.draw() end gc.pop() gc.setStencilTest() - --Draw track line + -- Draw track line gc.setColor(COLOR.D) gc.setLineWidth(2) for x=1,5 do @@ -363,13 +363,13 @@ function scene.draw() gc.line(300,y,980,y) end - --Draw red tile + -- Draw red tile if diePos then gc.setColor(1,.2,.2) gc.rectangle('fill',130+170*diePos+8,600-height+8,170-16,120-16) end - --Draw score + -- Draw score setFont(100) gc.push('transform') gc.translate(640,26) diff --git a/parts/scenes/app_link.lua b/parts/scenes/app_link.lua index ba8d5f7e..5d0e75f1 100644 --- a/parts/scenes/app_link.lua +++ b/parts/scenes/app_link.lua @@ -72,7 +72,7 @@ local function resetBoard() local colors=levels[level].color field.c,field.r=levels[level].c,levels[level].r - local total=field.r*field.c/2--Total cell count + local total=field.r*field.c/2-- Total cell count local pool=TABLE.new(int(total/colors),colors) for i=1,total%colors do pool[i]=pool[i]+1 end for i=1,#pool do pool[i]=pool[i]*2 end @@ -117,7 +117,7 @@ local function addPoint(list,x,y) end end local function checkLink(x1,y1,x2,y2) - --Y-X-Y Check + -- Y-X-Y Check local bestLen,bestLine=1e99,false do if x1>x2 then x1,y1,x2,y2=x2,y2,x1,y1 end @@ -141,7 +141,7 @@ local function checkLink(x1,y1,x2,y2) ::CONTINUE_nextRow:: end end - --X-Y-X Check + -- X-Y-X Check do if y1>y2 then x1,y1,x2,y2=x2,y2,x1,y1 end local ulx,urx,dlx,drx=x1,x1,x2,x2 @@ -177,18 +177,18 @@ local function tap(x,y) if line then ins(lines,{time=0,line=line}) - --Clear + -- Clear field[y][x]=false field[selY][selX]=false field.remain=field.remain-1 field.full=false - --Score + -- Score local s=1000+int(combo^.9) score=score+s TEXT.show("+"..s,1205,600,20,'score') - --Combo + -- Combo if comboTime==0 then combo=0 noComboBreak=false @@ -197,7 +197,7 @@ local function tap(x,y) combo=combo+1 if combo>maxCombo then maxCombo=combo end - --Check win + -- Check win if field.remain==0 then if noComboBreak then SFX.play('emit') @@ -295,15 +295,15 @@ end function scene.draw() gc.push('transform') - --Camera + -- Camera gc.translate(field.x,field.y) gc.scale(field.w/field.c,field.h/field.r) - --Background + -- Background gc.setColor(COLOR.dX) gc.rectangle('fill',0,0,field.w,field.h) - --Matrix + -- Matrix local mono=state==0 or invis and not field.full if mono then gc_setColor(COLOR.dH) @@ -328,51 +328,51 @@ function scene.draw() end end - --Selecting box + -- Selecting box gc.setLineWidth(.1) if selX then gc_setColor(1,1,1) gc_rectangle('line',selX-1+.05,selY-1+.05,.9,.9) end - --Clearing lines + -- Clearing lines gc.translate(-.5,-.5) for i=1,#lines do gc_setColor(1,1,1,1-lines[i].time) gc.line(lines[i].line) end gc.pop() - --Frame + -- Frame if state==2 then - gc.setColor(.9,.9,0)--win + gc.setColor(.9,.9,0)-- win elseif state==1 then - gc.setColor(.9,.9,.9)--game + gc.setColor(.9,.9,.9)-- game elseif state==0 then - gc.setColor(.2,.8,.2)--ready + gc.setColor(.2,.8,.2)-- ready end gc.setLineWidth(6) gc.rectangle('line',field.x-5,field.y-5,field.w+10,field.h+10) - --Draw no-setting area + -- Draw no-setting area if state==2 then gc.setColor(1,0,0,.3) gc.rectangle('fill',0,100,155,80) end - --Maxcombo + -- Maxcombo setFont(20)gc.setColor(COLOR.dF) gc.print(maxCombo,1142,1) - --Time + -- Time setFont(30)gc.setColor(COLOR.Z) gc.print(("%.3f"):format(time),1140,20) - --Progress time list + -- Progress time list setFont(15)gc.setColor(.6,.6,.6) for i=1,#progress do gc.print(progress[i],1140,40+20*i) end - --Combo Rectangle + -- Combo Rectangle if comboTime>0 then local r=32*comboTime^.3 gc.setColor(1,1,1,min(.6+comboTime,1)*.25) @@ -382,7 +382,7 @@ function scene.draw() gc.rectangle('line',1205-r,440-r,2*r,2*r,4) end - --Combo Text + -- Combo Text setFont(60) if combo>50 then gc.setColor(1,.2,.2,min(.3+comboTime*.5,1)*min(comboTime,1)) @@ -391,7 +391,7 @@ function scene.draw() gc.setColor(1,1,max(1-combo*.001,.5),min(.4+comboTime,1)) mStr(combo,1205,398) - --Score + -- Score setFont(25)gc.setColor(COLOR.Z) mStr(score1,1205,560) end diff --git a/parts/scenes/app_memorize.lua b/parts/scenes/app_memorize.lua index 938d8f7f..ca8d43d6 100644 --- a/parts/scenes/app_memorize.lua +++ b/parts/scenes/app_memorize.lua @@ -1,6 +1,6 @@ local gc=love.graphics -local state--0=playing, 1=gameover +local state-- 0=playing, 1=gameover local timeUsed local level local showNum diff --git a/parts/scenes/app_piano.lua b/parts/scenes/app_piano.lua index 75af6866..fdb22c32 100644 --- a/parts/scenes/app_piano.lua +++ b/parts/scenes/app_piano.lua @@ -19,7 +19,7 @@ function scene.sceneInit() end function scene.touchDown(x,y,k) - --TODO + -- TODO end scene.mouseDown=scene.touchDown diff --git a/parts/scenes/app_polyforge.lua b/parts/scenes/app_polyforge.lua index ec6c9c25..ee1a8f56 100644 --- a/parts/scenes/app_polyforge.lua +++ b/parts/scenes/app_polyforge.lua @@ -49,11 +49,11 @@ function scene.keyDown(key,isRep) SCN.back() end elseif key=='space' then - if state==0 then--main + if state==0 then-- main if timer==0 then state=1 end - elseif state==3 then--play + elseif state==3 then-- play local c=(math.floor((pos-ang)*side/tau)-1)%side+1 if hit[c]==0 then hit[c]=1 @@ -87,12 +87,12 @@ function scene.touchDown() end function scene.update() - if state==0 then--main + if state==0 then-- main ang=ang-.02 if ang>0 then ang=ang-tau end if pos0 then timer=timer-1 end - elseif state==1 or state==2 then--zoom + elseif state==1 or state==2 then-- zoom ang=ang+.02+timer/260 pos=pos-.016 if ang>0 then ang=ang-tau end @@ -115,7 +115,7 @@ function scene.update() state=3 end end - elseif state==3 then--play + elseif state==3 then-- play ang=ang+.02 pos=pos-.016 if ang>0 then diff --git a/parts/scenes/app_pong.lua b/parts/scenes/app_pong.lua index a0531c0e..66ad05cf 100644 --- a/parts/scenes/app_pong.lua +++ b/parts/scenes/app_pong.lua @@ -8,11 +8,11 @@ local rnd=math.random local scene={} local state -local bx,by=640,360--Ball posotion -local vx,vy=0,0--Ball velocity -local ry=0--Rotation Y +local bx,by=640,360-- Ball posotion +local vx,vy=0,0-- Ball velocity +local ry=0-- Rotation Y -local p1,p2--Player data +local p1,p2-- Player data function scene.sceneInit() BG.set('none') @@ -70,9 +70,9 @@ end function scene.touchMove(x,y)(x<640 and p1 or p2).y0=y end function scene.mouseMove(x,y)(x<640 and p1 or p2).y0=y end ---Rect Area X:150~1130 Y:20~700 +-- Rect Area X:150~1130 Y:20~700 function scene.update() - --Update pads + -- Update pads local P=p1 while P do if P.y0 then @@ -105,7 +105,7 @@ function scene.update() P=P==p1 and p2 end - --Update ball + -- Update ball bx,by=bx+vx,by+vy if ry~=0 then if ry>0 then @@ -116,7 +116,7 @@ function scene.update() vy=vy+.1 end end - if state==1 then--Playing + if state==1 then-- Playing if bx<160 or bx>1120 then P=bx<160 and p1 or p2 local d=by-P.y @@ -134,7 +134,7 @@ function scene.update() vy,ry=-vy,-ry SFX.play('collect') end - elseif state==2 then--Game over + elseif state==2 then-- Game over if bx<-120 or bx>1400 or by<-40 or by>760 then P=bx>640 and p1 or p2 P.score=P.score+1 @@ -150,25 +150,25 @@ function scene.update() end function scene.draw() - --Draw score + -- Draw score gc.setColor(.4,.4,.4) FONT.set(100) GC.mStr(p1.score,470,20) GC.mStr(p2.score,810,20) - --Draw boundary + -- Draw boundary gc.setColor(COLOR.Z) gc.setLineWidth(4) gc.line(134,20,1146,20) gc.line(134,700,1146,700) - --Draw ball & speed line + -- Draw ball & speed line gc.setColor(1,1,1-abs(ry)*.16) gc.circle('fill',bx,by,10) gc.setColor(1,1,1,.1) gc.line(bx+vx*22,by+vy*22,bx+vx*30,by+vy*30) - --Draw pads + -- Draw pads gc.setColor(1,.8,.8) gc.rectangle('fill',134,p1.y-50,16,100) gc.setColor(.8,.8,1) diff --git a/parts/scenes/app_reflect.lua b/parts/scenes/app_reflect.lua index 947ecb3e..c8391212 100644 --- a/parts/scenes/app_reflect.lua +++ b/parts/scenes/app_reflect.lua @@ -31,12 +31,12 @@ function scene.keyDown(key,isRep) elseif state==2 and #key==1 then key=("qapl"):find(key,nil,true) if key then - --BEAUTIFUL LOGIC BELOW: + -- BEAUTIFUL LOGIC BELOW: - --early = error, [UP-key]==[target is up] = correct sfx, else = wrong sfx + -- early = error, [UP-key]==[target is up] = correct sfx, else = wrong sfx SFX.play(ct>6 and 'finesseError' or key%2==1==up and 'reach' or 'fail') - --(early && P2-key || not early && [P1-key]==[target is up]) = P1 win, else P2 win + -- (early && P2-key || not early && [P1-key]==[target is up]) = P1 win, else P2 win if ct>6 and key>2 or ct<=6 and key%4<2==up then winner=1; s1=s1+1 else @@ -56,20 +56,20 @@ function scene.touchDown(x,y) ) end function scene.update() - if state==0 then--Menu + if state==0 then-- Menu if ct>0 then ct=ct-1 elseif rnd()<.00626 then ct=30 end - elseif state==1 then--Waiting + elseif state==1 then-- Waiting ct=ct-1 if ct==0 then ct=rnd(26,162) up=rnd()<.5 state=2 end - elseif state==2 then--Winking + elseif state==2 then-- Winking ct=ct-1 if ct==0 then ct=6 end elseif state==3 then @@ -85,21 +85,21 @@ function scene.update() end end function scene.draw() - --Dividing line + -- Dividing line gc.setLineWidth(10) gc.setColor(1,1,1,.9) gc.line(640,0,640,720) gc.setColor(1,1,1,.3) gc.line(500,360,780,360) - --Help + -- Help setFont(100) mStr("Q",80,100) mStr("A",80,480) mStr("P",1200,100) mStr("L",1200,480) - --Score + -- Score setFont(80) gc.printf(s1,50,300,200) gc.printf(s2,1030,300,200,'right') diff --git a/parts/scenes/app_schulteG.lua b/parts/scenes/app_schulteG.lua index d2a4a716..cc1d040f 100644 --- a/parts/scenes/app_schulteG.lua +++ b/parts/scenes/app_schulteG.lua @@ -128,16 +128,16 @@ function scene.draw() gc.setColor(COLOR.dX) gc.rectangle('fill',310,30,660,660) if state==2 then - gc.setColor(.9,.9,0)--win + gc.setColor(.9,.9,0)-- win elseif state==1 then - gc.setColor(.9,.9,.9)--game + gc.setColor(.9,.9,.9)-- game elseif state==0 then - gc.setColor(.2,.8,.2)--ready + gc.setColor(.2,.8,.2)-- ready end gc.setLineWidth(10) gc.rectangle('line',310,30,660,660) - --Draw no-setting area + -- Draw no-setting area if state==2 then gc.setColor(1,0,0,.3) gc.rectangle('fill',15,295,285,250) diff --git a/parts/scenes/app_ten.lua b/parts/scenes/app_ten.lua index af17b033..128715f9 100644 --- a/parts/scenes/app_ten.lua +++ b/parts/scenes/app_ten.lua @@ -232,14 +232,14 @@ function scene.draw() gc.print(("%.3f"):format(time),1026,50) gc.print(score,1026,100) - --Progress time list + -- Progress time list setFont(25) setColor(.7,.7,.7) for i=1,#progress do gc.print(progress[i],1000,140+30*i) end - --Previews + -- Previews if nexts then gc.setColor(COLOR.dX) rectangle('fill',20,450,280,75) @@ -254,7 +254,7 @@ function scene.draw() end if state==2 then - --Draw no-setting area + -- Draw no-setting area setColor(1,0,0,.3) rectangle('fill',15,200,285,210) end diff --git a/parts/scenes/app_triple.lua b/parts/scenes/app_triple.lua index 15b8e4f1..126308f4 100644 --- a/parts/scenes/app_triple.lua +++ b/parts/scenes/app_triple.lua @@ -7,20 +7,20 @@ local ins,rem=table.insert,table.remove local setFont,mStr=FONT.set,GC.mStr local tileColor={ - [-2]=COLOR.R, --Bomb - [-1]=COLOR.H, --Stone - {.39, 1.0, .39},--Tile 1 - {.39, .39, 1.0},--Tile 2 - {1.0, .70, .31},--Tile 3 - {.94, .31, .31},--Tile 4 - {.00, .71, .12},--Tile 5 - {.90, .20, .90},--Tile 6 - {.94, .47, .39},--Tile 7 - {.90, .00, .00},--Tile 8 - {.86, .86, .31},--Tile 9 - {.78, .31, .00},--Tile 10 - {.78, .55, .04},--Tile 11 - {.12, .12, .51},--Tile 12 + [-2]=COLOR.R, -- Bomb + [-1]=COLOR.H, -- Stone + {.39, 1.0, .39},-- Tile 1 + {.39, .39, 1.0},-- Tile 2 + {1.0, .70, .31},-- Tile 3 + {.94, .31, .31},-- Tile 4 + {.00, .71, .12},-- Tile 5 + {.90, .20, .90},-- Tile 6 + {.94, .47, .39},-- Tile 7 + {.90, .00, .00},-- Tile 8 + {.86, .86, .31},-- Tile 9 + {.78, .31, .00},-- Tile 10 + {.78, .55, .04},-- Tile 11 + {.12, .12, .51},-- Tile 12 } local textColor={ [-2]=COLOR.dR, @@ -222,29 +222,29 @@ function player:drawBoard() gc.push('transform') gc.translate(self.x,self.y) - --Board background + -- Board background setColor(COLOR.dX) rectangle("fill",0,0,600,600) - --Hold slot + -- Hold slot setColor(0,1,1,.4) rectangle("fill",0,0,100,100) gc.setLineWidth(10) setColor(COLOR.lC) rectangle("line",5,5,90,90) - --Hold tile + -- Hold tile setFont(60) drawTile(1,1,self.hold) - --Board tiles + -- Board tiles local b=self.board for y=1,6 do for x=1,6 do drawTile(x,y,b[y][x]) end end - --Board lines + -- Board lines setColor(COLOR.Z) gc.setLineWidth(2) for x=1,5 do gc.line(x*100,0,x*100,600) end @@ -252,7 +252,7 @@ function player:drawBoard() gc.setLineWidth(6) rectangle("line",0,0,600,600) - --Select box + -- Select box if self.selectX then local c=tileColor[self.nexts[1]] setColor(c[1],c[2],c[3],.6+.3*math.sin(TIME()*9.29)) @@ -325,7 +325,7 @@ function scene.draw() gc.print(("%.3f"):format(player.time),1026,50) gc.print(player.score,1026,100) - --Progress time list + -- Progress time list setFont(25) setColor(.7,.7,.7) for i=1,#player.progress do diff --git a/parts/scenes/customGame.lua b/parts/scenes/customGame.lua index de9ba8e9..c6012833 100644 --- a/parts/scenes/customGame.lua +++ b/parts/scenes/customGame.lua @@ -127,13 +127,13 @@ function scene.draw() gc.translate(0,-WIDGET.scrollPos) setFont(30) - --Sequence + -- Sequence if #MISSION>0 then gc.setColor(1,CUSTOMENV.missionKill and 0 or 1,int(TIME()*6.26)%2) gc.print("#"..#MISSION,70,220) end - --Field content + -- Field content if #FIELD[1]>0 then gc.push('transform') gc.translate(330,240) @@ -159,7 +159,7 @@ function scene.draw() end end - --Sequence + -- Sequence if #BAG>0 then gc.setColor(1,1,int(TIME()*6.26)%2) gc.print("#"..#BAG,615,220) @@ -178,7 +178,7 @@ scene.widgetList={ WIDGET.newKey{name='reset', x=1110,y=90,w=230,h=90,color='R',code=pressKey'delete'}, WIDGET.newKey{name='mod', x=1110,y=200,w=230,h=90,color='Z',code=pressKey'f1'}, - --Mission / Field / Sequence + -- Mission / Field / Sequence WIDGET.newKey{name='mission', x=170,y=180,w=240,h=80,color='N',font=25,code=pressKey'm'}, WIDGET.newKey{name='field', x=450,y=180,w=240,h=80,color='A',font=25,code=pressKey'f'}, WIDGET.newKey{name='sequence', x=730,y=180,w=240,h=80,color='W',font=25,code=pressKey's'}, @@ -186,7 +186,7 @@ scene.widgetList={ WIDGET.newText{name='noMsn', x=50, y=220,align='L',color='H',hideF=function() return MISSION[1] end}, WIDGET.newText{name='defSeq', x=610,y=220,align='L',color='H',hideF=function() return BAG[1] end}, - --Selectors + -- Selectors WIDGET.newSelector{name='opponent', x=170,y=330,w=260,color='R',list=sList.opponent, disp=CUSval('opponent'), code=CUSsto('opponent')}, WIDGET.newSelector{name='life', x=170,y=410,w=260,color='R',list=sList.life, disp=CUSval('life'), code=CUSsto('life')}, WIDGET.newSelector{name='pushSpeed', x=170,y=520,w=260,color='V',list=sList.pushSpeed, disp=CUSval('pushSpeed'), code=CUSsto('pushSpeed')}, @@ -205,17 +205,17 @@ scene.widgetList={ WIDGET.newSelector{name='hurry', x=730,y=680,w=260,color='G',list=sList.hurry,disp=CUSval('hurry'),code=CUSsto('hurry')}, WIDGET.newSelector{name='hang', x=730,y=760,w=260,color='G',list=sList.hang,disp=CUSval('hang'),code=CUSsto('hang')}, - --Copy / Paste / Start + -- Copy / Paste / Start WIDGET.newButton{name='copy', x=1070,y=300,w=310,h=70,color='lR',font=25,code=pressKey'cC'}, WIDGET.newButton{name='paste', x=1070,y=380,w=310,h=70,color='lB',font=25,code=pressKey'cV'}, WIDGET.newButton{name='play_clear', x=1070,y=460,w=310,h=70,color='lY',font=35,code=pressKey'play1'}, WIDGET.newButton{name='play_puzzle', x=1070,y=540,w=310,h=70,color='lM',font=35,code=pressKey'play2',hideF=function() return #FIELD[1]==0 end}, WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=pressKey'escape'}, - --Rule set + -- Rule set WIDGET.newSelector{name='eventSet', x=1050,y=760,w=340,color='H',list=sList.eventSet,disp=CUSval('eventSet'),code=CUSsto('eventSet')}, - --Special rules + -- Special rules WIDGET.newSwitch{name='ospin', x=850, y=830, lim=210,disp=CUSval('ospin'), code=CUSrev('ospin')}, WIDGET.newSwitch{name='fineKill', x=850, y=890, lim=210,disp=CUSval('fineKill'), code=CUSrev('fineKill')}, WIDGET.newSwitch{name='b2bKill', x=850, y=950, lim=210,disp=CUSval('b2bKill'), code=CUSrev('b2bKill')}, @@ -224,14 +224,14 @@ scene.widgetList={ WIDGET.newSwitch{name='deepDrop', x=1170,y=890, lim=250,disp=CUSval('deepDrop'), code=CUSrev('deepDrop')}, WIDGET.newSwitch{name='bone', x=1170,y=950, lim=250,disp=CUSval('bone'), code=CUSrev('bone')}, - --Next & Hold + -- Next & Hold WIDGET.newSelector{name='holdMode', x=310, y=890, w=300,color='lY',list=sList.holdMode,disp=CUSval('holdMode'),code=CUSsto('holdMode'),hideF=function() return CUSTOMENV.holdCount==0 end}, WIDGET.newSlider{name='nextCount', x=140, y=960, lim=130,w=180,axis={0,6,1},disp=CUSval('nextCount'),code=CUSsto('nextCount')}, WIDGET.newSlider{name='holdCount', x=140, y=1030,lim=130,w=180,axis={0,6,1},disp=CUSval('holdCount'),code=CUSsto('holdCount')}, WIDGET.newSwitch{name='infHold', x=560, y=960, lim=200, disp=CUSval('infHold'),code=CUSrev('infHold'),hideF=function() return CUSTOMENV.holdCount==0 end}, WIDGET.newSwitch{name='phyHold', x=560, y=1030,lim=200, disp=CUSval('phyHold'),code=CUSrev('phyHold'),hideF=function() return CUSTOMENV.holdCount==0 end}, - --BG & BGM + -- BG & BGM WIDGET.newSelector{name='bg', x=840, y=1090,w=250,color='Y',list=BG.getList(),disp=CUSval('bg'),code=function(i) CUSTOMENV.bg=i BG.set(i) end}, WIDGET.newSelector{name='bgm', x=1120,y=1090,w=250,color='Y',list=BGM.getList(),disp=CUSval('bgm'),code=function(i) CUSTOMENV.bgm=i BGM.play(i) end}, } diff --git a/parts/scenes/custom_field.lua b/parts/scenes/custom_field.lua index f98b2b69..df31fea8 100644 --- a/parts/scenes/custom_field.lua +++ b/parts/scenes/custom_field.lua @@ -8,11 +8,11 @@ local FIELD=FIELD local scene={} local curPen -local pens={-2,0,-1,[false]=false}--Color (air/smart) +local pens={-2,0,-1,[false]=false}-- Color (air/smart) local penMode local penPath={} local penX,penY -local demo--If show x +local demo-- If show x local page local function isEmpty(L) @@ -28,35 +28,35 @@ local penKey={ z=0,x=-1,c=-2, } local minoPosCode={ - [102]=1,[1121]=1,--Z - [195]=2,[610]=2,--S - [39]=3,[1569]=3,[228]=3,[1091]=3,--J - [135]=4,[547]=4,[225]=4,[1602]=4,--L - [71]=5,[609]=5,[226]=5,[1122]=5,--T - [99]=6,--O - [15]=7,[4641]=7,--I - [1606]=8,[2273]=8,--Z5 - [3139]=9,[740]=9,--S5 - [103]=10,[1633]=10,[230]=10,[1123]=10,--P - [199]=11,[611]=11,[227]=11,[1634]=11,--Q - [738]=12,[3170]=12,[1252]=12,[1219]=12,--F - [2274]=13,[1126]=13,[1249]=13,[1730]=13,--E - [1095]=14,[737]=14,[3650]=14,[2276]=14,--T5 - [167]=15,[1571]=15,[229]=15,[1603]=15,--U - [2183]=16,[551]=16,[3617]=16,[3716]=16,--V - [614]=17,[3169]=17,[1732]=17,[2243]=17,--W - [1250]=18,--X - [47]=19,[12833]=19,[488]=19,[9283]=19,--J5 - [271]=20,[4643]=20,[481]=20,[13378]=20,--L5 - [79]=21,[5665]=21,[484]=21,[9314]=21,--R - [143]=22,[4705]=22,[482]=22,[9794]=22,--Y - [110]=23,[9761]=23,[236]=23,[9313]=23,--N - [391]=24,[4706]=24,[451]=24,[5698]=24,--H - [31]=25,[21025]=25,--I5 - [7]=26,[545]=26,--I3 - [67]=27,[35]=27,[97]=27,[98]=27,--C - [3]=28,[33]=28,--I2 - [1]=29,--O1 + [102]=1,[1121]=1,-- Z + [195]=2,[610]=2,-- S + [39]=3,[1569]=3,[228]=3,[1091]=3,-- J + [135]=4,[547]=4,[225]=4,[1602]=4,-- L + [71]=5,[609]=5,[226]=5,[1122]=5,-- T + [99]=6,-- O + [15]=7,[4641]=7,-- I + [1606]=8,[2273]=8,-- Z5 + [3139]=9,[740]=9,-- S5 + [103]=10,[1633]=10,[230]=10,[1123]=10,-- P + [199]=11,[611]=11,[227]=11,[1634]=11,-- Q + [738]=12,[3170]=12,[1252]=12,[1219]=12,-- F + [2274]=13,[1126]=13,[1249]=13,[1730]=13,-- E + [1095]=14,[737]=14,[3650]=14,[2276]=14,-- T5 + [167]=15,[1571]=15,[229]=15,[1603]=15,-- U + [2183]=16,[551]=16,[3617]=16,[3716]=16,-- V + [614]=17,[3169]=17,[1732]=17,[2243]=17,-- W + [1250]=18,-- X + [47]=19,[12833]=19,[488]=19,[9283]=19,-- J5 + [271]=20,[4643]=20,[481]=20,[13378]=20,-- L5 + [79]=21,[5665]=21,[484]=21,[9314]=21,-- R + [143]=22,[4705]=22,[482]=22,[9794]=22,-- Y + [110]=23,[9761]=23,[236]=23,[9313]=23,-- N + [391]=24,[4706]=24,[451]=24,[5698]=24,-- H + [31]=25,[21025]=25,-- I5 + [7]=26,[545]=26,-- I3 + [67]=27,[35]=27,[97]=27,[98]=27,-- C + [3]=28,[33]=28,-- I2 + [1]=29,-- O1 } local function _pTouch(x,y) if not curPen then return end @@ -78,7 +78,7 @@ local function _pDraw() local l=#penPath if l==0 then return end - local C--Color + local C-- Color if penMode==0 then if pens[curPen]==-2 then if l<=5 then @@ -227,7 +227,7 @@ function scene.keyDown(key) MES.new('check',text.exportSuccess) elseif key=='v' and kb.isDown('lctrl','rctrl') or key=='cV' then local str=sys.getClipboardText() - local p=str:find(":")--ptr* + local p=str:find(":")-- ptr* if p then if not str:sub(1,p-1):find("Field") then MES.new('error',text.pasteWrongPlace) @@ -264,13 +264,13 @@ end function scene.draw() gc.translate(200,60) - --Draw grid + -- Draw grid gc.setColor(1,1,1,.2) gc.setLineWidth(1) for x=1,9 do gc.line(30*x,0,30*x,600) end for y=0,19 do gc.line(0,30*y,300,30*y) end - --Draw field + -- Draw field gc.setColor(COLOR.Z) gc.setLineWidth(2) gc.rectangle('line',-2,-2,304,604,5) @@ -287,7 +287,7 @@ function scene.draw() end end end - --Draw pen + -- Draw pen if penX and penY then local x,y=30*penX,600-30*penY if curPen==1 or curPen==2 then @@ -305,7 +305,7 @@ function scene.draw() gc.rectangle('fill',x-30,y,30,30,3) end - --Draw smart pen path + -- Draw smart pen path if #penPath>0 then gc.setLineWidth(4) if penMode==0 then @@ -344,23 +344,23 @@ function scene.draw() end gc.translate(-200,-60) - --Draw page + -- Draw page setFont(55) gc.setColor(COLOR.Z) GC.mStr(page,100,530) GC.mStr(#FIELD,100,600) gc.rectangle('fill',50,600,100,6) - --Draw mouse & pen color + -- Draw mouse & pen color gc.translate(560,475) - --Mouse + -- Mouse gc.setLineWidth(2) gc.rectangle('line',0,0,80,110,5) gc.line(0,40,80,40) gc.line(33,0,33,25,47,25,47,0) gc.line(40,25,40,40) - --Left button + -- Left button if pens[1]>0 then gc.setColor(BLOCK_COLORS[pens[1]]) gc.rectangle('fill',5,5,23,30,3) @@ -381,7 +381,7 @@ function scene.draw() end end - --Right button + -- Right button if pens[2]>0 then gc.setColor(BLOCK_COLORS[pens[2]]) gc.rectangle('fill',52,5,23,30,3) @@ -403,7 +403,7 @@ function scene.draw() end end - --Middle button + -- Middle button if pens[3]>0 then gc.setColor(BLOCK_COLORS[pens[3]]) gc.rectangle('fill',35,2,10,21,3) @@ -426,7 +426,7 @@ function scene.draw() end gc.translate(-560,-475) - --Block name + -- Block name setFont(55) gc.setColor(1,1,1) for i=1,7 do @@ -440,32 +440,32 @@ scene.widgetList={ WIDGET.newText{name='title', x=1020,y=5,lim=480,font=70,align='R'}, WIDGET.newText{name='subTitle', x=1030,y=50,lim=170,font=35,align='L',color='H'}, - WIDGET.newButton{name='b1', x=580, y=130,w=73,fText="",color='R',code=_setPen(1)},--B1 - WIDGET.newButton{name='b2', x=660, y=130,w=73,fText="",color='F',code=_setPen(2)},--B2 - WIDGET.newButton{name='b3', x=740, y=130,w=73,fText="",color='O',code=_setPen(3)},--B3 - WIDGET.newButton{name='b4', x=820, y=130,w=73,fText="",color='Y',code=_setPen(4)},--B4 - WIDGET.newButton{name='b5', x=900, y=130,w=73,fText="",color='L',code=_setPen(5)},--B5 - WIDGET.newButton{name='b6', x=980, y=130,w=73,fText="",color='J',code=_setPen(6)},--B6 - WIDGET.newButton{name='b7', x=1060,y=130,w=73,fText="",color='G',code=_setPen(7)},--B7 - WIDGET.newButton{name='b8', x=1140,y=130,w=73,fText="",color='A',code=_setPen(8)},--B8 + WIDGET.newButton{name='b1', x=580, y=130,w=73,fText="",color='R',code=_setPen(1)},-- B1 + WIDGET.newButton{name='b2', x=660, y=130,w=73,fText="",color='F',code=_setPen(2)},-- B2 + WIDGET.newButton{name='b3', x=740, y=130,w=73,fText="",color='O',code=_setPen(3)},-- B3 + WIDGET.newButton{name='b4', x=820, y=130,w=73,fText="",color='Y',code=_setPen(4)},-- B4 + WIDGET.newButton{name='b5', x=900, y=130,w=73,fText="",color='L',code=_setPen(5)},-- B5 + WIDGET.newButton{name='b6', x=980, y=130,w=73,fText="",color='J',code=_setPen(6)},-- B6 + WIDGET.newButton{name='b7', x=1060,y=130,w=73,fText="",color='G',code=_setPen(7)},-- B7 + WIDGET.newButton{name='b8', x=1140,y=130,w=73,fText="",color='A',code=_setPen(8)},-- B8 - WIDGET.newButton{name='b9', x=580, y=210,w=73,fText="",color='C',code=_setPen(9)},--B9 - WIDGET.newButton{name='b10', x=660, y=210,w=73,fText="",color='N',code=_setPen(10)},--B10 - WIDGET.newButton{name='b11', x=740, y=210,w=73,fText="",color='S',code=_setPen(11)},--B11 - WIDGET.newButton{name='b12', x=820, y=210,w=73,fText="",color='B',code=_setPen(12)},--B12 - WIDGET.newButton{name='b13', x=900, y=210,w=73,fText="",color='V',code=_setPen(13)},--B13 - WIDGET.newButton{name='b14', x=980, y=210,w=73,fText="",color='P',code=_setPen(14)},--B14 - WIDGET.newButton{name='b15', x=1060,y=210,w=73,fText="",color='M',code=_setPen(15)},--B15 - WIDGET.newButton{name='b16', x=1140,y=210,w=73,fText="",color='W',code=_setPen(16)},--B16 + WIDGET.newButton{name='b9', x=580, y=210,w=73,fText="",color='C',code=_setPen(9)},-- B9 + WIDGET.newButton{name='b10', x=660, y=210,w=73,fText="",color='N',code=_setPen(10)},-- B10 + WIDGET.newButton{name='b11', x=740, y=210,w=73,fText="",color='S',code=_setPen(11)},-- B11 + WIDGET.newButton{name='b12', x=820, y=210,w=73,fText="",color='B',code=_setPen(12)},-- B12 + WIDGET.newButton{name='b13', x=900, y=210,w=73,fText="",color='V',code=_setPen(13)},-- B13 + WIDGET.newButton{name='b14', x=980, y=210,w=73,fText="",color='P',code=_setPen(14)},-- B14 + WIDGET.newButton{name='b15', x=1060,y=210,w=73,fText="",color='M',code=_setPen(15)},-- B15 + WIDGET.newButton{name='b16', x=1140,y=210,w=73,fText="",color='W',code=_setPen(16)},-- B16 - WIDGET.newButton{name='b17', x=580, y=290,w=73,font=40,fText=CHAR.icon.bone, color='dH',code=_setPen(17)},--BONE - WIDGET.newButton{name='b18', x=660, y=290,w=73,font=40,fText=CHAR.icon.invis, color='D', code=_setPen(18)},--HIDE - WIDGET.newButton{name='b19', x=740, y=290,w=73,font=40,fText=CHAR.icon.bomb, color='lY',code=_setPen(19)},--BOMB - WIDGET.newButton{name='b20', x=820, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='H', code=_setPen(20)},--GB1 - WIDGET.newButton{name='b21', x=900, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='lH',code=_setPen(21)},--GB2 - WIDGET.newButton{name='b22', x=980, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dV',code=_setPen(22)},--GB3 - WIDGET.newButton{name='b23', x=1060,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dR',code=_setPen(23)},--GB4 - WIDGET.newButton{name='b24', x=1140,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dG',code=_setPen(24)},--GB5 + WIDGET.newButton{name='b17', x=580, y=290,w=73,font=40,fText=CHAR.icon.bone, color='dH',code=_setPen(17)},-- BONE + WIDGET.newButton{name='b18', x=660, y=290,w=73,font=40,fText=CHAR.icon.invis, color='D', code=_setPen(18)},-- HIDE + WIDGET.newButton{name='b19', x=740, y=290,w=73,font=40,fText=CHAR.icon.bomb, color='lY',code=_setPen(19)},-- BOMB + WIDGET.newButton{name='b20', x=820, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='H', code=_setPen(20)},-- GB1 + WIDGET.newButton{name='b21', x=900, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='lH',code=_setPen(21)},-- GB2 + WIDGET.newButton{name='b22', x=980, y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dV',code=_setPen(22)},-- GB3 + WIDGET.newButton{name='b23', x=1060,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dR',code=_setPen(23)},-- GB4 + WIDGET.newButton{name='b24', x=1140,y=290,w=73,font=40,fText=CHAR.icon.garbage,color='dG',code=_setPen(24)},-- GB5 WIDGET.newButton{name='any', x=600, y=400,w=120,color='lH', font=40,code=_setPen(0)}, WIDGET.newButton{name='space', x=730, y=400,w=120,color='H', font=55,code=_setPen(-1),fText=CHAR.icon.cross_thick}, diff --git a/parts/scenes/custom_mission.lua b/parts/scenes/custom_mission.lua index cc23d0d0..446c9780 100644 --- a/parts/scenes/custom_mission.lua +++ b/parts/scenes/custom_mission.lua @@ -6,8 +6,8 @@ local ins,rem=table.insert,table.remove local scene={} -local input--Input buffer -local cur--Cursor position +local input-- Input buffer +local cur-- Cursor position function scene.sceneInit() input="" @@ -72,7 +72,7 @@ function scene.keyDown(key) end elseif key=='v' and kb.isDown('lctrl','rctrl') or key=='cV' then local str=sys.getClipboardText() - local p=str:find(":")--ptr* + local p=str:find(":")-- ptr* if p then if not str:sub(1,p-1):find("Target") then MES.new('error',text.pasteWrongPlace) @@ -112,22 +112,22 @@ function scene.keyDown(key) end function scene.draw() - --Draw frame + -- Draw frame gc.setLineWidth(2) gc.setColor(COLOR.Z) gc.rectangle('line',58,108,1164,174,5) - --Draw inputing target + -- Draw inputing target setFont(30) gc.setColor(.9,.9,.9) gc.print(input,1200,275) - --Draw targets + -- Draw targets local libColor=BLOCK_COLORS local set=SETTING.skin local L=MISSION - local x,y=100,136--Next block pos - local cx,cy=100,136--Cursor-center pos + local x,y=100,136-- Next block pos + local cx,cy=100,136-- Cursor-center pos local i,j=1,#L local count=1 repeat @@ -169,7 +169,7 @@ function scene.draw() i=i+1 until i>j+1 - --Draw cursor + -- Draw cursor gc.setColor(1,1,.4,.6+.4*sin(TIME()*6.26)) gc.line(cx-5,cy-20,cx-5,cy+20) end diff --git a/parts/scenes/custom_sequence.lua b/parts/scenes/custom_sequence.lua index 5204aaba..0ef068ff 100644 --- a/parts/scenes/custom_sequence.lua +++ b/parts/scenes/custom_sequence.lua @@ -7,7 +7,7 @@ local gc_setColor,gc_print=gc.setColor,gc.print local scene={} -local cur--Cursor position +local cur-- Cursor position function scene.sceneInit() cur=#BAG @@ -80,7 +80,7 @@ function scene.keyDown(key) end elseif key=='v' and kb.isDown('lctrl','rctrl') or key=='cV' then local str=sys.getClipboardText() - local p=str:find(":")--ptr* + local p=str:find(":")-- ptr* if p then if not str:sub(1,p-1):find("SEQ") then MES.new('error',text.pasteWrongPlace) @@ -114,17 +114,17 @@ end local blockCharWidth={} for i=1,#BLOCK_CHARS do blockCharWidth[i]=gc.newText(FONT.get(60),BLOCK_CHARS[i]):getWidth() end function scene.draw() - --Draw frame + -- Draw frame gc_setColor(COLOR.Z) gc.setLineWidth(2) gc.rectangle('line',100,110,1080,260,5) - --Draw sequence + -- Draw sequence local BLOCK_COLORS=BLOCK_COLORS local skinSetting=SETTING.skin local BAG=BAG - local x,y=120,136--Next block pos - local cx,cy=120,136--Cursor-center pos + local x,y=120,136-- Next block pos + local cx,cy=120,136-- Cursor-center pos local i,j=1,#BAG local count=1 repeat @@ -159,12 +159,12 @@ function scene.draw() i=i+1 until i>j+1 - --Draw lenth + -- Draw lenth setFont(40) gc_setColor(COLOR.Z) gc_print(#BAG,120,310) - --Draw cursor + -- Draw cursor gc_setColor(.5,1,.5,.6+.4*sin(TIME()*6.26)) gc.line(cx-5,cy-20,cx-5,cy+20) end diff --git a/parts/scenes/depause.lua b/parts/scenes/depause.lua index f815cf7d..eff5f993 100644 --- a/parts/scenes/depause.lua +++ b/parts/scenes/depause.lua @@ -30,16 +30,16 @@ function scene.update(dt) end function scene.draw() - --Game scene + -- Game scene SCN.scenes.game.draw() - --Gray screen cover + -- Gray screen cover gc.setColor(.12,.12,.12,timer*8-7) gc.replaceTransform(SCR.origin) gc.rectangle('fill',0,0,SCR.w,SCR.h) gc.replaceTransform(SCR.xOy) - --Counter bar + -- Counter bar gc.setLineWidth(2) gc.setColor(.9,.9,.9,math.min(1,12*timer,8*(1-timer))*.6) gc.rectangle('line',494,336,292,48,14) diff --git a/parts/scenes/dict.lua b/parts/scenes/dict.lua index ec5ea401..e6c6186b 100644 --- a/parts/scenes/dict.lua +++ b/parts/scenes/dict.lua @@ -8,15 +8,15 @@ local find=string.find local scene={} -local dict--Dict list -local result--Result Lable +local dict-- Dict list +local result-- Result Lable local lastTickInput -local searchWait--Searching animation timer -local selected--Selected option -local scrollPos--Scroll down length +local searchWait-- Searching animation timer +local selected-- Selected option +local scrollPos-- Scroll down length -local lastSearch--Last searched string +local lastSearch-- Last searched string local typeColor={ help=COLOR.Y, diff --git a/parts/scenes/game.lua b/parts/scenes/game.lua index ae51c02a..f5e32ff0 100644 --- a/parts/scenes/game.lua +++ b/parts/scenes/game.lua @@ -130,7 +130,7 @@ local function _checkGameKeyDown(key) return end end - return true--No key pressed + return true-- No key pressed end function scene.sceneInit() @@ -283,19 +283,19 @@ function scene.gamepadUp(key) end local function _update_common(dt) - --Update control + -- Update control touchMoveLastFrame=false VK.update(dt) - --Update players + -- Update players for p=1,#PLAYERS do PLAYERS[p]:update(dt) end - --Fresh royale target + -- Fresh royale target if PLAYERS[1].frameRun%120==0 and PLAYERS[1].gameEnv.layout=='royale' then freshMostDangerous() end - --Warning check + -- Warning check checkWarning(dt) end function scene.update(dt) @@ -328,15 +328,15 @@ function scene.draw() local repMode=GAME.replaying or tas - --Players + -- Players for p=1,#PLAYERS do PLAYERS[p]:draw(repMode) end - --Virtual keys + -- Virtual keys VK.draw() - --Attacking & Being attacked + -- Attacking & Being attacked if PLAYERS[1].gameEnv.layout=='royale' then local P=PLAYERS[1] gc_setLineWidth(5) @@ -357,7 +357,7 @@ function scene.draw() end end - --Mode info + -- Mode info gc_setColor(1,1,1,.82) gc_draw(TEXTOBJ.modeName,modeTextPos,10,0,modeTextWidK,1) local M=GAME.curMode @@ -378,7 +378,7 @@ function scene.draw() end end - --Replaying + -- Replaying if replaying or tas then setFont(20) gc_setColor(1,1,TIME()%.8>.4 and 1 or 0) @@ -387,7 +387,7 @@ function scene.draw() mStr(("%s %sf"):format(repRateStrings[gameRate],PLAYERS[1].frameRun),770,31) end - --Warning + -- Warning drawWarning() end scene.widgetList={ diff --git a/parts/scenes/launchpad.lua b/parts/scenes/launchpad.lua index 46eae20f..c3510351 100644 --- a/parts/scenes/launchpad.lua +++ b/parts/scenes/launchpad.lua @@ -138,7 +138,7 @@ pad={x=140,y=65,page=1, {{},{},{},{},{},{},{},{}}, {{},{},{},{},{},{},{},{}}, }, - (function()--BGM page + (function()-- BGM page local L=BGM.getList() local B={} for y=1,8 do @@ -233,13 +233,13 @@ function scene.draw() gc_translate(pad.x,pad.y) gc_setLineWidth(2) - --Pad frame + -- Pad frame gc_setColor(COLOR.dX) gc_rectangle('fill',-3,-3,726,646,2) gc_setColor(white) gc_rectangle('line',-3,-3,726,646,2) - --Buttons + -- Buttons for y=1,8 do gc_setColor(COLOR.dX) gc_circle('fill',40,(y-1)*80+40,34) diff --git a/parts/scenes/load.lua b/parts/scenes/load.lua index d1099116..24589480 100644 --- a/parts/scenes/load.lua +++ b/parts/scenes/load.lua @@ -5,7 +5,7 @@ local scene={} local loading local progress,maxProgress local t1,t2,animeType -local studioLogo--Studio logo text object +local studioLogo-- Studio logo text object local logoColor1,logoColor2 local titleTransform={ @@ -28,9 +28,9 @@ local loadingThread=coroutine.wrap(function() end coroutine.yield() coroutine.yield('loadSFX')SFX.load('media/effect/'..SETTING.sfxPack..'/') - coroutine.yield('loadSample')SFX.loadSample{name='bass',path='media/sample/bass',base='A2'}--A2~A4 - coroutine.yield('loadSample')SFX.loadSample{name='lead',path='media/sample/lead',base='A3'}--A3~A5 - coroutine.yield('loadSample')SFX.loadSample{name='bell',path='media/sample/bell',base='A4'}--A4~A6 + coroutine.yield('loadSample')SFX.loadSample{name='bass',path='media/sample/bass',base='A2'}-- A2~A4 + coroutine.yield('loadSample')SFX.loadSample{name='lead',path='media/sample/lead',base='A3'}-- A3~A5 + coroutine.yield('loadSample')SFX.loadSample{name='bell',path='media/sample/bell',base='A4'}-- A4~A6 coroutine.yield('loadVoice')VOC.load('media/vocal/'..SETTING.vocPack..'/') coroutine.yield('loadFont') for i=1,17 do getFont(15+5*i)getFont(15+5*i,'mono') end @@ -114,8 +114,8 @@ function scene.sceneInit() studioLogo=GC.newText(getFont(90),"26F Studio") progress=0 maxProgress=10 - t1,t2=0,0--Timer - animeType={} for i=1,#SVG_TITLE_FILL do animeType[i]=math.random(#titleTransform) end--Random animation type + t1,t2=0,0-- Timer + animeType={} for i=1,#SVG_TITLE_FILL do animeType[i]=math.random(#titleTransform) end-- Random animation type end function scene.sceneBack() love.event.quit() diff --git a/parts/scenes/main.lua b/parts/scenes/main.lua index 02c95c25..587587bd 100644 --- a/parts/scenes/main.lua +++ b/parts/scenes/main.lua @@ -3,7 +3,7 @@ local scene={} local verName=("%s %s %s"):format(SYSTEM,VERSION.string,VERSION.name) local tipLength=760 local tip=GC.newText(getFont(30),"") -local scrollX--Tip scroll position +local scrollX-- Tip scroll position local widgetX0={ -10,-10,-10,-10, @@ -20,14 +20,14 @@ end) function scene.sceneInit() BG.set() - --Set tip + -- Set tip tip:set(text.getTip()) scrollX=tipLength - --Set quick-play-button text + -- Set quick-play-button text scene.resize() - --Create demo player + -- Create demo player destroyPlayers() GAME.modeEnv=NONE GAME.setting={} @@ -133,16 +133,16 @@ local function _tipStencil() GC.rectangle('fill',0,0,tipLength,42) end function scene.draw() - --Version + -- Version setFont(20) GC.setColor(.6,.6,.6) GC.mStr(verName,640,110) - --Title + -- Title GC.setColor(1,1,1) mDraw(TEXTURE.title_color,640,60,nil,.43) - --Tip + -- Tip GC.setColor(COLOR.Z) GC.push('transform') GC.translate(260,650) @@ -155,13 +155,13 @@ function scene.draw() GC.setStencilTest() GC.pop() - --Player + -- Player PLAYERS[1]:draw() - --Profile + -- Profile drawSelfProfile() - --Player count + -- Player count drawOnlinePlayerCount() end diff --git a/parts/scenes/mod.lua b/parts/scenes/mod.lua index 50c9ca21..1096e9b8 100644 --- a/parts/scenes/mod.lua +++ b/parts/scenes/mod.lua @@ -1,6 +1,6 @@ local scene={} -local selected--Mod selected +local selected-- Mod selected local function _modComp(a,b) return a.no100 then d=d^.5 @@ -197,7 +197,7 @@ function scene.update() end end ---noRank/B/A/S/U/X +-- noRank/B/A/S/U/X local baseRankColor={ [0]={0,0,0,.3}, {.2,.4,.6,.3}, @@ -207,11 +207,11 @@ local baseRankColor={ {.85,.3,.8,.3}, } local function _drawModeShape(M,S,drawType) - if M.shape==1 then--Rectangle + if M.shape==1 then-- Rectangle gc_rectangle(drawType,M.x-S,M.y-S,2*S,2*S) - elseif M.shape==2 then--Diamond + elseif M.shape==2 then-- Diamond gc_circle(drawType,M.x,M.y,S+12,4) - elseif M.shape==3 then--Octagon + elseif M.shape==3 then-- Octagon gc_circle(drawType,M.x,M.y,S+6,8) end end @@ -226,7 +226,7 @@ function scene.draw() local R=RANKS local sel=mapCam.sel - --Lines connecting modes + -- Lines connecting modes gc_setLineWidth(8) gc_setColor(1,1,1,.2) for name,M in next,MODES do @@ -238,7 +238,7 @@ function scene.draw() end end - --Modes + -- Modes setFont(80) gc_setLineWidth(4) for name,M in next,MODES do @@ -247,7 +247,7 @@ function scene.draw() local rank=R[name] local S=M.size - --Draw shapes on map + -- Draw shapes on map if unlocked==1 then gc_setColor(baseRankColor[rank]) _drawModeShape(M,S,'fill') @@ -255,7 +255,7 @@ function scene.draw() gc_setColor(1,1,sel==name and 0 or 1,unlocked==1 and .8 or .3) _drawModeShape(M,S,'line') - --Icon + -- Icon local icon=M.icon if icon then gc_setColor(unlocked==1 and COLOR.lH or COLOR.dH) @@ -263,7 +263,7 @@ function scene.draw() gc_draw(icon,M.x,M.y,nil,S/length,nil,length,length) end - --Rank + -- Rank if unlocked==1 then name=RANK_CHARS[rank] if name then @@ -277,11 +277,11 @@ function scene.draw() end gc_pop() - --Score board + -- Score board if sel then local M=MODES[sel] gc_setColor(COLOR.lX) - gc_rectangle('fill',920,0,360,720,5)--Info board + gc_rectangle('fill',920,0,360,720,5)-- Info board gc_setColor(COLOR.Z) setFont(40)GC.mStr(text.modes[sel][1],1100,5) setFont(30)GC.mStr(text.modes[sel][2],1100,50) @@ -292,7 +292,7 @@ function scene.draw() if M.score then mText(TEXTOBJ.highScore,1100,240) gc_setColor(COLOR.X) - gc_rectangle('fill',940,290,320,280,5)--Highscore board + gc_rectangle('fill',940,290,320,280,5)-- Highscore board local L=M.records gc_setColor(1,1,1) if visibleModes[sel]==2 then diff --git a/parts/scenes/music.lua b/parts/scenes/music.lua index a57cd20d..7cd8afb0 100644 --- a/parts/scenes/music.lua +++ b/parts/scenes/music.lua @@ -18,7 +18,7 @@ local author={ local scene={} local playing -local selected--Music selected +local selected-- Music selected local bgmList=BGM.getList() if #bgmList==0 then bgmList={"[NO BGM]"} end @@ -69,7 +69,7 @@ end function scene.draw() local t=TIME() - --Character + -- Character GC.push('transform') GC.setColor(1,1,1) GC.translate(906,456) @@ -85,7 +85,7 @@ function scene.draw() GC.setColor(COLOR.Z) - --Scroller + -- Scroller GC.setLineWidth(2) GC.line(315,307,315,482) setFont(50) @@ -97,7 +97,7 @@ function scene.draw() if selected>2 then GC.print(bgmList[selected-2],322,350-50) end if selected<#bgmList-1 then GC.print(bgmList[selected+2],322,350+110) end - --Title + -- Title if playing then mDraw(TEXTURE.title,570,190,nil,.42) local a=-t%2.3/2.3 @@ -105,7 +105,7 @@ function scene.draw() mDraw(TEXTURE.title_color,570,190,nil,.42+.062-.062*a) end - --Music player + -- Music player if playing then setFont(45) GC.shadedPrint(playing,710,508,'left',2) diff --git a/parts/scenes/net_game.lua b/parts/scenes/net_game.lua index 94074fb5..11eec3ce 100644 --- a/parts/scenes/net_game.lua +++ b/parts/scenes/net_game.lua @@ -249,13 +249,13 @@ function scene.update(dt) touchMoveLastFrame=false VK.update(dt) - --Update players + -- Update players for p=1,#PLAYERS do PLAYERS[p]:update(dt) end - --Warning check + -- Warning check checkWarning(dt) - --Upload stream + -- Upload stream if not NET.spectate and P1.frameRun-lastUpstreamTime>8 then local stream if not GAME.rep[upstreamProgress] then @@ -281,15 +281,15 @@ end function scene.draw() if playing then - --Players + -- Players for p=1,#PLAYERS do PLAYERS[p]:draw() end - --Virtual keys + -- Virtual keys VK.draw() - --Warning + -- Warning drawWarning() if NET.spectate then @@ -298,10 +298,10 @@ function scene.draw() gc_print(text.spectating,940,0) end else - --Users + -- Users NETPLY.draw() - --Ready & Set mark + -- Ready & Set mark setFont(50) if NET.roomReadyState=='allReady' then gc_setColor(1,.85,.6,.9) @@ -314,7 +314,7 @@ function scene.draw() mStr(text.waitStream,640,15) end - --Room info. + -- Room info. gc_setColor(1,1,1) setFont(25) gc_printf(NET.roomState.info.name,0,685,1270,'right') @@ -327,14 +327,14 @@ function scene.draw() gc_setColor(0,1,0)gc_print(text.started,230,655) end - --Profile + -- Profile drawSelfProfile() - --Player count + -- Player count drawOnlinePlayerCount() end - --New message + -- New message if newMessageTimer>0 then setFont(40) gc_setColor(.3,.7,1,(newMessageTimer/60)^2) diff --git a/parts/scenes/net_newRoom.lua b/parts/scenes/net_newRoom.lua index 636a28f9..3c3865f2 100644 --- a/parts/scenes/net_newRoom.lua +++ b/parts/scenes/net_newRoom.lua @@ -59,7 +59,7 @@ scene.widgetScrollHeight=400 scene.widgetList={ WIDGET.newText{name='title',x=40,y=15,font=70,align='L'}, - --Room name/password/description + -- Room name/password/description roomName, roomNameBox, password, @@ -67,7 +67,7 @@ scene.widgetList={ description, descriptionBox, - --Selectors + -- Selectors WIDGET.newSelector{name='life', x=170,y=410,w=260,color='R',list=sList.life, disp=ROOMval('life'), code=ROOMsto('life')}, WIDGET.newSelector{name='pushSpeed', x=170,y=520,w=260,color='V',list=sList.pushSpeed, disp=ROOMval('pushSpeed'), code=ROOMsto('pushSpeed')}, WIDGET.newSelector{name='garbageSpeed', x=170,y=600,w=260,color='V',list=sList.pushSpeed, disp=ROOMval('garbageSpeed'), code=ROOMsto('garbageSpeed')}, @@ -85,12 +85,12 @@ scene.widgetList={ WIDGET.newSelector{name='hurry', x=730,y=680,w=260,color='G',list=sList.hurry,disp=ROOMval('hurry'),code=ROOMval('hurry')}, WIDGET.newSelector{name='hang', x=730,y=760,w=260,color='G',list=sList.hang,disp=ROOMval('hang'),code=ROOMval('hang')}, - --Capacity & Create & Back + -- Capacity & Create & Back WIDGET.newSelector{name='capacity', x=1070,y=330,w=310,color='lY',list={2,3,4,5,7,10,17,31,49,99},disp=ROOMval('capacity'),code=ROOMsto('capacity')}, WIDGET.newButton{name='create', x=1070,y=480,w=310,h=140,color='lN',font=40,code=_createRoom}, WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene}, - --Special rules + -- Special rules WIDGET.newSwitch{name='ospin', x=850, y=850, lim=210,disp=ROOMval('ospin'), code=ROOMrev('ospin')}, WIDGET.newSwitch{name='fineKill', x=850, y=910, lim=210,disp=ROOMval('fineKill'), code=ROOMrev('fineKill')}, WIDGET.newSwitch{name='b2bKill', x=850, y=970, lim=210,disp=ROOMval('b2bKill'), code=ROOMrev('b2bKill')}, @@ -99,10 +99,10 @@ scene.widgetList={ WIDGET.newSwitch{name='deepDrop', x=1170,y=910, lim=250,disp=ROOMval('deepDrop'), code=ROOMrev('deepDrop')}, WIDGET.newSwitch{name='bone', x=1170,y=970, lim=250,disp=ROOMval('bone'), code=ROOMrev('bone')}, - --Rule set + -- Rule set WIDGET.newSelector{name='eventSet', x=1050,y=760,w=340,color='H',list=sList.eventSet,disp=ROOMval('eventSet'),code=ROOMval('eventSet')}, - --Next & Hold + -- Next & Hold WIDGET.newSelector{name='holdMode', x=310, y=890, w=300,color='lY',list=sList.holdMode,disp=ROOMval('holdMode'),code=ROOMval('holdMode'),hideF=function() return CUSTOMENV.holdCount==0 end}, WIDGET.newSlider{name='nextCount', x=140, y=960, lim=130,w=200,axis={0,6,1},disp=ROOMval('nextCount'),code=ROOMsto('nextCount')}, WIDGET.newSlider{name='holdCount', x=140, y=1030,lim=130,w=200,axis={0,6,1},disp=ROOMval('holdCount'),code=ROOMsto('holdCount')}, diff --git a/parts/scenes/net_rooms.lua b/parts/scenes/net_rooms.lua index cdbf21a2..2e144825 100644 --- a/parts/scenes/net_rooms.lua +++ b/parts/scenes/net_rooms.lua @@ -105,11 +105,11 @@ function scene.update(dt) end function scene.draw() - --Fetching timer + -- Fetching timer gc_setColor(1,1,1,.12) gc_arc('fill','pie',250,630,40,-1.5708,-1.5708-.6283*fetchTimer) - --Room list + -- Room list local R=roomList:getSel() if R then gc_translate(870,220) @@ -132,10 +132,10 @@ function scene.draw() gc_translate(-870,-220) end - --Profile + -- Profile drawSelfProfile() - --Player count + -- Player count drawOnlinePlayerCount() end diff --git a/parts/scenes/pause.lua b/parts/scenes/pause.lua index 627fce2d..4006f735 100644 --- a/parts/scenes/pause.lua +++ b/parts/scenes/pause.lua @@ -7,15 +7,15 @@ local setFont,mStr=FONT.set,GC.mStr local scene={} local page -local timer1,timer2--Animation timer -local form--Form of clear & spins -local radar--Radar chart -local val--Radar chart normalizer -local standard--Standard hexagon -local chartColor--Color of radar chart -local rank--Current rank -local trophy--Current trophy -local trophyColor--Current trophy color +local timer1,timer2-- Animation timer +local form-- Form of clear & spins +local radar-- Radar chart +local val-- Radar chart normalizer +local standard-- Standard hexagon +local chartColor-- Color of radar chart +local rank-- Current rank +local trophy-- Current trophy +local trophyColor-- Current trophy color function scene.sceneInit() page=0 @@ -41,18 +41,18 @@ function scene.sceneInit() ("%d/%d ; %d/%d"):format(S.b2b,S.b3b,S.pc,S.hpc), ("%d/%dx/%.2f%%"):format(S.extraPiece,S.maxFinesseCombo,S.finesseRate*20/S.piece), } - --From right-down, 60 degree each + -- From right-down, 60 degree each radar={ - (S.off+S.dig)/S.time*60,--DefPM - (S.atk+S.dig)/S.time*60,--ADPM - S.atk/S.time*60, --AtkPM - S.send/S.time*60, --SendPM - S.piece/S.time*24, --Line'PM - S.dig/S.time*60, --DigPM + (S.off+S.dig)/S.time*60,-- DefPM + (S.atk+S.dig)/S.time*60,-- ADPM + S.atk/S.time*60, -- AtkPM + S.send/S.time*60, -- SendPM + S.piece/S.time*24, -- Line'PM + S.dig/S.time*60, -- DigPM } val={1/80,1/160,1/120,1/80,1/100,1/40} - --Normalize Values + -- Normalize Values for i=1,6 do val[i]=val[i]*radar[i] if val[i]>1.26 then val[i]=1.26+log(val[i]-.26) end end @@ -70,9 +70,9 @@ function scene.sceneInit() break end end - if f==1 then chartColor,f={.4,.9,.5},1.25--Vegetable - elseif f==2 then chartColor,f={.4,.7,.9},1 --Normal - elseif f==3 then chartColor,f={1,.3,.3},.626 --Diao + if f==1 then chartColor,f={.4,.9,.5},1.25-- Vegetable + elseif f==2 then chartColor,f={.4,.7,.9},1 -- Normal + elseif f==3 then chartColor,f={1,.3,.3},.626 -- Diao end standard={ 120*.5*f, 120*3^.5*.5*f, @@ -187,7 +187,7 @@ function scene.draw() SCN.scenes.game.draw() end - --Dark BG + -- Dark BG local _=timer1 if GAME.result then _=_*.76 end gc.setColor(.12,.12,.12,_) @@ -197,13 +197,13 @@ function scene.draw() gc.setColor(.97,.97,.97,timer1) - --Result Text + -- Result Text mDraw(GAME.result and TEXTOBJ[GAME.result] or TEXTOBJ.pause,640,70-10*(5-timer1*5)^1.5) - --Mode Info (outside) + -- Mode Info (outside) gc.draw(TEXTOBJ.modeName,745-TEXTOBJ.modeName:getWidth(),143) - --Level rank + -- Level rank if RANK_CHARS[GAME.rank] then gc.push('transform') gc.translate(1050,5) @@ -221,13 +221,13 @@ function scene.draw() mDraw(tasText,870,395,.3,2.6) end - --Big info frame + -- Big info frame if PLAYERS[1].frameRun>=180 then gc.push('transform') gc.translate(560,205) gc.setLineWidth(2) - --Pause Info (outside) + -- Pause Info (outside) setFont(25) if GAME.pauseCount>0 then gc.setColor(.97,.97,.97,timer1*.06) @@ -237,20 +237,20 @@ function scene.draw() mStr(("%s:[%d] %.2fs"):format(text.pauseCount,GAME.pauseCount,GAME.pauseTime),305,389) end - --Pages + -- Pages if page==0 then - --Frame + -- Frame gc.setColor(.97,.97,.97,timer2*.06) gc.rectangle('fill',-5,-5,620,380,8) gc.setColor(.97,.97,.97,timer2) gc.rectangle('line',-5,-5,620,380,8) - --Game statistics + -- Game statistics gc.push('transform') gc.scale(.85) gc.setLineWidth(2) - --Stats + -- Stats _=form setFont(30) gc.setColor(.97,.97,.97,timer2) @@ -259,7 +259,7 @@ function scene.draw() gc.printf(_[i],210,43*(i-1)+2,500,'right') end - --Finesse rank & trophy + -- Finesse rank & trophy if rank then setFont(40) gc.setColor(.7,.7,.7,timer2) @@ -272,12 +272,12 @@ function scene.draw() end gc.pop() elseif page==1 then - --Radar Chart + -- Radar Chart gc.setLineWidth(1) gc.push('transform') gc.translate(310,185) - --Polygon + -- Polygon gc.push('transform') gc.scale((3-2*timer2)*timer2) gc.setColor(.97,.97,.97,timer2*(.5+.3*sin(TIME()*6.26))) @@ -294,7 +294,7 @@ function scene.draw() gc.line(val[11],val[12],val[1],val[2]) gc.pop() - --Texts + -- Texts local C _=TIME()%6.2832 if _>3.142 then @@ -314,7 +314,7 @@ function scene.draw() gc.pop() end - --Mods + -- Mods gc.push('transform') gc.translate(131,600) gc.scale(.65) diff --git a/parts/scenes/savedata.lua b/parts/scenes/savedata.lua index 864cce0e..c6ecd863 100644 --- a/parts/scenes/savedata.lua +++ b/parts/scenes/savedata.lua @@ -8,7 +8,7 @@ local function _parseCB() local _ local s=love.system.getClipboardText() - --Decode + -- Decode s=STRING.unpackText(s) if not s then MES.new('error',text.dataCorrupted)return end diff --git a/parts/scenes/setting_control.lua b/parts/scenes/setting_control.lua index acc02373..2004ed95 100644 --- a/parts/scenes/setting_control.lua +++ b/parts/scenes/setting_control.lua @@ -58,7 +58,7 @@ end function scene.draw() gc.translate(550,600) - --Testing grid line + -- Testing grid line gc.setLineWidth(4) gc.setColor(1,1,1,.4) gc.line(0,0,400,0) @@ -71,7 +71,7 @@ function scene.draw() gc.line(0,-10,0,90) gc.line(400,-10,400,90) - --O mino animation + -- O mino animation gc.setColor(1,1,1) local O=SKIN.lib[SETTING.skinSet][SETTING.skin[6]] gc.draw(O,40*pos,0,nil,40/30) diff --git a/parts/scenes/setting_game.lua b/parts/scenes/setting_game.lua index bfa318f4..308f21e1 100644 --- a/parts/scenes/setting_game.lua +++ b/parts/scenes/setting_game.lua @@ -13,7 +13,7 @@ function scene.draw() gc.push('transform') gc.translate(410,540-WIDGET.scrollPos) - --Draw mino + -- Draw mino local t=TIME() local b=math.floor(t*2)%16+1 gc.setShader(SHADER.blockSatur) @@ -23,7 +23,7 @@ function scene.draw() mDraw(SKIN.lib[SETTING.skinSet][b%16+1],0,0,t%6.2832,2) gc.setShader() - --Draw center + -- Draw center gc.setColor(1,1,1) mDraw(RSlist[SETTING.RS].centerTex,0,0,0,1.2) diff --git a/parts/scenes/setting_key.lua b/parts/scenes/setting_key.lua index 76f4f1dc..418ac6a8 100644 --- a/parts/scenes/setting_key.lua +++ b/parts/scenes/setting_key.lua @@ -4,7 +4,7 @@ local mStr=GC.mStr local scene={} -local selected--if waiting for key +local selected-- if waiting for key local keyList local keyNames={ diff --git a/parts/scenes/setting_sound.lua b/parts/scenes/setting_sound.lua index 9e765dce..3c218100 100644 --- a/parts/scenes/setting_sound.lua +++ b/parts/scenes/setting_sound.lua @@ -4,7 +4,7 @@ local sin=math.sin local scene={} -local last1,last2--Last touch/sound time +local last1,last2-- Last touch/sound time local sfxPack=SETTING.sfxPack local vocPack=SETTING.vocPack diff --git a/parts/scenes/setting_touch.lua b/parts/scenes/setting_touch.lua index e309a75d..4f84ec10 100644 --- a/parts/scenes/setting_touch.lua +++ b/parts/scenes/setting_touch.lua @@ -6,7 +6,7 @@ local scene={} local defaultSetSelect local snapUnit=1 -local selected--Button selected +local selected-- Button selected local function _save1() saveFile(VK_ORG,'conf/vkSave1') diff --git a/parts/scenes/stat.lua b/parts/scenes/stat.lua index d2a7f6b1..79bb529b 100644 --- a/parts/scenes/stat.lua +++ b/parts/scenes/stat.lua @@ -1,7 +1,7 @@ local scene={} -local form--Form of clear & spins -local item--Detail datas +local form-- Form of clear & spins +local item-- Detail datas function scene.sceneInit() BG.set() diff --git a/parts/scenes/support.lua b/parts/scenes/support.lua index 784a0ab5..654060b2 100644 --- a/parts/scenes/support.lua +++ b/parts/scenes/support.lua @@ -1,12 +1,12 @@ local scene={} function scene.draw() - --QR Code frame + -- QR Code frame GC.setLineWidth(2) GC.rectangle('line',298,98,263,263) GC.rectangle('line',718,318,250,250) - --Support text + -- Support text GC.setColor(1,1,1,MATH.sin(TIME()*20)*.3+.6) setFont(30) GC.mStr(text.support,430+MATH.sin(TIME()*4)*20,363) diff --git a/parts/spinner.lua b/parts/spinner.lua index 73cf2806..6992fe7b 100644 --- a/parts/spinner.lua +++ b/parts/spinner.lua @@ -54,12 +54,12 @@ function Spinner:draw(x,y) GC.push('transform') GC.translate(x,y) - --Draw circle + -- Draw circle GC.setColor(1,1,1) GC.setLineWidth(3) GC.circle('line',0,0,300) - --Draw areas + -- Draw areas GC.setLineWidth(1) local freq=0 for i=1,#self.data do @@ -86,7 +86,7 @@ function Spinner:draw(x,y) GC.pop() - --Draw target pin + -- Draw target pin GC.setLineWidth(2) GC.setColor(1,.3,.3) GC.line(x,y,x+200*math.cos(self.angle),y-200*math.sin(self.angle)) diff --git a/parts/texture.lua b/parts/texture.lua index b9db39aa..23d0827e 100644 --- a/parts/texture.lua +++ b/parts/texture.lua @@ -1,4 +1,4 @@ -local function NSC(x,y)--New & Set Canvas +local function NSC(x,y)-- New & Set Canvas local _=GC.newCanvas(x,y) GC.setCanvas(_) return _ @@ -9,7 +9,7 @@ local TEXTURE={} GC.setDefaultFilter('nearest','nearest') -TEXTURE.miniBlock={}--29 mini blocks image +TEXTURE.miniBlock={}-- 29 mini blocks image do GC.setColor(1,1,1) for i=1,29 do @@ -23,7 +23,7 @@ do end end -TEXTURE.puzzleMark={}--Texture for puzzle mode +TEXTURE.puzzleMark={}-- Texture for puzzle mode do GC.setLineWidth(2) for i=1,17 do @@ -50,16 +50,16 @@ do } end -TEXTURE.pixelNum={}--A simple pixel font +TEXTURE.pixelNum={}-- A simple pixel font for i=0,9 do TEXTURE.pixelNum[i]=GC.DO{5,9, - {('1011011111'):byte(i+1)>48,'fRect',1,0,3,1},--up - {('0011111011'):byte(i+1)>48,'fRect',1,4,3,1},--middle - {('1011011011'):byte(i+1)>48,'fRect',1,8,3,1},--down - {('1000111011'):byte(i+1)>48,'fRect',0,1,1,3},--up-left - {('1111100111'):byte(i+1)>48,'fRect',4,1,1,3},--up-right - {('1010001010'):byte(i+1)>48,'fRect',0,5,1,3},--down-left - {('1101111111'):byte(i+1)>48,'fRect',4,5,1,3},--down-right + {('1011011111'):byte(i+1)>48,'fRect',1,0,3,1},-- up + {('0011111011'):byte(i+1)>48,'fRect',1,4,3,1},-- middle + {('1011011011'):byte(i+1)>48,'fRect',1,8,3,1},-- down + {('1000111011'):byte(i+1)>48,'fRect',0,1,1,3},-- up-left + {('1111100111'):byte(i+1)>48,'fRect',4,1,1,3},-- up-right + {('1010001010'):byte(i+1)>48,'fRect',0,5,1,3},-- down-left + {('1101111111'):byte(i+1)>48,'fRect',4,5,1,3},-- down-right } end @@ -67,7 +67,7 @@ end GC.setDefaultFilter('linear','linear') -TEXTURE.title=NSC(1040,236)--Title image (Middle: 580,118) +TEXTURE.title=NSC(1040,236)-- Title image (Middle: 580,118) do GC.translate(10,10) GC.setColor(.2,.2,.2) @@ -85,7 +85,7 @@ do GC.translate(-10,-10) end -TEXTURE.title_color=NSC(1040,236)--Title image (colored) +TEXTURE.title_color=NSC(1040,236)-- Title image (colored) do local titleColor={COLOR.P,COLOR.F,COLOR.V,COLOR.A,COLOR.M,COLOR.N,COLOR.W,COLOR.Y} diff --git a/parts/theme.lua b/parts/theme.lua index 3fc2f167..be30a404 100644 --- a/parts/theme.lua +++ b/parts/theme.lua @@ -1,5 +1,5 @@ local THEME={ - cur=false,--Current theme + cur=false,-- Current theme } local themeColor={ xmas={COLOR.lR,COLOR.Z,COLOR.lG}, @@ -10,19 +10,19 @@ function THEME.calculate(Y,M,D) if not Y then Y,M,D=os.date('%Y'),os.date('%m'),os.date('%d') end - --Festival calculate within one statement + -- Festival calculate within one statement return - --Christmas + -- Christmas M=='12' and math.abs(D-25)<4 and 'xmas' or - --Birthday + -- Birthday M=='06' and D=='06' and 'birth' or - --Spring festival + -- Spring festival M<'03' and math.abs((({ - --Festival days. Jan 26=26, Feb 1=32, etc. + -- Festival days. Jan 26=26, Feb 1=32, etc. 24,43,32,22,40,29,49,38,26,45, 34,23,41,31,50,39,28,47,36,25, 43,32,22,41,29,48,37,26,44,34, @@ -33,18 +33,18 @@ function THEME.calculate(Y,M,D) })[Y-2000] or -26)-((M-1)*31+D))<6 and 'sprfes' or - --April fool's day + -- April fool's day M=='04' and D=='01' and 'fool' or - --Z day + -- Z day D=='26' and ( (M=='03' or M=='04' or M=='05' or M=='06') and 'zday1' or (M=='07' or M=='08' or M=='09' or M=='10') and 'zday2' or (M=='11' or M=='12' or M=='01' or M=='02') and 'zday3' ) or - --Normal + -- Normal ( (M=='02' or M=='03' or M=='04') and 'season1' or (M=='05' or M=='06' or M=='07') and 'season2' or diff --git a/parts/virtualKey.lua b/parts/virtualKey.lua index cb01ebd4..9a76d1ae 100644 --- a/parts/virtualKey.lua +++ b/parts/virtualKey.lua @@ -32,75 +32,75 @@ local holdImages={ local virtualkeySet={ { - {id=1, x=80, y=-200, r=80},--moveLeft - {id=2, x=320, y=-200, r=80},--moveRight - {id=3, x=-80, y=-200, r=80},--rotRight - {id=4, x=-200, y=-80, r=80},--rotLeft - {id=5, x=-200, y=-320, r=80},--rot180 - {id=6, x=200, y=-320, r=80},--hardDrop - {id=7, x=200, y=-80, r=80},--softDrop - {id=8, x=-320, y=-200, r=80},--hold - {id=9, x=80, y=280, r=80},--func1 - {id=10, x=-80, y=280, r=80},--func2 - },--Farter's tetr.js set + {id=1, x=80, y=-200, r=80},-- moveLeft + {id=2, x=320, y=-200, r=80},-- moveRight + {id=3, x=-80, y=-200, r=80},-- rotRight + {id=4, x=-200, y=-80, r=80},-- rotLeft + {id=5, x=-200, y=-320, r=80},-- rot180 + {id=6, x=200, y=-320, r=80},-- hardDrop + {id=7, x=200, y=-80, r=80},-- softDrop + {id=8, x=-320, y=-200, r=80},-- hold + {id=9, x=80, y=280, r=80},-- func1 + {id=10, x=-80, y=280, r=80},-- func2 + },-- Farter's tetr.js set { - {id=1, x=-320, y=-200, r=80},--moveLeft - {id=2, x=-80, y=-200, r=80},--moveRight - {id=3, x=200, y=-80, r=80},--rotRight - {id=4, x=80, y=-200, r=80},--rotLeft - {id=5, x=200, y=-320, r=80},--rot180 - {id=6, x=-200, y=-320, r=80},--hardDrop - {id=7, x=-200, y=-80, r=80},--softDrop - {id=8, x=320, y=-200, r=80},--hold - {id=9, x=-80, y=280, r=80},--func1 - {id=10, x=80, y=280, r=80},--func2 - },--Mirrored tetr.js set + {id=1, x=-320, y=-200, r=80},-- moveLeft + {id=2, x=-80, y=-200, r=80},-- moveRight + {id=3, x=200, y=-80, r=80},-- rotRight + {id=4, x=80, y=-200, r=80},-- rotLeft + {id=5, x=200, y=-320, r=80},-- rot180 + {id=6, x=-200, y=-320, r=80},-- hardDrop + {id=7, x=-200, y=-80, r=80},-- softDrop + {id=8, x=320, y=-200, r=80},-- hold + {id=9, x=-80, y=280, r=80},-- func1 + {id=10, x=80, y=280, r=80},-- func2 + },-- Mirrored tetr.js set { - {id=1, x=80, y=-80, r=80},--moveLeft - {id=2, x=240, y=-80, r=80},--moveRight - {id=3, x=-240, y=-80, r=80},--rotRight - {id=4, x=-400, y=-80, r=80},--rotLeft - {id=5, x=-240, y=-240, r=80},--rot180 - {id=6, x=-80, y=-80, r=80},--hardDrop - {id=7, x=-80, y=-240, r=80},--softDrop - {id=8, x=-80, y=-400, r=80},--hold - {id=9, x=80, y=-240, r=80},--func1 - {id=10, x=240, y=-240, r=80},--func2 - },--Author's set, not recommend + {id=1, x=80, y=-80, r=80},-- moveLeft + {id=2, x=240, y=-80, r=80},-- moveRight + {id=3, x=-240, y=-80, r=80},-- rotRight + {id=4, x=-400, y=-80, r=80},-- rotLeft + {id=5, x=-240, y=-240, r=80},-- rot180 + {id=6, x=-80, y=-80, r=80},-- hardDrop + {id=7, x=-80, y=-240, r=80},-- softDrop + {id=8, x=-80, y=-400, r=80},-- hold + {id=9, x=80, y=-240, r=80},-- func1 + {id=10, x=240, y=-240, r=80},-- func2 + },-- Author's set, not recommend { - {id=1, x=-400, y=-80, r=80},--moveLeft - {id=2, x=-80, y=-80, r=80},--moveRight - {id=3, x=240, y=-80, r=80},--rotRight - {id=4, x=80, y=-80, r=80},--rotLeft - {id=5, x=240, y=-240, r=80},--rot180 - {id=6, x=-240, y=-240, r=80},--hardDrop - {id=7, x=-240, y=-80, r=80},--softDrop - {id=8, x=400, y=-80, r=80},--hold - {id=9, x=80, y=-240, r=80},--func1 - {id=10, x=80, y=-400, r=80},--func2 - },--Keyboard set + {id=1, x=-400, y=-80, r=80},-- moveLeft + {id=2, x=-80, y=-80, r=80},-- moveRight + {id=3, x=240, y=-80, r=80},-- rotRight + {id=4, x=80, y=-80, r=80},-- rotLeft + {id=5, x=240, y=-240, r=80},-- rot180 + {id=6, x=-240, y=-240, r=80},-- hardDrop + {id=7, x=-240, y=-80, r=80},-- softDrop + {id=8, x=400, y=-80, r=80},-- hold + {id=9, x=80, y=-240, r=80},-- func1 + {id=10, x=80, y=-400, r=80},-- func2 + },-- Keyboard set { - {id=9, x=70, y=50, r=30},--func1 - {id=10, x=130, y=50, r=30},--func2 - {id=4, x=190, y=50, r=30},--rotLeft - {id=3, x=250, y=50, r=30},--rotRight - {id=5, x=310, y=50, r=30},--rot180 - {id=1, x=370, y=50, r=30},--moveLeft - {id=2, x=430, y=50, r=30},--moveRight - {id=8, x=490, y=50, r=30},--hold - {id=7, x=550, y=50, r=30},--softDrop - {id=6, x=610, y=50, r=30},--hardDrop - {id=11, x=670, y=50, r=30},--insLeft - {id=12, x=730, y=50, r=30},--insRight - {id=13, x=790, y=50, r=30},--insDown - {id=14, x=850, y=50, r=30},--down1 - {id=15, x=910, y=50, r=30},--down4 - {id=16, x=970, y=50, r=30},--down10 - {id=17, x=1030, y=50, r=30},--dropLeft - {id=18, x=1090, y=50, r=30},--dropRight - {id=19, x=1150, y=50, r=30},--zangiLeft - {id=20, x=1210, y=50, r=30},--zangiRight - },--PC key feedback(top&in a row) + {id=9, x=70, y=50, r=30},-- func1 + {id=10, x=130, y=50, r=30},-- func2 + {id=4, x=190, y=50, r=30},-- rotLeft + {id=3, x=250, y=50, r=30},-- rotRight + {id=5, x=310, y=50, r=30},-- rot180 + {id=1, x=370, y=50, r=30},-- moveLeft + {id=2, x=430, y=50, r=30},-- moveRight + {id=8, x=490, y=50, r=30},-- hold + {id=7, x=550, y=50, r=30},-- softDrop + {id=6, x=610, y=50, r=30},-- hardDrop + {id=11, x=670, y=50, r=30},-- insLeft + {id=12, x=730, y=50, r=30},-- insRight + {id=13, x=790, y=50, r=30},-- insDown + {id=14, x=850, y=50, r=30},-- down1 + {id=15, x=910, y=50, r=30},-- down4 + {id=16, x=970, y=50, r=30},-- down10 + {id=17, x=1030, y=50, r=30},-- dropLeft + {id=18, x=1090, y=50, r=30},-- dropRight + {id=19, x=1150, y=50, r=30},-- zangiLeft + {id=20, x=1210, y=50, r=30},-- zangiRight + },-- PC key feedback(top&in a row) } for _,set in next,virtualkeySet do for _,key in next,set do @@ -108,13 +108,13 @@ for _,set in next,virtualkeySet do if key.y<0 then key.y=720+key.y end end end ---Virtualkey icons +-- Virtualkey icons local VKIcon={} local VKI=gc.newImage("media/image/virtualkey.png") for i=1,20 do VKIcon[i]=GC.DO{90,90,{'draw',VKI,(i-1)%5*-90,math.floor((i-1)*.2)*-90}} end VKI:release() ---In-game virtualkey layout data +-- In-game virtualkey layout data local keys={} for i=1,#VK_ORG do keys[i]={} end local VK={keys=keys} @@ -143,18 +143,18 @@ function VK.touch(id,x,y) if SETTING.vib>0 then VIB(SETTING.vib+SETTING.VKVIB) end if SETTING.VKTrack then - --Auto follow + -- Auto follow local O=VK_ORG[id] local _FW,_CW=SETTING.VKTchW,1-SETTING.VKCurW local _OW=1-_FW-_CW - --(finger+current+origin) + -- (finger+current+origin) B.x=x*_FW+B.x*_CW+O.x*_OW B.y=y*_FW+B.y*_CW+O.y*_OW - --Button collision (not accurate) + -- Button collision (not accurate) if SETTING.VKDodge then for _,b in next,keys do - local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5--Hit depth(Neg means distance) + local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5-- Hit depth(Neg means distance) if d>0 then b.x=b.x+(b.x-B.x)*d*b.r*2.6e-5 b.y=b.y+(b.y-B.y)*d*b.r*2.6e-5 @@ -232,24 +232,24 @@ function VK.draw() for i,B in next,keys do if B.ava then local r=B.r - --Button outline + -- Button outline gc_setColor(1,1,1,a) gc_setLineWidth(r*.07) gc_draw(buttonImage,B.x,B.y,nil,r*.01,nil,100,100) - --Icon + -- Icon local _=B.pressTime gc_setColor(1,1,1,a) gc_draw(VKIcon[i],B.x,B.y,nil,r*.01+_*.024,nil,45,45) - --Ripple + -- Ripple if _>0 then gc_setColor(1,1,1,a*_*.08) local d=r*(1.4-_*.04) gc_draw(rippleImage,B.x,B.y,nil,d*.01,nil,100,100) end - --Glow when press + -- Glow when press if B.isDown then gc_setColor(1,1,1,a*.4) gc_draw(holdImage,B.x,B.y,nil,r*.01,nil,100,100)