6 Commits

3 changed files with 285 additions and 5 deletions

152
AGENTS.md Normal file
View File

@@ -0,0 +1,152 @@
# AGENTS.md
## Project Overview
This repository contains a standalone Russian localization mod for **Baldur's Gate 3**:
- Mod name: `DnD 5.5e All-in-One BEYOND Russian Localization`
- Mod folder: `Mods/DnD 5.5e AIO Russian`
- Base/original mod dependency: `DnD 5.5e All-in-One BEYOND`
- Original mod repository: `https://github.com/Yoonmoonsik/dnd55e`
- Original dependency UUID: `897914ef-5c96-053c-44af-0be823f895fe`
This repository is for the localization mod only. It must not gain gameplay logic, Script Extender files, or unrelated assets.
## Repository Rules
- Keep the repository source-only.
- Do not commit `.pak` artifacts.
- Do not commit temporary build outputs.
- Do not add gameplay or script content unrelated to localization/release packaging.
- Keep the localization folder and metadata consistent with the packaged mod.
## Current Important Paths
- Mod sources: `Mods/DnD 5.5e AIO Russian`
- Localization XML: `Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml`
- Mod metadata: `Mods/DnD 5.5e AIO Russian/meta.lsx`
- CI workflow: `.gitea/workflows/build.yml`
- Main build script: `scripts/build.ps1`
## Build And Release Model
The authoritative build logic lives in:
- `scripts/build.ps1`
The Gitea workflow should stay thin and only:
1. prepare the workspace
2. download `Divine`
3. call `scripts/build.ps1`
4. publish the release zip for tag builds
### Current Build Outputs
The build script produces:
- `build/DnD 5.5e AIO Russian.pak`
- `build/info.json`
- `build/DnD 5.5e AIO Russian <tag>.zip` for tagged builds
The release zip is expected to contain:
- the built `.pak`
- `info.json`
## Packaging Notes
The package must contain only the BG3 mod structure under `Mods/...`.
Verified expected extracted `.pak` structure:
- `Mods/DnD 5.5e AIO Russian/meta.lsx`
- `Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml`
Do not allow `.git`, `.gitea`, `scripts`, `tools`, `.tools`, `build`, or staging directories into the `.pak`.
## Important Packaging Behavior
There is a runner-specific packaging quirk:
- `Divine` can produce a broken 48-byte `.pak` on the CI runner depending on the source path.
- Current mitigation is implemented in `scripts/build.ps1`.
- The script uses staged sources and fallback packaging attempts.
- Staging is performed in `%TEMP%`, not in a dot-prefixed directory inside the repo.
If packaging breaks again, debug the source path and unpack the resulting `.pak` locally to verify actual contents.
## Versioning
Version displayed by BG3ModManager should be derived from the release tag.
Current behavior:
- `scripts/build.ps1` derives `Version64` from tags like `v0.1.0`
- the computed version is written into:
- generated `info.json`
- staged `meta.lsx` before packaging
Do not manually hardcode release versions in the committed `meta.lsx` for each release if CI can derive them from tags.
## info.json Expectations
`info.json` is generated during build and should remain aligned with BG3/BG3ModManager expectations.
Current expected shape:
- top-level `Mods`
- top-level `MD5`
- per-mod fields:
- `Author`
- `Name`
- `Folder`
- `Version`
- `Description`
- `UUID`
- `Created`
- `Dependencies`
- `Group`
Current dependency model:
- `Dependencies` is an array of dependency UUIDs
- current dependency UUID:
- `897914ef-5c96-053c-44af-0be823f895fe`
## CI Trigger Policy
Current workflow policy:
- run on tags `v*`
- run on manual dispatch
- do not run on every push to `main`
## Git / Collaboration Preferences
User preference:
- after making changes, ask for permission before committing
- if the user approves, commit and push immediately
- for significant changes, propose moving work into a separate branch
- feature/fix branches must use the prefix `feat/` or `fix/`
- after finishing work in a `feat/` or `fix/` branch, propose merging it back into `main`
- comments and commit messages should be written in Russian
- commit messages should describe what was done, not what should be done
- if changes affect files that go into the final `.pak`, or change the build/release process, propose releasing the next version
- if push fails, retry up to two more times with a 3-second pause between attempts
Do not auto-commit or auto-push without explicit user approval.
## Cleanup Expectations
Temporary directories and debug artifacts should not remain in the repository.
Ignored paths currently include:
- `build/`
- `build-stage*`
- `.tools/`
- `*.pak`
If local debugging creates additional temporary folders, remove them when done unless the user explicitly wants to keep them.

View File

