ships.Interface.OutfittingModule - Elite-Dangerous-Almanac/Almanac-Core GitHub Wiki

@elite-dangerous-almanac/core / ships / OutfittingModule

Interface: OutfittingModule

Defined in: src/ships/modules.ts:885

One fittable outfitting module: its identity and sparse stats in one flat record.

Remarks

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.

Example

import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';

getModuleBySymbol('Int_Hyperdrive_Size5_Class5')?.engineeringGroup;
// -> 'frameShiftDrives'

Extends

Properties

alwaysPowered?

readonly optional alwaysPowered?: boolean

Defined in: src/ships/modules.ts:769

true when a hardpoint-mounted module draws its power continuously.

Remarks

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.

Inherited from

OutfittingModuleStats.alwaysPowered


ammoMaximum?

readonly optional ammoMaximum?: number

Defined in: src/ships/modules.ts:826

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.

Inherited from

OutfittingModuleStats.ammoMaximum


armourPiercing?

readonly optional armourPiercing?: number

Defined in: src/ships/modules.ts:843

Armour piercing rating. Damage to a hull is scaled by min(1, armourPiercing / hardness) against a hull of that Ship.hardness.

Inherited from

OutfittingModuleStats.armourPiercing


bootTime?

readonly optional bootTime?: number

Defined in: src/ships/modules.ts:523

Boot time from power-on, in seconds.

Inherited from

OutfittingModuleStats.bootTime


burstInterval?

readonly optional burstInterval?: number

Defined in: src/ships/modules.ts:804

Seconds between shots — between bursts on a burst-fire weapon.

Inherited from

OutfittingModuleStats.burstInterval


burstRateOfFire?

readonly optional burstRateOfFire?: number

Defined in: src/ships/modules.ts:808

Shots per second within a burst.

Inherited from

OutfittingModuleStats.burstRateOfFire


burstRounds?

readonly optional burstRounds?: number

Defined in: src/ships/modules.ts:806

Shots in one burst. Absent (or 1) on a weapon that does not fire in bursts.

Inherited from

OutfittingModuleStats.burstRounds


cabinCapacity?

readonly optional cabinCapacity?: number

Defined in: src/ships/modules.ts:634

Passenger cabin: capacity, in passenger berths.

Inherited from

OutfittingModuleStats.cabinCapacity


cargoCapacity?

readonly optional cargoCapacity?: number

Defined in: src/ships/modules.ts:632

Cargo rack: capacity, in tonnes.

Inherited from

OutfittingModuleStats.cargoCapacity


category

readonly category: ModuleCategory

Defined in: src/ships/modules.ts:286

Which kind of slot the module fits.

Remarks

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.

Inherited from

OutfittingModuleIdentity.category


causticResistance?

readonly optional causticResistance?: number

Defined in: src/ships/modules.ts:669

Caustic resistance, as a fraction (negative is a weakness).

Inherited from

OutfittingModuleStats.causticResistance


chargeTime?

readonly optional chargeTime?: number

Defined in: src/ships/modules.ts:810

Seconds spent charging before a shot (rail guns), if any.

Inherited from

OutfittingModuleStats.chargeTime


class

readonly class: number

Defined in: src/ships/modules.ts:360

The module size, 08 — the number in the "5A" the outfitting screen shows.

Remarks

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.

Inherited from

OutfittingModuleIdentity.class


clipSize?

readonly optional clipSize?: number

Defined in: src/ships/modules.ts:819

Rounds in a clip before reloading. Absent on weapons that never reload.

Remarks

A capacity, and the largest AmmoInClip a journal can report for the module. ammunitionCapacity in ./ammunition reads it together with OutfittingModule.ammoMaximum.

Inherited from

OutfittingModuleStats.clipSize


cost?

readonly optional cost?: number

Defined in: src/ships/modules.ts:492

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.

Remarks

Absent on the handful of records no registry prices: the grant-only *_free articles, the Community Goal Corrosion Resistant Cargo Racks, which no station sells but which are not free, and the 1B shield generator. Treat undefined as "unknown", never as free; see data/ships/SOURCES.md.

