diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-22 10:45:23 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-22 10:45:23 +0300 |
| commit | dcc64598916dba92de74c6e27a2359fa08b72e84 (patch) | |
| tree | 51b9d767e1650ebfff3d0fa7ddb378e37f5bcd6b /docs/reference | |
| parent | 374db10daf5db88a52596edebc6cf5f2d560065f (diff) | |
| download | fparkan-dcc64598916dba92de74c6e27a2359fa08b72e84.tar.xz fparkan-dcc64598916dba92de74c6e27a2359fa08b72e84.zip | |
feat(runtime): initialize mission ore properties
Diffstat (limited to 'docs/reference')
| -rw-r--r-- | docs/reference/tma.md | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/docs/reference/tma.md b/docs/reference/tma.md index 2a84d6d..8eb6f66 100644 --- a/docs/reference/tma.md +++ b/docs/reference/tma.md @@ -92,3 +92,15 @@ slot `+0x40` в путь выбора AI в Behavior. Поэтому Rust сох `Property` состоит из четырёх raw `u32` и имени. Typed views разрешены только для доказанных property names и consumers. + +Для свойств объекта `MisLoad.dll!FUN_10003ab0` (RVA `0x3ab0`) переставляет +дисковые слова в runtime-запись, а `FUN_100040b0` (RVA `0x40b0`) проходит её +таблицу в порядке runtime-дескрипторов. Поиск имени учитывает длину и байты с +точным регистром и использует первое совпадение. В подтверждённом пути +дисковое `raw_value[1]` становится первым DWORD аргумента setter-а, поэтому +значение передаётся как биты, без промежуточного float-преобразования. +Например, Behavior регистрирует `CurrentOre` под кодом `5`; его setter кладёт +полученные биты в основное слово свойства `0x02000100`. `MaximumOre` с кодом +`4` читает дополнительное слово той же записи, а setter этого дескриптора +ничего не меняет. Подтверждение классов и native getter/setter находится в +[главе о Behavior](../tomes/06-behavior.md#начальные-свойства-запасов-руды). |
