use crate::{
AppModTypeEnum, AppearanceModifierEnum, BpAppModifersEnum, BpCriteriaTokenArg, BpEnum,
CdiTokenArg, CeBodyMatInteractionTokenArg, CeBodyTransformationTokenArg,
CeChangePersonalityTokenArg, CeMentAttChangeTokenArg, CePhysAttChangeTokenArg, CeTagsTokenArg,
CeXNoSevTokenArg, CeXNoTargetTokenArg, CeXTokenArg, ClassEnum, CounterTriggerEnum,
CounterTypesEnum, EmotionEnum, EmotionTypeEnum, FrequencyEnum, InteractionEnum,
InteractionToken, MatMultEnum, MatTokenEnum, MaterialTokenArg, MoonPhaseEnum, NameEnum,
NoneEnum, PercEnum, PercOnEnum, PeriodicTriggerEnum, RequiredEnum, ReservedBloodEnum,
SpeedEnum, TileEnum,
};
use df_ls_core::{Choose, DFChar, Reference, ReferenceTo};
use df_ls_syntax_analysis::TokenDeserialize;
use serde::{Deserialize, Serialize};
type CeTokenArgs = Choose<
(PeriodicTriggerEnum, MoonPhaseEnum, u32, u32),
(
CounterTriggerEnum,
CounterTypesEnum,
Choose<u32, NoneEnum>,
Choose<u32, NoneEnum>,
RequiredEnum,
),
>;
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeBruising {
#[token_de(token = "CE_BRUISING", on_duplicate_to_parent, primary_token)]
pub ce_bruising: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeBlisters {
#[token_de(token = "CE_BLISTERS", on_duplicate_to_parent, primary_token)]
pub ce_blisters: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeOozing {
#[token_de(token = "CE_OOZING", on_duplicate_to_parent, primary_token)]
pub ce_oozing: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeBleeding {
#[token_de(token = "CE_BLEEDING", on_duplicate_to_parent, primary_token)]
pub ce_bleeding: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeSwelling {
#[token_de(token = "CE_SWELLING", on_duplicate_to_parent, primary_token)]
pub ce_swelling: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeNecrosis {
#[token_de(token = "CE_NECROSIS", on_duplicate_to_parent, primary_token)]
pub ce_necrosis: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeNumbness {
#[token_de(token = "CE_NUMBNESS", on_duplicate_to_parent, primary_token)]
pub ce_numbness: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CePain {
#[token_de(token = "CE_PAIN", on_duplicate_to_parent, primary_token)]
pub ce_pain: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeParalysis {
#[token_de(token = "CE_PARALYSIS", on_duplicate_to_parent, primary_token)]
pub ce_paralysis: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeImpairFunction {
#[token_de(token = "CE_IMPAIR_FUNCTION", on_duplicate_to_parent, primary_token)]
pub ce_impair_function: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeDizziness {
#[token_de(token = "CE_DIZZINESS", on_duplicate_to_parent, primary_token)]
pub ce_dizziness: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeDrowsiness {
#[token_de(token = "CE_DROWSINESS", on_duplicate_to_parent, primary_token)]
pub ce_drowsiness: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeUnconsciousness {
#[token_de(token = "CE_UNCONSCIOUSNESS", on_duplicate_to_parent, primary_token)]
pub ce_unconsciousness: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeFever {
#[token_de(token = "CE_FEVER", on_duplicate_to_parent, primary_token)]
pub ce_fever: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeNausea {
#[token_de(token = "CE_NAUSEA", on_duplicate_to_parent, primary_token)]
pub ce_nausea: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeCoughBlood {
#[token_de(token = "CE_COUGH_BLOOD", on_duplicate_to_parent, primary_token)]
pub ce_cough_blood: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeVomitBlood {
#[token_de(token = "CE_VOMIT_BLOOD", on_duplicate_to_parent, primary_token)]
pub ce_vomit_blood: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeReducePain {
#[token_de(token = "CE_REDUCE_PAIN", on_duplicate_to_parent, primary_token)]
pub ce_reduce_pain: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeReduceSwelling {
#[token_de(token = "CE_REDUCE_SWELLING", on_duplicate_to_parent, primary_token)]
pub ce_reduce_swelling: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeReduceParalysis {
#[token_de(token = "CE_REDUCE_PARALYSIS", on_duplicate_to_parent, primary_token)]
pub ce_reduce_paralysis: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeReduceDizziness {
#[token_de(token = "CE_REDUCE_DIZZINESS", on_duplicate_to_parent, primary_token)]
pub ce_reduce_dizziness: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeReduceNausea {
#[token_de(token = "CE_REDUCE_NAUSEA", on_duplicate_to_parent, primary_token)]
pub ce_reduce_nausea: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeReduceFever {
#[token_de(token = "CE_REDUCE_FEVER", on_duplicate_to_parent, primary_token)]
pub ce_reduce_fever: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeStopBleeding {
#[token_de(token = "CE_STOP_BLEEDING", on_duplicate_to_parent, primary_token)]
pub ce_stop_bleeding: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeCloseOpenWounds {
#[token_de(token = "CE_CLOSE_OPEN_WOUNDS", on_duplicate_to_parent, primary_token)]
pub ce_close_open_wounds: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeCureInfection {
#[token_de(token = "CE_CURE_INFECTION", on_duplicate_to_parent, primary_token)]
pub ce_cure_infection: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeHealTissues {
#[token_de(token = "CE_HEAL_TISSUES", on_duplicate_to_parent, primary_token)]
pub ce_heal_tissues: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeHealNerves {
#[token_de(token = "CE_HEAL_NERVES", on_duplicate_to_parent, primary_token)]
pub ce_heal_nerves: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeRegrowParts {
#[token_de(token = "CE_REGROW_PARTS", on_duplicate_to_parent, primary_token)]
pub ce_regrow_parts: Option<CeXTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeAddTag {
#[token_de(token = "CE_ADD_TAG", on_duplicate_to_parent, primary_token)]
pub ce_add_tag: Option<CeTagsTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeRemoveTag {
#[token_de(token = "CE_REMOVE_TAG", on_duplicate_to_parent, primary_token)]
pub ce_remove_tag: Option<CeTagsTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeDisplayName {
#[token_de(token = "CE_DISPLAY_NAME", on_duplicate_to_parent, primary_token)]
pub ce_display_name: Option<(NameEnum, String, String, String, CeXNoSevTokenArg)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeDisplayTile {
#[token_de(token = "CE_DISPLAY_TILE", on_duplicate_to_parent, primary_token)]
pub ce_display_tile: Option<(TileEnum, DFChar, u8, u8, u8, CeXNoSevTokenArg)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeFlashTile {
#[token_de(token = "CE_FLASH_TILE", on_duplicate_to_parent, primary_token)]
pub ce_flash_tile: Option<(
TileEnum,
DFChar,
u8,
u8,
u8,
FrequencyEnum,
u32,
u32,
CeXNoSevTokenArg,
)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CePhysAttChange {
#[token_de(token = "CE_PHYS_ATT_CHANGE", on_duplicate_to_parent, primary_token)]
pub ce_phys_att_change: Option<CePhysAttChangeTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeMentAttChange {
#[token_de(token = "CE_MENT_ATT_CHANGE", on_duplicate_to_parent, primary_token)]
pub ce_ment_att_change: Option<CeMentAttChangeTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeSpeedChange {
#[token_de(token = "CE_SPEED_CHANGE", on_duplicate_to_parent, primary_token)]
pub ce_speed_change: Option<(SpeedEnum, i32, CeXNoSevTokenArg)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeSkillRollAdjust {
#[token_de(token = "CE_SKILL_ROLL_ADJUST", on_duplicate_to_parent, primary_token)]
pub ce_skill_roll_adjust: Option<(PercEnum, u8, PercOnEnum, u8, CeXNoSevTokenArg)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeBodyAppearanceModifier {
#[token_de(token = "CE_BODY_APPEARANCE_MODIFIER")]
pub ce_body_appearance_modifier: Option<(
AppearanceModifierEnum,
AppModTypeEnum,
u32,
CeXNoSevTokenArg,
)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeBpAppearanceModifier {
#[token_de(
token = "CE_BP_APPEARANCE_MODIFIER",
on_duplicate_to_parent,
primary_token
)]
pub ce_bp_appearance_modifier: Option<(
BpEnum,
BpCriteriaTokenArg,
AppearanceModifierEnum,
BpAppModifersEnum,
u32,
CeXNoTargetTokenArg,
)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeBodyTransformation {
#[token_de(
token = "CE_BODY_TRANSFORMATION",
on_duplicate_to_parent,
primary_token
)]
pub ce_body_transformation: Option<CeXNoSevTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<Choose<CeTokenArgs, CeBodyTransformationTokenArg>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeMaterialForceMultiplier {
#[token_de(
token = "CE_MATERIAL_FORCE_MULTIPLIER",
on_duplicate_to_parent,
primary_token
)]
pub ce_material_force_multiplier: Option<(
MatMultEnum,
Choose<(NoneEnum, NoneEnum), MaterialTokenArg>,
u32,
u32,
CeXNoSevTokenArg,
)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeCanDoInteraction {
#[token_de(token = "CE_CAN_DO_INTERACTION", on_duplicate_to_parent, primary_token)]
pub ce_can_do_interaction: Option<CeXNoSevTokenArg>,
#[token_de(token = "CDI")]
pub cdi: Vec<CdiTokenArg>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeSpecialAttackInteraction {
#[token_de(
token = "CE_SPECIAL_ATTACK_INTERACTION",
on_duplicate_to_parent,
primary_token
)]
pub ce_special_attack_interaction: Option<(
InteractionEnum,
ReferenceTo<InteractionToken>,
CeXNoSevTokenArg,
)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeBodyMatInteraction {
#[token_de(
token = "CE_BODY_MAT_INTERACTION",
on_duplicate_to_parent,
primary_token
)]
pub ce_body_mat_interaction: Option<(
MatTokenEnum,
Choose<ReservedBloodEnum, Reference>,
CeXNoSevTokenArg,
)>,
#[token_de(token = "CE")]
pub ce: Vec<CeBodyMatInteractionTokenArg>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeSenseCreatureClass {
#[token_de(
token = "CE_SENSE_CREATURE_CLASS",
on_duplicate_to_parent,
primary_token
)]
pub ce_sense_creature_class: Option<(
ClassEnum,
Reference,
DFChar,
u8,
u8,
u8,
CeXNoTargetTokenArg,
)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeFeelEmotion {
#[token_de(token = "CE_FEEL_EMOTION", on_duplicate_to_parent, primary_token)]
pub ce_feel_emotion: Option<(EmotionEnum, EmotionTypeEnum, CeXNoTargetTokenArg)>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeChangePersonality {
#[token_de(token = "CE_CHANGE_PERSONALITY", on_duplicate_to_parent, primary_token)]
pub ce_change_personality: Option<CeChangePersonalityTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, TokenDeserialize, PartialEq, Eq)]
pub struct CeErraticBehavior {
#[token_de(token = "CE_ERRATIC_BEHAVIOR", on_duplicate_to_parent, primary_token)]
pub ce_erratic_behavior: Option<CeXNoTargetTokenArg>,
#[token_de(token = "CE")]
pub ce: Vec<CeTokenArgs>,
}