多语言/教程/bug修复
This commit is contained in:
parent
3a52b184a8
commit
7cf80b6937
@ -1325,11 +1325,11 @@
|
||||
"id": 134,
|
||||
"title": "英雄召唤得时候开的视野没有计入任务",
|
||||
"description": "",
|
||||
"status": "open",
|
||||
"status": "fixed",
|
||||
"priority": "medium",
|
||||
"module": "",
|
||||
"createdAt": 1778665278528,
|
||||
"updatedAt": 1778665278528
|
||||
"updatedAt": 1778678959632
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Tools/Multilingual.backup_before_trans.xlsx
Normal file
BIN
Tools/Multilingual.backup_before_trans.xlsx
Normal file
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
Tools/__pycache__/translate_data.cpython-313.pyc
Normal file
BIN
Tools/__pycache__/translate_data.cpython-313.pyc
Normal file
Binary file not shown.
108
Tools/apply_translations_full.py
Normal file
108
Tools/apply_translations_full.py
Normal file
@ -0,0 +1,108 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""执行翻译填充: 读取 Multilingual.xlsx,写回繁中/英/日/韩列"""
|
||||
import sys, io, re, shutil, os
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
import openpyxl
|
||||
import opencc
|
||||
from translate_data import (
|
||||
KEEP_RAW_IDS, ZH_TW_EN_ONLY_IDS, TRANSLATIONS, VERSION_LOG_EN,
|
||||
)
|
||||
|
||||
EXCEL = 'Multilingual.xlsx'
|
||||
BACKUP = 'Multilingual.backup_before_trans.xlsx'
|
||||
|
||||
# 占位符正则: **<任意内容>** → **<>**
|
||||
PLACEHOLDER = re.compile(r'\*\*<[^>]*>\*\*')
|
||||
|
||||
def count_placeholders(text):
|
||||
if not text:
|
||||
return 0
|
||||
return len(re.findall(r'\*\*<[^>]*>\*\*', text))
|
||||
|
||||
def main():
|
||||
if not os.path.exists(BACKUP):
|
||||
shutil.copy(EXCEL, BACKUP)
|
||||
print(f'[备份] {EXCEL} -> {BACKUP}')
|
||||
|
||||
cc_s2tw = opencc.OpenCC('s2tw')
|
||||
|
||||
wb = openpyxl.load_workbook(EXCEL)
|
||||
ws = wb['Sheet']
|
||||
|
||||
COL_ID = 1
|
||||
COL_ZH = 3
|
||||
COL_ZHTW = 4
|
||||
COL_EN = 5
|
||||
COL_JA = 6
|
||||
COL_KO = 7
|
||||
|
||||
stats = {'raw': 0, 'log': 0, 'translated': 0, 'missing': [], 'placeholder_warn': []}
|
||||
|
||||
for row_idx in range(2, ws.max_row + 1):
|
||||
id_cell = ws.cell(row=row_idx, column=COL_ID).value
|
||||
if not id_cell:
|
||||
continue
|
||||
id_str = str(id_cell).lstrip('').strip()
|
||||
zh = ws.cell(row=row_idx, column=COL_ZH).value
|
||||
if zh is None:
|
||||
zh = ''
|
||||
|
||||
# 1) 异常数据/Staff姓名: 四语言原样
|
||||
if id_str in KEEP_RAW_IDS:
|
||||
ws.cell(row=row_idx, column=COL_ZHTW).value = zh
|
||||
ws.cell(row=row_idx, column=COL_EN).value = zh
|
||||
ws.cell(row=row_idx, column=COL_JA).value = zh
|
||||
ws.cell(row=row_idx, column=COL_KO).value = zh
|
||||
stats['raw'] += 1
|
||||
continue
|
||||
|
||||
# 2) 版本日志: 仅繁中+英文
|
||||
if id_str in ZH_TW_EN_ONLY_IDS:
|
||||
zh_tw = cc_s2tw.convert(zh)
|
||||
ws.cell(row=row_idx, column=COL_ZHTW).value = zh_tw
|
||||
ws.cell(row=row_idx, column=COL_EN).value = VERSION_LOG_EN
|
||||
ws.cell(row=row_idx, column=COL_JA).value = None
|
||||
ws.cell(row=row_idx, column=COL_KO).value = None
|
||||
stats['log'] += 1
|
||||
continue
|
||||
|
||||
# 3) 常规条目
|
||||
zh_tw = cc_s2tw.convert(zh)
|
||||
ws.cell(row=row_idx, column=COL_ZHTW).value = zh_tw
|
||||
|
||||
if id_str not in TRANSLATIONS:
|
||||
stats['missing'].append((row_idx, id_str, zh[:50]))
|
||||
continue
|
||||
|
||||
en, ja, ko = TRANSLATIONS[id_str]
|
||||
ws.cell(row=row_idx, column=COL_EN).value = en
|
||||
ws.cell(row=row_idx, column=COL_JA).value = ja
|
||||
ws.cell(row=row_idx, column=COL_KO).value = ko
|
||||
|
||||
zh_n = count_placeholders(zh)
|
||||
for lang, text in [('TW', zh_tw), ('EN', en), ('JA', ja), ('KO', ko)]:
|
||||
if count_placeholders(text) != zh_n:
|
||||
stats['placeholder_warn'].append(
|
||||
f'ID={id_str} {lang} 占位符数={count_placeholders(text)} 应={zh_n}'
|
||||
)
|
||||
stats['translated'] += 1
|
||||
|
||||
wb.save(EXCEL)
|
||||
|
||||
print(f'\n[完成]')
|
||||
print(f' 原样填充 (Staff/异常): {stats["raw"]}')
|
||||
print(f' 仅繁中+英文 (版本日志): {stats["log"]}')
|
||||
print(f' 四语言翻译: {stats["translated"]}')
|
||||
print(f' 缺翻译: {len(stats["missing"])}')
|
||||
for r, i, z in stats['missing']:
|
||||
print(f' Row {r} ID={i}: {z}')
|
||||
if stats['placeholder_warn']:
|
||||
print(f'\n[占位符警告]')
|
||||
for w in stats['placeholder_warn']:
|
||||
print(f' {w}')
|
||||
else:
|
||||
print(f' 占位符数全部对齐 OK')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
292
Tools/translate_data.py
Normal file
292
Tools/translate_data.py
Normal file
@ -0,0 +1,292 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
TH1 Multilingual.xlsx 翻译数据
|
||||
规则:
|
||||
- 占位符 **<xxx>** 全部替换为 **<>** (内容留空,外壳保留)
|
||||
- Staff 姓名/异常数据: 四语言全填原样 (在 KEEP_RAW_IDS)
|
||||
- 19746 版本日志: 仅繁中+英文,日韩留空 (在 ZH_TW_EN_ONLY_IDS)
|
||||
- 其余: 四语言完整翻译,繁中走 opencc s2tw
|
||||
"""
|
||||
|
||||
# 这些 ID 四语言全部保留中文/英文原样
|
||||
KEEP_RAW_IDS = {
|
||||
'19739', # asfasfasf 测试输入
|
||||
'19759', # Shenlan 调试命令
|
||||
'19760', # Toggle Shenlan visual skill on/off
|
||||
'19773', # 天火人雪糕
|
||||
'19785', # 白哉
|
||||
'19787', # 久九
|
||||
'19789', # BING
|
||||
'19791', # P君
|
||||
'19793', # 娇阳
|
||||
'19795', # 蛋卷
|
||||
'19797', # 深澜
|
||||
'19798', # 绝壁的夜鹭子
|
||||
'19799', # 亮蓝
|
||||
'19801', # 黎玄
|
||||
'19803', # 阿令
|
||||
'19805', # 星期六上线
|
||||
'19807', # Q群群友
|
||||
'19821', # X 推特图标
|
||||
'19822', # QQ群:952618884
|
||||
}
|
||||
|
||||
# 这些 ID 仅做繁中+英文,日韩留空
|
||||
ZH_TW_EN_ONLY_IDS = {
|
||||
'19746', # Beta 0.7.1g 版本日志
|
||||
}
|
||||
|
||||
# 英/日/韩 翻译表 (key=ID, value=(en, ja, ko))
|
||||
# 注意: 占位符 **<>** 由脚本统一处理,这里翻译文本中的占位符也写成 **<>**
|
||||
TRANSLATIONS = {
|
||||
# ---- 技能/能力描述 ----
|
||||
'19734': (
|
||||
"Can move within 1 hex of any **<>**, granting **<>** within **<>** and 1 **<>** to that **<>**. Stacks if used multiple times in the same turn. Each **<>** also accumulates **<>** equal to the current stack count.",
|
||||
"任意の**<>**から1マス以内に移動でき、**<>**にいる**<>**に**<>**と1の**<>**を付与する。同一ターン内で複数回使用すると層数が累積する。**<>**を使用するたび、現在の層数と同じ**<>**が蓄積される。",
|
||||
"임의의 **<>** 주변 1칸 범위 내로 이동할 수 있으며, **<>**의 **<>**에게 **<>**과 1의 **<>**을 부여한다. 같은 턴 내 반복 사용 시 누적된다. **<>**을 사용할 때마다 현재 누적 수치와 동일한 **<>**이 누적된다.",
|
||||
),
|
||||
'19740': (
|
||||
"Free Mode",
|
||||
"フリーモード",
|
||||
"자유 모드",
|
||||
),
|
||||
'19741': (
|
||||
"Enemy Control",
|
||||
"敵勢力支配",
|
||||
"적 통제",
|
||||
),
|
||||
'19742': (
|
||||
"Can only attack enemy city centers. Spawns a number of **<>** based on the city's level, and steals that city's gold income for this turn. The user vanishes. While stealthed, movement ignores **<>**, and grants 1 **<>** after moving,",
|
||||
"敵の都市中心のみ攻撃可能。都市レベルに応じた数の**<>**を生み出し、その都市の今ターンの金収入を奪う。使用後、自身は消滅する。隠密状態での移動は**<>**を無視し、移動後に1の**<>**を獲得する、",
|
||||
"적 도시 중심만 공격 가능. 도시 레벨에 따라 일정 수의 **<>**를 생성하며, 해당 도시의 이번 턴 골드 수입을 탈취한다. 사용 후 자신은 소멸한다. 은신 상태에서의 이동은 **<>**의 영향을 받지 않으며, 이동 후 1의 **<>**을 획득한다,",
|
||||
),
|
||||
'19743': (
|
||||
"If you did not move last turn, gain 1 **<>** at the start of this turn. Moving costs 1 **<>**, climbing mountains costs 2 **<>**. If stamina is insufficient, lose 3 HP instead. Moving costs no stamina when a friendly hero is nearby.",
|
||||
"前ターンに移動しなかった場合、ターン開始時に1の**<>**を獲得する。 移動は**<>**を1、登山は**<>**を2消費する。体力が不足する場合は代わりにHPを3失う。移動時に近くに味方英雄がいる場合は体力を消費しない。",
|
||||
"지난 턴에 이동하지 않았다면, 턴 시작 시 1의 **<>**을 획득한다. 이동은 **<>**을 1, 등산은 **<>**을 2 소모한다. 체력이 부족하면 대신 HP를 3 소모한다. 이동 시 주변에 아군 영웅이 있으면 체력을 소모하지 않는다.",
|
||||
),
|
||||
'19744': (
|
||||
"Each stack grants: +0.5 ATK, +0.5 DEF, +1 sight, +1 HP auto-regen. When stamina ≥ 2, range +1. Stamina cap is 2 (4 at Lv.3).",
|
||||
"1層ごとに:攻撃+0.5、防御+0.5、視界+1、HP自動回復+1。 体力が2以上の時、射程+1。体力上限は2(Lv.3で4)。",
|
||||
"각 누적층마다: 공격 +0.5, 방어 +0.5, 시야 +1, HP 자동 회복 +1. 체력 ≥2일 때 사거리 +1. 체력 상한은 2 (Lv.3에서 4).",
|
||||
),
|
||||
'19745': (
|
||||
"At the start of the turn, gain **<>** based on terrain. On plains: gain **<>**, can heal an ally for 5 HP. If the land is adjacent to water, also gain **<>**, blocking 1 instance of damage. If the land is mountainous, also gain **<>**, range +1. Each stone type can be stored up to 1 (2 at Lv.4), consumed automatically.",
|
||||
"ターン開始時、地形に応じて**<>**を獲得する。陸地では**<>**を獲得:味方を5回復できる。陸地が水域に隣接する場合、追加で**<>**を獲得し、1回の被ダメージを防ぐ。陸地が山脈の場合、追加で**<>**を獲得し、射程+1。各種の魔力石は最大1個まで保管できる(Lv.4で2)、自動で消費される。",
|
||||
"턴 시작 시 지형에 따라 **<>**을 획득한다. 육지: **<>**을 획득, 아군을 5 회복할 수 있다. 육지가 수역에 인접하면 추가로 **<>**을 획득, 피해 1회를 차단한다. 육지가 산맥이면 추가로 **<>**을 획득, 사거리 +1. 각 마력석은 최대 1개까지 보관 가능 (Lv.4에서 2), 자동으로 소모된다.",
|
||||
),
|
||||
'19747': ("Target Language", "対象言語", "대상 언어"),
|
||||
'19748': ("Reference Language", "参照言語", "참조 언어"),
|
||||
'19749': ("Step 2: Export Template & Fill In", "ステップ2:テンプレート出力と入力", "Step 2: 템플릿 내보내기 및 작성"),
|
||||
'19750': ("1. Export Name", "1. 出力名", "1. 내보내기 이름"),
|
||||
'19751': ("2. Export Template", "2. テンプレート出力", "2. 템플릿 내보내기"),
|
||||
'19752': ("3. Fill In Template", "3. テンプレート入力", "3. 템플릿 작성"),
|
||||
'19753': ("Step 3: Upload / Update Mod", "ステップ3:MODをアップロード/更新", "Step 3: 모드 업로드/업데이트"),
|
||||
'19754': (
|
||||
"After attacking a unit, apply 1 stack of **<>** to the target. When infantry attack a unit with **<>**, each stack grants +0.5 ATK.",
|
||||
"ユニットを攻撃した後、対象に**<>**を1層付与する。歩兵が**<>**を持つユニットを攻撃する際、層ごとに攻撃+0.5を得る。",
|
||||
"유닛을 공격한 후 대상에게 **<>** 1층을 부여한다. 보병이 **<>**을 가진 유닛을 공격할 때, 각 층마다 공격력 +0.5를 얻는다.",
|
||||
),
|
||||
'19755': (
|
||||
"Like infantry, artillery can also apply **<>**, and gain the attack bonus when attacking.",
|
||||
"歩兵と同様、砲兵も**<>**を付与でき、攻撃時に攻撃力ボーナスを得る。",
|
||||
"보병과 마찬가지로 포병도 **<>**을 부여할 수 있으며, 공격 시 공격력 보너스를 얻는다.",
|
||||
),
|
||||
'19757': (
|
||||
"Shenlan's Color Show",
|
||||
"深瀾の色彩ショー",
|
||||
"Shenlan의 색채 쇼",
|
||||
),
|
||||
'19765': ("#0 Tutorial", "#0 チュートリアル", "#0 튜토리얼"),
|
||||
'19766': (
|
||||
"Master Empire Gensokyo in just 5 steps!",
|
||||
"わずか5ステップで帝国幻想郷を完全マスター!",
|
||||
"단 5단계로 제국 환상향을 완전 마스터!",
|
||||
),
|
||||
'19767': (
|
||||
"Just 5 steps to master it, really?!",
|
||||
"本当に5ステップでマスターできるの!?",
|
||||
"정말로 5단계만에 마스터할 수 있다고?!",
|
||||
),
|
||||
'19768': (
|
||||
"With my Lady's skill, there's no doubt!",
|
||||
"お嬢様のお力なら、きっと大丈夫です!",
|
||||
"아가씨의 실력이라면, 분명 문제없을 거예요!",
|
||||
),
|
||||
'19769': (
|
||||
"A color effect arranged by tournament staff Shenlan for the players. Trigger again to dismiss.",
|
||||
"大会スタッフ深瀾が選手のために用意した色彩エフェクト。再度発動で解除。",
|
||||
"대회 스태프 Shenlan이 선수를 위해 마련한 색채 효과. 다시 발동하면 해제된다.",
|
||||
),
|
||||
'19774': (
|
||||
"Game Design / Development / Art / UI / Writing",
|
||||
"ゲームデザイン / 開発 / アート / UI / シナリオ",
|
||||
"게임 디자인 / 개발 / 아트 / UI / 시나리오",
|
||||
),
|
||||
'19775': ("Music & SFX", "音楽&効果音", "음악 & 효과음"),
|
||||
'19777': ("Credits", "スタッフロール", "스태프 명단"),
|
||||
'19778': ("Core Team", "コアチーム", "코어 팀"),
|
||||
'19779': ("Game Design", "ゲームデザイン", "게임 디자인"),
|
||||
'19784': (
|
||||
"Game Design / Programming / Art / UI / Writing",
|
||||
"ゲームデザイン / プログラミング / アート / UI / シナリオ",
|
||||
"게임 디자인 / 프로그래밍 / 아트 / UI / 시나리오",
|
||||
),
|
||||
'19786': ("Programming", "プログラム開発", "프로그램 개발"),
|
||||
'19788': ("Character Art // Main Key Visual", "キャラクター立ち絵 // メインキービジュアル", "캐릭터 일러스트 // 메인 키 비주얼"),
|
||||
'19790': ("Character Art", "キャラクター立ち絵", "캐릭터 일러스트"),
|
||||
'19792': (
|
||||
"Illustrations / Story Comics / Scenes / Tokens",
|
||||
"イラスト / シナリオ漫画 / 背景 / 駒",
|
||||
"일러스트 / 스토리 만화 / 배경 / 말",
|
||||
),
|
||||
'19794': ("Scenes", "背景", "배경"),
|
||||
'19796': ("Tokens", "駒", "말"),
|
||||
'19800': ("Localization", "多言語ローカライズ", "다국어 현지화"),
|
||||
'19802': ("English Localization", "英語ローカライズ", "영문 현지화"),
|
||||
'19804': (
|
||||
"UI Style Design / Interaction Design",
|
||||
"UIスタイルデザイン / インタラクションデザイン",
|
||||
"UI 스타일 디자인 / 인터랙션 디자인",
|
||||
),
|
||||
'19806': ("Setting Consultant", "設定考証", "설정 자문"),
|
||||
'19808': ("I love you all!", "みんな大好きだー!", "여러분 정말 사랑해요!"),
|
||||
'19809': (
|
||||
"Friends from Discord",
|
||||
"Discordの友人たち",
|
||||
"디스코드의 친구들",
|
||||
),
|
||||
'19810': ("Thank you for your support!", "ご支援ありがとうございます!", "여러분의 성원에 감사드립니다!"),
|
||||
'19811': (
|
||||
"Every player who joined the playtest",
|
||||
"テストプレイに参加してくれた全てのプレイヤー",
|
||||
"테스트 플레이에 참여해주신 모든 플레이어",
|
||||
),
|
||||
'19832': ("You", "あなた", "당신"),
|
||||
'19816': (
|
||||
"Click End Turn to gain gold income!",
|
||||
"「次のターン」をクリックして金収入を獲得しよう!",
|
||||
"다음 턴을 클릭하여 골드 수입을 얻어보세요!",
|
||||
),
|
||||
'19817': (
|
||||
'Click the "End Turn" button at the bottom-right',
|
||||
"右下の「次のターン」ボタンをクリック",
|
||||
'오른쪽 아래의 "다음 턴" 버튼을 클릭',
|
||||
),
|
||||
'19818': (
|
||||
"Click your city and train 1 Infantry!",
|
||||
"都市をクリックして歩兵を1体訓練しよう!",
|
||||
"도시를 클릭하여 보병 1명을 훈련하세요!",
|
||||
),
|
||||
'19819': (
|
||||
'Click the city, then click "Train Infantry" in the left info panel',
|
||||
"都市をクリックし、左の情報パネルで「歩兵を訓練」をクリック",
|
||||
'도시를 클릭하고 왼쪽 정보 패널에서 "보병 훈련"을 클릭',
|
||||
),
|
||||
'19823': ("Art", "アート", "아트"),
|
||||
'19824': ("Art Support", "アート協力", "아트 협력"),
|
||||
'19825': ("Game Design Support", "ゲームデザイン協力", "게임 디자인 협력"),
|
||||
'19826': ("Localization Support", "ローカライズ協力", "현지화 협력"),
|
||||
'19827': ("Music & Sound", "音楽・効果音", "음악·효과음"),
|
||||
'19828': ("UI & Interaction", "UI・インタラクション", "UI · 인터랙션"),
|
||||
'19829': ("Special Thanks", "スペシャルサンクス", "스페셜 땡스"),
|
||||
'19830': (
|
||||
"<b>Presented by</b>: Remilia Command\n<b>Original Work</b>: Team Shanghai Alice\n<color=grey>This is a derivative doujin work of Touhou Project</color>",
|
||||
"<b>制作</b>:レミリア司令部\n<b>原作</b>:上海アリス幻樂団\n<color=grey>本作品は東方Projectの二次創作です</color>",
|
||||
"<b>제작</b>: 레미리아 사령부\n<b>원작</b>: 상하이 앨리스 환악단\n<color=grey>본 작품은 동방 프로젝트의 2차 동인 창작물입니다</color>",
|
||||
),
|
||||
'19831': (
|
||||
"Thanks for your feedback during the test!",
|
||||
"体験&フィードバックをありがとう!",
|
||||
"체험과 피드백에 감사드립니다!",
|
||||
),
|
||||
'19833': (
|
||||
"Thank you for playing this game!",
|
||||
"ゲームをプレイしてくれてありがとう!",
|
||||
"이 게임을 플레이해주셔서 감사합니다!",
|
||||
),
|
||||
'19836': (
|
||||
"Open the Tech Tree, research **<>**, and upgrade the city to Lv.4!",
|
||||
"テックツリーを開き、**<>**を研究して都市をLv.4まで強化しよう!",
|
||||
"기술 트리를 열어 **<>**을 연구하고, 도시를 Lv.4까지 업그레이드하세요!",
|
||||
),
|
||||
'19837': (
|
||||
'Click the "Tech" button at the bottom-right, find **<>** and research it. Then select a **<>** tile and gather **<>** to raise the city level!',
|
||||
"右下の「テック」ボタンをクリックし、**<>**を見つけて研究しよう。次に**<>**マスを選択し、**<>**を採集して都市レベルを上げよう!",
|
||||
'오른쪽 아래의 "기술" 버튼을 클릭하여 **<>**을 찾아 연구하세요. 그런 다음 **<>** 타일을 선택하여 **<>**을 채집해 도시 레벨을 올리세요!',
|
||||
),
|
||||
'19838': (
|
||||
"You've completed the entire tutorial! Feel free to quit or keep playing~",
|
||||
"チュートリアルをすべて完了しました!終了するも、続けて遊ぶも自由です~",
|
||||
"튜토리얼을 모두 완료했습니다! 종료하거나 계속 플레이해도 됩니다~",
|
||||
),
|
||||
'19839': (
|
||||
"The game will end automatically on turn 30",
|
||||
"ゲームは30ターン目で自動的に終了します",
|
||||
"게임은 30번째 턴에 자동으로 종료됩니다",
|
||||
),
|
||||
'19840': (
|
||||
"For matching entries, MODs on top will override MODs below",
|
||||
"同一の翻訳項目では、上にあるMODが下のMODを上書きします",
|
||||
"동일한 번역 항목의 경우, 위쪽의 MOD가 아래쪽의 MOD를 덮어씁니다",
|
||||
),
|
||||
'19841': (
|
||||
"Convert **<>** into **<>** and upgrade your city!",
|
||||
"**<>**を**<>**に改造して都市をアップグレードしよう!",
|
||||
"**<>**을 **<>**으로 개조하여 도시를 업그레이드하세요!",
|
||||
),
|
||||
'19842': (
|
||||
'Click a **<>** tile, then select "Convert to Farm" in the left info panel.',
|
||||
"**<>**マスをクリックし、左の情報パネルで「農田に改造」を選択する。",
|
||||
'**<>** 타일을 클릭하고 왼쪽 정보 패널에서 "농지로 개조"를 선택하세요.',
|
||||
),
|
||||
'19843': (
|
||||
"Move your Infantry, explore the surroundings, and capture 1 new **<>**!",
|
||||
"歩兵を移動して周囲を探索し、新たな**<>**を1つ占領しよう!",
|
||||
"보병을 이동시켜 주변을 탐색하고, 새로운 **<>**을 하나 점령하세요!",
|
||||
),
|
||||
'19844': (
|
||||
"Each unit can only move once per turn! Click End Turn to keep moving. Can't find a **<>**? Try exploring further out!",
|
||||
"1ターンに移動できるのは1回のみ!「次のターン」をクリックして移動を続けよう!**<>**が見つからない場合は、もっと外側を探索してみよう!",
|
||||
"각 유닛은 턴당 한 번만 이동할 수 있습니다! 다음 턴을 클릭해 계속 이동하세요! **<>**을 찾을 수 없다면 더 멀리 탐색해보세요!",
|
||||
),
|
||||
}
|
||||
|
||||
# 19746 版本日志 (仅繁中+英文)
|
||||
VERSION_LOG_EN = """[Beta 0.7.1g]
|
||||
Release Date: 2026.5.11
|
||||
|
||||
------- [New Content] -------
|
||||
1. New BGM: Tenma Empire, Lunar Empire
|
||||
2. New encyclopedia sub-module: Music Room.
|
||||
3. New multilingual MOD module — you can create translation versions in other languages via Steam Workshop (accessed through Settings).
|
||||
4. Match history can now be filtered by Komeiji Empire, Classic Mode, Free Mode, and 2–17 player count.
|
||||
|
||||
------- [Bug Fixes] -------
|
||||
1. Fixed a bug where Reisen would incorrectly command non-allied Lunar Rabbit illusions to shoot.
|
||||
2. Fixed a bug where Houraisan Kaguya's "Eternal Night Return" skill was not displayed in the skill bar.
|
||||
3. Fixed a bug with incorrect Lv.4 values for Hakushiki Zanmu (puppet).
|
||||
4. Fixed a bug where Reiuji Utsuho could enter an ally's city center directly.
|
||||
5. Fixed a bug where allied cities could not be captured after the ally retired.
|
||||
6. Fixed a bug where the game might not end properly after defeating all enemies in non-Classic Mode.
|
||||
7. Fixed a bug where Izayoi Sakuya at Lv.4 would not accumulate Fatigue.
|
||||
8. Fixed a bug with miscounted achievements for some heroes.
|
||||
9. Fixed a bug where Komeiji Satori's upgrade quest was miscounted when killing units.
|
||||
10. Fixed a bug where Komeiji Koishi could enter stealth again by moving after leveling up on a turn she had already moved.
|
||||
11. Fixed a bug where the popup hint was incorrect when encountering a newly-met enemy whose portrait was already shown.
|
||||
12. Fixed a bug with incorrect token symbols for Komeiji Empire common units.
|
||||
13. Fixed incorrect pricing on Hero Shrines (Forest Shrine 15, others unified to 20).
|
||||
14. Fixed a bug where splash damage did not put two nations into a War diplomatic state.
|
||||
15. Fixed a bug in online lobbies where repeated player join/leave caused 1P/2P numbering to go out of order.
|
||||
16. Fixed a bug where viewing another empire's diplomatic relations could display incorrectly.
|
||||
17. Fixed a bug where Komeiji Koishi's "Echoes of Black Heaven" would error out when allies were present at trigger time.
|
||||
18. Fixed a bug where the surrounding Udonge Courtyard level did not update in time when new Youkai Rabbits were created.
|
||||
19. Fixed a bug where the Komeiji Empire's initial score was miscalculated (higher than normal).
|
||||
|
||||
------- [Improvements] -------
|
||||
1. Improved scroll speed on the ranking screen.
|
||||
2. Improved encyclopedia display — heroes now show their signature actions.
|
||||
3. Added a kick button in online lobbies.
|
||||
4. Clarified the description of Patchouli's Stamina cap and Magic Stone storage cap.
|
||||
5. Added a chat log viewing button in online lobbies.
|
||||
6. Added a new diplomatic relation "Aware" alongside Neutral, War, Betrayed, Allied — this relation applies when you have encountered the other side but they have not yet encountered you."""
|
||||
@ -12,8 +12,15 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c659b850b20e460f866ed3f696be406b, type: 3}
|
||||
m_Name: VersionConfig
|
||||
m_EditorClassIdentifier:
|
||||
CurVersionId: 70106
|
||||
CurVersionId: 70107
|
||||
Versions:
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
Description: "[Beta 0.7.1h]\n\u53D1\u5E03\u65E5\u671F 26.5.13\n\n------- [bug\u4FEE\u590D]
|
||||
-------\n1.\u4FEE\u590D\u4E86\u7AF9\u6797\u72FC\u4E0A\u6821\u4ECE\u6C34\u4E2D\u4E0A\u5CB8\u540E\u9519\u8BEF\u89E6\u53D1\u521D\u59CB\u6280\u80FD\u7684bug\n2.\u4FEE\u590D\u4E86\u82F1\u96C4\u6218\u8239\u7684\u8BE6\u7EC6\u4FE1\u606F\u754C\u9762\u663E\u793A\u51FA\u9519\u7684bug\n3.\u4FEE\u590D\u4E86\u84EC\u83B1\u5C71\u5E1D\u56FD\u65E0\u6CD5\u5728\u4F18\u6619\u534E\u5EAD\u9662\u548C\u857E\u7C73\u8389\u4E9A\u884C\u5BAB\u79CD\u6811\u7684bug\n4.\u4FEE\u590D\u4E86\u82F1\u96C4\u51FA\u6218\u65F6\u63A2\u5F00\u7684\u8FF7\u96FE\u6CA1\u6709\u8BA1\u5165\u4EFB\u52A1\u8BA1\u6570\u7684bug\n\n-------
|
||||
[\u4F18\u5316] -------\n1.\u5B8C\u5584\u4E86\u6B65\u70AE\u534F\u540C\u7684\u80FD\u529B\u63CF\u8FF0\u6587\u5B57\n2.\u4F18\u5316\u4E86\u5E8F\u7AE0\u5267\u60C5\u7684\u56FE\u7247\u663E\u793A\u91CD\u53E0\u95EE\u9898"
|
||||
FourthVersion: 7
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -12,8 +12,13 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c659b850b20e460f866ed3f696be406b, type: 3}
|
||||
m_Name: VersionConfig
|
||||
m_EditorClassIdentifier:
|
||||
CurVersionId: 70106
|
||||
CurVersionId: 70107
|
||||
Versions:
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
Description: 19845
|
||||
FourthVersion: 7
|
||||
- MajorVersion: 0
|
||||
MinorVersion: 7
|
||||
PatchVersion: 1
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1610,9 +1610,11 @@ namespace RuntimeData
|
||||
var index = map.Net.GetRandom(map).Next(0, randomList.Count - 1); // 生成 index
|
||||
if (map.AddUnitData(randomList[index].Id, city.Id, heroType, out var newUnit))
|
||||
{
|
||||
// 更新新单位的视野
|
||||
Main.PlayerLogic.UpdateSight_LogicView(map, player,
|
||||
// 更新新单位的视野,并把揭开的格子数计入heroTask探索类任务
|
||||
var exploredCount = Main.PlayerLogic.UpdateSight_LogicView(map, player,
|
||||
map.GridMap.GetAroundGridIdList(newUnit.GetSightRange(map), randomList[index]));
|
||||
newUnit.HeroTask(map)?.OnExploredGrids(map, newUnit, exploredCount);
|
||||
foreach (var kv in player.PlayerHeroData.HeroTaskDict) kv.Value.OnAnyExploredGrids(map, newUnit, exploredCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -140,7 +140,7 @@ PlayerSettings:
|
||||
loadStoreDebugModeEnabled: 0
|
||||
visionOSBundleVersion: 1.0
|
||||
tvOSBundleVersion: 1.0
|
||||
bundleVersion: 0.7.1g
|
||||
bundleVersion: 0.7.1h
|
||||
preloadedAssets: []
|
||||
metroInputSource: 0
|
||||
wsaTransparentSwapchain: 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user