15 Commits

Author SHA1 Message Date
c40712701c Исправлен XPath Version64 в правилах релиза AGENTS.md 2026-04-09 11:59:29 +03:00
c9595312ab Уточнены правила ссылок и переключения веток в AGENTS.md 2026-04-09 11:55:17 +03:00
91e12e4ba1 Повышена версия мода до v0.2.3 в ModuleInfo Version64
All checks were successful
Build Mod Package / build (push) Successful in 16s
2026-04-09 11:35:03 +03:00
921a5a3156 Обновлён перевод russian.xml и синхронизирована зависимость в meta.lsx 2026-04-09 11:32:32 +03:00
2ab32b258c Оптимизированы правила подтверждения действий 2026-04-09 11:23:49 +03:00
175c1dbaed Добавлено предложение обновления зависимости после обновления перевода 2026-04-09 11:16:26 +03:00
e9bfbfe74f Уточнены правила по веткам и предварительному показу небольших правок 2026-04-09 11:13:08 +03:00
6782cfcd87 Merge branch 'feat/sync-parent-meta' 2026-04-09 10:58:42 +03:00
eaf84ad605 Скрипт синхронизации parent meta переведен на загрузку из git 2026-04-09 10:58:18 +03:00
65e3f5b48e Добавлены action и скрипт синхронизации parent meta, уточнены правила подтверждения 2026-04-09 10:54:30 +03:00
9519b92771 Уточнил правило смены ветки: останавливать выполнение до явного решения пользователя 2026-04-09 10:37:19 +03:00
6257027a13 Обновлено описание мода в meta.lsx 2026-04-09 10:34:23 +03:00
cde9194ed5 Разделил правила AGENTS.md на общие и проектные 2026-04-09 08:58:43 +03:00
1c8cf13f67 Уточнен принцип сжатия правил: оптимизация под AI-агента 2026-04-09 08:53:27 +03:00
74a8942999 Уточнен формат ссылки на релиз: [version](url) 2026-04-09 08:51:14 +03:00
5 changed files with 197 additions and 31 deletions

View File

@@ -47,6 +47,9 @@ ACTIONS:
outputs: outputs:
- Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml - Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml
- optional: Mods/DnD 5.5e AIO Russian/meta.lsx (release-only) - optional: Mods/DnD 5.5e AIO Russian/meta.lsx (release-only)
after_success:
- suggest_action: meta:sync-parent
reason: "Обновить версию зависимости из родительского мода (актуальный Version64 и связанные поля зависимости)."
action:report: action:report:
intent: unified_task_report intent: unified_task_report
@@ -65,3 +68,21 @@ ACTIONS:
- no_unverified_claims - no_unverified_claims
outputs: outputs:
- final_user_report - final_user_report
meta:sync-parent:
intent: sync_dependency_moduleshortdesc_from_parent_meta
inputs:
- parent_meta_git_url (optional; defaults to upstream)
- Mods/DnD 5.5e AIO Russian/meta.lsx
plan:
- read_parent_moduleinfo_fields
- validate_required_fields_folder_md5_name_publishhandle_uuid_version64
- update_target_dependencies_moduleshortdesc_fields
- validate_xml_structure
- report_changed_fields
checks:
- xml_valid
- required_parent_fields_present
- only_dependencies_moduleshortdesc_changed
outputs:
- Mods/DnD 5.5e AIO Russian/meta.lsx

View File

