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