@almadar/std 16.153.0 → 16.155.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 (93) hide show
  1. package/behaviors/lolo/ui/game/molecules/std-crew-board-2d.lolo +4 -4
  2. package/behaviors/lolo/ui/game/molecules/std-dungeon-board-2d.lolo +6 -6
  3. package/behaviors/lolo/ui/game/molecules/std-tactics-board-2d.lolo +74 -28
  4. package/behaviors/lolo/ui/game/molecules/std-worldmap-board-2d.lolo +2 -2
  5. package/behaviors/lolo/ui/game/molecules/ui-canvas.lolo +5 -0
  6. package/behaviors/lolo/ui/game/organisms/ui-arena-board.lolo +2 -2
  7. package/behaviors/lolo/ui/game/organisms/ui-battle-board.lolo +159 -8
  8. package/behaviors/lolo/ui/game/organisms/ui-builder-board.lolo +5 -20
  9. package/behaviors/lolo/ui/game/organisms/ui-card-battler-board.lolo +2 -0
  10. package/behaviors/lolo/ui/game/organisms/ui-castle-board.lolo +3 -3
  11. package/behaviors/lolo/ui/game/organisms/ui-city-builder-board.lolo +9 -7
  12. package/behaviors/lolo/ui/game/organisms/ui-grid-tactics-demo-board.lolo +2 -2
  13. package/behaviors/lolo/ui/game/organisms/ui-hex-strategy-board.lolo +158 -10
  14. package/behaviors/lolo/ui/game/organisms/ui-holiday-runner-board.lolo +1 -1
  15. package/behaviors/lolo/ui/game/organisms/ui-minigolf-board.lolo +22 -22
  16. package/behaviors/lolo/ui/game/organisms/ui-pinball-board.lolo +7 -7
  17. package/behaviors/lolo/ui/game/organisms/ui-pirate-board.lolo +14 -14
  18. package/behaviors/lolo/ui/game/organisms/ui-platformer-board.lolo +4 -0
  19. package/behaviors/lolo/ui/game/organisms/ui-sports-board.lolo +10 -7
  20. package/behaviors/lolo/ui/game/organisms/ui-tactics-demo-2d.lolo +135 -9
  21. package/behaviors/lolo/ui/game/organisms/ui-tanks-board.lolo +152 -8
  22. package/behaviors/lolo/ui/game/organisms/ui-topdown-rts-board.lolo +293 -17
  23. package/behaviors/lolo/ui/game/organisms/ui-tower-defense-board.lolo +8 -8
  24. package/behaviors/lolo/ui/game/organisms/ui-uncontrolled-battle-board.lolo +5 -5
  25. package/behaviors/lolo/ui/game/organisms/ui-world-map-board.lolo +3 -3
  26. package/behaviors/registry/factory-signatures.json +1893 -2294
  27. package/behaviors/registry/ui/game/molecules/std-crew-board-2d.orb +10 -12
  28. package/behaviors/registry/ui/game/molecules/std-dungeon-board-2d.orb +15 -18
  29. package/behaviors/registry/ui/game/molecules/std-tactics-board-2d.orb +1726 -395
  30. package/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +7 -60
  31. package/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
  32. package/behaviors/registry/ui/game/organisms/ui-arena-board.orb +5 -6
  33. package/behaviors/registry/ui/game/organisms/ui-battle-board.orb +103 -100
  34. package/behaviors/registry/ui/game/organisms/ui-builder-board.orb +21 -226
  35. package/behaviors/registry/ui/game/organisms/ui-card-battler-board.orb +42 -0
  36. package/behaviors/registry/ui/game/organisms/ui-castle-board.orb +30 -9
  37. package/behaviors/registry/ui/game/organisms/ui-city-builder-board.orb +49 -0
  38. package/behaviors/registry/ui/game/organisms/ui-grid-tactics-demo-board.orb +5 -6
  39. package/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +95 -1187
  40. package/behaviors/registry/ui/game/organisms/ui-holiday-runner-board.orb +2 -3
  41. package/behaviors/registry/ui/game/organisms/ui-minigolf-board.orb +55 -11
  42. package/behaviors/registry/ui/game/organisms/ui-pinball-board.orb +8 -8
  43. package/behaviors/registry/ui/game/organisms/ui-pirate-board.orb +14 -0
  44. package/behaviors/registry/ui/game/organisms/ui-platformer-board.orb +72 -0
  45. package/behaviors/registry/ui/game/organisms/ui-sports-board.orb +60 -0
  46. package/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +222 -332
  47. package/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +127 -95
  48. package/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1501 -264
  49. package/behaviors/registry/ui/game/organisms/ui-tower-defense-board.orb +8 -0
  50. package/behaviors/registry/ui/game/organisms/ui-uncontrolled-battle-board.orb +5 -0
  51. package/behaviors/registry/ui/game/organisms/ui-world-map-board.orb +8 -12
  52. package/dist/behaviors/behaviors-embeddings.json +244 -236
  53. package/dist/behaviors/behaviors-registry.json +193 -812
  54. package/dist/behaviors/exports-reader.js +1099 -2090
  55. package/dist/behaviors/functions/index.d.ts +33 -26
  56. package/dist/behaviors/functions/index.js +1099 -2091
  57. package/dist/behaviors/index.d.ts +1 -1
  58. package/dist/behaviors/index.js +1100 -2091
  59. package/dist/behaviors/knob-embeddings.json +1 -1
  60. package/dist/behaviors/query.js +1099 -2090
  61. package/dist/behaviors/registry/factory-signatures.json +1893 -2294
  62. package/dist/behaviors/registry/ui/game/molecules/std-crew-board-2d.orb +10 -12
  63. package/dist/behaviors/registry/ui/game/molecules/std-dungeon-board-2d.orb +15 -18
  64. package/dist/behaviors/registry/ui/game/molecules/std-tactics-board-2d.orb +1726 -395
  65. package/dist/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +7 -60
  66. package/dist/behaviors/registry/ui/game/molecules/ui-canvas.orb +7 -0
  67. package/dist/behaviors/registry/ui/game/organisms/ui-arena-board.orb +5 -6
  68. package/dist/behaviors/registry/ui/game/organisms/ui-battle-board.orb +103 -100
  69. package/dist/behaviors/registry/ui/game/organisms/ui-builder-board.orb +21 -226
  70. package/dist/behaviors/registry/ui/game/organisms/ui-card-battler-board.orb +42 -0
  71. package/dist/behaviors/registry/ui/game/organisms/ui-castle-board.orb +30 -9
  72. package/dist/behaviors/registry/ui/game/organisms/ui-city-builder-board.orb +49 -0
  73. package/dist/behaviors/registry/ui/game/organisms/ui-grid-tactics-demo-board.orb +5 -6
  74. package/dist/behaviors/registry/ui/game/organisms/ui-hex-strategy-board.orb +95 -1187
  75. package/dist/behaviors/registry/ui/game/organisms/ui-holiday-runner-board.orb +2 -3
  76. package/dist/behaviors/registry/ui/game/organisms/ui-minigolf-board.orb +55 -11
  77. package/dist/behaviors/registry/ui/game/organisms/ui-pinball-board.orb +8 -8
  78. package/dist/behaviors/registry/ui/game/organisms/ui-pirate-board.orb +14 -0
  79. package/dist/behaviors/registry/ui/game/organisms/ui-platformer-board.orb +72 -0
  80. package/dist/behaviors/registry/ui/game/organisms/ui-sports-board.orb +60 -0
  81. package/dist/behaviors/registry/ui/game/organisms/ui-tactics-demo-2d.orb +222 -332
  82. package/dist/behaviors/registry/ui/game/organisms/ui-tanks-board.orb +127 -95
  83. package/dist/behaviors/registry/ui/game/organisms/ui-topdown-rts-board.orb +1501 -264
  84. package/dist/behaviors/registry/ui/game/organisms/ui-tower-defense-board.orb +8 -0
  85. package/dist/behaviors/registry/ui/game/organisms/ui-uncontrolled-battle-board.orb +5 -0
  86. package/dist/behaviors/registry/ui/game/organisms/ui-world-map-board.orb +8 -12
  87. package/dist/behaviors-embeddings.json +244 -236
  88. package/dist/behaviors-registry.json +193 -812
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.js +1100 -2091
  91. package/dist/knob-embeddings.json +1 -1
  92. package/dist/registry/factory-signatures.json +1893 -2294
  93. package/package.json +2 -2
@@ -146,6 +146,14 @@
146
146
  "kind": "trait",
147
147
  "owner": "workspace",
148
148
  "renames": []
149
+ },
150
+ "trt_01KYR8XVRJYJJPAW6NZ6NZ7NQ2": {
151
+ "bakedName": "AnimClock",
152
+ "curName": "AnimClock",
153
+ "id": "trt_01KYR8XVRJYJJPAW6NZ6NZ7NQ2",
154
+ "kind": "trait",
155
+ "owner": "workspace",
156
+ "renames": []
149
157
  }
150
158
  },
151
159
  "schemaVersion": 1
@@ -651,6 +659,22 @@
651
659
  "name": "attackTargets",
652
660
  "type": "array"
653
661
  },