Inherited from

OutfittingModuleIdentity.cost


damage?

readonly optional damage?: number

Defined in: src/ships/modules.ts:779

Damage per round — or per second on a continuous-fire (beam) weapon.

Inherited from

OutfittingModuleStats.damage


damageComponents?

readonly optional damageComponents?: DamageComponents

Defined in: src/ships/modules.ts:787

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.

Inherited from

OutfittingModuleStats.damageComponents


damageDistribution?

readonly optional damageDistribution?: DamageDistribution

Defined in: src/ships/modules.ts:781

How damage splits across the damage types.

Inherited from

OutfittingModuleStats.damageDistribution


distributorDraw?

readonly optional distributorDraw?: number

Defined in: src/ships/modules.ts:836

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.

Inherited from

OutfittingModuleStats.distributorDraw


engineeringGroup

readonly engineeringGroup: EngineeringGroupId | null

Defined in: src/ships/modules.ts:291

Stable engineering-menu family, or null when the stock module has no ordinary engineering menu. See EngineeringGroupId.

Inherited from

OutfittingModuleIdentity.engineeringGroup


engineeringLocked?

readonly optional engineeringLocked?: boolean

Defined in: src/ships/modules.ts:689

Whether this particular resolved article accepts no further engineering.

Remarks

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.

Inherited from

OutfittingModuleStats.engineeringLocked


engineHeatRate?

readonly optional engineHeatRate?: number

Defined in: src/ships/modules.ts:558

Thrusters: waste heat generated per second at top speed.

Remarks

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.

Inherited from

OutfittingModuleStats.engineHeatRate


enginesCapacity?

readonly optional enginesCapacity?: number

Defined in: src/ships/modules.ts:619

Power distributor: ENG capacitor capacity.

Inherited from

OutfittingModuleStats.enginesCapacity


enginesRecharge?

readonly optional enginesRecharge?: number

Defined in: src/ships/modules.ts:621

Power distributor: maximum ENG recharge at four pips, in megajoules per second.

Inherited from

OutfittingModuleStats.enginesRecharge


entitlement?

readonly optional entitlement?: string

Defined in: src/ships/modules.ts:383

Frontier's DLC / purchase-grant entitlement token, e.g. "ELITE_HORIZONS_V_PLANETARY_LANDINGS". Present only on gated modules.

Inherited from

OutfittingModuleIdentity.entitlement


exclusionGroup?

readonly optional exclusionGroup?: ModuleExclusionGroup

Defined in: src/ships/modules.ts:465

One-per-ship family, absent when the module has no exclusive fitting rule. Two fitted modules sharing this id are structurally invalid.

Inherited from

OutfittingModuleIdentity.exclusionGroup


explosiveResistance?

readonly optional explosiveResistance?: number

Defined in: src/ships/modules.ts:667

Explosive resistance, as a fraction (negative is a weakness).

Inherited from

OutfittingModuleStats.explosiveResistance


falloffRange?

readonly optional falloffRange?: number

Defined in: src/ships/modules.ts:850

Range at which damage starts to drop off, in metres.

Inherited from

OutfittingModuleStats.falloffRange


familyId

readonly familyId: OutfittingFamilyId

Defined in: src/ships/modules.ts:307

Stable outfitting family used to group an outfitting list, such as 'cargoRacks', 'shieldGenerators' or 'beamLasers'. See OutfittingFamilyId.

Remarks

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.

Inherited from

OutfittingModuleIdentity.familyId


fsdHeatRate?

readonly optional fsdHeatRate?: number

Defined in: src/ships/modules.ts:577

Frame shift drive: waste heat generated per second while charging a jump.

Remarks

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 Overcharge (SCO) drive matches the plain drive of the same size.

Inherited from

OutfittingModuleStats.fsdHeatRate


fuelCapacity?

readonly optional fuelCapacity?: number

Defined in: src/ships/modules.ts:630

Fuel tank: capacity, in tonnes.

Inherited from

OutfittingModuleStats.fuelCapacity


fuelMul?

