dfraw_json_parser 0.17.5

Library which parses Dwarf Fortress raw files into JSON
Documentation
use super::tokens::CasteTag;
use crate::parser::object_types::ObjectType;
/// A map of caste tokens to their respective strings.
pub static CASTE_TOKENS: phf::Map<&'static str, CasteTag> = phf::phf_map! {
    "ADOPTS_OWNER" => CasteTag::AdoptsOwner,
    "ALCOHOL_DEPENDENT" => CasteTag::AlcoholDependent,
    "ALL_ACTIVE" => CasteTag::AllActive,
    "CASTE_ALTTILE" => CasteTag::AltTile {
        tile: String::new(),
    },
    "AMBUSHPREDATOR" => CasteTag::AmbushPredator,
    "AMPHIBIOUS" => CasteTag::Amphibious,
    "APPLY_CREATURE_VARIATION" => CasteTag::ApplyCreatureVariation {
        id: String::new(),
        args: Vec::new(),
    },
    "APPLY_CURRENT_CREATURE_VARIATION" => CasteTag::ApplyCurrentCreatureVariation,
    "AQUATIC" => CasteTag::Aquatic,
    "ARENA_RESTRICTED" => CasteTag::ArenaRestricted,
    "AT_PEACE_WITH_WILDLIFE" => CasteTag::AtPeaceWithWildlife,
    "ATTACK" => CasteTag::Attack { name: String::new(), body_part: String::new() },
    "ATTACK_TRIGGER" => CasteTag::AttackTrigger { population: 0, exported_wealth: 0, created_wealth: 0 },
    "BABY" => CasteTag::Baby { age: 0 },
    "BABYNAME" => CasteTag::BabyName { singular: String::new(), plural: String::new() },
    "BEACH_FREQUENCY" => CasteTag::BeachFrequency { frequency: 0 },
    "BENIGN" => CasteTag::Benign,
    "BLOOD" => CasteTag::Blood { material: String::new(), state: String::new() },
    "BLOODSUCKER" => CasteTag::BloodSucker,
    "BODY" => CasteTag::Body { body_parts: Vec::new() },
    "BODY_APPEARANCE_MODIFIER" => CasteTag::BodyAppearanceModifier { attribute: String::new(), values: [0,0,0,0,0,0,0] },
    "BODY_DETAIL_PLAN" => CasteTag::BodyDetailPlan { body_plan: String::new(), arguments: Vec::new() },
    "BODY_SIZE" => CasteTag::BodySize { year: 0, days: 0, size: 0 },
    "BODYGLOSS" => CasteTag::BodyGloss { gloss: String::new() },
    "BONECARN" => CasteTag::BoneCarn,
    "BP_ADD_TYPE" => CasteTag::BodyPartAddType { body_part_type: String::new() },
    "BP_APPEARANCE_MODIFIER" => CasteTag::BodyPartAppearanceModifier { quality: String::new(), spread: [0,0,0,0,0,0,0] },
    "BP_REMOVE_TYPE" => CasteTag::BodyPartRemoveType { body_part_type: String::new() },
    "BUILDINGDESTROYER" => CasteTag::BuildingDestroyer {door_and_furniture_focused: false},
    "CAN_DO_INTERACTION" => CasteTag::CanDoInteraction { interaction: String::new() },
    "CAN_LEARN" => CasteTag::CanLearn,
    "CAN_SPEAK" => CasteTag::CanSpeak,
    "CANNOT_CLIMB" => CasteTag::CannotClimb,
    "CANNOT_JUMP" => CasteTag::CannotJump,
    "CANNOT_UNDEAD" => CasteTag::CannotUndead,
    "CANOPENDOORS" => CasteTag::CanOpenDoors,
    "CARNIVORE" => CasteTag::Carnivore,
    "CAVE_ADAPT" => CasteTag::CaveAdaptation,
    "CHANGE_BODY_SIZE_PERC" => CasteTag::ChangeBodySizePercent { percent: 0 },
    "CHILD" => CasteTag::Child { age: 0 },
    "CHILDNAME" => CasteTag::ChildName { singular: String::new(), plural: String::new() },
    "CLUTCH_SIZE" => CasteTag::ClutchSize { min: 0, max: 0 },
    "CASTE_COLOR" => CasteTag::Color { foreground: 0, background: 0, brightness: 0 },
    "COMMON_DOMESTIC" => CasteTag::CommonDomestic,
    "CONVERTED_SPOUSE" => CasteTag::ConvertedSpouse,
    "COOKABLE_LIVE" => CasteTag::CookableLive,
    "CRAZED" => CasteTag::Crazed,
    "CREATURE_CLASS" => CasteTag::CreatureClass { class: String::new() },
    "CREPUSCULAR" => CasteTag::Crepuscular,
    "CURIOUSBEAST_EATER" => CasteTag::CuriousBeastEater,
    "CURIOUSBEAST_GUZZLER" => CasteTag::CuriousBeastGuzzler,
    "CURIOUSBEAST_ITEM" => CasteTag::CuriousBeastItem,
    "CV_ADD_TAG" => CasteTag::CreatureVariationAddTag { tag: String::new() },
    "CV_REMOVE_TAG" => CasteTag::CreatureVariationRemoveTag { tag: String::new() },
    "DEMON" => CasteTag::Demon,
    "DESCRIPTION" => CasteTag::Description { description: String::new() },
    "DIE_WHEN_VERMIN_BITE" => CasteTag::DieWhenVerminBite,
    "DIFFICULTY" => CasteTag::Difficulty { difficulty: 0 },
    "DIURNAL" => CasteTag::Diurnal,
    "DIVE_HUNTS_VERMIN" => CasteTag::DiveHuntsVermin,
    "EBO_ITEM" => CasteTag::ExtraButcherObjectItem { item: String::new(), material: String::new() },
    "EBO_SHAPE" => CasteTag::ExtraButcherObjectShape { shape: String::new() },
    "EGG_MATERIAL" => CasteTag::EggMaterial { material: String::new(), state: String::new() },
    "EGG_SIZE" => CasteTag::EggSize { size: 0 },
    "EQUIPS" => CasteTag::Equips,
    "EXTRA_BUTCHER_OBJECT" => CasteTag::ExtraButcherObject { object_type: String::new(), arguments: Vec::new() },
    "EXTRACT" => CasteTag::Extract { material: String::new() },
    "EXTRAVISION" => CasteTag::Extravision,
    "FEATURE_ATTACK_GROUP" => CasteTag::FeatureAttackGroup,
    "FEATURE_BEAST" => CasteTag::FeatureBeast,
    "FEMALE" => CasteTag::Female,
    "FIREIMMUNE" => CasteTag::FireImmune,
    "FIREIMMUNE_SUPER" => CasteTag::FireImmuneSuper,
    "FISHITEM" => CasteTag::FishItem,
    "FIXED_TEMP" => CasteTag::FixedTemp { temperature: 0 },
    "FLEEQUICK" => CasteTag::FleeQuick,
    "FLIER" => CasteTag::Flier,
    "GAIT" => CasteTag::Gait { gait: String::new() },
    "GENERAL_MATERIAL_FORCE_MULTIPLIER" => CasteTag::GeneralMaterialForceMultiplier { value_a: 0, value_b: 0 },
    "GETS_INFECTIONS_FROM_ROT" => CasteTag::GetsInfectionsFromRot,
    "GETS_WOUND_INFECTIONS" => CasteTag::GetsWoundInfections,
    "CASTE_GLOWCOLOR" => CasteTag::GlowColor { foreground: 0, background: 0, brightness: 0 },
    "CASTE_GLOWTILE" => CasteTag::GlowTile { tile: String::new() },
    "GNAWER" => CasteTag::Gnawer { verb: String::new() },
    "GOBBLE_VERMIN_CLASS" => CasteTag::GobbleVerminClass { vermin_class: String::new() },
    "GOBBLE_VERMIN_CREATURE" => CasteTag::GobbleVerminCreature { vermin_creature: String::new(), vermin_caste: String::new() },
    "GRASS_TRAMPLE" => CasteTag::GrassTrample { trample: 0 },
    "GRAVITATE_BODY_SIZE" => CasteTag::GravitateBodySize { target: 0 },
    "GRAZER" => CasteTag::Grazer { grazer: 0 },
    "HABIT" => CasteTag::Habit { habit: String::new() },
    "HABIT_NUM" => CasteTag::HabitNumber { number: 0 },
    "HAS_NERVES" => CasteTag::HasNerves,
    "HASSHELL" => CasteTag::HasShell,
    "HOMEOTHERM" => CasteTag::Homeotherm { temperature: None },
    "HUNTS_VERMIN" => CasteTag::HuntsVermin,
    "IMMOBILE" => CasteTag::Immobile,
    "IMMOBILE_LAND" => CasteTag::ImmobileLand,
    "IMMOLATE" => CasteTag::Immolate,
    "INTELLIGENT" => CasteTag::Intelligent,
    "CDI" => CasteTag::InteractionDetail { args: Vec::new() },
    "ITEMCORPSE" => CasteTag::ItemCorpse { item: String::new(), material: String::new() },
    "ITEMCORPSE_QUALITY" => CasteTag::ItemCorpseQuality { quality: 0 },
    "LAIR" => CasteTag::Lair { lair: String::new(), probability: 0 },
    "LAIR_CHARACTERISTIC" => CasteTag::LairCharacteristic { characteristic: String::new() },
    "LAIR_HUNTER" => CasteTag::LairHunter,
    "LAIR_HUNTER_SPEECH" => CasteTag::LairHunterSpeech { speech_file: String::new() },
    "LARGE_PREDATOR" => CasteTag::LargePredator,
    "LAYS_EGGS" => CasteTag::LaysEggs,
    "LAYS_UNUSUAL_EGGS" => CasteTag::LaysUnusualEggs { item: String::new(), material: String::new() },
    "LIGAMENTS" => CasteTag::Ligaments { material: String::new(), healing_rate: 0 },
    "LIGHT_GEN" => CasteTag::LightGen,
    "LIKES_FIGHTING" => CasteTag::LikesFighting,
    "LISP_SPEECH" => CasteTag::Lisp,
    "LITTER_SIZE" => CasteTag::LitterSize { min: 0, max: 0 },
    "LOCKPICKER" => CasteTag::LockPicker,
    "LOW_LIGHT_VISION" => CasteTag::LowLightVision { vision: 0 },
    "MAGICAL" => CasteTag::Magical,
    "MAGMA_VISION" => CasteTag::MagmaVision,
    "MALE" => CasteTag::Male,
    "MANNERISM_LAUGH" => CasteTag::MannerismLaugh,
    "MANNERISM_SMILE" => CasteTag::MannerismSmile,
    "MANNERISM_WALK" => CasteTag::MannerismWalk,
    "MANNERISM_SIT" => CasteTag::MannerismSit,
    "MANNERISM_BREATH" => CasteTag::MannerismBreath,
    "MANNERISM_POSTURE" => CasteTag::MannerismPosture,
    "MANNERISM_STRETCH" => CasteTag::MannerismStretch,
    "MANNERISM_EYELIDS" => CasteTag::MannerismEyelids,
    "MANNERISM_FINGERS" => CasteTag::MannerismFingers { finger: String::new(), fingers: String::new() },
    "MANNERISM_NOSE" => CasteTag::MannerismNose { nose: String::new() },
    "MANNERISM_EAR" => CasteTag::MannerismEar { ear: String::new() },
    "MANNERISM_HEAD" => CasteTag::MannerismHead { head: String::new() },
    "MANNERISM_EYES" => CasteTag::MannerismEyes { eyes: String::new() },
    "MANNERISM_MOUTH" => CasteTag::MannerismMouth { mouth: String::new() },
    "MANNERISM_KNUCKLES" => CasteTag::MannerismKnuckles { knuckles: String::new() },
    "MANNERISM_LIPS" => CasteTag::MannerismLips { lips: String::new() },
    "MANNERISM_CHEEK" => CasteTag::MannerismCheek { cheek: String::new() },
    "MANNERISM_NAILS" => CasteTag::MannerismNails { nails: String::new() },
    "MANNERISM_FEET" => CasteTag::MannerismFeet { feet: String::new() },
    "MANNERISM_ARMS" => CasteTag::MannerismArms { arms: String::new() },
    "MANNERISM_HANDS" => CasteTag::MannerismHands { hands: String::new() },
    "MANNERISM_TONGUE" => CasteTag::MannerismTongue { tongue: String::new() },
    "MANNERISM_LEG" => CasteTag::MannerismLeg { leg: String::new() },
    "MATUTINAL" => CasteTag::Matutinal,
    "MAXAGE" => CasteTag::MaxAge { min: 0, max: 0 },
    "MEANDERER" => CasteTag::Meanderer,
    "MEGABEAST" => CasteTag::Megabeast,
    "MENT_ATT_CAP_PERC" => CasteTag::MentalAttributeCapPercentage { attribute: String::new(), percentage: 0 },
    "MENT_ATT_RANGE" => CasteTag::MentalAttributeRange { attribute: String::new(), ranges: [0,0,0,0,0,0,0] },
    "MENT_ATT_RATE" => CasteTag::MentalAttributeRate { attribute: String::new(), improvement_cost: 0, decay_rate_unused: 0, decay_rate_rusty: 0, decay_rate_demotion: 0 },
    "MILKABLE" => CasteTag::Milkable { material: String::new(), frequency: 0 },
    "MISCHIEVOUS" => CasteTag::Mischievous,
    "MISCHIEVIOUS" => CasteTag::Mischievous,
    "MODVALUE" => CasteTag::ModValue { value: String::new() },
    "MOUNT" => CasteTag::Mount,
    "MOUNT_EXOTIC" => CasteTag::MountExotic,
    "MULTIPART_FULL_VISION" => CasteTag::MultipartFullVision,
    "MULTIPLE_LITTER_RARE" => CasteTag::MultipleLitterRare,
    "CASTE_NAME" => CasteTag::Name { singular: String::new(), plural: String::new(), adjective: String::new() },
    "NATURAL" => CasteTag::Natural,
    "NATURAL_ANIMAL" => CasteTag::Natural,
    "NATURAL_SKILL" => CasteTag::NaturalSkill { skill: String::new(), level: 0 },
    "NIGHT_CREATURE_BOGEYMAN" => CasteTag::NightCreatureBogeyman,
    "NIGHT_CREATURE_EXPERIMENTER" => CasteTag::NightCreatureExperimenter,
    "NIGHT_CREATURE_HUNTER" => CasteTag::NightCreatureHunter,
    "NIGHT_CREATURE_NIGHTMARE" => CasteTag::NightCreatureNightmare,
    "NO_CONNECTIONS_FOR_MOVEMENT" => CasteTag::NoConnectionsForMovement,
    "NO_DIZZINESS" => CasteTag::NoDizziness,
    "NO_DRINK" => CasteTag::NoDrink,
    "NO_EAT" => CasteTag::NoEat,
    "NO_FALL" => CasteTag::NoFall,
    "NO_FEVERS" => CasteTag::NoFevers,
    "NO_GENDER" => CasteTag::NoGender,
    "NO_PHYS_ATT_GAIN" => CasteTag::NoPhysicalAttributeGain,
    "NO_PHYS_ATT_RUST" => CasteTag::NoPhysicalAttributeRust,
    "NO_SLEEP" => CasteTag::NoSleep,
    "NO_SPRING" => CasteTag::NoSpring,
    "NO_SUMMER" => CasteTag::NoSummer,
    "NO_THOUGHT_CENTER_FOR_MOVEMENT" => CasteTag::NoThoughtCenterForMovement,
    "NO_UNIT_TYPE_COLOR" => CasteTag::NoUnitTypeColor,
    "NO_VEGETATION_PERTURB" => CasteTag::NoVegetationDisturbance,
    "NO_WINTER" => CasteTag::NoWinter,
    "NOBONES" => CasteTag::NoBones,
    "NOBREATHE" => CasteTag::NoBreathe,
    "NOCTURNAL" => CasteTag::Nocturnal,
    "NOEMOTION" => CasteTag::NoEmotion,
    "NOEXERT" => CasteTag::NoExert,
    "NOFEAR" => CasteTag::NoFear,
    "NOMEAT" => CasteTag::NoMeat,
    "NONAUSEA" => CasteTag::NoNausea,
    "NOPAIN" => CasteTag::NoPain,
    "NOSKIN" => CasteTag::NoSkin,
    "NOSKULL" => CasteTag::NoSkull,
    "NOSMELLYROT" => CasteTag::NoSmellyRot,
    "NOSTUCKINS" => CasteTag::NoStuckIns,
    "NOSTUN" => CasteTag::NoStun,
    "NOT_BUTCHERABLE" => CasteTag::NotButcherable,
    "NOT_LIVING" => CasteTag::NotLiving,
    "NOTHOUGHT" => CasteTag::NoThought,
    "ODOR_LEVEL" => CasteTag::OdorLevel { odor_level: 0 },
    "ODOR_STRING" => CasteTag::OdorString { odor_string: String::new() },
    "OPPOSED_TO_LIFE" => CasteTag::OpposedToLife,
    "ORIENTATION" => CasteTag::Orientation { caste: String::new(), disinterested_chance: 0, casual_chance: 0, strong_chance: 0 },
    "OUTSIDER_CONTROLLABLE" => CasteTag::OutsiderControllable,
    "PACK_ANIMAL" => CasteTag::PackAnimal,
    "PARALYZEIMMUNE" => CasteTag::ParalyzeImmune,
    "PATTERNFLIER" => CasteTag::PatternFlier,
    "PEARL" => CasteTag::Pearl,
    "PENETRATEPOWER" => CasteTag::PenetratePower { penetrate_power: 0 },
    "PERSONALITY" => CasteTag::Personality { personality_trait: String::new(), low: 0, median: 0, high: 0 },
    "PET" => CasteTag::Pet,
    "PET_EXOTIC" => CasteTag::PetExotic,
    "PETVALUE" => CasteTag::PetValue { pet_value: 0 },
    "PETVALUE_DIVISOR" => CasteTag::PetValueDivisor { divisor: 0 },
    "PHYS_ATT_CAP_PERC" => CasteTag::PhysicalAttributeCapPercentage { attribute: String::new(), percentage: 0 },
    "PHYS_ATT_RANGE" => CasteTag::PhysicalAttributeRange { attribute: String::new(), ranges: [0,0,0,0,0,0,0] },
    "PHYS_ATT_RATE" => CasteTag::PhysicalAttributeRate { attribute: String::new(), improvement_cost: 0, decay_rate_unused: 0, decay_rate_rusty: 0, decay_rate_demotion: 0 },
    "PLUS_BP_GROUP" => CasteTag::PlusBodyPartGroup { body_part_selector: String::new(), body_part_group: String::new() },
    "POP_RATIO" => CasteTag::PopulationRatio { pop_ratio: 0 },
    "POWER" => CasteTag::Power,
    "CASTE_PROFESSION_NAME" => CasteTag::ProfessionName { profession: String::new(), singular: String::new(), plural: String::new() },
    "PRONE_TO_RAGE" => CasteTag::ProneToRage { rage_chance: 0 },
    "PUS" => CasteTag::Pus { material: String::new(), material_state: String::new() },
    "RELATIVE_SIZE" => CasteTag::RelativeSize { body_part_selector: String::new(), body_part: String::new(), relative_size: 0 },
    "REMAINS" => CasteTag::Remains { singular: String::new(), plural: String::new() },
    "REMAINS_COLOR" => CasteTag::RemainsColor { remains_color: String::new() },
    "REMAINS_ON_VERMIN_BITE_DEATH" => CasteTag::RemainsOnVerminBiteDeath,
    "REMAINS_UNDETERMINED" => CasteTag::RemainsUndetermined,
    "RETRACT_INTO_BP" => CasteTag::RetractIntoBodyPart { body_part_selector: String::new(), body_part: String::new(), second_person: String::new(), third_person: String::new(), second_person_cancel: String::new(), third_person_cancel: String::new() },
    "RETURNS_VERMIN_KILLS_TO_OWNER" => CasteTag::ReturnsVerminKillsToOwner,
    "ROOT_AROUND" => CasteTag::RootAround { body_part_selector: String::new(), body_part: String::new(), second_person_verb: String::new(), third_person_verb: String::new() },
    "SECRETION" => CasteTag::Secretion { material_token: String::new(), material_state: String::new(), body_part_selector: String::new(), body_part: String::new(), tissue_layer: String::new(), trigger: String::new() },
    "SEMIMEGABEAST" => CasteTag::SemiMegabeast,
    "SENSE_CREATURE_CLASS" => CasteTag::SenseCreatureClass { creature_class: String::new(), tile: String::new(), foreground: 0, background: 0, brightness: 0 },
    "SET_BP_GROUP" => CasteTag::SetBodyPartGroup { body_part_selector: String::new(), body_part: String::new() },
    "SKILL_LEARN_RATE" => CasteTag::SkillLearnRate { skill: String::new(), rate: 0 },
    "SKILL_LEARN_RATES" => CasteTag::SkillLearnRates { rate: 0 },
    "SKILL_RATE" => CasteTag::SkillRate { skill: String::new(), improvement_rate: 0, decay_rate_unused: 0, decay_rate_rusty: 0, decay_rate_demotion: 0 },
    "SKILL_RATES" => CasteTag::SkillRates { improvement_rate: 0, decay_rate_unused: 0, decay_rate_rusty: 0, decay_rate_demotion: 0 },
    "SKILL_RUST_RATE" => CasteTag::SkillRustRate { skill: String::new(), decay_rate_unused: 0, decay_rate_rusty: 0, decay_rate_demotion: 0 },
    "SKILL_RUST_RATES" => CasteTag::SkillRustRates { decay_rate_unused: 0, decay_rate_rusty: 0, decay_rate_demotion: 0 },
    "SLAIN_CASTE_SPEECH" => CasteTag::SlainSpeech { speech_file: String::new() },
    "SLOW_LEARNER" => CasteTag::SlowLearner,
    "SMALL_REMAINS" => CasteTag::SmallRemains,
    "CASTE_SOLDIER_TILE" => CasteTag::SoldierTile { tile: String::new() },
    "CASTE_SOLDIER_ALTTILE" => CasteTag::SoldierAltTile { tile: String::new() },
    "SOUND" => CasteTag::Sound { sound_type: String::new(), sound_range: 0, sound_interval: 0, requires_breathing: false, first_person: String::new(), third_person: String::new(), out_of_sight: String::new() },
    "SPECIFIC_FOOD" => CasteTag::SpecificFood { food_type: ObjectType::Unknown, identifier: String::new() },
    "SPOUSE_CONVERSION_TARGET" => CasteTag::SpouseConversionTarget,
    "SPOUSE_CONVERTER" => CasteTag::SpouseConverter,
    "SPREAD_EVIL_SPHERES_IF_RULER" => CasteTag::SpreadEvilSpheresIfRuler,
    "STANCE_CLIMBER" => CasteTag::StanceClimber,
    "STANDARD_GRAZER" => CasteTag::StandardGrazer,
    "STRANGE_MOODS" => CasteTag::StrangeMoods,
    "SUPERNATURAL" => CasteTag::Supernatural,
    "SWIMS_INNATE" => CasteTag::SwimsInnate,
    "SWIMS_LEARNED" => CasteTag::SwimsLearned,
    "SYNDROME_DILUTION_FACTURE" => CasteTag::SyndromeDilutionFactor { syndrome: String::new(), percentage: 0 },
    "TENDONS" => CasteTag::Tendons { material: String::new(), healing_rate: 0 },
    "THICKWEB" => CasteTag::ThickWeb,
    "CASTE_TILE" => CasteTag::Tile { tile: String::new() },
    "TISSUE_LAYER" => CasteTag::TissueLayer { body_part_selector: String::new(), body_part: String::new(), tissue: String::new(), location: String::new() },
    "TISSUE_LAYER_OVER" => CasteTag::TissueLayer { body_part_selector: String::new(), body_part: String::new(), tissue: String::new(), location: String::new() },
    "TISSUE_LAYER_UNDER" => CasteTag::TissueLayerUnder { body_part_selector: String::new(), body_part: String::new(), tissue: String::new() },
    "TITAN" => CasteTag::Titan,
    "TRADE_CAPACITY" => CasteTag::TradeCapacity { capacity: 0 },
    "TRAINABLE" => CasteTag::Trainable,
    "TRAINABLE_HUNTING" => CasteTag::TrainableHunting,
    "TRAINABLE_WAR" => CasteTag::TrainableWar,
    "TRANCES" => CasteTag::Trances,
    "TRAPAVOID" => CasteTag::TrapAvoid,
    "UNDERSWIM" => CasteTag::UnderSwim,
    "UNIQUE_DEMON" => CasteTag::UniqueDemon,
    "VEGETATION" => CasteTag::Vegetation,
    "VERMIN_BITE" => CasteTag::VerminBite { chance: 0, verb: String::new(), material: String::new(), material_state: String::new() },
    "VERMIN_HATEABLE" => CasteTag::VerminHateable,
    "VERMIN_MICRO" => CasteTag::VerminMicro,
    "VERMIN_NOFISH" => CasteTag::VerminNoFish,
    "VERMIN_NOROAM" => CasteTag::VerminNoRoam,
    "VERMIN_NOTRAP" => CasteTag::VerminNoTrap,
    "VERMINHUNTER" => CasteTag::VerminHunter,
    "VESPERTINE" => CasteTag::Vespertine,
    "VIEWRANGE" => CasteTag::ViewRange { view_range: 0 },
    "VISION_ARC" => CasteTag::VisionArc { binocular: 0, non_binocular: 0 },
    "WAGON_PULLER" => CasteTag::WagonPuller,
    "WEBBER" => CasteTag::Webber { material: String::new() },
    "WEBIMMUNE" => CasteTag::WebImmune,
};