df_ls_structure 0.3.0-rc.1

A language server for Dwarf Fortress RAW files
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
use df_ls_syntax_analysis::TokenDeserialize;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum SiteTypeEnum {
    // TODO: update site type doc comment for all tokens using this enum
    #[token_de(token = "CITY")]
    City,
    #[token_de(token = "TREE_CITY")]
    TreeCity,
    #[token_de(token = "DARK_FORTRESS")]
    Rare,
    #[token_de(token = "CAVE")]
    Cave,
    #[token_de(token = "CAVE_DETAILED")]
    CaveDetailed,
    #[token_de(token = "PLAYER_FORTRESS")]
    PlayerFortress,
    #[token_de(token = "MONUMENT")]
    Monument,
}
impl Default for SiteTypeEnum {
    fn default() -> Self {
        Self::City
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum ConstructionEnum {
    #[token_de(token = "ROAD")]
    Road,
    #[token_de(token = "TUNNEL")]
    Tunnel,
    #[token_de(token = "BRIDGE")]
    Bridge,
    #[token_de(token = "WALL")]
    Wall,
}
impl Default for ConstructionEnum {
    fn default() -> Self {
        Self::Road
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum ArtFacetEnum {
    #[token_de(token = "OWN_RACE")]
    OwnRace,
    #[token_de(token = "FANCIFUL")]
    Fanciful,
    #[token_de(token = "EVIL")]
    Evil,
    #[token_de(token = "GOOD")]
    Good,
}
impl Default for ArtFacetEnum {
    fn default() -> Self {
        Self::OwnRace
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum ArtImageModifierEnum {
    #[token_de(token = "CREATURE")]
    Creature,
    #[token_de(token = "PLANT")]
    Plant,
    #[token_de(token = "TREE")]
    Tree,
    #[token_de(token = "SHAPE")]
    Shape,
    #[token_de(token = "ITEM")]
    Item,
}
impl Default for ArtImageModifierEnum {
    fn default() -> Self {
        Self::Creature
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum ItemImprovementModifierEnum {
    #[token_de(token = "ART_IMAGE")]
    ArtImage,
    #[token_de(token = "COVERED")]
    Covered,
    #[token_de(token = "GLAZED")]
    Glazed,
    #[token_de(token = "RINGS_HANGING")]
    RingsHanging,
    #[token_de(token = "BANDS")]
    Bands,
    #[token_de(token = "SPIKES")]
    Spikes,
    #[token_de(token = "ITEMSPECIFIC")]
    Itemspecific,
    #[token_de(token = "THREAD")]
    Thread,
    #[token_de(token = "CLOTH")]
    Cloth,
    #[token_de(token = "SEWN_IMAGE")]
    SewnImage,
}
impl Default for ItemImprovementModifierEnum {
    fn default() -> Self {
        Self::ArtImage
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum SymbolNounEnum {
    #[token_de(token = "ALL")]
    All,
    #[token_de(token = "REMAINING")]
    Remaining,
    #[token_de(token = "BATTLE")]
    Battle,
    #[token_de(token = "BRIDGE")]
    Bridge,
    #[token_de(token = "CIV")]
    Civ,
    #[token_de(token = "CRAFT_GUILD")]
    CraftGuild,
    #[token_de(token = "LIBRARY")]
    Library,
    #[token_de(token = "MERCHANT_COMPANY")]
    MerchantCompany,
    #[token_de(token = "MILITARY_UNIT")]
    MilitaryUnit,
    #[token_de(token = "RELIGION")]
    Religion,
    #[token_de(token = "ROAD")]
    Road,
    #[token_de(token = "SIEGE")]
    Siege,
    #[token_de(token = "SITE")]
    Site,
    #[token_de(token = "TEMPLE")]
    Temple,
    #[token_de(token = "TUNNEL")]
    Tunnel,
    #[token_de(token = "VESSEL")]
    Vessel,
    #[token_de(token = "WALL")]
    Wall,
    #[token_de(token = "WAR")]
    War,
}
impl Default for SymbolNounEnum {
    fn default() -> Self {
        Self::All
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum ReligionTypeEnum {
    /// The creatures will worship a group of gods, each aligned with their spheres
    /// and other appropriate ones as well.
    #[token_de(token = "PANTHEON")]
    Pantheon,
    /// The creatures will worship a single force associated with the terrain of
    /// their initial biome.
    #[token_de(token = "REGIONAL_FORCE")]
    RegionalForce,
}
impl Default for ReligionTypeEnum {
    fn default() -> Self {
        Self::Pantheon
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum RarityEnum {
    /// The item has a 1/2 chance of being added to any given civilization of this entity type.
    #[token_de(token = "COMMON")]
    Common,
    /// The item has a 1/10 chance of being added to any given civilization of this entity type.
    /// If the "item adding" algorithm fails to add any items the first time around, it will do
    /// a second pass where `UNCOMMON` items have a 1/2 chance of being added.
    #[token_de(token = "UNCOMMON")]
    Uncommon,
    /// The item has a 1/100 chance of being added to any given civilization of this entity type.
    #[token_de(token = "RARE")]
    Rare,
    /// The item is always used by civilizations of this entity type.
    #[token_de(token = "FORCED")]
    Forced,
}
impl Default for RarityEnum {
    fn default() -> Self {
        Self::Common
    }
}

// `TODO` need to implement this still
#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum EthicTypeEnum {
    /// The result of a tantrumming citizen attacking another in fortress mode. Other effects
    /// unknown.
    #[token_de(token = "ASSAULT")]
    Assault,
    /// This determines if the race will sometimes devour defeated enemy combatants.
    #[token_de(token = "EAT_SAPIENT_KILL")]
    EatSapientKill,
    /// This includes whether or not a race is willing to butcher other sapients.
    ///
    /// Note that due to a bug player forts will never butcher intelligent creatures in fortress
    /// mode (they are still willing to eat their meat though, should they have access to it).
    /// However this works as intended in adventure mode, worldgen, and offsite (caravans will
    /// deliver products made from sentients, etc.)
    #[token_de(token = "EAT_SAPIENT_OTHER")]
    EatSapientOther,
    /// A response between `MISGUIDED` and `UNTHINKABLE` causes the entity to refuse
    /// animal products in trade — namely, materials with `[IMPLIES_ANIMAL_KILL]`.
    ///
    /// If the civ sells those animal products (because of a civ token), they will be marked as
    /// "grown"; for example, "grown leather".
    #[token_de(token = "KILL_ANIMAL")]
    KillAnimal,
    /// If `REQUIRED`, all lethal combat with an enemy who is an enemy of the whole entity will put
    /// the creature in no quarter mode.
    #[token_de(token = "KILL_ENEMY")]
    KillEnemy,
    /// If `REQUIRED`, all lethal combat with an enemy in the same entity will put the creature in
    /// no quarter mode. Determines whether and how often entity members will be murdered.
    #[token_de(token = "KILL_ENTITY_MEMBER")]
    KillEntityMember,
    /// If `REQUIRED`, all lethal combat with an enemy who is neutral with the entity will put the
    /// creature in no quarter mode, and the creature will also demand that strangers identify
    /// themselves.
    #[token_de(token = "KILL_NEUTRAL")]
    KillNeutral,
    /// This includes a race's position towards wood — a response between `MISGUIDED` and
    /// `UNTHINKABLE` causes the entity to refuse wooden objects (except for "grown"
    /// wooden objects) in trade, and also prohibits them from bringing caravan wagons.
    ///
    /// Caravans will sell grown wood objects (if the civ has `WOOD_PREF`) and even grown non-wood
    /// objects but that elves refuse to buy (if the civ uses misc processed wood products).
    #[token_de(token = "KILL_PLANT")]
    KillPlant,
    /// Unknown, possibly giving false witness reports.
    #[token_de(token = "LYING")]
    Lying,
    /// This determines whether animal kills in world-gen will lead to characters with trophies.
    #[token_de(token = "MAKE_TROPHY_ANIMAL")]
    MakeTrophyAnimal,
    /// This determines whether kills of one's own race in world-gen will lead to characters with
    /// trophies.
    ///
    /// Historical figures can go to your fortress with jewellery of leather, tooth, hair, bone or
    /// nail from their race, even `INTELLIGENT`; for example: goblin with -goblin tooth ring-.
    #[token_de(token = "MAKE_TROPHY_SAME_RACE")]
    MakeTrophySameRace,
    /// This determines whether kills of other sapients in world-gen will lead to characters with
    /// trophies. Like `MAKE_TROPHY_SAME_RACE`, but about other races, including `INTELLIGENT`.
    #[token_de(token = "MAKE_TROPHY_SAPIENT")]
    MakeTrophySapient,
    /// The result of a citizen violating noble mandates in fortress mode. Other effects unknown.
    #[token_de(token = "OATH_BREAKING")]
    OathBreaking,
    /// Civilization will enslave defeated enemies and bring them back to their site. Also affects
    /// whether you may trade caged sapient beings to merchants.
    ///
    /// Aside from diplomacy, higher/lower values don't seem to affect anything beyond if a
    /// civilization is willing to take slaves at all.
    #[token_de(token = "SLAVERY")]
    Slavery,
    /// This determines whether the civ will try to steal goods.
    #[token_de(token = "THEFT")]
    Theft,
    ///
    #[token_de(token = "TORTURE_ANIMALS")]
    TortureAnimals,
    /// Civilization will sometimes execute non-combatants after defeating enemy defenders.
    #[token_de(token = "TORTURE_AS_EXAMPLE")]
    TortureAsExample,
    ///
    #[token_de(token = "TORTURE_FOR_FUN")]
    TortureForFun,
    ///
    #[token_de(token = "TORTURE_FOR_INFORMATION")]
    TortureForInformation,
    /// Protects position-holders from being murdered like everyone else – the reason that demon
    /// overlords of goblins manage to live for centuries, despite goblins' regard of killing each
    /// other as being a personal matter.
    #[token_de(token = "TREASON")]
    Treason,
    /// Unconfirmed, possibly ignoring burrow restrictions.
    #[token_de(token = "TRESPASSING")]
    Trespassing,
    /// The result of a tantruming citizen breaking furniture in fortress mode. Other effects
    /// unknown.
    #[token_de(token = "VANDALISM")]
    Vandalism,
}
impl Default for EthicTypeEnum {
    fn default() -> Self {
        Self::Assault
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum EthicReactionEnum {
    #[token_de(token = "NOT_APPLICABLE")]
    NotApplicable,
    #[token_de(token = "ACCEPTABLE")]
    Acceptable,
    #[token_de(token = "PERSONAL_MATTER")]
    PersonalMatter,
    #[token_de(token = "JUSTIFIED_IF_NO_REPERCUSSIONS")]
    JustifiedIfNoRepercussions,
    #[token_de(token = "JUSTIFIED_IF_GOOD_REASON")]
    JustifiedIfGoodReason,
    #[token_de(token = "JUSTIFIED_IF_EXTREME_REASON")]
    JustifiedIfExtremeReason,
    #[token_de(token = "JUSTIFIED_IF_SELF_DEFENSE")]
    JustifiedIfSelfDefense,
    #[token_de(token = "ONLY_IF_SANCTIONED")]
    OnlyIfSanctioned,
    #[token_de(token = "MISGUIDED")]
    Misguided,
    #[token_de(token = "SHUN")]
    Shun,
    #[token_de(token = "APPALLING")]
    Appalling,
    #[token_de(token = "PUNISH_REPRIMAND")]
    PunishReprimand,
    #[token_de(token = "PUNISH_SERIOUS")]
    PunishSerious,
    #[token_de(token = "PUNISH_EXILE")]
    PunishExile,
    #[token_de(token = "PUNISH_CAPITAL")]
    PunishCapital,
    #[token_de(token = "UNTHINKABLE")]
    Unthinkable,
    #[token_de(token = "REQUIRED")]
    Required,
}
impl Default for EthicReactionEnum {
    fn default() -> Self {
        Self::NotApplicable
    }
}

// `TODO` implement this
#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum CulturalValueEnum {
    /// - +41 to +50: is an absolute believer in the rule of law
    /// - +26 to +40: has a great deal of respect for the law
    /// - +11 to +25: respects the law
    /// - −10 to +10: doesn't feel strongly about the law
    /// - −25 to −11: does not respect the law
    /// - −40 to −26: disdains the law
    /// - −50 to −41: finds the idea of laws abhorrent
    #[token_de(token = "LAW")]
    Law,
    /// - +41 to +50: has the highest regard for loyalty
    /// - +26 to +40: greatly prizes loyalty
    /// - +11 to +25: values loyalty
    /// - −10 to +10: doesn't particularly value loyalty
    /// - −25 to −11: views loyalty unfavorably
    /// - −40 to −26: disdains loyalty
    /// - −50 to −41: is disgusted by the idea of loyalty
    #[token_de(token = "LOYALTY")]
    Loyalty,
    /// - +41 to +50: sees family as one of the most important things in life
    /// - +26 to +40: values family greatly
    /// - +11 to +25: values family
    /// - −10 to +10: does not care about family one way or the other
    /// - −25 to −11: is put off by family
    /// - −40 to −26: lacks any respect for family
    /// - −50 to −41: finds the idea of family loathsome
    #[token_de(token = "FAMILY")]
    Family,
    /// - +41 to +50: believes friendship is a key to the ideal life
    /// - +26 to +40: sees friendship as one of the finer things in life
    /// - +11 to +25: thinks friendship is important
    /// - −10 to +10: does not care about friendship
    /// - −25 to −11: finds friendship burdensome
    /// - −40 to −26: is completely put off by the idea of friends
    /// - −50 to −41: finds the whole idea of friendship disgusting
    #[token_de(token = "FRIENDSHIP")]
    Friendship,
    /// - +41 to +50: believes that the acquisition of power over others is the ideal goal in life
    /// and worthy of the highest respect
    /// - +26 to +40: sees power over others as something to strive for
    /// - +11 to +25: respects power
    /// - −10 to +10: doesn't find power particularly praiseworthy
    /// - −25 to −11: has a negative view of those who exercise power over others
    /// - −40 to −26: hates those who wield power over others
    /// - −50 to −41: finds the acquisition and use of power abhorrent and would have all masters
    /// toppled
    #[token_de(token = "POWER")]
    Power,
    /// - +41 to +50: believes the truth is inviolable regardless of the cost
    /// - +26 to +40: believes that honesty is a high ideal
    /// - +11 to +25: values honesty
    /// - −10 to +10: does not particularly value the truth
    /// - −25 to −11: finds blind honesty foolish
    /// - −40 to −26: sees lying as an important means to an end
    /// - −50 to −41: is repelled by the idea of honesty and lies without compunction
    #[token_de(token = "TRUTH")]
    Truth,
    /// - +41 to +50: holds well-laid plans and shrewd deceptions in the highest regard
    /// - +26 to +40: greatly respects the shrewd and guileful
    /// - +11 to +25: values cunning
    /// - −10 to +10: does not really value cunning and guile
    /// - −25 to −11: sees guile and cunning as indirect and somewhat worthless
    /// - −40 to −26: holds shrewd and crafty individuals in the lowest esteem
    /// - −50 to −41: is utterly disgusted by guile and cunning
    #[token_de(token = "CUNNING")]
    Cunning,
    /// - +41 to +50: believes that artful speech and eloquent expression are some of the highest
    /// ideals
    /// - +26 to +40: deeply respects eloquent speakers
    /// - +11 to +25: values eloquence
    /// - −10 to +10: doesn't value eloquence so much
    /// - −25 to −11: finds eloquence and artful speech off-putting
    /// - −40 to −26: finds [him/her]self somewhat disgusted with eloquent speakers
    /// - −50 to −41: sees artful speech and eloquence as a wasteful form of deliberate deception
    /// and treats it as such
    #[token_de(token = "ELOQUENCE")]
    Eloquence,
    /// - +41 to +50: holds fairness as one of the highest ideals and despises cheating of any kind
    /// - +26 to +40: has great respect for fairness
    /// - +11 to +25: respects fair-dealing and fair-play
    /// - −10 to +10: does not care about fairness
    /// - −25 to −11: sees life as unfair and doesn't mind it that way
    /// - −40 to −26: finds the idea of fair-dealing foolish and cheats when [he/she] finds it
    /// profitable
    /// - −50 to −41: is disgusted by the idea of fairness and will freely cheat anybody at any time
    #[token_de(token = "FAIRNESS")]
    Fairness,
    /// - +41 to +50: views decorum as a high ideal and is deeply offended by those that fail to
    /// maintain it
    /// - +26 to +40: greatly respects those that observe decorum and maintain their dignity
    /// - +11 to +25: values decorum, dignity and proper behavior
    /// - −10 to +10: doesn't care very much about decorum
    /// - −25 to −11: finds maintaining decorum a silly, fumbling waste of time
    /// - −40 to −26: sees those that attempt to maintain dignified and proper behavior as vain and
    /// offensive
    /// - −50 to −41: is affronted by the whole notion of maintaining decorum and finds so-called
    /// dignified people disgusting
    #[token_de(token = "DECORUM")]
    Decorum,
    /// - +41 to +50: holds the maintenance of tradition as one of the highest ideals
    /// - +26 to +40: is a firm believer in the value of tradition
    /// - +11 to +25: values tradition
    /// - −10 to +10: doesn't have any strong feelings about tradition
    /// - −25 to −11: disregards tradition
    /// - −40 to −26: finds the following of tradition foolish and limiting
    /// - −50 to −41: is disgusted by tradition and would flout any [he/she] encounters if given a
    /// chance
    #[token_de(token = "TRADITION")]
    Tradition,
    /// - +41 to +50: believes that the creation and appreciation of artwork is one of the highest
    /// ideals
    /// - +26 to +40: greatly respects artists and their works
    /// - +11 to +25: values artwork
    /// - −10 to +10: doesn't care about art one way or another
    /// - −25 to −11: finds artwork boring
    /// - −40 to −26: sees the whole pursuit of art as silly
    /// - −50 to −41: finds art offensive and would have it destroyed whenever possible
    #[token_de(token = "ARTWORK")]
    Artwork,
    /// - +41 to +50: places cooperation as one of the highest ideals
    /// - +26 to +40: sees cooperation as very important in life
    /// - +11 to +25: values cooperation
    /// - −10 to +10: doesn't see cooperation as valuable
    /// - −25 to −11: dislikes cooperation
    /// - −40 to −26: views cooperation as a low ideal not worthy of any respect
    /// - −50 to −41: is thoroughly disgusted by cooperation
    #[token_de(token = "COOPERATION")]
    Cooperation,
    /// - +41 to +50: believes that freedom and independence are completely non-negotiable and would
    /// fight to defend them
    /// - +26 to +40: treasures independence
    /// - +11 to +25: values independence
    /// - −10 to +10: doesn't really value independence one way or another
    /// - −25 to −11: finds the ideas of independence and freedom somewhat foolish
    /// - −40 to −26: sees freedom and independence as completely worthless
    /// - −50 to −41: hates freedom and would crush the independent spirit wherever it is found
    #[token_de(token = "INDEPENDENCE")]
    Independence,
    /// - +41 to +50: views any show of emotion as offensive
    /// - +26 to +40: thinks it is of the utmost importance to present a bold face and never grouse,
    /// complain or even show emotion
    /// - +11 to +25: believes it is important to conceal emotions and refrain from complaining
    /// - −10 to +10: doesn't see much value in being stoic
    /// - −25 to −11: sees no value in holding back complaints and concealing emotions
    /// - −40 to −26: feels that those who attempt to conceal their emotions are vain and foolish
    /// - −50 to −41: sees concealment of emotions as a betrayal and tries [his/her] best never to
    /// associate with such secretive fools
    #[token_de(token = "STOICISM")]
    Stoicism,
    /// - +41 to +50: feels that introspection and all forms of self-examination are the keys to a
    /// good life and worthy of respect
    /// - +26 to +40: deeply values introspection
    /// - +11 to +25: sees introspection as important
    /// - −10 to +10: doesn't really see the value in self-examination
    /// - −25 to −11: finds introspection to be a waste of time
    /// - −40 to −26: thinks that introspection is valueless and those that waste time in self-
    /// examination are deluded fools
    /// - −50 to −41: finds the whole idea of introspection completely offensive and contrary to the
    /// ideals of a life well-lived
    #[token_de(token = "INTROSPECTION")]
    Introspection,
    /// - +41 to +50: believes that self-mastery and the denial of impulses are of the highest
    /// ideals
    /// - +26 to +40: finds moderation and self-control to be very important
    /// - +11 to +25: values self-control
    /// - −10 to +10: doesn't particularly value self-control
    /// - −25 to −11: finds those that deny their impulses somewhat stiff
    /// - −40 to −26: sees the denial of impulses as a vain and foolish pursuit
    /// - −50 to −41: has abandoned any attempt at self-control and finds the whole concept deeply
    /// offensive
    #[token_de(token = "SELF_CONTROL")]
    SelfControl,
    /// - +41 to +50: views tranquility as one of the highest ideals
    /// - +26 to +40: strongly values tranquility and quiet
    /// - +11 to +25: values tranquility and a peaceful day
    /// - −10 to +10: doesn't have a preference between tranquility and tumult
    /// - −25 to −11: prefers a noisy, bustling life to boring days without activity
    /// - −40 to −26: is greatly disturbed by quiet and a peaceful existence
    /// - −50 to −41: is disgusted by tranquility and would that the world would constantly churn
    /// with noise and activity
    #[token_de(token = "TRANQUILITY")]
    Tranquility,
    /// - +41 to +50: would have the world operate in complete harmony without the least bit of
    /// strife or disorder
    /// - +26 to +40: strongly believes that a peaceful and ordered society without dissent is best
    /// - +11 to +25: values a harmonious existence
    /// - −10 to +10: sees equal parts of harmony and discord as part of life
    /// - −25 to −11: doesn't respect a society that has settled into harmony without debate and
    /// strife
    /// - −40 to −26: can't fathom why anyone would want to live in an orderly and harmonious
    /// society
    /// - −50 to −41: believes deeply that chaos and disorder are the truest expressions of life and
    /// would disrupt harmony wherever it is found
    #[token_de(token = "HARMONY")]
    Harmony,
    /// - +41 to +50: believes that little is better in life than a good party
    /// - +26 to +40: truly values merrymaking and parties
    /// - +11 to +25: finds merrymaking and partying worthwhile activities
    /// - −10 to +10: doesn't really value merrymaking
    /// - −25 to −11: sees merrymaking as a waste
    /// - −40 to −26: is disgusted by merrymakers
    /// - −50 to −41: is appalled by merrymaking, parties and other such worthless activities
    #[token_de(token = "MERRIMENT")]
    Merriment,
    /// - +41 to +50: holds crafts[man]ship to be of the highest ideals and celebrates talented
    /// artisans and their masterworks
    /// - +26 to +40: has a great deal of respect for worthy crafts[man]ship
    /// - +11 to +25: values good crafts[man]ship
    /// - −10 to +10: doesn't particularly care about crafts[man]ship
    /// - −25 to −11: considers crafts[man]ship to be relatively worthless
    /// - −40 to −26: sees the pursuit of good crafts[man]ship as a total waste
    /// - −50 to −41: views crafts[man]ship with disgust and would desecrate a so-called masterwork
    /// or two if [he/she] could get away with it
    #[token_de(token = "CRAFTSMANSHIP")]
    Craftsmanship,
    /// - +41 to +50: believes that martial prowess defines the good character of an individual
    /// - +26 to +40: deeply respects skill at arms
    /// - +11 to +25: values martial prowess
    /// - −10 to +10: does not really value skills related to fighting
    /// - −25 to −11: finds those that develop skill with weapons and fighting distasteful
    /// - −40 to −26: thinks that the pursuit of the skills of warfare and fighting is a low pursuit
    /// indeed
    /// - −50 to −41: abhors those that pursue the mastery of weapons and skill with fighting
    #[token_de(token = "MARTIAL_PROWESS")]
    MartialProwess,
    /// - +41 to +50: believes that the mastery of a skill is one of the highest pursuits
    /// - +26 to +40: really respects those that take the time to master a skill
    /// - +11 to +25: respects the development of skill
    /// - −10 to +10: doesn't care if others take the time to master skills
    /// - −25 to −11: finds the pursuit of skill mastery off-putting
    /// - −40 to −26: believes that the time taken to master a skill is a horrible waste
    /// - −50 to −41: sees the whole idea of taking time to master a skill as appalling
    #[token_de(token = "SKILL")]
    Skill,
    /// - +41 to +50: believes that hard work is one of the highest ideals and a key to the good
    /// life
    /// - +26 to +40: deeply respects those that work hard at their labors
    /// - +11 to +25: values hard work
    /// - −10 to +10: doesn't really see the point of working hard
    /// - −25 to −11: sees working hard as a foolish waste of time
    /// - −40 to −26: thinks working hard is an abject idiocy
    /// - −50 to −41: finds the proposition that one should work hard in life utterly abhorrent
    #[token_de(token = "HARD_WORK")]
    HardWork,
    /// - +41 to +50: finds sacrifice to be one of the highest ideals
    /// - +26 to +40: believes that those who sacrifice for others should be deeply respected
    /// - +11 to +25: values sacrifice
    /// - −10 to +10: doesn't particularly respect sacrifice as a virtue
    /// - −25 to −11: sees sacrifice as wasteful and foolish
    /// - −40 to −26: finds sacrifice to be the height of folly
    /// - −50 to −41: thinks that the entire concept of sacrifice for others is truly disgusting
    #[token_de(token = "SACRIFICE")]
    Sacrifice,
    /// - +41 to +50: holds the idea of competition among the most important values and would
    /// encourage it wherever possible
    /// - +26 to +40: views competition as a crucial driving force in the world
    /// - +11 to +25: sees competition as reasonably important
    /// - −10 to +10: doesn't have strong views on competition
    /// - −25 to −11: sees competition as wasteful and silly
    /// - −40 to −26: deeply dislikes competition
    /// - −50 to −41: finds the very idea of competition obscene
    #[token_de(token = "COMPETITION")]
    Competition,
    /// - +41 to +50: believes that perseverance is one of the greatest qualities somebody can have
    /// - +26 to +40: greatly respects individuals that persevere through their trials and labors
    /// - +11 to +25: respects perseverance
    /// - −10 to +10: doesn't think much about the idea of perseverance
    /// - −25 to −11: sees perseverance in the face of adversity as bull-headed and foolish
    /// - −40 to −26: thinks there is something deeply wrong with people that persevere through
    /// adversity
    /// - −50 to −41: finds the notion that one would persevere through adversity completely
    /// abhorrent
    #[token_de(token = "PERSEVERANCE")]
    Perseverance,
    /// - +41 to +50: believes that it would be a fine thing if all time were leisure time
    /// - +26 to +40: treasures leisure time and thinks it is very important in life
    /// - +11 to +25: values leisure time
    /// - −10 to +10: doesn't think one way or the other about leisure time
    /// - −25 to −11: finds leisure time wasteful
    /// - −40 to −26: is offended by leisure time and leisurely living
    /// - −50 to −41: believes that those that take leisure time are evil and finds the whole idea
    /// disgusting
    #[token_de(token = "LEISURE_TIME")]
    LeisureTime,
    /// - +41 to +50: sees engaging in commerce as a high ideal in life
    /// - +26 to +40: really respects commerce and those that engage in trade
    /// - +11 to +25: respects commerce
    /// - −10 to +10: doesn't particularly respect commerce
    /// - −25 to −11: is somewhat put off by trade and commerce
    /// - −40 to −26: finds those that engage in trade and commerce to be fairly disgusting
    /// - −50 to −41: holds the view that commerce is a vile obscenity
    #[token_de(token = "COMMERCE")]
    Commerce,
    /// - +41 to +50: sees romance as one of the highest ideals
    /// - +26 to +40: thinks romance is very important in life
    /// - +11 to +25: values romance
    /// - −10 to +10: doesn't care one way or the other about romance
    /// - −25 to −11: finds romance distasteful
    /// - −40 to −26: is somewhat disgusted by romance
    /// - −50 to −41: finds even the abstract idea of romance repellent
    #[token_de(token = "ROMANCE")]
    Romance,
    /// - +41 to +50: holds nature to be of greater value than most aspects of civilization
    /// - +26 to +40: has a deep respect for animals, plants and the natural world
    /// - +11 to +25: values nature
    /// - −10 to +10: doesn't care about nature one way or another
    /// - −25 to −11: finds nature somewhat disturbing
    /// - −40 to −26: has a deep dislike of the natural world
    /// - −50 to −41: would just as soon have nature and the great outdoors burned to ashes and
    /// converted into a great mining pit
    #[token_de(token = "NATURE")]
    Nature,
    /// - +41 to +50: believes the idea of war is utterly repellent and would have peace at all
    /// costs
    /// - +26 to +40: believes that peace is always preferable to war
    /// - +11 to +25: values peace over war
    /// - −10 to +10: doesn't particularly care between war and peace
    /// - −25 to −11: sees war as a useful means to an end
    /// - −40 to −26: believes war is preferable to peace in general
    /// - −50 to −41: thinks that the world should be engaged in perpetual warfare
    #[token_de(token = "PEACE")]
    Peace,
    /// - +41 to +50: finds the quest for knowledge to be of the very highest value
    /// - +26 to +40: views the pursuit of knowledge as deeply important
    /// - +11 to +25: values knowledge
    /// - −10 to +10: doesn't see the attainment of knowledge as important
    /// - −25 to −11: finds the pursuit of knowledge to be a waste of effort
    /// - −40 to −26: thinks the quest for knowledge is a delusional fantasy
    /// - −50 to −41: sees the attainment and preservation of knowledge as an offensive enterprise
    /// engaged in by arrogant fools
    #[token_de(token = "KNOWLEDGE")]
    Knowledge,
}
impl Default for CulturalValueEnum {
    fn default() -> Self {
        Self::Law
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum SeasonEnum {
    #[token_de(token = "SPRING")]
    Spring,
    #[token_de(token = "SUMMER")]
    Summer,
    #[token_de(token = "AUTUMN")]
    Autumn,
    #[token_de(token = "WINTER")]
    Winter,
}
impl Default for SeasonEnum {
    fn default() -> Self {
        Self::Spring
    }
}

#[derive(Serialize, Deserialize, Clone, Debug, TokenDeserialize, PartialEq, Eq)]
#[token_de(enum_value)]
pub enum ScholarTypeEnum {
    #[token_de(token = "ALL")]
    All,
    #[token_de(token = "ASTRONOMER")]
    Astronomer,
    #[token_de(token = "CHEMIST")]
    Chemist,
    #[token_de(token = "DOCTOR")]
    Doctor,
    #[token_de(token = "ENGINEER")]
    Engineer,
    #[token_de(token = "GEOGRAPHER")]
    Geographer,
    #[token_de(token = "HISTORIAN")]
    Historian,
    #[token_de(token = "MATHEMATICIAN")]
    Mathematician,
    #[token_de(token = "NATURALIST")]
    Naturalist,
    #[token_de(token = "PHILOSOPHER")]
    Philosopher,
}
impl Default for ScholarTypeEnum {
    fn default() -> Self {
        Self::All
    }
}