readonly optional fuelMul?: number

Defined in: src/ships/modules.ts:563

FSD: rating (linear) fuel constant.

Inherited from

OutfittingModuleStats.fuelMul


fuelPower?

readonly optional fuelPower?: number

Defined in: src/ships/modules.ts:565

FSD: size (power) fuel constant.

Inherited from

OutfittingModuleStats.fuelPower


grantOnly?

readonly optional grantOnly?: true

Defined in: src/ships/modules.ts:403

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.

Remarks

They are the starter *_free fittings and the 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.

Inherited from

OutfittingModuleIdentity.grantOnly


guardianZoneResistance?

readonly optional guardianZoneResistance?: boolean

Defined in: src/ships/modules.ts:680

Whether Anti-Guardian Zone Resistance protects this Guardian module from a Thargoid anti-Guardian field.

Remarks

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 Guardian Nanite Torpedo Pylons carry it inherently; read engineered protection from a fitted module's FittedModule.effectiveStats.

Inherited from

OutfittingModuleStats.guardianZoneResistance


guidance?

readonly optional guidance?: ModuleGuidance

Defined in: src/ships/modules.ts:372

A missile/torpedo hardpoint's guidance. Present only on the launchers that have one; absent on everything else.

Inherited from

OutfittingModuleIdentity.guidance


heatEfficiency?

readonly optional heatEfficiency?: number

Defined in: src/ships/modules.ts:612

Power plant: heat efficiency (lower runs cooler).

Inherited from

OutfittingModuleStats.heatEfficiency


hullBoost?

readonly optional hullBoost?: number

Defined in: src/ships/modules.ts:700

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.

Remarks

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.

Inherited from

OutfittingModuleStats.hullBoost


hullReinforcement?

readonly optional hullReinforcement?: number

Defined in: src/ships/modules.ts:702

Hull reinforcement package: hull hit points added.

Inherited from

OutfittingModuleStats.hullReinforcement


integrity?

readonly optional integrity?: number

Defined in: src/ships/modules.ts:519

Integrity (hit points against module damage).

Inherited from

OutfittingModuleStats.integrity


interdictorFacingLimit?

readonly optional interdictorFacingLimit?: number

Defined in: src/ships/modules.ts:752

FSD interdictor: maximum target angle off boresight, in degrees.

Inherited from

OutfittingModuleStats.interdictorFacingLimit


interdictorRange?

readonly optional interdictorRange?: number

Defined in: src/ships/modules.ts:757

FSD interdictor: maximum target range, in seconds to intercept — the units the game measures a supercruise separation in, not a distance.

Inherited from

OutfittingModuleStats.interdictorRange


jitter?

readonly optional jitter?: number

Defined in: src/ships/modules.ts:865

Maximum aim deviation, in degrees.

Inherited from

OutfittingModuleStats.jitter


jumpBoost?

readonly optional jumpBoost?: number

Defined in: src/ships/modules.ts:607

Guardian FSD Booster: flat jump-range bonus, in light-years.

Inherited from

OutfittingModuleStats.jumpBoost


kineticResistance?

readonly optional kineticResistance?: number

Defined in: src/ships/modules.ts:663

Kinetic resistance, as a fraction (0.4 = 40% resisted, -0.2 = 20% weaker).

Inherited from

OutfittingModuleStats.kineticResistance


limitGroup?

readonly optional limitGroup?: "experimentalWeapon"

Defined in: src/ships/modules.ts:471

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.

Inherited from

OutfittingModuleIdentity.limitGroup


limitIncrease?

readonly optional limitIncrease?: ModuleLimitIncrease

Defined in: src/ships/modules.ts:480

Increase this fitted module grants to a per-ship count allowance.

Remarks

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.

Inherited from

OutfittingModuleIdentity.limitIncrease


mass?

readonly optional mass?: number

Defined in: src/ships/modules.ts:517

Mass, in tonnes.

Inherited from

OutfittingModuleStats.mass


maxFuel?

readonly optional maxFuel?: number

Defined in: src/ships/modules.ts:561

FSD: maximum fuel per jump, in tonnes.

