forked from DFHack/dfhack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRemoteFortressReader.proto
1109 lines (1015 loc) · 25 KB
/
RemoteFortressReader.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
package RemoteFortressReader;
//Attempts to provide a complete framework for reading everything from a fortress needed for vizualization
option optimize_for = LITE_RUNTIME;
// Plugin: RemoteFortressReader
import "ItemdefInstrument.proto";
// RPC GetMaterialList : EmptyMessage -> MaterialList
// RPC GetGrowthList : EmptyMessage -> MaterialList
// RPC GetBlockList : BlockRequest -> BlockList
// RPC CheckHashes : EmptyMessage -> EmptyMessage
// RPC GetTiletypeList : EmptyMessage -> TiletypeList
// RPC GetPlantList : BlockRequest -> PlantList
// RPC GetUnitList : EmptyMessage -> UnitList
// RPC GetUnitListInside : BlockRequest -> UnitList
// RPC GetViewInfo : EmptyMessage -> ViewInfo
// RPC GetMapInfo : EmptyMessage -> MapInfo
// RPC ResetMapHashes : EmptyMessage -> EmptyMessage
// RPC GetItemList : EmptyMessage -> MaterialList
// RPC GetBuildingDefList : EmptyMessage -> BuildingList
// RPC GetWorldMap : EmptyMessage -> WorldMap
// RPC GetWorldMapNew : EmptyMessage -> WorldMap
// RPC GetRegionMaps : EmptyMessage -> RegionMaps
// RPC GetRegionMapsNew : EmptyMessage -> RegionMaps
// RPC GetCreatureRaws : EmptyMessage -> CreatureRawList
// RPC GetPartialCreatureRaws : ListRequest -> CreatureRawList
// RPC GetWorldMapCenter : EmptyMessage -> WorldMap
// RPC GetPlantRaws : EmptyMessage -> PlantRawList
// RPC GetPartialPlantRaws : ListRequest -> PlantRawList
// RPC CopyScreen : EmptyMessage -> ScreenCapture
// RPC PassKeyboardEvent : KeyboardEvent -> EmptyMessage
// RPC SendDigCommand : DigCommand -> EmptyMessage
// RPC SetPauseState : SingleBool -> EmptyMessage
// RPC GetPauseState : EmptyMessage -> SingleBool
// RPC GetVersionInfo : EmptyMessage -> VersionInfo
// RPC GetReports : EmptyMessage -> Status
// RPC MoveCommand : MoveCommandParams -> EmptyMessage
// RPC JumpCommand : MoveCommandParams -> EmptyMessage
// RPC MenuQuery : EmptyMessage -> MenuContents
// RPC MovementSelectCommand : IntMessage -> EmptyMessage
// RPC MiscMoveCommand : MiscMoveParams -> EmptyMessage
// RPC GetLanguage : EmptyMessage -> Language
//We use shapes, etc, because the actual tiletypes may differ between DF versions.
enum TiletypeShape
{
NO_SHAPE = -1;
EMPTY = 0;
FLOOR = 1;
BOULDER = 2;
PEBBLES = 3;
WALL = 4;
FORTIFICATION = 5;
STAIR_UP = 6;
STAIR_DOWN = 7;
STAIR_UPDOWN = 8;
RAMP = 9;
RAMP_TOP = 10;
BROOK_BED = 11;
BROOK_TOP = 12;
TREE_SHAPE = 13;
SAPLING = 14;
SHRUB = 15;
ENDLESS_PIT = 16;
BRANCH = 17;
TRUNK_BRANCH = 18;
TWIG = 19;
}
enum TiletypeSpecial
{
NO_SPECIAL = -1;
NORMAL = 0;
RIVER_SOURCE = 1;
WATERFALL = 2;
SMOOTH = 3;
FURROWED = 4;
WET = 5;
DEAD = 6;
WORN_1 = 7;
WORN_2 = 8;
WORN_3 = 9;
TRACK = 10;
SMOOTH_DEAD = 11;
};
enum TiletypeMaterial
{
NO_MATERIAL = -1;
AIR = 0;
SOIL = 1;
STONE = 2;
FEATURE = 3;
LAVA_STONE = 4;
MINERAL = 5;
FROZEN_LIQUID = 6;
CONSTRUCTION = 7;
GRASS_LIGHT = 8;
GRASS_DARK = 9;
GRASS_DRY = 10;
GRASS_DEAD = 11;
PLANT = 12;
HFS = 13;
CAMPFIRE = 14;
FIRE = 15;
ASHES = 16;
MAGMA = 17;
DRIFTWOOD = 18;
POOL = 19;
BROOK = 20;
RIVER = 21;
ROOT = 22;
TREE_MATERIAL = 23;
MUSHROOM = 24;
UNDERWORLD_GATE = 25;
}
enum TiletypeVariant
{
NO_VARIANT = -1;
VAR_1 = 0;
VAR_2 = 1;
VAR_3 = 2;
VAR_4 = 3;
};
enum WorldPoles
{
NO_POLES = 0;
NORTH_POLE = 1;
SOUTH_POLE = 2;
BOTH_POLES = 3;
}
enum BuildingDirection
{
NORTH = 0;
EAST = 1;
SOUTH = 2;
WEST = 3;
NONE = 4;
}
enum TileDigDesignation
{
/**
* no designation
*/
NO_DIG = 0;
/**
* dig walls, remove stairs and ramps, gather plants, fell trees
*/
DEFAULT_DIG = 1;
UP_DOWN_STAIR_DIG = 2;
CHANNEL_DIG = 3;
RAMP_DIG = 4;
DOWN_STAIR_DIG = 5;
UP_STAIR_DIG = 6;
}
enum HairStyle
{
UNKEMPT = -1;
NEATLY_COMBED = 0;
BRAIDED = 1;
DOUBLE_BRAID = 2;
PONY_TAILS = 3;
CLEAN_SHAVEN = 4;
}
enum InventoryMode
{
Hauled = 0;
/**
* also shield, crutch
*/
Weapon = 1;
/**
* quiver
*/
Worn = 2;
Piercing = 3;
/**
* attached to clothing
*/
Flask = 4;
/**
* e.g. bandage
*/
WrappedAround = 5;
StuckIn = 6;
/**
* string descr like Worn
*/
InMouth = 7;
/**
* Left shoulder, right shoulder, or head, selected randomly using pet_seed
*/
Pet = 8;
SewnInto = 9;
Strapped = 10;
}
message Coord
{
optional int32 x = 1;
optional int32 y = 2;
optional int32 z = 3;
}
message Tiletype
{
required int32 id = 1;
optional string name = 2;
optional string caption = 3;
optional TiletypeShape shape = 4;
optional TiletypeSpecial special = 5;
optional TiletypeMaterial material = 6;
optional TiletypeVariant variant = 7;
optional string direction = 8;
};
message TiletypeList
{
repeated Tiletype tiletype_list = 1;
}
message BuildingExtents
{
required int32 pos_x = 1;
required int32 pos_y = 2;
required int32 width = 3;
required int32 height = 4;
repeated int32 extents = 5;
}
message BuildingItem
{
optional Item item = 1;
optional int32 mode = 2;
}
message BuildingInstance
{
required int32 index = 1;
optional int32 pos_x_min = 2;
optional int32 pos_y_min = 3;
optional int32 pos_z_min = 4;
optional int32 pos_x_max = 5;
optional int32 pos_y_max = 6;
optional int32 pos_z_max = 7;
optional BuildingType building_type = 8;
optional MatPair material = 9;
optional uint32 building_flags = 10;
optional bool is_room = 11;
optional BuildingExtents room = 12;
optional BuildingDirection direction = 13; //Doesn't mean anything for most buildings
repeated BuildingItem items = 14;
optional int32 active = 15;
}
message RiverEdge
{
optional int32 min_pos = 1;
optional int32 max_pos = 2;
optional int32 active = 3;
optional int32 elevation = 4;
}
message RiverTile
{
optional RiverEdge north = 1;
optional RiverEdge south = 2;
optional RiverEdge east = 3;
optional RiverEdge west = 4;
}
enum MatterState
{
Solid = 0;
Liquid = 1;
Gas = 2;
Powder = 3;
Paste = 4;
Pressed = 5;
}
message Spatter
{
optional MatPair material = 1;
optional int32 amount = 2;
optional MatterState state = 3;
optional MatPair item = 4;
}
message SpatterPile
{
repeated Spatter spatters = 1;
}
message Item
{
optional int32 id = 1;
optional Coord pos = 2;
optional uint32 flags1 = 3;
optional uint32 flags2 = 4;
optional MatPair type = 5;
optional MatPair material = 6;
optional ColorDefinition dye = 7;
optional int32 stack_size = 8;
optional float subpos_x = 9;
optional float subpos_y = 10;
optional float subpos_z = 11;
optional bool projectile = 12;
optional float velocity_x = 13;
optional float velocity_y = 14;
optional float velocity_z = 15;
optional int32 volume = 16;
repeated ItemImprovement improvements = 17;
optional ArtImage image = 18;
}
message MapBlock
{
required int32 map_x = 1;
required int32 map_y = 2;
required int32 map_z = 3;
repeated int32 tiles = 4;
repeated MatPair materials = 5;
repeated MatPair layer_materials = 6;
repeated MatPair vein_materials = 7;
repeated MatPair base_materials = 8;
repeated int32 magma = 9;
repeated int32 water = 10;
repeated bool hidden = 11;
repeated bool light = 12;
repeated bool subterranean = 13;
repeated bool outside = 14;
repeated bool aquifer = 15;
repeated bool water_stagnant = 16;
repeated bool water_salt = 17;
repeated MatPair construction_items = 18;
repeated BuildingInstance buildings = 19;
repeated int32 tree_percent = 20;
repeated int32 tree_x = 21;
repeated int32 tree_y = 22;
repeated int32 tree_z = 23;
repeated TileDigDesignation tile_dig_designation = 24;
repeated SpatterPile spatterPile = 25;
repeated Item items = 26;
repeated bool tile_dig_designation_marker = 27;
repeated bool tile_dig_designation_auto = 28;
repeated int32 grass_percent = 29;
repeated FlowInfo flows = 30;
}
message MatPair {
required int32 mat_type = 1;
required int32 mat_index = 2;
}
message ColorDefinition {
required int32 red = 1;
required int32 green = 2;
required int32 blue = 3;
}
message MaterialDefinition{
required MatPair mat_pair = 1;
optional string id = 2;
optional string name = 3;
optional ColorDefinition state_color = 4; //Simplifying colors to assume room temperature.
optional ItemdefInstrument.InstrumentDef instrument = 5;
}
message BuildingType
{
required int32 building_type = 1;
required int32 building_subtype = 2;
required int32 building_custom = 3;
}
message BuildingDefinition {
required BuildingType building_type = 1;
optional string id = 2;
optional string name = 3;
}
message BuildingList {
repeated BuildingDefinition building_list = 1;
}
message MaterialList{
repeated MaterialDefinition material_list = 1;
}
message Hair
{
optional int32 length = 1;
optional HairStyle style = 2;
}
message BodySizeInfo
{
optional int32 size_cur = 1;
optional int32 size_base = 2;
optional int32 area_cur = 3; /*!< size_cur^0.666 */
optional int32 area_base = 4; /*!< size_base^0.666 */
optional int32 length_cur = 5; /*!< (size_cur*10000)^0.333 */
optional int32 length_base = 6; /*!< (size_base*10000)^0.333 */
}
message UnitAppearance
{
repeated int32 body_modifiers = 1;
repeated int32 bp_modifiers = 2;
optional int32 size_modifier = 3;
repeated int32 colors = 4;
optional Hair hair = 5;
optional Hair beard = 6;
optional Hair moustache = 7;
optional Hair sideburns = 8;
}
message InventoryItem
{
optional InventoryMode mode = 1;
optional Item item = 2;
}
message UnitDefinition
{
required int32 id = 1;
optional bool isValid = 2;
optional int32 pos_x = 3;
optional int32 pos_y = 4;
optional int32 pos_z = 5;
optional MatPair race = 6;
optional ColorDefinition profession_color = 7;
optional uint32 flags1 = 8;
optional uint32 flags2 = 9;
optional uint32 flags3 = 10;
optional bool is_soldier = 11;
optional BodySizeInfo size_info = 12;
optional string name = 13;
optional int32 blood_max = 14;
optional int32 blood_count = 15;
optional UnitAppearance appearance = 16;
optional int32 profession_id = 17;
repeated string noble_positions = 18;
optional int32 rider_id = 19;
repeated InventoryItem inventory = 20;
optional float subpos_x = 21;
optional float subpos_y = 22;
optional float subpos_z = 23;
}
message UnitList
{
repeated UnitDefinition creature_list = 1;
}
message BlockRequest
{
optional int32 blocks_needed = 1;
optional int32 min_x = 2;
optional int32 max_x = 3;
optional int32 min_y = 4;
optional int32 max_y = 5;
optional int32 min_z = 6;
optional int32 max_z = 7;
}
message BlockList
{
repeated MapBlock map_blocks = 1;
optional int32 map_x = 2;
optional int32 map_y = 3;
repeated Engraving engravings = 4;
repeated Wave ocean_waves = 5;
}
message PlantDef
{
required int32 pos_x = 1;
required int32 pos_y = 2;
required int32 pos_z = 3;
required int32 index = 4;
}
message PlantList
{
repeated PlantDef plant_list = 1;
}
message ViewInfo
{
optional int32 view_pos_x = 1;
optional int32 view_pos_y = 2;
optional int32 view_pos_z = 3;
optional int32 view_size_x = 4;
optional int32 view_size_y = 5;
optional int32 cursor_pos_x = 6;
optional int32 cursor_pos_y = 7;
optional int32 cursor_pos_z = 8;
optional int32 follow_unit_id = 9 [default = -1];
optional int32 follow_item_id = 10 [default = -1];
}
message MapInfo
{
optional int32 block_size_x = 1;
optional int32 block_size_y = 2;
optional int32 block_size_z = 3;
optional int32 block_pos_x = 4;
optional int32 block_pos_y = 5;
optional int32 block_pos_z = 6;
optional string world_name = 7;
optional string world_name_english = 8;
optional string save_name = 9;
}
enum FrontType
{
FRONT_NONE = 0;
FRONT_WARM = 1;
FRONT_COLD = 2;
FRONT_OCCLUDED = 3;
}
enum CumulusType
{
CUMULUS_NONE = 0;
CUMULUS_MEDIUM = 1;
CUMULUS_MULTI = 2;
CUMULUS_NIMBUS = 3;
}
enum StratusType
{
STRATUS_NONE = 0;
STRATUS_ALTO = 1;
STRATUS_PROPER = 2;
STRATUS_NIMBUS = 3;
}
enum FogType
{
FOG_NONE = 0;
FOG_MIST = 1;
FOG_NORMAL = 2;
F0G_THICK = 3;
}
message Cloud
{
optional FrontType front = 1;
optional CumulusType cumulus = 2;
optional bool cirrus = 3;
optional StratusType stratus = 4;
optional FogType fog = 5;
}
message WorldMap
{
required int32 world_width = 1;
required int32 world_height = 2;
optional string name = 3;
optional string name_english = 4;
repeated int32 elevation = 5;
repeated int32 rainfall = 6;
repeated int32 vegetation = 7;
repeated int32 temperature = 8;
repeated int32 evilness = 9;
repeated int32 drainage = 10;
repeated int32 volcanism = 11;
repeated int32 savagery = 12;
repeated Cloud clouds = 13;
repeated int32 salinity = 14;
optional int32 map_x = 15;
optional int32 map_y = 16;
optional int32 center_x = 17;
optional int32 center_y = 18;
optional int32 center_z = 19;
optional int32 cur_year = 20;
optional int32 cur_year_tick = 21;
optional WorldPoles world_poles = 22;
repeated RiverTile river_tiles = 23;
repeated int32 water_elevation = 24;
repeated RegionTile region_tiles = 25;
}
enum SiteRealizationBuildingType
{
cottage_plot = 0;
castle_wall = 1;
castle_tower = 2;
castle_courtyard = 3;
house = 4;
temple = 5;
tomb = 6;
shop_house = 7;
warehouse = 8;
market_square = 9;
pasture = 10;
waste = 11;
courtyard = 12;
well = 13;
vault = 14;
great_tower = 15;
trenches = 16;
tree_house = 17;
hillock_house = 18;
mead_hall = 19;
fortress_entrance = 20;
library = 21;
tavern = 22;
}
message SiteRealizationBuildingWall
{
optional int32 start_x = 1;
optional int32 start_y = 2;
optional int32 start_z = 3;
optional int32 end_x = 4;
optional int32 end_y = 5;
optional int32 end_z = 6;
}
message SiteRealizationBuildingTower
{
optional int32 roof_z = 1;
optional bool round = 2;
optional bool goblin = 3;
}
message TrenchSpoke
{
optional int32 mound_start = 1;
optional int32 trench_start = 2;
optional int32 trench_end = 3;
optional int32 mound_end = 4;
}
message SiteRealizationBuildingTrenches
{
repeated TrenchSpoke spokes = 1;
}
message SiteRealizationBuilding
{
optional int32 id = 1;
optional SiteRealizationBuildingType type = 2;
optional int32 min_x = 3;
optional int32 min_y = 4;
optional int32 max_x = 5;
optional int32 max_y = 6;
optional MatPair material = 7;
optional SiteRealizationBuildingWall wall_info = 8;
optional SiteRealizationBuildingTower tower_info = 9;
optional SiteRealizationBuildingTrenches trench_info = 10;
}
message RegionTile
{
optional int32 elevation = 1;
optional int32 rainfall = 2;
optional int32 vegetation = 3;
optional int32 temperature = 4;
optional int32 evilness = 5;
optional int32 drainage = 6;
optional int32 volcanism = 7;
optional int32 savagery = 8;
optional int32 salinity = 9;
optional RiverTile river_tiles = 10;
optional int32 water_elevation = 11;
optional MatPair surface_material = 12;
repeated MatPair plant_materials = 13;
repeated SiteRealizationBuilding buildings = 14;
repeated MatPair stone_materials = 15;
repeated MatPair tree_materials = 16;
optional int32 snow = 17;
}
message RegionMap
{
optional int32 map_x = 1;
optional int32 map_y = 2;
optional string name = 3;
optional string name_english = 4;
repeated RegionTile tiles = 5;
}
message RegionMaps
{
repeated WorldMap world_maps = 1;
repeated RegionMap region_maps = 2;
}
enum PatternType
{
MONOTONE = 0;
STRIPES = 1;
IRIS_EYE = 2;
SPOTS = 3;
PUPIL_EYE = 4;
MOTTLED = 5;
}
message PatternDescriptor
{
optional string id = 1;
repeated ColorDefinition colors = 2;
optional PatternType pattern = 3;
}
message ColorModifierRaw
{
repeated PatternDescriptor patterns = 1;
repeated int32 body_part_id = 2;
repeated int32 tissue_layer_id = 3;
optional int32 start_date = 4;
optional int32 end_date = 5;
optional string part = 6;
}
message BodyPartLayerRaw
{
optional string layer_name = 1;
optional int32 tissue_id = 2;
optional int32 layer_depth = 3;
repeated int32 bp_modifiers = 4;
}
message BodyPartRaw
{
optional string token = 1;
optional string category = 2;
optional int32 parent = 3;
repeated bool flags = 4;
repeated BodyPartLayerRaw layers = 5;
optional int32 relsize = 6;
}
message BpAppearanceModifier
{
optional string type = 1;
optional int32 mod_min = 2;
optional int32 mod_max = 3;
}
message TissueRaw
{
optional string id = 1;
optional string name = 2;
optional MatPair material = 3;
optional string subordinate_to_tissue = 4;
}
message CasteRaw
{
optional int32 index = 1;
optional string caste_id = 2;
repeated string caste_name = 3;
repeated string baby_name = 4;
repeated string child_name = 5;
optional int32 gender = 6;
repeated BodyPartRaw body_parts = 7;
optional int32 total_relsize = 8;
repeated BpAppearanceModifier modifiers = 9;
repeated int32 modifier_idx = 10;
repeated int32 part_idx = 11;
repeated int32 layer_idx = 12;
repeated BpAppearanceModifier body_appearance_modifiers = 13;
repeated ColorModifierRaw color_modifiers = 14;
optional string description = 15;
optional int32 adult_size = 16;
}
message CreatureRaw
{
optional int32 index = 1;
optional string creature_id = 2;
repeated string name = 3;
repeated string general_baby_name = 4;
repeated string general_child_name = 5;
optional int32 creature_tile = 6;
optional int32 creature_soldier_tile = 7;
optional ColorDefinition color = 8;
optional int32 adultsize = 9;
repeated CasteRaw caste = 10;
repeated TissueRaw tissues = 11;
}
message CreatureRawList
{
repeated CreatureRaw creature_raws = 1;
}
message Army
{
optional int32 id = 1;
optional int32 pos_x = 2;
optional int32 pos_y = 3;
optional int32 pos_z = 4;
optional UnitDefinition leader = 5;
repeated UnitDefinition members = 6;
optional uint32 flags = 7;
}
message ArmyList
{
repeated Army armies = 1;
}
message GrowthPrint
{
optional int32 priority = 1;
optional int32 color = 2;
optional int32 timing_start = 3;
optional int32 timing_end = 4;
optional int32 tile = 5;
}
message TreeGrowth
{
optional int32 index = 1;
optional string id = 2;
optional string name = 3;
optional MatPair mat = 4;
repeated GrowthPrint prints = 5;
optional int32 timing_start = 6;
optional int32 timing_end = 7;
optional bool twigs = 8;
optional bool light_branches = 9;
optional bool heavy_branches = 10;
optional bool trunk = 11;
optional bool roots = 12;
optional bool cap = 13;
optional bool sapling = 14;
optional int32 trunk_height_start = 15;
optional int32 trunk_height_end = 16;
}
message PlantRaw
{
optional int32 index = 1;
optional string id = 2;
optional string name = 3;
repeated TreeGrowth growths = 4;
optional int32 tile = 5;
}
message PlantRawList
{
repeated PlantRaw plant_raws = 1;
}
message ScreenTile
{
optional uint32 character = 1;
optional uint32 foreground = 2;
optional uint32 background = 3;
}
message ScreenCapture
{
optional uint32 width = 1;
optional uint32 height = 2;
repeated ScreenTile tiles = 3;
}
message KeyboardEvent
{
optional uint32 type = 1;
optional uint32 which = 2;
optional uint32 state = 3;
optional uint32 scancode = 4;
optional uint32 sym = 5;
optional uint32 mod = 6;
optional uint32 unicode = 7;
}
message DigCommand
{
optional TileDigDesignation designation = 1;
repeated Coord locations = 2;
}
message SingleBool
{
optional bool Value = 1;
}
message VersionInfo
{
optional string dwarf_fortress_version = 1;
optional string dfhack_version = 2;
optional string remote_fortress_reader_version = 3;
}
message ListRequest
{
optional int32 list_start = 1;
optional int32 list_end = 2;
}
message Report
{
optional int32 type = 1;
optional string text = 2;
optional ColorDefinition color = 3;
optional int32 duration = 4;
optional bool continuation = 5;
optional bool unconscious = 6;
optional bool announcement = 7;
optional int32 repeat_count = 8;
optional Coord pos = 9;
optional int32 id = 10;
optional int32 year = 11;
optional int32 time = 12;
}
message Status
{
repeated Report reports = 1;
}
message ShapeDescriptior
{
optional string id = 1;
optional int32 tile = 2;
}
message Language
{
repeated ShapeDescriptior shapes = 1;
}
enum ImprovementType
{
ART_IMAGE = 0;
COVERED = 1;
RINGS_HANGING = 2;
BANDS = 3;
SPIKES = 4;
ITEMSPECIFIC = 5;
THREAD = 6;
CLOTH = 7;
SEWN_IMAGE = 8;
PAGES = 9;
ILLUSTRATION = 10;
INSTRUMENT_PIECE = 11;
WRITING = 12;
}
message ItemImprovement
{
optional MatPair material = 1;
optional ImprovementType type = 2;
optional int32 shape = 3;
optional int32 specific_type= 4;
optional ArtImage image = 5;
}
enum ArtImageElementType
{
IMAGE_CREATURE = 0;
IMAGE_PLANT = 1;
IMAGE_TREE = 2;
IMAGE_SHAPE = 3;
IMAGE_ITEM = 4;
}
message ArtImageElement
{
optional int32 count = 1;
optional ArtImageElementType type = 2;
optional MatPair creature_item = 3;
optional MatPair material = 5;
optional int32 id = 6;
}
enum ArtImagePropertyType
{
TRANSITIVE_VERB = 0;
INTRANSITIVE_VERB = 1;
}
message ArtImageProperty
{
optional int32 subject = 1;
optional int32 object = 2;
optional ArtImageVerb verb = 3;
optional ArtImagePropertyType type = 4;
}
message ArtImage
{
repeated ArtImageElement elements = 1;
optional MatPair id = 2;
repeated ArtImageProperty properties = 3;
}