662
+ {
663
+ "default": [],
664
+ "items": {
665
+ "type": "string"
666
+ },
667
+ "name": "movedIds",
668
+ "type": "array"
669
+ },
670
+ {
671
+ "default": [],
672
+ "items": {
673
+ "type": "string"
674
+ },
675
+ "name": "actedIds",
676
+ "type": "array"
677
+ },
654
678
  {
655
679
  "default": "observation",
656
680
  "name": "uiPhase",
@@ -670,6 +694,41 @@
670
694
  "default": 0.0,
671
695
  "name": "scoreBaseline",
672
696
  "type": "number"
697
+ },
698
+ {
699
+ "default": 0.0,
700
+ "name": "animCounter",
701
+ "type": "number"
702
+ },
703
+ {
704
+ "default": "0",
705
+ "name": "frameName",
706
+ "type": "string"
707
+ },
708
+ {
709
+ "default": "",
710
+ "name": "animUnitId",
711
+ "type": "string"
712
+ },
713
+ {
714
+ "default": "idle",
715
+ "name": "animState",
716
+ "type": "string"
717
+ },
718
+ {
719
+ "default": 0.0,
720
+ "name": "animTicksLeft",
721
+ "type": "number"
722
+ },
723
+ {
724
+ "default": "",
725
+ "name": "animAttackerId",
726
+ "type": "string"
727
+ },
728
+ {
729
+ "default": 0.0,
730
+ "name": "animAtkTicksLeft",
731
+ "type": "number"
673
732
  }
674
733
  ],
675
734
  "id": "ent_01KXG04VM7YPKBFY12VFNBQ3RS",
@@ -704,6 +763,10 @@
704
763
  {
705
764
  "ref": "PlayerIntent",
706
765
  "refId": "trt_01KXG04VM7WQJEH8FBPFFPNHJV"
766
+ },
767
+ {
768
+ "ref": "AnimClock",
769
+ "refId": "trt_01KYR8XVRJYJJPAW6NZ6NZ7NQ2"
707
770
  }
708
771
  ]
709
772
  }
@@ -894,8 +957,7 @@
894
957
  "linkedEntity": "GameState",
895
958
  "linkedEntityId": "ent_01KXG04VM7YPKBFY12VFNBQ3RS",
896
959
  "name": "TacticsAuthority",
897
- "ref": "Tactics.traits.GridTactics",
898
- "refId": "trt_01KXG04THREP6VTN7SEQ5QND02"
960
+ "ref": "Tactics.traits.GridTactics"
899
961
  },
900
962
  {
901
963
  "config": {
@@ -908,8 +970,7 @@
908
970
  "linkedEntity": "GameState",
909
971
  "linkedEntityId": "ent_01KXG04VM7YPKBFY12VFNBQ3RS",
910
972
  "name": "FxDecay",
911
- "ref": "Particles.traits.FxParticles",
912
- "refId": "trt_01KXG04TFZQZVT3F7J3DTM2PXF"
973
+ "ref": "Particles.traits.FxParticles"
913
974
  },
914
975
  {
915
976
  "config": {
@@ -922,8 +983,7 @@
922
983
  "linkedEntity": "GameState",
923
984
  "linkedEntityId": "ent_01KXG04VM7YPKBFY12VFNBQ3RS",
924
985
  "name": "RoundLogic",
925
- "ref": "Round.traits.RoundFlow",
926
- "refId": "trt_01KXG04TNCJQBQBHH17BMMRPXT"
986
+ "ref": "Round.traits.RoundFlow"
927
987
  },
928
988
  {
929
989
  "config": {
@@ -948,8 +1008,20 @@
948
1008
  "linkedEntity": "GameState",
949
1009
  "linkedEntityId": "ent_01KXG04VM7YPKBFY12VFNBQ3RS",
950
1010
  "name": "ScoreKeeper",
951
- "ref": "Score.traits.ScoreKeeper",
952
- "refId": "trt_01KXG04TNS3RZ75H9PBTJ6F5HQ"
1011
+ "ref": "Score.traits.ScoreKeeper"
1012
+ },
1013
+ {
1014
+ "config": {
1015
+ "frames": {
1016
+ "default": [],
1017
+ "type": "unknown"
1018
+ }
1019
+ },
1020
+ "id": "trt_01KYR8XVRJYJJPAW6NZ6NZ7NQ2",
1021
+ "linkedEntity": "GameState",
1022
+ "linkedEntityId": "ent_01KXG04VM7YPKBFY12VFNBQ3RS",
1023
+ "name": "AnimClock",
1024
+ "ref": "AnimTick.traits.AnimTick"
953
1025
  },
954
1026
  {
955
1027
  "category": "interaction",
@@ -1240,6 +1312,13 @@
1240
1312
  "tier": "presentation",
1241
1313
  "type": "AssetManifest"
1242
1314
  },
1315
+ "attackRange": {
1316
+ "default": 1.0,
1317
+ "description": "Max manhattan distance a selected unit may strike an enemy.",
1318
+ "label": "Attack Range",
1319
+ "tier": "domain",
1320
+ "type": "number"
1321
+ },
1243
1322
  "backgroundAsset": {
1244
1323
  "default": {},
1245
1324
  "description": "Game-shell background panel sprite (theme chrome).",
@@ -1416,6 +1495,11 @@
1416
1495
  "description": "Board-specific HUD stats appended after Result/Phase/Turn/Score (e.g. production, resources). Values may bind @entity fields owned by composed mechanic atoms.",
1417
1496
  "items": {
1418
1497
  "properties": {
1498
+ "format": {
1499
+ "name": "format",
1500
+ "required": false,
1501
+ "type": "string"
1502
+ },
1419
1503
  "label": {
1420
1504
  "name": "label",
1421
1505
  "required": false,
@@ -2000,32 +2084,7 @@
2000
2084
  ],
2001
2085
  2.0
2002
2086
  ]
2003
- },
2004
- "zoom": [
2005
- "math/min",
2006
- 1.0,
2007
- [
2008
- "/",
2009
- 5.0,
2010
- [
2011
- "+",
2012
- 1.0,
2013
- [
2014
- "math/max",
2015
- [
2016
- "array/max",
2017
- "@entity.tiles",
2018
- "x"
2019
- ],
2020
- [
2021
- "array/max",
2022
- "@entity.tiles",
2023
- "y"
2024
- ]
2025
- ]
2026
- ]
2027
- ]
2028
- ]
2087
+ }
2029
2088
  },
2030
2089
  "children": [
2031
2090
  {
@@ -2099,7 +2158,7 @@
2099
2158
  ]
2100
2159
  ]
2101
2160
  ],
2102
- "height": 0.5,
2161
+ "height": 1.0,
2103
2162
  "position": {
2104
2163
  "x": [
2105
2164
  "object/get",
@@ -2113,7 +2172,7 @@
2113
2172
  ]
2114
2173
  },
2115
2174
  "type": "draw-sprite",
2116
- "width": 0.5
2175
+ "width": 1.0
2117
2176
  }
2118
2177
  ]
2119
2178
  ],
@@ -2143,11 +2202,13 @@
2143
2202
  "fn",
2144
2203
  "f",
2145
2204
  {
2205
+ "anchor": "ground",
2146
2206
  "asset": [
2147
2207
  "object/get",
2148
2208
  "@f",
2149
2209
  "assetUrl"
2150
2210
  ],
2211
+ "height": 1.0,
2151
2212
  "position": {
2152
2213
  "x": [
2153
2214
  "object/get",
@@ -2160,7 +2221,8 @@
2160
2221
  "y"
2161
2222
  ]
2162
2223
  },
2163
- "type": "draw-sprite"
2224
+ "type": "draw-sprite",
2225
+ "width": 1.0
2164
2226
  }
2165
2227
  ]
2166
2228
  ],
