@almadar/patterns 2.44.0 → 2.46.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-06-16T19:32:31.111Z",
3
+ "exportedAt": "2026-06-17T02:56:15.601Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -14051,6 +14051,323 @@
14051
14051
  ],
14052
14052
  "description": "Unit draw-size multiplier",
14053
14053
  "default": 1
14054
+ },
14055
+ "tiles": {
14056
+ "types": [
14057
+ "array"
14058
+ ],
14059
+ "description": "Direct tile data — forwarded to BattleBoard; takes priority over entity.",
14060
+ "items": {
14061
+ "types": [
14062
+ "object"
14063
+ ],
14064
+ "properties": {
14065
+ "id": {
14066
+ "types": [
14067
+ "string"
14068
+ ]
14069
+ },
14070
+ "x": {
14071
+ "types": [
14072
+ "number"
14073
+ ]
14074
+ },
14075
+ "y": {
14076
+ "types": [
14077
+ "number"
14078
+ ]
14079
+ },
14080
+ "z": {
14081
+ "types": [
14082
+ "number"
14083
+ ]
14084
+ },
14085
+ "terrain": {
14086
+ "types": [
14087
+ "string"
14088
+ ]
14089
+ },
14090
+ "type": {
14091
+ "types": [
14092
+ "string"
14093
+ ]
14094
+ },
14095
+ "terrainSprite": {
14096
+ "types": [
14097
+ "asset"
14098
+ ]
14099
+ },
14100
+ "passable": {
14101
+ "types": [
14102
+ "boolean"
14103
+ ]
14104
+ },
14105
+ "movementCost": {
14106
+ "types": [
14107
+ "number"
14108
+ ]
14109
+ },
14110
+ "tileType": {
14111
+ "types": [
14112
+ "string"
14113
+ ]
14114
+ },
14115
+ "elevation": {
14116
+ "types": [
14117
+ "number"
14118
+ ]
14119
+ }
14120
+ },
14121
+ "required": [
14122
+ "x",
14123
+ "y"
14124
+ ]
14125
+ }
14126
+ },
14127
+ "units": {
14128
+ "types": [
14129
+ "array"
14130
+ ],
14131
+ "description": "Direct unit data — forwarded to BattleBoard; takes priority over entity.",
14132
+ "items": {
14133
+ "types": [
14134
+ "object"
14135
+ ],
14136
+ "properties": {
14137
+ "id": {
14138
+ "types": [
14139
+ "string"
14140
+ ]
14141
+ },
14142
+ "position": {
14143
+ "types": [
14144
+ "object"
14145
+ ],
14146
+ "properties": {
14147
+ "x": {
14148
+ "types": [
14149
+ "number"
14150
+ ]
14151
+ },
14152
+ "y": {
14153
+ "types": [
14154
+ "number"
14155
+ ]
14156
+ }
14157
+ },
14158
+ "required": [
14159
+ "x",
14160
+ "y"
14161
+ ]
14162
+ },
14163
+ "x": {
14164
+ "types": [
14165
+ "number"
14166
+ ]
14167
+ },
14168
+ "y": {
14169
+ "types": [
14170
+ "number"
14171
+ ]
14172
+ },
14173
+ "z": {
14174
+ "types": [
14175
+ "number"
14176
+ ]
14177
+ },
14178
+ "sprite": {
14179
+ "types": [
14180
+ "object"
14181
+ ]
14182
+ },
14183
+ "unitType": {
14184
+ "types": [
14185
+ "string"
14186
+ ]
14187
+ },
14188
+ "heroId": {
14189
+ "types": [
14190
+ "string"
14191
+ ]
14192
+ },
14193
+ "name": {
14194
+ "types": [
14195
+ "string"
14196
+ ]
14197
+ },
14198
+ "team": {
14199
+ "types": [
14200
+ "string"
14201
+ ],
14202
+ "enumValues": [
14203
+ "player",
14204
+ "enemy",
14205
+ "neutral"
14206
+ ]
14207
+ },
14208
+ "faction": {
14209
+ "types": [
14210
+ "string"
14211
+ ],
14212
+ "enumValues": [
14213
+ "player",
14214
+ "enemy",
14215
+ "neutral"
14216
+ ]
14217
+ },
14218
+ "health": {
14219
+ "types": [
14220
+ "number"
14221
+ ]
14222
+ },
14223
+ "maxHealth": {
14224
+ "types": [
14225
+ "number"
14226
+ ]
14227
+ },
14228
+ "traits": {
14229
+ "types": [
14230
+ "array"
14231
+ ],
14232
+ "items": {
14233
+ "types": [
14234
+ "object"
14235
+ ],
14236
+ "properties": {
14237
+ "name": {
14238
+ "types": [
14239
+ "string"
14240
+ ]
14241
+ },
14242
+ "currentState": {
14243
+ "types": [
14244
+ "string"
14245
+ ]
14246
+ },
14247
+ "states": {
14248
+ "types": [
14249
+ "array"
14250
+ ],
14251
+ "items": {
14252
+ "types": [
14253
+ "string"
14254
+ ]
14255
+ }
14256
+ },
14257
+ "cooldown": {
14258
+ "types": [
14259
+ "number"
14260
+ ]
14261
+ }
14262
+ },
14263
+ "required": [
14264
+ "name",
14265
+ "currentState",
14266
+ "states",
14267
+ "cooldown"
14268
+ ]
14269
+ }
14270
+ },
14271
+ "previousPosition": {
14272
+ "types": [
14273
+ "object"
14274
+ ],
14275
+ "properties": {
14276
+ "x": {
14277
+ "types": [
14278
+ "number"
14279
+ ]
14280
+ },
14281
+ "y": {
14282
+ "types": [
14283
+ "number"
14284
+ ]
14285
+ }
14286
+ },
14287
+ "required": [
14288
+ "x",
14289
+ "y"
14290
+ ]
14291
+ },
14292
+ "elevation": {
14293
+ "types": [
14294
+ "number"
14295
+ ]
14296
+ }
14297
+ },
14298
+ "required": [
14299
+ "id"
14300
+ ]
14301
+ }
14302
+ },
14303
+ "features": {
14304
+ "types": [
14305
+ "array"
14306
+ ],
14307
+ "description": "Direct feature data — forwarded to BattleBoard; takes priority over entity.",
14308
+ "items": {
14309
+ "types": [
14310
+ "object"
14311
+ ],
14312
+ "properties": {
14313
+ "id": {
14314
+ "types": [
14315
+ "string"
14316
+ ]
14317
+ },
14318
+ "x": {
14319
+ "types": [
14320
+ "number"
14321
+ ]
14322
+ },
14323
+ "y": {
14324
+ "types": [
14325
+ "number"
14326
+ ]
14327
+ },
14328
+ "z": {
14329
+ "types": [
14330
+ "number"
14331
+ ]
14332
+ },
14333
+ "type": {
14334
+ "types": [
14335
+ "string"
14336
+ ]
14337
+ },
14338
+ "sprite": {
14339
+ "types": [
14340
+ "object"
14341
+ ]
14342
+ },
14343
+ "assetUrl": {
14344
+ "types": [
14345
+ "object"
14346
+ ]
14347
+ },
14348
+ "color": {
14349
+ "types": [
14350
+ "string"
14351
+ ]
14352
+ },
14353
+ "elevation": {
14354
+ "types": [
14355
+ "number"
14356
+ ]
14357
+ }
14358
+ },
14359
+ "required": [
14360
+ "x",
14361
+ "y",
14362
+ "type"
14363
+ ]
14364
+ }
14365
+ },
14366
+ "assetManifest": {
14367
+ "types": [
14368
+ "string"
14369
+ ],
14370
+ "description": "Direct asset manifest — forwarded to BattleBoard; takes priority over entity."
14054
14371
  }
14055
14372
  }
14056
14373
  },
@@ -14086,6 +14403,323 @@
14086
14403
  ],
14087
14404
  "description": "Canvas render scale",
14088
14405
  "default": 0.45
