345 lines
26 KiB
Python
345 lines
26 KiB
Python
"""Одноразовый сид русских текстов.
|
||
|
||
Заполняет только пустые textRu. Если текст уже есть — не трогает.
|
||
После правок вручную этот скрипт запускать не нужно.
|
||
"""
|
||
|
||
from pathlib import Path
|
||
import re
|
||
|
||
ROOT = Path(__file__).resolve().parent.parent
|
||
PATH = ROOT / "content" / "translations" / "ru.yaml"
|
||
|
||
T = {
|
||
"assault-dragon-blightops":
|
||
'{auto}:{cb:1} Когда этот юнит помещается в зону сброса с {rc}, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, найдите в колоде до одной карты с именем "Ironclad Dragon, Shieldon", '
|
||
'покажите её противнику, добавьте её в руку и перемешайте колоду.',
|
||
|
||
"asura-kaiser":
|
||
'{cont}{vcrc}:Если у вас нет другого вэнгарда или рир-гарда {clan:nova-grappler}, этот юнит получает {power} -2000.\n'
|
||
'{auto}{vc}:Когда проверка драйва открывает {clan:nova-grappler} 3-го грейда, выберите один из ваших рир-гардов и {stand} его.',
|
||
|
||
"barcgal":
|
||
'{auto}:Когда другой {clan:royal-paladin} совершает райд на этом юните, вы можете призвать эту карту в {rc}.\n'
|
||
'{act}{rc}:{rest} Найдите в колоде до одной карты с именем "Future Knight, Llew" или "Flogal", призовите её в {rc} и перемешайте колоду.',
|
||
|
||
"battle-sister-chocolat":
|
||
'{cont}:{sentinel} (В колоде может быть не более четырёх карт с «{cont}:{sentinel}».)'
|
||
'{auto}:[Выберите {clan:oracle-think-tank} из руки и сбросьте её] Когда этот юнит размещается на {gc}, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, выберите одного из ваших {clan:oracle-think-tank}, который подвергается атаке, и этот юнит не может быть поражён до конца этого боя.',
|
||
|
||
"battle-sister-cocoa":
|
||
'{auto}:Когда этот юнит размещается на {vc} или {rc}, если у вас есть вэнгард {clan:oracle-think-tank}, '
|
||
'посмотрите верхнюю карту колоды и положите её на верх или в низ колоды.',
|
||
|
||
"battle-sister-mocha":
|
||
'{auto}{vcrc}:Когда этот юнит атакует, если в вашей руке четыре или больше карт, '
|
||
'этот юнит получает {power} +3000 до конца этого боя.',
|
||
|
||
"battleraizer":
|
||
'{auto}:Когда другой {clan:nova-grappler} совершает райд на этом юните, вы можете призвать эту карту в {rc}.\n'
|
||
'{auto}{rc}:Когда этот юнит усиливает, усиленный юнит получает {power} +3000 до конца этого боя, '
|
||
'и в начале конечной фазы этого хода верните этот юнит в колоду и перемешайте колоду.',
|
||
|
||
"berserk-dragon":
|
||
'{auto}:{cb:2} Когда этот юнит размещается на {vc} или {rc}, если у вас есть вэнгард {clan:kagero}, '
|
||
'вы можете оплатить стоимость. Если вы это сделали, выберите рир-гард противника 2-го грейда или ниже и уничтожьте его.',
|
||
|
||
"blaster-blade":
|
||
'{auto}:{cb:2} Когда этот юнит размещается на {vc}, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, выберите рир-гард противника и уничтожьте его.\n'
|
||
'{auto}:{cb:2} Когда этот юнит размещается на {rc}, если у вас есть вэнгард {clan:royal-paladin}, '
|
||
'вы можете оплатить стоимость. Если вы это сделали, выберите рир-гард противника 2-го грейда или выше и уничтожьте его.',
|
||
|
||
"blue-dust":
|
||
'{auto}{vcrc}:Когда атака этого юнита попадает, если у вас есть вэнгард {clan:dark-irregulars}, вы можете {sc:1}.',
|
||
|
||
"brutal-jack":
|
||
'{cont}{vcrc}:Restraint (Этот юнит не может атаковать.)'
|
||
'{act}{vcrc}:{cb:1} До конца хода этот юнит теряет "Restraint".\n'
|
||
'{auto}{vc}:Когда этот юнит усилен {clan:nova-grappler}, он получает {power} +5000 до конца этого боя.',
|
||
|
||
"ceo-amaterasu":
|
||
'{cont}{vc}:В свой ход, если в вашей руке четыре или больше карт, этот юнит получает {power} +4000.\n'
|
||
'{auto}{vc}:В начале вашей главной фазы {sc:1}, посмотрите верхнюю карту колоды и положите её на верх или в низ колоды.\n'
|
||
'{auto}{vcrc}:{sb:8} & {cb:5} Когда атака этого юнита попадает, вы можете оплатить стоимость. Если вы это сделали, возьмите до пяти карт.',
|
||
|
||
"clay-doll-mechanic":
|
||
'{auto}:Когда этот юнит размещается на {rc}, если у вас есть вэнгард {clan:nova-grappler}, '
|
||
'выберите карту из зоны урона и переверните её лицом вверх.',
|
||
|
||
"covenant-knight-randolf":
|
||
'{auto}{vcrc}:Когда этот юнит атакует, если в вашей руке больше карт, чем у противника, '
|
||
'этот юнит получает {power} +3000 до конца этого боя.',
|
||
|
||
"crimson-butterfly-brigitte":
|
||
'{auto}{vc}:Когда проверка драйва открывает {clan:royal-paladin} 3-го грейда, '
|
||
'этот юнит получает {power} +5000 до конца этого боя.',
|
||
|
||
"demon-eater":
|
||
'{auto}{vc}:В начале вашей главной фазы {sc:1}, и этот юнит получает {power} +2000 до конца хода.\n'
|
||
'{auto}{vcrc}:{sb:8} & {cb:5} Когда атака этого юнита попадает, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, уничтожьте все рир-гарды противника.',
|
||
|
||
"demon-slaying-knight-lohengrin":
|
||
'{auto}{vc}:В начале вашей главной фазы {sc:1}, и этот юнит получает {power} +2000 до конца хода.\n'
|
||
'{auto}{vcrc}:{sb:8} & {cb:5} Когда атака этого юнита попадает, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, уничтожьте все рир-гарды противника.',
|
||
|
||
"demonic-dragon-berserker-yaksha":
|
||
'{auto}{hand}:В вашу главную фазу, когда рир-гард противника помещается в зону сброса, '
|
||
'если у вас вэнгард 2-го грейда, вы можете показать эту карту. Если вы это сделали, совершите райд этой картой.',
|
||
|
||
"demonic-dragon-madonna-joka":
|
||
'{auto}{rc}:В вашу главную фазу, когда рир-гард противника помещается в зону сброса, '
|
||
'этот юнит получает {power} +3000 до конца хода.',
|
||
|
||
"demonic-dragon-mage-rakshasa":
|
||
'{auto}{rc}:В вашу главную фазу, когда рир-гард противника помещается в зону сброса, '
|
||
'этот юнит получает {power} +3000 до конца хода.',
|
||
|
||
"dragon-knight-aleph":
|
||
'{act}{vc}:[{cb:1} & Выберите юнита с именем "Embodiment of Armor, Bahr" и юнита с именем '
|
||
'"Embodiment of Spear, Tahr" из вашего {rc} и поместите их в душу] '
|
||
'Найдите в колоде до одной карты с именем "Embodiment of Victory, Aleph", совершите райд ею и перемешайте колоду.',
|
||
|
||
"dragon-monk-genjo":
|
||
'(В колоде может быть не более четырёх карт с «{heal} HEAL».)',
|
||
|
||
"dragon-monk-gojo":
|
||
'{act}{vcrc}:[{rest} & Выберите карту из руки и сбросьте её] Возьмите карту.',
|
||
|
||
"dragon-monk-goku":
|
||
'{auto}{vc}:Когда проверка драйва открывает {clan:kagero} 3-го грейда, '
|
||
'выберите рир-гард противника 1-го грейда или ниже и уничтожьте его.',
|
||
|
||
"dragonic-overlord":
|
||
'{cont}{vcrc}:Если у вас нет другого вэнгарда или рир-гарда {clan:kagero}, этот юнит получает {power} -2000.\n'
|
||
'{act}{vcrc}:{cb:3} До конца хода этот юнит получает {power} +5000, получает '
|
||
'"Own{vcrc}:Когда атака этого юнита попадает по рир-гарду противника, {stand} этот юнит," '
|
||
'и теряет "{twin-drive}".',
|
||
|
||
"embodiment-of-victory-aleph":
|
||
'{act}{vcrc}:{cb:4} Этот юнит получает {power} +3000/{critical} +1 до конца хода.\n'
|
||
'{act}{vc}:[Выберите карту с именем "Dragon Knight, Aleph", карту с именем "Embodiment of Armor, Bahr" '
|
||
'и карту с именем "Embodiment of Spear, Tahr" из вашей души и поместите их в зону сброса] '
|
||
'Переверните все карты в вашей зоне урона лицом вверх.',
|
||
|
||
"flame-of-hope-aermo":
|
||
'{auto}{rc}:[Выберите карту из руки и сбросьте её] Когда атака попадает в бою, в котором этот юнит усиливал, '
|
||
'вы можете оплатить стоимость. Если вы это сделали, возьмите карту.',
|
||
|
||
"flash-shield-iseult":
|
||
'{cont}:{sentinel} (В колоде может быть не более четырёх карт с «{cont}:{sentinel}».)\n'
|
||
'{auto}:[Выберите {clan:royal-paladin} из руки и сбросьте её] Когда этот юнит размещается на {gc}, '
|
||
'вы можете оплатить стоимость. Если вы это сделали, выберите одного из ваших {clan:royal-paladin}, '
|
||
'который подвергается атаке, и этот юнит не может быть поражён до конца этого боя.',
|
||
|
||
"future-knight-llew":
|
||
'{act}{rc}:[{cb:1} & Выберите юнита с именем "Future Knight, Llew", юнита с именем "Barcgal" '
|
||
'и юнита с именем "Flogal" из вашего {rc} и поместите их в душу] '
|
||
'Если у вас вэнгард 1-го грейда, найдите в колоде до одной карты с именем "Blaster Blade", '
|
||
'совершите райд ею и перемешайте колоду.',
|
||
|
||
"guiding-zombie":
|
||
'{auto}:Когда другой {clan:granblue} совершает райд на этом юните, вы можете призвать эту карту в {rc}.\n'
|
||
'{act}{rc}:[Поместите этот юнит в душу] Поместите три карты с верха колоды в зону сброса.',
|
||
|
||
"hell-spider":
|
||
'{cont}{vc}:В свой ход, если все вэнгарды и рир-гарды противника повёрнуты, этот юнит получает {power} +3000.\n'
|
||
'{auto}:{cb:2} Когда этот юнит размещается на {vc} или {rc}, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, выберите один из рир-гардов противника, и выбранный юнит не может {stand} '
|
||
'в следующую фазу стойки противника.',
|
||
|
||
"highspeed-brakki":
|
||
'{auto}{rc}:{sb:1} Когда этот юнит атакует, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, этот юнит получает {power} +5000 до конца этого боя, '
|
||
'и в начале шага завершения этого боя верните этот юнит в колоду и перемешайте колоду.',
|
||
|
||
"hungry-dumpty":
|
||
'{auto}:Когда этот юнит размещается на {rc}, если у вас есть вэнгард {clan:nova-grappler}, '
|
||
'выберите карту из зоны урона и переверните её лицом вверх.',
|
||
|
||
"juggernaut-maximum":
|
||
'{cont}{vcrc}:Если у вас нет другого вэнгарда или рир-гарда {clan:spike-brothers}, этот юнит получает {power} -2000.\n'
|
||
'{auto}{rc}:{sb:1} Когда этот юнит атакует, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, этот юнит получает {power} +5000 до конца этого боя, '
|
||
'и в начале шага завершения этого боя верните этот юнит в колоду и перемешайте колоду.',
|
||
|
||
"karma-queen":
|
||
'{auto}:{cb:2} Когда этот юнит размещается на {vc} или {rc}, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, выберите один из рир-гардов противника, и выбранный юнит не может {stand} '
|
||
'в следующую фазу стойки противника.',
|
||
|
||
"king-of-knights-alfred":
|
||
'{cont}{vc}:Ваши юниты не могут усиливать этот юнит.\n'
|
||
'{cont}{vc}:В свой ход этот юнит получает {power} +2000 за каждый ваш рир-гард {clan:royal-paladin}.\n'
|
||
'{act}{vcrc}:{cb:3} Найдите в колоде до одного {clan:royal-paladin} 2-го грейда или ниже, '
|
||
'призовите его в {rc} и перемешайте колоду.',
|
||
|
||
"knight-of-conviction-bors":
|
||
'{auto}{vcrc}:{cb:1} Когда этот юнит атакует, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, этот юнит получает {power} +3000 до конца этого боя.',
|
||
|
||
"knight-of-rose-morgana":
|
||
'{auto}{vcrc}:[Выберите карту из руки и сбросьте её] Когда этот юнит атакует, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, этот юнит получает {power} +4000 до конца хода.',
|
||
|
||
"knight-of-the-harp-tristan":
|
||
'{auto}{vc}:Когда проверка драйва открывает {clan:royal-paladin} 3-го грейда, '
|
||
'этот юнит получает {power} +5000 до конца этого боя.',
|
||
|
||
"lake-maiden-lien":
|
||
'{act}{vcrc}:[{rest} & Выберите карту из руки и сбросьте её] Возьмите карту.',
|
||
|
||
"lizard-soldier-conroe":
|
||
'{auto}:Когда другой {clan:kagero} совершает райд на этом юните, вы можете призвать эту карту в {rc}.\n'
|
||
'{act}{rc}:[{cb:1} & Уничтожьте этот юнит] Найдите в колоде до одного {clan:kagero} 1-го грейда или ниже, '
|
||
'покажите его противнику, добавьте в руку и перемешайте колоду.',
|
||
|
||
"lozenge-magus":
|
||
'(В колоде может быть не более четырёх карт с «{heal} HEAL».)\n'
|
||
'{auto}:Когда другой {clan:oracle-think-tank} совершает райд на этом юните, вы можете призвать эту карту в {rc}.\n'
|
||
'{auto}{rc}:Когда этот юнит усиливает, усиленный юнит получает {power} +3000 до конца этого боя, '
|
||
'и в начале конечной фазы этого хода верните этот юнит в колоду и перемешайте колоду.',
|
||
|
||
"maiden-of-libra":
|
||
'{auto}{vcrc}:{cb:2} Когда атака этого юнита попадает, если у вас есть вэнгард {clan:oracle-think-tank}, '
|
||
'вы можете оплатить стоимость. Если вы это сделали, возьмите карту.',
|
||
|
||
"monster-frank":
|
||
'{act}{drop}:{cb:3} Если у вас вэнгард 2-го грейда, совершите райд этой картой.',
|
||
|
||
"mr-invincible":
|
||
'{auto}{vc}:В начале вашей главной фазы {sc:1}, выберите карту из зоны урона и переверните её лицом вверх.\n'
|
||
'{auto}{vcrc}:{sb:8} & {cb:5} Когда атака этого юнита попадает, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, {stand} все ваши юниты.',
|
||
|
||
"nightmare-baby":
|
||
'{auto}{rc}:Когда этот юнит усиливает юнита с именем "Blue Dust", '
|
||
'усиленный юнит получает {power} +4000 до конца этого боя.',
|
||
|
||
"oracle-guardian-apollon":
|
||
'{auto}{vc}:{cb:2} Когда атака этого юнита попадает, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, возьмите две карты, выберите карту из руки, верните её в колоду и перемешайте колоду.\n'
|
||
'{auto}{rc}:{cb:2} Когда атака этого юнита попадает, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, возьмите карту.',
|
||
|
||
"queen-of-heart":
|
||
'{auto}{rc}:Когда этот юнит усиливает юнита с именем "King of Sword", '
|
||
'усиленный юнит получает {power} +4000 до конца этого боя.',
|
||
|
||
"redshoe-milly":
|
||
'{auto}:Когда этот юнит помещается в зону сброса с {gc}, поместите эту карту в душу.',
|
||
|
||
"ring-girl-clara":
|
||
'(В колоде может быть не более четырёх карт с «{heal} HEAL».)',
|
||
|
||
"rock-the-wall":
|
||
'{auto}:Когда этот юнит помещается в зону сброса с {gc}, поместите эту карту в душу.',
|
||
|
||
"screamin-and-dancin-announcer-shout":
|
||
'{act}{vcrc}:[{rest} & Выберите карту из руки и сбросьте её] Возьмите карту.',
|
||
|
||
"solitary-knight-gancelot":
|
||
'{act}{vc}:{cb:2} Если у вас в душе есть карта с именем "Blaster Blade", '
|
||
'этот юнит получает {power} +5000/{critical} +1 до конца хода.\n'
|
||
'{act}{hand}:[Покажите эту карту противнику и положите её на верх колоды] '
|
||
'Найдите в колоде до одной карты с именем "Blaster Blade", покажите её противнику, '
|
||
'добавьте в руку и перемешайте колоду.',
|
||
|
||
"starlight-unicorn":
|
||
'{auto}:Когда этот юнит размещается на {rc}, выберите другого вашего {clan:royal-paladin}, '
|
||
'и этот юнит получает {power} +2000 до конца хода.',
|
||
|
||
"stealth-beast-chigasumi":
|
||
'{auto}{vcrc}:Когда этот юнит атакует, если в вашей руке больше карт, чем у противника, '
|
||
'этот юнит получает {power} +3000 до конца этого боя.',
|
||
|
||
"stealth-beast-hagakure":
|
||
'{auto}:{cb:1} Когда этот юнит размещается на {gc}, если у вас есть вэнгард {clan:nubatama} '
|
||
'и в вашей руке меньше карт, чем у противника, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, противник выбирает карту из своей руки и сбрасывает её.',
|
||
|
||
"stealth-dragon-dreadmaster":
|
||
'{auto}{rc}:{cb:1} Когда атака попадает в бою, в котором этот юнит усиливал {clan:nubatama}, '
|
||
'если в вашей руке меньше карт, чем у противника, вы можете оплатить стоимость. '
|
||
'Если вы это сделали, противник выбирает карту из своей руки и сбрасывает её.',
|
||
|
||
"stealth-dragon-voidmaster":
|
||
'{auto}{vc}:Когда этот юнит атакует, если в вашей руке больше карт, чем у противника, '
|
||
'этот юнит получает {power} +3000 до конца этого боя.\n'
|
||
'{auto}{vcrc}:{cb:1} Когда атака этого юнита попадает, если в вашей руке меньше карт, чем у противника, '
|
||
'вы можете оплатить стоимость. Если вы это сделали, противник выбирает карту из своей руки и сбрасывает её.',
|
||
|
||
"tyrant-deathrex":
|
||
'{auto}{vc}:Когда этот юнит атакует, этот юнит получает {power} +5000 до конца этого боя.\n'
|
||
'{auto}{vc}:Когда атака этого юнита попадает, выберите один из ваших рир-гардов и уничтожьте его.',
|
||
|
||
"vortex-dragon":
|
||
'{auto}{vc}:В начале вашей главной фазы {sc:1}, и этот юнит получает {power} +2000 до конца хода.\n'
|
||
'{act}{vcrc}:{sb:8} & {cb:5} Выберите до трёх рир-гардов противника и уничтожьте их.',
|
||
|
||
"weather-girl-milk":
|
||
'{auto}{rc}:Когда этот юнит усиливает вэнгард {clan:oracle-think-tank}, '
|
||
'если в вашей руке четыре или больше карт, усиленный юнит получает {power} +4000 до конца этого боя.',
|
||
|
||
"wingal":
|
||
'{auto}{rc}:Когда этот юнит усиливает карту с именем "Blaster Blade", '
|
||
'усиленный юнит получает {power} +4000 до конца этого боя.',
|
||
|
||
"wyvern-guard-barri":
|
||
'{cont}:{sentinel} (В колоде может быть не более четырёх карт с «{cont}:{sentinel}».)'
|
||
'{auto}:[Выберите {clan:kagero} из руки и сбросьте её] Когда этот юнит размещается на {gc}, '
|
||
'вы можете оплатить стоимость. Если вы это сделали, выберите одного из ваших {clan:kagero}, '
|
||
'который подвергается атаке, и этот юнит не может быть поражён до конца этого боя.',
|
||
|
||
"wyvern-strike-jarran":
|
||
'{auto}{rc}:Когда этот юнит усиливает карту с именем "Wyvern Strike, Tejas", '
|
||
'усиленный юнит получает {power} +4000 до конца этого боя.',
|
||
|
||
"wyvern-strike-tejas":
|
||
'{cont}{vcrc}:Если этот юнит атакует, он может вместо этого атаковать юнита противника '
|
||
'в заднем ряду той же колонны, что и этот юнит.',
|
||
|
||
"yggdrasil-maiden-elaine":
|
||
'(В колоде может быть не более четырёх карт с «{heal} HEAL».)',
|
||
}
|
||
|
||
|
||
def block(text: str) -> str:
|
||
lines = text.split("\n")
|
||
return " textRu: |-\n" + "".join(" " + line + "\n" for line in lines)
|
||
|
||
|
||
def main() -> None:
|
||
source = PATH.read_text(encoding="utf-8")
|
||
lines = source.split("\n")
|
||
out = []
|
||
current = None
|
||
filled = 0
|
||
skipped = 0
|
||
|
||
for line in lines:
|
||
m = re.match(r"^ - nameId: (.+)$", line)
|
||
if m:
|
||
current = m.group(1).strip()
|
||
|
||
if line == ' textRu: ""' and current in T:
|
||
out.append(block(T[current]).rstrip("\n"))
|
||
filled += 1
|
||
continue
|
||
|
||
if line.startswith(" textRu:"):
|
||
skipped += 1
|
||
|
||
out.append(line)
|
||
|
||
PATH.write_text("\n".join(out), encoding="utf-8")
|
||
print(f"filled={filled} skipped={skipped} translations={len(T)}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|