Inherited from

OutfittingModuleStats.maxFuel


maximumRange?

readonly optional maximumRange?: number

Defined in: src/ships/modules.ts:848

Maximum effective range, in metres. A weapon does no damage beyond it; on a non-scanner utility module, it is the effect's reach.

Inherited from

OutfittingModuleStats.maximumRange


maxMass?

readonly optional maxMass?: number

Defined in: src/ships/modules.ts:530

Maximum mass for the performance curve, in tonnes.

Inherited from

OutfittingModuleStats.maxMass


maxMultiplier?

readonly optional maxMultiplier?: number

Defined in: src/ships/modules.ts:536

Maximum performance multiplier, reached at minMass.

Inherited from

OutfittingModuleStats.maxMultiplier


maxRotationMultiplier?

readonly optional maxRotationMultiplier?: number

Defined in: src/ships/modules.ts:548

Thruster maximum rotation multiplier, reached at minMass.

Inherited from

OutfittingModuleStats.maxRotationMultiplier


maxSpeedMultiplier?

readonly optional maxSpeedMultiplier?: number

Defined in: src/ships/modules.ts:542

Thruster maximum top-speed multiplier, reached at minMass.

Inherited from

OutfittingModuleStats.maxSpeedMultiplier


minMass?

readonly optional minMass?: number

Defined in: src/ships/modules.ts:528

Minimum mass for the performance curve, in tonnes.

Inherited from

OutfittingModuleStats.minMass


minMultiplier?

readonly optional minMultiplier?: number

Defined in: src/ships/modules.ts:534

Minimum performance multiplier, reached at maxMass.

Inherited from

OutfittingModuleStats.minMultiplier


minRotationMultiplier?

readonly optional minRotationMultiplier?: number

Defined in: src/ships/modules.ts:546

Thruster minimum rotation multiplier, reached at maxMass.

Inherited from

OutfittingModuleStats.minRotationMultiplier


minSpeedMultiplier?

readonly optional minSpeedMultiplier?: number

Defined in: src/ships/modules.ts:540

Thruster minimum top-speed multiplier, reached at maxMass.

Inherited from

OutfittingModuleStats.minSpeedMultiplier


moduleProtection?

readonly optional moduleProtection?: number

Defined in: src/ships/modules.ts:709

Module reinforcement package: the fraction of module damage it absorbs (0.3 = 30%). Protects the modules, not the hull.

Inherited from

OutfittingModuleStats.moduleProtection


mount?

readonly optional mount?: ModuleMount

Defined in: src/ships/modules.ts:367

How the weapon is aimed. Present only on hardpoint weapons that have a mount variant; absent on every other module.

Inherited from

OutfittingModuleIdentity.mount


name

readonly name: string

Defined in: src/ships/modules.ts:351

Stable, descriptive English name, e.g. "Pulse Laser".

Remarks

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.

Inherited from

OutfittingModuleIdentity.name


optMass?

readonly optional optMass?: number

Defined in: src/ships/modules.ts:526

Optimised mass, in tonnes — thrusters, shield generators, and FSDs.

Inherited from

OutfittingModuleStats.optMass


optMultiplier?

readonly optional optMultiplier?: number

Defined in: src/ships/modules.ts:532

Performance multiplier at optMass — thruster speed or shield strength.

Inherited from

OutfittingModuleStats.optMultiplier


optRotationMultiplier?

readonly optional optRotationMultiplier?: number

Defined in: src/ships/modules.ts:544

Thruster rotation multiplier at optMass, when distinct from acceleration.

Inherited from

OutfittingModuleStats.optRotationMultiplier


optSpeedMultiplier?

readonly optional optSpeedMultiplier?: number

Defined in: src/ships/modules.ts:538

Thruster top-speed multiplier at optMass, when distinct from acceleration.

Inherited from

OutfittingModuleStats.optSpeedMultiplier


powerCapacity?

readonly optional powerCapacity?: number

Defined in: src/ships/modules.ts:610

Power plant: power generated, in megawatts.

Inherited from

