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/cyber_defense_capability.rs ]
crate::ix!();

#[derive(Copy,EnumIter,Debug, Clone, PartialEq, Eq, Hash)]
pub enum WarriorCyberDefenseCapability {
    /// Chosen for entities whose vigilance and awareness consistently detect threats early,
    /// enabling proactive adjustments to defensive measures.
    CybersecuritySavvyAndDigitallyVigilant,

    /// Assigned when an entity quickly initiates effective defense protocols upon recognizing threats,
    /// significantly reducing potential damage through rapid intervention.
    ProactivelyResponsiveToDigitalThreats,

    /// Ideal for entities adept at instantly neutralizing malware or intrusions in real time,
    /// ensuring minimal operational disruption.
    CapableOfRealTimeMalwareNeutralization,

    /// Selected when an entity prioritizes secure communications,
    /// crucial for missions where data integrity and confidentiality are paramount.
    ProficientInCommunicationEncryption,

    /// Applied to entities proficient at using automated countermeasures,
    /// especially beneficial in environments where manual responses are impractical or too slow.
    AdeptAtDeployingAutonomousIntrusionCountermeasures,

    /// Optimal for entities tasked with continuously securing critical systems against evolving threats,
    /// ensuring robust and adaptive long-term cyber resilience.
    SkilledAtAdaptiveSystemHardening,

    /// Suitable for entities that must remain operationally secure and stable under continuous or severe cyberattacks,
    /// ensuring mission-critical tasks can persist uninterrupted.
    VigilantInOperationalSecurityUnderCyberAttack,

    /// Ideal when an entity must rapidly identify and address previously unknown vulnerabilities,
    /// especially valuable in high-stakes or dynamic threat environments.
    CompetentAtZeroDayVulnerabilityMitigation,

    /// Assigned to entities skilled at acquiring, interpreting, and leveraging threat intelligence,
    /// essential for strategic decision-making and preemptive cyber defense.
    ExpertAtDigitalThreatIntelligenceGathering,

    /// Chosen when an entity excels at swiftly and securely recovering from cyber incidents,
    /// minimizing downtime and ensuring swift operational restoration.
    SkilledInSecurePostIncidentRecovery,
}

