(base);
out << ",\"tracks\":[";
diff --git a/src/dev/RunewakerEffectsPreview.tsx b/src/dev/RunewakerEffectsPreview.tsx
index 905861dd..df55df1a 100644
--- a/src/dev/RunewakerEffectsPreview.tsx
+++ b/src/dev/RunewakerEffectsPreview.tsx
@@ -42,8 +42,10 @@ function Preview() {
useEffect(() => {
void fetch("/assets/game/combat-effects/original/runewaker/manifest.json")
.then((response) => response.json())
- .then((index: { results: { model: string; graphUrl: string; status: string; rendererReady?: boolean }[] }) => {
- const available = index.results.filter((entry) => entry.status === "decoded" || entry.rendererReady)
+ .then((index: { results: { model: string; graphUrl: string; status: string;
+ rendererReady?: boolean; partialRendererReady?: boolean }[] }) => {
+ const available = index.results.filter((entry) =>
+ entry.status === "decoded" || entry.rendererReady || entry.partialRendererReady)
.map(({ model, graphUrl }) => ({ model, graphUrl }));
setChoices(available);
setSelected(available.find((entry) => entry.model.includes("electric_ball_t_freeze_hit"))?.graphUrl
@@ -83,8 +85,11 @@ function Preview() {
{error || (loaded
- ? `Ready · ${runeLayers(loaded.graph, phase).length} sprite layers · ${loaded.graph.textures.length} textures`
+ ? `${loaded.graph.partialRendererReady ? "Partial original" : "Ready"} · ${runeLayers(loaded.graph, phase).length} sprite layers · ${loaded.graph.textures.length} textures`
: "Loading RuneWaker media…")}
+ {loaded?.graph.partialRendererReady &&
+ Fidelity limit: {loaded.graph.omittedVisuals?.join(", ")}
+
}