@almadar/std 16.199.0 → 16.201.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 (252) hide show
  1. package/behaviors/lolo/ui/avl/atoms/ui-behavior-view.lolo +2 -2
  2. package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +2 -2
  3. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +1 -1
  4. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +1 -1
  5. package/behaviors/lolo/ui/core/atoms/ui-conditional-wrapper.lolo +11 -4
  6. package/behaviors/lolo/ui/core/atoms/ui-icon.lolo +1 -1
  7. package/behaviors/lolo/ui/core/atoms/ui-input.lolo +10 -4
  8. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +6 -4
  9. package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +5 -5
  10. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +8 -1
  11. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +1 -1
  12. package/behaviors/lolo/ui/core/molecules/ui-edge-decoration.lolo +1 -1
  13. package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +5 -0
  14. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +1 -1
  15. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +54 -0
  16. package/behaviors/lolo/ui/core/molecules/ui-gradient-divider.lolo +1 -1
  17. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +8 -1
  18. package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +10 -4
  19. package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +3 -3
  20. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +1 -1
  21. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +3 -3
  22. package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +23 -16
  23. package/behaviors/lolo/ui/core/organisms/ui-dock-layout.lolo +186 -0
  24. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +2 -2
  25. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +1 -1
  26. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +2 -2
  27. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +15 -8
  28. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +15 -8
  29. package/behaviors/lolo/ui/core/organisms/ui-split-pane.lolo +37 -1
  30. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +1 -1
  31. package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +3 -3
  32. package/behaviors/lolo/ui/game/atoms/std-coef-pad.lolo +5 -3
  33. package/behaviors/lolo/ui/game/atoms/std-fx-narrative.lolo +126 -0
  34. package/behaviors/lolo/ui/game/atoms/std-pickup.lolo +104 -0
  35. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +50 -21
  36. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +3 -3
  37. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +1 -1
  38. package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +1 -1
  39. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +3 -3
  40. package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +3 -3
  41. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +12 -0
  42. package/behaviors/registry/infra/atoms/std-approval-gate.orb +20 -10
  43. package/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
  44. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
  45. package/behaviors/registry/infra/atoms/std-data-erasure.orb +16 -8
  46. package/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
  47. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
  48. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +2 -1
  49. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +10 -5
  50. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +4 -2
  51. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +389 -3
  52. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +389 -3
  53. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +93 -2
  54. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
  55. package/behaviors/registry/ui/core/atoms/std-browse.orb +6 -3
  56. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
  57. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
  58. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
  59. package/behaviors/registry/ui/core/atoms/std-export.orb +4 -2
  60. package/behaviors/registry/ui/core/atoms/std-file-store.orb +101 -2
  61. package/behaviors/registry/ui/core/atoms/std-gallery.orb +18 -9
  62. package/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
  63. package/behaviors/registry/ui/core/atoms/std-list.orb +6 -3
  64. package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +13 -1
  65. package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +13 -1
  66. package/behaviors/registry/ui/core/atoms/ui-badge.orb +56 -1
  67. package/behaviors/registry/ui/core/atoms/ui-button.orb +56 -1
  68. package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +277 -5
  69. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +56 -1
  70. package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -10
  71. package/behaviors/registry/ui/core/atoms/ui-input.orb +42 -7
  72. package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +27 -1
  73. package/behaviors/registry/ui/core/atoms/ui-select.orb +69 -9
  74. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +30 -1
  75. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +76 -13
  76. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +30 -1
  77. package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +15 -1
  78. package/behaviors/registry/ui/core/molecules/ui-chart.orb +133 -1
  79. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +77 -1
  80. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +22 -1
  81. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +34 -1
  82. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +99 -1
  83. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +118 -1
  84. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +27 -1
  85. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +15 -1
  86. package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +14 -1
  87. package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +35 -1
  88. package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +20 -1
  89. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +65 -3
  90. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +22 -1
  91. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +60 -1
  92. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -8
  93. package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -9
  94. package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +39 -1
  95. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +8 -0
  96. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +39 -1
  97. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +29 -10
  98. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +274 -0
  99. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +85 -1
  100. package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +22 -1
  101. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +76 -1
  102. package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -10
  103. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +421 -1
  104. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +92 -1
  105. package/behaviors/registry/ui/core/molecules/ui-header.orb +59 -1
  106. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +125 -2
  107. package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +17 -1
  108. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +39 -1
  109. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +42 -7
  110. package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +22 -1
  111. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +17 -1
  112. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +15 -1
  113. package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +18 -1
  114. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +109 -1
  115. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +27 -1
  116. package/behaviors/registry/ui/core/molecules/ui-meter.orb +57 -1
  117. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +27 -1
  118. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +78 -4
  119. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +91 -1
  120. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +20 -1
  121. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +23 -1
  122. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +18 -1
  123. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +5 -2
  124. package/behaviors/registry/ui/core/molecules/ui-section.orb +22 -1
  125. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +22 -1
  126. package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +18 -1
  127. package/behaviors/registry/ui/core/molecules/ui-split.orb +22 -1
  128. package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +22 -1
  129. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +64 -4
  130. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +136 -1
  131. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +301 -1
  132. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +25 -1
  133. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +28 -1
  134. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +46 -1
  135. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +518 -102
  136. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +19 -1
  137. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +22 -1
  138. package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +40 -1
  139. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +196 -1
  140. package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +521 -0
  141. package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +22 -1
  142. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +83 -14
  143. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +64 -8
  144. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +152 -14
  145. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1140 -15
  146. package/behaviors/registry/ui/core/organisms/ui-form.orb +1140 -15
  147. package/behaviors/registry/ui/core/organisms/ui-master-detail.orb +22 -1
  148. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +71 -1
  149. package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +22 -1
  150. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +29 -1
  151. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +109 -2
  152. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +61 -7
  153. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +22 -1
  154. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +37 -7
  155. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +31 -1
  156. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +73 -1
  157. package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +22 -1
  158. package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +170 -4
  159. package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +695 -0
  160. package/behaviors/registry/ui/game/atoms/std-pickup.orb +835 -0
  161. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1613 -1062
  162. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +269 -1
  163. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +288 -1
  164. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +54 -1
  165. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +311 -1
  166. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +56 -1
  167. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +59 -20
  168. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +186 -7
  169. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +56 -1
  170. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +233 -1
  171. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +137 -1
  172. package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +219 -1
  173. package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +951 -1
  174. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +512 -1
  175. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +270 -1
  176. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +106 -1
  177. package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +85 -1
  178. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +19 -1
  179. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +128 -1
  180. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +168 -8
  181. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +151 -13
  182. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +109 -1
  183. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +56 -1
  184. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +523 -1
  185. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +112 -22
  186. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +24 -1
  187. package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +20 -1
  188. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +849 -1
  189. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +8 -4
  190. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +6 -3
  191. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +10 -5
  192. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +8 -4
  193. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +8 -4
  194. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +6 -3
  195. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +8 -4
  196. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +12 -6
  197. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +8 -4
  198. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +6 -3
  199. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +289 -1
  200. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +424 -1
  201. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +925 -1
  202. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +970 -1
  203. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +351 -1
  204. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +610 -1
  205. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1049 -1
  206. package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +2 -1
  207. package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +2 -1
  208. package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +2 -1
  209. package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +2 -1
  210. package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +2 -1
  211. package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +2 -1
  212. package/behaviors/registry/ui/marketing/atoms/ui-community-links.orb +36 -1
  213. package/behaviors/registry/ui/marketing/atoms/ui-cta-banner.orb +27 -1
  214. package/behaviors/registry/ui/marketing/atoms/ui-hero-section.orb +39 -1
  215. package/behaviors/registry/ui/marketing/atoms/ui-marketing-footer.orb +55 -1
  216. package/behaviors/registry/ui/marketing/atoms/ui-pricing-card.orb +15 -1
  217. package/behaviors/registry/ui/marketing/atoms/ui-pricing-grid.orb +65 -1
  218. package/behaviors/registry/ui/marketing/atoms/ui-service-catalog.orb +19 -1
  219. package/behaviors/registry/ui/marketing/atoms/ui-showcase-card.orb +15 -1
  220. package/behaviors/registry/ui/marketing/atoms/ui-split-section.orb +15 -1
  221. package/behaviors/registry/ui/marketing/atoms/ui-stats-grid.orb +15 -1
  222. package/behaviors/registry/ui/marketing/atoms/ui-step-flow.orb +23 -1
  223. package/behaviors/registry/ui/marketing/atoms/ui-tag-cloud.orb +18 -1
  224. package/behaviors/registry/ui/marketing/organisms/ui-book-viewer.orb +84 -1
  225. package/behaviors/registry/ui/marketing/organisms/ui-case-study-organism.orb +22 -1
  226. package/behaviors/registry/ui/marketing/organisms/ui-feature-grid-organism.orb +22 -1
  227. package/behaviors/registry/ui/marketing/organisms/ui-hero-organism.orb +52 -1
  228. package/behaviors/registry/ui/marketing/organisms/ui-pricing-organism.orb +22 -1
  229. package/behaviors/registry/ui/marketing/organisms/ui-showcase-organism.orb +32 -1
  230. package/behaviors/registry/ui/marketing/organisms/ui-stats-organism.orb +22 -1
  231. package/behaviors/registry/ui/marketing/organisms/ui-step-flow-organism.orb +22 -1
  232. package/behaviors/registry/ui/marketing/organisms/ui-team-organism.orb +22 -1
  233. package/behaviors/registry/ui/marketing/templates/ui-about-page-template.orb +176 -1
  234. package/behaviors/registry/ui/marketing/templates/ui-feature-detail-page-template.orb +147 -1
  235. package/behaviors/registry/ui/marketing/templates/ui-landing-page-template.orb +260 -1
  236. package/behaviors/registry/ui/marketing/templates/ui-pricing-page-template.orb +98 -1
  237. package/dist/behaviors/exports-reader.js +3918 -2596
  238. package/dist/behaviors/functions/index.d.ts +469 -30
  239. package/dist/behaviors/functions/index.js +3906 -2597
  240. package/dist/behaviors/index.d.ts +2 -2
  241. package/dist/behaviors/index.js +3929 -2597
  242. package/dist/behaviors/query.d.ts +88 -4
  243. package/dist/behaviors/query.js +3929 -2597
  244. package/dist/behaviors-embeddings.hash.json +3 -3
  245. package/dist/behaviors-embeddings.json +19 -3
  246. package/dist/behaviors-registry.json +122305 -2637
  247. package/dist/index.d.ts +2 -2
  248. package/dist/index.js +3929 -2597
  249. package/dist/knob-embeddings.hash.json +3 -3
  250. package/dist/knob-embeddings.json +1 -1
  251. package/dist/registry/factory-signatures.json +1 -1
  252. package/package.json +3 -3
@@ -136,6 +136,24 @@
136
136
  "parent": "trt_01M0H2SJBBCZW9WSQ3YBCVRKM2",
137
137
  "renames": []
138
138
  },
