Compare commits

...

12 Commits

Author SHA1 Message Date
MrZ626
457681e6ec 中英tips调整 2021-11-01 16:26:34 +08:00
MrZ626
904bcf6852 版本号改为0.16.4,移除@DEV标记(需要测试) 2021-11-01 15:52:23 +08:00
MrZ626
e21e57ff84 添加tip命令方便看tips 2021-11-01 14:51:40 +08:00
MrZ626
562a69831a 给中英tip排序 2021-11-01 14:32:26 +08:00
C29H25N3O5
706a683540 修正标点, .gitignore添加几个文件类型 2021-11-01 14:13:08 +08:00
C29H25N3O5
8e2aee5e84 再改语言文件 2021-11-01 14:13:08 +08:00
MrZ626
f68facbe0e 检测到启动参数有--test时启动测试脚本(需要更多测试)
Co-authored-by: Trebor Huang <41145779+Trebor-Huang@users.noreply.github.com>
2021-11-01 03:41:19 +08:00
MrZ626
5535366bb1 TASK模块创建任务第一次执行的时候也用assert保证错误被捕捉 2021-11-01 03:23:00 +08:00
Imple Lee
d75b709f23 Move Python code from updateVersion.py into action.ymls directly (#423)
* test python3

* try use `python` instead of `python3`

* use `update-version` everywhere

* fix variable injection

* fix python2vs3

* move `updateVersion.py` into action files
2021-11-01 02:12:32 +08:00
MrZ626
0a15011ec7 修复模式目录下非完整模式文件也会被当成模式加载 2021-10-31 02:03:54 +08:00
ParticleG
f7dfe1d869 - Re-enable other workflows 2021-10-31 00:39:54 +08:00
ParticleG
5e9c9cb5fa - Try use discordrb 2021-10-31 00:39:52 +08:00
21 changed files with 300 additions and 246 deletions

View File

@@ -59,11 +59,41 @@ runs:
shell: bash
run: |
7z a -tzip love-android/app/src/main/assets/game.love libAndroid
- name: update Android information
shell: python
run: |
if '${{ inputs.type }}' == 'Release':
appName = 'Techmino'
packageName = 'org.love2d.MrZ.Techmino'
edition = 'release'
elif '${{ inputs.type }}' == 'Snapshot':
appName = 'Techmino_Snapshot'
packageName = 'org.love2d.MrZ.Techmino.Snapshot'
edition = 'snapshot'
with open('./love-android/app/src/main/AndroidManifest.xml', "r+", encoding='utf-8') as file:
data = file.read()
data = data\
.replace('@appName', appName)\
.replace('@edition', edition)
file.seek(0)
file.truncate()
file.write(data)
with open("./love-android/app/build.gradle", "r+", encoding='utf-8') as file:
data = file.read()
data = data\
.replace('@packageName', packageName)\
.replace('@versionCode', '${{ inputs.apkCode }}')\
.replace('@versionName', '${{ inputs.name }}')\
.replace('@storePassword', '${{ inputs.KEY_STORE_PASSWORD }}')\
.replace('@keyAlias', '${{ inputs.ALIAS }}')\
.replace('@keyPassword', '${{ inputs.KEY_PASSWORD }}')
file.seek(0)
file.truncate()
file.write(data)
- name: Build Techmino
shell: bash
run: |
echo "${{ inputs.SIGNING_KEY }}" | base64 -d > love-android/app/android.keystore
python3 .github/workflows/updateVersion.py -T Android${{ inputs.type }} -C ${{ inputs.apkCode }} -N ${{ inputs.name }} -S ${{ inputs.KEY_STORE_PASSWORD }} -A ${{ inputs.ALIAS }} -K ${{ inputs.KEY_PASSWORD }}
chmod 777 love-android/gradlew
cd love-android/
./gradlew assembleRelease

View File

@@ -40,6 +40,9 @@ inputs:
FASTLANE_DISCORD_WEBHOOK:
required: true
description: "Fastlane Discord webhook"
FASTLANE_ACTION_ID:
required: true
description: "Fastlane Action ID"
FASTLANE_MATCH_PWD:
required: true
description: "Fastlane Match description password"
@@ -71,6 +74,7 @@ runs:
lane: '${{ inputs.type }}'
subdirectory: 'Techmino-iOS/platform/xcode'
env:
ACTION_ID: '${{ inputs.FASTLANE_ACTION_ID }}'
API_ID: '${{ inputs.APPLE_API_ID }}'
API_ISSUER: '${{ inputs.APPLE_API_ISSUER }}'
API_KEY: '${{ inputs.APPLE_API_KEY }}'

View File

@@ -59,12 +59,22 @@ runs:
MATCH_PASSWORD: '${{ inputs.FASTLANE_MATCH_PWD }}'
MATCH_TOKEN: '${{ inputs.FASTLANE_MATCH_TOKEN }}'
- name: Modify template
shell: python
run: |
import datetime
from io import open
thisYear = str(datetime.datetime.today().year)
with open('./.github/build/macOS/info.plist.template', 'r', encoding='utf-8') as file:
data = file.read()
data = data\
.replace('@versionName', '${{ inputs.name }}'[1:])\
.replace('@thisYear', thisYear)\
.replace('@bundleId', '${{ inputs.APPLE_APP_IDENTIFIER }}')
with open('./Techmino-macOS/Techmino.app/Contents/info.plist', 'w+', encoding='utf-8') as file:
file.write(data)
- name: Pack
shell: bash
run: |
python3 .github/workflows/updateVersion.py -T macOS \
-N ${{ inputs.name }} \
-B ${{ inputs.APPLE_APP_IDENTIFIER }}
mv Techmino.love Techmino-macOS/Techmino.app/Contents/Resources
mv CCloader.dylib Techmino-macOS/Techmino.app/Contents/Frameworks
mv ${{ inputs.icon }} Techmino-macOS/Techmino.app/Contents/Resources/iconfile.icns

View File

@@ -30,6 +30,18 @@ runs:
with:
url: http://www.angusj.com/resourcehacker/resource_hacker.zip
- uses: ./.github/actions/build-love
- name: update Windows template
shell: python
run: |
Version = '${{ inputs.version }}'.replace('V', '')
FileVersion = (f"{Version.replace('.', ',')},0")
with open('./.github/build/Windows/Techmino.rc.template', 'r', encoding='utf8') as file:
data = file.read()
data = data\
.replace('@FileVersion', FileVersion)\
.replace('@Version', Version)
with open('Techmino.rc', 'w+', encoding='utf8') as file:
file.write(data)
- name: Pack Techmino
shell: pwsh
run: |
@@ -42,7 +54,6 @@ runs:
del .\love\readme.txt
move .\cold_clear.dll .\love
move .\CCloader.dll .\love
python .\.github\workflows\updateVersion.py -T Windows -N ${{ inputs.version }}
cmd /c '.\ResourceHacker.exe -open .\love\Techmino.exe -save .\love\Techmino.exe -action delete -mask ICONGROUP,,'
cmd /c '.\ResourceHacker.exe -open .\Techmino.rc -save .\Techmino.res -action compile'
cmd /c '.\ResourceHacker.exe -open .\love\Techmino.exe -save .\love\Techmino.exe -action addoverwrite -res "${{ inputs.icon }}" -mask ICONGROUP,1,'

View File

@@ -1,12 +0,0 @@
name: 'update for a snapshot'
description: 'common update logic for snapshot'
inputs:
commit:
required: true
runs:
using: "composite"
steps:
- shell: bash
run: |
python3 .github/workflows/updateVersion.py -T Conf
python3 .github/workflows/updateVersion.py -T Version -H ${{ inputs.commit }}

View File

@@ -0,0 +1,36 @@
name: 'update version'
description: 'common update logic for snapshot and release'
inputs:
commit:
required: false
type:
required: true
runs:
using: "composite"
steps:
- shell: python
name: update snapshot saving folder
run: |
from io import open
if '${{ inputs.type }}'.lower() != 'snapshot':
exit(0)
with open('conf.lua', 'r+', encoding='utf-8') as file:
data = file.read()
data = data.replace("t.identity='Techmino'--Saving folder", "t.identity='Techmino_Snapshot'--Saving folder")
file.seek(0)
file.truncate()
file.flush()
file.write(data)
- shell: python
run: |
from io import open
import re
with open('version.lua', 'r+', encoding='utf-8') as file:
commitHash = '${{ inputs.commit }}'
commitHash = commitHash[0:4] if commitHash != '' else '????'
data = file.read()
data = re.sub('(\d)"', r'\1@' + commitHash + '"', data)
file.seek(0)
file.truncate()
file.flush()
file.write(data)

View File

@@ -32,9 +32,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-windows
with:
love-url: https://github.com/love2d/love/releases/download/11.3/love-11.3-win64.zip
@@ -53,9 +54,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-linux
with:
icon: .github/build/Linux/icon_snapshot.png
@@ -70,9 +72,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-android
with:
type: Snapshot
@@ -94,9 +97,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-macos
with:
name: ${{ needs.get-info.outputs.name }}
@@ -120,9 +124,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-ios
with:
name: ${{ needs.get-info.outputs.name }}
@@ -137,6 +142,7 @@ jobs:
APPLE_APP_PROFILE: '${{ secrets.APPLE_APP_PROFILE }}'
APPLE_KEYCHAIN_NAME: '${{ secrets.APPLE_KEYCHAIN_NAME }}'
APPLE_KEYCHAIN_PWD: '${{ secrets.APPLE_KEYCHAIN_PWD }}'
FASTLANE_ACTION_ID: '${{ github.run_id }}'
FASTLANE_DISCORD_WEBHOOK: '${{ secrets.FASTLANE_DISCORD_WEBHOOK }}'
FASTLANE_MATCH_PWD: '${{ secrets.FASTLANE_MATCH_PWD }}'
FASTLANE_MATCH_TOKEN: '${{ secrets.FASTLANE_MATCH_TOKEN }}'

View File

@@ -5,10 +5,10 @@ elseif arg[1]=="-code"then
local str=require"version".code
print(str)
elseif arg[1]=="-name"then
local str=require"version".string:gsub("@DEV","")
local str=require"version".string
print(str)
elseif arg[1]=="-release"then
local str=require"version".string:gsub("V","",1):gsub("@DEV","")
local str=require"version".string:gsub("V","",1)
print(str)
elseif arg[1]=="-updateTitle"then
local note=require"parts.updateLog"

View File

@@ -35,9 +35,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- name: Update Version
run: |
python .\.github\workflows\updateVersion.py -T Version
- uses: ./.github/actions/update-version
- uses: ./.github/actions/build-windows
with:
love-url: https://github.com/love2d/love/releases/download/11.3/love-11.3-win64.zip
@@ -58,9 +56,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- name: Update Version
run: |
python .\.github\workflows\updateVersion.py -T Version
- uses: ./.github/actions/update-version
- uses: ./.github/actions/build-windows
with:
love-url: https://github.com/love2d/love/releases/download/11.3/love-11.3-win32.zip
@@ -81,9 +77,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- name: Update Version
run: |
python3 .github/workflows/updateVersion.py -T Version
- uses: ./.github/actions/update-version
- uses: ./.github/actions/build-linux
with:
file-path: Techmino.a${{ needs.get-info.outputs.release }}.AppImage
@@ -99,9 +93,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- name: Update Version
run: |
python3 .github/workflows/updateVersion.py -T Version
- uses: ./.github/actions/update-version
- uses: ./.github/actions/build-android
with:
type: Release
@@ -123,9 +115,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- name: Update Version
run: |
python3 .github/workflows/updateVersion.py -T Version
- uses: ./.github/actions/update-version
- name: remove media
run: |
rm -rf media/music media/effect media/vocal
@@ -150,9 +140,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- name: Update Version
run: |
python3 .github/workflows/updateVersion.py -T Version
- uses: ./.github/actions/update-version
- uses: ./.github/actions/build-macos
with:
name: ${{ needs.get-info.outputs.name }}
@@ -179,9 +167,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
with:
commit: ${{ needs.get-info.outputs.commit }}
- uses: ./.github/actions/update-version
- uses: ./.github/actions/build-ios
with:
name: ${{ needs.get-info.outputs.name }}
@@ -196,6 +182,7 @@ jobs:
APPLE_APP_PROFILE: '${{ secrets.APPLE_APP_PROFILE }}'
APPLE_KEYCHAIN_NAME: '${{ secrets.APPLE_KEYCHAIN_NAME }}'
APPLE_KEYCHAIN_PWD: '${{ secrets.APPLE_KEYCHAIN_PWD }}'
FASTLANE_ACTION_ID: '${{ github.run_id }}'
FASTLANE_DISCORD_WEBHOOK: '${{ secrets.FASTLANE_DISCORD_WEBHOOK }}'
FASTLANE_MATCH_PWD: '${{ secrets.FASTLANE_MATCH_PWD }}'
FASTLANE_MATCH_TOKEN: '${{ secrets.FASTLANE_MATCH_TOKEN }}'
@@ -214,9 +201,7 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- name: Update Version
run: |
python3 .github/workflows/updateVersion.py -T Version
- uses: ./.github/actions/update-version
- uses: ./.github/actions/build-love
with:
file-path: Techmino.a${{ needs.get-info.outputs.release }}.love

View File

@@ -33,9 +33,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-windows
with:
love-url: https://github.com/love2d/love/releases/download/11.3/love-11.3-win64.zip
@@ -54,9 +55,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-linux
with:
icon: .github/build/Linux/icon_snapshot.png
@@ -71,9 +73,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-android
with:
type: Snapshot
@@ -95,9 +98,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-macos
with:
name: ${{ needs.get-info.outputs.name }}
@@ -121,9 +125,10 @@ jobs:
needs: get-info
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/snapshot-update
- uses: ./.github/actions/update-version
with:
commit: ${{ needs.get-info.outputs.commit }}
type: snapshot
- uses: ./.github/actions/build-ios
with:
name: ${{ needs.get-info.outputs.name }}
@@ -138,6 +143,7 @@ jobs:
APPLE_APP_PROFILE: '${{ secrets.APPLE_APP_PROFILE }}'
APPLE_KEYCHAIN_NAME: '${{ secrets.APPLE_KEYCHAIN_NAME }}'
APPLE_KEYCHAIN_PWD: '${{ secrets.APPLE_KEYCHAIN_PWD }}'
FASTLANE_ACTION_ID: '${{ github.run_id }}'
FASTLANE_DISCORD_WEBHOOK: '${{ secrets.FASTLANE_DISCORD_WEBHOOK }}'
FASTLANE_MATCH_PWD: '${{ secrets.FASTLANE_MATCH_PWD }}'
FASTLANE_MATCH_TOKEN: '${{ secrets.FASTLANE_MATCH_TOKEN }}'

View File

@@ -1,100 +0,0 @@
import argparse
import re
def updateConf(): #更新存档位置
with open('conf.lua', 'r+', encoding='utf-8') as file:
data = file.read()
data = data.replace("t.identity='Techmino'--Saving folder", "t.identity='Techmino_Snapshot'--Saving folder")
file.seek(0)
file.truncate()
file.flush()
file.write(data)
def updateVersion(args): #更新版本号
with open('version.lua', 'r+', encoding='utf-8') as file:
data = file.read()
if args.Hash != False:
data = data.replace('@DEV', f'@{args.Hash[0:4]}')
else:
data = data.replace('@DEV', '')
file.seek(0)
file.truncate()
file.flush()
file.write(data)
def updateMacOS(args): #更新macOS打包信息
import datetime
thisYear = str(datetime.datetime.today().year)
with open('./.github/build/macOS/info.plist.template', 'r', encoding='utf-8') as file:
data = file.read()
data = data\
.replace('@versionName', args.Name[1:])\
.replace('@thisYear', thisYear)\
.replace('@bundleId', args.Bundle)
with open('./Techmino-macOS/Techmino.app/Contents/info.plist', 'w+', encoding='utf-8') as file:
file.write(data)
def updateWindows(args): #更新Windows打包信息
Version = (args.Name).replace('V', '')
FileVersion = (f"{Version.replace('.', ',')},0")
with open('./.github/build/Windows/Techmino.rc.template', 'r', encoding='utf8') as file:
data = file.read()
data = data\
.replace('@FileVersion', FileVersion)\
.replace('@Version', Version)
with open('Techmino.rc', 'w+', encoding='utf8') as file:
file.write(data)
def updateAndroid(args, edition): #更新Android打包信息
if edition == 'Release':
appName = 'Techmino'
packageName = 'org.love2d.MrZ.Techmino'
edition = 'release'
elif edition == 'Snapshot':
appName = 'Techmino_Snapshot'
packageName = 'org.love2d.MrZ.Techmino.Snapshot'
edition = 'snapshot'
with open('./love-android/app/src/main/AndroidManifest.xml', "r+", encoding='utf-8') as file:
data = file.read()
data = data\
.replace('@appName', appName)\
.replace('@edition', edition)
file.seek(0)
file.truncate()
file.write(data)
with open("./love-android/app/build.gradle", "r+", encoding='utf-8') as file:
data = file.read()
data = data\
.replace('@packageName', packageName)\
.replace('@versionCode', args.Code)\
.replace('@versionName', args.Name)\
.replace('@storePassword', args.Store)\
.replace('@keyAlias', args.Alias)\
.replace('@keyPassword', args.Key)
file.seek(0)
file.truncate()
file.write(data)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='用于CI更新程序各类信息')
parser.add_argument('-T', '--Type', type=str, help = '更新的种类')
parser.add_argument('-B', '--Bundle', type=str, help = '应用包名')
parser.add_argument('-H', '--Hash', type=str, default = False, help = 'Github提交Hash')
parser.add_argument('-C', '--Code', type=str, default = False, help = 'versionCode')
parser.add_argument('-N', '--Name', type=str, default = False, help = 'versionName')
parser.add_argument('-S', '--Store', type=str, default = False, help = 'storePassword')
parser.add_argument('-A', '--Alias', type=str, default = False, help = 'keyAlias')
parser.add_argument('-K', '--Key', type=str, default = False, help = 'keyPassword')
args = parser.parse_args()
if args.Type == 'Conf':
updateConf()
elif args.Type == 'Version':
updateVersion(args)
elif args.Type == 'Windows':
updateWindows(args)
elif args.Type == 'macOS':
updateMacOS(args)
elif args.Type == 'AndroidRelease':
updateAndroid(args, 'Release')
elif args.Type == 'AndroidSnapshot':
updateAndroid(args, 'Snapshot')

