@almadar/std 16.144.0 → 16.146.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.
- package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +121 -0
- package/behaviors/lolo/ml/atoms/std-ml-exact-check.lolo +90 -0
- package/behaviors/lolo/ml/atoms/std-ml-infer.lolo +141 -0
- package/behaviors/lolo/ml/atoms/std-ml-label-capture.lolo +75 -0
- package/behaviors/lolo/ml/atoms/std-ml-lookup.lolo +83 -0
- package/behaviors/lolo/ml/atoms/std-ml-posterior.lolo +104 -0
- package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +166 -0
- package/behaviors/lolo/ml/molecules/std-escalating-decision.lolo +271 -0
- package/behaviors/lolo/ml/molecules/std-knowledge-tracing.lolo +115 -0
- package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +14 -0
- package/behaviors/lolo/ui/core/atoms/std-board.lolo +20 -6
- package/behaviors/lolo/ui/core/atoms/std-browse.lolo +23 -6
- package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +80 -2
- package/behaviors/lolo/ui/core/atoms/std-stats.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +3 -3
- package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +18 -0
- package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +2 -0
- package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +3 -2
- package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +20 -0
- package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +7 -2
- package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +3 -2
- package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +2 -0
- package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +2 -0
- package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +2 -0
- package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +2 -0
- package/behaviors/lolo/ui/game/atoms/std-dungeon-combat.lolo +2 -2
- package/behaviors/lolo/ui/game/molecules/std-worldmap-board-2d.lolo +1 -1
- package/behaviors/lolo/ui/game/organisms/ui-boardgame-board.lolo +2 -2
- package/behaviors/lolo/ui/game/organisms/ui-builder-board.lolo +2 -2
- package/behaviors/lolo/ui/game/organisms/ui-debugger-board.lolo +3 -3
- package/behaviors/lolo/ui/game/organisms/ui-physics-sandbox-board.lolo +3 -3
- package/behaviors/lolo/ui/game/organisms/ui-roguelike-board.lolo +1 -1
- package/behaviors/lolo/ui/game/organisms/ui-sequencer-board.lolo +1 -1
- package/behaviors/lolo/ui/learning/atoms/std-algo-heapsort.lolo +2 -2
- package/behaviors/lolo/ui/learning/atoms/std-algo-mst.lolo +3 -3
- package/behaviors/registry/factory-signatures.json +5018 -824
- package/behaviors/registry/ml/atoms/std-ml-classify.orb +622 -0
- package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +505 -0
- package/behaviors/registry/ml/atoms/std-ml-infer.orb +770 -0
- package/behaviors/registry/ml/atoms/std-ml-label-capture.orb +367 -0
- package/behaviors/registry/ml/atoms/std-ml-lookup.orb +473 -0
- package/behaviors/registry/ml/atoms/std-ml-posterior.orb +669 -0
- package/behaviors/registry/ml/atoms/std-ml-similarity.orb +917 -0
- package/behaviors/registry/ml/molecules/std-escalating-decision.orb +1553 -0
- package/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +577 -0
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +33 -1
- package/behaviors/registry/ui/core/atoms/std-board.orb +64 -20
- package/behaviors/registry/ui/core/atoms/std-browse.orb +83 -48
- package/behaviors/registry/ui/core/atoms/std-calendar.orb +213 -3
- package/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +27 -0
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +25 -12
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +26 -13
- package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +86 -0
- package/behaviors/registry/ui/core/molecules/ui-search-input.orb +37 -1
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +25 -12
- package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +13 -0
- package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +21 -8
- package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +13 -0
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +13 -0
- package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +4 -4
- package/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -9
- package/behaviors/registry/ui/game/organisms/ui-boardgame-board.orb +4 -4
- package/behaviors/registry/ui/game/organisms/ui-builder-board.orb +4 -4
- package/behaviors/registry/ui/game/organisms/ui-debugger-board.orb +12 -12
- package/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +19 -19
- package/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +1 -1
- package/behaviors/registry/ui/game/organisms/ui-sequencer-board.orb +2 -2
- package/behaviors/registry/ui/learning/atoms/std-algo-heapsort.orb +8 -8
- package/canonical-operators.json +30 -6
- package/dist/behaviors/behaviors-embeddings.json +267 -267
- package/dist/behaviors/exports-reader.js +2462 -2080
- package/dist/behaviors/functions/index.d.ts +725 -1
- package/dist/behaviors/functions/index.js +2437 -2081
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +2463 -2081
- package/dist/behaviors/knob-embeddings.json +1 -1
- package/dist/behaviors/query.js +2462 -2080
- package/dist/behaviors/registry/factory-signatures.json +5018 -824
- package/dist/behaviors/registry/ml/atoms/std-ml-classify.orb +622 -0
- package/dist/behaviors/registry/ml/atoms/std-ml-exact-check.orb +505 -0
- package/dist/behaviors/registry/ml/atoms/std-ml-infer.orb +770 -0
- package/dist/behaviors/registry/ml/atoms/std-ml-label-capture.orb +367 -0
- package/dist/behaviors/registry/ml/atoms/std-ml-lookup.orb +473 -0
- package/dist/behaviors/registry/ml/atoms/std-ml-posterior.orb +669 -0
- package/dist/behaviors/registry/ml/atoms/std-ml-similarity.orb +917 -0
- package/dist/behaviors/registry/ml/molecules/std-escalating-decision.orb +1553 -0
- package/dist/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +577 -0
- package/dist/behaviors/registry/ui/core/atoms/std-app-layout.orb +33 -1
- package/dist/behaviors/registry/ui/core/atoms/std-board.orb +64 -20
- package/dist/behaviors/registry/ui/core/atoms/std-browse.orb +83 -48
- package/dist/behaviors/registry/ui/core/atoms/std-calendar.orb +213 -3
- package/dist/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +27 -0
- package/dist/behaviors/registry/ui/core/molecules/ui-data-grid.orb +25 -12
- package/dist/behaviors/registry/ui/core/molecules/ui-data-list.orb +26 -13
- package/dist/behaviors/registry/ui/core/molecules/ui-filter-group.orb +86 -0
- package/dist/behaviors/registry/ui/core/molecules/ui-search-input.orb +37 -1
- package/dist/behaviors/registry/ui/core/molecules/ui-table-view.orb +25 -12
- package/dist/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +13 -0
- package/dist/behaviors/registry/ui/core/organisms/ui-entity-list.orb +21 -8
- package/dist/behaviors/registry/ui/core/organisms/ui-entity-table.orb +13 -0
- package/dist/behaviors/registry/ui/core/organisms/ui-timeline.orb +13 -0
- package/dist/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +4 -4
- package/dist/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -9
- package/dist/behaviors/registry/ui/game/organisms/ui-boardgame-board.orb +4 -4
- package/dist/behaviors/registry/ui/game/organisms/ui-builder-board.orb +4 -4
- package/dist/behaviors/registry/ui/game/organisms/ui-debugger-board.orb +12 -12
- package/dist/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +19 -19
- package/dist/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +1 -1
- package/dist/behaviors/registry/ui/game/organisms/ui-sequencer-board.orb +2 -2
- package/dist/behaviors/registry/ui/learning/atoms/std-algo-heapsort.orb +8 -8
- package/dist/behaviors-embeddings.json +267 -267
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2498 -2088
- package/dist/knob-embeddings.json +1 -1
- package/dist/modules/array.js +28 -0
- package/dist/modules/contract.js +4 -4
- package/dist/modules/data.js +3 -3
- package/dist/modules/index.js +35 -7
- package/dist/registry/factory-signatures.json +5018 -824
- package/dist/registry.js +35 -7
- package/package.json +3 -3
|
@@ -305,6 +305,11 @@ orbital BrowseItemOrbital {
|
|
|
305
305
|
@description "Actions beyond this count collapse into a '⋯' overflow menu. Set 2–3 for dense tables."
|
|
306
306
|
@synonyms "inline actions limit, overflow threshold, max buttons per row"
|
|
307
307
|
@tier "presentation"
|
|
308
|
+
bodySearch : boolean = true
|
|
309
|
+
@label "Show the list's own search box?"
|
|
310
|
+
@description "The dense/feed/gallery looks embed their own search box above the rows. Set false when the page already provides a search affordance (a toolbar Search molecule), so the surface shows one search box instead of two."
|
|
311
|
+
@synonyms "inline search, list search, built-in search, show search, duplicate search"
|
|
312
|
+
@tier "presentation"
|
|
308
313
|
searchPlaceholder : string = "Search…"
|
|
309
314
|
@label "Search box placeholder text"
|
|
310
315
|
@description "Hint text inside the list search box (e.g. 'Search orders…')."
|
|
@@ -327,7 +332,7 @@ orbital BrowseItemOrbital {
|
|
|
327
332
|
@description "Render-ui SExpr rendered after rows load when browseLook = table (the default). Composes the canonical data-grid call wrapped in a stack. See denseBodyContent/feedBodyContent/galleryBodyContent for the other browseLook bodies; any may be overridden directly while inheriting the same trait, state machine, emits, and listens."
|
|
328
333
|
@tier "internal"
|
|
329
334
|
denseBodyContent : render-ui = {
|
|
330
|
-
children: [{
|
|
335
|
+
children: [(if @config.bodySearch {
|
|
331
336
|
align: center
|
|
332
337
|
children: [{
|
|
333
338
|
className: "w-full max-w-2xl"
|
|
@@ -340,7 +345,11 @@ orbital BrowseItemOrbital {
|
|
|
340
345
|
direction: horizontal
|
|
341
346
|
gap: sm
|
|
342
347
|
type: stack
|
|
343
|
-
}
|
|
348
|
+
} {
|
|
349
|
+
children: []
|
|
350
|
+
gap: none
|
|
351
|
+
type: stack
|
|
352
|
+
}), {
|
|
344
353
|
children: [@trait.DenseTableView]
|
|
345
354
|
className: "rounded-lg border border-[var(--color-border)] overflow-x-auto bg-[var(--color-card)] shadow-sm"
|
|
346
355
|
direction: vertical
|
|
@@ -356,7 +365,7 @@ orbital BrowseItemOrbital {
|
|
|
356
365
|
@description "Render-ui SExpr rendered after rows load when browseLook = dense. Spreadsheet-style sticky-header data-table with a search bar; composes columns/itemActions/maxInlineActions/displayPageSize/searchPlaceholder. Folded from std-browse-dense (Phase 5.B)."
|
|
357
366
|
@tier "internal"
|
|
358
367
|
feedBodyContent : render-ui = {
|
|
359
|
-
children: [{
|
|
368
|
+
children: [(if @config.bodySearch {
|
|
360
369
|
align: center
|
|
361
370
|
children: [{
|
|
362
371
|
className: w-full
|
|
@@ -369,7 +378,11 @@ orbital BrowseItemOrbital {
|
|
|
369
378
|
direction: horizontal
|
|
370
379
|
gap: sm
|
|
371
380
|
type: stack
|
|
372
|
-
}
|
|
381
|
+
} {
|
|
382
|
+
children: []
|
|
383
|
+
gap: none
|
|
384
|
+
type: stack
|
|
385
|
+
}), {
|
|
373
386
|
entity: ?data
|
|
374
387
|
fields: []
|
|
375
388
|
gap: md
|
|
@@ -451,7 +464,7 @@ orbital BrowseItemOrbital {
|
|
|
451
464
|
@description "Render-ui SExpr rendered after rows load when browseLook = feed. Chronological card-per-item stream with avatar, title, meta, body, timestamp; composes titleBinding/descriptionBinding/categoryBinding/badgeBinding/metaBinding/searchPlaceholder/itemActions. Folded from std-browse-feed (Phase 5.B)."
|
|
452
465
|
@tier "internal"
|
|
453
466
|
galleryBodyContent : render-ui = {
|
|
454
|
-
children: [{
|
|
467
|
+
children: [(if @config.bodySearch {
|
|
455
468
|
align: center
|
|
456
469
|
children: [{
|
|
457
470
|
className: w-full
|
|
@@ -464,7 +477,11 @@ orbital BrowseItemOrbital {
|
|
|
464
477
|
direction: horizontal
|
|
465
478
|
gap: sm
|
|
466
479
|
type: stack
|
|
467
|
-
}
|
|
480
|
+
} {
|
|
481
|
+
children: []
|
|
482
|
+
gap: none
|
|
483
|
+
type: stack
|
|
484
|
+
}), {
|
|
468
485
|
className: w-full
|
|
469
486
|
entity: ?data
|
|
470
487
|
fields: []
|
|
@@ -11,10 +11,11 @@ orbital CalendarEventOrbital {
|
|
|
11
11
|
description : string @description "event details or notes" @synonyms "details, notes, body, summary"
|
|
12
12
|
status : "active" | "inactive" | "pending" @description "event lifecycle status" @synonyms "state, stage, phase" = active
|
|
13
13
|
createdAt : string
|
|
14
|
-
date : datetime @intrinsic
|
|
14
|
+
date : datetime @intrinsic
|
|
15
15
|
time : string @description "event start time of day" @synonyms "start, scheduled time, begins, when, start time" = ""
|
|
16
16
|
duration : number @description "event length in minutes" @synonyms "minutes, length, span, duration" = 60
|
|
17
17
|
selectedRange : string @intrinsic = month
|
|
18
|
+
weekAnchor : date @intrinsic
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
trait CalendarEventCalendar -> @rebindable CalendarEvent [interaction, collection] {
|
|
@@ -22,6 +23,7 @@ orbital CalendarEventOrbital {
|
|
|
22
23
|
|
|
23
24
|
state loading {
|
|
24
25
|
INIT -> loading
|
|
26
|
+
(set @entity.weekAnchor (time/now))
|
|
25
27
|
(fetch CalendarEvent {
|
|
26
28
|
emit: { failure: CalendarEventLoadFailed, success: CalendarEventLoaded }
|
|
27
29
|
})
|
|
@@ -87,6 +89,16 @@ orbital CalendarEventOrbital {
|
|
|
87
89
|
emit: { failure: CalendarEventLoadFailed, success: CalendarEventLoaded }
|
|
88
90
|
filter: (time/isAfter (time/parse @entity.date) (if ["=", ?value, week] (time/subtract (time/now) 1 week) (if ["=", ?value, "3months"] (time/subtract (time/now) 3 month) (if ["=", ?value, year] (time/subtract (time/now) 1 year) (time/subtract (time/now) 1 month)))))
|
|
89
91
|
})
|
|
92
|
+
CALENDAR_PREV_WEEK -> loading
|
|
93
|
+
(set @entity.weekAnchor (time/subtract @entity.weekAnchor 1 week))
|
|
94
|
+
(fetch CalendarEvent {
|
|
95
|
+
emit: { failure: CalendarEventLoadFailed, success: CalendarEventLoaded }
|
|
96
|
+
})
|
|
97
|
+
CALENDAR_NEXT_WEEK -> loading
|
|
98
|
+
(set @entity.weekAnchor (time/add @entity.weekAnchor 1 week))
|
|
99
|
+
(fetch CalendarEvent {
|
|
100
|
+
emit: { failure: CalendarEventLoadFailed, success: CalendarEventLoaded }
|
|
101
|
+
})
|
|
90
102
|
}
|
|
91
103
|
|
|
92
104
|
state error {
|
|
@@ -106,6 +118,11 @@ orbital CalendarEventOrbital {
|
|
|
106
118
|
@description "Indicates a failure to load calendar events."
|
|
107
119
|
@synonyms "error, failed, problem, loading issue"
|
|
108
120
|
@tier "internal"
|
|
121
|
+
@config.onEventClick -> external {
|
|
122
|
+
event : object
|
|
123
|
+
}
|
|
124
|
+
@description "Emitted when a calendar chip is clicked: UI:{onEventClick} with { event } carrying the clicked row."
|
|
125
|
+
@tier "presentation"
|
|
109
126
|
}
|
|
110
127
|
|
|
111
128
|
listens {
|
|
@@ -128,6 +145,14 @@ orbital CalendarEventOrbital {
|
|
|
128
145
|
@description "Indicates a failure to load calendar events."
|
|
129
146
|
@synonyms "error, failure, problem, failed"
|
|
130
147
|
@tier "internal"
|
|
148
|
+
CALENDAR_PREV_WEEK
|
|
149
|
+
@description "Move the week timeline one week earlier."
|
|
150
|
+
@synonyms "previous week, back a week, earlier week, last week"
|
|
151
|
+
@tier "domain"
|
|
152
|
+
CALENDAR_NEXT_WEEK
|
|
153
|
+
@description "Move the week timeline one week later."
|
|
154
|
+
@synonyms "next week, forward a week, later week, following week"
|
|
155
|
+
@tier "domain"
|
|
131
156
|
}
|
|
132
157
|
|
|
133
158
|
config {
|
|
@@ -151,6 +176,16 @@ orbital CalendarEventOrbital {
|
|
|
151
176
|
@label "Description binding"
|
|
152
177
|
@description "Per-row binding for the event description slot."
|
|
153
178
|
@tier "presentation"
|
|
179
|
+
startField : string = "date"
|
|
180
|
+
@label "Start field"
|
|
181
|
+
@description "Row column holding the timestamp the calendar grid places each chip by. Rebound hosts point this at their own column (e.g. startTime, startsAt, dueAt); the chip's LABEL comes from titleBinding, not from here."
|
|
182
|
+
@synonyms "start column, date column, when field, timestamp field"
|
|
183
|
+
@tier "presentation"
|
|
184
|
+
onEventClick : string = ""
|
|
185
|
+
@label "On Event Click"
|
|
186
|
+
@description "Event emitted when a calendar chip is clicked: UI:{onEventClick} with { event } carrying the clicked row. Empty means chips are not clickable."
|
|
187
|
+
@synonyms "open event, event click, select event, chip click"
|
|
188
|
+
@tier "presentation"
|
|
154
189
|
calendarLook : "month" | "agenda-list" | "week-timeline" = month
|
|
155
190
|
@label "Calendar look"
|
|
156
191
|
@description "Layer 3 body layout: default month-grid + upcoming-events list ('month'), day-grouped agenda list ('agenda-list'), or 7-column week timeline ('week-timeline')."
|
|
@@ -181,7 +216,17 @@ orbital CalendarEventOrbital {
|
|
|
181
216
|
gap: md
|
|
182
217
|
justify: between
|
|
183
218
|
type: stack
|
|
184
|
-
}, { type: divider }, {
|
|
219
|
+
}, { type: divider }, {
|
|
220
|
+
events: ?data
|
|
221
|
+
onEventClick: @config.onEventClick
|
|
222
|
+
renderItem: (fn item {
|
|
223
|
+
content: @config.titleBinding
|
|
224
|
+
type: typography
|
|
225
|
+
variant: small
|
|
226
|
+
})
|
|
227
|
+
startField: @config.startField
|
|
228
|
+
type: calendar-grid
|
|
229
|
+
}, { type: divider }, {
|
|
185
230
|
content: "Upcoming Events"
|
|
186
231
|
type: typography
|
|
187
232
|
variant: h4
|
|
@@ -331,6 +376,29 @@ orbital CalendarEventOrbital {
|
|
|
331
376
|
direction: horizontal
|
|
332
377
|
gap: sm
|
|
333
378
|
type: stack
|
|
379
|
+
}, {
|
|
380
|
+
align: center
|
|
381
|
+
children: [{
|
|
382
|
+
action: CALENDAR_PREV_WEEK
|
|
383
|
+
icon: chevron-left
|
|
384
|
+
label: "Previous week"
|
|
385
|
+
type: button
|
|
386
|
+
variant: ghost
|
|
387
|
+
}, {
|
|
388
|
+
color: muted
|
|
389
|
+
content: (time/format @entity.weekAnchor "MMM D, YYYY")
|
|
390
|
+
type: typography
|
|
391
|
+
variant: caption
|
|
392
|
+
}, {
|
|
393
|
+
action: CALENDAR_NEXT_WEEK
|
|
394
|
+
icon: chevron-right
|
|
395
|
+
label: "Next week"
|
|
396
|
+
type: button
|
|
397
|
+
variant: ghost
|
|
398
|
+
}]
|
|
399
|
+
direction: horizontal
|
|
400
|
+
gap: xs
|
|
401
|
+
type: stack
|
|
334
402
|
}, {
|
|
335
403
|
onSelect: SELECT_DAY
|
|
336
404
|
selected: @entity.selectedRange
|
|
@@ -344,7 +412,17 @@ orbital CalendarEventOrbital {
|
|
|
344
412
|
className: w-full
|
|
345
413
|
dayWindow: 7
|
|
346
414
|
events: ?data
|
|
415
|
+
onEventClick: @config.onEventClick
|
|
416
|
+
renderItem: (fn item {
|
|
417
|
+
content: @config.titleBinding
|
|
418
|
+
type: typography
|
|
419
|
+
variant: small
|
|
420
|
+
})
|
|
421
|
+
startField: @config.startField
|
|
422
|
+
swipeLeftEvent: CALENDAR_NEXT_WEEK
|
|
423
|
+
swipeRightEvent: CALENDAR_PREV_WEEK
|
|
347
424
|
type: calendar-grid
|
|
425
|
+
weekStart: @entity.weekAnchor
|
|
348
426
|
}]
|
|
349
427
|
direction: vertical
|
|
350
428
|
gap: md
|
|
@@ -56,7 +56,7 @@ orbital TagTaxonomyOrbital {
|
|
|
56
56
|
children: [{
|
|
57
57
|
align: center
|
|
58
58
|
children: [{
|
|
59
|
-
name: tag
|
|
59
|
+
name: "tag"
|
|
60
60
|
size: sm
|
|
61
61
|
type: icon
|
|
62
62
|
}, {
|
|
@@ -168,7 +168,7 @@ orbital TagTaxonomyOrbital {
|
|
|
168
168
|
children: [{
|
|
169
169
|
align: center
|
|
170
170
|
children: [{
|
|
171
|
-
name: tag
|
|
171
|
+
name: "tag"
|
|
172
172
|
size: sm
|
|
173
173
|
type: icon
|
|
174
174
|
}, {
|
|
@@ -266,7 +266,7 @@ orbital TagTaxonomyOrbital {
|
|
|
266
266
|
children: [{
|
|
267
267
|
align: center
|
|
268
268
|
children: [{
|
|
269
|
-
name: tag
|
|
269
|
+
name: "tag"
|
|
270
270
|
size: sm
|
|
271
271
|
type: icon
|
|
272
272
|
}, {
|
|
@@ -46,7 +46,7 @@ orbital TypographyOrbital {
|
|
|
46
46
|
@tier "presentation"
|
|
47
47
|
weight : "none" | "light" | "normal" | "medium" | "semibold" | "bold" = none
|
|
48
48
|
@label "Weight"
|
|
49
|
-
@description "Font weight override"
|
|
49
|
+
@description "Font weight override — `none` = no override, the variant's baked weight applies"
|
|
50
50
|
@tier "presentation"
|
|
51
51
|
size : "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" = none
|
|
52
52
|
@label "Size"
|
|
@@ -30,6 +30,9 @@ orbital CalendarGridOrbital {
|
|
|
30
30
|
swipeLeftEvent: @config.swipeLeftEvent
|
|
31
31
|
swipeRightEvent: @config.swipeRightEvent
|
|
32
32
|
dayWindow: @config.dayWindow
|
|
33
|
+
titleField: @config.titleField
|
|
34
|
+
startField: @config.startField
|
|
35
|
+
colorField: @config.colorField
|
|
33
36
|
type: calendar-grid
|
|
34
37
|
})
|
|
35
38
|
CalendarGridLoaded -> idle
|
|
@@ -46,6 +49,9 @@ orbital CalendarGridOrbital {
|
|
|
46
49
|
swipeLeftEvent: @config.swipeLeftEvent
|
|
47
50
|
swipeRightEvent: @config.swipeRightEvent
|
|
48
51
|
dayWindow: @config.dayWindow
|
|
52
|
+
titleField: @config.titleField
|
|
53
|
+
startField: @config.startField
|
|
54
|
+
colorField: @config.colorField
|
|
49
55
|
type: calendar-grid
|
|
50
56
|
})
|
|
51
57
|
}
|
|
@@ -134,6 +140,18 @@ orbital CalendarGridOrbital {
|
|
|
134
140
|
@label "Day Window"
|
|
135
141
|
@description "Override the viewport-driven day window. `'auto'` (default) tracks `window.innerWidth` — 1 day on mobile, 3 on tablet, 7 on laptop+. Pass an explicit number to force a fixed window (useful for print layouts or screenshot tests)."
|
|
136
142
|
@tier "presentation"
|
|
143
|
+
titleField : string = title
|
|
144
|
+
@label "Title Field"
|
|
145
|
+
@description "Row field holding the chip label. Defaults to `title`. Lets a host bound to its own entity name the column instead of being forced to rename its fields to this grid's contract (same accessor idiom as `DataList`'s `senderField` / `DataGrid`'s `imageField`)."
|
|
146
|
+
@tier "presentation"
|
|
147
|
+
startField : string = startTime
|
|
148
|
+
@label "Start Field"
|
|
149
|
+
@description "Row field holding the start timestamp (ISO or epoch). Defaults to `startTime`."
|
|
150
|
+
@tier "presentation"
|
|
151
|
+
colorField : string = color
|
|
152
|
+
@label "Color Field"
|
|
153
|
+
@description "Row field holding the chip's Tailwind colour class. Defaults to `color`."
|
|
154
|
+
@tier "presentation"
|
|
137
155
|
}
|
|
138
156
|
}
|
|
139
157
|
|
|
@@ -18,8 +18,7 @@ orbital DataListOrbital {
|
|
|
18
18
|
}
|
|
19
19
|
type DataListItemActionsItem = {
|
|
20
20
|
label : string!
|
|
21
|
-
event : string
|
|
22
|
-
navigatesTo : string
|
|
21
|
+
event : string!
|
|
23
22
|
icon : icon
|
|
24
23
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
25
24
|
}
|
|
@@ -123,6 +122,8 @@ orbital DataListOrbital {
|
|
|
123
122
|
look: @config.look
|
|
124
123
|
type: data-list
|
|
125
124
|
})
|
|
125
|
+
VIEW -> idle
|
|
126
|
+
(emit VIEW {})
|
|
126
127
|
}
|
|
127
128
|
|
|
128
129
|
emits {
|
|
@@ -30,6 +30,8 @@ orbital FilterGroupOrbital {
|
|
|
30
30
|
query: @config.query
|
|
31
31
|
isLoading: @config.isLoading
|
|
32
32
|
look: @config.look
|
|
33
|
+
event: @config.event
|
|
34
|
+
clearEvent: @config.clearEvent
|
|
33
35
|
type: filter-group
|
|
34
36
|
})
|
|
35
37
|
}
|
|
@@ -46,6 +48,16 @@ orbital FilterGroupOrbital {
|
|
|
46
48
|
}
|
|
47
49
|
@description "Callback to clear all filters"
|
|
48
50
|
@tier "essential"
|
|
51
|
+
@config.event -> external {
|
|
52
|
+
id : string
|
|
53
|
+
}
|
|
54
|
+
@description "Declarative filter event — emits UI:{event} via eventBus on filter change (alongside canonical UI:FILTER)"
|
|
55
|
+
@tier "essential"
|
|
56
|
+
@config.clearEvent -> external {
|
|
57
|
+
id : string
|
|
58
|
+
}
|
|
59
|
+
@description "Declarative clear event — emits UI:{clearEvent} via eventBus on clear-all (alongside canonical UI:CLEAR_FILTERS)"
|
|
60
|
+
@tier "essential"
|
|
49
61
|
}
|
|
50
62
|
|
|
51
63
|
config {
|
|
@@ -85,6 +97,14 @@ orbital FilterGroupOrbital {
|
|
|
85
97
|
@label "Look"
|
|
86
98
|
@description "Layer 2 visual treatment — orthogonal to the semantic variant."
|
|
87
99
|
@tier "presentation"
|
|
100
|
+
event : string = "EVENT"
|
|
101
|
+
@label "Event"
|
|
102
|
+
@description "Declarative filter event — emits UI:{event} via eventBus on filter change (alongside canonical UI:FILTER)"
|
|
103
|
+
@tier "presentation"
|
|
104
|
+
clearEvent : string = "CLEAR"
|
|
105
|
+
@label "Clear Event"
|
|
106
|
+
@description "Declarative clear event — emits UI:{clearEvent} via eventBus on clear-all (alongside canonical UI:CLEAR_FILTERS)"
|
|
107
|
+
@tier "presentation"
|
|
88
108
|
}
|
|
89
109
|
}
|
|
90
110
|
|
|
@@ -49,6 +49,11 @@ orbital SearchInputOrbital {
|
|
|
49
49
|
}
|
|
50
50
|
@description "Callback when search value changes"
|
|
51
51
|
@tier "essential"
|
|
52
|
+
@config.event -> external {
|
|
53
|
+
id : string
|
|
54
|
+
}
|
|
55
|
+
@description "Declarative search event — emits UI:{event} via eventBus on query submit (alongside canonical UI:SEARCH)"
|
|
56
|
+
@tier "essential"
|
|
52
57
|
}
|
|
53
58
|
|
|
54
59
|
listens {
|
|
@@ -86,9 +91,9 @@ orbital SearchInputOrbital {
|
|
|
86
91
|
@label "Class Name"
|
|
87
92
|
@description "Additional CSS classes"
|
|
88
93
|
@tier "presentation"
|
|
89
|
-
event : string
|
|
94
|
+
event : string = "EVENT"
|
|
90
95
|
@label "Event"
|
|
91
|
-
@description "
|
|
96
|
+
@description "Declarative search event — emits UI:{event} via eventBus on query submit (alongside canonical UI:SEARCH)"
|
|
92
97
|
@tier "presentation"
|
|
93
98
|
query : string
|
|
94
99
|
@label "Query"
|
|
@@ -31,8 +31,7 @@ orbital TableViewOrbital {
|
|
|
31
31
|
}
|
|
32
32
|
type TableViewItemActionsItem = {
|
|
33
33
|
label : string!
|
|
34
|
-
event : string
|
|
35
|
-
navigatesTo : string
|
|
34
|
+
event : string!
|
|
36
35
|
icon : icon
|
|
37
36
|
variant : "primary" | "secondary" | "ghost" | "danger"
|
|
38
37
|
}
|
|
@@ -112,6 +111,8 @@ orbital TableViewOrbital {
|
|
|
112
111
|
look: @config.look
|
|
113
112
|
type: table-view
|
|
114
113
|
})
|
|
114
|
+
VIEW -> idle
|
|
115
|
+
(emit VIEW {})
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
emits {
|
|
@@ -55,11 +55,11 @@ orbital DungeonCombatOrbital {
|
|
|
55
55
|
(let ((target (array/find @entity.enemies (fn e (== @e.id @payload.targetId)))))
|
|
56
56
|
(let ((newHealth (math/max 0 (- (object/get @target health) @config.attackDamage))))
|
|
57
57
|
(do
|
|
58
|
-
(set @entity.enemies (array/map @entity.enemies (fn e (if (== @e.id @payload.targetId) (object/merge @e { health: @newHealth, animation: (if (<= @newHealth 0) "death" "hit") }) e))))
|
|
58
|
+
(set @entity.enemies (array/map @entity.enemies (fn e (if (== @e.id @payload.targetId) (object/merge @e { health: @newHealth, animation: (if (<= @newHealth 0) "death" "hit") }) @e))))
|
|
59
59
|
(if (<= @newHealth 0)
|
|
60
60
|
(do
|
|
61
61
|
(set @entity.combatScore (+ @entity.combatScore @config.pointsPerKill))
|
|
62
|
-
(emit BURST { particles: (array/map (array/filter @entity.enemies (fn e (== @e.id @payload.targetId))) (fn t { id: (str/concat "fx-kill-" (object/get t id)), type: "explosion", x: (object/get (object/get t position) x), z: (object/get (object/get t position) y), ttl: 5 })) }))
|
|
62
|
+
(emit BURST { particles: (array/map (array/filter @entity.enemies (fn e (== @e.id @payload.targetId))) (fn t { id: (str/concat "fx-kill-" (object/get @t id)), type: "explosion", x: (object/get (object/get @t position) x), z: (object/get (object/get @t position) y), ttl: 5 })) }))
|
|
63
63
|
true))))
|
|
64
64
|
|
|
65
65
|
MONSTER_TICK -> active when @config.running
|
|
@@ -168,7 +168,7 @@ orbital WorldMapBoard2DOrbital {
|
|
|
168
168
|
|
|
169
169
|
HERO_MOVE -> playing when (and (== @entity.result "none") (and (!= @entity.selectedHeroId "") (and (grid/in-bounds { x: ?x, y: ?y } @config.gridWidth @config.gridHeight) (and (<= (grid/manhattan-distance (object/get (array/find @entity.units (fn u (== @u.id @entity.selectedHeroId))) position) { x: ?x, y: ?y }) @config.movementRange) (and (== (object/get (array/find @entity.tiles (fn t (and (== (object/get @t x) ?x) (== (object/get @t y) ?y)))) passable) true) (== (array/len (array/filter @entity.units (fn u (and (== (object/get (object/get @u position) x) ?x) (== (object/get (object/get @u position) y) ?y))))) 0))))))
|
|
170
170
|
(emit MOVE { unitId: @entity.selectedHeroId, x: ?x, y: ?y })
|
|
171
|
-
(if (== (object/get (array/find @config.features (fn f (and (== (object/get f x) ?x) (and (== (object/get f y) ?y) (== (object/get f type) "gold_mine"))))) type) "gold_mine") (emit MINE_HIT { id: "" }) null)
|
|
171
|
+
(if (== (object/get (array/find @config.features (fn f (and (== (object/get @f x) ?x) (and (== (object/get @f y) ?y) (== (object/get @f type) "gold_mine"))))) type) "gold_mine") (emit MINE_HIT { id: "" }) null)
|
|
172
172
|
(set @entity.selectedHeroId "")
|
|
173
173
|
(set @entity.validMoves [])
|
|
174
174
|
|
|
@@ -119,7 +119,7 @@ orbital BoardgameBoardOrbital {
|
|
|
119
119
|
(set @entity.landingIndex (math/min @entity.lastIndex (+ @entity.playerIndex @entity.dice)))
|
|
120
120
|
(set @entity.landingType (object/get (array/nth @config.track @entity.landingIndex) type))
|
|
121
121
|
(set @entity.playerIndex (if (== @entity.landingType "bonus") (math/min @entity.lastIndex (+ @entity.landingIndex 2)) (if (== @entity.landingType "trap") (math/max 0 (- @entity.landingIndex 2)) @entity.landingIndex)))
|
|
122
|
-
(set @entity.pieces (array/map @entity.pieces (fn p (if (== @p.id "you") (object/merge p { position: { x: (object/get (array/nth @config.track @entity.playerIndex) x), y: (object/get (array/nth @config.track @entity.playerIndex) y) }, trackIndex: @entity.playerIndex }) p))))
|
|
122
|
+
(set @entity.pieces (array/map @entity.pieces (fn p (if (== @p.id "you") (object/merge @p { position: { x: (object/get (array/nth @config.track @entity.playerIndex) x), y: (object/get (array/nth @config.track @entity.playerIndex) y) }, trackIndex: @entity.playerIndex }) @p))))
|
|
123
123
|
(if (or (== @entity.landingType "bonus") (== @entity.landingType "trap")) (set @entity.effects (array/append @entity.effects { key: @entity.landingType, x: (object/get (array/nth @config.track @entity.landingIndex) x), y: (object/get (array/nth @config.track @entity.landingIndex) y), ttl: 6 })) true)
|
|
124
124
|
(set @entity.result (if (== @entity.playerIndex @entity.lastIndex) "victory" "none"))
|
|
125
125
|
(if (== @entity.result "victory") (emit GAME_END) true)
|
|
@@ -218,7 +218,7 @@ orbital BoardgameBoardOrbital {
|
|
|
218
218
|
(set @entity.landingIndex (math/min @entity.lastIndex (+ @entity.rivalIndex @entity.dice)))
|
|
219
219
|
(set @entity.landingType (object/get (array/nth @config.track @entity.landingIndex) type))
|
|
220
220
|
(set @entity.rivalIndex (if (== @entity.landingType "bonus") (math/min @entity.lastIndex (+ @entity.landingIndex 2)) (if (== @entity.landingType "trap") (math/max 0 (- @entity.landingIndex 2)) @entity.landingIndex)))
|
|
221
|
-
(set @entity.pieces (array/map @entity.pieces (fn p (if (== @p.id "rival") (object/merge p { position: { x: (object/get (array/nth @config.track @entity.rivalIndex) x), y: (object/get (array/nth @config.track @entity.rivalIndex) y) }, trackIndex: @entity.rivalIndex }) p))))
|
|
221
|
+
(set @entity.pieces (array/map @entity.pieces (fn p (if (== @p.id "rival") (object/merge @p { position: { x: (object/get (array/nth @config.track @entity.rivalIndex) x), y: (object/get (array/nth @config.track @entity.rivalIndex) y) }, trackIndex: @entity.rivalIndex }) @p))))
|
|
222
222
|
(if (or (== @entity.landingType "bonus") (== @entity.landingType "trap")) (set @entity.effects (array/append @entity.effects { key: @entity.landingType, x: (object/get (array/nth @config.track @entity.landingIndex) x), y: (object/get (array/nth @config.track @entity.landingIndex) y), ttl: 6 })) true)
|
|
223
223
|
(set @entity.result (if (== @entity.rivalIndex @entity.lastIndex) "defeat" "none"))
|
|
224
224
|
(if (== @entity.result "defeat") (emit GAME_END) true)
|
|
@@ -100,7 +100,7 @@ orbital BuilderBoardOrbital {
|
|
|
100
100
|
]
|
|
101
101
|
})
|
|
102
102
|
|
|
103
|
-
CHECK -> complete when (== (array/len (array/filter @entity.slots (fn s (!= (object/get s placedComponentId) (object/get s requiredComponentId))))) 0)
|
|
103
|
+
CHECK -> complete when (== (array/len (array/filter @entity.slots (fn s (!= (object/get @s placedComponentId) (object/get @s requiredComponentId))))) 0)
|
|
104
104
|
(set @entity.attempts (+ @entity.attempts 1))
|
|
105
105
|
(set @entity.result "win")
|
|
106
106
|
(render-ui main {
|
|
@@ -112,7 +112,7 @@ orbital BuilderBoardOrbital {
|
|
|
112
112
|
]
|
|
113
113
|
})
|
|
114
114
|
|
|
115
|
-
CHECK -> playing when (> (array/len (array/filter @entity.slots (fn s (!= (object/get s placedComponentId) (object/get s requiredComponentId))))) 0)
|
|
115
|
+
CHECK -> playing when (> (array/len (array/filter @entity.slots (fn s (!= (object/get @s placedComponentId) (object/get @s requiredComponentId))))) 0)
|
|
116
116
|
(set @entity.attempts (+ @entity.attempts 1))
|
|
117
117
|
(render-ui main {
|
|
118
118
|
type: game-shell
|
|
@@ -74,7 +74,7 @@ orbital DebuggerBoardOrbital {
|
|
|
74
74
|
]
|
|
75
75
|
})
|
|
76
76
|
TOGGLE_FLAG -> playing
|
|
77
|
-
(set @entity.lines (array/map @entity.lines (fn l (if (== (object/get l id) ?lineId) (object/merge l { isFlagged: (not (object/get l isFlagged)) }) l))))
|
|
77
|
+
(set @entity.lines (array/map @entity.lines (fn l (if (== (object/get @l id) ?lineId) (object/merge @l { isFlagged: (not (object/get @l isFlagged)) }) @l))))
|
|
78
78
|
(render-ui main {
|
|
79
79
|
type: game-shell
|
|
80
80
|
hud: { type: stack, direction: horizontal, gap: md, justify: between, children: [ { type: game-hud, stats: [ { label: "Attempts", value: @entity.attempts }, { label: "Status", value: @entity.result } ] }, { type: stack, direction: horizontal, gap: sm, children: [ { type: button, action: CHECK, label: "Check", variant: primary }, { type: button, action: PLAY_AGAIN, label: "Reset", variant: secondary } ] } ] }
|
|
@@ -84,7 +84,7 @@ orbital DebuggerBoardOrbital {
|
|
|
84
84
|
]
|
|
85
85
|
})
|
|
86
86
|
|
|
87
|
-
CHECK -> complete when (and (== (array/len (array/filter @entity.lines (fn l (and (object/get l isBug) (not (object/get l isFlagged)))))) 0) (== (array/len (array/filter @entity.lines (fn l (and (not (object/get l isBug)) (object/get l isFlagged))))) 0))
|
|
87
|
+
CHECK -> complete when (and (== (array/len (array/filter @entity.lines (fn l (and (object/get @l isBug) (not (object/get @l isFlagged)))))) 0) (== (array/len (array/filter @entity.lines (fn l (and (not (object/get @l isBug)) (object/get @l isFlagged))))) 0))
|
|
88
88
|
(set @entity.attempts (+ @entity.attempts 1))
|
|
89
89
|
(set @entity.result "win")
|
|
90
90
|
(render-ui main {
|
|
@@ -96,7 +96,7 @@ orbital DebuggerBoardOrbital {
|
|
|
96
96
|
]
|
|
97
97
|
})
|
|
98
98
|
|
|
99
|
-
CHECK -> playing when (or (> (array/len (array/filter @entity.lines (fn l (and (object/get l isBug) (not (object/get l isFlagged)))))) 0) (> (array/len (array/filter @entity.lines (fn l (and (not (object/get l isBug)) (object/get l isFlagged))))) 0))
|
|
99
|
+
CHECK -> playing when (or (> (array/len (array/filter @entity.lines (fn l (and (object/get @l isBug) (not (object/get @l isFlagged)))))) 0) (> (array/len (array/filter @entity.lines (fn l (and (not (object/get @l isBug)) (object/get @l isFlagged))))) 0))
|
|
100
100
|
(set @entity.attempts (+ @entity.attempts 1))
|
|
101
101
|
(render-ui main {
|
|
102
102
|
type: game-shell
|
|
@@ -141,10 +141,10 @@ orbital PhysicsSandboxBoardOrbital {
|
|
|
141
141
|
|
|
142
142
|
ticks {
|
|
143
143
|
gravityTick every 300ms
|
|
144
|
-
(set @entity.blocks (array/map @entity.blocks (fn b (if (== (object/get b settled) true) b (if (or (== (+ (object/get b y) 1) @entity.gridHeight) (array/some @entity.blocks (fn o (and (== (object/get o settled) true) (and (== (object/get o x) (object/get b x)) (== (object/get o y) (+ (object/get b y) 1))))))) (object/merge b { settled: true }) (object/merge b { y: (+ (object/get b y) 1) }))))))
|
|
145
|
-
(let ((clearRow (array/find (array/range 0 @entity.gridHeight) (fn r (== (array/len (array/filter @entity.blocks (fn b (and (== (object/get b settled) true) (== (object/get b y) r))))) @entity.gridWidth)))))
|
|
144
|
+
(set @entity.blocks (array/map @entity.blocks (fn b (if (== (object/get @b settled) true) @b (if (or (== (+ (object/get @b y) 1) @entity.gridHeight) (array/some @entity.blocks (fn o (and (== (object/get @o settled) true) (and (== (object/get @o x) (object/get @b x)) (== (object/get @o y) (+ (object/get @b y) 1))))))) (object/merge @b { settled: true }) (object/merge @b { y: (+ (object/get @b y) 1) }))))))
|
|
145
|
+
(let ((clearRow (array/find (array/range 0 @entity.gridHeight) (fn r (== (array/len (array/filter @entity.blocks (fn b (and (== (object/get @b settled) true) (== (object/get @b y) @r))))) @entity.gridWidth)))))
|
|
146
146
|
(do
|
|
147
|
-
(set @entity.blocks (if (!= @clearRow null) (array/map (array/filter @entity.blocks (fn b (!= (object/get b y) @clearRow))) (fn b (if (< (object/get b y) @clearRow) (object/merge b { y: (+ (object/get b y) 1) }) b))) @entity.blocks))
|
|
147
|
+
(set @entity.blocks (if (!= @clearRow null) (array/map (array/filter @entity.blocks (fn b (!= (object/get @b y) @clearRow))) (fn b (if (< (object/get @b y) @clearRow) (object/merge @b { y: (+ (object/get @b y) 1) }) @b))) @entity.blocks))
|
|
148
148
|
(set @entity.score (if (!= @clearRow null) (+ @entity.score (* 10 @entity.gridWidth)) @entity.score))
|
|
149
149
|
(set @entity.rowsCleared (if (!= @clearRow null) (+ @entity.rowsCleared 1) @entity.rowsCleared))))
|
|
150
150
|
(render-ui main {
|
|
@@ -466,7 +466,7 @@ orbital RoguelikeBoardOrbital {
|
|
|
466
466
|
enemyAiTick every 1s
|
|
467
467
|
when (and (== @entity.phase "enemy_turn") (== @entity.result "none"))
|
|
468
468
|
(set @entity.enemies (array/map @entity.enemies (fn e (if (> @e.hp 0) (let ((ex @e.x) (ey @e.y) (px (object/get @entity.player x)) (py (object/get @entity.player y))) (let ((adjP (and (== (math/abs (- @ex @px)) 1) (== @ey @py))) (adjQ (and (== @ex @px) (== (math/abs (- @ey @py)) 1)))) (if (or @adjP @adjQ) @e (let ((cnx (math/clamp (+ @ex (math/sign (- @px @ex))) 0 (- @entity.gridWidth 1))) (cny (math/clamp (+ @ey (math/sign (- @py @ey))) 0 (- @entity.gridHeight 1)))) (let ((ntile (array/find @entity.tiles (fn t (and (== (object/get @t x) @cnx) (== (object/get @t y) @cny))))) (occupied (array/find @entity.enemies (fn o (and (!= @o.id @e.id) (and (== @o.x @cnx) (== @o.y @cny))))))) (if (and (and (!= @ntile null) (== (object/get @ntile passable) true)) (and (== @occupied null) (or (!= @cnx @px) (!= @cny @py)))) (object/merge @e { x: @cnx, y: @cny }) @e)))))) @e))))
|
|
469
|
-
(set @entity.playerHp (let ((adjEnemies (array/filter @entity.enemies (fn e (and (> @e.hp 0) (or (and (== (math/abs (- @e.x (object/get @entity.player x))) 1) (== @e.y (object/get @entity.player y))) (and (== @e.x (object/get @entity.player x)) (== (math/abs (- @e.y (object/get @entity.player y))) 1)))))))) (let ((dmg (if (== (array/len @adjEnemies) 0) 0 (array/reduce @adjEnemies (fn acc e (+ acc @e.attack)) 0)))) (math/max 0 (- @entity.playerHp @dmg)))))
|
|
469
|
+
(set @entity.playerHp (let ((adjEnemies (array/filter @entity.enemies (fn e (and (> @e.hp 0) (or (and (== (math/abs (- @e.x (object/get @entity.player x))) 1) (== @e.y (object/get @entity.player y))) (and (== @e.x (object/get @entity.player x)) (== (math/abs (- @e.y (object/get @entity.player y))) 1)))))))) (let ((dmg (if (== (array/len @adjEnemies) 0) 0 (array/reduce @adjEnemies (fn acc e (+ @acc @e.attack)) 0)))) (math/max 0 (- @entity.playerHp @dmg)))))
|
|
470
470
|
(set @entity.effects (if (> (array/len (array/filter @entity.enemies (fn e (and (> @e.hp 0) (or (and (== (math/abs (- @e.x (object/get @entity.player x))) 1) (== @e.y (object/get @entity.player y))) (and (== @e.x (object/get @entity.player x)) (== (math/abs (- @e.y (object/get @entity.player y))) 1))))))) 0) (array/append @entity.effects { key: "slash", x: (object/get @entity.player x), y: (object/get @entity.player y), ttl: 4 }) @entity.effects))
|
|
471
471
|
(if (<= @entity.playerHp 0) (do (set @entity.result "lost") (emit GAME_END)) true)
|
|
472
472
|
(set @entity.phase (if (== @entity.result "none") "player_turn" "game_over"))
|
|
@@ -119,7 +119,7 @@ orbital SequencerBoardOrbital {
|
|
|
119
119
|
]
|
|
120
120
|
})
|
|
121
121
|
|
|
122
|
-
CHECK -> complete when (array/some @entity.solutions (fn sol (== (array/map @entity.slots (fn s (object/get s placedActionId))) sol)))
|
|
122
|
+
CHECK -> complete when (array/some @entity.solutions (fn sol (== (array/map @entity.slots (fn s (object/get @s placedActionId))) @sol)))
|
|
123
123
|
(set @entity.attempts (+ @entity.attempts 1))
|
|
124
124
|
(set @entity.result "win")
|
|
125
125
|
(set @entity.currentStep -1)
|
|
@@ -58,9 +58,9 @@ orbital HeapSortEngineOrbital {
|
|
|
58
58
|
(rc (+ (* 2 @entity.root) 2))
|
|
59
59
|
)
|
|
60
60
|
(let (
|
|
61
|
-
(afterL (if (and (< lc @entity.heapSize) (> (object/get (array/nth @entity.bars lc) value) (object/get (array/nth @entity.bars @entity.root) value))) lc @entity.root))
|
|
61
|
+
(afterL (if (and (< @lc @entity.heapSize) (> (object/get (array/nth @entity.bars @lc) value) (object/get (array/nth @entity.bars @entity.root) value))) @lc @entity.root))
|
|
62
62
|
)
|
|
63
|
-
(if (and (< rc @entity.heapSize) (> (object/get (array/nth @entity.bars rc) value) (object/get (array/nth @entity.bars afterL) value))) rc afterL))))
|
|
63
|
+
(if (and (< @rc @entity.heapSize) (> (object/get (array/nth @entity.bars @rc) value) (object/get (array/nth @entity.bars @afterL) value))) @rc @afterL))))
|
|
64
64
|
(set @entity.willSwap (not (== @entity.largest @entity.root)))
|
|
65
65
|
(set @entity.buildMore (and (not @entity.willSwap) (== @entity.phase 0) (>= @entity.origin 1)))
|
|
66
66
|
(set @entity.buildDone (and (not @entity.willSwap) (== @entity.phase 0) (== @entity.origin 0)))
|
|
@@ -76,7 +76,7 @@ orbital MstEngineOrbital {
|
|
|
76
76
|
(let ( (inF (array/includes @entity.inTree (object/get @w from)))
|
|
77
77
|
(inT (array/includes @entity.inTree (object/get @w to))) )
|
|
78
78
|
(or (and @inF (not @inT)) (and (not @inF) @inT)))))
|
|
79
|
-
(fn w (object/get @w w)))))
|
|
79
|
+
(fn w (object/get @w "w")))))
|
|
80
80
|
(set @entity.chosenFrom
|
|
81
81
|
(object/get
|
|
82
82
|
(array/first
|
|
@@ -84,7 +84,7 @@ orbital MstEngineOrbital {
|
|
|
84
84
|
(let ( (inF (array/includes @entity.inTree (object/get @w from)))
|
|
85
85
|
(inT (array/includes @entity.inTree (object/get @w to))) )
|
|
86
86
|
(and (or (and @inF (not @inT)) (and (not @inF) @inT))
|
|
87
|
-
(== (object/get @w w) @entity.minW))))))
|
|
87
|
+
(== (object/get @w "w") @entity.minW))))))
|
|
88
88
|
from))
|
|
89
89
|
(set @entity.chosenTo
|
|
90
90
|
(object/get
|
|
@@ -93,7 +93,7 @@ orbital MstEngineOrbital {
|
|
|
93
93
|
(let ( (inF (array/includes @entity.inTree (object/get @w from)))
|
|
94
94
|
(inT (array/includes @entity.inTree (object/get @w to))) )
|
|
95
95
|
(and (or (and @inF (not @inT)) (and (not @inF) @inT))
|
|
96
|
-
(== (object/get @w w) @entity.minW))))))
|
|
96
|
+
(== (object/get @w "w") @entity.minW))))))
|
|
97
97
|
to))
|
|
98
98
|
(set @entity.treeEdges (array/append @entity.treeEdges { from: @entity.chosenFrom, to: @entity.chosenTo }))
|
|
99
99
|
(set @entity.inTree
|