1use std::fmt::{Display, Formatter};
2use std::str::FromStr;
3
4use serde::Serialize;
5use thiserror::Error;
6
7use crate::from_str_deserialize_impl;
8use crate::materials::MaterialGrade;
9use crate::modules::materials::MaterialCategory;
10
11#[derive(Debug, Serialize, Clone, PartialEq, Eq, Hash)]
12#[cfg_attr(not(feature = "allow-unknown"), non_exhaustive)]
13pub enum Material {
14 Antimony,
16 Arsenic,
17 Boron,
18 Cadmium,
19 Carbon,
20 Chromium,
21 Germanium,
22 Iron,
23 Lead,
24 Manganese,
25 Mercury,
26 Molybdenum,
27 Nickel,
28 Niobium,
29 Phosphorus,
30 Polonium,
31 Rhenium,
32 Ruthenium,
33 Selenium,
34 Sulphur,
35 Technetium,
36 Tellurium,
37 Tin,
38 Tungsten,
39 Vanadium,
40 Yttrium,
41 Zinc,
42 Zirconium,
43
44 BasicConductors,
46 BioMechanicalConduits,
47 BiotechConductors,
48 CausticCrystal,
49 CausticShard,
50 ChemicalDistillery,
51 ChemicalManipulators,
52 ChemicalProcessors,
53 ChemicalStorageUnits,
54 CompactComposites,
55 CompoundShielding,
56 ConductiveCeramics,
57 ConductiveComponents,
58 ConductivePolymers,
59 ConfigurableComponents,
60 CoreDynamicsComposites,
61 CorrosiveMechanisms,
62 CrystalShards,
63 ElectrochemicalArrays,
64 ExquisiteFocusCrystals,
65 FilamentComposites,
66 FlawedFocusCrystals,
67 FocusCrystals,
68 GalvanisingAlloys,
69 GridResistors,
70 GuardianPowerCell,
71 GuardianPowerConduit,
72 GuardianSentinelWeaponParts,
73 GuardianTechnologyComponent,
74 GuardianWreckageComponents,
75 HardenedSurfaceFragments,
76 HeatConductionWiring,
77 HeatDispersionPlate,
78 HeatExchangers,
79 HeatExposureSpecimen,
80 HeatResistantCeramics,
81 HeatVanes,
82 HighDensityComposites,
83 HybridCapacitors,
84 ImperialShielding,
85 ImprovisedComponents,
86 MechanicalComponents,
87 MechanicalEquipment,
88 MechanicalScrap,
89 MilitaryGradeAlloys,
90 MilitarySupercapacitors,
91 PharmaceuticalIsolators,
92 PhaseAlloys,
93 PhasingMembraneResidue,
94 PolymerCapacitors,
95 PrecipitatedAlloys,
96 ProprietaryComposites,
97 PropulsionElements,
98 ProtoHeatRadiators,
99 ProtoLightAlloys,
100 ProtoRadiolicAlloys,
101 RefinedFocusCrystals,
102 SalvagedAlloys,
103 SensorFragment,
104 ShieldEmitters,
105 ShieldingSensors,
106 TacticalCoreChip,
107 TemperedAlloys,
108 ThargoidCarapace,
109 ThargoidEnergyCell,
110 ThargoidOrganicCircuitry,
111 ThargoidTechnologicalComponents,
112 ThermicAlloys,
113 WeaponParts,
114 WornShieldEmitters,
115 WreckageComponents,
116
117 AberrantShieldPatternAnalysis,
119 AbnormalCompactEmissionData,
120 AdaptiveEncryptorsCapture,
121 AnomalousBulkScanData,
122 AnomalousFSDTelemetry,
123 AtypicalDisruptedWakeEchoes,
124 AtypicalEncryptionArchives,
125 ClassifiedScanDatabanks,
126 ClassifiedScanFragment,
127 CrackedIndustrialFirmware,
128 DataminedWakeExceptions,
129 DecodedEmissionData,
130 DistortedShieldCycleRecordings,
131 DivergentScanData,
132 EccentricHyperspaceTrajectories,
133 ExceptionScrambledEmissionData,
134 GuardianModuleBlueprintFragment,
135 GuardianVesselBlueprintFragment,
136 GuardianWeaponBlueprintFragment,
137 InconsistentShieldSoakAnalysis,
138 IrregularEmissionData,
139 MassiveEnergySurgeAnalytics,
140 ModifiedConsumerFirmware,
141 ModifiedEmbeddedFirmware,
142 OpenSymmetricKeys,
143 PatternAlphaObeliskData,
144 PatternBetaObeliskData,
145 PatternDeltaObeliskData,
146 PatternEpsilonObeliskData,
147 PatternGammaObeliskData,
148 PeculiarShieldFrequencyData,
149 SecurityFirmwarePatch,
150 ShipFlightData,
151 ShipSystemsData,
152 SpecializedLegacyFirmware,
153 StrangeWakeSolutions,
154 TaggedEncryptionCodes,
155 ThargoidInterdictionTelemetry,
156 ThargoidMaterialCompositionData,
157 ThargoidResidueData,
158 ThargoidShipSignature,
159 ThargoidStructuralData,
160 ThargoidWakeData,
161 UnexpectedEmissionData,
162 UnidentifiedScanArchives,
163 UntypicalShieldScans,
164 UnusualEncryptedFiles,
165
166 #[cfg(feature = "allow-unknown")]
167 #[cfg_attr(docsrs, doc(cfg(feature = "allow-unknown")))]
168 Unknown(String),
169}
170
171impl Material {
172 pub fn is_raw(&self) -> bool {
173 matches!(self.into(), MaterialCategory::Raw)
174 }
175
176 pub fn is_manufactured(&self) -> bool {
177 matches!(self.into(), MaterialCategory::Manufactured)
178 }
179
180 pub fn is_encoded(&self) -> bool {
181 matches!(self.into(), MaterialCategory::Encoded)
182 }
183
184 pub fn id(&self) -> u64 {
185 match self {
186 Material::Iron => 128672318,
187 Material::Nickel => 128672319,
188 Material::Tin => 128672320,
189 Material::Zinc => 128672321,
190 Material::Carbon => 128672322,
191 Material::Sulphur => 128672323,
192 Material::Phosphorus => 128672324,
193 Material::Manganese => 128672325,
194 Material::Selenium => 128672326,
195 Material::Chromium => 128672327,
196 Material::Vanadium => 128672328,
197 Material::Germanium => 128672329,
198 Material::Cadmium => 128672330,
199 Material::Tungsten => 128672331,
200 Material::Arsenic => 128672332,
201 Material::Molybdenum => 128672333,
202 Material::Niobium => 128672334,
203 Material::Zirconium => 128672335,
204 Material::Mercury => 128672336,
205 Material::Yttrium => 128672337,
206 Material::Tellurium => 128672338,
207 Material::Polonium => 128672339,
208 Material::Technetium => 128672340,
209 Material::Ruthenium => 128672341,
210 Material::Antimony => 128672342,
211 Material::GridResistors => 128673877,
212 Material::CrystalShards => 128673878,
213 Material::TemperedAlloys => 128673879,
214 Material::BasicConductors => 128673880,
215 Material::MechanicalScrap => 128673881,
216 Material::HeatConductionWiring => 128673882,
217 Material::WornShieldEmitters => 128673883,
218 Material::CompactComposites => 128673884,
219 Material::SalvagedAlloys => 128673885,
220 Material::ChemicalStorageUnits => 128673886,
221 Material::HybridCapacitors => 128673887,
222 Material::FlawedFocusCrystals => 128673888,
223 Material::HeatResistantCeramics => 128673889,
224 Material::ConductiveComponents => 128673890,
225 Material::MechanicalEquipment => 128673891,
226 Material::HeatDispersionPlate => 128673892,
227 Material::ShieldEmitters => 128673893,
228 Material::FilamentComposites => 128673894,
229 Material::GalvanisingAlloys => 128673895,
230 Material::ChemicalProcessors => 128673896,
231 Material::ElectrochemicalArrays => 128673897,
232 Material::FocusCrystals => 128673898,
233 Material::PrecipitatedAlloys => 128673899,
234 Material::ConductiveCeramics => 128673900,
235 Material::MechanicalComponents => 128673901,
236 Material::HeatExchangers => 128673902,
237 Material::ShieldingSensors => 128673903,
238 Material::HighDensityComposites => 128673904,
239 Material::PhaseAlloys => 128673905,
240 Material::ChemicalDistillery => 128673906,
241 Material::PolymerCapacitors => 128673907,
242 Material::RefinedFocusCrystals => 128673908,
243 Material::ThermicAlloys => 128673909,
244 Material::ConductivePolymers => 128673910,
245 Material::ConfigurableComponents => 128673911,
246 Material::HeatVanes => 128673912,
247 Material::CompoundShielding => 128673913,
248 Material::ProprietaryComposites => 128673914,
249 Material::ProtoLightAlloys => 128673915,
250 Material::ChemicalManipulators => 128673916,
251 Material::MilitarySupercapacitors => 128673917,
252 Material::ExquisiteFocusCrystals => 128673918,
253 Material::MilitaryGradeAlloys => 128673919,
254 Material::BiotechConductors => 128673920,
255 Material::ImprovisedComponents => 128673921,
256 Material::ProtoHeatRadiators => 128673922,
257 Material::ImperialShielding => 128673923,
258 Material::CoreDynamicsComposites => 128673924,
259 Material::ProtoRadiolicAlloys => 128673925,
260 Material::PharmaceuticalIsolators => 128673926,
261 Material::SpecializedLegacyFirmware => 128681610,
262 Material::UnusualEncryptedFiles => 128681611,
263 Material::AnomalousBulkScanData => 128681612,
264 Material::AtypicalDisruptedWakeEchoes => 128681613,
265 Material::ExceptionScrambledEmissionData => 128681614,
266 Material::DistortedShieldCycleRecordings => 128681615,
267 Material::ModifiedConsumerFirmware => 128681616,
268 Material::TaggedEncryptionCodes => 128681617,
269 Material::UnidentifiedScanArchives => 128681618,
270 Material::AnomalousFSDTelemetry => 128681619,
271 Material::IrregularEmissionData => 128681620,
272 Material::InconsistentShieldSoakAnalysis => 128681621,
273 Material::CrackedIndustrialFirmware => 128681622,
274 Material::OpenSymmetricKeys => 128681623,
275 Material::ClassifiedScanDatabanks => 128681624,
276 Material::StrangeWakeSolutions => 128681625,
277 Material::UnexpectedEmissionData => 128681626,
278 Material::UntypicalShieldScans => 128681627,
279 Material::SecurityFirmwarePatch => 128681628,
280 Material::AtypicalEncryptionArchives => 128681629,
281 Material::DivergentScanData => 128681630,
282 Material::EccentricHyperspaceTrajectories => 128681631,
283 Material::DecodedEmissionData => 128681632,
284 Material::AberrantShieldPatternAnalysis => 128681633,
285 Material::ModifiedEmbeddedFirmware => 128681634,
286 Material::AdaptiveEncryptorsCapture => 128681635,
287 Material::ClassifiedScanFragment => 128681636,
288 Material::DataminedWakeExceptions => 128681637,
289 Material::AbnormalCompactEmissionData => 128681638,
290 Material::PeculiarShieldFrequencyData => 128681639,
291 Material::SensorFragment => 128681640,
292 Material::ThargoidShipSignature => 128731669,
293 Material::ThargoidWakeData => 128731670,
294 Material::PatternDeltaObeliskData => 128732197,
295 Material::PatternAlphaObeliskData => 128732198,
296 Material::PatternBetaObeliskData => 128732199,
297 Material::PatternGammaObeliskData => 128732200,
298 Material::PatternEpsilonObeliskData => 128732201,
299 Material::ThargoidMaterialCompositionData => 128737280,
300 Material::ThargoidResidueData => 128737281,
301 Material::ThargoidStructuralData => 128737282,
302 Material::ThargoidCarapace => 128737283,
303 Material::ThargoidEnergyCell => 128737284,
304 Material::ThargoidOrganicCircuitry => 128737285,
305 Material::ThargoidTechnologicalComponents => 128737286,
306 Material::BioMechanicalConduits => 128737287,
307 Material::PropulsionElements => 128793132,
308 Material::WeaponParts => 128793133,
309 Material::WreckageComponents => 128793134,
310 Material::ShipFlightData => 128793135,
311 Material::ShipSystemsData => 128793136,
312 Material::GuardianPowerCell => 128815023,
313 Material::GuardianPowerConduit => 128815024,
314 Material::GuardianTechnologyComponent => 128815025,
315 Material::GuardianSentinelWeaponParts => 128815026,
316 Material::GuardianWreckageComponents => 128815027,
317 Material::GuardianWeaponBlueprintFragment => 128815028,
318 Material::GuardianModuleBlueprintFragment => 128815029,
319 Material::GuardianVesselBlueprintFragment => 128815030,
320 Material::Rhenium => 128837857,
321 Material::Lead => 128850245,
322 Material::Boron => 128850246,
323
324 Material::CausticCrystal => 0,
326 Material::CausticShard => 0,
327 Material::CorrosiveMechanisms => 0,
328 Material::HardenedSurfaceFragments => 0,
329 Material::HeatExposureSpecimen => 0,
330 Material::PhasingMembraneResidue => 0,
331 Material::TacticalCoreChip => 0,
332 Material::MassiveEnergySurgeAnalytics => 0,
333 Material::ThargoidInterdictionTelemetry => 0,
334
335 #[cfg(feature = "allow-unknown")]
336 Material::Unknown(_) => 0,
337 }
338 }
339
340 pub fn grade(&self) -> MaterialGrade {
341 self.into()
342 }
343}
344
345#[derive(Debug, Error)]
346pub enum MaterialError {
347 #[error("Unknown material: '{0}'")]
348 UnknownMaterial(String),
349}
350
351impl FromStr for Material {
352 type Err = MaterialError;
353
354 fn from_str(s: &str) -> Result<Self, Self::Err> {
355 let string: &str = &s.to_ascii_lowercase();
356
357 Ok(match string {
358 "carbon" => Material::Carbon,
359 "vanadium" => Material::Vanadium,
360 "niobium" => Material::Niobium,
361 "yttrium" => Material::Yttrium,
362 "phosphorus" => Material::Phosphorus,
363 "chromium" => Material::Chromium,
364 "molybdenum" => Material::Molybdenum,
365 "technetium" => Material::Technetium,
366 "sulphur" => Material::Sulphur,
367 "manganese" => Material::Manganese,
368 "cadmium" => Material::Cadmium,
369 "ruthenium" => Material::Ruthenium,
370 "iron" => Material::Iron,
371 "zinc" => Material::Zinc,
372 "tin" => Material::Tin,
373 "selenium" => Material::Selenium,
374 "nickel" => Material::Nickel,
375 "germanium" => Material::Germanium,
376 "tungsten" => Material::Tungsten,
377 "tellurium" => Material::Tellurium,
378 "rhenium" => Material::Rhenium,
379 "arsenic" => Material::Arsenic,
380 "mercury" => Material::Mercury,
381 "polonium" => Material::Polonium,
382 "lead" => Material::Lead,
383 "zirconium" => Material::Zirconium,
384 "boron" => Material::Boron,
385 "antimony" => Material::Antimony,
386 "chemicalstorageunits" => Material::ChemicalStorageUnits,
387 "chemicalprocessors" => Material::ChemicalProcessors,
388 "chemicaldistillery" => Material::ChemicalDistillery,
389 "chemicalmanipulators" => Material::ChemicalManipulators,
390 "pharmaceuticalisolators" => Material::PharmaceuticalIsolators,
391 "temperedalloys" => Material::TemperedAlloys,
392 "heatresistantceramics" => Material::HeatResistantCeramics,
393 "precipitatedalloys" => Material::PrecipitatedAlloys,
394 "thermicalloys" => Material::ThermicAlloys,
395 "militarygradealloys" => Material::MilitaryGradeAlloys,
396 "heatconductionwiring" => Material::HeatConductionWiring,
397 "heatdispersionplate" => Material::HeatDispersionPlate,
398 "heatexchangers" => Material::HeatExchangers,
399 "heatvanes" => Material::HeatVanes,
400 "protoheatradiators" => Material::ProtoHeatRadiators,
401 "basicconductors" => Material::BasicConductors,
402 "conductivecomponents" => Material::ConductiveComponents,
403 "conductiveceramics" => Material::ConductiveCeramics,
404 "conductivepolymers" => Material::ConductivePolymers,
405 "biotechconductors" => Material::BiotechConductors,
406 "mechanicalscrap" => Material::MechanicalScrap,
407 "mechanicalequipment" => Material::MechanicalEquipment,
408 "mechanicalcomponents" => Material::MechanicalComponents,
409 "configurablecomponents" => Material::ConfigurableComponents,
410 "improvisedcomponents" => Material::ImprovisedComponents,
411 "gridresistors" => Material::GridResistors,
412 "hybridcapacitors" => Material::HybridCapacitors,
413 "electrochemicalarrays" => Material::ElectrochemicalArrays,
414 "polymercapacitors" => Material::PolymerCapacitors,
415 "militarysupercapacitors" => Material::MilitarySupercapacitors,
416 "wornshieldemitters" => Material::WornShieldEmitters,
417 "shieldemitters" => Material::ShieldEmitters,
418 "shieldingsensors" => Material::ShieldingSensors,
419 "compoundshielding" => Material::CompoundShielding,
420 "imperialshielding" => Material::ImperialShielding,
421 "compactcomposites" => Material::CompactComposites,
422 "filamentcomposites" => Material::FilamentComposites,
423 "highdensitycomposites" => Material::HighDensityComposites,
424 "fedproprietarycomposites" => Material::ProprietaryComposites,
425 "fedcorecomposites" => Material::CoreDynamicsComposites,
426 "crystalshards" => Material::CrystalShards,
427 "uncutfocuscrystals" => Material::FlawedFocusCrystals,
428 "focuscrystals" => Material::FocusCrystals,
429 "refinedfocuscrystals" => Material::RefinedFocusCrystals,
430 "exquisitefocuscrystals" => Material::ExquisiteFocusCrystals,
431 "salvagedalloys" => Material::SalvagedAlloys,
432 "galvanisingalloys" => Material::GalvanisingAlloys,
433 "phasealloys" => Material::PhaseAlloys,
434 "protolightalloys" => Material::ProtoLightAlloys,
435 "protoradiolicalloys" => Material::ProtoRadiolicAlloys,
436 "hardenedsurfacefragments" => Material::HardenedSurfaceFragments,
437 "tg_causticshard" => Material::CausticShard,
438 "tacticalcorechip" => Material::TacticalCoreChip,
439 "unknowncarapace" => Material::ThargoidCarapace,
440 "tg_biomechanicalconduits" => Material::BioMechanicalConduits,
441 "tg_causticgeneratorparts" => Material::CorrosiveMechanisms,
442 "phasingmembraneresidue" => Material::PhasingMembraneResidue,
443 "thargoidenergycell" => Material::ThargoidEnergyCell,
444 "tg_wreckagecomponents" => Material::WreckageComponents,
445 "tg_causticcrystal" => Material::CausticCrystal,
446 "thargoidtechnologicalcomponents" => Material::ThargoidTechnologicalComponents,
447 "tg_weaponparts" => Material::WeaponParts,
448 "heatexposurespecimen" => Material::HeatExposureSpecimen,
449 "tg_propulsionelement" => Material::PropulsionElements,
450 "unknownenergysource" => Material::SensorFragment,
451 "thargoidorganiccircuitry" => Material::ThargoidOrganicCircuitry,
452 "unknownorganiccircuitry" => Material::ThargoidOrganicCircuitry,
453 "guardian_powercell" => Material::GuardianPowerCell,
454 "guardian_sentinel_wreckagecomponents" => Material::GuardianWreckageComponents,
455 "guardian_powerconduit" => Material::GuardianPowerConduit,
456 "guardian_sentinel_weaponparts" => Material::GuardianSentinelWeaponParts,
457 "guardian_techcomponent" => Material::GuardianTechnologyComponent,
458 "scrambledemissiondata" => Material::ExceptionScrambledEmissionData,
459 "archivedemissiondata" => Material::IrregularEmissionData,
460 "emissiondata" => Material::UnexpectedEmissionData,
461 "decodedemissiondata" => Material::DecodedEmissionData,
462 "compactemissionsdata" => Material::AbnormalCompactEmissionData,
463 "disruptedwakeechoes" => Material::AtypicalDisruptedWakeEchoes,
464 "fsdtelemetry" => Material::AnomalousFSDTelemetry,
465 "wakesolutions" => Material::StrangeWakeSolutions,
466 "hyperspacetrajectories" => Material::EccentricHyperspaceTrajectories,
467 "dataminedwake" => Material::DataminedWakeExceptions,
468 "shieldcyclerecordings" => Material::DistortedShieldCycleRecordings,
469 "shieldsoakanalysis" => Material::InconsistentShieldSoakAnalysis,
470 "shielddensityreports" => Material::UntypicalShieldScans,
471 "shieldpatternanalysis" => Material::AberrantShieldPatternAnalysis,
472 "shieldfrequencydata" => Material::PeculiarShieldFrequencyData,
473 "encryptedfiles" => Material::UnusualEncryptedFiles,
474 "encryptioncodes" => Material::TaggedEncryptionCodes,
475 "symmetrickeys" => Material::OpenSymmetricKeys,
476 "encryptionarchives" => Material::AtypicalEncryptionArchives,
477 "adaptiveencryptors" => Material::AdaptiveEncryptorsCapture,
478 "bulkscandata" => Material::AnomalousBulkScanData,
479 "scanarchives" => Material::UnidentifiedScanArchives,
480 "scandatabanks" => Material::ClassifiedScanDatabanks,
481 "encodedscandata" => Material::DivergentScanData,
482 "classifiedscandata" => Material::ClassifiedScanFragment,
483 "legacyfirmware" => Material::SpecializedLegacyFirmware,
484 "consumerfirmware" => Material::ModifiedConsumerFirmware,
485 "industrialfirmware" => Material::CrackedIndustrialFirmware,
486 "securityfirmware" => Material::SecurityFirmwarePatch,
487 "embeddedfirmware" => Material::ModifiedEmbeddedFirmware,
488 "tg_structuraldata" => Material::ThargoidStructuralData,
489 "tg_shutdowndata" => Material::MassiveEnergySurgeAnalytics,
490 "tg_shipflightdata" => Material::ShipFlightData,
491 "tg_shipsystemsdata" => Material::ShipSystemsData,
492 "tg_interdictiondata" => Material::ThargoidInterdictionTelemetry,
493 "tg_compositiondata" => Material::ThargoidMaterialCompositionData,
494 "unknownshipsignature" => Material::ThargoidShipSignature,
495 "tg_residuedata" => Material::ThargoidResidueData,
496 "unknownwakedata" => Material::ThargoidWakeData,
497 "ancienthistoricaldata" => Material::PatternGammaObeliskData,
498 "ancientculturaldata" => Material::PatternBetaObeliskData,
499 "ancientbiologicaldata" => Material::PatternAlphaObeliskData,
500 "ancientlanguagedata" => Material::PatternDeltaObeliskData,
501 "ancienttechnologicaldata" => Material::PatternEpsilonObeliskData,
502 "guardian_moduleblueprint" => Material::GuardianModuleBlueprintFragment,
503 "guardian_vesselblueprint" => Material::GuardianVesselBlueprintFragment,
504 "guardian_weaponblueprint" => Material::GuardianWeaponBlueprintFragment,
505
506 #[cfg(feature = "allow-unknown")]
507 _ => Material::Unknown(s.to_string()),
508
509 #[cfg(not(feature = "allow-unknown"))]
510 _ => return Err(MaterialError::UnknownMaterial(s.to_string())),
511 })
512 }
513}
514
515from_str_deserialize_impl!(Material);
516
517impl Display for Material {
518 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
519 write!(
520 f,
521 "{}",
522 match self {
523 Material::Antimony => "Antimony",
525 Material::Arsenic => "Arsenic",
526 Material::Boron => "Boron",
527 Material::Cadmium => "Cadmium",
528 Material::Carbon => "Carbon",
529 Material::Chromium => "Chromium",
530 Material::Germanium => "Germanium",
531 Material::Iron => "Iron",
532 Material::Lead => "Lead",
533 Material::Manganese => "Manganese",
534 Material::Mercury => "Mercury",
535 Material::Molybdenum => "Molybdenum",
536 Material::Nickel => "Nickel",
537 Material::Niobium => "Niobium",
538 Material::Phosphorus => "Phosphorus",
539 Material::Polonium => "Polonium",
540 Material::Rhenium => "Rhenium",
541 Material::Ruthenium => "Ruthenium",
542 Material::Selenium => "Selenium",
543 Material::Sulphur => "Sulphur",
544 Material::Technetium => "Technetium",
545 Material::Tellurium => "Tellurium",
546 Material::Tin => "Tin",
547 Material::Tungsten => "Tungsten",
548 Material::Vanadium => "Vanadium",
549 Material::Yttrium => "Yttrium",
550 Material::Zinc => "Zinc",
551 Material::Zirconium => "Zirconium",
552
553 Material::BasicConductors => "Basic Conductors",
555 Material::BioMechanicalConduits => "Bio-Mechanical Conduits",
556 Material::BiotechConductors => "Biotech Conductors",
557 Material::CausticCrystal => "Caustic Crystal",
558 Material::CausticShard => "Caustic Shard",
559 Material::ChemicalDistillery => "Chemical Distillery",
560 Material::ChemicalManipulators => "Chemical Manipulators",
561 Material::ChemicalProcessors => "Chemical Processors",
562 Material::ChemicalStorageUnits => "Chemical Storage Units",
563 Material::CompactComposites => "Compact Composites",
564 Material::CompoundShielding => "Compound Shielding",
565 Material::ConductiveCeramics => "Conductive Ceramics",
566 Material::ConductiveComponents => "Conductive Components",
567 Material::ConductivePolymers => "Conductive Polymers",
568 Material::ConfigurableComponents => "Configurable Components",
569 Material::CoreDynamicsComposites => "Core Dynamics Composites",
570 Material::CorrosiveMechanisms => "Corrosive Mechanisms",
571 Material::CrystalShards => "Crystal Shards",
572 Material::ElectrochemicalArrays => "Electrochemical Arrays",
573 Material::ExquisiteFocusCrystals => "Exquisite Focus Crystals",
574 Material::FilamentComposites => "Filament Composites",
575 Material::FlawedFocusCrystals => "Flawed Focus Crystals",
576 Material::FocusCrystals => "Focus Crystals",
577 Material::GalvanisingAlloys => "Galvanising Alloys",
578 Material::GridResistors => "Grid Resistors",
579 Material::GuardianPowerCell => "Guardian Power Cell",
580 Material::GuardianPowerConduit => "Guardian Power Conduit",
581 Material::GuardianSentinelWeaponParts => "Guardian Sentinel Weapon Parts",
582 Material::GuardianTechnologyComponent => "Guardian Technology Component",
583 Material::GuardianWreckageComponents => "Guardian Wreckage Components",
584 Material::HardenedSurfaceFragments => "Hardened Surface Fragments",
585 Material::HeatConductionWiring => "Heat Conduction Wiring",
586 Material::HeatDispersionPlate => "Heat Dispersion Plate",
587 Material::HeatExchangers => "Heat Exchangers",
588 Material::HeatExposureSpecimen => "Heat Exposure Specimen",
589 Material::HeatResistantCeramics => "Heat Resistant Ceramics",
590 Material::HeatVanes => "Heat Vanes",
591 Material::HighDensityComposites => "High Density Composites",
592 Material::HybridCapacitors => "Hybrid Capacitors",
593 Material::ImperialShielding => "Imperial Shielding",
594 Material::ImprovisedComponents => "Improvised Components",
595 Material::MechanicalComponents => "Mechanical Components",
596 Material::MechanicalEquipment => "Mechanical Equipment",
597 Material::MechanicalScrap => "Mechanical Scrap",
598 Material::MilitaryGradeAlloys => "Military Grade Alloys",
599 Material::MilitarySupercapacitors => "Military Supercapacitors",
600 Material::PharmaceuticalIsolators => "Pharmaceutical Isolators",
601 Material::PhaseAlloys => "Phase Alloys",
602 Material::PhasingMembraneResidue => "Phasing Membrane Residue",
603 Material::PolymerCapacitors => "Polymer Capacitors",
604 Material::PrecipitatedAlloys => "Precipitated Alloys",
605 Material::ProprietaryComposites => "Proprietary Composites",
606 Material::PropulsionElements => "Propulsion Elements",
607 Material::ProtoHeatRadiators => "Proto Heat Radiators",
608 Material::ProtoLightAlloys => "Proto Light Alloys",
609 Material::ProtoRadiolicAlloys => "Proto Radiolic Alloys",
610 Material::RefinedFocusCrystals => "Refined Focus Crystals",
611 Material::SalvagedAlloys => "Salvaged Alloys",
612 Material::SensorFragment => "Sensor Fragment",
613 Material::ShieldEmitters => "Shield Emitters",
614 Material::ShieldingSensors => "Shielding Sensors",
615 Material::TacticalCoreChip => "Tactical Core Chip",
616 Material::TemperedAlloys => "Tempered Alloys",
617 Material::ThargoidCarapace => "Thargoid Carapace",
618 Material::ThargoidEnergyCell => "Thargoid Energy Cell",
619 Material::ThargoidOrganicCircuitry => "Thargoid Organic Circuitry",
620 Material::ThargoidTechnologicalComponents => "Thargoid Technological Components",
621 Material::ThermicAlloys => "Thermic Alloys",
622 Material::WeaponParts => "Weapon Parts",
623 Material::WornShieldEmitters => "Worn Shield Emitters",
624 Material::WreckageComponents => "Wreckage Components",
625
626 Material::AberrantShieldPatternAnalysis => "Aberrant Shield Pattern Analysis",
628 Material::AbnormalCompactEmissionData => "Abnormal Compact Emissions Data",
629 Material::AdaptiveEncryptorsCapture => "Adaptive Encryptors Capture",
630 Material::AnomalousBulkScanData => "Anomalous Bulk Scan Data",
631 Material::AnomalousFSDTelemetry => "Anomalous FSD Telemetry",
632 Material::AtypicalDisruptedWakeEchoes => "Atypical Disrupted Wake Echoes",
633 Material::AtypicalEncryptionArchives => "Atypical Encryption Archives",
634 Material::ClassifiedScanDatabanks => "Classified Scan Databanks",
635 Material::ClassifiedScanFragment => "Classified Scan Fragment",
636 Material::CrackedIndustrialFirmware => "Cracked Industrial Firmware",
637 Material::DataminedWakeExceptions => "Datamined Wake Exceptions",
638 Material::DecodedEmissionData => "Decoded Emission Data",
639 Material::DistortedShieldCycleRecordings => "Distorted Shield Cycle Recordings",
640 Material::DivergentScanData => "Divergent Scan Data",
641 Material::EccentricHyperspaceTrajectories => "Eccentric Hyperspace Trajectories",
642 Material::ExceptionScrambledEmissionData => "Exceptional Scrambled Emission Data",
643 Material::GuardianModuleBlueprintFragment => "Guardian Module Blueprint Fragment",
644 Material::GuardianVesselBlueprintFragment => "Guardian Vessel Blueprint Fragment",
645 Material::GuardianWeaponBlueprintFragment => "Guardian Weapon Blueprint Fragment",
646 Material::InconsistentShieldSoakAnalysis => "Inconsistent Shield Soak Analysis",
647 Material::IrregularEmissionData => "Irregular Emission Data",
648 Material::MassiveEnergySurgeAnalytics => "Massive Energy Surge Analytics",
649 Material::ModifiedConsumerFirmware => "Modified Consumer Firmware",
650 Material::ModifiedEmbeddedFirmware => "Modified Embedded Firmware",
651 Material::OpenSymmetricKeys => "Open Symmetric Keys",
652 Material::PatternAlphaObeliskData => "Pattern Alpha Obelisk Data",
653 Material::PatternBetaObeliskData => "Pattern Beta Obelisk Data",
654 Material::PatternDeltaObeliskData => "Pattern Delta Obelisk Data",
655 Material::PatternEpsilonObeliskData => "Pattern Epsilon Obelisk Data",
656 Material::PatternGammaObeliskData => "Pattern Gamma Obelisk Data",
657 Material::PeculiarShieldFrequencyData => "Peculiar Shield Frequency Data",
658 Material::SecurityFirmwarePatch => "Security Firmware Patch",
659 Material::ShipFlightData => "Ship Flight Data",
660 Material::ShipSystemsData => "Ship Systems Data",
661 Material::SpecializedLegacyFirmware => "Specialised Legacy Firmware",
662 Material::StrangeWakeSolutions => "Strange Wake Solutions",
663 Material::TaggedEncryptionCodes => "Tagged Encryption Codes",
664 Material::ThargoidInterdictionTelemetry => "Thargoid Interdiction Telemetry",
665 Material::ThargoidMaterialCompositionData => "Thargoid Material Composition Data",
666 Material::ThargoidResidueData => "Thargoid Residue Data",
667 Material::ThargoidShipSignature => "Thargoid Ship Signature",
668 Material::ThargoidStructuralData => "Thargoid Structural Data",
669 Material::ThargoidWakeData => "Thargoid Wake Data",
670 Material::UnexpectedEmissionData => "Unexpected Emission Data",
671 Material::UnidentifiedScanArchives => "Unidentified Scan Archives",
672 Material::UntypicalShieldScans => "Untypical Shield Scans",
673 Material::UnusualEncryptedFiles => "Unusual Encrypted Files",
674
675 #[cfg(feature = "allow-unknown")]
676 Material::Unknown(unknown) => return write!(f, "Unknown material: {unknown}"),
677 }
678 )
679 }
680}