14406
+ },
14407
+ "tiles": {
14408
+ "types": [
14409
+ "array"
14410
+ ],
14411
+ "description": "Direct tile data — forwarded to CastleBoard; takes priority over entity.",
14412
+ "items": {
14413
+ "types": [
14414
+ "object"
14415
+ ],
14416
+ "properties": {
14417
+ "id": {
14418
+ "types": [
14419
+ "string"
14420
+ ]
14421
+ },
14422
+ "x": {
14423
+ "types": [
14424
+ "number"
14425
+ ]
14426
+ },
14427
+ "y": {
14428
+ "types": [
14429
+ "number"
14430
+ ]
14431
+ },
14432
+ "z": {
14433
+ "types": [
14434
+ "number"
14435
+ ]
14436
+ },
14437
+ "terrain": {
14438
+ "types": [
14439
+ "string"
14440
+ ]
14441
+ },
14442
+ "type": {
14443
+ "types": [
14444
+ "string"
14445
+ ]
14446
+ },
14447
+ "terrainSprite": {
14448
+ "types": [
14449
+ "asset"
14450
+ ]
14451
+ },
14452
+ "passable": {
14453
+ "types": [
14454
+ "boolean"
14455
+ ]
14456
+ },
14457
+ "movementCost": {
14458
+ "types": [
14459
+ "number"
14460
+ ]
14461
+ },
14462
+ "tileType": {
14463
+ "types": [
14464
+ "string"
14465
+ ]
14466
+ },
14467
+ "elevation": {
14468
+ "types": [
14469
+ "number"
14470
+ ]
14471
+ }
14472
+ },
14473
+ "required": [
14474
+ "x",
14475
+ "y"
14476
+ ]
14477
+ }
14478
+ },
14479
+ "units": {
14480
+ "types": [
14481
+ "array"
14482
+ ],
14483
+ "description": "Direct unit data — forwarded to CastleBoard; takes priority over entity.",
14484
+ "items": {
14485
+ "types": [
14486
+ "object"
14487
+ ],
14488
+ "properties": {
14489
+ "id": {
14490
+ "types": [
14491
+ "string"
14492
+ ]
14493
+ },
14494
+ "position": {
14495
+ "types": [
14496
+ "object"
14497
+ ],
14498
+ "properties": {
14499
+ "x": {
14500
+ "types": [
14501
+ "number"
14502
+ ]
14503
+ },
14504
+ "y": {
14505
+ "types": [
14506
+ "number"
14507
+ ]
14508
+ }
14509
+ },
14510
+ "required": [
14511
+ "x",
14512
+ "y"
14513
+ ]
14514
+ },
14515
+ "x": {
14516
+ "types": [
14517
+ "number"
14518
+ ]
14519
+ },
14520
+ "y": {
14521
+ "types": [
14522
+ "number"
14523
+ ]
14524
+ },
14525
+ "z": {
14526
+ "types": [
14527
+ "number"
14528
+ ]
14529
+ },
14530
+ "sprite": {
14531
+ "types": [
14532
+ "object"
14533
+ ]
14534
+ },
14535
+ "unitType": {
14536
+ "types": [
14537
+ "string"
14538
+ ]
14539
+ },
14540
+ "heroId": {
14541
+ "types": [
14542
+ "string"
14543
+ ]
14544
+ },
14545
+ "name": {
14546
+ "types": [
14547
+ "string"
14548
+ ]
14549
+ },
14550
+ "team": {
14551
+ "types": [
14552
+ "string"
14553
+ ],
14554
+ "enumValues": [
14555
+ "player",
14556
+ "enemy",
14557
+ "neutral"
14558
+ ]
14559
+ },
14560
+ "faction": {
14561
+ "types": [
14562
+ "string"
14563
+ ],
14564
+ "enumValues": [
14565
+ "player",
14566
+ "enemy",
14567
+ "neutral"
14568
+ ]
14569
+ },
14570
+ "health": {
14571
+ "types": [
14572
+ "number"
14573
+ ]
14574
+ },
14575
+ "maxHealth": {
14576
+ "types": [
14577
+ "number"
14578
+ ]
14579
+ },
14580
+ "traits": {
14581
+ "types": [
14582
+ "array"
14583
+ ],
14584
+ "items": {
14585
+ "types": [
14586
+ "object"
14587
+ ],
14588
+ "properties": {
14589
+ "name": {
14590
+ "types": [
14591
+ "string"
14592
+ ]
14593
+ },
14594
+ "currentState": {
14595
+ "types": [
14596
+ "string"
14597
+ ]
14598
+ },
14599
+ "states": {
14600
+ "types": [
14601
+ "array"
14602
+ ],
14603
+ "items": {
14604
+ "types": [
14605
+ "string"
14606
+ ]
14607
+ }
14608
+ },
14609
+ "cooldown": {
14610
+ "types": [
14611
+ "number"
14612
+ ]
14613
+ }
14614
+ },
14615
+ "required": [
14616
+ "name",
14617
+ "currentState",
14618
+ "states",
14619
+ "cooldown"
14620
+ ]
14621
+ }
14622
+ },
14623
+ "previousPosition": {
14624
+ "types": [
14625
+ "object"
14626
+ ],
14627
+ "properties": {
14628
+ "x": {
14629
+ "types": [
14630
+ "number"
14631
+ ]
14632
+ },
14633
+ "y": {
14634
+ "types": [
14635
+ "number"
14636
+ ]
14637
+ }
14638
+ },
14639
+ "required": [
14640
+ "x",
14641
+ "y"
14642
+ ]
14643
+ },
14644
+ "elevation": {
14645
+ "types": [
14646
+ "number"
14647
+ ]
14648
+ }
14649
+ },
14650
+ "required": [
14651
+ "id"
14652
+ ]
14653
+ }
14654
+ },
14655
+ "features": {
14656
+ "types": [
14657
+ "array"
14658
+ ],
14659
+ "description": "Direct feature data — forwarded to CastleBoard; takes priority over entity.",
14660
+ "items": {
14661
+ "types": [
14662
+ "object"
14663
+ ],
14664
+ "properties": {
14665
+ "id": {
14666
+ "types": [
14667
+ "string"
14668
+ ]
14669
+ },
14670
+ "x": {
14671
+ "types": [
14672
+ "number"
14673
+ ]
14674
+ },
14675
+ "y": {
14676
+ "types": [
14677
+ "number"
14678
+ ]
14679
+ },
14680
+ "z": {
14681
+ "types": [
14682
+ "number"
14683
+ ]
14684
+ },
14685
+ "type": {
14686
+ "types": [
14687
+ "string"
14688
+ ]
14689
+ },
14690
+ "sprite": {
14691
+ "types": [
14692
+ "object"
14693
+ ]
14694
+ },
14695
+ "assetUrl": {
14696
+ "types": [
14697
+ "object"
14698
+ ]
14699
+ },
14700
+ "color": {
14701
+ "types": [
14702
+ "string"
14703
+ ]
14704
+ },
14705
+ "elevation": {
14706
+ "types": [
14707
+ "number"
14708
+ ]
14709
+ }
14710
+ },
14711
+ "required": [
14712
+ "x",
14713
+ "y",
14714
+ "type"
14715
+ ]
14716
+ }
14717
+ },
14718
+ "assetManifest": {
14719
+ "types": [
14720
+ "string"
14721
+ ],
14722
+ "description": "Direct asset manifest — forwarded to CastleBoard; takes priority over entity."
14089
14723
  }
14090
14724
  }
14091
14725
  },
@@ -14142,6 +14776,323 @@
14142
14776
  ],
14143
14777
  "description": "Allow selecting / moving ALL heroes (including enemy). For testing.",
14144
14778
  "default": false