@@ -2285,52 +2347,229 @@
2285
2347
  [
2286
2348
  "fn",
2287
2349
  "u",
2288
- {
2289
- "anchor": "ground",
2290
- "asset": [
2291
- "if",
2350
+ [
2351
+ "let",
2352
+ [
2292
2353
  [
2293
- "object/get",
2354
+ "unitAsset",
2294
2355
  [
2295
- "object/get",
2296
- "@u",
2297
- "modelUrl"
2298
- ],
2299
- "url"
2300
- ],
2301
- [
2302
- "object/get",
2303
- "@u",
2304
- "modelUrl"
2356
+ "if",
2357
+ [
2358
+ "object/get",
2359
+ [
2360
+ "object/get",
2361
+ "@u",
2362
+ "modelUrl"
2363
+ ],
2364
+ "url"
2365
+ ],
2366
+ [
2367
+ "object/get",
2368
+ "@u",
2369
+ "modelUrl"
2370
+ ],
2371
+ [
2372
+ "object/get",
2373
+ [
2374
+ "object/get",
2375
+ "@config.assetManifest",
2376
+ "units"
2377
+ ],
2378
+ [
2379
+ "object/get",
2380
+ "@u",
2381
+ "unitType"
2382
+ ]
2383
+ ]
2384
+ ]
2305
2385
  ],
2306
2386
  [
2307
- "object/get",
2387
+ "unitUrl",
2308
2388
  [
2309
2389
  "object/get",
2310
- "@config.assetManifest",
2311
- "units"
2312
- ],
2390
+ "@unitAsset",
2391
+ "url"
2392
+ ]
2393
+ ],
2394
+ [
2395
+ "unitAnim",
2313
2396
  [
2314
- "object/get",
2315
- "@u",
2316
- "unitType"
2397
+ "if",
2398
+ [
2399
+ "<=",
2400
+ [
2401
+ "object/get",
2402
+ "@u",
2403
+ "health"
2404
+ ],
2405
+ 0.0
2406
+ ],
2407
+ "death",
2408
+ [
2409
+ "if",
2410
+ [
2411
+ "and",
2412
+ [
2413
+ "==",
2414
+ [
2415
+ "object/get",
2416
+ "@u",
2417
+ "id"
2418
+ ],
2419
+ "@entity.animAttackerId"
2420
+ ],
2421
+ [
2422
+ ">",
2423
+ "@entity.animAtkTicksLeft",
2424
+ 0.0
2425
+ ]
2426
+ ],
2427
+ "attack",
2428
+ [
2429
+ "if",
2430
+ [
2431
+ "==",
2432
+ [
2433
+ "object/get",
2434
+ "@u",
2435
+ "id"
2436
+ ],
2437
+ "@entity.animUnitId"
2438
+ ],
2439
+ "@entity.animState",
2440
+ "idle"
2441
+ ]
2442
+ ]
2317
2443
  ]
2318
2444
  ]
2319
2445
  ],
2320
- "height": 0.5,
2321
- "id": [
2322
- "object/get",
2323
- "@u",
2324
- "id"
2325
- ],
2326
- "position": [
2327
- "object/get",
2328
- "@u",
2329
- "position"
2330
- ],
2331
- "type": "draw-sprite",
2332
- "width": 0.5
2333
- }
2446
+ {
2447
+ "anchor": "ground",
2448
+ "asset": [
2449
+ "if",
2450
+ [
2451
+ "and",
2452
+ "@unitUrl",
2453
+ [
2454
+ "str/includes",
2455
+ "@unitUrl",
2456
+ ".svg"
2457
+ ]
2458
+ ],
2459
+ [
2460
+ "object/merge",
2461
+ "@unitAsset",
2462
+ {
2463
+ "url": [
2464
+ "str/concat",
2465
+ [
2466
+ "array/nth",
2467
+ [
2468
+ "str/split",
2469
+ "@unitUrl",
2470
+ ".svg"
2471
+ ],
2472
+ 0.0
2473
+ ],
2474
+ [
2475
+ "str/concat",
2476
+ ".",
2477
+ [
2478
+ "str/concat",
2479
+ "@unitAnim",
2480
+ [
2481
+ "str/concat",
2482
+ "-",
2483
+ [
2484
+ "str/concat",
2485
+ [
2486
+ "if",
2487
+ [
2488
+ "==",
2489
+ "@unitAnim",
2490
+ "walk"
2491
+ ],
2492
+ [
2493
+ "%",
2494
+ "@entity.animCounter",
2495
+ 2.0
2496
+ ],
2497
+ [
2498
+ "if",
2499
+ [
2500
+ "==",
2501
+ "@unitAnim",
2502
+ "idle"
2503
+ ],
2504
+ [
2505
+ "%",
2506
+ [
2507
+ "math/floor",
2508
+ [
2509
+ "/",
2510
+ "@entity.animCounter",
2511
+ 3.0
2512
+ ]
2513
+ ],
2514
+ 4.0
2515
+ ],
2516
+ 0.0
2517
+ ]
2518
+ ]
2519
+ ],
2520
+ ".svg"
2521
+ ]
2522
+ ]
2523
+ ]
2524
+ ]
2525
+ }
2526
+ ],
2527
+ "@unitAsset"
2528
+ ],
2529
+ "height": 0.5,
2530
+ "id": [
2531
+ "object/get",
2532
+ "@u",
2533
+ "id"
2534
+ ],
2535
+ "opacity": [
2536
+ "if",
2537
+ [
2538
+ ">",
2539
+ [
2540
+ "array/len",
2541
+ [
2542
+ "array/filter",
2543
+ "@entity.actedIds",
2544
+ [
2545
+ "fn",
2546
+ "aid",
2547
+ [
2548
+ "==",
2549
+ "@aid",
2550
+ [
2551
+ "object/get",
2552
+ "@u",
2553
+ "id"
2554
+ ]
2555
+ ]
2556
+ ]
2557
+ ]
2558
+ ],
2559
+ 0.0
2560
+ ],
2561
+ 0.45,
2562
+ 1.0
2563
+ ],
2564
+ "position": [
2565
+ "object/get",
2566
+ "@u",
2567
+ "position"
2568
+ ],
2569
+ "type": "draw-sprite",
2570
+ "width": 0.5
2571
+ }
2572
+ ]
2334
2573
  ]
2335
2574
  ],