OutfittingModuleStats.powerCapacity


powerDraw?

readonly optional powerDraw?: number

Defined in: src/ships/modules.ts:521

Power draw, in megawatts.

Inherited from

OutfittingModuleStats.powerDraw


probeRadius?

readonly optional probeRadius?: number

Defined in: src/ships/modules.ts:747

Detailed Surface Scanner: probe radius, as a percentage (20 = the stock 20%).

Remarks

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.

Inherited from

OutfittingModuleStats.probeRadius


projectileRange?

readonly optional projectileRange?: ProjectileRangeBoundaries

Defined in: src/ships/modules.ts:852

Projectile boundary parameters; these are not effective distances in metres.

Inherited from

OutfittingModuleStats.projectileRange


rateOfFire?

readonly optional rateOfFire?: number

Defined in: src/ships/modules.ts:802

Shots per second with the burst pattern folded in — the journal's RateOfFire.

Remarks

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.

Inherited from

OutfittingModuleStats.rateOfFire


rating

readonly rating: ModuleRating

Defined in: src/ships/modules.ts:362

The grade letter, AI — the letter in the "5A" the screen shows.

Inherited from

OutfittingModuleIdentity.rating


refuelRate?

readonly optional refuelRate?: number

Defined in: src/ships/modules.ts:628

Fuel scoop: scoop rate, in tonnes per second.

Inherited from

OutfittingModuleStats.refuelRate


reloadTime?

readonly optional reloadTime?: number

Defined in: src/ships/modules.ts:828

Seconds to reload a clip.

Inherited from

OutfittingModuleStats.reloadTime


restrictedToShips?

readonly optional restrictedToShips?: readonly string[]

Defined in: src/ships/modules.ts:415

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.

Remarks

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.

Inherited from

OutfittingModuleIdentity.restrictedToShips


restrictedToSlot?

readonly optional restrictedToSlot?: SlotRestriction

Defined in: src/ships/modules.ts:460

The slot restriction a module requires — it fits only mounts carrying this SlotRestriction, and no unrestricted mount at all.

Remarks

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 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.

Example

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'
}

Inherited from

OutfittingModuleIdentity.restrictedToSlot


roundsPerShot?

readonly optional roundsPerShot?: number

Defined in: src/ships/modules.ts:792

Rounds fired per shot, for the weapons that fire several at once (fragment cannons, shard cannons). Absent means one round per shot.

Inherited from

OutfittingModuleStats.roundsPerShot


scanAngle?

readonly optional scanAngle?: number

Defined in: src/ships/modules.ts:734

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.

Inherited from

OutfittingModuleStats.scanAngle


scannerRange?

readonly optional scannerRange?: number

Defined in: src/ships/modules.ts:729

Scan range, in metres.

Remarks

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.

Inherited from

OutfittingModuleStats.scannerRange


scanTime?

readonly optional scanTime?: number

Defined in: src/ships/modules.ts:736

Seconds a scan takes to complete. Utility scanners only.

Inherited from

OutfittingModuleStats.scanTime


shieldAddition?

readonly optional shieldAddition?: number

Defined in: src/ships/modules.ts:704

Guardian shield reinforcement package: shield megajoules added.

Inherited from

OutfittingModuleStats.shieldAddition


shieldBankDuration?

readonly optional shieldBankDuration?: number

Defined in: src/ships/modules.ts:654

Shield cell bank: seconds one cell keeps reinforcing for.

Inherited from

OutfittingModuleStats.shieldBankDuration


shieldBankHeat?

readonly optional shieldBankHeat?: number

Defined in: src/ships/modules.ts:650

Shield cell bank: waste heat generated by firing one cell.

Inherited from

OutfittingModuleStats.shieldBankHeat


shieldBankReinforcement?

readonly optional shieldBankReinforcement?: number

Defined in: src/ships/modules.ts:648

Shield cell bank: shield megajoules restored per second while a cell runs.

Inherited from

OutfittingModuleStats.shieldBankReinforcement


shieldBankSpinUp?

readonly optional shieldBankSpinUp?: number