@@ -0,0 +1,133 @@
{
"Ability Check": "проверка характеристики",
"Advantage": "преимущество",
"Aid": "Подмога",
"Armor Class": "класс доспеха",
"Attack Action": "действие «Атака»",
"Attack Roll": "бросок атаки",
"Bardic Inspiration": "Вдохновение барда",
"Bardic Inspiration die": "кубик Вдохновения барда",
"Beguiling Magic": "Чарующая магия",
"Blessed Healer": "Благословенный целитель",
"Blessed Strikes": "Благословенные удары",
"Bonus Action": "бонусное действие",
"Bonus Unarmed Strike": "Бонусная безоружная атака",
"Brutal Strike": "Жестокий удар",
"Cantrip": "заговор",
"Cantrips": "заговоры",
"Channel Divinity": "Направление божественной энергии",
"Circle Forms": "Облики круга",
"Circle of the Moon Spells": "Заклинания круга Луны",
"Cleave": "Рассечение",
"Concentration": "концентрация",
"Countercharm": "Контрочарование",
"Cutting Words": "Едкие слова",
"D20 Test": "проверка к20",
"Danger Sense": "Чувство опасности",
"Dash": "Рывок",
"Deflect Attacks": "Отклонение атак",
"Disadvantage": "помеха",
"Disciple of Life": "Ученик жизни",
"Disengage": "Отход",
"Divine Order": "Божественный порядок",
"Divine Spark": "Божественная искра",
"Druidic": "Друидический",
"Eldritch Strike": "Мистический удар",
"Elemental Fury": "Стихийная ярость",
"Empowered Strikes": "Усиленные удары",
"Evasion": "Ускользание",
"Extra Attack": "Дополнительная атака",
"Font of Inspiration": "Источник вдохновения",
"Forceful Blow": "Мощный удар",
"Fount of Moonlight": "Фонтан лунного света",
"Frenzy": "Неистовство",
"Graze": "Задевание",
"Guidance": "Наставление",
"Hamstring Blow": "Удар по сухожилиям",
"Heavy Armor": "тяжёлые доспехи",
"Heightened Focus": "Обострённый фокус",
"Heroic Inspiration": "Героическое вдохновение",
"Heroic Warrior": "Героический воин",
"Hit Points": "очки здоровья",
"Improved Combat Superiority": "Усовершенствованное превосходство в бою",
"Improved Warding Flare": "Улучшенная защитная вспышка",
"Indomitable": "Несгибаемая воля",
"Instinctive Pounce": "Интуитивный рывок",
"Invoke Duplicity": "Призыв двойника",
"Light": "Свет",
"Long Rest": "длительный отдых",
"Magic Action": "действие «Магия»",
"Magician": "Маг",
"Mantle of Inspiration": "Мантия вдохновения",
"Martial Arts": "Боевые искусства",
"Martial weapons": "воинское оружие",
"Mastery Properties": "свойства мастерства",
"Medium Armor": "средние доспехи",
"Mind Magic": "Магия разума",
"Mindless Rage": "Безрассудная ярость",
"Moonlight Step": "Лунный шаг",
"Moonlight Step Charge": "заряд «Лунного шага»",
"Necrotic Damage": "урон некротической энергией",
"Nick": "Надрез",
"Opportunity Attack": "атака по возможности",
"Opportunity Attacks": "атаки по возможности",
"Patient Defense": "Выжидательная оборона",
"Poison Spray": "Брызги яда",
"Potent Spellcasting": "Мощное заклинание",
"Preserve Life": "Сохранение жизни",
"Primal Knowledge": "Первозданное знание",
"Primal Order": "Первозданный уклад",
"Primal Strike": "Первобытный удар",
"Produce Flame": "Создание пламени",
"Proficiency Bonus": "бонус мастерства",
"Proficient": "владение",
"Protector": "Защитник",
"Purity of Body": "Чистота тела",
"Push": "Отталкивание",
"Radiant Damage": "урон излучением",
"Rage": "Ярость",
"Reaction": "реакция",
"Reckless Attack": "Безрассудная атака",
"Redirect Attacks": "Перенаправление атак",
"Relentless Rage": "Неудержимая ярость",
"Remarkable Athlete": "Выдающийся атлет",
"Resistance": "Сопротивление",
"Retaliation": "Возмездие",
"Sacred Flame": "Священное пламя",
"Sap": "Утомление",
"Saving Throw": "спасбросок",
"Sear Undead": "Выжигание нежити",
"Second Wind": "Второе дыхание",
"Self-Restoration": "Самоисцеление",
"Shillelagh": "Дубинка",
"Short Rest": "короткий отдых",
"Slow": "Замедление",
"Slow Fall": "Замедление падения",
"Spare the Dying": "Пощада умирающему",
"Spell Slot": "ячейка заклинаний",
"Starry Wisp": "Звёздная искра",
"Step of the Wind": "Шаг ветра",
"Tactical Master": "Мастер тактики",
"Tactical Mind": "Тактический ум",
"Tactical Shift": "Тактический манёвр",
"Temporary Hit Points": "временные очки здоровья",
"Thaumaturge": "Чудотворец",
"Thaumaturgy": "Чудотворство",
"Thorn Whip": "Колючий бич",
"Thunderclap": "Раскат грома",
"Toll the Dead": "Погребальный звон",
"Topple": "Опрокидывание",
"Tricksters Transposition": "Перемещение обманщика",
"Unarmored Defense": "Защита без доспехов",
"Unarmored Movement": "Бездоспешное передвижение",
"Uncanny Metabolism": "Необычный метаболизм",
"Unfettered Mind": "Свободный разум",
"Vex": "Досада",
"Warden": "Страж",
"Warding Flare": "Защитная вспышка",
"Weapon Mastery": "мастерство владения оружием",
"Wild Resurgence": "Возрождение дикого облика",
"Wild Shape": "Дикий облик",
"Wild Shape Charge": "заряд «Дикого облика»",
"Word of Radiance": "Сияющее слово"
}

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
mkdir -p build
Divine -a create-package -g bg3 -s Mods -d "build/DnD 5.5e AIO Russian.pak"