2336
2575
  [
@@ -2352,7 +2591,23 @@
2352
2591
  {
2353
2592
  "items": [
2354
2593
  "array/map",
2355
- "@entity.units",
2594
+ [
2595
+ "array/filter",
2596
+ "@entity.units",
2597
+ [
2598
+ "fn",
2599
+ "u",
2600
+ [
2601
+ ">",
2602
+ [
2603
+ "object/get",
2604
+ "@u",
2605
+ "health"
2606
+ ],
2607
+ 0.0
2608
+ ]
2609
+ ]
2610
+ ],
2356
2611
  [
2357
2612
  "fn",
2358
2613
  "u",
@@ -2378,7 +2633,23 @@
2378
2633
  {
2379
2634
  "items": [
2380
2635
  "array/map",
2381
- "@entity.units",
2636
+ [
2637
+ "array/filter",
2638
+ "@entity.units",
2639
+ [
2640
+ "fn",
2641
+ "u",
2642
+ [
2643
+ ">",
2644
+ [
2645
+ "object/get",
2646
+ "@u",
2647
+ "health"
2648
+ ],
2649
+ 0.0
2650
+ ]
2651
+ ]
2652
+ ],
2382
2653
  [
2383
2654
  "fn",
2384
2655
  "u",
@@ -2420,7 +2691,23 @@
2420
2691
  {
2421
2692
  "items": [
2422
2693
  "array/map",
2423
- "@entity.units",
2694
+ [
2695
+ "array/filter",
2696
+ "@entity.units",
2697
+ [
2698
+ "fn",
2699
+ "u",
2700
+ [
2701
+ ">",
2702
+ [
2703
+ "object/get",
2704
+ "@u",
2705
+ "health"
2706
+ ],
2707
+ 0.0
2708
+ ]
2709
+ ]
2710
+ ],
2424
2711
  [
2425
2712
  "fn",
2426
2713
  "u",
@@ -2461,7 +2748,7 @@
2461
2748
  "y": [
2462
2749
  "object/get",
2463
2750
  "@f",
2464
- "y"
2751
+ "z"
2465
2752
  ]
2466
2753
  },
2467
2754
  "text": [
@@ -2474,62 +2761,306 @@
2474
2761
  ]
2475
2762
  ],
2476
2763
  "type": "draw-text-layer"
2477
- }
2478
- ],
2479
- "projection": "@config.projection",
2480
- "showMinimap": "@config.showMinimap",
2481
- "tileClickEvent": "TILE_CLICK",
2482
- "type": "canvas",
2483
- "unitClickEvent": "UNIT_CLICK"
2484
- }
2485
- ],
2486
- "hud": {
2487
- "stats": [
2488
- "array/concat",
2489
- [
2490
- {
2491
- "label": "Result",
2492
- "value": "@entity.result"
2493
- },
2494
- {
2495
- "label": "Phase",
2496
- "value": "@entity.uiPhase"
2497
- },
2498
- {
2499
- "label": "Turn",
2500
- "value": "@entity.turn"
2501
2764
  },
2502
2765
  {
2503
- "label": "Score",
2504
- "value": "@entity.score"
2505
- }
2506
- ],
2507
- "@config.extraStats"
2508
- ],
2509
- "type": "game-hud"
2510
- },
2511
- "hudBackgroundAsset": "@config.hudBackgroundAsset",
2512
- "type": "game-shell"
2513
- }
2514
- ]
2515
- ],
2516
- "event": "INIT",
2517
- "eventId": "evt_01KXG04VM7S7DZ7AE96DX5CW5S",
2518
- "from": "playing",
2519
- "to": "playing"
2520
- },
2521
- {
2522
- "effects": [
2523
- [
2524
- "emit",
2525
- "ATTACK",
2526
- {
2527
- "targetId": "@payload.unitId"
2528
- }
2529
- ],
2530
- [
2531
- "set",
2532
- "@entity.selectedUnitId",
2766
+ "items": [
2767
+ "array/filter",
2768
+ [
2769
+ "array/map",
2770
+ "@entity.fx",
2771
+ [
2772
+ "fn",
2773
+ "f",
2774
+ {
2775
+ "anchor": "center",
2776
+ "asset": [
2777
+ "object/get",
2778
+ [
2779
+ "object/get",
2780
+ "@config.assetManifest",
2781
+ "effects"
2782
+ ],
2783
+ [
2784
+ "object/get",
2785
+ "@f",
2786
+ "type"
2787
+ ]
2788
+ ],
2789
+ "height": 0.6,
2790
+ "position": {
2791
+ "x": [
2792
+ "object/get",
2793
+ "@f",
2794
+ "x"
2795
+ ],
2796
+ "y": [
2797
+ "object/get",
2798
+ "@f",
2799
+ "z"
2800
+ ]
2801
+ },
2802
+ "type": "draw-sprite",
2803
+ "width": 0.6
2804
+ }
2805
+ ]
2806
+ ],
2807
+ [
2808
+ "fn",
2809
+ "s",
2810
+ [
2811
+ "object/get",
2812
+ [
2813
+ "object/get",
2814
+ "@s",
2815
+ "asset"
2816
+ ],
2817
+ "url"
2818
+ ]
2819
+ ]
2820
+ ],
2821
+ "type": "draw-sprite-layer"
2822
+ },
2823
+ {
2824
+ "items": [
2825
+ "array/map",
2826
+ [
2827
+ "array/filter",
2828
+ [
2829
+ "array/flatten",
2830
+ [
2831
+ "array/map",
2832
+ "@entity.units",
2833
+ [
2834
+ "fn",
2835
+ "u",
2836
+ [
2837
+ "array/flatten",
2838
+ [
2839
+ "array/map",
2840
+ [
2841
+ [
2842
+ "idle",
2843
+ 4.0
2844
+ ],
2845
+ [
2846
+ "walk",
2847
+ 2.0
2848
+ ],
2849
+ [
2850
+ "attack",
2851
+ 1.0
2852
+ ],
2853
+ [
2854
+ "hit",
2855
+ 1.0
2856
+ ],
2857
+ [
2858
+ "death",
2859
+ 1.0
2860
+ ]
2861
+ ],
2862
+ [
2863
+ "fn",
2864
+ "st",
2865
+ [
2866
+ "array/map",
2867
+ [
2868
+ "array/range",
2869
+ 0.0,
2870
+ [
2871
+ "array/nth",
2872
+ "@st",
2873
+ 1.0
2874
+ ]
2875
+ ],
2876
+ [
2877
+ "fn",
2878
+ "i",
2879
+ [
2880
+ "if",
2881
+ [
2882
+ "and",
2883
+ [
2884
+ "object/get",
2885
+ [
2886
+ "object/get",
2887
+ "@u",
2888
+ "modelUrl"
2889
+ ],
2890
+ "url"
2891
+ ],
2892
+ [
2893
+ "str/includes",
2894
+ [
2895
+ "object/get",
2896
+ [
2897
+ "object/get",
2898
+ "@u",
2899
+ "modelUrl"
2900
+ ],
2901
+ "url"
2902
+ ],
2903
+ ".svg"
2904
+ ]
2905
+ ],
2906
+ [
2907
+ "str/concat",
2908
+ [
2909
+ "array/nth",
2910
+ [
2911
+ "str/split",
2912
+ [
2913
+ "object/get",
2914
+ [
2915
+ "object/get",
2916
+ "@u",
2917
+ "modelUrl"
2918
+ ],
2919
+ "url"
2920
+ ],
2921
+ ".svg"
2922
+ ],
2923
+ 0.0
2924
+ ],
2925
+ [
2926
+ "str/concat",
2927
+ ".",
2928
+ [
2929
+ "str/concat",
2930
+ [
2931
+ "array/nth",
2932
+ "@st",
2933
+ 0.0
2934
+ ],
2935
+ [
2936
+ "str/concat",
2937
+ "-",
2938
+ [
2939
+ "str/concat",
2940
+ "@i",
2941
+ ".svg"
2942
+ ]
2943
+ ]
2944
+ ]
2945
+ ]
2946
+ ],
2947
+ ""
2948
+ ]
2949
+ ]
2950
+ ]
2951
+ ]
2952
+ ]
2953
+ ]
2954
+ ]
2955
+ ]
2956
+ ],
2957
+ [
2958
+ "fn",
2959
+ "w",
2960
+ [
2961
+ "!=",
2962
+ "@w",
2963
+ ""
2964
+ ]
2965
+ ]
2966
+ ],
2967
+ [
2968
+ "fn",
2969
+ "warmUrl",
2970
+ {
2971
+ "asset": {
2972
+ "url": "@warmUrl"
2973
+ },
2974
+ "height": 0.5,
2975
+ "opacity": 0.0,
2976
+ "position": {
2977
+ "x": 0.0,
2978
+ "y": 0.0
2979
+ },
2980
+ "type": "draw-sprite",
2981
+ "width": 0.5
2982
+ }
2983
+ ]
2984
+ ],
2985
+ "type": "draw-sprite-layer"
2986
+ }
2987
+ ],
2988
+ "fit": true,
2989
+ "projection": "@config.projection",
2990
+ "showMinimap": "@config.showMinimap",
2991
+ "tileClickEvent": "TILE_CLICK",
2992
+ "type": "canvas",
2993
+ "unitClickEvent": "UNIT_CLICK"
2994
+ }
2995
+ ],
2996
+ "hud": {
2997
+ "stats": [
2998
+ "array/concat",
2999
+ [
3000
+ {
3001
+ "format": "text",
3002
+ "label": "Result",
3003
+ "value": "@entity.result"
3004
+ },
3005
+ {
3006
+ "format": "text",
3007
+ "label": "Phase",
3008
+ "value": "@entity.uiPhase"
3009
+ },
3010
+ {
3011
+ "label": "Turn",
3012
+ "value": "@entity.turn"
3013
+ },
3014
+ {
3015
+ "label": "Score",
3016
+ "value": "@entity.score"
3017
+ }
3018
+ ],
3019
+ "@config.extraStats"
3020
+ ],
3021
+ "type": "game-hud"
3022
+ },
3023
+ "hudBackgroundAsset": "@config.hudBackgroundAsset",
3024
+ "type": "game-shell"
3025
+ }
3026
+ ]
3027
+ ],
3028
+ "event": "INIT",
3029
+ "eventId": "evt_01KXG04VM7S7DZ7AE96DX5CW5S",
3030
+ "from": "playing",
3031
+ "to": "playing"
3032
+ },
3033
+ {
3034
+ "effects": [
3035
+ [
3036
+ "emit",
3037
+ "ATTACK",
3038
+ {
3039
+ "targetId": "@payload.unitId"
3040
+ }
3041
+ ],
3042
+ [
3043
+ "set",
3044
+ "@entity.actedIds",
3045
+ [
3046
+ "array/append",
3047
+ "@entity.actedIds",
3048
+ "@entity.selectedUnitId"
3049
+ ]
3050
+ ],
3051
+ [
3052
+ "set",
3053
+ "@entity.animAttackerId",
3054
+ "@entity.selectedUnitId"
3055
+ ],
3056
+ [
3057
+ "set",
3058
+ "@entity.animAtkTicksLeft",
3059
+ 4.0
3060
+ ],
3061
+ [
3062
+ "set",
3063
+ "@entity.selectedUnitId",
2533
3064
  ""
2534
3065
  ],
2535
3066
  [
@@ -2555,72 +3086,127 @@
2555
3086
  "and",
2556
3087
  [
2557
3088
  "==",
2558
- "@entity.uiPhase",
2559
- "action"
3089
+ "@entity.result",
3090
+ "none"
2560
3091
  ],
2561
3092
  [
2562
3093
  "and",
2563
3094
  [
2564
- "==",
3095
+ "!=",
3096
+ "@entity.selectedUnitId",
3097
+ ""
3098
+ ],
3099
+ [
3100
+ "and",
2565
3101
  [
2566
- "object/get",
3102
+ "==",
2567
3103
  [
2568
- "array/find",
2569
- "@entity.units",
3104
+ "array/len",
2570
3105
  [
2571
- "fn",
2572
- "u",
3106
+ "array/filter",
3107
+ "@entity.actedIds",
2573
3108
  [
2574
- "==",
2575
- "@u.id",
2576
- "@payload.unitId"
3109
+ "fn",
3110
+ "aid",
3111
+ [
3112
+ "==",
3113
+ "@aid",
3114
+ "@entity.selectedUnitId"
3115
+ ]
2577
3116
  ]
2578
3117
  ]
2579
3118
  ],
2580
- "team"
3119
+ 0.0
2581
3120
  ],
2582
- "enemy"
2583
- ],
2584
- [
2585
- "<=",
2586
3121
  [
2587
- "grid/manhattan-distance",
3122
+ "and",
2588
3123
  [
2589
- "object/get",
3124
+ "==",
2590
3125
  [
2591
- "array/find",
2592
- "@entity.units",
3126
+ "object/get",
2593
3127
  [
2594
- "fn",
2595
- "u",
3128
+ "array/find",
3129
+ "@entity.units",
2596
3130
  [
2597
- "==",
2598
- "@u.id",
2599
- "@entity.selectedUnitId"
3131
+ "fn",
3132
+ "u",
3133
+ [
3134
+ "==",
3135
+ "@u.id",
3136
+ "@payload.unitId"
3137
+ ]
2600
3138
  ]
2601
- ]
3139
+ ],
3140
+ "team"
2602
3141
  ],
2603
- "position"
3142
+ "enemy"
2604
3143
  ],
2605
3144
  [
2606
- "object/get",
3145
+ "and",
2607
3146
  [
2608
- "array/find",
2609
- "@entity.units",
3147
+ ">",
2610
3148
  [
2611
- "fn",
2612
- "u",
3149
+ "object/get",
2613
3150
  [
2614
- "==",
2615
- "@u.id",
2616
- "@payload.unitId"
2617
- ]
2618
- ]
3151
+ "array/find",
3152
+ "@entity.units",
3153
+ [
3154
+ "fn",
3155
+ "u",
3156
+ [
3157
+ "==",
3158
+ "@u.id",
3159
+ "@payload.unitId"
3160
+ ]
3161
+ ]
3162
+ ],
3163
+ "health"
3164
+ ],
3165
+ 0.0
2619
3166
  ],
2620
- "position"
3167
+ [
3168
+ "<=",
3169
+ [
3170
+ "grid/manhattan-distance",
3171
+ [
3172
+ "object/get",
3173
+ [
3174
+ "array/find",
3175
+ "@entity.units",
3176
+ [
3177
+ "fn",
3178
+ "u",
3179
+ [
3180
+ "==",
3181
+ "@u.id",
3182
+ "@entity.selectedUnitId"
3183
+ ]
3184
+ ]
3185
+ ],
3186
+ "position"
3187
+ ],
3188
+ [
3189
+ "object/get",
3190
+ [
3191
+ "array/find",
3192
+ "@entity.units",
3193
+ [
3194
+ "fn",
3195
+ "u",
3196
+ [
3197
+ "==",
3198
+ "@u.id",
3199
+ "@payload.unitId"
3200
+ ]
3201
+ ]
3202
+ ],
3203
+ "position"
3204
+ ]
3205
+ ],
3206
+ "@config.attackRange"
3207
+ ]
2621
3208
  ]
2622
- ],
2623
- 1.0
3209
+ ]
2624
3210
  ]
