@almadar/std 16.187.0 → 16.188.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 (81) hide show
  1. package/behaviors/lolo/ui/core/.hand-authored.json +4 -0
  2. package/behaviors/lolo/ui/core/atoms/std-board.lolo +138 -4
  3. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +148 -8
  4. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +141 -3
  5. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +255 -2
  6. package/behaviors/lolo/ui/core/atoms/std-gallery.lolo +148 -1
  7. package/behaviors/lolo/ui/core/atoms/std-list.lolo +193 -1
  8. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +329 -0
  9. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +182 -1
  10. package/behaviors/lolo/ui/core/atoms/std-tree.lolo +113 -3
  11. package/behaviors/lolo/ui/game/atoms/std-area-fill.lolo +93 -0
  12. package/behaviors/lolo/ui/game/atoms/std-loop-lock.lolo +79 -0
  13. package/behaviors/lolo/ui/game/atoms/std-pad-lock.lolo +93 -0
  14. package/behaviors/lolo/ui/game/atoms/std-patrol-hazard.lolo +14 -7
  15. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +21 -4
  16. package/behaviors/lolo/ui/game/atoms/std-velocity-gate.lolo +101 -0
  17. package/behaviors/registry/infra/atoms/std-approval-gate.orb +16 -8
  18. package/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
  19. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
  20. package/behaviors/registry/infra/atoms/std-data-erasure.orb +16 -8
  21. package/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
  22. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
  23. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +2 -1
  24. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +10 -5
  25. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +4 -2
  26. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
  27. package/behaviors/registry/ui/core/atoms/std-board.orb +355 -2
  28. package/behaviors/registry/ui/core/atoms/std-browse.orb +304 -31
  29. package/behaviors/registry/ui/core/atoms/std-calendar.orb +344 -0
  30. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
  31. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
  32. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
  33. package/behaviors/registry/ui/core/atoms/std-event-log.orb +773 -0
  34. package/behaviors/registry/ui/core/atoms/std-export.orb +4 -2
  35. package/behaviors/registry/ui/core/atoms/std-gallery.orb +390 -0
  36. package/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
  37. package/behaviors/registry/ui/core/atoms/std-list.orb +451 -0
  38. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +1141 -0
  39. package/behaviors/registry/ui/core/atoms/std-selection.orb +436 -0
  40. package/behaviors/registry/ui/core/atoms/std-tree.orb +292 -1
  41. package/behaviors/registry/ui/game/atoms/std-area-fill.orb +955 -0
  42. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +1 -1
  43. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +1 -1
  44. package/behaviors/registry/ui/game/atoms/std-lives.orb +1 -1
  45. package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +785 -0
  46. package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +903 -0
  47. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +190 -44
  48. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +868 -637
  49. package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +1040 -0
  50. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +8 -4
  51. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +6 -3
  52. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +10 -5
  53. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +8 -4
  54. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +8 -4
  55. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +7 -4
  56. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +8 -4
  57. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +12 -6
  58. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +8 -4
  59. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +6 -3
  60. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +1 -1
  61. package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +2 -1
  62. package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +2 -1
  63. package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +2 -1
  64. package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +2 -1
  65. package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +2 -1
  66. package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +2 -1
  67. package/dist/behaviors/exports-reader.js +7541 -3153
  68. package/dist/behaviors/functions/index.d.ts +598 -18
  69. package/dist/behaviors/functions/index.js +7524 -3154
  70. package/dist/behaviors/index.d.ts +1 -1
  71. package/dist/behaviors/index.js +7542 -3154
  72. package/dist/behaviors/query.js +7541 -3153
  73. package/dist/behaviors-embeddings.hash.json +3 -3
  74. package/dist/behaviors-embeddings.json +485 -461
  75. package/dist/behaviors-registry.json +2612 -934
  76. package/dist/index.d.ts +1 -1
  77. package/dist/index.js +7542 -3154
  78. package/dist/knob-embeddings.hash.json +3 -3
  79. package/dist/knob-embeddings.json +1 -1
  80. package/dist/registry/factory-signatures.json +1 -1
  81. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "Headless run/jump platformer-physics authority: the SOLE writer of body + fell + hazardId + goalId on side-view boards. Where std-motion-body owns free 2D drift (no collision), this atom owns the platformer contract: every 33ms physics tick it integrates gravity into the body's vertical velocity, steps position in per-second units, and collides the body rect against the config platforms with one-way semantics — a body moving in the gravity direction that overlaps a ground/platform tile lands on its anti-gravity face (vy zeroed, grounded set), while a body moving against gravity passes through, so jumping up through a platform and walking up a staircase both just work. The sign of gravity IS the vertical convention: positive pulls toward +y (screen boards, y down — sprite canvases), negative toward −y (math canvases, y up); jumps always fire against it. Intents: STEER sets horizontal velocity (dir −1/0/1 × moveSpeed, hold-to-run: keydown steers, keyup steers 0), JUMP kicks vertical velocity when grounded, PLACE teleports (spawns, hazard respawns), RESTART reseeds. Emits BODY_MOVED every tick for the render layer (boards that don't subscribe pay nothing), plus the sparse rule signals a board needs to score: BODY_JUMPED, BODY_LANDED (with impact speed), BODY_HAZARD (once per hazard entry, re-arms on exit), BODY_GOAL (same arming), BODY_FELL (once per fall past killY, re-armed by PLACE/RESTART). Curve skating: when config.skate is on and the grounded body comes within skateSnap of the config.skateCurve surface, the body 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 itself and launches ballistically off its ends; jumping kicks free. Sparse BODY_SKATE_START/BODY_SKATE_END signals fire on engage/disengage so boards can layer fx. Lives, score, and win/lose stay downstream — this atom simulates, it never judges. Renders nothing.",
