Files
healer-man/scripts/runewaker-pipeline/RECIPE_SCHEMA.md
T
2026-08-14 15:56:39 -04:00

2.3 KiB

RuneWaker recipe schema

Two recipes keep environment conversion separate from population/mechanics. Paths are project-relative unless an environment variable supplies the preserved source root.

Environment recipe

Required top-level fields:

  • schemaVersion: recipe format version.
  • slug: HealerMan dungeon ID and asset directory name.
  • title: display/source title.
  • source: preserved WDB, primary ROS, config, and entrance evidence.
  • coordinateSystem: source axes, units, and direction units.
  • navigation: Recast settings.
  • review: human review states.
  • exceptions: known limitations retained in metadata.

source fields:

  • rootEnvironmentVariable / relativeDefault: source-root resolution.
  • resourceRoot: normally Resource.
  • wdb: WDB path relative to the source root.
  • model: primary ROS relative to Resource.
  • dungeonConfig / dungeonConfigId: server catalog join.
  • entryLua / entryConstantPrefix: authoritative entry constants; or
  • entryCoordinates: explicit position/direction with reviewRequired.

Population recipe

Required fields:

  • dungeonId, zoneId, and runtimeIdPrefix.
  • expectedActiveRows and expectedBossSpawns after the first refresh.
  • files: snapshot, generated source, reports, environment/nav, actor outputs.
  • source: source-root, catalogs, backup paths, SQL extraction instance.
  • actors: unique reviewed source ROS models.
  • templates: classification, display, combat, actor, and mechanics mappings.
  • deferred: explicit later-pass list.

Template classifications are combat, boss, deferred-object, or unclassified. Generation refuses unclassified rows and combat/boss rows without a valid actor.

Optional template fields:

  • title, archetype, primaryColor, accentColor, visualScale;
  • hasLoot, spawnMask, objectiveNamePattern;
  • combat: health/damage multipliers, movement, and leash overrides;
  • attacks: reviewed HealerMan attack definitions;
  • reason: why an object is deferred;
  • source: forensic image/model/classification evidence.

expected* values may be null only in a fresh scaffold. The explicit forensic refresh with --update-recipe pins them. A recipe should not be treated as production-ready until all classifications/models and counts are reviewed.