@almadar/std 16.254.0 → 16.255.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/behaviors/lolo/agent/atoms/std-agent-pool.lolo +10 -10
  2. package/behaviors/lolo/agent/evals/eval-agent-builder.lolo +15 -8
  3. package/behaviors/lolo/agent/organisms/std-agent-builder.lolo +6 -5
  4. package/behaviors/registry/agent/atoms/std-agent-context.orb +1 -1
  5. package/behaviors/registry/agent/atoms/std-agent-fix-loop.orb +1 -1
  6. package/behaviors/registry/agent/atoms/std-agent-planner.orb +1 -1
  7. package/behaviors/registry/agent/atoms/std-agent-pool.orb +1 -1
  8. package/behaviors/registry/agent/atoms/std-agent-proposal.orb +1 -1
  9. package/behaviors/registry/agent/atoms/std-agent-session.orb +1 -1
  10. package/behaviors/registry/agent/atoms/std-agent-suggestions.orb +1 -1
  11. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +1 -1
  12. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +1 -1
  13. package/behaviors/registry/agent/atoms/std-agent-trace.orb +1 -1
  14. package/behaviors/registry/agent/evals/eval-agent-builder.orb +1 -1
  15. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1 -1
  16. package/behaviors/registry/agent/organisms/std-agent-builder.orb +1 -1
  17. package/behaviors/registry/infra/atoms/std-analytics.orb +1 -1
  18. package/behaviors/registry/infra/atoms/std-approval-gate.orb +1 -1
  19. package/behaviors/registry/infra/atoms/std-audit-capture.orb +1 -1
  20. package/behaviors/registry/infra/atoms/std-cache-aside.orb +1 -1
  21. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +1 -1
  22. package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +1 -1
  23. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -1
  24. package/behaviors/registry/infra/atoms/std-cross-reference.orb +1 -1
  25. package/behaviors/registry/infra/atoms/std-data-erasure.orb +1 -1
  26. package/behaviors/registry/infra/atoms/std-data-import.orb +1 -1
  27. package/behaviors/registry/infra/atoms/std-global-search.orb +1 -1
  28. package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +1 -1
  29. package/behaviors/registry/infra/atoms/std-lifecycle.orb +1 -1
  30. package/behaviors/registry/infra/atoms/std-migration-job.orb +1 -1
  31. package/behaviors/registry/infra/atoms/std-mod-queue.orb +1 -1
  32. package/behaviors/registry/infra/atoms/std-notification-center.orb +1 -1
  33. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +1 -1
  34. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1 -1
  35. package/behaviors/registry/infra/atoms/std-page-search.orb +1 -1
  36. package/behaviors/registry/infra/atoms/std-page-watch.orb +1 -1
  37. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +1 -1
  38. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +1 -1
  39. package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +1 -1
  40. package/behaviors/registry/infra/atoms/std-review-cycle.orb +1 -1
  41. package/behaviors/registry/infra/atoms/std-row-access-control.orb +1 -1
  42. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +1 -1
  43. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +1 -1
  44. package/behaviors/registry/ml/atoms/std-data-collector.orb +1 -1
  45. package/behaviors/registry/ml/atoms/std-graph-builder.orb +1 -1
  46. package/behaviors/registry/ml/atoms/std-ml-classify.orb +1 -1
  47. package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +1 -1
  48. package/behaviors/registry/ml/atoms/std-ml-infer.orb +1 -1
  49. package/behaviors/registry/ml/atoms/std-ml-posterior.orb +1 -1
  50. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +1 -1
  51. package/behaviors/registry/ml/atoms/std-tokenizer.orb +1 -1
  52. package/behaviors/registry/ml/atoms/std-weight-validator.orb +1 -1
  53. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +1 -1
  54. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +1 -1
  55. package/behaviors/registry/ui/avl/atoms/std-avl-cosmic-zoom.orb +1 -1
  56. package/behaviors/registry/ui/avl/atoms/ui-avl-glyph.orb +1 -1
  57. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +1 -1
  58. package/behaviors/registry/ui/avl/atoms/ui-avl-transition-detail.orb +1 -1
  59. package/behaviors/registry/ui/avl/atoms/ui-avl-transition-explainer.orb +1 -1
  60. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +1 -1
  61. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +1 -1
  62. package/behaviors/registry/ui/avl/organisms/ui-flow-canvas.orb +1 -1
  63. package/behaviors/registry/ui/avl/organisms/ui-layers-panel.orb +1 -1
  64. package/behaviors/registry/ui/avl/organisms/ui-orb-inspector.orb +1 -1
  65. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +1 -1
  66. package/behaviors/registry/ui/core/atoms/std-app-search.orb +1 -1
  67. package/behaviors/registry/ui/core/atoms/std-behavior-catalog.orb +1 -1
  68. package/behaviors/registry/ui/core/atoms/std-behavior-tour.orb +1 -1
  69. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +1 -1
  70. package/behaviors/registry/ui/core/atoms/std-board.orb +1 -1
  71. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +1 -1
  72. package/behaviors/registry/ui/core/atoms/std-browse.orb +1 -1
  73. package/behaviors/registry/ui/core/atoms/std-calendar.orb +1 -1
  74. package/behaviors/registry/ui/core/atoms/std-card-grid.orb +1 -1
  75. package/behaviors/registry/ui/core/atoms/std-confirmation.orb +1 -1
  76. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +1 -1
  77. package/behaviors/registry/ui/core/atoms/std-date-range.orb +1 -1
  78. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +1 -1
  79. package/behaviors/registry/ui/core/atoms/std-doc-page.orb +1 -1
  80. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +1 -1
  81. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +1 -1
  82. package/behaviors/registry/ui/core/atoms/std-event-log.orb +1 -1
  83. package/behaviors/registry/ui/core/atoms/std-export.orb +1 -1
  84. package/behaviors/registry/ui/core/atoms/std-file-store.orb +1 -1
  85. package/behaviors/registry/ui/core/atoms/std-filter.orb +1 -1
  86. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -1
  87. package/behaviors/registry/ui/core/atoms/std-gallery.orb +1 -1
  88. package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +1 -1
  89. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +1 -1
  90. package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -1
  91. package/behaviors/registry/ui/core/atoms/std-hero.orb +1 -1
  92. package/behaviors/registry/ui/core/atoms/std-home.orb +1 -1
  93. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +1 -1
  94. package/behaviors/registry/ui/core/atoms/std-import.orb +1 -1
  95. package/behaviors/registry/ui/core/atoms/std-language-picker.orb +1 -1
  96. package/behaviors/registry/ui/core/atoms/std-media-section.orb +1 -1
  97. package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +1 -1
  98. package/behaviors/registry/ui/core/atoms/std-modal.orb +1 -1
  99. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +1 -1
  100. package/behaviors/registry/ui/core/atoms/std-notification-panel.orb +1 -1
  101. package/behaviors/registry/ui/core/atoms/std-panel-launcher.orb +1 -1
  102. package/behaviors/registry/ui/core/atoms/std-pricing.orb +1 -1
  103. package/behaviors/registry/ui/core/atoms/std-proof.orb +1 -1
  104. package/behaviors/registry/ui/core/atoms/std-prose.orb +1 -1
  105. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +1 -1
  106. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +1 -1
  107. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +1 -1
  108. package/behaviors/registry/ui/core/atoms/std-related.orb +1 -1
  109. package/behaviors/registry/ui/core/atoms/std-role-gate.orb +1 -1
  110. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +1 -1
  111. package/behaviors/registry/ui/core/atoms/std-scatter.orb +1 -1
  112. package/behaviors/registry/ui/core/atoms/std-scoped-list.orb +1 -1
  113. package/behaviors/registry/ui/core/atoms/std-search.orb +1 -1
  114. package/behaviors/registry/ui/core/atoms/std-selection.orb +1 -1
  115. package/behaviors/registry/ui/core/atoms/std-site-footer.orb +1 -1
  116. package/behaviors/registry/ui/core/atoms/std-site-header.orb +1 -1
  117. package/behaviors/registry/ui/core/atoms/std-slide-deck.orb +1 -1
  118. package/behaviors/registry/ui/core/atoms/std-stat-band.orb +1 -1
  119. package/behaviors/registry/ui/core/atoms/std-stats.orb +1 -1
  120. package/behaviors/registry/ui/core/atoms/std-step-flow.orb +1 -1
  121. package/behaviors/registry/ui/core/atoms/std-steps.orb +1 -1
  122. package/behaviors/registry/ui/core/atoms/std-tabs.orb +1 -1
  123. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +1 -1
  124. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +1 -1
  125. package/behaviors/registry/ui/core/atoms/std-thread.orb +1 -1
  126. package/behaviors/registry/ui/core/atoms/std-tree.orb +1 -1
  127. package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -1
  128. package/behaviors/registry/ui/core/atoms/std-wizard.orb +1 -1
  129. package/behaviors/registry/ui/core/atoms/std-workspace-layout.orb +1 -1
  130. package/behaviors/registry/ui/core/atoms/ui-animated-graphic.orb +1 -1
  131. package/behaviors/registry/ui/core/atoms/ui-animated-reveal.orb +1 -1
  132. package/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
  133. package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +1 -1
  134. package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +1 -1
  135. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +1 -1
  136. package/behaviors/registry/ui/core/atoms/ui-badge.orb +1 -1
  137. package/behaviors/registry/ui/core/atoms/ui-box.orb +1 -1
  138. package/behaviors/registry/ui/core/atoms/ui-button.orb +1 -1
  139. package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -1
  140. package/behaviors/registry/ui/core/atoms/ui-center.orb +1 -1
  141. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -1
  142. package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +1 -1
  143. package/behaviors/registry/ui/core/atoms/ui-confetti-effect.orb +1 -1
  144. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -1
  145. package/behaviors/registry/ui/core/atoms/ui-dialog.orb +1 -1
  146. package/behaviors/registry/ui/core/atoms/ui-divider.orb +1 -1
  147. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +1 -1
  148. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -1
  149. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +1 -1
  150. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +1 -1
  151. package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -1
  152. package/behaviors/registry/ui/core/atoms/ui-image.orb +1 -1
  153. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +1 -1
  154. package/behaviors/registry/ui/core/atoms/ui-input.orb +1 -1
  155. package/behaviors/registry/ui/core/atoms/ui-label.orb +1 -1
  156. package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +1 -1
  157. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -1
  158. package/behaviors/registry/ui/core/atoms/ui-pattern-tile.orb +1 -1
  159. package/behaviors/registry/ui/core/atoms/ui-presence.orb +1 -1
  160. package/behaviors/registry/ui/core/atoms/ui-progress-bar.orb +1 -1
  161. package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -1
  162. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +1 -1
  163. package/behaviors/registry/ui/core/atoms/ui-section-header.orb +1 -1
  164. package/behaviors/registry/ui/core/atoms/ui-select.orb +1 -1
  165. package/behaviors/registry/ui/core/atoms/ui-spacer.orb +1 -1
  166. package/behaviors/registry/ui/core/atoms/ui-sparkline.orb +1 -1
  167. package/behaviors/registry/ui/core/atoms/ui-spinner.orb +1 -1
  168. package/behaviors/registry/ui/core/atoms/ui-stack.orb +1 -1
  169. package/behaviors/registry/ui/core/atoms/ui-status-dot.orb +1 -1
  170. package/behaviors/registry/ui/core/atoms/ui-svg-branch.orb +1 -1
  171. package/behaviors/registry/ui/core/atoms/ui-svg-connection.orb +1 -1
  172. package/behaviors/registry/ui/core/atoms/ui-svg-flow.orb +1 -1
  173. package/behaviors/registry/ui/core/atoms/ui-svg-grid.orb +1 -1
  174. package/behaviors/registry/ui/core/atoms/ui-svg-lobe.orb +1 -1
  175. package/behaviors/registry/ui/core/atoms/ui-svg-mesh.orb +1 -1
  176. package/behaviors/registry/ui/core/atoms/ui-svg-morph.orb +1 -1
  177. package/behaviors/registry/ui/core/atoms/ui-svg-node.orb +1 -1
  178. package/behaviors/registry/ui/core/atoms/ui-svg-pulse.orb +1 -1
  179. package/behaviors/registry/ui/core/atoms/ui-svg-ring.orb +1 -1
  180. package/behaviors/registry/ui/core/atoms/ui-svg-shield.orb +1 -1
  181. package/behaviors/registry/ui/core/atoms/ui-svg-stack.orb +1 -1
  182. package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -1
  183. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +1 -1
  184. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +1 -1
  185. package/behaviors/registry/ui/core/atoms/ui-theme-toggle.orb +1 -1
  186. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -1
  187. package/behaviors/registry/ui/core/atoms/ui-trend-indicator.orb +1 -1
  188. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -1
  189. package/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
  190. package/behaviors/registry/ui/core/atoms/ui-video-embed.orb +1 -1
  191. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +1 -1
  192. package/behaviors/registry/ui/core/molecules/std-stat-rows.orb +1 -1
  193. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +1 -1
  194. package/behaviors/registry/ui/core/molecules/ui-activation-block.orb +1 -1
  195. package/behaviors/registry/ui/core/molecules/ui-activity-rail.orb +1 -1
  196. package/behaviors/registry/ui/core/molecules/ui-agent-activity-feed.orb +1 -1
  197. package/behaviors/registry/ui/core/molecules/ui-agent-activity-row.orb +1 -1
  198. package/behaviors/registry/ui/core/molecules/ui-agent-chat-feed.orb +1 -1
  199. package/behaviors/registry/ui/core/molecules/ui-alert.orb +1 -1
  200. package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
  201. package/behaviors/registry/ui/core/molecules/ui-bloom-quiz-block.orb +1 -1
  202. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +1 -1
  203. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +1 -1
  204. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +1 -1
  205. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +1 -1
  206. package/behaviors/registry/ui/core/molecules/ui-change-list.orb +1 -1
  207. package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +1 -1
  208. package/behaviors/registry/ui/core/molecules/ui-chart.orb +1 -1
  209. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -1
  210. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +1 -1
  211. package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +1 -1
  212. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +1 -1
  213. package/behaviors/registry/ui/core/molecules/ui-connection-block.orb +1 -1
  214. package/behaviors/registry/ui/core/molecules/ui-container.orb +1 -1
  215. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +1 -1
  216. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +1 -1
  217. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +1 -1
  218. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -1
  219. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -1
  220. package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +1 -1
  221. package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +1 -1
  222. package/behaviors/registry/ui/core/molecules/ui-doc-search.orb +1 -1
  223. package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +1 -1
  224. package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +1 -1
  225. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +1 -1
  226. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +1 -1
  227. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +1 -1
  228. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -1
  229. package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -1
  230. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +1 -1
  231. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +1 -1
  232. package/behaviors/registry/ui/core/molecules/ui-error-boundary.orb +1 -1
  233. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +1 -1
  234. package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +1 -1
  235. package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +1 -1
  236. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +1 -1
  237. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
  238. package/behaviors/registry/ui/core/molecules/ui-flex.orb +1 -1
  239. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
  240. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +1 -1
  241. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -1
  242. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +1 -1
  243. package/behaviors/registry/ui/core/molecules/ui-form-field.orb +1 -1
  244. package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +1 -1
  245. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -1
  246. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +1 -1
  247. package/behaviors/registry/ui/core/molecules/ui-gantt.orb +1 -1
  248. package/behaviors/registry/ui/core/molecules/ui-geometric-pattern.orb +1 -1
  249. package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -1
  250. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +1 -1
  251. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +1 -1
  252. package/behaviors/registry/ui/core/molecules/ui-grid.orb +1 -1
  253. package/behaviors/registry/ui/core/molecules/ui-header.orb +1 -1
  254. package/behaviors/registry/ui/core/molecules/ui-icon-button.orb +1 -1
  255. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -1
  256. package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +1 -1
  257. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -1
  258. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +1 -1
  259. package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +1 -1
  260. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +1 -1
  261. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
  262. package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +1 -1
  263. package/behaviors/registry/ui/core/molecules/ui-loading-state.orb +1 -1
  264. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +1 -1
  265. package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +1 -1
  266. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +1 -1
  267. package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -1
  268. package/behaviors/registry/ui/core/molecules/ui-meter.orb +1 -1
  269. package/behaviors/registry/ui/core/molecules/ui-modal.orb +1 -1
  270. package/behaviors/registry/ui/core/molecules/ui-navigation.orb +1 -1
  271. package/behaviors/registry/ui/core/molecules/ui-notification.orb +1 -1
  272. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +1 -1
  273. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +1 -1
  274. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +1 -1
  275. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +1 -1
  276. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
  277. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +1 -1
  278. package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -1
  279. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +1 -1
  280. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -1
  281. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +1 -1
  282. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +1 -1
  283. package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
  284. package/behaviors/registry/ui/core/molecules/ui-reflection-block.orb +1 -1
  285. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -1
  286. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
  287. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +1 -1
  288. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +1 -1
  289. package/behaviors/registry/ui/core/molecules/ui-scaled-diagram.orb +1 -1
  290. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +1 -1
  291. package/behaviors/registry/ui/core/molecules/ui-section.orb +1 -1
  292. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +1 -1
  293. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +1 -1
  294. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
  295. package/behaviors/registry/ui/core/molecules/ui-simple-grid.orb +1 -1
  296. package/behaviors/registry/ui/core/molecules/ui-skeleton.orb +1 -1
  297. package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +1 -1
  298. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
  299. package/behaviors/registry/ui/core/molecules/ui-split.orb +1 -1
  300. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +1 -1
  301. package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +1 -1
  302. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +1 -1
  303. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +1 -1
  304. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +1 -1
  305. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +1 -1
  306. package/behaviors/registry/ui/core/molecules/ui-tooltip.orb +1 -1
  307. package/behaviors/registry/ui/core/molecules/ui-top-nav-item.orb +1 -1
  308. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +1 -1
  309. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +1 -1
  310. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +1 -1
  311. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +1 -1
  312. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +1 -1
  313. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +1 -1
  314. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +1 -1
  315. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +1 -1
  316. package/behaviors/registry/ui/core/organisms/ui-code-runner-panel.orb +1 -1
  317. package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +1 -1
  318. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1 -1
  319. package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +1 -1
  320. package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +1 -1
  321. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1 -1
  322. package/behaviors/registry/ui/core/organisms/ui-form.orb +1 -1
  323. package/behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb +1 -1
  324. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +1 -1
  325. package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +1 -1
  326. package/behaviors/registry/ui/core/organisms/ui-runtime-debugger.orb +1 -1
  327. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +1 -1
  328. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +1 -1
  329. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +1 -1
  330. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +1 -1
  331. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +1 -1
  332. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -1
  333. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +1 -1
  334. package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +1 -1
  335. package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +1 -1
  336. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -1
  337. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +1 -1
  338. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -1
  339. package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -1
  340. package/behaviors/registry/ui/game/atoms/std-area-fill.orb +1 -1
  341. package/behaviors/registry/ui/game/atoms/std-audio-cue.orb +1 -1
  342. package/behaviors/registry/ui/game/atoms/std-camera-rig.orb +1 -1
  343. package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -1
  344. package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +1 -1
  345. package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +1 -1
  346. package/behaviors/registry/ui/game/atoms/std-curve-fog.orb +1 -1
  347. package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -1
  348. package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +1 -1
  349. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -1
  350. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +1 -1
  351. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +1 -1
  352. package/behaviors/registry/ui/game/atoms/std-gather.orb +1 -1
  353. package/behaviors/registry/ui/game/atoms/std-gold.orb +1 -1
  354. package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -1
  355. package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -1
  356. package/behaviors/registry/ui/game/atoms/std-lives.orb +1 -1
  357. package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +1 -1
  358. package/behaviors/registry/ui/game/atoms/std-market-flow.orb +1 -1
  359. package/behaviors/registry/ui/game/atoms/std-motion-body.orb +1 -1
  360. package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -1
  361. package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +1 -1
  362. package/behaviors/registry/ui/game/atoms/std-patience.orb +1 -1
  363. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +1 -1
  364. package/behaviors/registry/ui/game/atoms/std-pickup.orb +1 -1
  365. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1 -1
  366. package/behaviors/registry/ui/game/atoms/std-production.orb +1 -1
  367. package/behaviors/registry/ui/game/atoms/std-score.orb +1 -1
  368. package/behaviors/registry/ui/game/atoms/std-tutorial-autodemo.orb +1 -1
  369. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1 -1
  370. package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +1 -1
  371. package/behaviors/registry/ui/game/atoms/std-xp.orb +1 -1
  372. package/behaviors/registry/ui/game/atoms/std-zone-card.orb +1 -1
  373. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +1 -1
  374. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +1 -1
  375. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +1 -1
  376. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +1 -1
  377. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
  378. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +1 -1
  379. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +1 -1
  380. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -1
  381. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +1 -1
  382. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +1 -1
  383. package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +1 -1
  384. package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +1 -1
  385. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +1 -1
  386. package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +1 -1
  387. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +1 -1
  388. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +1 -1
  389. package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +1 -1
  390. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +1 -1
  391. package/behaviors/registry/ui/game/atoms/ui-game-audio-cue.orb +1 -1
  392. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +1 -1
  393. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +1 -1
  394. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
  395. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +1 -1
  396. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +1 -1
  397. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +1 -1
  398. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +1 -1
  399. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +1 -1
  400. package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +1 -1
  401. package/behaviors/registry/ui/game/atoms/ui-timer-display.orb +1 -1
  402. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +1 -1
  403. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +1 -1
  404. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +1 -1
  405. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +1 -1
  406. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +1 -1
  407. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +1 -1
  408. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +1 -1
  409. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -1
  410. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +1 -1
  411. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +1 -1
  412. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +1 -1
  413. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +1 -1
  414. package/behaviors/registry/ui/game/templates/ui-game-shell.orb +1 -1
  415. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +1 -1
  416. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1 -1
  417. package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +1 -1
  418. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +1 -1
  419. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +1 -1
  420. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +1 -1
  421. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1 -1
  422. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +1 -1
  423. package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +1 -1
  424. package/behaviors/registry/ui/learning/atoms/std-learn-generate.orb +1 -1
  425. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1 -1
  426. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +1 -1
  427. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +1 -1
  428. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1 -1
  429. package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +1 -1
  430. package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +1 -1
  431. package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +1 -1
  432. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +1 -1
  433. package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +1 -1
  434. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +1 -1
  435. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1 -1
  436. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +1 -1
  437. package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +1 -1
  438. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +1 -1
  439. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +1 -1
  440. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1 -1
  441. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +1 -1
  442. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +1 -1
  443. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1 -1
  444. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +1 -1
  445. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +1 -1
  446. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -1
  447. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +1 -1
  448. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +1 -1
  449. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +1 -1
  450. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +1 -1
  451. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1 -1
  452. package/dist/behaviors-embeddings.hash.json +1 -1
  453. package/dist/behaviors-embeddings.json +1 -1
  454. package/dist/knob-embeddings.hash.json +1 -1
  455. package/package.json +1 -1