@@ -1,13 +1,40 @@
# AGENTS.md # AGENTS.md
## Scope (MUST) ## General Rules (MUST)
### Git Collaboration Policy (General)
- Commit/push only after explicit user approval.
- After approval: commit and push immediately.
- Branch switch prompt (`fix/*` or `feat/*`): ask at dialogue start; reuse the explicit user decision for all subsequent fix/feature tasks in the same dialogue.
- After finishing work in `fix/*` or `feat/*`: propose either
1. creating an MR into `main`, or
2. merging to `main` immediately and deleting the `fix/*`/`feat/*` branch.
- If push fails: retry up to 2 more times with 3s pause.
- Approval prompts for pending actions: short direct phrasing, no soft/opening phrases; response format is mandatory:
- binary action: yes/no question.
- multiple actions/combinations: numbered options only.
### Cleanup (General)
- Do not leave temporary/debug artifacts in repo.
- Remove additional debug/temp dirs unless user asked to keep them.
### Rules Maintenance (General)
- For changes to rules files (`AGENTS.md`, `ACTIONS.md`): prefer optimized, compressed edits for AI-agent execution (machine-readable, unambiguous).
- Keep rule updates minimal and non-duplicative: merge overlapping points, remove redundancy, preserve intent.
### Communication (General)
- Project file links in user-facing Markdown: relative paths, `/` separators, spaces encoded as `%20`.
## Project-Specific Rules (MUST)
### Scope
- Repository purpose: standalone Russian localization mod only. - Repository purpose: standalone Russian localization mod only.
- Allowed domain: localization content + packaging/release metadata. - Allowed domain: localization content + packaging/release metadata.
- Forbidden: gameplay logic, Script Extender content, unrelated assets. - Forbidden: gameplay logic, Script Extender content, unrelated assets.
- Keep repository source-only. - Keep repository source-only.
- Never commit `.pak` or temporary build artifacts. - Never commit `.pak` or temporary build artifacts.
## Canonical Paths (MUST) ### Canonical Paths
- Mod sources: `Mods/DnD 5.5e AIO Russian` - Mod sources: `Mods/DnD 5.5e AIO Russian`
- Russian localization: `Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml` - Russian localization: `Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml`
- Mod metadata: `Mods/DnD 5.5e AIO Russian/meta.lsx` - Mod metadata: `Mods/DnD 5.5e AIO Russian/meta.lsx`
@@ -17,7 +44,7 @@
- Action catalog and command playbooks: `ACTIONS.md` - Action catalog and command playbooks: `ACTIONS.md`
- Upstream English reference: `https://github.com/Yoonmoonsik/dnd55e/blob/main/Mods/DnD2024_897914ef-5c96-053c-44af-0be823f895fe/Localization/English/english.xml` - Upstream English reference: `https://github.com/Yoonmoonsik/dnd55e/blob/main/Mods/DnD2024_897914ef-5c96-053c-44af-0be823f895fe/Localization/English/english.xml`
## Packaging Invariants (MUST) ### Packaging Invariants
- `.pak` must contain only BG3 mod structure under `Mods/...`. - `.pak` must contain only BG3 mod structure under `Mods/...`.
- Required content in `.pak`: - Required content in `.pak`:
- `Mods/DnD 5.5e AIO Russian/meta.lsx` - `Mods/DnD 5.5e AIO Russian/meta.lsx`
@@ -25,7 +52,7 @@
- Must not leak into `.pak`: `.git`, `.gitea`, `scripts`, `tools`, `.tools`, `build`, staging dirs. - Must not leak into `.pak`: `.git`, `.gitea`, `scripts`, `tools`, `.tools`, `build`, staging dirs.
- Staging for packaging must be in `%TEMP%`, not in dot-prefixed repo dirs. - Staging for packaging must be in `%TEMP%`, not in dot-prefixed repo dirs.
## Build/CI Contract (MUST) ### Build/CI Contract
- CI workflow stays thin: - CI workflow stays thin:
1. prepare workspace 1. prepare workspace
2. download Divine 2. download Divine
@@ -38,8 +65,8 @@
- Release ZIP must include only `.pak` + `info.json`. - Release ZIP must include only `.pak` + `info.json`.
- CI triggers: tag `v*` and manual dispatch; not every push to `main`. - CI triggers: tag `v*` and manual dispatch; not every push to `main`.
## Version/Release Rules (MUST) ### Version/Release Rules
- Read release version only from `save/region/node[@id="ModuleSettings"]/children/node[@id="ModuleInfo"]/attribute[@id="Version64"]` via explicit XML parsing. - Read release version only from `save/region[@id="Config"]/node[@id="root"]/children/node[@id="ModuleInfo"]/attribute[@id="Version64"]` via explicit XML parsing.
- `PublishVersion` must not be changed during release preparation. - `PublishVersion` must not be changed during release preparation.
- Release tag must match the source-of-truth version. - Release tag must match the source-of-truth version.
- Decision logic before tagging: - Decision logic before tagging:
@@ -47,27 +74,17 @@
2. If `ModuleInfo/Version64` equals latest released version, bump version first (e.g. `scripts/set-version.ps1 -VersionTag <tag>`), commit, then create/push tag. 2. If `ModuleInfo/Version64` equals latest released version, bump version first (e.g. `scripts/set-version.ps1 -VersionTag <tag>`), commit, then create/push tag.
- `scripts/build.ps1` derives release `Version64` from tag and writes it to generated `info.json` and staged `meta.lsx`. - `scripts/build.ps1` derives release `Version64` from tag and writes it to generated `info.json` and staged `meta.lsx`.
## info.json Contract (MUST) ### info.json Contract
- Top-level keys: `Mods`, `MD5`. - Top-level keys: `Mods`, `MD5`.
- Per-mod keys: `Author`, `Name`, `Folder`, `Version`, `Description`, `UUID`, `Created`, `Dependencies`, `Group`. - Per-mod keys: `Author`, `Name`, `Folder`, `Version`, `Description`, `UUID`, `Created`, `Dependencies`, `Group`.
- `Dependencies` is an array of UUIDs. - `Dependencies` is an array of UUIDs.
- Current dependency UUID: `897914ef-5c96-053c-44af-0be823f895fe`. - Current dependency UUID: `897914ef-5c96-053c-44af-0be823f895fe`.
## Git Collaboration Policy (MUST) ### Git Collaboration Policy (Project-Specific)
- Ask user permission before commit.
- After approval: commit and push immediately.
- At the start of each new fix/feature task: propose switching to a dedicated `fix/*` or `feat/*` branch.
- After finishing work in `fix/*` or `feat/*`: propose either
1. creating an MR into `main`, or
2. merging to `main` immediately and deleting the `fix/*`/`feat/*` branch.
- Commit messages and comments: Russian. - Commit messages and comments: Russian.
- Commit message content: what was done (not what should be done). - Commit message content: what was done (not what should be done).
- If push fails: retry up to 2 more times with 3s pause.
- If changes affect `.pak` contents or build/release flow: propose releasing next version. - If changes affect `.pak` contents or build/release flow: propose releasing next version.
- For released versions in user-facing messages: provide direct archive link when derivable (acceptable immediately after tag push, even before CI finishes). - For released versions in user-facing messages: provide direct archive link in Markdown format `[version](url)` when derivable (acceptable immediately after tag push, even before CI finishes).
- Never auto-commit/auto-push without explicit user approval.
## Cleanup (MUST) ### Cleanup (Project-Specific)
- Do not leave temporary/debug artifacts in repo.
- Ignored/temp patterns include: `build/`, `build-stage*`, `.tools/`, `*.pak`. - Ignored/temp patterns include: `build/`, `build-stage*`, `.tools/`, `*.pak`.
- Remove additional debug/temp dirs unless user asked to keep them.

