Compare commits
6 Commits
v0.1.2
...
4148e8b861
| Author | SHA1 | Date | |
|---|---|---|---|
| 4148e8b861 | |||
| 3c893cd0d9 | |||
| 2a7b6d9395 | |||
| 4bb64d35da | |||
| cb92587449 | |||
| 84c9baa2d5 |
152
AGENTS.md
Normal file
152
AGENTS.md
Normal 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.
|
||||||
133
glossary/glossary.normalized.json
Normal file
133
glossary/glossary.normalized.json
Normal 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": "Опрокидывание",
|
||||||
|
"Trickster’s 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": "Сияющее слово"
|
||||||
|
}
|
||||||
@@ -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"
|
|
||||||
Reference in New Issue
Block a user