2
+ "description": "Headless run/jump platformer-physics authority: the SOLE writer of body + fell + hazardId + goalId on side-view boards. Where std-motion-body owns free 2D drift (no collision), this atom owns the platformer contract: every 33ms physics tick it integrates gravity into the body's vertical velocity, steps position in per-second units, and collides the body rect against the config platforms with one-way semantics — a body moving in the gravity direction that overlaps a ground/platform tile lands on its anti-gravity face (vy zeroed, grounded set), while a body moving against gravity passes through, so jumping up through a platform and walking up a staircase both just work. The sign of gravity IS the vertical convention: positive pulls toward +y (screen boards, y down — sprite canvases), negative toward −y (math canvases, y up); jumps always fire against it. Intents: STEER sets horizontal velocity (dir −1/0/1 × moveSpeed, hold-to-run: keydown steers, keyup steers 0), JUMP kicks vertical velocity when grounded, PLACE teleports (spawns, hazard respawns), RESTART reseeds. Emits BODY_MOVED every tick for the render layer (boards that don't subscribe pay nothing), plus the sparse rule signals a board needs to score: BODY_JUMPED, BODY_LANDED (with impact speed), BODY_HAZARD (once per hazard entry, re-arms on exit), BODY_GOAL (same arming), BODY_FELL (once per fall past killY, re-armed by PLACE/RESTART). Drift regions: config.driftRegions lists axis-aligned rects each carrying a constant acceleration (ax, ay) applied with the same 0.033s dt whenever the body's center is inside (empty list = zero behavior change). Curve skating: when config.skate is on and the grounded body comes within skateSnap of the config.skateCurve surface, the body 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 itself and launches ballistically off its ends; jumping kicks free. Sparse BODY_SKATE_START/BODY_SKATE_END signals fire on engage/disengage so boards can layer fx. Lives, score, and win/lose stay downstream — this atom simulates, it never judges. Renders nothing.",
3
3
  "ledger": {
4
4
  "entries": {
5
5
  "ent_01M0H2SJBB5TG61D238AWJW3KC": {
@@ -265,6 +265,53 @@
265
265
  {
266
266
  "category": "lifecycle",
267
267
  "config": {
268
+ "driftRegions": {
269
+ "default": [],
270
+ "description": "Axis-aligned rects (x0..x1, y0..y1 in world units) each carrying a constant acceleration (ax, ay in units/s²) applied with the physics dt whenever the body's center is inside — winds, currents, gradient pushes. Empty list = zero behavior change.",
271
+ "items": {
272
+ "properties": {
273
+ "ax": {
274
+ "name": "ax",
275
+ "required": true,
276
+ "type": "number"
277
+ },
278
+ "ay": {
279
+ "name": "ay",
280
+ "required": true,
281
+ "type": "number"
282
+ },
283
+ "id": {
284
+ "name": "id",
285
+ "required": true,
286
+ "type": "string"
287
+ },
288
+ "x0": {
289
+ "name": "x0",
290
+ "required": true,
291
+ "type": "number"
292
+ },
293
+ "x1": {
294
+ "name": "x1",
295
+ "required": true,
296
+ "type": "number"
297
+ },
298
+ "y0": {
299
+ "name": "y0",
300
+ "required": true,
301
+ "type": "number"
302
+ },
303
+ "y1": {
304
+ "name": "y1",
305
+ "required": true,
306
+ "type": "number"
307
+ }
308
+ },
309
+ "type": "object"
310
+ },
311
+ "label": "Drift Regions",
312
+ "tier": "domain",
313
+ "type": "[BodyDriftRegion]"
314
+ },
268
315
  "gravity": {
269
316
  "default": 24.0,
270
317
  "description": "Units/s² added to vertical velocity; the SIGN is the vertical convention — positive pulls toward +y (screen boards, y down), negative toward −y (math canvases, y up) — and jumps always fire against it",
@@ -1163,44 +1210,103 @@
1163
1210
  "let",
1164
1211
  [
1165
1212
  [
1166
- "vy1",
1213
+ "bcx",
1167
1214
  [
1168
- "math/clamp",
1215
+ "+",
1169
1216
  [
1170
- "+",
1171
- "@entity.body.vy",
1172
- [
1173
- "*",
1174
- "@config.gravity",
1175
- 0.033
1176
- ]
1217
+ "object/get",
1218
+ "@entity.body",
1219
+ "x"
1177
1220
  ],
1178
1221
  [
1179
- "-",
1180
- 0.0,
1181
- "@config.maxFallSpeed"
1182
- ],
1183
- "@config.maxFallSpeed"
1222
+ "/",
1223
+ [
1224
+ "object/get",
1225
+ "@entity.body",
1226
+ "width"
1227
+ ],
1228
+ 2.0
1229
+ ]
1184
1230
  ]
1185
- ]
1186
- ],
1187
- [
1188
- "let",
1231
+ ],
1189
1232
  [
1233
+ "bcy",
1190
1234
  [
1191
- "bw",
1235
+ "+",
1192
1236
  [
1193
1237
  "object/get",
1194
1238
  "@entity.body",
1195
- "width"
1239
+ "y"
1240
+ ],
1241
+ [
1242
+ "/",
1243
+ [
1244
+ "object/get",
1245
+ "@entity.body",
1246
+ "height"
1247
+ ],
1248
+ 2.0
1196
1249
  ]
1197
- ],
1250
+ ]
1251
+ ]
1252
+ ],
1253
+ [
1254
+ "let",
1255
+ [
1198
1256
  [
1199
- "bh",
1257
+ "drift",
1200
1258
  [
1201
- "object/get",
1202
- "@entity.body",
1203
- "height"
1259
+ "array/find",
1260
+ "@config.driftRegions",
1261
+ [
1262
+ "fn",
1263
+ "r",
1264
+ [
1265
+ "and",
1266
+ [
1267
+ ">=",
1268
+ "@bcx",
1269
+ [
1270
+ "object/get",
1271
+ "@r",
1272
+ "x0"
1273
+ ]
1274
+ ],
1275
+ [
1276
+ "and",
1277
+ [
1278
+ "<=",
1279
+ "@bcx",
1280
+ [
1281
+ "object/get",
1282
+ "@r",
1283
+ "x1"
1284
+ ]
1285
+ ],
1286
+ [
1287
+ "and",
1288
+ [
1289
+ ">=",
1290
+ "@bcy",
1291
+ [
1292
+ "object/get",
1293
+ "@r",
1294
+ "y0"
1295
+ ]
1296
+ ],
1297
+ [
1298
+ "<=",
1299
+ "@bcy",
1300
+ [
1301
+ "object/get",
1302
+ "@r",
1303
+ "y1"
1304
+ ]
1305
+ ]
1306
+ ]
1307
+ ]
1308
+ ]
1309
+ ]
1204
1310
  ]
1205
1311
  ]
1206
1312
  ],
@@ -1208,20 +1314,37 @@
1208
1314
  "let",
1209
1315
  [
1210
1316
  [
1211
- "nx",
1317
+ "dax",
1212
1318
  [
1213
- "math/clamp",
1319
+ "if",
1214
1320
  [
1215
- "+",
1216
- "@entity.body.x",
1217
- [
1218
- "*",
1219
- "@entity.body.vx",
1220
- 0.033
1221
- ]
1321
+ "==",
1322
+ "@drift",
1323
+ null
1222
1324
  ],
1223
- "@config.xMin",
1224
- "@config.xMax"
1325
+ 0.0,
1326
+ [
1327
+ "object/get",
1328
+ "@drift",
1329
+ "ax"
1330
+ ]
1331
+ ]
1332
+ ],
1333
+ [
1334
+ "day",
1335
+ [
1336
+ "if",
1337
+ [
1338
+ "==",
1339
+ "@drift",
1340
+ null
1341
+ ],
1342
+ 0.0,
1343
+ [
1344
+ "object/get",
1345
+ "@drift",
1346
+ "ay"
1347
+ ]
1225
1348
  ]
1226
1349
  ]
1227
1350
  ],
@@ -1229,15 +1352,28 @@
1229
1352
  "let",
1230
1353
  [
1231
1354
  [
1232
- "ny",
1355
+ "vy1",
1233
1356
  [
1234
- "+",
1235
- "@entity.body.y",
1357
+ "math/clamp",
1236
1358
  [
1237
- "*",
1238
- "@vy1",
1239
- 0.033
1240
- ]
1359
+ "+",
1360
+ "@entity.body.vy",
1361
+ [
1362
+ "*",
1363
+ [
1364
+ "+",
1365
+ "@config.gravity",
1366
+ "@day"
1367
+ ],
1368
+ 0.033
1369
+ ]
1370
+ ],
1371
+ [
1372
+ "-",
1373
+ 0.0,
1374
+ "@config.maxFallSpeed"
1375
+ ],
1376
+ "@config.maxFallSpeed"
1241
1377
  ]
1242
1378
  ]
1243
1379
  ],
@@ -1245,61 +1381,40 @@
1245
1381
  "let",
1246
1382
  [
1247
1383
  [
1248
- "rect",
1249
- {
1250
- "h": "@bh",
1251
- "w": "@bw",
1252
- "x": "@nx",
1253
- "y": "@ny"
1254
- }
1384
+ "bw",
1385
+ [
1386
+ "object/get",
1387
+ "@entity.body",
1388
+ "width"
1389
+ ]
1390
+ ],
1391
+ [
1392
+ "bh",
1393
+ [
1394
+ "object/get",
1395
+ "@entity.body",
1396
+ "height"
1397
+ ]
1255
1398
  ]
1256
1399
  ],
1257
1400
  [
1258
1401
  "let",
1259
1402
  [
1260
1403
  [
1261
- "hit",
1404
+ "nx",
1262
1405
  [
1263
- "array/find",
1264
- "@config.platforms",
1406
+ "math/clamp",
1265
1407
  [
1266
- "fn",
1267
- "p",
1408
+ "+",
1409
+ "@entity.body.x",
1268
1410
  [
1269
- "and",
1270
- [
1271
- "or",
1272
- [
1273
- "==",
1274
- [
1275
- "object/get",
1276
- "@p",
1277
- "type"
1278
- ],
1279
- "ground"
1280
- ],
1281
- [
1282
- "==",
1283
- [
1284
- "object/get",
1285
- "@p",
1286
- "type"
1287
- ],
1288
- "platform"
1289
- ]
1290
- ],
1291
- [
1292
- "geo/aabb-overlap",
1293
- "@rect",
1294
- {
1295
- "h": "@p.height",
1296
- "w": "@p.width",
1297
- "x": "@p.x",
1298
- "y": "@p.y"
1299
- }
1300
- ]
1411
+ "*",
1412
+ "@entity.body.vx",
1413
+ 0.033
1301
1414
  ]
1302
- ]
1415
+ ],
1416
+ "@config.xMin",
1417
+ "@config.xMax"
1303
1418
  ]
1304
1419
  ]
1305
1420
  ],
@@ -1307,22 +1422,14 @@
1307
1422
  "let",
1308
1423
  [
1309
1424
  [
1310
- "landed",
1425
+ "ny",
1311
1426
  [
1312
- "and",
1313
- [
1314
- "!=",
1315
- "@hit",
1316
- null
1317
- ],
1427
+ "+",
1428
+ "@entity.body.y",
1318
1429
  [
1319
- ">",
1320
- [
1321
- "*",
1322
- "@vy1",
1323
- "@gdir"
1324
- ],
1325
- 0.0
1430
+ "*",
1431
+ "@vy1",
1432
+ 0.033
1326
1433
  ]
1327
1434
  ]
1328
1435
  ]
@@ -1331,65 +1438,60 @@
1331
1438
  "let",
1332
1439
  [
1333
1440
  [
1334
- "ny2",
1335
- [
1336
- "if",
1337
- "@landed",
1338
- [
1339
- "if",
1340
- [
1341
- ">",
1342
- "@gdir",
1343
- 0.0
1344
- ],
1345
- [
1346
- "-",
1347
- [
1348
- "object/get",
1349
- "@hit",
1350
- "y"
1351
- ],
1352
- "@bh"
1353
- ],
1354
- [
1355
- "+",
1356
- [
1357
- "object/get",
1358
- "@hit",
1359
- "y"
1360
- ],
1361
- [
1362
- "object/get",
1363
- "@hit",
1364
- "height"
1365
- ]
1366
- ]
1367
- ],
1368
- "@ny"
1369
- ]
1370
- ],
1371
- [
1372
- "vy2",
1373
- [
1374
- "if",
1375
- "@landed",
1376
- 0.0,
1377
- "@vy1"
1378
- ]
1441
+ "rect",
1442
+ {
1443
+ "h": "@bh",
1444
+ "w": "@bw",
1445
+ "x": "@nx",
1446
+ "y": "@ny"
1447
+ }
1379
1448
  ]
1380
1449
  ],
1381
1450
  [
1382
1451
  "let",
1383
1452
  [
1384
1453
  [
1385
- "cx",
1454
+ "hit",
1386
1455
  [
1387
- "+",
1388
- "@nx",
1456
+ "array/find",
1457
+ "@config.platforms",
1389
1458
  [
1390
- "/",
1391
- "@bw",
1392
- 2.0
1459
+ "fn",
1460
+ "p",
1461
+ [
1462
+ "and",
1463
+ [
1464
+ "or",
1465
+ [
1466
+ "==",
1467
+ [
1468
+ "object/get",
1469
+ "@p",
1470
+ "type"
1471
+ ],
1472
+ "ground"
1473
+ ],
1474
+ [
1475
+ "==",
1476
+ [
1477
+ "object/get",
1478
+ "@p",
1479
+ "type"
1480
+ ],
1481
+ "platform"
1482
+ ]
1483
+ ],
1484
+ [
1485
+ "geo/aabb-overlap",
1486
+ "@rect",
1487
+ {
1488
+ "h": "@p.height",
1489
+ "w": "@p.width",
1490
+ "x": "@p.x",
1491
+ "y": "@p.y"
1492
+ }
1493
+ ]
1494
+ ]
1393
1495
  ]
1394
1496
  ]
1395
1497
  ]
@@ -1398,47 +1500,22 @@
1398
1500
  "let",
1399
1501
  [
1400
1502
  [
1401
- "inRange",
1503
+ "landed",
1402
1504
  [
1403
1505
  "and",
1404
- "@config.skate",
1405
1506
  [
1406
- "and",
1507
+ "!=",
1508
+ "@hit",
1509
+ null
1510
+ ],
1511
+ [
1512
+ ">",
1407
1513
  [
1408
- ">",
1409
- [
1410
- "array/len",
1411
- "@config.skateCurve"
1412
- ],
1413
- 1.0
1514
+ "*",
1515
+ "@vy1",
1516
+ "@gdir"
1414
1517
  ],
1415
- [
1416
- "and",
1417
- [
1418
- ">=",
1419
- "@cx",
1420
- [
1421
- "object/get",
1422
- [
1423
- "array/first",
1424
- "@config.skateCurve"
1425
- ],
1426
- "x"
1427
- ]
1428
- ],
1429
- [
1430
- "<",
1431
- "@cx",
1432
- [
1433
- "object/get",
1434
- [
1435
- "array/last",
1436
- "@config.skateCurve"
1437
- ],
1438
- "x"
1439
- ]
1440
- ]
1441
- ]
1518
+ 0.0
1442
1519
  ]
1443
1520
  ]
1444
1521
  ]
@@ -1447,34 +1524,50 @@
1447
1524
  "let",
1448
1525
  [
1449
1526
  [
1450
- "leftSamp",
1527
+ "ny2",
1451
1528
  [
1452
1529
  "if",
1453
- "@inRange",
1530
+ "@landed",
1454
1531
  [
1455
- "array/last",
1532
+ "if",
1533
+ [
1534
+ ">",
1535
+ "@gdir",
1536
+ 0.0
1537
+ ],
1456
1538
  [
1457
- "array/filter",
1458
- "@config.skateCurve",
1539
+ "-",
1459
1540
  [
1460
- "fn",
1461
- "s",
1462
- [
1463
- "<=",
1464
- [
1465
- "object/get",
1466
- "@s",
1467
- "x"
1468
- ],
1469
- "@cx"
1470
- ]
1541
+ "object/get",
1542
+ "@hit",
1543
+ "y"
1544
+ ],
1545
+ "@bh"
1546
+ ],
1547
+ [
1548
+ "+",
1549
+ [
1550
+ "object/get",
1551
+ "@hit",
1552
+ "y"
1553
+ ],
1554
+ [
1555
+ "object/get",
1556
+ "@hit",
1557
+ "height"
1471
1558
  ]
1472
1559
  ]
1473
1560
  ],
1474
- {
1475
- "x": 0.0,
1476
- "y": 0.0
1477
- }
1561
+ "@ny"
1562
+ ]
1563
+ ],
1564
+ [
1565
+ "vy2",
1566
+ [
1567
+ "if",
1568
+ "@landed",
1569
+ 0.0,
1570
+ "@vy1"
1478
1571
  ]
1479
1572
  ]
1480
1573
  ],
@@ -1482,34 +1575,15 @@
1482
1575
  "let",
1483
1576
  [
1484
1577
  [
1485
- "rightSamp",
1578
+ "cx",
1486
1579
  [
1487
- "if",
1488
- "@inRange",
1580
+ "+",
1581
+ "@nx",
1489
1582
  [
1490
- "array/first",
1491
- [
1492
- "array/filter",
1493
- "@config.skateCurve",
1494
- [
1495
- "fn",
1496
- "s",
1497
- [
1498
- ">",
1499
- [
1500
- "object/get",
1501
- "@s",
1502
- "x"
1503
- ],
1504
- "@cx"
1505
- ]
1506
- ]
1507
- ]
1508
- ],
1509
- {
1510
- "x": 1.0,
1511
- "y": 0.0
1512
- }
1583
+ "/",
1584
+ "@bw",
1585
+ 2.0
1586
+ ]
1513
1587
  ]
1514
1588
  ]
1515
1589
  ],
@@ -1517,40 +1591,48 @@
1517
1591
  "let",
1518
1592
  [
1519
1593
  [
1520
- "slope",
1594
+ "inRange",
1521
1595
  [
1522
- "if",
1523
- "@inRange",
1596
+ "and",
1597
+ "@config.skate",
1524
1598
  [
1525
- "/",
1599
+ "and",
1526
1600
  [
1527
- "-",
1601
+ ">",
1528
1602
  [
1529
- "object/get",
1530
- "@rightSamp",
1531
- "y"
1603
+ "array/len",
1604
+ "@config.skateCurve"
1532
1605
  ],
1533
- [
1534
- "object/get",
1535
- "@leftSamp",
1536
- "y"
1537
- ]
1606
+ 1.0
1538
1607
  ],
1539
1608
  [
1540
- "-",
1609
+ "and",
1541
1610
  [
1542
- "object/get",
1543
- "@rightSamp",
1544
- "x"
1611
+ ">=",
1612
+ "@cx",
1613
+ [
1614
+ "object/get",
1615
+ [
1616
+ "array/first",
1617
+ "@config.skateCurve"
1618
+ ],
1619
+ "x"
1620
+ ]
1545
1621
  ],
1546
1622
  [
1547
- "object/get",
1548
- "@leftSamp",
1549
- "x"
1623
+ "<",
1624
+ "@cx",
1625
+ [
1626
+ "object/get",
1627
+ [
1628
+ "array/last",
1629
+ "@config.skateCurve"
1630
+ ],
1631
+ "x"
1632
+ ]
1550
1633
  ]
1551
1634
  ]
1552
- ],
1553
- 0.0
1635
+ ]
1554
1636
  ]
1555
1637
  ]
1556
1638
  ],
@@ -1558,32 +1640,34 @@
1558
1640
  "let",
1559
1641
  [
1560
1642
  [
1561
- "curveY",
1643
+ "leftSamp",
1562
1644
  [
1563
1645
  "if",
1564
1646
  "@inRange",
1565
1647
  [
1566
- "+",
1567
- [
1568
- "object/get",
1569
- "@leftSamp",
1570
- "y"
1571
- ],
1648
+ "array/last",
1572
1649
  [
1573
- "*",
1574
- "@slope",
1650
+ "array/filter",
1651
+ "@config.skateCurve",
1575
1652
  [
1576
- "-",
1577
- "@cx",
1653
+ "fn",
1654
+ "s",
1578
1655
  [
1579
- "object/get",
1580
- "@leftSamp",
1581
- "x"
1656
+ "<=",
1657
+ [
1658
+ "object/get",
1659
+ "@s",
1660
+ "x"
1661
+ ],
1662
+ "@cx"
1582
1663
  ]
1583
1664
  ]
1584
1665
  ]
1585
1666
  ],
1586
- 0.0
1667
+ {
1668
+ "x": 0.0,
1669
+ "y": 0.0
1670
+ }
1587
1671
  ]
1588
1672
  ]
1589
1673
  ],
@@ -1591,15 +1675,34 @@
1591
1675
  "let",
1592
1676
  [
1593
1677
  [
1594
- "movingUp",
1678
+ "rightSamp",
1595
1679
  [
1596
- "<",
1680
+ "if",
1681
+ "@inRange",
1597
1682
  [
1598
- "*",
1599
- "@vy1",
1600
- "@gdir"
1683
+ "array/first",
1684
+ [
1685
+ "array/filter",
1686
+ "@config.skateCurve",
1687
+ [
1688
+ "fn",
1689
+ "s",
1690
+ [
1691
+ ">",
1692
+ [
1693
+ "object/get",
1694
+ "@s",
1695
+ "x"
1696
+ ],
1697
+ "@cx"
1698
+ ]
1699
+ ]
1700
+ ]
1601
1701
  ],
1602
- -0.01
1702
+ {
1703
+ "x": 1.0,
1704
+ "y": 0.0
1705
+ }
1603
1706
  ]
1604
1707
  ]
1605
1708
  ],
@@ -1607,41 +1710,40 @@
1607
1710
  "let",
1608
1711
  [
1609
1712
  [
1610
- "skateNow",
1713
+ "slope",
1611
1714
  [
1612
- "and",
1715
+ "if",
1613
1716
  "@inRange",
1614
1717
  [
1615
- "and",
1718
+ "/",
1616
1719
  [
1617
- "<=",
1720
+ "-",
1618
1721
  [
1619
- "math/abs",
1620
- [
1621
- "-",
1622
- "@ny2",
1623
- "@curveY"
1624
- ]
1722
+ "object/get",
1723
+ "@rightSamp",
1724
+ "y"
1625
1725
  ],
1626
- "@config.skateSnap"
1726
+ [
1727
+ "object/get",
1728
+ "@leftSamp",
1729
+ "y"
1730
+ ]
1627
1731
  ],
1628
1732
  [
1629
- "and",
1733
+ "-",
1630
1734
  [
1631
- "or",
1632
- "@landed",
1633
- "@entity.skating"
1735
+ "object/get",
1736
+ "@rightSamp",
1737
+ "x"
1634
1738
  ],
1635
1739
  [
1636
- "or",
1637
- "@entity.body.grounded",
1638
- [
1639
- "not",
1640
- "@movingUp"
1641
- ]
1740
+ "object/get",
1741
+ "@leftSamp",
1742
+ "x"
1642
1743
  ]
1643
1744
  ]
1644
- ]
1745
+ ],
1746
+ 0.0
1645
1747
  ]
1646
1748
  ]
1647
1749
  ],
@@ -1649,45 +1751,32 @@
1649
1751
  "let",
1650
1752
  [
1651
1753
  [
1652
- "vx2",
1754
+ "curveY",
1653
1755
  [
1654
1756
  "if",
1655
- "@skateNow",
1757
+ "@inRange",
1656
1758
  [
1657
- "math/clamp",
1759
+ "+",
1760
+ [
1761
+ "object/get",
1762
+ "@leftSamp",
1763
+ "y"
1764
+ ],
1658
1765
  [
1659
- "+",
1660
- "@entity.body.vx",
1766
+ "*",
1767
+ "@slope",
1661
1768
  [
1662
- "*",
1769
+ "-",
1770
+ "@cx",
1663
1771
  [
1664
- "/",
1665
- [
1666
- "*",
1667
- "@config.gravity",
1668
- "@slope"
1669
- ],
1670
- [
1671
- "+",
1672
- 1.0,
1673
- [
1674
- "*",
1675
- "@slope",
1676
- "@slope"
1677
- ]
1678
- ]
1679
- ],
1680
- 0.033
1772
+ "object/get",
1773
+ "@leftSamp",
1774
+ "x"
1775
+ ]
1681
1776
  ]
1682
- ],
1683
- [
1684
- "-",
1685
- 0.0,
1686
- "@config.maxFallSpeed"
1687
- ],
1688
- "@config.maxFallSpeed"
1777
+ ]
1689
1778
  ],
1690
- "@entity.body.vx"
1779
+ 0.0
1691
1780
  ]
1692
1781
  ]
1693
1782
  ],
@@ -1695,33 +1784,15 @@
1695
1784
  "let",
1696
1785
  [
1697
1786
  [
1698
- "fy",
1787
+ "movingUp",
1699
1788
  [
1700
- "if",
1701
- "@skateNow",
1702
- "@curveY",
1703
- "@ny2"
1704
- ]
1705
- ],
1706
- [
1707
- "fvy",
1708
- [
1709
- "if",
1710
- "@skateNow",
1789
+ "<",
1711
1790
  [
1712
1791
  "*",
1713
- "@slope",
1714
- "@vx2"
1792
+ "@vy1",
1793
+ "@gdir"
1715
1794
  ],
1716
- "@vy2"
1717
- ]
1718
- ],
1719
- [
1720
- "fgrounded",
1721
- [
1722
- "or",
1723
- "@landed",
1724
- "@skateNow"
1795
+ -0.01
1725
1796
  ]
1726
1797
  ]
1727
1798
  ],
@@ -1729,33 +1800,38 @@
1729
1800
  "let",
1730
1801
  [
1731
1802
  [
1732
- "hazardHit",
1803
+ "skateNow",
1733
1804
  [
1734
- "array/find",
1735
- "@config.platforms",
1805
+ "and",
1806
+ "@inRange",
1736
1807
  [
1737
- "fn",
1738
- "p",
1808
+ "and",
1739
1809
  [
1740
- "and",
1810
+ "<=",
1741
1811
  [
1742
- "==",
1812
+ "math/abs",
1743
1813
  [
1744
- "object/get",
1745
- "@p",
1746
- "type"
1747
- ],
1748
- "hazard"
1814
+ "-",
1815
+ "@ny2",
1816
+ "@curveY"
1817
+ ]
1818
+ ],
1819
+ "@config.skateSnap"
1820
+ ],
1821
+ [
1822
+ "and",
1823
+ [
1824
+ "or",
1825
+ "@landed",
1826
+ "@entity.skating"
1749
1827
  ],
1750
1828
  [
1751
- "geo/aabb-overlap",
1752
- "@rect",
1753
- {
1754
- "h": "@p.height",
1755
- "w": "@p.width",
1756
- "x": "@p.x",
1757
- "y": "@p.y"
1758
- }
1829
+ "or",
1830
+ "@entity.body.grounded",
1831
+ [
1832
+ "not",
1833
+ "@movingUp"
1834
+ ]
1759
1835
  ]
1760
1836
  ]
1761
1837
  ]
@@ -1766,36 +1842,45 @@
1766
1842
  "let",
1767
1843
  [
1768
1844
  [
1769
- "goalHit",
1845
+ "vx2",
1770
1846
  [
1771
- "array/find",
1772
- "@config.platforms",
1847
+ "if",
1848
+ "@skateNow",
1773
1849
  [
1774
- "fn",
1775
- "p",
1850
+ "math/clamp",
1776
1851
  [
1777
- "and",
1852
+ "+",
1853
+ "@entity.body.vx",
1778
1854
  [
1779
- "==",
1855
+ "*",
1780
1856
  [
1781
- "object/get",
1782
- "@p",
1783
- "type"
1857
+ "/",
1858
+ [
1859
+ "*",
1860
+ "@config.gravity",
1861
+ "@slope"
1862
+ ],
1863
+ [
1864
+ "+",
1865
+ 1.0,
1866
+ [
1867
+ "*",
1868
+ "@slope",
1869
+ "@slope"
1870
+ ]
1871
+ ]
1784
1872
  ],
1785
- "goal"
1786
- ],
1787
- [
1788
- "geo/aabb-overlap",
1789
- "@rect",
1790
- {
1791
- "h": "@p.height",
1792
- "w": "@p.width",
1793
- "x": "@p.x",
1794
- "y": "@p.y"
1795
- }
1873
+ 0.033
1796
1874
  ]
1797
- ]
1798
- ]
1875
+ ],
1876
+ [
1877
+ "-",
1878
+ 0.0,
1879
+ "@config.maxFallSpeed"
1880
+ ],
1881
+ "@config.maxFallSpeed"
1882
+ ],
1883
+ "@entity.body.vx"
1799
1884
  ]
1800
1885
  ]
1801
1886
  ],
@@ -1803,292 +1888,438 @@
1803
1888
  "let",
1804
1889
  [
1805
1890
  [
1806
- "fellNow",
1891
+ "vx3",
1807
1892
  [
1808
1893
  "if",
1809
1894
  [
1810
- ">",
1811
- "@gdir",
1812
- 0.0
1813
- ],
1814
- [
1815
- ">",
1816
- "@fy",
1817
- "@config.killY"
1895
+ "==",
1896
+ "@drift",
1897
+ null
1818
1898
  ],
1899
+ "@vx2",
1819
1900
  [
1820
- "<",
1821
- "@fy",
1822
- "@config.killY"
1901
+ "math/clamp",
1902
+ [
1903
+ "+",
1904
+ "@vx2",
1905
+ [
1906
+ "*",
1907
+ "@dax",
1908
+ 0.033
1909
+ ]
1910
+ ],
1911
+ [
1912
+ "-",
1913
+ 0.0,
1914
+ "@config.maxFallSpeed"
1915
+ ],
1916
+ "@config.maxFallSpeed"
1823
1917
  ]
1824
1918
  ]
1825
1919
  ]
1826
1920
  ],
1827
1921
  [
1828
- "do",
1829
- [
1830
- "set",
1831
- "@entity.body",
1832
- [
1833
- "object/merge",
1834
- "@entity.body",
1835
- {
1836
- "grounded": "@fgrounded",
1837
- "vx": [
1838
- "if",
1839
- [
1840
- "or",
1841
- [
1842
- "==",
1843
- "@nx",
1844
- "@config.xMin"
1845
- ],
1846
- [
1847
- "==",
1848
- "@nx",
1849
- "@config.xMax"
1850
- ]
1851
- ],
1852
- 0.0,
1853
- "@vx2"
1854
- ],
1855
- "vy": "@fvy",
1856
- "x": "@nx",
1857
- "y": "@fy"
1858
- }
1859
- ]
1860
- ],
1861
- [
1862
- "set",
1863
- "@entity.skating",
1864
- "@skateNow"
1865
- ],
1922
+ "let",
1866
1923
  [
1867
- "if",
1868
1924
  [
1869
- "and",
1870
- "@skateNow",
1925
+ "fy",
1871
1926
  [
1872
- "==",
1873
- "@entity.skating",
1874
- false
1927
+ "if",
1928
+ "@skateNow",
1929
+ "@curveY",
1930
+ "@ny2"
1875
1931
  ]
1876
1932
  ],
1877
1933
  [
1878
- "emit",
1879
- "BODY_SKATE_START",
1880
- {
1881
- "slope": "@slope",
1882
- "x": "@nx",
1883
- "y": "@fy"
1884
- }
1885
- ],
1886
- null
1887
- ],
1888
- [
1889
- "if",
1890
- [
1891
- "and",
1934
+ "fvy",
1892
1935
  [
1893
- "==",
1936
+ "if",
1894
1937
  "@skateNow",
1895
- false
1896
- ],
1897
- [
1898
- "==",
1899
- "@entity.skating",
1900
- true
1938
+ [
1939
+ "*",
1940
+ "@slope",
1941
+ "@vx2"
1942
+ ],
1943
+ "@vy2"
1901
1944
  ]
1902
1945
  ],
1903
1946
  [
1904
- "emit",
1905
- "BODY_SKATE_END",
1906
- {
1907
- "x": "@nx",
1908
- "y": "@fy"
1909
- }
1910
- ],
1911
- null
1912
- ],
1913
- [
1914
- "if",
1915
- [
1916
- "and",
1917
- "@landed",
1947
+ "fgrounded",
1918
1948
  [
1919
- "==",
1920
- "@entity.body.grounded",
1921
- false
1949
+ "or",
1950
+ "@landed",
1951
+ "@skateNow"
1922
1952
  ]
1923
- ],
1924
- [
1925
- "emit",
1926
- "BODY_LANDED",
1927
- {
1928
- "impact": [
1929
- "*",
1930
- "@vy1",
1931
- "@gdir"
1932
- ],
1933
- "x": "@nx",
1934
- "y": "@fy"
1935
- }
1936
- ],
1937
- null
1953
+ ]
1938
1954
  ],
1939
1955
  [
1940
- "if",
1956
+ "let",
1941
1957
  [
1942
- "!=",
1943
- "@hazardHit",
1944
- null
1945
- ],
1946
- [
1947
- "if",
1948
1958
  [
1949
- "!=",
1950
- "@entity.hazardId",
1959
+ "hazardHit",
1951
1960
  [
1952
- "object/get",
1953
- "@hazardHit",
1954
- "id",
1955
- ""
1956
- ]
1957
- ],
1958
- [
1959
- "do",
1960
- [
1961
- "set",
1962
- "@entity.hazardId",
1961
+ "array/find",
1962
+ "@config.platforms",
1963
1963
  [
1964
- "object/get",
1965
- "@hazardHit",
1966
- "id",
1967
- ""
1964
+ "fn",
1965
+ "p",
1966
+ [
1967
+ "and",
1968
+ [
1969
+ "==",
1970
+ [
1971
+ "object/get",
1972
+ "@p",
1973
+ "type"
1974
+ ],
1975
+ "hazard"
1976
+ ],
1977
+ [
1978
+ "geo/aabb-overlap",
1979
+ "@rect",
1980
+ {
1981
+ "h": "@p.height",
1982
+ "w": "@p.width",
1983
+ "x": "@p.x",
1984
+ "y": "@p.y"
1985
+ }
1986
+ ]
1987
+ ]
1968
1988
  ]
1969
- ],
1970
- [
1971
- "emit",
1972
- "BODY_HAZARD",
1973
- {
1974
- "id": [
1975
- "object/get",
1976
- "@hazardHit",
1977
- "id",
1978
- ""
1979
- ],
1980
- "x": "@nx",
1981
- "y": "@fy"
1982
- }
1983
1989
  ]
1984
- ],
1985
- null
1986
- ],
1987
- [
1988
- "set",
1989
- "@entity.hazardId",
1990
- ""
1991
- ]
1992
- ],
1993
- [
1994
- "if",
1995
- [
1996
- "!=",
1997
- "@goalHit",
1998
- null
1990
+ ]
1999
1991
  ],
2000
1992
  [
2001
- "if",
1993
+ "let",
2002
1994
  [
2003
- "!=",
2004
- "@entity.goalId",
2005
1995
  [
2006
- "object/get",
2007
- "@goalHit",
2008
- "id",
2009
- ""
1996
+ "goalHit",
1997
+ [
1998
+ "array/find",
1999
+ "@config.platforms",
2000
+ [
2001
+ "fn",
2002
+ "p",
2003
+ [
2004
+ "and",
2005
+ [
2006
+ "==",
2007
+ [
2008
+ "object/get",
2009
+ "@p",
2010
+ "type"
2011
+ ],
2012
+ "goal"
2013
+ ],
2014
+ [
2015
+ "geo/aabb-overlap",
2016
+ "@rect",
2017
+ {
2018
+ "h": "@p.height",
2019
+ "w": "@p.width",
2020
+ "x": "@p.x",
2021
+ "y": "@p.y"
2022
+ }
2023
+ ]
2024
+ ]
2025
+ ]
2026
+ ]
2010
2027
  ]
2011
2028
  ],
2012
2029
  [
2013
- "do",
2030
+ "let",
2014
2031
  [
2015
- "set",
2016
- "@entity.goalId",
2017
2032
  [
2018
- "object/get",
2019
- "@goalHit",
2020
- "id",
2021
- ""
2033
+ "fellNow",
2034
+ [
2035
+ "if",
2036
+ [
2037
+ ">",
2038
+ "@gdir",
2039
+ 0.0
2040
+ ],
2041
+ [
2042
+ ">",
2043
+ "@fy",
2044
+ "@config.killY"
2045
+ ],
2046
+ [
2047
+ "<",
2048
+ "@fy",
2049
+ "@config.killY"
2050
+ ]
2051
+ ]
2022
2052
  ]
2023
2053
  ],
2024
2054
  [
2025
- "emit",
2026
- "BODY_GOAL",
2027
- {
2028
- "id": [
2029
- "object/get",
2055
+ "do",
2056
+ [
2057
+ "set",
2058
+ "@entity.body",
2059
+ [
2060
+ "object/merge",
2061
+ "@entity.body",
2062
+ {
2063
+ "grounded": "@fgrounded",
2064
+ "vx": [
2065
+ "if",
2066
+ [
2067
+ "or",
2068
+ [
2069
+ "==",
2070
+ "@nx",
2071
+ "@config.xMin"
2072
+ ],
2073
+ [
2074
+ "==",
2075
+ "@nx",
2076
+ "@config.xMax"
2077
+ ]
2078
+ ],
2079
+ 0.0,
2080
+ "@vx3"
2081
+ ],
2082
+ "vy": "@fvy",
2083
+ "x": "@nx",
2084
+ "y": "@fy"
2085
+ }
2086
+ ]
2087
+ ],
2088
+ [
2089
+ "set",
2090
+ "@entity.skating",
2091
+ "@skateNow"
2092
+ ],
2093
+ [
2094
+ "if",
2095
+ [
2096
+ "and",
2097
+ "@skateNow",
2098
+ [
2099
+ "==",
2100
+ "@entity.skating",
2101
+ false
2102
+ ]
2103
+ ],
2104
+ [
2105
+ "emit",
2106
+ "BODY_SKATE_START",
2107
+ {
2108
+ "slope": "@slope",
2109
+ "x": "@nx",
2110
+ "y": "@fy"
2111
+ }
2112
+ ],
2113
+ null
2114
+ ],
2115
+ [
2116
+ "if",
2117
+ [
2118
+ "and",
2119
+ [
2120
+ "==",
2121
+ "@skateNow",
2122
+ false
2123
+ ],
2124
+ [
2125
+ "==",
2126
+ "@entity.skating",
2127
+ true
2128
+ ]
2129
+ ],
2130
+ [
2131
+ "emit",
2132
+ "BODY_SKATE_END",
2133
+ {
2134
+ "x": "@nx",
2135
+ "y": "@fy"
2136
+ }
2137
+ ],
2138
+ null
2139
+ ],
2140
+ [
2141
+ "if",
2142
+ [
2143
+ "and",
2144
+ "@landed",
2145
+ [
2146
+ "==",
2147
+ "@entity.body.grounded",
2148
+ false
2149
+ ]
2150
+ ],
2151
+ [
2152
+ "emit",
2153
+ "BODY_LANDED",
2154
+ {
2155
+ "impact": [
2156
+ "*",
2157
+ "@vy1",
2158
+ "@gdir"
2159
+ ],
2160
+ "x": "@nx",
2161
+ "y": "@fy"
2162
+ }
2163
+ ],
2164
+ null
2165
+ ],
2166
+ [
2167
+ "if",
2168
+ [
2169
+ "!=",
2170
+ "@hazardHit",
2171
+ null
2172
+ ],
2173
+ [
2174
+ "if",
2175
+ [
2176
+ "!=",
2177
+ "@entity.hazardId",
2178
+ [
2179
+ "object/get",
2180
+ "@hazardHit",
2181
+ "id",
2182
+ ""
2183
+ ]
2184
+ ],
2185
+ [
2186
+ "do",
2187
+ [
2188
+ "set",
2189
+ "@entity.hazardId",
2190
+ [
2191
+ "object/get",
2192
+ "@hazardHit",
2193
+ "id",
2194
+ ""
2195
+ ]
2196
+ ],
2197
+ [
2198
+ "emit",
2199
+ "BODY_HAZARD",
2200
+ {
2201
+ "id": [
2202
+ "object/get",
2203
+ "@hazardHit",
2204
+ "id",
2205
+ ""
2206
+ ],
2207
+ "x": "@nx",
2208
+ "y": "@fy"
2209
+ }
2210
+ ]
2211
+ ],
2212
+ null
2213
+ ],
2214
+ [
2215
+ "set",
2216
+ "@entity.hazardId",
2217
+ ""
2218
+ ]
2219
+ ],
2220
+ [
2221
+ "if",
2222
+ [
2223
+ "!=",
2030
2224
  "@goalHit",
2031
- "id",
2225
+ null
2226
+ ],
2227
+ [
2228
+ "if",
2229
+ [
2230
+ "!=",
2231
+ "@entity.goalId",
2232
+ [
2233
+ "object/get",
2234
+ "@goalHit",
2235
+ "id",
2236
+ ""
2237
+ ]
2238
+ ],
2239
+ [
2240
+ "do",
2241
+ [
2242
+ "set",
2243
+ "@entity.goalId",
2244
+ [
2245
+ "object/get",
2246
+ "@goalHit",
2247
+ "id",
2248
+ ""
2249
+ ]
2250
+ ],
2251
+ [
2252
+ "emit",
2253
+ "BODY_GOAL",
2254
+ {
2255
+ "id": [
2256
+ "object/get",
2257
+ "@goalHit",
2258
+ "id",
2259
+ ""
2260
+ ],
2261
+ "x": "@nx",
2262
+ "y": "@fy"
2263
+ }
2264
+ ]
2265
+ ],
2266
+ null
2267
+ ],
2268
+ [
2269
+ "set",
2270
+ "@entity.goalId",
2032
2271
  ""
2272
+ ]
2273
+ ],
2274
+ [
2275
+ "if",
2276
+ [
2277
+ "and",
2278
+ "@fellNow",
2279
+ [
2280
+ "==",
2281
+ "@entity.fell",
2282
+ false
2283
+ ]
2284
+ ],
2285
+ [
2286
+ "do",
2287
+ [
2288
+ "set",
2289
+ "@entity.fell",
2290
+ true
2291
+ ],
2292
+ [
2293
+ "emit",
2294
+ "BODY_FELL",
2295
+ {
2296
+ "x": "@nx",
2297
+ "y": "@fy"
2298
+ }
2299
+ ]
2033
2300
  ],
2034
- "x": "@nx",
2035
- "y": "@fy"
2036
- }
2301
+ null
2302
+ ],
2303
+ [
2304
+ "emit",
2305
+ "BODY_MOVED",
2306
+ {
2307
+ "grounded": "@fgrounded",
2308
+ "skating": "@skateNow",
2309
+ "speed": [
2310
+ "math/hypot",
2311
+ "@entity.body.vx",
2312
+ "@fvy"
2313
+ ],
2314
+ "vx": "@entity.body.vx",
2315
+ "vy": "@fvy",
2316
+ "x": "@nx",
2317
+ "y": "@fy"
2318
+ }
2319
+ ]
2037
2320
  ]
2038
- ],
2039
- null
2040
- ],
2041
- [
2042
- "set",
2043
- "@entity.goalId",
2044
- ""
2045
- ]
2046
- ],
2047
- [
2048
- "if",
2049
- [
2050
- "and",
2051
- "@fellNow",
2052
- [
2053
- "==",
2054
- "@entity.fell",
2055
- false
2056
2321
  ]
2057
- ],
2058
- [
2059
- "do",
2060
- [
2061
- "set",
2062
- "@entity.fell",
2063
- true
2064
- ],
2065
- [
2066
- "emit",
2067
- "BODY_FELL",
2068
- {
2069
- "x": "@nx",
2070
- "y": "@fy"
2071
- }
2072
- ]
2073
- ],
2074
- null
2075
- ],
2076
- [
2077
- "emit",
2078
- "BODY_MOVED",
2079
- {
2080
- "grounded": "@fgrounded",
2081
- "skating": "@skateNow",
2082
- "speed": [
2083
- "math/hypot",
2084
- "@entity.body.vx",
2085
- "@fvy"
2086
- ],
2087
- "vx": "@entity.body.vx",
2088
- "vy": "@fvy",
2089
- "x": "@nx",
2090
- "y": "@fy"
2091
- }
2322
+ ]
2092
2323
  ]
2093
2324
  ]
2094
2325
  ]
@@ -2133,4 +2364,4 @@
2133
2364
  ],
2134
2365
  "schemaVersion": 1,
2135
2366
  "version": "1.0.0"
2136
- }
2367
+ }