2625
3211
  ]
2626
3212
  ],
@@ -2690,7 +3276,7 @@
2690
3276
  "position"
2691
3277
  ]
2692
3278
  ],
2693
- 1.0
3279
+ "@config.attackRange"
2694
3280
  ]
2695
3281
  ]
2696
3282
  ]
@@ -2727,13 +3313,21 @@
2727
3313
  "eventId": "evt_01KXG04VM70TB5JHTH6TK4H7PY",
2728
3314
  "from": "playing",
2729
3315
  "guard": [
2730
- "==",
2731
- "@entity.selectedUnitId",
2732
- "@payload.unitId"
2733
- ],
2734
- "to": "playing"
2735
- },
2736
- {
3316
+ "and",
3317
+ [
3318
+ "==",
3319
+ "@entity.result",
3320
+ "none"
3321
+ ],
3322
+ [
3323
+ "==",
3324
+ "@entity.selectedUnitId",
3325
+ "@payload.unitId"
3326
+ ]
3327
+ ],
3328
+ "to": "playing"
3329
+ },
3330
+ {
2737
3331
  "effects": [
2738
3332
  [
2739
3333
  "set",
@@ -2754,133 +3348,169 @@
2754
3348
  "set",
2755
3349
  "@entity.validMoves",
2756
3350
  [
2757
- "array/map",
3351
+ "if",
2758
3352
  [
2759
- "array/filter",
2760
- "@entity.tiles",
3353
+ ">",
2761
3354
  [
2762
- "fn",
2763
- "t",
3355
+ "array/len",
2764
3356
  [
2765
- "and",
3357
+ "array/filter",
3358
+ "@entity.movedIds",
2766
3359
  [
2767
- "==",
3360
+ "fn",
3361
+ "aid",
2768
3362
  [
2769
- "object/get",
2770
- "@t",
2771
- "passable"
2772
- ],
2773
- true
2774
- ],
3363
+ "==",
3364
+ "@aid",
3365
+ "@payload.unitId"
3366
+ ]
3367
+ ]
3368
+ ]
3369
+ ],
3370
+ 0.0
3371
+ ],
3372
+ [],
3373
+ [
3374
+ "array/map",
3375
+ [
3376
+ "array/filter",
3377
+ "@entity.tiles",
3378
+ [
3379
+ "fn",
3380
+ "t",
2775
3381
  [
2776
3382
  "and",
2777
3383
  [
2778
- "<=",
3384
+ "==",
2779
3385
  [
2780
- "grid/manhattan-distance",
3386
+ "object/get",
3387
+ "@t",
3388
+ "passable"
3389
+ ],
3390
+ true
3391
+ ],
3392
+ [
3393
+ "and",
3394
+ [
3395
+ "<=",
2781
3396
  [
2782
- "object/get",
3397
+ "grid/manhattan-distance",
2783
3398
  [
2784
- "array/find",
2785
- "@entity.units",
3399
+ "object/get",
2786
3400
  [
2787
- "fn",
2788
- "u",
3401
+ "array/find",
3402
+ "@entity.units",
2789
3403
  [
2790
- "==",
2791
- "@u.id",
2792
- "@payload.unitId"
3404
+ "fn",
3405
+ "u",
3406
+ [
3407
+ "==",
3408
+ "@u.id",
3409
+ "@payload.unitId"
3410
+ ]
2793
3411
  ]
2794
- ]
3412
+ ],
3413
+ "position"
2795
3414
  ],
2796
- "position"
3415
+ {
3416
+ "x": [
3417
+ "object/get",
3418
+ "@t",
3419
+ "x"
3420
+ ],
3421
+ "y": [
3422
+ "object/get",
3423
+ "@t",
3424
+ "y"
3425
+ ]
3426
+ }
2797
3427
  ],
2798
- {
2799
- "x": [
2800
- "object/get",
2801
- "@t",
2802
- "x"
2803
- ],
2804
- "y": [
2805
- "object/get",
2806
- "@t",
2807
- "y"
2808
- ]
2809
- }
3428
+ "@config.movementRange"
2810
3429
  ],
2811
- "@config.movementRange"
2812
- ],
2813
- [
2814
- "==",
2815
3430
  [
2816
- "array/len",
3431
+ "==",
2817
3432
  [
2818
- "array/filter",
2819
- "@entity.units",
3433
+ "array/len",
2820
3434
  [
2821
- "fn",
2822
- "u",
3435
+ "array/filter",
3436
+ "@entity.units",
2823
3437
  [
2824
- "and",
3438
+ "fn",
3439
+ "u",
2825
3440
  [
2826
- "==",
3441
+ "and",
2827
3442
  [
2828
- "object/get",
3443
+ ">",
2829
3444
  [
2830
3445
  "object/get",
2831
3446
  "@u",
2832
- "position"
3447
+ "health"
2833
3448
  ],
2834
- "x"
3449
+ 0.0
2835
3450
  ],
2836
3451
  [
2837
- "object/get",
2838
- "@t",
2839
- "x"
2840
- ]
2841
- ],
2842
- [
2843
- "==",
2844
- [
2845
- "object/get",
3452
+ "and",
2846
3453
  [
2847
- "object/get",
2848
- "@u",
2849
- "position"
3454
+ "==",
3455
+ [
3456
+ "object/get",
3457
+ [
3458
+ "object/get",
3459
+ "@u",
3460
+ "position"
3461
+ ],
3462
+ "x"
3463
+ ],
3464
+ [
3465
+ "object/get",
3466
+ "@t",
3467
+ "x"
3468
+ ]
2850
3469
  ],
2851
- "y"
2852
- ],
2853
- [
2854
- "object/get",
2855
- "@t",
2856
- "y"
3470
+ [
3471
+ "==",
3472
+ [
3473
+ "object/get",
3474
+ [
3475
+ "object/get",
3476
+ "@u",
3477
+ "position"
3478
+ ],
3479
+ "y"
3480
+ ],
3481
+ [
3482
+ "object/get",
3483
+ "@t",
3484
+ "y"
3485
+ ]
3486
+ ]
2857
3487
  ]
2858
3488
  ]
2859
3489
  ]
2860
3490
  ]
2861
- ]
2862
- ],
2863
- 0.0
3491
+ ],
3492
+ 0.0
3493
+ ]
2864
3494
  ]
2865
3495
  ]
2866
3496
  ]
3497
+ ],
3498
+ [
3499
+ "fn",
3500
+ "t",
3501
+ {
3502
+ "x": [
3503
+ "object/get",
3504
+ "@t",
3505
+ "x"
3506
+ ],
3507
+ "z": [
3508
+ "object/get",
3509
+ "@t",
3510
+ "y"
3511
+ ]
3512
+ }
2867
3513
  ]
2868
- ],
2869
- [
2870
- "fn",
2871
- "t",
2872
- {
2873
- "x": [
2874
- "object/get",
2875
- "@t",
2876
- "x"
2877
- ],
2878
- "z": [
2879
- "object/get",
2880
- "@t",
2881
- "y"
2882
- ]
2883
- }
2884
3514
  ]
2885
3515
  ]
2886
3516
  ]
@@ -2889,25 +3519,80 @@
2889
3519
  "eventId": "evt_01KXG04VM70TB5JHTH6TK4H7PY",
2890
3520
  "from": "playing",
2891
3521
  "guard": [
2892
- "==",
3522
+ "and",
2893
3523
  [
2894
- "object/get",
3524
+ "==",
3525
+ "@entity.result",
3526
+ "none"
3527
+ ],
3528
+ [
3529
+ "and",
2895
3530
  [
2896
- "array/find",
2897
- "@entity.units",
3531
+ ">",
2898
3532
  [
2899
- "fn",
2900
- "u",
3533
+ "object/get",
2901
3534
  [
2902
- "==",
2903
- "@u.id",
2904
- "@payload.unitId"
2905
- ]
2906
- ]
3535
+ "array/find",
3536
+ "@entity.units",
3537
+ [
3538
+ "fn",
3539
+ "u",
3540
+ [
3541
+ "==",
3542
+ "@u.id",
3543
+ "@payload.unitId"
3544
+ ]
3545
+ ]
3546
+ ],
3547
+ "health"
3548
+ ],
3549
+ 0.0
2907
3550
  ],
