Skip to main content

dfhack_proto/generated/messages/
remote_fortress_reader.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize)]
3#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4pub struct Coord {
5    #[prost(int32, optional, tag = "1")]
6    pub x: ::core::option::Option<i32>,
7    #[prost(int32, optional, tag = "2")]
8    pub y: ::core::option::Option<i32>,
9    #[prost(int32, optional, tag = "3")]
10    pub z: ::core::option::Option<i32>,
11}
12impl ::prost::Name for Coord {
13    const NAME: &'static str = "Coord";
14    const PACKAGE: &'static str = "RemoteFortressReader";
15    fn full_name() -> ::prost::alloc::string::String {
16        "RemoteFortressReader.Coord".into()
17    }
18    fn type_url() -> ::prost::alloc::string::String {
19        "/RemoteFortressReader.Coord".into()
20    }
21}
22#[derive(serde::Serialize)]
23#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24pub struct Tiletype {
25    #[prost(int32, required, tag = "1")]
26    pub id: i32,
27    #[prost(string, optional, tag = "2")]
28    pub name: ::core::option::Option<::prost::alloc::string::String>,
29    #[prost(string, optional, tag = "3")]
30    pub caption: ::core::option::Option<::prost::alloc::string::String>,
31    #[prost(enumeration = "TiletypeShape", optional, tag = "4")]
32    pub shape: ::core::option::Option<i32>,
33    #[prost(enumeration = "TiletypeSpecial", optional, tag = "5")]
34    pub special: ::core::option::Option<i32>,
35    #[prost(enumeration = "TiletypeMaterial", optional, tag = "6")]
36    pub material: ::core::option::Option<i32>,
37    #[prost(enumeration = "TiletypeVariant", optional, tag = "7")]
38    pub variant: ::core::option::Option<i32>,
39    #[prost(string, optional, tag = "8")]
40    pub direction: ::core::option::Option<::prost::alloc::string::String>,
41}
42impl ::prost::Name for Tiletype {
43    const NAME: &'static str = "Tiletype";
44    const PACKAGE: &'static str = "RemoteFortressReader";
45    fn full_name() -> ::prost::alloc::string::String {
46        "RemoteFortressReader.Tiletype".into()
47    }
48    fn type_url() -> ::prost::alloc::string::String {
49        "/RemoteFortressReader.Tiletype".into()
50    }
51}
52#[derive(serde::Serialize)]
53#[derive(Clone, PartialEq, ::prost::Message)]
54pub struct TiletypeList {
55    #[prost(message, repeated, tag = "1")]
56    pub tiletype_list: ::prost::alloc::vec::Vec<Tiletype>,
57}
58impl ::prost::Name for TiletypeList {
59    const NAME: &'static str = "TiletypeList";
60    const PACKAGE: &'static str = "RemoteFortressReader";
61    fn full_name() -> ::prost::alloc::string::String {
62        "RemoteFortressReader.TiletypeList".into()
63    }
64    fn type_url() -> ::prost::alloc::string::String {
65        "/RemoteFortressReader.TiletypeList".into()
66    }
67}
68#[derive(serde::Serialize)]
69#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
70pub struct BuildingExtents {
71    #[prost(int32, required, tag = "1")]
72    pub pos_x: i32,
73    #[prost(int32, required, tag = "2")]
74    pub pos_y: i32,
75    #[prost(int32, required, tag = "3")]
76    pub width: i32,
77    #[prost(int32, required, tag = "4")]
78    pub height: i32,
79    #[prost(int32, repeated, packed = "false", tag = "5")]
80    pub extents: ::prost::alloc::vec::Vec<i32>,
81}
82impl ::prost::Name for BuildingExtents {
83    const NAME: &'static str = "BuildingExtents";
84    const PACKAGE: &'static str = "RemoteFortressReader";
85    fn full_name() -> ::prost::alloc::string::String {
86        "RemoteFortressReader.BuildingExtents".into()
87    }
88    fn type_url() -> ::prost::alloc::string::String {
89        "/RemoteFortressReader.BuildingExtents".into()
90    }
91}
92#[derive(serde::Serialize)]
93#[derive(Clone, PartialEq, ::prost::Message)]
94pub struct BuildingItem {
95    #[prost(message, optional, tag = "1")]
96    pub item: ::core::option::Option<Item>,
97    #[prost(int32, optional, tag = "2")]
98    pub mode: ::core::option::Option<i32>,
99}
100impl ::prost::Name for BuildingItem {
101    const NAME: &'static str = "BuildingItem";
102    const PACKAGE: &'static str = "RemoteFortressReader";
103    fn full_name() -> ::prost::alloc::string::String {
104        "RemoteFortressReader.BuildingItem".into()
105    }
106    fn type_url() -> ::prost::alloc::string::String {
107        "/RemoteFortressReader.BuildingItem".into()
108    }
109}
110#[derive(serde::Serialize)]
111#[derive(Clone, PartialEq, ::prost::Message)]
112pub struct BuildingInstance {
113    #[prost(int32, required, tag = "1")]
114    pub index: i32,
115    #[prost(int32, optional, tag = "2")]
116    pub pos_x_min: ::core::option::Option<i32>,
117    #[prost(int32, optional, tag = "3")]
118    pub pos_y_min: ::core::option::Option<i32>,
119    #[prost(int32, optional, tag = "4")]
120    pub pos_z_min: ::core::option::Option<i32>,
121    #[prost(int32, optional, tag = "5")]
122    pub pos_x_max: ::core::option::Option<i32>,
123    #[prost(int32, optional, tag = "6")]
124    pub pos_y_max: ::core::option::Option<i32>,
125    #[prost(int32, optional, tag = "7")]
126    pub pos_z_max: ::core::option::Option<i32>,
127    #[prost(message, optional, tag = "8")]
128    pub building_type: ::core::option::Option<BuildingType>,
129    #[prost(message, optional, tag = "9")]
130    pub material: ::core::option::Option<MatPair>,
131    #[prost(uint32, optional, tag = "10")]
132    pub building_flags: ::core::option::Option<u32>,
133    #[prost(bool, optional, tag = "11")]
134    pub is_room: ::core::option::Option<bool>,
135    #[prost(message, optional, tag = "12")]
136    pub room: ::core::option::Option<BuildingExtents>,
137    /// Doesn't mean anything for most buildings
138    #[prost(enumeration = "BuildingDirection", optional, tag = "13")]
139    pub direction: ::core::option::Option<i32>,
140    #[prost(message, repeated, tag = "14")]
141    pub items: ::prost::alloc::vec::Vec<BuildingItem>,
142    #[prost(int32, optional, tag = "15")]
143    pub active: ::core::option::Option<i32>,
144}
145impl ::prost::Name for BuildingInstance {
146    const NAME: &'static str = "BuildingInstance";
147    const PACKAGE: &'static str = "RemoteFortressReader";
148    fn full_name() -> ::prost::alloc::string::String {
149        "RemoteFortressReader.BuildingInstance".into()
150    }
151    fn type_url() -> ::prost::alloc::string::String {
152        "/RemoteFortressReader.BuildingInstance".into()
153    }
154}
155#[derive(serde::Serialize)]
156#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
157pub struct RiverEdge {
158    #[prost(int32, optional, tag = "1")]
159    pub min_pos: ::core::option::Option<i32>,
160    #[prost(int32, optional, tag = "2")]
161    pub max_pos: ::core::option::Option<i32>,
162    #[prost(int32, optional, tag = "3")]
163    pub active: ::core::option::Option<i32>,
164    #[prost(int32, optional, tag = "4")]
165    pub elevation: ::core::option::Option<i32>,
166}
167impl ::prost::Name for RiverEdge {
168    const NAME: &'static str = "RiverEdge";
169    const PACKAGE: &'static str = "RemoteFortressReader";
170    fn full_name() -> ::prost::alloc::string::String {
171        "RemoteFortressReader.RiverEdge".into()
172    }
173    fn type_url() -> ::prost::alloc::string::String {
174        "/RemoteFortressReader.RiverEdge".into()
175    }
176}
177#[derive(serde::Serialize)]
178#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
179pub struct RiverTile {
180    #[prost(message, optional, tag = "1")]
181    pub north: ::core::option::Option<RiverEdge>,
182    #[prost(message, optional, tag = "2")]
183    pub south: ::core::option::Option<RiverEdge>,
184    #[prost(message, optional, tag = "3")]
185    pub east: ::core::option::Option<RiverEdge>,
186    #[prost(message, optional, tag = "4")]
187    pub west: ::core::option::Option<RiverEdge>,
188}
189impl ::prost::Name for RiverTile {
190    const NAME: &'static str = "RiverTile";
191    const PACKAGE: &'static str = "RemoteFortressReader";
192    fn full_name() -> ::prost::alloc::string::String {
193        "RemoteFortressReader.RiverTile".into()
194    }
195    fn type_url() -> ::prost::alloc::string::String {
196        "/RemoteFortressReader.RiverTile".into()
197    }
198}
199#[derive(serde::Serialize)]
200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
201pub struct Spatter {
202    #[prost(message, optional, tag = "1")]
203    pub material: ::core::option::Option<MatPair>,
204    #[prost(int32, optional, tag = "2")]
205    pub amount: ::core::option::Option<i32>,
206    #[prost(enumeration = "MatterState", optional, tag = "3")]
207    pub state: ::core::option::Option<i32>,
208    #[prost(message, optional, tag = "4")]
209    pub item: ::core::option::Option<MatPair>,
210}
211impl ::prost::Name for Spatter {
212    const NAME: &'static str = "Spatter";
213    const PACKAGE: &'static str = "RemoteFortressReader";
214    fn full_name() -> ::prost::alloc::string::String {
215        "RemoteFortressReader.Spatter".into()
216    }
217    fn type_url() -> ::prost::alloc::string::String {
218        "/RemoteFortressReader.Spatter".into()
219    }
220}
221#[derive(serde::Serialize)]
222#[derive(Clone, PartialEq, ::prost::Message)]
223pub struct SpatterPile {
224    #[prost(message, repeated, tag = "1")]
225    pub spatters: ::prost::alloc::vec::Vec<Spatter>,
226}
227impl ::prost::Name for SpatterPile {
228    const NAME: &'static str = "SpatterPile";
229    const PACKAGE: &'static str = "RemoteFortressReader";
230    fn full_name() -> ::prost::alloc::string::String {
231        "RemoteFortressReader.SpatterPile".into()
232    }
233    fn type_url() -> ::prost::alloc::string::String {
234        "/RemoteFortressReader.SpatterPile".into()
235    }
236}
237#[derive(serde::Serialize)]
238#[derive(Clone, PartialEq, ::prost::Message)]
239pub struct Item {
240    #[prost(int32, optional, tag = "1")]
241    pub id: ::core::option::Option<i32>,
242    #[prost(message, optional, tag = "2")]
243    pub pos: ::core::option::Option<Coord>,
244    #[prost(uint32, optional, tag = "3")]
245    pub flags1: ::core::option::Option<u32>,
246    #[prost(uint32, optional, tag = "4")]
247    pub flags2: ::core::option::Option<u32>,
248    #[prost(message, optional, tag = "5")]
249    pub r#type: ::core::option::Option<MatPair>,
250    #[prost(message, optional, tag = "6")]
251    pub material: ::core::option::Option<MatPair>,
252    #[prost(message, optional, tag = "7")]
253    pub dye: ::core::option::Option<ColorDefinition>,
254    #[prost(int32, optional, tag = "8")]
255    pub stack_size: ::core::option::Option<i32>,
256    #[prost(float, optional, tag = "9")]
257    pub subpos_x: ::core::option::Option<f32>,
258    #[prost(float, optional, tag = "10")]
259    pub subpos_y: ::core::option::Option<f32>,
260    #[prost(float, optional, tag = "11")]
261    pub subpos_z: ::core::option::Option<f32>,
262    #[prost(bool, optional, tag = "12")]
263    pub projectile: ::core::option::Option<bool>,
264    #[prost(float, optional, tag = "13")]
265    pub velocity_x: ::core::option::Option<f32>,
266    #[prost(float, optional, tag = "14")]
267    pub velocity_y: ::core::option::Option<f32>,
268    #[prost(float, optional, tag = "15")]
269    pub velocity_z: ::core::option::Option<f32>,
270    #[prost(int32, optional, tag = "16")]
271    pub volume: ::core::option::Option<i32>,
272    #[prost(message, repeated, tag = "17")]
273    pub improvements: ::prost::alloc::vec::Vec<ItemImprovement>,
274    #[prost(message, optional, tag = "18")]
275    pub image: ::core::option::Option<ArtImage>,
276}
277impl ::prost::Name for Item {
278    const NAME: &'static str = "Item";
279    const PACKAGE: &'static str = "RemoteFortressReader";
280    fn full_name() -> ::prost::alloc::string::String {
281        "RemoteFortressReader.Item".into()
282    }
283    fn type_url() -> ::prost::alloc::string::String {
284        "/RemoteFortressReader.Item".into()
285    }
286}
287#[derive(serde::Serialize)]
288#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
289pub struct PlantTile {
290    #[prost(bool, optional, tag = "1")]
291    pub trunk: ::core::option::Option<bool>,
292    #[prost(bool, optional, tag = "2")]
293    pub connection_east: ::core::option::Option<bool>,
294    #[prost(bool, optional, tag = "3")]
295    pub connection_south: ::core::option::Option<bool>,
296    #[prost(bool, optional, tag = "4")]
297    pub connection_west: ::core::option::Option<bool>,
298    #[prost(bool, optional, tag = "5")]
299    pub connection_north: ::core::option::Option<bool>,
300    #[prost(bool, optional, tag = "6")]
301    pub branches: ::core::option::Option<bool>,
302    #[prost(bool, optional, tag = "7")]
303    pub twigs: ::core::option::Option<bool>,
304    #[prost(enumeration = "TiletypeSpecial", optional, tag = "8")]
305    pub tile_type: ::core::option::Option<i32>,
306}
307impl ::prost::Name for PlantTile {
308    const NAME: &'static str = "PlantTile";
309    const PACKAGE: &'static str = "RemoteFortressReader";
310    fn full_name() -> ::prost::alloc::string::String {
311        "RemoteFortressReader.PlantTile".into()
312    }
313    fn type_url() -> ::prost::alloc::string::String {
314        "/RemoteFortressReader.PlantTile".into()
315    }
316}
317#[derive(serde::Serialize)]
318#[derive(Clone, PartialEq, ::prost::Message)]
319pub struct TreeInfo {
320    #[prost(message, optional, tag = "1")]
321    pub size: ::core::option::Option<Coord>,
322    #[prost(message, repeated, tag = "2")]
323    pub tiles: ::prost::alloc::vec::Vec<PlantTile>,
324}
325impl ::prost::Name for TreeInfo {
326    const NAME: &'static str = "TreeInfo";
327    const PACKAGE: &'static str = "RemoteFortressReader";
328    fn full_name() -> ::prost::alloc::string::String {
329        "RemoteFortressReader.TreeInfo".into()
330    }
331    fn type_url() -> ::prost::alloc::string::String {
332        "/RemoteFortressReader.TreeInfo".into()
333    }
334}
335#[derive(serde::Serialize)]
336#[derive(Clone, PartialEq, ::prost::Message)]
337pub struct PlantInstance {
338    #[prost(int32, optional, tag = "1")]
339    pub plant_type: ::core::option::Option<i32>,
340    #[prost(message, optional, tag = "2")]
341    pub pos: ::core::option::Option<Coord>,
342    #[prost(message, optional, tag = "3")]
343    pub tree_info: ::core::option::Option<TreeInfo>,
344}
345impl ::prost::Name for PlantInstance {
346    const NAME: &'static str = "PlantInstance";
347    const PACKAGE: &'static str = "RemoteFortressReader";
348    fn full_name() -> ::prost::alloc::string::String {
349        "RemoteFortressReader.PlantInstance".into()
350    }
351    fn type_url() -> ::prost::alloc::string::String {
352        "/RemoteFortressReader.PlantInstance".into()
353    }
354}
355#[derive(serde::Serialize)]
356#[derive(Clone, PartialEq, ::prost::Message)]
357pub struct MapBlock {
358    #[prost(int32, required, tag = "1")]
359    pub map_x: i32,
360    #[prost(int32, required, tag = "2")]
361    pub map_y: i32,
362    #[prost(int32, required, tag = "3")]
363    pub map_z: i32,
364    #[prost(int32, repeated, packed = "false", tag = "4")]
365    pub tiles: ::prost::alloc::vec::Vec<i32>,
366    #[prost(message, repeated, tag = "5")]
367    pub materials: ::prost::alloc::vec::Vec<MatPair>,
368    #[prost(message, repeated, tag = "6")]
369    pub layer_materials: ::prost::alloc::vec::Vec<MatPair>,
370    #[prost(message, repeated, tag = "7")]
371    pub vein_materials: ::prost::alloc::vec::Vec<MatPair>,
372    #[prost(message, repeated, tag = "8")]
373    pub base_materials: ::prost::alloc::vec::Vec<MatPair>,
374    #[prost(int32, repeated, packed = "false", tag = "9")]
375    pub magma: ::prost::alloc::vec::Vec<i32>,
376    #[prost(int32, repeated, packed = "false", tag = "10")]
377    pub water: ::prost::alloc::vec::Vec<i32>,
378    #[prost(bool, repeated, packed = "false", tag = "11")]
379    pub hidden: ::prost::alloc::vec::Vec<bool>,
380    #[prost(bool, repeated, packed = "false", tag = "12")]
381    pub light: ::prost::alloc::vec::Vec<bool>,
382    #[prost(bool, repeated, packed = "false", tag = "13")]
383    pub subterranean: ::prost::alloc::vec::Vec<bool>,
384    #[prost(bool, repeated, packed = "false", tag = "14")]
385    pub outside: ::prost::alloc::vec::Vec<bool>,
386    #[prost(bool, repeated, packed = "false", tag = "15")]
387    pub aquifer: ::prost::alloc::vec::Vec<bool>,
388    #[prost(bool, repeated, packed = "false", tag = "16")]
389    pub water_stagnant: ::prost::alloc::vec::Vec<bool>,
390    #[prost(bool, repeated, packed = "false", tag = "17")]
391    pub water_salt: ::prost::alloc::vec::Vec<bool>,
392    #[prost(message, repeated, tag = "18")]
393    pub construction_items: ::prost::alloc::vec::Vec<MatPair>,
394    #[prost(message, repeated, tag = "19")]
395    pub buildings: ::prost::alloc::vec::Vec<BuildingInstance>,
396    #[prost(int32, repeated, packed = "false", tag = "20")]
397    pub tree_percent: ::prost::alloc::vec::Vec<i32>,
398    #[prost(int32, repeated, packed = "false", tag = "21")]
399    pub tree_x: ::prost::alloc::vec::Vec<i32>,
400    #[prost(int32, repeated, packed = "false", tag = "22")]
401    pub tree_y: ::prost::alloc::vec::Vec<i32>,
402    #[prost(int32, repeated, packed = "false", tag = "23")]
403    pub tree_z: ::prost::alloc::vec::Vec<i32>,
404    #[prost(enumeration = "TileDigDesignation", repeated, packed = "false", tag = "24")]
405    pub tile_dig_designation: ::prost::alloc::vec::Vec<i32>,
406    #[prost(message, repeated, tag = "25")]
407    pub spatter_pile: ::prost::alloc::vec::Vec<SpatterPile>,
408    #[prost(message, repeated, tag = "26")]
409    pub items: ::prost::alloc::vec::Vec<Item>,
410    #[prost(bool, repeated, packed = "false", tag = "27")]
411    pub tile_dig_designation_marker: ::prost::alloc::vec::Vec<bool>,
412    #[prost(bool, repeated, packed = "false", tag = "28")]
413    pub tile_dig_designation_auto: ::prost::alloc::vec::Vec<bool>,
414    #[prost(int32, repeated, packed = "false", tag = "29")]
415    pub grass_percent: ::prost::alloc::vec::Vec<i32>,
416    #[prost(message, repeated, tag = "30")]
417    pub flows: ::prost::alloc::vec::Vec<FlowInfo>,
418}
419impl ::prost::Name for MapBlock {
420    const NAME: &'static str = "MapBlock";
421    const PACKAGE: &'static str = "RemoteFortressReader";
422    fn full_name() -> ::prost::alloc::string::String {
423        "RemoteFortressReader.MapBlock".into()
424    }
425    fn type_url() -> ::prost::alloc::string::String {
426        "/RemoteFortressReader.MapBlock".into()
427    }
428}
429#[derive(serde::Serialize)]
430#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
431pub struct MatPair {
432    #[prost(int32, required, tag = "1")]
433    pub mat_type: i32,
434    #[prost(int32, required, tag = "2")]
435    pub mat_index: i32,
436}
437impl ::prost::Name for MatPair {
438    const NAME: &'static str = "MatPair";
439    const PACKAGE: &'static str = "RemoteFortressReader";
440    fn full_name() -> ::prost::alloc::string::String {
441        "RemoteFortressReader.MatPair".into()
442    }
443    fn type_url() -> ::prost::alloc::string::String {
444        "/RemoteFortressReader.MatPair".into()
445    }
446}
447#[derive(serde::Serialize)]
448#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
449pub struct ColorDefinition {
450    #[prost(int32, required, tag = "1")]
451    pub red: i32,
452    #[prost(int32, required, tag = "2")]
453    pub green: i32,
454    #[prost(int32, required, tag = "3")]
455    pub blue: i32,
456}
457impl ::prost::Name for ColorDefinition {
458    const NAME: &'static str = "ColorDefinition";
459    const PACKAGE: &'static str = "RemoteFortressReader";
460    fn full_name() -> ::prost::alloc::string::String {
461        "RemoteFortressReader.ColorDefinition".into()
462    }
463    fn type_url() -> ::prost::alloc::string::String {
464        "/RemoteFortressReader.ColorDefinition".into()
465    }
466}
467#[derive(serde::Serialize)]
468#[derive(Clone, PartialEq, ::prost::Message)]
469pub struct MaterialDefinition {
470    #[prost(message, required, tag = "1")]
471    pub mat_pair: MatPair,
472    #[prost(string, optional, tag = "2")]
473    pub id: ::core::option::Option<::prost::alloc::string::String>,
474    #[prost(bytes = "vec", optional, tag = "3")]
475    pub name: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
476    /// Simplifying colors to assume room temperature.
477    #[prost(message, optional, tag = "4")]
478    pub state_color: ::core::option::Option<ColorDefinition>,
479    #[prost(message, optional, tag = "5")]
480    pub instrument: ::core::option::Option<super::itemdef_instrument::InstrumentDef>,
481    #[prost(int32, optional, tag = "6")]
482    pub up_step: ::core::option::Option<i32>,
483    #[prost(int32, optional, tag = "7")]
484    pub down_step: ::core::option::Option<i32>,
485    #[prost(enumeration = "ArmorLayer", optional, tag = "8")]
486    pub layer: ::core::option::Option<i32>,
487}
488impl ::prost::Name for MaterialDefinition {
489    const NAME: &'static str = "MaterialDefinition";
490    const PACKAGE: &'static str = "RemoteFortressReader";
491    fn full_name() -> ::prost::alloc::string::String {
492        "RemoteFortressReader.MaterialDefinition".into()
493    }
494    fn type_url() -> ::prost::alloc::string::String {
495        "/RemoteFortressReader.MaterialDefinition".into()
496    }
497}
498#[derive(serde::Serialize)]
499#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
500pub struct BuildingType {
501    #[prost(int32, required, tag = "1")]
502    pub building_type: i32,
503    #[prost(int32, required, tag = "2")]
504    pub building_subtype: i32,
505    #[prost(int32, required, tag = "3")]
506    pub building_custom: i32,
507}
508impl ::prost::Name for BuildingType {
509    const NAME: &'static str = "BuildingType";
510    const PACKAGE: &'static str = "RemoteFortressReader";
511    fn full_name() -> ::prost::alloc::string::String {
512        "RemoteFortressReader.BuildingType".into()
513    }
514    fn type_url() -> ::prost::alloc::string::String {
515        "/RemoteFortressReader.BuildingType".into()
516    }
517}
518#[derive(serde::Serialize)]
519#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
520pub struct BuildingDefinition {
521    #[prost(message, required, tag = "1")]
522    pub building_type: BuildingType,
523    #[prost(string, optional, tag = "2")]
524    pub id: ::core::option::Option<::prost::alloc::string::String>,
525    #[prost(string, optional, tag = "3")]
526    pub name: ::core::option::Option<::prost::alloc::string::String>,
527}
528impl ::prost::Name for BuildingDefinition {
529    const NAME: &'static str = "BuildingDefinition";
530    const PACKAGE: &'static str = "RemoteFortressReader";
531    fn full_name() -> ::prost::alloc::string::String {
532        "RemoteFortressReader.BuildingDefinition".into()
533    }
534    fn type_url() -> ::prost::alloc::string::String {
535        "/RemoteFortressReader.BuildingDefinition".into()
536    }
537}
538#[derive(serde::Serialize)]
539#[derive(Clone, PartialEq, ::prost::Message)]
540pub struct BuildingList {
541    #[prost(message, repeated, tag = "1")]
542    pub building_list: ::prost::alloc::vec::Vec<BuildingDefinition>,
543}
544impl ::prost::Name for BuildingList {
545    const NAME: &'static str = "BuildingList";
546    const PACKAGE: &'static str = "RemoteFortressReader";
547    fn full_name() -> ::prost::alloc::string::String {
548        "RemoteFortressReader.BuildingList".into()
549    }
550    fn type_url() -> ::prost::alloc::string::String {
551        "/RemoteFortressReader.BuildingList".into()
552    }
553}
554#[derive(serde::Serialize)]
555#[derive(Clone, PartialEq, ::prost::Message)]
556pub struct MaterialList {
557    #[prost(message, repeated, tag = "1")]
558    pub material_list: ::prost::alloc::vec::Vec<MaterialDefinition>,
559}
560impl ::prost::Name for MaterialList {
561    const NAME: &'static str = "MaterialList";
562    const PACKAGE: &'static str = "RemoteFortressReader";
563    fn full_name() -> ::prost::alloc::string::String {
564        "RemoteFortressReader.MaterialList".into()
565    }
566    fn type_url() -> ::prost::alloc::string::String {
567        "/RemoteFortressReader.MaterialList".into()
568    }
569}
570#[derive(serde::Serialize)]
571#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
572pub struct Hair {
573    #[prost(int32, optional, tag = "1")]
574    pub length: ::core::option::Option<i32>,
575    #[prost(enumeration = "HairStyle", optional, tag = "2")]
576    pub style: ::core::option::Option<i32>,
577}
578impl ::prost::Name for Hair {
579    const NAME: &'static str = "Hair";
580    const PACKAGE: &'static str = "RemoteFortressReader";
581    fn full_name() -> ::prost::alloc::string::String {
582        "RemoteFortressReader.Hair".into()
583    }
584    fn type_url() -> ::prost::alloc::string::String {
585        "/RemoteFortressReader.Hair".into()
586    }
587}
588#[derive(serde::Serialize)]
589#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
590pub struct BodySizeInfo {
591    #[prost(int32, optional, tag = "1")]
592    pub size_cur: ::core::option::Option<i32>,
593    #[prost(int32, optional, tag = "2")]
594    pub size_base: ::core::option::Option<i32>,
595    /// !< size_cur^0.666
596    #[prost(int32, optional, tag = "3")]
597    pub area_cur: ::core::option::Option<i32>,
598    /// !< size_base^0.666
599    #[prost(int32, optional, tag = "4")]
600    pub area_base: ::core::option::Option<i32>,
601    /// !< (size_cur*10000)^0.333
602    #[prost(int32, optional, tag = "5")]
603    pub length_cur: ::core::option::Option<i32>,
604    /// !< (size_base*10000)^0.333
605    #[prost(int32, optional, tag = "6")]
606    pub length_base: ::core::option::Option<i32>,
607}
608impl ::prost::Name for BodySizeInfo {
609    const NAME: &'static str = "BodySizeInfo";
610    const PACKAGE: &'static str = "RemoteFortressReader";
611    fn full_name() -> ::prost::alloc::string::String {
612        "RemoteFortressReader.BodySizeInfo".into()
613    }
614    fn type_url() -> ::prost::alloc::string::String {
615        "/RemoteFortressReader.BodySizeInfo".into()
616    }
617}
618#[derive(serde::Serialize)]
619#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
620pub struct UnitAppearance {
621    #[prost(int32, repeated, packed = "false", tag = "1")]
622    pub body_modifiers: ::prost::alloc::vec::Vec<i32>,
623    #[prost(int32, repeated, packed = "false", tag = "2")]
624    pub bp_modifiers: ::prost::alloc::vec::Vec<i32>,
625    #[prost(int32, optional, tag = "3")]
626    pub size_modifier: ::core::option::Option<i32>,
627    #[prost(int32, repeated, packed = "false", tag = "4")]
628    pub colors: ::prost::alloc::vec::Vec<i32>,
629    #[prost(message, optional, tag = "5")]
630    pub hair: ::core::option::Option<Hair>,
631    #[prost(message, optional, tag = "6")]
632    pub beard: ::core::option::Option<Hair>,
633    #[prost(message, optional, tag = "7")]
634    pub moustache: ::core::option::Option<Hair>,
635    #[prost(message, optional, tag = "8")]
636    pub sideburns: ::core::option::Option<Hair>,
637    #[prost(string, optional, tag = "9")]
638    pub physical_description: ::core::option::Option<::prost::alloc::string::String>,
639}
640impl ::prost::Name for UnitAppearance {
641    const NAME: &'static str = "UnitAppearance";
642    const PACKAGE: &'static str = "RemoteFortressReader";
643    fn full_name() -> ::prost::alloc::string::String {
644        "RemoteFortressReader.UnitAppearance".into()
645    }
646    fn type_url() -> ::prost::alloc::string::String {
647        "/RemoteFortressReader.UnitAppearance".into()
648    }
649}
650#[derive(serde::Serialize)]
651#[derive(Clone, PartialEq, ::prost::Message)]
652pub struct InventoryItem {
653    #[prost(enumeration = "InventoryMode", optional, tag = "1")]
654    pub mode: ::core::option::Option<i32>,
655    #[prost(message, optional, tag = "2")]
656    pub item: ::core::option::Option<Item>,
657    #[prost(int32, optional, tag = "3")]
658    pub body_part_id: ::core::option::Option<i32>,
659}
660impl ::prost::Name for InventoryItem {
661    const NAME: &'static str = "InventoryItem";
662    const PACKAGE: &'static str = "RemoteFortressReader";
663    fn full_name() -> ::prost::alloc::string::String {
664        "RemoteFortressReader.InventoryItem".into()
665    }
666    fn type_url() -> ::prost::alloc::string::String {
667        "/RemoteFortressReader.InventoryItem".into()
668    }
669}
670#[derive(serde::Serialize)]
671#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
672pub struct WoundPart {
673    #[prost(int32, optional, tag = "1")]
674    pub global_layer_idx: ::core::option::Option<i32>,
675    #[prost(int32, optional, tag = "2")]
676    pub body_part_id: ::core::option::Option<i32>,
677    #[prost(int32, optional, tag = "3")]
678    pub layer_idx: ::core::option::Option<i32>,
679}
680impl ::prost::Name for WoundPart {
681    const NAME: &'static str = "WoundPart";
682    const PACKAGE: &'static str = "RemoteFortressReader";
683    fn full_name() -> ::prost::alloc::string::String {
684        "RemoteFortressReader.WoundPart".into()
685    }
686    fn type_url() -> ::prost::alloc::string::String {
687        "/RemoteFortressReader.WoundPart".into()
688    }
689}
690#[derive(serde::Serialize)]
691#[derive(Clone, PartialEq, ::prost::Message)]
692pub struct UnitWound {
693    #[prost(message, repeated, tag = "1")]
694    pub parts: ::prost::alloc::vec::Vec<WoundPart>,
695    #[prost(bool, optional, tag = "2")]
696    pub severed_part: ::core::option::Option<bool>,
697}
698impl ::prost::Name for UnitWound {
699    const NAME: &'static str = "UnitWound";
700    const PACKAGE: &'static str = "RemoteFortressReader";
701    fn full_name() -> ::prost::alloc::string::String {
702        "RemoteFortressReader.UnitWound".into()
703    }
704    fn type_url() -> ::prost::alloc::string::String {
705        "/RemoteFortressReader.UnitWound".into()
706    }
707}
708#[derive(serde::Serialize)]
709#[derive(Clone, PartialEq, ::prost::Message)]
710pub struct UnitDefinition {
711    #[prost(int32, required, tag = "1")]
712    pub id: i32,
713    #[prost(bool, optional, tag = "2")]
714    pub is_valid: ::core::option::Option<bool>,
715    #[prost(int32, optional, tag = "3")]
716    pub pos_x: ::core::option::Option<i32>,
717    #[prost(int32, optional, tag = "4")]
718    pub pos_y: ::core::option::Option<i32>,
719    #[prost(int32, optional, tag = "5")]
720    pub pos_z: ::core::option::Option<i32>,
721    #[prost(message, optional, tag = "6")]
722    pub race: ::core::option::Option<MatPair>,
723    #[prost(message, optional, tag = "7")]
724    pub profession_color: ::core::option::Option<ColorDefinition>,
725    #[prost(uint32, optional, tag = "8")]
726    pub flags1: ::core::option::Option<u32>,
727    #[prost(uint32, optional, tag = "9")]
728    pub flags2: ::core::option::Option<u32>,
729    #[prost(uint32, optional, tag = "10")]
730    pub flags3: ::core::option::Option<u32>,
731    #[prost(bool, optional, tag = "11")]
732    pub is_soldier: ::core::option::Option<bool>,
733    #[prost(message, optional, tag = "12")]
734    pub size_info: ::core::option::Option<BodySizeInfo>,
735    #[prost(string, optional, tag = "13")]
736    pub name: ::core::option::Option<::prost::alloc::string::String>,
737    #[prost(int32, optional, tag = "14")]
738    pub blood_max: ::core::option::Option<i32>,
739    #[prost(int32, optional, tag = "15")]
740    pub blood_count: ::core::option::Option<i32>,
741    #[prost(message, optional, tag = "16")]
742    pub appearance: ::core::option::Option<UnitAppearance>,
743    #[prost(int32, optional, tag = "17")]
744    pub profession_id: ::core::option::Option<i32>,
745    #[prost(string, repeated, tag = "18")]
746    pub noble_positions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
747    #[prost(int32, optional, tag = "19")]
748    pub rider_id: ::core::option::Option<i32>,
749    #[prost(message, repeated, tag = "20")]
750    pub inventory: ::prost::alloc::vec::Vec<InventoryItem>,
751    #[prost(float, optional, tag = "21")]
752    pub subpos_x: ::core::option::Option<f32>,
753    #[prost(float, optional, tag = "22")]
754    pub subpos_y: ::core::option::Option<f32>,
755    #[prost(float, optional, tag = "23")]
756    pub subpos_z: ::core::option::Option<f32>,
757    #[prost(message, optional, tag = "24")]
758    pub facing: ::core::option::Option<Coord>,
759    #[prost(int32, optional, tag = "25")]
760    pub age: ::core::option::Option<i32>,
761    #[prost(message, repeated, tag = "26")]
762    pub wounds: ::prost::alloc::vec::Vec<UnitWound>,
763}
764impl ::prost::Name for UnitDefinition {
765    const NAME: &'static str = "UnitDefinition";
766    const PACKAGE: &'static str = "RemoteFortressReader";
767    fn full_name() -> ::prost::alloc::string::String {
768        "RemoteFortressReader.UnitDefinition".into()
769    }
770    fn type_url() -> ::prost::alloc::string::String {
771        "/RemoteFortressReader.UnitDefinition".into()
772    }
773}
774#[derive(serde::Serialize)]
775#[derive(Clone, PartialEq, ::prost::Message)]
776pub struct UnitList {
777    #[prost(message, repeated, tag = "1")]
778    pub creature_list: ::prost::alloc::vec::Vec<UnitDefinition>,
779}
780impl ::prost::Name for UnitList {
781    const NAME: &'static str = "UnitList";
782    const PACKAGE: &'static str = "RemoteFortressReader";
783    fn full_name() -> ::prost::alloc::string::String {
784        "RemoteFortressReader.UnitList".into()
785    }
786    fn type_url() -> ::prost::alloc::string::String {
787        "/RemoteFortressReader.UnitList".into()
788    }
789}
790#[derive(serde::Serialize)]
791#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
792pub struct BlockRequest {
793    #[prost(int32, optional, tag = "1")]
794    pub blocks_needed: ::core::option::Option<i32>,
795    #[prost(int32, optional, tag = "2")]
796    pub min_x: ::core::option::Option<i32>,
797    #[prost(int32, optional, tag = "3")]
798    pub max_x: ::core::option::Option<i32>,
799    #[prost(int32, optional, tag = "4")]
800    pub min_y: ::core::option::Option<i32>,
801    #[prost(int32, optional, tag = "5")]
802    pub max_y: ::core::option::Option<i32>,
803    #[prost(int32, optional, tag = "6")]
804    pub min_z: ::core::option::Option<i32>,
805    #[prost(int32, optional, tag = "7")]
806    pub max_z: ::core::option::Option<i32>,
807    #[prost(bool, optional, tag = "8")]
808    pub force_reload: ::core::option::Option<bool>,
809}
810impl ::prost::Name for BlockRequest {
811    const NAME: &'static str = "BlockRequest";
812    const PACKAGE: &'static str = "RemoteFortressReader";
813    fn full_name() -> ::prost::alloc::string::String {
814        "RemoteFortressReader.BlockRequest".into()
815    }
816    fn type_url() -> ::prost::alloc::string::String {
817        "/RemoteFortressReader.BlockRequest".into()
818    }
819}
820#[derive(serde::Serialize)]
821#[derive(Clone, PartialEq, ::prost::Message)]
822pub struct BlockList {
823    #[prost(message, repeated, tag = "1")]
824    pub map_blocks: ::prost::alloc::vec::Vec<MapBlock>,
825    #[prost(int32, optional, tag = "2")]
826    pub map_x: ::core::option::Option<i32>,
827    #[prost(int32, optional, tag = "3")]
828    pub map_y: ::core::option::Option<i32>,
829    #[prost(message, repeated, tag = "4")]
830    pub engravings: ::prost::alloc::vec::Vec<Engraving>,
831    #[prost(message, repeated, tag = "5")]
832    pub ocean_waves: ::prost::alloc::vec::Vec<Wave>,
833}
834impl ::prost::Name for BlockList {
835    const NAME: &'static str = "BlockList";
836    const PACKAGE: &'static str = "RemoteFortressReader";
837    fn full_name() -> ::prost::alloc::string::String {
838        "RemoteFortressReader.BlockList".into()
839    }
840    fn type_url() -> ::prost::alloc::string::String {
841        "/RemoteFortressReader.BlockList".into()
842    }
843}
844#[derive(serde::Serialize)]
845#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
846pub struct PlantDef {
847    #[prost(int32, required, tag = "1")]
848    pub pos_x: i32,
849    #[prost(int32, required, tag = "2")]
850    pub pos_y: i32,
851    #[prost(int32, required, tag = "3")]
852    pub pos_z: i32,
853    #[prost(int32, required, tag = "4")]
854    pub index: i32,
855}
856impl ::prost::Name for PlantDef {
857    const NAME: &'static str = "PlantDef";
858    const PACKAGE: &'static str = "RemoteFortressReader";
859    fn full_name() -> ::prost::alloc::string::String {
860        "RemoteFortressReader.PlantDef".into()
861    }
862    fn type_url() -> ::prost::alloc::string::String {
863        "/RemoteFortressReader.PlantDef".into()
864    }
865}
866#[derive(serde::Serialize)]
867#[derive(Clone, PartialEq, ::prost::Message)]
868pub struct PlantList {
869    #[prost(message, repeated, tag = "1")]
870    pub plant_list: ::prost::alloc::vec::Vec<PlantDef>,
871}
872impl ::prost::Name for PlantList {
873    const NAME: &'static str = "PlantList";
874    const PACKAGE: &'static str = "RemoteFortressReader";
875    fn full_name() -> ::prost::alloc::string::String {
876        "RemoteFortressReader.PlantList".into()
877    }
878    fn type_url() -> ::prost::alloc::string::String {
879        "/RemoteFortressReader.PlantList".into()
880    }
881}
882#[derive(serde::Serialize)]
883#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
884pub struct ViewInfo {
885    #[prost(int32, optional, tag = "1")]
886    pub view_pos_x: ::core::option::Option<i32>,
887    #[prost(int32, optional, tag = "2")]
888    pub view_pos_y: ::core::option::Option<i32>,
889    #[prost(int32, optional, tag = "3")]
890    pub view_pos_z: ::core::option::Option<i32>,
891    #[prost(int32, optional, tag = "4")]
892    pub view_size_x: ::core::option::Option<i32>,
893    #[prost(int32, optional, tag = "5")]
894    pub view_size_y: ::core::option::Option<i32>,
895    #[prost(int32, optional, tag = "6")]
896    pub cursor_pos_x: ::core::option::Option<i32>,
897    #[prost(int32, optional, tag = "7")]
898    pub cursor_pos_y: ::core::option::Option<i32>,
899    #[prost(int32, optional, tag = "8")]
900    pub cursor_pos_z: ::core::option::Option<i32>,
901    #[prost(int32, optional, tag = "9", default = "-1")]
902    pub follow_unit_id: ::core::option::Option<i32>,
903    #[prost(int32, optional, tag = "10", default = "-1")]
904    pub follow_item_id: ::core::option::Option<i32>,
905}
906impl ::prost::Name for ViewInfo {
907    const NAME: &'static str = "ViewInfo";
908    const PACKAGE: &'static str = "RemoteFortressReader";
909    fn full_name() -> ::prost::alloc::string::String {
910        "RemoteFortressReader.ViewInfo".into()
911    }
912    fn type_url() -> ::prost::alloc::string::String {
913        "/RemoteFortressReader.ViewInfo".into()
914    }
915}
916#[derive(serde::Serialize)]
917#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
918pub struct MapInfo {
919    #[prost(int32, optional, tag = "1")]
920    pub block_size_x: ::core::option::Option<i32>,
921    #[prost(int32, optional, tag = "2")]
922    pub block_size_y: ::core::option::Option<i32>,
923    #[prost(int32, optional, tag = "3")]
924    pub block_size_z: ::core::option::Option<i32>,
925    #[prost(int32, optional, tag = "4")]
926    pub block_pos_x: ::core::option::Option<i32>,
927    #[prost(int32, optional, tag = "5")]
928    pub block_pos_y: ::core::option::Option<i32>,
929    #[prost(int32, optional, tag = "6")]
930    pub block_pos_z: ::core::option::Option<i32>,
931    #[prost(string, optional, tag = "7")]
932    pub world_name: ::core::option::Option<::prost::alloc::string::String>,
933    #[prost(string, optional, tag = "8")]
934    pub world_name_english: ::core::option::Option<::prost::alloc::string::String>,
935    #[prost(string, optional, tag = "9")]
936    pub save_name: ::core::option::Option<::prost::alloc::string::String>,
937}
938impl ::prost::Name for MapInfo {
939    const NAME: &'static str = "MapInfo";
940    const PACKAGE: &'static str = "RemoteFortressReader";
941    fn full_name() -> ::prost::alloc::string::String {
942        "RemoteFortressReader.MapInfo".into()
943    }
944    fn type_url() -> ::prost::alloc::string::String {
945        "/RemoteFortressReader.MapInfo".into()
946    }
947}
948#[derive(serde::Serialize)]
949#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
950pub struct Cloud {
951    #[prost(enumeration = "FrontType", optional, tag = "1")]
952    pub front: ::core::option::Option<i32>,
953    #[prost(enumeration = "CumulusType", optional, tag = "2")]
954    pub cumulus: ::core::option::Option<i32>,
955    #[prost(bool, optional, tag = "3")]
956    pub cirrus: ::core::option::Option<bool>,
957    #[prost(enumeration = "StratusType", optional, tag = "4")]
958    pub stratus: ::core::option::Option<i32>,
959    #[prost(enumeration = "FogType", optional, tag = "5")]
960    pub fog: ::core::option::Option<i32>,
961}
962impl ::prost::Name for Cloud {
963    const NAME: &'static str = "Cloud";
964    const PACKAGE: &'static str = "RemoteFortressReader";
965    fn full_name() -> ::prost::alloc::string::String {
966        "RemoteFortressReader.Cloud".into()
967    }
968    fn type_url() -> ::prost::alloc::string::String {
969        "/RemoteFortressReader.Cloud".into()
970    }
971}
972#[derive(serde::Serialize)]
973#[derive(Clone, PartialEq, ::prost::Message)]
974pub struct WorldMap {
975    #[prost(int32, required, tag = "1")]
976    pub world_width: i32,
977    #[prost(int32, required, tag = "2")]
978    pub world_height: i32,
979    #[prost(bytes = "vec", optional, tag = "3")]
980    pub name: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
981    #[prost(string, optional, tag = "4")]
982    pub name_english: ::core::option::Option<::prost::alloc::string::String>,
983    #[prost(int32, repeated, packed = "false", tag = "5")]
984    pub elevation: ::prost::alloc::vec::Vec<i32>,
985    #[prost(int32, repeated, packed = "false", tag = "6")]
986    pub rainfall: ::prost::alloc::vec::Vec<i32>,
987    #[prost(int32, repeated, packed = "false", tag = "7")]
988    pub vegetation: ::prost::alloc::vec::Vec<i32>,
989    #[prost(int32, repeated, packed = "false", tag = "8")]
990    pub temperature: ::prost::alloc::vec::Vec<i32>,
991    #[prost(int32, repeated, packed = "false", tag = "9")]
992    pub evilness: ::prost::alloc::vec::Vec<i32>,
993    #[prost(int32, repeated, packed = "false", tag = "10")]
994    pub drainage: ::prost::alloc::vec::Vec<i32>,
995    #[prost(int32, repeated, packed = "false", tag = "11")]
996    pub volcanism: ::prost::alloc::vec::Vec<i32>,
997    #[prost(int32, repeated, packed = "false", tag = "12")]
998    pub savagery: ::prost::alloc::vec::Vec<i32>,
999    #[prost(message, repeated, tag = "13")]
1000    pub clouds: ::prost::alloc::vec::Vec<Cloud>,
1001    #[prost(int32, repeated, packed = "false", tag = "14")]
1002    pub salinity: ::prost::alloc::vec::Vec<i32>,
1003    #[prost(int32, optional, tag = "15")]
1004    pub map_x: ::core::option::Option<i32>,
1005    #[prost(int32, optional, tag = "16")]
1006    pub map_y: ::core::option::Option<i32>,
1007    #[prost(int32, optional, tag = "17")]
1008    pub center_x: ::core::option::Option<i32>,
1009    #[prost(int32, optional, tag = "18")]
1010    pub center_y: ::core::option::Option<i32>,
1011    #[prost(int32, optional, tag = "19")]
1012    pub center_z: ::core::option::Option<i32>,
1013    #[prost(int32, optional, tag = "20")]
1014    pub cur_year: ::core::option::Option<i32>,
1015    #[prost(int32, optional, tag = "21")]
1016    pub cur_year_tick: ::core::option::Option<i32>,
1017    #[prost(enumeration = "WorldPoles", optional, tag = "22")]
1018    pub world_poles: ::core::option::Option<i32>,
1019    #[prost(message, repeated, tag = "23")]
1020    pub river_tiles: ::prost::alloc::vec::Vec<RiverTile>,
1021    #[prost(int32, repeated, packed = "false", tag = "24")]
1022    pub water_elevation: ::prost::alloc::vec::Vec<i32>,
1023    #[prost(message, repeated, tag = "25")]
1024    pub region_tiles: ::prost::alloc::vec::Vec<RegionTile>,
1025}
1026impl ::prost::Name for WorldMap {
1027    const NAME: &'static str = "WorldMap";
1028    const PACKAGE: &'static str = "RemoteFortressReader";
1029    fn full_name() -> ::prost::alloc::string::String {
1030        "RemoteFortressReader.WorldMap".into()
1031    }
1032    fn type_url() -> ::prost::alloc::string::String {
1033        "/RemoteFortressReader.WorldMap".into()
1034    }
1035}
1036#[derive(serde::Serialize)]
1037#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1038pub struct SiteRealizationBuildingWall {
1039    #[prost(int32, optional, tag = "1")]
1040    pub start_x: ::core::option::Option<i32>,
1041    #[prost(int32, optional, tag = "2")]
1042    pub start_y: ::core::option::Option<i32>,
1043    #[prost(int32, optional, tag = "3")]
1044    pub start_z: ::core::option::Option<i32>,
1045    #[prost(int32, optional, tag = "4")]
1046    pub end_x: ::core::option::Option<i32>,
1047    #[prost(int32, optional, tag = "5")]
1048    pub end_y: ::core::option::Option<i32>,
1049    #[prost(int32, optional, tag = "6")]
1050    pub end_z: ::core::option::Option<i32>,
1051}
1052impl ::prost::Name for SiteRealizationBuildingWall {
1053    const NAME: &'static str = "SiteRealizationBuildingWall";
1054    const PACKAGE: &'static str = "RemoteFortressReader";
1055    fn full_name() -> ::prost::alloc::string::String {
1056        "RemoteFortressReader.SiteRealizationBuildingWall".into()
1057    }
1058    fn type_url() -> ::prost::alloc::string::String {
1059        "/RemoteFortressReader.SiteRealizationBuildingWall".into()
1060    }
1061}
1062#[derive(serde::Serialize)]
1063#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1064pub struct SiteRealizationBuildingTower {
1065    #[prost(int32, optional, tag = "1")]
1066    pub roof_z: ::core::option::Option<i32>,
1067    #[prost(bool, optional, tag = "2")]
1068    pub round: ::core::option::Option<bool>,
1069    #[prost(bool, optional, tag = "3")]
1070    pub goblin: ::core::option::Option<bool>,
1071}
1072impl ::prost::Name for SiteRealizationBuildingTower {
1073    const NAME: &'static str = "SiteRealizationBuildingTower";
1074    const PACKAGE: &'static str = "RemoteFortressReader";
1075    fn full_name() -> ::prost::alloc::string::String {
1076        "RemoteFortressReader.SiteRealizationBuildingTower".into()
1077    }
1078    fn type_url() -> ::prost::alloc::string::String {
1079        "/RemoteFortressReader.SiteRealizationBuildingTower".into()
1080    }
1081}
1082#[derive(serde::Serialize)]
1083#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1084pub struct TrenchSpoke {
1085    #[prost(int32, optional, tag = "1")]
1086    pub mound_start: ::core::option::Option<i32>,
1087    #[prost(int32, optional, tag = "2")]
1088    pub trench_start: ::core::option::Option<i32>,
1089    #[prost(int32, optional, tag = "3")]
1090    pub trench_end: ::core::option::Option<i32>,
1091    #[prost(int32, optional, tag = "4")]
1092    pub mound_end: ::core::option::Option<i32>,
1093}
1094impl ::prost::Name for TrenchSpoke {
1095    const NAME: &'static str = "TrenchSpoke";
1096    const PACKAGE: &'static str = "RemoteFortressReader";
1097    fn full_name() -> ::prost::alloc::string::String {
1098        "RemoteFortressReader.TrenchSpoke".into()
1099    }
1100    fn type_url() -> ::prost::alloc::string::String {
1101        "/RemoteFortressReader.TrenchSpoke".into()
1102    }
1103}
1104#[derive(serde::Serialize)]
1105#[derive(Clone, PartialEq, ::prost::Message)]
1106pub struct SiteRealizationBuildingTrenches {
1107    #[prost(message, repeated, tag = "1")]
1108    pub spokes: ::prost::alloc::vec::Vec<TrenchSpoke>,
1109}
1110impl ::prost::Name for SiteRealizationBuildingTrenches {
1111    const NAME: &'static str = "SiteRealizationBuildingTrenches";
1112    const PACKAGE: &'static str = "RemoteFortressReader";
1113    fn full_name() -> ::prost::alloc::string::String {
1114        "RemoteFortressReader.SiteRealizationBuildingTrenches".into()
1115    }
1116    fn type_url() -> ::prost::alloc::string::String {
1117        "/RemoteFortressReader.SiteRealizationBuildingTrenches".into()
1118    }
1119}
1120#[derive(serde::Serialize)]
1121#[derive(Clone, PartialEq, ::prost::Message)]
1122pub struct SiteRealizationBuilding {
1123    #[prost(int32, optional, tag = "1")]
1124    pub id: ::core::option::Option<i32>,
1125    #[prost(int32, optional, tag = "3")]
1126    pub min_x: ::core::option::Option<i32>,
1127    #[prost(int32, optional, tag = "4")]
1128    pub min_y: ::core::option::Option<i32>,
1129    #[prost(int32, optional, tag = "5")]
1130    pub max_x: ::core::option::Option<i32>,
1131    #[prost(int32, optional, tag = "6")]
1132    pub max_y: ::core::option::Option<i32>,
1133    #[prost(message, optional, tag = "7")]
1134    pub material: ::core::option::Option<MatPair>,
1135    #[prost(message, optional, tag = "8")]
1136    pub wall_info: ::core::option::Option<SiteRealizationBuildingWall>,
1137    #[prost(message, optional, tag = "9")]
1138    pub tower_info: ::core::option::Option<SiteRealizationBuildingTower>,
1139    #[prost(message, optional, tag = "10")]
1140    pub trench_info: ::core::option::Option<SiteRealizationBuildingTrenches>,
1141    #[prost(int32, optional, tag = "11")]
1142    pub r#type: ::core::option::Option<i32>,
1143}
1144impl ::prost::Name for SiteRealizationBuilding {
1145    const NAME: &'static str = "SiteRealizationBuilding";
1146    const PACKAGE: &'static str = "RemoteFortressReader";
1147    fn full_name() -> ::prost::alloc::string::String {
1148        "RemoteFortressReader.SiteRealizationBuilding".into()
1149    }
1150    fn type_url() -> ::prost::alloc::string::String {
1151        "/RemoteFortressReader.SiteRealizationBuilding".into()
1152    }
1153}
1154#[derive(serde::Serialize)]
1155#[derive(Clone, PartialEq, ::prost::Message)]
1156pub struct RegionTile {
1157    #[prost(int32, optional, tag = "1")]
1158    pub elevation: ::core::option::Option<i32>,
1159    #[prost(int32, optional, tag = "2")]
1160    pub rainfall: ::core::option::Option<i32>,
1161    #[prost(int32, optional, tag = "3")]
1162    pub vegetation: ::core::option::Option<i32>,
1163    #[prost(int32, optional, tag = "4")]
1164    pub temperature: ::core::option::Option<i32>,
1165    #[prost(int32, optional, tag = "5")]
1166    pub evilness: ::core::option::Option<i32>,
1167    #[prost(int32, optional, tag = "6")]
1168    pub drainage: ::core::option::Option<i32>,
1169    #[prost(int32, optional, tag = "7")]
1170    pub volcanism: ::core::option::Option<i32>,
1171    #[prost(int32, optional, tag = "8")]
1172    pub savagery: ::core::option::Option<i32>,
1173    #[prost(int32, optional, tag = "9")]
1174    pub salinity: ::core::option::Option<i32>,
1175    #[prost(message, optional, tag = "10")]
1176    pub river_tiles: ::core::option::Option<RiverTile>,
1177    #[prost(int32, optional, tag = "11")]
1178    pub water_elevation: ::core::option::Option<i32>,
1179    #[prost(message, optional, tag = "12")]
1180    pub surface_material: ::core::option::Option<MatPair>,
1181    #[prost(message, repeated, tag = "13")]
1182    pub plant_materials: ::prost::alloc::vec::Vec<MatPair>,
1183    #[prost(message, repeated, tag = "14")]
1184    pub buildings: ::prost::alloc::vec::Vec<SiteRealizationBuilding>,
1185    #[prost(message, repeated, tag = "15")]
1186    pub stone_materials: ::prost::alloc::vec::Vec<MatPair>,
1187    #[prost(message, repeated, tag = "16")]
1188    pub tree_materials: ::prost::alloc::vec::Vec<MatPair>,
1189    #[prost(int32, optional, tag = "17")]
1190    pub snow: ::core::option::Option<i32>,
1191}
1192impl ::prost::Name for RegionTile {
1193    const NAME: &'static str = "RegionTile";
1194    const PACKAGE: &'static str = "RemoteFortressReader";
1195    fn full_name() -> ::prost::alloc::string::String {
1196        "RemoteFortressReader.RegionTile".into()
1197    }
1198    fn type_url() -> ::prost::alloc::string::String {
1199        "/RemoteFortressReader.RegionTile".into()
1200    }
1201}
1202#[derive(serde::Serialize)]
1203#[derive(Clone, PartialEq, ::prost::Message)]
1204pub struct RegionMap {
1205    #[prost(int32, optional, tag = "1")]
1206    pub map_x: ::core::option::Option<i32>,
1207    #[prost(int32, optional, tag = "2")]
1208    pub map_y: ::core::option::Option<i32>,
1209    #[prost(string, optional, tag = "3")]
1210    pub name: ::core::option::Option<::prost::alloc::string::String>,
1211    #[prost(string, optional, tag = "4")]
1212    pub name_english: ::core::option::Option<::prost::alloc::string::String>,
1213    #[prost(message, repeated, tag = "5")]
1214    pub tiles: ::prost::alloc::vec::Vec<RegionTile>,
1215}
1216impl ::prost::Name for RegionMap {
1217    const NAME: &'static str = "RegionMap";
1218    const PACKAGE: &'static str = "RemoteFortressReader";
1219    fn full_name() -> ::prost::alloc::string::String {
1220        "RemoteFortressReader.RegionMap".into()
1221    }
1222    fn type_url() -> ::prost::alloc::string::String {
1223        "/RemoteFortressReader.RegionMap".into()
1224    }
1225}
1226#[derive(serde::Serialize)]
1227#[derive(Clone, PartialEq, ::prost::Message)]
1228pub struct RegionMaps {
1229    #[prost(message, repeated, tag = "1")]
1230    pub world_maps: ::prost::alloc::vec::Vec<WorldMap>,
1231    #[prost(message, repeated, tag = "2")]
1232    pub region_maps: ::prost::alloc::vec::Vec<RegionMap>,
1233}
1234impl ::prost::Name for RegionMaps {
1235    const NAME: &'static str = "RegionMaps";
1236    const PACKAGE: &'static str = "RemoteFortressReader";
1237    fn full_name() -> ::prost::alloc::string::String {
1238        "RemoteFortressReader.RegionMaps".into()
1239    }
1240    fn type_url() -> ::prost::alloc::string::String {
1241        "/RemoteFortressReader.RegionMaps".into()
1242    }
1243}
1244#[derive(serde::Serialize)]
1245#[derive(Clone, PartialEq, ::prost::Message)]
1246pub struct PatternDescriptor {
1247    #[prost(string, optional, tag = "1")]
1248    pub id: ::core::option::Option<::prost::alloc::string::String>,
1249    #[prost(message, repeated, tag = "2")]
1250    pub colors: ::prost::alloc::vec::Vec<ColorDefinition>,
1251    #[prost(enumeration = "PatternType", optional, tag = "3")]
1252    pub pattern: ::core::option::Option<i32>,
1253}
1254impl ::prost::Name for PatternDescriptor {
1255    const NAME: &'static str = "PatternDescriptor";
1256    const PACKAGE: &'static str = "RemoteFortressReader";
1257    fn full_name() -> ::prost::alloc::string::String {
1258        "RemoteFortressReader.PatternDescriptor".into()
1259    }
1260    fn type_url() -> ::prost::alloc::string::String {
1261        "/RemoteFortressReader.PatternDescriptor".into()
1262    }
1263}
1264#[derive(serde::Serialize)]
1265#[derive(Clone, PartialEq, ::prost::Message)]
1266pub struct ColorModifierRaw {
1267    #[prost(message, repeated, tag = "1")]
1268    pub patterns: ::prost::alloc::vec::Vec<PatternDescriptor>,
1269    #[prost(int32, repeated, packed = "false", tag = "2")]
1270    pub body_part_id: ::prost::alloc::vec::Vec<i32>,
1271    #[prost(int32, repeated, packed = "false", tag = "3")]
1272    pub tissue_layer_id: ::prost::alloc::vec::Vec<i32>,
1273    #[prost(int32, optional, tag = "4")]
1274    pub start_date: ::core::option::Option<i32>,
1275    #[prost(int32, optional, tag = "5")]
1276    pub end_date: ::core::option::Option<i32>,
1277    #[prost(string, optional, tag = "6")]
1278    pub part: ::core::option::Option<::prost::alloc::string::String>,
1279}
1280impl ::prost::Name for ColorModifierRaw {
1281    const NAME: &'static str = "ColorModifierRaw";
1282    const PACKAGE: &'static str = "RemoteFortressReader";
1283    fn full_name() -> ::prost::alloc::string::String {
1284        "RemoteFortressReader.ColorModifierRaw".into()
1285    }
1286    fn type_url() -> ::prost::alloc::string::String {
1287        "/RemoteFortressReader.ColorModifierRaw".into()
1288    }
1289}
1290#[derive(serde::Serialize)]
1291#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1292pub struct BodyPartLayerRaw {
1293    #[prost(string, optional, tag = "1")]
1294    pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
1295    #[prost(int32, optional, tag = "2")]
1296    pub tissue_id: ::core::option::Option<i32>,
1297    #[prost(int32, optional, tag = "3")]
1298    pub layer_depth: ::core::option::Option<i32>,
1299    #[prost(int32, repeated, packed = "false", tag = "4")]
1300    pub bp_modifiers: ::prost::alloc::vec::Vec<i32>,
1301}
1302impl ::prost::Name for BodyPartLayerRaw {
1303    const NAME: &'static str = "BodyPartLayerRaw";
1304    const PACKAGE: &'static str = "RemoteFortressReader";
1305    fn full_name() -> ::prost::alloc::string::String {
1306        "RemoteFortressReader.BodyPartLayerRaw".into()
1307    }
1308    fn type_url() -> ::prost::alloc::string::String {
1309        "/RemoteFortressReader.BodyPartLayerRaw".into()
1310    }
1311}
1312#[derive(serde::Serialize)]
1313#[derive(Clone, PartialEq, ::prost::Message)]
1314pub struct BodyPartRaw {
1315    #[prost(string, optional, tag = "1")]
1316    pub token: ::core::option::Option<::prost::alloc::string::String>,
1317    #[prost(string, optional, tag = "2")]
1318    pub category: ::core::option::Option<::prost::alloc::string::String>,
1319    #[prost(int32, optional, tag = "3")]
1320    pub parent: ::core::option::Option<i32>,
1321    #[prost(bool, repeated, packed = "false", tag = "4")]
1322    pub flags: ::prost::alloc::vec::Vec<bool>,
1323    #[prost(message, repeated, tag = "5")]
1324    pub layers: ::prost::alloc::vec::Vec<BodyPartLayerRaw>,
1325    #[prost(int32, optional, tag = "6")]
1326    pub relsize: ::core::option::Option<i32>,
1327}
1328impl ::prost::Name for BodyPartRaw {
1329    const NAME: &'static str = "BodyPartRaw";
1330    const PACKAGE: &'static str = "RemoteFortressReader";
1331    fn full_name() -> ::prost::alloc::string::String {
1332        "RemoteFortressReader.BodyPartRaw".into()
1333    }
1334    fn type_url() -> ::prost::alloc::string::String {
1335        "/RemoteFortressReader.BodyPartRaw".into()
1336    }
1337}
1338#[derive(serde::Serialize)]
1339#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1340pub struct BpAppearanceModifier {
1341    #[prost(string, optional, tag = "1")]
1342    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1343    #[prost(int32, optional, tag = "2")]
1344    pub mod_min: ::core::option::Option<i32>,
1345    #[prost(int32, optional, tag = "3")]
1346    pub mod_max: ::core::option::Option<i32>,
1347}
1348impl ::prost::Name for BpAppearanceModifier {
1349    const NAME: &'static str = "BpAppearanceModifier";
1350    const PACKAGE: &'static str = "RemoteFortressReader";
1351    fn full_name() -> ::prost::alloc::string::String {
1352        "RemoteFortressReader.BpAppearanceModifier".into()
1353    }
1354    fn type_url() -> ::prost::alloc::string::String {
1355        "/RemoteFortressReader.BpAppearanceModifier".into()
1356    }
1357}
1358#[derive(serde::Serialize)]
1359#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1360pub struct TissueRaw {
1361    #[prost(string, optional, tag = "1")]
1362    pub id: ::core::option::Option<::prost::alloc::string::String>,
1363    #[prost(string, optional, tag = "2")]
1364    pub name: ::core::option::Option<::prost::alloc::string::String>,
1365    #[prost(message, optional, tag = "3")]
1366    pub material: ::core::option::Option<MatPair>,
1367    #[prost(string, optional, tag = "4")]
1368    pub subordinate_to_tissue: ::core::option::Option<::prost::alloc::string::String>,
1369}
1370impl ::prost::Name for TissueRaw {
1371    const NAME: &'static str = "TissueRaw";
1372    const PACKAGE: &'static str = "RemoteFortressReader";
1373    fn full_name() -> ::prost::alloc::string::String {
1374        "RemoteFortressReader.TissueRaw".into()
1375    }
1376    fn type_url() -> ::prost::alloc::string::String {
1377        "/RemoteFortressReader.TissueRaw".into()
1378    }
1379}
1380#[derive(serde::Serialize)]
1381#[derive(Clone, PartialEq, ::prost::Message)]
1382pub struct CasteRaw {
1383    #[prost(int32, optional, tag = "1")]
1384    pub index: ::core::option::Option<i32>,
1385    #[prost(string, optional, tag = "2")]
1386    pub caste_id: ::core::option::Option<::prost::alloc::string::String>,
1387    #[prost(string, repeated, tag = "3")]
1388    pub caste_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1389    #[prost(string, repeated, tag = "4")]
1390    pub baby_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1391    #[prost(string, repeated, tag = "5")]
1392    pub child_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1393    #[prost(int32, optional, tag = "6")]
1394    pub gender: ::core::option::Option<i32>,
1395    #[prost(message, repeated, tag = "7")]
1396    pub body_parts: ::prost::alloc::vec::Vec<BodyPartRaw>,
1397    #[prost(int32, optional, tag = "8")]
1398    pub total_relsize: ::core::option::Option<i32>,
1399    #[prost(message, repeated, tag = "9")]
1400    pub modifiers: ::prost::alloc::vec::Vec<BpAppearanceModifier>,
1401    #[prost(int32, repeated, packed = "false", tag = "10")]
1402    pub modifier_idx: ::prost::alloc::vec::Vec<i32>,
1403    #[prost(int32, repeated, packed = "false", tag = "11")]
1404    pub part_idx: ::prost::alloc::vec::Vec<i32>,
1405    #[prost(int32, repeated, packed = "false", tag = "12")]
1406    pub layer_idx: ::prost::alloc::vec::Vec<i32>,
1407    #[prost(message, repeated, tag = "13")]
1408    pub body_appearance_modifiers: ::prost::alloc::vec::Vec<BpAppearanceModifier>,
1409    #[prost(message, repeated, tag = "14")]
1410    pub color_modifiers: ::prost::alloc::vec::Vec<ColorModifierRaw>,
1411    #[prost(string, optional, tag = "15")]
1412    pub description: ::core::option::Option<::prost::alloc::string::String>,
1413    #[prost(int32, optional, tag = "16")]
1414    pub adult_size: ::core::option::Option<i32>,
1415}
1416impl ::prost::Name for CasteRaw {
1417    const NAME: &'static str = "CasteRaw";
1418    const PACKAGE: &'static str = "RemoteFortressReader";
1419    fn full_name() -> ::prost::alloc::string::String {
1420        "RemoteFortressReader.CasteRaw".into()
1421    }
1422    fn type_url() -> ::prost::alloc::string::String {
1423        "/RemoteFortressReader.CasteRaw".into()
1424    }
1425}
1426#[derive(serde::Serialize)]
1427#[derive(Clone, PartialEq, ::prost::Message)]
1428pub struct CreatureRaw {
1429    #[prost(int32, optional, tag = "1")]
1430    pub index: ::core::option::Option<i32>,
1431    #[prost(string, optional, tag = "2")]
1432    pub creature_id: ::core::option::Option<::prost::alloc::string::String>,
1433    #[prost(string, repeated, tag = "3")]
1434    pub name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1435    #[prost(string, repeated, tag = "4")]
1436    pub general_baby_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1437    #[prost(string, repeated, tag = "5")]
1438    pub general_child_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1439    #[prost(int32, optional, tag = "6")]
1440    pub creature_tile: ::core::option::Option<i32>,
1441    #[prost(int32, optional, tag = "7")]
1442    pub creature_soldier_tile: ::core::option::Option<i32>,
1443    #[prost(message, optional, tag = "8")]
1444    pub color: ::core::option::Option<ColorDefinition>,
1445    #[prost(int32, optional, tag = "9")]
1446    pub adultsize: ::core::option::Option<i32>,
1447    #[prost(message, repeated, tag = "10")]
1448    pub caste: ::prost::alloc::vec::Vec<CasteRaw>,
1449    #[prost(message, repeated, tag = "11")]
1450    pub tissues: ::prost::alloc::vec::Vec<TissueRaw>,
1451    #[prost(bool, repeated, packed = "false", tag = "12")]
1452    pub flags: ::prost::alloc::vec::Vec<bool>,
1453}
1454impl ::prost::Name for CreatureRaw {
1455    const NAME: &'static str = "CreatureRaw";
1456    const PACKAGE: &'static str = "RemoteFortressReader";
1457    fn full_name() -> ::prost::alloc::string::String {
1458        "RemoteFortressReader.CreatureRaw".into()
1459    }
1460    fn type_url() -> ::prost::alloc::string::String {
1461        "/RemoteFortressReader.CreatureRaw".into()
1462    }
1463}
1464#[derive(serde::Serialize)]
1465#[derive(Clone, PartialEq, ::prost::Message)]
1466pub struct CreatureRawList {
1467    #[prost(message, repeated, tag = "1")]
1468    pub creature_raws: ::prost::alloc::vec::Vec<CreatureRaw>,
1469}
1470impl ::prost::Name for CreatureRawList {
1471    const NAME: &'static str = "CreatureRawList";
1472    const PACKAGE: &'static str = "RemoteFortressReader";
1473    fn full_name() -> ::prost::alloc::string::String {
1474        "RemoteFortressReader.CreatureRawList".into()
1475    }
1476    fn type_url() -> ::prost::alloc::string::String {
1477        "/RemoteFortressReader.CreatureRawList".into()
1478    }
1479}
1480#[derive(serde::Serialize)]
1481#[derive(Clone, PartialEq, ::prost::Message)]
1482pub struct Army {
1483    #[prost(int32, optional, tag = "1")]
1484    pub id: ::core::option::Option<i32>,
1485    #[prost(int32, optional, tag = "2")]
1486    pub pos_x: ::core::option::Option<i32>,
1487    #[prost(int32, optional, tag = "3")]
1488    pub pos_y: ::core::option::Option<i32>,
1489    #[prost(int32, optional, tag = "4")]
1490    pub pos_z: ::core::option::Option<i32>,
1491    #[prost(message, optional, tag = "5")]
1492    pub leader: ::core::option::Option<UnitDefinition>,
1493    #[prost(message, repeated, tag = "6")]
1494    pub members: ::prost::alloc::vec::Vec<UnitDefinition>,
1495    #[prost(uint32, optional, tag = "7")]
1496    pub flags: ::core::option::Option<u32>,
1497}
1498impl ::prost::Name for Army {
1499    const NAME: &'static str = "Army";
1500    const PACKAGE: &'static str = "RemoteFortressReader";
1501    fn full_name() -> ::prost::alloc::string::String {
1502        "RemoteFortressReader.Army".into()
1503    }
1504    fn type_url() -> ::prost::alloc::string::String {
1505        "/RemoteFortressReader.Army".into()
1506    }
1507}
1508#[derive(serde::Serialize)]
1509#[derive(Clone, PartialEq, ::prost::Message)]
1510pub struct ArmyList {
1511    #[prost(message, repeated, tag = "1")]
1512    pub armies: ::prost::alloc::vec::Vec<Army>,
1513}
1514impl ::prost::Name for ArmyList {
1515    const NAME: &'static str = "ArmyList";
1516    const PACKAGE: &'static str = "RemoteFortressReader";
1517    fn full_name() -> ::prost::alloc::string::String {
1518        "RemoteFortressReader.ArmyList".into()
1519    }
1520    fn type_url() -> ::prost::alloc::string::String {
1521        "/RemoteFortressReader.ArmyList".into()
1522    }
1523}
1524#[derive(serde::Serialize)]
1525#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1526pub struct GrowthPrint {
1527    #[prost(int32, optional, tag = "1")]
1528    pub priority: ::core::option::Option<i32>,
1529    #[prost(int32, optional, tag = "2")]
1530    pub color: ::core::option::Option<i32>,
1531    #[prost(int32, optional, tag = "3")]
1532    pub timing_start: ::core::option::Option<i32>,
1533    #[prost(int32, optional, tag = "4")]
1534    pub timing_end: ::core::option::Option<i32>,
1535    #[prost(int32, optional, tag = "5")]
1536    pub tile: ::core::option::Option<i32>,
1537}
1538impl ::prost::Name for GrowthPrint {
1539    const NAME: &'static str = "GrowthPrint";
1540    const PACKAGE: &'static str = "RemoteFortressReader";
1541    fn full_name() -> ::prost::alloc::string::String {
1542        "RemoteFortressReader.GrowthPrint".into()
1543    }
1544    fn type_url() -> ::prost::alloc::string::String {
1545        "/RemoteFortressReader.GrowthPrint".into()
1546    }
1547}
1548#[derive(serde::Serialize)]
1549#[derive(Clone, PartialEq, ::prost::Message)]
1550pub struct TreeGrowth {
1551    #[prost(int32, optional, tag = "1")]
1552    pub index: ::core::option::Option<i32>,
1553    #[prost(string, optional, tag = "2")]
1554    pub id: ::core::option::Option<::prost::alloc::string::String>,
1555    #[prost(string, optional, tag = "3")]
1556    pub name: ::core::option::Option<::prost::alloc::string::String>,
1557    #[prost(message, optional, tag = "4")]
1558    pub mat: ::core::option::Option<MatPair>,
1559    #[prost(message, repeated, tag = "5")]
1560    pub prints: ::prost::alloc::vec::Vec<GrowthPrint>,
1561    #[prost(int32, optional, tag = "6")]
1562    pub timing_start: ::core::option::Option<i32>,
1563    #[prost(int32, optional, tag = "7")]
1564    pub timing_end: ::core::option::Option<i32>,
1565    #[prost(bool, optional, tag = "8")]
1566    pub twigs: ::core::option::Option<bool>,
1567    #[prost(bool, optional, tag = "9")]
1568    pub light_branches: ::core::option::Option<bool>,
1569    #[prost(bool, optional, tag = "10")]
1570    pub heavy_branches: ::core::option::Option<bool>,
1571    #[prost(bool, optional, tag = "11")]
1572    pub trunk: ::core::option::Option<bool>,
1573    #[prost(bool, optional, tag = "12")]
1574    pub roots: ::core::option::Option<bool>,
1575    #[prost(bool, optional, tag = "13")]
1576    pub cap: ::core::option::Option<bool>,
1577    #[prost(bool, optional, tag = "14")]
1578    pub sapling: ::core::option::Option<bool>,
1579    #[prost(int32, optional, tag = "15")]
1580    pub trunk_height_start: ::core::option::Option<i32>,
1581    #[prost(int32, optional, tag = "16")]
1582    pub trunk_height_end: ::core::option::Option<i32>,
1583}
1584impl ::prost::Name for TreeGrowth {
1585    const NAME: &'static str = "TreeGrowth";
1586    const PACKAGE: &'static str = "RemoteFortressReader";
1587    fn full_name() -> ::prost::alloc::string::String {
1588        "RemoteFortressReader.TreeGrowth".into()
1589    }
1590    fn type_url() -> ::prost::alloc::string::String {
1591        "/RemoteFortressReader.TreeGrowth".into()
1592    }
1593}
1594#[derive(serde::Serialize)]
1595#[derive(Clone, PartialEq, ::prost::Message)]
1596pub struct PlantRaw {
1597    #[prost(int32, optional, tag = "1")]
1598    pub index: ::core::option::Option<i32>,
1599    #[prost(string, optional, tag = "2")]
1600    pub id: ::core::option::Option<::prost::alloc::string::String>,
1601    #[prost(string, optional, tag = "3")]
1602    pub name: ::core::option::Option<::prost::alloc::string::String>,
1603    #[prost(message, repeated, tag = "4")]
1604    pub growths: ::prost::alloc::vec::Vec<TreeGrowth>,
1605    #[prost(int32, optional, tag = "5")]
1606    pub tile: ::core::option::Option<i32>,
1607}
1608impl ::prost::Name for PlantRaw {
1609    const NAME: &'static str = "PlantRaw";
1610    const PACKAGE: &'static str = "RemoteFortressReader";
1611    fn full_name() -> ::prost::alloc::string::String {
1612        "RemoteFortressReader.PlantRaw".into()
1613    }
1614    fn type_url() -> ::prost::alloc::string::String {
1615        "/RemoteFortressReader.PlantRaw".into()
1616    }
1617}
1618#[derive(serde::Serialize)]
1619#[derive(Clone, PartialEq, ::prost::Message)]
1620pub struct PlantRawList {
1621    #[prost(message, repeated, tag = "1")]
1622    pub plant_raws: ::prost::alloc::vec::Vec<PlantRaw>,
1623}
1624impl ::prost::Name for PlantRawList {
1625    const NAME: &'static str = "PlantRawList";
1626    const PACKAGE: &'static str = "RemoteFortressReader";
1627    fn full_name() -> ::prost::alloc::string::String {
1628        "RemoteFortressReader.PlantRawList".into()
1629    }
1630    fn type_url() -> ::prost::alloc::string::String {
1631        "/RemoteFortressReader.PlantRawList".into()
1632    }
1633}
1634#[derive(serde::Serialize)]
1635#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1636pub struct ScreenTile {
1637    #[prost(uint32, optional, tag = "1")]
1638    pub character: ::core::option::Option<u32>,
1639    #[prost(uint32, optional, tag = "2")]
1640    pub foreground: ::core::option::Option<u32>,
1641    #[prost(uint32, optional, tag = "3")]
1642    pub background: ::core::option::Option<u32>,
1643}
1644impl ::prost::Name for ScreenTile {
1645    const NAME: &'static str = "ScreenTile";
1646    const PACKAGE: &'static str = "RemoteFortressReader";
1647    fn full_name() -> ::prost::alloc::string::String {
1648        "RemoteFortressReader.ScreenTile".into()
1649    }
1650    fn type_url() -> ::prost::alloc::string::String {
1651        "/RemoteFortressReader.ScreenTile".into()
1652    }
1653}
1654#[derive(serde::Serialize)]
1655#[derive(Clone, PartialEq, ::prost::Message)]
1656pub struct ScreenCapture {
1657    #[prost(uint32, optional, tag = "1")]
1658    pub width: ::core::option::Option<u32>,
1659    #[prost(uint32, optional, tag = "2")]
1660    pub height: ::core::option::Option<u32>,
1661    #[prost(message, repeated, tag = "3")]
1662    pub tiles: ::prost::alloc::vec::Vec<ScreenTile>,
1663}
1664impl ::prost::Name for ScreenCapture {
1665    const NAME: &'static str = "ScreenCapture";
1666    const PACKAGE: &'static str = "RemoteFortressReader";
1667    fn full_name() -> ::prost::alloc::string::String {
1668        "RemoteFortressReader.ScreenCapture".into()
1669    }
1670    fn type_url() -> ::prost::alloc::string::String {
1671        "/RemoteFortressReader.ScreenCapture".into()
1672    }
1673}
1674#[derive(serde::Serialize)]
1675#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1676pub struct KeyboardEvent {
1677    #[prost(uint32, optional, tag = "1")]
1678    pub r#type: ::core::option::Option<u32>,
1679    #[prost(uint32, optional, tag = "2")]
1680    pub which: ::core::option::Option<u32>,
1681    #[prost(uint32, optional, tag = "3")]
1682    pub state: ::core::option::Option<u32>,
1683    #[prost(uint32, optional, tag = "4")]
1684    pub scancode: ::core::option::Option<u32>,
1685    #[prost(uint32, optional, tag = "5")]
1686    pub sym: ::core::option::Option<u32>,
1687    #[prost(uint32, optional, tag = "6")]
1688    pub r#mod: ::core::option::Option<u32>,
1689    #[prost(uint32, optional, tag = "7")]
1690    pub unicode: ::core::option::Option<u32>,
1691}
1692impl ::prost::Name for KeyboardEvent {
1693    const NAME: &'static str = "KeyboardEvent";
1694    const PACKAGE: &'static str = "RemoteFortressReader";
1695    fn full_name() -> ::prost::alloc::string::String {
1696        "RemoteFortressReader.KeyboardEvent".into()
1697    }
1698    fn type_url() -> ::prost::alloc::string::String {
1699        "/RemoteFortressReader.KeyboardEvent".into()
1700    }
1701}
1702#[derive(serde::Serialize)]
1703#[derive(Clone, PartialEq, ::prost::Message)]
1704pub struct DigCommand {
1705    #[prost(enumeration = "TileDigDesignation", optional, tag = "1")]
1706    pub designation: ::core::option::Option<i32>,
1707    #[prost(message, repeated, tag = "2")]
1708    pub locations: ::prost::alloc::vec::Vec<Coord>,
1709}
1710impl ::prost::Name for DigCommand {
1711    const NAME: &'static str = "DigCommand";
1712    const PACKAGE: &'static str = "RemoteFortressReader";
1713    fn full_name() -> ::prost::alloc::string::String {
1714        "RemoteFortressReader.DigCommand".into()
1715    }
1716    fn type_url() -> ::prost::alloc::string::String {
1717        "/RemoteFortressReader.DigCommand".into()
1718    }
1719}
1720#[derive(serde::Serialize)]
1721#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1722pub struct SingleBool {
1723    #[prost(bool, optional, tag = "1")]
1724    pub value: ::core::option::Option<bool>,
1725}
1726impl ::prost::Name for SingleBool {
1727    const NAME: &'static str = "SingleBool";
1728    const PACKAGE: &'static str = "RemoteFortressReader";
1729    fn full_name() -> ::prost::alloc::string::String {
1730        "RemoteFortressReader.SingleBool".into()
1731    }
1732    fn type_url() -> ::prost::alloc::string::String {
1733        "/RemoteFortressReader.SingleBool".into()
1734    }
1735}
1736#[derive(serde::Serialize)]
1737#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1738pub struct VersionInfo {
1739    #[prost(string, optional, tag = "1")]
1740    pub dwarf_fortress_version: ::core::option::Option<::prost::alloc::string::String>,
1741    #[prost(string, optional, tag = "2")]
1742    pub dfhack_version: ::core::option::Option<::prost::alloc::string::String>,
1743    #[prost(string, optional, tag = "3")]
1744    pub remote_fortress_reader_version: ::core::option::Option<
1745        ::prost::alloc::string::String,
1746    >,
1747}
1748impl ::prost::Name for VersionInfo {
1749    const NAME: &'static str = "VersionInfo";
1750    const PACKAGE: &'static str = "RemoteFortressReader";
1751    fn full_name() -> ::prost::alloc::string::String {
1752        "RemoteFortressReader.VersionInfo".into()
1753    }
1754    fn type_url() -> ::prost::alloc::string::String {
1755        "/RemoteFortressReader.VersionInfo".into()
1756    }
1757}
1758#[derive(serde::Serialize)]
1759#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1760pub struct ListRequest {
1761    #[prost(int32, optional, tag = "1")]
1762    pub list_start: ::core::option::Option<i32>,
1763    #[prost(int32, optional, tag = "2")]
1764    pub list_end: ::core::option::Option<i32>,
1765}
1766impl ::prost::Name for ListRequest {
1767    const NAME: &'static str = "ListRequest";
1768    const PACKAGE: &'static str = "RemoteFortressReader";
1769    fn full_name() -> ::prost::alloc::string::String {
1770        "RemoteFortressReader.ListRequest".into()
1771    }
1772    fn type_url() -> ::prost::alloc::string::String {
1773        "/RemoteFortressReader.ListRequest".into()
1774    }
1775}
1776#[derive(serde::Serialize)]
1777#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1778pub struct Report {
1779    #[prost(int32, optional, tag = "1")]
1780    pub r#type: ::core::option::Option<i32>,
1781    #[prost(string, optional, tag = "2")]
1782    pub text: ::core::option::Option<::prost::alloc::string::String>,
1783    #[prost(message, optional, tag = "3")]
1784    pub color: ::core::option::Option<ColorDefinition>,
1785    #[prost(int32, optional, tag = "4")]
1786    pub duration: ::core::option::Option<i32>,
1787    #[prost(bool, optional, tag = "5")]
1788    pub continuation: ::core::option::Option<bool>,
1789    #[prost(bool, optional, tag = "6")]
1790    pub unconscious: ::core::option::Option<bool>,
1791    #[prost(bool, optional, tag = "7")]
1792    pub announcement: ::core::option::Option<bool>,
1793    #[prost(int32, optional, tag = "8")]
1794    pub repeat_count: ::core::option::Option<i32>,
1795    #[prost(message, optional, tag = "9")]
1796    pub pos: ::core::option::Option<Coord>,
1797    #[prost(int32, optional, tag = "10")]
1798    pub id: ::core::option::Option<i32>,
1799    #[prost(int32, optional, tag = "11")]
1800    pub year: ::core::option::Option<i32>,
1801    #[prost(int32, optional, tag = "12")]
1802    pub time: ::core::option::Option<i32>,
1803}
1804impl ::prost::Name for Report {
1805    const NAME: &'static str = "Report";
1806    const PACKAGE: &'static str = "RemoteFortressReader";
1807    fn full_name() -> ::prost::alloc::string::String {
1808        "RemoteFortressReader.Report".into()
1809    }
1810    fn type_url() -> ::prost::alloc::string::String {
1811        "/RemoteFortressReader.Report".into()
1812    }
1813}
1814#[derive(serde::Serialize)]
1815#[derive(Clone, PartialEq, ::prost::Message)]
1816pub struct Status {
1817    #[prost(message, repeated, tag = "1")]
1818    pub reports: ::prost::alloc::vec::Vec<Report>,
1819}
1820impl ::prost::Name for Status {
1821    const NAME: &'static str = "Status";
1822    const PACKAGE: &'static str = "RemoteFortressReader";
1823    fn full_name() -> ::prost::alloc::string::String {
1824        "RemoteFortressReader.Status".into()
1825    }
1826    fn type_url() -> ::prost::alloc::string::String {
1827        "/RemoteFortressReader.Status".into()
1828    }
1829}
1830#[derive(serde::Serialize)]
1831#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1832pub struct ShapeDescriptior {
1833    #[prost(string, optional, tag = "1")]
1834    pub id: ::core::option::Option<::prost::alloc::string::String>,
1835    #[prost(int32, optional, tag = "2")]
1836    pub tile: ::core::option::Option<i32>,
1837}
1838impl ::prost::Name for ShapeDescriptior {
1839    const NAME: &'static str = "ShapeDescriptior";
1840    const PACKAGE: &'static str = "RemoteFortressReader";
1841    fn full_name() -> ::prost::alloc::string::String {
1842        "RemoteFortressReader.ShapeDescriptior".into()
1843    }
1844    fn type_url() -> ::prost::alloc::string::String {
1845        "/RemoteFortressReader.ShapeDescriptior".into()
1846    }
1847}
1848#[derive(serde::Serialize)]
1849#[derive(Clone, PartialEq, ::prost::Message)]
1850pub struct Language {
1851    #[prost(message, repeated, tag = "1")]
1852    pub shapes: ::prost::alloc::vec::Vec<ShapeDescriptior>,
1853}
1854impl ::prost::Name for Language {
1855    const NAME: &'static str = "Language";
1856    const PACKAGE: &'static str = "RemoteFortressReader";
1857    fn full_name() -> ::prost::alloc::string::String {
1858        "RemoteFortressReader.Language".into()
1859    }
1860    fn type_url() -> ::prost::alloc::string::String {
1861        "/RemoteFortressReader.Language".into()
1862    }
1863}
1864#[derive(serde::Serialize)]
1865#[derive(Clone, PartialEq, ::prost::Message)]
1866pub struct ItemImprovement {
1867    #[prost(message, optional, tag = "1")]
1868    pub material: ::core::option::Option<MatPair>,
1869    #[prost(int32, optional, tag = "3")]
1870    pub shape: ::core::option::Option<i32>,
1871    #[prost(int32, optional, tag = "4")]
1872    pub specific_type: ::core::option::Option<i32>,
1873    #[prost(message, optional, tag = "5")]
1874    pub image: ::core::option::Option<ArtImage>,
1875    #[prost(int32, optional, tag = "6")]
1876    pub r#type: ::core::option::Option<i32>,
1877}
1878impl ::prost::Name for ItemImprovement {
1879    const NAME: &'static str = "ItemImprovement";
1880    const PACKAGE: &'static str = "RemoteFortressReader";
1881    fn full_name() -> ::prost::alloc::string::String {
1882        "RemoteFortressReader.ItemImprovement".into()
1883    }
1884    fn type_url() -> ::prost::alloc::string::String {
1885        "/RemoteFortressReader.ItemImprovement".into()
1886    }
1887}
1888#[derive(serde::Serialize)]
1889#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1890pub struct ArtImageElement {
1891    #[prost(int32, optional, tag = "1")]
1892    pub count: ::core::option::Option<i32>,
1893    #[prost(enumeration = "ArtImageElementType", optional, tag = "2")]
1894    pub r#type: ::core::option::Option<i32>,
1895    #[prost(message, optional, tag = "3")]
1896    pub creature_item: ::core::option::Option<MatPair>,
1897    #[prost(message, optional, tag = "5")]
1898    pub material: ::core::option::Option<MatPair>,
1899    #[prost(int32, optional, tag = "6")]
1900    pub id: ::core::option::Option<i32>,
1901}
1902impl ::prost::Name for ArtImageElement {
1903    const NAME: &'static str = "ArtImageElement";
1904    const PACKAGE: &'static str = "RemoteFortressReader";
1905    fn full_name() -> ::prost::alloc::string::String {
1906        "RemoteFortressReader.ArtImageElement".into()
1907    }
1908    fn type_url() -> ::prost::alloc::string::String {
1909        "/RemoteFortressReader.ArtImageElement".into()
1910    }
1911}
1912#[derive(serde::Serialize)]
1913#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1914pub struct ArtImageProperty {
1915    #[prost(int32, optional, tag = "1")]
1916    pub subject: ::core::option::Option<i32>,
1917    #[prost(int32, optional, tag = "2")]
1918    pub object: ::core::option::Option<i32>,
1919    #[prost(enumeration = "ArtImageVerb", optional, tag = "3")]
1920    pub verb: ::core::option::Option<i32>,
1921    #[prost(enumeration = "ArtImagePropertyType", optional, tag = "4")]
1922    pub r#type: ::core::option::Option<i32>,
1923}
1924impl ::prost::Name for ArtImageProperty {
1925    const NAME: &'static str = "ArtImageProperty";
1926    const PACKAGE: &'static str = "RemoteFortressReader";
1927    fn full_name() -> ::prost::alloc::string::String {
1928        "RemoteFortressReader.ArtImageProperty".into()
1929    }
1930    fn type_url() -> ::prost::alloc::string::String {
1931        "/RemoteFortressReader.ArtImageProperty".into()
1932    }
1933}
1934#[derive(serde::Serialize)]
1935#[derive(Clone, PartialEq, ::prost::Message)]
1936pub struct ArtImage {
1937    #[prost(message, repeated, tag = "1")]
1938    pub elements: ::prost::alloc::vec::Vec<ArtImageElement>,
1939    #[prost(message, optional, tag = "2")]
1940    pub id: ::core::option::Option<MatPair>,
1941    #[prost(message, repeated, tag = "3")]
1942    pub properties: ::prost::alloc::vec::Vec<ArtImageProperty>,
1943}
1944impl ::prost::Name for ArtImage {
1945    const NAME: &'static str = "ArtImage";
1946    const PACKAGE: &'static str = "RemoteFortressReader";
1947    fn full_name() -> ::prost::alloc::string::String {
1948        "RemoteFortressReader.ArtImage".into()
1949    }
1950    fn type_url() -> ::prost::alloc::string::String {
1951        "/RemoteFortressReader.ArtImage".into()
1952    }
1953}
1954#[derive(serde::Serialize)]
1955#[derive(Clone, PartialEq, ::prost::Message)]
1956pub struct Engraving {
1957    #[prost(message, optional, tag = "1")]
1958    pub pos: ::core::option::Option<Coord>,
1959    #[prost(int32, optional, tag = "2")]
1960    pub quality: ::core::option::Option<i32>,
1961    #[prost(int32, optional, tag = "3")]
1962    pub tile: ::core::option::Option<i32>,
1963    #[prost(message, optional, tag = "4")]
1964    pub image: ::core::option::Option<ArtImage>,
1965    #[prost(bool, optional, tag = "5")]
1966    pub floor: ::core::option::Option<bool>,
1967    #[prost(bool, optional, tag = "6")]
1968    pub west: ::core::option::Option<bool>,
1969    #[prost(bool, optional, tag = "7")]
1970    pub east: ::core::option::Option<bool>,
1971    #[prost(bool, optional, tag = "8")]
1972    pub north: ::core::option::Option<bool>,
1973    #[prost(bool, optional, tag = "9")]
1974    pub south: ::core::option::Option<bool>,
1975    #[prost(bool, optional, tag = "10")]
1976    pub hidden: ::core::option::Option<bool>,
1977    #[prost(bool, optional, tag = "11")]
1978    pub northwest: ::core::option::Option<bool>,
1979    #[prost(bool, optional, tag = "12")]
1980    pub northeast: ::core::option::Option<bool>,
1981    #[prost(bool, optional, tag = "13")]
1982    pub southwest: ::core::option::Option<bool>,
1983    #[prost(bool, optional, tag = "14")]
1984    pub southeast: ::core::option::Option<bool>,
1985}
1986impl ::prost::Name for Engraving {
1987    const NAME: &'static str = "Engraving";
1988    const PACKAGE: &'static str = "RemoteFortressReader";
1989    fn full_name() -> ::prost::alloc::string::String {
1990        "RemoteFortressReader.Engraving".into()
1991    }
1992    fn type_url() -> ::prost::alloc::string::String {
1993        "/RemoteFortressReader.Engraving".into()
1994    }
1995}
1996#[derive(serde::Serialize)]
1997#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1998pub struct FlowInfo {
1999    #[prost(int32, optional, tag = "1")]
2000    pub index: ::core::option::Option<i32>,
2001    #[prost(enumeration = "FlowType", optional, tag = "2")]
2002    pub r#type: ::core::option::Option<i32>,
2003    #[prost(int32, optional, tag = "3")]
2004    pub density: ::core::option::Option<i32>,
2005    #[prost(message, optional, tag = "4")]
2006    pub pos: ::core::option::Option<Coord>,
2007    #[prost(message, optional, tag = "5")]
2008    pub dest: ::core::option::Option<Coord>,
2009    #[prost(bool, optional, tag = "6")]
2010    pub expanding: ::core::option::Option<bool>,
2011    #[deprecated]
2012    #[prost(bool, optional, tag = "7")]
2013    pub reuse: ::core::option::Option<bool>,
2014    #[prost(int32, optional, tag = "8")]
2015    pub guide_id: ::core::option::Option<i32>,
2016    #[prost(message, optional, tag = "9")]
2017    pub material: ::core::option::Option<MatPair>,
2018    #[prost(message, optional, tag = "10")]
2019    pub item: ::core::option::Option<MatPair>,
2020    #[prost(bool, optional, tag = "11")]
2021    pub dead: ::core::option::Option<bool>,
2022    #[prost(bool, optional, tag = "12")]
2023    pub fast: ::core::option::Option<bool>,
2024    #[prost(bool, optional, tag = "13")]
2025    pub creeping: ::core::option::Option<bool>,
2026}
2027impl ::prost::Name for FlowInfo {
2028    const NAME: &'static str = "FlowInfo";
2029    const PACKAGE: &'static str = "RemoteFortressReader";
2030    fn full_name() -> ::prost::alloc::string::String {
2031        "RemoteFortressReader.FlowInfo".into()
2032    }
2033    fn type_url() -> ::prost::alloc::string::String {
2034        "/RemoteFortressReader.FlowInfo".into()
2035    }
2036}
2037#[derive(serde::Serialize)]
2038#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2039pub struct Wave {
2040    #[prost(message, optional, tag = "1")]
2041    pub dest: ::core::option::Option<Coord>,
2042    #[prost(message, optional, tag = "2")]
2043    pub pos: ::core::option::Option<Coord>,
2044}
2045impl ::prost::Name for Wave {
2046    const NAME: &'static str = "Wave";
2047    const PACKAGE: &'static str = "RemoteFortressReader";
2048    fn full_name() -> ::prost::alloc::string::String {
2049        "RemoteFortressReader.Wave".into()
2050    }
2051    fn type_url() -> ::prost::alloc::string::String {
2052        "/RemoteFortressReader.Wave".into()
2053    }
2054}
2055/// We use shapes, etc, because the actual tiletypes may differ between DF versions.
2056#[derive(serde::Serialize)]
2057#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2058#[repr(i32)]
2059pub enum TiletypeShape {
2060    NoShape = -1,
2061    Empty = 0,
2062    Floor = 1,
2063    Boulder = 2,
2064    Pebbles = 3,
2065    Wall = 4,
2066    Fortification = 5,
2067    StairUp = 6,
2068    StairDown = 7,
2069    StairUpdown = 8,
2070    Ramp = 9,
2071    RampTop = 10,
2072    BrookBed = 11,
2073    BrookTop = 12,
2074    TreeShape = 13,
2075    Sapling = 14,
2076    Shrub = 15,
2077    EndlessPit = 16,
2078    Branch = 17,
2079    TrunkBranch = 18,
2080    Twig = 19,
2081}
2082impl TiletypeShape {
2083    /// String value of the enum field names used in the ProtoBuf definition.
2084    ///
2085    /// The values are not transformed in any way and thus are considered stable
2086    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2087    pub fn as_str_name(&self) -> &'static str {
2088        match self {
2089            Self::NoShape => "NO_SHAPE",
2090            Self::Empty => "EMPTY",
2091            Self::Floor => "FLOOR",
2092            Self::Boulder => "BOULDER",
2093            Self::Pebbles => "PEBBLES",
2094            Self::Wall => "WALL",
2095            Self::Fortification => "FORTIFICATION",
2096            Self::StairUp => "STAIR_UP",
2097            Self::StairDown => "STAIR_DOWN",
2098            Self::StairUpdown => "STAIR_UPDOWN",
2099            Self::Ramp => "RAMP",
2100            Self::RampTop => "RAMP_TOP",
2101            Self::BrookBed => "BROOK_BED",
2102            Self::BrookTop => "BROOK_TOP",
2103            Self::TreeShape => "TREE_SHAPE",
2104            Self::Sapling => "SAPLING",
2105            Self::Shrub => "SHRUB",
2106            Self::EndlessPit => "ENDLESS_PIT",
2107            Self::Branch => "BRANCH",
2108            Self::TrunkBranch => "TRUNK_BRANCH",
2109            Self::Twig => "TWIG",
2110        }
2111    }
2112    /// Creates an enum from field names used in the ProtoBuf definition.
2113    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2114        match value {
2115            "NO_SHAPE" => Some(Self::NoShape),
2116            "EMPTY" => Some(Self::Empty),
2117            "FLOOR" => Some(Self::Floor),
2118            "BOULDER" => Some(Self::Boulder),
2119            "PEBBLES" => Some(Self::Pebbles),
2120            "WALL" => Some(Self::Wall),
2121            "FORTIFICATION" => Some(Self::Fortification),
2122            "STAIR_UP" => Some(Self::StairUp),
2123            "STAIR_DOWN" => Some(Self::StairDown),
2124            "STAIR_UPDOWN" => Some(Self::StairUpdown),
2125            "RAMP" => Some(Self::Ramp),
2126            "RAMP_TOP" => Some(Self::RampTop),
2127            "BROOK_BED" => Some(Self::BrookBed),
2128            "BROOK_TOP" => Some(Self::BrookTop),
2129            "TREE_SHAPE" => Some(Self::TreeShape),
2130            "SAPLING" => Some(Self::Sapling),
2131            "SHRUB" => Some(Self::Shrub),
2132            "ENDLESS_PIT" => Some(Self::EndlessPit),
2133            "BRANCH" => Some(Self::Branch),
2134            "TRUNK_BRANCH" => Some(Self::TrunkBranch),
2135            "TWIG" => Some(Self::Twig),
2136            _ => None,
2137        }
2138    }
2139}
2140#[derive(serde::Serialize)]
2141#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2142#[repr(i32)]
2143pub enum TiletypeSpecial {
2144    NoSpecial = -1,
2145    Normal = 0,
2146    RiverSource = 1,
2147    Waterfall = 2,
2148    Smooth = 3,
2149    Furrowed = 4,
2150    Wet = 5,
2151    Dead = 6,
2152    Worn1 = 7,
2153    Worn2 = 8,
2154    Worn3 = 9,
2155    Track = 10,
2156    SmoothDead = 11,
2157}
2158impl TiletypeSpecial {
2159    /// String value of the enum field names used in the ProtoBuf definition.
2160    ///
2161    /// The values are not transformed in any way and thus are considered stable
2162    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2163    pub fn as_str_name(&self) -> &'static str {
2164        match self {
2165            Self::NoSpecial => "NO_SPECIAL",
2166            Self::Normal => "NORMAL",
2167            Self::RiverSource => "RIVER_SOURCE",
2168            Self::Waterfall => "WATERFALL",
2169            Self::Smooth => "SMOOTH",
2170            Self::Furrowed => "FURROWED",
2171            Self::Wet => "WET",
2172            Self::Dead => "DEAD",
2173            Self::Worn1 => "WORN_1",
2174            Self::Worn2 => "WORN_2",
2175            Self::Worn3 => "WORN_3",
2176            Self::Track => "TRACK",
2177            Self::SmoothDead => "SMOOTH_DEAD",
2178        }
2179    }
2180    /// Creates an enum from field names used in the ProtoBuf definition.
2181    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2182        match value {
2183            "NO_SPECIAL" => Some(Self::NoSpecial),
2184            "NORMAL" => Some(Self::Normal),
2185            "RIVER_SOURCE" => Some(Self::RiverSource),
2186            "WATERFALL" => Some(Self::Waterfall),
2187            "SMOOTH" => Some(Self::Smooth),
2188            "FURROWED" => Some(Self::Furrowed),
2189            "WET" => Some(Self::Wet),
2190            "DEAD" => Some(Self::Dead),
2191            "WORN_1" => Some(Self::Worn1),
2192            "WORN_2" => Some(Self::Worn2),
2193            "WORN_3" => Some(Self::Worn3),
2194            "TRACK" => Some(Self::Track),
2195            "SMOOTH_DEAD" => Some(Self::SmoothDead),
2196            _ => None,
2197        }
2198    }
2199}
2200#[derive(serde::Serialize)]
2201#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2202#[repr(i32)]
2203pub enum TiletypeMaterial {
2204    NoMaterial = -1,
2205    Air = 0,
2206    Soil = 1,
2207    Stone = 2,
2208    Feature = 3,
2209    LavaStone = 4,
2210    Mineral = 5,
2211    FrozenLiquid = 6,
2212    Construction = 7,
2213    GrassLight = 8,
2214    GrassDark = 9,
2215    GrassDry = 10,
2216    GrassDead = 11,
2217    Plant = 12,
2218    Hfs = 13,
2219    Campfire = 14,
2220    Fire = 15,
2221    Ashes = 16,
2222    Magma = 17,
2223    Driftwood = 18,
2224    Pool = 19,
2225    Brook = 20,
2226    River = 21,
2227    Root = 22,
2228    TreeMaterial = 23,
2229    Mushroom = 24,
2230    UnderworldGate = 25,
2231}
2232impl TiletypeMaterial {
2233    /// String value of the enum field names used in the ProtoBuf definition.
2234    ///
2235    /// The values are not transformed in any way and thus are considered stable
2236    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2237    pub fn as_str_name(&self) -> &'static str {
2238        match self {
2239            Self::NoMaterial => "NO_MATERIAL",
2240            Self::Air => "AIR",
2241            Self::Soil => "SOIL",
2242            Self::Stone => "STONE",
2243            Self::Feature => "FEATURE",
2244            Self::LavaStone => "LAVA_STONE",
2245            Self::Mineral => "MINERAL",
2246            Self::FrozenLiquid => "FROZEN_LIQUID",
2247            Self::Construction => "CONSTRUCTION",
2248            Self::GrassLight => "GRASS_LIGHT",
2249            Self::GrassDark => "GRASS_DARK",
2250            Self::GrassDry => "GRASS_DRY",
2251            Self::GrassDead => "GRASS_DEAD",
2252            Self::Plant => "PLANT",
2253            Self::Hfs => "HFS",
2254            Self::Campfire => "CAMPFIRE",
2255            Self::Fire => "FIRE",
2256            Self::Ashes => "ASHES",
2257            Self::Magma => "MAGMA",
2258            Self::Driftwood => "DRIFTWOOD",
2259            Self::Pool => "POOL",
2260            Self::Brook => "BROOK",
2261            Self::River => "RIVER",
2262            Self::Root => "ROOT",
2263            Self::TreeMaterial => "TREE_MATERIAL",
2264            Self::Mushroom => "MUSHROOM",
2265            Self::UnderworldGate => "UNDERWORLD_GATE",
2266        }
2267    }
2268    /// Creates an enum from field names used in the ProtoBuf definition.
2269    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2270        match value {
2271            "NO_MATERIAL" => Some(Self::NoMaterial),
2272            "AIR" => Some(Self::Air),
2273            "SOIL" => Some(Self::Soil),
2274            "STONE" => Some(Self::Stone),
2275            "FEATURE" => Some(Self::Feature),
2276            "LAVA_STONE" => Some(Self::LavaStone),
2277            "MINERAL" => Some(Self::Mineral),
2278            "FROZEN_LIQUID" => Some(Self::FrozenLiquid),
2279            "CONSTRUCTION" => Some(Self::Construction),
2280            "GRASS_LIGHT" => Some(Self::GrassLight),
2281            "GRASS_DARK" => Some(Self::GrassDark),
2282            "GRASS_DRY" => Some(Self::GrassDry),
2283            "GRASS_DEAD" => Some(Self::GrassDead),
2284            "PLANT" => Some(Self::Plant),
2285            "HFS" => Some(Self::Hfs),
2286            "CAMPFIRE" => Some(Self::Campfire),
2287            "FIRE" => Some(Self::Fire),
2288            "ASHES" => Some(Self::Ashes),
2289            "MAGMA" => Some(Self::Magma),
2290            "DRIFTWOOD" => Some(Self::Driftwood),
2291            "POOL" => Some(Self::Pool),
2292            "BROOK" => Some(Self::Brook),
2293            "RIVER" => Some(Self::River),
2294            "ROOT" => Some(Self::Root),
2295            "TREE_MATERIAL" => Some(Self::TreeMaterial),
2296            "MUSHROOM" => Some(Self::Mushroom),
2297            "UNDERWORLD_GATE" => Some(Self::UnderworldGate),
2298            _ => None,
2299        }
2300    }
2301}
2302#[derive(serde::Serialize)]
2303#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2304#[repr(i32)]
2305pub enum TiletypeVariant {
2306    NoVariant = -1,
2307    Var1 = 0,
2308    Var2 = 1,
2309    Var3 = 2,
2310    Var4 = 3,
2311}
2312impl TiletypeVariant {
2313    /// String value of the enum field names used in the ProtoBuf definition.
2314    ///
2315    /// The values are not transformed in any way and thus are considered stable
2316    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2317    pub fn as_str_name(&self) -> &'static str {
2318        match self {
2319            Self::NoVariant => "NO_VARIANT",
2320            Self::Var1 => "VAR_1",
2321            Self::Var2 => "VAR_2",
2322            Self::Var3 => "VAR_3",
2323            Self::Var4 => "VAR_4",
2324        }
2325    }
2326    /// Creates an enum from field names used in the ProtoBuf definition.
2327    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2328        match value {
2329            "NO_VARIANT" => Some(Self::NoVariant),
2330            "VAR_1" => Some(Self::Var1),
2331            "VAR_2" => Some(Self::Var2),
2332            "VAR_3" => Some(Self::Var3),
2333            "VAR_4" => Some(Self::Var4),
2334            _ => None,
2335        }
2336    }
2337}
2338#[derive(serde::Serialize)]
2339#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2340#[repr(i32)]
2341pub enum WorldPoles {
2342    NoPoles = 0,
2343    NorthPole = 1,
2344    SouthPole = 2,
2345    BothPoles = 3,
2346}
2347impl WorldPoles {
2348    /// String value of the enum field names used in the ProtoBuf definition.
2349    ///
2350    /// The values are not transformed in any way and thus are considered stable
2351    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2352    pub fn as_str_name(&self) -> &'static str {
2353        match self {
2354            Self::NoPoles => "NO_POLES",
2355            Self::NorthPole => "NORTH_POLE",
2356            Self::SouthPole => "SOUTH_POLE",
2357            Self::BothPoles => "BOTH_POLES",
2358        }
2359    }
2360    /// Creates an enum from field names used in the ProtoBuf definition.
2361    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2362        match value {
2363            "NO_POLES" => Some(Self::NoPoles),
2364            "NORTH_POLE" => Some(Self::NorthPole),
2365            "SOUTH_POLE" => Some(Self::SouthPole),
2366            "BOTH_POLES" => Some(Self::BothPoles),
2367            _ => None,
2368        }
2369    }
2370}
2371#[derive(serde::Serialize)]
2372#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2373#[repr(i32)]
2374pub enum BuildingDirection {
2375    North = 0,
2376    East = 1,
2377    South = 2,
2378    West = 3,
2379    Northeast = 4,
2380    Southeast = 5,
2381    Southwest = 6,
2382    Northwest = 7,
2383    None = 8,
2384}
2385impl BuildingDirection {
2386    /// String value of the enum field names used in the ProtoBuf definition.
2387    ///
2388    /// The values are not transformed in any way and thus are considered stable
2389    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2390    pub fn as_str_name(&self) -> &'static str {
2391        match self {
2392            Self::North => "NORTH",
2393            Self::East => "EAST",
2394            Self::South => "SOUTH",
2395            Self::West => "WEST",
2396            Self::Northeast => "NORTHEAST",
2397            Self::Southeast => "SOUTHEAST",
2398            Self::Southwest => "SOUTHWEST",
2399            Self::Northwest => "NORTHWEST",
2400            Self::None => "NONE",
2401        }
2402    }
2403    /// Creates an enum from field names used in the ProtoBuf definition.
2404    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2405        match value {
2406            "NORTH" => Some(Self::North),
2407            "EAST" => Some(Self::East),
2408            "SOUTH" => Some(Self::South),
2409            "WEST" => Some(Self::West),
2410            "NORTHEAST" => Some(Self::Northeast),
2411            "SOUTHEAST" => Some(Self::Southeast),
2412            "SOUTHWEST" => Some(Self::Southwest),
2413            "NORTHWEST" => Some(Self::Northwest),
2414            "NONE" => Some(Self::None),
2415            _ => None,
2416        }
2417    }
2418}
2419#[derive(serde::Serialize)]
2420#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2421#[repr(i32)]
2422pub enum TileDigDesignation {
2423    /// *
2424    /// no designation
2425    NoDig = 0,
2426    /// *
2427    /// dig walls, remove stairs and ramps, gather plants, fell trees
2428    DefaultDig = 1,
2429    UpDownStairDig = 2,
2430    ChannelDig = 3,
2431    RampDig = 4,
2432    DownStairDig = 5,
2433    UpStairDig = 6,
2434}
2435impl TileDigDesignation {
2436    /// String value of the enum field names used in the ProtoBuf definition.
2437    ///
2438    /// The values are not transformed in any way and thus are considered stable
2439    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2440    pub fn as_str_name(&self) -> &'static str {
2441        match self {
2442            Self::NoDig => "NO_DIG",
2443            Self::DefaultDig => "DEFAULT_DIG",
2444            Self::UpDownStairDig => "UP_DOWN_STAIR_DIG",
2445            Self::ChannelDig => "CHANNEL_DIG",
2446            Self::RampDig => "RAMP_DIG",
2447            Self::DownStairDig => "DOWN_STAIR_DIG",
2448            Self::UpStairDig => "UP_STAIR_DIG",
2449        }
2450    }
2451    /// Creates an enum from field names used in the ProtoBuf definition.
2452    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2453        match value {
2454            "NO_DIG" => Some(Self::NoDig),
2455            "DEFAULT_DIG" => Some(Self::DefaultDig),
2456            "UP_DOWN_STAIR_DIG" => Some(Self::UpDownStairDig),
2457            "CHANNEL_DIG" => Some(Self::ChannelDig),
2458            "RAMP_DIG" => Some(Self::RampDig),
2459            "DOWN_STAIR_DIG" => Some(Self::DownStairDig),
2460            "UP_STAIR_DIG" => Some(Self::UpStairDig),
2461            _ => None,
2462        }
2463    }
2464}
2465#[derive(serde::Serialize)]
2466#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2467#[repr(i32)]
2468pub enum HairStyle {
2469    Unkempt = -1,
2470    NeatlyCombed = 0,
2471    Braided = 1,
2472    DoubleBraid = 2,
2473    PonyTails = 3,
2474    CleanShaven = 4,
2475}
2476impl HairStyle {
2477    /// String value of the enum field names used in the ProtoBuf definition.
2478    ///
2479    /// The values are not transformed in any way and thus are considered stable
2480    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2481    pub fn as_str_name(&self) -> &'static str {
2482        match self {
2483            Self::Unkempt => "UNKEMPT",
2484            Self::NeatlyCombed => "NEATLY_COMBED",
2485            Self::Braided => "BRAIDED",
2486            Self::DoubleBraid => "DOUBLE_BRAID",
2487            Self::PonyTails => "PONY_TAILS",
2488            Self::CleanShaven => "CLEAN_SHAVEN",
2489        }
2490    }
2491    /// Creates an enum from field names used in the ProtoBuf definition.
2492    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2493        match value {
2494            "UNKEMPT" => Some(Self::Unkempt),
2495            "NEATLY_COMBED" => Some(Self::NeatlyCombed),
2496            "BRAIDED" => Some(Self::Braided),
2497            "DOUBLE_BRAID" => Some(Self::DoubleBraid),
2498            "PONY_TAILS" => Some(Self::PonyTails),
2499            "CLEAN_SHAVEN" => Some(Self::CleanShaven),
2500            _ => None,
2501        }
2502    }
2503}
2504#[derive(serde::Serialize)]
2505#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2506#[repr(i32)]
2507pub enum InventoryMode {
2508    Hauled = 0,
2509    /// *
2510    /// also shield, crutch
2511    Weapon = 1,
2512    /// *
2513    /// quiver
2514    Worn = 2,
2515    Piercing = 3,
2516    /// *
2517    /// attached to clothing
2518    Flask = 4,
2519    /// *
2520    /// e.g. bandage
2521    WrappedAround = 5,
2522    StuckIn = 6,
2523    /// *
2524    /// string descr like Worn
2525    InMouth = 7,
2526    /// *
2527    /// Left shoulder, right shoulder, or head, selected randomly using pet_seed
2528    Pet = 8,
2529    SewnInto = 9,
2530    Strapped = 10,
2531}
2532impl InventoryMode {
2533    /// String value of the enum field names used in the ProtoBuf definition.
2534    ///
2535    /// The values are not transformed in any way and thus are considered stable
2536    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2537    pub fn as_str_name(&self) -> &'static str {
2538        match self {
2539            Self::Hauled => "Hauled",
2540            Self::Weapon => "Weapon",
2541            Self::Worn => "Worn",
2542            Self::Piercing => "Piercing",
2543            Self::Flask => "Flask",
2544            Self::WrappedAround => "WrappedAround",
2545            Self::StuckIn => "StuckIn",
2546            Self::InMouth => "InMouth",
2547            Self::Pet => "Pet",
2548            Self::SewnInto => "SewnInto",
2549            Self::Strapped => "Strapped",
2550        }
2551    }
2552    /// Creates an enum from field names used in the ProtoBuf definition.
2553    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2554        match value {
2555            "Hauled" => Some(Self::Hauled),
2556            "Weapon" => Some(Self::Weapon),
2557            "Worn" => Some(Self::Worn),
2558            "Piercing" => Some(Self::Piercing),
2559            "Flask" => Some(Self::Flask),
2560            "WrappedAround" => Some(Self::WrappedAround),
2561            "StuckIn" => Some(Self::StuckIn),
2562            "InMouth" => Some(Self::InMouth),
2563            "Pet" => Some(Self::Pet),
2564            "SewnInto" => Some(Self::SewnInto),
2565            "Strapped" => Some(Self::Strapped),
2566            _ => None,
2567        }
2568    }
2569}
2570#[derive(serde::Serialize)]
2571#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2572#[repr(i32)]
2573pub enum ArmorLayer {
2574    LayerUnder = 0,
2575    LayerOver = 1,
2576    LayerArmor = 2,
2577    LayerCover = 3,
2578}
2579impl ArmorLayer {
2580    /// String value of the enum field names used in the ProtoBuf definition.
2581    ///
2582    /// The values are not transformed in any way and thus are considered stable
2583    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2584    pub fn as_str_name(&self) -> &'static str {
2585        match self {
2586            Self::LayerUnder => "LAYER_UNDER",
2587            Self::LayerOver => "LAYER_OVER",
2588            Self::LayerArmor => "LAYER_ARMOR",
2589            Self::LayerCover => "LAYER_COVER",
2590        }
2591    }
2592    /// Creates an enum from field names used in the ProtoBuf definition.
2593    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2594        match value {
2595            "LAYER_UNDER" => Some(Self::LayerUnder),
2596            "LAYER_OVER" => Some(Self::LayerOver),
2597            "LAYER_ARMOR" => Some(Self::LayerArmor),
2598            "LAYER_COVER" => Some(Self::LayerCover),
2599            _ => None,
2600        }
2601    }
2602}
2603#[derive(serde::Serialize)]
2604#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2605#[repr(i32)]
2606pub enum MatterState {
2607    Solid = 0,
2608    Liquid = 1,
2609    Gas = 2,
2610    Powder = 3,
2611    Paste = 4,
2612    Pressed = 5,
2613}
2614impl MatterState {
2615    /// String value of the enum field names used in the ProtoBuf definition.
2616    ///
2617    /// The values are not transformed in any way and thus are considered stable
2618    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2619    pub fn as_str_name(&self) -> &'static str {
2620        match self {
2621            Self::Solid => "Solid",
2622            Self::Liquid => "Liquid",
2623            Self::Gas => "Gas",
2624            Self::Powder => "Powder",
2625            Self::Paste => "Paste",
2626            Self::Pressed => "Pressed",
2627        }
2628    }
2629    /// Creates an enum from field names used in the ProtoBuf definition.
2630    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2631        match value {
2632            "Solid" => Some(Self::Solid),
2633            "Liquid" => Some(Self::Liquid),
2634            "Gas" => Some(Self::Gas),
2635            "Powder" => Some(Self::Powder),
2636            "Paste" => Some(Self::Paste),
2637            "Pressed" => Some(Self::Pressed),
2638            _ => None,
2639        }
2640    }
2641}
2642#[derive(serde::Serialize)]
2643#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2644#[repr(i32)]
2645pub enum FrontType {
2646    FrontNone = 0,
2647    FrontWarm = 1,
2648    FrontCold = 2,
2649    FrontOccluded = 3,
2650}
2651impl FrontType {
2652    /// String value of the enum field names used in the ProtoBuf definition.
2653    ///
2654    /// The values are not transformed in any way and thus are considered stable
2655    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2656    pub fn as_str_name(&self) -> &'static str {
2657        match self {
2658            Self::FrontNone => "FRONT_NONE",
2659            Self::FrontWarm => "FRONT_WARM",
2660            Self::FrontCold => "FRONT_COLD",
2661            Self::FrontOccluded => "FRONT_OCCLUDED",
2662        }
2663    }
2664    /// Creates an enum from field names used in the ProtoBuf definition.
2665    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2666        match value {
2667            "FRONT_NONE" => Some(Self::FrontNone),
2668            "FRONT_WARM" => Some(Self::FrontWarm),
2669            "FRONT_COLD" => Some(Self::FrontCold),
2670            "FRONT_OCCLUDED" => Some(Self::FrontOccluded),
2671            _ => None,
2672        }
2673    }
2674}
2675#[derive(serde::Serialize)]
2676#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2677#[repr(i32)]
2678pub enum CumulusType {
2679    CumulusNone = 0,
2680    CumulusMedium = 1,
2681    CumulusMulti = 2,
2682    CumulusNimbus = 3,
2683}
2684impl CumulusType {
2685    /// String value of the enum field names used in the ProtoBuf definition.
2686    ///
2687    /// The values are not transformed in any way and thus are considered stable
2688    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2689    pub fn as_str_name(&self) -> &'static str {
2690        match self {
2691            Self::CumulusNone => "CUMULUS_NONE",
2692            Self::CumulusMedium => "CUMULUS_MEDIUM",
2693            Self::CumulusMulti => "CUMULUS_MULTI",
2694            Self::CumulusNimbus => "CUMULUS_NIMBUS",
2695        }
2696    }
2697    /// Creates an enum from field names used in the ProtoBuf definition.
2698    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2699        match value {
2700            "CUMULUS_NONE" => Some(Self::CumulusNone),
2701            "CUMULUS_MEDIUM" => Some(Self::CumulusMedium),
2702            "CUMULUS_MULTI" => Some(Self::CumulusMulti),
2703            "CUMULUS_NIMBUS" => Some(Self::CumulusNimbus),
2704            _ => None,
2705        }
2706    }
2707}
2708#[derive(serde::Serialize)]
2709#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2710#[repr(i32)]
2711pub enum StratusType {
2712    StratusNone = 0,
2713    StratusAlto = 1,
2714    StratusProper = 2,
2715    StratusNimbus = 3,
2716}
2717impl StratusType {
2718    /// String value of the enum field names used in the ProtoBuf definition.
2719    ///
2720    /// The values are not transformed in any way and thus are considered stable
2721    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2722    pub fn as_str_name(&self) -> &'static str {
2723        match self {
2724            Self::StratusNone => "STRATUS_NONE",
2725            Self::StratusAlto => "STRATUS_ALTO",
2726            Self::StratusProper => "STRATUS_PROPER",
2727            Self::StratusNimbus => "STRATUS_NIMBUS",
2728        }
2729    }
2730    /// Creates an enum from field names used in the ProtoBuf definition.
2731    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2732        match value {
2733            "STRATUS_NONE" => Some(Self::StratusNone),
2734            "STRATUS_ALTO" => Some(Self::StratusAlto),
2735            "STRATUS_PROPER" => Some(Self::StratusProper),
2736            "STRATUS_NIMBUS" => Some(Self::StratusNimbus),
2737            _ => None,
2738        }
2739    }
2740}
2741#[derive(serde::Serialize)]
2742#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2743#[repr(i32)]
2744pub enum FogType {
2745    FogNone = 0,
2746    FogMist = 1,
2747    FogNormal = 2,
2748    F0gThick = 3,
2749}
2750impl FogType {
2751    /// String value of the enum field names used in the ProtoBuf definition.
2752    ///
2753    /// The values are not transformed in any way and thus are considered stable
2754    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2755    pub fn as_str_name(&self) -> &'static str {
2756        match self {
2757            Self::FogNone => "FOG_NONE",
2758            Self::FogMist => "FOG_MIST",
2759            Self::FogNormal => "FOG_NORMAL",
2760            Self::F0gThick => "F0G_THICK",
2761        }
2762    }
2763    /// Creates an enum from field names used in the ProtoBuf definition.
2764    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2765        match value {
2766            "FOG_NONE" => Some(Self::FogNone),
2767            "FOG_MIST" => Some(Self::FogMist),
2768            "FOG_NORMAL" => Some(Self::FogNormal),
2769            "F0G_THICK" => Some(Self::F0gThick),
2770            _ => None,
2771        }
2772    }
2773}
2774#[derive(serde::Serialize)]
2775#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2776#[repr(i32)]
2777pub enum PatternType {
2778    Monotone = 0,
2779    Stripes = 1,
2780    IrisEye = 2,
2781    Spots = 3,
2782    PupilEye = 4,
2783    Mottled = 5,
2784}
2785impl PatternType {
2786    /// String value of the enum field names used in the ProtoBuf definition.
2787    ///
2788    /// The values are not transformed in any way and thus are considered stable
2789    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2790    pub fn as_str_name(&self) -> &'static str {
2791        match self {
2792            Self::Monotone => "MONOTONE",
2793            Self::Stripes => "STRIPES",
2794            Self::IrisEye => "IRIS_EYE",
2795            Self::Spots => "SPOTS",
2796            Self::PupilEye => "PUPIL_EYE",
2797            Self::Mottled => "MOTTLED",
2798        }
2799    }
2800    /// Creates an enum from field names used in the ProtoBuf definition.
2801    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2802        match value {
2803            "MONOTONE" => Some(Self::Monotone),
2804            "STRIPES" => Some(Self::Stripes),
2805            "IRIS_EYE" => Some(Self::IrisEye),
2806            "SPOTS" => Some(Self::Spots),
2807            "PUPIL_EYE" => Some(Self::PupilEye),
2808            "MOTTLED" => Some(Self::Mottled),
2809            _ => None,
2810        }
2811    }
2812}
2813#[derive(serde::Serialize)]
2814#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2815#[repr(i32)]
2816pub enum ArtImageElementType {
2817    ImageCreature = 0,
2818    ImagePlant = 1,
2819    ImageTree = 2,
2820    ImageShape = 3,
2821    ImageItem = 4,
2822}
2823impl ArtImageElementType {
2824    /// String value of the enum field names used in the ProtoBuf definition.
2825    ///
2826    /// The values are not transformed in any way and thus are considered stable
2827    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2828    pub fn as_str_name(&self) -> &'static str {
2829        match self {
2830            Self::ImageCreature => "IMAGE_CREATURE",
2831            Self::ImagePlant => "IMAGE_PLANT",
2832            Self::ImageTree => "IMAGE_TREE",
2833            Self::ImageShape => "IMAGE_SHAPE",
2834            Self::ImageItem => "IMAGE_ITEM",
2835        }
2836    }
2837    /// Creates an enum from field names used in the ProtoBuf definition.
2838    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2839        match value {
2840            "IMAGE_CREATURE" => Some(Self::ImageCreature),
2841            "IMAGE_PLANT" => Some(Self::ImagePlant),
2842            "IMAGE_TREE" => Some(Self::ImageTree),
2843            "IMAGE_SHAPE" => Some(Self::ImageShape),
2844            "IMAGE_ITEM" => Some(Self::ImageItem),
2845            _ => None,
2846        }
2847    }
2848}
2849#[derive(serde::Serialize)]
2850#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2851#[repr(i32)]
2852pub enum ArtImagePropertyType {
2853    TransitiveVerb = 0,
2854    IntransitiveVerb = 1,
2855}
2856impl ArtImagePropertyType {
2857    /// String value of the enum field names used in the ProtoBuf definition.
2858    ///
2859    /// The values are not transformed in any way and thus are considered stable
2860    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2861    pub fn as_str_name(&self) -> &'static str {
2862        match self {
2863            Self::TransitiveVerb => "TRANSITIVE_VERB",
2864            Self::IntransitiveVerb => "INTRANSITIVE_VERB",
2865        }
2866    }
2867    /// Creates an enum from field names used in the ProtoBuf definition.
2868    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2869        match value {
2870            "TRANSITIVE_VERB" => Some(Self::TransitiveVerb),
2871            "INTRANSITIVE_VERB" => Some(Self::IntransitiveVerb),
2872            _ => None,
2873        }
2874    }
2875}
2876#[derive(serde::Serialize)]
2877#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2878#[repr(i32)]
2879pub enum ArtImageVerb {
2880    VerbWithering = 0,
2881    VerbSurroundedby = 1,
2882    VerbMassacring = 2,
2883    VerbFighting = 3,
2884    VerbLaboring = 4,
2885    VerbGreeting = 5,
2886    VerbRefusing = 6,
2887    VerbSpeaking = 7,
2888    VerbEmbracing = 8,
2889    VerbStrikingdown = 9,
2890    VerbMenacingpose = 10,
2891    VerbTraveling = 11,
2892    VerbRaising = 12,
2893    VerbHiding = 13,
2894    VerbLookingconfused = 14,
2895    VerbLookingterrified = 15,
2896    VerbDevouring = 16,
2897    VerbAdmiring = 17,
2898    VerbBurning = 18,
2899    VerbWeeping = 19,
2900    VerbLookingdejected = 20,
2901    VerbCringing = 21,
2902    VerbScreaming = 22,
2903    VerbSubmissivegesture = 23,
2904    VerbFetalposition = 24,
2905    VerbSmearedintospiral = 25,
2906    VerbFalling = 26,
2907    VerbDead = 27,
2908    VerbLaughing = 28,
2909    VerbLookingoffended = 29,
2910    VerbBeingshot = 30,
2911    VerbPlaintivegesture = 31,
2912    VerbMelting = 32,
2913    VerbShooting = 33,
2914    VerbTorturing = 34,
2915    VerbCommittingdepravedact = 35,
2916    VerbPraying = 36,
2917    VerbContemplating = 37,
2918    VerbCooking = 38,
2919    VerbEngraving = 39,
2920    VerbProstrating = 40,
2921    VerbSuffering = 41,
2922    VerbBeingimpaled = 42,
2923    VerbBeingcontorted = 43,
2924    VerbBeingflayed = 44,
2925    VerbHangingfrom = 45,
2926    VerbBeingmutilated = 46,
2927    VerbTriumphantpose = 47,
2928}
2929impl ArtImageVerb {
2930    /// String value of the enum field names used in the ProtoBuf definition.
2931    ///
2932    /// The values are not transformed in any way and thus are considered stable
2933    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2934    pub fn as_str_name(&self) -> &'static str {
2935        match self {
2936            Self::VerbWithering => "VERB_WITHERING",
2937            Self::VerbSurroundedby => "VERB_SURROUNDEDBY",
2938            Self::VerbMassacring => "VERB_MASSACRING",
2939            Self::VerbFighting => "VERB_FIGHTING",
2940            Self::VerbLaboring => "VERB_LABORING",
2941            Self::VerbGreeting => "VERB_GREETING",
2942            Self::VerbRefusing => "VERB_REFUSING",
2943            Self::VerbSpeaking => "VERB_SPEAKING",
2944            Self::VerbEmbracing => "VERB_EMBRACING",
2945            Self::VerbStrikingdown => "VERB_STRIKINGDOWN",
2946            Self::VerbMenacingpose => "VERB_MENACINGPOSE",
2947            Self::VerbTraveling => "VERB_TRAVELING",
2948            Self::VerbRaising => "VERB_RAISING",
2949            Self::VerbHiding => "VERB_HIDING",
2950            Self::VerbLookingconfused => "VERB_LOOKINGCONFUSED",
2951            Self::VerbLookingterrified => "VERB_LOOKINGTERRIFIED",
2952            Self::VerbDevouring => "VERB_DEVOURING",
2953            Self::VerbAdmiring => "VERB_ADMIRING",
2954            Self::VerbBurning => "VERB_BURNING",
2955            Self::VerbWeeping => "VERB_WEEPING",
2956            Self::VerbLookingdejected => "VERB_LOOKINGDEJECTED",
2957            Self::VerbCringing => "VERB_CRINGING",
2958            Self::VerbScreaming => "VERB_SCREAMING",
2959            Self::VerbSubmissivegesture => "VERB_SUBMISSIVEGESTURE",
2960            Self::VerbFetalposition => "VERB_FETALPOSITION",
2961            Self::VerbSmearedintospiral => "VERB_SMEAREDINTOSPIRAL",
2962            Self::VerbFalling => "VERB_FALLING",
2963            Self::VerbDead => "VERB_DEAD",
2964            Self::VerbLaughing => "VERB_LAUGHING",
2965            Self::VerbLookingoffended => "VERB_LOOKINGOFFENDED",
2966            Self::VerbBeingshot => "VERB_BEINGSHOT",
2967            Self::VerbPlaintivegesture => "VERB_PLAINTIVEGESTURE",
2968            Self::VerbMelting => "VERB_MELTING",
2969            Self::VerbShooting => "VERB_SHOOTING",
2970            Self::VerbTorturing => "VERB_TORTURING",
2971            Self::VerbCommittingdepravedact => "VERB_COMMITTINGDEPRAVEDACT",
2972            Self::VerbPraying => "VERB_PRAYING",
2973            Self::VerbContemplating => "VERB_CONTEMPLATING",
2974            Self::VerbCooking => "VERB_COOKING",
2975            Self::VerbEngraving => "VERB_ENGRAVING",
2976            Self::VerbProstrating => "VERB_PROSTRATING",
2977            Self::VerbSuffering => "VERB_SUFFERING",
2978            Self::VerbBeingimpaled => "VERB_BEINGIMPALED",
2979            Self::VerbBeingcontorted => "VERB_BEINGCONTORTED",
2980            Self::VerbBeingflayed => "VERB_BEINGFLAYED",
2981            Self::VerbHangingfrom => "VERB_HANGINGFROM",
2982            Self::VerbBeingmutilated => "VERB_BEINGMUTILATED",
2983            Self::VerbTriumphantpose => "VERB_TRIUMPHANTPOSE",
2984        }
2985    }
2986    /// Creates an enum from field names used in the ProtoBuf definition.
2987    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2988        match value {
2989            "VERB_WITHERING" => Some(Self::VerbWithering),
2990            "VERB_SURROUNDEDBY" => Some(Self::VerbSurroundedby),
2991            "VERB_MASSACRING" => Some(Self::VerbMassacring),
2992            "VERB_FIGHTING" => Some(Self::VerbFighting),
2993            "VERB_LABORING" => Some(Self::VerbLaboring),
2994            "VERB_GREETING" => Some(Self::VerbGreeting),
2995            "VERB_REFUSING" => Some(Self::VerbRefusing),
2996            "VERB_SPEAKING" => Some(Self::VerbSpeaking),
2997            "VERB_EMBRACING" => Some(Self::VerbEmbracing),
2998            "VERB_STRIKINGDOWN" => Some(Self::VerbStrikingdown),
2999            "VERB_MENACINGPOSE" => Some(Self::VerbMenacingpose),
3000            "VERB_TRAVELING" => Some(Self::VerbTraveling),
3001            "VERB_RAISING" => Some(Self::VerbRaising),
3002            "VERB_HIDING" => Some(Self::VerbHiding),
3003            "VERB_LOOKINGCONFUSED" => Some(Self::VerbLookingconfused),
3004            "VERB_LOOKINGTERRIFIED" => Some(Self::VerbLookingterrified),
3005            "VERB_DEVOURING" => Some(Self::VerbDevouring),
3006            "VERB_ADMIRING" => Some(Self::VerbAdmiring),
3007            "VERB_BURNING" => Some(Self::VerbBurning),
3008            "VERB_WEEPING" => Some(Self::VerbWeeping),
3009            "VERB_LOOKINGDEJECTED" => Some(Self::VerbLookingdejected),
3010            "VERB_CRINGING" => Some(Self::VerbCringing),
3011            "VERB_SCREAMING" => Some(Self::VerbScreaming),
3012            "VERB_SUBMISSIVEGESTURE" => Some(Self::VerbSubmissivegesture),
3013            "VERB_FETALPOSITION" => Some(Self::VerbFetalposition),
3014            "VERB_SMEAREDINTOSPIRAL" => Some(Self::VerbSmearedintospiral),
3015            "VERB_FALLING" => Some(Self::VerbFalling),
3016            "VERB_DEAD" => Some(Self::VerbDead),
3017            "VERB_LAUGHING" => Some(Self::VerbLaughing),
3018            "VERB_LOOKINGOFFENDED" => Some(Self::VerbLookingoffended),
3019            "VERB_BEINGSHOT" => Some(Self::VerbBeingshot),
3020            "VERB_PLAINTIVEGESTURE" => Some(Self::VerbPlaintivegesture),
3021            "VERB_MELTING" => Some(Self::VerbMelting),
3022            "VERB_SHOOTING" => Some(Self::VerbShooting),
3023            "VERB_TORTURING" => Some(Self::VerbTorturing),
3024            "VERB_COMMITTINGDEPRAVEDACT" => Some(Self::VerbCommittingdepravedact),
3025            "VERB_PRAYING" => Some(Self::VerbPraying),
3026            "VERB_CONTEMPLATING" => Some(Self::VerbContemplating),
3027            "VERB_COOKING" => Some(Self::VerbCooking),
3028            "VERB_ENGRAVING" => Some(Self::VerbEngraving),
3029            "VERB_PROSTRATING" => Some(Self::VerbProstrating),
3030            "VERB_SUFFERING" => Some(Self::VerbSuffering),
3031            "VERB_BEINGIMPALED" => Some(Self::VerbBeingimpaled),
3032            "VERB_BEINGCONTORTED" => Some(Self::VerbBeingcontorted),
3033            "VERB_BEINGFLAYED" => Some(Self::VerbBeingflayed),
3034            "VERB_HANGINGFROM" => Some(Self::VerbHangingfrom),
3035            "VERB_BEINGMUTILATED" => Some(Self::VerbBeingmutilated),
3036            "VERB_TRIUMPHANTPOSE" => Some(Self::VerbTriumphantpose),
3037            _ => None,
3038        }
3039    }
3040}
3041#[derive(serde::Serialize)]
3042#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3043#[repr(i32)]
3044pub enum FlowType {
3045    Miasma = 0,
3046    Steam = 1,
3047    Mist = 2,
3048    MaterialDust = 3,
3049    MagmaMist = 4,
3050    Smoke = 5,
3051    Dragonfire = 6,
3052    Fire = 7,
3053    Web = 8,
3054    MaterialGas = 9,
3055    MaterialVapor = 10,
3056    OceanWave = 11,
3057    SeaFoam = 12,
3058    ItemCloud = 13,
3059    CampFire = -1,
3060}
3061impl FlowType {
3062    /// String value of the enum field names used in the ProtoBuf definition.
3063    ///
3064    /// The values are not transformed in any way and thus are considered stable
3065    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3066    pub fn as_str_name(&self) -> &'static str {
3067        match self {
3068            Self::Miasma => "Miasma",
3069            Self::Steam => "Steam",
3070            Self::Mist => "Mist",
3071            Self::MaterialDust => "MaterialDust",
3072            Self::MagmaMist => "MagmaMist",
3073            Self::Smoke => "Smoke",
3074            Self::Dragonfire => "Dragonfire",
3075            Self::Fire => "Fire",
3076            Self::Web => "Web",
3077            Self::MaterialGas => "MaterialGas",
3078            Self::MaterialVapor => "MaterialVapor",
3079            Self::OceanWave => "OceanWave",
3080            Self::SeaFoam => "SeaFoam",
3081            Self::ItemCloud => "ItemCloud",
3082            Self::CampFire => "CampFire",
3083        }
3084    }
3085    /// Creates an enum from field names used in the ProtoBuf definition.
3086    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3087        match value {
3088            "Miasma" => Some(Self::Miasma),
3089            "Steam" => Some(Self::Steam),
3090            "Mist" => Some(Self::Mist),
3091            "MaterialDust" => Some(Self::MaterialDust),
3092            "MagmaMist" => Some(Self::MagmaMist),
3093            "Smoke" => Some(Self::Smoke),
3094            "Dragonfire" => Some(Self::Dragonfire),
3095            "Fire" => Some(Self::Fire),
3096            "Web" => Some(Self::Web),
3097            "MaterialGas" => Some(Self::MaterialGas),
3098            "MaterialVapor" => Some(Self::MaterialVapor),
3099            "OceanWave" => Some(Self::OceanWave),
3100            "SeaFoam" => Some(Self::SeaFoam),
3101            "ItemCloud" => Some(Self::ItemCloud),
3102            "CampFire" => Some(Self::CampFire),
3103            _ => None,
3104        }
3105    }
3106}