-
Notifications
You must be signed in to change notification settings - Fork 0
DotNet.Ships.Record.OutfittingModule
EliteDangerousAlmanac / Ships / OutfittingModule
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/OutfittingModule.cs:117
One fittable outfitting module: its identity and its sparse stats.
The identity fields say what the module is and where it goes. The stats say what it does, and only the ones the module's family uses are present — read them through Stats.
Identity comes primarily from EDCD FDevIDs and the stats from EDCD coriolis-data and EDSY, joined on the symbol. See data/ships/SOURCES.md for provenance and ATTRIBUTIONS.md for credit.
new OutfittingModule(
Symbol,Category,EngineeringGroup,FamilyId,Slot,Name,Class,Rating,Mount,Guidance,Ship,Entitlement,GrantOnly,RestrictedToShips,RestrictedToSlot,ExclusionGroup,LimitGroup,LimitIncrease,Cost,Stats,DamageDistribution?,DamageComponents?,ProjectileRange?,SupercruiseOvercharge?,GuardianZoneResistance?,AlwaysPowered?,EngineeringLocked?)
string
The internal identifier, such as Hpt_PulseLaser_Fixed_Small. It is unique across every category, and it is the module's key.
Which kind of slot the module fits. It comes from the catalogue the record was read from, so it always agrees with where you found the module.
The stable engineering menu this stock module offers, or null when it has no ordinary engineering menu.
The stable outfitting family an outfitting list groups by. Every record carries one, core modules included, and closely related variants share it.
The one fixed mount this module fills, when it fills one. Present on every core module and on the Guardian hybrid power plants and distributors, which Frontier files under the internal category but which go in a core mount. Absent on everything else, because a weapon, a utility fitting or an ordinary optional internal fits any mount of its kind that is large enough. A fuel tank is the one module that fits somewhere else as well: its own core mount and any optional slot large enough.
string
The stable, descriptive English name, such as Pulse Laser. This is a canonical library label rather than a byte-exact copy of the game's localized text: abbreviations are expanded for readability. It is not unique — the game shows most modules at several sizes and ratings, and every hull's armour shares the same five names.
int
The module size, 0 to 8 — the number in the "5A" an outfitting screen shows. Frontier calls it the module class, and it is the slot-size number rather than the grade letter.
The grade letter — the letter in the "5A" an outfitting screen shows.
How the weapon is aimed, on a hardpoint weapon that has a mount variant.
A missile or torpedo launcher's guidance.
string?
The hull an armour variant belongs to. Present only on the armour modules, which are the one ship-specific module.
string?
Frontier's purchase-grant token, on a gated module.
bool
true on an article that arrives granted, with a hull or with a bundle, and that no outfitting screen sells. Each is a second identity for an article the game already sells, which is why a module picker leaves them out — but they are real fitted articles, so every lookup still resolves one. It is not a price: the cost is missing on these and also on articles that are sold and unpriced by every registry.
IReadOnlyList<string>?
The hulls a ship-specific module is limited to. Present only on the handful of non-armour modules with such a limit; armour states its hull separately.
The slot restriction this module requires: it fits only mounts carrying that restriction, and no unrestricted mount at all. It is the mirror image of a mount's own restriction, and the other half of the same rule. Most restricted families bind one way only — a cargo rack fits a cargo mount and any unrestricted optional — so this is present on just the records the game sells for one kind of mount and nowhere else.
The one-per-ship family, when the module has an exclusive fitting rule. Two fitted modules sharing this are structurally invalid.
The per-ship count limit this fitted module consumes, when it consumes one.
The increase this fitted module grants to a per-ship count allowance.
long?
The standard purchase price, in credits, before any station discount or markup. Absent on the handful of records no registry prices. Treat an absent price as unknown, never as free.
The sparse performance and capability stats this module carries.
DamageDistribution? = null
How the weapon's damage splits across the damage types.
DamageComponents? = null
Exact damage amounts, where in-game verification exposes distinct components.
ProjectileRangeBoundaries? = null
Projectile boundary parameters, which are not effective distances.
bool = false
true on a Supercruise Overcharge drive, the line an outfitting screen labels SCO. The two lines share every jump constant this library models, so the flag changes no jump calculation; it is what an outfitting list filters and labels on, and it is what makes a drive unfittable below its own size — an SCO drive takes the mount of its own class and no larger one, where an ordinary drive may be underfitted.
bool = false
true when Anti-Guardian Zone Resistance protects this Guardian module from a Thargoid anti-Guardian field, either inherently or because the grade-1 blueprint grants it.
bool = false
true when a hardpoint-mounted module draws its power continuously. Weapons and most utility fittings only draw power while the hardpoints are deployed; shield boosters, chaff, heat sinks, point defence, caustic sinks and shutdown field neutralisers draw theirs all the time.
bool = false
true when this particular resolved article accepts no further engineering. A stock catalogue record never carries it; a final pre-engineered Guardian weapon does, so a fitted article exposes an empty engineering menu and refuses both blueprints and experimental effects.
AlwaysPowered:
bool
true when a hardpoint-mounted module draws its power continuously. Weapons and most utility fittings only draw power while the hardpoints are deployed; shield boosters, chaff, heat sinks, point defence, caustic sinks and shutdown field neutralisers draw theirs all the time.
Category:
ModuleCategory
Which kind of slot the module fits. It comes from the catalogue the record was read from, so it always agrees with where you found the module.
Class:
int
The module size, 0 to 8 — the number in the "5A" an outfitting screen shows. Frontier calls it the module class, and it is the slot-size number rather than the grade letter.
Cost:
long?
The standard purchase price, in credits, before any station discount or markup. Absent on the handful of records no registry prices. Treat an absent price as unknown, never as free.
DamageComponents:
DamageComponents?
Exact damage amounts, where in-game verification exposes distinct components.
DamageDistribution:
DamageDistribution?
How the weapon's damage splits across the damage types.
EngineeringGroup:
EngineeringGroupId?
The stable engineering menu this stock module offers, or null when it has no ordinary engineering menu.
EngineeringLocked:
bool
true when this particular resolved article accepts no further engineering. A stock catalogue record never carries it; a final pre-engineered Guardian weapon does, so a fitted article exposes an empty engineering menu and refuses both blueprints and experimental effects.
Entitlement:
string?
Frontier's purchase-grant token, on a gated module.
ExclusionGroup:
ModuleExclusionGroup?
The one-per-ship family, when the module has an exclusive fitting rule. Two fitted modules sharing this are structurally invalid.
FamilyId:
OutfittingFamilyId
The stable outfitting family an outfitting list groups by. Every record carries one, core modules included, and closely related variants share it.
GrantOnly:
bool
true on an article that arrives granted, with a hull or with a bundle, and that no outfitting screen sells. Each is a second identity for an article the game already sells, which is why a module picker leaves them out — but they are real fitted articles, so every lookup still resolves one. It is not a price: the cost is missing on these and also on articles that are sold and unpriced by every registry.
GuardianZoneResistance:
bool
true when Anti-Guardian Zone Resistance protects this Guardian module from a Thargoid anti-Guardian field, either inherently or because the grade-1 blueprint grants it.
Guidance:
ModuleGuidance?
A missile or torpedo launcher's guidance.
LimitGroup:
ModuleLimitGroup?
The per-ship count limit this fitted module consumes, when it consumes one.
LimitIncrease:
ModuleLimitIncrease?
The increase this fitted module grants to a per-ship count allowance.
Mount:
ModuleMount?
How the weapon is aimed, on a hardpoint weapon that has a mount variant.
Name:
string
The stable, descriptive English name, such as Pulse Laser. This is a canonical library label rather than a byte-exact copy of the game's localized text: abbreviations are expanded for readability. It is not unique — the game shows most modules at several sizes and ratings, and every hull's armour shares the same five names.
ProjectileRange:
ProjectileRangeBoundaries?
Projectile boundary parameters, which are not effective distances.
Rating:
ModuleRating
The grade letter — the letter in the "5A" an outfitting screen shows.
RestrictedToShips:
IReadOnlyList<string>?
The hulls a ship-specific module is limited to. Present only on the handful of non-armour modules with such a limit; armour states its hull separately.
RestrictedToSlot:
SlotRestriction?
The slot restriction this module requires: it fits only mounts carrying that restriction, and no unrestricted mount at all. It is the mirror image of a mount's own restriction, and the other half of the same rule. Most restricted families bind one way only — a cargo rack fits a cargo mount and any unrestricted optional — so this is present on just the records the game sells for one kind of mount and nowhere else.
Ship:
string?
The hull an armour variant belongs to. Present only on the armour modules, which are the one ship-specific module.
Slot:
ModuleSlot?
The one fixed mount this module fills, when it fills one. Present on every core module and on the Guardian hybrid power plants and distributors, which Frontier files under the internal category but which go in a core mount. Absent on everything else, because a weapon, a utility fitting or an ordinary optional internal fits any mount of its kind that is large enough. A fuel tank is the one module that fits somewhere else as well: its own core mount and any optional slot large enough.
Stats:
ModuleStats
The sparse performance and capability stats this module carries.
SupercruiseOvercharge:
bool
true on a Supercruise Overcharge drive, the line an outfitting screen labels SCO. The two lines share every jump constant this library models, so the flag changes no jump calculation; it is what an outfitting list filters and labels on, and it is what makes a drive unfittable below its own size — an SCO drive takes the mount of its own class and no larger one, where an ordinary drive may be underfitted.
Symbol:
string
The internal identifier, such as Hpt_PulseLaser_Fixed_Small. It is unique across every category, and it is the module's key.
Guides
Astronomy
Classes (16)
Records (29)
- AbsoluteBoxel
- AtmosphereComponent
- BodyComposition
- BodyParent
- BodyProperties
- BodyRing
- BodyScanEvent
- BoxelCodexRegion
- BoxelLetters
- CodexRegion
- CodexRegionBounds
- DecodedSystemAddress
- GalacticPlanePosition
- GalacticPosition
- HandAuthoredRegion
- HandAuthoredSphere
- MassStabilityAssessment
- NamingRegionOrigin
- Nebula
- NebulaNearby
- OrbitExtents
- PermitLock
- PermitLockedSystem
- RingDynamics
- RocheLimits
- SectorGridPosition
- SpinOrbitResonance
- SurfaceMaterial
- SystemNameParts
Commodities
Classes (2)
Records (1)
Enumerations (1)
Equipment
Classes (8)
Records (19)
- FittedPersonalModification
- FittedPersonalWeapon
- PersonalEngineeringIngredient
- PersonalModification
- PersonalModifier
- PersonalMount
- PersonalTool
- PersonalWeapon
- PersonalWeaponGrade
- PersonalWeaponMetrics
- ReloadTime
- ScopeMagnification
- Suit
- SuitGrade
- SuitIdentity
- SuitLoadout
- SuitLoadoutEvent
- SuitLoadoutImportOutcome
- SuitLoadoutModuleEvent
Materials
Classes (5)
Records (2)
Enumerations (4)
Ships
Classes (42)
- Ammunition
- Armour
- BlueprintCatalogue
- BlueprintCosts
- BlueprintJournal
- BuildMetrics
- BuildSlots
- CalculationResult\<T\>
- CalculationResult
- DefaultLoadouts
- Distributor
- Engineering
- EngineeringOptions
- ExperimentalEffectCatalogue
- ExperimentalEffectCosts
- Gunsights
- Heat
- JumpRange
- LoadoutCalculations
- LoadoutEditException
- LoadoutValidator
- Mobility
- MobilityCapacitor
- ModuleCapabilities
- ModuleCatalogue
- ModuleLimits
- ModuleStats
- OutfittingFamilies
- Power
- PreEngineeredCatalogue
- PreEngineeredStats
- Resistances
- ShieldCapacitor
- ShieldRecovery
- Shields
- ShipCatalogue
- ShipLoadout
- Slef
- SlotRestrictions
- SourcePurchase
- Weapons
- WeaponsCapacitor
Records (115)
- AmmunitionCapacity
- ApplyBlueprintOptions
- ArmourInput
- ArmourMetrics
- AvailableBlueprint
- Blueprint
- BlueprintCost
- BlueprintFeature
- BlueprintGrade
- BuildCost
- BuildCredits
- BuildLoad
- BuildMass
- BuildSlot
- BuildWeaponMetrics
- BulkheadParams
- CalculationIssue
- CellBankInput
- CellBankMetrics
- CellBankSummary
- CoreSlots
- DamageComponents
- DamageDistribution
- DamageSplit
- DamageTypeValues
- DefaultLoadout
- DefaultLoadoutModule
- DistributorCapacitorMetrics
- DistributorInput
- DistributorMetrics
- DistributorPips
- EngineeringAmbiguous
- EngineeringEditDetail
- EngineeringGradeEdit
- EngineeringMaterial
- EngineeringModifier
- EngineeringOptionGroup
- EngineeringRerolled
- EngineeringUnresolved
- ExperimentalContribution
- ExperimentalEffect
- ExperimentalEffectEdit
- FittedModule
- FittedWeaponMetrics
- FixedMountRepair
- FrameShiftDriveParams
- GunsightOffset
- GunsightPoint
- HardpointSlotSpec
- HeatInput
- HeatMetrics
- HeatState
- HeatWeapon
- HullReinforcementParams
- JumpRangeSummary
- LoadoutCalculationModule
- LoadoutEvent
- LoadoutExportOptions
- LoadoutFuelCapacity
- LoadoutImportOutcome
- LoadoutIssue
- LoadoutMass
- LoadoutModule
- LoadoutSlot
- LoadoutValidation
- LoadoutValidationInput
- MobilityCapacitorMetrics
- MobilityInput
- MobilityMetrics
- ModuleDefaulted
- ModuleEmptied
- ModuleEngineering
- ModuleFitProblem
- ModuleLimitEntry
- ModuleLimitIncrease
- ModuleLimitUsage
- ModuleReinforcementParams
- OptionalSlotSpec
- OutfittingModule
- ParsedSlot
- PowerBand
- PowerBudget
- PowerConsumer
- PowerConsumerResult
- PreEngineeredModifier
- PreEngineeredVariant
- ProjectileRangeBoundaries
- ShieldBoosterParams
- ShieldCapacitorInput
- ShieldCapacitorMetrics
- ShieldGeneratorParams
- ShieldInput
- ShieldMetrics
- ShieldRecoveryInput
- ShieldRecoveryMetrics
- Ship
- ShipSlots
- SlefDiagnostic
- SlefEntry
- SlefExportOptions
- SlefHeader
- SlefInspection
- SourceModuleValue
- SourcePurchaseRecord
- StandardLoadFigures
- ThrusterCurveParams
- ThrusterParams
- TotalRangeDetails
- UnpricedModule
- ValidationModule
- WeaponMetrics
- WeaponsCapacitorInput
- WeaponsCapacitorMetrics
- WeaponStats
- WeaponTotals
Interfaces (1)
Enumerations (35)
- BlueprintRoute
- CalculationField
- CalculationIssueReason
- CoreSlotType
- DamageType
- EngineeringEditCode
- EngineeringEditKind
- EngineeringGroupId
- FixedMountRepairStatus
- ImmovableReason
- LoadoutCredits
- LoadoutEditErrorCode
- LoadoutImportAction
- LoadoutIssueCode
- LoadoutIssueSeverity
- LoadoutModuleOrder
- ModifierMethod
- ModuleCategory
- ModuleExclusionGroup
- ModuleFitConstraint
- ModuleGuidance
- ModuleLimitGroup
- ModuleMount
- ModuleRating
- ModuleSlot
- ModuleStat
- OutfittingFamilyId
- PreEngineeredAcquisition
- ShipSize
- SlefConstraint
- SlefDiagnosticCode
- SlotKind
- SlotRestriction
- StandardLoad
- ThrusterLoad