Files
RingBRP/.gitignore
T
slaguru666andClaude Opus 5 5351c25fda Ship the bestiary art: 47 plates and tokens, as webp
The illustrations were sitting in art/creatures/, where nothing looked for
them. build-packs resolves a creature's picture by stem under art/portraits/,
so none of the 47 reached the game.

tools/make-art.py (was make-tokens.py) now derives both from one plate:
art/portraits/<key>.webp and art/tokens/<key>.webp. Same drawing, so the
token cannot disagree with the portrait — the argument mj-queue already makes
for deriving prompts from statblocks.

Webp because every one of the 309 art files already here is one, at 160-220
KB. The raw Midjourney plates are 2.3 MB each; 47 of them would have put 93
MB into a 29 MB repository permanently, for pictures nothing renders at that
size. At quality 88 a plate is ~300 KB with the pencil hatching intact. The
plates stay on disk as working files and are gitignored.

The token lookup in build-packs was a hardcoded `.png`, so the first webp
token would have silently fallen back to the portrait and Foundry would have
gone back to cropping a 2:3 plate into a circle. Portraits and tokens now
share one resolver and one extension list.

146 of 147 npcs carry a portrait and 46 a derived token.

Also: the gryphon came back as a mech a second time. The first fix branched
the armour SIMILE on era while both arms still opened with the word
"armoured", and that word is what Midjourney draws — changing the reasoning
is not the same as changing the cause. No natural creature's prompt contains
"armour" now, and negativesFor() asks for plate, machinery and worn armour to
be left out, because a word choice is an argument and a --no is closer to a
guarantee.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 00:14:51 +01:00

38 lines
1.7 KiB
Plaintext

# Restorable with `npm install` — the pack builder needs classic-level.
node_modules/
# LevelDB runtime scratch. The pack DATA is committed on purpose (see README):
# a remote Foundry needs the built compendia, and building them requires Node.
#
# LOG is LevelDB's own diagnostic text — "Delete type=3 #1", compaction notes — and it
# is rewritten every time a pack is OPENED, not only when one is rebuilt. Tracking it
# meant all eighteen went dirty whenever anything merely READ the compendia, Foundry
# and any verification script included, which was most of the noise in git status here
# and the reason pack churn kept appearing in commits that had not touched content.
#
# Verified disposable before ignoring: a pack copy with LOG and LOG.old deleted opens
# correctly, reads back all its documents, and LevelDB writes a fresh LOG on open.
#
# CURRENT and MANIFEST-* are deliberately NOT in this list. They are how a fresh clone
# finds the data, and ignoring them would ship a compendium nobody can open.
packs/*/LOCK
packs/*/LOG
packs/*/LOG.old
# macOS
.DS_Store
# Impeccable design-hook scratch; the config beside it records real decisions.
.impeccable/hook.cache.json
# The creature currently taken from the illustration queue (tools/mj-queue.mjs).
# Machine-local working state, not a fact about the repo.
.mj-inflight
# Raw Midjourney plates and the superseded PNG tokens. Working files, not deliverables:
# tools/make-art.py derives art/portraits/<key>.webp and art/tokens/<key>.webp from these,
# and only the derivatives ship. 47 plates at 2.3 MB each would be 93 MB of history for
# pictures nothing renders at that size. Keep the originals; do not commit them.
art/creatures/
art/tokens/*.png