feat(runtime): project factory-2 selector 6 metadata

This commit is contained in:
Valentin Popov committed 2026-10-31 17:00:48 +04:00
1 parent 5adefa6714
commit 6c7740f133
7 files changed
+1856 -29

No files matched your search

+24
View File
@@ -1442,6 +1442,30 @@ descriptor через `INTO`. Так разные части Control могут
загруженной таблицы; обновление пока не подключено к игровым часам и не
заменяет полный Control tick.
Устройство фабрики `2` имеет поле selector `6`, `+0x174`; конструктор задаёт ему
ноль. Позднее Control может пересчитать его по паре строк записи и отдельному
прототипу `BULL`. Только для поддержанной свежей формы одного корневого mesh
`BULL` из `objects.rlb`, без дочерних компонентов, его NDP-строки сводятся к
сумме Max; например, `[1.5, 2.25]`
превращается в `3.75` с округлением `f32` после каждого шага:
```rust
let mut total = 0.0_f32;
for row in ndp_rows {
total += row.max_volume;
}
```
Пустая таблица даёт ноль; физическую единицу этому числу не приписываем. Пара
сравнивается как две C-строки до первого NUL: хвост не учитывается, регистр не
важен. Если после изменения любая строка пуста, старое `+0x174` сохраняется;
пустая пара конструктора не вызывает пересчёт, потому что уже совпадает. Новые
значения применяются при добавлении и первой активной записи `INTO` в исходном
порядке. Непредставленные входы оставляют селектор недоступным, а ошибка чтения
узнаваемого, но повреждённого ресурса отменяет новую загрузку и сохраняет
прежние мир и RNG. Общая формула selector 35 и условия свежей формы разобраны в
[техническом приложении](../appendices/script-vm.md).
Отдельный путь объекта класса `4` умножает интервал на контактный коэффициент и
передаёт изменение строке. В проверенном примере коэффициент `1`, интервал `2`,
и значение строки уменьшается на `2`; этот коэффициент не является ставкой