impl WarriorCyberDefenseCapability {
    #[instrument(level = "trace", skip(self))]
    pub fn intrinsic_dimension_ratings(&self) -> WarriorCapabilityIntrinsicDimensionRatings {
        use WarriorCyberDefenseCapability::*;
        tracing::trace!(
            target: "intrinsic_ratings",
            ?self,
            "Generating ratings for cyber‑defense capability"
        );
        match self {
            CybersecuritySavvyAndDigitallyVigilant => wc_ratings!(
                /*  1‑10  */ 0.00, 0.00, 0.40, 0.20, 0.00, 0.40, 0.00, 0.60, 0.70, 0.40,
                /* 11‑20  */ 0.20, 0.50, 0.60, 0.00, 0.30, 0.40, 0.50, 0.20, 0.60, 0.00,
                /* 21‑30  */ 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.20, 0.55, 0.00,
                /* 31‑40  */ 0.60, 0.30, 0.00, 0.00, 0.00, 0.60, 0.80, 0.00, 0.70, 0.00,
                /* 41‑50  */ 0.00, 0.00, 0.60, 0.00, 0.00, 0.60, 0.30, 0.00, 0.00, 0.00,
                /* 51‑60  */ 0.60, 0.50, 0.50, 0.40, 0.50, 0.00, 0.60, 0.50, 0.75, 0.60,
                /* 61‑70  */ 0.60, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50,
                /* 71‑80  */ 0.60, 0.65, 0.00, 0.75, 0.50, 0.00, 0.00, 0.00, 0.30, 0.40,
                /* 81‑90  */ 0.00, 0.40, 0.55, 0.60, 0.70, 0.85, 0.55, 0.50, 0.60, 0.50,
                /* 91‑100 */ 0.00, 0.20, 0.50, 0.40, 0.60, 0.00, 0.20, 0.60, 0.40, 0.40,
                /*101‑115*/ 0.60, 0.30, 0.30, 0.30, 0.60, 0.40, 0.50, 0.60, 0.60, 0.70,
                               0.60, 0.60, 0.55, 0.60, 0.70
            ),

            ProactivelyResponsiveToDigitalThreats => wc_ratings!(
                0.00, 0.00, 0.50, 0.00, 0.00, 0.50, 0.00, 0.60, 0.00, 0.70,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.60, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.70, 0.00, 0.70, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.60, 0.55, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
                0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.60, 0.60, 0.60, 0.70, 0.90, 0.70, 0.00, 0.70,
                0.00, 0.20, 0.40, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.60, 0.60, 0.70,
                               0.60, 0.60, 0.00, 0.00, 0.65
            ),

            CapableOfRealTimeMalwareNeutralization => wc_ratings!(
                0.00, 0.00, 0.45, 0.00, 0.00, 0.55, 0.00, 0.65, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00,
                0.60, 0.55, 0.35, 0.00, 0.00, 0.00, 0.00, 0.00, 0.55, 0.00,
                0.85, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.70, 0.60, 0.60, 0.65, 0.75, 0.95, 0.00, 0.60,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.50, 0.60, 0.60, 0.60,
                               0.00, 0.00, 0.00, 0.00, 0.60
            ),

            ProficientInCommunicationEncryption => wc_ratings!(
                0.00, 0.00, 0.45, 0.00, 0.00, 0.50, 0.00, 0.60, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.55, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
                0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.55, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.60, 0.55, 0.70, 0.65, 0.55, 0.00, 0.90, 0.60,
                0.00, 0.00, 0.00, 0.00, 0.55, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.55, 0.55, 0.55,
                               0.00, 0.00, 0.00, 0.00, 0.55
            ),

            AdeptAtDeployingAutonomousIntrusionCountermeasures => wc_ratings!(
                0.00, 0.00, 0.40, 0.00, 0.00, 0.60, 0.00, 0.70, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.60, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
                0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.75, 0.60, 0.70, 0.70, 0.65, 0.00, 0.00, 0.90,
                0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.65, 0.65, 0.65,
                               0.60, 0.60, 0.55, 0.60, 0.65
            ),

            SkilledAtAdaptiveSystemHardening => wc_ratings!(
                0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.60, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.60, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.60, 0.00, 0.00, 0.80, 0.00, 0.70, 0.00, 0.60, 0.00,
                0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.75, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.85, 0.60, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.55, 0.70, 0.70, 0.70,
                               0.60, 0.60, 0.60, 0.60, 0.70
            ),

            VigilantInOperationalSecurityUnderCyberAttack => wc_ratings!(
                0.00, 0.00, 0.50, 0.00, 0.00, 0.75, 0.00, 0.60, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.70, 0.00, 0.75, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.65, 0.00,
                0.65, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.65, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.80, 0.60, 0.90, 0.75, 0.00, 0.00, 0.00, 0.60,
                0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.55, 0.70, 0.70, 0.80,
                               0.60, 0.70, 0.60, 0.60, 0.80
            ),

            CompetentAtZeroDayVulnerabilityMitigation => wc_ratings!(
                0.00, 0.00, 0.70, 0.00, 0.00, 0.70, 0.00, 0.70, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.00, 0.00, 0.75, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.70, 0.00,
                0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.70, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.80, 0.85, 0.75, 0.80, 0.80, 0.70, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.60, 0.55, 0.60, 0.70, 0.70, 0.80,
                               0.60, 0.60, 0.60, 0.60, 0.65
            ),

            ExpertAtDigitalThreatIntelligenceGathering => wc_ratings!(
                0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.40, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.80, 0.00,
                0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.70, 0.70, 0.70, 0.90, 0.00, 0.00, 0.65, 0.00,
                0.00, 0.40, 0.75, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.75, 0.60, 0.55, 0.70, 0.70, 0.75,
                               0.60, 0.70, 0.60, 0.60, 0.60
            ),

            SkilledInSecurePostIncidentRecovery => wc_ratings!(
                0.00, 0.00, 0.60, 0.00, 0.00, 0.85, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.60, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00,
                0.70, 0.00, 0.00, 0.00, 0.80, 0.00, 0.80, 0.00, 0.70, 0.00,
                0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.70, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
                0.00, 0.00, 0.85, 0.60, 0.75, 0.00, 0.65, 0.60, 0.00, 0.00,
                0.00, 0.00, 0.00, 0.00, 0.75, 0.60, 0.55, 0.70, 0.70, 0.80,
                0.60, 0.70, 0.60, 0.60, 0.60, 0.60, 0.60, 0.60, 0.60, 0.75,
                               0.60, 0.75, 0.60, 0.60, 0.85
            ),
        }
    }
}