7
.gitignore vendored
View File

@@ -1,3 +1,8 @@
.vscode
libAndroid
*.ini
*.ini
.DS_Store
Thumbs.db
Icon?
.Trash
.file

View File

@@ -23,7 +23,7 @@ function TASK.update(dt)
end
function TASK.new(code,...)
local thread=coroutine.create(code)
resume(thread,...)
assert(resume(thread,...))
if status(thread)~='dead'then
tasks[#tasks+1]={
thread=thread,

View File

@@ -382,8 +382,11 @@ end
for _,v in next,fs.getDirectoryItems('parts/modes')do
if isSafeFile('parts/modes/'..v)and not MODES[v:sub(1,-5)]then
local M={name=v:sub(1,-5)}
TABLE.complete(require('parts.modes.'..M.name),M)
MODES[M.name]=M
local modeData=require('parts.modes.'..M.name)
if modeData.env then
TABLE.complete(modeData,M)
MODES[M.name]=M
end
end
end
@@ -576,3 +579,36 @@ table.sort(REPLAY,function(a,b)return a.fileName>b.fileName end)
table.insert(_LOADTIMELIST_,("Initialize Data: %.3fs"):format(TIME()-_LOADTIME_))
for i=1,#_LOADTIMELIST_ do LOG(_LOADTIMELIST_[i])end
if TABLE.find(arg,'--test')then
TASK.new(function()
while not LOADED do YIELD()end
print("\27[92m\27[1mAutomatic Test Started\27[0m")
BGM.setVol(0)SFX.setVol(0)
love.keypressed('space')
while SCN.swapping do YIELD()end
for k,mode in next,MODES do
if k~='netBattle'then
print("Scanning mode: "..mode.name)
loadGame(mode.name.."a",true)
while SCN.swapping do YIELD()end
SCN.back()
while SCN.swapping do YIELD()end
end
end
print("\27[92m\27[1mAutomatic Test Passed :)\27[0m")
for _=1,60 do YIELD()end
love.event.quit(0)
end)
TASK.new(function()
while true do
YIELD()
if ERRDATA[1]then break end
end
print("\27[91m\27[1mAutomatic Test Failed :(\27[0m\nThe error message is:\n"..table.concat(ERRDATA[1].mes,"\n").."\27[91m\nAborting\27[0m")
for _=1,60 do YIELD()end
love.event.quit(1)
end)
end

View File

@@ -405,10 +405,10 @@ return{
"term",
"In most cases, it's a meme.\nThe shape and position of the O Tetromino (a.k.a. the Square) does not change upon rotation, thus making it lack interesting spins/kicks that other Tetrominoes have, or be stuck in a place unable to get out.\nAs a joke, some people have made heavily edited videos or even programmed games where the O pieces can change shape and \"spin\" into different positions.\nTechmino also supports O-Spin in most modes.",
},
{"Rotation Systems",--Editted
{"Rotation Systems",
"wallkick rotationsystem",
"term",
"Systems that determine how pieces rotate.\n\nRotation systems usually handle two things: basic rotation and kicks.\n\nBasic rotation refers to how pieces rotate in an open area. Because rotating pieces on their geometric center will usually cause the piece to be misaligned from the grid, rotation systems need to specify alternative rotation centers or rotation offsets to align rotated pieces back to the grid.\n\nKicks refer to offsets applied if the rotated piece overlaps with the border of the matrix or other blocks. While older games, like the ones on NES and Gameboy, lack kicks, people soon realized that if a piece is too close to the wall, the floor or other pieces, the piece can (unintuitively) fail to rotate due to overlapping. Games started to implement systems that allow pieces close to walls/floors to rotate, and move them away from the wall/floor into a valid position (\"kicking off the wall/floor\"), and such movements, or offsets used in said movements, are referred to as (wall/floor) kicks.\n\nWhile Super Rotation System (SRS) is the current standard for modern official Tetris games, older games and unofficial games may have their own rotation systems, implementing different basic rotations and kicks.",
"Systems that determine how the pieces rotate.\n\nIn modern Tetris games, tetrominoes can rotate on a specfic rotation center (but this may be absent in some games). If the minoes overlap with the walls or the field, the system would attempt to perform some offsets (a process known as \"wall-kicking\"). Wall kicks allow minoes to move into in specific-shaped holes.",
},
{"ARS",
"ars arikrotationsystem atarirotationsystem",
@@ -445,10 +445,10 @@ return{
"term",
"Nintendo Rotation System\nThe rotation system used in the Tetris games on the NES and Game Boy.\nIt has two mirrored versions; the left-handed version is used on Game Boy, and the right-handed version on the NES.",
},
{"SRS",--Editted
{"SRS",
"srs superrotationsystem",
"term",
"Super Rotation System\nThe rotation system used in modern, official Tetris games.\nEach Tetromino has a rotation center for the piece to rotate around. Should a Tetromino overlap with the wall, floor or another mino on the field after rotation, a few offset positions will be checked, allowing pieces to kick off walls and floors. This also allows pieces to rotate into openings that are otherwise unreachable.\n\nMany unofficial games implement some modification of this rotation system that adds a kick for 180 spins. In Techmino, such a modification is called SRS+.",
"Super Rotation System, the most widely used rotation system by modern Tetris games, and is the foundation of many self-made rotation systems. There are four orientations for each tetromino, and they can rotate clockwise or counterclockwise (But without 180° rotations). Should a Tetromino overlap with the wall, floor or other minoes on the field after rotation, a few offset positions will be checked, allowing pieces to kick off walls and floors. You can look up the details of the wall kick table on Tetris Wiki.",
},
{"TRS",
"trs techminorotationsystem",

View File

@@ -760,20 +760,20 @@ return{
['custom_puzzle']= {"Custom", "PUZZLE"},
},
getTip={refuseCopy=true,
'Free-to-play block stacking game with a Battle Royale mode!',
'Have you noticed what "rotating" does do to a block?',
":pog:",
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"\"Example App\" cannot be opened because the developer cannot be verified.",
"\"Techmino.app\" cannot be opened because the developer cannot be verified.",
"\"Techmino.app\" will damage your computer. You should move it to the Bin.",
"\"TechminOS\"",
"\\jezevec/\\jezevec/\\jezevec/",
"\\osk/\\osk/\\osk/",
"↑↑↓↓←→←→BA",
"$include<studio.h>",
"0next 0hold",
"0next 0hold.",
"1next 0hold",
"1next 1hold!",
"1next 6hold!",
"20G actually is a brand new game rule.",
"20G actually is a brand new game rule!",
"40-line Sprint WR: 14.915s by Reset_",
"6next 1hold!",
"6next 6hold?!",
@@ -782,7 +782,6 @@ return{
"Am G F G",
"B2B2B???",
"B2B2B2B does not exist.",
"B2B2B2B exists?",
"Back-to-Back Techrash, 10 Combo, PC!",
"Be sure to give it your best shot again today!",
"Bridge clear coming soon!",
@@ -792,49 +791,60 @@ return{
"Color clear coming soon!",
"Decreasing DAS and ARR makes your game faster but harder to control.",
"Did I just see a Back-to-Back-to-Back?",
"Does B2B2B2B exists?",
"Don't let a small glitch ruin your entire day!",
"Don't look directly at the bugs!",
"Enjoy the Techmino rotation system!",
"Excellent, but let's go better next time…",
"Find out what's in the settings!",
"Found any bugs? Open up an issue in our GitHub page!",
"Free-to-play block stacking game with a Battle Royale mode!",
"git commit",
"git push -f",
"Got any suggestions? Post them in our Discord!",
"Have you noticed what \"rotating\" does do to a block?",
"Headphones recommended for a better experience.",
"Hello world!",
"I3 and L3 are the only two unique tetrominoes.",
"hello world",
"I3 and L3 are the only two unique triminoes.",
"if a==true",
"Increase your frame rate for a better experience.",
"Initial [insert action] system can save you.",
"Is B2B2B2B possible?",
"It's possible to finish 40L without left/right button.",
"It is loading! Not just a cutscene!",
"It's possible to finish 40L without left/right buttons.",
"It's possible to finish 40L without rotation buttons.",
"Join our Discord!",
"l-=-1",
"Let the bass kick!",
"Low frame rates reduce your gaming experience.",
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
"Lua No.1",
"Mix clear coming soon!",
"Most of the button icons are realized by using self-drawn glyphs in the Unicode Private Use Area.",
"Music of this game is made using Beepbox.",
"Music too distracting? You can turn it off.",
"No easter eggs in this menu if you have the simplistic style turned on!",
"O-Spin Triple!",
"OHHHHHHHHHHHHHH",
"Online mode is planned - please be patient.",
"Online mode is planned please be patient.",
"Play single-handedly!",
"Playing good takes some time!",
"Powered by LÖVE",
"Powered by Un..LÖVE",
"pps-0.01",
"Secret number: 626",
"Server down randomly",
"Some requirements to achieve rank S are intentionally set to be difficult for even the best players.",
"Soon you'll be able to play against friends and foes all over the world.",
"Split clear coming soon!",
"Surely loading! Not just a cutscene!",
"sudo rm -rf /*",
"Techmino = Technique + Tetromino",
"Techmino has a Nspire-CX edition!",
"Techmino is so fun!",
"Techmino.app will damage your computer. You should move it to the Bin.",
"TetroDictionary is now available in English.",
"The names that appeared in the background of the Staff page is a list of our sponsors.",
"The stacker future is yours in Techmino!",
"There are four hidden modes in the game.",
"There are several hidden modes in the game that cannot be entered using the map.",
"There is a total of 18 different pentominoes.",
"There is a total of 7 different tetrominoes.",
"Try using multiple Hold Queues!",
@@ -846,10 +856,12 @@ return{
"What is this cheap UI & music smh",
"while(false)",
"You are a Grand Master!",
"You can connect a keyboard to your phone or tablet!",
"You are welcome to help us to make BGMs and SFXs!",
"You can connect a keyboard to your phone or tablet (not functional on iOS though).",
"You can customize the key mappings in settings!",
"You can navigate the menu with a keyboard, but only in this screen.",
"You can open the save directory from the Stats page.",
"You can perform a spin with 28 of the 29 minos in this game; the exception being O1.",
"You can perform a spin with 28 of the 29 minoes in this game; the exception being O1.",
"You can set the spawning orientation for each tetromino.",
"ZS JL T O I",
{C.C,"Also try 15puzzle!"},
@@ -858,16 +870,20 @@ return{
{C.C,"Also try Orzmic!"},
{C.C,"Also try osu!"},
{C.C,"Also try Phigros!"},
{C.C,"Also try Puyo Puyo!"},
{C.C,"Also try Rubik's cube!"},
{C.C,"Also try Terraria!"},
{C.C,"Also try Touhou Project!"},
{C.C,"Also try VVVVVV!"},
{C.H,"REGRET!!"},
{C.lP,"Secret number: 626"},
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
{C.lY,"COOL!!"},
{C.N,"Lua",C.Z," No.1"},
{C.P,"T-spin!"},
{C.R,"\"DMCA abusing\""},
{C.R,"\"Intellectual property law\""},
{C.R,"DD",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z," Cannon"},
{C.R,"DT",C.Z," Cannon=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z," Cannon"},
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR ",C.P,"LLL ",C.C,"FFF ",C.Y,"RfR ",C.Y,"RRf ",C.Y,"rFF"},
{C.Y,"O-Spin Triple!"},

View File

@@ -767,6 +767,8 @@ return{
"……合群了就会消失不合群世界毁灭指game over",
"……,合群了就会消失,但消失不代表没有意义",
"……,没有对比就没有伤害",
"“Techmino.app”将对您的电脑造成伤害。您应该将它移到废纸篓。",
"“TechminOS”",
"(a+b)³=a³+3a²b+3ab²+b³",
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"《按钮风格进化史》",
@@ -778,10 +780,9 @@ return{
"《游戏的意义》",
"《知识的力量》",
"《主题曲进化史》",
"\"TechminOS\"",
"↑↑↓↓←→←→BA",
"$include<studio.h>",
"0next 0hold",
"0next 0hold.",
"11renPC",
"1next 0hold",
"1next 1hold",
@@ -843,7 +844,7 @@ return{
"多年小游戏玩家表示痛恨假加载,启动动画主要是在加载资源",
"多hold现代块又回来了",
"俄罗斯方块完全可以作为电竞游戏",
"发现有个\"隐形\"皮肤了吗",
"发现有个“隐形”皮肤了吗",
"发现Bug可以去GitHub上开个issue反馈",
"方块不能吃",
"方块不是你生活的全部,适当走出去看看",
@@ -907,7 +908,6 @@ return{
"每个块的颜色可以自定义",
"每个虚拟按键都可以隐藏/显示,尺寸也可调",
"免费吃鸡方块",
"“Techmino.app”将对您的电脑造成伤害。您应该将它移到废纸篓。",
"喵!",
"魔方也是方块(确信",
"能导致吃键的问题有很多,建议说清楚具体发生了什么并且录视频说明",
@@ -926,7 +926,7 @@ return{
"你知道吗:O-Spin是在0.8.20 (Fantastic Global Update II)中诞生的",
"你知道吗:TRS旋转系统的最初形态在0.0.091726版本就存在了",
"你准备好了吗?",
"其实很多时候\"吃键\"是玩家对游戏机制不了解或者自己的操作问题导致的",
"其实很多时候“吃键”是玩家对游戏机制不了解或者自己的操作问题导致的",
"其实S和Z有四个方向(状态),虽然看起来只有两个",
"请谨慎向没有方块经验的玩家推荐,会对本游戏的生存环境造成影响,感谢配合。",
"请勿大力敲打设备敲坏了就没有Techmino玩了",
@@ -944,7 +944,7 @@ return{
"使用固定堆叠方法达成20TSD难度很低",
"试试用跳舞毯打块",
"适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活",
"手机玩也可以外接键盘哦",
"手机玩也可以外接键盘哦(iOS除外)",
"首页的机器人可能会不小心把自己给玩死",
"术语不认识?去右边那个词典里查查吧",
"水平是随着时间一点点提升的,不是几天几星期就能玩好的哦",
@@ -1005,7 +1005,7 @@ return{
"震惊我只是一条凑数tip吗",
"众所周知俄罗斯方块是经典编程练手游戏(",
"众所周知mac不能拿来玩游戏",
"注意到方块\"旋转\"的时候到底发生了些什么吗?",
"注意到方块“旋转”的时候到底发生了些什么吗?",
"自定义场地可以画图实现逐页演示",
"自己不确定的问题尽量不要教别人哦",
"总共有400多条tip哦",
@@ -1030,18 +1030,18 @@ return{
"e^(πi)=-1",
"e^(πi/2)=i",
"e^(πi/4)=(1+i)/√2",
"Farter:\"成天被夸赞'好玩'的\"",
"Farter:\"可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的\"",
"Farter:\"论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(\"",
"Farter:\"民间微创新\"",
"Farter:\"民间音le与图案\"",
"Farter:\"民间游戏设计\"",
"Farter:\"是方块爱好者研究平台\"",
"Farter:\"是方块萌新入坑接收器\"",
"Farter:\"是居家旅行装逼必备\"",
"Farter:\"是民间UI动效艺术作品\"",
"Farter:\"是一滩散乱的代码组成的蜜汁结构\"",
"Farter:\"它是现在的techmino已发布版本\"",
"Farter:成天被夸赞'好玩'的",
"Farter:可以形成方块圈子小中心话题,同作者一起衍生一些概念与梗的",
"Farter:论方块的软工意义(就算这么小个范围内,各种取舍蒙混翻车现象都总会以很易懂的方式出现(",
"Farter:民间微创新",
"Farter:民间音lè与图案",
"Farter:民间游戏设计",
"Farter:是方块爱好者研究平台",
"Farter:是方块萌新入坑接收器",
"Farter:是居家旅行装逼必备",
"Farter:是民间UI动效艺术作品",
"Farter:是一滩散乱的代码组成的蜜汁结构",
"Farter:它是现在的techmino已发布版本",
"fin neo iso 是满足tspin条件的特殊t2的名字",
"git commit",
"git push -f",
@@ -1052,7 +1052,6 @@ return{
"Let-The-Bass-Kick",
"MrZ是谁啊",
"pps-0.01",
"sudo rm -rf /*",
"S△ABC=√(h(h-a)(h-b)(h-c))h=(a+b+c)/2",
"shutdown -h now",
"sin(α+β)=SαCβ+SβCα",
@@ -1062,6 +1061,7 @@ return{
"sofunhowtoget",
"Staff名单里飘过的是赞助榜单喜欢本游戏的话可以给我们打赞助支持开发哦~",
"STSD必死",
"sudo rm -rf /*",
"Techmino = Technique + tetromino",
"Techmino 好玩!",
"Techmino 濂界帺锛",
@@ -1084,8 +1084,6 @@ return{
"Z酱累了Z酱不想更新",
"Z酱只是个写代码的懂什么方块",
"Z块等身抱枕来一个(x",
{C.A,"AQUA"},
{C.B,"BLUE"},
{C.C,"<PURE ",C.P,"MEMORY>"},
{C.C,"15puzzle好玩"},
{C.C,"东方Project好玩"},
@@ -1093,49 +1091,22 @@ return{
{C.C,"噗哟噗哟好玩!"},
{C.C,"扫雷好玩!"},
{C.C,"Celeste好玩"},
{C.C,"CYAN"},
{C.C,"Minecraft好玩"},
{C.C,"Orzmic好玩"},
{C.C,"Osu 好玩!"},
{C.C,"Osu! 好玩!"},
{C.C,"Phigros好玩"},
{C.C,"Terraria好玩"},
{C.C,"VVVVVV好玩"},
{C.G,"GREEN"},
{C.G,"mac快捷键: Cmd+[=返回上一级目录"},
{C.G,"mac快捷键: Cmd+A=全选"},
{C.G,"mac快捷键: Cmd+F=查找"},
{C.G,"mac快捷键: Cmd+Option+Delete=永久删除文件 (技术人员别杠)"},
{C.G,"mac快捷键: Cmd+Q=退出程序"},
{C.G,"mac快捷键: Control+↑=打开调度中心"},
{C.G,"mac快捷键: Cmd+Tab=切换App"},
{C.G,"mac快捷键: Cmd+W=关闭当前窗口"},
{C.G,"mac快捷键: Cmd+Z=撤销"},
{C.G,"win快捷键: Alt+F4=关闭当前窗口"},
{C.G,"win快捷键: Alt+Tab=切换窗口"},
{C.G,"win快捷键: backspace=返回上一级目录"},
{C.G,"win快捷键: Ctrl+鼠标滚轮=缩放"},
{C.G,"win快捷键: Ctrl+A=全选"},
{C.G,"win快捷键: Ctrl+Alt+Z=查看所有qq消息"},
{C.G,"win快捷键: Ctrl+F=查找"},
{C.G,"win快捷键: Ctrl+Tab=切换标签页"},
{C.G,"win快捷键: Ctrl+W=关闭当前标签页"},
{C.G,"win快捷键: shift+del=永久删除文件 (技术人员别杠)"},
{C.H,"暂定段位:9"},
{C.H,"REGRET"},
{C.J,"JADE"},
{C.L,"LIME"},
{C.H,"REGRET!!"},
{C.lC,"Xspin",C.Z,"是啥"},
{C.lP,"口〇口",C.Z," 可爱!"},
{C.lP,"秘密数字:626"},
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
{C.lS,"茶娘",C.Z," 可爱!"},
{C.lY,"COOL"},
{C.M,"MAGENTA"},
{C.N,"Lua",C.Z,"天下第一"},
{C.N,"NAVY"},
{C.O,"ORANGE"},
{C.P,"PURPLE"},
{C.P,"T-spin"},
{C.P,"T-spin!"},
{C.R,"《滥用DMCA》"},
{C.R,"《知识产权法》"},
{C.R,"本游戏难度上限很高,做好心理准备。"},
@@ -1148,11 +1119,7 @@ return{
{C.R,"DD",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z,""},
{C.R,"DT",C.Z,"炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z,""},
{C.R,"LrL ",C.G,"RlR ",C.B,"LLr ",C.O,"RRl ",C.P,"RRR LLL ",C.C,"FFF ",C.Y,"RfR RRf rFF"},
{C.R,"RED"},
{C.S,"SEA"},
{C.V,"VIOLET"},
{C.W,"uid:225238922"},
{C.W,"WINE"},
{C.Y,"暂定段位:GM"},
{C.Y,"暂定段位:M"},
{C.Y,"暂定段位:MK"},
@@ -1161,7 +1128,6 @@ return{
{C.Y,"暂定段位:MV"},
{C.Y,"Miya",C.Z," 可爱!"},
{C.Y,"O-spin Triple"},
{C.Y,"YELLOW"},
{C.Z,"12",C.C,"",C.Z,""},
{C.Z,"效率药水",C.H," 效率提升 (8:00)"},
{C.Z,"协调药水",C.H," MD减少 II(1:30)"},

View File

@@ -761,15 +761,16 @@ return{
['custom_puzzle']= {"习俗", "令人费解的"},
},
getTip={refuseCopy=true,
'免费玩积木游戏与战斗皇家模式!',
'你注意到什么了吗?"旋转的"去一个街区有什么用?',
"免费玩积木游戏与战斗皇家模式!",
"你注意到什么了吗?\"旋转的\"去一个街区有什么用?",
":pog:",
"(RUR'U')R'FR2U'R'U'(RUR'F')",
"\"技术米诺.app\"不能打开,因为开发人员无法证实。",
"\\jezevec/\\jezevec/\\jezevec/",
"\\osk/\\osk/\\osk/",
"↑↑↓↓←→←→文学士",
"$包括<工作室.哈>",
"0下一个0等待",
"0下一个0等待.",
"1下一个0等待",
"1下一个1等待",
"1下一个6等待",
@@ -787,6 +788,7 @@ return{
"今天一定要再次尽你最大的努力!",
"桥很快就清了!",
"你能熟练掌握这个现代而又熟悉的堆垛机吗?",
"我的杰作就在这颗心里。",
"在不谐和上可以找到英语的变更日志",
"颜色很快就会清晰!",
"降低直连式存储和抗共振环速度更快,但更难控制",
@@ -796,6 +798,9 @@ return{
"享受技术米诺旋转系统!",
"太好了,但下次我们要做得更好",
"找出设置中的内容!",
"有虫子吗? 在我们的GitHub页面上打开一个问题!",
"git提交",
"git推-f",
"有什么建议吗?在我们的不谐和中发布它们!",
"建议佩戴耳机以获得更好的体验",
"你好,世界!",
@@ -804,34 +809,41 @@ return{
"提高帧速率以获得更好的体验",
"初始[插入操作]系统可以节省您的时间",
"无需左/右按钮即可完成40升",
"没有旋转按钮也可以完成40升",
"它真的在加载!不仅仅是一个剪贴画!",
"sudo rm -rf /*",
"加入我们的纷争吧!",
"让贝斯踢!",
"l-=-1",
"让贝斯来踢!",
"LrL RlR LLr RRl RRR LLL FFF RfR RRf rFF",
"低帧率减少你的游戏体验",
"路亚一号",
"快来了!",
"大多数按钮图标是通过在Unicode私人使用地区中使用自绘制的符号来实现的",
"这个游戏的音乐是使用Beepbox制作的",
"音乐太让人分心了?你可以把它关掉",
"如果您启用了简单化样式,则此菜单中没有复活节彩蛋!",
"旋转三倍!",
"哦哦哦哦哦哦哦哦",
"哦哦哦哦哦哦哦哦!",
"已计划在线模式-请耐心等待",
"单枪匹马!",
"玩得好需要一些时间!",
"被爱冲昏头脑",
"由联合国...LÖVE为动力",
"pps-0.01",
"秘密号码:626",
"服务器随机停机",
"一些达到S级的要求被故意设定为即使是最好的球员也很难达到",
"很快,你就可以和全世界的朋友和敌人比赛了",
"马上就来!",
"技术米诺=技术+特特罗米诺",
"技术米诺有一个Nspire CX版本",
"太有趣了!",
"技术米诺太有趣了!",
"\"技术米诺.app\"会损坏你的电脑。你应该把它移到垃圾桶里。",
"\"TechminOS\"",
"四联词典现在有英文版本",
"在技术米诺,堆垛机的未来属于您!",
"游戏中有四种隐藏模式",
"出现在员工页面后台的名字是我们赞助商的名单",
"在技术米诺,堆垛机的未来是你的!",
"在游戏中有许多隐藏的模式, 不能使用地图进入",
"总共有18种不同的五分音符",
"总共有7种不同的河豚",
"尝试使用多个等待队列!",
@@ -843,6 +855,9 @@ return{
"这个便宜的界面和音乐是什么",
"当(假)",
"你是大师!",
"欢迎您帮助我们制作血糖监测和特效!",
"你可以把键盘连接到你的手机或平板电脑上(虽然在iOS上没有这个功能)",
"可以在设置中自定义键映射!",
"您可以将键盘连接到手机或平板电脑!",
"您可以使用键盘浏览菜单,但仅限于此屏幕",
"您可以从统计数据页面打开保存目录",
@@ -851,23 +866,57 @@ return{
"ZS JL T O I",
{C.C,"也试试15拼图"},
{C.C,"还试试我的世界!"},
{C.C,"也试试噗噗噗!"},
{C.C,"也试试扫雷艇!"},
{C.C,"也试试奥兹米奇!"},
{C.C,"也试试俄亥俄州立大学!"},
{C.C,"也试试菲格罗斯!"},
{C.C,"也试试魔方!"},
{C.C,"也试试特拉里亚!"},
{C.C,"也试试土后项目!"},
{C.C,"也试试VVVVVV"},
{C.G,"绿色"},
{C.G,"Mac快捷键:Cmd-A=选中所有项目"},
{C.G,"Mac快捷键:Cmd-F=找到物品"},
{C.G,"Mac快捷键:Cmd-Option-Delete=立即删除文件"},
{C.G,"Mac快捷键:Cmd-Q=退出应用程序"},
{C.G,"Mac快捷键:Control-↑=显示任务控制"},
{C.G,"Mac快捷键:Cmd-Tab =你打开应用程序之间切换"},
{C.G,"Mac快捷键:Cmd-W=关闭前窗口"},
{C.G,"Mac快捷键:Cmd-Z=取消上一条命令"},
{C.G,"Mac快捷键:Cmd-,=打开前面应用程序的首选项"},
{C.G,"Windows快捷键:Alt+F4=关闭活动窗口"},
{C.G,"Windows快捷键:Alt+Tab=在窗口之间切换"},
{C.G,"Windows快捷键:Backspace=转到前一个文件夹"},
{C.G,"Windows快捷键:Ctrl+鼠标滚轮=缩放"},
{C.G,"Windows快捷键:Ctrl+A=选择所有项目"},
{C.G,"Windows快捷键:Ctrl+F=查找项目"},
{C.G,"Windows快捷键:Ctrl+Tab=在选项卡之间切换"},
{C.G,"Windows快捷键:Ctrl+W=关闭活动选项卡"},
{C.G,"Windows快捷键:shift+del=永久删除文件"},
{C.J,"玉石"},
{C.L,"酸橙"},
{C.lP,"秘密号码: 626"},
{C.H,"后悔!!!"},
{C.lR,"Z ",C.lG,"S ",C.lS,"J ",C.lO,"L ",C.lP,"T ",C.lY,"O ",C.lC,"I"},
{C.lY,"凉爽!!!"},
{C.M,"品红色"},
{C.N,"Lua",C.Z,"第一"},
{C.N,"海军"},
{C.O,"橙子"},
{C.P,"紫色"},
{C.P,"旋转!"},
{C.R,"\"滥用数字千年版权法\""},
{C.R,"\"知识产权法\""},
{C.R,"DD",C.Z,"大炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"D",C.Z,"大炮"},
{C.R,"DT",C.Z,"大炮=",C.P,"TS",C.R,"D",C.Z,"+",C.P,"TS",C.R,"T",C.Z,"大炮"},
{C.R,"月球接收实验室",C.G,"RlR",C.B,"最后贷款人",C.O,"区域铁路线",C.P,"存款准备金率",C.P,"微光",C.C,"熔丝制造",C.Y,"自由罗斯科电台",C.Y,"雨林基金会基金",C.Y,"雨林基金会基金"},
{C.R,"红色"},
{C.S,"海洋"},
{C.V,"紫罗兰"},
{C.W,"葡萄酒"},
{C.Y,"旋转三倍!"},
{C.Y,"黄色"},
{C.Z,"什么?",C.lC,"Xspin"},
}
}

View File

@@ -799,6 +799,12 @@ local commands={}do
"Usage: tas <on|off>",
},
}
commands.tip={
code=function()
log(text.getTip())
end,
description="Show a random tip",
}
--Network
commands.switchhost={

View File

@@ -14,7 +14,7 @@ return[=[
工程编译到字节码; task-Z(新AI)
无用货币; 收集向抽奖; 自适应UI; 多方块
0.16.3: 虫洞 Wormhole
0.16.4: 虫洞 Wormhole
新增:
新连击音效
新准备&开始音效

View File

@@ -1,7 +1,7 @@
return{
["apkCode"]=388,
["code"]=1603,
["string"]="V0.16.3@DEV",
["code"]=1604,
["string"]="V0.16.4",
["room"]="ver A-0",
["name"]="虫洞 Wormhole",
}