2908
- "team"
2909
- ],
2910
- "player"
3551
+ [
3552
+ "and",
3553
+ [
3554
+ "==",
3555
+ [
3556
+ "object/get",
3557
+ [
3558
+ "array/find",
3559
+ "@entity.units",
3560
+ [
3561
+ "fn",
3562
+ "u",
3563
+ [
3564
+ "==",
3565
+ "@u.id",
3566
+ "@payload.unitId"
3567
+ ]
3568
+ ]
3569
+ ],
3570
+ "team"
3571
+ ],
3572
+ "player"
3573
+ ],
3574
+ [
3575
+ "==",
3576
+ [
3577
+ "array/len",
3578
+ [
3579
+ "array/filter",
3580
+ "@entity.actedIds",
3581
+ [
3582
+ "fn",
3583
+ "aid",
3584
+ [
3585
+ "==",
3586
+ "@aid",
3587
+ "@payload.unitId"
3588
+ ]
3589
+ ]
3590
+ ]
3591
+ ],
3592
+ 0.0
3593
+ ]
3594
+ ]
3595
+ ]
2911
3596
  ],
2912
3597
  "to": "playing"
2913
3598
  },
@@ -2924,23 +3609,93 @@
2924
3609
  ],
2925
3610
  [
2926
3611
  "set",
2927
- "@entity.selectedUnitId",
2928
- ""
3612
+ "@entity.movedIds",
3613
+ [
3614
+ "array/append",
3615
+ "@entity.movedIds",
3616
+ "@entity.selectedUnitId"
3617
+ ]
2929
3618
  ],
2930
3619
  [
2931
3620
  "set",
2932
- "@entity.validMoves",
2933
- []
3621
+ "@entity.uiPhase",
3622
+ "action"
2934
3623
  ],
2935
3624
  [
2936
3625
  "set",
2937
- "@entity.attackTargets",
3626
+ "@entity.validMoves",
2938
3627
  []
2939
3628
  ],
2940
3629
  [
2941
3630
  "set",
2942
- "@entity.uiPhase",
2943
- "observation"
3631
+ "@entity.attackTargets",
3632
+ [
3633
+ "array/map",
3634
+ [
3635
+ "array/filter",
3636
+ "@entity.units",
3637
+ [
3638
+ "fn",
3639
+ "u",
3640
+ [
3641
+ "and",
3642
+ [
3643
+ "==",
3644
+ "@u.team",
3645
+ "enemy"
3646
+ ],
3647
+ [
3648
+ "and",
3649
+ [
3650
+ ">",
3651
+ "@u.health",
3652
+ 0.0
3653
+ ],
3654
+ [
3655
+ "<=",
3656
+ [
3657
+ "grid/manhattan-distance",
3658
+ {
3659
+ "x": "@payload.x",
3660
+ "y": "@payload.y"
3661
+ },
3662
+ [
3663
+ "object/get",
3664
+ "@u",
3665
+ "position"
3666
+ ]
3667
+ ],
3668
+ "@config.attackRange"
3669
+ ]
3670
+ ]
3671
+ ]
3672
+ ]
3673
+ ],
3674
+ [
3675
+ "fn",
3676
+ "u",
3677
+ {
3678
+ "x": [
3679
+ "object/get",
3680
+ [
3681
+ "object/get",
3682
+ "@u",
3683
+ "position"
3684
+ ],
3685
+ "x"
3686
+ ],
3687
+ "z": [
3688
+ "object/get",
3689
+ [
3690
+ "object/get",
3691
+ "@u",
3692
+ "position"
3693
+ ],
3694
+ "y"
3695
+ ]
3696
+ }
3697
+ ]
3698
+ ]
2944
3699
  ]
2945
3700
  ],
2946
3701
  "event": "TILE_CLICK",
@@ -2949,48 +3704,202 @@
2949
3704
  "guard": [
2950
3705
  "and",
2951
3706
  [
2952
- "!=",
2953
- "@entity.selectedUnitId",
2954
- ""
3707
+ "==",
3708
+ "@entity.result",
3709
+ "none"
2955
3710
  ],
2956
3711
  [
2957
3712
  "and",
2958
3713
  [
2959
- "grid/in-bounds",
2960
- {
2961
- "x": "@payload.x",
2962
- "y": "@payload.y"
2963
- },
2964
- "@config.gridWidth",
2965
- "@config.gridHeight"
3714
+ "!=",
3715
+ "@entity.selectedUnitId",
3716
+ ""
2966
3717
  ],
2967
3718
  [
2968
- "<=",
3719
+ "and",
2969
3720
  [
2970
- "grid/manhattan-distance",
3721
+ "==",
2971
3722
  [
2972
- "object/get",
3723
+ "array/len",
2973
3724
  [
2974
- "array/find",
2975
- "@entity.units",
3725
+ "array/filter",
3726
+ "@entity.movedIds",
2976
3727
  [
2977
3728
  "fn",
2978
- "u",
3729
+ "aid",
2979
3730
  [
2980
3731
  "==",
2981
- "@u.id",
3732
+ "@aid",
2982
3733
  "@entity.selectedUnitId"
2983
3734
  ]
2984
3735
  ]
2985
- ],
2986
- "position"
3736
+ ]
2987
3737
  ],
2988
- {
2989
- "x": "@payload.x",
2990
- "y": "@payload.y"
2991
- }
3738
+ 0.0
2992
3739
  ],
2993
- "@config.movementRange"
3740
+ [
3741
+ "and",
3742
+ [
3743
+ ">",
3744
+ [
3745
+ "object/get",
3746
+ [
3747
+ "array/find",
3748
+ "@entity.units",
3749
+ [
3750
+ "fn",
3751
+ "u",
3752
+ [
3753
+ "==",
3754
+ "@u.id",
3755
+ "@entity.selectedUnitId"
3756
+ ]
3757
+ ]
3758
+ ],
3759
+ "health"
3760
+ ],
3761
+ 0.0
3762
+ ],
3763
+ [
3764
+ "and",
3765
+ [
3766
+ "grid/in-bounds",
3767
+ {
3768
+ "x": "@payload.x",
3769
+ "y": "@payload.y"
3770
+ },
3771
+ "@config.gridWidth",
3772
+ "@config.gridHeight"
3773
+ ],
3774
+ [
3775
+ "and",
3776
+ [
3777
+ "<=",
3778
+ [
3779
+ "grid/manhattan-distance",
3780
+ [
3781
+ "object/get",
3782
+ [
3783
+ "array/find",
3784
+ "@entity.units",
3785
+ [
3786
+ "fn",
3787
+ "u",
3788
+ [
3789
+ "==",
3790
+ "@u.id",
3791
+ "@entity.selectedUnitId"
3792
+ ]
3793
+ ]
3794
+ ],
3795
+ "position"
3796
+ ],
3797
+ {
3798
+ "x": "@payload.x",
3799
+ "y": "@payload.y"
3800
+ }
3801
+ ],
3802
+ "@config.movementRange"
3803
+ ],
3804
+ [
3805
+ "and",
3806
+ [
3807
+ "==",
3808
+ [
3809
+ "array/len",
3810
+ [
3811
+ "array/filter",
3812
+ "@entity.units",
3813
+ [
3814
+ "fn",
3815
+ "u",
3816
+ [
3817
+ "and",
3818
+ [
3819
+ ">",
3820
+ [
3821
+ "object/get",
3822
+ "@u",
3823
+ "health"
3824
+ ],
3825
+ 0.0
3826
+ ],
3827
+ [
3828
+ "and",
3829
+ [
3830
+ "==",
3831
+ [
3832
+ "object/get",
3833
+ [
3834
+ "object/get",
3835
+ "@u",
3836
+ "position"
3837
+ ],
3838
+ "x"
3839
+ ],
3840
+ "@payload.x"
3841
+ ],
3842
+ [
3843
+ "==",
3844
+ [
3845
+ "object/get",
3846
+ [
3847
+ "object/get",
3848
+ "@u",
3849
+ "position"
3850
+ ],
3851
+ "y"
3852
+ ],
3853
+ "@payload.y"
3854
+ ]
3855
+ ]
3856
+ ]
3857
+ ]
3858
+ ]
3859
+ ],
3860
+ 0.0
3861
+ ],
3862
+ [
3863
+ "==",
3864
+ [
3865
+ "object/get",
3866
+ [
3867
+ "array/find",
3868
+ "@entity.tiles",
3869
+ [
3870
+ "fn",
3871
+ "t",
3872
+ [
3873
+ "and",
3874
+ [
3875
+ "==",
3876
+ [
3877
+ "object/get",
3878
+ "@t",
3879
+ "x"
3880
+ ],
3881
+ "@payload.x"
3882
+ ],
3883
+ [
3884
+ "==",
3885
+ [
3886
+ "object/get",
3887
+ "@t",
3888
+ "y"
3889
+ ],
3890
+ "@payload.y"
3891
+ ]
3892
+ ]
3893
+ ]
3894
+ ],
3895
+ "passable"
3896
+ ],
3897
+ true
3898
+ ]
3899
+ ]
3900
+ ]
3901
+ ]
3902
+ ]
2994
3903
  ]
2995
3904
  ]
