56f0341373
Файл на VPS пересобрал глубже, чем был: он сошёлся с официальной викой Facepunch на дату 06.11.2025 и с логикой самой игры, а не с вики 2018-2020, из которой брались прошлые числа. Что изменилось по существу: - Сбор ресурсов пересчитан. Узел - это запас (750 камней, 500 металла, 200 серы), а удар снимает часть: камнем 10 дерева или 5 руды, киркой 16 руды. Отсюда 47-75 ударов на узел, а не "2 удара" из старой вики. - Появился "Gather Rates" по официальной вике: Gather Damage, Bonus, Condition Loss по каждой паре "инструмент - ресурс", плюс боевая статистика (урон, голова x2, темп, дальность) и таблица брони. - Скрап и чертежи: цена 15/30/60/120 по редкости (не 20/75/125/500 по уровню), верстак 1 больше не требует скрапа, тех-дерево верстака и эксперимент на верстаке - механика 2017-2020, убрана. - Сокеты построек расписаны конкретно: малый проём (Doorway) - одиночная дверь и торговый автомат, большой (Wall Frame) - двойные двери, гаражные ворота, сетка-фенси, ворота и стена клетки, витрины; окно - решётки, стёкла, ставни, бойницы; рамка пола - решётка, люки. - Добавлены разбор по пунктам, что было неверно и почему, и сверка данных (суммы цен исследования, тех-дерева, уровней верстаков, ударов) - сведено. Поправлено: G:\decompiled-rustex - НЕ источник фактов, он копировал community-вику 2017-2020. Именно оттуда пришли неверные числа. Решения по проекту сохранены, открытые вопросы разделены на решённые и те, что блокируют реализацию.
942 lines
80 KiB
Markdown
942 lines
80 KiB
Markdown
# RustNotMC — данные оригинала, решения и план работ
|
||
|
||
Файл для перечитывания: после сброса контекста, при передаче работы другому
|
||
агенту или при возврате к проекту через месяц. Здесь лежит всё, что нужно
|
||
знать, чтобы продолжить, не выясняя заново.
|
||
|
||
Порядок работы: сначала этот файл, потом код.
|
||
|
||
---
|
||
|
||
## 0. Где мы сейчас
|
||
|
||
| модуль | что в нём | состояние |
|
||
|---|---|---|
|
||
| `rsx-protocol` | формат провода: кадрирование, буфер, рукопожатие, игровые пакеты | рабочий, 22 теста |
|
||
| `rsx-auth` | свои аккаунты сервера (PBKDF2, токены, троттлинг) | рабочий, используется только когда лаунчер не настроен |
|
||
| `rsx-server-core` | тик-луп, мир (чанки, генерация, сохранение), сессии, вход через лаунчер | рабочий, 49 тестов |
|
||
| `rsx-client` | загрузчик модов, API модов, хуки в клиент | рабочий, 128 тестов |
|
||
| `game-fork` | форк Minecraft 1.12.2: свой сетевой слой, свой экран входа, свой HUD | собирается чисто, 3275 классов |
|
||
|
||
Уже работает целиком: клиент заходит на сервер по токену лаунчера → сервер спрашивает
|
||
лаунчер «этот ваш?» → клиент получает мир → чанки приходят и рисуются →
|
||
игрок ходит и ломает блоки.
|
||
|
||
Не сделано: предметы, инвентарь, крафт, верстаки, изучение чертежей, узлы-ресурсы
|
||
(деревья/камни/руда как разрушаемые объекты), постройка баз, нормальная генерация
|
||
мира, транспорт на NIO, дальний вид (DistantView).
|
||
|
||
**Данные оригинала** — раздел 1: срез Rust на **06.11.2025** («Pivot Or Die»).
|
||
Упрощения проекта поверх оригинала: **без тех-дерева верстака**, **без автоматизации**
|
||
(Industrial Crafter), **без биомов и джунглей**, **стартовые предметы не исследуются**.
|
||
Все числа раздела 1 помечены: ✅ подтверждено · 🟡 косвенно · ❌ не подтверждено.
|
||
|
||
---
|
||
|
||
## 1. Данные оригинала (Rust) — срез на 06.11.2025
|
||
|
||
**Какая версия игры.** Rust на **6 ноября 2025** — обновление **«Pivot Or Die»**
|
||
(06 Nov 2025). Это уже после:
|
||
|
||
- **«Tech Tree Update»** (03.12.2020) — в верстаке появилось тех-дерево, а заодно
|
||
приехала большая ребалансировка («over 300 balance changes, touching nearly every item»:
|
||
переписаны времена крафта, HP, стоимости, Holosight переехал на T2, из ящиков перестали
|
||
падать чертежи);
|
||
- **«Meta Shift»** (02.10.2025) — фрагменты чертежей в рецептах верстаков 2 и 3,
|
||
скрап из рецептов верстаков убран.
|
||
|
||
И **до** обновлений 2026 года (апгрейд верстака на месте 07.05.2026, Livestock 01.10.2026) —
|
||
их не берём.
|
||
|
||
**Что это меняет в цифрах:**
|
||
|
||
| механика | состояние на 06.11.2025 |
|
||
|---|---|
|
||
| цена исследования (стол) | **15 / 30 / 60 / 120** скрапа по редкости (Common / Uncommon / Rare / Very Rare). До 06.11.2025 было 20 / 75 / 125 / 500 |
|
||
| тех-дерево верстака | есть; цена разблокировки — те же 15/30/60/120 по редкости (колонка «125/250/500» в вике — **устаревшая**) |
|
||
| рецепты верстаков | L1: 500 дерева + 100 металла, **без скрапа**; L2: 500 металла + 20 ХМ + **5 Basic Blueprint Fragment**; L3: 1000 металла + 100 ХМ + **5 Advanced Blueprint Fragment** |
|
||
| скрап | в рецепты верстаков **больше не входит**; тратится только на исследование и разблокировку |
|
||
|
||
**Что из этого мы НЕ делаем** (решения проекта, см. п. 5):
|
||
|
||
- **стартовые предметы не исследуются**: то, что игрок получает в самом начале, и всё
|
||
«известное по умолчанию» — без чертежей и без скрапа;
|
||
- **тех-дерево верстака** — оверхед (отдельный UI с деревом и ветками): знания берём
|
||
только со стола исследований; цифры на случай, если решим иначе, — в п. 1.3;
|
||
- **автоматизация** (Industrial Crafter, индустриальный крафт, Research Paper для него) —
|
||
оверхед;
|
||
- **биомы и джунгли** (Jungle Crate и прочее) — мир один, без биомов;
|
||
- **обновления после 06.11.2025** — не берём.
|
||
|
||
**Как доставать данные этой эпохи.** У вики Facepunch есть история правок:
|
||
`https://wiki.facepunch.com/rust/item/<id>~history` (список ревизий) и
|
||
`~diff:<revision>` (изменения), плюс `~edit` (текущий wikitext). Отсюда берётся
|
||
состояние страницы на дату. Для более старой эпохи (до 03.12.2020) — MediaWiki API
|
||
fandom: `…/api.php?action=query&prop=revisions&titles=<Page>&rvlimit=1
|
||
&rvstart=<дата>&rvdir=older&rvprop=content&format=json`.
|
||
|
||
Значки: ✅ подтверждено на 06.11.2025 · 🟡 косвенный источник · ❌ не подтверждено.
|
||
|
||
### 1.1 Камень (Rock) — стартовый предмет
|
||
|
||
> «the most basic resource gathering and fighting tool» — инструмент сбора и оружие.
|
||
|
||
- **Крафт:** 10 Stones, **верстак не нужен**, время 5 с (на верстаке 1 — 2 с, на 2/3 — 1 с). ✅ О
|
||
- **Знание по умолчанию:** рецепт открыт с начала игры, исследовать не нужно. Цена
|
||
**физического чертежа** — 120 скрапа; платится только ради бумажки (например, для
|
||
Industrial Crafter). Формулировка вики: *«This blueprint is known by default.
|
||
Research is only needed to obtain a physical blueprint for the Industrial Crafter.»* ✅ О
|
||
- **Стартовый набор:** по гайдам 2023–2025 игрок спавнится с камнем и фонарём.
|
||
❌ На официальной вике **не документировано** — для нас это не факт, а решение проекта
|
||
(выдаём камень в первый слот хотбара).
|
||
- **Боевая статистика:** урон 10, множитель в голову ×2 (голова 20, торс 10),
|
||
темп удара 0.8 с, дальность 1.2, радиус удара 0.2. ✅ О
|
||
Руки/ноги — 8 (только С, и это **частный случай**: единого правила «руки/ноги = 0.8»
|
||
в Rust нет — у разного оружия доли рук 0.63–1.0, ног 0.48–0.9). 🟡
|
||
- **Сбор:** дерево — 10 дерева за удар (±10 %), руда — 5 руды за удар (±20 %),
|
||
плоть — 10 урона; потеря прочности 0.3 за удар по дереву и руде. ✅ О
|
||
- **Прочность:** официальной вики **нет поля HP** ни у одного предмета. Ориентир —
|
||
шкала 0…100 (ремонт = ровно 20 % рецепта), значит камень выдерживает ~333 удара
|
||
по дереву. ❌ Точное значение официально не подтверждено.
|
||
- **Урон по постройкам:** камнем **лоза ломается с одного удара** (HP лозы 10 = урон
|
||
камня 10). На дерево нужно 37 камней (370 камней-ресурса), на камень — 74,
|
||
на лист — 295, на броню — 589. ✅ О (HP) + С (расчёт)
|
||
Числа «9 / 0.2 / 0.1» из старой версии плана — **неверны** (см. 1.9).
|
||
|
||
**Сколько ударов на ресурс (реально):**
|
||
|
||
| ресурс | ресурса в узле | камень | каменная кирка | каменный топор |
|
||
|---|---|---|---|---|
|
||
| дерево | ~500 дерева | ~50 ударов | — | ~25–28 ударов |
|
||
| узел камня | 750 Stones | ~150 ударов | ~47 ударов | — |
|
||
| узел металла | 500 Metal Ore | ~100 ударов | ~31 удар | — |
|
||
| узел серы | 200 Sulfur Ore | ~40 ударов | ~13 ударов | — |
|
||
|
||
### 1.2 Верстак (Workbench) — 3 уровня
|
||
|
||
**Разворачиваемый предмет:** ставится на землю, нужно **стоять рядом**, чтобы крафтить.
|
||
|
||
**Верстак — станция крафта с требованием уровня.** Уровень верстака = минимальный уровень,
|
||
на котором рецепт доступен: предмет уровня 1 крафтится на верстаке 1 (и на любом более
|
||
высоком), уровня 2 — только на верстаке 2 и выше, и так далее. Знание рецепта добывается
|
||
отдельно — столом исследований (п. 1.3) либо тех-деревом верстака (в оригинале есть,
|
||
у нас не делаем).
|
||
|
||
| уровень | рецепт | где крафтится | время крафта |
|
||
|---|---|---|---|
|
||
| **L1** | 500 Wood + 100 Metal Fragments | без верстака | 30 с / 15 с (L1) / 7 с (L2, L3) |
|
||
| **L2** | 500 Metal Fragments + 20 High Quality Metal + **5 Basic Blueprint Fragment** | верстак 1 | 45 с (L1) / 22 с (L2) / 11 с (L3) |
|
||
| **L3** | 1000 Metal Fragments + 100 High Quality Metal + **5 Advanced Blueprint Fragment** | верстак 2 | 60 с (L2) / 30 с (L3) |
|
||
|
||
✅ Скрапа в рецептах **нет** (убрали 06.11.2025), вместо него у T2/T3 **фрагменты
|
||
чертежей** (02.10.2025).
|
||
|
||
**Фрагменты чертежей** (для T2/T3):
|
||
- **Basic**: всегда в зелёных головоломках (x1) и в синих головоломках рядом с красным
|
||
ключом (x2), на всех средних и крупных монументах, в аирдропах; шанс — военный ящик,
|
||
большой подводный ящик, мусорные учёные, металлоискание у дороги;
|
||
- **Advanced**: гарантированно в хакбоксах, 1 шанс из 10 в элитных ящиках, всегда парами;
|
||
Launch Site, Military Tunnels, Nuclear Missile Silo, Underwater Labs, Small/Large
|
||
Oilrigs, Cargoship, CH47-дроп;
|
||
- конвертация: **20 Basic → 1 Advanced**.
|
||
|
||
✅ (10.2025) Для нас это **гейт прогрессии T2/T3**: решение — повторяем (нужны «монолиты»
|
||
с лутом) или заменяем скрапом — в п. 5.
|
||
|
||
**Время крафта:** *«Using a higher tier Workbench than required results in a shortened
|
||
crafting time of 50% less for the immediate next tier and caps at 75% less for the second
|
||
tier above»* — **+1 уровень → −50 %, +2 уровня → −75 %** (дальше потолок), отсчёт от
|
||
**требуемого** уровня. Чтобы разгонка действовала на всю очередь, надо **оставаться
|
||
в радиусе** верстака. ✅
|
||
|
||
**Формула для реализации** (проверена на 589 предметах, 0 расхождений):
|
||
|
||
```
|
||
craftTime(tier) = max( floor( base × 0.5 ^ min( max(tier − requiredTier, 0), 2 ) ), 1 )
|
||
```
|
||
|
||
`base` — время на **требуемом** уровне верстака. Три уровня выше не дают ничего: T3
|
||
не быстрее T2 для предметов, требующих не выше L1.
|
||
|
||
**Кто что открывает** — по каждому предмету указано в п. 1.7 (уровень верстака).
|
||
|
||
### 1.3 Стол исследований (Research Table) и чертежи (Blueprints)
|
||
|
||
**Сам стол:** 200 Metal Fragments + 20 Scrap, крафтится **на верстаке 1**, время
|
||
30 с (L1) / 15 с (L2) / 7 с (L3). ✅
|
||
|
||
**Как исследуют:** кладёшь **один** нужный предмет в верхний слот → показывается требуемый
|
||
скрап (в нижний слот) → кнопка «Research» → **10 секунд** → в верхнем слоте появляется
|
||
**чертёж**, **предмет уничтожается**. 🟡
|
||
_(вся механика исследования — только по community-вики; официальная вики её не описывает)_
|
||
|
||
- Прочность предмета на результат не влияет (если предмет не сломана — иначе не работает). 🟡
|
||
- Исследование **продолжается**, если закрыть интерфейс стола. 🟡
|
||
- Звук слышно рядом. 🟡
|
||
- Скрапа тратится ровно нужное количество, остаток остаётся в нижнем слоте. 🟡
|
||
|
||
**Результат — физический чертёж** (предмет Research Paper / Blueprint): его можно
|
||
**изучить** (чертёж уничтожается, рецепт открывается навсегда) или **отдать / продать**
|
||
другому игроку; выученные чертежи переживают смерть и вайп. 🟡
|
||
Официальная вики подтверждает косвенно: предмет `researchpaper` — *«Use this item in a
|
||
Research Bench to create blueprints of items»*. ✅
|
||
|
||
**Цена исследования — по редкости предмета** (после «Pivot Or Die», 06.11.2025):
|
||
|
||
| редкость | скрап | сколько предметов |
|
||
|---|---|---|
|
||
| Common | **15** | 144 |
|
||
| Uncommon | **30** | 133 |
|
||
| Rare | **60** | 96 |
|
||
| Very Rare | **120** | 212 |
|
||
|
||
✅ О (разобран весь реестр, 585 исследовабельных предметов) До 06.11.2025 шкала была
|
||
**20 / 75 / 125 / 500** — это и есть цифры из прошлой версии плана; они устарели на одно
|
||
обновление. Шкалы «по тирам предмета» в Rust **нет**: цена привязана к редкости, а не к
|
||
уровню верстака.
|
||
|
||
**Тех-дерево верстака** (в оригинале есть, у нас **не делаем** — оверхед): разблокировка
|
||
прямо в верстаке, по веткам. На 06.11.2025 **тех-дерево бесплатно** — в «Pivot Or Die»
|
||
убрали «tech tree tax», так что платить за разблокировку в нём не нужно; 15/30/60/120 —
|
||
это цена **физического чертежа** на столе исследований. Колонка «125 / 250 / 500» в вике —
|
||
**устаревшая** (это старый налог тех-дерева по уровню верстака, снят 06.11.2025). ✅ О-нов
|
||
|
||
**Монументы:** официально задокументирован только **Outpost** (Workbench L1 + Research
|
||
Table). По community-вике столы есть также на аэродроме, электростанции, спутниковой
|
||
тарелке, в супермаркете, в Military Tunnel и на Launch Site. 🟡 Разницы в поведении
|
||
(стоимость, длительность) **нигде не задокументировано** — считать такую же. ❌
|
||
|
||
**Кому что передаётся:** физический чертёж — передаваемый предмет; разблокировка из
|
||
тех-дерева — **личная, не передаётся**. ✅ О + С
|
||
|
||
**Эксперимент на верстаке** (75 / 300 / 1000 скрапа → случайный чертёж) — механика
|
||
2017–2020 годов, заменена тех-деревом в декабре 2020. **Не реализуем.** ❌
|
||
|
||
### 1.4 Скрап (Scrap)
|
||
|
||
- **Не из построек.** Скрап выпадает из **ящиков и бочек**, аирдропов, учёных и
|
||
андроидов; разрушение построек скрапа **не даёт**. ✅ О (раздел Loot Sources)
|
||
- **Не крафтится** (Craftable: False). ✅ О
|
||
- **В рецептах верстаков скрапа нет** (убрали 06.11.2025). Тратится на исследование
|
||
(15/30/60/120) и на разблокировку в тех-дереве. ✅ О-нов
|
||
- Основные источники (О): базовый ящик 3, синий и жёлтый бочонок 2, военный ящик 8,
|
||
элитный 25, аирдроп 140–160, учёный 8–24.
|
||
- Косвенно: в Outpost можно обменять металл на скрап (1 скрап = 20 металла). 🟡
|
||
- Фрагменты чертежей скрап **не заменяют** — это отдельная валюта (п. 1.2).
|
||
|
||
### 1.5 Постройка баз (Rust)
|
||
|
||
**Как ставится.** Строительный план (Building Plan, **20 дерева**, крафт 15 с) —
|
||
разворачиваемый предмет: кладёшь в хотбар, ПКМ открывает колесо конструкций, выбираешь
|
||
объект, видишь «призрак»; **ПКМ + движение мышью** перебирает варианты, **ЛКМ** ставит.
|
||
✅ План ставит **только лозу**; все старшие уровни получаются **улучшением молотком**. ✅
|
||
|
||
**Два слоя объектов:**
|
||
|
||
- **Строительные**: квадратный и треугольный фундамент, ступени на фундаменте,
|
||
квадратный и треугольный пол, рамка пола, стена, полустена, низкая стена,
|
||
**малый дверной проём**, **большой проём (wall frame)**, окно, крыша, лестница, рампы.
|
||
- **Внутренние**: двери, верстаки, печи, сундуки, торговый автомат, шкаф,
|
||
инструментальный шкаф, замки.
|
||
|
||
> ❌ **Столбов (колонн) в Rust нет** — их убрали в обновлении 196 (01.02.2018). Правила
|
||
> «столбы ставят до стен», «под столбом должен быть фундамент», «на втором этаже столбы
|
||
> должны быть снизу» — **мёртвые**, из плана выкидываем.
|
||
|
||
**HP по уровням** — одинаково для всех деталей уровня: 🟡 (игровые зеркала, официальной
|
||
вики по базовым блокам нет вовсе)
|
||
|
||
| уровень | HP |
|
||
|---|---|
|
||
| Twig (лоза) | **10** |
|
||
| Wood (дерево) | **250** |
|
||
| Stone (камень) | **500** |
|
||
| Sheet Metal (лист) | **1000** |
|
||
| Armored (броня) | **2000** |
|
||
|
||
**Стоимость детали по уровням.** Лоза платится деревом; **улучшение молотком стоит как
|
||
целевой уровень** (лоза→камень = столько же камней, сколько дерево→камень); понизить
|
||
уровень нельзя.
|
||
|
||
| деталь | Twig (дерево) | Wood (дерево) | Stone (камни) | Sheet Metal (металл) | Armored (ХМ) |
|
||
|---|---|---|---|---|---|
|
||
| стена, фундамент, полустена, лестница | 50 | 200 | 300 | 200 | 25 |
|
||
| треугольный фундамент, ступени, пол, рамка пола, треугольный пол, рамка треугольного пола, низкая стена, большой проём, крыша, рампы | 25 | 100 | 150 | 100 | 13 |
|
||
| малый дверной проём, окно | 35 | 140 | 210 | 140 | 18 |
|
||
|
||
Скрап и ХМ в постройке не участвуют (кроме армированного уровня — там ХМ).
|
||
|
||
**Двери и замки:**
|
||
|
||
| предмет | HP | крафт | верстак | цена физического чертежа |
|
||
|---|---|---|---|---|
|
||
| деревянная дверь | **200** | 300 дерева | — | 120, известен по умолчанию |
|
||
| деревянная двойная | **200** | 350 дерева | — | 60, известен по умолчанию |
|
||
| листовая дверь | **250** | 150 металла | — | 60, известен по умолчанию |
|
||
| листовая двойная | **250** | 200 металла | — | 120, известен по умолчанию |
|
||
| **бронедверь** | **1000** | 20 ХМ + 5 шестерён | **L3** | 120, нужен чертёж |
|
||
| бронедвойная | **1000** | 25 ХМ + 5 шестерён | **L3** | 120, нужен чертёж |
|
||
| гаражные ворота | **600** | 300 металла + 2 шестерни | **L2** | 30, нужен чертёж |
|
||
|
||
⚠️ Есть конфликт источников: fandom даёт бронедверь 800 HP, игровые зеркала — **1000**.
|
||
Берём 1000.
|
||
|
||
- **Мешковый баррикад (Sandbag):** 200 HP, 100 камней + 10 ткани, верстак 1, стек 10.
|
||
✅ (на 06.11.2025; в 10.2026 его переделали — за пределами нашего среза)
|
||
- **Кодовый замок:** 100 металла, 4 цифры, 30 с, без верстака, известен по умолчанию.
|
||
✅ (в плане было верно) Неверный код даёт урон током; 10⁴ комбинаций; снять нельзя.
|
||
- **Ключевой замок:** 75 дерева, 15 с, без верстака, известен по умолчанию. Ключ
|
||
не крафтится — выдаётся замком.
|
||
- Оба замка ставятся на: одиночные и двойные двери, гаражные ворота, витрины, люки,
|
||
сундуки, инструментальный шкаф, ворота клетки, сетка-фенси, внешние ворота. ✅
|
||
|
||
**Инструментальный шкаф (Tool Cupboard):** 1000 дерева, 30 с, без верстака, HP 100.
|
||
Разблокирует постройку в радиусе: **официальная вика — 50 м** («only you can build in a 50
|
||
meter radius of it»), радиус «проецируется фундаментами», а не точкой шкафа.
|
||
⚠️ **Конфликт**: вики 2020 г. в статье Building даёт **16 м от фундамента** и прямо
|
||
называет «50 meter radius» в инфобоксе **долгой ошибкой вики**. Берём 50 м (официальная
|
||
вика), но помечаем как спорное. ✅/⚠️
|
||
Блокирует и постройку, и предметы (спальники, сундуки) внутри. Аптейп — **доля от
|
||
стоимости постройки**, списывается раз в **24 ч**; уничтоженный шкаф съедает до 24 ч
|
||
аптейпа. ✅ Неавторизованные могут ставить **лозовые полы и деревянные лестницы**, всё
|
||
остальное — «BUILDING BLOCKED». ✅ (в плане было верно)
|
||
|
||
**Гниение (decay):** когда аптейп кончился: лоза **1 ч**, дерево **3 ч**, камень **5 ч**,
|
||
лист **8 ч**, броня **12 ч**. Внутри здания — **в 10 раз дольше** (деревянная дверь 30 ч,
|
||
листовая 80 ч, бронедверь 120 ч). Открытие/закрытие двери с замком сбрасывает таймер. 🟡
|
||
⚠️ В вики 2020 г. эти же числа стояли как **1 / 2 / 4 / 8 / 12 ч** — таймеры дерева и
|
||
камня перенастроили позже; берём современные (1/3/5/8/12), старые — как след
|
||
истории изменений.
|
||
|
||
**Прочность конструкции (stability):** при наведении с молотком виден процент
|
||
стабильности; если он упал в ноль, деталь ломается сразу при установке. Точные правила
|
||
поддержки второго этажа **официально не задокументированы**. ❌
|
||
|
||
**Куда можно строить:** почти везде; крутые склоны и неровная земля мешают, фундамент
|
||
ставят и под водой. 🟡
|
||
|
||
### 1.6 Инструменты: сбор, урон, износ
|
||
|
||
**Что значат три числа у пары «инструмент × ресурс»** (официальная вика, таблица Gather Rates):
|
||
**Gather Damage** — сколько ресурса снимает удар, **Bonus** — разброс этого количества
|
||
(±10 % для дерева и плоти, ±20 % для руды), **Condition Loss** — сколько прочности
|
||
инструмента уходит за удар.
|
||
|
||
| инструмент | цель | Gather Damage | Bonus | Condition Loss |
|
||
|---|---|---|---|---|
|
||
| **Камень** | дерево | 10 | 1 | 0.3 |
|
||
| | руда | 5 | 1 | 0.3 |
|
||
| | плоть | 10 (урон) | 1 | — |
|
||
| **Каменный топор** | дерево | 20 | 2 | 0.3 |
|
||
| | плоть | 10 | 1 | 0.3 |
|
||
| **Каменная кирка** | руда | 16 | 3.2 | 0.3 |
|
||
| | плоть | 10 | 1 | 1 |
|
||
| **Salvaged Hammer** | дерево | 20 | 2 | 0.5 |
|
||
| | руда | 20 | 4 | 0.5 |
|
||
| | плоть | 10 | 1 | 0.5 |
|
||
| **Salvaged Axe** | дерево | 50 | 5 | 0.3 |
|
||
| | плоть | 15 | 1.5 | 1 |
|
||
| **Salvaged Icepick** | руда | 50 | 10 | 0.3 |
|
||
| | плоть | 5 | 0.5 | 0.5 |
|
||
| **Salvaged Sword** | плоть | 10 | 1 | 0.5 |
|
||
| **Salvaged Cleaver** | плоть | 10 | 1 | 0.5 |
|
||
| **Топор (Hatchet)** | дерево | 30 | 3 | 0.3 |
|
||
| | плоть | 12 | 1.2 | 1 |
|
||
| **Кирка (металл)** | руда | 30 | 6 | 1 |
|
||
| | плоть | 5 | 0.5 | 1 |
|
||
| **Молот** | постройки | добычи нет | | |
|
||
|
||
✅ Перекрёстная проверка: вики 2020 г. (правка 2018–2020) даёт те же числа —
|
||
камень 10/5, каменный топор 20 по дереву, каменная кирка 16 по руде, топор 30, кирка 30,
|
||
Salvaged Axe 50, Icepick 50, Hammer 15 по дереву. Расхождений в самих значениях нет.
|
||
|
||
**Боевая статистика** (официальная вика): «урон» — базовый по торсу, «×2» — множитель
|
||
в голову, «темп» — секунд между ударами, «дальность» — максимум.
|
||
|
||
| инструмент | урон | в голову | темп | дальность | радиус |
|
||
|---|---|---|---|---|---|
|
||
| Камень | 10 | ×2 | 0.8 | 1.2 | 0.2 |
|
||
| Каменный топор | 15 | ×2 | 1.1 | 1.5 | 0.3 |
|
||
| Каменная кирка | 17 | ×2 | 1.1 | 1.5 | 0.3 |
|
||
| Каменное копьё | 35 | ×2 | 0.7 | 2.8 | 0.2 |
|
||
| Молот | 0 | — | 2.0 | 1.5 | 0.3 |
|
||
| Топор (Hatchet, металл) | 25 | ×2 | 1.1 | 1.5 | 0.3 |
|
||
| Кирка (металл) | 30 | ×2 | 0.7 | 1.5 | 0.3 |
|
||
| Булава (Mace) | 60 | ×2 | 0.5 | 1.5 | 0.3 |
|
||
| Длинный меч | 75 | ×2 | 0.5 | 1.5 | 0.3 |
|
||
| Salvaged Hammer | 40 | ×2 | 1.0 | 1.5 | 0.3 |
|
||
| Salvaged Axe | 40 | ×2 | 0.8 | 1.5 | 0.3 |
|
||
| Salvaged Icepick | 40 | ×2 | 0.8 | 1.5 | 0.3 |
|
||
| Salvaged Sword | 50 | ×2 | 0.8 | 1.5 | 0.3 |
|
||
| Salvaged Cleaver | 60 | ×2 | 0.5 | 1.5 | 0.4 |
|
||
| Дубинка (Bone Club) | 12 | ×2 | 1.4 | 1.5 | 0.2 |
|
||
|
||
**Урон по частям тела** (вики 2020 г., проверено современной вики по базовому урону):
|
||
камень **20/10/8/8**, каменный топор **27/15/12/12**, каменная кирка **35/17/13/13**.
|
||
Универсального правила **нет**: доли рук у разного оружия 0.63–1.0, ног 0.48–0.9.
|
||
Для нашей модели достаточно «голова ×2, торс ×1, руки/ноги — общая доля», но в Rust это
|
||
не так. 🟡
|
||
|
||
**Прочность:** официальной вики **нет поля HP** ни у одного предмета. Ремонт стоит
|
||
ровно 20 % рецепта → шкала 0…100 → камень (0.3 за удар) живёт ~333 удара по дереву,
|
||
кирка по плоти (1.0) — 100 ударов. ❌ Значение «100» — вывод из ремонта, не подтверждение.
|
||
|
||
**Сколько ударов на ресурс** (узел = 750 Stones / 500 Metal Ore / 200 Sulfur Ore,
|
||
дерево ≈ 500–700 дерева):
|
||
|
||
| инструмент | дерево | узел камня | узел металла | узел серы |
|
||
|---|---|---|---|---|
|
||
| Камень | ~50–70 | ~150 | ~100 | ~40 |
|
||
| Каменный топор | ~25–35 | — | — | — |
|
||
| Каменная кирка | ~60–120 (в вике 2020 — 5 дерева за удар) | ~47 | ~31 | ~13 |
|
||
| Топор (Hatchet) | ~17–23 | — | — | — |
|
||
| Кирка (металл) | ~50–70 | ~25 | ~17 | ~7 |
|
||
| Salvaged Axe | ~11–14 | — | — | — |
|
||
| Salvaged Icepick | ~50–70 | ~15 | ~10 | ~4 |
|
||
|
||
**Урон по постройкам:** официальной вики **нет** данных «урон инструмента по уровню
|
||
постройки». Есть HP блоков (п. 1.5) и расчёт «сколько инструментов надо взять» из
|
||
игровых зеркал: камнем лозу — **1 удар**, дерево — **37 камней**, камень — **74**,
|
||
лист — **295**, броню — **589**. Таблица «лоза 9, дерево 0.2, металл 0.1» — из
|
||
экспериментальной вики 2015–16, **не использовать**. ❌
|
||
⚠️ Логическая нестыковка: 250 HP / 10 урона = 25 ударов, а зеркала дают 37 — значит у
|
||
оружия есть множитель урона по постройкам, который **нигде не опубликован**. Для нас:
|
||
взять HP по п. 1.5 и решить модель урона самим (п. 5).
|
||
|
||
**Кого чем:** топоры и камень бьют по дереву, кирки — по руде, камень умеет и то
|
||
и другое, Salvaged Hammer — и дерево и руду. Мечи и тесаки — только по плоти: у них
|
||
на официальной вики нет строк Tree/Ore. ✅
|
||
|
||
**Броня** (официальная вика, таблица Protection). Слои: голова/торс/ноги — по 2 слота
|
||
(L1 — одежда, L2 — броня), руки и ступни — по одному; **оба слота дают защиту**.
|
||
|
||
| предмет | пули | ближний бой | укус | радиация | холод | взрыв |
|
||
|---|---|---|---|---|---|---|
|
||
| футболка | 10–15 % ⚠ | 10–15 % ⚠ | 4–5 % ⚠ | 3 % | 4–6 % ⚠ | — |
|
||
| рубашка, штаны | 15 % | 15 % | 3 % | 5 % | 8 % | — |
|
||
| hoodie | 20 % | 15 % | 23 % | 5 % | 34 % | — |
|
||
| bucket helmet | **20 %** | 50 % | 8 % | 4 % | 6 % | **8 %** |
|
||
| riot helmet | 25 % | 80 % | 13 % | 5 % | 6 % | **8 %** |
|
||
| костяной шлем / костяная броня | 25 % | 40 % | **13 %** | 4 % | — | **7 %** |
|
||
| heavy plate helmet | 90 % | 80 % | 13 % | 7 % | −17 % | ❓ |
|
||
| heavy plate jacket / pants | 75 % | 70 % | 12 % | 7 % | −17 % | ❓ |
|
||
| hazmat suit | 30 % | 30 % | 50 % | 50 % | 50 % | **30 %** |
|
||
| ninja suit | 25 % | 30 % | 50 % | 15 % | 50 % | 30 % |
|
||
| jumpsuit | 25 % | 40 % | 67 % | 4 % | — | 40 % |
|
||
|
||
⚠️ **В официальной вики колонка «взрыв» у брони содержит ошибки**: Bucket Helmet 50 %
|
||
(в игре 8 %), Riot Helmet 50 % (8 %), Bone Armor 40 % (7 %), Heavy Plate 100 % (17 %),
|
||
и «укус» у Bone Armor 67 % вместо 13 %. Верен только взрыв у Hazmat Suit (30 %).
|
||
❓ Heavy Plate: взрыв — fandom 8/12/12 %, rustclash 17/17/17 %, вики 100 % — **не
|
||
подтверждено**, брать 17 % как среднее или 12 % по fandom.
|
||
⚠️ Футболка: датированная вики (2018) даёт 10/10, современные источники — 15/15.
|
||
📅 Данные приведены на **06.11.2025**; 06.08.2026 bucket helmet бафнули (20 → 25 % пули,
|
||
8 → 13 % укус, крафт 35 → 20 металла) — это уже за пределами нашего среза.
|
||
|
||
Перекрёстная проверка (вики 2020 г.) сходится по существу: riot helmet 80 % ближний бой,
|
||
heavy plate helmet 90 % пули, hazmat 30/30; по футболке источники расходятся (10 % против 15 %).
|
||
|
||
### 1.7 Таблица: предмет → верстак → чертёж
|
||
|
||
**`bench`** — минимальный уровень верстака для крафта: 0 = крафтится без верстака,
|
||
1 / 2 / 3 = нужен верстак соответствующего уровня.
|
||
**«По умолчанию»** — рецепт открыт с начала игры (знать не нужно, чертёж не нужен).
|
||
**Чертёж** — цена физического чертежа на столе исследований (если рецепт не открыт
|
||
по умолчанию). Стол тратит 15 / 30 / 60 / 120 скрапа по редкости.
|
||
|
||
| предмет | bench | крафт | время | чертёж | по умолчанию |
|
||
|---|---|---|---|---|---|
|
||
| Камень (Rock) | 0 | 10 камня | 5 с | 120 | **да** |
|
||
| Каменный топор | 0 | 200 дерева + 100 камня | 15 с | 120 | **да** |
|
||
| Каменная кирка | 0 | 200 дерева + 100 камня | 15 с | 120 | **да** |
|
||
| Каменное копьё | 0 | 1 деревянное копьё + 20 камня | 10 с | 120 | **да** |
|
||
| Строительный план | 0 | 20 дерева | 15 с | 120 | **да** |
|
||
| Молот | 0 | 100 дерева | 15 с | — | да |
|
||
| **Верстак 1** | 0 | 500 дерева + 100 металла | 30 с | 60 | **да** |
|
||
| **Верстак 2** | 1 | 500 металла + 20 ХМ + **5 Basic Fragment** | 45 с | 30 | **да** |
|
||
| **Верстак 3** | 2 | 1000 металла + 100 ХМ + **5 Advanced Fragment** | 60 с | 30 | **да** |
|
||
| Стол исследований | 1 | 200 металла + 20 скрапа | 30 с | 60 | **да** |
|
||
| Инструментальный шкаф | 0 | 1000 дерева | 30 с | 120 | **да** |
|
||
| Верстак для ремонта | 1 | 125 металла | 30 с | 120 | **да** |
|
||
| Деревянная дверь | 0 | 300 дерева | 30 с | 120 | **да** |
|
||
| Двойная деревянная дверь | 0 | 350 дерева | 30 с | 60 | **да** |
|
||
| Листовая дверь | 0 | 150 металла | 30 с | 60 | **да** |
|
||
| Двойная листовая дверь | 0 | 200 металла | 30 с | 120 | **да** |
|
||
| Кодовый замок | 0 | 100 металла | 30 с | 120 | **да** |
|
||
| Ключевой замок | 0 | 75 дерева | 15 с | 120 | **да** |
|
||
| Топор (Hatchet) | 1 | 100 дерева + 75 металла | 30 с | 30 | нет |
|
||
| Кирка (Pickaxe) | 1 | 100 дерева + 125 металла | 30 с | — | нет |
|
||
| **Salvaged Hammer** | 1 | 1 металл. труба + 50 металла | 30 с | 30 | нет |
|
||
| **Salvaged Sword** | 1 | 1 металл. клинок + 15 металла | 30 с | 15 | нет |
|
||
| **Salvaged Cleaver** | 1 | 1 дорожный знак + 50 металла | 30 с | 30 | нет |
|
||
| **Salvaged Axe** | 2 | 1 металл. труба + 5 металл. клинков | 30 с | 60 | нет |
|
||
| **Salvaged Icepick** | 2 | 1 металл. труба + 5 металл. клинков | 30 с | 60 | нет |
|
||
| Металлический клинок | 2 | — | 1 с | 30 | нет |
|
||
| Шестерни | 3 | — | 1 с | 60 | нет |
|
||
| Металлическая труба | 3 | — | 1 с | 60 | нет |
|
||
| Металлическая пружина | 3 | — | 1 с | 60 | нет |
|
||
| Большая печь | 2 | 600 дерева + 500 камня + 75 топлива | 40 с | 60 | нет |
|
||
| Гаражные ворота | 2 | 300 металла + 2 шестерни | 30 с | 30 | нет |
|
||
| Автотурель | 2 | — | 45 с | 120 | нет |
|
||
| **Бронедверь** | 3 | 20 ХМ + 5 шестерён | 30 с | 120 | нет |
|
||
| Бронедвойная дверь | 3 | 25 ХМ + 5 шестерён | 30 с | 120 | нет |
|
||
| **Взрывчатка** (Explosives) | 3 | — | 5 с | 120 | нет |
|
||
| **Timed Explosive Charge** (C4) | 3 | — | 30 с | 120 | нет |
|
||
|
||
✅ (вики на 11.2025). «По умолчанию» = рецепт открыт без чертежа — **для нас это значит
|
||
«не исследуется»** (см. правило в шапке раздела).
|
||
|
||
**Что НЕ существует** (в плане раньше было — убрано):
|
||
`Salvaged Hatchet`, `Salvaged Pick Axe`, `M16` (есть LR-300), `Doorway (small)` как предмет,
|
||
`Oil Refinery` (есть только Small Oil Refinery), `Refrigerator` (есть Fridge),
|
||
`Metal Gear` (есть Gears), `Shooting Range` (есть Reactive Target).
|
||
|
||
**Ресурсы** (дерево, камни, металл, ХМ, сера, скрап, ткань, кожа) не крафтятся, а
|
||
собираются — рецепта нет вовсе.
|
||
|
||
### 1.8 Строительные объекты и сокеты
|
||
|
||
**Объекты** (набор одинаков для всех уровней): квадратный фундамент, треугольный
|
||
фундамент, ступени на фундаменте, квадратный пол, треугольный пол, рамка пола, стена,
|
||
полустена, низкая стена, **малый дверной проём (Doorway)**, **большой проём (Wall Frame)**,
|
||
окно, крыша, лестница, рампы. Столбов нет (п. 1.5).
|
||
|
||
**Сокеты** — что к чему присоединяется (из игровых данных, rusthelp): ✅
|
||
|
||
| сокет | что в него входит |
|
||
|---|---|
|
||
| **Малый дверной проём** (Doorway) | одиночная дверь (деревянная / листовая / бронедверь), торговый автомат |
|
||
| **Большой проём** (Wall Frame) | двойные двери (деревянные / листовые / броневые), гаражные ворота, сетка-фенси, ворота клетки, стена клетки, витрина, металлическая витрина, сетка (netting) |
|
||
| **Окно** | оконные решётки (дерево / металл / усиленные), укреплённое и закалённое стекло, ставни, бойницы (горизонтальные и вертикальные) |
|
||
| **Рамка пола** (Floor Frame) | решётка пола, люк (Ladder Hatch), бронированный люк |
|
||
|
||
**Проёмы двух видов:** малый (Doorway) — влезает **только одиночная** дверь; большой
|
||
(Wall Frame) — влезают **двойные двери и гаражные**, но **не одиночные**. ✅ (в плане
|
||
было верно)
|
||
|
||
**Снаппинг строительных деталей** (общее правило из вики): стены ставятся к **краю
|
||
фундамента**, полы — к **верхней кромке стены**, двери — **внутрь дверного проёма**.
|
||
Правило из вики дословно: *«To place walls, select them and aim at the edge of a
|
||
foundation. Floors must be placed at the top edge of a wall, and doors must be placed
|
||
inside door frames.»* 🟡
|
||
|
||
**Свободное размещение:** строительные детали садятся **по сетке** (фундамент 3×3),
|
||
привязка есть только у внутренних блоков — к уже поставленным строительным.
|
||
❌ Старая формулировка плана «ставятся свободно, не по сетке мира» — неверна.
|
||
|
||
### 1.9 Сверка данных (что сошлось и что не сошлось)
|
||
|
||
**Сошлось:**
|
||
|
||
| проверка | результат |
|
||
|---|---|
|
||
| сумма цен исследования по редкости | 144 + 133 + 96 + 212 = **585** исследовабельных предметов — совпадает с разобранным реестром ✅ |
|
||
| сумма тех-дерева | 87 + 78 + 20 (верстаки) + 39 + 47 + 7 (Eng-верстак) = **278** ✅ |
|
||
| сумма уровней верстаков | 269 + 167 + 131 + 27 = **594** крафтбельных с указанным уровнем ✅ |
|
||
| узел камня ÷ камень | 750 Stones ÷ 10 за удар = **75 камней** на узел; 750 ÷ 5 = 150 ударов ✅ |
|
||
| узел ÷ каменная кирка | 750 ÷ 16 = **47 ударов** ✅ |
|
||
| дерево ÷ камень | ~500–700 дерева ÷ 10 = **50–70 ударов** ✅ |
|
||
| расход прочности | камень: 150 ударов × 0.3 = 45 прочности на узел камня (шкала 100 → ~2 узла на камень) ✅ правдоподобно |
|
||
| прогрессия уровней постройки | HP 10 → 250 → 500 → 1000 → 2000 при цене 50 → 200 → 300 → 200 → 25 — растёт по HP, стоимость листа дешевле камня (но нужна переплавка) ✅ |
|
||
| двери | дерево 200 HP / 300 дерева, лист 250 / 150 металла, броня 1000 / 20 ХМ ✅ |
|
||
| формула времени крафта | 589 предметов, 0 расхождений с формулой п. 1.2 ✅ |
|
||
|
||
**Не сошлось (требует решения проекта, п. 5):**
|
||
|
||
| расхождение | цифры |
|
||
|---|---|
|
||
| урон по постройкам | 250 HP ÷ 10 урона = 25 ударов, а калькулятор рейда даёт 37 → есть ненулевой множитель урона по постройкам, который не опубликован |
|
||
| радиус шкафа | 50 м (официальная вика) против 16 м (старая вики) |
|
||
| HP броневой двери | 1000 (зеркала) против 800 (fandom, 2020) |
|
||
| таймеры гниения | 1/3/5/8/12 ч против 1/2/4/8/12 ч (2020) |
|
||
| таблица «урон по постройкам» 2018 г. | лоза 9 / дерево 0.2 / металл 0.1 — не публикуется современной викой и не сходится с калькулятором |
|
||
| скрап на исследование | вики до 06.11.2025 давала плоские 20/75/125/500; после обновления — 15/30/60/120 **по редкости**, а не по уровню верстака. У нас нет ни ящиков с лутом по тирам, ни «редкости» предмета — тиры придётся задавать вручную |
|
||
|
||
**Как перепроверять:** страница предмета `wiki.facepunch.com/rust/item/<id>` даёт блоки
|
||
**Craft** (рецепт, требование верстака, «Craft Time by Workbench»), **Research** (цена
|
||
физического чертежа + приписка «known by default»), **Weapon Stats** и **Gather Rates**.
|
||
Состояние страницы на дату — через `~history` / `~diff:<revision>`; для эпохи до
|
||
03.12.2020 — через MediaWiki API fandom с `rvstart`/`rvdir=older`; резерв — Wayback.
|
||
|
||
## 2. Решения по проекту
|
||
|
||
### 2.1 Кто такой админ
|
||
|
||
**Админ — свойство конкретного сервера, а не проекта.** Проект коммьюнити-френдли:
|
||
в разных серверах разные роли и разные права. Роль приходит из лаунчера
|
||
(у лаунчера есть `server/roles.py` и роли `ROLE_USER / ROLE_PASS_HOLDER / ROLE_MODERATOR /
|
||
ROLE_ELDER / ROLE_CREATOR`).
|
||
|
||
### 2.2 Кто что может ставить и ломать
|
||
|
||
Правило на **блоке/предмете** (тег `admin`):
|
||
|
||
| тег `admin` | кто может ставить/ломать/менять |
|
||
|---|---|
|
||
| **нет** | **кто угодно**, включая обычных игроков |
|
||
| **есть** | **только админы сервера** |
|
||
|
||
- Тег `admin` есть, например, у «тестблока» и у всего, что не добавлено в
|
||
крафт/изучение/дроп.
|
||
- **Режим креатива не даёт прав.** Даже игрок в креативе без админки не может поставить
|
||
или сломать блок с тегом `admin`.
|
||
- Проверка — **на сервере**. Клиент только показывает или не показывает курсор.
|
||
|
||
### 2.3 Ванильные блоки игры
|
||
|
||
Мир (карта, монолиты, рельеф) — **не ломается и не строится обычными игроками**:
|
||
это работа админов. Игроки строят **нашими кастомными** предметами через наш API.
|
||
|
||
### 2.4 Предметы
|
||
|
||
- Все предметы игрока — **кастомные, через наш код и наше API** (не ванильные `ItemStack`).
|
||
- У предмета: **прочность**, **урон**, **значение bench**, **знание по умолчанию**.
|
||
- `bench` — **минимальный уровень верстака**, на котором рецепт доступен
|
||
(0 = крафтится без верстака, 1/2/3 = нужен верстак этого уровня или выше).
|
||
Это **гейт крафта, а не знания** — в Rust это разные вещи.
|
||
- `knownByDefault` — рецепт открыт с начала игры: **не исследуется, скрап не нужен**
|
||
(по вики такую пометку имеют 97 предметов из 380 с указанным уровнем верстака).
|
||
- Знание рецепта — **состояние игрока** (`knownRecipes`), а не свойство предмета.
|
||
- У предмета есть **класс инструмента** (NONE / PICKAXE / AXE / SWORD / …) и
|
||
**класс ресурса**, который он добывает.
|
||
- Все числа берём из п. 1.6–1.7 (срез 06.11.2025), ничего не выдумываем.
|
||
|
||
### 2.5 Крафт
|
||
|
||
- Как в Rust (срез 06.11.2025): **верстаки трёх уровней** (разворачиваемый предмет,
|
||
надо стоять рядом) и **чертежи** (стол исследований: нужен найденный предмет + скрап;
|
||
получается физический чертёж, который изучается и открывает рецепт).
|
||
- **Тех-дерево верстака и эксперимент на верстаке не делаем** — это оверхед (п. 1).
|
||
- Знание рецепта — **состояние игрока**, а не свойство предмета.
|
||
- Время крафта, множитель от уровня верстака, стоимость скрапа — как в Rust.
|
||
- То, что игрок получает **на старте**, не исследуется вообще.
|
||
|
||
### 2.6 Структуры вместо блоков мира
|
||
|
||
Руда, деревья и камни — **не блоки мира, а разрушаемые объекты** (как узлы в Rust):
|
||
у них есть прочность, они бьются инструментом и дают дроп. Мир меняют только админы.
|
||
|
||
### 2.7 Текстуры
|
||
|
||
- Текстуры предметов пока **временные**, взяты из ремейка как заглушки.
|
||
- **Пометка: заменить на свои** (см. п. 6).
|
||
|
||
---
|
||
|
||
## 3. Архитектура
|
||
|
||
### 3.1 Модули
|
||
|
||
| модуль | про что | лицензия |
|
||
|---|---|---|
|
||
| `rsx-client` | загрузчик модов, API модов, хуки в клиент | MIT |
|
||
| `rsx-protocol` | формат провода, общий словарь (блоки, формат чанка) | MIT |
|
||
| `rsx-plugin-api` | **API серверного контента**: события, реестр предметов, рецепты, роли | MIT (пустой, следующий) |
|
||
| `rsx-server-core` | тик-луп, мир, сущности, масштабирование | proprietary |
|
||
| `rsx-auth` | свои аккаунты сервера (когда лаунчер не настроен) | proprietary |
|
||
|
||
### 3.2 Провод
|
||
|
||
- Кадр: `magic "RSX1"`, версия, id пакета, длина, тело.
|
||
- Рукопожатие: `Hello → HelloAck → Auth|LauncherAuth → AuthAck → Login → LoginAck`.
|
||
- **Вход через лаунчер:** клиент отдаёт токен лаунчера, сервер спрашивает лаунчер
|
||
`POST /auth/validate` (у лаунчера такой эндпоинт есть, он же проверяет бан) →
|
||
если «свой» — выдаёт свой игровой токен.
|
||
- Игровая фаза: `JoinWorld → WorldJoin`, `ChunkData`, `BlockChange`, `PlayerMove`,
|
||
`EntitySpawn/Move/Remove`, `BreakProgress`, `SetGameMode`, `Inventory`, `Ping/Pong`.
|
||
|
||
### 3.3 Мир
|
||
|
||
- Чанк 16×16×256, **палитра по секциям** (4 бита на блок) — плоский массив не годится:
|
||
62 500 чанков × 64 КБ = 4 ГБ.
|
||
- Лежат **регионами на диске** (32×32 чанка в файле), в памяти — LRU-кэш.
|
||
- Генерация — чистая функция от зерна и координат (детерминизм обязателен: чанк может
|
||
прийти через месяц после соседнего).
|
||
- Сгенерированный чанк **не пишется на диск**: террейн восстанавливается генератором.
|
||
На диск уходит только то, во что построили.
|
||
|
||
### 3.4 Что взято из Paper/Bukkit (как образец)
|
||
|
||
| у Paper | зачем нам | у нас |
|
||
|---|---|---|
|
||
| `BlockBreakEvent` (cancellable, `setDropItems`) | сервер решает, ломается ли блок и что падает | `BreakEvent`: `cancelled`, `drops` |
|
||
| `BlockPlaceEvent`, `PlayerInteractEvent` | кто что нажал | `InteractEvent` (левая/правая), `PlaceEvent` |
|
||
| `ItemMeta` + `PersistentDataContainer` | свои данные на предмете | `ItemStack` + `ItemData` (ключ→значение) |
|
||
| `PlayerInventory` / `InventoryClickEvent` | инвентарь, хотбар, защита от дюпа | свой `Inventory` + проверки на сервере |
|
||
| `Permissible` / роли | «мир только для админов» | роли сервера, тег `admin` у блоков |
|
||
| `ShapedRecipe` / `ShapelessRecipe` | рецепты | свой реестр **с гейтом по чертежу и верстаку** (в Paper такого нет) |
|
||
|
||
Чего у Paper нет, а нужно нам: гейт крафта по изученности, прочность/урон/сбор по
|
||
классам ресурсов, **структуры вместо блоков мира**.
|
||
|
||
---
|
||
|
||
## 4. План работ
|
||
|
||
Каждый шаг — законченный кусок, который можно проверить. Порядок важен.
|
||
|
||
### Шаг A. Фундамент предметов и инвентаря (следующий)
|
||
|
||
- [ ] `ItemType`: id, имя, класс инструмента, класс ресурса, прочность, урон по частям тела,
|
||
скорость сбора, `bench`, `knownByDefault`, рецепт.
|
||
- [ ] **Данные предметов — из п. 1.6/1.7** (срез 06.11.2025): держать отдельным
|
||
ресурсом/таблицей, чтобы числа не расходились с планом.
|
||
- [ ] Модель знания: `knownByDefault` у типа + `knownRecipes` у игрока; стол исследований
|
||
выдаёт физический чертёж, изучение открывает рецепт навсегда (п. 1.3).
|
||
- [ ] `ItemStack`: тип + количество + прочность + `ItemData` (свой ключ→значение).
|
||
- [ ] `Inventory`: слоты, хотбар, что в руках. **Сервер — источник истины.**
|
||
- [ ] Реестр предметов + протокол `Inventory` / `InventorySlot`.
|
||
- [ ] Клиент: свой реестр + свои текстуры + свой рендер предмета в руке и в слоте
|
||
(наши предметы не ванильные `IItem`).
|
||
- [ ] **Текстуры предметов — временные** (взяты из ремейка как заглушки).
|
||
**ПОМЕТКА: заменить на свои.**
|
||
- [ ] Стартовый набор: **камень** — решение проекта (в Rust официально не документировано,
|
||
п. 1.1); выдаём в первый слот хотбара, отдельным флагом конфига.
|
||
|
||
Критерий готовности: игрок заходит, получает камень в руку, видит его в хотбаре и в руке;
|
||
сервер знает, что у него в руках.
|
||
|
||
### Шаг B. Ломание и установка — решает сервер
|
||
|
||
- [ ] Протокол: `Dig` (START/STOP, позиция, грань) **вместо** «клиент присылает результат»;
|
||
`BreakProgress` (0..9) — трещины у всех.
|
||
- [ ] Сервер: состояние ломания по образцу `PlayerInteractionManager`
|
||
(`PlayerInteractionManager.java:79 updateBlockRemoving`, `:124 onBlockClicked`,
|
||
`:216 tryHarvestBlock`): прогресс по твёрдости блока и скорости инструмента,
|
||
рассылка прогресса, досягаемость, роль/тег `admin`.
|
||
- [ ] Правило из ваниллы: **меч в креативе блок не ломает**
|
||
(`PlayerInteractionManager.java:217`).
|
||
- [ ] **Клиент ничего не решает:** 4 патча (`Minecraft.clickMouse` → свой `Dig`,
|
||
`Minecraft.sendClickBlockToController` → состояние кнопки,
|
||
`PlayerControllerMP.clickBlock` → клиент не ломает сам,
|
||
`EntityRenderer.isDrawBlockOutline` → контур только там, где можно).
|
||
|
||
Критерий готовности: зажатая кнопка ломает **один** блок; блок с тегом `admin` обычному
|
||
игроку не ломается ни в выживании, ни в креативе; у остальных — ломается инструментом
|
||
того класса, который нужен.
|
||
|
||
### Шаг C. Структуры, узлы, постройка
|
||
|
||
- [ ] `StructureTemplate` (блоки + AABB + меш + HP + дроп), `StructureInstance`,
|
||
`StructureWorld`. Деревья/камни/руда — **узлы**, не блоки мира.
|
||
- [ ] Сбор: попадание инструментом → урон по классу ресурса → разрушение → дроп.
|
||
Узлы: камень 750 Stones, металл 500 Metal Ore, сера 200 Sulfur Ore; добыча за удар
|
||
и потеря прочности — п. 1.6.
|
||
- [ ] Постройка: игрок ставит **наши** кастомные предметы-конструкции (не блоки мира).
|
||
Снаппинг и сокеты — п. 1.5 и 1.8; HP и цены по уровням — п. 1.5;
|
||
аптейп инструментального шкафа и гниение — п. 1.5.
|
||
- [ ] Растительность и руда в генерации — через шаблоны структур.
|
||
- [ ] Модель урона по постройкам — **решить до реализации** (п. 5): без множителя
|
||
«оружие → уровень постройки» рейд не считается.
|
||
|
||
### Шаг D. Мир один раз, конфиг, барьер
|
||
|
||
- [ ] Конфиг: `world.size` (сторона карты в блоках), `world.gamemode`, `world.seed`,
|
||
`world.generate`, `barrier.distance`.
|
||
- [ ] Мир генерится один раз и отдаётся; изменения игроков — отдельным слоем.
|
||
- [ ] Барьер: сервер не пускает; клиент рисует (прозрачность → 0.5 у границы,
|
||
блендинг с блоком под игроком в ±5 блоках, дальше размытие в невидимую стену).
|
||
|
||
### Шаг E. Транспорт на NIO (независим, можно раньше)
|
||
|
||
- [ ] `Selector` + неблокирующие `SocketChannel`, `ClientSession` → конечный автомат,
|
||
блокирующие места (HTTP к лаунчеру) — в пул потоков.
|
||
- [ ] Проверка: 49 существующих тестов идут по сокету и должны пройти без правок;
|
||
+ 100 одновременных соединений.
|
||
|
||
### Шаг F. DistantView
|
||
|
||
- [ ] Сервер шлёт LOD (высоты + цвет) по регионам; клиент кэширует **архивом** и
|
||
досылает недостающее.
|
||
- [ ] Рендер: квадродерево, **Hi-Z отсечение** (пирамида глубины), `uCamOffset`
|
||
(float не хватает на ±2000), зажим UV по мипам, свой шейдер GLSL 330.
|
||
|
||
---
|
||
|
||
## 5. Открытые вопросы
|
||
|
||
### 5.1 Решено (не обсуждаем заново)
|
||
|
||
| вопрос | решение |
|
||
|---|---|
|
||
| **Роли: из лаунчера или свои на сервере?** | **Свои на сервере.** Лаунчер может подсказать роль, но решение — за сервером: админ это свойство конкретного сервера, а не проекта |
|
||
| **Урон по частям тела** | По таблице п. 1.6: голова ×2, торс ×1, руки/ноги — своей долей у оружия. Общего «общего урона» не вводим |
|
||
| **Множитель урона по постройкам** | **Своя модель: ударов = HP постройки ÷ урон оружия.** Без скрытого множителя. Лоза (10 HP) от камня (10 урона) — 1 удар, дерево (250) — 25, камень (500) — 50, лист (1000) — 100, броня (2000) — 200. Зеркальные 37/74/295/589 — не воспроизводим, но и не мешают: считаем от HP |
|
||
| **Бронедверь** | **1000 HP** (игровые зеркала; fandom 800 — устарело) |
|
||
| **Прочность инструментов** | **Шкала 0…100**, ремонт = 20 % рецепта (как в Rust, выведено из цены ремонта) |
|
||
| **Джунгли и биомы** | **Не делаем.** Мир один, без джунглевого лута (джунгли в игре появились 01.05.2025, за пределами нашего среза) |
|
||
| **Строительные детали и сетка** | Не «свободно и без сетки»: **сетка мира не важна**, но есть **строительная сетка** (фундамент 3×3) и привязка внутренних блоков к уже поставленным строительным. Слова «не привязываясь к сетке мира» — про сетку мира, не про строительную |
|
||
|
||
### 5.2 Нужно решение (блокирует реализацию)
|
||
|
||
1. **Крафт упирается в лутбоксы.** По п. 1.4 скрап падает **только** из ящиков, бочек, аирдропов и учёных, а чертёж требует **найденного** предмета. То есть без лутбоксов нельзя ни изучить рецепт, ни потратить скрап: прогрессия крафта не запускается.
|
||
Варианты:
|
||
- **(а)** перенести лутбоксы вперёд (они нужны раньше крафта);
|
||
- **(б)** первый срез без прогрессии: все рецепты «по умолчанию» (`knownByDefault`), стол исследований и скрап — позже, вместе с лутбоксами;
|
||
- **(в)** свой источник скрапа (например, из узлов) — но это уже не Rust.
|
||
2. **Фрагменты чертежей для верстаков 2 и 3** (5 Basic / 5 Advanced) — они тоже из лутбоксов. Повторяем или заменяем скрапом, как до 02.10.2025? Пока лутбоксов нет — вопрос отложен.
|
||
3. **Скрап как валюта** — если исследование только для найденных вещей, скрап нужен редко. Оставляем ли его в прогрессии вообще?
|
||
4. **Стоимость и время каждого рецепта**, который будем реализовывать — в п. 1.7 есть только по ключевым. Долить по мере надобности.
|
||
|
||
---
|
||
|
||
## 6. Как продолжить (для VPS и для другого агента)
|
||
|
||
### 6.1 Сборка и проверка
|
||
|
||
```powershell
|
||
rsx-protocol\scripts\build.ps1 # и test.ps1 (22 проверки)
|
||
rsx-server-core\scripts\build.ps1 # и test.ps1 (49 проверок)
|
||
rsx-client\scripts\build.ps1 # и test.ps1 (128 проверок)
|
||
game-fork\scripts\prepare-game.ps1 # пересобрать форк из ванильного jar (медленно)
|
||
game-fork\scripts\compile-game.ps1 # только компиляция форка (быстро)
|
||
```
|
||
|
||
**Порядок важен:** `rsx-protocol` → потом `rsx-server-core` (он компилируется
|
||
против `rsx-protocol\build\classes`) → потом `rsx-client` → потом форк.
|
||
Форк компилируется против `rsx-client\dist\rsx-loader.jar` и
|
||
`rsx-protocol\dist\rsx-protocol.jar` — если меняли протокол, пересобери его
|
||
**до** форка, иначе форк соберётся против старого jar.
|
||
|
||
### 6.2 Запуск
|
||
|
||
```powershell
|
||
rsx-server-core\scripts\run-server.ps1 -Port 25565
|
||
rsx-client\scripts\run-game.ps1 # клиент
|
||
```
|
||
|
||
Клиент для проверки: `--server 127.0.0.1 --port 25565` плюс токен лаунчера
|
||
(`--accessToken`, `--uuid`, `--username`).
|
||
|
||
### 6.3 Что не сделано (по порядку)
|
||
|
||
1. **Шаг A** — предметы, инвентарь, реестр, протокол инвентаря, рендер предмета
|
||
в руке и в слоте, стартовый камень.
|
||
2. **Шаг B** — `Dig`/`BreakProgress` в протоколе, состояние ломания на сервере,
|
||
правила инструмента, тег `admin`, 4 клиентских патча.
|
||
3. **Шаг C** — структуры (узлы), сбор, постройка по сокетам.
|
||
4. **Шаг D** — конфиг, мир 4000×4000 один раз, барьер.
|
||
5. **Шаг E** — транспорт на NIO.
|
||
6. **Шаг F** — DistantView.
|
||
|
||
### 6.4 Мелочи, которые легко упустить
|
||
|
||
- **Текстуры предметов — временные** (взяты из ремейка как заглушки). **ПОМЕТКА:
|
||
заменить на свои.** Ассеты ремейка обфусцированы: каждый файл **XOR-ится одним
|
||
байтом**, ключ = `файл[0] ^ 0x89` (у `rock.png` это 0x20). Декод:
|
||
`key = b[0] ^ 0x89; for (i) b[i] ^= key;`
|
||
- Пути: `G:\RustNotMC` (репозиторий), `G:\decompiled-rustex` (референс, только читать),
|
||
`G:\rustexremake` (исходники ремейка с ассетами).
|
||
- ⚠️ **`G:\decompiled-rustex` — НЕ источник фактов.** Он копиял community-вику 2017–2020
|
||
(отсюда шкала скрапа 20/75/125/500, «урон по постройкам» 9/0.2/0.1, списки верстаков
|
||
с перемешанными уровнями). Проверять числа по официальной вики Facepunch и по истории
|
||
её правок (рецепт запроса — в шапке раздела 1).
|
||
- Скрипты — **ASCII без BOM** (PS 5.1 читает без BOM в ANSI и ломает парсер).
|
||
- В PowerShell **нет heredoc**: сообщения коммитов пишем в файл и `git commit -F`.
|
||
- Класс-паттерн SSH: `git config core.sshCommand "ssh -i C:/Users/User/.ssh/id_ed25519_zernmc -o IdentitiesOnly=yes"`.
|
||
- Коммиты по-русски, комментарии в коде — по-английски.
|
||
- Тесты: `scripts\test.ps1` у каждого модуля, всё на голом JDK, без фреймворков.
|
||
|
||
### 6.5 Дописать в этот файл
|
||
|
||
- [x] Полные таблицы предмет→верстак (п. 1.2, 1.7) и предмет→скрап/чертёж (п. 1.3, 1.7).
|
||
- [x] Таблица сбора по классам ресурсов (п. 1.6).
|
||
- [x] Список строительных объектов с сокетами (п. 1.8) — пересобран по игровым данным.
|
||
- [ ] Что решили по ролям: из лаунчера или свои на сервере (вопрос в п. 5).
|
||
- [ ] Стоимость и время каждого рецепта, который будем реализовывать (пока есть по
|
||
ключевым предметам, п. 1.7).
|
||
- [ ] Завести в репозитории выгрузку данных оригинала **на дату 06.11.2025**
|
||
(страницы вики + история правок), чтобы цифры не разъезжались при перечитывании.
|
||
- [ ] Решить модель урона по постройкам (п. 5, п. 1.11) — без неё рейд не считается.
|
||
|
||
---
|
||
|
||
## Приложение. История правок этого файла
|
||
|
||
Отдельный разбор: что в прошлой версии плана было неверно и как это проверено. Сохранено,
|
||
чтобы правки не откатились и чтобы было видно, чему здесь верить.
|
||
|
||
### П.1 Разбор: что в прошлой версии этого файла было неверно
|
||
|
||
Сверка с эпохой **06.11.2025**.
|
||
|
||
| было в плане | как на самом деле | метка |
|
||
|---|---|---|
|
||
| Камень выдаётся первым в хотбаре при спавне | официально **не документировано**; по гайдам 2023–2025 — камень и фонарь. В вики 2020 г. Rock есть и он «Basic» | ❌ |
|
||
| Камень «не исследуется» | по сути **верно**: рецепт известен по умолчанию. Но цена физического чертежа — **120 скрапа** | ✅ |
|
||
| Урон по постройкам: лоза 9, дерево 0.2, металл 0.1, броня 0.1 | эти числа взяты **из вики 2018–2020 гг.** (страница Rock), ремейк их скопировал; современная вика их **не публикует**, и с игровым калькулятором рейда они не сходятся. Камнем лозу — **1 удар**, дерево — 37 камней | ⚠️ |
|
||
| Камень рубит дерево за 2 удара | **~50–70 ударов** (10 дерева за удар) | ✅ |
|
||
| Кирка копает руду за ~7 ударов | **~47 ударов** (16 руды за удар, 750 камней в узле) | ✅ |
|
||
| Кирка рубит дерево за 3 удара | в вики 2020 г. — 5 дерева за удар, это **~60–120 ударов** | ✅ |
|
||
| Дальность камня 1.25 | **1.2** | ✅ |
|
||
| Скрап по тирам 20 / 75 / 125 / 500 | на 06.11.2025 — **15 / 30 / 60 / 120** по редкости (редкость Common→Very Rare) | ✅ |
|
||
| «высокоскоростная стрела — 0 скрапа» | **15 скрапа** | ✅ |
|
||
| «Укреплённое стекло — 50» | Strengthened Glass Window — **30**, Reinforced Glass Window — **60** | ✅ |
|
||
| Скрап выпадает из построек | **нет**: только ящики, бочки, аирдропы, учёные | ✅ |
|
||
| Верстак 1: +50 скрапа в рецепте | **без скрапа** (убрали 06.11.2025) | ✅ |
|
||
| Верстак 2/3: 500 / 1250 скрапа | **фрагменты чертежей**: 5 Basic / 5 Advanced | ✅ |
|
||
| Всё крафтится 60 с | у каждого предмета **своё** базовое время; правило «+1 уровень → −50 %, +2 → −75 %» **верно** | ✅ |
|
||
| Верстаки надо исследовать | рецепты верстаков **известны по умолчанию** | ✅ |
|
||
| Эксперимент на верстаке 75 / 300 / 1000 | механика **2017–2020**, заменена тех-деревом 03.12.2020 | ❌ |
|
||
| Тех-дерево верстака (в плане отсутствовало) | в оригинале **есть** с 03.12.2020; у нас сознательно **не делаем** (оверхед) | ✅ |
|
||
| Salvaged Hatchet, Salvaged Pick Axe | таких предметов **нет** ни в 2020, ни сейчас | ❌ |
|
||
| M16 | M16 в Rust нет; ближайшее — **LR-300** | ❌ |
|
||
| «Холодильник», «шестерни», «мишень», «нефтезаводка» | **Fridge**, **Gears**, **Reactive Target**, **Small Oil Refinery** | ✅ |
|
||
| Лист (Sheet Metal) — без HP | **1000 HP** | 🟡 |
|
||
| Бронедверь 800 HP | **1000 HP** по игровым зеркалам; fandom даёт 800 | 🟡 |
|
||
| Дверь листовая 250 HP | **250** — подтверждено | ✅ |
|
||
| Кодовый замок: 100 металла, 4 цифры | **верно** | ✅ |
|
||
| Гниение: «лоза/дерево — часы, камень/металл — дни» | точные числа: лоза **1 ч**, дерево **3 ч**, камень **5 ч**, лист **8 ч**, броня **12 ч**; внутри здания ×10 | 🟡 |
|
||
| Столбы и правила про них | **столбов в Rust нет** с 01.02.2018 (обновление 196) | ✅ |
|
||
| «Ставятся свободно, не по сетке мира» | детали садятся **по сетке** (фундамент 3×3) | 🟡 |
|
||
| Инструменты L1: «Salvaged Hammer, Salvaged Hatchet, Pick Axe» | это **Salvaged Hammer + Hatchet + Pick Axe** (металлические) — ошибка разбора списка | ✅ |
|
||
| Списки «что открывает уровень» | L1/L2/L3 были перемешаны (M16, огнемёт, F1, 8-кратник — это L2/L3) | ✅ |
|
||
| Джунгли | биом появился **01.05.2025** («Jungle Update»); в проекте не делаем | ✅ |
|
||
| Тех-дерево: разблокировка за скрап | на 06.11.2025 «tech tree tax» **убран** — в верстаке разблокировка бесплатна; 15/30/60/120 — цена чертежа на столе | ✅ О-нов |
|
||
| Броня: взрыв 50–100 % у шлемов | вики ошибается: Bucket 8 %, Riot 8 %, Bone 7 %, Heavy Plate — не подтверждено | ⚠️ |
|
||
|
||
### П.2 Спорные и неподтверждённые места (см. п. 5)
|
||
|
||
1. **Прочность инструментов (HP).** В вики нет такого поля ни у одного предмета; шкала
|
||
0…100 — вывод из цены ремонта. Если нужна точность — брать из игровых данных.
|
||
2. **Механика исследования** (10 с, уничтожение предмета, продолжение при закрытом
|
||
интерфейсе, звук) — **только community-вика**, официальной нет. Если это основа
|
||
проекта — проверить в живой игре.
|
||
3. **Множитель урона оружия по постройкам** — не опубликован нигде: 250 HP / 10 урона
|
||
= 25 ударов, а игровые зеркала дают 37. Старая вики (2018–2020) давала «лоза 9,
|
||
дерево 0.2, металл 0.1» — но с калькулятором рейда она тоже не сходится. Нужна своя модель.
|
||
4. **HP броневой двери** — 1000 (игровые зеркала) против 800 (fandom; так же и в 2020).
|
||
5. **HP базовых блоков** — в официальной вики по ним страниц нет вообще, числа взяты
|
||
из игровых зеркал (rusthelp / rustclash), которые сходятся.
|
||
6. **Радиус инструментального шкафа** — 50 м (официальная вика) против 16 м (старая
|
||
вики, статья Building); «50 meter radius» в инфобоксе вики сама вики называет
|
||
своей ошибкой — но оно же стоит на официальной странице предмета.
|
||
7. **Таймеры гниения** — 1/3/5/8/12 ч (официальная вика, современные гайды) против
|
||
1/2/4/8/12 ч (вики 2020 г.): похоже, дерево и камень перенастраивали после 2020.
|
||
8. **Стартовый набор** (камень и фонарь) — официально не документирован; в вики 2018 г.
|
||
у Rock написано *«Every time you spawn this item will be present as the first item in
|
||
your toolbar»*, но это может быть остаток Legacy-описания.
|
||
9. **Порядок и ветки тех-дерева** — цены есть, структура только community.
|
||
10. **Столы исследований на монументах** — список и разница в поведении только
|
||
community; список может быть устаревшим.
|
||
11. **Правила стабильности второго этажа** — ни один доступный источник не описывает.
|
||
12. **Сброс таймера гниения** (открытие двери с замком) — только community, радиус
|
||
эффекта неизвестен.
|
||
13. **rust.wiki.gg недоступна** для автоматической проверки (401 на все запросы) —
|
||
часть спорных мест может ею опровергаться; при сомнениях проверять руками.
|
||
14. **Обновления после 06.11.2025** (апгрейд верстака 07.05.2026, Livestock 01.10.2026)
|
||
по условию задачи не проверялись.
|
||
15. **Вики Facepunch — снимок от 19–20.02.2026.** Данные предметов там сгенерированы
|
||
массово в феврале 2026 (до них страницы велись вручную и были местами протухшие).
|
||
То есть «текущая вика» = игра на ~февраль 2026, а не сегодня. Для нашего среза
|
||
(11.2025) это удачный факт: почти все числа совпадают.
|
||
16. **Страницы вики на 06.11.2025 местами показывали протухшее** (например, верстак 1 ещё
|
||
со «50 Scrap», хотя скрап убрали в тот же день). Поэтому «что вики говорила тогда» ≠
|
||
«что было в игре тогда»; верить надо девблогам и ченджлистам.
|
||
17. **Колонка «взрыв» в таблице Protection вики — с ошибками** (см. п. 1.6): верны
|
||
только 8 % / 8 % / 7 % для Bucket / Riot / Bone Armor и 30 % для Hazmat.
|
||
18. **HP деревянной двойной двери** — подтверждён только игровыми зеркалами (200);
|
||
датированной вики нет (на странице в 2017 г. стоял текст «has X health»).
|
||
19. **Взрыв у Heavy Plate** (8/12/12 % против 17/17/17 % против 100 %) — не подтверждён.
|
||
|