@almadar/patterns 2.44.0 → 2.45.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:07:52.301Z",
4
4
  "patterns": {
5
5
  "entity-table": {
6
6
  "type": "entity-table",
@@ -14086,6 +14086,323 @@
14086
14086
  ],
14087
14087
  "description": "Canvas render scale",
14088
14088
  "default": 0.45
14089
+ },
14090
+ "tiles": {
14091
+ "types": [
14092
+ "array"
14093
+ ],
14094
+ "description": "Direct tile data — forwarded to CastleBoard; takes priority over entity.",
14095
+ "items": {
14096
+ "types": [
14097
+ "object"
14098
+ ],
14099
+ "properties": {
14100
+ "id": {
14101
+ "types": [
14102
+ "string"
14103
+ ]
14104
+ },
14105
+ "x": {
14106
+ "types": [
14107
+ "number"
14108
+ ]
14109
+ },
14110
+ "y": {
14111
+ "types": [
14112
+ "number"
14113
+ ]
14114
+ },
14115
+ "z": {
14116
+ "types": [
14117
+ "number"
14118
+ ]
14119
+ },
14120
+ "terrain": {
14121
+ "types": [
14122
+ "string"
14123
+ ]
14124
+ },
14125
+ "type": {
14126
+ "types": [
14127
+ "string"
14128
+ ]
14129
+ },
14130
+ "terrainSprite": {
14131
+ "types": [
14132
+ "asset"
14133
+ ]
14134
+ },
14135
+ "passable": {
14136
+ "types": [
14137
+ "boolean"
14138
+ ]
14139
+ },
14140
+ "movementCost": {
14141
+ "types": [
14142
+ "number"
14143
+ ]
14144
+ },
14145
+ "tileType": {
14146
+ "types": [
14147
+ "string"
14148
+ ]
14149
+ },
14150
+ "elevation": {
14151
+ "types": [
14152
+ "number"
14153
+ ]
14154
+ }
14155
+ },
14156
+ "required": [
14157
+ "x",
14158
+ "y"
14159
+ ]
14160
+ }
14161
+ },
14162
+ "units": {
14163
+ "types": [
14164
+ "array"
14165
+ ],
14166
+ "description": "Direct unit data — forwarded to CastleBoard; takes priority over entity.",
14167
+ "items": {
14168
+ "types": [
14169
+ "object"
14170
+ ],
14171
+ "properties": {
14172
+ "id": {
14173
+ "types": [
14174
+ "string"
14175
+ ]
14176
+ },
14177
+ "position": {
14178
+ "types": [
14179
+ "object"
14180
+ ],
14181
+ "properties": {
14182
+ "x": {
14183
+ "types": [
14184
+ "number"
14185
+ ]
14186
+ },
14187
+ "y": {
14188
+ "types": [
14189
+ "number"
14190
+ ]
14191
+ }
14192
+ },
14193
+ "required": [
14194
+ "x",
14195
+ "y"
14196
+ ]
14197
+ },
14198
+ "x": {
14199
+ "types": [
14200
+ "number"
14201
+ ]
14202
+ },
14203
+ "y": {
14204
+ "types": [
14205
+ "number"
14206
+ ]
14207
+ },
14208
+ "z": {
14209
+ "types": [
14210
+ "number"
14211
+ ]
14212
+ },
14213
+ "sprite": {
14214
+ "types": [
14215
+ "object"
14216
+ ]
14217
+ },
14218
+ "unitType": {
14219
+ "types": [
14220
+ "string"
14221
+ ]
14222
+ },
14223
+ "heroId": {
14224
+ "types": [
14225
+ "string"
14226
+ ]
14227
+ },
14228
+ "name": {
14229
+ "types": [
14230
+ "string"
14231
+ ]
14232
+ },
14233
+ "team": {
14234
+ "types": [
14235
+ "string"
14236
+ ],
14237
+ "enumValues": [
14238
+ "player",
14239
+ "enemy",
14240
+ "neutral"
14241
+ ]
14242
+ },
14243
+ "faction": {
14244
+ "types": [
14245
+ "string"
14246
+ ],
14247
+ "enumValues": [
14248
+ "player",
14249
+ "enemy",
14250
+ "neutral"
14251
+ ]
14252
+ },
14253
+ "health": {
14254
+ "types": [
14255
+ "number"
14256
+ ]
14257
+ },
14258
+ "maxHealth": {
14259
+ "types": [
14260
+ "number"
14261
+ ]
14262
+ },
14263
+ "traits": {
14264
+ "types": [
14265
+ "array"
14266
+ ],
14267
+ "items": {
14268
+ "types": [
14269
+ "object"
14270
+ ],
14271
+ "properties": {
14272
+ "name": {
14273
+ "types": [
14274
+ "string"
14275
+ ]
14276
+ },
14277
+ "currentState": {
14278
+ "types": [
14279
+ "string"
14280
+ ]
14281
+ },
14282
+ "states": {
14283
+ "types": [
14284
+ "array"
14285
+ ],
14286
+ "items": {
14287
+ "types": [
14288
+ "string"
14289
+ ]
14290
+ }
14291
+ },
14292
+ "cooldown": {
14293
+ "types": [
14294
+ "number"
14295
+ ]
14296
+ }
14297
+ },
14298
+ "required": [
14299
+ "name",
14300
+ "currentState",
14301
+ "states",
14302
+ "cooldown"
14303
+ ]
14304
+ }
14305
+ },
14306
+ "previousPosition": {
14307
+ "types": [
14308
+ "object"
14309
+ ],
14310
+ "properties": {
14311
+ "x": {
14312
+ "types": [
14313
+ "number"
14314
+ ]
14315
+ },
14316
+ "y": {
14317
+ "types": [
14318
+ "number"
14319
+ ]
14320
+ }
14321
+ },
14322
+ "required": [
14323
+ "x",
14324
+ "y"
14325
+ ]
14326
+ },
14327
+ "elevation": {
14328
+ "types": [
14329
+ "number"
14330
+ ]
14331
+ }
14332
+ },
14333
+ "required": [
14334
+ "id"
14335
+ ]
14336
+ }
14337
+ },
14338
+ "features": {
14339
+ "types": [
14340
+ "array"
14341
+ ],
14342
+ "description": "Direct feature data — forwarded to CastleBoard; takes priority over entity.",
14343
+ "items": {
14344
+ "types": [
14345
+ "object"
14346
+ ],
14347
+ "properties": {
14348
+ "id": {
14349
+ "types": [
14350
+ "string"
14351
+ ]
14352
+ },
14353
+ "x": {
14354
+ "types": [
14355
+ "number"
14356
+ ]
14357
+ },
14358
+ "y": {
14359
+ "types": [
14360
+ "number"
14361
+ ]
14362
+ },
14363
+ "z": {
14364
+ "types": [
14365
+ "number"
14366
+ ]
14367
+ },
14368
+ "type": {
14369
+ "types": [
14370
+ "string"
14371
+ ]
14372
+ },
14373
+ "sprite": {
14374
+ "types": [
14375
+ "object"
14376
+ ]
14377
+ },
14378
+ "assetUrl": {
14379
+ "types": [
14380
+ "object"
14381
+ ]
14382
+ },
14383
+ "color": {
14384
+ "types": [
14385
+ "string"
14386
+ ]
14387
+ },
14388
+ "elevation": {
14389
+ "types": [
14390
+ "number"
14391
+ ]
14392
+ }
14393
+ },
14394
+ "required": [
14395
+ "x",
14396
+ "y",
14397
+ "type"
14398
+ ]
14399
+ }
14400
+ },
14401
+ "assetManifest": {
14402
+ "types": [
14403
+ "string"
14404
+ ],
14405
+ "description": "Direct asset manifest — forwarded to CastleBoard; takes priority over entity."
14089
14406
  }