@@ -1 +1 @@
1
- {"name":"std-dungeon-board-2d","version":"1.0.0","description":"2D key-move dungeon-crawl board FRAME: composes hero-nav (key-move intent) + dungeon-combat (bump-attack, monster chase, hero HP) + objective-reach (exit/chest) + fx-particles + objective-flow (win) onto one shared GameState with a canvas-2d render. Games consume this molecule and supply only theme/assets/tiles/units/enemies/features via config.","orbitals":[{"name":"DungeonBoard2DOrbital","id":"orb_7N66RHK2RFHC7H2RWGMT3MKX98","uses":[{"from":"std/behaviors/std-hero-nav","as":"Nav"},{"from":"std/behaviors/std-dungeon-combat","as":"Combat"},{"from":"std/behaviors/std-objective-reach","as":"Objective"},{"from":"std/behaviors/std-fx-particles","as":"Particles"},{"from":"std/behaviors/std-objective-flow","as":"Gate"}],"entity":{"name":"GameState","id":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"units","type":"array","default":[{"id":"hero","position":{"x":1,"y":1},"x":1,"y":1,"z":0,"team":"player","health":5,"maxHealth":5,"unitType":"hero","name":"Hero","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"player","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"player-unit","thumbnailUrl":""}}],"items":{"type":"object","properties":{"x":{"name":"x","type":"number","required":false},"name":{"name":"name","type":"string","required":false},"sprite":{"name":"sprite","type":"object","required":false,"properties":{"variant":{"name":"variant","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"category":{"name":"category","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"name":{"name":"name","type":"string","required":false}}},"animation":{"name":"animation","type":"string","required":false},"y":{"name":"y","type":"number","required":false},"position":{"name":"position","type":"object","required":false,"properties":{"x":{"name":"x","type":"number","required":true},"y":{"name":"y","type":"number","required":true}}},"unitType":{"name":"unitType","type":"string","required":false},"frame":{"name":"frame","type":"number","required":false},"z":{"name":"z","type":"number","required":false},"maxHealth":{"name":"maxHealth","type":"number","required":false},"health":{"name":"health","type":"number","required":false},"team":{"name":"team","type":"string","required":false},"id":{"name":"id","type":"string","required":true}}}},{"name":"enemies","type":"array","default":[{"id":"goblin","position":{"x":2,"y":2},"x":2,"y":2,"z":0,"team":"enemy","health":2,"maxHealth":2,"unitType":"goblin","name":"Goblin","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"enemy","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"enemy-unit","thumbnailUrl":""}}],"items":{"type":"object","properties":{"frame":{"name":"frame","type":"number","required":false},"z":{"name":"z","type":"number","required":false},"unitType":{"name":"unitType","type":"string","required":false},"sprite":{"name":"sprite","type":"object","required":false,"properties":{"name":{"name":"name","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false}}},"x":{"name":"x","type":"number","required":false},"maxHealth":{"name":"maxHealth","type":"number","required":false},"position":{"name":"position","type":"object","required":false,"properties":{"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true}}},"y":{"name":"y","type":"number","required":false},"id":{"name":"id","type":"string","required":true},"health":{"name":"health","type":"number","required":false},"name":{"name":"name","type":"string","required":false},"team":{"name":"team","type":"string","required":false},"animation":{"name":"animation","type":"string","required":false}}}},{"name":"tiles","type":"array","default":[{"id":"t-0-0","x":0,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-1","x":0,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-2","x":0,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-3","x":0,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-0","x":1,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-1","x":1,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-2","x":1,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-3","x":1,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-0","x":2,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-1","x":2,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-2","x":2,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-3","x":2,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-0","x":3,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-1","x":3,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-2","x":3,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-3","x":3,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}}],"items":{"type":"object","properties":{"y":{"name":"y","type":"number","required":true},"passable":{"name":"passable","type":"boolean","required":false},"terrain":{"name":"terrain","type":"string","required":false},"terrainSprite":{"name":"terrainSprite","type":"object","required":false,"properties":{"sprite":{"name":"sprite","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"category":{"name":"category","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"url":{"name":"url","type":"string","required":false}}},"x":{"name":"x","type":"number","required":true},"id":{"name":"id","type":"string","required":false}}}},{"name":"features","type":"array","default":[],"items":{"type":"object","properties":{"sprite":{"name":"sprite","type":"object","required":false,"properties":{"variant":{"name":"variant","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"atlas":{"name":"atlas","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"url":{"name":"url","type":"string","required":false}}},"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true},"done":{"name":"done","type":"boolean","required":false},"type":{"name":"type","type":"string","required":true},"id":{"name":"id","type":"string","required":false}}}},{"name":"fx","type":"array","default":[],"items":{"type":"object","properties":{"vz":{"name":"vz","type":"number","required":false},"color":{"name":"color","type":"string","required":false},"message":{"name":"message","type":"string","required":false},"y":{"name":"y","type":"number","required":false},"effect":{"name":"effect","type":"string","required":false},"ttl":{"name":"ttl","type":"number","required":true},"type":{"name":"type","type":"string","required":true},"id":{"name":"id","type":"string","required":true},"space":{"name":"space","type":"string","required":false},"size":{"name":"size","type":"number","required":false},"x":{"name":"x","type":"number","required":true},"vy":{"name":"vy","type":"number","required":false},"maxTtl":{"name":"maxTtl","type":"number","required":false},"z":{"name":"z","type":"number","required":false},"vx":{"name":"vx","type":"number","required":false},"particleCount":{"name":"particleCount","type":"number","required":false},"bornAt":{"name":"bornAt","type":"number","required":false}}}},{"name":"movesLeft","type":"number","default":0},{"name":"score","type":"number","default":0},{"name":"combatScore","type":"number","default":0},{"name":"objectivesLeft","type":"number","default":0},{"name":"hp","type":"number","default":5},{"name":"maxHp","type":"number","default":5},{"name":"result","type":"string","default":"none"},{"name":"combatResult","type":"string","default":"none"}],"shared":true},"traits":[{"ref":"Nav.traits.HeroNav","id":"trt_6T7TXS957PJKV12D48ZJ4Z9DY8","name":"HeroAuthority","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"units":{"type":"unknown","default":[{"id":"hero","position":{"x":1,"y":1},"x":1,"y":1,"z":0,"team":"player","health":5,"maxHealth":5,"unitType":"hero","name":"Hero","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"player","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"player-unit","thumbnailUrl":""}}]},"running":{"type":"unknown","default":true},"moveBudget":{"type":"unknown","default":999999},"tiles":{"type":"unknown","default":[{"id":"t-0-0","x":0,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-1","x":0,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-2","x":0,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-3","x":0,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-0","x":1,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-1","x":1,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-2","x":1,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-3","x":1,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-0","x":2,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-1","x":2,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-2","x":2,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-3","x":2,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-0","x":3,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-1","x":3,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-2","x":3,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-3","x":3,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}}]},"gridHeight":{"type":"unknown","default":4},"gridWidth":{"type":"unknown","default":4}},"listens":[{"event":"MOVE","triggers":"MOVE","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}}]},{"ref":"Combat.traits.DungeonCombat","id":"trt_TT0A7NBA7BN3NTS7Q99K57FH35","name":"Enemies","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"gridHeight":{"type":"unknown","default":4},"startHp":{"type":"unknown","default":5},"attackDamage":{"type":"unknown","default":1},"gridWidth":{"type":"unknown","default":4},"enemies":{"type":"unknown","default":[{"id":"goblin","position":{"x":2,"y":2},"x":2,"y":2,"z":0,"team":"enemy","health":2,"maxHealth":2,"unitType":"goblin","name":"Goblin","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"enemy","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"enemy-unit","thumbnailUrl":""}}]},"pointsPerKill":{"type":"unknown","default":50},"running":{"type":"unknown","default":true}},"listens":[{"event":"ATTACK","triggers":"ATTACK","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"MONSTER_TICK","triggers":"MONSTER_TICK","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}}]},{"ref":"Objective.traits.ObjectiveReach","id":"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC","name":"Collector","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"targetType":{"type":"unknown","default":"chest"},"pointsPerTarget":{"type":"unknown","default":200},"removeOnReach":{"type":"unknown","default":false},"running":{"type":"unknown","default":true},"features":{"type":"unknown","default":[]},"reachRadius":{"type":"unknown","default":0}},"listens":[{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"HERO_STEPPED","triggers":"HERO_STEPPED","source":{"kind":"trait","trait":"HeroAuthority"}}]},{"ref":"Particles.traits.FxParticles","id":"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R","name":"FxDecay","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"Collector"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"Enemies"}}]},{"ref":"Gate.traits.ObjectiveFlow","id":"trt_6RES95RTPRDBCDE3V5VBJPNSGW","name":"RoundGate","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"PROGRESS","triggers":"PROGRESS","source":{"kind":"trait","trait":"Collector"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}}]},{"name":"DungeonIntent","id":"trt_C2D87NS5BCJNP8W41DQXBJVTPK","effectRow":[{"kind":"emit","resource":"ATTACK"},{"kind":"emit","resource":"MONSTER_TICK","site":"tick"},{"kind":"emit","resource":"MOVE"},{"kind":"emit","resource":"RESTART"},{"kind":"render-ui","resource":"main"},{"kind":"render-ui","resource":"main","site":"tick"},{"kind":"ticks","site":"tick"}],"category":"interaction","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","entityRefIds":{"GameState":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK"},"emits":[{"event":"MOVE","eventId":"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K","description":"Hero move intent applied by the hero-nav authority","tier":"domain","scope":"external","payloadSchema":[{"name":"unitId","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"ATTACK","eventId":"evt_RH6BB6YHMN8TASJYAJH6GBN1K7","description":"Bump-attack intent applied by the dungeon-combat authority","tier":"domain","scope":"external","payloadSchema":[{"name":"targetId","type":"string","required":true}]},{"event":"MONSTER_TICK","eventId":"evt_W484NP21840M283P9G4RPQJXV8","description":"Advances enemy chase AI and applies hero contact damage via the dungeon-combat authority","tier":"domain","scope":"external","payloadSchema":[{"name":"heroX","type":"number","required":true},{"name":"heroY","type":"number","required":true}]},{"event":"MOVE_UP","eventId":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","description":"Step north (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"MOVE_DOWN","eventId":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","description":"Step south (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"MOVE_LEFT","eventId":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","description":"Step west (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"MOVE_RIGHT","eventId":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","description":"Step east (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAY_AGAIN","eventId":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","description":"Resets every mechanic (units/enemies/HP, objectives, result) for a new run","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"RESTART","eventId":"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH","description":"Broadcast reset consumed by hero-nav/dungeon-combat/objective-reach/objective-flow","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]}],"stateMachine":{"states":[{"name":"playing","isInitial":true}],"events":[{"key":"INIT","id":"evt_BC403AGEAZ75FQJZN4TX2EP137","name":"Initialize"},{"key":"MOVE_UP","id":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","name":"Move Up","description":"Step north (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE_DOWN","id":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","name":"Move Down","description":"Step south (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE_LEFT","id":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","name":"Move Left","description":"Step west (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE_RIGHT","id":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","name":"Move Right","description":"Step east (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAY_AGAIN","id":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","name":"Play Again","description":"Resets every mechanic (units/enemies/HP, objectives, result) for a new run","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE","id":"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K","name":"Move","description":"Hero move intent applied by the hero-nav authority","tier":"domain","payloadSchema":[{"name":"unitId","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"ATTACK","id":"evt_RH6BB6YHMN8TASJYAJH6GBN1K7","name":"Attack","description":"Bump-attack intent applied by the dungeon-combat authority","tier":"domain","payloadSchema":[{"name":"targetId","type":"string","required":true}]},{"key":"MONSTER_TICK","id":"evt_W484NP21840M283P9G4RPQJXV8","name":"Monster Tick","description":"Advances enemy chase AI and applies hero contact damage via the dungeon-combat authority","tier":"domain","payloadSchema":[{"name":"heroX","type":"number","required":true},{"name":"heroY","type":"number","required":true}]},{"key":"RESTART","id":"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH","name":"Restart","description":"Broadcast reset consumed by hero-nav/dungeon-combat/objective-reach/objective-flow","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]}],"transitions":[{"from":"playing","to":"playing","event":"INIT","eventId":"evt_BC403AGEAZ75FQJZN4TX2EP137","effects":[["render-ui","main",{"type":"game-shell","fontFamily":"@config.fontFamily","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"game-hud","stats":[{"label":"HP","value":"@entity.hp","max":"@entity.maxHp","format":"hearts"},{"label":"Score","value":["+","@entity.score","@entity.combatScore"]}]},"controls":{"type":"control-grid","kind":"dpad","directionEvents":{"up":"MOVE_UP","down":"MOVE_DOWN","left":"MOVE_LEFT","right":"MOVE_RIGHT"},"directionAssets":"@config.directionAssets"},"overlay":["if",["!=","@entity.result","none"],{"type":"game-menu","title":"VICTORY","subtitle":"You found the chest!","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["!=","@entity.combatResult","none"],{"type":"game-menu","title":"DEFEAT","subtitle":"The dungeon claims another hero","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","fit":true,"camera":{"zoom":"@config.scale"},"projection":"flat","showMinimap":false,"keyMap":{"ArrowUp":"MOVE_UP","KeyW":"MOVE_UP","ArrowDown":"MOVE_DOWN","KeyS":"MOVE_DOWN","ArrowLeft":"MOVE_LEFT","KeyA":"MOVE_LEFT","ArrowRight":"MOVE_RIGHT","KeyD":"MOVE_RIGHT"},"children":[{"type":"draw-shape-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-shape","shape":"cell","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"fill":"#5c94fc"}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-sprite","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"asset":["if",["validate/required",["object/get",["object/get","@t","terrainSprite"],"url"]],["object/get","@t","terrainSprite"],["object/get",["object/get","@config.assetManifest","terrains"],["object/get","@t","terrain"]]],"anchor":"center","width":1,"height":1}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.features",["fn","f",{"type":"draw-sprite","position":{"x":["object/get","@f","x"],"y":["object/get","@f","y"]},"asset":["object/get","@f","sprite"]}]]},{"type":"draw-sprite-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-sprite","position":["object/get","@u","position"],"asset":["if",["validate/required",["object/get",["object/get","@u","sprite"],"url"]],["object/get","@u","sprite"],["object/get",["object/get","@config.assetManifest","units"],["object/get","@u","unitType"]]],"anchor":"ground","width":1,"height":1}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":0.5,"height":0.12,"fill":"rgba(0,0,0,0.6)"}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":["*",0.5,["/",["object/get","@u","health"],["object/get","@u","maxHealth"]]],"height":0.12,"fill":"#22c55e"}]]},{"type":"draw-text-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-text","text":["object/get","@u","name"],"position":["object/get","@u","position"],"offsetY":-0.85,"color":"#ffffff"}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets","sprites":["object/get","@config.assetManifest","effects"]}]}]}]]},{"from":"playing","to":"playing","event":"MOVE_UP","eventId":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["object/get",["object/get","@hero","position"],"x"]],["ny",["-",["object/get",["object/get","@hero","position"],"y"],1]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"MOVE_DOWN","eventId":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["object/get",["object/get","@hero","position"],"x"]],["ny",["+",["object/get",["object/get","@hero","position"],"y"],1]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"MOVE_LEFT","eventId":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["-",["object/get",["object/get","@hero","position"],"x"],1]],["ny",["object/get",["object/get","@hero","position"],"y"]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"MOVE_RIGHT","eventId":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["+",["object/get",["object/get","@hero","position"],"x"],1]],["ny",["object/get",["object/get","@hero","position"],"y"]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"PLAY_AGAIN","eventId":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","effects":[["emit","RESTART",{"id":"board"}]]}]},"ticks":[{"name":"renderTick","interval":100,"effects":[["render-ui","main",{"type":"game-shell","fontFamily":"@config.fontFamily","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"game-hud","stats":[{"label":"HP","value":"@entity.hp","max":"@entity.maxHp","format":"hearts"},{"label":"Score","value":["+","@entity.score","@entity.combatScore"]}]},"controls":{"type":"control-grid","kind":"dpad","directionEvents":{"up":"MOVE_UP","down":"MOVE_DOWN","left":"MOVE_LEFT","right":"MOVE_RIGHT"},"directionAssets":"@config.directionAssets"},"overlay":["if",["!=","@entity.result","none"],{"type":"game-menu","title":"VICTORY","subtitle":"You found the chest!","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["!=","@entity.combatResult","none"],{"type":"game-menu","title":"DEFEAT","subtitle":"The dungeon claims another hero","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","fit":true,"camera":{"zoom":"@config.scale"},"projection":"flat","showMinimap":false,"keyMap":{"ArrowUp":"MOVE_UP","KeyW":"MOVE_UP","ArrowDown":"MOVE_DOWN","KeyS":"MOVE_DOWN","ArrowLeft":"MOVE_LEFT","KeyA":"MOVE_LEFT","ArrowRight":"MOVE_RIGHT","KeyD":"MOVE_RIGHT"},"children":[{"type":"draw-shape-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-shape","shape":"cell","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"fill":"#5c94fc"}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-sprite","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"asset":["if",["validate/required",["object/get",["object/get","@t","terrainSprite"],"url"]],["object/get","@t","terrainSprite"],["object/get",["object/get","@config.assetManifest","terrains"],["object/get","@t","terrain"]]],"anchor":"center","width":1,"height":1}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.features",["fn","f",{"type":"draw-sprite","position":{"x":["object/get","@f","x"],"y":["object/get","@f","y"]},"asset":["object/get","@f","sprite"]}]]},{"type":"draw-sprite-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-sprite","position":["object/get","@u","position"],"asset":["if",["validate/required",["object/get",["object/get","@u","sprite"],"url"]],["object/get","@u","sprite"],["object/get",["object/get","@config.assetManifest","units"],["object/get","@u","unitType"]]],"anchor":"ground","width":1,"height":1}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":0.5,"height":0.12,"fill":"rgba(0,0,0,0.6)"}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":["*",0.5,["/",["object/get","@u","health"],["object/get","@u","maxHealth"]]],"height":0.12,"fill":"#22c55e"}]]},{"type":"draw-text-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-text","text":["object/get","@u","name"],"position":["object/get","@u","position"],"offsetY":-0.85,"color":"#ffffff"}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets","sprites":["object/get","@config.assetManifest","effects"]}]}]}]]},{"name":"chaseTick","interval":900,"guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["emit","MONSTER_TICK",{"heroX":["object/get",["object/get",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]],"position"],"x"],"heroY":["object/get",["object/get",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]],"position"],"y"]}]]}],"config":{"scale":{"type":"number","default":1,"label":"Scale","description":"Canvas render scale.","tier":"presentation"},"fontFamily":{"type":"string","default":"","label":"Font Family","description":"game-shell font family (e.g. pixel).","tier":"presentation"},"backgroundAsset":{"type":"Asset","default":{},"label":"Background Asset","description":"Game-shell background panel sprite (theme chrome).","tier":"presentation","properties":{"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"url":{"name":"url","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false}}},"fxPresets":{"type":"[FxPreset]","default":[{"type":"explosion","color":"#fb923c","color2":"#7c2d12","shape":"ring","size":0.85,"count":8,"glow":0.2,"gravity":0.4},{"type":"pickup","color":"#ffe066","color2":"#fff4cc","shape":"spark","size":0.4,"count":5,"glow":0.1,"vy":-0.5}],"label":"Fx Presets","description":"This board's effect vocabulary — one look/recipe row per fx type its mechanics emit; unknown types fall back to a neutral spark.","tier":"presentation","items":{"type":"object","properties":{"color2":{"name":"color2","type":"string","required":false},"count":{"name":"count","type":"number","required":false},"vx":{"name":"vx","type":"number","required":false},"particleCount":{"name":"particleCount","type":"number","required":false},"glow":{"name":"glow","type":"number","required":false},"color":{"name":"color","type":"string","required":false},"space":{"name":"space","type":"string","required":false},"vy":{"name":"vy","type":"number","required":false},"vz":{"name":"vz","type":"number","required":false},"gravity":{"name":"gravity","type":"number","required":false},"effect":{"name":"effect","type":"string","required":false},"type":{"name":"type","type":"string","required":true},"size":{"name":"size","type":"number","required":false},"shape":{"name":"shape","type":"string","required":false}}}},"hudBackgroundAsset":{"type":"Asset","default":{},"label":"HUD Background Asset","description":"HUD panel background sprite (theme chrome).","tier":"presentation","properties":{"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"aspect":{"name":"aspect","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false}}},"assetManifest":{"type":"AssetManifest","default":{"terrains":{},"units":{},"features":{},"effects":{}},"label":"Asset Manifest","description":"Terrain/unit/feature/effect sprite manifest.","tier":"presentation","properties":{"terrains":{"name":"terrains","type":"object","required":false,"items":{"type":"object","properties":{"atlas":{"name":"atlas","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false}}}},"units":{"name":"units","type":"object","required":false,"items":{"type":"object","properties":{"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false}}}},"features":{"name":"features","type":"object","required":false,"items":{"type":"object","properties":{"name":{"name":"name","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"url":{"name":"url","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false}}}},"effects":{"name":"effects","type":"object","required":false,"items":{"type":"object","properties":{"style":{"name":"style","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"name":{"name":"name","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"url":{"name":"url","type":"string","required":false}}}}}},"directionAssets":{"type":"DirectionAssets","default":{},"label":"Direction Assets","description":"D-pad direction icon sprites.","tier":"presentation","properties":{"right":{"name":"right","type":"object","required":false,"properties":{"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"category":{"name":"category","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false}}},"down":{"name":"down","type":"object","required":false,"properties":{"role":{"name":"role","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"url":{"name":"url","type":"string","required":false}}},"left":{"name":"left","type":"object","required":false,"properties":{"role":{"name":"role","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"url":{"name":"url","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false}}},"up":{"name":"up","type":"object","required":false,"properties":{"sprite":{"name":"sprite","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"category":{"name":"category","type":"string","required":false}}}}},"gridWidth":{"type":"number","default":4,"label":"Grid Width","description":"Grid column count (matches HeroAuthority/Enemies.gridWidth).","tier":"presentation"},"gridHeight":{"type":"number","default":4,"label":"Grid Height","description":"Grid row count (matches HeroAuthority/Enemies.gridHeight).","tier":"presentation"}},"scope":"instance"}],"pages":[{"name":"DungeonBoard2DPage","id":"pag_7JQRAMVFQNQVTX6V1G72V4BQ7Z","path":"/dungeon-board-2d","traits":[{"ref":"HeroAuthority","refId":"trt_6T7TXS957PJKV12D48ZJ4Z9DY8"},{"ref":"Enemies","refId":"trt_TT0A7NBA7BN3NTS7Q99K57FH35"},{"ref":"Collector","refId":"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC"},{"ref":"FxDecay","refId":"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R"},{"ref":"RoundGate","refId":"trt_6RES95RTPRDBCDE3V5VBJPNSGW"},{"ref":"DungeonIntent","refId":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"}]}],"types":{"Asset":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}],"AssetManifest":[{"name":"terrains","type":"Map<string,Asset>"},{"name":"units","type":"Map<string,Asset>"},{"name":"features","type":"Map<string,Asset>"},{"name":"effects","type":"Map<string,Asset>"}],"DirectionAssets":[{"name":"up","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"down","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"left","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"right","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Feature":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"type","type":"string","required":true},{"name":"sprite","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"done","type":"boolean"}],"Fx":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"FxPreset":[{"name":"type","type":"string","required":true},{"name":"color","type":"string"},{"name":"color2","type":"string"},{"name":"size","type":"number"},{"name":"shape","type":"string"},{"name":"count","type":"number"},{"name":"glow","type":"number"},{"name":"gravity","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"particleCount","type":"number"}],"HudStat":[{"name":"label","type":"string"},{"name":"value","type":"number"},{"name":"max","type":"number"},{"name":"format","type":"string"},{"name":"iconUrl","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Tile":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"terrain","type":"string"},{"name":"passable","type":"boolean"},{"name":"terrainSprite","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Unit":[{"name":"id","type":"string","required":true},{"name":"position","type":"object","properties":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"name":"x","type":"number"},{"name":"y","type":"number"},{"name":"z","type":"number"},{"name":"team","type":"string"},{"name":"health","type":"number"},{"name":"maxHealth","type":"number"},{"name":"unitType","type":"string"},{"name":"name","type":"string"},{"name":"animation","type":"string"},{"name":"frame","type":"number"},{"name":"sprite","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_KZGDJXMWG5E82X3CZWX0PP5QMK":{"id":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","kind":"entity","bakedName":"GameState","curName":"GameState","renames":[],"owner":"workspace"},"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K":{"id":"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K","kind":"event","bakedName":"MOVE","curName":"MOVE","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH":{"id":"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH","kind":"event","bakedName":"RESTART","curName":"RESTART","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_9MVZEB0J8R94CD51ZXH6NDT6FR":{"id":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","kind":"event","bakedName":"MOVE_DOWN","curName":"MOVE_DOWN","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_BC403AGEAZ75FQJZN4TX2EP137":{"id":"evt_BC403AGEAZ75FQJZN4TX2EP137","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_BWV4XK80RA0C54J2V1ZCSS17KH":{"id":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","kind":"event","bakedName":"PLAY_AGAIN","curName":"PLAY_AGAIN","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD":{"id":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","kind":"event","bakedName":"MOVE_LEFT","curName":"MOVE_LEFT","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_RH6BB6YHMN8TASJYAJH6GBN1K7":{"id":"evt_RH6BB6YHMN8TASJYAJH6GBN1K7","kind":"event","bakedName":"ATTACK","curName":"ATTACK","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF":{"id":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","kind":"event","bakedName":"MOVE_UP","curName":"MOVE_UP","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_VC9SX6QAF8N7M7WVRP66Y81H25":{"id":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","kind":"event","bakedName":"MOVE_RIGHT","curName":"MOVE_RIGHT","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_W484NP21840M283P9G4RPQJXV8":{"id":"evt_W484NP21840M283P9G4RPQJXV8","kind":"event","bakedName":"MONSTER_TICK","curName":"MONSTER_TICK","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"orb_7N66RHK2RFHC7H2RWGMT3MKX98":{"id":"orb_7N66RHK2RFHC7H2RWGMT3MKX98","kind":"orbital","bakedName":"DungeonBoard2DOrbital","curName":"DungeonBoard2DOrbital","renames":[],"owner":"workspace"},"pag_7JQRAMVFQNQVTX6V1G72V4BQ7Z":{"id":"pag_7JQRAMVFQNQVTX6V1G72V4BQ7Z","kind":"page","bakedName":"DungeonBoard2DPage","curName":"DungeonBoard2DPage","renames":[],"owner":"workspace"},"trt_6RES95RTPRDBCDE3V5VBJPNSGW":{"id":"trt_6RES95RTPRDBCDE3V5VBJPNSGW","kind":"trait","bakedName":"RoundGate","curName":"RoundGate","renames":[],"owner":"workspace"},"trt_6T7TXS957PJKV12D48ZJ4Z9DY8":{"id":"trt_6T7TXS957PJKV12D48ZJ4Z9DY8","kind":"trait","bakedName":"HeroAuthority","curName":"HeroAuthority","renames":[],"owner":"workspace"},"trt_C2D87NS5BCJNP8W41DQXBJVTPK":{"id":"trt_C2D87NS5BCJNP8W41DQXBJVTPK","kind":"trait","bakedName":"DungeonIntent","curName":"DungeonIntent","renames":[],"owner":"workspace"},"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC":{"id":"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC","kind":"trait","bakedName":"Collector","curName":"Collector","renames":[],"owner":"workspace"},"trt_TT0A7NBA7BN3NTS7Q99K57FH35":{"id":"trt_TT0A7NBA7BN3NTS7Q99K57FH35","kind":"trait","bakedName":"Enemies","curName":"Enemies","renames":[],"owner":"workspace"},"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R":{"id":"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R","kind":"trait","bakedName":"FxDecay","curName":"FxDecay","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-dungeon-board-2d","version":"1.0.0","description":"2D key-move dungeon-crawl board FRAME: composes hero-nav (key-move intent) + dungeon-combat (bump-attack, monster chase, hero HP) + objective-reach (exit/chest) + fx-particles + objective-flow (win) onto one shared GameState with a canvas-2d render. Games consume this molecule and supply only theme/assets/tiles/units/enemies/features via config.","orbitals":[{"name":"DungeonBoard2DOrbital","id":"orb_7N66RHK2RFHC7H2RWGMT3MKX98","uses":[{"from":"std/behaviors/std-hero-nav","as":"Nav"},{"from":"std/behaviors/std-dungeon-combat","as":"Combat"},{"from":"std/behaviors/std-objective-reach","as":"Objective"},{"from":"std/behaviors/std-fx-particles","as":"Particles"},{"from":"std/behaviors/std-objective-flow","as":"Gate"}],"entity":{"name":"GameState","id":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"units","type":"array","default":[{"id":"hero","position":{"x":1,"y":1},"x":1,"y":1,"z":0,"team":"player","health":5,"maxHealth":5,"unitType":"hero","name":"Hero","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"player","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"player-unit","thumbnailUrl":""}}],"items":{"type":"object","properties":{"y":{"name":"y","type":"number","required":false},"position":{"name":"position","type":"object","required":false,"properties":{"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true}}},"animation":{"name":"animation","type":"string","required":false},"z":{"name":"z","type":"number","required":false},"name":{"name":"name","type":"string","required":false},"maxHealth":{"name":"maxHealth","type":"number","required":false},"unitType":{"name":"unitType","type":"string","required":false},"sprite":{"name":"sprite","type":"object","required":false,"properties":{"category":{"name":"category","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"url":{"name":"url","type":"string","required":false}}},"health":{"name":"health","type":"number","required":false},"id":{"name":"id","type":"string","required":true},"team":{"name":"team","type":"string","required":false},"frame":{"name":"frame","type":"number","required":false},"x":{"name":"x","type":"number","required":false}}}},{"name":"enemies","type":"array","default":[{"id":"goblin","position":{"x":2,"y":2},"x":2,"y":2,"z":0,"team":"enemy","health":2,"maxHealth":2,"unitType":"goblin","name":"Goblin","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"enemy","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"enemy-unit","thumbnailUrl":""}}],"items":{"type":"object","properties":{"frame":{"name":"frame","type":"number","required":false},"y":{"name":"y","type":"number","required":false},"z":{"name":"z","type":"number","required":false},"sprite":{"name":"sprite","type":"object","required":false,"properties":{"name":{"name":"name","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"style":{"name":"style","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false}}},"name":{"name":"name","type":"string","required":false},"id":{"name":"id","type":"string","required":true},"position":{"name":"position","type":"object","required":false,"properties":{"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true}}},"unitType":{"name":"unitType","type":"string","required":false},"team":{"name":"team","type":"string","required":false},"maxHealth":{"name":"maxHealth","type":"number","required":false},"health":{"name":"health","type":"number","required":false},"animation":{"name":"animation","type":"string","required":false},"x":{"name":"x","type":"number","required":false}}}},{"name":"tiles","type":"array","default":[{"id":"t-0-0","x":0,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-1","x":0,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-2","x":0,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-3","x":0,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-0","x":1,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-1","x":1,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-2","x":1,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-3","x":1,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-0","x":2,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-1","x":2,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-2","x":2,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-3","x":2,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-0","x":3,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-1","x":3,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-2","x":3,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-3","x":3,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}}],"items":{"type":"object","properties":{"x":{"name":"x","type":"number","required":true},"terrain":{"name":"terrain","type":"string","required":false},"y":{"name":"y","type":"number","required":true},"id":{"name":"id","type":"string","required":false},"terrainSprite":{"name":"terrainSprite","type":"object","required":false,"properties":{"style":{"name":"style","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"sprite":{"name":"sprite","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false}}},"passable":{"name":"passable","type":"boolean","required":false}}}},{"name":"features","type":"array","default":[],"items":{"type":"object","properties":{"y":{"name":"y","type":"number","required":true},"id":{"name":"id","type":"string","required":false},"x":{"name":"x","type":"number","required":true},"done":{"name":"done","type":"boolean","required":false},"sprite":{"name":"sprite","type":"object","required":false,"properties":{"name":{"name":"name","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"category":{"name":"category","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false}}},"type":{"name":"type","type":"string","required":true}}}},{"name":"fx","type":"array","default":[],"items":{"type":"object","properties":{"ttl":{"name":"ttl","type":"number","required":true},"maxTtl":{"name":"maxTtl","type":"number","required":false},"vz":{"name":"vz","type":"number","required":false},"bornAt":{"name":"bornAt","type":"number","required":false},"id":{"name":"id","type":"string","required":true},"size":{"name":"size","type":"number","required":false},"y":{"name":"y","type":"number","required":false},"message":{"name":"message","type":"string","required":false},"space":{"name":"space","type":"string","required":false},"type":{"name":"type","type":"string","required":true},"effect":{"name":"effect","type":"string","required":false},"color":{"name":"color","type":"string","required":false},"x":{"name":"x","type":"number","required":true},"vy":{"name":"vy","type":"number","required":false},"z":{"name":"z","type":"number","required":false},"vx":{"name":"vx","type":"number","required":false},"particleCount":{"name":"particleCount","type":"number","required":false}}}},{"name":"movesLeft","type":"number","default":0},{"name":"score","type":"number","default":0},{"name":"combatScore","type":"number","default":0},{"name":"objectivesLeft","type":"number","default":0},{"name":"hp","type":"number","default":5},{"name":"maxHp","type":"number","default":5},{"name":"result","type":"string","default":"none"},{"name":"combatResult","type":"string","default":"none"}],"shared":true},"traits":[{"ref":"Nav.traits.HeroNav","id":"trt_6T7TXS957PJKV12D48ZJ4Z9DY8","name":"HeroAuthority","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"tiles":{"type":"unknown","default":[{"id":"t-0-0","x":0,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-1","x":0,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-2","x":0,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-0-3","x":0,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-0","x":1,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-1","x":1,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-2","x":1,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-1-3","x":1,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-0","x":2,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-1","x":2,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-2","x":2,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-2-3","x":2,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-0","x":3,"y":0,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-1","x":3,"y":1,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-2","x":3,"y":2,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}},{"id":"t-3-3","x":3,"y":3,"terrain":"grass","passable":true,"terrainSprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/terrain/grass/grass.png","role":"tile","category":"terrain","animations":["static"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"grass","thumbnailUrl":""}}]},"gridWidth":{"type":"unknown","default":4},"gridHeight":{"type":"unknown","default":4},"running":{"type":"unknown","default":true},"moveBudget":{"type":"unknown","default":999999},"units":{"type":"unknown","default":[{"id":"hero","position":{"x":1,"y":1},"x":1,"y":1,"z":0,"team":"player","health":5,"maxHealth":5,"unitType":"hero","name":"Hero","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"player","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"player-unit","thumbnailUrl":""}}]}},"listens":[{"event":"MOVE","triggers":"MOVE","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}}]},{"ref":"Combat.traits.DungeonCombat","id":"trt_TT0A7NBA7BN3NTS7Q99K57FH35","name":"Enemies","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"startHp":{"type":"unknown","default":5},"running":{"type":"unknown","default":true},"enemies":{"type":"unknown","default":[{"id":"goblin","position":{"x":2,"y":2},"x":2,"y":2,"z":0,"team":"enemy","health":2,"maxHealth":2,"unitType":"goblin","name":"Goblin","sprite":{"url":"https://almadar-kflow-assets.web.app/shared/ui-tactics-demo-2d/default/units/soldier/soldier.png","role":"enemy","category":"unit","animations":["idle"],"style":"vector","variant":"","dimension":"2d","aspect":"1:1","name":"enemy-unit","thumbnailUrl":""}}]},"pointsPerKill":{"type":"unknown","default":50},"gridWidth":{"type":"unknown","default":4},"attackDamage":{"type":"unknown","default":1},"gridHeight":{"type":"unknown","default":4}},"listens":[{"event":"ATTACK","triggers":"ATTACK","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"MONSTER_TICK","triggers":"MONSTER_TICK","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}}]},{"ref":"Objective.traits.ObjectiveReach","id":"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC","name":"Collector","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"pointsPerTarget":{"type":"unknown","default":200},"removeOnReach":{"type":"unknown","default":false},"targetType":{"type":"unknown","default":"chest"},"features":{"type":"unknown","default":[]},"running":{"type":"unknown","default":true},"reachRadius":{"type":"unknown","default":0}},"listens":[{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"HERO_STEPPED","triggers":"HERO_STEPPED","source":{"kind":"trait","trait":"HeroAuthority"}}]},{"ref":"Particles.traits.FxParticles","id":"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R","name":"FxDecay","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"Collector"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}},{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"Enemies"}}]},{"ref":"Gate.traits.ObjectiveFlow","id":"trt_6RES95RTPRDBCDE3V5VBJPNSGW","name":"RoundGate","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"PROGRESS","triggers":"PROGRESS","source":{"kind":"trait","trait":"Collector"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"DungeonIntent"}}]},{"name":"DungeonIntent","id":"trt_C2D87NS5BCJNP8W41DQXBJVTPK","effectRow":[{"kind":"emit","resource":"ATTACK"},{"kind":"emit","resource":"MONSTER_TICK","site":"tick"},{"kind":"emit","resource":"MOVE"},{"kind":"emit","resource":"RESTART"},{"kind":"render-ui","resource":"main"},{"kind":"render-ui","resource":"main","site":"tick"},{"kind":"ticks","site":"tick"}],"category":"interaction","linkedEntity":"GameState","linkedEntityId":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","entityRefIds":{"GameState":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK"},"emits":[{"event":"MOVE","eventId":"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K","description":"Hero move intent applied by the hero-nav authority","tier":"domain","scope":"external","payloadSchema":[{"name":"unitId","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"ATTACK","eventId":"evt_RH6BB6YHMN8TASJYAJH6GBN1K7","description":"Bump-attack intent applied by the dungeon-combat authority","tier":"domain","scope":"external","payloadSchema":[{"name":"targetId","type":"string","required":true}]},{"event":"MONSTER_TICK","eventId":"evt_W484NP21840M283P9G4RPQJXV8","description":"Advances enemy chase AI and applies hero contact damage via the dungeon-combat authority","tier":"domain","scope":"external","payloadSchema":[{"name":"heroX","type":"number","required":true},{"name":"heroY","type":"number","required":true}]},{"event":"MOVE_UP","eventId":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","description":"Step north (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"MOVE_DOWN","eventId":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","description":"Step south (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"MOVE_LEFT","eventId":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","description":"Step west (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"MOVE_RIGHT","eventId":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","description":"Step east (keyMap or d-pad directionEvents)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAY_AGAIN","eventId":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","description":"Resets every mechanic (units/enemies/HP, objectives, result) for a new run","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"RESTART","eventId":"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH","description":"Broadcast reset consumed by hero-nav/dungeon-combat/objective-reach/objective-flow","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]}],"stateMachine":{"states":[{"name":"playing","isInitial":true}],"events":[{"key":"INIT","id":"evt_BC403AGEAZ75FQJZN4TX2EP137","name":"Initialize"},{"key":"MOVE_UP","id":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","name":"Move Up","description":"Step north (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE_DOWN","id":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","name":"Move Down","description":"Step south (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE_LEFT","id":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","name":"Move Left","description":"Step west (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE_RIGHT","id":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","name":"Move Right","description":"Step east (keyMap or d-pad directionEvents)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAY_AGAIN","id":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","name":"Play Again","description":"Resets every mechanic (units/enemies/HP, objectives, result) for a new run","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"MOVE","id":"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K","name":"Move","description":"Hero move intent applied by the hero-nav authority","tier":"domain","payloadSchema":[{"name":"unitId","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"ATTACK","id":"evt_RH6BB6YHMN8TASJYAJH6GBN1K7","name":"Attack","description":"Bump-attack intent applied by the dungeon-combat authority","tier":"domain","payloadSchema":[{"name":"targetId","type":"string","required":true}]},{"key":"MONSTER_TICK","id":"evt_W484NP21840M283P9G4RPQJXV8","name":"Monster Tick","description":"Advances enemy chase AI and applies hero contact damage via the dungeon-combat authority","tier":"domain","payloadSchema":[{"name":"heroX","type":"number","required":true},{"name":"heroY","type":"number","required":true}]},{"key":"RESTART","id":"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH","name":"Restart","description":"Broadcast reset consumed by hero-nav/dungeon-combat/objective-reach/objective-flow","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]}],"transitions":[{"from":"playing","to":"playing","event":"INIT","eventId":"evt_BC403AGEAZ75FQJZN4TX2EP137","effects":[["render-ui","main",{"type":"game-shell","fontFamily":"@config.fontFamily","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"game-hud","stats":[{"label":"HP","value":"@entity.hp","max":"@entity.maxHp","format":"hearts"},{"label":"Score","value":["+","@entity.score","@entity.combatScore"]}]},"controls":{"type":"control-grid","kind":"dpad","directionEvents":{"up":"MOVE_UP","down":"MOVE_DOWN","left":"MOVE_LEFT","right":"MOVE_RIGHT"},"directionAssets":"@config.directionAssets"},"overlay":["if",["!=","@entity.result","none"],{"type":"game-menu","title":"VICTORY","subtitle":"You found the chest!","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["!=","@entity.combatResult","none"],{"type":"game-menu","title":"DEFEAT","subtitle":"The dungeon claims another hero","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","fit":true,"camera":{"zoom":"@config.scale"},"projection":"flat","showMinimap":false,"keyMap":{"ArrowUp":"MOVE_UP","KeyW":"MOVE_UP","ArrowDown":"MOVE_DOWN","KeyS":"MOVE_DOWN","ArrowLeft":"MOVE_LEFT","KeyA":"MOVE_LEFT","ArrowRight":"MOVE_RIGHT","KeyD":"MOVE_RIGHT"},"children":[{"type":"draw-shape-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-shape","shape":"cell","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"fill":"#5c94fc"}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-sprite","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"asset":["if",["validate/required",["object/get",["object/get","@t","terrainSprite"],"url"]],["object/get","@t","terrainSprite"],["object/get",["object/get","@config.assetManifest","terrains"],["object/get","@t","terrain"]]],"anchor":"center","width":1,"height":1}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.features",["fn","f",{"type":"draw-sprite","position":{"x":["object/get","@f","x"],"y":["object/get","@f","y"]},"asset":["object/get","@f","sprite"]}]]},{"type":"draw-sprite-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-sprite","position":["object/get","@u","position"],"asset":["if",["validate/required",["object/get",["object/get","@u","sprite"],"url"]],["object/get","@u","sprite"],["object/get",["object/get","@config.assetManifest","units"],["object/get","@u","unitType"]]],"anchor":"ground","width":1,"height":1}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":0.5,"height":0.12,"fill":"rgba(0,0,0,0.6)"}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":["*",0.5,["/",["object/get","@u","health"],["object/get","@u","maxHealth"]]],"height":0.12,"fill":"#22c55e"}]]},{"type":"draw-text-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-text","text":["object/get","@u","name"],"position":["object/get","@u","position"],"offsetY":-0.85,"color":"#ffffff"}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets","sprites":["object/get","@config.assetManifest","effects"]}]}]}]]},{"from":"playing","to":"playing","event":"MOVE_UP","eventId":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["object/get",["object/get","@hero","position"],"x"]],["ny",["-",["object/get",["object/get","@hero","position"],"y"],1]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"MOVE_DOWN","eventId":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["object/get",["object/get","@hero","position"],"x"]],["ny",["+",["object/get",["object/get","@hero","position"],"y"],1]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"MOVE_LEFT","eventId":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["-",["object/get",["object/get","@hero","position"],"x"],1]],["ny",["object/get",["object/get","@hero","position"],"y"]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"MOVE_RIGHT","eventId":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["let",[["hero",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]]]],["let",[["nx",["+",["object/get",["object/get","@hero","position"],"x"],1]],["ny",["object/get",["object/get","@hero","position"],"y"]]],["let",[["targetEnemy",["array/find","@entity.enemies",["fn","e",["and",[">","@e.health",0],["and",["==",["object/get",["object/get","@e","position"],"x"],"@nx"],["==",["object/get",["object/get","@e","position"],"y"],"@ny"]]]]]],["tile",["array/find","@entity.tiles",["fn","t",["and",["==",["object/get","@t","x"],"@nx"],["==",["object/get","@t","y"],"@ny"]]]]]],["if",["!=","@targetEnemy",null],["emit","ATTACK",{"targetId":["object/get","@targetEnemy","id"]}],["if",["and",["grid/in-bounds",{"x":"@nx","y":"@ny"},"@config.gridWidth","@config.gridHeight"],["==",["if",["==","@tile",null],false,["object/get","@tile","passable"]],true]],["emit","MOVE",{"unitId":"hero","x":"@nx","y":"@ny"}],null]]]]]]},{"from":"playing","to":"playing","event":"PLAY_AGAIN","eventId":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","effects":[["emit","RESTART",{"id":"board"}]]}]},"ticks":[{"name":"renderTick","interval":100,"effects":[["render-ui","main",{"type":"game-shell","fontFamily":"@config.fontFamily","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"game-hud","stats":[{"label":"HP","value":"@entity.hp","max":"@entity.maxHp","format":"hearts"},{"label":"Score","value":["+","@entity.score","@entity.combatScore"]}]},"controls":{"type":"control-grid","kind":"dpad","directionEvents":{"up":"MOVE_UP","down":"MOVE_DOWN","left":"MOVE_LEFT","right":"MOVE_RIGHT"},"directionAssets":"@config.directionAssets"},"overlay":["if",["!=","@entity.result","none"],{"type":"game-menu","title":"VICTORY","subtitle":"You found the chest!","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["!=","@entity.combatResult","none"],{"type":"game-menu","title":"DEFEAT","subtitle":"The dungeon claims another hero","options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","fit":true,"camera":{"zoom":"@config.scale"},"projection":"flat","showMinimap":false,"keyMap":{"ArrowUp":"MOVE_UP","KeyW":"MOVE_UP","ArrowDown":"MOVE_DOWN","KeyS":"MOVE_DOWN","ArrowLeft":"MOVE_LEFT","KeyA":"MOVE_LEFT","ArrowRight":"MOVE_RIGHT","KeyD":"MOVE_RIGHT"},"children":[{"type":"draw-shape-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-shape","shape":"cell","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"fill":"#5c94fc"}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.tiles",["fn","t",{"type":"draw-sprite","position":{"x":["object/get","@t","x"],"y":["object/get","@t","y"]},"asset":["if",["validate/required",["object/get",["object/get","@t","terrainSprite"],"url"]],["object/get","@t","terrainSprite"],["object/get",["object/get","@config.assetManifest","terrains"],["object/get","@t","terrain"]]],"anchor":"center","width":1,"height":1}]]},{"type":"draw-sprite-layer","items":["array/map","@entity.features",["fn","f",{"type":"draw-sprite","position":{"x":["object/get","@f","x"],"y":["object/get","@f","y"]},"asset":["object/get","@f","sprite"]}]]},{"type":"draw-sprite-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-sprite","position":["object/get","@u","position"],"asset":["if",["validate/required",["object/get",["object/get","@u","sprite"],"url"]],["object/get","@u","sprite"],["object/get",["object/get","@config.assetManifest","units"],["object/get","@u","unitType"]]],"anchor":"ground","width":1,"height":1}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":0.5,"height":0.12,"fill":"rgba(0,0,0,0.6)"}]]},{"type":"draw-shape-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-shape","shape":"rect","position":["object/get","@u","position"],"anchor":"ground","offsetX":-0.25,"offsetY":-0.6,"width":["*",0.5,["/",["object/get","@u","health"],["object/get","@u","maxHealth"]]],"height":0.12,"fill":"#22c55e"}]]},{"type":"draw-text-layer","items":["array/map",["array/concat","@entity.units","@entity.enemies"],["fn","u",{"type":"draw-text","text":["object/get","@u","name"],"position":["object/get","@u","position"],"offsetY":-0.85,"color":"#ffffff"}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets","sprites":["object/get","@config.assetManifest","effects"]}]}]}]]},{"name":"chaseTick","interval":900,"guard":["and",["==","@entity.result","none"],["==","@entity.combatResult","none"]],"effects":[["emit","MONSTER_TICK",{"heroX":["object/get",["object/get",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]],"position"],"x"],"heroY":["object/get",["object/get",["array/find","@entity.units",["fn","u",["==","@u.id","hero"]]],"position"],"y"]}]]}],"config":{"fxPresets":{"type":"[FxPreset]","default":[{"type":"explosion","color":"#fb923c","color2":"#7c2d12","shape":"ring","size":0.85,"count":8,"glow":0.2,"gravity":0.4},{"type":"pickup","color":"#ffe066","color2":"#fff4cc","shape":"spark","size":0.4,"count":5,"glow":0.1,"vy":-0.5}],"label":"Fx Presets","description":"This board's effect vocabulary — one look/recipe row per fx type its mechanics emit; unknown types fall back to a neutral spark.","tier":"presentation","items":{"type":"object","properties":{"gravity":{"name":"gravity","type":"number","required":false},"color":{"name":"color","type":"string","required":false},"vy":{"name":"vy","type":"number","required":false},"space":{"name":"space","type":"string","required":false},"vz":{"name":"vz","type":"number","required":false},"particleCount":{"name":"particleCount","type":"number","required":false},"vx":{"name":"vx","type":"number","required":false},"size":{"name":"size","type":"number","required":false},"type":{"name":"type","type":"string","required":true},"color2":{"name":"color2","type":"string","required":false},"glow":{"name":"glow","type":"number","required":false},"effect":{"name":"effect","type":"string","required":false},"shape":{"name":"shape","type":"string","required":false},"count":{"name":"count","type":"number","required":false}}}},"gridWidth":{"type":"number","default":4,"label":"Grid Width","description":"Grid column count (matches HeroAuthority/Enemies.gridWidth).","tier":"presentation"},"gridHeight":{"type":"number","default":4,"label":"Grid Height","description":"Grid row count (matches HeroAuthority/Enemies.gridHeight).","tier":"presentation"},"backgroundAsset":{"type":"Asset","default":{},"label":"Background Asset","description":"Game-shell background panel sprite (theme chrome).","tier":"presentation","properties":{"aspect":{"name":"aspect","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false}}},"directionAssets":{"type":"DirectionAssets","default":{},"label":"Direction Assets","description":"D-pad direction icon sprites.","tier":"presentation","properties":{"up":{"name":"up","type":"object","required":false,"properties":{"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}}}},"down":{"name":"down","type":"object","required":false,"properties":{"name":{"name":"name","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"sprite":{"name":"sprite","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false}}},"right":{"name":"right","type":"object","required":false,"properties":{"category":{"name":"category","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false}}},"left":{"name":"left","type":"object","required":false,"properties":{"name":{"name":"name","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}}}}}},"fontFamily":{"type":"string","default":"","label":"Font Family","description":"game-shell font family (e.g. pixel).","tier":"presentation"},"hudBackgroundAsset":{"type":"Asset","default":{},"label":"HUD Background Asset","description":"HUD panel background sprite (theme chrome).","tier":"presentation","properties":{"atlas":{"name":"atlas","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false}}},"scale":{"type":"number","default":1,"label":"Scale","description":"Canvas render scale.","tier":"presentation"},"assetManifest":{"type":"AssetManifest","default":{"terrains":{},"units":{},"features":{},"effects":{}},"label":"Asset Manifest","description":"Terrain/unit/feature/effect sprite manifest.","tier":"presentation","properties":{"effects":{"name":"effects","type":"object","required":false,"items":{"type":"object","properties":{"category":{"name":"category","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"url":{"name":"url","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false}}}},"units":{"name":"units","type":"object","required":false,"items":{"type":"object","properties":{"atlas":{"name":"atlas","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}}}}},"terrains":{"name":"terrains","type":"object","required":false,"items":{"type":"object","properties":{"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"category":{"name":"category","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"url":{"name":"url","type":"string","required":false}}}},"features":{"name":"features","type":"object","required":false,"items":{"type":"object","properties":{"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}}}}}}}},"scope":"instance"}],"pages":[{"name":"DungeonBoard2DPage","id":"pag_7JQRAMVFQNQVTX6V1G72V4BQ7Z","path":"/dungeon-board-2d","traits":[{"ref":"HeroAuthority","refId":"trt_6T7TXS957PJKV12D48ZJ4Z9DY8"},{"ref":"Enemies","refId":"trt_TT0A7NBA7BN3NTS7Q99K57FH35"},{"ref":"Collector","refId":"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC"},{"ref":"FxDecay","refId":"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R"},{"ref":"RoundGate","refId":"trt_6RES95RTPRDBCDE3V5VBJPNSGW"},{"ref":"DungeonIntent","refId":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"}]}],"types":{"Asset":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}],"AssetManifest":[{"name":"terrains","type":"Map<string,Asset>"},{"name":"units","type":"Map<string,Asset>"},{"name":"features","type":"Map<string,Asset>"},{"name":"effects","type":"Map<string,Asset>"}],"DirectionAssets":[{"name":"up","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"down","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"left","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"right","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Feature":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"type","type":"string","required":true},{"name":"sprite","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"done","type":"boolean"}],"Fx":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"FxPreset":[{"name":"type","type":"string","required":true},{"name":"color","type":"string"},{"name":"color2","type":"string"},{"name":"size","type":"number"},{"name":"shape","type":"string"},{"name":"count","type":"number"},{"name":"glow","type":"number"},{"name":"gravity","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"particleCount","type":"number"}],"HudStat":[{"name":"label","type":"string"},{"name":"value","type":"number"},{"name":"max","type":"number"},{"name":"format","type":"string"},{"name":"iconUrl","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Tile":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"terrain","type":"string"},{"name":"passable","type":"boolean"},{"name":"terrainSprite","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Unit":[{"name":"id","type":"string","required":true},{"name":"position","type":"object","properties":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"name":"x","type":"number"},{"name":"y","type":"number"},{"name":"z","type":"number"},{"name":"team","type":"string"},{"name":"health","type":"number"},{"name":"maxHealth","type":"number"},{"name":"unitType","type":"string"},{"name":"name","type":"string"},{"name":"animation","type":"string"},{"name":"frame","type":"number"},{"name":"sprite","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_KZGDJXMWG5E82X3CZWX0PP5QMK":{"id":"ent_KZGDJXMWG5E82X3CZWX0PP5QMK","kind":"entity","bakedName":"GameState","curName":"GameState","renames":[],"owner":"workspace"},"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K":{"id":"evt_3RNSJZDY3AZ1NFP0Q6F6WA7Q6K","kind":"event","bakedName":"MOVE","curName":"MOVE","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH":{"id":"evt_4G5WRQS4RTJCDCGE3KQB7Y83YH","kind":"event","bakedName":"RESTART","curName":"RESTART","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_9MVZEB0J8R94CD51ZXH6NDT6FR":{"id":"evt_9MVZEB0J8R94CD51ZXH6NDT6FR","kind":"event","bakedName":"MOVE_DOWN","curName":"MOVE_DOWN","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_BC403AGEAZ75FQJZN4TX2EP137":{"id":"evt_BC403AGEAZ75FQJZN4TX2EP137","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_BWV4XK80RA0C54J2V1ZCSS17KH":{"id":"evt_BWV4XK80RA0C54J2V1ZCSS17KH","kind":"event","bakedName":"PLAY_AGAIN","curName":"PLAY_AGAIN","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD":{"id":"evt_DGQVCMYWQ7EBKHESYYZJZNKMMD","kind":"event","bakedName":"MOVE_LEFT","curName":"MOVE_LEFT","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_RH6BB6YHMN8TASJYAJH6GBN1K7":{"id":"evt_RH6BB6YHMN8TASJYAJH6GBN1K7","kind":"event","bakedName":"ATTACK","curName":"ATTACK","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF":{"id":"evt_TQZ3M6446M23A4XNTSQ1VJ6ZVF","kind":"event","bakedName":"MOVE_UP","curName":"MOVE_UP","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_VC9SX6QAF8N7M7WVRP66Y81H25":{"id":"evt_VC9SX6QAF8N7M7WVRP66Y81H25","kind":"event","bakedName":"MOVE_RIGHT","curName":"MOVE_RIGHT","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"evt_W484NP21840M283P9G4RPQJXV8":{"id":"evt_W484NP21840M283P9G4RPQJXV8","kind":"event","bakedName":"MONSTER_TICK","curName":"MONSTER_TICK","renames":[],"owner":"workspace","parent":"trt_C2D87NS5BCJNP8W41DQXBJVTPK"},"orb_7N66RHK2RFHC7H2RWGMT3MKX98":{"id":"orb_7N66RHK2RFHC7H2RWGMT3MKX98","kind":"orbital","bakedName":"DungeonBoard2DOrbital","curName":"DungeonBoard2DOrbital","renames":[],"owner":"workspace"},"pag_7JQRAMVFQNQVTX6V1G72V4BQ7Z":{"id":"pag_7JQRAMVFQNQVTX6V1G72V4BQ7Z","kind":"page","bakedName":"DungeonBoard2DPage","curName":"DungeonBoard2DPage","renames":[],"owner":"workspace"},"trt_6RES95RTPRDBCDE3V5VBJPNSGW":{"id":"trt_6RES95RTPRDBCDE3V5VBJPNSGW","kind":"trait","bakedName":"RoundGate","curName":"RoundGate","renames":[],"owner":"workspace"},"trt_6T7TXS957PJKV12D48ZJ4Z9DY8":{"id":"trt_6T7TXS957PJKV12D48ZJ4Z9DY8","kind":"trait","bakedName":"HeroAuthority","curName":"HeroAuthority","renames":[],"owner":"workspace"},"trt_C2D87NS5BCJNP8W41DQXBJVTPK":{"id":"trt_C2D87NS5BCJNP8W41DQXBJVTPK","kind":"trait","bakedName":"DungeonIntent","curName":"DungeonIntent","renames":[],"owner":"workspace"},"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC":{"id":"trt_PB642WQTNYXAZ4RCP1KVRF3ZDC","kind":"trait","bakedName":"Collector","curName":"Collector","renames":[],"owner":"workspace"},"trt_TT0A7NBA7BN3NTS7Q99K57FH35":{"id":"trt_TT0A7NBA7BN3NTS7Q99K57FH35","kind":"trait","bakedName":"Enemies","curName":"Enemies","renames":[],"owner":"workspace"},"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R":{"id":"trt_XFG9YZKVTFXX7KFTJSFJ9BYQ5R","kind":"trait","bakedName":"FxDecay","curName":"FxDecay","renames":[],"owner":"workspace"}}}}