139
+ "evt_01M1GJ1RVFG67Q9AE87QG7RWTJ": {
140
+ "bakedName": "SET_TUNING",
141
+ "curName": "SET_TUNING",
142
+ "id": "evt_01M1GJ1RVFG67Q9AE87QG7RWTJ",
143
+ "kind": "event",
144
+ "owner": "workspace",
145
+ "parent": "trt_01M0H2SJBBCZW9WSQ3YBCVRKM2",
146
+ "renames": []
147
+ },
148
+ "evt_01M1KCHVK8J2707S2GJT2NE4YC": {
149
+ "bakedName": "CURVE_MOD_CLEAR",
150
+ "curName": "CURVE_MOD_CLEAR",
151
+ "id": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
152
+ "kind": "event",
153
+ "owner": "workspace",
154
+ "parent": "trt_01M0H2SJBBCZW9WSQ3YBCVRKM2",
155
+ "renames": []
156
+ },
139
157
  "orb_01M0H2SJBB6B28C7NXBC5BWW23": {
140
158
  "bakedName": "PlatformerBodyOrbital",
141
159
  "curName": "PlatformerBodyOrbital",
@@ -248,6 +266,11 @@
248
266
  "required": true,
249
267
  "type": "number"
250
268
  },
269
+ "b": {
270
+ "name": "b",
271
+ "required": true,
272
+ "type": "number"
273
+ },
251
274
  "h": {
252
275
  "name": "h",
253
276
  "required": true,
@@ -283,6 +306,28 @@
283
306
  "default": false,
284
307
  "name": "skating",
285
308
  "type": "boolean"
309
+ },
310
+ {
311
+ "default": {},
312
+ "name": "tuning",
313
+ "properties": {
314
+ "gravity": {
315
+ "name": "gravity",
316
+ "required": false,
317
+ "type": "number"
318
+ },
319
+ "jumpStrength": {
320
+ "name": "jumpStrength",
321
+ "required": false,
322
+ "type": "number"
323
+ },
324
+ "moveSpeed": {
325
+ "name": "moveSpeed",
326
+ "required": false,
327
+ "type": "number"
328
+ }
329
+ },
330
+ "type": "object"
286
331
  }
287
332
  ],
288
333
  "id": "ent_01M0H2SJBB5TG61D238AWJW3KC",
@@ -311,7 +356,7 @@
311
356
  "config": {
312
357
  "curveModsEnabled": {
313
358
  "default": false,
314
- "description": "When true, entity.curveMods reshape the skate surface inside each mod's x-range: the road samples the base curve at (x − h) and applies a·y + k (slope scales by a) — coefficient pads lift/tilt the segment the player is riding. Default off: boards without coef pads pay nothing.",
359
+ "description": "When true, entity.curveMods reshape the skate surface inside each mod's x-range: the road samples the base curve at b·(x − h) and applies a·y + k (slope scales by a·b) — coefficient pads lift/tilt/compress the segment the player is riding. Multiple overlapping mods stack by summing each mod's delta from the base surface; a mod whose shifted sample leaves the curve range is skipped. Default off: boards without coef pads pay nothing.",
315
360
  "label": "Curve Mods Enabled",
316
361
  "tier": "domain",
317
362
  "type": "boolean"
@@ -455,7 +500,7 @@
455
500
  },
456
501
  "skate": {
457
502
  "default": false,
458
- "description": "When true, a grounded body within skateSnap of the skateCurve surface rides the curve: y snaps to the interpolated surface and tangential gravity (g·slope/(1+slope²)) accelerates vx, so the body slides downhill along the graph and launches off its ends; JUMP kicks free",
503
+ "description": "When true, a grounded body within skateSnap of the skateCurve surface rides the curve: y snaps to the interpolated surface and tangential gravity (g·slope/(1+slope²)) accelerates vx, so the body slides downhill along the graph and launches off its ends; JUMP kicks free. Engages when grounded, when landing on a tile, or when a falling (not rising) body passes within skateSnap above the surface.",
459
504
  "label": "Curve Skating",
460
505
  "tier": "domain",
461
506
  "type": "boolean"
@@ -615,7 +660,7 @@
615
660
  "tier": "domain"
616
661
  },
617
662
  {
618
- "description": "Body engaged curve skating this tick (grounded within skateSnap of the skateCurve surface); slope is the local dy/dx — boards layer fx and equation readouts",
663
+ "description": "Body engaged curve skating this tick (grounded, landing, or falling within skateSnap above the skateCurve surface); slope is the local dy/dx — boards layer fx and equation readouts",
619
664
  "event": "BODY_SKATE_START",
620
665
  "eventId": "evt_01M0H2SJBB3Y7Z6D7EX8VQ750V",
621
666
  "payloadSchema": [
@@ -766,6 +811,13 @@
766
811
  ],
767
812
  "scope": "external",
768
813
  "tier": "domain"
814
+ },
815
+ {
816
+ "description": "Curve mods were cleared; the skate surface is back to the base skateCurve until a new mod is added.",
817
+ "event": "CURVE_MOD_CLEAR",
818
+ "eventId": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
819
+ "scope": "external",
820
+ "tier": "domain"
769
821
  }
770
822
  ],
771
823
  "entityContract": {
@@ -775,7 +827,8 @@
775
827
  "fell",
776
828
  "goalId",
777
829
  "hazardId",
778
- "skating"
830
+ "skating",
831
+ "tuning"
779
832
  ],
780
833
  "requires": []
781
834
  },
@@ -855,6 +908,10 @@
855
908
  "required": true,
856
909
  "type": "number"
857
910
  },
911
+ {
912
+ "name": "b",
913
+ "type": "number"
914
+ },
858
915
  {
859
916
  "name": "h",
860
917
  "required": true,
@@ -867,6 +924,32 @@
867
924
  }
868
925
  ]
869
926
  },
927
+ {
928
+ "description": "Curve mods were cleared; the skate surface is back to the base skateCurve until a new mod is added.",
929
+ "id": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
930
+ "key": "CURVE_MOD_CLEAR",
931
+ "name": "Curve Mod Clear",
932
+ "tier": "domain"
933
+ },
934
+ {
935
+ "id": "evt_01M1GJ1RVFG67Q9AE87QG7RWTJ",
936
+ "key": "SET_TUNING",
937
+ "name": "Set Tuning",
938
+ "payloadSchema": [
939
+ {
940
+ "name": "jumpStrength",
941
+ "type": "number"
942
+ },
943
+ {
944
+ "name": "moveSpeed",
945
+ "type": "number"
946
+ },
947
+ {
948
+ "name": "gravity",
949
+ "type": "number"
950
+ }
951
+ ]
952
+ },
870
953
  {
871
954
  "id": "evt_01M0H2SJBBSCEAJH5FZN8AAX45",
872
955
  "key": "RESTART",
@@ -923,7 +1006,7 @@
923
1006
  "tier": "domain"
924
1007
  },
925
1008
  {
926
- "description": "Body engaged curve skating this tick (grounded within skateSnap of the skateCurve surface); slope is the local dy/dx — boards layer fx and equation readouts",
1009
+ "description": "Body engaged curve skating this tick (grounded, landing, or falling within skateSnap above the skateCurve surface); slope is the local dy/dx — boards layer fx and equation readouts",
927
1010
  "id": "evt_01M0H2SJBB3Y7Z6D7EX8VQ750V",
928
1011
  "key": "BODY_SKATE_START",
929
1012
  "name": "Body Skate Start",
@@ -1142,7 +1225,26 @@
1142
1225
  "vx": [
1143
1226
  "*",
1144
1227
  "@payload.dir",
1145
- "@config.moveSpeed"
1228
+ [
1229
+ "if",
1230
+ [
1231
+ "==",
1232
+ [
1233
+ "object/get",
1234
+ "@entity.tuning",
1235
+ "moveSpeed",
1236
+ null
1237
+ ],
1238
+ null
1239
+ ],
1240
+ "@config.moveSpeed",
1241
+ [
1242
+ "object/get",
1243
+ "@entity.tuning",
1244
+ "moveSpeed",
1245
+ null
1246
+ ]
1247
+ ]
1146
1248
  ]
1147
1249
  }
1148
1250
  ]
@@ -1168,15 +1270,72 @@
1168
1270
  "if",
1169
1271
  [
1170
1272
  ">",
1171
- "@config.gravity",
1273
+ [
1274
+ "if",
1275
+ [
1276
+ "==",
1277
+ [
1278
+ "object/get",
1279
+ "@entity.tuning",
1280
+ "gravity",
1281
+ null
1282
+ ],
1283
+ null
1284
+ ],
1285
+ "@config.gravity",
1286
+ [
1287
+ "object/get",
1288
+ "@entity.tuning",
1289
+ "gravity",
1290
+ null
1291
+ ]
1292
+ ],
1172
1293
  0.0
1173
1294
  ],
1174
1295
  [
1175
1296
  "-",
1176
1297
  0.0,
1177
- "@config.jumpStrength"
1298
+ [
1299
+ "if",
1300
+ [
1301
+ "==",
1302
+ [
1303
+ "object/get",
1304
+ "@entity.tuning",
1305
+ "jumpStrength",
1306
+ null
1307
+ ],
1308
+ null
1309
+ ],
1310
+ "@config.jumpStrength",
1311
+ [
1312
+ "object/get",
1313
+ "@entity.tuning",
1314
+ "jumpStrength",
1315
+ null
1316
+ ]
1317
+ ]
1178
1318
  ],
1179
- "@config.jumpStrength"
1319
+ [
1320
+ "if",
1321
+ [
1322
+ "==",
1323
+ [
1324
+ "object/get",
1325
+ "@entity.tuning",
1326
+ "jumpStrength",
1327
+ null
1328
+ ],
1329
+ null
1330
+ ],
1331
+ "@config.jumpStrength",
1332
+ [
1333
+ "object/get",
1334
+ "@entity.tuning",
1335
+ "jumpStrength",
1336
+ null
1337
+ ]
1338
+ ]
1180
1339
  ]
1181
1340
  }
1182
1341
  ]
@@ -1252,6 +1411,16 @@
1252
1411
  "@entity.curveMods",
1253
1412
  {
1254
1413
  "a": "@payload.a",
1414
+ "b": [
1415
+ "if",
1416
+ [
1417
+ "==",
1418
+ "@payload.b",
1419
+ null
1420
+ ],
1421
+ 1.0,
1422
+ "@payload.b"
1423
+ ],
1255
1424
  "h": "@payload.h",
1256
1425
  "k": "@payload.k",
1257
1426
  "x0": "@payload.x0",
@@ -1266,6 +1435,88 @@
1266
1435
  "guard": "@config.curveModsEnabled",
1267
1436
  "to": "active"
1268
1437
  },