View File

@@ -1492,9 +1492,9 @@
<content contentuid="h112e5aabgae68g5b63g8e95g3c2e5fd8ebb8" version="1">Телекинетическое перемещение</content> <content contentuid="h112e5aabgae68g5b63g8e95g3c2e5fd8ebb8" version="1">Телекинетическое перемещение</content>
<content contentuid="h789e4f7cgbbfdgd136g7526g0cb392afcf9d" version="1">Вы можете перемещать объект или существо силой разума. В качестве Магического действия выберите видимую вами цель в пределах 30 футов; ей должен быть незакреплённый объект Большого размера или меньше, либо добровольное существо, кроме вас. Вы перемещаете цель на расстояние до 30 футов в видимое вами свободное пространство. В качестве альтернативы, если цель — Крошечный объект, вы можете переместить его в руку или из неё.</content> <content contentuid="h789e4f7cgbbfdgd136g7526g0cb392afcf9d" version="1">Вы можете перемещать объект или существо силой разума. В качестве Магического действия выберите видимую вами цель в пределах 30 футов; ей должен быть незакреплённый объект Большого размера или меньше, либо добровольное существо, кроме вас. Вы перемещаете цель на расстояние до 30 футов в видимое вами свободное пространство. В качестве альтернативы, если цель — Крошечный объект, вы можете переместить его в руку или из неё.</content>
<content contentuid="hb9f6e95bg1ecbg4d70g2b47g004a19f989d8" version="1">7-й уровень: Псионический скачок</content> <content contentuid="hb9f6e95bg1ecbg4d70g2b47g004a19f989d8" version="1">7-й уровень: Псионический скачок</content>
<content contentuid="h53a46d69g6181g8c48g7c48g569803d1df00" version="1">В качестве Бонусного действия вы получаете Скорость полета, равную удвоенной вашей Скорости, до конца текущего хода. После использования этого Бонусного действия вы не сможете использовать его снова, пока не завершите Короткий или Длинный отдых, если только не потратите Кость псионической энергии (действие не требуется) для восстановления возможности его использования.</content> <content contentuid="h53a46d69g6181g8c48g7c48g569803d1df00" version="2">Бонусным действием вы можете перелететь в выбранную точку, затратив всего 10 футов перемещения. Использовав это бонусное действие, вы не сможете сделать это снова, пока не завершите короткий или длительный отдых, если только не потратите Кость псионической энергии (действие не требуется), чтобы восстановить его использование.</content>
<content contentuid="h82e5f786g25beg91b9g6a62g3f5142f4ec41" version="1">Псионический скачок</content> <content contentuid="h82e5f786g25beg91b9g6a62g3f5142f4ec41" version="1">Псионический скачок</content>
<content contentuid="ha42816f3g2b46g7a69gebb9g476dfa5e4f31" version="1">В качестве Бонусного действия вы получаете Скорость полета, равную удвоенной вашей Скорости, до конца текущего хода. После использования этого Бонусного действия вы не сможете использовать его снова, пока не завершите Короткий или Длинный отдых, если только не потратите Кость псионической энергии (действие не требуется) для восстановления возможности его использования.</content> <content contentuid="ha42816f3g2b46g7a69gebb9g476dfa5e4f31" version="2">Бонусным действием вы можете перелететь в выбранную точку, затратив всего 10 футов перемещения. Использовав это бонусное действие, вы не сможете сделать это снова, пока не завершите короткий или длительный отдых, если только не потратите Кость псионической энергии (действие не требуется), чтобы восстановить его использование.</content>
<content contentuid="h890ef36dga451ge5acgb49dg6c441e309f11" version="1">7-й уровень: Телекинетический толчок (Сбить с ног)</content> <content contentuid="h890ef36dga451ge5acgb49dg6c441e309f11" version="1">7-й уровень: Телекинетический толчок (Сбить с ног)</content>
<content contentuid="h9fa30afdgf4e2g7e74ga57fgdbedd4b1e363" version="1">Когда вы наносите урон цели своим Пси-ударом, вы можете заставить цель совершить спасбросок Силы (Сл 8 + модификатор Интеллекта + бонус мастерства). При провале вы можете наложить на цель состояние «Сбит с ног» или переместить её горизонтально на расстояние до 10 футов.</content> <content contentuid="h9fa30afdgf4e2g7e74ga57fgdbedd4b1e363" version="1">Когда вы наносите урон цели своим Пси-ударом, вы можете заставить цель совершить спасбросок Силы (Сл 8 + модификатор Интеллекта + бонус мастерства). При провале вы можете наложить на цель состояние «Сбит с ног» или переместить её горизонтально на расстояние до 10 футов.</content>
<content contentuid="heae343e1g10f2g46fcgb78cgffc541e0c708" version="1">7-й уровень: Телекинетический толчок (Оттолкнуть)</content> <content contentuid="heae343e1g10f2g46fcgb78cgffc541e0c708" version="1">7-й уровень: Телекинетический толчок (Оттолкнуть)</content>
@@ -2580,9 +2580,46 @@
<content contentuid="hffd4abcage782g546dgaeacgc8fe055bd42e" version="2">Бонусным действием вы получаете силу великанов на 1 минуту. Вы становитесь Большим, получаете преимущество на проверки Силы и спасброски Силы, а ваши атаки оружием или безоружные атаки наносят при попадании дополнительный урон 1к6.</content> <content contentuid="hffd4abcage782g546dgaeacgc8fe055bd42e" version="2">Бонусным действием вы получаете силу великанов на 1 минуту. Вы становитесь Большим, получаете преимущество на проверки Силы и спасброски Силы, а ваши атаки оружием или безоружные атаки наносят при попадании дополнительный урон 1к6.</content>
<content contentuid="hffe0a439g2edag0f4bg85dbg933db0b1a8b0" version="1">Рунический щит</content> <content contentuid="hffe0a439g2edag0f4bg85dbg933db0b1a8b0" version="1">Рунический щит</content>
<content contentuid="h4d43ff27g7af4g7c74gd48dg5f5bf9706659" version="1">1</content> <content contentuid="h4d43ff27g7af4g7c74gd48dg5f5bf9706659" version="1">1</content>
<content contentuid="h1479e906gc7dag1d98gf6d0g21845e6cae8e" version="1">Находясь в зверином облике, вы не можете говорить и накладывать заклинания. Вы принимаете характеристики своей звериной формы, за исключением значений &lt;LSTag Tooltip=&quot;Intelligence&quot;&gt;Интеллекта&lt;/LSTag&gt;, &lt;LSTag Tooltip=&quot;Wisdom&quot;&gt;Мудрости&lt;/LSTag&gt; и &lt;LSTag Tooltip=&quot;Charisma&quot;&gt;Харизмы&lt;/LSTag&gt;.</content>
<content contentuid="h23312037g140dg2713g1d14gd9b396f2c1e0" version="1">Находясь в зверином облике, вы не можете говорить и накладывать заклинания. Вы принимаете характеристики своей звериной формы, за исключением значений &lt;LSTag Tooltip=&quot;Intelligence&quot;&gt;Интеллекта&lt;/LSTag&gt;, &lt;LSTag Tooltip=&quot;Wisdom&quot;&gt;Мудрости&lt;/LSTag&gt; и &lt;LSTag Tooltip=&quot;Charisma&quot;&gt;Харизмы&lt;/LSTag&gt;.</content>
<content contentuid="h2d9c047cg3532g702ege224g72b70a01e316" version="1">Находясь в зверином облике, вы не можете говорить и накладывать заклинания. Вы принимаете характеристики своей звериной формы, за исключением значений &lt;LSTag Tooltip=&quot;Intelligence&quot;&gt;Интеллекта&lt;/LSTag&gt;, &lt;LSTag Tooltip=&quot;Wisdom&quot;&gt;Мудрости&lt;/LSTag&gt; и &lt;LSTag Tooltip=&quot;Charisma&quot;&gt;Харизмы&lt;/LSTag&gt;.</content>
<content contentuid="h2fa825ceg9a28g20c8g48d0g40216361a33e" version="1">Находясь в зверином облике, вы не можете говорить и накладывать заклинания. Вы принимаете характеристики своей звериной формы, за исключением значений &lt;LSTag Tooltip=&quot;Intelligence&quot;&gt;Интеллекта&lt;/LSTag&gt;, &lt;LSTag Tooltip=&quot;Wisdom&quot;&gt;Мудрости&lt;/LSTag&gt; и &lt;LSTag Tooltip=&quot;Charisma&quot;&gt;Харизмы&lt;/LSTag&gt;.</content>
<content contentuid="h30b03151g5293g0f58g25ecg192e954a1d18" version="1">Находясь в зверином облике, вы не можете говорить и накладывать заклинания. Вы принимаете характеристики своей звериной формы, за исключением значений &lt;LSTag Tooltip=&quot;Intelligence&quot;&gt;Интеллекта&lt;/LSTag&gt;, &lt;LSTag Tooltip=&quot;Wisdom&quot;&gt;Мудрости&lt;/LSTag&gt; и &lt;LSTag Tooltip=&quot;Charisma&quot;&gt;Харизмы&lt;/LSTag&gt;.</content>
<content contentuid="h368dfb6eg54d1g9117gae02g8877cb540a10" version="1">Уровень 6: Чародейский стрелок</content>
<content contentuid="h3b7d345ag5345g49ffg6c00g90a138a19f95" version="1">Находясь в зверином облике, вы не можете говорить и накладывать заклинания. Вы принимаете характеристики своей звериной формы, за исключением значений &lt;LSTag Tooltip=&quot;Intelligence&quot;&gt;Интеллекта&lt;/LSTag&gt;, &lt;LSTag Tooltip=&quot;Wisdom&quot;&gt;Мудрости&lt;/LSTag&gt; и &lt;LSTag Tooltip=&quot;Charisma&quot;&gt;Харизмы&lt;/LSTag&gt;.</content>
<content contentuid="h3d2a0062g8a04g4942g776fg8389d4b68f1b" version="1">Примите облик белого медведя, который может &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Shout_GoadingRoar_Bear_Summon&quot;&gt;Провоцировать&lt;/LSTag&gt; врагов атаковать его.</content>
<content contentuid="h4afbde24g3b4ag6245gdfc5gf40fbb6dd7b9" version="1">Уровень 3: Бах! И ты труп!</content>
<content contentuid="h4b3edb5dg700eg11d2gb46eg867808ec1738" version="2">Ваш опыт борьбы с заклинателями даёт вам следующие преимущества.&lt;br&gt;&lt;br&gt;Разрушитель концентрации. Каждый раз, когда вы совершаете дальнобойный бросок атаки, вы нарушаете защитную магию, действующую на цель, и прерываете её концентрацию.
Антимагический выстрел. Когда вы совершаете критическое попадание по цели под действием вашей особенности «Выстрел в живот», вы также подавляете её способность накладывать заклинания. Пока снаряд остаётся в цели, она не может накладывать заклинания или выполнять действие «Магия».
Закалённый магией. Когда вы проваливаете спасбросок против заклинания или магического эффекта, вы можете Реакцией бросить 1d6 и добавить результат к броску, потенциально превращая провал в успех.</content>
<content contentuid="h5ef73b58ga233g8fccg4389gcd443dd5c7d7" version="1">Закалённый магией</content>
<content contentuid="h672e82feg2734g7895ga227gd76ffbfded41" version="1">Примите облик гигантского барсука, который может &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Target_Burrow_GiantBadger&quot;&gt;Зарываться&lt;/LSTag&gt; в землю.</content>
<content contentuid="h6827c922gd910gca98gee99gdbd9b0f178b1" version="1">Примите облик глубинного ротэ, который может накладывать &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Target_DancingLights&quot;&gt;Пляшущие огоньки&lt;/LSTag&gt; и &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Rush_Rush_DeepRothe&quot;&gt;Таранить&lt;/LSTag&gt; врагов.</content>
<content contentuid="h6c004994g2426gc2fbg7e1eg48891af8e993" version="1">Примите облик зловещей вороны, которая может оставаться незаметной и &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Target_RendVision_Raven_Summon&quot;&gt;Ослеплять&lt;/LSTag&gt; врагов.</content>
<content contentuid="h6c75a711gccb2g34c5g5489gfbaf6012200e" version="2">Оружие пакта: урон некротической энергией</content>
<content contentuid="h8697b53cg246dg4397g9db8gc35b4035bc5b" version="1">Связать оружие пакта (урон излучением)</content>
<content contentuid="h93c42699gb5efg50eeg700ag91b482874bb9" version="1">Связать оружие пакта (урон некротической энергией)</content>
<content contentuid="h9f0fbf45g41d6gb607g5104g558e4732b4de" version="1">Примите облик гигантского паука, который может &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Target_Web_Spider&quot;&gt;Опутывать паутиной&lt;/LSTag&gt; врагов.</content>
<content contentuid="ha2a934dbg1420gf4c4g7431gcf508603657a" version="2">Оружие пакта: урон излучением</content>
<content contentuid="ha7014351gc454g307agb356g37500f5752d7" version="1">Уровень 10: Антимаг</content>
<content contentuid="hbe8ae593g19c8gc31cg51cdg845945c5b41b" version="1">Связать оружие пакта (урон психической энергией)</content>
<content contentuid="hc4d3f811g2a89g0e6dg5219gcf3bfa3167c3" version="1">Примите облик зловещего волка, который может &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Shout_PackHowl_Wolf_Dire&quot;&gt;Воодушевлять&lt;/LSTag&gt; союзников и &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Target_Bite_Wolf_Dire_Wildshape&quot;&gt;Отвлекать&lt;/LSTag&gt; врагов.</content>
<content contentuid="hcb4e031eg6175g6174g6466gcc87b839601d" version="1">Когда вы попадаете атакой «Пальцы-пистолеты» по цели, вы можете потратить одну Кость риска и добавить её к броску урона.</content>
<content contentuid="hcd88f337g7b53g35deg791bgf37bf6314ed5" version="2">Оружие пакта: урон психической энергией</content>
<content contentuid="hcdf4a03bg59c5gb1b2g3204g37cf5a2339c0" version="1">Мистический выстрел</content>
<content contentuid="hd3836cebg50efg96d2g4884gc1006821d8ef" version="1">Когда в свой ход вы совершаете действие «Атака», вы можете заменить одну из атак накладыванием одного из ваших фокусов волшебника со временем накладывания в одно действие.</content>
<content contentuid="hd771ba94g1544ge8bage691g562f72e6c038" version="1">Когда вы проваливаете спасбросок против заклинания или магического эффекта, вы можете Реакцией бросить 1d6 и добавить выпавшее значение к броску, потенциально превращая провал в успех.</content>
<content contentuid="he8e15200g5d16g3cfag9fd3g57eec75fb43b" version="1">Примите облик кота, который может оставаться незаметным и &lt;LSTag Type=&quot;Spell&quot; Tooltip=&quot;Shout_Distract_Cat_Summon&quot;&gt;Мяукать&lt;/LSTag&gt;, отвлекая врагов.</content>
<content contentuid="he97ec05ag27f2gdd59g1ebag5d02ea37d3df" version="1">Не может накладывать заклинания или выполнять действие «Магия»</content>
<content contentuid="hec2215cegc8c3g171bg67cdg7de02f56bba6" version="1">Находясь в зверином облике, вы не можете говорить и накладывать заклинания. Вы принимаете характеристики своей звериной формы, за исключением значений &lt;LSTag Tooltip=&quot;Intelligence&quot;&gt;Интеллекта&lt;/LSTag&gt;, &lt;LSTag Tooltip=&quot;Wisdom&quot;&gt;Мудрости&lt;/LSTag&gt; и &lt;LSTag Tooltip=&quot;Charisma&quot;&gt;Харизмы&lt;/LSTag&gt;.</content>
<content contentuid="hf051b82fgb193ga37bg540ege6200dcbd93e" version="1">Вы можете использовать магию вместо огнестрельного оружия.
Пальцы-пистолеты. Вы изучаете фокус «Пальцы-пистолеты».
Мистический выстрел. Когда вы попадаете атакой «Пальцы-пистолеты» по цели, вы можете потратить одну Кость риска и добавить её к броску урона.</content>
<content contentuid="hf3b2ff84g1b07ga3eag2125ge551077a6e4d" version="1">Оружие пакта</content>
<content contentuid="hfee38a66g5042g2c16g753dg9b88aa769f46" version="1">Антимагический выстрел</content>
</contentList> </contentList>

