character-traits-warrior-capability 0.1.0

A Rust crate for modeling and simulating a broad spectrum of warrior capabilities, aimed at enhancing intricate game mechanics and strategic simulations.
Documentation
// ---------------- [ File: character-traits-warrior-capability/src/tech_adaptation_capability.rs ]
crate::ix!();

#[derive(Copy,EnumIter,Debug, Clone, PartialEq, Eq, Hash)]
pub enum WarriorTechAdaptationCapability {
    /// Ideal when the warrior consistently excels at rapidly understanding, implementing, and adapting defensive technologies to neutralize evolving threats.
    SkilledInTechnologicalDefenseAndAdaptation,

    /// Optimal for warriors who systematically enhance their combat effectiveness by swiftly integrating and mastering the latest weapon advancements, maintaining technological superiority.
    IntegratesCuttingEdgeWeaponUpgrades,

    /// Selected when a warrior frequently customizes or dynamically alters their equipment and technological tools, precisely aligning resources with mission-specific objectives and constraints.
    ReconfiguresEquipmentForMissionNeeds,

    /// Appropriate for warriors who demonstrate exceptional proficiency in seizing, repurposing, and effectively deploying captured or enemy-developed technology to enhance operational capability.
    CommandeersEnemyTechnologyEfficiently,

    /// Suited for warriors who rigorously enforce digital discipline, protocols, and cybersecurity practices, continuously safeguarding operational integrity against digital espionage or sabotage.
    MaintainsOperationalSecurityInDigitalSpace,

    /// Chosen when the warrior rapidly prototypes and deploys innovative tactical technological solutions under tight time constraints, enabling unconventional tactical breakthroughs.
    RapidTacticalInnovationAndPrototyping,

    /// Ideal for warriors who excel at seamlessly integrating diverse technological systems, ensuring interoperability and optimized performance in complex operational environments.
    IntegratesAndOptimizesDiverseTechnologicalSystems,

    /// Selected for warriors adept at swiftly adapting technological assets to environmental extremes or hostile operational contexts, ensuring mission success under adverse conditions.
    AdaptsTechnologyForExtremeEnvironments,

    /// Suited for warriors proficient in quickly diagnosing and repairing complex technological failures mid-operation, ensuring minimal disruption to mission objectives.
    RealTimeTechnologicalTroubleshooting,

    /// Optimal for warriors who effectively forecast technological trends and preemptively position their resources to maintain strategic technological advantage over adversaries.
    StrategicTechnologyForesightAndPositioning,

    /// Appropriate for warriors who specialize in embedding stealth and low-signature characteristics into technological systems, enhancing operational concealment and surprise.
    ImplementsStealthAndSignatureReductionTechnologies,

    /// Ideal for warriors proficient in training allies rapidly on newly adopted or adapted technologies, multiplying force effectiveness in coalition or joint-force contexts.
    EfficientTechnologicalKnowledgeTransfer,
}