14090
14407
  }
14091
14408
  },
@@ -14142,6 +14459,323 @@
14142
14459
  ],
14143
14460
  "description": "Allow selecting / moving ALL heroes (including enemy). For testing.",
14144
14461
  "default": false
14462
+ },
14463
+ "tiles": {
14464
+ "types": [
14465
+ "array"
14466
+ ],
14467
+ "description": "Direct tile data — forwarded to WorldMapBoard; takes priority over entity.",
14468
+ "items": {
14469
+ "types": [
14470
+ "object"
14471
+ ],
14472
+ "properties": {
14473
+ "id": {
14474
+ "types": [
14475
+ "string"
14476
+ ]
14477
+ },
14478
+ "x": {
14479
+ "types": [
14480
+ "number"
14481
+ ]
14482
+ },
14483
+ "y": {
14484
+ "types": [
14485
+ "number"
14486
+ ]
14487
+ },
14488
+ "z": {
14489
+ "types": [
14490
+ "number"
14491
+ ]
14492
+ },
14493
+ "terrain": {
14494
+ "types": [
14495
+ "string"
14496
+ ]
14497
+ },
14498
+ "type": {
14499
+ "types": [
14500
+ "string"
14501
+ ]
14502
+ },
14503
+ "terrainSprite": {
14504
+ "types": [
14505
+ "asset"
14506
+ ]
14507
+ },
14508
+ "passable": {
14509
+ "types": [
14510
+ "boolean"
14511
+ ]
14512
+ },
14513
+ "movementCost": {
14514
+ "types": [
14515
+ "number"
14516
+ ]
14517
+ },
14518
+ "tileType": {
14519
+ "types": [
14520
+ "string"
14521
+ ]
14522
+ },
14523
+ "elevation": {
14524
+ "types": [
14525
+ "number"
14526
+ ]
14527
+ }
14528
+ },
14529
+ "required": [
14530
+ "x",
14531
+ "y"
14532
+ ]
14533
+ }
14534
+ },
14535
+ "units": {
14536
+ "types": [
14537
+ "array"
14538
+ ],
14539
+ "description": "Direct unit data — forwarded to WorldMapBoard; takes priority over entity.",
14540
+ "items": {
14541
+ "types": [
14542
+ "object"
14543
+ ],
14544
+ "properties": {
14545
+ "id": {
14546
+ "types": [
14547
+ "string"
14548
+ ]
14549
+ },
14550
+ "position": {
14551
+ "types": [
14552
+ "object"
14553
+ ],
14554
+ "properties": {
14555
+ "x": {
14556
+ "types": [
14557
+ "number"
14558
+ ]
14559
+ },
14560
+ "y": {
14561
+ "types": [
14562
+ "number"
14563
+ ]
14564
+ }
14565
+ },
14566
+ "required": [
14567
+ "x",
14568
+ "y"
14569
+ ]
14570
+ },
14571
+ "x": {
14572
+ "types": [
14573
+ "number"
14574
+ ]
14575
+ },
14576
+ "y": {
14577
+ "types": [
14578
+ "number"
14579
+ ]
14580
+ },
14581
+ "z": {
14582
+ "types": [
14583
+ "number"
14584
+ ]
14585
+ },
14586
+ "sprite": {
14587
+ "types": [
14588
+ "object"
14589
+ ]
14590
+ },
14591
+ "unitType": {
14592
+ "types": [
14593
+ "string"
14594
+ ]
14595
+ },
14596
+ "heroId": {
14597
+ "types": [
14598
+ "string"
14599
+ ]
14600
+ },
14601
+ "name": {
14602
+ "types": [
14603
+ "string"
14604
+ ]
14605
+ },
14606
+ "team": {
14607
+ "types": [
14608
+ "string"
14609
+ ],
14610
+ "enumValues": [
14611
+ "player",
14612
+ "enemy",
14613
+ "neutral"
14614
+ ]
14615
+ },
14616
+ "faction": {
14617
+ "types": [
14618
+ "string"
14619
+ ],
14620
+ "enumValues": [
14621
+ "player",
14622
+ "enemy",
14623
+ "neutral"
14624
+ ]
14625
+ },
14626
+ "health": {
14627
+ "types": [
14628
+ "number"
14629
+ ]
14630
+ },
14631
+ "maxHealth": {
14632
+ "types": [
14633
+ "number"
14634
+ ]
14635
+ },
14636
+ "traits": {
14637
+ "types": [
14638
+ "array"
14639
+ ],
14640
+ "items": {
14641
+ "types": [
14642
+ "object"
14643
+ ],
14644
+ "properties": {
14645
+ "name": {
14646
+ "types": [
14647
+ "string"
14648
+ ]
14649
+ },
14650
+ "currentState": {
14651
+ "types": [
14652
+ "string"
14653
+ ]
14654
+ },
14655
+ "states": {
14656
+ "types": [
14657
+ "array"
14658
+ ],
14659
+ "items": {
14660
+ "types": [
14661
+ "string"
14662
+ ]
14663
+ }
14664
+ },
14665
+ "cooldown": {
14666
+ "types": [
14667
+ "number"
14668
+ ]
14669
+ }
14670
+ },
14671
+ "required": [
14672
+ "name",
14673
+ "currentState",
14674
+ "states",
14675
+ "cooldown"
14676
+ ]
14677
+ }
14678
+ },
14679
+ "previousPosition": {
14680
+ "types": [
14681
+ "object"
14682
+ ],
14683
+ "properties": {
14684
+ "x": {
14685
+ "types": [
14686
+ "number"
14687
+ ]
14688
+ },
14689
+ "y": {
14690
+ "types": [
14691
+ "number"
14692
+ ]
14693
+ }
14694
+ },
14695
+ "required": [
14696
+ "x",
14697
+ "y"
14698
+ ]
14699
+ },
14700
+ "elevation": {
14701
+ "types": [
14702
+ "number"
14703
+ ]
14704
+ }
14705
+ },
14706
+ "required": [
14707
+ "id"
14708
+ ]
14709
+ }
14710
+ },
14711
+ "features": {
14712
+ "types": [
14713
+ "array"
14714
+ ],
14715
+ "description": "Direct feature data — forwarded to WorldMapBoard; takes priority over entity.",
14716
+ "items": {
14717
+ "types": [
14718
+ "object"
14719
+ ],
14720
+ "properties": {
14721
+ "id": {
14722
+ "types": [
14723
+ "string"
14724
+ ]
14725
+ },
14726
+ "x": {
14727
+ "types": [
14728
+ "number"
14729
+ ]
14730
+ },
14731
+ "y": {
14732
+ "types": [
14733
+ "number"
14734
+ ]
14735
+ },
14736
+ "z": {
14737
+ "types": [
14738
+ "number"
14739
+ ]
14740
+ },
14741
+ "type": {
14742
+ "types": [
14743
+ "string"
14744
+ ]
14745
+ },
14746
+ "sprite": {
14747
+ "types": [
14748
+ "object"
14749
+ ]
14750
+ },
14751
+ "assetUrl": {
14752
+ "types": [
14753
+ "object"
14754
+ ]
14755
+ },
14756
+ "color": {
14757
+ "types": [
14758
+ "string"
14759
+ ]
14760
+ },
14761
+ "elevation": {
14762
+ "types": [
14763
+ "number"
14764
+ ]
14765
+ }
14766
+ },
14767
+ "required": [
14768
+ "x",
14769
+ "y",
14770
+ "type"
14771
+ ]
14772
+ }
14773
+ },
14774
+ "assetManifest": {
14775
+ "types": [
14776
+ "string"
14777
+ ],
14778
+ "description": "Direct asset manifest — forwarded to WorldMapBoard; takes priority over entity."
14145
14779
  }
