1crate::ix!();
3
4#[derive(Copy,EnumIter,Debug, Clone, PartialEq, Eq, Hash)]
5pub enum WarriorTechAdaptationCapability {
6 SkilledInTechnologicalDefenseAndAdaptation,
8
9 IntegratesCuttingEdgeWeaponUpgrades,
11
12 ReconfiguresEquipmentForMissionNeeds,
14
15 CommandeersEnemyTechnologyEfficiently,
17
18 MaintainsOperationalSecurityInDigitalSpace,
20
21 RapidTacticalInnovationAndPrototyping,
23
24 IntegratesAndOptimizesDiverseTechnologicalSystems,
26
27 AdaptsTechnologyForExtremeEnvironments,
29
30 RealTimeTechnologicalTroubleshooting,
32
33 StrategicTechnologyForesightAndPositioning,
35
36 ImplementsStealthAndSignatureReductionTechnologies,
38
39 EfficientTechnologicalKnowledgeTransfer,
41}
42
43#[allow(clippy::too_many_lines)]
44impl WarriorTechAdaptationCapability {
45 #[instrument(level = "trace", skip(self))]
50 pub fn intrinsic_dimension_ratings(&self) -> WarriorCapabilityIntrinsicDimensionRatings {
51 use WarriorTechAdaptationCapability::*;
52
53 match self {
54 SkilledInTechnologicalDefenseAndAdaptation => {
58 tracing::trace!(
59 "computing ratings for SkilledInTechnologicalDefenseAndAdaptation"
60 );
61 wc_ratings!(
62 0.00,0.25,0.25,0.25,0.25,0.65,0.00,0.90,0.25,0.50,
63 0.40,0.25,0.60,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
64 0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.60,0.25,
65 0.25,0.25,0.25,0.25,0.00,0.60,0.60,0.25,0.60,0.25,
66 0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
67 0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.60,0.25,
68 0.70,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
69 0.25,0.60,0.00,0.60,0.25,0.25,0.00,0.00,0.25,0.25,
70 0.25,0.25,0.85,0.70,0.80,0.80,0.80,0.75,0.75,0.75,
71 0.25,0.25,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
72 0.60,0.30,0.30,0.50,0.40,0.40,0.50,0.45,0.60,0.70,
73 0.60,0.60,0.50,0.40,0.70
74 )
75 }
76
77 IntegratesCuttingEdgeWeaponUpgrades => {
81 tracing::trace!("computing ratings for IntegratesCuttingEdgeWeaponUpgrades");
82 wc_ratings!(
83 0.25,0.25,0.25,0.25,0.50,0.25,0.00,0.90,0.25,0.60,
84 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
85 0.50,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,0.60,
86 0.25,0.25,0.25,0.25,0.00,0.25,0.25,0.25,0.25,0.25,
87 0.25,0.25,0.80,0.80,0.60,0.80,0.25,0.25,0.25,0.25,
88 0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,0.25,
89 0.80,0.25,0.00,0.00,0.25,0.00,0.00,0.80,0.70,0.00,
90 0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
91 0.25,0.25,0.50,0.60,0.60,0.70,0.70,0.60,0.60,0.60,
92 0.25,0.25,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
93 0.60,0.60,0.30,0.50,0.40,0.40,0.50,0.45,0.60,0.70,
94 0.60,0.60,0.60,0.60,0.60
95 )
96 }
97
98 ReconfiguresEquipmentForMissionNeeds => {
102 tracing::trace!("computing ratings for ReconfiguresEquipmentForMissionNeeds");
103 wc_ratings!(
104 0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.75,0.25,0.50,
105 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
106 0.25,0.25,0.25,0.25,0.80,0.25,0.25,0.25,0.80,0.25,
107 0.25,0.25,0.25,0.25,0.00,0.60,0.60,0.25,0.25,0.25,
108 0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
109 0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.60,0.70,0.80,
110 0.60,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
111 0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
112 0.25,0.25,0.60,0.70,0.60,0.60,0.60,0.60,0.60,0.70,
113 0.25,0.25,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
114 0.70,0.25,0.25,0.55,0.40,0.40,0.65,0.60,0.80,0.75,
115 0.60,0.85,0.70,0.75,0.75
116 )
117 }
118
119 CommandeersEnemyTechnologyEfficiently => {
123 tracing::trace!("computing ratings for CommandeersEnemyTechnologyEfficiently");
124 wc_ratings!(
125 0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.85,0.25,0.60,
126 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
127 0.25,0.70,0.25,0.75,0.90,0.25,0.25,0.75,0.80,0.25,
128 0.25,0.25,0.25,0.25,0.00,0.60,0.60,0.25,0.60,0.25,
129 0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
130 0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.60,0.25,
131 0.70,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
132 0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.75,0.70,
133 0.25,0.25,0.60,0.70,0.70,0.75,0.75,0.70,0.70,0.60,
134 0.30,0.35,0.60,0.30,0.60,0.30,0.30,0.40,0.40,0.30,
135 0.60,0.30,0.30,0.55,0.40,0.40,0.60,0.55,0.65,0.70,
136 0.65,0.65,0.60,0.60,0.60
137 )
138 }
139
140 MaintainsOperationalSecurityInDigitalSpace => {
144 tracing::trace!("computing ratings for MaintainsOperationalSecurityInDigitalSpace");
145 wc_ratings!(
146 0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.70,0.25,0.30,
147 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
148 0.20,0.25,0.25,0.25,0.60,0.20,0.25,0.25,0.25,0.20,
149 0.25,0.25,0.25,0.25,0.00,0.70,0.70,0.20,0.60,0.25,
150 0.25,0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,
151 0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.70,0.25,
152 0.60,0.85,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
153 0.25,0.25,0.00,0.70,0.25,0.25,0.00,0.00,0.25,0.25,
154 0.25,0.25,0.90,0.90,0.90,0.85,0.80,0.80,0.90,0.80,
155 0.25,0.25,0.65,0.30,0.65,0.30,0.30,0.40,0.40,0.30,
156 0.60,0.30,0.30,0.50,0.40,0.45,0.60,0.55,0.60,0.60,
157 0.70,0.70,0.60,0.60,0.70
158 )
159 }
160
161 RapidTacticalInnovationAndPrototyping => {
165 tracing::trace!("computing ratings for RapidTacticalInnovationAndPrototyping");
166 wc_ratings!(
167 0.25,0.25,0.25,0.25,0.25,0.65,0.00,0.85,0.25,0.65,
168 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
169 0.25,0.25,0.25,0.25,0.80,0.25,0.25,0.25,0.70,0.25,
170 0.25,0.25,0.25,0.25,0.00,0.70,0.60,0.25,0.60,0.25,
171 0.25,0.25,0.25,0.25,0.25,0.90,0.25,0.25,0.25,0.25,
172 0.60,0.65,0.25,0.25,0.70,0.25,0.25,0.75,0.75,0.90,
173 0.70,0.25,0.00,0.00,0.25,0.00,0.00,1.00,0.70,0.00,
174 0.25,0.25,0.00,0.60,0.25,0.25,0.00,0.00,0.35,0.25,
175 0.25,0.25,0.70,0.90,0.85,0.85,0.85,0.80,0.80,0.70,
176 0.25,0.25,0.65,0.30,0.65,0.30,0.30,0.40,0.40,0.30,
177 0.80,0.30,0.30,0.55,0.45,0.45,0.65,0.60,0.75,0.90,
178 0.60,0.70,0.80,0.70,0.70
179 )
180 }
181
182 IntegratesAndOptimizesDiverseTechnologicalSystems => {
186 tracing::trace!(
187 "computing ratings for IntegratesAndOptimizesDiverseTechnologicalSystems"
188 );
189 wc_ratings!(
190 0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.90,0.25,0.50,
191 0.25,0.25,0.25,0.25,0.25,0.25,0.80,0.25,0.25,0.25,
192 0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.60,0.25,
193 0.25,0.25,0.25,0.25,0.00,0.80,0.70,0.25,0.60,0.25,
194 0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
195 0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.55,0.70,0.25,
196 0.60,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
197 0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.85,
198 0.25,0.60,0.70,0.70,0.75,0.75,0.75,0.70,0.75,0.60,
199 0.80,0.25,0.80,0.30,0.70,0.30,0.30,0.40,0.40,0.30,
200 0.65,0.30,0.30,0.55,0.45,0.45,0.60,0.55,0.85,0.75,
201 0.70,0.75,0.60,0.60,0.65
202 )
203 }
204
205 AdaptsTechnologyForExtremeEnvironments => {
209 tracing::trace!("computing ratings for AdaptsTechnologyForExtremeEnvironments");
210 wc_ratings!(
211 0.25,0.25,0.25,0.25,0.25,0.75,0.00,0.80,0.25,0.50,
212 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
213 0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.85,0.25,
214 0.25,0.25,0.85,0.25,0.00,0.60,0.70,0.25,0.60,0.25,
215 0.25,0.25,0.25,0.25,0.25,0.60,0.80,0.25,0.70,0.25,
216 0.70,0.70,0.25,0.25,0.85,0.25,0.25,0.70,0.70,0.25,
217 0.75,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
218 0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
219 0.25,0.60,0.90,0.60,0.70,0.75,0.70,0.70,0.70,0.75,
220 0.25,0.25,0.70,0.30,0.65,0.30,0.30,0.50,0.50,0.30,
221 0.75,0.30,0.30,0.60,0.50,0.50,0.70,0.60,0.70,0.75,
222 0.90,0.80,0.75,0.90,0.75
223 )
224 }
225
226 RealTimeTechnologicalTroubleshooting => {
230 tracing::trace!("computing ratings for RealTimeTechnologicalTroubleshooting");
231 wc_ratings!(
232 0.25,0.25,0.25,0.25,0.25,0.70,0.00,0.80,0.25,0.50,
233 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
234 0.25,0.25,0.25,0.25,0.85,0.25,0.25,0.25,0.80,0.25,
235 0.25,0.25,0.25,0.25,0.00,0.60,0.70,0.25,0.70,0.25,
236 0.25,0.25,0.25,0.25,0.25,0.75,0.25,0.25,0.25,0.25,
237 0.80,0.80,0.25,0.25,0.80,0.25,0.25,0.70,0.80,0.80,
238 0.60,0.30,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
239 0.25,0.25,0.00,0.50,0.25,0.25,0.00,0.00,0.25,0.25,
240 0.25,0.70,0.70,0.75,0.70,0.70,0.70,0.70,0.70,0.70,
241 0.25,0.25,0.65,0.30,0.60,0.30,0.30,0.50,0.50,0.30,
242 0.85,0.30,0.30,0.55,0.45,0.45,0.70,0.65,0.70,0.80,
243 0.70,0.80,0.70,0.80,0.80
244 )
245 }
246
247 StrategicTechnologyForesightAndPositioning => {
251 tracing::trace!("computing ratings for StrategicTechnologyForesightAndPositioning");
252 wc_ratings!(
253 0.25,0.25,0.90,0.25,0.25,0.60,0.00,0.85,0.25,0.50,
254 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
255 0.25,0.25,0.25,0.25,0.75,0.25,0.25,0.25,0.60,0.25,
256 0.25,0.25,0.25,0.25,0.00,0.70,0.70,0.25,0.60,0.25,
257 0.25,0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.25,
258 0.60,0.60,0.25,0.25,0.75,0.25,0.25,0.65,0.80,0.25,
259 0.70,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
260 0.25,0.25,0.00,0.50,0.25,0.25,0.00,0.00,0.25,0.25,
261 0.25,0.25,0.75,0.80,0.75,0.75,0.75,0.75,0.75,0.65,
262 0.25,0.25,0.85,0.30,0.85,0.30,0.30,0.40,0.40,0.30,
263 0.75,0.30,0.30,0.55,0.45,0.45,0.70,0.60,0.85,0.90,
264 0.75,0.85,0.65,0.90,0.65
265 )
266 }
267
268 ImplementsStealthAndSignatureReductionTechnologies => {
272 tracing::trace!(
273 "computing ratings for ImplementsStealthAndSignatureReductionTechnologies"
274 );
275 wc_ratings!(
276 0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.80,0.25,0.50,
277 0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,
278 0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.75,0.60,0.25,
279 0.25,0.25,0.25,0.25,0.00,0.70,0.75,0.20,0.60,0.25,
280 0.25,0.25,0.70,0.70,0.60,0.60,0.25,0.25,0.25,0.25,
281 0.60,0.60,0.25,0.25,0.65,0.25,0.25,0.55,0.75,0.30,
282 0.60,0.25,0.00,0.00,0.50,0.00,0.00,0.70,0.60,0.85,
283 0.60,0.70,0.00,0.25,0.25,0.70,0.00,0.00,0.80,0.85,
284 0.60,0.70,0.70,0.75,0.80,0.70,0.70,0.65,0.70,0.65,
285 0.25,0.25,0.70,0.30,0.65,0.30,0.30,0.40,0.40,0.30,
286 0.65,0.30,0.30,0.55,0.45,0.45,0.70,0.60,0.75,0.80,
287 0.90,0.85,0.70,0.90,0.65
288 )
289 }
290
291 EfficientTechnologicalKnowledgeTransfer => {
295 tracing::trace!("computing ratings for EfficientTechnologicalKnowledgeTransfer");
296 wc_ratings!(
297 0.25,0.25,0.25,0.25,0.25,0.60,0.00,0.75,0.25,0.50,
298 0.25,0.25,0.25,0.25,0.25,0.80,0.70,0.25,0.25,0.25,
299 0.25,0.25,0.25,0.25,0.70,0.25,0.25,0.25,0.60,0.25,
300 0.25,0.25,0.25,0.25,0.00,0.65,0.60,0.25,0.60,0.25,
301 0.25,0.25,0.25,0.25,0.25,0.60,0.25,0.25,0.25,0.25,
302 0.60,0.60,0.25,0.25,0.70,0.25,0.25,0.65,0.70,0.25,
303 0.60,0.25,0.00,0.00,0.25,0.00,0.00,0.25,0.25,0.00,
304 0.25,0.25,0.00,0.40,0.25,0.25,0.00,0.00,0.25,0.25,
305 0.25,0.25,0.70,0.60,0.75,0.70,0.70,0.75,0.75,0.70,
306 0.25,0.90,0.75,0.30,0.70,0.30,0.30,0.50,0.50,0.30,
307 0.70,0.85,0.85,0.50,0.45,0.45,0.75,0.60,0.75,0.75,
308 0.75,0.75,0.60,0.75,0.60
309 )
310 }
311 }
312 }
313}