14779
+ },
14780
+ "tiles": {
14781
+ "types": [
14782
+ "array"
14783
+ ],
14784
+ "description": "Direct tile data — forwarded to WorldMapBoard; takes priority over entity.",
14785
+ "items": {
14786
+ "types": [
14787
+ "object"
14788
+ ],
14789
+ "properties": {
14790
+ "id": {
14791
+ "types": [
14792
+ "string"
14793
+ ]
14794
+ },
14795
+ "x": {
14796
+ "types": [
14797
+ "number"
14798
+ ]
14799
+ },
14800
+ "y": {
14801
+ "types": [
14802
+ "number"
14803
+ ]
14804
+ },
14805
+ "z": {
14806
+ "types": [
14807
+ "number"
14808
+ ]
14809
+ },
14810
+ "terrain": {
14811
+ "types": [
14812
+ "string"
14813
+ ]
14814
+ },
14815
+ "type": {
14816
+ "types": [
14817
+ "string"
14818
+ ]
14819
+ },
14820
+ "terrainSprite": {
14821
+ "types": [
14822
+ "asset"
14823
+ ]
14824
+ },
14825
+ "passable": {
14826
+ "types": [
14827
+ "boolean"
14828
+ ]
14829
+ },
14830
+ "movementCost": {
14831
+ "types": [
14832
+ "number"
14833
+ ]
14834
+ },
14835
+ "tileType": {
14836
+ "types": [
14837
+ "string"
14838
+ ]
14839
+ },
14840
+ "elevation": {
14841
+ "types": [
14842
+ "number"
14843
+ ]
14844
+ }
14845
+ },
14846
+ "required": [
14847
+ "x",
14848
+ "y"
14849
+ ]
14850
+ }
14851
+ },
14852
+ "units": {
14853
+ "types": [
14854
+ "array"
14855
+ ],
14856
+ "description": "Direct unit data — forwarded to WorldMapBoard; takes priority over entity.",
14857
+ "items": {
14858
+ "types": [
14859
+ "object"
14860
+ ],
14861
+ "properties": {
14862
+ "id": {
14863
+ "types": [
14864
+ "string"
14865
+ ]
14866
+ },
14867
+ "position": {
14868
+ "types": [
14869
+ "object"
14870
+ ],
14871
+ "properties": {
14872
+ "x": {
14873
+ "types": [
14874
+ "number"
14875
+ ]
14876
+ },
14877
+ "y": {
14878
+ "types": [
14879
+ "number"
14880
+ ]
14881
+ }
14882
+ },
14883
+ "required": [
14884
+ "x",
14885
+ "y"
14886
+ ]
14887
+ },
14888
+ "x": {
14889
+ "types": [
14890
+ "number"
14891
+ ]
14892
+ },
14893
+ "y": {
14894
+ "types": [
14895
+ "number"
14896
+ ]
14897
+ },
14898
+ "z": {
14899
+ "types": [
14900
+ "number"
14901
+ ]
14902
+ },
14903
+ "sprite": {
14904
+ "types": [
14905
+ "object"
14906
+ ]
14907
+ },
14908
+ "unitType": {
14909
+ "types": [
14910
+ "string"
14911
+ ]
14912
+ },
14913
+ "heroId": {
14914
+ "types": [
14915
+ "string"
14916
+ ]
14917
+ },
14918
+ "name": {
14919
+ "types": [
14920
+ "string"
14921
+ ]
14922
+ },
14923
+ "team": {
14924
+ "types": [
14925
+ "string"
14926
+ ],
14927
+ "enumValues": [
14928
+ "player",
14929
+ "enemy",
14930
+ "neutral"
14931
+ ]
14932
+ },
14933
+ "faction": {
14934
+ "types": [
14935
+ "string"
14936
+ ],
14937
+ "enumValues": [
14938
+ "player",
14939
+ "enemy",
14940
+ "neutral"
14941
+ ]
14942
+ },
14943
+ "health": {
14944
+ "types": [
14945
+ "number"
14946
+ ]
14947
+ },
14948
+ "maxHealth": {
14949
+ "types": [
14950
+ "number"
14951
+ ]
14952
+ },
14953
+ "traits": {
14954
+ "types": [
14955
+ "array"
14956
+ ],
14957
+ "items": {
14958
+ "types": [
14959
+ "object"
14960
+ ],
14961
+ "properties": {
14962
+ "name": {
14963
+ "types": [
14964
+ "string"
14965
+ ]
14966
+ },
14967
+ "currentState": {
14968
+ "types": [
14969
+ "string"
14970
+ ]
14971
+ },
14972
+ "states": {
14973
+ "types": [
14974
+ "array"
14975
+ ],
14976
+ "items": {
14977
+ "types": [
14978
+ "string"
14979
+ ]
14980
+ }
14981
+ },
14982
+ "cooldown": {
14983
+ "types": [
14984
+ "number"
14985
+ ]
14986
+ }
14987
+ },
14988
+ "required": [
14989
+ "name",
14990
+ "currentState",
14991
+ "states",
14992
+ "cooldown"
14993
+ ]
14994
+ }
14995
+ },
14996
+ "previousPosition": {
14997
+ "types": [
14998
+ "object"
14999
+ ],
15000
+ "properties": {
15001
+ "x": {
15002
+ "types": [
15003
+ "number"
15004
+ ]
15005
+ },
15006
+ "y": {
15007
+ "types": [
15008
+ "number"
15009
+ ]
15010
+ }
15011
+ },
15012
+ "required": [
15013
+ "x",
15014
+ "y"
15015
+ ]
15016
+ },
15017
+ "elevation": {
15018
+ "types": [
15019
+ "number"
15020
+ ]
15021
+ }
15022
+ },
15023
+ "required": [
15024
+ "id"
15025
+ ]
15026
+ }
15027
+ },
15028
+ "features": {
15029
+ "types": [
15030
+ "array"
15031
+ ],
15032
+ "description": "Direct feature data — forwarded to WorldMapBoard; takes priority over entity.",
15033
+ "items": {
15034
+ "types": [
15035
+ "object"
15036
+ ],
15037
+ "properties": {
15038
+ "id": {
15039
+ "types": [
15040
+ "string"
15041
+ ]
15042
+ },
15043
+ "x": {
15044
+ "types": [
15045
+ "number"
15046
+ ]
15047
+ },
15048
+ "y": {
15049
+ "types": [
15050
+ "number"
15051
+ ]
15052
+ },
15053
+ "z": {
15054
+ "types": [
15055
+ "number"
15056
+ ]
15057
+ },
15058
+ "type": {
15059
+ "types": [
15060
+ "string"
15061
+ ]
15062
+ },
15063
+ "sprite": {
15064
+ "types": [
15065
+ "object"
15066
+ ]
15067
+ },
15068
+ "assetUrl": {
15069
+ "types": [
15070
+ "object"
15071
+ ]
15072
+ },
15073
+ "color": {
15074
+ "types": [
15075
+ "string"
15076
+ ]
15077
+ },
15078
+ "elevation": {
15079
+ "types": [
15080
+ "number"
15081
+ ]
15082
+ }
15083
+ },
15084
+ "required": [
15085
+ "x",
15086
+ "y",
15087
+ "type"
15088
+ ]
15089
+ }
15090
+ },
15091
+ "assetManifest": {
15092
+ "types": [
15093
+ "string"
15094
+ ],
15095
+ "description": "Direct asset manifest — forwarded to WorldMapBoard; takes priority over entity."
14145
15096
  }
14146
15097
  }
14147
15098
  },
@@ -24072,7 +25023,7 @@
24072
25023
  "asset"
24073
25024
  ],
24074
25025
  "description": "URL for the speaker portrait image",
24075
- "default": "https://almadar-kflow-assets.web.app/shared/characters/archetypes/00_base_model.png"
25026
+ "default": "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png"
24076
25027
  },