14146
14780
  }
14147
14781
  },
@@ -24072,7 +24706,7 @@
24072
24706
  "asset"
24073
24707
  ],
24074
24708
  "description": "URL for the speaker portrait image",
24075
- "default": "https://almadar-kflow-assets.web.app/shared/characters/archetypes/00_base_model.png"
24709
+ "default": "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png"
24076
24710
  },
24077
24711
  "position": {
24078
24712
  "types": [
@@ -28125,14 +28759,15 @@
28125
28759
  "types": [
28126
28760
  "asset"
28127
28761
  ],
28128
- "description": "Background image URL"
28762
+ "description": "Background image URL",
28763
+ "default": "https://almadar-kflow-assets.web.app/shared/scenes/resonators.jpeg"
28129
28764
  },
28130
28765
  "assetBaseUrl": {
28131
28766
  "types": [
28132
28767
  "asset"
28133
28768
  ],
28134
28769
  "description": "Base URL prefix for asset URLs",
28135
- "default": ""
28770
+ "default": "https://almadar-kflow-assets.web.app/shared/"
28136
28771
  },
28137
28772
  "className": {
28138
28773
  "types": [
@@ -29873,7 +30508,8 @@
29873
30508
  "types": [
29874
30509
  "asset"
29875
30510
  ],
29876
- "description": "Background image URL tiled behind the isometric grid"
30511
+ "description": "Background image URL tiled behind the isometric grid",
30512
+ "default": "https://almadar-kflow-assets.web.app/shared/scenes/court.png"
29877
30513
  },
29878
30514
  "showMinimap": {
29879
30515
  "types": [
@@ -30185,7 +30821,8 @@
30185
30821
  "types": [
30186
30822
  "asset"
30187
30823
  ],
30188
- "description": "--- Remote asset loading ---"
30824
+ "description": "--- Remote asset loading ---",
30825
+ "default": "https://almadar-kflow-assets.web.app/shared/"
30189
30826
  },
30190
30827
  "assetManifest": {
30191
30828
  "types": [
@@ -30398,7 +31035,8 @@
30398
31035
  "types": [
30399
31036
  "asset"
30400
31037
  ],
30401
- "description": "Player sprite image URL"
31038
+ "description": "Player sprite image URL",
31039
+ "default": "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png"
30402
31040
  },
30403
31041
  "tileSprites": {
30404
31042
  "types": [
@@ -30415,14 +31053,15 @@
30415
31053
  "types": [
30416
31054
  "asset"
30417
31055
  ],
30418
- "description": "Background image URL"
31056
+ "description": "Background image URL",
31057
+ "default": "https://almadar-kflow-assets.web.app/shared/scenes/court.png"
30419
31058
  },
30420
31059
  "assetBaseUrl": {
30421
31060
  "types": [
30422
31061
  "asset"
30423
31062
  ],
30424
31063
  "description": "Base URL prefix for asset URLs",
30425
- "default": ""
31064
+ "default": "https://almadar-kflow-assets.web.app/shared/platformer/"
30426
31065
  },
30427
31066
  "leftEvent": {
30428
31067
  "types": [
@@ -31544,6 +32183,370 @@
31544
32183
  "kind": "entity",
31545
32184
  "cardinality": "collection"
31546
32185
  },
32186
+ "tiles": {
32187
+ "types": [
32188
+ "array"
32189
+ ],
32190
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
32191
+ "items": {
32192
+ "types": [
32193
+ "object"
32194
+ ],
32195
+ "properties": {
32196
+ "id": {
32197
+ "types": [
32198
+ "string"
32199
+ ]
32200
+ },
32201
+ "x": {
32202
+ "types": [
32203
+ "number"
32204
+ ]
32205
+ },
32206
+ "y": {
32207
+ "types": [
32208
+ "number"
32209
+ ]
32210
+ },
32211
+ "z": {
32212
+ "types": [
32213
+ "number"
32214
+ ]
32215
+ },
32216
+ "terrain": {
32217
+ "types": [
32218
+ "string"
32219
+ ]
32220
+ },
32221
+ "type": {
32222
+ "types": [
32223
+ "string"
32224
+ ]
32225
+ },
32226
+ "terrainSprite": {
32227
+ "types": [
32228
+ "asset"
32229
+ ]
32230
+ },
32231
+ "passable": {
32232
+ "types": [
32233
+ "boolean"
32234
+ ]
32235
+ },
32236
+ "movementCost": {
32237
+ "types": [
32238
+ "number"
32239
+ ]
32240
+ },
32241
+ "tileType": {
32242
+ "types": [
32243
+ "string"
32244
+ ]
32245
+ },
32246
+ "elevation": {
32247
+ "types": [
32248
+ "number"
32249
+ ]
32250
+ }
32251
+ },
32252
+ "required": [
32253
+ "x",
32254
+ "y"
32255
+ ]
32256
+ }
32257
+ },
32258
+ "units": {
32259
+ "types": [
32260
+ "array"
32261
+ ],
32262
+ "description": "Direct unit data — takes priority over entity-derived units.",
32263
+ "items": {
32264
+ "types": [
32265
+ "object"
32266
+ ],
32267
+ "properties": {
32268
+ "id": {
32269
+ "types": [
32270
+ "string"
32271
+ ]
32272
+ },
32273
+ "position": {
32274
+ "types": [
32275
+ "object"
32276
+ ],
32277
+ "properties": {
32278
+ "x": {
32279
+ "types": [
32280
+ "number"
32281
+ ]
32282
+ },
32283
+ "y": {
32284
+ "types": [
32285
+ "number"
32286
+ ]
32287
+ }
32288
+ },
32289
+ "required": [
32290
+ "x",
32291
+ "y"
32292
+ ]
32293
+ },
32294
+ "x": {
32295
+ "types": [
32296
+ "number"
32297
+ ]
32298
+ },
32299
+ "y": {
32300
+ "types": [
32301
+ "number"
32302
+ ]
32303
+ },
32304
+ "z": {
32305
+ "types": [
32306
+ "number"
32307
+ ]
32308
+ },
32309
+ "sprite": {
32310
+ "types": [
32311
+ "asset"
32312
+ ]
32313
+ },
32314
+ "unitType": {
32315
+ "types": [
32316
+ "string"
32317
+ ]
32318
+ },
32319
+ "heroId": {
32320
+ "types": [
32321
+ "string"
32322
+ ]
32323
+ },
32324
+ "name": {
32325
+ "types": [
32326
+ "string"
32327
+ ]
32328
+ },
32329
+ "team": {
32330
+ "types": [
32331
+ "string"
32332
+ ],
32333
+ "enumValues": [
32334
+ "player",
32335
+ "enemy",
32336
+ "neutral"
32337
+ ]
32338
+ },
32339
+ "faction": {
32340
+ "types": [
32341
+ "string"
32342
+ ],
32343
+ "enumValues": [
32344
+ "player",
32345
+ "enemy",
32346
+ "neutral"
32347
+ ]
32348
+ },
32349
+ "health": {
32350
+ "types": [
32351
+ "number"
32352
+ ]
32353
+ },
32354
+ "maxHealth": {
32355
+ "types": [
32356
+ "number"
32357
+ ]
32358
+ },
32359
+ "traits": {
32360
+ "types": [
32361
+ "array"
32362
+ ],
32363
+ "items": {
32364
+ "types": [
32365
+ "object"
32366
+ ],
32367
+ "properties": {
32368
+ "name": {
32369
+ "types": [
32370
+ "string"
32371
+ ]
32372
+ },
32373
+ "currentState": {
32374
+ "types": [
32375
+ "string"
32376
+ ]
32377
+ },
32378
+ "states": {
32379
+ "types": [
32380
+ "array"
32381
+ ],
32382
+ "items": {
32383
+ "types": [
32384
+ "string"
32385
+ ]
32386
+ }
32387
+ },
32388
+ "cooldown": {
32389
+ "types": [
32390
+ "number"
32391
+ ]
32392
+ }
32393
+ },
32394
+ "required": [
32395
+ "name",
32396
+ "currentState",
32397
+ "states",
32398
+ "cooldown"
32399
+ ]
32400
+ }
32401
+ },
32402
+ "previousPosition": {
32403
+ "types": [
32404
+ "object"
32405
+ ],
32406
+ "properties": {
32407
+ "x": {
32408
+ "types": [
32409
+ "number"
32410
+ ]
32411
+ },
32412
+ "y": {
32413
+ "types": [
32414
+ "number"
32415
+ ]
32416
+ }
32417
+ },
32418
+ "required": [
32419
+ "x",
32420
+ "y"
32421
+ ]
32422
+ },
32423
+ "elevation": {
32424
+ "types": [
32425
+ "number"
32426
+ ]
32427
+ }
32428
+ },
32429
+ "required": [
32430
+ "id"
32431
+ ]
32432
+ }
32433
+ },
32434
+ "features": {
32435
+ "types": [
32436
+ "array"
32437
+ ],
32438
+ "description": "Direct feature data — takes priority over entity-derived features.",
32439
+ "items": {
32440
+ "types": [
32441
+ "object"
32442
+ ],
32443
+ "properties": {
32444
+ "id": {
32445
+ "types": [
32446
+ "string"
32447
+ ]
32448
+ },
32449
+ "x": {
32450
+ "types": [
32451
+ "number"
32452
+ ]
32453
+ },
32454
+ "y": {
32455
+ "types": [
32456
+ "number"
32457
+ ]
32458
+ },
32459
+ "z": {
32460
+ "types": [
32461
+ "number"
32462
+ ]
32463
+ },
32464
+ "type": {
32465
+ "types": [
32466
+ "string"
32467
+ ]
32468
+ },
32469
+ "sprite": {
32470
+ "types": [
32471
+ "asset"
32472
+ ]
32473
+ },
32474
+ "assetUrl": {
32475
+ "types": [
32476
+ "asset"
32477
+ ]
32478
+ },
32479
+ "color": {
32480
+ "types": [
32481
+ "string"
32482
+ ]
32483
+ },
32484
+ "elevation": {
32485
+ "types": [
32486
+ "number"
32487
+ ]
32488
+ }
32489
+ },
32490
+ "required": [
32491
+ "x",
32492
+ "y",
32493
+ "type"
32494
+ ]
32495
+ }
32496
+ },
32497
+ "assetManifest": {
32498
+ "types": [
32499
+ "object"
32500
+ ],
32501
+ "description": "Direct asset manifest — takes priority over entity-derived manifest.",
32502
+ "properties": {
32503
+ "baseUrl": {
32504
+ "types": [
32505
+ "asset"
32506
+ ]
32507
+ },
32508
+ "terrains": {
32509
+ "types": [
32510
+ "object"
32511
+ ],
32512
+ "mapValue": {
32513
+ "types": [
32514
+ "asset"
32515
+ ]
32516
+ }
32517
+ },
32518
+ "units": {
32519
+ "types": [
32520
+ "object"
32521
+ ],
32522
+ "mapValue": {
32523
+ "types": [
32524
+ "asset"
32525
+ ]
32526
+ }
32527
+ },
32528
+ "features": {
32529
+ "types": [
32530
+ "object"
32531
+ ],
32532
+ "mapValue": {
32533
+ "types": [
32534
+ "asset"
32535
+ ]
32536
+ }
32537
+ },
32538
+ "effects": {
32539
+ "types": [
32540
+ "object"
32541
+ ],
32542
+ "mapValue": {
32543
+ "types": [
32544
+ "asset"
32545
+ ]
32546
+ }
32547
+ }
32548
+ }
32549
+ },
31547
32550
  "scale": {
31548
32551
  "types": [
31549
32552
  "number"
@@ -32571,13 +33574,15 @@
32571
33574
  "types": [
32572
33575
  "asset"
32573
33576
  ],
32574
- "description": "--- Remote asset loading ---"
33577
+ "description": "--- Remote asset loading ---",
33578
+ "default": "https://almadar-kflow-assets.web.app/shared/effects/gas/gas00.png"
32575
33579
  },
32576
33580
  "assetBaseUrl": {
32577
33581
  "types": [
32578
33582
  "asset"
32579
33583
  ],
32580
- "description": "Base URL for remote assets. Prepended to relative effectSpriteUrl paths."
33584
+ "description": "Base URL for remote assets. Prepended to relative effectSpriteUrl paths.",
33585
+ "default": "https://almadar-kflow-assets.web.app/shared/effects/"
32581
33586
  },
32582
33587
  "assetManifest": {
32583
33588
  "types": [
@@ -32872,6 +33877,360 @@
32872
33877
  "kind": "entity",
32873
33878
  "cardinality": "collection"
32874
33879
  },
33880
+ "tiles": {
33881
+ "types": [
33882
+ "array"
33883
+ ],
33884
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
33885
+ "items": {
33886
+ "types": [
33887
+ "object"
33888
+ ],
33889
+ "properties": {
33890
+ "id": {
33891
+ "types": [
33892
+ "string"
33893
+ ]
33894
+ },
33895
+ "x": {
33896
+ "types": [
33897
+ "number"
33898
+ ]
33899
+ },
33900
+ "y": {
33901
+ "types": [
33902
+ "number"
33903
+ ]
33904
+ },
33905
+ "z": {
33906
+ "types": [
33907
+ "number"
33908
+ ]
33909
+ },
33910
+ "terrain": {
33911
+ "types": [
33912
+ "string"
33913
+ ]
33914
+ },
33915
+ "type": {
33916
+ "types": [
33917
+ "string"
33918
+ ]
33919
+ },
33920
+ "terrainSprite": {
33921
+ "types": [
33922
+ "asset"
33923
+ ]
33924
+ },
33925
+ "passable": {
33926
+ "types": [
33927
+ "boolean"
33928
+ ]
33929
+ },
33930
+ "movementCost": {
33931
+ "types": [
33932
+ "number"
33933
+ ]
33934
+ },
33935
+ "tileType": {
33936
+ "types": [
33937
+ "string"
33938
+ ]
33939
+ },
33940
+ "elevation": {
33941
+ "types": [
33942
+ "number"
33943
+ ]
33944
+ }
33945
+ },
33946
+ "required": [
33947
+ "x",
33948
+ "y"
33949
+ ]
33950
+ }
33951
+ },
33952
+ "units": {
33953
+ "types": [
33954
+ "array"
33955
+ ],
33956
+ "description": "Direct unit data — takes priority over entity-derived units.",
33957
+ "items": {
33958
+ "types": [
33959
+ "object"
33960
+ ],
33961
+ "properties": {
33962
+ "id": {
33963
+ "types": [
33964
+ "string"
33965
+ ]
33966
+ },
33967
+ "position": {
33968
+ "types": [
33969
+ "object"
33970
+ ],
33971
+ "properties": {
33972
+ "x": {
33973
+ "types": [
33974
+ "number"
33975
+ ]
33976
+ },
33977
+ "y": {
33978
+ "types": [
33979
+ "number"
33980
+ ]
33981
+ }
33982
+ },
33983
+ "required": [
33984
+ "x",
33985
+ "y"
33986
+ ]
33987
+ },
33988
+ "x": {
33989
+ "types": [
33990
+ "number"
33991
+ ]
33992
+ },
33993
+ "y": {
33994
+ "types": [
33995
+ "number"
33996
+ ]
33997
+ },
33998
+ "z": {
33999
+ "types": [
34000
+ "number"
34001
+ ]
34002
+ },
34003
+ "sprite": {
34004
+ "types": [
34005
+ "asset"
34006
+ ]
34007
+ },
34008
+ "unitType": {
34009
+ "types": [
34010
+ "string"
34011
+ ]
34012
+ },
34013
+ "heroId": {
34014
+ "types": [
34015
+ "string"
34016
+ ]
34017
+ },
34018
+ "name": {
34019
+ "types": [
34020
+ "string"
34021
+ ]
34022
+ },
34023
+ "team": {
34024
+ "types": [
34025
+ "string"
34026
+ ],
34027
+ "enumValues": [
34028
+ "player",
34029
+ "enemy",
34030
+ "neutral"
34031
+ ]
34032
+ },
34033
+ "faction": {
34034
+ "types": [
34035
+ "string"
34036
+ ],
34037
+ "enumValues": [
34038
+ "player",
34039
+ "enemy",
34040
+ "neutral"
34041
+ ]
34042
+ },
34043
+ "health": {
34044
+ "types": [
34045
+ "number"
34046
+ ]
34047
+ },
34048
+ "maxHealth": {
34049
+ "types": [
34050
+ "number"
34051
+ ]
34052
+ },
34053
+ "traits": {
34054
+ "types": [
34055
+ "array"
34056
+ ],
34057
+ "items": {
34058
+ "types": [
34059
+ "object"
34060
+ ],
34061
+ "properties": {
34062
+ "name": {
34063
+ "types": [
34064
+ "string"
34065
+ ]
34066
+ },
34067
+ "currentState": {
34068
+ "types": [
34069
+ "string"
34070
+ ]
34071
+ },
34072
+ "states": {
34073
+ "types": [
34074
+ "array"
34075
+ ],
34076
+ "items": {
34077
+ "types": [
34078
+ "string"
34079
+ ]
34080
+ }
34081
+ },
34082
+ "cooldown": {
34083
+ "types": [
34084
+ "number"
34085
+ ]
34086
+ }
34087
+ },
34088
+ "required": [
34089
+ "name",
34090
+ "currentState",
34091
+ "states",
34092
+ "cooldown"
34093
+ ]
34094
+ }
34095
+ },
34096
+ "previousPosition": {
34097
+ "types": [
34098
+ "object"
34099
+ ],
34100
+ "properties": {
34101
+ "x": {
34102
+ "types": [
34103
+ "number"
34104
+ ]
34105
+ },
34106
+ "y": {
34107
+ "types": [
34108
+ "number"
34109
+ ]
34110
+ }
34111
+ },
34112
+ "required": [
34113
+ "x",
34114
+ "y"
34115
+ ]
34116
+ },
34117
+ "elevation": {
34118
+ "types": [
34119
+ "number"
34120
+ ]
34121
+ }
34122
+ },
34123
+ "required": [
34124
+ "id"
34125
+ ]
34126
+ }
34127
+ },
34128
+ "features": {
34129
+ "types": [
34130
+ "array"
34131
+ ],
34132
+ "description": "Direct feature data — takes priority over entity-derived features.",
34133
+ "items": {
34134
+ "types": [
34135
+ "object"
34136
+ ],
34137
+ "properties": {
34138
+ "id": {
34139
+ "types": [
34140
+ "string"
34141
+ ]
34142
+ },
34143
+ "x": {
34144
+ "types": [
34145
+ "number"
34146
+ ]
34147
+ },
34148
+ "y": {
34149
+ "types": [
34150
+ "number"
34151
+ ]
34152
+ },
34153
+ "z": {
34154
+ "types": [
34155
+ "number"
34156
+ ]
34157
+ },
34158
+ "type": {
34159
+ "types": [
34160
+ "string"
34161
+ ]
34162
+ },
34163
+ "sprite": {
34164
+ "types": [
34165
+ "asset"
34166
+ ]
34167
+ },
34168
+ "assetUrl": {
34169
+ "types": [
34170
+ "asset"
34171
+ ]
34172
+ },
34173
+ "color": {
34174
+ "types": [
34175
+ "string"
34176
+ ]
34177
+ },
34178
+ "elevation": {
34179
+ "types": [
34180
+ "number"
34181
+ ]
34182
+ }
34183
+ },
34184
+ "required": [
34185
+ "x",
34186
+ "y",
34187
+ "type"
34188
+ ]
34189
+ }
34190
+ },
34191
+ "assetManifest": {
34192
+ "types": [
34193
+ "object"
34194
+ ],
34195
+ "description": "Direct asset manifest — takes priority over entity-derived manifest.",
34196
+ "properties": {
34197
+ "baseUrl": {
34198
+ "types": [
34199
+ "asset"
34200
+ ]
34201
+ },
34202
+ "terrains": {
34203
+ "types": [
34204
+ "object"
34205
+ ],
34206
+ "mapValue": {
34207
+ "types": [
34208
+ "asset"
34209
+ ]
34210
+ }
34211
+ },
34212
+ "units": {
34213
+ "types": [
34214
+ "object"
34215
+ ],
34216
+ "mapValue": {
34217
+ "types": [
34218
+ "asset"
34219
+ ]
34220
+ }
34221
+ },
34222
+ "features": {
34223
+ "types": [
34224
+ "object"
34225
+ ],
34226
+ "mapValue": {
34227
+ "types": [
34228
+ "asset"
34229
+ ]
34230
+ }
34231
+ }
34232
+ }
34233
+ },
32875
34234
  "scale": {
32876
34235
  "types": [
32877
34236
  "number"
@@ -35727,6 +37086,360 @@
35727
37086
  "kind": "entity",
35728
37087
  "cardinality": "collection"
35729
37088
  },
37089
+ "tiles": {
37090
+ "types": [
37091
+ "array"
37092
+ ],
37093
+ "description": "Direct tile data — takes priority over entity-derived tiles.",
37094
+ "items": {
37095
+ "types": [
37096
+ "object"
37097
+ ],
37098
+ "properties": {
37099
+ "id": {
37100
+ "types": [
37101
+ "string"
37102
+ ]
37103
+ },
37104
+ "x": {
37105
+ "types": [
37106
+ "number"
37107
+ ]
37108
+ },
37109
+ "y": {
37110
+ "types": [
37111
+ "number"
37112
+ ]
37113
+ },
37114
+ "z": {
37115
+ "types": [
37116
+ "number"
37117
+ ]
37118
+ },
37119
+ "terrain": {
37120
+ "types": [
37121
+ "string"
37122
+ ]
37123
+ },
37124
+ "type": {
37125
+ "types": [
37126
+ "string"
37127
+ ]
37128
+ },
37129
+ "terrainSprite": {
37130
+ "types": [
37131
+ "asset"
37132
+ ]
37133
+ },
37134
+ "passable": {
37135
+ "types": [
37136
+ "boolean"
37137
+ ]
37138
+ },
37139
+ "movementCost": {
37140
+ "types": [
37141
+ "number"
37142
+ ]
37143
+ },
37144
+ "tileType": {
37145
+ "types": [
37146
+ "string"
37147
+ ]
37148
+ },
37149
+ "elevation": {
37150
+ "types": [
37151
+ "number"
37152
+ ]
37153
+ }
37154
+ },
37155
+ "required": [
37156
+ "x",
37157
+ "y"
37158
+ ]
37159
+ }
37160
+ },
37161
+ "units": {
37162
+ "types": [
37163
+ "array"
37164
+ ],
37165
+ "description": "Direct unit data — takes priority over entity-derived units.",
37166
+ "items": {
37167
+ "types": [
37168
+ "object"
37169
+ ],
37170
+ "properties": {
37171
+ "id": {
37172
+ "types": [
37173
+ "string"
37174
+ ]
37175
+ },
37176
+ "position": {
37177
+ "types": [
37178
+ "object"
37179
+ ],
37180
+ "properties": {
37181
+ "x": {
37182
+ "types": [
37183
+ "number"
37184
+ ]
37185
+ },
37186
+ "y": {
37187
+ "types": [
37188
+ "number"
37189
+ ]
37190
+ }
37191
+ },
37192
+ "required": [
37193
+ "x",
37194
+ "y"
37195
+ ]
37196
+ },
37197
+ "x": {
37198
+ "types": [
37199
+ "number"
37200
+ ]
37201
+ },
37202
+ "y": {
37203
+ "types": [
37204
+ "number"
37205
+ ]
37206
+ },
37207
+ "z": {
37208
+ "types": [
37209
+ "number"
37210
+ ]
37211
+ },
37212
+ "sprite": {
37213
+ "types": [
37214
+ "asset"
37215
+ ]
37216
+ },
37217
+ "unitType": {
37218
+ "types": [
37219
+ "string"
37220
+ ]
37221
+ },
37222
+ "heroId": {
37223
+ "types": [
37224
+ "string"
37225
+ ]
37226
+ },
37227
+ "name": {
37228
+ "types": [
37229
+ "string"
37230
+ ]
37231
+ },
37232
+ "team": {
37233
+ "types": [
37234
+ "string"
37235
+ ],
37236
+ "enumValues": [
37237
+ "player",
37238
+ "enemy",
37239
+ "neutral"
37240
+ ]
37241
+ },
37242
+ "faction": {
37243
+ "types": [
37244
+ "string"
37245
+ ],
37246
+ "enumValues": [
37247
+ "player",
37248
+ "enemy",
37249
+ "neutral"
37250
+ ]
37251
+ },
37252
+ "health": {
37253
+ "types": [
37254
+ "number"
37255
+ ]
37256
+ },
37257
+ "maxHealth": {
37258
+ "types": [
37259
+ "number"
37260
+ ]
37261
+ },
37262
+ "traits": {
37263
+ "types": [
37264
+ "array"
37265
+ ],
37266
+ "items": {
37267
+ "types": [
37268
+ "object"
37269
+ ],
37270
+ "properties": {
37271
+ "name": {
37272
+ "types": [
37273
+ "string"
37274
+ ]
37275
+ },
37276
+ "currentState": {
37277
+ "types": [
37278
+ "string"
37279
+ ]
37280
+ },
37281
+ "states": {
37282
+ "types": [
37283
+ "array"
37284
+ ],
37285
+ "items": {
37286
+ "types": [
37287
+ "string"
37288
+ ]
37289
+ }
37290
+ },
37291
+ "cooldown": {
37292
+ "types": [
37293
+ "number"
37294
+ ]
37295
+ }
37296
+ },
37297
+ "required": [
37298
+ "name",
37299
+ "currentState",
37300
+ "states",
37301
+ "cooldown"
37302
+ ]
37303
+ }
37304
+ },
37305
+ "previousPosition": {
37306
+ "types": [
37307
+ "object"
37308
+ ],
37309
+ "properties": {
37310
+ "x": {
37311
+ "types": [
37312
+ "number"
37313
+ ]
37314
+ },
37315
+ "y": {
37316
+ "types": [
37317
+ "number"
37318
+ ]
37319
+ }
37320
+ },
37321
+ "required": [
37322
+ "x",
37323
+ "y"
37324
+ ]
37325
+ },
37326
+ "elevation": {
37327
+ "types": [
37328
+ "number"
37329
+ ]
37330
+ }
37331
+ },
37332
+ "required": [
37333
+ "id"
37334
+ ]
37335
+ }
37336
+ },
37337
+ "features": {
37338
+ "types": [
37339
+ "array"
37340
+ ],
37341
+ "description": "Direct feature data — takes priority over entity-derived features.",
37342
+ "items": {
37343
+ "types": [
37344
+ "object"
37345
+ ],
37346
+ "properties": {
37347
+ "id": {
37348
+ "types": [
37349
+ "string"
37350
+ ]
37351
+ },
37352
+ "x": {
37353
+ "types": [
37354
+ "number"
37355
+ ]
37356
+ },
37357
+ "y": {
37358
+ "types": [
37359
+ "number"
37360
+ ]
37361
+ },
37362
+ "z": {
37363
+ "types": [
37364
+ "number"
37365
+ ]
37366
+ },
37367
+ "type": {
37368
+ "types": [
37369
+ "string"
37370
+ ]
37371
+ },
37372
+ "sprite": {
37373
+ "types": [
37374
+ "asset"
37375
+ ]
37376
+ },
37377
+ "assetUrl": {
37378
+ "types": [
37379
+ "asset"
37380
+ ]
37381
+ },
37382
+ "color": {
37383
+ "types": [
37384
+ "string"
37385
+ ]
37386
+ },
37387
+ "elevation": {
37388
+ "types": [
37389
+ "number"
37390
+ ]
37391
+ }
37392
+ },
37393
+ "required": [
37394
+ "x",
37395
+ "y",
37396
+ "type"
37397
+ ]
37398
+ }
37399
+ },
37400
+ "assetManifest": {
37401
+ "types": [
37402
+ "object"
37403
+ ],
37404
+ "description": "Direct asset manifest — takes priority over entity-derived manifest.",
37405
+ "properties": {
37406
+ "baseUrl": {
37407
+ "types": [
37408
+ "asset"
37409
+ ]
37410
+ },
37411
+ "terrains": {
37412
+ "types": [
37413
+ "object"
37414
+ ],
37415
+ "mapValue": {
37416
+ "types": [
37417
+ "asset"
37418
+ ]
37419
+ }
37420
+ },
37421
+ "units": {
37422
+ "types": [
37423
+ "object"
37424
+ ],
37425
+ "mapValue": {
37426
+ "types": [
37427
+ "asset"
37428
+ ]
37429
+ }
37430
+ },
37431
+ "features": {
37432
+ "types": [
37433
+ "object"
37434
+ ],
37435
+ "mapValue": {
37436
+ "types": [
37437
+ "asset"
37438
+ ]
37439
+ }
37440
+ }
37441
+ }
37442
+ },
35730
37443
  "scale": {
35731
37444
  "types": [
35732
37445
  "number"