#[allow(clippy::too_many_lines)]
impl WarriorTechAdaptationCapability {
    /// Compute the intrinsic‐dimension ratings that characterize how each
    /// `WarriorTechAdaptationCapability` variant differs along the
    /// orthogonal capability basis captured by
    /// `WarriorCapabilityIntrinsicDimensionRatings`.
    #[instrument(level = "trace", skip(self))]
    pub fn intrinsic_dimension_ratings(&self) -> WarriorCapabilityIntrinsicDimensionRatings {
        use WarriorTechAdaptationCapability::*;

        match self {
            /* ---------------------------------------------------------------
               Excels at adaptive defensive technologies
            --------------------------------------------------------------- */
            SkilledInTechnologicalDefenseAndAdaptation => {
                tracing::trace!(
                    "computing ratings for SkilledInTechnologicalDefenseAndAdaptation"
                );
                wc_ratings!(
                    /*  1‑10  */ 0.00,0.25,0.25,0.25,0.25,0.65,0.00,0.90,0.25,0.50,
                    /* 11‑20  */ 0.40,0.25,0.60,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    /* 21‑30  */ 0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.60,0.25,
                    /* 31‑40  */ 0.25,0.25,0.25,0.25,0.00,0.60,0.60,0.25,0.60,0.25,
                    /* 41‑50  */ 0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
                    /* 51‑60  */ 0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.60,0.25,
                    /* 61‑70  */ 0.70,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    /* 71‑80  */ 0.25,0.60,0.00,0.60,0.25,0.25,0.00,0.00,0.25,0.25,
                    /* 81‑90  */ 0.25,0.25,0.85,0.70,0.80,0.80,0.80,0.75,0.75,0.75,
                    /* 91‑100 */ 0.25,0.25,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
                    /* 101‑115*/ 0.60,0.30,0.30,0.50,0.40,0.40,0.50,0.45,0.60,0.70,
                                 0.60,0.60,0.50,0.40,0.70
                )
            }

            /* ---------------------------------------------------------------
               Maintains technological superiority through weapon upgrades
            --------------------------------------------------------------- */
            IntegratesCuttingEdgeWeaponUpgrades => {
                tracing::trace!("computing ratings for IntegratesCuttingEdgeWeaponUpgrades");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.50,0.25,0.00,0.90,0.25,0.60,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.50,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,0.60,
                    0.25,0.25,0.25,0.25,0.00,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.80,0.80,0.60,0.80,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,0.25,
                    0.80,0.25,0.00,0.00,0.25,0.00,0.00,0.80,0.70,0.00,
                    0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
                    0.25,0.25,0.50,0.60,0.60,0.70,0.70,0.60,0.60,0.60,
                    0.25,0.25,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
                    0.60,0.60,0.30,0.50,0.40,0.40,0.50,0.45,0.60,0.70,
                    0.60,0.60,0.60,0.60,0.60
                )
            }

            /* ---------------------------------------------------------------
               Reconfigures equipment to fit mission constraints
            --------------------------------------------------------------- */
            ReconfiguresEquipmentForMissionNeeds => {
                tracing::trace!("computing ratings for ReconfiguresEquipmentForMissionNeeds");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.75,0.25,0.50,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.80,0.25,0.25,0.25,0.80,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.60,0.60,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
                    0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.60,0.70,0.80,
                    0.60,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
                    0.25,0.25,0.60,0.70,0.60,0.60,0.60,0.60,0.60,0.70,
                    0.25,0.25,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
                    0.70,0.25,0.25,0.55,0.40,0.40,0.65,0.60,0.80,0.75,
                    0.60,0.85,0.70,0.75,0.75
                )
            }

