@gemwright/ai 0.0.0 → 0.8.1

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 (59) hide show
  1. package/Dockerfile +12 -0
  2. package/README.md +82 -1
  3. package/catalogs/aggressive-bodies.json +1 -0
  4. package/catalogs/crafts/alchemy.json +22 -0
  5. package/catalogs/crafts/blacksmith.json +110 -0
  6. package/catalogs/crafts/bowcraft.json +13 -0
  7. package/catalogs/crafts/carpentry.json +105 -0
  8. package/catalogs/crafts/inscription.json +67 -0
  9. package/catalogs/crafts/tailoring.json +72 -0
  10. package/catalogs/crafts/tinkering.json +61 -0
  11. package/catalogs/dungeons/covetous.json +1 -0
  12. package/catalogs/dungeons/deceit.json +1 -0
  13. package/catalogs/dungeons/despise.json +1 -0
  14. package/catalogs/dungeons/destard.json +1 -0
  15. package/catalogs/dungeons/fire.json +1 -0
  16. package/catalogs/dungeons/hythloth.json +1 -0
  17. package/catalogs/dungeons/ice.json +1 -0
  18. package/catalogs/dungeons/khaldun.json +1 -0
  19. package/catalogs/dungeons/misc-dungeons.json +1 -0
  20. package/catalogs/dungeons/orc-cave.json +1 -0
  21. package/catalogs/dungeons/shame.json +1 -0
  22. package/catalogs/dungeons/terathan-keep.json +1 -0
  23. package/catalogs/dungeons/wrong.json +1 -0
  24. package/catalogs/house-lots.json +86 -0
  25. package/catalogs/hunting-grounds.json +10071 -0
  26. package/catalogs/magery-spells.json +697 -0
  27. package/catalogs/monsters.json +1 -0
  28. package/catalogs/prices.json +466 -0
  29. package/catalogs/tamables.json +864 -0
  30. package/catalogs/taming-grounds.json +2198 -0
  31. package/dist/index.js +55289 -0
  32. package/dist/life-journal-worker.js +469 -0
  33. package/dist/load-test.js +55098 -0
  34. package/dist/path-worker.js +1384 -0
  35. package/dist/persistence-worker.js +16503 -0
  36. package/dist/progress-report.js +182 -0
  37. package/dist/report.js +163 -0
  38. package/dist/serve.js +62078 -0
  39. package/locations/ankhs.json +91 -0
  40. package/locations/areas.json +760 -0
  41. package/locations/cobblers.json +148 -0
  42. package/locations/escorts.json +115 -0
  43. package/locations/forges.json +18 -0
  44. package/locations/locations.json +1501 -0
  45. package/locations/new-haven.json +522 -0
  46. package/locations/route-corridors.json +1 -0
  47. package/locations/services-guide.json +1329 -0
  48. package/locations/services.json +144 -0
  49. package/locations/teleporters.json +38 -0
  50. package/locations/vendors.json +1503 -0
  51. package/package.json +39 -3
  52. package/railway.json +6 -0
  53. package/start.sh +36 -0
  54. package/templates/archetypes-new-haven.json +38 -0
  55. package/templates/archetypes.json +274 -0
  56. package/templates/population.example.json +123 -0
  57. package/tuning.json +17 -0
  58. package/world/names.json +4055 -0
  59. package/world/world.json +743 -0
