chore: инициализация репозитория и правка расхождений канона

Добавлен CLAUDE.md: разделение канон/первоисточник/временное, карта
"где чей канон" по числам, инварианты вселенной, конвенции разметки.

Заведён .gitignore (.tmp/, .idea/). Производные артефакты разбора
первоисточника вынесены из git в нетрекаемую .tmp/ — на диске сохранены,
источником истины остаётся energative/.

Исправлены два расхождения в каноне:
- 02-biology: шкала EF описана как пятибалльная при таблице классов 0-6;
- 08-hbm-addon: транслитерация "энергатив" двоилась (energetive/energative),
  а путь датапака не совпадал с неймспейсом. Принят вариант energatives.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 16:17:04 +03:00
co-authored by Claude Opus 5
parent 56208a4a25
commit c2a1814c50
24 changed files with 99 additions and 5803 deletions
+6
View File
@@ -0,0 +1,6 @@
# Временные и производные файлы: черновики, скрипты разбора, промежуточные
# выгрузки. Ничего из .tmp/ не трекается и не является источником истины.
.tmp/
# IDE
.idea/
+82
View File
@@ -0,0 +1,82 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Что это за репозиторий
Кода здесь нет. Это корпус проектной документации на русском языке по вымышленной вселенной «Энергативы»: физика EF-излучения, её биологические и технологические следствия, лор и техническое задание на аддон к моду **HBM's Nuclear Tech Mod** (Minecraft).
Сборки, тестов, линтеров, зависимостей нет. Единственные операции — правка Markdown и git. Не изобретайте команды сборки и не добавляйте тулинг без явной просьбы.
| Путь | Роль |
| --- | --- |
| `energative/` | **Канон.** Единственный источник истины. Всё, что утверждается о вселенной, берётся отсюда |
| `Myasko_Energative.docx` | Первоисточник: экспорт чата с ИИ, из которого вырос канон. Хронологический, содержит отвергнутые гипотезы и промежуточные версии. **Не канон** |
| `.tmp/` | Не трекается. Черновики, промежуточные выгрузки, извлечённое содержимое первоисточника |
## Архитектура корпуса
`energative/` — 9 нумерованных документов плюс README-оглавление. Порядок номеров = порядок вывода: каждый следующий слой опирается на предыдущие.
```
01 ef-field-theory физика поля — фундамент, на него ссылается всё остальное
02 biology действие на организм: следствие из 01
03 periodic-table реестр 11 элементов: номера, обозначения, EF-класс, T½
04 teltnite материаловедение элемента №1 (сплавы, обработка)
05 power-and-weapons РЭС и БЭС, риценитовые излучатели — применение 03–04
06 protection экранирование, снаряжение, дозиметрия, ТБ
07 lore история, политика, объекты, персоналии
08 hbm-addon ТЗ на аддон: перевод 01–07 в игровые правила
09 sources-and-open-questions внешние опоры + всё незакрытое (общий для комплекта)
```
**Главное правило разделения** (закреплено в [energative/README.md:5](energative/README.md)): документы 01–08 описывают **только принятые решения**. Отвергнутые гипотезы, альтернативные варианты и незакрытые вопросы живут исключительно в 09. Не вносите в 01–08 формулировки вида «возможно», «вариант Б», «требует уточнения» — такое выносится в 09.
Списки источников и открытых вопросов не дублируются по файлам: 09 — их единственное место.
## Где чей канон (проверять перед правкой чисел)
| Факт | Канонический файл |
| --- | --- |
| Состав элементов, обозначения, стабильность, T½, EF-уровень | [03-periodic-table.md](energative/03-periodic-table.md), сводная таблица |
| Шкала классов опасности и биологический эффект | [02-biology.md](energative/02-biology.md) |
| Численные пороги дозы (0–1000, `cap` по элементам) | [08-hbm-addon.md](energative/08-hbm-addon.md) — 02 ссылается на него, а не дублирует |
| Ступени снаряжения 0–V, дозиметры, знак опасности | [06-protection.md](energative/06-protection.md) |
| Параметры РЭС и БЭС, поражающие факторы | [05-power-and-weapons.md](energative/05-power-and-weapons.md) |
| Свойства, обработка и сплавы Тельтнита | [04-teltnite.md](energative/04-teltnite.md) |
| Даты, объекты, расстановка сил | [07-lore.md](energative/07-lore.md) |
Меняя число или свойство, найдите обратные ссылки на него в остальных файлах: тот же элемент фигурирует в 3–5 документах в разных ролях (физика → биология → техника → игровой баланс), и расхождение таблиц — основной способ сломать этот корпус.
## Инварианты канона
Нарушение любого из них требует явного согласования с пользователем, а не правки «по месту».
- **EF-поле не ионизирует.** Лучевых ожогов, некроза, разрушения ДНК нет; воздействие обратимо. Свинец, бетон, вода бесполезны — единственный барьер — Тельтнит и его сплавы (прежде всего Т-Иридий).
- **Монотонность по номеру.** С ростом номера элемента растут масса, хрупкость и активность, а срок жизни падает. Чем сильнее излучение, тем короче жизнь.
- **Рубеж 4/5.** Класс 4 (Алленит) — обратимая кома, класс 5 (Риценит) — неотвратимая смерть за секунды. Эта граница несущая: на ней держатся и ТБ, и военная доктрина, и игровой баланс.
- **Пороговое насыщение.** Доза не растёт бесконечно: у каждого источника свой потолок, и слабый источник не убивает сколь угодно долгой экспозицией. Это заявленное отличие от радиации HBM.
- **Замкнутый круговорот массы.** RC → 50 % TT + 50 % VR + тепло + поле. Материя не теряется, вечного заражения местности не остаётся.
- **Единственный вход в систему** — бомбардировка Тельтнита альфа-частицами на ускорителе (TT → EG). Элементы 5–11 промышленно получаются только в РЭС или в эпицентре БЭС; на ускорителе — единичные атомы.
- **Незакрытая номенклатура.** Элементы 6–9 и 11 официальных имён не имеют, для Фюрцита предпочтителен вариант Viercite (VR), FC — устаревший синоним. Не придумывайте имена и обозначения молча: сначала правка в 09.
## Конвенции документов
- Язык — русский. Термин при вводе: русское название, латинская пара курсивом, обозначение полужирным — `Тельтнит *(Teltnitte)* **TT**`.
- Один `#` на файл, сразу за ним абзац-аннотация о назначении документа. Разделы — `##`. Нумерация разделов не унифицирована по комплекту (01 — римские цифры, 08 — арабские, остальные без номеров): сохраняйте стиль конкретного файла.
- Таблицы — GFM с разделителем `| --- |`. Формулы — `$...$` в строке, `$$...$$` блоком. Схемы и цепочки синтеза — fenced-блоки без языка, выравнивание пробелами значимо.
- Перекрёстные ссылки внутри комплекта — относительные, без каталога: `[02-biology.md](02-biology.md)` в тексте или `[04](04-teltnite.md)` в таблицах.
- Новый документ = новая строка в таблице «Состав» в [energative/README.md](energative/README.md); новое сокращение = строка в «Ключевых сокращениях» там же.
## Игровой слой (08)
- Платформа: HBM's Nuclear Tech Mod, Minecraft **1.12.2** (для обкатки механик допустима 1.18.2).
- EF-доза — отдельная скрытая переменная `energative_dose` (0–1000), работающая **параллельно** радиации HBM и не заменяющая её.
- Идентификаторы кода и конфигов — латиница/snake_case (`energative_dose`, `speed`, `cap`); внутриигровые строки, сообщения и названия — по-русски.
- Транслитерация «энергатив» — только через `a`: `Energative Field`, `energative_dose`, `energatives`. Вариант через `e` (`energetive`) считается опечаткой.
- Неймспейс аддона — `energatives` (он же каталог датапака `data/energatives/`). Префикс `hbm:` принадлежит базовому моду и в идентификаторах аддона не используется.
- Любая механика в 08 обязана иметь физическое или лорное обоснование в 01–07. Если обоснования нет — вопрос идёт в 09, а не досочиняется в ТЗ.
## Временные файлы
Всё временное — скрипты разбора, черновики, промежуточные выгрузки, эксперименты — создавать только в `.tmp/``.gitignore`). Содержимое `.tmp/` никогда не цитируется как канон и не попадает в коммиты.
+1 -1
View File
@@ -49,7 +49,7 @@ EF-поле не ионизирует ткани и не разрушает кл
## Шкала классов опасности ## Шкала классов опасности
Активность элементов оценивается по пятибалльной шкале EF. Ключевой рубеж проходит **по линии Алленит — Риценит**: это граница между обратимым сном и неотвратимой смертью. Активность элементов оценивается по шкале EF — от 0 (пассивное вещество) до 6 (теоретический предел, достижимый лишь в момент пика синтеза). Ключевой рубеж проходит **по линии Алленит — Риценит**: это граница между обратимым сном и неотвратимой смертью.
| Класс EF | Элементы | Биологический эффект | Обратимость | | Класс EF | Элементы | Биологический эффект | Обратимость |
| --- | --- | --- | --- | | --- | --- | --- | --- |
+10 -10
View File
@@ -6,7 +6,7 @@
## 1. Механика EF-дозы ## 1. Механика EF-дозы
Для игрока ведётся скрытая переменная `energetive_dose` в диапазоне 0–1000. Она не заменяет стандартную радиацию HBM, а работает параллельно ей. Для игрока ведётся скрытая переменная `energative_dose` в диапазоне 0–1000. Она не заменяет стандартную радиацию HBM, а работает параллельно ей.
### Пороговое насыщение ### Пороговое насыщение
@@ -29,7 +29,7 @@
| 100–300 | Сообщение в чат: *«Во рту появился странный привкус...»* Утомление I, Медлительность I | | 100–300 | Сообщение в чат: *«Во рту появился странный привкус...»* Утомление I, Медлительность I |
| 300–600 | Медлительность II, Слабость I, Тошнота I | | 300–600 | Медлительность II, Слабость I, Тошнота I |
| 600–900 | Слепота, Слабость III, Медлительность III, Тошнота II | | 600–900 | Слепота, Слабость III, Медлительность III, Тошнота II |
| 900–1000+ | Кастомный `Energetive Damage`, 1–2 сердца в секунду. Сообщение о смерти: *«[Игрок] умер от тотальной мышечной релаксации»*; для RC — *«[Игрок] мгновенно заснул вечным сном при контакте с Риценитом»* | | 900–1000+ | Кастомный `Energative Damage`, 1–2 сердца в секунду. Сообщение о смерти: *«[Игрок] умер от тотальной мышечной релаксации»*; для RC — *«[Игрок] мгновенно заснул вечным сном при контакте с Риценитом»* |
### Спад дозы и снятие эффектов ### Спад дозы и снятие эффектов
@@ -61,12 +61,12 @@
**Java, Forge 1.12.2** — через стандартный `@Config`: **Java, Forge 1.12.2** — через стандартный `@Config`:
```java ```java
package com.yourname.energetives.config; package com.yourname.energatives.config;
import net.minecraftforge.common.config.Config; import net.minecraftforge.common.config.Config;
import com.yourname.energetives.ModInfo; import com.yourname.energatives.ModInfo;
@Config(modid = ModInfo.MODID, name = "energetives_expansion") @Config(modid = ModInfo.MODID, name = "energatives_expansion")
public class EnergeticsConfig { public class EnergeticsConfig {
@Config.Comment("Белый список сущностей, полностью игнорирующих EF-излучение. Формат: modid:entity_name") @Config.Comment("Белый список сущностей, полностью игнорирующих EF-излучение. Формат: modid:entity_name")
@@ -93,7 +93,7 @@ public static void applyEFRadiation(EntityLivingBase entity) {
**MCreator** — через плагин «Configuration Files»: на `On mod loading` создаётся файл `ef_whitelist.txt` со значениями по умолчанию; в процедуре тика источника выполняется `IF (File contains line [registry name of target entity])` → пустая ветка (иммунитет), `ELSE` → наложение эффектов. **MCreator** — через плагин «Configuration Files»: на `On mod loading` создаётся файл `ef_whitelist.txt` со значениями по умолчанию; в процедуре тика источника выполняется `IF (File contains line [registry name of target entity])` → пустая ветка (иммунитет), `ELSE` → наложение эффектов.
**Версии 1.18.2+** — предпочтительный путь через теги сущностей: файл `data/energetives/tags/entity_types/ef_immune.json`, проверка сводится к одной строке `if (entity.getType().is(ModTags.EntityTypes.EF_IMMUNE)) return;`. Сборщики смогут дополнять список датапаками, не касаясь конфигов. **Версии 1.18.2+** — предпочтительный путь через теги сущностей: файл `data/energatives/tags/entity_types/ef_immune.json`, проверка сводится к одной строке `if (entity.getType().is(ModTags.EntityTypes.EF_IMMUNE)) return;`. Сборщики смогут дополнять список датапаками, не касаясь конфигов.
## 3. Материалы и производственная цепочка ## 3. Материалы и производственная цепочка
@@ -217,12 +217,12 @@ public static void applyEFRadiation(EntityLivingBase entity) {
Достижение «Опыт номер 17» — двойная отсылка (эксперимент №17 из Half-Life и прямая цитата из русскоязычного трека про Гастера). Иконка — сердечник БЭС в бирюзовом пламени либо литера λ из Т-Иридия. Выполнить без полностью заряженного силового поля и укрытия за толстой стеной Тельтнита невозможно. Достижение «Опыт номер 17» — двойная отсылка (эксперимент №17 из Half-Life и прямая цитата из русскоязычного трека про Гастера). Иконка — сердечник БЭС в бирюзовом пламени либо литера λ из Т-Иридия. Выполнить без полностью заряженного силового поля и укрытия за толстой стеной Тельтнита невозможно.
Шаблон файла `data/energetives/advancements/subject_17.json`: Шаблон файла `data/energatives/advancements/subject_17.json`:
```json ```json
{ {
"display": { "display": {
"icon": { "item": "hbm_energetives:bes_bomb_core" }, "icon": { "item": "energatives:bes_bomb_core" },
"title": { "text": "Опыт номер 17", "color": "dark_purple" }, "title": { "text": "Опыт номер 17", "color": "dark_purple" },
"description": { "description": {
"text": "Если ты готов к экспериментам и готов сражаться, то удачи пережить опыт с номером 17.", "text": "Если ты готов к экспериментам и готов сражаться, то удачи пережить опыт с номером 17.",
@@ -233,13 +233,13 @@ public static void applyEFRadiation(EntityLivingBase entity) {
"announce_to_chat": true, "announce_to_chat": true,
"hidden": true "hidden": true
}, },
"parent": "hbm_energetives:find_n1_silo", "parent": "energatives:find_n1_silo",
"criteria": { "criteria": {
"survived_bes_blast": { "survived_bes_blast": {
"trigger": "minecraft:entity_hurt_player", "trigger": "minecraft:entity_hurt_player",
"conditions": { "conditions": {
"damage": { "damage": {
"type": "hbm_energetives:bes_explosion", "type": "energatives:bes_explosion",
"source": { "distance": { "absolute": { "max": 30.0 } } } "source": { "distance": { "absolute": { "max": 30.0 } } }
} }
} }
File diff suppressed because it is too large Load Diff
-87
View File
@@ -1,87 +0,0 @@
# Извлечённое содержимое `Myasko_Energative.docx`
Источник: `../Myasko_Energative.docx` (508 944 байт), экспорт чата с ИИ по проекту
аддона «Энергатив» для Minecraft-мода HBM's Nuclear Tech.
## Что где
| Путь | Что это |
|---|---|
| `Myasko_Energative.md` | **Основной файл.** Markdown со восстановленной структурой: таблицы, ASCII-диаграммы, код, списки, заголовки, ссылки. 3508 строк. |
| `text.txt` | Плоский дамп: один абзац документа = одна строка, без форматирования. 2153 абзаца, 307 563 символа. Нужен для diff'ов и поиска. |
| `images/` | 16 изображений, извлечённых без перекодирования (байт-в-байт как в docx). |
| `images/index.tsv` | Соответствие: порядок в тексте → имя файла → исходное имя в архиве → размер. |
## Что было в документе (и как это попало в Markdown)
| В docx | В `.md` |
|---|---|
| 3 таблицы Word (6×3, 7×5, 9×6) | GFM-таблицы; многоабзацные ячейки склеены через `<br>` |
| 12 преформатированных блоков | fenced-блоки: 8 ASCII-диаграмм + 4 листинга (`json`, `java`) |
| 813 элементов списков (`numbering.xml`) | `-` / `1.`, вложенность по `w:ilvl` |
| 2820 полужирных / 193 курсивных прогона | `**` / `*` |
| 409 абзацев целиком полужирных | `###` (или `####`, если оканчивается на `:`) |
| 31 гиперссылка (сноски `[1, 2]`) | `[1](url)` |
| 38 формул LaTeX `\(...\)` | `$...$` |
| 66 реплик пользователя | `## 👤 …` + текст запроса цитатой |
| 2 блока веб-источников | цитата `> **Источники: N сайтов**` |
| 16 картинок | `![NNN](images/NNN_name.ext)` |
### ASCII-диаграммы
Их 8 — это именно то, что в чате выглядело как схемы. Например цикл синтеза
энергативов (`Myasko_Energative.md`, ~строка 2025) и слоёная структура защитного
костюма (~строка 3443). Внутри fenced-блока отступы сохранены посимвольно,
выравнивание не поехало. **Векторных диаграмм (SmartArt, DrawingML charts) в документе нет** — в
`word/media/` только растр, и все 16 файлов извлечены.
## Точность преобразования
Сверка по словам между `text.txt` и `.md`: расхождение −969 токенов, которое
раскладывается ровно на осознанно выброшенный служебный мусор экспорта:
| Выброшено | Токенов |
|---|---|
| 34 дублирующих повтора реплики пользователя (экспорт печатает текст запроса дважды подряд) | 947 |
| 4 × `Используйте код с осторожностью.` (подпись под листингами) | 16 |
| 4 метки языка перед листингами (`json`, `java`) — стали info-string у ``` | 4 |
| 2 × `Показать все` (кнопка под блоком источников) | 4 |
| **Добавлено:** 2 × слово «Источники» в заголовке блока цитат | −2 |
Итог 971 − 2 = 969. Непреднамеренных потерь текста нет.
Оговорка: экспорт повторяет реплику пользователя только в первой половине
документа (34 раза из 66). В остальных случаях текст запроса есть лишь в самой
строке-маркере, поэтому конвертер всегда берёт его оттуда — иначе 32 запроса
потерялись бы.
## Формат `text.txt`
Позиции картинок помечены встроенным маркером:
```
[[image: 008 (image8.jpeg)]]
```
Номер соответствует префиксу файла в `images/`. Два изображения переиспользуются
в документе несколько раз (`image5.png` — 3 раза, `image14.png` — 2 раза), поэтому
маркеров больше, чем файлов.
## Содержательные vs. служебные картинки
Из 16 файлов реальный контент несут три (остальное — иконки и favicon'ы блока
«источники» из веб-поиска, 260–3700 байт):
- `008_image8.jpeg` — скриншот ракеты Н-1 в натуральную величину, Minecraft 1.18.2
- `015_image15.png` — жёлтый круглый предупреждающий знак с тессерактом
- `016_image16.png` — тот же знак, красный треугольный вариант
## Как воспроизвести
```bash
python _tools/extract_docx.py Myasko_Energative.docx extracted
```
```bash
python _tools/docx_to_md.py Myasko_Energative.docx extracted/Myasko_Energative.md --img-dir images
```
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

-17
View File
@@ -1,17 +0,0 @@
order saved_as original bytes
001 001_image1.png image1.png 1344
002 002_image2.png image2.png 393
003 003_image3.png image3.png 2911
004 004_image4.jpeg image4.jpeg 2026
005 005_image5.png image5.png 377
006 006_image6.jpeg image6.jpeg 1533
007 007_image7.jpeg image7.jpeg 2777
008 008_image8.jpeg image8.jpeg 35280
009 009_image9.png image9.png 573
010 010_image10.png image10.png 1316
011 011_image11.png image11.png 1705
012 012_image12.jpeg image12.jpeg 3659
013 013_image13.png image13.png 260
014 014_image14.png image14.png 379
015 015_image15.png image15.png 53601
016 016_image16.png image16.png 46921
1 order saved_as original bytes
2 001 001_image1.png image1.png 1344
3 002 002_image2.png image2.png 393
4 003 003_image3.png image3.png 2911
5 004 004_image4.jpeg image4.jpeg 2026
6 005 005_image5.png image5.png 377
7 006 006_image6.jpeg image6.jpeg 1533
8 007 007_image7.jpeg image7.jpeg 2777
9 008 008_image8.jpeg image8.jpeg 35280
10 009 009_image9.png image9.png 573
11 010 010_image10.png image10.png 1316
12 011 011_image11.png image11.png 1705
13 012 012_image12.jpeg image12.jpeg 3659
14 013 013_image13.png image13.png 260
15 014 014_image14.png image14.png 379
16 015 015_image15.png image15.png 53601
17 016 016_image16.png image16.png 46921
-2180
View File
File diff suppressed because it is too large Load Diff