fix(tools): artantares-mutations aus generischem Item-Lookup ausschließen; empire-ruins gegen gewachsenen Korpus neu abgeglichen

Das Lookup-Tool hatte Dark Vision/Ethereal (u.ae.) von "Ghost" fälschlich
mit dem Mutations-Flavourtext aus artantares-mutations.items.json
befüllt statt mit der korrekten generischen Kreatur-Eigenschaft aus
wfrp4e-core.items.json, da die Datei alphabetisch zuerst gescannt wurde.
Neue AMBIGUOUS_NAME_PACKS-Ausschlussliste behebt das dauerhaft.

Anschließend erneut gegen den seit dem letzten Lauf stark gewachsenen
Korpus abgeglichen: 5885/6221 Items wiederverwendet (vorher ~5773),
336 bleiben ohne Korpus-Treffer.
This commit is contained in:
alzer
2026-08-13 09:56:31 +02:00
parent 682b918c71
commit dcdf083d00
3 changed files with 275 additions and 260 deletions
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -8,7 +8,7 @@
}
],
"url": "https://gitea.palmenalzer.de/alzer/wfrp-4e-de",
"version": "8.6.120",
"version": "8.6.121",
"esmodules": [
"modules/babele-register.js",
"modules/addon-register.js",
+11 -1
View File
@@ -33,8 +33,18 @@ const PARTIAL_PACKS = new Set([
'wfrp4e-empire-ruins.actors.json'
]);
// Packs that must never feed the generic lookup, independent of translation completeness:
// their entries use the same short names as core Creature Traits/Talents (Dark Vision,
// Ethereal, Bite, Fear ...) but with pack-specific (mutation-flavoured) meanings. Matching
// an NSC's generic core trait against these would silently swap in the wrong, mutation-
// themed description. Add third-party/homebrew item packs with this kind of name overlap
// here as they're introduced.
const AMBIGUOUS_NAME_PACKS = new Set([
'artantares-mutations.items.json'
]);
function buildLookups(extraExclude = []) {
const exclude = new Set([...PARTIAL_PACKS, ...extraExclude]);
const exclude = new Set([...PARTIAL_PACKS, ...AMBIGUOUS_NAME_PACKS, ...extraExclude]);
const itemsLookup = {}; // key -> translated item, from already-translated *.items.json packs
const actorLookup = {}; // key -> translated item, from nested items inside already-translated *.actors.json/*.bestiary.json
const byName = {}; // English name -> translated item (fallback for actor-embedded items with random Foundry IDs as keys)