View File

@@ -9,19 +9,19 @@
<children> <children>
<node id="ModuleShortDesc"> <node id="ModuleShortDesc">
<attribute id="Folder" type="LSString" value="DnD2024_897914ef-5c96-053c-44af-0be823f895fe"/> <attribute id="Folder" type="LSString" value="DnD2024_897914ef-5c96-053c-44af-0be823f895fe"/>
<attribute id="MD5" type="LSString" value="4bd42ca93f895d1ec521a286bea09ef2"/> <attribute id="MD5" type="LSString" value="ac497558b070a635abecd7d23d4a3125"/>
<attribute id="Name" type="LSString" value="DnD 5.5e All-in-One BEYOND"/> <attribute id="Name" type="LSString" value="DnD 5.5e All-in-One BEYOND"/>
<attribute id="PublishHandle" type="uint64" value="4419649"/> <attribute id="PublishHandle" type="uint64" value="4419649"/>
<attribute id="UUID" type="guid" value="897914ef-5c96-053c-44af-0be823f895fe"/> <attribute id="UUID" type="guid" value="897914ef-5c96-053c-44af-0be823f895fe"/>
<attribute id="Version64" type="int64" value="144396675937468416"/> <attribute id="Version64" type="int64" value="144396678084952064"/>
</node> </node>
</children> </children>
</node> </node>
<node id="ModuleInfo"> <node id="ModuleInfo">
<attribute id="Author" type="LSString" value="MikhailRaw"/> <attribute id="Author" type="LSString" value="MikhailRaw"/>
<attribute id="CharacterCreationLevelName" type="FixedString" value=""/> <attribute id="CharacterCreationLevelName" type="FixedString" value=""/>
<attribute id="Description" type="LSString" value="Русская AI локализация мода DnD 5.5e All-in-One BEYOND."/> <attribute id="Description" type="LSString" value="Русский перевод мода DnD 5.5e All-in-One BEYOND. Перевод ещё в разработке: AI помогает быстро обновлять тексты, а финальные правки и качество мы проверяем вручную."/>
<attribute id="FileSize" type="uint64" value="0"/> <attribute id="FileSize" type="uint64" value="2488095"/>
<attribute id="Folder" type="LSString" value="DnD 5.5e AIO Russian"/> <attribute id="Folder" type="LSString" value="DnD 5.5e AIO Russian"/>
<attribute id="LobbyLevelName" type="FixedString" value=""/> <attribute id="LobbyLevelName" type="FixedString" value=""/>
<attribute id="MD5" type="LSString" value="c0a8f3412870277331306e0719fc6f77"/> <attribute id="MD5" type="LSString" value="c0a8f3412870277331306e0719fc6f77"/>
@@ -32,7 +32,7 @@
<attribute id="PublishHandle" type="uint64" value="5965149"/> <attribute id="PublishHandle" type="uint64" value="5965149"/>
<attribute id="StartupLevelName" type="FixedString" value=""/> <attribute id="StartupLevelName" type="FixedString" value=""/>
<attribute id="UUID" type="FixedString" value="6401e84d-daf2-416d-adeb-99c03a2487a6"/> <attribute id="UUID" type="FixedString" value="6401e84d-daf2-416d-adeb-99c03a2487a6"/>
<attribute id="Version64" type="int64" value="281477124194306"/> <attribute id="Version64" type="int64" value="281481419161600"/>
<children> <children>
<node id="PublishVersion"> <node id="PublishVersion">
<attribute id="Version64" type="int64" value="281477124194304"/> <attribute id="Version64" type="int64" value="281477124194304"/>