2996
3905
  ],
@@ -3040,6 +3949,36 @@
3040
3949
  1.0
3041
3950
  ]
3042
3951
  ],
3952
+ [
3953
+ "set",
3954
+ "@entity.movedIds",
3955
+ []
3956
+ ],
3957
+ [
3958
+ "set",
3959
+ "@entity.actedIds",
3960
+ []
3961
+ ],
3962
+ [
3963
+ "set",
3964
+ "@entity.selectedUnitId",
3965
+ ""
3966
+ ],
3967
+ [
3968
+ "set",
3969
+ "@entity.validMoves",
3970
+ []
3971
+ ],
3972
+ [
3973
+ "set",
3974
+ "@entity.attackTargets",
3975
+ []
3976
+ ],
3977
+ [
3978
+ "set",
3979
+ "@entity.uiPhase",
3980
+ "observation"
3981
+ ],
3043
3982
  [
3044
3983
  "emit",
3045
3984
  "AI_TURN",
@@ -3048,21 +3987,145 @@
3048
3987
  }
3049
3988
  ]
3050
3989
  ],
3051
- "event": "END_TURN",
3052
- "eventId": "evt_01KXG04VM7ZPVAKJ0WHVX2WGWW",
3053
- "from": "playing",
3054
- "guard": [
3055
- "==",
3056
- "@entity.result",
3057
- "none"
3990
+ "event": "END_TURN",
3991
+ "eventId": "evt_01KXG04VM7ZPVAKJ0WHVX2WGWW",
3992
+ "from": "playing",
3993
+ "guard": [
3994
+ "==",
3995
+ "@entity.result",
3996
+ "none"
3997
+ ],
3998
+ "to": "playing"
3999
+ },
4000
+ {
4001
+ "effects": [
4002
+ [
4003
+ "set",
4004
+ "@entity.animUnitId",
4005
+ "@payload.unitId"
4006
+ ],
4007
+ [
4008
+ "set",
4009
+ "@entity.animState",
4010
+ "walk"
4011
+ ],
4012
+ [
4013
+ "set",
4014
+ "@entity.animTicksLeft",
4015
+ 6.0
4016
+ ]
4017
+ ],
4018
+ "event": "MOVE",
4019
+ "eventId": "evt_01KXG04VM7QR10W55SPK4ZM75N",
4020
+ "from": "playing",
4021
+ "to": "playing"
4022
+ },
4023
+ {
4024
+ "effects": [
4025
+ [
4026
+ "set",
4027
+ "@entity.animUnitId",
4028
+ "@payload.targetId"
4029
+ ],
4030
+ [
4031
+ "set",
4032
+ "@entity.animState",
4033
+ "hit"
4034
+ ],
4035
+ [
4036
+ "set",
4037
+ "@entity.animTicksLeft",
4038
+ 4.0
4039
+ ]
4040
+ ],
4041
+ "event": "ATTACK",
4042
+ "eventId": "evt_01KXG04VM7FZRR6X4JFY78K7PC",
4043
+ "from": "playing",
4044
+ "to": "playing"
4045
+ }
4046
+ ]
4047
+ },
4048
+ "ticks": [
4049
+ {
4050
+ "effects": [
4051
+ [
4052
+ "set",
4053
+ "@entity.animTicksLeft",
4054
+ [
4055
+ "if",
4056
+ [
4057
+ ">",
4058
+ "@entity.animTicksLeft",
4059
+ 0.0
4060
+ ],
4061
+ [
4062
+ "-",
4063
+ "@entity.animTicksLeft",
4064
+ 1.0
4065
+ ],
4066
+ 0.0
4067
+ ]
4068
+ ],
4069
+ [
4070
+ "set",
4071
+ "@entity.animAtkTicksLeft",
4072
+ [
4073
+ "if",
4074
+ [
4075
+ ">",
4076
+ "@entity.animAtkTicksLeft",
4077
+ 0.0
4078
+ ],
4079
+ [
4080
+ "-",
4081
+ "@entity.animAtkTicksLeft",
4082
+ 1.0
4083
+ ],
4084
+ 0.0
4085
+ ]
4086
+ ],
4087
+ [
4088
+ "set",
4089
+ "@entity.animState",
4090
+ [
4091
+ "if",
4092
+ [
4093
+ "==",
4094
+ "@entity.animTicksLeft",
4095
+ 0.0
4096
+ ],
4097
+ "idle",
4098
+ "@entity.animState"
4099
+ ]
4100
+ ],
4101
+ [
4102
+ "set",
4103
+ "@entity.animUnitId",
4104
+ [
4105
+ "if",
4106
+ [
4107
+ "==",
4108
+ "@entity.animTicksLeft",
4109
+ 0.0
4110
+ ],
4111
+ "",
4112
+ "@entity.animUnitId"
4113
+ ]
4114
+ ],
4115
+ [
4116
+ "set",
4117
+ "@entity.animAttackerId",
4118
+ [
4119
+ "if",
4120
+ [
4121
+ "==",
4122
+ "@entity.animAtkTicksLeft",
4123
+ 0.0
4124
+ ],
4125
+ "",
4126
+ "@entity.animAttackerId"
4127
+ ]
3058
4128
  ],
3059
- "to": "playing"
3060
- }
3061
- ]
3062
- },
3063
- "ticks": [
3064
- {
3065
- "effects": [
3066
4129
  [
3067
4130
  "render-ui",
3068
4131
  "main",
@@ -3129,32 +4192,7 @@
3129
4192
  ],
3130
4193
  2.0
3131
4194
  ]
3132
- },
3133
- "zoom": [
3134
- "math/min",
3135
- 1.0,
3136
- [
3137
- "/",
3138
- 5.0,
3139
- [
3140
- "+",
3141
- 1.0,
3142
- [
3143
- "math/max",
3144
- [
3145
- "array/max",
3146
- "@entity.tiles",
3147
- "x"
3148
- ],
3149
- [
3150
- "array/max",
3151
- "@entity.tiles",
3152
- "y"
3153
- ]
3154
- ]
3155
- ]
3156
- ]
3157
- ]
4195
+ }
3158
4196
  },
3159
4197
  "children": [
3160
4198
  {
@@ -3228,7 +4266,7 @@
3228
4266
  ]
3229
4267
  ]
3230
4268
  ],
3231
- "height": 0.5,
4269
+ "height": 1.0,
3232
4270
  "position": {
3233
4271
  "x": [
3234
4272
  "object/get",
@@ -3242,7 +4280,7 @@
3242
4280
  ]
3243
4281
  },
3244
4282
  "type": "draw-sprite",
3245
- "width": 0.5
4283
+ "width": 1.0
3246
4284
  }
3247
4285
  ]
3248
4286
  ],
@@ -3272,11 +4310,13 @@
3272
4310
  "fn",
3273
4311
  "f",
3274
4312
  {
4313
+ "anchor": "ground",
3275
4314
  "asset": [
3276
4315
  "object/get",
3277
4316
  "@f",
3278
4317
  "assetUrl"
3279
4318
  ],
4319
+ "height": 1.0,
3280
4320
  "position": {
3281
4321
  "x": [
3282
4322
  "object/get",
@@ -3289,7 +4329,8 @@
3289
4329
  "y"
3290
4330
  ]
3291
4331
  },
3292
- "type": "draw-sprite"
4332
+ "type": "draw-sprite",
4333
+ "width": 1.0
3293
4334
  }
3294
4335
  ]
3295
4336
  ],
