@elite-dangerous-almanac/core 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROVENANCE/i18n/SOURCES.md +92 -35
- package/PROVENANCE/ships/SOURCES.md +54 -14
- package/THIRD_PARTY_NOTICES.md +3 -0
- package/dist/chunk-3BM5BHI3.js +1 -0
- package/dist/chunk-3BM5BHI3.js.map +1 -0
- package/dist/{chunk-EWAS7KMF.js → chunk-4S6WB7QR.js} +1 -1
- package/dist/chunk-4TFAZX73.js +1 -0
- package/dist/{chunk-PYV7VI6I.js.map → chunk-4TFAZX73.js.map} +1 -1
- package/dist/chunk-4ZGUSHTP.js +1 -0
- package/dist/{chunk-5V4OXZLE.js.map → chunk-4ZGUSHTP.js.map} +1 -1
- package/dist/{chunk-BZDTEXXM.js → chunk-6BO5JJNI.js} +1 -1
- package/dist/{chunk-3MPLVD2R.js → chunk-6G6TYW2D.js} +1 -1
- package/dist/chunk-AFS6HN3D.js +1 -0
- package/dist/chunk-AFS6HN3D.js.map +1 -0
- package/dist/chunk-CJWFY6OX.js +1 -0
- package/dist/{chunk-JKWV3CZN.js.map → chunk-CJWFY6OX.js.map} +1 -1
- package/dist/{chunk-24INI4U7.js → chunk-CX7B67OI.js} +1 -1
- package/dist/chunk-CX7B67OI.js.map +1 -0
- package/dist/chunk-EKQCVCMK.js +1 -0
- package/dist/{chunk-WHAU3C4E.js.map → chunk-EKQCVCMK.js.map} +1 -1
- package/dist/chunk-ELT3FEA4.js +1 -0
- package/dist/{chunk-6FKBZPI6.js.map → chunk-ELT3FEA4.js.map} +1 -1
- package/dist/{chunk-3EO7PTAP.js → chunk-EVJ32UF3.js} +1 -1
- package/dist/{chunk-3EO7PTAP.js.map → chunk-EVJ32UF3.js.map} +1 -1
- package/dist/chunk-GRSNX36B.js +1 -0
- package/dist/{chunk-JXLCRQH5.js.map → chunk-GRSNX36B.js.map} +1 -1
- package/dist/chunk-GVNTKCVF.js +1 -0
- package/dist/chunk-GVNTKCVF.js.map +1 -0
- package/dist/{chunk-FEER4ERG.js → chunk-IOJXLDJN.js} +1 -1
- package/dist/{chunk-EVEFYI7K.js → chunk-J42ZXLBL.js} +1 -1
- package/dist/{chunk-EVEFYI7K.js.map → chunk-J42ZXLBL.js.map} +1 -1
- package/dist/chunk-KJFUNIIY.js +1 -0
- package/dist/{chunk-NCKOVFBJ.js.map → chunk-KJFUNIIY.js.map} +1 -1
- package/dist/{chunk-RC6F6RAU.js → chunk-LZYHBFJC.js} +1 -1
- package/dist/{chunk-RC6F6RAU.js.map → chunk-LZYHBFJC.js.map} +1 -1
- package/dist/chunk-M6G3UDTX.js +1 -0
- package/dist/chunk-M6G3UDTX.js.map +1 -0
- package/dist/{chunk-DLLBARN5.js → chunk-MKGJPVPS.js} +1 -1
- package/dist/{chunk-UXFMVZAY.js → chunk-OVUHQEH5.js} +1 -1
- package/dist/{chunk-UXFMVZAY.js.map → chunk-OVUHQEH5.js.map} +1 -1
- package/dist/{chunk-UPUC5X2C.js → chunk-PA5EITW5.js} +1 -1
- package/dist/{chunk-UPUC5X2C.js.map → chunk-PA5EITW5.js.map} +1 -1
- package/dist/chunk-QY3L5BKN.js +1 -0
- package/dist/{chunk-PEHOKSSD.js.map → chunk-QY3L5BKN.js.map} +1 -1
- package/dist/chunk-RVIYOHYF.js +1 -0
- package/dist/chunk-RVIYOHYF.js.map +1 -0
- package/dist/chunk-SD6GNFDX.js +1 -0
- package/dist/chunk-SD6GNFDX.js.map +1 -0
- package/dist/chunk-TW7LUBHD.js +1 -0
- package/dist/{chunk-QGAZWX7G.js.map → chunk-TW7LUBHD.js.map} +1 -1
- package/dist/chunk-V4C6FIE2.js +1 -0
- package/dist/{chunk-TLA6LHLN.js.map → chunk-V4C6FIE2.js.map} +1 -1
- package/dist/chunk-Z6XMXMVI.js +1 -0
- package/dist/{chunk-NEFUW32I.js.map → chunk-Z6XMXMVI.js.map} +1 -1
- package/dist/{chunk-T4CV4CDF.js → chunk-ZRG35JSH.js} +1 -1
- package/dist/i18n/blueprints.d.ts +2 -1
- package/dist/i18n/blueprints.js +1 -1
- package/dist/i18n/diagnostics.d.ts +1 -0
- package/dist/i18n/diagnostics.js +1 -1
- package/dist/i18n/engineering-groups.js +1 -1
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +9 -6
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/materials.js +1 -1
- package/dist/i18n/micro-resources.js +1 -1
- package/dist/i18n/module-families.d.ts +32 -0
- package/dist/i18n/module-families.js +1 -0
- package/dist/i18n/module-families.js.map +1 -0
- package/dist/i18n/modules.js +1 -1
- package/dist/i18n/pre-engineered.js +1 -1
- package/dist/i18n/ships.js +1 -1
- package/dist/i18n/slots.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/blueprint-costs.d.ts +1 -0
- package/dist/ships/blueprints.d.ts +1 -0
- package/dist/ships/engineering.d.ts +1 -0
- package/dist/ships/experimental-effect-costs.d.ts +1 -0
- package/dist/ships/experimental-effects.d.ts +1 -0
- package/dist/ships/index.d.ts +2 -1
- package/dist/ships/index.js +1 -1
- package/dist/ships/loadout-validation.d.ts +1 -0
- package/dist/ships/mobility.d.ts +12 -0
- package/dist/ships/mobility.js +1 -1
- package/dist/ships/module-capabilities.d.ts +1 -0
- package/dist/ships/module-families.d.ts +49 -0
- package/dist/ships/module-families.js +1 -0
- package/dist/ships/module-families.js.map +1 -0
- package/dist/ships/module-limits.d.ts +1 -0
- package/dist/ships/modules-all.d.ts +1 -0
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-core.d.ts +1 -0
- package/dist/ships/modules-core.js +1 -1
- package/dist/ships/modules-hardpoint.d.ts +2 -1
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules-internal.d.ts +2 -1
- package/dist/ships/modules-internal.js +1 -1
- package/dist/ships/modules-utility.d.ts +2 -1
- package/dist/ships/modules-utility.js +1 -1
- package/dist/ships/modules.d.ts +41 -14
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +1 -0
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/ship-loadout.d.ts +143 -7
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/slef.d.ts +10 -8
- package/dist/ships/slef.js +1 -1
- package/dist/ships/weapons.d.ts +1 -0
- package/package.json +9 -1
- package/dist/chunk-24INI4U7.js.map +0 -1
- package/dist/chunk-5V4OXZLE.js +0 -1
- package/dist/chunk-6FKBZPI6.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js.map +0 -1
- package/dist/chunk-JKWV3CZN.js +0 -1
- package/dist/chunk-JXLCRQH5.js +0 -1
- package/dist/chunk-NCKOVFBJ.js +0 -1
- package/dist/chunk-NEFUW32I.js +0 -1
- package/dist/chunk-NWBWTJM3.js +0 -1
- package/dist/chunk-NWBWTJM3.js.map +0 -1
- package/dist/chunk-PEHOKSSD.js +0 -1
- package/dist/chunk-PYV7VI6I.js +0 -1
- package/dist/chunk-QGAZWX7G.js +0 -1
- package/dist/chunk-SU352DIW.js +0 -1
- package/dist/chunk-SU352DIW.js.map +0 -1
- package/dist/chunk-TLA6LHLN.js +0 -1
- package/dist/chunk-WHAU3C4E.js +0 -1
- package/dist/chunk-ZKU7CMAH.js +0 -1
- package/dist/chunk-ZKU7CMAH.js.map +0 -1
- /package/dist/{chunk-EWAS7KMF.js.map → chunk-4S6WB7QR.js.map} +0 -0
- /package/dist/{chunk-BZDTEXXM.js.map → chunk-6BO5JJNI.js.map} +0 -0
- /package/dist/{chunk-3MPLVD2R.js.map → chunk-6G6TYW2D.js.map} +0 -0
- /package/dist/{chunk-FEER4ERG.js.map → chunk-IOJXLDJN.js.map} +0 -0
- /package/dist/{chunk-DLLBARN5.js.map → chunk-MKGJPVPS.js.map} +0 -0
- /package/dist/{chunk-T4CV4CDF.js.map → chunk-ZRG35JSH.js.map} +0 -0
package/dist/ships/index.d.ts
CHANGED
|
@@ -143,9 +143,10 @@ export { GunsightOffset, GunsightPoint, SHIP_GUNSIGHTS, ShipGunsight, ShipGunsig
|
|
|
143
143
|
export { DamageComponents, DamageDistribution, ModuleCategory, ModuleExclusionGroup, ModuleGuidance, ModuleLimitGroup, ModuleLimitIncrease, ModuleMount, ModuleRating, OutfittingModule, OutfittingModuleIdentity, OutfittingModuleStats, ProjectileRangeBoundaries, getBulkheadsForShip, getModuleBySymbol, getModulesByName } from './modules.js';
|
|
144
144
|
export { ModuleLimitEntry, ModuleLimitUsage, SHIP_MODULE_LIMITS, calculateModuleLimits } from './module-limits.js';
|
|
145
145
|
export { FrameShiftDriveJumpStats, MassCurveStats, PowerDistributorStats, PowerGenerationStats, ShieldRegenerationStats, WeaponDamageStats, hasFrameShiftDriveJumpStats, hasMassCurveStats, hasPowerDistributorStats, hasPowerGenerationStats, hasShieldRegenerationStats, hasWeaponDamageStats } from './module-capabilities.js';
|
|
146
|
+
export { OUTFITTING_FAMILIES, OutfittingFamilyId } from './module-families.js';
|
|
146
147
|
export { BlueprintModuleEngineering, EngineeringModifier, LoadoutEvent, LoadoutModule, ModuleEngineering, Slef, SlefConstraint, SlefDiagnostic, SlefDiagnosticCode, SlefEntry, SlefHeader, SlefInspection, SlefStringifyOptions, getLoadoutModifier, inspectSlef, parseSlef, stringifySlef, toSlef } from './slef.js';
|
|
147
148
|
export { FrameShiftDriveParams, TotalRangeDetails, frameShiftDriveMassFactor, fuelPerJump, singleJumpRange, totalRange } from './jump-range.js';
|
|
148
|
-
export { ApplyBlueprintOptions, AvailableBlueprint, BuildCost, BuildCredits, BuildWeaponMetrics, DefenceOptions, DistributorOptions, EngineeringNormalizationCode, EngineeringNormalizationResult, EngineeringNormalizationUnchanged, EngineeringNormalizationUnsupported, EngineeringNormalized, ExperimentalEffectMutationCode, ExperimentalEffectMutationResult, ExperimentalEffectUnchanged, ExperimentalEffectUnsupported, ExperimentalEffectUpdated, FittedModule, FittedWeaponMetrics, FixedMountRepairResult, ImmovableReason, JumpOptions, JumpRangeSummary, LoadoutEditError, LoadoutEditErrorCode, LoadoutExportOptions, LoadoutImportOutcome, LoadoutSlot, MobilityOptions, ShipLoadout, SlefExportOptions, StandardLoad, StandardLoadInputs, WeaponsOptions } from './ship-loadout.js';
|
|
149
|
+
export { ApplyBlueprintOptions, AvailableBlueprint, BuildCost, BuildCredits, BuildMass, BuildWeaponMetrics, DefenceOptions, DistributorOptions, EngineeringNormalizationCode, EngineeringNormalizationResult, EngineeringNormalizationUnchanged, EngineeringNormalizationUnsupported, EngineeringNormalized, ExperimentalEffectMutationCode, ExperimentalEffectMutationResult, ExperimentalEffectUnchanged, ExperimentalEffectUnsupported, ExperimentalEffectUpdated, FittedModule, FittedWeaponMetrics, FixedMountRepairResult, ImmovableReason, JumpOptions, JumpRangeSummary, LoadoutEditError, LoadoutEditErrorCode, LoadoutExportOptions, LoadoutImportOutcome, LoadoutSlot, MobilityOptions, ShipLoadout, SlefExportOptions, StandardLoad, StandardLoadInputs, WeaponsOptions } from './ship-loadout.js';
|
|
149
150
|
export { CalculationIssue, CalculationIssueReason, CalculationResult, FuelCapacity, LoadoutCalculationModule, calculateCargoCapacity, calculateFuelCapacity, calculateUnladenMass } from './loadout-calculations.js';
|
|
150
151
|
export { LoadoutIssue, LoadoutIssueCode, LoadoutIssueParam, LoadoutIssueParams, LoadoutValidation, LoadoutValidationInput, ModuleFitConstraint, ValidationModule, validateLoadout } from './loadout-validation.js';
|
|
151
152
|
export { SourceModuleValue, SourcePurchaseRecord, getSourceModuleValue, sourcePurchaseFromLoadout, sumSourceModuleValues } from './source-purchase.js';
|
package/dist/ships/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{LoadoutEditError,ShipLoadout}from"../chunk-
|
|
1
|
+
export{LoadoutEditError,ShipLoadout}from"../chunk-3BM5BHI3.js";export{weaponsCapacitorMetrics}from"../chunk-FMPRCYKY.js";export{cellBankSummary,shieldRecovery}from"../chunk-VZZUNSDF.js";export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-2FHHMYDC.js";export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-WNGQ3IAM.js";export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-OVUHQEH5.js";export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-IYU4WLFM.js";export{powerBudget}from"../chunk-RLUS76LZ.js";export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-6BO5JJNI.js";export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-LJI7VXJD.js";export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-PA5EITW5.js";export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered}from"../chunk-2VPVZELZ.js";export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-GQ5GX5TB.js";export{calculateCargoCapacity,calculateFuelCapacity,calculateUnladenMass}from"../chunk-AFVYCQWL.js";export{validateLoadout}from"../chunk-B4ZSTOM4.js";export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-CX7B67OI.js";export{hasFrameShiftDriveJumpStats,hasMassCurveStats,hasPowerDistributorStats,hasPowerGenerationStats,hasShieldRegenerationStats,hasWeaponDamageStats}from"../chunk-JTQVWIGL.js";export{OUTFITTING_FAMILIES}from"../chunk-M6G3UDTX.js";export{SHIP_MODULE_LIMITS,calculateModuleLimits}from"../chunk-KPETDYQX.js"; export{distributorMetrics}from"../chunk-P2QOL63K.js"; export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-JPBMRJFC.js";export{SHIP_GUNSIGHTS,getShipGunsight,projectGunsight}from"../chunk-DBGXZF7O.js";export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-W6EPHHTS.js";export{ammunitionCapacity}from"../chunk-AA3K5XUE.js";export{armourMetrics}from"../chunk-FGXWVFN6.js";export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-ZNCXENNB.js"; export{computeModifiers,rollsForGrade,sumMaterials}from"../chunk-DYPOL3CI.js";export{resolveBlueprintForModule}from"../chunk-2TW4ZBI3.js";export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-QTZPA2FR.js";export{BLUEPRINTS,getBlueprint,getBlueprintGrade}from"../chunk-Q3QCLNVG.js"; export{SLOT_RESTRICTION_LABELS,enumerateSlots,parseSlotName}from"../chunk-RAO35XDF.js"; //# sourceMappingURL=index.js.map
|
package/dist/ships/mobility.d.ts
CHANGED
|
@@ -66,6 +66,18 @@ interface MobilityInput {
|
|
|
66
66
|
}
|
|
67
67
|
/** Speed and rotation rates for one loaded ship. */
|
|
68
68
|
interface MobilityMetrics {
|
|
69
|
+
/**
|
|
70
|
+
* The loaded mass these figures were calculated at, in tonnes — the
|
|
71
|
+
* {@link MobilityInput.mass} that went in.
|
|
72
|
+
*
|
|
73
|
+
* @remarks
|
|
74
|
+
* Reported so a build-level caller, which never states the mass itself, can read
|
|
75
|
+
* what the curve was evaluated at. Against the fitted curve's `optMass` and
|
|
76
|
+
* `maxMass` it is the build's position on that curve: at or below `optMass` the
|
|
77
|
+
* thrusters are at or above their rated performance, and past `maxMass` they do not
|
|
78
|
+
* move the ship at all — {@link massCurveMultiplier} is `0` there.
|
|
79
|
+
*/
|
|
80
|
+
readonly loadedMass: number;
|
|
69
81
|
/** Top speed at this mass and ENG allocation, in metres per second. */
|
|
70
82
|
readonly speed: number;
|
|
71
83
|
/** Boost speed at this mass, in metres per second. */
|
package/dist/ships/mobility.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-
|
|
1
|
+
export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-CX7B67OI.js";//# sourceMappingURL=mobility.js.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The outfitting **module families** — the grouping an outfitting list shows above the
|
|
3
|
+
* modules that share it, and the id every {@link OutfittingModuleIdentity} carries.
|
|
4
|
+
*
|
|
5
|
+
* A family is coarser than an engineering group and finer than an outfitting category:
|
|
6
|
+
* ordinary, Bi-Weave and Prismatic generators are all `shieldGenerators`, while the
|
|
7
|
+
* eight core mounts each have their own family. Localized display text for these ids is
|
|
8
|
+
* `getOutfittingFamilyName` in `i18n/module-families`.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A stable identifier for an outfitting module family.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* These are the keys of {@link OUTFITTING_FAMILIES}. Every module carries one, core
|
|
17
|
+
* modules included, so an outfitting list can group every choice
|
|
18
|
+
* `ShipLoadout.modulesForSlot()` returns without a private taxonomy. Closely related
|
|
19
|
+
* variants share a family: Mk II and corrosion-resistant racks are `cargoRacks`, and a
|
|
20
|
+
* pre-engineered or Powerplay variant stays in its base module's family.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* import type { OutfittingFamilyId } from '@elite-dangerous-almanac/core/ships/module-families';
|
|
25
|
+
*
|
|
26
|
+
* const family: OutfittingFamilyId = 'shieldGenerators';
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
type OutfittingFamilyId = 'armour' | 'powerPlants' | 'engines' | 'fsd' | 'lifeSupport' | 'powerDistributors' | 'sensors' | 'fuelTanks' | 'dockingComputers' | 'shieldGenerators' | 'shieldCellBanks' | 'cargoRacks' | 'hatchBreakerLimpets' | 'surfaceScanners' | 'fuelScoops' | 'refineries' | 'fsdInterdictors' | 'afms' | 'hullReinforcements' | 'collectorLimpets' | 'fuelTransferLimpets' | 'prospectingLimpets' | 'planetaryVehicleHangars' | 'planetaryApproachSuites' | 'cargoHatches' | 'passengerCabins' | 'vesselHangars' | 'moduleReinforcements' | 'repairLimpets' | 'researchLimpets' | 'decontaminationLimpets' | 'guardianShieldReinforcementPackages' | 'fsdBoosters' | 'guardianHybridPowerDistributors' | 'guardianHybridPowerPlants' | 'reconLimpets' | 'flightAssists' | 'miningMultiLimpetControllers' | 'multiLimpetControllers' | 'experimentalWeaponStabilisers' | 'pulseLasers' | 'burstLasers' | 'beamLasers' | 'cannons' | 'fragmentCannons' | 'multiCannons' | 'plasmaAccelerators' | 'railGuns' | 'missiles' | 'mines' | 'torpedoes' | 'miningLasers' | 'remoteReleaseFlakLaunchers' | 'axMissileRacks' | 'axMultiCannons' | 'guardianGaussCannons' | 'remoteReleaseFlechetteLaunchers' | 'guardianPlasmaChargers' | 'guardianShardCannons' | 'shockCannons' | 'subSurfaceDisplacementMissiles' | 'abrasionBlasters' | 'miningTools' | 'subSurfaceExtractionMissiles' | 'guardianNaniteTorpedoPylons' | 'chaffLaunchers' | 'ecms' | 'heatsinkLaunchers' | 'pointDefence' | 'manifestScanners' | 'wakeScanners' | 'killWarrantScanners' | 'shieldBoosters' | 'shutdownFieldNeutralisers' | 'xenoScanners' | 'pulseWaveAnalyser' | 'causticSinkLaunchers';
|
|
30
|
+
/**
|
|
31
|
+
* Every outfitting family's canonical English display name, keyed by id.
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* The names are Frontier's own outfitting category labels where the game publishes one,
|
|
35
|
+
* and the Almanac's descriptive name for the 19 families it does not. They are
|
|
36
|
+
* canonical English, not localized UI text: use
|
|
37
|
+
* `getOutfittingFamilyName` for a locale.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import { OUTFITTING_FAMILIES } from '@elite-dangerous-almanac/core/ships/module-families';
|
|
42
|
+
*
|
|
43
|
+
* OUTFITTING_FAMILIES.shieldGenerators; // -> 'Shield Generators'
|
|
44
|
+
* OUTFITTING_FAMILIES.armour; // -> 'Armour'
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
declare const OUTFITTING_FAMILIES: Readonly<Record<OutfittingFamilyId, string>>;
|
|
48
|
+
|
|
49
|
+
export { OUTFITTING_FAMILIES, type OutfittingFamilyId };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{OUTFITTING_FAMILIES}from"../chunk-M6G3UDTX.js"; //# sourceMappingURL=module-families.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"O"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ALL_MODULES}from"../chunk-
|
|
1
|
+
export{ALL_MODULES}from"../chunk-QY3L5BKN.js"; //# sourceMappingURL=modules-all.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{CORE_MODULES}from"../chunk-
|
|
1
|
+
export{CORE_MODULES}from"../chunk-EVJ32UF3.js"; //# sourceMappingURL=modules-core.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OutfittingModule } from './modules.js';
|
|
2
2
|
import './engineering-options.js';
|
|
3
|
+
import './module-families.js';
|
|
3
4
|
import './slots.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -34,7 +35,7 @@ import './slots.js';
|
|
|
34
35
|
* import { HARDPOINT_MODULES } from '@elite-dangerous-almanac/core/ships/modules-hardpoint';
|
|
35
36
|
*
|
|
36
37
|
* HARDPOINT_MODULES.length; // -> 159
|
|
37
|
-
* HARDPOINT_MODULES.filter((m) => m.
|
|
38
|
+
* HARDPOINT_MODULES.filter((m) => m.familyId === 'beamLasers').length; // -> 12
|
|
38
39
|
* HARDPOINT_MODULES.filter((m) => m.mount === 'Turreted').length; // turreted variants
|
|
39
40
|
* ```
|
|
40
41
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{HARDPOINT_MODULES}from"../chunk-
|
|
1
|
+
export{HARDPOINT_MODULES}from"../chunk-4TFAZX73.js"; //# sourceMappingURL=modules-hardpoint.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OutfittingModule } from './modules.js';
|
|
2
2
|
import './engineering-options.js';
|
|
3
|
+
import './module-families.js';
|
|
3
4
|
import './slots.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -33,7 +34,7 @@ import './slots.js';
|
|
|
33
34
|
* import { INTERNAL_MODULES } from '@elite-dangerous-almanac/core/ships/modules-internal';
|
|
34
35
|
*
|
|
35
36
|
* INTERNAL_MODULES.length; // -> 484
|
|
36
|
-
* INTERNAL_MODULES.filter((m) => m.
|
|
37
|
+
* INTERNAL_MODULES.filter((m) => m.familyId === 'cargoRacks').length; // -> 16
|
|
37
38
|
* ```
|
|
38
39
|
*/
|
|
39
40
|
declare const INTERNAL_MODULES: readonly OutfittingModule[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{INTERNAL_MODULES}from"../chunk-
|
|
1
|
+
export{INTERNAL_MODULES}from"../chunk-4ZGUSHTP.js"; //# sourceMappingURL=modules-internal.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OutfittingModule } from './modules.js';
|
|
2
2
|
import './engineering-options.js';
|
|
3
|
+
import './module-families.js';
|
|
3
4
|
import './slots.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -33,7 +34,7 @@ import './slots.js';
|
|
|
33
34
|
* import { UTILITY_MODULES } from '@elite-dangerous-almanac/core/ships/modules-utility';
|
|
34
35
|
*
|
|
35
36
|
* UTILITY_MODULES.length; // -> 35
|
|
36
|
-
* UTILITY_MODULES.filter((m) => m.
|
|
37
|
+
* UTILITY_MODULES.filter((m) => m.familyId === 'shieldBoosters').length; // -> 5
|
|
37
38
|
* ```
|
|
38
39
|
*/
|
|
39
40
|
declare const UTILITY_MODULES: readonly OutfittingModule[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{UTILITY_MODULES}from"../chunk-
|
|
1
|
+
export{UTILITY_MODULES}from"../chunk-ELT3FEA4.js"; //# sourceMappingURL=modules-utility.js.map
|
package/dist/ships/modules.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EngineeringGroupId } from './engineering-options.js';
|
|
2
|
+
import { OutfittingFamilyId } from './module-families.js';
|
|
2
3
|
import { ModuleSlot, SlotRestriction } from './slots.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -43,7 +44,7 @@ import { ModuleSlot, SlotRestriction } from './slots.js';
|
|
|
43
44
|
*
|
|
44
45
|
* @remarks
|
|
45
46
|
* **This is the one default that costs real bundle weight.** A lookup imported from
|
|
46
|
-
* here pulls all four catalogues —
|
|
47
|
+
* here pulls all four catalogues — 337.4 KiB minified (33.3 KiB gzipped) — since
|
|
47
48
|
* that is what it falls back to, and passing an explicit catalogue does not undo it.
|
|
48
49
|
* A build that must carry only one category should import that catalogue and search
|
|
49
50
|
* it directly:
|
|
@@ -200,7 +201,7 @@ interface ProjectileRangeBoundaries {
|
|
|
200
201
|
* Identity, classification, fit constraints, and price for one outfitting module.
|
|
201
202
|
*
|
|
202
203
|
* @remarks
|
|
203
|
-
* The core identity fields (`symbol`, `name`, `category`, `
|
|
204
|
+
* The core identity fields (`symbol`, `name`, `category`, `familyId`, `class`, and `rating`)
|
|
204
205
|
* are always present. Optional fields describe fit restrictions, purchase entitlement,
|
|
205
206
|
* and price. Performance data belongs to {@link OutfittingModuleStats}; the complete
|
|
206
207
|
* flat catalogue record is {@link OutfittingModule}.
|
|
@@ -213,7 +214,7 @@ interface ProjectileRangeBoundaries {
|
|
|
213
214
|
* symbol: 'CustomBeamLaser',
|
|
214
215
|
* category: 'hardpoint',
|
|
215
216
|
* engineeringGroup: 'beamLasers',
|
|
216
|
-
*
|
|
217
|
+
* familyId: 'beamLasers',
|
|
217
218
|
* name: 'Custom Beam Laser',
|
|
218
219
|
* class: 2,
|
|
219
220
|
* rating: 'D',
|
|
@@ -241,21 +242,21 @@ interface OutfittingModuleIdentity {
|
|
|
241
242
|
*/
|
|
242
243
|
readonly engineeringGroup: EngineeringGroupId | null;
|
|
243
244
|
/**
|
|
244
|
-
* Stable
|
|
245
|
-
* `
|
|
245
|
+
* Stable outfitting family used to group an outfitting list, such as
|
|
246
|
+
* `'cargoRacks'`, `'shieldGenerators'` or `'beamLasers'`. See
|
|
247
|
+
* {@link OutfittingFamilyId}.
|
|
246
248
|
*
|
|
247
249
|
* @remarks
|
|
248
|
-
* Every
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
250
|
+
* Every record carries one, core modules included, so every choice
|
|
251
|
+
* {@link ShipLoadout.modulesForSlot} returns has a family. Closely related variants
|
|
252
|
+
* share it: Bi-Weave and Prismatic generators are `'shieldGenerators'`, Mk II and
|
|
253
|
+
* corrosion-resistant racks are `'cargoRacks'`, and a Powerplay or pre-engineered
|
|
254
|
+
* variant stays with its base weapon's family.
|
|
253
255
|
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* [#320](https://github.com/DarkSession/Elite-Dangerous-Almanac/issues/320).
|
|
256
|
+
* {@link OUTFITTING_FAMILIES} gives the canonical English display name;
|
|
257
|
+
* `getOutfittingFamilyName` in `i18n/module-families` gives a localized one.
|
|
257
258
|
*/
|
|
258
|
-
readonly
|
|
259
|
+
readonly familyId: OutfittingFamilyId;
|
|
259
260
|
/**
|
|
260
261
|
* The one fixed mount this module fills, when it fills one: `'armour'` or one of
|
|
261
262
|
* the seven {@link CoreSlotType} core functions.
|
|
@@ -498,6 +499,32 @@ interface OutfittingModuleStats {
|
|
|
498
499
|
* drive of the same size.
|
|
499
500
|
*/
|
|
500
501
|
readonly fsdHeatRate?: number;
|
|
502
|
+
/**
|
|
503
|
+
* Frame shift drive: `true` on a Supercruise Overcharge drive, the line the
|
|
504
|
+
* outfitting screen labels SCO.
|
|
505
|
+
*
|
|
506
|
+
* @remarks
|
|
507
|
+
* A sparse capability flag on the 36 Overcharge drives and absent everywhere else,
|
|
508
|
+
* including on the 36 ordinary drives of the same sizes and ratings. Read it rather
|
|
509
|
+
* than matching `Int_Hyperdrive_Overcharge` on the symbol: the capability is the
|
|
510
|
+
* record's to state, and a pre-engineered or fitted article carries the flag
|
|
511
|
+
* through while its symbol is not always the one you looked up.
|
|
512
|
+
*
|
|
513
|
+
* The two lines share every jump constant this library models, so the flag changes
|
|
514
|
+
* no calculation here; it is what an outfitting list filters and labels on. The
|
|
515
|
+
* overcharged supercruise behaviour itself — the boosted acceleration and the extra
|
|
516
|
+
* fuel it burns — is in-flight behaviour the game publishes no figures for, and the
|
|
517
|
+
* library models none of it.
|
|
518
|
+
*
|
|
519
|
+
* @example
|
|
520
|
+
* ```ts
|
|
521
|
+
* import { getModuleBySymbol } from '@elite-dangerous-almanac/core/ships/modules';
|
|
522
|
+
*
|
|
523
|
+
* getModuleBySymbol('Int_Hyperdrive_Overcharge_Size5_Class5')?.supercruiseOvercharge; // -> true
|
|
524
|
+
* getModuleBySymbol('Int_Hyperdrive_Size5_Class5')?.supercruiseOvercharge; // -> undefined
|
|
525
|
+
* ```
|
|
526
|
+
*/
|
|
527
|
+
readonly supercruiseOvercharge?: boolean;
|
|
501
528
|
/** Guardian FSD Booster: flat jump-range bonus, in light-years. */
|
|
502
529
|
readonly jumpBoost?: number;
|
|
503
530
|
/** Power plant: power generated, in megawatts. */
|
package/dist/ships/modules.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-
|
|
1
|
+
export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-PA5EITW5.js"; //# sourceMappingURL=modules.js.map
|
|
@@ -2,6 +2,7 @@ import { OutfittingModule } from './modules.js';
|
|
|
2
2
|
import { PreEngineeredVariant } from './pre-engineered.js';
|
|
3
3
|
import { EngineeringModifier, LoadoutModule } from './slef.js';
|
|
4
4
|
import './engineering-options.js';
|
|
5
|
+
import './module-families.js';
|
|
5
6
|
import './slots.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-
|
|
1
|
+
export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-6BO5JJNI.js"; //# sourceMappingURL=pre-engineered-stats.js.map
|
|
@@ -11,13 +11,14 @@ import { WeaponMetrics, WeaponTotals } from './weapons.js';
|
|
|
11
11
|
import { AmmunitionCapacity } from './ammunition.js';
|
|
12
12
|
import { WeaponsCapacitorMetrics } from './weapons-capacitor.js';
|
|
13
13
|
import { DistributorMetrics } from './distributor.js';
|
|
14
|
-
import { MobilityMetrics } from './mobility.js';
|
|
14
|
+
import { ThrusterParams, MobilityMetrics } from './mobility.js';
|
|
15
15
|
import { ShieldRecovery, CellBankSummary } from './shield-recovery.js';
|
|
16
16
|
import { PreEngineeredVariant } from './pre-engineered.js';
|
|
17
17
|
import { SourcePurchaseRecord } from './source-purchase.js';
|
|
18
18
|
import { FuelCapacity, CalculationResult } from './loadout-calculations.js';
|
|
19
19
|
import { ModuleFitConstraint, LoadoutIssueParams, LoadoutValidation } from './loadout-validation.js';
|
|
20
20
|
import './engineering-options.js';
|
|
21
|
+
import './module-families.js';
|
|
21
22
|
import './resistances.js';
|
|
22
23
|
|
|
23
24
|
/**
|
|
@@ -389,7 +390,10 @@ interface EngineeringNormalizationUnchanged {
|
|
|
389
390
|
interface EngineeringNormalized {
|
|
390
391
|
/** Discriminator for a successful normalization. */
|
|
391
392
|
readonly kind: 'normalized';
|
|
392
|
-
/**
|
|
393
|
+
/**
|
|
394
|
+
* Quality reported by the fitted module before normalization, in `[0, 1]`. It reads
|
|
395
|
+
* `1` where a completed roll stated no modifiers and this call spelled them out.
|
|
396
|
+
*/
|
|
393
397
|
readonly previousQuality: number;
|
|
394
398
|
/** Completed engineering quality. Always `1`. */
|
|
395
399
|
readonly quality: 1;
|
|
@@ -421,12 +425,29 @@ interface MobilityOptions extends JumpOptions {
|
|
|
421
425
|
}
|
|
422
426
|
/** A standard fuel-and-cargo condition shared by jump and mobility views. */
|
|
423
427
|
type StandardLoad = 'maximum' | 'unladen' | 'laden';
|
|
424
|
-
/**
|
|
428
|
+
/** What a {@link StandardLoad} carries, and what the ship weighs carrying it. */
|
|
425
429
|
interface StandardLoadInputs {
|
|
426
430
|
/** Main-tank fuel carried, in tonnes. */
|
|
427
431
|
readonly fuel: number;
|
|
428
432
|
/** Cargo carried, in tonnes. */
|
|
429
433
|
readonly cargo: number;
|
|
434
|
+
/**
|
|
435
|
+
* What the ship weighs at this load, in tonnes: {@link ShipLoadout.unladenMass}
|
|
436
|
+
* plus `fuel` plus `cargo`.
|
|
437
|
+
*
|
|
438
|
+
* @remarks
|
|
439
|
+
* This is the mass the jump and mobility calculations run on, so it is the figure
|
|
440
|
+
* to show beside them rather than one reassembled by the caller. The reserve tank
|
|
441
|
+
* is **not** in it: the game's statistics panel counts the reserve in the current
|
|
442
|
+
* mass it displays, and neither calculation here does — see
|
|
443
|
+
* {@link ShipLoadout.mobilityMetrics}. Add {@link FuelCapacity.reserve} to match the
|
|
444
|
+
* panel.
|
|
445
|
+
*
|
|
446
|
+
* The extra `fuel` and `cargo` are the load a screen labels; the mass is what they
|
|
447
|
+
* add up to, and passing the whole value back into {@link ShipLoadout.jumpRange} or
|
|
448
|
+
* {@link ShipLoadout.mobilityMetrics} is unaffected by its presence.
|
|
449
|
+
*/
|
|
450
|
+
readonly mass: number;
|
|
430
451
|
}
|
|
431
452
|
/** Optional WEP allocation for {@link ShipLoadout.weaponsCapacitorMetrics}. */
|
|
432
453
|
interface WeaponsOptions {
|
|
@@ -499,6 +520,47 @@ interface BuildCost {
|
|
|
499
520
|
*/
|
|
500
521
|
readonly materials: readonly EngineeringMaterial[];
|
|
501
522
|
}
|
|
523
|
+
/**
|
|
524
|
+
* What an assembled build weighs, broken down the way {@link ShipLoadout.buildMass}
|
|
525
|
+
* weighs it. Every figure is in tonnes.
|
|
526
|
+
*
|
|
527
|
+
* @remarks
|
|
528
|
+
* The mass counterpart of {@link BuildCredits}, and the same split: what the bare hull
|
|
529
|
+
* contributes, what the fit adds, and the total. `fuel` and `cargo` are the chosen load
|
|
530
|
+
* on top of that, so `total` is the mass the jump and mobility calculations run on.
|
|
531
|
+
*/
|
|
532
|
+
interface BuildMass {
|
|
533
|
+
/** Bare hull mass — the {@link ships!Ship.hullMass | hullMass} of the hull being flown. */
|
|
534
|
+
readonly hull: number;
|
|
535
|
+
/**
|
|
536
|
+
* Every fitted module's post-engineering mass, summed.
|
|
537
|
+
*
|
|
538
|
+
* @remarks
|
|
539
|
+
* Lightweight blueprints are already folded in, and the cargo hatch weighs nothing.
|
|
540
|
+
* A fitted record with no mass at all contributes `0` rather than making the total
|
|
541
|
+
* unavailable — mass is the one figure no article can be missing (see
|
|
542
|
+
* {@link ShipLoadout.unladenMass}), which is why there is no `unpriced` counterpart
|
|
543
|
+
* to {@link BuildCredits.unpriced} here.
|
|
544
|
+
*/
|
|
545
|
+
readonly modules: number;
|
|
546
|
+
/**
|
|
547
|
+
* The ship with an empty tank and no cargo — {@link ShipLoadout.unladenMass}.
|
|
548
|
+
*
|
|
549
|
+
* @remarks
|
|
550
|
+
* `hull` and `modules` are always computed from the hull record and the current
|
|
551
|
+
* fit, while this is the build's own unladen mass, which for an unedited import is
|
|
552
|
+
* the figure the **capture** stated. The two agree on anything assembled here; where
|
|
553
|
+
* a capture disagrees with the catalogues, this is the one the jump and mobility
|
|
554
|
+
* calculations use and the decomposition is what the catalogues say it is made of.
|
|
555
|
+
*/
|
|
556
|
+
readonly unladen: number;
|
|
557
|
+
/** Main-tank fuel counted, in tonnes. Defaults to a full main tank. */
|
|
558
|
+
readonly fuel: number;
|
|
559
|
+
/** Cargo counted, in tonnes. Defaults to an empty hold. */
|
|
560
|
+
readonly cargo: number;
|
|
561
|
+
/** `unladen + fuel + cargo`: what the ship weighs at the chosen load. */
|
|
562
|
+
readonly total: number;
|
|
563
|
+
}
|
|
502
564
|
/** One fitted weapon and what it does, as {@link ShipLoadout.weaponMetrics} reports it. */
|
|
503
565
|
interface FittedWeaponMetrics {
|
|
504
566
|
/** The hardpoint's slot key, e.g. `"LargeHardpoint1"`. */
|
|
@@ -1137,6 +1199,11 @@ declare class ShipLoadout {
|
|
|
1137
1199
|
* reward rebuilds its hand-authored modifiers and optional effect without losing its
|
|
1138
1200
|
* purchase identity. A refusal never changes the loadout.
|
|
1139
1201
|
*
|
|
1202
|
+
* A block that names a blueprint and grade but states no `Modifiers` at all is rolled
|
|
1203
|
+
* here too, even at quality `1` — SLEF permits that identity-only shape and Inara
|
|
1204
|
+
* writes it, so a capture of a completed roll would otherwise stay stock. A stated
|
|
1205
|
+
* modifier array, empty or partial, is left alone at quality `1`.
|
|
1206
|
+
*
|
|
1140
1207
|
* @param slotKey - The engineered slot, matched case-insensitively.
|
|
1141
1208
|
* @returns A frozen result identifying a normalized, unchanged or unsupported state.
|
|
1142
1209
|
* @throws {TypeError} If `slotKey` is not a string.
|
|
@@ -1294,6 +1361,36 @@ declare class ShipLoadout {
|
|
|
1294
1361
|
* jump constants.
|
|
1295
1362
|
*/
|
|
1296
1363
|
get frameShiftDrive(): FrameShiftDriveParams;
|
|
1364
|
+
/**
|
|
1365
|
+
* The fitted thrusters' post-engineering mass curve, or `null` when the build has
|
|
1366
|
+
* none — the thruster counterpart of {@link frameShiftDrive}.
|
|
1367
|
+
*
|
|
1368
|
+
* @remarks
|
|
1369
|
+
* A {@link ships!ThrusterParams | ThrusterParams} carries the three masses the
|
|
1370
|
+
* curve is defined over and the multiplier at each, plus the separate `speedCurve`
|
|
1371
|
+
* and `rotationCurve` an enhanced-performance thruster refines them with. Pass it
|
|
1372
|
+
* straight to
|
|
1373
|
+
* {@link ships!thrusterMassCurveMultiplier | thrusterMassCurveMultiplier} for the
|
|
1374
|
+
* multiplier at a mass of your own, or read `optMass` and `maxMass` against
|
|
1375
|
+
* {@link ships!MobilityMetrics.loadedMass | loadedMass} for where this build sits
|
|
1376
|
+
* on the curve.
|
|
1377
|
+
*
|
|
1378
|
+
* This is the fitted article's curve, so a switched-off or shed thruster still has
|
|
1379
|
+
* one; {@link mobilityMetricsResult} is what judges whether the build can use it.
|
|
1380
|
+
* It answers `null` rather than throwing — unlike `frameShiftDrive`, which the jump
|
|
1381
|
+
* equation cannot do without — when no thrusters are fitted or the fitted record
|
|
1382
|
+
* carries no complete curve.
|
|
1383
|
+
*
|
|
1384
|
+
* @example
|
|
1385
|
+
* ```ts
|
|
1386
|
+
* import { ShipLoadout } from '@elite-dangerous-almanac/core/ships/ship-loadout';
|
|
1387
|
+
*
|
|
1388
|
+
* const build = ShipLoadout.default('Anaconda');
|
|
1389
|
+
* build.thrusters?.optMass; // -> 1440, tonnes
|
|
1390
|
+
* build.thrusters?.maxMass; // -> 2160, past which the ship does not move at all
|
|
1391
|
+
* ```
|
|
1392
|
+
*/
|
|
1393
|
+
get thrusters(): ThrusterParams | null;
|
|
1297
1394
|
/**
|
|
1298
1395
|
* The fitted frame shift drive's dimensionless mass factor at a chosen load.
|
|
1299
1396
|
*
|
|
@@ -1380,9 +1477,10 @@ declare class ShipLoadout {
|
|
|
1380
1477
|
*
|
|
1381
1478
|
* @param load - `'maximum'` for one jump's fuel and no cargo, `'unladen'` for a
|
|
1382
1479
|
* full main tank and no cargo, or `'laden'` for a full main tank and full hold.
|
|
1383
|
-
* @returns
|
|
1384
|
-
*
|
|
1385
|
-
*
|
|
1480
|
+
* @returns The fuel and cargo carried, and the {@link StandardLoadInputs.mass} the
|
|
1481
|
+
* ship weighs carrying them, all in tonnes. Only `'maximum'` can come back
|
|
1482
|
+
* incomplete: it validates the whole fitted drive, jump booster included, so a
|
|
1483
|
+
* complete one can be passed straight to {@link jumpRange}.
|
|
1386
1484
|
* @throws {RangeError} If `load` is not a recognised standard load.
|
|
1387
1485
|
* @example
|
|
1388
1486
|
* ```ts
|
|
@@ -1392,6 +1490,13 @@ declare class ShipLoadout {
|
|
|
1392
1490
|
* const load = build.standardLoadResult('maximum');
|
|
1393
1491
|
* if (load.complete) build.mobilityMetrics({ ...load.value, enginesPips: 2 });
|
|
1394
1492
|
* ```
|
|
1493
|
+
* @example
|
|
1494
|
+
* ```ts
|
|
1495
|
+
* import { ShipLoadout } from '@elite-dangerous-almanac/core/ships/ship-loadout';
|
|
1496
|
+
*
|
|
1497
|
+
* const build = ShipLoadout.default('Anaconda');
|
|
1498
|
+
* build.standardLoadResult('laden').value?.mass; // -> 1210, tonnes with a full tank and hold
|
|
1499
|
+
* ```
|
|
1395
1500
|
*/
|
|
1396
1501
|
standardLoadResult(load: StandardLoad): CalculationResult<StandardLoadInputs>;
|
|
1397
1502
|
/**
|
|
@@ -1653,6 +1758,37 @@ declare class ShipLoadout {
|
|
|
1653
1758
|
* ```
|
|
1654
1759
|
*/
|
|
1655
1760
|
buildCost(): BuildCost;
|
|
1761
|
+
/**
|
|
1762
|
+
* Weigh the whole build: the hull, the fitted modules, and the load on top of them.
|
|
1763
|
+
*
|
|
1764
|
+
* @remarks
|
|
1765
|
+
* The mass companion to {@link buildCost}, answering the same question in tonnes
|
|
1766
|
+
* that that one answers in credits. Every module's mass is post-engineering, so a
|
|
1767
|
+
* Lightweight roll is already in `modules`.
|
|
1768
|
+
*
|
|
1769
|
+
* The reserve tank is **not** counted. The main tank is the fuel the drive and the
|
|
1770
|
+
* flight model see, and it is what {@link jumpRange} and {@link mobilityMetrics}
|
|
1771
|
+
* weigh; the game's statistics panel additionally counts the reserve in the current
|
|
1772
|
+
* mass it displays, so add {@link fuelCapacity}`.reserve` to reproduce that reading.
|
|
1773
|
+
*
|
|
1774
|
+
* @param options - {@link JumpOptions}. `fuel` defaults to a full main tank and
|
|
1775
|
+
* `cargo` to `0`, matching {@link jumpRange} and {@link mobilityMetrics}. Pass
|
|
1776
|
+
* {@link standardLoadResult} to weigh one of the standard loads.
|
|
1777
|
+
* @returns A frozen {@link BuildMass}, every figure in tonnes.
|
|
1778
|
+
* @throws {RangeError} If fuel or cargo is not finite and non-negative.
|
|
1779
|
+
* @example
|
|
1780
|
+
* ```ts
|
|
1781
|
+
* import { ShipLoadout } from '@elite-dangerous-almanac/core/ships/ship-loadout';
|
|
1782
|
+
*
|
|
1783
|
+
* const build = ShipLoadout.default('Anaconda');
|
|
1784
|
+
* const mass = build.buildMass();
|
|
1785
|
+
* mass.hull; // -> 400
|
|
1786
|
+
* mass.modules; // -> 664
|
|
1787
|
+
* mass.total; // -> 1096, a full main tank and an empty hold
|
|
1788
|
+
* build.buildMass({ cargo: build.cargoCapacity }).total; // -> 1210
|
|
1789
|
+
* ```
|
|
1790
|
+
*/
|
|
1791
|
+
buildMass(options?: JumpOptions): BuildMass;
|
|
1656
1792
|
/**
|
|
1657
1793
|
* The build's armour: hull hit points, the bulkhead and reinforcement each
|
|
1658
1794
|
* contribute, and the effective resistances.
|
|
@@ -1744,4 +1880,4 @@ declare class ShipLoadout {
|
|
|
1744
1880
|
distributorMetrics(options?: DistributorOptions): DistributorMetrics | null;
|
|
1745
1881
|
}
|
|
1746
1882
|
|
|
1747
|
-
export { type ApplyBlueprintOptions, type AvailableBlueprint, type BuildCost, type BuildCredits, type BuildWeaponMetrics, type DefenceOptions, type DistributorOptions, type EngineeringNormalizationCode, type EngineeringNormalizationResult, type EngineeringNormalizationUnchanged, type EngineeringNormalizationUnsupported, type EngineeringNormalized, type ExperimentalEffectMutationCode, type ExperimentalEffectMutationResult, type ExperimentalEffectUnchanged, type ExperimentalEffectUnsupported, type ExperimentalEffectUpdated, type FittedModule, type FittedWeaponMetrics, type FixedMountRepairResult, type ImmovableReason, type JumpOptions, type JumpRangeSummary, LoadoutEditError, type LoadoutEditErrorCode, type LoadoutExportOptions, type LoadoutImportOutcome, type LoadoutSlot, type MobilityOptions, ShipLoadout, type SlefExportOptions, type StandardLoad, type StandardLoadInputs, type WeaponsOptions };
|
|
1883
|
+
export { type ApplyBlueprintOptions, type AvailableBlueprint, type BuildCost, type BuildCredits, type BuildMass, type BuildWeaponMetrics, type DefenceOptions, type DistributorOptions, type EngineeringNormalizationCode, type EngineeringNormalizationResult, type EngineeringNormalizationUnchanged, type EngineeringNormalizationUnsupported, type EngineeringNormalized, type ExperimentalEffectMutationCode, type ExperimentalEffectMutationResult, type ExperimentalEffectUnchanged, type ExperimentalEffectUnsupported, type ExperimentalEffectUpdated, type FittedModule, type FittedWeaponMetrics, type FixedMountRepairResult, type ImmovableReason, type JumpOptions, type JumpRangeSummary, LoadoutEditError, type LoadoutEditErrorCode, type LoadoutExportOptions, type LoadoutImportOutcome, type LoadoutSlot, type MobilityOptions, ShipLoadout, type SlefExportOptions, type StandardLoad, type StandardLoadInputs, type WeaponsOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{LoadoutEditError,ShipLoadout}from"../chunk-
|
|
1
|
+
export{LoadoutEditError,ShipLoadout}from"../chunk-3BM5BHI3.js"; //# sourceMappingURL=ship-loadout.js.map
|
package/dist/ships/slef.d.ts
CHANGED
|
@@ -91,9 +91,10 @@ interface BlueprintModuleEngineering {
|
|
|
91
91
|
* so an export from another app may name the blueprint and its roll without spelling
|
|
92
92
|
* out the resulting stats. Treat a missing array as "not stated", not as "nothing was
|
|
93
93
|
* changed". A craftable recipe can be reconstructed with
|
|
94
|
-
* {@link ShipLoadout.applyBlueprint}
|
|
95
|
-
*
|
|
96
|
-
*
|
|
94
|
+
* {@link ShipLoadout.applyBlueprint}, or rolled where it stands with
|
|
95
|
+
* {@link ShipLoadout.completeEngineeringGrade}, which spells out a stated identity
|
|
96
|
+
* at quality `1`; resolve a fixed identity through the pre-engineered catalogue and
|
|
97
|
+
* fit it with {@link ShipLoadout.setPreEngineeredVariant}.
|
|
97
98
|
*/
|
|
98
99
|
readonly Modifiers?: readonly EngineeringModifier[];
|
|
99
100
|
}
|
|
@@ -149,13 +150,14 @@ interface LoadoutModule {
|
|
|
149
150
|
* Only `Ship` and `Modules` are strictly required by SLEF; every other field is
|
|
150
151
|
* optional. Masses are in tonnes, ranges in light-years, values in credits.
|
|
151
152
|
*
|
|
152
|
-
* `timestamp`, `ShipID`, `HullHealth` and `Hot` are deliberately outside the
|
|
153
|
-
* loadout shape. They describe the capture or the ship
|
|
154
|
-
* fit, so {@link ShipLoadout.fromLoadout} drops them and
|
|
155
|
-
* never write them. A tolerant parse still accepts an
|
|
153
|
+
* `event`, `timestamp`, `ShipID`, `HullHealth` and `Hot` are deliberately outside the
|
|
154
|
+
* durable loadout shape. They name the journal line, or describe the capture or the ship
|
|
155
|
+
* instance/state, rather than its fit, so {@link ShipLoadout.fromLoadout} drops them and
|
|
156
|
+
* subsequent loadout/SLEF exports never write them. A tolerant parse still accepts an
|
|
157
|
+
* input object carrying those keys.
|
|
156
158
|
*/
|
|
157
159
|
interface LoadoutEvent {
|
|
158
|
-
/**
|
|
160
|
+
/** `"Loadout"` when a journal line supplied it. Accepted on input, never written. */
|
|
159
161
|
readonly event?: string;
|
|
160
162
|
/** The hull's internal id, e.g. `"explorer_nx"` (lower-cased). */
|
|
161
163
|
readonly Ship: string;
|