1438
+ {
1439
+ "effects": [
1440
+ [
1441
+ "set",
1442
+ "@entity.curveMods",
1443
+ []
1444
+ ]
1445
+ ],
1446
+ "event": "CURVE_MOD_CLEAR",
1447
+ "eventId": "evt_01M1KCHVK8J2707S2GJT2NE4YC",
1448
+ "from": "active",
1449
+ "guard": "@config.curveModsEnabled",
1450
+ "to": "active"
1451
+ },
1452
+ {
1453
+ "effects": [
1454
+ [
1455
+ "set",
1456
+ "@entity.tuning",
1457
+ [
1458
+ "object/merge",
1459
+ "@entity.tuning",
1460
+ [
1461
+ "if",
1462
+ [
1463
+ "==",
1464
+ "@payload.jumpStrength",
1465
+ null
1466
+ ],
1467
+ {},
1468
+ {
1469
+ "jumpStrength": "@payload.jumpStrength"
1470
+ }
1471
+ ]
1472
+ ]
1473
+ ],
1474
+ [
1475
+ "set",
1476
+ "@entity.tuning",
1477
+ [
1478
+ "object/merge",
1479
+ "@entity.tuning",
1480
+ [
1481
+ "if",
1482
+ [
1483
+ "==",
1484
+ "@payload.moveSpeed",
1485
+ null
1486
+ ],
1487
+ {},
1488
+ {
1489
+ "moveSpeed": "@payload.moveSpeed"
1490
+ }
1491
+ ]
1492
+ ]
1493
+ ],
1494
+ [
1495
+ "set",
1496
+ "@entity.tuning",
1497
+ [
1498
+ "object/merge",
1499
+ "@entity.tuning",
1500
+ [
1501
+ "if",
1502
+ [
1503
+ "==",
1504
+ "@payload.gravity",
1505
+ null
1506
+ ],
1507
+ {},
1508
+ {
1509
+ "gravity": "@payload.gravity"
1510
+ }
1511
+ ]
1512
+ ]
1513
+ ]
1514
+ ],
1515
+ "event": "SET_TUNING",
1516
+ "eventId": "evt_01M1GJ1RVFG67Q9AE87QG7RWTJ",
1517
+ "from": "active",
1518
+ "to": "active"
1519
+ },
1269
1520
  {
1270
1521
  "effects": [
1271
1522
  [
@@ -1297,6 +1548,11 @@
1297
1548
  "set",
1298
1549
  "@entity.skating",
1299
1550
  false
1551
+ ],
1552
+ [
1553
+ "set",
1554
+ "@entity.tuning",
1555
+ {}
1300
1556
  ]
1301
1557
  ],
1302
1558
  "event": "RESTART",
@@ -1313,16 +1569,26 @@
1313
1569
  "let",
1314
1570
  [
1315
1571
  [
1316
- "gdir",
1572
+ "eg",
1317
1573
  [
1318
1574
  "if",
1319
1575
  [
1320
- ">",
1321
- "@config.gravity",
1322
- 0.0
1576
+ "==",
1577
+ [
1578
+ "object/get",
1579
+ "@entity.tuning",
1580
+ "gravity",
1581
+ null
1582
+ ],
1583
+ null
1323
1584
  ],
1324
- 1.0,
1325
- -1.0
1585
+ "@config.gravity",
1586
+ [
1587
+ "object/get",
1588
+ "@entity.tuning",
1589
+ "gravity",
1590
+ null
1591
+ ]
1326
1592
  ]
1327
1593
  ]
1328
1594
  ],
@@ -1330,97 +1596,115 @@
1330
1596
  "let",
1331
1597
  [
1332
1598
  [
1333
- "bcx",
1599
+ "gdir",
1334
1600
  [
1335
- "+",
1601
+ "if",
1336
1602
  [
1337
- "object/get",
1338
- "@entity.body",
1339
- "x"
1603
+ ">",
1604
+ "@eg",
1605
+ 0.0
1340
1606
  ],
1607
+ 1.0,
1608
+ -1.0
1609
+ ]
1610
+ ]
1611
+ ],
1612
+ [
1613
+ "let",
1614
+ [
1615
+ [
1616
+ "bcx",
1341
1617
  [
1342
- "/",
1618
+ "+",
1343
1619
  [
1344
1620
  "object/get",
1345
1621
  "@entity.body",
1346
- "width"
1622
+ "x"
1347
1623
  ],
1348
- 2.0
1624
+ [
1625
+ "/",
1626
+ [
1627
+ "object/get",
1628
+ "@entity.body",
1629
+ "width"
1630
+ ],
1631
+ 2.0
1632
+ ]
1349
1633
  ]
1350
- ]
1351
- ],
1352
- [
1353
- "bcy",
1634
+ ],
1354
1635
  [
1355
- "+",
1356
- [
1357
- "object/get",
1358
- "@entity.body",
1359
- "y"
1360
- ],
1636
+ "bcy",
1361
1637
  [
1362
- "/",
1638
+ "+",
1363
1639
  [
1364
1640
  "object/get",
1365
1641
  "@entity.body",
1366
- "height"
1642
+ "y"
1367
1643
  ],
1368
- 2.0
1644
+ [
1645
+ "/",
1646
+ [
1647
+ "object/get",
1648
+ "@entity.body",
1649
+ "height"
1650
+ ],
1651
+ 2.0
1652
+ ]
1369
1653
  ]
1370
1654
  ]
1371
- ]
1372
- ],
1373
- [
1374
- "let",
1655
+ ],
1375
1656
  [
1657
+ "let",
1376
1658
  [
1377
- "drift",
1378
1659
  [
1379
- "array/find",
1380
- "@config.driftRegions",
1660
+ "drift",
1381
1661
  [
1382
- "fn",
1383
- "r",
1662
+ "array/find",
1663
+ "@config.driftRegions",
1384
1664
  [
1385
- "and",
1386
- [
1387
- ">=",
1388
- "@bcx",
1389
- [
1390
- "object/get",
1391
- "@r",
1392
- "x0"
1393
- ]
1394
- ],
1665
+ "fn",
1666
+ "r",
1395
1667
  [
1396
1668
  "and",
1397
1669
  [
1398
- "<=",
1670
+ ">=",
1399
1671
  "@bcx",
1400
1672
  [
1401
1673
  "object/get",
1402
1674
  "@r",
1403
- "x1"
1675
+ "x0"
1404
1676
  ]
1405
1677
  ],
1406
1678
  [
1407
1679
  "and",
1408
1680
  [
1409
- ">=",
1410
- "@bcy",
1681
+ "<=",
1682
+ "@bcx",
1411
1683
  [
1412
1684
  "object/get",
1413
1685
  "@r",
1414
- "y0"
1686
+ "x1"
1415
1687
  ]
1416
1688
  ],
1417
1689
  [
1418
- "<=",
1419
- "@bcy",
1690
+ "and",
1420
1691
  [
1421
- "object/get",
1422
- "@r",
1423
- "y1"
1692
+ ">=",
1693
+ "@bcy",
1694
+ [
1695
+ "object/get",
1696
+ "@r",
1697
+ "y0"
1698
+ ]
1699
+ ],
1700
+ [
1701
+ "<=",
1702
+ "@bcy",
1703
+ [
1704
+ "object/get",
1705
+ "@r",
1706
+ "y1"
1707
+ ]
1424
1708
  ]
1425
1709
  ]
1426
1710
  ]
@@ -1428,72 +1712,42 @@
1428
1712
  ]
1429
1713
  ]
1430
1714
  ]
1431
- ]
1432
- ],
1433
- [
1434
- "let",
1435
- [
1436
- [
1437
- "dax",
1438
- [
1439
- "if",
1440
- [
1441
- "==",
1442
- "@drift",
1443
- null
1444
- ],
1445
- 0.0,
1446
- [
1447
- "object/get",
1448
- "@drift",
1449
- "ax"
1450
- ]
1451
- ]
1452
- ],
1453
- [
1454
- "day",
1455
- [
1456
- "if",
1457
- [
1458
- "==",
1459
- "@drift",
1460
- null
1461
- ],
1462
- 0.0,
1463
- [
1464
- "object/get",
1465
- "@drift",
1466
- "ay"
1467
- ]
1468
- ]
1469
- ]
1470
1715
  ],
1471
1716
  [
1472
1717
  "let",
1473
1718
  [
1474
1719
  [
1475
- "vy1",
1720
+ "dax",
1476
1721
  [
1477
- "math/clamp",
1722
+ "if",
1478
1723
  [
1479
- "+",
1480
- "@entity.body.vy",
1481
- [
1482
- "*",
1483
- [
1484
- "+",
1485
- "@config.gravity",
1486
- "@day"
1487
- ],
1488
- 0.033
1489
- ]
1724
+ "==",
1725
+ "@drift",
1726
+ null
1490
1727
  ],
1728
+ 0.0,
1491
1729
  [
1492
- "-",
1493
- 0.0,
1494
- "@config.maxFallSpeed"
1730
+ "object/get",
1731
+ "@drift",
1732
+ "ax"
1733
+ ]
1734
+ ]
1735
+ ],
1736
+ [
1737
+ "day",
1738
+ [
1739
+ "if",
1740
+ [
1741
+ "==",
1742
+ "@drift",
1743
+ null
1495
1744
  ],
1496
- "@config.maxFallSpeed"
1745
+ 0.0,
1746
+ [
1747
+ "object/get",
1748
+ "@drift",
1749
+ "ay"
1750
+ ]
1497
1751
  ]
1498
1752
  ]
1499
1753
  ],
@@ -1501,19 +1755,28 @@
1501
1755
  "let",
1502
1756
  [
1503
1757
  [
1504
- "bw",
1758
+ "vy1",
1505
1759
  [
1506
- "object/get",
1507
- "@entity.body",
1508
- "width"
1509
- ]
1510
- ],
1511
- [
1512
- "bh",
1513
- [
1514
- "object/get",
1515
- "@entity.body",
1516
- "height"
1760
+ "math/clamp",
1761
+ [
1762
+ "+",
1763
+ "@entity.body.vy",
1764
+ [
1765
+ "*",
1766
+ [
1767
+ "+",
1768
+ "@eg",
1769
+ "@day"
1770
+ ],
1771
+ 0.033
1772
+ ]
1773
+ ],
1774
+ [
1775
+ "-",
1776
+ 0.0,
1777
+ "@config.maxFallSpeed"
1778
+ ],
1779
+ "@config.maxFallSpeed"
1517
1780
  ]
1518
1781
  ]
1519
1782
  ],
@@ -1521,20 +1784,19 @@
1521
1784
  "let",
1522
1785
  [
1523
1786
  [
1524
- "nx",
1787
+ "bw",
1525
1788
  [
1526
- "math/clamp",
1527
- [
1528
- "+",
1529
- "@entity.body.x",
1530
- [
1531
- "*",
1532
- "@entity.body.vx",
1533
- 0.033
1534
- ]
1535
- ],
1536
- "@config.xMin",
1537
- "@config.xMax"
1789
+ "object/get",
1790
+ "@entity.body",
1791
+ "width"
1792
+ ]
1793
+ ],
1794
+ [
1795
+ "bh",
1796
+ [
1797
+ "object/get",
1798
+ "@entity.body",
1799
+ "height"
1538
1800
  ]
1539
1801
  ]
1540
1802
  ],
@@ -1542,15 +1804,20 @@
1542
1804
  "let",
1543
1805
  [
1544
1806
  [
1545
- "ny",
1807
+ "nx",
1546
1808
  [
1547
- "+",
1548
- "@entity.body.y",
1809
+ "math/clamp",
1549
1810
  [
1550
- "*",
1551
- "@vy1",
1552
- 0.033
1553
- ]
1811
+ "+",
1812
+ "@entity.body.x",
1813
+ [
1814
+ "*",
1815
+ "@entity.body.vx",
1816
+ 0.033
1817
+ ]
1818
+ ],
1819
+ "@config.xMin",
1820
+ "@config.xMax"
1554
1821
  ]
1555
1822
  ]
1556
1823
  ],
@@ -1558,152 +1825,152 @@
1558
1825
  "let",
1559
1826
  [
1560
1827
  [
1561
- "rect",
1562
- {
1563
- "h": "@bh",
1564
- "w": "@bw",
1565
- "x": "@nx",
1566
- "y": "@ny"
1567
- }
1828
+ "ny",
1829
+ [
1830
+ "+",
1831
+ "@entity.body.y",
1832
+ [
1833
+ "*",
1834
+ "@vy1",
1835
+ 0.033
1836
+ ]
1837
+ ]
1568
1838
  ]
1569
1839
  ],
1570
1840
  [
1571
1841
  "let",
1572
1842
  [
1573
1843
  [
1574
- "hit",
1844
+ "rect",
1845
+ {
1846
+ "h": "@bh",
1847
+ "w": "@bw",
1848
+ "x": "@nx",
1849
+ "y": "@ny"
1850
+ }
1851
+ ]
1852
+ ],
1853
+ [
1854
+ "let",
1855
+ [
1575
1856
  [
1576
- "array/find",
1577
- "@config.platforms",
1857
+ "hit",
1578
1858
  [
1579
- "fn",
1580
- "p",
1859
+ "array/find",
1860
+ "@config.platforms",
1581
1861
  [
1582
- "and",
1862
+ "fn",
1863
+ "p",
1583
1864
  [
1584
- "or",
1865
+ "and",
1585
1866
  [
1586
- "==",
1867
+ "or",
1587
1868
  [
1588
- "object/get",
1589
- "@p",
1590
- "type"
1869
+ "==",
1870
+ [
1871
+ "object/get",
1872
+ "@p",
1873
+ "type"
1874
+ ],
1875
+ "ground"
1591
1876
  ],
1592
- "ground"
1877
+ [
1878
+ "==",
1879
+ [
1880
+ "object/get",
1881
+ "@p",
1882
+ "type"
1883
+ ],
1884
+ "platform"
1885
+ ]
1593
1886
  ],
1594
1887
  [
1595
- "==",
1596
- [
1597
- "object/get",
1598
- "@p",
1599
- "type"
1600
- ],
1601
- "platform"
1888
+ "geo/aabb-overlap",
1889
+ "@rect",
1890
+ {
1891
+ "h": "@p.height",
1892
+ "w": "@p.width",
1893
+ "x": "@p.x",
1894
+ "y": "@p.y"
1895
+ }
1602
1896
  ]
1603
- ],
1604
- [
1605
- "geo/aabb-overlap",
1606
- "@rect",
1607
- {
1608
- "h": "@p.height",
1609
- "w": "@p.width",
1610
- "x": "@p.x",
1611
- "y": "@p.y"
1612
- }
1613
1897
  ]
1614
1898
  ]
1615
1899
  ]
1616
1900
  ]
1617
- ]
1618
- ],
1619
- [
1620
- "let",
1901
+ ],
1621
1902
  [
1903
+ "let",
1622
1904
  [
1623
- "landed",
1624
1905
  [
1625
- "and",
1626
- [
1627
- "!=",
1628
- "@hit",
1629
- null
1630
- ],
1906
+ "landed",
1631
1907
  [
1632
- ">",
1908
+ "and",
1633
1909
  [
1634
- "*",
1635
- "@vy1",
1636
- "@gdir"
1910
+ "!=",
1911
+ "@hit",
1912
+ null
1637
1913
  ],
1638
- 0.0
1914
+ [
1915
+ ">",
1916
+ [
1917
+ "*",
1918
+ "@vy1",
1919
+ "@gdir"
1920
+ ],
1921
+ 0.0
1922
+ ]
1639
1923
  ]
1640
1924
  ]
1641
- ]
1642
- ],
1643
- [
1644
- "let",
1925
+ ],
1645
1926
  [
1927
+ "let",
1646
1928
  [
1647
- "ny2",
1648
1929
  [
1649
- "if",
1650
- "@landed",
1930
+ "ny2",
1651
1931
  [
1652
1932
  "if",
1933
+ "@landed",
1653
1934
  [
1654
- ">",
1655
- "@gdir",
1656
- 0.0
1657
- ],
1658
- [
1659
- "-",
1935
+ "if",
1660
1936
  [
1661
- "object/get",
1662
- "@hit",
1663
- "y"
1937
+ ">",
1938
+ "@gdir",
1939
+ 0.0
1664
1940
  ],
1665
- "@bh"
1666
- ],
1667
- [
1668
- "+",
1669
1941
  [
1670
- "object/get",
1671
- "@hit",
1672
- "y"
1942
+ "-",
1943
+ [
1944
+ "object/get",
1945
+ "@hit",
1946
+ "y"
1947
+ ],
1948
+ "@bh"
1673
1949
  ],
1674
1950
  [
1675
- "object/get",
1676
- "@hit",
1677
- "height"
1951
+ "+",
1952
+ [
1953
+ "object/get",
1954
+ "@hit",
1955
+ "y"
1956
+ ],
1957
+ [
1958
+ "object/get",
1959
+ "@hit",
1960
+ "height"
1961
+ ]
1678
1962
  ]
1679
- ]
1680
- ],
1681
- "@ny"
1682
- ]
1683
- ],
1684
- [
1685
- "vy2",
1686
- [
1687
- "if",
1688
- "@landed",
1689
- 0.0,
1690
- "@vy1"
1691
- ]
1692
- ]
1693
- ],
1694
- [
1695
- "let",
1696
- [
1963
+ ],
1964
+ "@ny"
1965
+ ]
1966
+ ],
1697
1967
  [
1698
- "cx",
1968
+ "vy2",
1699
1969
  [
1700
- "+",
1701
- "@nx",
1702
- [
1703
- "/",
1704
- "@bw",
1705
- 2.0
1706
- ]
1970
+ "if",
1971
+ "@landed",
1972
+ 0.0,
1973
+ "@vy1"
1707
1974
  ]
1708
1975
  ]
1709
1976
  ],
@@ -1711,47 +1978,14 @@
1711
1978
  "let",
1712
1979
  [
1713
1980
  [
1714
- "inRange",
1981
+ "cx",
1715
1982
  [
1716
- "and",
1717
- "@config.skate",
1983
+ "+",
1984
+ "@nx",
1718
1985
  [
1719
- "and",
1720
- [
1721
- ">",
1722
- [
1723
- "array/len",
1724
- "@config.skateCurve"
1725
- ],
1726
- 1.0
1727
- ],
1728
- [
1729
- "and",
1730
- [
1731
- ">=",
1732
- "@cx",
1733
- [
1734
- "object/get",
1735
- [
1736
- "array/first",
1737
- "@config.skateCurve"
1738
- ],
1739
- "x"
1740
- ]
1741
- ],
1742
- [
1743
- "<",
1744
- "@cx",
1745
- [
1746
- "object/get",
1747
- [
1748
- "array/last",
1749
- "@config.skateCurve"
1750
- ],
1751
- "x"
1752
- ]
1753
- ]
1754
- ]
1986
+ "/",
1987
+ "@bw",
1988
+ 2.0
1755
1989
  ]
1756
1990
  ]
1757
1991
  ]
@@ -1760,34 +1994,48 @@
1760
1994
  "let",
1761
1995
  [
1762
1996
  [
1763
- "leftSamp",
1997
+ "inRange",
1764
1998
  [
1765
- "if",
1766
- "@inRange",
1999
+ "and",
2000
+ "@config.skate",
1767
2001
  [
1768
- "array/last",
2002
+ "and",
1769
2003
  [
1770
- "array/filter",
1771
- "@config.skateCurve",
2004
+ ">",
2005
+ [
2006
+ "array/len",
2007
+ "@config.skateCurve"
2008
+ ],
2009
+ 1.0
2010
+ ],
2011
+ [
2012
+ "and",
2013
+ [
2014
+ ">=",
2015
+ "@cx",
2016
+ [
2017
+ "object/get",
2018
+ [
2019
+ "array/first",
2020
+ "@config.skateCurve"
2021
+ ],
2022
+ "x"
2023
+ ]
2024
+ ],
1772
2025
  [
1773
- "fn",
1774
- "s",
2026
+ "<",
2027
+ "@cx",
1775
2028
  [
1776
- "<=",
2029
+ "object/get",
1777
2030
  [
1778
- "object/get",
1779
- "@s",
1780
- "x"
2031
+ "array/last",
2032
+ "@config.skateCurve"
1781
2033
  ],
1782
- "@cx"
2034
+ "x"
1783
2035
  ]
1784
2036
  ]
1785
2037
  ]
1786
- ],
1787
- {
1788
- "x": 0.0,
1789
- "y": 0.0
1790
- }
2038
+ ]
1791
2039
  ]
1792
2040
  ]
1793
2041
  ],
@@ -1795,12 +2043,12 @@
1795
2043
  "let",
1796
2044
  [
1797
2045
  [
1798
- "rightSamp",
2046
+ "leftSamp",
1799
2047
  [
1800
2048
  "if",
1801
2049
  "@inRange",
1802
2050
  [
1803
- "array/first",
2051
+ "array/last",
1804
2052
  [
1805
2053
  "array/filter",
1806
2054
  "@config.skateCurve",
@@ -1808,7 +2056,7 @@
1808
2056
  "fn",
1809
2057
  "s",
1810
2058
  [
1811
- ">",
2059
+ "<=",
1812
2060
  [
1813
2061
  "object/get",
1814
2062
  "@s",
@@ -1820,7 +2068,7 @@
1820
2068
  ]
1821
2069
  ],
1822
2070
  {
1823
- "x": 1.0,
2071
+ "x": 0.0,
1824
2072
  "y": 0.0
1825
2073
  }
1826
2074
  ]
@@ -1830,40 +2078,34 @@
1830
2078
  "let",
1831
2079
  [
1832
2080
  [
1833
- "slope",
2081
+ "rightSamp",
1834
2082
  [
1835
2083
  "if",
1836
2084
  "@inRange",
1837
2085
  [
1838
- "/",
1839
- [
1840
- "-",
1841
- [
1842
- "object/get",
1843
- "@rightSamp",
1844
- "y"
1845
- ],
1846
- [
1847
- "object/get",
1848
- "@leftSamp",
1849
- "y"
1850
- ]
1851
- ],
2086
+ "array/first",
1852
2087
  [
1853
- "-",
1854
- [
1855
- "object/get",
1856
- "@rightSamp",
1857
- "x"
1858
- ],
2088
+ "array/filter",
2089
+ "@config.skateCurve",
1859
2090
  [
1860
- "object/get",
1861
- "@leftSamp",
1862
- "x"
2091
+ "fn",
2092
+ "s",
2093
+ [
2094
+ ">",
2095
+ [
2096
+ "object/get",
2097
+ "@s",
2098
+ "x"
2099
+ ],
2100
+ "@cx"
2101
+ ]
1863
2102
  ]
1864
2103
  ]
1865
2104
  ],
1866
- 0.0
2105
+ {
2106
+ "x": 1.0,
2107
+ "y": 0.0
2108
+ }
1867
2109
  ]
1868
2110
  ]
1869
2111
  ],
@@ -1871,28 +2113,36 @@
1871
2113
  "let",
1872
2114
  [
1873
2115
  [
1874
- "curveY",
2116
+ "slope",
1875
2117
  [
1876
2118
  "if",
1877
2119
  "@inRange",
1878
2120
  [
1879
- "+",
2121
+ "/",
1880
2122
  [
1881
- "object/get",
1882
- "@leftSamp",
1883
- "y"
2123
+ "-",
2124
+ [
2125
+ "object/get",
2126
+ "@rightSamp",
2127
+ "y"
2128
+ ],
2129
+ [
2130
+ "object/get",
2131
+ "@leftSamp",
2132
+ "y"
2133
+ ]
1884
2134
  ],
1885
2135
  [
1886
- "*",
1887
- "@slope",
2136
+ "-",
1888
2137
  [
1889
- "-",
1890
- "@cx",
1891
- [
1892
- "object/get",
1893
- "@leftSamp",
1894
- "x"
1895
- ]
2138
+ "object/get",
2139
+ "@rightSamp",
2140
+ "x"
2141
+ ],
2142
+ [
2143
+ "object/get",
2144
+ "@leftSamp",
2145
+ "x"
1896
2146
  ]
1897
2147
  ]
1898
2148
  ],
@@ -1904,31 +2154,32 @@
1904
2154
  "let",
1905
2155
  [
1906
2156
  [
1907
- "gapBreak",
2157
+ "curveY",
1908
2158
  [
1909
- "and",
1910
- [
1911
- ">",
1912
- "@config.skateMaxGap",
1913
- 0.0
1914
- ],
2159
+ "if",
2160
+ "@inRange",
1915
2161
  [
1916
- ">",
2162
+ "+",
1917
2163
  [
1918
- "-",
1919
- [
1920
- "object/get",
1921
- "@rightSamp",
1922
- "x"
1923
- ],
2164
+ "object/get",
2165
+ "@leftSamp",
2166
+ "y"
2167
+ ],
2168
+ [
2169
+ "*",
2170
+ "@slope",
1924
2171
  [
1925
- "object/get",
1926
- "@leftSamp",
1927
- "x"
2172
+ "-",
2173
+ "@cx",
2174
+ [
2175
+ "object/get",
2176
+ "@leftSamp",
2177
+ "x"
2178
+ ]
1928
2179
  ]
1929
- ],
1930
- "@config.skateMaxGap"
1931
- ]
2180
+ ]
2181
+ ],
2182
+ 0.0
1932
2183
  ]
1933
2184
  ]
1934
2185
  ],
@@ -1936,44 +2187,31 @@
1936
2187
  "let",
1937
2188
  [
1938
2189
  [
1939
- "curveMod",
2190
+ "gapBreak",
1940
2191
  [
1941
- "if",
2192
+ "and",
1942
2193
  [
1943
- "and",
1944
- "@config.curveModsEnabled",
1945
- "@inRange"
2194
+ ">",
2195
+ "@config.skateMaxGap",
2196
+ 0.0
1946
2197
  ],
1947
2198
  [
1948
- "array/find",
1949
- "@entity.curveMods",
2199
+ ">",
1950
2200
  [
1951
- "fn",
1952
- "m",
2201
+ "-",
1953
2202
  [
1954
- "and",
1955
- [
1956
- ">=",
1957
- "@cx",
1958
- [
1959
- "object/get",
1960
- "@m",
1961
- "x0"
1962
- ]
1963
- ],
1964
- [
1965
- "<=",
1966
- "@cx",
1967
- [
1968
- "object/get",
1969
- "@m",
1970
- "x1"
1971
- ]
1972
- ]
2203
+ "object/get",
2204
+ "@rightSamp",
2205
+ "x"
2206
+ ],
2207
+ [
2208
+ "object/get",
2209
+ "@leftSamp",
2210
+ "x"
1973
2211
  ]
1974
- ]
1975
- ],
1976
- null
2212
+ ],
2213
+ "@config.skateMaxGap"
2214
+ ]
1977
2215
  ]
1978
2216
  ]
1979
2217
  ],
@@ -1981,260 +2219,118 @@
1981
2219
  "let",
1982
2220
  [
1983
2221
  [
1984
- "modX",
2222
+ "mods",
1985
2223
  [
1986
2224
  "if",
1987
2225
  [
1988
- "==",
1989
- "@curveMod",
1990
- null
2226
+ "and",
2227
+ "@config.curveModsEnabled",
2228
+ "@inRange"
1991
2229
  ],
1992
- "@cx",
1993
- [
1994
- "-",
1995
- "@cx",
1996
- [
1997
- "object/get",
1998
- "@curveMod",
1999
- "h"
2000
- ]
2001
- ]
2002
- ]
2003
- ]
2004
- ],
2005
- [
2006
- "let",
2007
- [
2008
- [
2009
- "modInRange",
2010
2230
  [
2011
- "and",
2012
- [
2013
- "!=",
2014
- "@curveMod",
2015
- null
2016
- ],
2231
+ "array/filter",
2232
+ "@entity.curveMods",
2017
2233
  [
2018
- "and",
2234
+ "fn",
2235
+ "m",
2019
2236
  [
2020
- ">=",
2021
- "@modX",
2237
+ "and",
2022
2238
  [
2023
- "object/get",
2239
+ ">=",
2240
+ "@cx",
2024
2241
  [
2025
- "array/first",
2026
- "@config.skateCurve"
2027
- ],
2028
- "x"
2029
- ]
2030
- ],
2031
- [
2032
- "<",
2033
- "@modX",
2242
+ "object/get",
2243
+ "@m",
2244
+ "x0"
2245
+ ]
2246
+ ],
2034
2247
  [
2035
- "object/get",
2248
+ "<=",
2249
+ "@cx",
2036
2250
  [
2037
- "array/last",
2038
- "@config.skateCurve"
2039
- ],
2040
- "x"
2251
+ "object/get",
2252
+ "@m",
2253
+ "x1"
2254
+ ]
2041
2255
  ]
2042
2256
  ]
2043
2257
  ]
2044
- ]
2258
+ ],
2259
+ []
2045
2260
  ]
2046
- ],
2261
+ ]
2262
+ ],
2263
+ [
2264
+ "let",
2047
2265
  [
2048
- "let",
2049
2266
  [
2267
+ "modded",
2050
2268
  [
2051
- "modLeft",
2269
+ "array/reduce",
2270
+ "@mods",
2271
+ {
2272
+ "s": "@slope",
2273
+ "y": "@curveY"
2274
+ },
2052
2275
  [
2053
- "if",
2054
- "@modInRange",
2276
+ "fn",
2277
+ [
2278
+ "acc",
2279
+ "m"
2280
+ ],
2055
2281
  [
2056
- "array/last",
2282
+ "let",
2057
2283
  [
2058
- "array/filter",
2059
- "@config.skateCurve",
2060
2284
  [
2061
- "fn",
2062
- "s",
2285
+ "modX",
2063
2286
  [
2064
- "<=",
2287
+ "*",
2065
2288
  [
2066
2289
  "object/get",
2067
- "@s",
2068
- "x"
2290
+ "@m",
2291
+ "b"
2069
2292
  ],
2070
- "@modX"
2071
- ]
2072
- ]
2073
- ]
2074
- ],
2075
- "@leftSamp"
2076
- ]
2077
- ]
2078
- ],
2079
- [
2080
- "let",
2081
- [
2082
- [
2083
- "modRight",
2084
- [
2085
- "if",
2086
- "@modInRange",
2087
- [
2088
- "array/first",
2089
- [
2090
- "array/filter",
2091
- "@config.skateCurve",
2092
- [
2093
- "fn",
2094
- "s",
2095
2293
  [
2096
- ">",
2294
+ "-",
2295
+ "@cx",
2097
2296
  [
2098
2297
  "object/get",
2099
- "@s",
2100
- "x"
2101
- ],
2102
- "@modX"
2298
+ "@m",
2299
+ "h"
2300
+ ]
2103
2301
  ]
2104
2302
  ]
2105
2303
  ]
2106
2304
  ],
2107
- "@rightSamp"
2108
- ]
2109
- ]
2110
- ],
2111
- [
2112
- "let",
2113
- [
2114
- [
2115
- "modSlope",
2116
- [
2117
- "if",
2118
- "@modInRange",
2119
- [
2120
- "/",
2121
- [
2122
- "-",
2123
- [
2124
- "object/get",
2125
- "@modRight",
2126
- "y"
2127
- ],
2128
- [
2129
- "object/get",
2130
- "@modLeft",
2131
- "y"
2132
- ]
2133
- ],
2134
- [
2135
- "-",
2136
- [
2137
- "object/get",
2138
- "@modRight",
2139
- "x"
2140
- ],
2141
- [
2142
- "object/get",
2143
- "@modLeft",
2144
- "x"
2145
- ]
2146
- ]
2147
- ],
2148
- "@slope"
2149
- ]
2150
- ]
2151
- ],
2152
- [
2153
- "let",
2154
- [
2155
2305
  [
2156
- "modCurveY",
2306
+ "let",
2157
2307
  [
2158
- "if",
2159
- "@modInRange",
2160
2308
  [
2161
- "+",
2309
+ "modInRange",
2162
2310
  [
2163
- "object/get",
2164
- "@modLeft",
2165
- "y"
2166
- ],
2167
- [
2168
- "*",
2169
- "@modSlope",
2311
+ "and",
2170
2312
  [
2171
- "-",
2313
+ ">=",
2172
2314
  "@modX",
2173
2315
  [
2174
2316
  "object/get",
2175
- "@modLeft",
2317
+ [
2318
+ "array/first",
2319
+ "@config.skateCurve"
2320
+ ],
2176
2321
  "x"
2177
2322
  ]
2178
- ]
2179
- ]
2180
- ],
2181
- "@curveY"
2182
- ]
2183
- ]
2184
- ],
2185
- [
2186
- "let",
2187
- [
2188
- [
2189
- "slope",
2190
- [
2191
- "if",
2192
- [
2193
- "==",
2194
- "@curveMod",
2195
- null
2196
- ],
2197
- "@slope",
2198
- [
2199
- "*",
2200
- [
2201
- "object/get",
2202
- "@curveMod",
2203
- "a"
2204
- ],
2205
- "@modSlope"
2206
- ]
2207
- ]
2208
- ]
2209
- ],
2210
- [
2211
- "let",
2212
- [
2213
- [
2214
- "curveY",
2215
- [
2216
- "if",
2217
- [
2218
- "==",
2219
- "@curveMod",
2220
- null
2221
2323
  ],
2222
- "@curveY",
2223
2324
  [
2224
- "+",
2325
+ "<",
2326
+ "@modX",
2225
2327
  [
2226
- "*",
2328
+ "object/get",
2227
2329
  [
2228
- "object/get",
2229
- "@curveMod",
2230
- "a"
2330
+ "array/last",
2331
+ "@config.skateCurve"
2231
2332
  ],
2232
- "@modCurveY"
2233
- ],
2234
- [
2235
- "object/get",
2236
- "@curveMod",
2237
- "k"
2333
+ "x"
2238
2334
  ]
2239
2335
  ]
2240
2336
  ]
@@ -2244,15 +2340,31 @@
2244
2340
  "let",
2245
2341
  [
2246
2342
  [
2247
- "movingUp",
2343
+ "modLeft",
2248
2344
  [
2249
- "<",
2345
+ "if",
2346
+ "@modInRange",
2250
2347
  [
2251
- "*",
2252
- "@vy1",
2253
- "@gdir"
2348
+ "array/last",
2349
+ [
2350
+ "array/filter",
2351
+ "@config.skateCurve",
2352
+ [
2353
+ "fn",
2354
+ "s",
2355
+ [
2356
+ "<=",
2357
+ [
2358
+ "object/get",
2359
+ "@s",
2360
+ "x"
2361
+ ],
2362
+ "@modX"
2363
+ ]
2364
+ ]
2365
+ ]
2254
2366
  ],
2255
- -0.01
2367
+ null
2256
2368
  ]
2257
2369
  ]
2258
2370
  ],
@@ -2260,48 +2372,31 @@
2260
2372
  "let",
2261
2373
  [
2262
2374
  [
2263
- "skateNow",
2375
+ "modRight",
2264
2376
  [
2265
- "and",
2266
- "@inRange",
2377
+ "if",
2378
+ "@modInRange",
2267
2379
  [
2268
- "and",
2269
- [
2270
- "not",
2271
- "@gapBreak"
2272
- ],
2380
+ "array/first",
2273
2381
  [
2274
- "and",
2275
- [
2276
- "<=",
2277
- [
2278
- "math/abs",
2279
- [
2280
- "-",
2281
- "@ny2",
2282
- "@curveY"
2283
- ]
2284
- ],
2285
- "@config.skateSnap"
2286
- ],
2382
+ "array/filter",
2383
+ "@config.skateCurve",
2287
2384
  [
2288
- "and",
2289
- [
2290
- "or",
2291
- "@landed",
2292
- "@entity.skating"
2293
- ],
2385
+ "fn",
2386
+ "s",
2294
2387
  [
2295
- "or",
2296
- "@entity.body.grounded",
2388
+ ">",
2297
2389
  [
2298
- "not",
2299
- "@movingUp"
2300
- ]
2390
+ "object/get",
2391
+ "@s",
2392
+ "x"
2393
+ ],
2394
+ "@modX"
2301
2395
  ]
2302
2396
  ]
2303
2397
  ]
2304
- ]
2398
+ ],
2399
+ null
2305
2400
  ]
2306
2401
  ]
2307
2402
  ],
@@ -2309,45 +2404,23 @@
2309
2404
  "let",
2310
2405
  [
2311
2406
  [
2312
- "vx2",
2407
+ "modOK",
2313
2408
  [
2314
- "if",
2315
- "@skateNow",
2409
+ "and",
2410
+ "@modInRange",
2316
2411
  [
2317
- "math/clamp",
2412
+ "and",
2318
2413
  [
2319
- "+",
2320
- "@entity.body.vx",
2321
- [
2322
- "*",
2323
- [
2324
- "/",
2325
- [
2326
- "*",
2327
- "@config.gravity",
2328
- "@slope"
2329
- ],
2330
- [
2331
- "+",
2332
- 1.0,
2333
- [
2334
- "*",
2335
- "@slope",
2336
- "@slope"
2337
- ]
2338
- ]
2339
- ],
2340
- 0.033
2341
- ]
2414
+ "!=",
2415
+ "@modLeft",
2416
+ null
2342
2417
  ],
2343
2418
  [
2344
- "-",
2345
- 0.0,
2346
- "@config.maxFallSpeed"
2347
- ],
2348
- "@config.maxFallSpeed"
2349
- ],
2350
- "@entity.body.vx"
2419
+ "!=",
2420
+ "@modRight",
2421
+ null
2422
+ ]
2423
+ ]
2351
2424
  ]
2352
2425
  ]
2353
2426
  ],
@@ -2355,33 +2428,40 @@
2355
2428
  "let",
2356
2429
  [
2357
2430
  [
2358
- "vx3",
2431
+ "modSlope",
2359
2432
  [
2360
2433
  "if",
2434
+ "@modOK",
2361
2435
  [
2362
- "==",
2363
- "@drift",
2364
- null
2365
- ],
2366
- "@vx2",
2367
- [
2368
- "math/clamp",
2436
+ "/",
2369
2437
  [
2370
- "+",
2371
- "@vx2",
2438
+ "-",
2372
2439
  [
2373
- "*",
2374
- "@dax",
2375
- 0.033
2440
+ "object/get",
2441
+ "@modRight",
2442
+ "y"
2443
+ ],
2444
+ [
2445
+ "object/get",
2446
+ "@modLeft",
2447
+ "y"
2376
2448
  ]
2377
2449
  ],
2378
2450
  [
2379
2451
  "-",
2380
- 0.0,
2381
- "@config.maxFallSpeed"
2382
- ],
2383
- "@config.maxFallSpeed"
2384
- ]
2452
+ [
2453
+ "object/get",
2454
+ "@modRight",
2455
+ "x"
2456
+ ],
2457
+ [
2458
+ "object/get",
2459
+ "@modLeft",
2460
+ "x"
2461
+ ]
2462
+ ]
2463
+ ],
2464
+ 0.0
2385
2465
  ]
2386
2466
  ]
2387
2467
  ],
@@ -2389,419 +2469,725 @@
2389
2469
  "let",
2390
2470
  [
2391
2471
  [
2392
- "fy",
2472
+ "modCurveY",
2393
2473
  [
2394
2474
  "if",
2395
- "@skateNow",
2396
- "@curveY",
2397
- "@ny2"
2398
- ]
2399
- ],
2400
- [
2401
- "fvy",
2402
- [
2403
- "if",
2404
- "@skateNow",
2475
+ "@modOK",
2405
2476
  [
2406
- "*",
2477
+ "+",
2478
+ [
2479
+ "object/get",
2480
+ "@modLeft",
2481
+ "y"
2482
+ ],
2407
2483
  [
2408
2484
  "*",
2409
- "@vx2",
2485
+ "@modSlope",
2410
2486
  [
2411
- "math/cos",
2487
+ "-",
2488
+ "@modX",
2412
2489
  [
2413
- "math/atan",
2414
- "@slope"
2490
+ "object/get",
2491
+ "@modLeft",
2492
+ "x"
2415
2493
  ]
2416
2494
  ]
2417
- ],
2418
- [
2419
- "math/sin",
2420
- [
2421
- "math/atan",
2422
- "@slope"
2423
- ]
2424
2495
  ]
2425
2496
  ],
2426
- "@vy2"
2427
- ]
2428
- ],
2429
- [
2430
- "fgrounded",
2431
- [
2432
- "or",
2433
- "@landed",
2434
- "@skateNow"
2497
+ 0.0
2435
2498
  ]
2436
2499
  ]
2437
2500
  ],
2438
2501
  [
2439
- "let",
2440
- [
2441
- [
2442
- "hazardHit",
2502
+ "if",
2503
+ "@modOK",
2504
+ {
2505
+ "s": [
2506
+ "+",
2443
2507
  [
2444
- "array/find",
2445
- "@config.platforms",
2508
+ "object/get",
2509
+ "@acc",
2510
+ "s"
2511
+ ],
2512
+ [
2513
+ "-",
2446
2514
  [
2447
- "fn",
2448
- "p",
2515
+ "*",
2449
2516
  [
2450
- "and",
2517
+ "*",
2451
2518
  [
2452
- "==",
2453
- [
2454
- "object/get",
2455
- "@p",
2456
- "type"
2457
- ],
2458
- "hazard"
2519
+ "object/get",
2520
+ "@m",
2521
+ "a"
2459
2522
  ],
2460
2523
  [
2461
- "geo/aabb-overlap",
2462
- "@rect",
2463
- {
2464
- "h": "@p.height",
2465
- "w": "@p.width",
2466
- "x": "@p.x",
2467
- "y": "@p.y"
2468
- }
2469
- ]
2470
- ]
2471
- ]
2472
- ]
2473
- ]
2474
- ],
2475
- [
2476
- "let",
2477
- [
2478
- [
2479
- "goalHit",
2480
- [
2481
- "array/find",
2482
- "@config.platforms",
2483
- [
2484
- "fn",
2485
- "p",
2486
- [
2487
- "and",
2488
- [
2489
- "==",
2490
- [
2491
- "object/get",
2492
- "@p",
2493
- "type"
2494
- ],
2495
- "goal"
2496
- ],
2497
- [
2498
- "geo/aabb-overlap",
2499
- "@rect",
2500
- {
2501
- "h": "@p.height",
2502
- "w": "@p.width",
2503
- "x": "@p.x",
2504
- "y": "@p.y"
2505
- }
2506
- ]
2524
+ "object/get",
2525
+ "@m",
2526
+ "b"
2507
2527
  ]
2508
- ]
2509
- ]
2528
+ ],
2529
+ "@modSlope"
2530
+ ],
2531
+ "@slope"
2510
2532
  ]
2511
2533
  ],
2512
- [
2513
- "let",
2534
+ "y": [
2535
+ "+",
2514
2536
  [
2515
- [
2516
- "fellNow",
2517
- [
2518
- "if",
2519
- [
2520
- ">",
2521
- "@gdir",
2522
- 0.0
2523
- ],
2524
- [
2525
- ">",
2526
- "@fy",
2527
- "@config.killY"
2528
- ],
2529
- [
2530
- "<",
2531
- "@fy",
2532
- "@config.killY"
2533
- ]
2534
- ]
2535
- ]
2537
+ "object/get",
2538
+ "@acc",
2539
+ "y"
2536
2540
  ],
2537
2541
  [
2538
- "do",
2539
- [
2540
- "set",
2541
- "@entity.body",
2542
- [
2543
- "object/merge",
2544
- "@entity.body",
2545
- {
2546
- "grounded": "@fgrounded",
2547
- "vx": [
2548
- "if",
2549
- [
2550
- "or",
2551
- [
2552
- "==",
2553
- "@nx",
2554
- "@config.xMin"
2555
- ],
2556
- [
2557
- "==",
2558
- "@nx",
2559
- "@config.xMax"
2560
- ]
2561
- ],
2562
- 0.0,
2563
- "@vx3"
2564
- ],
2565
- "vy": "@fvy",
2566
- "x": "@nx",
2567
- "y": "@fy"
2568
- }
2569
- ]
2570
- ],
2571
- [
2572
- "set",
2573
- "@entity.skating",
2574
- "@skateNow"
2575
- ],
2576
- [
2577
- "if",
2578
- [
2579
- "and",
2580
- "@skateNow",
2581
- [
2582
- "==",
2583
- "@entity.skating",
2584
- false
2585
- ]
2586
- ],
2587
- [
2588
- "emit",
2589
- "BODY_SKATE_START",
2590
- {
2591
- "slope": "@slope",
2592
- "x": "@nx",
2593
- "y": "@fy"
2594
- }
2595
- ],
2596
- null
2597
- ],
2598
- [
2599
- "if",
2600
- [
2601
- "and",
2602
- [
2603
- "==",
2604
- "@skateNow",
2605
- false
2606
- ],
2607
- [
2608
- "==",
2609
- "@entity.skating",
2610
- true
2611
- ]
2612
- ],
2613
- [
2614
- "emit",
2615
- "BODY_SKATE_END",
2616
- {
2617
- "x": "@nx",
2618
- "y": "@fy"
2619
- }
2620
- ],
2621
- null
2622
- ],
2623
- [
2624
- "if",
2625
- [
2626
- "and",
2627
- "@landed",
2628
- [
2629
- "==",
2630
- "@entity.body.grounded",
2631
- false
2632
- ]
2633
- ],
2634
- [
2635
- "emit",
2636
- "BODY_LANDED",
2637
- {
2638
- "impact": [
2639
- "*",
2640
- "@vy1",
2641
- "@gdir"
2642
- ],
2643
- "x": "@nx",
2644
- "y": "@fy"
2645
- }
2646
- ],
2647
- null
2648
- ],
2542
+ "-",
2649
2543
  [
2650
- "if",
2651
- [
2652
- "!=",
2653
- "@hazardHit",
2654
- null
2655
- ],
2544
+ "+",
2656
2545
  [
2657
- "if",
2658
- [
2659
- "!=",
2660
- "@entity.hazardId",
2661
- [
2662
- "object/get",
2663
- "@hazardHit",
2664
- "id",
2665
- ""
2666
- ]
2667
- ],
2546
+ "*",
2668
2547
  [
2669
- "do",
2670
- [
2671
- "set",
2672
- "@entity.hazardId",
2673
- [
2674
- "object/get",
2675
- "@hazardHit",
2676
- "id",
2677
- ""
2678
- ]
2679
- ],
2680
- [
2681
- "emit",
2682
- "BODY_HAZARD",
2683
- {
2684
- "id": [
2685
- "object/get",
2686
- "@hazardHit",
2687
- "id",
2688
- ""
2689
- ],
2690
- "x": "@nx",
2691
- "y": "@fy"
2692
- }
2693
- ]
2548
+ "object/get",
2549
+ "@m",
2550
+ "a"
2694
2551
  ],
2695
- null
2552
+ "@modCurveY"
2696
2553
  ],
2697
2554
  [
2698
- "set",
2699
- "@entity.hazardId",
2700
- ""
2555
+ "object/get",
2556
+ "@m",
2557
+ "k"
2701
2558
  ]
2702
2559
  ],
2703
- [
2704
- "if",
2705
- [
2706
- "!=",
2707
- "@goalHit",
2708
- null
2709
- ],
2560
+ "@curveY"
2561
+ ]
2562
+ ]
2563
+ },
2564
+ "@acc"
2565
+ ]
2566
+ ]
2567
+ ]
2568
+ ]
2569
+ ]
2570
+ ]
2571
+ ]
2572
+ ]
2573
+ ]
2574
+ ]
2575
+ ]
2576
+ ],
2577
+ [
2578
+ "let",
2579
+ [
2580
+ [
2581
+ "slope",
2582
+ [
2583
+ "object/get",
2584
+ "@modded",
2585
+ "s"
2586
+ ]
2587
+ ]
2588
+ ],
2589
+ [
2590
+ "let",
2591
+ [
2592
+ [
2593
+ "curveY",
2594
+ [
2595
+ "object/get",
2596
+ "@modded",
2597
+ "y"
2598
+ ]
2599
+ ]
2600
+ ],
2601
+ [
2602
+ "let",
2603
+ [
2604
+ [
2605
+ "aboveCurve",
2606
+ [
2607
+ "<",
2608
+ [
2609
+ "*",
2610
+ [
2611
+ "-",
2612
+ "@ny2",
2613
+ "@curveY"
2614
+ ],
2615
+ "@gdir"
2616
+ ],
2617
+ 0.0
2618
+ ]
2619
+ ]
2620
+ ],
2621
+ [
2622
+ "let",
2623
+ [
2624
+ [
2625
+ "movingUp",
2626
+ [
2627
+ "<",
2628
+ [
2629
+ "*",
2630
+ "@vy1",
2631
+ "@gdir"
2632
+ ],
2633
+ -0.01
2634
+ ]
2635
+ ]
2636
+ ],
2637
+ [
2638
+ "let",
2639
+ [
2640
+ [
2641
+ "skateNow",
2642
+ [
2643
+ "and",
2644
+ "@inRange",
2645
+ [
2646
+ "and",
2647
+ [
2648
+ "not",
2649
+ "@gapBreak"
2650
+ ],
2651
+ [
2652
+ "and",
2653
+ [
2654
+ "<=",
2655
+ [
2656
+ "math/abs",
2657
+ [
2658
+ "-",
2659
+ "@ny2",
2660
+ "@curveY"
2661
+ ]
2662
+ ],
2663
+ "@config.skateSnap"
2664
+ ],
2665
+ [
2666
+ "and",
2667
+ [
2668
+ "or",
2669
+ "@landed",
2670
+ [
2671
+ "or",
2672
+ "@entity.skating",
2673
+ [
2674
+ "and",
2675
+ [
2676
+ "not",
2677
+ "@movingUp"
2678
+ ],
2679
+ "@aboveCurve"
2680
+ ]
2681
+ ]
2682
+ ],
2683
+ [
2684
+ "or",
2685
+ "@entity.body.grounded",
2686
+ [
2687
+ "not",
2688
+ "@movingUp"
2689
+ ]
2690
+ ]
2691
+ ]
2692
+ ]
2693
+ ]
2694
+ ]
2695
+ ]
2696
+ ],
2697
+ [
2698
+ "let",
2699
+ [
2700
+ [
2701
+ "vx2",
2702
+ [
2703
+ "if",
2704
+ "@skateNow",
2705
+ [
2706
+ "math/clamp",
2707
+ [
2708
+ "+",
2709
+ "@entity.body.vx",
2710
+ [
2711
+ "*",
2712
+ [
2713
+ "/",
2714
+ [
2715
+ "*",
2716
+ "@eg",
2717
+ "@slope"
2718
+ ],
2719
+ [
2720
+ "+",
2721
+ 1.0,
2722
+ [
2723
+ "*",
2724
+ "@slope",
2725
+ "@slope"
2726
+ ]
2727
+ ]
2728
+ ],
2729
+ 0.033
2730
+ ]
2731
+ ],
2732
+ [
2733
+ "-",
2734
+ 0.0,
2735
+ "@config.maxFallSpeed"
2736
+ ],
2737
+ "@config.maxFallSpeed"
2738
+ ],
2739
+ "@entity.body.vx"
2740
+ ]
2741
+ ]
2742
+ ],
2743
+ [
2744
+ "let",
2745
+ [
2746
+ [
2747
+ "vx3",
2748
+ [
2749
+ "if",
2750
+ [
2751
+ "==",
2752
+ "@drift",
2753
+ null
2754
+ ],
2755
+ "@vx2",
2756
+ [
2757
+ "math/clamp",
2758
+ [
2759
+ "+",
2760
+ "@vx2",
2761
+ [
2762
+ "*",
2763
+ "@dax",
2764
+ 0.033
2765
+ ]
2766
+ ],
2767
+ [
2768
+ "-",
2769
+ 0.0,
2770
+ "@config.maxFallSpeed"
2771
+ ],
2772
+ "@config.maxFallSpeed"
2773
+ ]
2774
+ ]
2775
+ ]
2776
+ ],
2777
+ [
2778
+ "let",
2779
+ [
2780
+ [
2781
+ "fy",
2782
+ [
2783
+ "if",
2784
+ "@skateNow",
2785
+ "@curveY",
2786
+ "@ny2"
2787
+ ]
2788
+ ],
2789
+ [
2790
+ "fvy",
2791
+ [
2792
+ "if",
2793
+ "@skateNow",
2794
+ [
2795
+ "*",
2796
+ [
2797
+ "*",
2798
+ "@vx2",
2799
+ [
2800
+ "math/cos",
2801
+ [
2802
+ "math/atan",
2803
+ "@slope"
2804
+ ]
2805
+ ]
2806
+ ],
2807
+ [
2808
+ "math/sin",
2809
+ [
2810
+ "math/atan",
2811
+ "@slope"
2812
+ ]
2813
+ ]
2814
+ ],
2815
+ "@vy2"
2816
+ ]
2817
+ ],
2818
+ [
2819
+ "fgrounded",
2820
+ [
2821
+ "or",
2822
+ "@landed",
2823
+ "@skateNow"
2824
+ ]
2825
+ ]
2826
+ ],
2827
+ [
2828
+ "let",
2829
+ [
2830
+ [
2831
+ "hazardHit",
2832
+ [
2833
+ "array/find",
2834
+ "@config.platforms",
2835
+ [
2836
+ "fn",
2837
+ "p",
2838
+ [
2839
+ "and",
2840
+ [
2841
+ "==",
2842
+ [
2843
+ "object/get",
2844
+ "@p",
2845
+ "type"
2846
+ ],
2847
+ "hazard"
2848
+ ],
2849
+ [
2850
+ "geo/aabb-overlap",
2851
+ "@rect",
2852
+ {
2853
+ "h": "@p.height",
2854
+ "w": "@p.width",
2855
+ "x": "@p.x",
2856
+ "y": "@p.y"
2857
+ }
2858
+ ]
2859
+ ]
2860
+ ]
2861
+ ]
2862
+ ]
2863
+ ],
2864
+ [
2865
+ "let",
2866
+ [
2867
+ [
2868
+ "goalHit",
2869
+ [
2870
+ "array/find",
2871
+ "@config.platforms",
2872
+ [
2873
+ "fn",
2874
+ "p",
2875
+ [
2876
+ "and",
2877
+ [
2878
+ "==",
2710
2879
  [
2711
- "if",
2712
- [
2713
- "!=",
2714
- "@entity.goalId",
2715
- [
2716
- "object/get",
2717
- "@goalHit",
2718
- "id",
2719
- ""
2720
- ]
2721
- ],
2722
- [
2723
- "do",
2724
- [
2725
- "set",
2726
- "@entity.goalId",
2727
- [
2728
- "object/get",
2729
- "@goalHit",
2730
- "id",
2731
- ""
2732
- ]
2733
- ],
2734
- [
2735
- "emit",
2736
- "BODY_GOAL",
2737
- {
2738
- "id": [
2739
- "object/get",
2740
- "@goalHit",
2741
- "id",
2742
- ""
2743
- ],
2744
- "x": "@nx",
2745
- "y": "@fy"
2746
- }
2747
- ]
2748
- ],
2749
- null
2880
+ "object/get",
2881
+ "@p",
2882
+ "type"
2750
2883
  ],
2751
- [
2752
- "set",
2753
- "@entity.goalId",
2754
- ""
2755
- ]
2884
+ "goal"
2756
2885
  ],
2757
2886
  [
2887
+ "geo/aabb-overlap",
2888
+ "@rect",
2889
+ {
2890
+ "h": "@p.height",
2891
+ "w": "@p.width",
2892
+ "x": "@p.x",
2893
+ "y": "@p.y"
2894
+ }
2895
+ ]
2896
+ ]
2897
+ ]
2898
+ ]
2899
+ ]
2900
+ ],
2901
+ [
2902
+ "let",
2903
+ [
2904
+ [
2905
+ "fellNow",
2906
+ [
2907
+ "if",
2908
+ [
2909
+ ">",
2910
+ "@gdir",
2911
+ 0.0
2912
+ ],
2913
+ [
2914
+ ">",
2915
+ "@fy",
2916
+ "@config.killY"
2917
+ ],
2918
+ [
2919
+ "<",
2920
+ "@fy",
2921
+ "@config.killY"
2922
+ ]
2923
+ ]
2924
+ ]
2925
+ ],
2926
+ [
2927
+ "do",
2928
+ [
2929
+ "set",
2930
+ "@entity.body",
2931
+ [
2932
+ "object/merge",
2933
+ "@entity.body",
2934
+ {
2935
+ "grounded": "@fgrounded",
2936
+ "vx": [
2758
2937
  "if",
2759
2938
  [
2760
- "and",
2761
- "@fellNow",
2939
+ "or",
2762
2940
  [
2763
2941
  "==",
2764
- "@entity.fell",
2765
- false
2766
- ]
2767
- ],
2768
- [
2769
- "do",
2770
- [
2771
- "set",
2772
- "@entity.fell",
2773
- true
2942
+ "@nx",
2943
+ "@config.xMin"
2774
2944
  ],
2775
2945
  [
2776
- "emit",
2777
- "BODY_FELL",
2778
- {
2779
- "x": "@nx",
2780
- "y": "@fy"
2781
- }
2946
+ "==",
2947
+ "@nx",
2948
+ "@config.xMax"
2782
2949
  ]
2783
2950
  ],
2784
- null
2951
+ 0.0,
2952
+ "@vx3"
2953
+ ],
2954
+ "vy": "@fvy",
2955
+ "x": "@nx",
2956
+ "y": "@fy"
2957
+ }
2958
+ ]
2959
+ ],
2960
+ [
2961
+ "set",
2962
+ "@entity.skating",
2963
+ "@skateNow"
2964
+ ],
2965
+ [
2966
+ "if",
2967
+ [
2968
+ "and",
2969
+ "@skateNow",
2970
+ [
2971
+ "==",
2972
+ "@entity.skating",
2973
+ false
2974
+ ]
2975
+ ],
2976
+ [
2977
+ "emit",
2978
+ "BODY_SKATE_START",
2979
+ {
2980
+ "slope": "@slope",
2981
+ "x": "@nx",
2982
+ "y": "@fy"
2983
+ }
2984
+ ],
2985
+ null
2986
+ ],
2987
+ [
2988
+ "if",
2989
+ [
2990
+ "and",
2991
+ [
2992
+ "==",
2993
+ "@skateNow",
2994
+ false
2995
+ ],
2996
+ [
2997
+ "==",
2998
+ "@entity.skating",
2999
+ true
3000
+ ]
3001
+ ],
3002
+ [
3003
+ "emit",
3004
+ "BODY_SKATE_END",
3005
+ {
3006
+ "x": "@nx",
3007
+ "y": "@fy"
3008
+ }
3009
+ ],
3010
+ null
3011
+ ],
3012
+ [
3013
+ "if",
3014
+ [
3015
+ "and",
3016
+ "@landed",
3017
+ [
3018
+ "==",
3019
+ "@entity.body.grounded",
3020
+ false
3021
+ ]
3022
+ ],
3023
+ [
3024
+ "emit",
3025
+ "BODY_LANDED",
3026
+ {
3027
+ "impact": [
3028
+ "*",
3029
+ "@vy1",
3030
+ "@gdir"
3031
+ ],
3032
+ "x": "@nx",
3033
+ "y": "@fy"
3034
+ }
3035
+ ],
3036
+ null
3037
+ ],
3038
+ [
3039
+ "if",
3040
+ [
3041
+ "!=",
3042
+ "@hazardHit",
3043
+ null
3044
+ ],
3045
+ [
3046
+ "if",
3047
+ [
3048
+ "!=",
3049
+ "@entity.hazardId",
3050
+ [
3051
+ "object/get",
3052
+ "@hazardHit",
3053
+ "id",
3054
+ ""
3055
+ ]
3056
+ ],
3057
+ [
3058
+ "do",
3059
+ [
3060
+ "set",
3061
+ "@entity.hazardId",
3062
+ [
3063
+ "object/get",
3064
+ "@hazardHit",
3065
+ "id",
3066
+ ""
3067
+ ]
2785
3068
  ],
2786
3069
  [
2787
3070
  "emit",
2788
- "BODY_MOVED",
3071
+ "BODY_HAZARD",
2789
3072
  {
2790
- "grounded": "@fgrounded",
2791
- "skating": "@skateNow",
2792
- "speed": [
2793
- "math/hypot",
2794
- "@entity.body.vx",
2795
- "@fvy"
3073
+ "id": [
3074
+ "object/get",
3075
+ "@hazardHit",
3076
+ "id",
3077
+ ""
2796
3078
  ],
2797
- "vx": "@entity.body.vx",
2798
- "vy": "@fvy",
2799
3079
  "x": "@nx",
2800
3080
  "y": "@fy"
2801
3081
  }
2802
3082
  ]
2803
- ]
3083
+ ],
3084
+ null
3085
+ ],
3086
+ [
3087
+ "set",
3088
+ "@entity.hazardId",
3089
+ ""
3090
+ ]
3091
+ ],
3092
+ [
3093
+ "if",
3094
+ [
3095
+ "!=",
3096
+ "@goalHit",
3097
+ null
3098
+ ],
3099
+ [
3100
+ "if",
3101
+ [
3102
+ "!=",
3103
+ "@entity.goalId",
3104
+ [
3105
+ "object/get",
3106
+ "@goalHit",
3107
+ "id",
3108
+ ""
3109
+ ]
3110
+ ],
3111
+ [
3112
+ "do",
3113
+ [
3114
+ "set",
3115
+ "@entity.goalId",
3116
+ [
3117
+ "object/get",
3118
+ "@goalHit",
3119
+ "id",
3120
+ ""
3121
+ ]
3122
+ ],
3123
+ [
3124
+ "emit",
3125
+ "BODY_GOAL",
3126
+ {
3127
+ "id": [
3128
+ "object/get",
3129
+ "@goalHit",
3130
+ "id",
3131
+ ""
3132
+ ],
3133
+ "x": "@nx",
3134
+ "y": "@fy"
3135
+ }
3136
+ ]
3137
+ ],
3138
+ null
3139
+ ],
3140
+ [
3141
+ "set",
3142
+ "@entity.goalId",
3143
+ ""
2804
3144
  ]
3145
+ ],
3146
+ [
3147
+ "if",
3148
+ [
3149
+ "and",
3150
+ "@fellNow",
3151
+ [
3152
+ "==",
3153
+ "@entity.fell",
3154
+ false
3155
+ ]
3156
+ ],
3157
+ [
3158
+ "do",
3159
+ [
3160
+ "set",
3161
+ "@entity.fell",
3162
+ true
3163
+ ],
3164
+ [
3165
+ "emit",
3166
+ "BODY_FELL",
3167
+ {
3168
+ "x": "@nx",
3169
+ "y": "@fy"
3170
+ }
3171
+ ]
3172
+ ],
3173
+ null
3174
+ ],
3175
+ [
3176
+ "emit",
3177
+ "BODY_MOVED",
3178
+ {
3179
+ "grounded": "@fgrounded",
3180
+ "skating": "@skateNow",
3181
+ "speed": [
3182
+ "math/hypot",
3183
+ "@entity.body.vx",
3184
+ "@fvy"
3185
+ ],
3186
+ "vx": "@entity.body.vx",
3187
+ "vy": "@fvy",
3188
+ "x": "@nx",
3189
+ "y": "@fy"
3190
+ }
2805
3191
  ]
2806
3192
  ]
2807
3193
  ]
@@ -2852,7 +3238,172 @@
2852
3238
  }
2853
3239
  ]
2854
3240
  }
2855
- ]
3241
+ ],
3242
+ "types": {
3243
+ "BodyDriftRegion": [
3244
+ {
3245
+ "name": "id",
3246
+ "required": true,
3247
+ "type": "string"
3248
+ },
3249
+ {
3250
+ "name": "x0",
3251
+ "required": true,
3252
+ "type": "number"
3253
+ },
3254
+ {
3255
+ "name": "x1",
3256
+ "required": true,
3257
+ "type": "number"
3258
+ },
3259
+ {
3260
+ "name": "y0",
3261
+ "required": true,
3262
+ "type": "number"
3263
+ },
3264
+ {
3265
+ "name": "y1",
3266
+ "required": true,
3267
+ "type": "number"
3268
+ },
3269
+ {
3270
+ "name": "ax",
3271
+ "required": true,
3272
+ "type": "number"
3273
+ },
3274
+ {
3275
+ "name": "ay",
3276
+ "required": true,
3277
+ "type": "number"
3278
+ }
3279
+ ],
3280
+ "CurveMod": [
3281
+ {
3282
+ "name": "x0",
3283
+ "required": true,
3284
+ "type": "number"
3285
+ },
3286
+ {
3287
+ "name": "x1",
3288
+ "required": true,
3289
+ "type": "number"
3290
+ },
3291
+ {
3292
+ "name": "a",
3293
+ "required": true,
3294
+ "type": "number"
3295
+ },
3296
+ {
3297
+ "name": "b",
3298
+ "required": true,
3299
+ "type": "number"
3300
+ },
3301
+ {
3302
+ "name": "h",
3303
+ "required": true,
3304
+ "type": "number"
3305
+ },
3306
+ {
3307
+ "name": "k",
3308
+ "required": true,
3309
+ "type": "number"
3310
+ }
3311
+ ],
3312
+ "PlatformerBody": [
3313
+ {
3314
+ "name": "x",
3315
+ "required": true,
3316
+ "type": "number"
3317
+ },
3318
+ {
3319
+ "name": "y",
3320
+ "required": true,
3321
+ "type": "number"
3322
+ },
3323
+ {
3324
+ "name": "width",
3325
+ "required": true,
3326
+ "type": "number"
3327
+ },
3328
+ {
3329
+ "name": "height",
3330
+ "required": true,
3331
+ "type": "number"
3332
+ },
3333
+ {
3334
+ "name": "vx",
3335
+ "type": "number"
3336
+ },
3337
+ {
3338
+ "name": "vy",
3339
+ "type": "number"
3340
+ },
3341
+ {
3342
+ "name": "grounded",
3343
+ "type": "boolean"
3344
+ },
3345
+ {
3346
+ "name": "facingRight",
3347
+ "type": "boolean"
3348
+ }
3349
+ ],
3350
+ "PlatformerCurveSample": [
3351
+ {
3352
+ "name": "x",
3353
+ "required": true,
3354
+ "type": "number"
3355
+ },
3356
+ {
3357
+ "name": "y",
3358
+ "required": true,
3359
+ "type": "number"
3360
+ }
3361
+ ],
3362
+ "PlatformerPlatform": [
3363
+ {
3364
+ "name": "id",
3365
+ "type": "string"
3366
+ },
3367
+ {
3368
+ "name": "x",
3369
+ "required": true,
3370
+ "type": "number"
3371
+ },
3372
+ {
3373
+ "name": "y",
3374
+ "required": true,
3375
+ "type": "number"
3376
+ },
3377
+ {
3378
+ "name": "width",
3379
+ "required": true,
3380
+ "type": "number"
3381
+ },
3382
+ {
3383
+ "name": "height",
3384
+ "required": true,
3385
+ "type": "number"
3386
+ },
3387
+ {
3388
+ "name": "type",
3389
+ "type": "string"
3390
+ }
3391
+ ],
3392
+ "PlatformerTuning": [
3393
+ {
3394
+ "name": "jumpStrength",
3395
+ "type": "number"
3396
+ },
3397
+ {
3398
+ "name": "moveSpeed",
3399
+ "type": "number"
3400
+ },
3401
+ {
3402
+ "name": "gravity",
3403
+ "type": "number"
3404
+ }
3405
+ ]
3406
+ }
2856
3407
  }
2857
3408
  ],
2858
3409
  "schemaVersion": 1,