@@ -3414,52 +4455,229 @@
3414
4455
  [
3415
4456
  "fn",
3416
4457
  "u",
3417
- {
3418
- "anchor": "ground",
3419
- "asset": [
3420
- "if",
4458
+ [
4459
+ "let",
4460
+ [
3421
4461
  [
3422
- "object/get",
4462
+ "unitAsset",
3423
4463
  [
3424
- "object/get",
3425
- "@u",
3426
- "modelUrl"
3427
- ],
3428
- "url"
3429
- ],
3430
- [
3431
- "object/get",
3432
- "@u",
3433
- "modelUrl"
4464
+ "if",
4465
+ [
4466
+ "object/get",
4467
+ [
4468
+ "object/get",
4469
+ "@u",
4470
+ "modelUrl"
4471
+ ],
4472
+ "url"
4473
+ ],
4474
+ [
4475
+ "object/get",
4476
+ "@u",
4477
+ "modelUrl"
4478
+ ],
4479
+ [
4480
+ "object/get",
4481
+ [
4482
+ "object/get",
4483
+ "@config.assetManifest",
4484
+ "units"
4485
+ ],
4486
+ [
4487
+ "object/get",
4488
+ "@u",
4489
+ "unitType"
4490
+ ]
4491
+ ]
4492
+ ]
3434
4493
  ],
3435
4494
  [
3436
- "object/get",
4495
+ "unitUrl",
3437
4496
  [
3438
4497
  "object/get",
3439
- "@config.assetManifest",
3440
- "units"
3441
- ],
4498
+ "@unitAsset",
4499
+ "url"
4500
+ ]
4501
+ ],
4502
+ [
4503
+ "unitAnim",
3442
4504
  [
3443
- "object/get",
3444
- "@u",
3445
- "unitType"
4505
+ "if",
4506
+ [
4507
+ "<=",
4508
+ [
4509
+ "object/get",
4510
+ "@u",
4511
+ "health"
4512
+ ],
4513
+ 0.0
4514
+ ],
4515
+ "death",
4516
+ [
4517
+ "if",
4518
+ [
4519
+ "and",
4520
+ [
4521
+ "==",
4522
+ [
4523
+ "object/get",
4524
+ "@u",
4525
+ "id"
4526
+ ],
4527
+ "@entity.animAttackerId"
4528
+ ],
4529
+ [
4530
+ ">",
4531
+ "@entity.animAtkTicksLeft",
4532
+ 0.0
4533
+ ]
4534
+ ],
4535
+ "attack",
4536
+ [
4537
+ "if",
4538
+ [
4539
+ "==",
4540
+ [
4541
+ "object/get",
4542
+ "@u",
4543
+ "id"
4544
+ ],
4545
+ "@entity.animUnitId"
4546
+ ],
4547
+ "@entity.animState",
4548
+ "idle"
4549
+ ]
4550
+ ]
3446
4551
  ]
3447
4552
  ]
3448
4553
  ],
3449
- "height": 0.5,
3450
- "id": [
3451
- "object/get",
3452
- "@u",
3453
- "id"
3454
- ],
3455
- "position": [
3456
- "object/get",
3457
- "@u",
3458
- "position"
3459
- ],
3460
- "type": "draw-sprite",
3461
- "width": 0.5
3462
- }
4554
+ {
4555
+ "anchor": "ground",
4556
+ "asset": [
4557
+ "if",
4558
+ [
4559
+ "and",
4560
+ "@unitUrl",
4561
+ [
4562
+ "str/includes",
4563
+ "@unitUrl",
4564
+ ".svg"
4565
+ ]
4566
+ ],
4567
+ [
4568
+ "object/merge",
4569
+ "@unitAsset",
4570
+ {
4571
+ "url": [
4572
+ "str/concat",
4573
+ [
4574
+ "array/nth",
4575
+ [
4576
+ "str/split",
4577
+ "@unitUrl",
4578
+ ".svg"
4579
+ ],
4580
+ 0.0
4581
+ ],
4582
+ [
4583
+ "str/concat",
4584
+ ".",
4585
+ [
4586
+ "str/concat",
4587
+ "@unitAnim",
4588
+ [
4589
+ "str/concat",
4590
+ "-",
4591
+ [
4592
+ "str/concat",
4593
+ [
4594
+ "if",
4595
+ [
4596
+ "==",
4597
+ "@unitAnim",
4598
+ "walk"
4599
+ ],
4600
+ [
4601
+ "%",
4602
+ "@entity.animCounter",
4603
+ 2.0
4604
+ ],
4605
+ [
4606
+ "if",
4607
+ [
4608
+ "==",
4609
+ "@unitAnim",
4610
+ "idle"
4611
+ ],
4612
+ [
4613
+ "%",
4614
+ [
4615
+ "math/floor",
4616
+ [
4617
+ "/",
4618
+ "@entity.animCounter",
4619
+ 3.0
4620
+ ]
4621
+ ],
4622
+ 4.0
4623
+ ],
4624
+ 0.0
4625
+ ]
4626
+ ]
4627
+ ],
4628
+ ".svg"
4629
+ ]
4630
+ ]
4631
+ ]
4632
+ ]
4633
+ }
4634
+ ],
4635
+ "@unitAsset"
4636
+ ],
4637
+ "height": 0.5,
4638
+ "id": [
4639
+ "object/get",
4640
+ "@u",
4641
+ "id"
4642
+ ],
4643
+ "opacity": [
4644
+ "if",
4645
+ [
4646
+ ">",
4647
+ [
4648
+ "array/len",
4649
+ [
4650
+ "array/filter",
4651
+ "@entity.actedIds",
4652
+ [
4653
+ "fn",
4654
+ "aid",
4655
+ [
4656
+ "==",
4657
+ "@aid",
4658
+ [
4659
+ "object/get",
4660
+ "@u",
4661
+ "id"
4662
+ ]
4663
+ ]
4664
+ ]
4665
+ ]
4666
+ ],
4667
+ 0.0
4668
+ ],
4669
+ 0.45,
4670
+ 1.0
4671
+ ],
4672
+ "position": [
4673
+ "object/get",
4674
+ "@u",
4675
+ "position"
4676
+ ],
4677
+ "type": "draw-sprite",
4678
+ "width": 0.5
4679
+ }
4680
+ ]
3463
4681
  ]
3464
4682
  ],
3465
4683
  [
@@ -3481,7 +4699,23 @@
3481
4699
  {
3482
4700
  "items": [
3483
4701
  "array/map",
3484
- "@entity.units",
4702
+ [
4703
+ "array/filter",
4704
+ "@entity.units",
4705
+ [
4706
+ "fn",
4707
+ "u",
4708
+ [
4709
+ ">",
4710
+ [
4711
+ "object/get",
4712
+ "@u",
4713
+ "health"
4714
+ ],
4715
+ 0.0
4716
+ ]
4717
+ ]
4718
+ ],
3485
4719
  [
3486
4720
  "fn",
3487
4721
  "u",
@@ -3507,7 +4741,23 @@
3507
4741
  {
3508
4742
  "items": [
3509
4743
  "array/map",
3510
- "@entity.units",
4744
+ [
4745
+ "array/filter",
4746
+ "@entity.units",
4747
+ [
4748
+ "fn",
4749
+ "u",
4750
+ [
4751
+ ">",
4752
+ [
4753
+ "object/get",
4754
+ "@u",
4755
+ "health"
4756
+ ],
4757
+ 0.0
4758
+ ]
4759
+ ]
4760
+ ],
3511
4761
  [
3512
4762
  "fn",
3513
4763
  "u",
@@ -3549,7 +4799,23 @@
3549
4799
  {
3550
4800
  "items": [
3551
4801
  "array/map",
3552
- "@entity.units",
4802
+ [
4803
+ "array/filter",
4804
+ "@entity.units",
4805
+ [
4806
+ "fn",
4807
+ "u",
4808
+ [
4809
+ ">",
4810
+ [
4811
+ "object/get",
4812
+ "@u",
4813
+ "health"
4814
+ ],
4815
+ 0.0
4816
+ ]
4817
+ ]
4818
+ ],
3553
4819
  [
3554
4820
  "fn",
3555
4821
  "u",
@@ -3590,7 +4856,7 @@
3590
4856
  "y": [
3591
4857
  "object/get",
3592
4858
  "@f",
3593
- "y"
4859
+ "z"
3594
4860
  ]
3595
4861
  },
3596
4862
  "text": [
@@ -3603,8 +4869,67 @@
3603
4869
  ]
3604
4870
  ],
3605
4871
  "type": "draw-text-layer"
4872
+ },
4873
+ {
4874
+ "items": [
4875
+ "array/filter",
4876
+ [
4877
+ "array/map",
4878
+ "@entity.fx",
4879
+ [
4880
+ "fn",
4881
+ "f",
4882
+ {
4883
+ "anchor": "center",
4884
+ "asset": [
4885
+ "object/get",
4886
+ [
4887
+ "object/get",
4888
+ "@config.assetManifest",
4889
+ "effects"
4890
+ ],
4891
+ [
4892
+ "object/get",
4893
+ "@f",
4894
+ "type"
4895
+ ]
4896
+ ],
4897
+ "height": 0.6,
4898
+ "position": {
4899
+ "x": [
4900
+ "object/get",
4901
+ "@f",
4902
+ "x"
4903
+ ],
4904
+ "y": [
4905
+ "object/get",
4906
+ "@f",
4907
+ "z"
4908
+ ]
4909
+ },
4910
+ "type": "draw-sprite",
4911
+ "width": 0.6
4912
+ }
4913
+ ]
4914
+ ],
4915
+ [
4916
+ "fn",
4917
+ "s",
4918
+ [
4919
+ "object/get",
4920
+ [
4921
+ "object/get",
4922
+ "@s",
4923
+ "asset"
4924
+ ],
4925
+ "url"
4926
+ ]
4927
+ ]
4928
+ ],
4929
+ "type": "draw-sprite-layer"
3606
4930
  }
3607
4931
  ],
4932
+ "fit": true,
3608
4933
  "projection": "@config.projection",
3609
4934
  "showMinimap": "@config.showMinimap",
3610
4935
  "tileClickEvent": "TILE_CLICK",
@@ -3617,10 +4942,12 @@
3617
4942
  "array/concat",
3618
4943
  [
3619
4944
  {
4945
+ "format": "text",
3620
4946
  "label": "Result",
3621
4947
  "value": "@entity.result"
3622
4948
  },
3623
4949
  {
4950
+ "format": "text",
3624
4951
  "label": "Phase",
3625
4952
  "value": "@entity.uiPhase"
3626
4953
  },
@@ -3664,6 +4991,10 @@
3664
4991
  {
3665
4992
  "as": "Score",
3666
4993
  "from": "std/behaviors/std-score"
4994
+ },
4995
+ {
4996
+ "as": "AnimTick",
4997
+ "from": "std/behaviors/std-anim-tick"
3667
4998
  }
3668
4999
  ]
3669
5000
  }