-
Notifications
You must be signed in to change notification settings - Fork 0
ships.Interface.OutfittingModule
@elite-dangerous-almanac/core / ships / OutfittingModule
Defined in: src/ships/modules.ts:863
One fittable outfitting module: its identity and sparse stats in one flat record.
Keeping the runtime record flat lets engineering modifiers address stat keys directly.
Consumers that need a smaller contract can accept OutfittingModuleIdentity,
OutfittingModuleStats, or one of the required groups in
./module-capabilities.
import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';
getModuleBySymbol('Int_Hyperdrive_Size5_Class5')?.engineeringGroup;
// -> 'frameShiftDrives'
readonlyoptionalalwaysPowered?:boolean
Defined in: src/ships/modules.ts:747
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, and carry this flag.
Absent on every core/internal module, which are always powered anyway.
See powerDraw and ./power.
OutfittingModuleStats.alwaysPowered
readonlyoptionalammoMaximum?:number
Defined in: src/ships/modules.ts:804
Reserve rounds to reload from — the magazine is not counted in it, exactly as the
journal's AmmoInHopper does not count it. Absent beside a clipSize means
nothing limits the refills (the mining Abrasion Blaster); absent beside no clip
either means the module takes no ammunition at all, as the lasers do.
OutfittingModuleStats.ammoMaximum
readonlyoptionalarmourPiercing?:number
Defined in: src/ships/modules.ts:821
Armour piercing rating. Damage to a hull is scaled by
min(1, armourPiercing / hardness) against a hull of that Ship.hardness.
OutfittingModuleStats.armourPiercing
readonlyoptionalbootTime?:number
Defined in: src/ships/modules.ts:505
Boot time from power-on, in seconds.
OutfittingModuleStats.bootTime
readonlyoptionalburstInterval?:number
Defined in: src/ships/modules.ts:782
Seconds between shots — between bursts on a burst-fire weapon.
OutfittingModuleStats.burstInterval
readonlyoptionalburstRateOfFire?:number
Defined in: src/ships/modules.ts:786
Shots per second within a burst.
OutfittingModuleStats.burstRateOfFire
readonlyoptionalburstRounds?:number
Defined in: src/ships/modules.ts:784
Shots in one burst. Absent (or 1) on a weapon that does not fire in bursts.
OutfittingModuleStats.burstRounds
readonlyoptionalcargoCapacity?:number
Defined in: src/ships/modules.ts:612
Cargo rack: capacity, in tonnes.
OutfittingModuleStats.cargoCapacity
readonlycategory:ModuleCategory
Defined in: src/ships/modules.ts:268
Which kind of slot the module fits.
Derived from the catalogue the record was read from rather than stored on it —
CORE_MODULES is what makes a record 'core' — so it is always present and
always agrees with the catalogue you found the module in — it is written after
the record's own fields, so the file wins outright. That also makes it the last
key on the record, which is worth knowing only if you serialize one and compare
the resulting string.
OutfittingModuleIdentity.category
readonlyoptionalcausticResistance?:number
Defined in: src/ships/modules.ts:647
Caustic resistance, as a fraction (negative is a weakness).
OutfittingModuleStats.causticResistance
readonlyoptionalchargeTime?:number
Defined in: src/ships/modules.ts:788
Seconds spent charging before a shot (rail guns), if any.
OutfittingModuleStats.chargeTime
readonlyclass:number
Defined in: src/ships/modules.ts:342
The module size, 0–8 — the number in the "5A" the outfitting screen shows.
Frontier calls this the module class; it is the slot-size number, not the
grade letter (that is OutfittingModule.rating). Named class to match
the source registry.
OutfittingModuleIdentity.class
readonlyoptionalclipSize?:number
Defined in: src/ships/modules.ts:797
Rounds in a clip before reloading. Absent on weapons that never reload.
A capacity, and the largest AmmoInClip a journal can report for the module.
ammunitionCapacity in ./ammunition reads it together with
OutfittingModule.ammoMaximum.
OutfittingModuleStats.clipSize
readonlyoptionalcost?:number
Defined in: src/ships/modules.ts:474
Standard purchase price, in credits — the base list price before any station discount or markup, which is what an outfitting screen quotes at 0% discount.
Absent on the handful of records no registry prices: the starter *_free
variants, the size-8 frame shift drives, and a few internals no outfitting
registry carries a figure for — among them the two Corrosion Resistant Cargo
Racks no station sells, which are not free. Treat undefined as "unknown", never
as free — see data/ships/SOURCES.md.
readonlyoptionaldamage?:number
Defined in: src/ships/modules.ts:757
Damage per round — or per second on a continuous-fire (beam) weapon.
readonlyoptionaldamageComponents?:DamageComponents
Defined in: src/ships/modules.ts:765
Exact damage amounts when in-game verification exposes distinct components. On effective fitted stats these scale with engineered total damage, and are absent when engineering converts the weapon to a new fractional damage distribution.
OutfittingModuleStats.damageComponents
readonlyoptionaldamageDistribution?:DamageDistribution
Defined in: src/ships/modules.ts:759
How damage splits across the damage types.
OutfittingModuleStats.damageDistribution
readonlyoptionaldistributorDraw?:number
Defined in: src/ships/modules.ts:814
Weapons-capacitor draw, in megawatts — per shot, or per second on a
continuous-fire weapon. Shield generators carry it too, as the systems-capacitor
cost of one MJ per second of regeneration — the stat the journal calls
EnergyPerRegen rather than DistributorDraw, and the one Hi-Cap, Lo-draw and
Force Block move.
OutfittingModuleStats.distributorDraw
readonlyengineeringGroup:EngineeringGroupId|null
Defined in: src/ships/modules.ts:273
Stable engineering-menu family, or null when the stock module has no ordinary
engineering menu. See EngineeringGroupId.
OutfittingModuleIdentity.engineeringGroup
readonlyoptionalengineeringLocked?:boolean
Defined in: src/ships/modules.ts:667
Whether this particular resolved article accepts no further engineering.
Stock module catalogues omit this field. getPreEngineeredStats sets it on final
pre-engineered Guardian weapons so a fitted article exposes an empty engineering
menu and rejects both blueprints and experimental effects.
OutfittingModuleStats.engineeringLocked
readonlyoptionalengineHeatRate?:number
Defined in: src/ships/modules.ts:540
Thrusters: waste heat generated per second at top speed.
The stat the journal calls EngineHeatRate — every Dirty Drive Tuning roll
raises it and every Clean Drive roll lowers it. Frontier's own units: a bare
number the ship's heat model consumes, not a temperature or a percentage.
OutfittingModuleStats.engineHeatRate
readonlyoptionalenginesCapacity?:number
Defined in: src/ships/modules.ts:599
Power distributor: ENG capacitor capacity.
OutfittingModuleStats.enginesCapacity
readonlyoptionalenginesRecharge?:number
Defined in: src/ships/modules.ts:601
Power distributor: maximum ENG recharge at four pips, in megajoules per second.
OutfittingModuleStats.enginesRecharge
readonlyoptionalentitlement?:string
Defined in: src/ships/modules.ts:365
Frontier's DLC / purchase-grant entitlement token, e.g.
"ELITE_HORIZONS_V_PLANETARY_LANDINGS". Present only on gated modules.
OutfittingModuleIdentity.entitlement
readonlyoptionalexclusionGroup?:ModuleExclusionGroup
Defined in: src/ships/modules.ts:447
One-per-ship family, absent when the module has no exclusive fitting rule. Two fitted modules sharing this id are structurally invalid.
OutfittingModuleIdentity.exclusionGroup
readonlyoptionalexplosiveResistance?:number
Defined in: src/ships/modules.ts:645
Explosive resistance, as a fraction (negative is a weakness).
OutfittingModuleStats.explosiveResistance
readonlyoptionalfalloffRange?:number
Defined in: src/ships/modules.ts:828
Range at which damage starts to drop off, in metres.
OutfittingModuleStats.falloffRange
readonlyfamilyId:OutfittingFamilyId
Defined in: src/ships/modules.ts:289
Stable outfitting family used to group an outfitting list, such as
'cargoRacks', 'shieldGenerators' or 'beamLasers'. See
OutfittingFamilyId.
Every record carries one, core modules included, so every choice
ShipLoadout.modulesForSlot returns has a family. Closely related variants
share it: Bi-Weave and Prismatic generators are 'shieldGenerators', Mk II and
corrosion-resistant racks are 'cargoRacks', and a Powerplay or pre-engineered
variant stays with its base weapon's family.
OUTFITTING_FAMILIES gives the canonical English display name;
getOutfittingFamilyName in i18n/module-families gives a localized one.
OutfittingModuleIdentity.familyId
readonlyoptionalfsdHeatRate?:number
Defined in: src/ships/modules.ts:559
Frame shift drive: waste heat generated per second while charging a jump.
The journal's FSDHeatRate, in the same units as
OutfittingModule.engineHeatRate. It is what Faster Boot Sequence trades
away, what Shielded improves, and the whole of the Deep Charge / Thermal Spread
(special_fsd_cooled) experimental effect. A drive's size sets it — every rating
of a size shares one value, and a supercruise-assist (SCO) drive matches the plain
drive of the same size.
OutfittingModuleStats.fsdHeatRate
readonlyoptionalfuelCapacity?:number
Defined in: src/ships/modules.ts:610
Fuel tank: capacity, in tonnes.
OutfittingModuleStats.fuelCapacity
readonlyoptionalfuelMul?:number
Defined in: src/ships/modules.ts:545
FSD: rating (linear) fuel constant.
readonlyoptionalfuelPower?:number
Defined in: src/ships/modules.ts:547
FSD: size (power) fuel constant.
OutfittingModuleStats.fuelPower
readonlyoptionalgrantOnly?:true
Defined in: src/ships/modules.ts:385
true on an article that arrives granted — with a hull or with a bundle — and
that no outfitting screen sells. Absent on every module a station offers.
The fifteen are the nine starter *_free fittings and the six bundle-granted
Vessel Hangars. Each is a second identity for an article the game already sells:
Int_Engine_Size2_Class1_free is the 2E Thrusters again, which is why
ShipLoadout.modulesForSlot leaves them out — a picker that offered both
would list "2E Thrusters" twice, once unpriced.
They are still real fitted articles, so they stay in the catalogues and every
lookup resolves one: a build imported from a journal can carry one, and
getModuleBySymbol answers for it like any other symbol. Absent is not
false — nothing carries grantOnly: false.
Do not read it as a price: OutfittingModule.cost is missing on these but also on articles that are sold and simply unpriced by every registry.
OutfittingModuleIdentity.grantOnly
readonlyoptionalguardianZoneResistance?:boolean
Defined in: src/ships/modules.ts:658
Whether Anti-Guardian Zone Resistance protects this Guardian module from a Thargoid anti-Guardian field.
A sparse capability flag rather than a percentage: true means the protection is
inherent or the grade-1 blueprint grants it, while absence means it is not granted.
The two Guardian Nanite Torpedo Pylons carry it inherently; read engineered
protection from a fitted module's FittedModule.effectiveStats.
OutfittingModuleStats.guardianZoneResistance
readonlyoptionalguidance?:ModuleGuidance
Defined in: src/ships/modules.ts:354
A missile/torpedo hardpoint's guidance. Present only on the launchers that have one; absent on everything else.
OutfittingModuleIdentity.guidance
readonlyoptionalheatEfficiency?:number
Defined in: src/ships/modules.ts:592
Power plant: heat efficiency (lower runs cooler).
OutfittingModuleStats.heatEfficiency
readonlyoptionalhullBoost?:number
Defined in: src/ships/modules.ts:678
Armour: the hull hit points this bulkhead adds, as a fraction of the hull's
Ship.baseArmour on top of it — 0.8 (lightweight alloy) means
baseArmour × 1.8, 2.5 means baseArmour × 3.5.
Carried by the ship-specific armour modules, which are the core-category
records with a OutfittingModule.ship. List a hull's five (or, on the
Caspian Explorer, six) options with getBulkheadsForShip.
OutfittingModuleStats.hullBoost
readonlyoptionalhullReinforcement?:number
Defined in: src/ships/modules.ts:680
Hull reinforcement package: hull hit points added.
OutfittingModuleStats.hullReinforcement
readonlyoptionalintegrity?:number
Defined in: src/ships/modules.ts:501
Integrity (hit points against module damage).
OutfittingModuleStats.integrity
readonlyoptionalinterdictorFacingLimit?:number
Defined in: src/ships/modules.ts:730
FSD interdictor: maximum target angle off boresight, in degrees.
OutfittingModuleStats.interdictorFacingLimit
readonlyoptionalinterdictorRange?:number
Defined in: src/ships/modules.ts:735
FSD interdictor: maximum target range, in seconds to intercept — the units the game measures a supercruise separation in, not a distance.
OutfittingModuleStats.interdictorRange
readonlyoptionaljitter?:number
Defined in: src/ships/modules.ts:843
Maximum aim deviation, in degrees.
readonlyoptionaljumpBoost?:number
Defined in: src/ships/modules.ts:587
Guardian FSD Booster: flat jump-range bonus, in light-years.
OutfittingModuleStats.jumpBoost
readonlyoptionalkineticResistance?:number
Defined in: src/ships/modules.ts:641
Kinetic resistance, as a fraction (0.4 = 40% resisted, -0.2 = 20% weaker).
OutfittingModuleStats.kineticResistance
readonlyoptionallimitGroup?:"experimentalWeapon"
Defined in: src/ships/modules.ts:453
Per-ship count limit this fitted module consumes, absent when it consumes none.
Read the base allowance and current usage with calculateModuleLimits from
ships/module-limits rather than inferring the family from a symbol or name.
OutfittingModuleIdentity.limitGroup
readonlyoptionallimitIncrease?:ModuleLimitIncrease
Defined in: src/ships/modules.ts:462
Increase this fitted module grants to a per-ship count allowance.
The Experimental Weapon Stabiliser grants one additional experimental weapon at class 3 and two at class 5. The grant comes from the fitted article; module power state does not change structural fitting validity.
OutfittingModuleIdentity.limitIncrease
readonlyoptionalmass?:number
Defined in: src/ships/modules.ts:499
Mass, in tonnes.
readonlyoptionalmaxFuel?:number
Defined in: src/ships/modules.ts:543
FSD: maximum fuel per jump, in tonnes.
readonlyoptionalmaximumRange?:number
Defined in: src/ships/modules.ts:826
Maximum effective range, in metres. A weapon does no damage beyond it; on a non-scanner utility module, it is the effect's reach.
OutfittingModuleStats.maximumRange
readonlyoptionalmaxMass?:number
Defined in: src/ships/modules.ts:512
Maximum mass for the performance curve, in tonnes.
readonlyoptionalmaxMultiplier?:number
Defined in: src/ships/modules.ts:518
Maximum performance multiplier, reached at minMass.
OutfittingModuleStats.maxMultiplier
readonlyoptionalmaxRotationMultiplier?:number
Defined in: src/ships/modules.ts:530
Thruster maximum rotation multiplier, reached at minMass.
OutfittingModuleStats.maxRotationMultiplier
readonlyoptionalmaxSpeedMultiplier?:number
Defined in: src/ships/modules.ts:524
Thruster maximum top-speed multiplier, reached at minMass.
OutfittingModuleStats.maxSpeedMultiplier
readonlyoptionalminMass?:number
Defined in: src/ships/modules.ts:510
Minimum mass for the performance curve, in tonnes.
readonlyoptionalminMultiplier?:number
Defined in: src/ships/modules.ts:516
Minimum performance multiplier, reached at maxMass.
OutfittingModuleStats.minMultiplier
readonlyoptionalminRotationMultiplier?:number
Defined in: src/ships/modules.ts:528
Thruster minimum rotation multiplier, reached at maxMass.
OutfittingModuleStats.minRotationMultiplier
readonlyoptionalminSpeedMultiplier?:number
Defined in: src/ships/modules.ts:522
Thruster minimum top-speed multiplier, reached at maxMass.
OutfittingModuleStats.minSpeedMultiplier
readonlyoptionalmoduleProtection?:number
Defined in: src/ships/modules.ts:687
Module reinforcement package: the fraction of module damage it absorbs
(0.3 = 30%). Protects the modules, not the hull.
OutfittingModuleStats.moduleProtection
readonlyoptionalmount?:ModuleMount
Defined in: src/ships/modules.ts:349
How the weapon is aimed. Present only on hardpoint weapons that have a mount variant; absent on every other module.
OutfittingModuleIdentity.mount
readonlyname:string
Defined in: src/ships/modules.ts:333
Stable, descriptive English name, e.g. "Pulse Laser".
This is a canonical library label, not a byte-exact copy of the game's localized UI text: abbreviations such as FSD and AFM are expanded for readability. It is not localized and is not suitable as a localization key.
Not unique — the game shows most modules at several sizes and ratings, and every hull's armour shares the same five names. Use OutfittingModule.symbol as the key; getModulesByName returns every match.
readonlyoptionaloptMass?:number
Defined in: src/ships/modules.ts:508
Optimised mass, in tonnes — thrusters, shield generators, and FSDs.
readonlyoptionaloptMultiplier?:number
Defined in: src/ships/modules.ts:514
Performance multiplier at optMass — thruster speed or shield strength.
OutfittingModuleStats.optMultiplier
readonlyoptionaloptRotationMultiplier?:number
Defined in: src/ships/modules.ts:526
Thruster rotation multiplier at optMass, when distinct from acceleration.
OutfittingModuleStats.optRotationMultiplier
readonlyoptionaloptSpeedMultiplier?:number
Defined in: src/ships/modules.ts:520
Thruster top-speed multiplier at optMass, when distinct from acceleration.
OutfittingModuleStats.optSpeedMultiplier
readonlyoptionalpowerCapacity?:number
Defined in: src/ships/modules.ts:590
Power plant: power generated, in megawatts.
OutfittingModuleStats.powerCapacity
readonlyoptionalpowerDraw?:number
Defined in: src/ships/modules.ts:503
Power draw, in megawatts.
OutfittingModuleStats.powerDraw
readonlyoptionalprobeRadius?:number
Defined in: src/ships/modules.ts:725
Detailed Surface Scanner: probe radius, as a percentage (20 = the stock
20%).
Frontier stores this one as a percentage rather than a fraction, and the journal
reports it that way too — a grade 4 Expanded Probe Scanning Radius roll takes the
stock 20 to 28. The journal spells the label DSS_PatchRadius; the blueprint
recipe spells it ProbeRadius, and both resolve here.
OutfittingModuleStats.probeRadius
readonlyoptionalprojectileRange?:ProjectileRangeBoundaries
Defined in: src/ships/modules.ts:830
Projectile boundary parameters; these are not effective distances in metres.
OutfittingModuleStats.projectileRange
readonlyoptionalrateOfFire?:number
Defined in: src/ships/modules.ts:780
Shots per second with the burst pattern folded in — the journal's RateOfFire.
Absent on continuous-fire weapons (beam and mining lasers), whose damage is
already per second. Excludes charge and reload time; OutfittingModule.chargeTime
is the delay before a shot lands, while OutfittingModule.clipSize and
OutfittingModule.reloadTime give the sustained rate.
OutfittingModuleStats.rateOfFire
readonlyrating:ModuleRating
Defined in: src/ships/modules.ts:344
The grade letter, A–I — the letter in the "5A" the screen shows.
OutfittingModuleIdentity.rating
readonlyoptionalrefuelRate?:number
Defined in: src/ships/modules.ts:608
Fuel scoop: scoop rate, in tonnes per second.
OutfittingModuleStats.refuelRate
readonlyoptionalreloadTime?:number
Defined in: src/ships/modules.ts:806
Seconds to reload a clip.
OutfittingModuleStats.reloadTime
readonlyoptionalrestrictedToShips?: readonlystring[]
Defined in: src/ships/modules.ts:397
The hull symbol(s) a module is restricted to, when it is ship-specific — e.g.
["Explorer_NX"] for the Python Mk II's MkII Gravity Optimised thrusters.
Present only on the handful of non-armour modules limited to particular hulls. Armour is ship-specific too, but that restriction lives in OutfittingModule.ship / getBulkheadsForShip, not here. Symbols match Ship.symbol.
OutfittingModuleIdentity.restrictedToShips
readonlyoptionalrestrictedToSlot?:SlotRestriction
Defined in: src/ships/modules.ts:442
The slot restriction a module requires — it fits only mounts carrying this SlotRestriction, and no unrestricted mount at all.
Not to be confused with OutfittingModule.slot, which names one mount the module fills; this narrows a whole family of them, and the two never appear on the same record.
The mirror image of BuildSlot.restriction, and the other half of the same
rule: a mount's restriction says which modules it takes, this says which mounts
a module goes in. 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
five records the game sells for one kind of mount and nowhere else:
| Module | Requires |
|---|---|
Int_PlanetApproachSuite, Int_PlanetApproachSuite_Advanced
|
planetaryApproachSuite |
Int_LargeCargoRack_Size7_Class1, Int_LargeCargoRack_Size8_class1 (Mk II Cargo Rack) |
cargo |
Int_MultiDroneControl_MiningV2_Size5_Class5 (Mk II Mining Multi-Limpet Controller) |
limpetController |
It composes with OutfittingModule.restrictedToShips rather than replacing it: the Mk II racks name both the hull that can buy them and the kind of mount they go in, and a build must satisfy both. Where a module names a hull and nothing else — the Mk II Vessel Hangars, say — it fits that hull's ordinary optionals like anything else. As with OutfittingModule.slot, the rule is read off the record rather than the symbol.
import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';
import { INTERNAL_MODULES } from '@elite-dangerous-almanac/core/ships/modules-internal';
import { ShipLoadout } from '@elite-dangerous-almanac/core/ships/ship-loadout';
const rack = getModuleBySymbol('Int_LargeCargoRack_Size8_class1', INTERNAL_MODULES)!;
rack.restrictedToSlot; // -> 'cargo'
ShipLoadout.empty('PantherMkII').setModule('Cargo01', rack); // fits
try {
ShipLoadout.empty('PantherMkII').setModule('Slot01_Size8', rack);
} catch (error) {
if (error instanceof TypeError) error.message;
// -> 'ShipLoadout.setModule: Int_LargeCargoRack_Size8_class1 → Slot01_Size8: module only fits a mount that takes cargo racks and fuel tanks'
}OutfittingModuleIdentity.restrictedToSlot
readonlyoptionalroundsPerShot?:number
Defined in: src/ships/modules.ts:770
Rounds fired per shot, for the weapons that fire several at once (fragment cannons, shard cannons). Absent means one round per shot.
OutfittingModuleStats.roundsPerShot
readonlyoptionalscanAngle?:number
Defined in: src/ships/modules.ts:712
Scan cone half-angle, in degrees — how far off boresight a target can sit and still be scanned. Wide Angle raises it; Long Range and Lightweight narrow it.
OutfittingModuleStats.scanAngle
readonlyoptionalscannerRange?:number
Defined in: src/ships/modules.ts:707
Scan range, in metres.
On a utility scanner it is the distance the scan reaches. On a core sensor suite it is the range at which a contact with typical emissions resolves — the "typical sensor range" the outfitting panel shows in kilometres and the journal reports in metres, not the suite's absolute detection ceiling.
This is the sole distance field on utility scanners and sensor suites. A journal
may spell its modifier ScannerRange or Range; both labels resolve here. Weapon
distance is the separate OutfittingModule.maximumRange field.
OutfittingModuleStats.scannerRange
readonlyoptionalscanTime?:number
Defined in: src/ships/modules.ts:714
Seconds a scan takes to complete. Utility scanners only.
OutfittingModuleStats.scanTime
readonlyoptionalshieldAddition?:number
Defined in: src/ships/modules.ts:682
Guardian shield reinforcement package: shield megajoules added.
OutfittingModuleStats.shieldAddition
readonlyoptionalshieldBankDuration?:number
Defined in: src/ships/modules.ts:632
Shield cell bank: seconds one cell keeps reinforcing for.
OutfittingModuleStats.shieldBankDuration
readonlyoptionalshieldBankHeat?:number
Defined in: src/ships/modules.ts:628
Shield cell bank: waste heat generated by firing one cell.
OutfittingModuleStats.shieldBankHeat
readonlyoptionalshieldBankReinforcement?:number
Defined in: src/ships/modules.ts:626
Shield cell bank: shield megajoules restored per second while a cell runs.
OutfittingModuleStats.shieldBankReinforcement
readonlyoptionalshieldBankSpinUp?:number
Defined in: src/ships/modules.ts:630
Shield cell bank: seconds between firing a cell and the shields starting to rise.
OutfittingModuleStats.shieldBankSpinUp
readonlyoptionalshieldBoost?:number
Defined in: src/ships/modules.ts:619
Shield booster: shield strength bonus, as a fraction (0.04 = +4%).
OutfittingModuleStats.shieldBoost
readonlyoptionalshieldBrokenRegenRate?:number
Defined in: src/ships/modules.ts:617
Shield generator: broken (down) regeneration rate, MJ per second.
OutfittingModuleStats.shieldBrokenRegenRate
readonlyoptionalshieldRegenRate?:number
Defined in: src/ships/modules.ts:615
Shield generator: regeneration rate, MJ per second.
OutfittingModuleStats.shieldRegenRate
readonlyoptionalship?:string
Defined in: src/ships/modules.ts:360
The hull an armour variant belongs to, e.g. "Anaconda". Present only on the
core-category armour modules, which are the one ship-specific module;
absent on every generic module.
readonlyoptionalshotSpeed?:number
Defined in: src/ships/modules.ts:841
Projectile speed, in metres per second.
Absent on the weapons that have no projectile to speed up — the pulse, burst, beam and mining lasers, rail guns, Gauss cannons and mine launchers all hit (or drop) where they are aimed. No registry publishes a figure for them because there is none, so Long Range and Focused simply leave their shot speed alone; see ShipLoadout.applyBlueprint.
OutfittingModuleStats.shotSpeed
readonlyoptionalslot?:ModuleSlot
Defined in: src/ships/modules.ts:320
The one fixed mount this module fills, when it fills one: 'armour' or one of
the seven CoreSlotType core functions.
Present on every core module, and on the fifteen Guardian Hybrid power plants
and power distributors — which Frontier files under internal, but which go in
a core mount. Absent on everything else, because there is no one mount to name:
a weapon, a utility fitting or an ordinary optional internal fits any mount of
its kind that is large enough.
This is the module's half of the fit rule and BuildSlot.core is the mount's
half; ShipLoadout.setModule matches the two. The rule is read off the record,
not off the symbol: Int_Engine_* being thrusters is a naming habit the Python
Mk II's Int_MkIIAgileBoost_* already breaks, and a record you assembled yourself
without a slot will not go into a core mount at all. Resolve records from a
catalogue (getModuleBySymbol) and the question does not arise.
A fuelTank is the one module that fits somewhere else as well: its own core
mount and any optional slot large enough.
import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';
getModuleBySymbol('Int_Hyperdrive_Size5_Class5')?.slot; // -> 'frameShiftDrive'
getModuleBySymbol('Anaconda_Armour_Grade1')?.slot; // -> 'armour'
getModuleBySymbol('Int_CargoRack_Size4_Class1')?.slot; // -> undefined
readonlyoptionalsupercruiseOvercharge?:boolean
Defined in: src/ships/modules.ts:585
Frame shift drive: true on a Supercruise Overcharge drive, the line the
outfitting screen labels SCO.
A sparse capability flag on the 36 Overcharge drives and absent everywhere else,
including on the 36 ordinary drives of the same sizes and ratings. Read it rather
than matching Int_Hyperdrive_Overcharge on the symbol: the capability is the
record's to state, and a pre-engineered or fitted article carries the flag
through while its symbol is not always the one you looked up.
The two lines share every jump constant this library models, so the flag changes no calculation here; it is what an outfitting list filters and labels on. The overcharged supercruise behaviour itself — the boosted acceleration and the extra fuel it burns — is in-flight behaviour the game publishes no figures for, and the library models none of it.
import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';
getModuleBySymbol('Int_Hyperdrive_Overcharge_Size5_Class5')?.supercruiseOvercharge; // -> true
getModuleBySymbol('Int_Hyperdrive_Size5_Class5')?.supercruiseOvercharge; // -> undefinedOutfittingModuleStats.supercruiseOvercharge
readonlysymbol:string
Defined in: src/ships/modules.ts:256
Internal identifier, e.g. "Hpt_PulseLaser_Fixed_Small". Unique — the module's key.
OutfittingModuleIdentity.symbol
readonlyoptionalsystemsCapacity?:number
Defined in: src/ships/modules.ts:603
Power distributor: SYS capacitor capacity.
OutfittingModuleStats.systemsCapacity
readonlyoptionalsystemsRecharge?:number
Defined in: src/ships/modules.ts:605
Power distributor: maximum SYS recharge at four pips, in megajoules per second.
OutfittingModuleStats.systemsRecharge
readonlyoptionalthermalLoad?:number
Defined in: src/ships/modules.ts:816
Heat generated — per shot, or per second on a continuous-fire weapon.
OutfittingModuleStats.thermalLoad
readonlyoptionalthermalResistance?:number
Defined in: src/ships/modules.ts:643
Thermal resistance, as a fraction (negative is a weakness).
OutfittingModuleStats.thermalResistance
readonlyoptionalweaponsCapacity?:number
Defined in: src/ships/modules.ts:595
Power distributor: WEP capacitor capacity.
OutfittingModuleStats.weaponsCapacity
readonlyoptionalweaponsRecharge?:number
Defined in: src/ships/modules.ts:597
Power distributor: maximum WEP recharge at four pips, in megajoules per second.
Guides
astro
Classes (1)
ProceduralSystem
Properties
Accessors
Methods
Interfaces (16)
Type Aliases (3)
Variables (11)
Functions (37)
- absoluteBoxelToBoxelCode
- boxelCodeToAbsoluteBoxel
- boxelCodeToLetters
- boxelEdgeLy
- boxelInternalSize
- canonicalizeSectorName
- canonicalizeSystemName
- decodeModSystemAddress
- decodeSystemAddress
- encodeModSystemAddress
- encodeSystemAddress
- findHandAuthoredRegionAt
- formatSystemName
- getCodexRegion
- getCodexRegionByName
- getHandAuthoredRegionOrigin
- getNebulaByName
- isPermitLockedRegionName
- isPermitLockedSystemName
- isProceduralSystemName
- lettersToBoxelCode
- massCodeToSizeClass
- nearestNebulae
- nebulaeWithin
- parseSystemName
- permitLockedRegionForSystemName
- permitLockedSystemForAddress
- permitLockedSystemForName
- permitLockForSystemName
- resolveNamingRegionOrigin
- sectorGridPositionFromGalacticPosition
- sectorGridPositionFromName
- sectorNameFromGalacticPosition
- sectorNameFromGridPosition
- sizeClassToMassCode
- toSystemAddress
- tryToSystemAddress
commodities
Interfaces (1)
Type Aliases (1)
Variables (3)
Functions (3)
equipment
Interfaces (6)
Type Aliases (8)
Variables (3)
Functions (10)
Subpath modules (2)
i18n
Interfaces (1)
Type Aliases (1)
Functions (17)
- getBlueprintName
- getCalculationIssueMessage
- getEngineeringGroupName
- getExperimentalEffectDescription
- getExperimentalEffectName
- getLoadoutEditErrorMessage
- getLoadoutIssueMessage
- getLoadoutSlotName
- getMaterialName
- getMicroResourceName
- getModuleName
- getOutfittingFamilyName
- getPreEngineeredVariantName
- getShipManufacturer
- getShipName
- getSlefDiagnosticMessage
- getSlotRestrictionLabel
materials
Enumerations (2)
Interfaces (2)
Type Aliases (2)
Variables (9)
ships
Classes (3)
BuildMetrics
Methods
- armourMetrics()
- buildCost()
- buildMass()
- cellBanks()
- distributorMetrics()
- distributorMetricsResult()
- frameShiftDrive()
- frameShiftDriveMassFactor()
- fuelPerJump()
- heatMetrics()
- heatMetricsResult()
- jumpRange()
- jumpRangeSummary()
- ladenJumpRange()
- loadout()
- maxJumpRange()
- mobilityCapacitorMetrics()
- mobilityCapacitorMetricsResult()
- mobilityMetrics()
- mobilityMetricsResult()
- powerBudget()
- shieldCapacitorMetrics()
- shieldCapacitorMetricsResult()
- shieldMetrics()
- shieldMetricsResult()
- shieldRecovery()
- shieldRecoveryResult()
- standardLoad()
- standardLoadResult()
- thrusters()
- totalRange()
- weaponMetrics()
- weaponsCapacitorMetrics()
- of()
LoadoutEditError
Constructors
Properties
Methods
ShipLoadout
Accessors
- cargoCapacity
- fuelCapacity
- hullValue
- importOutcomes
- modulesValue
- rebuy
- shipIdent
- shipName
- shipSymbol
- sourcePurchase
- unladenMass
Methods
- applyBlueprint()
- availableBlueprints()
- availableExperimentalEffects()
- clearEngineering()
- completeEngineeringGrade()
- fittedModuleAt()
- fittedModules()
- modulesForSlot()
- removeModule()
- repairFixedMount()
- setExperimentalEffect()
- setModule()
- setModuleEnabled()
- setModulePriority()
- setPreEngineeredVariant()
- slots()
- toLoadoutEvent()
- toSlef()
- toSlefString()
- validation()
- default()
- empty()
- fromLoadout()
- fromSlef()
Interfaces (125)
- AmmunitionCapacity
- AmmunitionStats
- ApplyBlueprintOptions
- ArmourInput
- ArmourMetrics
- AvailableBlueprint
- Blueprint
- BlueprintFeature
- BlueprintGrade
- BlueprintModuleEngineering
- BuildCost
- BuildCredits
- BuildMass
- BuildSlotBase
- BuildWeaponMetrics
- BulkheadParams
- CalculationIssue
- CellBankInput
- CellBankMetrics
- CellBankSummary
- CoreBuildSlot
- CoreSlots
- DamageComponents
- DamageDistribution
- DamageResistanceParams
- DamageSplit
- DamageTypeValues
- DistributorCapacitorMetrics
- DistributorInput
- DistributorMetrics
- DistributorOptions
- DistributorPips
- EngineeringMaterial
- EngineeringModifier
- EngineeringNormalizationUnchanged
- EngineeringNormalizationUnsupported
- EngineeringNormalized
- EngineeringOptionGroup
- ExperimentalContribution
- ExperimentalEffect
- ExperimentalEffectUnchanged
- ExperimentalEffectUnsupported
- ExperimentalEffectUpdated
- FittedModule
- FittedWeaponMetrics
- FrameShiftDriveJumpStats
- FrameShiftDriveParams
- FuelCapacity
- GunsightPoint
- HardpointBuildSlot
- HardpointSlotSpec
- HeatInput
- HeatMetrics
- HeatState
- HeatWeapon
- HullReinforcementParams
- JumpOptions
- JumpRangeSummary
- LoadoutCalculationModule
- LoadoutEvent
- LoadoutExportOptions
- LoadoutIssue
- LoadoutMass
- LoadoutModule
- LoadoutValidation
- LoadoutValidationInput
- MassCurveStats
- MobilityCapacitorInput
- MobilityCapacitorMetrics
- MobilityCapacitorOptions
- MobilityInput
- MobilityMetrics
- ModuleLimitEntry
- ModuleLimitIncrease
- ModuleLimitUsage
- ModuleReinforcementParams
- OptionalBuildSlot
- OptionalSlotSpec
- OutfittingModule
- OutfittingModuleIdentity
- OutfittingModuleStats
- ParsedSlot
- PowerBand
- PowerBudget
- PowerConsumer
- PowerConsumerResult
- PowerDistributorStats
- PowerGenerationStats
- PreEngineeredModifier
- PreEngineeredVariant
- ProjectileRangeBoundaries
- ShieldBoosterParams
- ShieldCapacitorInput
- ShieldCapacitorMetrics
- ShieldCapacitorOptions
- ShieldGeneratorParams
- ShieldInput
- ShieldMetrics
- ShieldRecovery
- ShieldRecoveryInput
- ShieldRecoveryOptions
- ShieldRegenerationStats
- Ship
- ShipSlots
- SimpleBuildSlot
- SlefDiagnostic
- SlefEntry
- SlefExportOptions
- SlefHeader
- SlefInspection
- SlefStringifyOptions
- SourceModuleValue
- SourcePurchaseRecord
- StandardLoadInputs
- ThrusterCurveParams
- ThrusterParams
- TotalRangeDetails
- ValidationModule
- WeaponDamageStats
- WeaponMetrics
- WeaponsCapacitorInput
- WeaponsCapacitorMetrics
- WeaponsOptions
- WeaponStats
- WeaponTotals
Type Aliases (44)
- BlueprintGrades
- BuildSlot
- CalculationIssueReason
- CalculationResult
- CoreSlotType
- DamageResistances
- DamageType
- EngineeringGroupId
- EngineeringNormalizationCode
- EngineeringNormalizationResult
- ExperimentalEffectMutationCode
- ExperimentalEffectMutationResult
- FixedMountRepairResult
- GunsightOffset
- HardpointRestriction
- ImmovableReason
- LoadoutEditErrorCode
- LoadoutImportOutcome
- LoadoutIssueCode
- LoadoutIssueParam
- LoadoutIssueParams
- LoadoutSlot
- ModifierMethod
- ModuleCategory
- ModuleEngineering
- ModuleExclusionGroup
- ModuleFitConstraint
- ModuleGuidance
- ModuleLimitGroup
- ModuleMount
- ModuleRating
- ModuleSlot
- OptionalRestriction
- OutfittingFamilyId
- PreEngineeredAcquisition
- ShipGunsight
- ShipGunsightCatalogue
- Slef
- SlefConstraint
- SlefDiagnosticCode
- SlotKind
- SlotRestriction
- StandardLoad
- ThrusterLoad
Variables (10)
Functions (85)
- ammunitionCapacity
- armourMetrics
- armourPiercingFactor
- calculateCargoCapacity
- calculateFuelCapacity
- calculateModuleLimits
- calculateUnladenMass
- cellBankSummary
- combinedRateOfFire
- computeModifiers
- damageFalloff
- damagePerSecond
- distributorMetrics
- effectiveHitPoints
- effectiveWeaponThermalLoad
- energyPerSecond
- enumerateSlots
- equilibriumHeatLevel
- frameShiftDriveMassFactor
- fuelPerJump
- getBlueprint
- getBlueprintGrade
- getBlueprintsForModule
- getBulkheadsForShip
- getEngineeringGroup
- getExperimentalEffect
- getExperimentalsForBlueprint
- getExperimentalsForModule
- getLoadoutModifier
- getModuleBySymbol
- getModulesByName
- getPreEngineeredJournalModifiers
- getPreEngineeredModifiers
- getPreEngineeredStats
- getPreEngineeredVariants
- getShipByName
- getShipBySymbol
- getShipGunsight
- getShipSlots
- getSourceModuleValue
- hasFrameShiftDriveJumpStats
- hasMassCurveStats
- hasPowerDistributorStats
- hasPowerGenerationStats
- hasShieldRegenerationStats
- hasWeaponDamageStats
- heatLevelAtTime
- heatMetrics
- heatPerSecond
- identifyPreEngineeredVariant
- inspectSlef
- isPreEngineered
- mapDamageTypes
- mobilityCapacitorMetrics
- mobilityMetrics
- parseSlef
- parseSlotName
- powerBudget
- projectGunsight
- resolveBlueprintForModule
- secondsToHeatLevel
- shieldCapacitorMetrics
- shieldMassCurveMultiplier
- shieldMetrics
- shieldRecovery
- shieldStrength
- singleJumpRange
- sourcePurchaseFromLoadout
- splitDamage
- stackArmourResistance
- stackShieldResistance
- stringifySlef
- sumMaterials
- sumSourceModuleValues
- sumWeaponMetrics
- sustainedDamagePerSecond
- sustainedFireFactor
- systemsResistance
- thrusterMassCurveMultiplier
- toSlef
- totalRange
- unresolvedModifiers
- validateLoadout
- weaponMetrics
- weaponsCapacitorMetrics