24077
25028
  "position": {
24078
25029
  "types": [
@@ -28125,14 +29076,15 @@
28125
29076
  "types": [
28126
29077
  "asset"
28127
29078
  ],
28128
- "description": "Background image URL"
29079
+ "description": "Background image URL",
29080
+ "default": "https://almadar-kflow-assets.web.app/shared/scenes/resonators.jpeg"
28129
29081
  },
28130
29082
  "assetBaseUrl": {
28131
29083
  "types": [
28132
29084
  "asset"
28133
29085
  ],
28134
29086
  "description": "Base URL prefix for asset URLs",
28135
- "default": ""
29087
+ "default": "https://almadar-kflow-assets.web.app/shared/"
28136
29088
  },
28137
29089
  "className": {
28138
29090
  "types": [
@@ -29873,7 +30825,8 @@
29873
30825
  "types": [
29874
30826
  "asset"
29875
30827
  ],
29876
- "description": "Background image URL tiled behind the isometric grid"
30828
+ "description": "Background image URL tiled behind the isometric grid",
30829
+ "default": "https://almadar-kflow-assets.web.app/shared/scenes/court.png"
29877
30830
  },
29878
30831
  "showMinimap": {
29879
30832
  "types": [
@@ -30185,7 +31138,8 @@
30185
31138
  "types": [
30186
31139
  "asset"
30187
31140
  ],
30188
- "description": "--- Remote asset loading ---"
31141
+ "description": "--- Remote asset loading ---",
31142
+ "default": "https://almadar-kflow-assets.web.app/shared/"
30189
31143
  },
30190
31144
  "assetManifest": {
30191
31145
  "types": [
@@ -30398,7 +31352,8 @@
30398
31352
  "types": [
30399
31353
  "asset"
30400
31354
  ],
30401
- "description": "Player sprite image URL"
31355
+ "description": "Player sprite image URL",
31356
+ "default": "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png"
30402
31357
  },
30403
31358
  "tileSprites": {
30404
31359
  "types": [
@@ -30415,14 +31370,15 @@
30415
31370
  "types": [
30416
31371
  "asset"
30417
31372
  ],
30418
- "description": "Background image URL"
31373
+ "description": "Background image URL",
31374
+ "default": "https://almadar-kflow-assets.web.app/shared/scenes/court.png"
30419
31375
  },
30420
31376
  "assetBaseUrl": {
30421
31377
  "types": [
30422
31378
  "asset"
30423
31379
  ],
30424
31380
  "description": "Base URL prefix for asset URLs",
30425
- "default": ""
31381
+ "default": "https://almadar-kflow-assets.web.app/shared/platformer/"
30426
31382
  },
30427
31383
  "leftEvent": {
30428
31384
  "types": [
@@ -31544,6 +32500,370 @@
31544
32500
  "kind": "entity",
31545
32501
  "cardinality": "collection"
31546
32502
  },
32503
+ "tiles": {
32504
+ "types": [
32505
+ "array"
32506
+ ],
32507
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
32508
+ "items": {
32509
+ "types": [
32510
+ "object"
32511
+ ],
32512
+ "properties": {
32513
+ "id": {
32514
+ "types": [
32515
+ "string"
32516
+ ]
32517
+ },
32518
+ "x": {
32519
+ "types": [
32520
+ "number"
32521
+ ]
32522
+ },
32523
+ "y": {
32524
+ "types": [
32525
+ "number"
32526
+ ]
32527
+ },
32528
+ "z": {
32529
+ "types": [
32530
+ "number"
32531
+ ]
32532
+ },
32533
+ "terrain": {
32534
+ "types": [
32535
+ "string"
32536
+ ]
32537
+ },
32538
+ "type": {
32539
+ "types": [
32540
+ "string"
32541
+ ]
32542
+ },
32543
+ "terrainSprite": {
32544
+ "types": [
32545
+ "asset"
32546
+ ]
32547
+ },
32548
+ "passable": {
32549
+ "types": [
32550
+ "boolean"
32551
+ ]
32552
+ },
32553
+ "movementCost": {
32554
+ "types": [
32555
+ "number"
32556
+ ]
32557
+ },
32558
+ "tileType": {
32559
+ "types": [
32560
+ "string"
32561
+ ]
32562
+ },
32563
+ "elevation": {
32564
+ "types": [
32565
+ "number"
32566
+ ]
32567
+ }
32568
+ },
32569
+ "required": [
32570
+ "x",
32571
+ "y"
32572
+ ]
32573
+ }
32574
+ },
32575
+ "units": {
32576
+ "types": [
32577
+ "array"
32578
+ ],
32579
+ "description": "Direct unit data — takes priority over entity-derived units.",
32580
+ "items": {
32581
+ "types": [
32582
+ "object"
32583
+ ],
32584
+ "properties": {
32585
+ "id": {
32586
+ "types": [
32587
+ "string"
32588
+ ]
32589
+ },
32590
+ "position": {
32591
+ "types": [
32592
+ "object"
32593
+ ],
32594
+ "properties": {
32595
+ "x": {
32596
+ "types": [
32597
+ "number"
32598
+ ]
32599
+ },
32600
+ "y": {
32601
+ "types": [
32602
+ "number"
32603
+ ]
32604
+ }
32605
+ },
32606
+ "required": [
32607
+ "x",
32608
+ "y"
32609
+ ]
32610
+ },
32611
+ "x": {
32612
+ "types": [
32613
+ "number"
32614
+ ]
32615
+ },
32616
+ "y": {
32617
+ "types": [
32618
+ "number"
32619
+ ]
32620
+ },
32621
+ "z": {
32622
+ "types": [
32623
+ "number"
32624
+ ]
32625
+ },
32626
+ "sprite": {
32627
+ "types": [
32628
+ "asset"
32629
+ ]
32630
+ },
32631
+ "unitType": {
32632
+ "types": [
32633
+ "string"
32634
+ ]
32635
+ },
32636
+ "heroId": {
32637
+ "types": [
32638
+ "string"
32639
+ ]
32640
+ },
32641
+ "name": {
32642
+ "types": [
32643
+ "string"
32644
+ ]
32645
+ },
32646
+ "team": {
32647
+ "types": [
32648
+ "string"
32649
+ ],
32650
+ "enumValues": [
32651
+ "player",
32652
+ "enemy",
32653
+ "neutral"
32654
+ ]
32655
+ },
32656
+ "faction": {
32657
+ "types": [
32658
+ "string"
32659
+ ],
32660
+ "enumValues": [
32661
+ "player",
32662
+ "enemy",
32663
+ "neutral"
32664
+ ]
32665
+ },
32666
+ "health": {
32667
+ "types": [
32668
+ "number"
32669
+ ]
32670
+ },
32671
+ "maxHealth": {
32672
+ "types": [
32673
+ "number"
32674
+ ]
32675
+ },
32676
+ "traits": {
32677
+ "types": [
32678
+ "array"
32679
+ ],
32680
+ "items": {
32681
+ "types": [
32682
+ "object"
32683
+ ],
32684
+ "properties": {
32685
+ "name": {
32686
+ "types": [
32687
+ "string"
32688
+ ]
32689
+ },
32690
+ "currentState": {
32691
+ "types": [
32692
+ "string"
32693
+ ]
32694
+ },
32695
+ "states": {
32696
+ "types": [
32697
+ "array"
32698
+ ],
32699
+ "items": {
32700
+ "types": [
32701
+ "string"
32702
+ ]
32703
+ }
32704
+ },
32705
+ "cooldown": {
32706
+ "types": [
32707
+ "number"
32708
+ ]
32709
+ }
32710
+ },
32711
+ "required": [
32712
+ "name",
32713
+ "currentState",
32714
+ "states",
32715
+ "cooldown"
32716
+ ]
32717
+ }
32718
+ },
32719
+ "previousPosition": {
32720
+ "types": [
32721
+ "object"
32722
+ ],
32723
+ "properties": {
32724
+ "x": {
32725
+ "types": [
32726
+ "number"
32727
+ ]
32728
+ },
32729
+ "y": {
32730
+ "types": [
32731
+ "number"
32732
+ ]
32733
+ }
32734
+ },
32735
+ "required": [
32736
+ "x",
32737
+ "y"
32738
+ ]
32739
+ },
32740
+ "elevation": {
32741
+ "types": [
32742
+ "number"
32743
+ ]
32744
+ }
32745
+ },
32746
+ "required": [
32747
+ "id"
32748
+ ]
32749
+ }
32750
+ },
32751
+ "features": {
32752
+ "types": [
32753
+ "array"
32754
+ ],
32755
+ "description": "Direct feature data — takes priority over entity-derived features.",
32756
+ "items": {
32757
+ "types": [
32758
+ "object"
32759
+ ],
32760
+ "properties": {
32761
+ "id": {
32762
+ "types": [
32763
+ "string"
32764
+ ]
32765
+ },
32766
+ "x": {
32767
+ "types": [
32768
+ "number"
32769
+ ]
32770
+ },
32771
+ "y": {
32772
+ "types": [
32773
+ "number"
32774
+ ]
32775
+ },
32776
+ "z": {
32777
+ "types": [
32778
+ "number"
32779
+ ]
32780
+ },
32781
+ "type": {
32782
+ "types": [
32783
+ "string"
32784
+ ]
32785
+ },
32786
+ "sprite": {
32787
+ "types": [
32788
+ "asset"
32789
+ ]
32790
+ },
32791
+ "assetUrl": {
32792
+ "types": [
32793
+ "asset"
32794
+ ]
32795
+ },
32796
+ "color": {
32797
+ "types": [
32798
+ "string"
32799
+ ]
32800
+ },
32801
+ "elevation": {
32802
+ "types": [
32803
+ "number"
32804
+ ]
32805
+ }
32806
+ },
32807
+ "required": [
32808
+ "x",
32809
+ "y",
32810
+ "type"
32811
+ ]
32812
+ }
32813
+ },
32814
+ "assetManifest": {
32815
+ "types": [
32816
+ "object"
32817
+ ],
32818
+ "description": "Direct asset manifest — takes priority over entity-derived manifest.",
32819
+ "properties": {
32820
+ "baseUrl": {
32821
+ "types": [
32822
+ "asset"
32823
+ ]
32824
+ },
32825
+ "terrains": {
32826
+ "types": [
32827
+ "object"
32828
+ ],
32829
+ "mapValue": {
32830
+ "types": [
32831
+ "asset"
32832
+ ]
32833
+ }
32834
+ },
32835
+ "units": {
32836
+ "types": [
32837
+ "object"
32838
+ ],
32839
+ "mapValue": {
32840
+ "types": [
32841
+ "asset"
32842
+ ]
32843
+ }
32844
+ },
32845
+ "features": {
32846
+ "types": [
32847
+ "object"
32848
+ ],
32849
+ "mapValue": {
32850
+ "types": [
32851
+ "asset"
32852
+ ]
32853
+ }
32854
+ },
32855
+ "effects": {
32856
+ "types": [
32857
+ "object"
32858
+ ],
32859
+ "mapValue": {
32860
+ "types": [
32861
+ "asset"
32862
+ ]
32863
+ }
32864
+ }
32865
+ }
32866
+ },
31547
32867
  "scale": {
31548
32868
  "types": [
31549
32869
  "number"
@@ -32571,13 +33891,15 @@
32571
33891
  "types": [
32572
33892
  "asset"
32573
33893
  ],
32574
- "description": "--- Remote asset loading ---"
33894
+ "description": "--- Remote asset loading ---",
33895
+ "default": "https://almadar-kflow-assets.web.app/shared/effects/gas/gas00.png"
32575
33896
  },
32576
33897
  "assetBaseUrl": {
32577
33898
  "types": [
32578
33899
  "asset"
32579
33900
  ],
32580
- "description": "Base URL for remote assets. Prepended to relative effectSpriteUrl paths."
33901
+ "description": "Base URL for remote assets. Prepended to relative effectSpriteUrl paths.",
33902
+ "default": "https://almadar-kflow-assets.web.app/shared/effects/"
32581
33903
  },
32582
33904
  "assetManifest": {
32583
33905
  "types": [
@@ -32872,6 +34194,360 @@
32872
34194
  "kind": "entity",
32873
34195
  "cardinality": "collection"
32874
34196
  },
34197
+ "tiles": {
34198
+ "types": [
34199
+ "array"
34200
+ ],
34201
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
34202
+ "items": {
34203
+ "types": [
34204
+ "object"
34205
+ ],
34206
+ "properties": {
34207
+ "id": {
34208
+ "types": [
34209
+ "string"
34210
+ ]
34211
+ },
34212
+ "x": {
34213
+ "types": [
34214
+ "number"
34215
+ ]
34216
+ },
34217
+ "y": {
34218
+ "types": [
34219
+ "number"
34220
+ ]
34221
+ },
34222
+ "z": {
34223
+ "types": [
34224
+ "number"
34225
+ ]
34226
+ },
34227
+ "terrain": {
34228
+ "types": [
34229
+ "string"
34230
+ ]
34231
+ },
34232
+ "type": {
34233
+ "types": [
34234
+ "string"
34235
+ ]
34236
+ },
34237
+ "terrainSprite": {
34238
+ "types": [
34239
+ "asset"
34240
+ ]
34241
+ },
34242
+ "passable": {
34243
+ "types": [
34244
+ "boolean"
34245
+ ]
34246
+ },
34247
+ "movementCost": {
34248
+ "types": [
34249
+ "number"
34250
+ ]
34251
+ },
34252
+ "tileType": {
34253
+ "types": [
34254
+ "string"
34255
+ ]
34256
+ },
34257
+ "elevation": {
34258
+ "types": [
34259
+ "number"
34260
+ ]
34261
+ }
34262
+ },
34263
+ "required": [
34264
+ "x",
34265
+ "y"
34266
+ ]
34267
+ }
34268
+ },
34269
+ "units": {
34270
+ "types": [
34271
+ "array"
34272
+ ],
34273
+ "description": "Direct unit data — takes priority over entity-derived units.",
34274
+ "items": {
34275
+ "types": [
34276
+ "object"
34277
+ ],
34278
+ "properties": {
34279
+ "id": {
34280
+ "types": [
34281
+ "string"
34282
+ ]
34283
+ },
34284
+ "position": {
34285
+ "types": [
34286
+ "object"
34287
+ ],
34288
+ "properties": {
34289
+ "x": {
34290
+ "types": [
34291
+ "number"
34292
+ ]
34293
+ },
34294
+ "y": {
34295
+ "types": [
34296
+ "number"
34297
+ ]
34298
+ }
34299
+ },
34300
+ "required": [
34301
+ "x",
34302
+ "y"
34303
+ ]
34304
+ },
34305
+ "x": {
34306
+ "types": [
34307
+ "number"
34308
+ ]
34309
+ },
34310
+ "y": {
34311
+ "types": [
34312
+ "number"
34313
+ ]
34314
+ },
34315
+ "z": {
34316
+ "types": [
34317
+ "number"
34318
+ ]
34319
+ },
34320
+ "sprite": {
34321
+ "types": [
34322
+ "asset"
34323
+ ]
34324
+ },
34325
+ "unitType": {
34326
+ "types": [
34327
+ "string"
34328
+ ]
34329
+ },
34330
+ "heroId": {
34331
+ "types": [
34332
+ "string"
34333
+ ]
34334
+ },
34335
+ "name": {
34336
+ "types": [
34337
+ "string"
34338
+ ]
34339
+ },
34340
+ "team": {
34341
+ "types": [
34342
+ "string"
34343
+ ],
34344
+ "enumValues": [
34345
+ "player",
34346
+ "enemy",
34347
+ "neutral"
34348
+ ]
34349
+ },
34350
+ "faction": {
34351
+ "types": [
34352
+ "string"
34353
+ ],
34354
+ "enumValues": [
34355
+ "player",
34356
+ "enemy",
34357
+ "neutral"
34358
+ ]
34359
+ },
34360
+ "health": {
34361
+ "types": [
34362
+ "number"
34363
+ ]
34364
+ },
34365
+ "maxHealth": {
34366
+ "types": [
34367
+ "number"
34368
+ ]
34369
+ },
34370
+ "traits": {
34371
+ "types": [
34372
+ "array"
34373
+ ],
34374
+ "items": {
34375
+ "types": [
34376
+ "object"
34377
+ ],
34378
+ "properties": {
34379
+ "name": {
34380
+ "types": [
34381
+ "string"
34382
+ ]
34383
+ },
34384
+ "currentState": {
34385
+ "types": [
34386
+ "string"
34387
+ ]
34388
+ },
34389
+ "states": {
34390
+ "types": [
34391
+ "array"
34392
+ ],
34393
+ "items": {
34394
+ "types": [
34395
+ "string"
34396
+ ]
34397
+ }
34398
+ },
34399
+ "cooldown": {
34400
+ "types": [
34401
+ "number"
34402
+ ]
34403
+ }
34404
+ },
34405
+ "required": [
34406
+ "name",
34407
+ "currentState",
34408
+ "states",
34409
+ "cooldown"
34410
+ ]
34411
+ }
34412
+ },
34413
+ "previousPosition": {
34414
+ "types": [
34415
+ "object"
34416
+ ],
34417
+ "properties": {
34418
+ "x": {
34419
+ "types": [
34420
+ "number"
34421
+ ]
34422
+ },
34423
+ "y": {
34424
+ "types": [
34425
+ "number"
34426
+ ]
34427
+ }
34428
+ },
34429
+ "required": [
34430
+ "x",
34431
+ "y"
34432
+ ]
34433
+ },
34434
+ "elevation": {
34435
+ "types": [
34436
+ "number"
34437
+ ]
34438
+ }
34439
+ },
34440
+ "required": [
34441
+ "id"
34442
+ ]
34443
+ }
34444
+ },
34445
+ "features": {
34446
+ "types": [
34447
+ "array"
34448
+ ],
34449
+ "description": "Direct feature data — takes priority over entity-derived features.",
34450
+ "items": {
34451
+ "types": [
34452
+ "object"
34453
+ ],
34454
+ "properties": {
34455
+ "id": {
34456
+ "types": [
34457
+ "string"
34458
+ ]
34459
+ },
34460
+ "x": {
34461
+ "types": [
34462
+ "number"
34463
+ ]
34464
+ },
34465
+ "y": {
34466
+ "types": [
34467
+ "number"
34468
+ ]
34469
+ },
34470
+ "z": {
34471
+ "types": [
34472
+ "number"
34473
+ ]
34474
+ },
34475
+ "type": {
34476
+ "types": [
34477
+ "string"
34478
+ ]
34479
+ },
34480
+ "sprite": {
34481
+ "types": [
34482
+ "asset"
34483
+ ]
34484
+ },
34485
+ "assetUrl": {
34486
+ "types": [
34487
+ "asset"
34488
+ ]
34489
+ },
34490
+ "color": {
34491
+ "types": [
34492
+ "string"
34493
+ ]
34494
+ },
34495
+ "elevation": {
34496
+ "types": [
34497
+ "number"
34498
+ ]
34499
+ }
34500
+ },
34501
+ "required": [
34502
+ "x",
34503
+ "y",
34504
+ "type"
34505
+ ]
34506
+ }
34507
+ },
34508
+ "assetManifest": {
34509
+ "types": [
34510
+ "object"
34511
+ ],
34512
+ "description": "Direct asset manifest — takes priority over entity-derived manifest.",
34513
+ "properties": {
34514
+ "baseUrl": {
34515
+ "types": [
34516
+ "asset"
34517
+ ]
34518
+ },
34519
+ "terrains": {
34520
+ "types": [
34521
+ "object"
34522
+ ],
34523
+ "mapValue": {
34524
+ "types": [
34525
+ "asset"
34526
+ ]
34527
+ }
34528
+ },
34529
+ "units": {
34530
+ "types": [
34531
+ "object"
34532
+ ],
34533
+ "mapValue": {
34534
+ "types": [
34535
+ "asset"
34536
+ ]
34537
+ }
34538
+ },
34539
+ "features": {
34540
+ "types": [
34541
+ "object"
34542
+ ],
34543
+ "mapValue": {
34544
+ "types": [
34545
+ "asset"
34546
+ ]
34547
+ }
34548
+ }
34549
+ }
34550
+ },
32875
34551
  "scale": {
32876
34552
  "types": [
32877
34553
  "number"
@@ -35557,107 +37233,424 @@
35557
37233
  }
35558
37234
  ]
35559
37235
  },
35560
- "stateStyles": {
37236
+ "stateStyles": {
37237
+ "types": [
37238
+ "object"
37239
+ ],
37240
+ "description": "Custom state styles passed to StateIndicator",
37241
+ "mapValue": {
37242
+ "types": [
37243
+ "object"
37244
+ ],
37245
+ "properties": {
37246
+ "icon": {
37247
+ "types": [
37248
+ "icon",
37249
+ "string"
37250
+ ]
37251
+ },
37252
+ "bgClass": {
37253
+ "types": [
37254
+ "string"
37255
+ ]
37256
+ }
37257
+ },
37258
+ "required": [
37259
+ "icon",
37260
+ "bgClass"
37261
+ ]
37262
+ }
37263
+ },
37264
+ "className": {
37265
+ "types": [
37266
+ "string"
37267
+ ],
37268
+ "description": "Additional CSS classes"
37269
+ },
37270
+ "isLoading": {
37271
+ "types": [
37272
+ "boolean"
37273
+ ],
37274
+ "description": "Loading state"
37275
+ },
37276
+ "error": {
37277
+ "types": [
37278
+ "object"
37279
+ ],
37280
+ "description": "Error state",
37281
+ "properties": {
37282
+ "message": {
37283
+ "types": [
37284
+ "string"
37285
+ ]
37286
+ },
37287
+ "name": {
37288
+ "types": [
37289
+ "string"
37290
+ ]
37291
+ },
37292
+ "code": {
37293
+ "types": [
37294
+ "string"
37295
+ ]
37296
+ },
37297
+ "stack": {
37298
+ "types": [
37299
+ "string"
37300
+ ]
37301
+ }
37302
+ },
37303
+ "propertyRequired": [
37304
+ "message"
37305
+ ]
37306
+ },
37307
+ "entity": {
37308
+ "types": [
37309
+ "string"
37310
+ ],
37311
+ "description": "Entity name for schema-driven auto-fetch"
37312
+ }
37313
+ }
37314
+ },
37315
+ "uncontrolled-battle-board": {
37316
+ "type": "uncontrolled-battle-board",
37317
+ "category": "game",
37318
+ "tier": "organisms",
37319
+ "family": "game",
37320
+ "description": "UncontrolledBattleBoard Thin wrapper that composes `useBattleState` + `BattleBoard` for self-managing game state. Accepts `initialUnits` instead of the controlled-mode fields and manages units, phase, turn, gameResult, and selectedUnitId internally via the hook. Use this component when you want the BattleBoard to manage its own game logic (e.g. in Storybook, prototypes, or simple integrations). For Orbital trait integration, use `BattleBoard` directly in controlled mode.",
37321
+ "suggestedFor": [
37322
+ "uncontrolled",
37323
+ "battle",
37324
+ "board",
37325
+ "uncontrolled battle board"
37326
+ ],
37327
+ "typicalSize": "large",
37328
+ "propsSchema": {
37329
+ "entity": {
37330
+ "types": [
37331
+ "object",
37332
+ "array"
37333
+ ],
37334
+ "description": "Single board-state entity row (or array). The internal `useBattleState`",
37335
+ "kind": "entity",
37336
+ "cardinality": "collection"
37337
+ },
37338
+ "tiles": {
37339
+ "types": [
37340
+ "array"
37341
+ ],
37342
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
37343
+ "items": {
37344
+ "types": [
37345
+ "object"
37346
+ ],
37347
+ "properties": {
37348
+ "id": {
37349
+ "types": [
37350
+ "string"
37351
+ ]
37352
+ },
37353
+ "x": {
37354
+ "types": [
37355
+ "number"
37356
+ ]
37357
+ },
37358
+ "y": {
37359
+ "types": [
37360
+ "number"
37361
+ ]
37362
+ },
37363
+ "z": {
37364
+ "types": [
37365
+ "number"
37366
+ ]
37367
+ },
37368
+ "terrain": {
37369
+ "types": [
37370
+ "string"
37371
+ ]
37372
+ },
37373
+ "type": {
37374
+ "types": [
37375
+ "string"
37376
+ ]
37377
+ },
37378
+ "terrainSprite": {
37379
+ "types": [
37380
+ "asset"
37381
+ ]
37382
+ },
37383
+ "passable": {
37384
+ "types": [
37385
+ "boolean"
37386
+ ]
37387
+ },
37388
+ "movementCost": {
37389
+ "types": [
37390
+ "number"
37391
+ ]
37392
+ },
37393
+ "tileType": {
37394
+ "types": [
37395
+ "string"
37396
+ ]
37397
+ },
37398
+ "elevation": {
37399
+ "types": [
37400
+ "number"
37401
+ ]
37402
+ }
37403
+ },
37404
+ "required": [
37405
+ "x",
37406
+ "y"
37407
+ ]
37408
+ }
37409
+ },
37410
+ "units": {
37411
+ "types": [
37412
+ "array"
37413
+ ],
37414
+ "description": "Direct unit data — takes priority over entity-derived units.",
37415
+ "items": {
37416
+ "types": [
37417
+ "object"
37418
+ ],
37419
+ "properties": {
37420
+ "id": {
37421
+ "types": [
37422
+ "string"
37423
+ ]
37424
+ },
37425
+ "position": {
37426
+ "types": [
37427
+ "object"
37428
+ ],
37429
+ "properties": {
37430
+ "x": {
37431
+ "types": [
37432
+ "number"
37433
+ ]
37434
+ },
37435
+ "y": {
37436
+ "types": [
37437
+ "number"
37438
+ ]
37439
+ }
37440
+ },
37441
+ "required": [
37442
+ "x",
37443
+ "y"
37444
+ ]
37445
+ },
37446
+ "x": {
37447
+ "types": [
37448
+ "number"
37449
+ ]
37450
+ },
37451
+ "y": {
37452
+ "types": [
37453
+ "number"
37454
+ ]
37455
+ },
37456
+ "z": {
37457
+ "types": [
37458
+ "number"
37459
+ ]
37460
+ },
37461
+ "sprite": {
37462
+ "types": [
37463
+ "object"
37464
+ ]
37465
+ },
37466
+ "unitType": {
37467
+ "types": [
37468
+ "string"
37469
+ ]
37470
+ },
37471
+ "heroId": {
37472
+ "types": [
37473
+ "string"
37474
+ ]
37475
+ },
37476
+ "name": {
37477
+ "types": [
37478
+ "string"
37479
+ ]
37480
+ },
37481
+ "team": {
37482
+ "types": [
37483
+ "string"
37484
+ ],
37485
+ "enumValues": [
37486
+ "player",
37487
+ "enemy",
37488
+ "neutral"
37489
+ ]
37490
+ },
37491
+ "faction": {
37492
+ "types": [
37493
+ "string"
37494
+ ],
37495
+ "enumValues": [
37496
+ "player",
37497
+ "enemy",
37498
+ "neutral"
37499
+ ]
37500
+ },
37501
+ "health": {
37502
+ "types": [
37503
+ "number"
37504
+ ]
37505
+ },
37506
+ "maxHealth": {
37507
+ "types": [
37508
+ "number"
37509
+ ]
37510
+ },
37511
+ "traits": {
37512
+ "types": [
37513
+ "array"
37514
+ ],
37515
+ "items": {
37516
+ "types": [
37517
+ "object"
37518
+ ],
37519
+ "properties": {
37520
+ "name": {
37521
+ "types": [
37522
+ "string"
37523
+ ]
37524
+ },
37525
+ "currentState": {
37526
+ "types": [
37527
+ "string"
37528
+ ]
37529
+ },
37530
+ "states": {
37531
+ "types": [
37532
+ "array"
37533
+ ],
37534
+ "items": {
37535
+ "types": [
37536
+ "string"
37537
+ ]
37538
+ }
37539
+ },
37540
+ "cooldown": {
37541
+ "types": [
37542
+ "number"
37543
+ ]
37544
+ }
37545
+ },
37546
+ "required": [
37547
+ "name",
37548
+ "currentState",
37549
+ "states",
37550
+ "cooldown"
37551
+ ]
37552
+ }
37553
+ },
37554
+ "previousPosition": {
37555
+ "types": [
37556
+ "object"
37557
+ ],
37558
+ "properties": {
37559
+ "x": {
37560
+ "types": [
37561
+ "number"
37562
+ ]
37563
+ },
37564
+ "y": {
37565
+ "types": [
37566
+ "number"
37567
+ ]
37568
+ }
37569
+ },
37570
+ "required": [
37571
+ "x",
37572
+ "y"
37573
+ ]
37574
+ },
37575
+ "elevation": {
37576
+ "types": [
37577
+ "number"
37578
+ ]
37579
+ }
37580
+ },
37581
+ "required": [
37582
+ "id"
37583
+ ]
37584
+ }
37585
+ },
37586
+ "features": {
35561
37587
  "types": [
35562
- "object"
37588
+ "array"
35563
37589
  ],
35564
- "description": "Custom state styles passed to StateIndicator",
35565
- "mapValue": {
37590
+ "description": "Direct feature data takes priority over entity-derived features.",
37591
+ "items": {
35566
37592
  "types": [
35567
37593
  "object"
35568
37594
  ],
35569
37595
  "properties": {
35570
- "icon": {
37596
+ "id": {
35571
37597
  "types": [
35572
- "icon",
35573
37598
  "string"
35574
37599
  ]
35575
37600
  },
35576
- "bgClass": {
37601
+ "x": {
37602
+ "types": [
37603
+ "number"
37604
+ ]
37605
+ },
37606
+ "y": {
37607
+ "types": [
37608
+ "number"
37609
+ ]
37610
+ },
37611
+ "z": {
37612
+ "types": [
37613
+ "number"
37614
+ ]
37615
+ },
37616
+ "type": {
37617
+ "types": [
37618
+ "string"
37619
+ ]
37620
+ },
37621
+ "sprite": {
37622
+ "types": [
37623
+ "object"
37624
+ ]
37625
+ },
37626
+ "assetUrl": {
37627
+ "types": [
37628
+ "object"
37629
+ ]
37630
+ },
37631
+ "color": {
35577
37632
  "types": [
35578
37633
  "string"
35579
37634
  ]
37635
+ },
37636
+ "elevation": {
37637
+ "types": [
37638
+ "number"
37639
+ ]
35580
37640
  }
35581
37641
  },
35582
37642
  "required": [
35583
- "icon",
35584
- "bgClass"
37643
+ "x",
37644
+ "y",
37645
+ "type"
35585
37646
  ]
35586
37647
  }
35587
37648
  },
35588
- "className": {
35589
- "types": [
35590
- "string"
35591
- ],
35592
- "description": "Additional CSS classes"
35593
- },
35594
- "isLoading": {
35595
- "types": [
35596
- "boolean"
35597
- ],
35598
- "description": "Loading state"
35599
- },
35600
- "error": {
35601
- "types": [
35602
- "object"
35603
- ],
35604
- "description": "Error state",
35605
- "properties": {
35606
- "message": {
35607
- "types": [
35608
- "string"
35609
- ]
35610
- },
35611
- "name": {
35612
- "types": [
35613
- "string"
35614
- ]
35615
- },
35616
- "code": {
35617
- "types": [
35618
- "string"
35619
- ]
35620
- },
35621
- "stack": {
35622
- "types": [
35623
- "string"
35624
- ]
35625
- }
35626
- },
35627
- "propertyRequired": [
35628
- "message"
35629
- ]
35630
- },
35631
- "entity": {
37649
+ "assetManifest": {
35632
37650
  "types": [
35633
37651
  "string"
35634
37652
  ],
35635
- "description": "Entity name for schema-driven auto-fetch"
35636
- }
35637
- }
35638
- },
35639
- "uncontrolled-battle-board": {
35640
- "type": "uncontrolled-battle-board",
35641
- "category": "game",
35642
- "tier": "organisms",
35643
- "family": "game",
35644
- "description": "UncontrolledBattleBoard Thin wrapper that composes `useBattleState` + `BattleBoard` for self-managing game state. Accepts `initialUnits` instead of the controlled-mode fields and manages units, phase, turn, gameResult, and selectedUnitId internally via the hook. Use this component when you want the BattleBoard to manage its own game logic (e.g. in Storybook, prototypes, or simple integrations). For Orbital trait integration, use `BattleBoard` directly in controlled mode.",
35645
- "suggestedFor": [
35646
- "uncontrolled",
35647
- "battle",
35648
- "board",
35649
- "uncontrolled battle board"
35650
- ],
35651
- "typicalSize": "large",
35652
- "propsSchema": {
35653
- "entity": {
35654
- "types": [
35655
- "object",
35656
- "array"
35657
- ],
35658
- "description": "Single board-state entity row (or array). The internal `useBattleState`",
35659
- "kind": "entity",
35660
- "cardinality": "collection"
37653
+ "description": "Direct asset manifest — takes priority over entity-derived manifest."
35661
37654
  }
35662
37655
  }
35663
37656
  },
@@ -35727,6 +37720,360 @@
35727
37720
  "kind": "entity",
35728
37721
  "cardinality": "collection"
35729
37722
  },
37723
+ "tiles": {
37724
+ "types": [
37725
+ "array"
37726
+ ],
37727
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
37728
+ "items": {
37729
+ "types": [
37730
+ "object"
37731
+ ],
37732
+ "properties": {
37733
+ "id": {
37734
+ "types": [
37735
+ "string"
37736
+ ]
37737
+ },
37738
+ "x": {
37739
+ "types": [
37740
+ "number"
37741
+ ]
37742
+ },
37743
+ "y": {
37744
+ "types": [
37745
+ "number"
37746
+ ]
37747
+ },
37748
+ "z": {
37749
+ "types": [
37750
+ "number"
37751
+ ]
37752
+ },
37753
+ "terrain": {
37754
+ "types": [
37755
+ "string"
37756
+ ]
37757
+ },
37758
+ "type": {
37759
+ "types": [
37760
+ "string"
37761
+ ]
37762
+ },
37763
+ "terrainSprite": {
37764
+ "types": [
37765
+ "asset"
37766
+ ]
37767
+ },
37768
+ "passable": {
37769
+ "types": [
37770
+ "boolean"
37771
+ ]
37772
+ },
37773
+ "movementCost": {
37774
+ "types": [
37775
+ "number"
37776
+ ]
37777
+ },
37778
+ "tileType": {
37779
+ "types": [
37780
+ "string"
37781
+ ]
37782
+ },
37783
+ "elevation": {
37784
+ "types": [
37785
+ "number"
37786
+ ]
37787
+ }
37788
+ },
37789
+ "required": [
37790
+ "x",
37791
+ "y"
37792
+ ]
37793
+ }
37794
+ },
37795
+ "units": {
37796
+ "types": [
37797
+ "array"
37798
+ ],
37799
+ "description": "Direct unit data — takes priority over entity-derived units.",
37800
+ "items": {
37801
+ "types": [
37802
+ "object"
37803
+ ],
37804
+ "properties": {
37805
+ "id": {
37806
+ "types": [
37807
+ "string"
37808
+ ]
37809
+ },
37810
+ "position": {
37811
+ "types": [
37812
+ "object"
37813
+ ],
37814
+ "properties": {
37815
+ "x": {
37816
+ "types": [
37817
+ "number"
37818
+ ]
37819
+ },
37820
+ "y": {
37821
+ "types": [
37822
+ "number"
37823
+ ]
37824
+ }
37825
+ },
37826
+ "required": [
37827
+ "x",
37828
+ "y"
37829
+ ]
37830
+ },
37831
+ "x": {
37832
+ "types": [
37833
+ "number"
37834
+ ]
37835
+ },
37836
+ "y": {
37837
+ "types": [
37838
+ "number"
37839
+ ]
37840
+ },
37841
+ "z": {
37842
+ "types": [
37843
+ "number"
37844
+ ]
37845
+ },
37846
+ "sprite": {
37847
+ "types": [
37848
+ "asset"
37849
+ ]
37850
+ },
37851
+ "unitType": {
37852
+ "types": [
37853
+ "string"
37854
+ ]
37855
+ },
37856
+ "heroId": {
37857
+ "types": [
37858
+ "string"
37859
+ ]
37860
+ },
37861
+ "name": {
37862
+ "types": [
37863
+ "string"
37864
+ ]
37865
+ },
37866
+ "team": {
37867
+ "types": [
37868
+ "string"
37869
+ ],
37870
+ "enumValues": [
37871
+ "player",
37872
+ "enemy",
37873
+ "neutral"
37874
+ ]
37875
+ },
37876
+ "faction": {
37877
+ "types": [
37878
+ "string"
37879
+ ],
37880
+ "enumValues": [
37881
+ "player",
37882
+ "enemy",
37883
+ "neutral"
37884
+ ]
37885
+ },
37886
+ "health": {
37887
+ "types": [
37888
+ "number"
37889
+ ]
37890
+ },
37891
+ "maxHealth": {
37892
+ "types": [
37893
+ "number"
37894
+ ]
37895
+ },
37896
+ "traits": {
37897
+ "types": [
37898
+ "array"
37899
+ ],
37900
+ "items": {
37901
+ "types": [
37902
+ "object"
37903
+ ],
37904
+ "properties": {
37905
+ "name": {
37906
+ "types": [
37907
+ "string"
37908
+ ]
37909
+ },
37910
+ "currentState": {
37911
+ "types": [
37912
+ "string"
37913
+ ]
37914
+ },
37915
+ "states": {
37916
+ "types": [
37917
+ "array"
37918
+ ],
37919
+ "items": {
37920
+ "types": [
37921
+ "string"
37922
+ ]
37923
+ }
37924
+ },
37925
+ "cooldown": {
37926
+ "types": [
37927
+ "number"
37928
+ ]
37929
+ }
37930
+ },
37931
+ "required": [
37932
+ "name",
37933
+ "currentState",
37934
+ "states",
37935
+ "cooldown"
37936
+ ]
37937
+ }
37938
+ },
37939
+ "previousPosition": {
37940
+ "types": [
37941
+ "object"
37942
+ ],
37943
+ "properties": {
37944
+ "x": {
37945
+ "types": [
37946
+ "number"
37947
+ ]
37948
+ },
37949
+ "y": {
37950
+ "types": [
37951
+ "number"
37952
+ ]
37953
+ }
37954
+ },
37955
+ "required": [
37956
+ "x",
37957
+ "y"
37958
+ ]
37959
+ },
37960
+ "elevation": {
37961
+ "types": [
37962
+ "number"
37963
+ ]
37964
+ }
37965
+ },
37966
+ "required": [
37967
+ "id"
37968
+ ]
37969
+ }
37970
+ },
37971
+ "features": {
37972
+ "types": [
37973
+ "array"
37974
+ ],
37975
+ "description": "Direct feature data — takes priority over entity-derived features.",
37976
+ "items": {
37977
+ "types": [
37978
+ "object"
37979
+ ],
37980
+ "properties": {
37981
+ "id": {
37982
+ "types": [
37983
+ "string"
37984
+ ]
37985
+ },
37986
+ "x": {
37987
+ "types": [
37988
+ "number"
37989
+ ]
37990
+ },
37991
+ "y": {
37992
+ "types": [
37993
+ "number"
37994
+ ]
37995
+ },
37996
+ "z": {
37997
+ "types": [
37998
+ "number"
37999
+ ]
38000
+ },
38001
+ "type": {
38002
+ "types": [
38003
+ "string"
38004
+ ]
38005
+ },
38006
+ "sprite": {
38007
+ "types": [
38008
+ "asset"
38009
+ ]
38010
+ },
38011
+ "assetUrl": {
38012
+ "types": [
38013
+ "asset"
38014
+ ]
38015
+ },
38016
+ "color": {
38017
+ "types": [
38018
+ "string"
38019
+ ]
38020
+ },
38021
+ "elevation": {
38022
+ "types": [
38023
+ "number"
38024
+ ]
38025
+ }
38026
+ },
38027
+ "required": [
38028
+ "x",
38029
+ "y",
38030
+ "type"
38031
+ ]
38032
+ }
38033
+ },
38034
+ "assetManifest": {
38035
+ "types": [
38036
+ "object"
38037
+ ],
38038
+ "description": "Direct asset manifest — takes priority over entity-derived manifest.",
38039
+ "properties": {
38040
+ "baseUrl": {
38041
+ "types": [
38042
+ "asset"
38043
+ ]
38044
+ },
38045
+ "terrains": {
38046
+ "types": [
38047
+ "object"
38048
+ ],
38049
+ "mapValue": {
38050
+ "types": [
38051
+ "asset"
38052
+ ]
38053
+ }
38054
+ },
38055
+ "units": {
38056
+ "types": [
38057
+ "object"
38058
+ ],
38059
+ "mapValue": {
38060
+ "types": [
38061
+ "asset"
38062
+ ]
38063
+ }
38064
+ },
38065
+ "features": {
38066
+ "types": [
38067
+ "object"
38068
+ ],
38069
+ "mapValue": {
38070
+ "types": [
38071
+ "asset"
38072
+ ]
38073
+ }
38074
+ }
38075
+ }
38076
+ },
35730
38077
  "scale": {
35731
38078
  "types": [
35732
38079
  "number"