diff --git a/src/Debugger.svelte b/src/Debugger.svelte index 108c791dbe3d8f1d0c7eaeed0857f642a43320c5..247fb853cd48a4584178eb82698c1bf8c4647b06 100644 --- a/src/Debugger.svelte +++ b/src/Debugger.svelte @@ -8,10 +8,23 @@ $: dialogNames = Object.keys(dialogSet.dialogs) export let selectedDialogName: string + /** + * Collect all facts referenced in these dialogs + */ function getDialogFacts(dialogMap: DialogMap): String[] { - const dialogs = []; + const dialogs: Dialog[] = []; for (const dmKey of Object.keys(dialogMap)) dialogs.push(dialogMap[dmKey]); - return dialogs.map(dialog => [...(dialog.addFacts || []), ...(dialog.removeFacts || [])]).flat() + const allFacts = dialogs + .map((dialog) => [ + ...(dialog.addFacts || []), + ...(dialog.removeFacts || []), + ...dialog.options.map((opt) => opt.requiredFacts).flat(), + ...dialog.options.map((opt) => opt.forbiddenFacts).flat(), + ]) + .flat(); + // Deduplicate entries + const factsSet = new Set(allFacts); + return [...factsSet]; } let seenFactIds = new Set<String>([...$gameFactsStore, ...getDialogFacts(dialogSet.dialogs)]);