            /* ---------------------------------------------------------------
               Seizes and repurposes enemy technology
            --------------------------------------------------------------- */
            CommandeersEnemyTechnologyEfficiently => {
                tracing::trace!("computing ratings for CommandeersEnemyTechnologyEfficiently");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.85,0.25,0.60,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.70,0.25,0.75,0.90,0.25,0.25,0.75,0.80,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.60,0.60,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
                    0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.60,0.25,
                    0.70,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.75,0.70,
                    0.25,0.25,0.60,0.70,0.70,0.75,0.75,0.70,0.70,0.60,
                    0.30,0.35,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
                    0.60,0.30,0.30,0.55,0.40,0.40,0.60,0.55,0.65,0.70,
                    0.65,0.65,0.60,0.60,0.60
                )
            }

            /* ---------------------------------------------------------------
               Exemplary cyber‑defence & operational security
            --------------------------------------------------------------- */
            MaintainsOperationalSecurityInDigitalSpace => {
                tracing::trace!("computing ratings for MaintainsOperationalSecurityInDigitalSpace");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.70,0.25,0.30,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.20,0.25,0.25,0.25,0.60,0.20,0.25,0.25,0.25,0.20,
                    0.25,0.25,0.25,0.25,0.00,0.70,0.70,0.20,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,
                    0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.70,0.25,
                    0.60,0.85,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.70,0.25,0.25,0.00,0.00,0.25,0.25,
                    0.25,0.25,0.90,0.90,0.90,0.85,0.80,0.80,0.90,0.80,
                    0.25,0.25,0.65,0.30,0.65,0.30,0.30,0.40,0.40,0.30,
                    0.60,0.30,0.30,0.50,0.40,0.45,0.60,0.55,0.60,0.60,
                    0.70,0.70,0.60,0.60,0.70
                )
            }

            /* ---------------------------------------------------------------
               Rapid tactical innovation & prototyping
            --------------------------------------------------------------- */
            RapidTacticalInnovationAndPrototyping => {
                tracing::trace!("computing ratings for RapidTacticalInnovationAndPrototyping");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.65,0.00,0.85,0.25,0.65,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.80,0.25,0.25,0.25,0.70,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.70,0.60,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.90,0.25,0.25,0.25,0.25,
                    0.60,0.65,0.25,0.25,0.70,0.25,0.25,0.75,0.75,0.90,
                    0.70,0.25,0.00,0.00,0.25,0.00,0.00,1.00,0.70,0.00,
                    0.25,0.25,0.00,0.60,0.25,0.25,0.00,0.00,0.35,0.25,
                    0.25,0.25,0.70,0.90,0.85,0.85,0.85,0.80,0.80,0.70,
                    0.25,0.25,0.65,0.30,0.65,0.30,0.30,0.40,0.40,0.30,
                    0.80,0.30,0.30,0.55,0.45,0.45,0.65,0.60,0.75,0.90,
                    0.60,0.70,0.80,0.70,0.70
                )
            }

            /* ---------------------------------------------------------------
               Integrates diverse technological systems
            --------------------------------------------------------------- */
            IntegratesAndOptimizesDiverseTechnologicalSystems => {
                tracing::trace!(
                    "computing ratings for IntegratesAndOptimizesDiverseTechnologicalSystems"
                );
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.90,0.25,0.50,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.80,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.80,0.70,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
                    0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.70,0.25,
                    0.60,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.85,
                    0.25,0.60,0.70,0.70,0.75,0.75,0.75,0.70,0.75,0.60,
                    0.80,0.25,0.80,0.30,0.70,0.30,0.30,0.40,0.40,0.30,
                    0.65,0.30,0.30,0.55,0.45,0.45,0.60,0.55,0.85,0.75,
                    0.70,0.75,0.60,0.60,0.65
                )
            }

            /* ---------------------------------------------------------------
               Technology adaptation for extreme environments
            --------------------------------------------------------------- */
            AdaptsTechnologyForExtremeEnvironments => {
                tracing::trace!("computing ratings for AdaptsTechnologyForExtremeEnvironments");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.75,0.00,0.80,0.25,0.50,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.85,0.25,
                    0.25,0.25,0.85,0.25,0.00,0.60,0.70,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.60,0.80,0.25,0.70,0.25,
                    0.70,0.70,0.25,0.25,0.85,0.25,0.25,0.70,0.70,0.25,
                    0.75,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
                    0.25,0.60,0.90,0.60,0.70,0.75,0.70,0.70,0.70,0.75,
                    0.25,0.25,0.70,0.30,0.65,0.30,0.30,0.50,0.50,0.30,
                    0.75,0.30,0.30,0.60,0.50,0.50,0.70,0.60,0.70,0.75,
                    0.90,0.80,0.75,0.90,0.75
                )
            }

            /* ---------------------------------------------------------------
               Real‑time technological troubleshooting
            --------------------------------------------------------------- */
            RealTimeTechnologicalTroubleshooting => {
                tracing::trace!("computing ratings for RealTimeTechnologicalTroubleshooting");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.70,0.00,0.80,0.25,0.50,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.85,0.25,0.25,0.25,0.80,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.60,0.70,0.25,0.70,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.75,0.25,0.25,0.25,0.25,
                    0.80,0.80,0.25,0.25,0.80,0.25,0.25,0.70,0.80,0.80,
                    0.60,0.30,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.50,0.25,0.25,0.00,0.00,0.25,0.25,
                    0.25,0.70,0.70,0.75,0.70,0.70,0.70,0.70,0.70,0.70,
                    0.25,0.25,0.65,0.30,0.60,0.30,0.30,0.50,0.50,0.30,
                    0.85,0.30,0.30,0.55,0.45,0.45,0.70,0.65,0.70,0.80,
                    0.70,0.80,0.70,0.80,0.80
                )
            }

            /* ---------------------------------------------------------------
               Strategic technology foresight & positioning
            --------------------------------------------------------------- */
            StrategicTechnologyForesightAndPositioning => {
                tracing::trace!("computing ratings for StrategicTechnologyForesightAndPositioning");
                wc_ratings!(
                    0.25,0.25,0.90,0.25,0.25,0.60,0.00,0.85,0.25,0.50,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.75,0.25,0.25,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.70,0.70,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
                    0.60,0.60,0.25,0.25,0.75,0.25,0.25,0.65,0.80,0.25,
                    0.70,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.50,0.25,0.25,0.00,0.00,0.25,0.25,
                    0.25,0.25,0.75,0.80,0.75,0.75,0.75,0.75,0.75,0.65,
                    0.25,0.25,0.85,0.30,0.85,0.30,0.30,0.40,0.40,0.30,
                    0.75,0.30,0.30,0.55,0.45,0.45,0.70,0.60,0.85,0.90,
                    0.75,0.85,0.65,0.90,0.65
                )
            }

            /* ---------------------------------------------------------------
               Stealth & signature reduction technologies
            --------------------------------------------------------------- */
            ImplementsStealthAndSignatureReductionTechnologies => {
                tracing::trace!(
                    "computing ratings for ImplementsStealthAndSignatureReductionTechnologies"
                );
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.80,0.25,0.50,
                    0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.75,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.70,0.75,0.20,0.60,0.25,
                    0.25,0.25,0.70,0.70,0.60,0.60,0.25,0.25,0.25,0.25,
                    0.60,0.60,0.25,0.25,0.65,0.25,0.25,0.55,0.75,0.30,
                    0.60,0.25,0.00,0.00,0.50,0.00,0.00,0.70,0.60,0.85,
                    0.60,0.70,0.00,0.25,0.25,0.70,0.00,0.00,0.80,0.85,
                    0.60,0.70,0.70,0.75,0.80,0.70,0.70,0.65,0.70,0.65,
                    0.25,0.25,0.70,0.30,0.65,0.30,0.30,0.40,0.40,0.30,
                    0.65,0.30,0.30,0.55,0.45,0.45,0.70,0.60,0.75,0.80,
                    0.90,0.85,0.70,0.90,0.65
                )
            }

            /* ---------------------------------------------------------------
               Rapidly transfers tech knowledge to allies
            --------------------------------------------------------------- */
            EfficientTechnologicalKnowledgeTransfer => {
                tracing::trace!("computing ratings for EfficientTechnologicalKnowledgeTransfer");
                wc_ratings!(
                    0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.75,0.25,0.50,
                    0.25,0.25,0.25,0.25,0.25,0.80,0.70,0.25,0.25,0.25,
                    0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.00,0.65,0.60,0.25,0.60,0.25,
                    0.25,0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,
                    0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.65,0.70,0.25,
                    0.60,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
                    0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
                    0.25,0.25,0.70,0.60,0.75,0.70,0.70,0.75,0.75,0.70,
                    0.25,0.90,0.75,0.30,0.70,0.30,0.30,0.50,0.50,0.30,
                    0.70,0.85,0.85,0.50,0.45,0.45,0.75,0.60,0.75,0.75,
                    0.75,0.75,0.60,0.75,0.60
                )
            }
        }
    }
}