Defined in: src/ships/modules.ts:652

Shield cell bank: seconds between firing a cell and the shields starting to rise.

Inherited from

OutfittingModuleStats.shieldBankSpinUp


shieldBoost?

readonly optional shieldBoost?: number

Defined in: src/ships/modules.ts:641

Shield booster: shield strength bonus, as a fraction (0.04 = +4%).

Inherited from

OutfittingModuleStats.shieldBoost


shieldBrokenRegenRate?

readonly optional shieldBrokenRegenRate?: number

Defined in: src/ships/modules.ts:639

Shield generator: broken (down) regeneration rate, MJ per second.

Inherited from

OutfittingModuleStats.shieldBrokenRegenRate


shieldRegenRate?

readonly optional shieldRegenRate?: number

Defined in: src/ships/modules.ts:637

Shield generator: regeneration rate, MJ per second.

Inherited from

OutfittingModuleStats.shieldRegenRate


ship?

readonly optional ship?: string

Defined in: src/ships/modules.ts:378

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.

Inherited from

OutfittingModuleIdentity.ship


shotSpeed?

readonly optional shotSpeed?: number

Defined in: src/ships/modules.ts:863

Projectile speed, in metres per second.

Remarks

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.

Inherited from

OutfittingModuleStats.shotSpeed


slot?

readonly optional slot?: ModuleSlot

Defined in: src/ships/modules.ts:338

The one fixed mount this module fills, when it fills one: 'armour' or one of the seven CoreSlotType core functions.

Remarks

Present on every core module, and on the 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.

Example

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

Inherited from

OutfittingModuleIdentity.slot


supercruiseOvercharge?

readonly optional supercruiseOvercharge?: boolean

Defined in: src/ships/modules.ts:605

Frame shift drive: true on a Supercruise Overcharge drive, the line the outfitting screen labels SCO.

Remarks

A sparse capability flag on the Overcharge drives and absent everywhere else, including on the 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, so a consumer that reads the flag stays correct for any article the catalogue flags, whatever Frontier names it.

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. 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.

Example

import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';

getModuleBySymbol('Int_Hyperdrive_Overcharge_Size5_Class5')?.supercruiseOvercharge; // -> true
getModuleBySymbol('Int_Hyperdrive_Size5_Class5')?.supercruiseOvercharge; // -> undefined

Inherited from

OutfittingModuleStats.supercruiseOvercharge


symbol

readonly symbol: string

Defined in: src/ships/modules.ts:274

Internal identifier, e.g. "Hpt_PulseLaser_Fixed_Small". Unique — the module's key.

Inherited from

OutfittingModuleIdentity.symbol


systemsCapacity?

readonly optional systemsCapacity?: number

Defined in: src/ships/modules.ts:623

Power distributor: SYS capacitor capacity.

Inherited from

OutfittingModuleStats.systemsCapacity


systemsRecharge?

readonly optional systemsRecharge?: number

Defined in: src/ships/modules.ts:625

Power distributor: maximum SYS recharge at four pips, in megajoules per second.

Inherited from

OutfittingModuleStats.systemsRecharge


thermalLoad?

readonly optional thermalLoad?: number

Defined in: src/ships/modules.ts:838

Heat generated — per shot, or per second on a continuous-fire weapon.

Inherited from

OutfittingModuleStats.thermalLoad


thermalResistance?

readonly optional thermalResistance?: number

Defined in: src/ships/modules.ts:665

Thermal resistance, as a fraction (negative is a weakness).

Inherited from

OutfittingModuleStats.thermalResistance


weaponsCapacity?

readonly optional weaponsCapacity?: number

Defined in: src/ships/modules.ts:615

Power distributor: WEP capacitor capacity.

Inherited from

OutfittingModuleStats.weaponsCapacity


weaponsRecharge?

readonly optional weaponsRecharge?: number

Defined in: src/ships/modules.ts:617

Power distributor: maximum WEP recharge at four pips, in megajoules per second.

Inherited from

OutfittingModuleStats.weaponsRecharge

⚠️ **GitHub.com Fallback** ⚠️