VanguardReMaster/tools/seed_ru.py

345 lines
26 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Одноразовый сид русских текстов.
Заполняет только пустые 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()