@@ -0,0 +1,743 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "note": "Single world configuration: which facets and cities are in play, which professions exist, where each lives and works, and the population mix. Templates and allocation are generated from it (src/world.ts). Lore: Minoc mines (Britannian Mining Company), Yew timber and rangers, Vesper port and fishing, Moonglow mages, Britain bards, Trinsic paladins (Honor), Jhelom fighters (Valor), Skara Brae rangers (Spirituality).",
4
+ "facets": [
5
+ {
6
+ "id": 1,
7
+ "name": "Trammel",
8
+ "enabled": true
9
+ },
10
+ {
11
+ "id": 0,
12
+ "name": "Felucca",
13
+ "enabled": false,
14
+ "note": "Same coordinates as Trammel; needs its own map file and PvP-aware behavior."
15
+ },
16
+ {
17
+ "id": 2,
18
+ "name": "Ilshenar",
19
+ "enabled": false
20
+ },
21
+ {
22
+ "id": 3,
23
+ "name": "Malas",
24
+ "enabled": false
25
+ },
26
+ {
27
+ "id": 4,
28
+ "name": "Tokuno",
29
+ "enabled": false
30
+ }
31
+ ],
32
+ "cities": {
33
+ "Britain": {
34
+ "facet": 1,
35
+ "enabled": true,
36
+ "startingCity": true
37
+ },
38
+ "Minoc": {
39
+ "facet": 1,
40
+ "enabled": true,
41
+ "startingCity": true
42
+ },
43
+ "Yew": {
44
+ "facet": 1,
45
+ "enabled": true,
46
+ "startingCity": true
47
+ },
48
+ "Vesper": {
49
+ "facet": 1,
50
+ "enabled": true,
51
+ "startingCity": true
52
+ },
53
+ "Trinsic": {
54
+ "facet": 1,
55
+ "enabled": true,
56
+ "startingCity": true
57
+ },
58
+ "Jhelom": {
59
+ "facet": 1,
60
+ "enabled": true,
61
+ "startingCity": true
62
+ },
63
+ "Moonglow": {
64
+ "facet": 1,
65
+ "enabled": true,
66
+ "startingCity": true
67
+ },
68
+ "Skara Brae": {
69
+ "facet": 1,
70
+ "enabled": true,
71
+ "startingCity": true
72
+ },
73
+ "Magincia": {
74
+ "facet": 1,
75
+ "enabled": true,
76
+ "startingCity": false
77
+ },
78
+ "Cove": {
79
+ "facet": 1,
80
+ "enabled": true,
81
+ "startingCity": false
82
+ },
83
+ "Serpent's Hold": {
84
+ "facet": 1,
85
+ "enabled": true,
86
+ "startingCity": false
87
+ },
88
+ "Nujel'm": {
89
+ "facet": 1,
90
+ "enabled": true,
91
+ "startingCity": false
92
+ },
93
+ "Buccaneer's Den": {
94
+ "facet": 1,
95
+ "enabled": true,
96
+ "startingCity": false
97
+ },
98
+ "New Haven": {
99
+ "facet": 1,
100
+ "enabled": true,
101
+ "startingCity": true
102
+ },
103
+ "Wind": {
104
+ "facet": 1,
105
+ "enabled": true,
106
+ "startingCity": false
107
+ }
108
+ },
109
+ "professions": {
110
+ "miner": {
111
+ "archetype": "craftsman",
112
+ "behavior": "miner",
113
+ "share": 10,
114
+ "creation": {
115
+ "namePrefix": "Miner",
116
+ "skills": {
117
+ "Mining": 50,
118
+ "Blacksmith": 50
119
+ }
120
+ },
121
+ "homes": {
122
+ "Minoc": 1
123
+ },
124
+ "trainingGoals": {
125
+ "Mining": 100,
126
+ "Blacksmith": 100
127
+ },
128
+ "riskTolerance": 0.2,
129
+ "supplies": {
130
+ "pickaxe": 1
131
+ }
132
+ },
133
+ "lumberjack": {
134
+ "archetype": "craftsman",
135
+ "behavior": "lumberjack",
136
+ "share": 8,
137
+ "creation": {
138
+ "namePrefix": "Woodsman",
139
+ "skills": {
140
+ "Lumberjacking": 50,
141
+ "Carpentry": 50
142
+ }
143
+ },
144
+ "homes": {
145
+ "Yew": 3,
146
+ "Britain": 1
147
+ },
148
+ "trainingGoals": {
149
+ "Lumberjacking": 100,
150
+ "Carpentry": 100
151
+ },
152
+ "riskTolerance": 0.2,
153
+ "supplies": {
154
+ "hatchet": 1
155
+ }
156
+ },
157
+ "fisherman": {
158
+ "archetype": "fisherman",
159
+ "behavior": "fisher",
160
+ "share": 6,
161
+ "creation": {
162
+ "namePrefix": "Fisher",
163
+ "skills": {
164
+ "Fishing": 50,
165
+ "Cooking": 50
166
+ }
167
+ },
168
+ "homes": {
169
+ "Vesper": 3,
170
+ "Moonglow": 1,
171
+ "Jhelom": 1
172
+ },
173
+ "trainingGoals": {
174
+ "Fishing": 100,
175
+ "Cooking": 100
176
+ },
177
+ "riskTolerance": 0.2,
178
+ "supplies": {
179
+ "fishing pole": 1
180
+ }
181
+ },
182
+ "tailor": {
183
+ "archetype": "tailor",
184
+ "behavior": "tailor",
185
+ "share": 4,
186
+ "creation": {
187
+ "namePrefix": "Tailor",
188
+ "skills": {
189
+ "Tailoring": 50,
190
+ "Arms Lore": 50
191
+ }
192
+ },
193
+ "homes": {
194
+ "Britain": 2,
195
+ "Magincia": 1,
196
+ "Moonglow": 1
197
+ },
198
+ "trainingGoals": {
199
+ "Tailoring": 100
200
+ },
201
+ "riskTolerance": 0.2,
202
+ "supplies": {
203
+ "sewing kit": 1
204
+ }
205
+ },
206
+ "swordsman": {
207
+ "archetype": "swordsman",
208
+ "share": 10,
209
+ "behavior": "fighter",
210
+ "creation": {
211
+ "namePrefix": "Swordsman",
212
+ "skills": {
213
+ "Swordsmanship": 50,
214
+ "Tactics": 50
215
+ }
216
+ },
217
+ "homes": {
218
+ "Trinsic": 3,
219
+ "Jhelom": 2,
220
+ "Britain": 2
221
+ },
222
+ "grounds": {
223
+ "Britain": 2,
224
+ "Jhelom": 2,
225
+ "Cove": 1,
226
+ "Vesper": 1
227
+ },
228
+ "trainingGoals": {
229
+ "Swordsmanship": 100,
230
+ "Healing": 100,
231
+ "Tactics": 100
232
+ },
233
+ "riskTolerance": 0.5,
234
+ "supplies": {
235
+ "bandage": 30
236
+ }
237
+ },
238
+ "fencer": {
239
+ "archetype": "fencer",
240
+ "share": 7,
241
+ "behavior": "fighter",
242
+ "creation": {
243
+ "namePrefix": "Fencer",
244
+ "skills": {
245
+ "Fencing": 50,
246
+ "Tactics": 50
247
+ }
248
+ },
249
+ "homes": {
250
+ "Jhelom": 3,
251
+ "Trinsic": 2,
252
+ "Britain": 1
253
+ },
254
+ "grounds": {
255
+ "Jhelom": 2,
256
+ "Britain": 1,
257
+ "Moonglow": 1,
258
+ "Cove": 1
259
+ },
260
+ "trainingGoals": {
261
+ "Fencing": 100,
262
+ "Healing": 100,
263
+ "Tactics": 100
264
+ },
265
+ "riskTolerance": 0.5,
266
+ "supplies": {
267
+ "bandage": 30
268
+ }
269
+ },
270
+ "macer": {
271
+ "archetype": "mace-fighter",
272
+ "share": 7,
273
+ "behavior": "fighter",
274
+ "creation": {
275
+ "namePrefix": "Macer",
276
+ "skills": {
277
+ "Mace Fighting": 50,
278
+ "Tactics": 50
279
+ }
280
+ },
281
+ "homes": {
282
+ "Trinsic": 2,
283
+ "Jhelom": 2,
284
+ "Minoc": 1,
285
+ "Britain": 1
286
+ },
287
+ "grounds": {
288
+ "Cove": 2,
289
+ "Vesper": 1,
290
+ "Britain": 1,
291
+ "Jhelom": 1
292
+ },
293
+ "trainingGoals": {
294
+ "Mace Fighting": 100,
295
+ "Healing": 100,
296
+ "Tactics": 100
297
+ },
298
+ "riskTolerance": 0.5,
299
+ "supplies": {
300
+ "bandage": 30
301
+ }
302
+ },
303
+ "archer": {
304
+ "archetype": "archer",
305
+ "share": 7,
306
+ "behavior": "fighter",
307
+ "creation": {
308
+ "namePrefix": "Archer",
309
+ "skills": {
310
+ "Archery": 50,
311
+ "Tactics": 50
312
+ }
313
+ },
314
+ "homes": {
315
+ "Skara Brae": 3,
316
+ "Yew": 3,
317
+ "Britain": 1
318
+ },
319
+ "grounds": {
320
+ "Yew": 3,
321
+ "Britain": 1,
322
+ "Vesper": 1
323
+ },
324
+ "trainingGoals": {
325
+ "Archery": 100,
326
+ "Healing": 100,
327
+ "Tactics": 100
328
+ },
329
+ "riskTolerance": 0.5,
330
+ "supplies": {
331
+ "bandage": 30
332
+ }
333
+ },
334
+ "tank-mage": {
335
+ "archetype": "tank-mage",
336
+ "share": 5,
337
+ "behavior": "fighter",
338
+ "creation": {
339
+ "namePrefix": "Battlemage",
340
+ "skills": {
341
+ "Magery": 50,
342
+ "Tactics": 50
343
+ }
344
+ },
345
+ "homes": {
346
+ "Jhelom": 2,
347
+ "Moonglow": 2,
348
+ "Trinsic": 1
349
+ },
350
+ "grounds": {
351
+ "Moonglow": 2,
352
+ "Jhelom": 1,
353
+ "Britain": 1
354
+ },
355
+ "trainingGoals": {
356
+ "Magery": 100,
357
+ "Tactics": 100,
358
+ "Swordsmanship": 100
359
+ },
360
+ "riskTolerance": 0.5,
361
+ "supplies": {
362
+ "bandage": 20
363
+ }
364
+ },
365
+ "pure-mage": {
366
+ "archetype": "pure-mage",
367
+ "share": 6,
368
+ "behavior": "fighter",
369
+ "creation": {
370
+ "namePrefix": "Mage",
371
+ "skills": {
372
+ "Magery": 50,
373
+ "Eval Int": 50
374
+ }
375
+ },
376
+ "homes": {
377
+ "Moonglow": 4,
378
+ "Britain": 1,
379
+ "Magincia": 1
380
+ },
381
+ "grounds": {
382
+ "Moonglow": 3,
383
+ "Britain": 1,
384
+ "Yew": 1
385
+ },
386
+ "trainingGoals": {
387
+ "Magery": 100,
388
+ "Eval Int": 100,
389
+ "Meditation": 100
390
+ },
391
+ "riskTolerance": 0.4,
392
+ "supplies": {
393
+ "bandage": 10
394
+ }
395
+ },
396
+ "bard": {
397
+ "archetype": "bard",
398
+ "behavior": "bard",
399
+ "share": 5,
400
+ "creation": {
401
+ "namePrefix": "Bard",
402
+ "skills": {
403
+ "Musicianship": 50,
404
+ "Provocation": 50
405
+ }
406
+ },
407
+ "homes": {
408
+ "Britain": 4,
409
+ "Minoc": 1,
410
+ "Vesper": 1
411
+ },
412
+ "grounds": {
413
+ "Britain": 2,
414
+ "Vesper": 1,
415
+ "Yew": 1
416
+ },
417
+ "trainingGoals": {
418
+ "Musicianship": 100,
419
+ "Provocation": 100,
420
+ "Peacemaking": 100,
421
+ "Discordance": 100
422
+ },
423
+ "riskTolerance": 0.4,
424
+ "supplies": {
425
+ "instrument": 1,
426
+ "bandage": 20
427
+ }
428
+ },
429
+ "tamer": {
430
+ "archetype": "tamer",
431
+ "behavior": "tamer",
432
+ "share": 5,
433
+ "creation": {
434
+ "namePrefix": "Tamer",
435
+ "skills": {
436
+ "Animal Taming": 50,
437
+ "Animal Lore": 50
438
+ }
439
+ },
440
+ "homes": {
441
+ "Yew": 2,
442
+ "Skara Brae": 2,
443
+ "Vesper": 1
444
+ },
445
+ "trainingGoals": {
446
+ "Animal Taming": 100,
447
+ "Animal Lore": 100,
448
+ "Veterinary": 100
449
+ },
450
+ "riskTolerance": 0.4,
451
+ "supplies": {
452
+ "bandage": 20
453
+ }
454
+ },
455
+ "thief": {
456
+ "archetype": "thief",
457
+ "behavior": "thief",
458
+ "share": 3,
459
+ "creation": {
460
+ "namePrefix": "Rogue",
461
+ "skills": {
462
+ "Stealing": 50,
463
+ "Hiding": 50
464
+ }
465
+ },
466
+ "homes": {
467
+ "Britain": 2,
468
+ "Vesper": 1,
469
+ "Magincia": 1
470
+ },
471
+ "trainingGoals": {
472
+ "Stealing": 100,
473
+ "Snooping": 100,
474
+ "Hiding": 100,
475
+ "Stealth": 100
476
+ },
477
+ "riskTolerance": 0.6,
478
+ "supplies": {},
479
+ "mount": false,
480
+ "note": "Snooping and stealing are an owner-written extension (src/thief-actions.ts); until then thieves live in town and train Hiding, Stealth, Detect Hidden and their supporting skills."
481
+ },
482
+ "archer-tamer": {
483
+ "archetype": "archer-tamer",
484
+ "behavior": "tamer",
485
+ "share": 4,
486
+ "creation": {
487
+ "namePrefix": "Ranger",
488
+ "skills": {
489
+ "Animal Taming": 50,
490
+ "Archery": 50
491
+ }
492
+ },
493
+ "homes": {
494
+ "Yew": 2,
495
+ "Skara Brae": 1
496
+ },
497
+ "trainingGoals": {
498
+ "Animal Taming": 100,
499
+ "Archery": 100,
500
+ "Veterinary": 100
501
+ },
502
+ "riskTolerance": 0.4,
503
+ "supplies": {
504
+ "bandage": 30
505
+ }
506
+ },
507
+ "alchemist": {
508
+ "archetype": "alchemist",
509
+ "behavior": "alchemist",
510
+ "share": 2,
511
+ "creation": {
512
+ "namePrefix": "Alchemist",
513
+ "skills": {
514
+ "Alchemy": 50,
515
+ "Magery": 50
516
+ }
517
+ },
518
+ "homes": {
519
+ "Moonglow": 2,
520
+ "Britain": 1,
521
+ "Vesper": 1
522
+ },
523
+ "trainingGoals": {
524
+ "Alchemy": 100
525
+ },
526
+ "riskTolerance": 0.2,
527
+ "supplies": {
528
+ "mortar and pestle": 1
529
+ }
530
+ },
531
+ "bowyer": {
532
+ "archetype": "bowyer",
533
+ "behavior": "bowyer",
534
+ "share": 2,
535
+ "creation": {
536
+ "namePrefix": "Bowyer",
537
+ "skills": {
538
+ "Fletching": 50,
539
+ "Archery": 50
540
+ }
541
+ },
542
+ "homes": {
543
+ "Yew": 2,
544
+ "Britain": 1
545
+ },
546
+ "trainingGoals": {
547
+ "Fletching": 100
548
+ },
549
+ "riskTolerance": 0.3,
550
+ "supplies": {
551
+ "fletcher's tools": 1
552
+ }
553
+ },
554
+ "scribe-mage": {
555
+ "archetype": "scribe-mage",
556
+ "behavior": "fighter",
557
+ "share": 0,
558
+ "creation": {
559
+ "namePrefix": "Scribe",
560
+ "skills": {
561
+ "Magery": 50,
562
+ "Inscription": 50
563
+ }
564
+ },
565
+ "homes": {},
566
+ "trainingGoals": {
567
+ "Magery": 100,
568
+ "Inscription": 100,
569
+ "Eval Int": 100
570
+ },
571
+ "riskTolerance": 0.4,
572
+ "supplies": {
573
+ "bandage": 20
574
+ }
575
+ },
576
+ "warlock": {
577
+ "archetype": "warlock",
578
+ "behavior": "fighter",
579
+ "share": 0,
580
+ "creation": {
581
+ "namePrefix": "Warlock",
582
+ "skills": {
583
+ "Necromancy": 50,
584
+ "Magery": 50
585
+ }
586
+ },
587
+ "homes": {},
588
+ "trainingGoals": {
589
+ "Necromancy": 100,
590
+ "Magery": 100,
591
+ "Spirit Speak": 100
592
+ },
593
+ "riskTolerance": 0.45,
594
+ "supplies": {
595
+ "bandage": 20
596
+ }
597
+ }
598
+ },
599
+ "workAreas": {
600
+ "schemaVersion": 1,
601
+ "facet": 1,
602
+ "note": "Work areas scanned from the Trammel map and weighted by lore: Minoc is the mining town (Britannian Mining Company, Covetous), Yew the timber town; Trinsic (Honor) and Jhelom (Valor) are left to fighters. Cove buys tools in Britain (no tool vendor).",
603
+ "mining": [
604
+ {
605
+ "city": "Minoc",
606
+ "x": 2560,
607
+ "y": 500,
608
+ "weight": 4
609
+ },
610
+ {
611
+ "city": "Cove",
612
+ "x": 2185,
613
+ "y": 1195,
614
+ "weight": 1,
615
+ "toolCity": "Britain"
616
+ },
617
+ {
618
+ "city": "New Haven",
619
+ "x": 3481,
620
+ "y": 2757,
621
+ "weight": 0
622
+ }
623
+ ],
624
+ "woods": [
625
+ {
626
+ "city": "Yew",
627
+ "x": 571,
628
+ "y": 1041,
629
+ "weight": 4
630
+ },
631
+ {
632
+ "city": "Britain",
633
+ "x": 1230,
634
+ "y": 1470,
635
+ "weight": 1
636
+ },
637
+ {
638
+ "city": "Minoc",
639
+ "x": 2353,
640
+ "y": 652,
641
+ "weight": 1
642
+ },
643
+ {
644
+ "city": "Vesper",
645
+ "x": 2798,
646
+ "y": 651,
647
+ "weight": 1
648
+ },
649
+ {
650
+ "city": "Moonglow",
651
+ "x": 4346,
652
+ "y": 1128,
653
+ "weight": 1
654
+ },
655
+ {
656
+ "city": "Skara Brae",
657
+ "x": 647,
658
+ "y": 2080,
659
+ "weight": 1
660
+ },
661
+ {
662
+ "city": "New Haven",
663
+ "x": 3460,
664
+ "y": 2700,
665
+ "weight": 0
666
+ }
667
+ ]
668
+ },
669
+ "population": {
670
+ "max": 300
671
+ },
672
+ "lifecycle": {
673
+ "note": "Each resident moves between life phases at natural break points (back in town, after banking). `mix` names the time split in `mixes` (shares of time); temperament shifts each resident around it. `minutes` bounds each phase's length; at most `maxSwitchesPerMinute` residents per 50 in the runtime change phase in any minute. `chaos` (0-1) is how unpredictable residents are: detours by real places, passing greetings, changes of plan; a shard's `ai.chaos` overrides it.",
674
+ "mix": "balanced",
675
+ "mixes": {
676
+ "mostly-work": {
677
+ "work": 60,
678
+ "dungeon": 10,
679
+ "errands": 10,
680
+ "leisure": 10,
681
+ "visit": 5,
682
+ "practice": 5
683
+ },
684
+ "balanced": {
685
+ "work": 40,
686
+ "dungeon": 15,
687
+ "errands": 10,
688
+ "leisure": 15,
689
+ "visit": 10,
690
+ "practice": 10
691
+ },
692
+ "social": {
693
+ "work": 30,
694
+ "dungeon": 10,
695
+ "errands": 10,
696
+ "leisure": 25,
697
+ "visit": 15,
698
+ "practice": 10
699
+ }
700
+ },
701
+ "minutes": {
702
+ "work": [
703
+ 20,
704
+ 45
705
+ ],
706
+ "dungeon": [
707
+ 20,
708
+ 45
709
+ ],
710
+ "errands": [
711
+ 3,
712
+ 10
713
+ ],
714
+ "leisure": [
715
+ 5,
716
+ 15
717
+ ],
718
+ "visit": [
719
+ 15,
720
+ 40
721
+ ],
722
+ "practice": [
723
+ 5,
724
+ 15
725
+ ]
726
+ },
727
+ "maxSwitchesPerMinute": 5,
728
+ "chaos": 0.3
729
+ },
730
+ "housing": {
731
+ "note": "Residents build only on the lots of these districts (catalogs/house-lots.json, built by src/build-lots.ts from the map files). With no district, nobody buys a house. Each lot is 9x13 tiles: a 7x7 classic house with the yard ServUO requires (HousePlacement.cs) and walkways. `reserve` is the gold kept in the bank after paying.",
732
+ "districts": [
733
+ {
734
+ "name": "Minoc mines",
735
+ "x": 2630,
736
+ "y": 530,
737
+ "width": 115,
738
+ "height": 55
739
+ }
740
+ ],
741
+ "reserve": 3000
742
+ }
743
+ }