View File

@@ -0,0 +1,91 @@
param(
[string]$ParentMetaUrl = "https://raw.githubusercontent.com/Yoonmoonsik/dnd55e/main/Mods/DnD2024_897914ef-5c96-053c-44af-0be823f895fe/meta.lsx",
[string]$TargetMetaPath = "Mods/DnD 5.5e AIO Russian/meta.lsx"
)
$ErrorActionPreference = "Stop"
$resolvedTargetMetaPath = [System.IO.Path]::GetFullPath($TargetMetaPath)
if (-not (Test-Path -LiteralPath $resolvedTargetMetaPath)) {
throw "Target meta.lsx was not found: '$resolvedTargetMetaPath'."
}
if ([string]::IsNullOrWhiteSpace($ParentMetaUrl)) {
throw "ParentMetaUrl must not be empty."
}
try {
$parentResponse = Invoke-WebRequest -Uri $ParentMetaUrl -UseBasicParsing -TimeoutSec 60
} catch {
throw "Failed to download parent meta.lsx from '$ParentMetaUrl': $($_.Exception.Message)"
}
$parentRaw = $parentResponse.Content
$targetRaw = Get-Content -LiteralPath $resolvedTargetMetaPath -Raw
[xml]$parentXml = $parentRaw
[xml]$targetXml = $targetRaw
$parentModuleInfo = $parentXml.SelectSingleNode('/save/region/node/children/node[@id="ModuleInfo"]')
if ($null -eq $parentModuleInfo) {
throw "ModuleInfo node was not found in parent meta downloaded from '$ParentMetaUrl'."
}
$requiredFields = @("Folder", "MD5", "Name", "PublishHandle", "UUID", "Version64")
$sourceValues = @{}
foreach ($field in $requiredFields) {
$node = $parentModuleInfo.SelectSingleNode("attribute[@id='$field']")
if ($null -eq $node) {
throw "Required parent ModuleInfo attribute '$field' is missing in meta downloaded from '$ParentMetaUrl'."
}
$value = $node.GetAttribute("value")
if ([string]::IsNullOrWhiteSpace($value)) {
throw "Required parent ModuleInfo attribute '$field' has empty value in meta downloaded from '$ParentMetaUrl'."
}
$sourceValues[$field] = $value
}
$targetDependencyNode = $targetXml.SelectSingleNode('/save/region/node/children/node[@id="Dependencies"]/children/node[@id="ModuleShortDesc"]')
if ($null -eq $targetDependencyNode) {
throw "Dependencies/ModuleShortDesc node was not found in target meta: '$resolvedTargetMetaPath'."
}
$changedFields = @()
foreach ($field in $requiredFields) {
$targetAttr = $targetDependencyNode.SelectSingleNode("attribute[@id='$field']")
if ($null -eq $targetAttr) {
throw "Target Dependencies/ModuleShortDesc attribute '$field' is missing in '$resolvedTargetMetaPath'."
}
$currentValue = $targetAttr.GetAttribute("value")
$newValue = [string]$sourceValues[$field]
if ($currentValue -ne $newValue) {
$targetAttr.SetAttribute("value", $newValue)
$changedFields += $field
}
}
if ($changedFields.Count -eq 0) {
Write-Host "[sync-parent-meta.ps1] No changes needed. Target dependency data is already up to date."
} else {
$utf8Bom = New-Object System.Text.UTF8Encoding($true)
$settings = New-Object System.Xml.XmlWriterSettings
$settings.Encoding = $utf8Bom
$settings.Indent = $true
$settings.IndentChars = " "
$settings.NewLineChars = "`n"
$settings.NewLineHandling = [System.Xml.NewLineHandling]::Replace
$writer = [System.Xml.XmlWriter]::Create($resolvedTargetMetaPath, $settings)
try {
$targetXml.WriteTo($writer)
} finally {
$writer.Dispose()
}
Write-Host ("[sync-parent-meta.ps1] Updated fields: " + ($changedFields -join ", "))
}