{"doc_urls":["index.html#storybook-language-guide","index.html#what-is-storybook","index.html#choose-your-path","index.html#-for-storytellers","index.html#-for-developers","index.html#-for-everyone","index.html#quick-start","index.html#documentation-structure","index.html#getting-help","tutorial/01-welcome.html#welcome-to-storybook","tutorial/01-welcome.html#what-you-will-learn","tutorial/01-welcome.html#what-is-storybook","tutorial/01-welcome.html#your-first-storybook-file","tutorial/01-welcome.html#key-concepts","tutorial/01-welcome.html#everything-is-a-declaration","tutorial/01-welcome.html#fields-hold-data","tutorial/01-welcome.html#prose-blocks-tell-stories","tutorial/01-welcome.html#project-structure","tutorial/01-welcome.html#next-steps","tutorial/02-creating-characters.html#creating-characters","tutorial/02-creating-characters.html#a-simple-character","tutorial/02-creating-characters.html#adding-descriptions-with-prose-blocks","tutorial/02-creating-characters.html#defining-species","tutorial/02-creating-characters.html#but-what-about-hybrids","tutorial/02-creating-characters.html#reusing-traits-with-templates","tutorial/02-creating-characters.html#species-vs-templates","tutorial/02-creating-characters.html#field-resolution","tutorial/02-creating-characters.html#using-enums-for-controlled-values","tutorial/02-creating-characters.html#importing-across-files","tutorial/02-creating-characters.html#putting-it-all-together","tutorial/02-creating-characters.html#next-steps","tutorial/03-first-behavior-tree.html#your-first-behavior-tree","tutorial/03-first-behavior-tree.html#what-is-a-behavior-tree","tutorial/03-first-behavior-tree.html#your-first-tree","tutorial/03-first-behavior-tree.html#understanding-choose-selector","tutorial/03-first-behavior-tree.html#understanding-then-sequence","tutorial/03-first-behavior-tree.html#naming-your-nodes","tutorial/03-first-behavior-tree.html#combining-choose-and-then","tutorial/03-first-behavior-tree.html#actions","tutorial/03-first-behavior-tree.html#a-complete-example","tutorial/03-first-behavior-tree.html#behavior-character-connection","tutorial/03-first-behavior-tree.html#next-steps","tutorial/04-making-characters-act.html#making-characters-act","tutorial/04-making-characters-act.html#conditions-if-and-when","tutorial/04-making-characters-act.html#condition-expressions","tutorial/04-making-characters-act.html#action-parameters","tutorial/04-making-characters-act.html#decorators","tutorial/04-making-characters-act.html#repeat----looping","tutorial/04-making-characters-act.html#invert----flip-results","tutorial/04-making-characters-act.html#retry----try-again-on-failure","tutorial/04-making-characters-act.html#timeout----time-limits","tutorial/04-making-characters-act.html#cooldown----rate-limiting","tutorial/04-making-characters-act.html#if-as-decorator-guard","tutorial/04-making-characters-act.html#succeed_always-and-fail_always","tutorial/04-making-characters-act.html#combining-decorators","tutorial/04-making-characters-act.html#subtree-references","tutorial/04-making-characters-act.html#behavior-linking-with-priorities","tutorial/04-making-characters-act.html#a-complete-example","tutorial/04-making-characters-act.html#next-steps","tutorial/05-advanced-behaviors.html#advanced-behaviors","tutorial/05-advanced-behaviors.html#deep-decision-trees","tutorial/05-advanced-behaviors.html#modular-subtrees","tutorial/05-advanced-behaviors.html#conditional-behavior-selection","tutorial/05-advanced-behaviors.html#decorator-combinations","tutorial/05-advanced-behaviors.html#prose-documentation","tutorial/05-advanced-behaviors.html#design-tips","tutorial/05-advanced-behaviors.html#next-steps","tutorial/06-relationships.html#character-relationships","tutorial/06-relationships.html#basic-relationships","tutorial/06-relationships.html#adding-roles","tutorial/06-relationships.html#perspectives-self-and-other","tutorial/06-relationships.html#prose-in-relationships","tutorial/06-relationships.html#multi-party-relationships","tutorial/06-relationships.html#asymmetric-awareness","tutorial/06-relationships.html#institutional-relationships","tutorial/06-relationships.html#building-a-relationship-web","tutorial/06-relationships.html#next-steps","tutorial/07-schedules.html#schedules-and-time","tutorial/07-schedules.html#basic-schedules","tutorial/07-schedules.html#named-blocks","tutorial/07-schedules.html#linking-schedules-to-characters","tutorial/07-schedules.html#temporal-constraints","tutorial/07-schedules.html#season-constraints","tutorial/07-schedules.html#day-of-week-constraints","tutorial/07-schedules.html#recurring-events","tutorial/07-schedules.html#schedule-composition-with-extends","tutorial/07-schedules.html#overnight-blocks","tutorial/07-schedules.html#a-complete-schedule-example","tutorial/07-schedules.html#next-steps","tutorial/08-life-arcs.html#life-arcs","tutorial/08-life-arcs.html#what-is-a-life-arc","tutorial/08-life-arcs.html#your-first-life-arc","tutorial/08-life-arcs.html#states","tutorial/08-life-arcs.html#transitions","tutorial/08-life-arcs.html#transition-priority","tutorial/08-life-arcs.html#on-enter-actions","tutorial/08-life-arcs.html#elenas-complete-journey","tutorial/08-life-arcs.html#common-patterns","tutorial/08-life-arcs.html#hub-and-spoke","tutorial/08-life-arcs.html#linear-progression","tutorial/08-life-arcs.html#cyclic-states","tutorial/08-life-arcs.html#tips","tutorial/08-life-arcs.html#what-you-have-learned","tutorial/08-life-arcs.html#where-to-go-next","tutorial/09-locations-institutions.html#locations-and-institutions","tutorial/09-locations-institutions.html#what-are-locations","tutorial/09-locations-institutions.html#your-first-location","tutorial/09-locations-institutions.html#adding-detail","tutorial/09-locations-institutions.html#prose-blocks","tutorial/09-locations-institutions.html#building-a-world-with-locations","tutorial/09-locations-institutions.html#modeling-hierarchy","tutorial/09-locations-institutions.html#what-are-institutions","tutorial/09-locations-institutions.html#your-first-institution","tutorial/09-locations-institutions.html#institutions-with-behaviors","tutorial/09-locations-institutions.html#behavior-priorities","tutorial/09-locations-institutions.html#conditional-behaviors","tutorial/09-locations-institutions.html#institutions-with-schedules","tutorial/09-locations-institutions.html#prose-blocks-1","tutorial/09-locations-institutions.html#connecting-characters-to-institutions","tutorial/09-locations-institutions.html#through-character-fields","tutorial/09-locations-institutions.html#through-relationships","tutorial/09-locations-institutions.html#locations-vs-institutions","tutorial/09-locations-institutions.html#putting-it-all-together","tutorial/09-locations-institutions.html#key-takeaways","tutorial/09-locations-institutions.html#next-steps","reference/09-overview.html#language-overview","reference/09-overview.html#philosophy","reference/09-overview.html#design-principles","reference/09-overview.html#1-code-as-narrative","reference/09-overview.html#2-explicit-is-better-than-implicit","reference/09-overview.html#3-progressive-disclosure","reference/09-overview.html#4-semantic-validation","reference/09-overview.html#language-structure","reference/09-overview.html#declaration-types","reference/09-overview.html#value-types","reference/09-overview.html#expression-language","reference/09-overview.html#compilation-model","reference/09-overview.html#source--ast--sbir--runtime","reference/09-overview.html#validation-layers","reference/09-overview.html#file-organization","reference/09-overview.html#project-structure","reference/09-overview.html#import-system","reference/09-overview.html#quick-reference","reference/09-overview.html#character-declaration","reference/09-overview.html#behavior-tree","reference/09-overview.html#life-arc","reference/09-overview.html#schedule","reference/09-overview.html#relationship","reference/09-overview.html#next-steps","reference/10-characters.html#characters","reference/10-characters.html#syntax","reference/10-characters.html#components","reference/10-characters.html#name","reference/10-characters.html#species-optional","reference/10-characters.html#template-inheritance-optional","reference/10-characters.html#fields","reference/10-characters.html#prose-blocks","reference/10-characters.html#behavior-integration","reference/10-characters.html#schedule-integration","reference/10-characters.html#species-vs-templates","reference/10-characters.html#field-resolution-order","reference/10-characters.html#validation-rules","reference/10-characters.html#examples","reference/10-characters.html#basic-character","reference/10-characters.html#character-with-species","reference/10-characters.html#character-with-template-inheritance","reference/10-characters.html#character-with-all-features","reference/10-characters.html#character-with-overrides","reference/10-characters.html#use-cases","reference/10-characters.html#protagonist-definition","reference/10-characters.html#npc-templates","reference/10-characters.html#ensemble-casts","reference/10-characters.html#cross-references","reference/10-characters.html#related-concepts","reference/11-behavior-trees.html#behavior-trees","reference/11-behavior-trees.html#what-is-a-behavior-tree","reference/11-behavior-trees.html#syntax","reference/11-behavior-trees.html#composite-nodes","reference/11-behavior-trees.html#selector-choose","reference/11-behavior-trees.html#sequence-then","reference/11-behavior-trees.html#nesting-composites","reference/11-behavior-trees.html#condition-nodes","reference/11-behavior-trees.html#if-vs-when","reference/11-behavior-trees.html#condition-syntax","reference/11-behavior-trees.html#action-nodes","reference/11-behavior-trees.html#basic-actions","reference/11-behavior-trees.html#actions-with-parameters","reference/11-behavior-trees.html#decorator-nodes","reference/11-behavior-trees.html#common-decorators","reference/11-behavior-trees.html#subtree-references","reference/11-behavior-trees.html#basic-subtree","reference/11-behavior-trees.html#qualified-subtree-references","reference/11-behavior-trees.html#named-nodes","reference/11-behavior-trees.html#complete-examples","reference/11-behavior-trees.html#simple-guard-ai","reference/11-behavior-trees.html#complex-npc-behavior","reference/11-behavior-trees.html#morning-baking-routine","reference/11-behavior-trees.html#repeating-behavior","reference/11-behavior-trees.html#retry-logic-for-delicate-recipes","reference/11-behavior-trees.html#integration-with-characters","reference/11-behavior-trees.html#execution-semantics","reference/11-behavior-trees.html#tick-based-evaluation","reference/11-behavior-trees.html#node-return-values","reference/11-behavior-trees.html#stateful-vs-stateless","reference/11-behavior-trees.html#validation-rules","reference/11-behavior-trees.html#best-practices","reference/11-behavior-trees.html#1-prefer-shallow-trees","reference/11-behavior-trees.html#2-use-named-nodes-for-clarity","reference/11-behavior-trees.html#3-subtrees-for-reusability","reference/11-behavior-trees.html#4-decorators-for-timing","reference/11-behavior-trees.html#5-guard-for-preconditions","reference/11-behavior-trees.html#cross-references","reference/11-behavior-trees.html#related-concepts","reference/12-decorators.html#decorators","reference/12-decorators.html#what-are-decorators","reference/12-decorators.html#decorator-types","reference/12-decorators.html#syntax","reference/12-decorators.html#repeat-decorators","reference/12-decorators.html#infinite-repeat-repeat","reference/12-decorators.html#repeat-n-times-repeat-n","reference/12-decorators.html#repeat-range-repeat-minmax","reference/12-decorators.html#invert-decorator","reference/12-decorators.html#retry-decorator","reference/12-decorators.html#timeout-decorator","reference/12-decorators.html#cooldown-decorator","reference/12-decorators.html#if-decorator","reference/12-decorators.html#force-result-decorators","reference/12-decorators.html#succeed_always","reference/12-decorators.html#fail_always","reference/12-decorators.html#combining-decorators","reference/12-decorators.html#duration-syntax","reference/12-decorators.html#comparison-table","reference/12-decorators.html#validation-rules","reference/12-decorators.html#use-cases-by-category","reference/12-decorators.html#timing-control","reference/12-decorators.html#reliability","reference/12-decorators.html#logic-control","reference/12-decorators.html#iteration","reference/12-decorators.html#best-practices","reference/12-decorators.html#1-use-guards-for-expensive-checks","reference/12-decorators.html#2-combine-timeout-with-retry","reference/12-decorators.html#3-use-cooldowns-for-rate-limiting","reference/12-decorators.html#4-invert-for-readable-conditions","reference/12-decorators.html#5-succeed_always-for-optional-tasks","reference/12-decorators.html#cross-references","reference/12-decorators.html#related-concepts","reference/13-life-arcs.html#life-arcs","reference/13-life-arcs.html#what-is-a-life-arc","reference/13-life-arcs.html#syntax","reference/13-life-arcs.html#states","reference/13-life-arcs.html#basic-state","reference/13-life-arcs.html#state-names","reference/13-life-arcs.html#on-enter-actions","reference/13-life-arcs.html#syntax-1","reference/13-life-arcs.html#examples","reference/13-life-arcs.html#field-update-semantics","reference/13-life-arcs.html#multiple-field-updates","reference/13-life-arcs.html#transitions","reference/13-life-arcs.html#syntax-2","reference/13-life-arcs.html#basic-transitions","reference/13-life-arcs.html#expression-conditions","reference/13-life-arcs.html#multiple-transitions","reference/13-life-arcs.html#self-transitions","reference/13-life-arcs.html#complete-examples","reference/13-life-arcs.html#elenas-career-journey","reference/13-life-arcs.html#quest-progress","reference/13-life-arcs.html#name-checker-equality-examples","reference/13-life-arcs.html#status-monitor","reference/13-life-arcs.html#character-mood-swings","reference/13-life-arcs.html#execution-semantics","reference/13-life-arcs.html#tick-based-evaluation","reference/13-life-arcs.html#transition-priority","reference/13-life-arcs.html#state-persistence","reference/13-life-arcs.html#on-enter-execution","reference/13-life-arcs.html#validation-rules","reference/13-life-arcs.html#design-patterns","reference/13-life-arcs.html#1-hub-and-spoke","reference/13-life-arcs.html#2-linear-progression","reference/13-life-arcs.html#3-cyclic-states","reference/13-life-arcs.html#4-hierarchical-simulated","reference/13-life-arcs.html#best-practices","reference/13-life-arcs.html#1-use-descriptive-state-names","reference/13-life-arcs.html#2-add-narrative-prose-blocks","reference/13-life-arcs.html#3-order-transitions-by-priority","reference/13-life-arcs.html#4-avoid-orphan-states","reference/13-life-arcs.html#5-use-on-enter-for-state-initialization","reference/13-life-arcs.html#cross-references","reference/13-life-arcs.html#related-concepts","reference/14-schedules.html#schedules","reference/14-schedules.html#what-is-a-schedule","reference/14-schedules.html#syntax","reference/14-schedules.html#schedule-blocks","reference/14-schedules.html#basic-block","reference/14-schedules.html#named-block","reference/14-schedules.html#block-content","reference/14-schedules.html#time-ranges","reference/14-schedules.html#syntax-1","reference/14-schedules.html#examples","reference/14-schedules.html#overnight-ranges","reference/14-schedules.html#actions","reference/14-schedules.html#syntax-2","reference/14-schedules.html#examples-1","reference/14-schedules.html#qualified-paths","reference/14-schedules.html#temporal-constraints","reference/14-schedules.html#season-constraint","reference/14-schedules.html#day-of-week-constraint","reference/14-schedules.html#month-constraint","reference/14-schedules.html#date-range-constraint","reference/14-schedules.html#recurrence-patterns","reference/14-schedules.html#syntax-3","reference/14-schedules.html#examples-2","reference/14-schedules.html#schedule-composition","reference/14-schedules.html#extends-clause","reference/14-schedules.html#override-semantics","reference/14-schedules.html#multiple-levels","reference/14-schedules.html#complete-examples","reference/14-schedules.html#simple-daily-schedule","reference/14-schedules.html#seasonal-variation","reference/14-schedules.html#weekly-pattern-with-recurrence","reference/14-schedules.html#extended-schedule","reference/14-schedules.html#complex-year-round-schedule","reference/14-schedules.html#integration-with-characters","reference/14-schedules.html#execution-semantics","reference/14-schedules.html#time-based-selection","reference/14-schedules.html#priority-order","reference/14-schedules.html#block-overlap","reference/14-schedules.html#validation-rules","reference/14-schedules.html#best-practices","reference/14-schedules.html#1-use-named-blocks-for-overrides","reference/14-schedules.html#2-group-related-blocks","reference/14-schedules.html#3-use-recurrences-for-special-events","reference/14-schedules.html#4-extend-for-variations","reference/14-schedules.html#5-use-temporal-constraints-for-clarity","reference/14-schedules.html#cross-references","reference/14-schedules.html#related-concepts","reference/15-relationships.html#relationships","reference/15-relationships.html#what-is-a-relationship","reference/15-relationships.html#syntax","reference/15-relationships.html#basic-relationships","reference/15-relationships.html#simple-two-party-relationship","reference/15-relationships.html#multi-party-relationship","reference/15-relationships.html#roles","reference/15-relationships.html#syntax-1","reference/15-relationships.html#examples","reference/15-relationships.html#role-semantics","reference/15-relationships.html#perspective-fields-selfother-blocks","reference/15-relationships.html#syntax-2","reference/15-relationships.html#self-block","reference/15-relationships.html#other-block","reference/15-relationships.html#both-blocks","reference/15-relationships.html#asymmetric-relationships","reference/15-relationships.html#shared-fields","reference/15-relationships.html#prose-blocks","reference/15-relationships.html#complete-examples","reference/15-relationships.html#simple-friendship","reference/15-relationships.html#marriage-with-roles","reference/15-relationships.html#parent-child-with-perspectives","reference/15-relationships.html#employer-employee","reference/15-relationships.html#complex-multi-perspective","reference/15-relationships.html#business-rivalry","reference/15-relationships.html#multi-party-family","reference/15-relationships.html#co-owners-partnership","reference/15-relationships.html#participant-types","reference/15-relationships.html#field-resolution","reference/15-relationships.html#validation-rules","reference/15-relationships.html#use-cases","reference/15-relationships.html#social-networks","reference/15-relationships.html#family-structures","reference/15-relationships.html#power-dynamics","reference/15-relationships.html#asymmetric-awareness","reference/15-relationships.html#best-practices","reference/15-relationships.html#1-use-descriptive-relationship-names","reference/15-relationships.html#2-use-roles-for-clarity","reference/15-relationships.html#3-shared-fields-for-mutual-properties","reference/15-relationships.html#4-selfother-for-perspectives","reference/15-relationships.html#5-prose-blocks-for-rich-context","reference/15-relationships.html#cross-references","reference/15-relationships.html#related-concepts","reference/16a-locations.html#locations","reference/16a-locations.html#syntax","reference/16a-locations.html#basic-location","reference/16a-locations.html#fields","reference/16a-locations.html#common-field-patterns","reference/16a-locations.html#prose-blocks","reference/16a-locations.html#ranges","reference/16a-locations.html#lists","reference/16a-locations.html#referencing-other-entities","reference/16a-locations.html#nested-structure-with-fields","reference/16a-locations.html#location-with-enum-fields","reference/16a-locations.html#complete-example-baker-family-locations","reference/16a-locations.html#validation-rules","reference/16a-locations.html#locations-vs-other-declarations","reference/16a-locations.html#cross-references","reference/16b-institutions.html#institutions","reference/16b-institutions.html#syntax","reference/16b-institutions.html#basic-institution","reference/16b-institutions.html#fields","reference/16b-institutions.html#common-field-patterns","reference/16b-institutions.html#prose-blocks","reference/16b-institutions.html#resource-linking-behaviors","reference/16b-institutions.html#simple-behavior-linking","reference/16b-institutions.html#behavior-links-with-priority","reference/16b-institutions.html#conditional-behavior-links","reference/16b-institutions.html#behavior-link-fields","reference/16b-institutions.html#resource-linking-schedules","reference/16b-institutions.html#single-schedule","reference/16b-institutions.html#multiple-schedules","reference/16b-institutions.html#complete-syntax-example","reference/16b-institutions.html#membership-modeling","reference/16b-institutions.html#via-character-fields","reference/16b-institutions.html#via-relationships","reference/16b-institutions.html#institutions-vs-characters","reference/16b-institutions.html#use-cases","reference/16b-institutions.html#complete-example-baker-family-world","reference/16b-institutions.html#validation-rules","reference/16b-institutions.html#cross-references","reference/16-other-declarations.html#other-declarations","reference/16-other-declarations.html#templates","reference/16-other-declarations.html#syntax","reference/16-other-declarations.html#basic-template","reference/16-other-declarations.html#template-includes","reference/16-other-declarations.html#range-values","reference/16-other-declarations.html#strict-mode","reference/16-other-declarations.html#resource-linking-in-templates","reference/16-other-declarations.html#templates-vs-species","reference/16-other-declarations.html#validation-rules","reference/16-other-declarations.html#institutions","reference/16-other-declarations.html#syntax-1","reference/16-other-declarations.html#basic-institution","reference/16-other-declarations.html#institutions-with-fields","reference/16-other-declarations.html#resource-linking","reference/16-other-declarations.html#prose-blocks","reference/16-other-declarations.html#use-cases","reference/16-other-declarations.html#validation-rules-1","reference/16-other-declarations.html#locations","reference/16-other-declarations.html#syntax-2","reference/16-other-declarations.html#basic-location","reference/16-other-declarations.html#location-with-structure","reference/16-other-declarations.html#geographic-hierarchy","reference/16-other-declarations.html#location-with-state","reference/16-other-declarations.html#use-cases-1","reference/16-other-declarations.html#validation-rules-2","reference/16-other-declarations.html#species","reference/16-other-declarations.html#syntax-3","reference/16-other-declarations.html#basic-species","reference/16-other-declarations.html#species-with-includes","reference/16-other-declarations.html#field-resolution-with-includes","reference/16-other-declarations.html#species-vs-templates","reference/16-other-declarations.html#design-pattern-prefer-composition-over-deep-hierarchies","reference/16-other-declarations.html#validation-rules-3","reference/16-other-declarations.html#enums","reference/16-other-declarations.html#syntax-4","reference/16-other-declarations.html#basic-enum","reference/16-other-declarations.html#using-enums","reference/16-other-declarations.html#common-enum-patterns","reference/16-other-declarations.html#calendar-enums-configurable","reference/16-other-declarations.html#validation-integration","reference/16-other-declarations.html#use-cases-2","reference/16-other-declarations.html#validation-rules-4","reference/16-other-declarations.html#use-statements","reference/16-other-declarations.html#syntax-5","reference/16-other-declarations.html#single-import","reference/16-other-declarations.html#grouped-import","reference/16-other-declarations.html#wildcard-import","reference/16-other-declarations.html#qualified-paths","reference/16-other-declarations.html#path-resolution","reference/16-other-declarations.html#common-patterns","reference/16-other-declarations.html#validation-rules-5","reference/16-other-declarations.html#best-practices","reference/16-other-declarations.html#cross-references","reference/16-other-declarations.html#related-concepts","reference/17-expressions.html#expression-language","reference/17-expressions.html#what-are-expressions","reference/17-expressions.html#syntax","reference/17-expressions.html#literals","reference/17-expressions.html#integer-literals","reference/17-expressions.html#float-literals","reference/17-expressions.html#string-literals","reference/17-expressions.html#boolean-literals","reference/17-expressions.html#identifiers","reference/17-expressions.html#simple-identifiers","reference/17-expressions.html#qualified-paths","reference/17-expressions.html#comparison-operators","reference/17-expressions.html#equality-","reference/17-expressions.html#inequality-","reference/17-expressions.html#less-than-","reference/17-expressions.html#less-than-or-equal-","reference/17-expressions.html#greater-than-","reference/17-expressions.html#greater-than-or-equal-","reference/17-expressions.html#logical-operators","reference/17-expressions.html#and-and","reference/17-expressions.html#or-or","reference/17-expressions.html#operator-precedence","reference/17-expressions.html#unary-operators","reference/17-expressions.html#not-not","reference/17-expressions.html#negation--","reference/17-expressions.html#field-access","reference/17-expressions.html#direct-field-access","reference/17-expressions.html#dot-access","reference/17-expressions.html#self-access","reference/17-expressions.html#other-access","reference/17-expressions.html#example-in-life-arcs","reference/17-expressions.html#quantifiers","reference/17-expressions.html#forall-forall","reference/17-expressions.html#exists-exists","reference/17-expressions.html#nested-quantifiers","reference/17-expressions.html#usage-in-context","reference/17-expressions.html#life-arc-transitions","reference/17-expressions.html#behavior-tree-conditions","reference/17-expressions.html#behavior-tree-conditions-1","reference/17-expressions.html#type-system","reference/17-expressions.html#type-compatibility","reference/17-expressions.html#implicit-coercion","reference/17-expressions.html#special-keyword-is","reference/17-expressions.html#complete-examples","reference/17-expressions.html#simple-conditions","reference/17-expressions.html#complex-conditions","reference/17-expressions.html#life-arc-with-complex-conditions","reference/17-expressions.html#behavior-with-quantifiers","reference/17-expressions.html#relationship-query","reference/17-expressions.html#validation-rules","reference/17-expressions.html#best-practices","reference/17-expressions.html#1-use-parentheses-for-clarity","reference/17-expressions.html#2-break-complex-conditions","reference/17-expressions.html#3-name-complex-conditions","reference/17-expressions.html#4-use-is-for-enums","reference/17-expressions.html#5-quantifiers-for-collections","reference/17-expressions.html#cross-references","reference/17-expressions.html#related-concepts","reference/18-value-types.html#values","reference/18-value-types.html#value-types-overview","reference/18-value-types.html#integer","reference/18-value-types.html#syntax","reference/18-value-types.html#examples","reference/18-value-types.html#range","reference/18-value-types.html#use-cases","reference/18-value-types.html#float","reference/18-value-types.html#syntax-1","reference/18-value-types.html#examples-1","reference/18-value-types.html#special-values","reference/18-value-types.html#use-cases-1","reference/18-value-types.html#string","reference/18-value-types.html#syntax-2","reference/18-value-types.html#escape-sequences","reference/18-value-types.html#examples-2","reference/18-value-types.html#limitations","reference/18-value-types.html#use-cases-2","reference/18-value-types.html#boolean","reference/18-value-types.html#syntax-3","reference/18-value-types.html#examples-3","reference/18-value-types.html#use-cases-3","reference/18-value-types.html#time","reference/18-value-types.html#syntax-4","reference/18-value-types.html#examples-4","reference/18-value-types.html#validation","reference/18-value-types.html#use-cases-4","reference/18-value-types.html#duration","reference/18-value-types.html#syntax-5","reference/18-value-types.html#examples-5","reference/18-value-types.html#components","reference/18-value-types.html#validation-1","reference/18-value-types.html#use-cases-5","reference/18-value-types.html#range-1","reference/18-value-types.html#syntax-6","reference/18-value-types.html#examples-6","reference/18-value-types.html#semantics","reference/18-value-types.html#validation-2","reference/18-value-types.html#use-cases-6","reference/18-value-types.html#identifier","reference/18-value-types.html#syntax-7","reference/18-value-types.html#examples-7","reference/18-value-types.html#resolution","reference/18-value-types.html#use-cases-7","reference/18-value-types.html#list","reference/18-value-types.html#syntax-8","reference/18-value-types.html#examples-8","reference/18-value-types.html#type-constraints","reference/18-value-types.html#operations","reference/18-value-types.html#use-cases-8","reference/18-value-types.html#object","reference/18-value-types.html#syntax-9","reference/18-value-types.html#examples-9","reference/18-value-types.html#nesting","reference/18-value-types.html#use-cases-9","reference/18-value-types.html#prose-blocks","reference/18-value-types.html#syntax-10","reference/18-value-types.html#common-tags","reference/18-value-types.html#examples-10","reference/18-value-types.html#formatting","reference/18-value-types.html#multiple-prose-blocks","reference/18-value-types.html#use-cases-10","reference/18-value-types.html#override","reference/18-value-types.html#syntax-11","reference/18-value-types.html#examples-11","reference/18-value-types.html#operations-1","reference/18-value-types.html#validation-3","reference/18-value-types.html#use-cases-11","reference/18-value-types.html#type-coercion","reference/18-value-types.html#null-and-optional","reference/18-value-types.html#summary-table","reference/18-value-types.html#cross-references","reference/18-value-types.html#related-concepts","reference/19-validation.html#validation-rules","reference/19-validation.html#validation-layers","reference/19-validation.html#character-validation","reference/19-validation.html#required-rules","reference/19-validation.html#examples","reference/19-validation.html#template-validation","reference/19-validation.html#examples-1","reference/19-validation.html#behavior-tree-validation","reference/19-validation.html#examples-2","reference/19-validation.html#life-arc-validation","reference/19-validation.html#examples-3","reference/19-validation.html#schedule-validation","reference/19-validation.html#examples-4","reference/19-validation.html#relationship-validation","reference/19-validation.html#examples-5","reference/19-validation.html#species-validation","reference/19-validation.html#enum-validation","reference/19-validation.html#examples-6","reference/19-validation.html#institution-and-location-validation","reference/19-validation.html#expression-validation","reference/19-validation.html#examples-7","reference/19-validation.html#use-statement-validation","reference/19-validation.html#examples-8","reference/19-validation.html#cross-file-validation","reference/19-validation.html#common-error-patterns","reference/19-validation.html#missing-definitions","reference/19-validation.html#circular-dependencies","reference/19-validation.html#type-mismatches","reference/19-validation.html#validation-summary","reference/19-validation.html#cross-references","advanced/20-patterns.html#design-patterns","advanced/20-patterns.html#behavior-tree-patterns","advanced/20-patterns.html#priority-fallback-chain","advanced/20-patterns.html#conditional-behavior-switching","advanced/20-patterns.html#composite-subtree-pattern","advanced/20-patterns.html#repeating-patrol-with-interrupts","advanced/20-patterns.html#character-architecture-patterns","advanced/20-patterns.html#species--templates-composition","advanced/20-patterns.html#strict-templates-for-schema-enforcement","advanced/20-patterns.html#template-inheritance-chains","advanced/20-patterns.html#relationship-patterns","advanced/20-patterns.html#bidirectional-perspective","advanced/20-patterns.html#power-dynamic-pattern","advanced/20-patterns.html#relationship-network","advanced/20-patterns.html#schedule-patterns","advanced/20-patterns.html#base-schedule-with-specializations","advanced/20-patterns.html#seasonal-variation","advanced/20-patterns.html#life-arc-patterns","advanced/20-patterns.html#progressive-development","advanced/20-patterns.html#emotional-state-machine","advanced/20-patterns.html#project-organization-patterns","advanced/20-patterns.html#schema--world-separation","advanced/20-patterns.html#module-per-domain","advanced/20-patterns.html#anti-patterns-to-avoid","advanced/20-patterns.html#cross-references","advanced/21-sbir-format.html#the-sbir-binary-format","advanced/21-sbir-format.html#compilation-pipeline","advanced/21-sbir-format.html#what-sbir-contains","advanced/21-sbir-format.html#resolution-process","advanced/21-sbir-format.html#template-merging","advanced/21-sbir-format.html#cross-file-reference-resolution","advanced/21-sbir-format.html#validation","advanced/21-sbir-format.html#design-goals","advanced/21-sbir-format.html#usage","advanced/21-sbir-format.html#cross-references","advanced/22-integration.html#integration-guide","advanced/22-integration.html#architecture-overview","advanced/22-integration.html#the-storybook-compiler","advanced/22-integration.html#cli-usage","advanced/22-integration.html#as-a-library","advanced/22-integration.html#key-types","advanced/22-integration.html#runtime-integration","advanced/22-integration.html#behavior-tree-execution","advanced/22-integration.html#life-arc-execution","advanced/22-integration.html#schedule-execution","advanced/22-integration.html#relationship-queries","advanced/22-integration.html#lsp-integration","advanced/22-integration.html#editor-setup","advanced/22-integration.html#tree-sitter-grammar","advanced/22-integration.html#file-organization-for-integration","advanced/22-integration.html#cross-references","advanced/23-best-practices.html#best-practices","advanced/23-best-practices.html#naming-conventions","advanced/23-best-practices.html#declarations","advanced/23-best-practices.html#fields","advanced/23-best-practices.html#behavior-tree-labels","advanced/23-best-practices.html#enum-variants","advanced/23-best-practices.html#file-organization","advanced/23-best-practices.html#separate-schema-from-world","advanced/23-best-practices.html#one-concern-per-file","advanced/23-best-practices.html#explicit-imports","advanced/23-best-practices.html#character-design","advanced/23-best-practices.html#use-species-for-identity-templates-for-traits","advanced/23-best-practices.html#document-with-prose-blocks","advanced/23-best-practices.html#prefer-flat-inheritance","advanced/23-best-practices.html#behavior-tree-design","advanced/23-best-practices.html#name-every-composite-node","advanced/23-best-practices.html#keep-trees-shallow","advanced/23-best-practices.html#use-decorators-for-control-flow","advanced/23-best-practices.html#expression-writing","advanced/23-best-practices.html#use-parentheses-for-clarity","advanced/23-best-practices.html#break-complex-conditions-into-multiple-transitions","advanced/23-best-practices.html#use-is-for-enum-comparisons","advanced/23-best-practices.html#schedule-design","advanced/23-best-practices.html#use-named-blocks-for-override-support","advanced/23-best-practices.html#group-related-blocks","advanced/23-best-practices.html#relationship-design","advanced/23-best-practices.html#use-roles-for-clarity","advanced/23-best-practices.html#use-perspectives-for-asymmetry","advanced/23-best-practices.html#general-principles","advanced/23-best-practices.html#cross-references","examples/24-baker-family-complete.html#baker-family-complete","examples/24-baker-family-complete.html#project-structure","examples/24-baker-family-complete.html#schema-layer","examples/24-baker-family-complete.html#enums","examples/24-baker-family-complete.html#species","examples/24-baker-family-complete.html#templates","examples/24-baker-family-complete.html#characters","examples/24-baker-family-complete.html#martha","examples/24-baker-family-complete.html#jane","examples/24-baker-family-complete.html#elena","examples/24-baker-family-complete.html#gregory","examples/24-baker-family-complete.html#behaviors","examples/24-baker-family-complete.html#relationships","examples/24-baker-family-complete.html#locations","examples/24-baker-family-complete.html#institutions","examples/24-baker-family-complete.html#key-takeaways","examples/24-baker-family-complete.html#cross-references","examples/25-day-in-life.html#day-in-the-life","examples/25-day-in-life.html#the-baker","examples/25-day-in-life.html#the-schedule","examples/25-day-in-life.html#behaviors","examples/25-day-in-life.html#morning-routine","examples/25-day-in-life.html#baking-behavior","examples/25-day-in-life.html#customer-service","examples/25-day-in-life.html#emergency-handling","examples/25-day-in-life.html#life-arc-career-and-energy","examples/25-day-in-life.html#relationships","examples/25-day-in-life.html#key-takeaways","examples/25-day-in-life.html#cross-references","examples/26-character-evolution.html#character-evolution","examples/26-character-evolution.html#the-apprentices-journey","examples/26-character-evolution.html#schema","examples/26-character-evolution.html#the-character-at-different-stages","examples/26-character-evolution.html#the-evolution-life-arc","examples/26-character-evolution.html#evolving-behaviors","examples/26-character-evolution.html#evolving-relationships","examples/26-character-evolution.html#evolving-schedules","examples/26-character-evolution.html#key-takeaways","examples/26-character-evolution.html#cross-references","examples/27-multi-character.html#multi-character-interactions","examples/27-multi-character.html#the-setting","examples/27-multi-character.html#the-characters","examples/27-multi-character.html#interlocking-behaviors","examples/27-multi-character.html#marthas-behavior","examples/27-multi-character.html#janes-behavior","examples/27-multi-character.html#elenas-behavior","examples/27-multi-character.html#gregorys-behavior","examples/27-multi-character.html#relationships","examples/27-multi-character.html#the-saturday-schedule","examples/27-multi-character.html#life-arc-elenas-saturday-confidence","examples/27-multi-character.html#key-takeaways","examples/27-multi-character.html#cross-references"],"index":{"documentStore":{"docInfo":{"0":{"body":97,"breadcrumbs":4,"title":3},"1":{"body":95,"breadcrumbs":2,"title":1},"10":{"body":55,"breadcrumbs":3,"title":1},"100":{"body":29,"breadcrumbs":4,"title":2},"101":{"body":39,"breadcrumbs":3,"title":1},"102":{"body":32,"breadcrumbs":3,"title":1},"103":{"body":26,"breadcrumbs":4,"title":2},"104":{"body":21,"breadcrumbs":4,"title":2},"105":{"body":20,"breadcrumbs":3,"title":1},"106":{"body":31,"breadcrumbs":4,"title":2},"107":{"body":45,"breadcrumbs":4,"title":2},"108":{"body":82,"breadcrumbs":4,"title":2},"109":{"body":88,"breadcrumbs":5,"title":3},"11":{"body":35,"breadcrumbs":3,"title":1},"110":{"body":41,"breadcrumbs":4,"title":2},"111":{"body":21,"breadcrumbs":3,"title":1},"112":{"body":17,"breadcrumbs":4,"title":2},"113":{"body":44,"breadcrumbs":4,"title":2},"114":{"body":39,"breadcrumbs":4,"title":2},"115":{"body":37,"breadcrumbs":4,"title":2},"116":{"body":20,"breadcrumbs":4,"title":2},"117":{"body":42,"breadcrumbs":4,"title":2},"118":{"body":10,"breadcrumbs":5,"title":3},"119":{"body":29,"breadcrumbs":5,"title":3},"12":{"body":58,"breadcrumbs":5,"title":3},"120":{"body":37,"breadcrumbs":4,"title":2},"121":{"body":74,"breadcrumbs":5,"title":3},"122":{"body":200,"breadcrumbs":4,"title":2},"123":{"body":46,"breadcrumbs":4,"title":2},"124":{"body":25,"breadcrumbs":4,"title":2},"125":{"body":12,"breadcrumbs":4,"title":2},"126":{"body":40,"breadcrumbs":3,"title":1},"127":{"body":0,"breadcrumbs":4,"title":2},"128":{"body":14,"breadcrumbs":5,"title":3},"129":{"body":15,"breadcrumbs":6,"title":4},"13":{"body":0,"breadcrumbs":4,"title":2},"130":{"body":22,"breadcrumbs":5,"title":3},"131":{"body":17,"breadcrumbs":5,"title":3},"132":{"body":0,"breadcrumbs":4,"title":2},"133":{"body":80,"breadcrumbs":4,"title":2},"134":{"body":30,"breadcrumbs":4,"title":2},"135":{"body":28,"breadcrumbs":4,"title":2},"136":{"body":0,"breadcrumbs":4,"title":2},"137":{"body":26,"breadcrumbs":6,"title":4},"138":{"body":20,"breadcrumbs":4,"title":2},"139":{"body":0,"breadcrumbs":4,"title":2},"14":{"body":33,"breadcrumbs":4,"title":2},"140":{"body":12,"breadcrumbs":4,"title":2},"141":{"body":22,"breadcrumbs":4,"title":2},"142":{"body":0,"breadcrumbs":4,"title":2},"143":{"body":11,"breadcrumbs":4,"title":2},"144":{"body":14,"breadcrumbs":4,"title":2},"145":{"body":6,"breadcrumbs":4,"title":2},"146":{"body":8,"breadcrumbs":3,"title":1},"147":{"body":8,"breadcrumbs":3,"title":1},"148":{"body":71,"breadcrumbs":4,"title":2},"149":{"body":17,"breadcrumbs":2,"title":1},"15":{"body":25,"breadcrumbs":5,"title":3},"150":{"body":91,"breadcrumbs":2,"title":1},"151":{"body":0,"breadcrumbs":2,"title":1},"152":{"body":13,"breadcrumbs":2,"title":1},"153":{"body":37,"breadcrumbs":3,"title":2},"154":{"body":49,"breadcrumbs":4,"title":3},"155":{"body":36,"breadcrumbs":2,"title":1},"156":{"body":32,"breadcrumbs":3,"title":2},"157":{"body":49,"breadcrumbs":3,"title":2},"158":{"body":43,"breadcrumbs":3,"title":2},"159":{"body":70,"breadcrumbs":4,"title":3},"16":{"body":39,"breadcrumbs":6,"title":4},"160":{"body":66,"breadcrumbs":4,"title":3},"161":{"body":79,"breadcrumbs":3,"title":2},"162":{"body":0,"breadcrumbs":2,"title":1},"163":{"body":20,"breadcrumbs":3,"title":2},"164":{"body":22,"breadcrumbs":3,"title":2},"165":{"body":30,"breadcrumbs":4,"title":3},"166":{"body":70,"breadcrumbs":3,"title":2},"167":{"body":26,"breadcrumbs":3,"title":2},"168":{"body":0,"breadcrumbs":3,"title":2},"169":{"body":50,"breadcrumbs":3,"title":2},"17":{"body":51,"breadcrumbs":4,"title":2},"170":{"body":34,"breadcrumbs":3,"title":2},"171":{"body":44,"breadcrumbs":3,"title":2},"172":{"body":33,"breadcrumbs":3,"title":2},"173":{"body":29,"breadcrumbs":3,"title":2},"174":{"body":28,"breadcrumbs":4,"title":2},"175":{"body":59,"breadcrumbs":4,"title":2},"176":{"body":49,"breadcrumbs":3,"title":1},"177":{"body":0,"breadcrumbs":4,"title":2},"178":{"body":70,"breadcrumbs":4,"title":2},"179":{"body":49,"breadcrumbs":3,"title":1},"18":{"body":28,"breadcrumbs":4,"title":2},"180":{"body":30,"breadcrumbs":4,"title":2},"181":{"body":7,"breadcrumbs":4,"title":2},"182":{"body":22,"breadcrumbs":3,"title":1},"183":{"body":20,"breadcrumbs":4,"title":2},"184":{"body":10,"breadcrumbs":4,"title":2},"185":{"body":6,"breadcrumbs":4,"title":2},"186":{"body":48,"breadcrumbs":4,"title":2},"187":{"body":11,"breadcrumbs":4,"title":2},"188":{"body":67,"breadcrumbs":4,"title":2},"189":{"body":9,"breadcrumbs":4,"title":2},"19":{"body":13,"breadcrumbs":4,"title":2},"190":{"body":22,"breadcrumbs":4,"title":2},"191":{"body":12,"breadcrumbs":5,"title":3},"192":{"body":60,"breadcrumbs":4,"title":2},"193":{"body":0,"breadcrumbs":4,"title":2},"194":{"body":23,"breadcrumbs":5,"title":3},"195":{"body":61,"breadcrumbs":5,"title":3},"196":{"body":37,"breadcrumbs":5,"title":3},"197":{"body":41,"breadcrumbs":4,"title":2},"198":{"body":43,"breadcrumbs":6,"title":4},"199":{"body":53,"breadcrumbs":4,"title":2},"2":{"body":0,"breadcrumbs":3,"title":2},"20":{"body":57,"breadcrumbs":4,"title":2},"200":{"body":0,"breadcrumbs":4,"title":2},"201":{"body":29,"breadcrumbs":5,"title":3},"202":{"body":16,"breadcrumbs":5,"title":3},"203":{"body":30,"breadcrumbs":5,"title":3},"204":{"body":64,"breadcrumbs":4,"title":2},"205":{"body":0,"breadcrumbs":4,"title":2},"206":{"body":13,"breadcrumbs":6,"title":4},"207":{"body":14,"breadcrumbs":7,"title":5},"208":{"body":19,"breadcrumbs":5,"title":3},"209":{"body":9,"breadcrumbs":5,"title":3},"21":{"body":61,"breadcrumbs":6,"title":4},"210":{"body":13,"breadcrumbs":5,"title":3},"211":{"body":24,"breadcrumbs":4,"title":2},"212":{"body":32,"breadcrumbs":4,"title":2},"213":{"body":23,"breadcrumbs":2,"title":1},"214":{"body":29,"breadcrumbs":2,"title":1},"215":{"body":70,"breadcrumbs":3,"title":2},"216":{"body":70,"breadcrumbs":2,"title":1},"217":{"body":0,"breadcrumbs":3,"title":2},"218":{"body":49,"breadcrumbs":4,"title":3},"219":{"body":36,"breadcrumbs":6,"title":5},"22":{"body":66,"breadcrumbs":4,"title":2},"220":{"body":45,"breadcrumbs":5,"title":4},"221":{"body":55,"breadcrumbs":3,"title":2},"222":{"body":69,"breadcrumbs":3,"title":2},"223":{"body":91,"breadcrumbs":3,"title":2},"224":{"body":86,"breadcrumbs":3,"title":2},"225":{"body":101,"breadcrumbs":2,"title":1},"226":{"body":0,"breadcrumbs":4,"title":3},"227":{"body":42,"breadcrumbs":2,"title":1},"228":{"body":36,"breadcrumbs":2,"title":1},"229":{"body":65,"breadcrumbs":3,"title":2},"23":{"body":89,"breadcrumbs":3,"title":1},"230":{"body":61,"breadcrumbs":3,"title":2},"231":{"body":78,"breadcrumbs":3,"title":2},"232":{"body":53,"breadcrumbs":3,"title":2},"233":{"body":0,"breadcrumbs":4,"title":3},"234":{"body":17,"breadcrumbs":3,"title":2},"235":{"body":15,"breadcrumbs":2,"title":1},"236":{"body":9,"breadcrumbs":3,"title":2},"237":{"body":12,"breadcrumbs":2,"title":1},"238":{"body":0,"breadcrumbs":3,"title":2},"239":{"body":10,"breadcrumbs":6,"title":5},"24":{"body":67,"breadcrumbs":5,"title":3},"240":{"body":8,"breadcrumbs":5,"title":4},"241":{"body":7,"breadcrumbs":6,"title":5},"242":{"body":14,"breadcrumbs":5,"title":4},"243":{"body":21,"breadcrumbs":5,"title":4},"244":{"body":20,"breadcrumbs":3,"title":2},"245":{"body":31,"breadcrumbs":3,"title":2},"246":{"body":31,"breadcrumbs":4,"title":2},"247":{"body":61,"breadcrumbs":4,"title":2},"248":{"body":33,"breadcrumbs":3,"title":1},"249":{"body":6,"breadcrumbs":3,"title":1},"25":{"body":25,"breadcrumbs":5,"title":3},"250":{"body":18,"breadcrumbs":4,"title":2},"251":{"body":19,"breadcrumbs":4,"title":2},"252":{"body":7,"breadcrumbs":4,"title":2},"253":{"body":7,"breadcrumbs":3,"title":1},"254":{"body":16,"breadcrumbs":3,"title":1},"255":{"body":22,"breadcrumbs":5,"title":3},"256":{"body":29,"breadcrumbs":5,"title":3},"257":{"body":15,"breadcrumbs":3,"title":1},"258":{"body":6,"breadcrumbs":3,"title":1},"259":{"body":19,"breadcrumbs":4,"title":2},"26":{"body":53,"breadcrumbs":4,"title":2},"260":{"body":45,"breadcrumbs":4,"title":2},"261":{"body":35,"breadcrumbs":4,"title":2},"262":{"body":12,"breadcrumbs":4,"title":2},"263":{"body":0,"breadcrumbs":4,"title":2},"264":{"body":154,"breadcrumbs":5,"title":3},"265":{"body":62,"breadcrumbs":4,"title":2},"266":{"body":18,"breadcrumbs":6,"title":4},"267":{"body":44,"breadcrumbs":4,"title":2},"268":{"body":63,"breadcrumbs":5,"title":3},"269":{"body":0,"breadcrumbs":4,"title":2},"27":{"body":47,"breadcrumbs":6,"title":4},"270":{"body":41,"breadcrumbs":5,"title":3},"271":{"body":34,"breadcrumbs":4,"title":2},"272":{"body":20,"breadcrumbs":4,"title":2},"273":{"body":16,"breadcrumbs":4,"title":2},"274":{"body":52,"breadcrumbs":4,"title":2},"275":{"body":0,"breadcrumbs":4,"title":2},"276":{"body":28,"breadcrumbs":5,"title":3},"277":{"body":26,"breadcrumbs":5,"title":3},"278":{"body":27,"breadcrumbs":5,"title":3},"279":{"body":34,"breadcrumbs":5,"title":3},"28":{"body":39,"breadcrumbs":4,"title":2},"280":{"body":0,"breadcrumbs":4,"title":2},"281":{"body":10,"breadcrumbs":7,"title":5},"282":{"body":17,"breadcrumbs":7,"title":5},"283":{"body":15,"breadcrumbs":6,"title":4},"284":{"body":23,"breadcrumbs":6,"title":4},"285":{"body":9,"breadcrumbs":7,"title":5},"286":{"body":22,"breadcrumbs":4,"title":2},"287":{"body":30,"breadcrumbs":4,"title":2},"288":{"body":33,"breadcrumbs":2,"title":1},"289":{"body":60,"breadcrumbs":2,"title":1},"29":{"body":74,"breadcrumbs":4,"title":2},"290":{"body":67,"breadcrumbs":2,"title":1},"291":{"body":8,"breadcrumbs":3,"title":2},"292":{"body":7,"breadcrumbs":3,"title":2},"293":{"body":25,"breadcrumbs":3,"title":2},"294":{"body":34,"breadcrumbs":3,"title":2},"295":{"body":7,"breadcrumbs":3,"title":2},"296":{"body":14,"breadcrumbs":2,"title":1},"297":{"body":20,"breadcrumbs":2,"title":1},"298":{"body":26,"breadcrumbs":3,"title":2},"299":{"body":7,"breadcrumbs":2,"title":1},"3":{"body":13,"breadcrumbs":2,"title":1},"30":{"body":20,"breadcrumbs":4,"title":2},"300":{"body":3,"breadcrumbs":2,"title":1},"301":{"body":20,"breadcrumbs":2,"title":1},"302":{"body":18,"breadcrumbs":3,"title":2},"303":{"body":11,"breadcrumbs":3,"title":2},"304":{"body":29,"breadcrumbs":3,"title":2},"305":{"body":39,"breadcrumbs":4,"title":3},"306":{"body":18,"breadcrumbs":3,"title":2},"307":{"body":22,"breadcrumbs":4,"title":3},"308":{"body":7,"breadcrumbs":3,"title":2},"309":{"body":6,"breadcrumbs":2,"title":1},"31":{"body":20,"breadcrumbs":6,"title":3},"310":{"body":79,"breadcrumbs":2,"title":1},"311":{"body":8,"breadcrumbs":3,"title":2},"312":{"body":21,"breadcrumbs":3,"title":2},"313":{"body":19,"breadcrumbs":3,"title":2},"314":{"body":55,"breadcrumbs":3,"title":2},"315":{"body":0,"breadcrumbs":3,"title":2},"316":{"body":32,"breadcrumbs":4,"title":3},"317":{"body":34,"breadcrumbs":3,"title":2},"318":{"body":63,"breadcrumbs":4,"title":3},"319":{"body":29,"breadcrumbs":3,"title":2},"32":{"body":44,"breadcrumbs":5,"title":2},"320":{"body":74,"breadcrumbs":5,"title":4},"321":{"body":25,"breadcrumbs":3,"title":2},"322":{"body":0,"breadcrumbs":3,"title":2},"323":{"body":29,"breadcrumbs":4,"title":3},"324":{"body":25,"breadcrumbs":3,"title":2},"325":{"body":35,"breadcrumbs":3,"title":2},"326":{"body":62,"breadcrumbs":3,"title":2},"327":{"body":0,"breadcrumbs":3,"title":2},"328":{"body":26,"breadcrumbs":6,"title":5},"329":{"body":38,"breadcrumbs":5,"title":4},"33":{"body":52,"breadcrumbs":5,"title":2},"330":{"body":15,"breadcrumbs":6,"title":5},"331":{"body":15,"breadcrumbs":4,"title":3},"332":{"body":10,"breadcrumbs":6,"title":5},"333":{"body":20,"breadcrumbs":3,"title":2},"334":{"body":32,"breadcrumbs":3,"title":2},"335":{"body":29,"breadcrumbs":2,"title":1},"336":{"body":53,"breadcrumbs":2,"title":1},"337":{"body":29,"breadcrumbs":2,"title":1},"338":{"body":0,"breadcrumbs":3,"title":2},"339":{"body":22,"breadcrumbs":5,"title":4},"34":{"body":37,"breadcrumbs":6,"title":3},"340":{"body":14,"breadcrumbs":4,"title":3},"341":{"body":5,"breadcrumbs":2,"title":1},"342":{"body":2,"breadcrumbs":2,"title":1},"343":{"body":33,"breadcrumbs":2,"title":1},"344":{"body":23,"breadcrumbs":3,"title":2},"345":{"body":11,"breadcrumbs":5,"title":4},"346":{"body":12,"breadcrumbs":2,"title":1},"347":{"body":35,"breadcrumbs":3,"title":2},"348":{"body":27,"breadcrumbs":2,"title":1},"349":{"body":29,"breadcrumbs":3,"title":2},"35":{"body":30,"breadcrumbs":5,"title":2},"350":{"body":56,"breadcrumbs":3,"title":2},"351":{"body":52,"breadcrumbs":3,"title":2},"352":{"body":81,"breadcrumbs":3,"title":2},"353":{"body":0,"breadcrumbs":3,"title":2},"354":{"body":8,"breadcrumbs":3,"title":2},"355":{"body":14,"breadcrumbs":3,"title":2},"356":{"body":30,"breadcrumbs":4,"title":3},"357":{"body":33,"breadcrumbs":3,"title":2},"358":{"body":69,"breadcrumbs":4,"title":3},"359":{"body":57,"breadcrumbs":3,"title":2},"36":{"body":40,"breadcrumbs":5,"title":2},"360":{"body":38,"breadcrumbs":4,"title":3},"361":{"body":58,"breadcrumbs":4,"title":3},"362":{"body":26,"breadcrumbs":3,"title":2},"363":{"body":56,"breadcrumbs":3,"title":2},"364":{"body":43,"breadcrumbs":3,"title":2},"365":{"body":0,"breadcrumbs":3,"title":2},"366":{"body":20,"breadcrumbs":3,"title":2},"367":{"body":18,"breadcrumbs":3,"title":2},"368":{"body":24,"breadcrumbs":3,"title":2},"369":{"body":19,"breadcrumbs":3,"title":2},"37":{"body":59,"breadcrumbs":5,"title":2},"370":{"body":0,"breadcrumbs":3,"title":2},"371":{"body":12,"breadcrumbs":6,"title":5},"372":{"body":11,"breadcrumbs":5,"title":4},"373":{"body":12,"breadcrumbs":6,"title":5},"374":{"body":16,"breadcrumbs":4,"title":3},"375":{"body":22,"breadcrumbs":6,"title":5},"376":{"body":16,"breadcrumbs":3,"title":2},"377":{"body":36,"breadcrumbs":3,"title":2},"378":{"body":16,"breadcrumbs":2,"title":1},"379":{"body":40,"breadcrumbs":2,"title":1},"38":{"body":26,"breadcrumbs":4,"title":1},"380":{"body":30,"breadcrumbs":3,"title":2},"381":{"body":21,"breadcrumbs":2,"title":1},"382":{"body":33,"breadcrumbs":4,"title":3},"383":{"body":91,"breadcrumbs":3,"title":2},"384":{"body":27,"breadcrumbs":2,"title":1},"385":{"body":22,"breadcrumbs":2,"title":1},"386":{"body":29,"breadcrumbs":3,"title":2},"387":{"body":59,"breadcrumbs":4,"title":3},"388":{"body":37,"breadcrumbs":4,"title":3},"389":{"body":129,"breadcrumbs":6,"title":5},"39":{"body":46,"breadcrumbs":5,"title":2},"390":{"body":44,"breadcrumbs":3,"title":2},"391":{"body":35,"breadcrumbs":4,"title":3},"392":{"body":29,"breadcrumbs":3,"title":2},"393":{"body":20,"breadcrumbs":2,"title":1},"394":{"body":63,"breadcrumbs":2,"title":1},"395":{"body":15,"breadcrumbs":3,"title":2},"396":{"body":25,"breadcrumbs":2,"title":1},"397":{"body":36,"breadcrumbs":4,"title":3},"398":{"body":94,"breadcrumbs":3,"title":2},"399":{"body":14,"breadcrumbs":4,"title":3},"4":{"body":11,"breadcrumbs":2,"title":1},"40":{"body":34,"breadcrumbs":6,"title":3},"400":{"body":25,"breadcrumbs":4,"title":3},"401":{"body":25,"breadcrumbs":4,"title":3},"402":{"body":24,"breadcrumbs":4,"title":3},"403":{"body":20,"breadcrumbs":4,"title":3},"404":{"body":9,"breadcrumbs":4,"title":3},"405":{"body":7,"breadcrumbs":3,"title":2},"406":{"body":9,"breadcrumbs":3,"title":2},"407":{"body":74,"breadcrumbs":4,"title":3},"408":{"body":13,"breadcrumbs":3,"title":2},"409":{"body":20,"breadcrumbs":4,"title":3},"41":{"body":31,"breadcrumbs":5,"title":2},"410":{"body":22,"breadcrumbs":3,"title":2},"411":{"body":56,"breadcrumbs":4,"title":3},"412":{"body":32,"breadcrumbs":3,"title":2},"413":{"body":148,"breadcrumbs":6,"title":5},"414":{"body":70,"breadcrumbs":3,"title":2},"415":{"body":40,"breadcrumbs":3,"title":2},"416":{"body":29,"breadcrumbs":2,"title":1},"417":{"body":18,"breadcrumbs":2,"title":1},"418":{"body":38,"breadcrumbs":2,"title":1},"419":{"body":16,"breadcrumbs":3,"title":2},"42":{"body":17,"breadcrumbs":6,"title":3},"420":{"body":47,"breadcrumbs":3,"title":2},"421":{"body":42,"breadcrumbs":3,"title":2},"422":{"body":84,"breadcrumbs":3,"title":2},"423":{"body":29,"breadcrumbs":4,"title":3},"424":{"body":47,"breadcrumbs":4,"title":3},"425":{"body":28,"breadcrumbs":3,"title":2},"426":{"body":10,"breadcrumbs":2,"title":1},"427":{"body":25,"breadcrumbs":2,"title":1},"428":{"body":12,"breadcrumbs":3,"title":2},"429":{"body":54,"breadcrumbs":3,"title":2},"43":{"body":49,"breadcrumbs":4,"title":1},"430":{"body":37,"breadcrumbs":3,"title":2},"431":{"body":53,"breadcrumbs":3,"title":2},"432":{"body":21,"breadcrumbs":3,"title":2},"433":{"body":15,"breadcrumbs":3,"title":2},"434":{"body":9,"breadcrumbs":2,"title":1},"435":{"body":9,"breadcrumbs":2,"title":1},"436":{"body":32,"breadcrumbs":3,"title":2},"437":{"body":45,"breadcrumbs":3,"title":2},"438":{"body":54,"breadcrumbs":3,"title":2},"439":{"body":54,"breadcrumbs":3,"title":2},"44":{"body":33,"breadcrumbs":5,"title":2},"440":{"body":21,"breadcrumbs":3,"title":2},"441":{"body":16,"breadcrumbs":3,"title":2},"442":{"body":16,"breadcrumbs":2,"title":1},"443":{"body":16,"breadcrumbs":2,"title":1},"444":{"body":15,"breadcrumbs":3,"title":2},"445":{"body":33,"breadcrumbs":3,"title":2},"446":{"body":60,"breadcrumbs":4,"title":3},"447":{"body":62,"breadcrumbs":4,"title":3},"448":{"body":53,"breadcrumbs":8,"title":7},"449":{"body":19,"breadcrumbs":3,"title":2},"45":{"body":33,"breadcrumbs":5,"title":2},"450":{"body":12,"breadcrumbs":2,"title":1},"451":{"body":7,"breadcrumbs":2,"title":1},"452":{"body":7,"breadcrumbs":3,"title":2},"453":{"body":19,"breadcrumbs":3,"title":2},"454":{"body":57,"breadcrumbs":4,"title":3},"455":{"body":44,"breadcrumbs":4,"title":3},"456":{"body":20,"breadcrumbs":3,"title":2},"457":{"body":24,"breadcrumbs":3,"title":2},"458":{"body":24,"breadcrumbs":3,"title":2},"459":{"body":10,"breadcrumbs":3,"title":2},"46":{"body":12,"breadcrumbs":4,"title":1},"460":{"body":21,"breadcrumbs":2,"title":1},"461":{"body":6,"breadcrumbs":3,"title":2},"462":{"body":8,"breadcrumbs":3,"title":2},"463":{"body":6,"breadcrumbs":3,"title":2},"464":{"body":29,"breadcrumbs":3,"title":2},"465":{"body":22,"breadcrumbs":3,"title":2},"466":{"body":45,"breadcrumbs":3,"title":2},"467":{"body":25,"breadcrumbs":3,"title":2},"468":{"body":55,"breadcrumbs":3,"title":2},"469":{"body":19,"breadcrumbs":3,"title":2},"47":{"body":21,"breadcrumbs":5,"title":2},"470":{"body":29,"breadcrumbs":3,"title":2},"471":{"body":28,"breadcrumbs":4,"title":2},"472":{"body":26,"breadcrumbs":3,"title":1},"473":{"body":48,"breadcrumbs":3,"title":1},"474":{"body":0,"breadcrumbs":3,"title":1},"475":{"body":4,"breadcrumbs":4,"title":2},"476":{"body":4,"breadcrumbs":4,"title":2},"477":{"body":13,"breadcrumbs":4,"title":2},"478":{"body":2,"breadcrumbs":4,"title":2},"479":{"body":4,"breadcrumbs":3,"title":1},"48":{"body":16,"breadcrumbs":6,"title":3},"480":{"body":3,"breadcrumbs":4,"title":2},"481":{"body":2,"breadcrumbs":4,"title":2},"482":{"body":0,"breadcrumbs":4,"title":2},"483":{"body":23,"breadcrumbs":3,"title":1},"484":{"body":10,"breadcrumbs":3,"title":1},"485":{"body":15,"breadcrumbs":3,"title":1},"486":{"body":4,"breadcrumbs":4,"title":2},"487":{"body":4,"breadcrumbs":3,"title":1},"488":{"body":4,"breadcrumbs":4,"title":2},"489":{"body":0,"breadcrumbs":4,"title":2},"49":{"body":15,"breadcrumbs":7,"title":4},"490":{"body":19,"breadcrumbs":2,"title":0},"491":{"body":18,"breadcrumbs":2,"title":0},"492":{"body":27,"breadcrumbs":4,"title":2},"493":{"body":0,"breadcrumbs":4,"title":2},"494":{"body":8,"breadcrumbs":2,"title":0},"495":{"body":7,"breadcrumbs":3,"title":1},"496":{"body":0,"breadcrumbs":4,"title":2},"497":{"body":7,"breadcrumbs":5,"title":3},"498":{"body":6,"breadcrumbs":4,"title":2},"499":{"body":16,"breadcrumbs":4,"title":2},"5":{"body":8,"breadcrumbs":2,"title":1},"50":{"body":11,"breadcrumbs":6,"title":3},"500":{"body":11,"breadcrumbs":3,"title":1},"501":{"body":26,"breadcrumbs":5,"title":3},"502":{"body":5,"breadcrumbs":3,"title":1},"503":{"body":52,"breadcrumbs":4,"title":2},"504":{"body":50,"breadcrumbs":4,"title":2},"505":{"body":23,"breadcrumbs":4,"title":2},"506":{"body":0,"breadcrumbs":4,"title":2},"507":{"body":29,"breadcrumbs":5,"title":3},"508":{"body":21,"breadcrumbs":5,"title":3},"509":{"body":22,"breadcrumbs":5,"title":3},"51":{"body":13,"breadcrumbs":6,"title":3},"510":{"body":0,"breadcrumbs":4,"title":2},"511":{"body":29,"breadcrumbs":4,"title":2},"512":{"body":27,"breadcrumbs":4,"title":2},"513":{"body":24,"breadcrumbs":4,"title":2},"514":{"body":0,"breadcrumbs":4,"title":2},"515":{"body":6,"breadcrumbs":4,"title":2},"516":{"body":14,"breadcrumbs":4,"title":2},"517":{"body":36,"breadcrumbs":6,"title":4},"518":{"body":14,"breadcrumbs":4,"title":2},"519":{"body":45,"breadcrumbs":4,"title":2},"52":{"body":24,"breadcrumbs":5,"title":2},"520":{"body":48,"breadcrumbs":4,"title":2},"521":{"body":0,"breadcrumbs":4,"title":2},"522":{"body":10,"breadcrumbs":6,"title":4},"523":{"body":24,"breadcrumbs":6,"title":4},"524":{"body":29,"breadcrumbs":6,"title":4},"525":{"body":10,"breadcrumbs":5,"title":3},"526":{"body":13,"breadcrumbs":5,"title":3},"527":{"body":21,"breadcrumbs":4,"title":2},"528":{"body":34,"breadcrumbs":4,"title":2},"529":{"body":18,"breadcrumbs":3,"title":1},"53":{"body":18,"breadcrumbs":5,"title":2},"530":{"body":78,"breadcrumbs":5,"title":3},"531":{"body":4,"breadcrumbs":3,"title":1},"532":{"body":4,"breadcrumbs":3,"title":1},"533":{"body":8,"breadcrumbs":3,"title":1},"534":{"body":4,"breadcrumbs":3,"title":1},"535":{"body":14,"breadcrumbs":4,"title":2},"536":{"body":9,"breadcrumbs":3,"title":1},"537":{"body":7,"breadcrumbs":3,"title":1},"538":{"body":11,"breadcrumbs":3,"title":1},"539":{"body":13,"breadcrumbs":4,"title":2},"54":{"body":29,"breadcrumbs":5,"title":2},"540":{"body":11,"breadcrumbs":4,"title":2},"541":{"body":7,"breadcrumbs":3,"title":1},"542":{"body":16,"breadcrumbs":3,"title":1},"543":{"body":10,"breadcrumbs":4,"title":2},"544":{"body":16,"breadcrumbs":3,"title":1},"545":{"body":18,"breadcrumbs":3,"title":1},"546":{"body":11,"breadcrumbs":4,"title":2},"547":{"body":3,"breadcrumbs":3,"title":1},"548":{"body":3,"breadcrumbs":3,"title":1},"549":{"body":8,"breadcrumbs":3,"title":1},"55":{"body":49,"breadcrumbs":5,"title":2},"550":{"body":11,"breadcrumbs":4,"title":2},"551":{"body":5,"breadcrumbs":3,"title":1},"552":{"body":12,"breadcrumbs":3,"title":1},"553":{"body":23,"breadcrumbs":3,"title":1},"554":{"body":19,"breadcrumbs":3,"title":1},"555":{"body":11,"breadcrumbs":4,"title":2},"556":{"body":4,"breadcrumbs":3,"title":1},"557":{"body":11,"breadcrumbs":3,"title":1},"558":{"body":15,"breadcrumbs":3,"title":1},"559":{"body":10,"breadcrumbs":3,"title":1},"56":{"body":42,"breadcrumbs":6,"title":3},"560":{"body":17,"breadcrumbs":3,"title":1},"561":{"body":9,"breadcrumbs":4,"title":2},"562":{"body":5,"breadcrumbs":3,"title":1},"563":{"body":11,"breadcrumbs":3,"title":1},"564":{"body":16,"breadcrumbs":3,"title":1},"565":{"body":22,"breadcrumbs":3,"title":1},"566":{"body":10,"breadcrumbs":3,"title":1},"567":{"body":10,"breadcrumbs":4,"title":2},"568":{"body":5,"breadcrumbs":3,"title":1},"569":{"body":12,"breadcrumbs":3,"title":1},"57":{"body":56,"breadcrumbs":5,"title":2},"570":{"body":31,"breadcrumbs":3,"title":1},"571":{"body":12,"breadcrumbs":3,"title":1},"572":{"body":15,"breadcrumbs":4,"title":2},"573":{"body":3,"breadcrumbs":3,"title":1},"574":{"body":3,"breadcrumbs":3,"title":1},"575":{"body":29,"breadcrumbs":3,"title":1},"576":{"body":14,"breadcrumbs":4,"title":2},"577":{"body":10,"breadcrumbs":3,"title":1},"578":{"body":15,"breadcrumbs":4,"title":2},"579":{"body":4,"breadcrumbs":3,"title":1},"58":{"body":32,"breadcrumbs":5,"title":2},"580":{"body":6,"breadcrumbs":3,"title":1},"581":{"body":28,"breadcrumbs":3,"title":1},"582":{"body":12,"breadcrumbs":3,"title":1},"583":{"body":12,"breadcrumbs":4,"title":2},"584":{"body":6,"breadcrumbs":4,"title":2},"585":{"body":11,"breadcrumbs":3,"title":1},"586":{"body":27,"breadcrumbs":4,"title":2},"587":{"body":58,"breadcrumbs":3,"title":1},"588":{"body":14,"breadcrumbs":3,"title":1},"589":{"body":31,"breadcrumbs":5,"title":3},"59":{"body":17,"breadcrumbs":4,"title":2},"590":{"body":12,"breadcrumbs":4,"title":2},"591":{"body":4,"breadcrumbs":3,"title":1},"592":{"body":18,"breadcrumbs":3,"title":1},"593":{"body":88,"breadcrumbs":3,"title":1},"594":{"body":22,"breadcrumbs":3,"title":1},"595":{"body":17,"breadcrumbs":3,"title":1},"596":{"body":10,"breadcrumbs":4,"title":2},"597":{"body":29,"breadcrumbs":4,"title":2},"598":{"body":25,"breadcrumbs":4,"title":2},"599":{"body":63,"breadcrumbs":4,"title":2},"6":{"body":25,"breadcrumbs":3,"title":2},"60":{"body":66,"breadcrumbs":5,"title":3},"600":{"body":22,"breadcrumbs":4,"title":2},"601":{"body":26,"breadcrumbs":4,"title":2},"602":{"body":22,"breadcrumbs":4,"title":2},"603":{"body":44,"breadcrumbs":4,"title":2},"604":{"body":0,"breadcrumbs":4,"title":2},"605":{"body":66,"breadcrumbs":4,"title":2},"606":{"body":41,"breadcrumbs":3,"title":1},"607":{"body":58,"breadcrumbs":4,"title":2},"608":{"body":34,"breadcrumbs":3,"title":1},"609":{"body":77,"breadcrumbs":5,"title":3},"61":{"body":63,"breadcrumbs":4,"title":2},"610":{"body":22,"breadcrumbs":3,"title":1},"611":{"body":51,"breadcrumbs":5,"title":3},"612":{"body":34,"breadcrumbs":3,"title":1},"613":{"body":60,"breadcrumbs":4,"title":2},"614":{"body":28,"breadcrumbs":3,"title":1},"615":{"body":33,"breadcrumbs":4,"title":2},"616":{"body":12,"breadcrumbs":3,"title":1},"617":{"body":40,"breadcrumbs":4,"title":2},"618":{"body":33,"breadcrumbs":4,"title":2},"619":{"body":14,"breadcrumbs":3,"title":1},"62":{"body":43,"breadcrumbs":5,"title":3},"620":{"body":24,"breadcrumbs":5,"title":3},"621":{"body":61,"breadcrumbs":4,"title":2},"622":{"body":15,"breadcrumbs":3,"title":1},"623":{"body":34,"breadcrumbs":5,"title":3},"624":{"body":8,"breadcrumbs":3,"title":1},"625":{"body":33,"breadcrumbs":5,"title":3},"626":{"body":0,"breadcrumbs":5,"title":3},"627":{"body":39,"breadcrumbs":4,"title":2},"628":{"body":25,"breadcrumbs":4,"title":2},"629":{"body":31,"breadcrumbs":4,"title":2},"63":{"body":29,"breadcrumbs":4,"title":2},"630":{"body":82,"breadcrumbs":4,"title":2},"631":{"body":25,"breadcrumbs":4,"title":2},"632":{"body":19,"breadcrumbs":4,"title":2},"633":{"body":0,"breadcrumbs":5,"title":3},"634":{"body":37,"breadcrumbs":5,"title":3},"635":{"body":23,"breadcrumbs":5,"title":3},"636":{"body":42,"breadcrumbs":5,"title":3},"637":{"body":40,"breadcrumbs":5,"title":3},"638":{"body":0,"breadcrumbs":5,"title":3},"639":{"body":54,"breadcrumbs":5,"title":3},"64":{"body":40,"breadcrumbs":4,"title":2},"640":{"body":42,"breadcrumbs":6,"title":4},"641":{"body":27,"breadcrumbs":5,"title":3},"642":{"body":0,"breadcrumbs":4,"title":2},"643":{"body":35,"breadcrumbs":4,"title":2},"644":{"body":29,"breadcrumbs":5,"title":3},"645":{"body":45,"breadcrumbs":4,"title":2},"646":{"body":0,"breadcrumbs":4,"title":2},"647":{"body":46,"breadcrumbs":5,"title":3},"648":{"body":34,"breadcrumbs":4,"title":2},"649":{"body":0,"breadcrumbs":5,"title":3},"65":{"body":39,"breadcrumbs":4,"title":2},"650":{"body":25,"breadcrumbs":4,"title":2},"651":{"body":40,"breadcrumbs":5,"title":3},"652":{"body":0,"breadcrumbs":5,"title":3},"653":{"body":22,"breadcrumbs":5,"title":3},"654":{"body":25,"breadcrumbs":5,"title":3},"655":{"body":57,"breadcrumbs":5,"title":3},"656":{"body":19,"breadcrumbs":4,"title":2},"657":{"body":21,"breadcrumbs":6,"title":3},"658":{"body":29,"breadcrumbs":5,"title":2},"659":{"body":57,"breadcrumbs":5,"title":2},"66":{"body":24,"breadcrumbs":4,"title":2},"660":{"body":0,"breadcrumbs":5,"title":2},"661":{"body":43,"breadcrumbs":5,"title":2},"662":{"body":15,"breadcrumbs":7,"title":4},"663":{"body":23,"breadcrumbs":4,"title":1},"664":{"body":34,"breadcrumbs":5,"title":2},"665":{"body":29,"breadcrumbs":4,"title":1},"666":{"body":15,"breadcrumbs":5,"title":2},"667":{"body":12,"breadcrumbs":4,"title":2},"668":{"body":32,"breadcrumbs":4,"title":2},"669":{"body":8,"breadcrumbs":4,"title":2},"67":{"body":21,"breadcrumbs":4,"title":2},"670":{"body":22,"breadcrumbs":4,"title":2},"671":{"body":29,"breadcrumbs":3,"title":1},"672":{"body":54,"breadcrumbs":4,"title":2},"673":{"body":0,"breadcrumbs":4,"title":2},"674":{"body":34,"breadcrumbs":5,"title":3},"675":{"body":20,"breadcrumbs":5,"title":3},"676":{"body":16,"breadcrumbs":4,"title":2},"677":{"body":17,"breadcrumbs":4,"title":2},"678":{"body":38,"breadcrumbs":4,"title":2},"679":{"body":20,"breadcrumbs":4,"title":2},"68":{"body":33,"breadcrumbs":4,"title":2},"680":{"body":31,"breadcrumbs":5,"title":3},"681":{"body":30,"breadcrumbs":5,"title":3},"682":{"body":13,"breadcrumbs":4,"title":2},"683":{"body":16,"breadcrumbs":4,"title":2},"684":{"body":0,"breadcrumbs":4,"title":2},"685":{"body":21,"breadcrumbs":3,"title":1},"686":{"body":19,"breadcrumbs":3,"title":1},"687":{"body":18,"breadcrumbs":5,"title":3},"688":{"body":26,"breadcrumbs":4,"title":2},"689":{"body":0,"breadcrumbs":4,"title":2},"69":{"body":28,"breadcrumbs":4,"title":2},"690":{"body":35,"breadcrumbs":5,"title":3},"691":{"body":32,"breadcrumbs":6,"title":4},"692":{"body":21,"breadcrumbs":4,"title":2},"693":{"body":0,"breadcrumbs":4,"title":2},"694":{"body":28,"breadcrumbs":7,"title":5},"695":{"body":27,"breadcrumbs":5,"title":3},"696":{"body":45,"breadcrumbs":5,"title":3},"697":{"body":0,"breadcrumbs":5,"title":3},"698":{"body":12,"breadcrumbs":5,"title":3},"699":{"body":27,"breadcrumbs":5,"title":3},"7":{"body":25,"breadcrumbs":3,"title":2},"70":{"body":81,"breadcrumbs":4,"title":2},"700":{"body":17,"breadcrumbs":6,"title":4},"701":{"body":0,"breadcrumbs":4,"title":2},"702":{"body":17,"breadcrumbs":5,"title":3},"703":{"body":31,"breadcrumbs":7,"title":5},"704":{"body":15,"breadcrumbs":5,"title":3},"705":{"body":0,"breadcrumbs":4,"title":2},"706":{"body":22,"breadcrumbs":7,"title":5},"707":{"body":41,"breadcrumbs":5,"title":3},"708":{"body":0,"breadcrumbs":4,"title":2},"709":{"body":22,"breadcrumbs":5,"title":3},"71":{"body":59,"breadcrumbs":4,"title":2},"710":{"body":22,"breadcrumbs":5,"title":3},"711":{"body":67,"breadcrumbs":4,"title":2},"712":{"body":13,"breadcrumbs":4,"title":2},"713":{"body":16,"breadcrumbs":6,"title":3},"714":{"body":43,"breadcrumbs":5,"title":2},"715":{"body":0,"breadcrumbs":5,"title":2},"716":{"body":32,"breadcrumbs":4,"title":1},"717":{"body":24,"breadcrumbs":4,"title":1},"718":{"body":43,"breadcrumbs":4,"title":1},"719":{"body":0,"breadcrumbs":4,"title":1},"72":{"body":38,"breadcrumbs":5,"title":3},"720":{"body":122,"breadcrumbs":4,"title":1},"721":{"body":66,"breadcrumbs":4,"title":1},"722":{"body":197,"breadcrumbs":4,"title":1},"723":{"body":35,"breadcrumbs":4,"title":1},"724":{"body":79,"breadcrumbs":4,"title":1},"725":{"body":167,"breadcrumbs":4,"title":1},"726":{"body":100,"breadcrumbs":4,"title":1},"727":{"body":27,"breadcrumbs":4,"title":1},"728":{"body":47,"breadcrumbs":5,"title":2},"729":{"body":13,"breadcrumbs":5,"title":2},"73":{"body":59,"breadcrumbs":4,"title":2},"730":{"body":17,"breadcrumbs":4,"title":2},"731":{"body":52,"breadcrumbs":3,"title":1},"732":{"body":104,"breadcrumbs":3,"title":1},"733":{"body":0,"breadcrumbs":3,"title":1},"734":{"body":15,"breadcrumbs":4,"title":2},"735":{"body":48,"breadcrumbs":4,"title":2},"736":{"body":21,"breadcrumbs":4,"title":2},"737":{"body":26,"breadcrumbs":4,"title":2},"738":{"body":33,"breadcrumbs":6,"title":4},"739":{"body":54,"breadcrumbs":3,"title":1},"74":{"body":17,"breadcrumbs":4,"title":2},"740":{"body":54,"breadcrumbs":4,"title":2},"741":{"body":15,"breadcrumbs":4,"title":2},"742":{"body":20,"breadcrumbs":4,"title":2},"743":{"body":17,"breadcrumbs":4,"title":2},"744":{"body":48,"breadcrumbs":3,"title":1},"745":{"body":36,"breadcrumbs":5,"title":3},"746":{"body":156,"breadcrumbs":5,"title":3},"747":{"body":78,"breadcrumbs":4,"title":2},"748":{"body":62,"breadcrumbs":4,"title":2},"749":{"body":74,"breadcrumbs":4,"title":2},"75":{"body":40,"breadcrumbs":5,"title":3},"750":{"body":50,"breadcrumbs":4,"title":2},"751":{"body":16,"breadcrumbs":4,"title":2},"752":{"body":21,"breadcrumbs":6,"title":3},"753":{"body":105,"breadcrumbs":4,"title":1},"754":{"body":170,"breadcrumbs":4,"title":1},"755":{"body":0,"breadcrumbs":5,"title":2},"756":{"body":63,"breadcrumbs":5,"title":2},"757":{"body":39,"breadcrumbs":5,"title":2},"758":{"body":52,"breadcrumbs":5,"title":2},"759":{"body":34,"breadcrumbs":5,"title":2},"76":{"body":19,"breadcrumbs":4,"title":2},"760":{"body":167,"breadcrumbs":4,"title":1},"761":{"body":38,"breadcrumbs":5,"title":2},"762":{"body":147,"breadcrumbs":8,"title":5},"763":{"body":59,"breadcrumbs":5,"title":2},"764":{"body":23,"breadcrumbs":5,"title":2},"77":{"body":24,"breadcrumbs":4,"title":2},"78":{"body":46,"breadcrumbs":4,"title":2},"79":{"body":16,"breadcrumbs":4,"title":2},"8":{"body":23,"breadcrumbs":3,"title":2},"80":{"body":20,"breadcrumbs":5,"title":3},"81":{"body":7,"breadcrumbs":4,"title":2},"82":{"body":18,"breadcrumbs":4,"title":2},"83":{"body":42,"breadcrumbs":5,"title":3},"84":{"body":55,"breadcrumbs":4,"title":2},"85":{"body":65,"breadcrumbs":5,"title":3},"86":{"body":22,"breadcrumbs":4,"title":2},"87":{"body":73,"breadcrumbs":5,"title":3},"88":{"body":28,"breadcrumbs":4,"title":2},"89":{"body":26,"breadcrumbs":4,"title":2},"9":{"body":27,"breadcrumbs":4,"title":2},"90":{"body":30,"breadcrumbs":4,"title":2},"91":{"body":50,"breadcrumbs":5,"title":3},"92":{"body":54,"breadcrumbs":3,"title":1},"93":{"body":38,"breadcrumbs":3,"title":1},"94":{"body":32,"breadcrumbs":4,"title":2},"95":{"body":28,"breadcrumbs":4,"title":2},"96":{"body":129,"breadcrumbs":5,"title":3},"97":{"body":0,"breadcrumbs":4,"title":2},"98":{"body":28,"breadcrumbs":4,"title":2},"99":{"body":27,"breadcrumbs":4,"title":2}},"docs":{"0":{"body":"Create rich narrative simulations through code that reads like stories. Welcome to the complete guide for the Storybook narrative simulation language! Whether you're a creative writer bringing characters to life or a developer building simulation systems, this documentation will help you master Storybook. ⚠️ Alpha Software Notice Storybook is currently in alpha and under active development at r3t Studios . While the core language features are stable and ready to use, you should expect: New features to be added as we expand the language capabilities Minor syntax adjustments as we refine the design based on real-world usage API changes in the compiled output format as we optimize for game engine integration We're committed to a thoughtful path toward version 1.0. Breaking changes will be clearly documented, and we'll provide migration guides when syntax evolves. Your feedback during this alpha period is invaluable in shaping the language's future!","breadcrumbs":"Introduction » Storybook Language Guide","id":"0","title":"Storybook Language Guide"},"1":{"body":"Storybook is a compiled simulation language designed for open-world, autonomous game simulations . While it includes a basic embedded virtual machine for terminal-based debugging, it's built to be integrated into game engines and developed hand-in-hand with technical game developers. Storybook defines characters, behaviors, relationships, and narrative events for autonomous agents in dynamic worlds. It bridges the gap between storytelling and technical simulation through: Readable syntax - Code that looks like natural descriptions, but compiles to efficient bytecode Named nodes - Behavior trees you can read as stories, that drive AI decision-making Prose blocks - Embed narrative directly in definitions for context-aware storytelling Rich semantics - From simple traits to complex state machines and schedules Game engine integration - Designed to power autonomous NPCs in Unity, Unreal, Godot, and custom engines","breadcrumbs":"Introduction » What is Storybook?","id":"1","title":"What is Storybook?"},"10":{"body":"In this tutorial, we follow Martha and her bakery family, using their daily lives to learn each concept: Creating Characters - Define Martha with traits and descriptions Your First Behavior Tree - Give characters decision-making abilities Making Characters Act - Actions, conditions, and decorators Advanced Behaviors - Subtrees, parameters, and complex patterns Character Relationships - Model how characters interact Schedules and Time - Give characters daily routines Life Arcs - Track character development over time","breadcrumbs":"Welcome to Storybook » What You Will Learn","id":"10","title":"What You Will Learn"},"100":{"body":"States form a loop (day/night, seasons, mood swings): life_arc DayNightCycle { state dawn { on hour >= 8 -> day } state day { on hour >= 18 -> dusk } state dusk { on hour >= 20 -> night } state night { on hour >= 6 -> dawn }\n}","breadcrumbs":"Life Arcs » Cyclic States","id":"100","title":"Cyclic States"},"101":{"body":"Order transitions by urgency : Put the most critical conditions first, since the first true transition wins. Use descriptive state names : waiting_for_customer is clearer than state1. Add narrative prose blocks : They make life arcs readable as stories and serve as documentation. Avoid orphan states : Every state should be reachable from some other state (the compiler will warn you about unreachable states).","breadcrumbs":"Life Arcs » Tips","id":"101","title":"Tips"},"102":{"body":"Congratulations! You have completed the tutorial. You now know how to: Create characters with species, templates, and enums Build behavior trees with selectors, sequences, and decorators Add conditions and action parameters Model relationships with perspectives Define time-based schedules Track character development with life arcs","breadcrumbs":"Life Arcs » What You Have Learned","id":"102","title":"What You Have Learned"},"103":{"body":"Reference Guide : Complete syntax specifications Design Patterns : Common patterns and best practices Examples Gallery : Full working examples to learn from Reference : For complete life arc syntax, see the Life Arcs Reference .","breadcrumbs":"Life Arcs » Where to Go Next","id":"103","title":"Where to Go Next"},"104":{"body":"So far you have created characters, given them behaviors, connected them with relationships, scheduled their days, and guided them through life arcs. But characters need places to be and organizations to belong to . That is what locations and institutions provide.","breadcrumbs":"Locations and Institutions » Locations and Institutions","id":"104","title":"Locations and Institutions"},"105":{"body":"A location is a place in your world. It can be a building, a room, a park, a city -- any space where things happen. Locations hold fields that describe the place and optional prose blocks for narrative detail.","breadcrumbs":"Locations and Institutions » What Are Locations?","id":"105","title":"What Are Locations?"},"106":{"body":"Let's create the bakery where Martha works: location BakersBakery { type: bakery address: \"14 Main Street\" capacity: 30\n} That is all it takes. The location keyword, a name, and a block of fields. Every field is a key-value pair, and you choose whatever fields make sense for your world.","breadcrumbs":"Locations and Institutions » Your First Location","id":"106","title":"Your First Location"},"107":{"body":"A real location needs more than three fields. Let's flesh out the bakery: location BakersBakery { type: bakery address: \"14 Main Street\" capacity: 30 employees: 4 specialty: \"artisan sourdough\" daily_output_loaves: 80..120 open: true established: \"2011\"\n} Notice daily_output_loaves: 80..120 -- that is a range. Each simulation run can pick a different number of loaves, adding natural variation.","breadcrumbs":"Locations and Institutions » Adding Detail","id":"107","title":"Adding Detail"},"108":{"body":"Bare fields are good for data, but locations also need narrative flavor. Use prose blocks: location BakersBakery { type: bakery address: \"14 Main Street\" capacity: 30 ---description A warm, inviting bakery on Main Street. The smell of fresh bread wafts out the door every morning at dawn. Martha has run the shop for fifteen years, and the locals consider it the heart of the neighborhood. ---\n} Prose blocks start with ---tag_name and end with ---. The tag name (description here) becomes the key. You can have as many prose blocks as you want: location BakersBakery { type: bakery ---description The bakery on Main Street... --- ---history Originally a hardware store, Martha converted the space in 2011... --- ---atmosphere Flour dust catches the light from tall windows... ---\n}","breadcrumbs":"Locations and Institutions » Prose Blocks","id":"108","title":"Prose Blocks"},"109":{"body":"Locations work best when they form a coherent world. Here is the Baker family's neighborhood: location BakersBakery { type: bakery address: \"14 Main Street\" capacity: 30 owner: Martha ---description Martha's artisan bakery. The stone oven was imported from France. ---\n} location BakerHome { type: residence address: \"22 Elm Lane\" bedrooms: 4 has_garden: true ---description The Baker family home. Martha insisted on an oversized kitchen. ---\n} location BakersGuildHall { type: guild_hall address: \"7 Guild Row\" capacity: 100 established: \"1892\" ---description The historic headquarters of the Bakers Guild. ---\n} location TownSquare { type: public_square capacity: 500 has_fountain: true has_market_stalls: true ---description The central gathering place. On weekends, the farmers market fills the square with produce stalls. ---\n}","breadcrumbs":"Locations and Institutions » Building a World with Locations","id":"109","title":"Building a World with Locations"},"11":{"body":"Storybook is a domain-specific language (DSL) for narrative simulation. It lets you describe: Who characters are (traits, backstory, species) What they do (behavior trees with decision logic) How they relate to others (relationships with perspectives) When they act (schedules and time-based routines) How they change (life arcs and state machines) All of this in syntax designed to be readable and expressive.","breadcrumbs":"Welcome to Storybook » What is Storybook?","id":"11","title":"What is Storybook?"},"110":{"body":"Storybook does not enforce a built-in parent-child relationship for locations. Instead, you use fields to express hierarchy: location MainStreet { type: street district: TownCenter shops: 12\n} location BakersBakery { type: bakery street: MainStreet district: TownCenter\n} This convention-based approach keeps the language simple while letting you model whatever spatial relationships your world needs.","breadcrumbs":"Locations and Institutions » Modeling Hierarchy","id":"110","title":"Modeling Hierarchy"},"111":{"body":"An institution is an organization, group, or system. Think of it as a character that represents a collective: a guild, a government, a school, a business. Institutions have a key capability that locations lack -- they can use behaviors and schedules , just like characters.","breadcrumbs":"Locations and Institutions » What Are Institutions?","id":"111","title":"What Are Institutions?"},"112":{"body":"institution BakersGuild { type: trade_guild members: 50 founded: \"1892\" reputation: 0.85\n} This looks just like a location so far. The difference comes when you add behaviors.","breadcrumbs":"Locations and Institutions » Your First Institution","id":"112","title":"Your First Institution"},"113":{"body":"Institutions can act. The uses behaviors clause links behavior trees to the institution: institution BakersGuild { type: trade_guild members: 50 reputation: 0.85 uses behaviors: [ { tree: ManageApprentices }, { tree: NegotiateSuppliers }, { tree: HostEvents } ]\n} Each entry in the list is a behavior link object with a tree field. This tells the simulation engine that the Bakers Guild can manage apprentices, negotiate with suppliers, and host events.","breadcrumbs":"Locations and Institutions » Institutions with Behaviors","id":"113","title":"Institutions with Behaviors"},"114":{"body":"Not all behaviors are equally important. Use the priority field: institution BakersGuild { type: trade_guild uses behaviors: [ { tree: ManageApprentices, priority: normal }, { tree: NegotiateSuppliers, priority: high }, { tree: HostEvents, priority: low } ]\n} Priority levels are low, normal, high, and critical. Higher-priority behaviors take precedence when the institution must choose between actions.","breadcrumbs":"Locations and Institutions » Behavior Priorities","id":"114","title":"Behavior Priorities"},"115":{"body":"Some behaviors only activate under certain conditions: institution BakersGuild { type: trade_guild reputation: 0.85 uses behaviors: [ { tree: ManageApprentices }, { tree: NegotiateSuppliers, priority: high }, { tree: EmergencyMeeting, when: reputation < 0.3, priority: critical } ]\n} The when clause uses an expression . Here, the emergency meeting behavior only activates when reputation drops below 0.3.","breadcrumbs":"Locations and Institutions » Conditional Behaviors","id":"115","title":"Conditional Behaviors"},"116":{"body":"Institutions can also follow schedules: institution BakersGuild { type: trade_guild uses schedule: GuildOperatingHours\n} For multiple schedules: institution BakersGuild { type: trade_guild uses schedules: [WeekdaySchedule, WeekendSchedule]\n}","breadcrumbs":"Locations and Institutions » Institutions with Schedules","id":"116","title":"Institutions with Schedules"},"117":{"body":"Just like locations, institutions support prose blocks: institution BakersGuild { type: trade_guild members: 50 ---description The Bakers Guild has been the backbone of the town's bread trade since 1892. Members share recipes, arrange apprenticeships, and collectively negotiate flour prices. --- ---charter Article I: All members shall maintain the highest standards. Article II: Apprentices must complete a three-year program. ---\n}","breadcrumbs":"Locations and Institutions » Prose Blocks","id":"117","title":"Prose Blocks"},"118":{"body":"Institutions do not have a built-in membership list. You model membership through character fields or relationships.","breadcrumbs":"Locations and Institutions » Connecting Characters to Institutions","id":"118","title":"Connecting Characters to Institutions"},"119":{"body":"The simplest approach -- add fields to your characters: character Martha { age: 45 occupation: baker guild: BakersGuild guild_role: guild_master guild_member_since: \"2005\"\n} character Jane { age: 19 occupation: apprentice_baker guild: BakersGuild guild_role: apprentice guild_member_since: \"2024\"\n}","breadcrumbs":"Locations and Institutions » Through Character Fields","id":"119","title":"Through Character Fields"},"12":{"body":"Create a file called hello.sb and add this: character Martha { age: 34 skill_level: 0.95 ---description A master baker who runs the most popular bakery in town, known for her sourdough bread and apple pastries. ---\n} That is it. You have defined a character with two numeric fields and a prose description block. Let us break it down: character Martha declares a new character named Martha { ... } contains her attributes age: 34 is an integer field skill_level: 0.95 is a floating-point field (0.0 to 1.0) ---description ... --- is a prose block for narrative text","breadcrumbs":"Welcome to Storybook » Your First Storybook File","id":"12","title":"Your First Storybook File"},"120":{"body":"For richer modeling, use relationships: relationship GuildMembership { Martha as guild_master { years_active: 20 } BakersGuild as organization { } bond: 0.95\n} relationship Apprenticeship { Jane as apprentice { skills_learned: 12 } Martha as mentor { patience_remaining: 0.7 } BakersGuild as guild { } years_completed: 1\n} This approach captures richer information: roles, duration, and multi-party connections.","breadcrumbs":"Locations and Institutions » Through Relationships","id":"120","title":"Through Relationships"},"121":{"body":"When should you use each? Question Use... Where does something happen? Location Who or what organizes things? Institution Does it need behaviors? Institution Does it need a schedule? Institution Is it purely a place? Location Is it a group or organization? Institution Sometimes the same concept needs both: // The physical building\nlocation BakersGuildHall { type: guild_hall address: \"7 Guild Row\" capacity: 100\n} // The organization that meets there\ninstitution BakersGuild { type: trade_guild members: 50 location: BakersGuildHall uses behaviors: [ { tree: ManageApprentices }, { tree: NegotiateSuppliers } ] uses schedule: GuildOperatingHours\n} The guild hall is a place . The guild is an organization . Keeping them separate lets you say \"the guild meets at the guild hall\" without conflating the building with the institution.","breadcrumbs":"Locations and Institutions » Locations vs. Institutions","id":"121","title":"Locations vs. Institutions"},"122":{"body":"Here is a complete example showing how locations, institutions, and characters work together in the Baker family world: // Enums for type safety\nenum PlaceType { bakery, residence, guild_hall, public_square\n} enum GuildRole { guild_master, journeyman, apprentice\n} // Locations: where things happen\nlocation BakersBakery { type: bakery address: \"14 Main Street\" capacity: 30 owner: Martha ---description Martha's artisan bakery on Main Street. ---\n} location BakerHome { type: residence address: \"22 Elm Lane\" bedrooms: 4 residents: [\"Martha\", \"David\", \"Jane\", \"Tom\"]\n} location BakersGuildHall { type: guild_hall address: \"7 Guild Row\" capacity: 100 ---description The historic Bakers Guild headquarters, established 1892. ---\n} // Institution: the organization\ninstitution BakersGuild { type: trade_guild members: 50 founded: \"1892\" reputation: 0.85 location: BakersGuildHall leader: Martha uses behaviors: [ { tree: ManageApprentices, priority: normal }, { tree: NegotiateSuppliers, priority: high }, { tree: HostAnnualBakeOff, when: month is october } ] uses schedule: GuildOperatingHours ---description The Bakers Guild oversees apprenticeships, quality standards, and the annual Great Bake-Off competition. ---\n} // Institution: the business\ninstitution BakersBakeryBusiness { type: business owner: Martha employees: 4 location: BakersBakery uses behaviors: [ { tree: DailyBakingOps, priority: high }, { tree: InventoryManagement } ] uses schedule: BakeryOperatingHours\n} // Characters connected to all of the above\ncharacter Martha { age: 45 occupation: baker workplace: BakersBakery home: BakerHome guild: BakersGuild guild_role: guild_master\n} character Jane { age: 19 occupation: apprentice_baker workplace: BakersBakery home: BakerHome guild: BakersGuild guild_role: apprentice\n} // Relationships tying it all together\nrelationship GuildLeadership { Martha as guild_master { } BakersGuild as guild { } years_in_role: 8\n} relationship BakeryApprenticeship { Jane as apprentice { } Martha as mentor { } BakersGuild as certifying_body { } year: 1 total_years: 3\n}","breadcrumbs":"Locations and Institutions » Putting It All Together","id":"122","title":"Putting It All Together"},"123":{"body":"Locations are simple: name, fields, prose blocks. They model places . Institutions are richer: they add uses behaviors and uses schedule on top of fields and prose. They model organizations . Membership is modeled through character fields or relationships, not built into institution syntax. Separate place from organization : A guild hall (location) and the guild (institution) are different things. Use enums for type-safe categorization of locations and institutions.","breadcrumbs":"Locations and Institutions » Key Takeaways","id":"123","title":"Key Takeaways"},"124":{"body":"Learn about expressions used in conditional behavior links Explore behavior trees to create the behaviors your institutions use See schedules to define operating hours for institutions Read the full Locations Reference and Institutions Reference","breadcrumbs":"Locations and Institutions » Next Steps","id":"124","title":"Next Steps"},"125":{"body":"The Storybook language enables narrative simulation through structured declarations of characters, behaviors, relationships, and events.","breadcrumbs":"Language Overview » Language Overview","id":"125","title":"Language Overview"},"126":{"body":"Storybook is a domain-specific language for narrative simulation, influenced by: Rust : Strong typing, explicit declarations, and clear ownership semantics C# : Object-oriented patterns with declarative syntax Python : Readable, accessible syntax that prioritizes clarity The language balances technical precision with narrative expressiveness , making it accessible to storytellers while maintaining the rigor developers need.","breadcrumbs":"Language Overview » Philosophy","id":"126","title":"Philosophy"},"127":{"body":"","breadcrumbs":"Language Overview » Design Principles","id":"127","title":"Design Principles"},"128":{"body":"Named nodes and prose blocks let code read like stories: behavior Baker_MorningRoutine { choose daily_priority { then prepare_sourdough { ... } then serve_customers { ... } then restock_display { ... } }\n}","breadcrumbs":"Language Overview » 1. Code as Narrative","id":"128","title":"1. Code as Narrative"},"129":{"body":"Every declaration is self-documenting: Character fields show what defines them Behavior trees show decision structures Relationships name their participants","breadcrumbs":"Language Overview » 2. Explicit is Better Than Implicit","id":"129","title":"2. Explicit is Better Than Implicit"},"13":{"body":"","breadcrumbs":"Welcome to Storybook » Key Concepts","id":"13","title":"Key Concepts"},"130":{"body":"Simple cases are simple, complex cases are possible: Basic characters need just a name and fields Templates enable inheritance and reuse Advanced features (state machines, decorators) available when needed","breadcrumbs":"Language Overview » 3. Progressive Disclosure","id":"130","title":"3. Progressive Disclosure"},"131":{"body":"The compiler catches narrative errors: Bond values must be 0.0..1.0 Schedule blocks can't overlap Life arc transitions must reference valid states","breadcrumbs":"Language Overview » 4. Semantic Validation","id":"131","title":"4. Semantic Validation"},"132":{"body":"","breadcrumbs":"Language Overview » Language Structure","id":"132","title":"Language Structure"},"133":{"body":"Storybook has 10 top-level declaration types: Declaration Purpose Example character Define entities with traits and behaviors A baker with skills and schedule template Reusable patterns with ranges A generic NPC template behavior Decision trees for actions How a character responds to events life_arc State machines for life stages Apprentice → Baker → Master schedule Time-based activities Daily routine from 6am to 10pm relationship Connections between entities Parent-child with bond values institution Organizations and groups A bakery with employees location Places with properties The town square species Type definitions with traits Human vs Cat vs Rabbit enum Named value sets EmotionalState options","breadcrumbs":"Language Overview » Declaration Types","id":"133","title":"Declaration Types"},"134":{"body":"Fields can contain: Primitives : 42, 3.14, \"text\", true Time : 08:30:00, 14:15 Duration : 2h30m, 45s Ranges : 20..40 (for templates) Identifiers : OtherCharacter, path::to::Thing Lists : [1, 2, 3] Objects : { field: value } Prose blocks : ---tag\\nMulti-line\\ntext\\n---","breadcrumbs":"Language Overview » Value Types","id":"134","title":"Value Types"},"135":{"body":"Conditions and queries use: Comparisons : age > 18, energy <= 0.5 Equality : status is active, ready is true Logic : tired and hungry, rich or lucky, not ready Field access : self.health, other.bond Quantifiers : forall x in children: x.happy","breadcrumbs":"Language Overview » Expression Language","id":"135","title":"Expression Language"},"136":{"body":"","breadcrumbs":"Language Overview » Compilation Model","id":"136","title":"Compilation Model"},"137":{"body":".sb files → Parser → Abstract Syntax Tree → Resolver → SBIR Binary SBIR (Storybook Intermediate Representation) is a compact binary format that: Resolves all cross-file references Validates semantic constraints Optimizes for simulation runtime","breadcrumbs":"Language Overview » Source → AST → SBIR → Runtime","id":"137","title":"Source → AST → SBIR → Runtime"},"138":{"body":"Lexical : Valid tokens and syntax Syntactic : Correct grammar structure Semantic : Type checking, reference resolution Domain : Narrative constraints (bond ranges, schedule overlaps)","breadcrumbs":"Language Overview » Validation Layers","id":"138","title":"Validation Layers"},"139":{"body":"","breadcrumbs":"Language Overview » File Organization","id":"139","title":"File Organization"},"14":{"body":"Storybook files contain declarations -- named definitions of things in your world: character Martha { ... } // A person or creature\nbehavior BakeRoutine { ... } // Decision-making logic\nrelationship Family { ... } // A connection between entities\nschedule DailyRoutine { ... } // Time-based activities\nlife_arc Career { ... } // How someone changes over time","breadcrumbs":"Welcome to Storybook » Everything is a Declaration","id":"14","title":"Everything is a Declaration"},"140":{"body":"my-storybook/\n├── characters/\n│ ├── baker.sb\n│ └── family.sb\n├── behaviors/\n│ └── daily_routine.sb\n├── world/\n│ ├── locations.sb\n│ └── institutions.sb\n└── schema/ ├── species.sb └── templates.sb","breadcrumbs":"Language Overview » Project Structure","id":"140","title":"Project Structure"},"141":{"body":"Use use statements to reference definitions from other files: use schema::species::Human;\nuse schema::templates::Adult; character Baker: Human from Adult { // ...\n} Resolution order: Same file Explicitly imported Error if not found","breadcrumbs":"Language Overview » Import System","id":"141","title":"Import System"},"142":{"body":"","breadcrumbs":"Language Overview » Quick Reference","id":"142","title":"Quick Reference"},"143":{"body":"character Name: Species from Template { field: value field: value ---prose_tag Text content ---\n}","breadcrumbs":"Language Overview » Character Declaration","id":"143","title":"Character Declaration"},"144":{"body":"behavior Name { choose label { // Selector then label { ... } // Sequence if (condition) // Condition ActionName // Action include path // Subtree }\n}","breadcrumbs":"Language Overview » Behavior Tree","id":"144","title":"Behavior Tree"},"145":{"body":"life_arc Name { state StateName { on condition -> NextState }\n}","breadcrumbs":"Language Overview » Life Arc","id":"145","title":"Life Arc"},"146":{"body":"schedule Name { 08:00 -> 12:00: activity { } 12:00 -> 13:00: lunch { }\n}","breadcrumbs":"Language Overview » Schedule","id":"146","title":"Schedule"},"147":{"body":"relationship Name { Person1 as role Person2 as role bond: 0.85\n}","breadcrumbs":"Language Overview » Relationship","id":"147","title":"Relationship"},"148":{"body":"Dive deeper into each declaration type: Characters - Detailed character syntax Behavior Trees - Complete behavior node reference Decorators - All decorator types Life Arcs - State machine semantics Schedules - Time-based planning Relationships - Connection modeling Other Declarations - Templates, institutions, etc. Expressions - Full expression language Value Types - All field value types Validation - Error checking rules Philosophy Note : Storybook treats narrative as data. Characters aren't objects with methods - they're declarations of traits, connected by behaviors and relationships . This separation enables rich analysis, modification, and simulation of narrative worlds.","breadcrumbs":"Language Overview » Next Steps","id":"148","title":"Next Steps"},"149":{"body":"Characters are the primary entities in Storybook—the people, creatures, and beings that inhabit your world. Each character has a set of attributes that define who they are, what they can do, and how they relate to the world around them.","breadcrumbs":"Characters » Characters","id":"149","title":"Characters"},"15":{"body":"Fields use a simple name: value format: age: 34 // Integer\nskill_level: 0.95 // Float\nname: \"Martha Baker\" // String\nis_open: true // Boolean\nwake_time: 04:30 // Time\nbake_duration: 45m // Duration","breadcrumbs":"Welcome to Storybook » Fields Hold Data","id":"15","title":"Fields Hold Data"},"150":{"body":" ::= \"character\" ? ? ::= \":\" ::= \"from\" (\",\" )* ::= \"{\" * \"}\" ::= | | ::= \"uses\" \"behaviors\" \":\" ::= \"uses\" (\"schedule\" | \"schedules\") \":\" ( | ) ::= \"[\" (\",\" )* \"]\" ::= \"{\" * \"}\" ::= \"tree\" \":\" | \"when\" \":\" | \"priority\" \":\" (\"low\" | \"normal\" | \"high\" | \"critical\") ::= \"[\" (\",\" )* \"]\" ::= \":\" ::= | | | | | ::= \"---\" \"---\"","breadcrumbs":"Characters » Syntax","id":"150","title":"Syntax"},"151":{"body":"","breadcrumbs":"Characters » Components","id":"151","title":"Components"},"152":{"body":"The character's identifier. Must be unique within its scope and follow standard identifier rules (alphanumeric + underscore, cannot start with digit).","breadcrumbs":"Characters » Name","id":"152","title":"Name"},"153":{"body":"The species clause (: SpeciesName) defines what the character fundamentally is . This is distinct from templates, which define what attributes they have . Purpose : Ontological typing—what kind of being this is Validation : Must reference a defined species declaration Single inheritance : A character can only have one species Default behavior : Species fields are inherited automatically Example: character Martha: Human { age: 34\n}","breadcrumbs":"Characters » Species (Optional)","id":"153","title":"Species (Optional)"},"154":{"body":"The template clause (from Template1, Template2) specifies templates from which the character inherits fields. Templates provide reusable attribute sets. Purpose : Compositional inheritance—mix-and-match capabilities and traits Multiple inheritance : Characters can inherit from multiple templates Merge semantics : Fields from later templates override earlier ones Override allowed : Character fields override all inherited fields Example: character Martha: Human from Baker, BusinessOwner { specialty: \"sourdough\"\n}","breadcrumbs":"Characters » Template Inheritance (Optional)","id":"154","title":"Template Inheritance (Optional)"},"155":{"body":"Fields define the character's attributes using the standard field syntax. All value types are supported. Common field categories: Physical traits : height, weight, age, eye_color Personality : confidence, patience, dedication Professional : skill_level, specialty, recipes_mastered State tracking : energy, mood, orders_today Capabilities : can_teach, can_work_independently","breadcrumbs":"Characters » Fields","id":"155","title":"Fields"},"156":{"body":"Characters can contain multiple prose blocks for narrative content. Common tags: ---backstory: Character history and origin ---appearance: Physical description ---personality: Behavioral traits and quirks ---motivation: Goals and desires ---secrets: Hidden information Prose blocks are narrative-only and do not affect simulation logic.","breadcrumbs":"Characters » Prose Blocks","id":"156","title":"Prose Blocks"},"157":{"body":"Characters can link to behavior trees using the uses behaviors clause. character Guard { uses behaviors: [ { tree: combat::patrol_route priority: normal }, { tree: combat::engage_intruder when: threat_detected priority: high } ]\n} Each behavior link includes: tree : Qualified path to the behavior tree (required) when : Condition expression for activation (optional) priority : Execution priority (optional, default: normal) See Behavior Trees for details on behavior tree syntax and semantics.","breadcrumbs":"Characters » Behavior Integration","id":"157","title":"Behavior Integration"},"158":{"body":"Characters can follow schedules using the uses schedule or uses schedules clause. character Baker { uses schedule: BakerySchedule\n} character Innkeeper { uses schedules: [WeekdaySchedule, WeekendSchedule]\n} Single schedule: uses schedule: ScheduleName Multiple schedules: uses schedules: [Schedule1, Schedule2] The runtime selects the appropriate schedule based on temporal constraints. See Schedules for composition and selection semantics.","breadcrumbs":"Characters » Schedule Integration","id":"158","title":"Schedule Integration"},"159":{"body":"The distinction between species (:) and templates (from) reflects ontological vs. compositional typing: Feature Species (:) Templates (from) Semantics What the character is What the character has Cardinality Exactly one Zero or more Example : Human, : Dragon from Warrior, Mage Purpose Fundamental nature Reusable trait sets Override Can override species fields Can override template fields Example showing both: species Dragon { max_lifespan: 1000 can_fly: true\n} template Hoarder { treasure_value: 0..1000000 greed_level: 0.0..1.0\n} template Ancient { age: 500..1000 wisdom: 0.8..1.0\n} character Smaug: Dragon from Hoarder, Ancient { age: 850 treasure_value: 500000 greed_level: 0.95\n}","breadcrumbs":"Characters » Species vs. Templates","id":"159","title":"Species vs. Templates"},"16":{"body":"Prose blocks embed narrative text directly in your definitions: ---backstory\nMartha learned to bake from her grandmother, starting at age\ntwelve with simple bread recipes. Over the years she mastered\nsourdough, pastries, and specialty cakes, eventually opening\nher own bakery.\n--- You can have multiple prose blocks with different tags (backstory, appearance, personality, etc.) in a single declaration.","breadcrumbs":"Welcome to Storybook » Prose Blocks Tell Stories","id":"16","title":"Prose Blocks Tell Stories"},"160":{"body":"When a character inherits from species and templates, fields are resolved in this order (later overrides earlier): Species fields (base ontology) Template fields (left to right in from clause) Character fields (highest priority) Example: species Human { lifespan: 80 speed: 1.0\n} template Warrior { speed: 1.5 strength: 10\n} template Berserker { speed: 2.0 strength: 15\n} character Conan: Human from Warrior, Berserker { strength: 20\n} // Resolved fields:\n// lifespan: 80 (from Human)\n// speed: 2.0 (Berserker overrides Warrior overrides Human)\n// strength: 20 (character overrides Berserker)","breadcrumbs":"Characters » Field Resolution Order","id":"160","title":"Field Resolution Order"},"161":{"body":"The Storybook compiler enforces these validation rules: Unique names : Character names must be unique within their module Species exists : If specified, the species must reference a defined species declaration Templates exist : All templates in the from clause must reference defined template declarations No circular inheritance : Templates cannot form circular dependency chains Field type consistency : Field values must match expected types from species/templates Reserved fields : Cannot use reserved keywords as field names Behavior trees exist : All behavior tree references must resolve to defined behavior declarations Schedules exist : All schedule references must resolve to defined schedule declarations Prose tag uniqueness : Each prose tag can appear at most once per character","breadcrumbs":"Characters » Validation Rules","id":"161","title":"Validation Rules"},"162":{"body":"","breadcrumbs":"Characters » Examples","id":"162","title":"Examples"},"163":{"body":"character SimpleMerchant { name: \"Gregor\" occupation: \"Fish Merchant\" wealth: 50 ---personality A straightforward fish seller at the market. Honest, hardworking, and always smells faintly of mackerel. ---\n}","breadcrumbs":"Characters » Basic Character","id":"163","title":"Basic Character"},"164":{"body":"character Martha: Human { age: 34 skill_level: 0.95 specialty: \"sourdough\" ---backstory Martha learned to bake from her grandmother, starting at age twelve. She now runs the most popular bakery in town. ---\n}","breadcrumbs":"Characters » Character with Species","id":"164","title":"Character with Species"},"165":{"body":"character Jane: Human from Baker, PastrySpecialist { age: 36 specialty: \"pastries\" recipes_mastered: 120 years_experience: 18 can_teach: true ---appearance A focused woman with flour-dusted apron and steady hands. Known for her intricate pastry decorations and precise temperature control. ---\n}","breadcrumbs":"Characters » Character with Template Inheritance","id":"165","title":"Character with Template Inheritance"},"166":{"body":"character CityGuard: Human from CombatTraining, LawEnforcement { age: 30 rank: \"Sergeant\" // Physical traits height: 175 strength: 12 // Equipment has_weapon: true armor_level: 2 // Behavior integration uses behaviors: [ { tree: guards::patrol_route priority: normal }, { tree: guards::engage_hostile when: threat_detected priority: high }, { tree: guards::sound_alarm when: emergency priority: critical } ] // Schedule integration uses schedules: [guards::day_shift, guards::night_shift] ---backstory A veteran of the city watch, now responsible for training new recruits while maintaining order in the merchant district. --- ---personality Gruff exterior with a hidden soft spot for street children. Follows the rules but knows when to look the other way. ---\n}","breadcrumbs":"Characters » Character with All Features","id":"166","title":"Character with All Features"},"167":{"body":"template WeaponUser { damage: 5..15 accuracy: 0.7\n} character MasterSwordsman: Human from WeaponUser { // Override template range with specific value damage: 15 accuracy: 0.95 // Add character-specific fields signature_move: \"Whirlwind Strike\"\n}","breadcrumbs":"Characters » Character with Overrides","id":"167","title":"Character with Overrides"},"168":{"body":"","breadcrumbs":"Characters » Use Cases","id":"168","title":"Use Cases"},"169":{"body":"Define rich, dynamic protagonists with complex attributes: character Elena: Human from Scholar, Diplomat { age: 28 intelligence: 18 charisma: 16 languages_known: [\"Common\", \"Elvish\", \"Draconic\"] books_read: 347 current_quest: \"Broker peace between warring kingdoms\" ---backstory Raised in the Grand Library, Elena discovered ancient texts that hinted at a forgotten alliance between humans and dragons. She now seeks to revive that alliance to end the current war. ---\n}","breadcrumbs":"Characters » Protagonist Definition","id":"169","title":"Protagonist Definition"},"17":{"body":"A typical Storybook project organizes files into directories: my-world/ schema/ core_enums.sb // Enum definitions (skill levels, moods, etc.) templates.sb // Reusable trait sets beings.sb // Species definitions world/ characters/ martha.sb // Character definitions jane.sb behaviors/ baking.sb // Behavior trees relationships/ family.sb // Relationship definitions Files reference each other using use statements: use schema::core_enums::SkillLevel;\nuse schema::beings::Human; character Martha: Human { skill_level: expert\n}","breadcrumbs":"Welcome to Storybook » Project Structure","id":"17","title":"Project Structure"},"170":{"body":"Create diverse NPCs from templates: template Villager { occupation: \"Farmer\" wealth: 10..50 disposition: 0.0..1.0 // 0=hostile, 1=friendly\n} character Oswald: Human from Villager { occupation: \"Blacksmith\" wealth: 45 disposition: 0.8\n} character Mildred: Human from Villager { occupation: \"Baker\" wealth: 35 disposition: 0.95\n}","breadcrumbs":"Characters » NPC Templates","id":"170","title":"NPC Templates"},"171":{"body":"Define multiple related characters: template BakeryStaff { punctuality: 0.5..1.0 teamwork: 0.5..1.0\n} template Apprentice { skill_level: 0.0..0.5 dedication: 0.5..1.0\n} character Elena: Human from BakeryStaff, Apprentice { age: 16 natural_talent: 0.8 dedication: 0.9 ---backstory Elena comes from a family of farmers who could never afford to buy bread from the bakery. When Martha offered her an apprenticeship, she jumped at the chance to learn a trade. ---\n}","breadcrumbs":"Characters » Ensemble Casts","id":"171","title":"Ensemble Casts"},"172":{"body":"Species - Species declarations Templates - Template definitions and strict mode Value Types - All supported value types Behavior Trees - Character behavior integration Schedules - Character schedule integration Relationships - Relationships between characters Life Arcs - Character state machines over time","breadcrumbs":"Characters » Cross-References","id":"172","title":"Cross-References"},"173":{"body":"Instantiation : Characters are concrete instances; they cannot be instantiated further Composition : Prefer template composition over deep species hierarchies Modularity : Characters can reference behaviors and schedules from other modules Narrative-driven : Use prose blocks to embed storytelling directly with data","breadcrumbs":"Characters » Related Concepts","id":"173","title":"Related Concepts"},"174":{"body":"Behavior trees define the decision-making logic for characters, institutions, and other entities. They model how an entity chooses actions, responds to conditions, and adapts to its environment. Storybook uses behavior trees for character AI, NPC routines, and complex reactive behavior.","breadcrumbs":"Behavior Trees » Behavior Trees","id":"174","title":"Behavior Trees"},"175":{"body":"A behavior tree is a hierarchical structure that executes from root to leaves, making decisions based on success/failure of child nodes: Composite nodes (choose, then) have multiple children and control flow Condition nodes (if, when) test predicates Action nodes execute concrete behaviors Decorator nodes (repeat, invert, timeout, etc.) modify child behavior Subtree nodes (include) reference other behavior trees Behavior trees are evaluated every tick (frame), flowing through the tree from root to leaves until a node returns success or failure.","breadcrumbs":"Behavior Trees » What is a Behavior Tree?","id":"175","title":"What is a Behavior Tree?"},"176":{"body":" ::= \"behavior\" ::= \"{\" * \"}\" ::= | | | | | ::= \"choose\"