Skip to content

FollowerForge 3.3.0 — arrows, stack counts, honest names

Choose a tag to compare

@SenjuWoo SenjuWoo released this 12 Aug 17:16
· 34 commits to main since this release

Four things were reported against 3.2.9. Two were real and total, one was half right, one was not us.

Arrows and bolts

IndexedRecordType had no Ammo member at all — AMMO records were never indexed, so arrows could not be picked, validated, or written. A bow follower was a follower with a stick.

Now indexed, with an Arrows & bolts tab in step 5 and a stack-count spinner (default 100).

Ammo goes in inventory only, deliberately. Checked against Faendal (013480:Skyrim.esm), the game's own archer follower: he carries Steel Arrow (01397F) in Items with a clothes-only outfit, and a query for vanilla outfits referencing that arrow returns zero. An earlier attempt to also write ammo into the generated outfit was removed rather than shipped.

Item stack counts

RecordRef gained an optional Count (default 1, so older profile JSON loads unchanged). The compiler had Count = 1 hardcoded. Belongings get their own count spinner; 0 or negative clamps to 1 instead of writing an empty stack.

Non-English letters — half right

Measured, not guessed:

input written bytes result
Ëlïna Ökÿ cb 6c ef 6e 61 20 d6 6b ff already correct (valid Windows-1252)
Ζωή Аня 3f 3f 3f 3f 3f 3f literal ?

A plugin stores one single-byte codepage, so Cyrillic, Greek and CJK cannot survive; writing cp1251 instead would just move the breakage onto everyone whose game is not Russian. New NAME_CHARACTERS_LOST warning names the exact characters that will be lost. No per-language encoding support, by choice.

Body/face colour — not a 3.2.9 regression

Diffed 3.2.7 → 3.2.9 across the whole tree. The only compiler changes are cell placement, worldspace and FormVersion 44. Nothing in the face, tint, QNAM/TextureLighting, HeadTexture or skin path was touched. This is the pre-existing tone behaviour: a preset with a non-neutral SkinTone tints the head while the body keeps whatever skin the player installed. Diagnosing it needs the reporter's preset and a screenshot.

Also fixed

  • fforge index no longer dies on a damaged cache. It quarantined and rebuilt in the wizard but threw SqliteException in the CLI — so the one command that repairs the catalogue was the one command a corrupt catalogue could brick. Hit for real while testing this release.
  • Catalogue index_version. A catalogue built by an earlier version is now stale, so existing users pick up the Ammo records automatically instead of opening an empty arrows list.

Verified

367 tests pass. Built with the published CLI and read back with houseCARL:

Items[2].Item.Item  = 01397F:Skyrim.esm (SteelArrow)   Count = 100
Items[0].Item.Count = 5
DefaultOutfit contains no ammo
check_errors: 0 dangling refs, 0 missing masters

🤖 Generated with Claude Code