@elite-dangerous-almanac/core 0.2.1 → 0.2.3

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.
Files changed (97) hide show
  1. package/PROVENANCE/ships/SOURCES.md +25 -0
  2. package/README.md +3 -2
  3. package/THIRD_PARTY_NOTICES.md +24 -2
  4. package/dist/astro/body-orbit.d.ts +174 -0
  5. package/dist/astro/body-orbit.js +1 -0
  6. package/dist/astro/body-orbit.js.map +1 -0
  7. package/dist/astro/body-physics.d.ts +228 -0
  8. package/dist/astro/body-physics.js +1 -0
  9. package/dist/astro/body-physics.js.map +1 -0
  10. package/dist/astro/body-rings.d.ts +223 -0
  11. package/dist/astro/body-rings.js +1 -0
  12. package/dist/astro/body-rings.js.map +1 -0
  13. package/dist/astro/codex-region-lookup.js +1 -1
  14. package/dist/astro/codex-region-lookup.js.map +1 -1
  15. package/dist/astro/index.d.ts +38 -1
  16. package/dist/astro/index.js +1 -1
  17. package/dist/astro/nebulae.d.ts +4 -4
  18. package/dist/astro/procedural-system.js +1 -1
  19. package/dist/astro/star-physics.d.ts +255 -0
  20. package/dist/astro/star-physics.js +1 -0
  21. package/dist/astro/star-physics.js.map +1 -0
  22. package/dist/body-scan-CEUYjCfH.d.ts +416 -0
  23. package/dist/{chunk-HUYYGTRM.js → chunk-3LZXB2MC.js} +1 -1
  24. package/dist/{chunk-AAE4KZ2V.js → chunk-6IWKFKQF.js} +1 -1
  25. package/dist/{chunk-AAE4KZ2V.js.map → chunk-6IWKFKQF.js.map} +1 -1
  26. package/dist/{chunk-MRTTQYT5.js → chunk-7EWZGDWY.js} +1 -1
  27. package/dist/{chunk-TBZJIQ5P.js → chunk-7TVFV3VO.js} +1 -1
  28. package/dist/chunk-7TVFV3VO.js.map +1 -0
  29. package/dist/chunk-7ZERP4TB.js +1 -0
  30. package/dist/{chunk-APEG4ZER.js.map → chunk-7ZERP4TB.js.map} +1 -1
  31. package/dist/chunk-AGRSIKNV.js +1 -0
  32. package/dist/chunk-AGRSIKNV.js.map +1 -0
  33. package/dist/chunk-CHA6LKH4.js +1 -0
  34. package/dist/chunk-CHA6LKH4.js.map +1 -0
  35. package/dist/chunk-DABPLBTN.js +1 -0
  36. package/dist/chunk-DABPLBTN.js.map +1 -0
  37. package/dist/chunk-DAQ3PJ4R.js +1 -0
  38. package/dist/chunk-DAQ3PJ4R.js.map +1 -0
  39. package/dist/chunk-G2VSQFD6.js +1 -0
  40. package/dist/{chunk-T62GO4AA.js.map → chunk-G2VSQFD6.js.map} +1 -1
  41. package/dist/chunk-GBTCWNO6.js +1 -0
  42. package/dist/chunk-GBTCWNO6.js.map +1 -0
  43. package/dist/chunk-KPJ77VPS.js +1 -0
  44. package/dist/{chunk-PL75RTA2.js.map → chunk-KPJ77VPS.js.map} +1 -1
  45. package/dist/chunk-NEXDA73Y.js +1 -0
  46. package/dist/chunk-NEXDA73Y.js.map +1 -0
  47. package/dist/chunk-P2MUFVJC.js +1 -0
  48. package/dist/chunk-P2MUFVJC.js.map +1 -0
  49. package/dist/chunk-TMXKC6JL.js +1 -0
  50. package/dist/chunk-TMXKC6JL.js.map +1 -0
  51. package/dist/chunk-ZZ376WHL.js +1 -0
  52. package/dist/chunk-ZZ376WHL.js.map +1 -0
  53. package/dist/commodities/commodities.d.ts +1 -1
  54. package/dist/equipment/index.js +1 -1
  55. package/dist/equipment/upgrade-costs.js +1 -1
  56. package/dist/equipment/upgrade-costs.js.map +1 -1
  57. package/dist/i18n/index.js +1 -1
  58. package/dist/i18n/pre-engineered.js +1 -1
  59. package/dist/materials/index.js +1 -1
  60. package/dist/materials/materials.d.ts +1 -1
  61. package/dist/materials/micro-resources-all.js +1 -1
  62. package/dist/materials/micro-resources.d.ts +1 -1
  63. package/dist/materials/micro-resources.js +1 -1
  64. package/dist/ships/build-metrics.d.ts +21 -232
  65. package/dist/ships/build-metrics.js +1 -1
  66. package/dist/ships/distributor.d.ts +1 -1
  67. package/dist/ships/heat.d.ts +1 -1
  68. package/dist/ships/index.d.ts +2 -2
  69. package/dist/ships/index.js +1 -1
  70. package/dist/ships/loadout-calculations.d.ts +2 -2
  71. package/dist/ships/mobility-capacitor.d.ts +1 -1
  72. package/dist/ships/modules-all.js +1 -1
  73. package/dist/ships/modules.d.ts +1 -1
  74. package/dist/ships/modules.js +1 -1
  75. package/dist/ships/pre-engineered-stats.d.ts +16 -9
  76. package/dist/ships/pre-engineered-stats.js +1 -1
  77. package/dist/ships/pre-engineered.d.ts +4 -3
  78. package/dist/ships/pre-engineered.js +1 -1
  79. package/dist/ships/shield-capacitor.d.ts +1 -1
  80. package/dist/ships/shields.d.ts +1 -1
  81. package/dist/ships/ship-loadout.d.ts +80 -16
  82. package/dist/ships/ship-loadout.js +1 -1
  83. package/package.json +19 -4
  84. package/dist/chunk-6S36AVA4.js +0 -1
  85. package/dist/chunk-6S36AVA4.js.map +0 -1
  86. package/dist/chunk-APEG4ZER.js +0 -1
  87. package/dist/chunk-GVNTKCVF.js +0 -1
  88. package/dist/chunk-GVNTKCVF.js.map +0 -1
  89. package/dist/chunk-JET673E5.js +0 -1
  90. package/dist/chunk-JET673E5.js.map +0 -1
  91. package/dist/chunk-PL75RTA2.js +0 -1
  92. package/dist/chunk-SG6YLUQ4.js +0 -1
  93. package/dist/chunk-SG6YLUQ4.js.map +0 -1
  94. package/dist/chunk-T62GO4AA.js +0 -1
  95. package/dist/chunk-TBZJIQ5P.js.map +0 -1
  96. /package/dist/{chunk-HUYYGTRM.js.map → chunk-3LZXB2MC.js.map} +0 -0
  97. /package/dist/{chunk-MRTTQYT5.js.map → chunk-7EWZGDWY.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ships/internal/loadout-fitting.ts","../src/ships/internal/loadout-import.ts","../src/ships/internal/calculation-result.ts","../src/ships/internal/loadout-metrics.ts","../src/ships/internal/loadout-internals.ts"],"names":["getLoadoutModifier","sourcePurchaseFromLoadout","identifyPreEngineeredVariant","unrollableFixedArticle","cloneLoadoutModule","isNonOutfittingSlot","isBuiltInHullModule","matchingKeyIn","ownKeyIn","getPreEngineeredStats","getPreEngineeredModifiers","cloneModuleStats","isFinalGuardianWeaponEngineering","scaleDamageComponents","weaponMetrics","combinedRateOfFire","getPreEngineeredVariants","shieldMetrics","getShipBySymbol","getShipByName","getShipSlots","builtInModuleBySymbol","getBulkheadsForShip","CORE_MODULES","getDefaultLoadout","getExperimentalEffect","ammunitionCapacity","fieldForLabel","scaleForLabel","labelsForField","capabilityValueForLabel","damageTypeForLabel","parseSlotName","SLOT_RESTRICTION_LABELS","enumerateSlots","normalizeKey","truncate","requireString","describeValue","requireStringIfPresent","deepFreeze","MILITARY_PREFIXES","MINING_PREFIXES","CARGO_PREFIXES","RESTRICTED_SLOT_PREFIXES","mining","military","cargo","limpetController","vesselHangar","passenger","planetaryApproachSuite","problem","constraint","message","params","restrictionProblem","slot","symbol","restriction","some","prefix","startsWith","moduleSlotProblem","module","required","restrictedToSlot","moduleFitProblem","shipSymbol","kind","hull","ship","toLowerCase","name","armourHull","armourShipName","armourShipSymbol","shipName","restricted","restrictedToShips","allowedShipNames","map","labels","index","join","allowedShipSymbols","wrongMount","moduleSlot","core","requiredCore","category","isFuelTank","class","size","moduleClass","slotSize","moduleFitError","preEngineeredVariantFor","Engineering","Item","captureLoadoutEvent","event","modules","Modules","ShipName","shipIdent","ShipIdent","hullValue","HullValue","modulesValue","ModulesValue","rebuy","Rebuy","unladenMass","UnladenMass","cargoCapacity","CargoCapacity","fuelCapacity","FuelCapacity","Ship","Array","isArray","captureEach","captureModule","values","capture","captured","length","push","on","On","priority","Priority","health","Health","value","Value","engineering","Slot","captureEngineering","experimental","ExperimentalEffect","experimentalLocalised","ExperimentalEffect_Localised","modifiers","Modifiers","BlueprintName","Level","Quality","modifier","hullLayout","slots","fixedMountRejects","layout","stats","mount","find","candidate","key","normalizeLoadoutEvent","rawEvent","TypeError","Map","Set","entries","Label","normalizedSlot","has","add","set","top","invalidatesAggregates","outcomes","defaults","slotKind","fallback","rejected","action","sourceSymbol","replacementSymbol","delete","moduleStats","primitiveModifiers","variant","catalogueVariantStats","variantStats","retainsBakedExperimental","experimentalEffectSymbol","trim","engineeringLocked","originalExperimental","withoutExperimental","currentExperimental","currentVariant","guardianFinal","normalizedBlueprint","normalizedExperimental","variants","exact","blueprintSymbol","grade","guardianBase","sourcePurchase","NO_ISSUES","Object","freeze","completeResult","complete","issues","incompleteResult","issue","PREFIX","powerPlant","thrusters","frameShiftDrive","powerDistributor","shieldGenerator","shieldCellBank","shieldBooster","shieldReinforcement","hullReinforcement","moduleReinforcement","startsWithAny","prefixes","isPowerDistributor","isPowerPlant","parsed","isThruster","isFrameShiftDrive","isEnabled","priorityOf","effectiveStat","field","stated","statedModifier","base","label","modified","effectiveCapability","effectiveDamageDistribution","fromEffect","damageDistribution","distribution","resolved","seen","type","convertsDamage","modifierRatio","effective","relatedStat","ratio","effectiveModule","merged","fields","keys","capability","engineeringGroup","massRatio","minMass","maxMass","performanceRatio","minMultiplier","maxMultiplier","normalizeEffectiveWeapon","damageComponents","damage","powerConsumerFor","draw","mounted","enabled","deployedOnly","alwaysPowered","powerAvailable","statsFor","DEFAULT_SLOT","powerCapacity","heatEfficiency","UNRESOLVED_FACT","NOTHING_FITTED","metricIssue","reason","defaultSlot","unavailable","powerPlantIssueFor","capacity","Number","isFinite","powerDrawIssueFor","consumer","poweredMetricBudgetFor","getBudget","plantIssue","drawIssue","budget","available","poweredStates","retracted","poweredShieldGeneratorResultFor","powered","mapResistanceFields","read","kineticResistance","thermalResistance","explosiveResistance","causticResistance","resistancesOf","shieldInputFor","generator","boosters","reinforcement","strengthRatio","optMass","Math","max","optMultiplier","shieldBoost","hullMass","baseShieldStrength","shieldInputResultFor","fitted","shieldCapacitorInputResultFor","systemsPips","capacitor","systemsCapacitorResultFor","shields","strength","resistances","systemsCapacity","systemsRecharge","distributor","thrusterCurveFor","optSpeedMultiplier","speedCurve","minSpeedMultiplier","maxSpeedMultiplier","optRotationMultiplier","rotationCurve","minRotationMultiplier","maxRotationMultiplier","fittedThrusterParamsFor","mobilityInputResultFor","mass","minimumSpeed","maximumSpeed","boost","minPitch","pitch","minRoll","roll","minYaw","yaw","shieldRecoveryInputResultFor","generatorModule","generatorStats","distributorDraw","regenRate","brokenRegenRate","weaponsCapacitorInputFor","weaponsPips","weaponsCapacity","weaponsRecharge","sustainedEnergyPerSecond","deployed","weapon","weaponStatsFor","distributorInputResultFor","pips","disabled","enginesCapacity","enginesRecharge","heatInputResultFor","plant","thrusterHeatRate","deployedThrusterHeatRate","fsdHeatRate","weapons","running","heat","heatPerSecond","sustainedHeatPerSecond","heatCapacity","heatDissipation","retractedPowerDraw","poweredDraw","deployedPowerDraw","state","bands","reduce","total","band","min","poweredRetracted","poweredDeployed","cellBankInputsFor","banks","ammunition","reinforcementRate","shieldBankReinforcement","cells","spinUp","shieldBankSpinUp","duration","shieldBankDuration","shieldBankHeat","stockBulkhead","v","endsWith","armourInputFor","reinforcements","moduleReinforcements","bulkhead","hullBoost","moduleProtection","integrity","stock","baseArmour","WEAPON_FIELDS","projectileRange","burstAdjustedRateOfFire","touched","rate","rateOfFire","statedDamagePerSecond","firingFactor","roundsPerShot","maximumRange","falloffRange","INTERNALS","WeakMap","publishLoadoutInternals","build","internals","loadoutInternals","get"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/ships/internal/loadout-fitting.ts","../src/ships/internal/loadout-import.ts","../src/ships/internal/calculation-result.ts","../src/ships/internal/loadout-metrics.ts","../src/ships/internal/loadout-internals.ts"],"names":["shieldMetrics","getShipBySymbol","getShipByName","getShipSlots","getLoadoutModifier","sourcePurchaseFromLoadout","identifyPreEngineeredVariant","unrollableFixedArticle","cloneLoadoutModule","isNonOutfittingSlot","isBuiltInHullModule","matchingKeyIn","ownKeyIn","getPreEngineeredStats","getPreEngineeredModifiers","cloneModuleStats","isFinalGuardianWeaponEngineering","scaleDamageComponents","weaponMetrics","combinedRateOfFire","builtInModuleBySymbol","getBulkheadsForShip","getPreEngineeredVariants","CORE_MODULES","getExperimentalEffect","getDefaultLoadout","fieldForLabel","scaleForLabel","labelsForField","capabilityValueForLabel","damageTypeForLabel","ammunitionCapacity","parseSlotName","SLOT_RESTRICTION_LABELS","enumerateSlots","normalizeKey","truncate","requireString","describeValue","requireStringIfPresent","deepFreeze","MILITARY_PREFIXES","MINING_PREFIXES","CARGO_PREFIXES","RESTRICTED_SLOT_PREFIXES","mining","military","cargo","limpetController","vesselHangar","passenger","planetaryApproachSuite","problem","constraint","message","params","restrictionProblem","slot","symbol","restriction","some","prefix","startsWith","moduleSlotProblem","module","required","restrictedToSlot","moduleFitProblem","shipSymbol","kind","hull","ship","toLowerCase","name","armourHull","armourShipName","armourShipSymbol","shipName","restricted","restrictedToShips","allowedShipNames","map","labels","index","join","allowedShipSymbols","wrongMount","moduleSlot","core","requiredCore","category","isFuelTank","class","size","moduleClass","slotSize","moduleFitError","preEngineeredVariantFor","Engineering","Item","captureLoadoutEvent","event","modules","Modules","ShipName","shipIdent","ShipIdent","hullValue","HullValue","modulesValue","ModulesValue","rebuy","Rebuy","unladenMass","UnladenMass","cargoCapacity","CargoCapacity","fuelCapacity","FuelCapacity","Ship","Array","isArray","captureEach","captureModule","values","capture","captured","length","push","on","On","priority","Priority","health","Health","value","Value","engineering","Slot","captureEngineering","experimental","ExperimentalEffect","experimentalLocalised","ExperimentalEffect_Localised","modifiers","Modifiers","BlueprintName","Level","Quality","modifier","hullLayout","slots","fixedMountRejects","layout","stats","mount","find","candidate","key","normalizeLoadoutEvent","rawEvent","TypeError","Map","Set","entries","Label","normalizedSlot","has","add","set","top","invalidatesAggregates","outcomes","defaults","slotKind","fallback","rejected","action","sourceSymbol","replacementSymbol","delete","moduleStats","primitiveModifiers","variant","catalogueVariantStats","variantStats","retainsBakedExperimental","experimentalEffectSymbol","trim","engineeringLocked","originalExperimental","withoutExperimental","currentExperimental","currentVariant","guardianFinal","normalizedBlueprint","normalizedExperimental","variants","exact","blueprintSymbol","grade","guardianBase","sourcePurchase","NO_ISSUES","Object","freeze","completeResult","complete","issues","incompleteResult","issue","PREFIX","powerPlant","thrusters","frameShiftDrive","powerDistributor","shieldGenerator","shieldCellBank","shieldBooster","shieldReinforcement","hullReinforcement","moduleReinforcement","startsWithAny","prefixes","isPowerDistributor","isPowerPlant","parsed","isThruster","isFrameShiftDrive","isEnabled","priorityOf","effectiveStat","field","stated","statedModifier","base","label","modified","effectiveCapability","effectiveDamageDistribution","fromEffect","damageDistribution","distribution","resolved","seen","type","convertsDamage","modifierRatio","effective","relatedStat","ratio","effectiveModule","merged","fields","keys","capability","engineeringGroup","massRatio","minMass","maxMass","performanceRatio","minMultiplier","maxMultiplier","normalizeEffectiveWeapon","damageComponents","damage","powerConsumerFor","draw","mounted","enabled","deployedOnly","alwaysPowered","powerAvailable","statsFor","DEFAULT_SLOT","powerCapacity","heatEfficiency","UNRESOLVED_FACT","NOTHING_FITTED","metricIssue","reason","defaultSlot","unavailable","powerPlantIssueFor","capacity","Number","isFinite","powerDrawIssueFor","consumer","poweredMetricBudgetFor","getBudget","plantIssue","drawIssue","budget","available","poweredStates","retracted","poweredShieldGeneratorResultFor","powered","mapResistanceFields","read","kineticResistance","thermalResistance","explosiveResistance","causticResistance","resistancesOf","shieldInputFor","generator","boosters","reinforcement","strengthRatio","optMass","Math","max","optMultiplier","shieldBoost","hullMass","baseShieldStrength","shieldInputResultFor","fitted","shieldCapacitorInputResultFor","systemsPips","capacitor","systemsCapacitorResultFor","shields","strength","resistances","systemsCapacity","systemsRecharge","distributor","thrusterCurveFor","optSpeedMultiplier","speedCurve","minSpeedMultiplier","maxSpeedMultiplier","optRotationMultiplier","rotationCurve","minRotationMultiplier","maxRotationMultiplier","fittedThrusterParamsFor","mobilityInputResultFor","mass","minimumSpeed","maximumSpeed","boost","minPitch","pitch","minRoll","roll","minYaw","yaw","shieldRecoveryInputResultFor","generatorModule","generatorStats","distributorDraw","regenRate","brokenRegenRate","weaponsCapacitorInputFor","weaponsPips","weaponsCapacity","weaponsRecharge","sustainedEnergyPerSecond","deployed","weapon","weaponStatsFor","distributorInputResultFor","pips","disabled","enginesCapacity","enginesRecharge","heatInputResultFor","plant","thrusterHeatRate","deployedThrusterHeatRate","fsdHeatRate","weapons","running","heat","heatPerSecond","sustainedHeatPerSecond","heatCapacity","heatDissipation","retractedPowerDraw","poweredDraw","deployedPowerDraw","state","bands","reduce","total","band","min","poweredRetracted","poweredDeployed","cellBankInputsFor","banks","ammunition","reinforcementRate","shieldBankReinforcement","cells","spinUp","shieldBankSpinUp","duration","shieldBankDuration","shieldBankHeat","stockBulkhead","v","endsWith","armourInputFor","reinforcements","moduleReinforcements","bulkhead","hullBoost","moduleProtection","integrity","stock","baseArmour","WEAPON_FIELDS","projectileRange","burstAdjustedRateOfFire","touched","rate","rateOfFire","statedDamagePerSecond","firingFactor","roundsPerShot","maximumRange","falloffRange","INTERNALS","WeakMap","publishLoadoutInternals","build","internals","loadoutInternals","get"],"mappings":"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"}
@@ -1 +1 @@
1
- import{ALL_MICRO_RESOURCES}from"./chunk-GVNTKCVF.js";import{findInKeyIndex,findByKey,filterByKey,createKeyIndex}from"./chunk-BKWLI44T.js";var MICRO_RESOURCES_BY_SYMBOL=/* @__PURE__ */createKeyIndex(ALL_MICRO_RESOURCES,"symbol");var MICRO_RESOURCES_BY_NAME=/* @__PURE__ */createKeyIndex(ALL_MICRO_RESOURCES,"name");function getMicroResourceBySymbol(symbol,microResources=ALL_MICRO_RESOURCES){return microResources===ALL_MICRO_RESOURCES?findInKeyIndex(MICRO_RESOURCES_BY_SYMBOL,symbol,"getMicroResourceBySymbol: symbol"):findByKey(microResources,"symbol",symbol,"getMicroResourceBySymbol: symbol")}function getMicroResourceByName(name,microResources=ALL_MICRO_RESOURCES){return microResources===ALL_MICRO_RESOURCES?findInKeyIndex(MICRO_RESOURCES_BY_NAME,name,"getMicroResourceByName: name"):findByKey(microResources,"name",name,"getMicroResourceByName: name")}function microResourcesInCategory(category){return filterByKey(ALL_MICRO_RESOURCES,"category",category,"microResourcesInCategory: category")}export{getMicroResourceByName,getMicroResourceBySymbol,microResourcesInCategory};//# sourceMappingURL=chunk-MRTTQYT5.js.map
1
+ import{ALL_MICRO_RESOURCES}from"./chunk-DAQ3PJ4R.js";import{findInKeyIndex,findByKey,filterByKey,createKeyIndex}from"./chunk-BKWLI44T.js";var MICRO_RESOURCES_BY_SYMBOL=/* @__PURE__ */createKeyIndex(ALL_MICRO_RESOURCES,"symbol");var MICRO_RESOURCES_BY_NAME=/* @__PURE__ */createKeyIndex(ALL_MICRO_RESOURCES,"name");function getMicroResourceBySymbol(symbol,microResources=ALL_MICRO_RESOURCES){return microResources===ALL_MICRO_RESOURCES?findInKeyIndex(MICRO_RESOURCES_BY_SYMBOL,symbol,"getMicroResourceBySymbol: symbol"):findByKey(microResources,"symbol",symbol,"getMicroResourceBySymbol: symbol")}function getMicroResourceByName(name,microResources=ALL_MICRO_RESOURCES){return microResources===ALL_MICRO_RESOURCES?findInKeyIndex(MICRO_RESOURCES_BY_NAME,name,"getMicroResourceByName: name"):findByKey(microResources,"name",name,"getMicroResourceByName: name")}function microResourcesInCategory(category){return filterByKey(ALL_MICRO_RESOURCES,"category",category,"microResourcesInCategory: category")}export{getMicroResourceByName,getMicroResourceBySymbol,microResourcesInCategory};//# sourceMappingURL=chunk-7EWZGDWY.js.map
@@ -1 +1 @@
1
- import{parseSystemName,boxelCodeToLetters,formatSystemName}from"./chunk-7ATBEOVC.js";import{isPermitLockedRegionName}from"./chunk-NLBUKXNV.js";import{findHandAuthoredRegionAt}from"./chunk-AVZI6VKA.js";import{sizeClassToMassCode}from"./chunk-POZTXBSN.js";import{getHandAuthoredRegionOrigin,resolveNamingRegionOrigin}from"./chunk-DWRNXUAX.js";import{encodeSystemAddress,decodeSystemAddress,decodeModSystemAddress,encodeModSystemAddress,absoluteBoxelToBoxelCode}from"./chunk-DI5RXSJR.js";import{toSystemAddress}from"./chunk-NEEFT7WH.js";import{sectorGridPositionFromName,sectorNameFromGridPosition}from"./chunk-H47K3UWG.js";import{requireString,truncate}from"./chunk-PKWVG2JY.js";function tryEncodeModAddress(parts){const origin=resolveNamingRegionOrigin(parts.regionName);if(!origin)return null;try{return encodeModSystemAddress(parts,origin)}catch(error){if(error instanceof RangeError)return null;throw error}}function applyHaOverride(parts,decoded,position){if(!position)return{parts:parts,handAuthored:false,requiresPermit:false};const region=findHandAuthoredRegionAt(position);if(!region)return{parts:parts,handAuthored:false,requiresPermit:false};const origin=resolveNamingRegionOrigin(region.name);if(!origin||origin.x0<0||origin.y0<0||origin.z0<0){return{parts:parts,handAuthored:false,requiresPermit:false}}const boxelCode=absoluteBoxelToBoxelCode(decoded.sizeClass,decoded.absoluteBoxel,origin);if(boxelCode===null)return{parts:parts,handAuthored:false,requiresPermit:false};const{l1:l1,l2:l2,l3:l3,n1:n1}=boxelCodeToLetters(boxelCode);return{parts:{...parts,regionName:region.name,l1:l1,l2:l2,l3:l3,n1:n1},handAuthored:true,requiresPermit:isPermitLockedRegionName(region.name)}}var ProceduralSystem=class _ProceduralSystem{#parts;#position;#id64;#modId64;usesHandAuthoredRegion;requiresRegionPermit;constructor(parts,opts){this.#parts={...parts};this.#position=opts.position?{...opts.position}:void 0;this.#id64=opts.id64;this.#modId64=opts.modId64;this.usesHandAuthoredRegion=opts.handAuthored;this.requiresRegionPermit=opts.requiresPermit}static fromName(name){const parts=parseSystemName(requireString(name,"ProceduralSystem.fromName: name"));if(!parts)return null;const sectorPosition=sectorGridPositionFromName(parts.regionName);const namedOrigin=sectorPosition?null:getHandAuthoredRegionOrigin(parts.regionName);const named=namedOrigin!==null;const regionName=sectorPosition?sectorNameFromGridPosition(sectorPosition):namedOrigin?.name??parts.regionName;const canonicalParts={...parts,regionName:regionName};const origin=resolveNamingRegionOrigin(regionName);if(!origin)throw new RangeError(`Unknown sector: ${truncate(regionName)}`);return new _ProceduralSystem(canonicalParts,{id64:encodeSystemAddress(canonicalParts,origin),modId64:tryEncodeModAddress(canonicalParts),handAuthored:named,requiresPermit:named&&isPermitLockedRegionName(regionName)})}static fromSystemAddress(id64,position){const address=toSystemAddress(id64);return _ProceduralSystem.#fromDecoded(decodeSystemAddress(address),address,position)}static fromModSystemAddress(id64,position){const address=toSystemAddress(id64);return _ProceduralSystem.#fromDecoded(decodeModSystemAddress(address),void 0,position,address)}static#fromDecoded(decoded,id64,position,modId64){const{l1:l1,l2:l2,l3:l3,n1:n1}=boxelCodeToLetters(decoded.boxelCode);const base={regionName:sectorNameFromGridPosition(decoded.sectorGridPosition),l1:l1,l2:l2,l3:l3,massCode:decoded.sizeClass,n1:n1,n2:decoded.sequence};const overridden=applyHaOverride(base,decoded,position);const origin=resolveNamingRegionOrigin(overridden.parts.regionName);if(!origin){throw new RangeError(`Unknown sector: ${truncate(overridden.parts.regionName)}`)}const normalAddress=id64??encodeSystemAddress(overridden.parts,origin);const opts={id64:normalAddress,modId64:modId64??tryEncodeModAddress(overridden.parts),handAuthored:overridden.handAuthored,requiresPermit:overridden.requiresPermit,...position?{position:position}:{}};return new _ProceduralSystem(overridden.parts,opts)}get name(){return formatSystemName(this.#parts)}get namingRegionName(){return this.#parts.regionName}get massCode(){return sizeClassToMassCode(this.#parts.massCode)}get sequence(){return this.#parts.n2}get position(){return this.#position?{...this.#position}:null}get parts(){return{...this.#parts}}get systemAddress(){return this.#id64}get modSystemAddress(){return this.#modId64}};export{ProceduralSystem};//# sourceMappingURL=chunk-TBZJIQ5P.js.map
1
+ import{parseSystemName,boxelCodeToLetters,formatSystemName}from"./chunk-7ATBEOVC.js";import{getHandAuthoredRegionOrigin,resolveNamingRegionOrigin}from"./chunk-DWRNXUAX.js";import{isPermitLockedRegionName}from"./chunk-NLBUKXNV.js";import{sizeClassToMassCode}from"./chunk-POZTXBSN.js";import{encodeSystemAddress,decodeSystemAddress,decodeModSystemAddress,encodeModSystemAddress,absoluteBoxelToBoxelCode}from"./chunk-DI5RXSJR.js";import{toSystemAddress}from"./chunk-NEEFT7WH.js";import{sectorGridPositionFromName,sectorNameFromGridPosition}from"./chunk-H47K3UWG.js";import{requireString,truncate}from"./chunk-PKWVG2JY.js";import{findHandAuthoredRegionAt}from"./chunk-AVZI6VKA.js";function tryEncodeModAddress(parts){const origin=resolveNamingRegionOrigin(parts.regionName);if(!origin)return null;try{return encodeModSystemAddress(parts,origin)}catch(error){if(error instanceof RangeError)return null;throw error}}function applyHaOverride(parts,decoded,position){if(!position)return{parts:parts,handAuthored:false,requiresPermit:false};const region=findHandAuthoredRegionAt(position);if(!region)return{parts:parts,handAuthored:false,requiresPermit:false};const origin=resolveNamingRegionOrigin(region.name);if(!origin||origin.x0<0||origin.y0<0||origin.z0<0){return{parts:parts,handAuthored:false,requiresPermit:false}}const boxelCode=absoluteBoxelToBoxelCode(decoded.sizeClass,decoded.absoluteBoxel,origin);if(boxelCode===null)return{parts:parts,handAuthored:false,requiresPermit:false};const{l1:l1,l2:l2,l3:l3,n1:n1}=boxelCodeToLetters(boxelCode);return{parts:{...parts,regionName:region.name,l1:l1,l2:l2,l3:l3,n1:n1},handAuthored:true,requiresPermit:isPermitLockedRegionName(region.name)}}var ProceduralSystem=class _ProceduralSystem{#parts;#position;#id64;#modId64;usesHandAuthoredRegion;requiresRegionPermit;constructor(parts,opts){this.#parts={...parts};this.#position=opts.position?{...opts.position}:void 0;this.#id64=opts.id64;this.#modId64=opts.modId64;this.usesHandAuthoredRegion=opts.handAuthored;this.requiresRegionPermit=opts.requiresPermit}static fromName(name){const parts=parseSystemName(requireString(name,"ProceduralSystem.fromName: name"));if(!parts)return null;const sectorPosition=sectorGridPositionFromName(parts.regionName);const namedOrigin=sectorPosition?null:getHandAuthoredRegionOrigin(parts.regionName);const named=namedOrigin!==null;const regionName=sectorPosition?sectorNameFromGridPosition(sectorPosition):namedOrigin?.name??parts.regionName;const canonicalParts={...parts,regionName:regionName};const origin=resolveNamingRegionOrigin(regionName);if(!origin)throw new RangeError(`Unknown sector: ${truncate(regionName)}`);return new _ProceduralSystem(canonicalParts,{id64:encodeSystemAddress(canonicalParts,origin),modId64:tryEncodeModAddress(canonicalParts),handAuthored:named,requiresPermit:named&&isPermitLockedRegionName(regionName)})}static fromSystemAddress(id64,position){const address=toSystemAddress(id64);return _ProceduralSystem.#fromDecoded(decodeSystemAddress(address),address,position)}static fromModSystemAddress(id64,position){const address=toSystemAddress(id64);return _ProceduralSystem.#fromDecoded(decodeModSystemAddress(address),void 0,position,address)}static#fromDecoded(decoded,id64,position,modId64){const{l1:l1,l2:l2,l3:l3,n1:n1}=boxelCodeToLetters(decoded.boxelCode);const base={regionName:sectorNameFromGridPosition(decoded.sectorGridPosition),l1:l1,l2:l2,l3:l3,massCode:decoded.sizeClass,n1:n1,n2:decoded.sequence};const overridden=applyHaOverride(base,decoded,position);const origin=resolveNamingRegionOrigin(overridden.parts.regionName);if(!origin){throw new RangeError(`Unknown sector: ${truncate(overridden.parts.regionName)}`)}const normalAddress=id64??encodeSystemAddress(overridden.parts,origin);const opts={id64:normalAddress,modId64:modId64??tryEncodeModAddress(overridden.parts),handAuthored:overridden.handAuthored,requiresPermit:overridden.requiresPermit,...position?{position:position}:{}};return new _ProceduralSystem(overridden.parts,opts)}get name(){return formatSystemName(this.#parts)}get namingRegionName(){return this.#parts.regionName}get massCode(){return sizeClassToMassCode(this.#parts.massCode)}get sequence(){return this.#parts.n2}get position(){return this.#position?{...this.#position}:null}get parts(){return{...this.#parts}}get systemAddress(){return this.#id64}get modSystemAddress(){return this.#modId64}};export{ProceduralSystem};//# sourceMappingURL=chunk-7TVFV3VO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/astro/procedural-system.ts"],"names":["parseSystemName","boxelCodeToLetters","formatSystemName","getHandAuthoredRegionOrigin","resolveNamingRegionOrigin","isPermitLockedRegionName","sizeClassToMassCode","encodeSystemAddress","decodeSystemAddress","decodeModSystemAddress","encodeModSystemAddress","absoluteBoxelToBoxelCode","toSystemAddress","sectorGridPositionFromName","sectorNameFromGridPosition","requireString","truncate","findHandAuthoredRegionAt","tryEncodeModAddress","parts","origin","regionName","error","RangeError","applyHaOverride","decoded","position","handAuthored","requiresPermit","region","name","x0","y0","z0","boxelCode","sizeClass","absoluteBoxel","l1","l2","l3","n1","ProceduralSystem","_ProceduralSystem","id64","modId64","usesHandAuthoredRegion","requiresRegionPermit","constructor","opts","this","fromName","sectorPosition","namedOrigin","named","canonicalParts","fromSystemAddress","address","fromDecoded","fromModSystemAddress","base","sectorGridPosition","massCode","n2","sequence","overridden","normalAddress","namingRegionName","systemAddress","modSystemAddress"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{INTERNAL_MODULES}from"./chunk-4CBMQULR.js";import{UTILITY_MODULES}from"./chunk-ELT3FEA4.js";import{CORE_MODULES}from"./chunk-FA5JVXVG.js";import{HARDPOINT_MODULES}from"./chunk-4TFAZX73.js";var ALL_MODULES=Object.freeze([...CORE_MODULES,...INTERNAL_MODULES,...HARDPOINT_MODULES,...UTILITY_MODULES]);export{ALL_MODULES};//# sourceMappingURL=chunk-7ZERP4TB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ships/modules-all.ts"],"names":["CORE_MODULES","HARDPOINT_MODULES","INTERNAL_MODULES","UTILITY_MODULES","ALL_MODULES","Object","freeze"],"mappings":"O,6LA0CO,IAAMI,YAA2CC,OAAOC,OAAO,IAC/DN,gBACAE,oBACAD,qBACAE,yBACNC"}
1
+ {"version":3,"sources":["../src/ships/modules-all.ts"],"names":["INTERNAL_MODULES","UTILITY_MODULES","CORE_MODULES","HARDPOINT_MODULES","ALL_MODULES","Object","freeze"],"mappings":"O,6LA0CO,IAAMI,YAA2CC,OAAOC,OAAO,IAC/DJ,gBACAF,oBACAG,qBACAF,yBACNG"}
@@ -0,0 +1 @@
1
+ import{cellBankSummary,shieldRecovery}from"./chunk-JMAXSXXQ.js";import{loadoutInternals,fittedThrusterParamsFor,preEngineeredVariantFor,powerConsumerFor,powerAvailable,heatInputResultFor,completeResult,cellBankInputsFor,armourInputFor,weaponStatsFor,weaponsCapacitorInputFor,mobilityInputResultFor,shieldInputResultFor,shieldCapacitorInputResultFor,shieldRecoveryInputResultFor,distributorInputResultFor,incompleteResult}from"./chunk-6IWKFKQF.js";import{shieldMetrics}from"./chunk-5VWACBTN.js";import{weaponsCapacitorMetrics}from"./chunk-M4FZRDAH.js";import{powerBudget}from"./chunk-GGQMIQPC.js";import{isNonOutfittingSlot,isBuiltInHullModule,orderBySlotLayout}from"./chunk-DABPLBTN.js";import{weaponMetrics,sumWeaponMetrics}from"./chunk-37JIMWLK.js";import{shieldCapacitorMetrics}from"./chunk-XQJERZUS.js";import{mobilityCapacitorMetrics}from"./chunk-VEEBJFJ7.js";import{mobilityMetrics}from"./chunk-A4QKXXZD.js";import{getExperimentalEffectCost}from"./chunk-CJK2IBI2.js";import{heatMetrics}from"./chunk-6HA2YIKW.js";import{frameShiftDriveMassFactor,singleJumpRange,fuelPerJump,totalRange}from"./chunk-VTMCSCXV.js";import{calculateUnladenMass}from"./chunk-DCB4COCL.js";import{getBlueprintCost}from"./chunk-MTJ4MS7W.js";import{distributorMetrics}from"./chunk-M2TCZKRT.js";import{sumMaterials}from"./chunk-CJQ37JII.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{armourMetrics}from"./chunk-Q5ALV3DI.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var FACADE="BuildMetrics";function requireLoadOptions(scope,options){for(const field of["fuel","cargo"]){const value=options[field];if(value!==void 0)requireFiniteNonNegative(scope,field,value)}}var BuildMetrics=class _BuildMetrics{#build;#state;constructor(build,state){this.#build=build;this.#state=state}static of(build){return new _BuildMetrics(build,loadoutInternals(build,`${FACADE}.of: build`))}loadout(){return this.#build}frameShiftDrive(){const drive=this.#state.resolveDrive();if(drive===null){throw new TypeError(`${FACADE}: build has no frame shift drive`)}return drive}thrusters(){return fittedThrusterParamsFor(this.#state.modules(),this.#state.statsFor)}frameShiftDriveMassFactor(options={}){requireLoadOptions(`${FACADE}.frameShiftDriveMassFactor`,options);return frameShiftDriveMassFactor(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}maxJumpRange(){const fsd=this.frameShiftDrive();return singleJumpRange(this.#loadedMass(0),this.#maxJumpFuel(fsd),fsd)}jumpRange(options={}){requireLoadOptions(`${FACADE}.jumpRange`,options);return singleJumpRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}ladenJumpRange(){return this.jumpRange({cargo:this.#build.cargoCapacity})}fuelPerJump(distance,options={}){requireLoadOptions(`${FACADE}.fuelPerJump`,options);return fuelPerJump(distance,this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}totalRange(options={}){requireLoadOptions(`${FACADE}.totalRange`,options);return totalRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}standardLoadResult(load){return this.#standardLoad(load)}jumpRangeSummary(){const maximum=this.#require(this.standardLoadResult("maximum"),"maximum load");const unladen=this.#require(this.standardLoadResult("unladen"),"unladen load");const laden=this.#require(this.standardLoadResult("laden"),"laden load");return{max:this.jumpRange(maximum),unladen:this.jumpRange(unladen),laden:this.jumpRange(laden),totalMax:this.totalRange(maximum),totalUnladen:this.totalRange(unladen),totalLaden:this.totalRange(laden)}}buildMass(options={}){requireLoadOptions(`${FACADE}.buildMass`,options);const unladen=this.#build.unladenMass;const fuel=options.fuel??this.#build.fuelCapacity.main;const cargo=options.cargo??0;return Object.freeze({hull:this.#state.ship.hullMass,modules:calculateUnladenMass(0,this.#state.calculationModules()),unladen:unladen,fuel:fuel,cargo:cargo,total:unladen+fuel+cargo})}buildCost(){const hull=this.#state.ship.hullCost;let modules=0;let mercCoins=0;const unpriced=[];const materials=[];for(const module of this.#state.modules()){const stats=this.#state.statsFor(module);if(stats?.cost!==void 0){modules+=stats.cost}else if(stats!==null||!isNonOutfittingSlot(module.Slot)&&!isBuiltInHullModule(module)){unpriced.push({slot:module.Slot,symbol:module.Item})}const variant=preEngineeredVariantFor(module);mercCoins+=variant?.mercCoinCost??0;const engineering=module.Engineering;if(!engineering)continue;const grade=engineering.Level;const bought=variant?.grade??0;if(Number.isInteger(grade)&&grade>bought&&grade<=5){const climb=getBlueprintCost(engineering.BlueprintName,grade,bought);if(climb){materials.push(climb.materials);mercCoins+=climb.mercCoins}}const experimental=engineering.ExperimentalEffect;if(experimental!==void 0&&experimental.toLowerCase()!==variant?.experimentalEffectSymbol?.toLowerCase()){const cost=getExperimentalEffectCost(experimental);if(cost)materials.push(cost)}}return deepFreeze({credits:{total:hull+modules,hull:hull,modules:modules,rebuy:Math.trunc((hull+modules)*.05),unpriced:unpriced},mercCoins:mercCoins,materials:sumMaterials(...materials)})}powerBudget(){const modules=this.#state.modules();const consumers=[];for(const module of modules){const consumer=powerConsumerFor(module,this.#state.statsFor(module));if(consumer)consumers.push(consumer)}return powerBudget(powerAvailable(modules,this.#state.statsFor),consumers)}heatMetricsResult(){const input=heatInputResultFor(this.#state.ship,this.#state.effectiveModules(),this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(heatMetrics(input.value)):input}mobilityMetricsResult(options={}){return this.#mobility(options)}mobilityCapacitorMetricsResult(options={}){return this.#mobilityCapacitor(options)}shieldMetricsResult(){return this.#shields()}shieldCapacitorMetricsResult(options={}){return this.#shieldCapacitor(options)}shieldRecoveryResult(options={}){return this.#recovery(options)}cellBanks(){return cellBankSummary(orderBySlotLayout(cellBankInputsFor(this.#state.modules(),this.powerBudget(),this.#state.statsFor),this.#state.layout(),bank=>bank.slot))}armourMetrics(){return armourMetrics(armourInputFor(this.#state.ship,this.#state.modules(),this.#state.statsFor))}weaponMetrics(){const weapons=[];for(const module of this.#state.modules()){const record=this.#state.statsFor(module);const stats=weaponStatsFor(this.#state.effectiveModule(module),record);if(!stats)continue;weapons.push({slot:module.Slot,symbol:module.Item,name:record?.name??module.Item,enabled:module.On!==false,metrics:weaponMetrics(stats),ammunition:ammunitionCapacity(stats),...stats.maximumRange===void 0?{}:{maximumRange:stats.maximumRange},...stats.falloffRange===void 0?{}:{falloffRange:stats.falloffRange},...stats.projectileRange===void 0?{}:{projectileRange:{...stats.projectileRange}},...stats.armourPiercing===void 0?{}:{armourPiercing:stats.armourPiercing}})}const orderedWeapons=orderBySlotLayout(weapons,this.#state.layout(),weapon=>weapon.slot);return{weapons:orderedWeapons,total:sumWeaponMetrics(orderedWeapons.filter(weapon=>weapon.enabled).map(weapon=>weapon.metrics))}}weaponsCapacitorMetrics(options={}){const weaponsPips=requirePips(`${FACADE}.weaponsCapacitorMetrics`,"weaponsPips",options.weaponsPips??4);return weaponsCapacitorMetrics(weaponsCapacitorInputFor(this.#state.effectiveModules(),weaponsPips,this.powerBudget(),this.#state.statsFor))}distributorMetricsResult(options={}){return this.#distributor(options)}#mobility(options){const input=this.#mobilityInput(`${FACADE}.mobilityMetricsResult`,options);return input.complete?completeResult(mobilityMetrics(input.value)):input}#mobilityCapacitor(options){const scope=`${FACADE}.mobilityCapacitorMetricsResult`;const enginesPips=requirePips(scope,"enginesPips",options.enginesPips??4);const input=this.#mobilityInput(scope,options);return input.complete?completeResult(mobilityCapacitorMetrics({...input.value,enginesPips:enginesPips})):input}#mobilityInput(scope,options){requireLoadOptions(scope,options);return mobilityInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),()=>this.#loadedMass(options.cargo??0)+(options.fuel??this.#state.statedMainFuel()??this.#build.fuelCapacity.main),this.#state.statsFor)}#shields(){const input=shieldInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(shieldMetrics(input.value)):input}#shieldCapacitor(options){const systemsPips=requirePips(`${FACADE}.shieldCapacitorMetricsResult`,"systemsPips",options.systemsPips??4);const input=shieldCapacitorInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldCapacitorMetrics(input.value)):input}#recovery(options){const systemsPips=requirePips(`${FACADE}.shieldRecoveryResult`,"systemsPips",options.systemsPips??4);const input=shieldRecoveryInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldRecovery(input.value)):input}#distributor(options){const scope=`${FACADE}.distributorMetricsResult`;const pips={systemsPips:requirePips(scope,"systemsPips",options.systemsPips??4),enginesPips:requirePips(scope,"enginesPips",options.enginesPips??4),weaponsPips:requirePips(scope,"weaponsPips",options.weaponsPips??4)};const input=distributorInputResultFor(this.#state.effectiveModules(),pips,this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(distributorMetrics(input.value)):input}#standardLoad(load){if(load!=="maximum"&&load!=="unladen"&&load!=="laden"){throw new RangeError(`${FACADE}.standardLoadResult: load must be 'maximum', 'unladen', or 'laden'`)}const fuel=this.#build.fuelCapacity;const cargo=load==="laden"?this.#build.cargoCapacity:0;const mass=load==="maximum"?this.#build.unladenMass:0;let drive=null;let maximumFuel=null;if(load==="maximum"){const fitted=this.#state.frameShiftDriveModule();let driveError=null;try{drive=this.#state.resolveDrive();maximumFuel=drive?.maxFuel??null}catch(error){if(!(error instanceof Error))throw error;driveError=error}if(maximumFuel===null){return incompleteResult([{field:"frameShiftDrive",reason:fitted?"unresolved":"missing",slot:fitted?.Slot??"FrameShiftDrive",...fitted?{symbol:fitted.Item}:{},message:driveError?.message??"FrameShiftDrive: no frame shift drive is fitted",params:fitted?{field:"frameShiftDrive",reason:"unresolved",slot:fitted.Slot,symbol:fitted.Item}:{field:"frameShiftDrive",reason:"missing",slot:"FrameShiftDrive"}}])}}const carriedFuel=load==="maximum"?Math.min(fuel.main,maximumFuel):fuel.main;const value=Object.freeze({fuel:carriedFuel,cargo:cargo,mass:this.#build.unladenMass+carriedFuel+cargo});if(load==="maximum"){try{this.jumpRange(value)}catch(error){if(!(error instanceof RangeError))throw error;const fitted=this.#state.frameShiftDriveModule();const field=drive!==null&&(!Number.isFinite(drive.maxFuel)||drive.maxFuel<0)?"frameShiftDrive":!Number.isFinite(value.fuel)||value.fuel<0?"fuelCapacity":!Number.isFinite(mass)||mass<0?"mass":"frameShiftDrive";const driveParams=field==="frameShiftDrive"&&fitted?{slot:fitted.Slot,symbol:fitted.Item}:{};return incompleteResult([{field:field,reason:"invalid",...driveParams,message:error.message,params:{field:field,reason:"invalid",...driveParams}}])}}return completeResult(value)}#require(result,what){if(result.value===null){throw new TypeError(`${FACADE}: cannot determine ${what} (${result.issues.map(issue=>issue.message).join("; ")})`)}return result.value}#loadedMass(cargo){return this.#build.unladenMass+cargo}#maxJumpFuel(fsd){return Math.min(this.#build.fuelCapacity.main,fsd.maxFuel)}};export{BuildMetrics};//# sourceMappingURL=chunk-AGRSIKNV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/build-metrics.ts"],"names":["cellBankSummary","shieldRecovery","loadoutInternals","fittedThrusterParamsFor","preEngineeredVariantFor","powerConsumerFor","powerAvailable","heatInputResultFor","completeResult","cellBankInputsFor","armourInputFor","weaponStatsFor","weaponsCapacitorInputFor","mobilityInputResultFor","shieldInputResultFor","shieldCapacitorInputResultFor","shieldRecoveryInputResultFor","distributorInputResultFor","incompleteResult","shieldMetrics","weaponsCapacitorMetrics","powerBudget","isNonOutfittingSlot","isBuiltInHullModule","orderBySlotLayout","weaponMetrics","sumWeaponMetrics","shieldCapacitorMetrics","mobilityCapacitorMetrics","mobilityMetrics","getExperimentalEffectCost","heatMetrics","frameShiftDriveMassFactor","singleJumpRange","fuelPerJump","totalRange","calculateUnladenMass","getBlueprintCost","distributorMetrics","sumMaterials","ammunitionCapacity","armourMetrics","requirePips","requireFiniteNonNegative","deepFreeze","FACADE","requireLoadOptions","scope","options","field","value","BuildMetrics","_BuildMetrics","build","state","constructor","this","of","loadout","frameShiftDrive","drive","resolveDrive","TypeError","thrusters","modules","statsFor","loadedMass","cargo","fuel","fuelCapacity","main","maxJumpRange","fsd","maxJumpFuel","jumpRange","ladenJumpRange","cargoCapacity","distance","standardLoadResult","load","standardLoad","jumpRangeSummary","maximum","require","unladen","laden","max","totalMax","totalUnladen","totalLaden","buildMass","unladenMass","Object","freeze","hull","ship","hullMass","calculationModules","total","buildCost","hullCost","mercCoins","unpriced","materials","module","stats","cost","Slot","push","slot","symbol","Item","variant","mercCoinCost","engineering","Engineering","grade","Level","bought","Number","isInteger","climb","BlueprintName","experimental","ExperimentalEffect","toLowerCase","experimentalEffectSymbol","credits","rebuy","Math","trunc","consumers","consumer","heatMetricsResult","input","effectiveModules","complete","mobilityMetricsResult","mobility","mobilityCapacitorMetricsResult","mobilityCapacitor","shieldMetricsResult","shields","shieldCapacitorMetricsResult","shieldCapacitor","shieldRecoveryResult","recovery","cellBanks","layout","bank","weapons","record","effectiveModule","name","enabled","On","metrics","ammunition","maximumRange","falloffRange","projectileRange","armourPiercing","orderedWeapons","weapon","filter","map","weaponsPips","distributorMetricsResult","distributor","mobilityInput","enginesPips","statedMainFuel","systemsPips","pips","RangeError","mass","maximumFuel","fitted","frameShiftDriveModule","driveError","maxFuel","error","Error","reason","message","params","carriedFuel","min","isFinite","driveParams","result","what","issues","issue","join"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{fixedSlotReason,validateLoadout}from"./chunk-OJC6AUL7.js";import{calculateModuleLimits}from"./chunk-KPETDYQX.js";import{publishLoadoutInternals,normalizeLoadoutEvent,preEngineeredVariantFor,moduleFitProblem,effectiveModule,moduleFitError}from"./chunk-6IWKFKQF.js";import{getShipBySymbol}from"./chunk-6UNAD74Z.js";import{parseSlef,toSlef,stringifySlef,getLoadoutModifier}from"./chunk-T4MKUKYS.js";import{getSourceModuleValue}from"./chunk-NIURLW2F.js";import{statesInertModifiers,rolledOverFixedArticle,isNonOutfittingSlot,isBuiltInHullModule,cloneLoadoutModule,cloneModuleStats,availableBlueprintsFor,availableExperimentalsFor,ownKeyIn,FITTED_ITEM,blueprintAvailableFor,blueprintRoutesFor,experimentalAvailableFor,primitiveEngineeringInputsFor,missingBaseLabels,journalModifiersFor,getPreEngineeredStats,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,ordinaryEngineeringProof,unresolvedModifiers,matchingKeyIn,isCargoHatchSlot,orderBySlotLayout}from"./chunk-DABPLBTN.js";import{builtInModuleBySymbol}from"./chunk-3LZXB2MC.js";import{getPreEngineeredVariants}from"./chunk-KPJ77VPS.js";import{ALL_MODULES}from"./chunk-7ZERP4TB.js";import{getExperimentalEffect}from"./chunk-77I24V6B.js";import{singleJumpRange}from"./chunk-VTMCSCXV.js";import{calculateUnladenMass,calculateCargoCapacity,calculateFuelCapacity}from"./chunk-DCB4COCL.js";import{resolveBlueprintForModule}from"./chunk-OLKNYGGT.js";import{getBlueprintGrade}from"./chunk-AYAKU4YA.js";import{getDefaultLoadout}from"./chunk-GRIK3EDH.js";import{getExperimentalsForModule}from"./chunk-GLWPSVFV.js";import{baseStats,computeModifiers,labelsForDamageType,scaleForLabel}from"./chunk-CJQ37JII.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{loadoutSlotName}from"./chunk-KAA4VOOB.js";import{parseSlotName,enumerateSlots}from"./chunk-RAO35XDF.js";import{normalizeKey,CATALOGUE_KEY}from"./chunk-BKWLI44T.js";import{truncate,describeValue,requireString,requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var REBUY_FRACTION=.05;function exportLoadoutEvent(input,options){const fromSource=options.credits==="source";const source=fromSource?input.sourcePurchase:null;const totals=source!==null&&!input.sourceTotalsVoided&&sourceTotalsHold(input.modules,source)?source:null;const hullValue=fromSource?source?.hullValue??null:input.retailHullValue;const modulesValue=fromSource?totals?.modulesValue??null:computedModulesValue(input.modules,input.statsFor);const rebuy=fromSource?totals?.rebuy??null:hullValue===null||modulesValue===null?null:Math.trunc((hullValue+modulesValue)*REBUY_FRACTION);return{Ship:input.shipSymbol.toLowerCase(),...input.shipName===void 0?{}:{ShipName:input.shipName},...input.shipIdent===void 0?{}:{ShipIdent:input.shipIdent},...hullValue===null?{}:{HullValue:hullValue},...modulesValue===null?{}:{ModulesValue:modulesValue},UnladenMass:input.unladenMass,CargoCapacity:input.cargoCapacity,...input.maxJumpRange===null?{}:{MaxJumpRange:input.maxJumpRange},FuelCapacity:{Main:input.fuelCapacity.main,Reserve:input.fuelCapacity.reserve},...rebuy===null?{}:{Rebuy:rebuy},Modules:exportModules(input,options,fromSource)}}function exportModules(input,options,fromSource){const ordered=options.moduleOrder==="slots"?slotOrderedModules(input.modules,input.layout):[...input.modules.values()];return ordered.map(module=>{const on=module.On??(options.explicitPower?true:void 0);const priority=module.Priority??(options.explicitPower?0:void 0);const value=fromSource?sourceModuleValue(module,input.sourcePurchase):moduleValue(module,input.statsFor);return{Slot:module.Slot,Item:module.Item.toLowerCase(),...on===void 0?{}:{On:on},...priority===void 0?{}:{Priority:priority},...module.Health===void 0?{}:{Health:module.Health},...typeof value==="number"?{Value:value}:{},...module.Engineering===void 0?{}:{Engineering:cloneLoadoutModule(module).Engineering}}})}function slotOrderedModules(modules,layout){return orderBySlotLayout([...modules.values()],layout,module=>module.Slot)}function computedModulesValue(modules,statsFor){let sum=0;for(const module of modules.values()){const value=moduleValue(module,statsFor);if(value==="unknown")return null;if(value!=="free")sum+=value}return sum}function moduleValue(module,statsFor){const stats=statsFor(module);if(stats!==null)return stats.cost??"unknown";return isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module)?"free":"unknown"}var SOURCE_ITEM="ShipLoadout: sourcePurchase moduleValues[].item";function sourceModuleValue(module,source){const entry=source===null?null:getSourceModuleValue(source,module.Slot);if(entry===null)return"unknown";return normalizeKey(entry.item,SOURCE_ITEM)===normalizeKey(module.Item,FITTED_ITEM)?entry.value:"unknown"}function sourceTotalsHold(modules,source){for(const entry of source.moduleValues){const key=matchingKeyIn(modules,entry.slot);const fitted=key===null?void 0:modules.get(key);if(!fitted)return false;if(isCargoHatchSlot(entry.slot)&&entry.value===0)continue;if(normalizeKey(fitted.Item,FITTED_ITEM)!==normalizeKey(entry.item,SOURCE_ITEM)){return false}}return true}var SLOT_KEY="ShipLoadout: slotKey";var FITTED_SLOT="ShipLoadout: fitted module Slot";var LoadoutEditError=class extends TypeError{code;constraint;params;constructor(message,code,params,constraint){super(message);this.code=code;this.params=deepFreeze(structuredClone(params));if(constraint!==void 0)this.constraint=constraint}};var experimentalEffectUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});var engineeringNormalizationUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});function weighable(tonnes){return tonnes!==void 0&&Number.isFinite(tonnes)&&tonnes>=0?tonnes:void 0}var AGGREGATE_STATS=["mass","cargoCapacity","fuelCapacity"];var ShipLoadout=class _ShipLoadout{#ship;#shipSymbol;#modules;#moduleStats;#primitiveModifiers;#top;#sourcePurchase;#importOutcomes;#slotCache=/* @__PURE__ */new Map;#layoutCache;constructor(ship,shipSymbol,modules,top,sourcePurchase=null,moduleStats=/* @__PURE__ */new Map,primitiveModifiers=/* @__PURE__ */new Map,importOutcomes=deepFreeze([])){this.#ship=ship;this.#shipSymbol=shipSymbol;this.#modules=modules;this.#top=top;this.#sourcePurchase=sourcePurchase;this.#moduleStats=moduleStats;this.#primitiveModifiers=primitiveModifiers;this.#importOutcomes=importOutcomes;publishLoadoutInternals(this,{ship:ship,modules:()=>[...this.#modules.values()],effectiveModules:()=>this.#modulesForEffectiveStats(),effectiveModule:module=>this.#moduleForEffectiveStats(module),statsFor:module=>this.#statsFor(module),layout:()=>this.#layout(),resolveDrive:()=>this.#resolveDrive(),frameShiftDriveModule:()=>this.#frameShiftDrive()?.module,calculationModules:()=>this.#calculationModules(),statedMainFuel:()=>this.#top.FuelCapacity?.Main})}static fromSlef(input,index=0){const entries=parseSlef(input);const entry=entries[index];if(!entry){throw new TypeError(`ShipLoadout.fromSlef: no entry at index ${truncate(index)} (have ${entries.length})`)}const imported=normalizeLoadoutEvent(entry.data);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromSlef: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static fromLoadout(event){if(event===null||typeof event!=="object"){throw new TypeError(`ShipLoadout.fromLoadout: event must be a Loadout event, received ${describeValue(event)}`)}const imported=normalizeLoadoutEvent(event);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromLoadout: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static#fromImported(imported,ship){const outcomes=[...imported.outcomes];const loadout=new _ShipLoadout(ship,imported.shipSymbol,imported.modules,imported.top,imported.sourcePurchase,imported.moduleStats,imported.primitiveModifiers,outcomes);const{UnladenMass:UnladenMass,CargoCapacity:CargoCapacity,FuelCapacity:FuelCapacity}=imported.top;for(const module of[...imported.modules.values()]){const unresolved=loadout.#rollStatedRecipe(module);if(unresolved!==null)outcomes.push(unresolved)}if(UnladenMass!==void 0)loadout.#top.UnladenMass=UnladenMass;if(CargoCapacity!==void 0)loadout.#top.CargoCapacity=CargoCapacity;if(FuelCapacity!==void 0)loadout.#top.FuelCapacity=FuelCapacity;deepFreeze(outcomes);return loadout}#rollStatedRecipe(module){const engineering=module.Engineering;if(!engineering||typeof engineering.BlueprintName!=="string")return null;const stated=engineering.Modifiers;const stats=this.#statsFor(module);if(stated!==void 0&&(this.#moduleStats.has(module.Slot)||stats===null||!statesInertModifiers(stats,stated))){return null}if(stated===void 0&&this.#moduleStats.has(module.Slot)){const variant=preEngineeredVariantFor(module);if(variant?.acquisition!=="mercenary"||engineering.Level<=variant.grade){return null}}try{this.applyBlueprint(module.Slot,engineering.BlueprintName,{grade:engineering.Level,quality:engineering.Quality??1,...typeof engineering.ExperimentalEffect==="string"?{experimentalEffectSymbol:engineering.ExperimentalEffect}:{}});if(stated!==void 0){return{action:"rerolledEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName}}const passedOver=rolledOverFixedArticle(module.Item,engineering);return passedOver===null?null:{action:"ambiguousEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName,preEngineeredVariant:passedOver}}catch(error){if(!(error instanceof TypeError)&&!(error instanceof RangeError))throw error;return{action:"unresolvedEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName}}}static empty(shipSymbol){const requested=requireString(shipSymbol,"ShipLoadout.empty: shipSymbol");const ship=getShipBySymbol(requested);if(!ship){throw new TypeError(`ShipLoadout.empty: no slot layout for hull "${truncate(shipSymbol)}"`)}const fitted=(getDefaultLoadout(ship.symbol)?.modules??[]).filter(module=>{const parsed=parseSlotName(module.slot);return parsed!==null&&fixedSlotReason(parsed)!==null});return new _ShipLoadout(ship,ship.symbol,new Map(fitted.map(module=>[module.slot,{Slot:module.slot,Item:module.symbol}])),{})}static default(shipSymbol){const requested=requireString(shipSymbol,"ShipLoadout.default: shipSymbol");const ship=getShipBySymbol(requested);if(!ship){throw new TypeError(`ShipLoadout.default: no default loadout for hull "${truncate(shipSymbol)}"`)}const loadout=getDefaultLoadout(ship.symbol);return new _ShipLoadout(ship,loadout.symbol,new Map(loadout.modules.map(module=>[module.slot,{Slot:module.slot,Item:module.symbol}])),{})}get shipSymbol(){return this.#shipSymbol}get shipName(){return this.#top.ShipName??null}get shipIdent(){return this.#top.ShipIdent??null}get unladenMass(){return this.#top.UnladenMass??this.#computedUnladenMass()}#computedUnladenMass(){return calculateUnladenMass(this.#ship.hullMass,this.#calculationModules())}get fuelCapacity(){const cap=this.#top.FuelCapacity;if(cap?.Main!==void 0&&cap.Reserve!==void 0){return Object.freeze({main:cap.Main,reserve:cap.Reserve})}const computed=this.#computedFuelCapacity();return Object.freeze({main:cap?.Main??computed.main,reserve:cap?.Reserve??computed.reserve})}get cargoCapacity(){return this.#top.CargoCapacity??this.#computedCargoCapacity()}#computedCargoCapacity(){return calculateCargoCapacity(this.#calculationModules())}#computedFuelCapacity(){return calculateFuelCapacity(this.#ship.reserveFuelCapacity,this.#calculationModules())}get hullValue(){return this.#top.HullValue??null}get modulesValue(){return this.#top.ModulesValue??null}get rebuy(){return this.#top.Rebuy??null}get sourcePurchase(){return this.#sourcePurchase}get importOutcomes(){return this.#importOutcomes}validation(){const slots=this.#layout();const byKey=new Map(slots.map(slot=>[normalizeKey(slot.key,CATALOGUE_KEY),slot]));const modules=[...this.#modules.values()].map(module=>{const stats=this.#statsFor(module);const slot=byKey.get(normalizeKey(module.Slot,FITTED_SLOT));const builtIn=stats===null&&isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module);const fitProblem=stats&&slot&&!builtIn?moduleFitProblem(this.#shipSymbol,slot,stats):null;const thrusterMaxMass=weighable(stats?.slot==="thrusters"?effectiveModule(this.#moduleForEffectiveStats(module),stats)?.maxMass:void 0);return{slot:module.Slot,symbol:module.Item,requiresKnownSlot:!builtIn,fitError:fitProblem?.message??null,...fitProblem===null?{}:{fitConstraint:fitProblem.constraint},...fitProblem?.params===void 0?{}:{fitParams:fitProblem.params},...stats?.exclusionGroup===void 0?{}:{exclusionGroup:stats.exclusionGroup},...stats?.limitGroup===void 0?{}:{limitGroup:stats.limitGroup},...stats?.limitIncrease===void 0?{}:{limitIncrease:stats.limitIncrease},...thrusterMaxMass===void 0?{}:{thrusterMaxMass:thrusterMaxMass}}});const dry=weighable(this.unladenMass);const fuel=weighable(this.fuelCapacity.main);const cargo=weighable(this.cargoCapacity);const mass=dry===void 0?void 0:{dry:dry,...fuel===void 0?{}:{fuel:fuel},...fuel===void 0||cargo===void 0?{}:{cargo:cargo}};return validateLoadout({shipSymbol:this.#shipSymbol,slots:slots,modules:modules,...mass===void 0?{}:{mass:mass}})}slots(kind){const cached=this.#slotCache.get(kind);if(cached!==void 0)return cached;const slots=kind===void 0?this.#layout():this.#layout().filter(slot=>slot.kind===kind);const currentLimits=this.#moduleLimits();const value=deepFreeze(slots.map(slot=>{const stats=this.#moduleStatsAt(slot.key);const fixedReason=fixedSlotReason(slot);const immovableReason=fixedReason!==null?fixedReason:stats?.limitIncrease!==void 0&&this.#moduleLimitRegression(slot.key,null,currentLimits,stats)!==null?"moduleLimit":null;return{...slot,name:loadoutSlotName(slot),module:this.fittedModuleAt(slot.key),removable:immovableReason===null,...immovableReason===null?{}:{immovableReason:immovableReason}}}));this.#slotCache.set(kind,value);return value}fittedModuleAt(slotKey){const module=this.#fittedModuleFor(slotKey);if(!module)return null;const raw=cloneLoadoutModule(module);const stats=this.#statsFor(module);const effective=effectiveModule(this.#moduleForEffectiveStats(module),stats);return deepFreeze({slot:module.Slot,symbol:raw.Item,on:raw.On,priority:raw.Priority,health:raw.Health,value:raw.Value,engineering:raw.Engineering,raw:raw,stats:stats===null?null:cloneModuleStats(stats),effectiveStats:effective===null?null:cloneModuleStats(effective),ammunition:ammunitionCapacity(effective),preEngineeredVariant:preEngineeredVariantFor(raw)})}fittedModules(){return deepFreeze([...this.#modules.keys()].flatMap(key=>{const fitted=this.fittedModuleAt(key);return fitted===null?[]:[fitted]}))}availableBlueprints(slotKey){const module=this.#fittedModuleFor(slotKey);return deepFreeze(module?availableBlueprintsFor(module.Item,this.#statsFor(module)):[])}availableExperimentalEffects(slotKey){const module=this.#fittedModuleFor(slotKey);return deepFreeze(module?availableExperimentalsFor(module.Item,this.#statsFor(module)):[])}modulesForSlot(slotKey){const slot=this.#requireSlot(slotKey);const occupied=new Set([...this.#modules.values()].flatMap(fitted=>{if(normalizeKey(fitted.Slot,FITTED_SLOT)===normalizeKey(slot.key,CATALOGUE_KEY))return[];const group=this.#statsFor(fitted)?.exclusionGroup;return group===void 0?[]:[group]}));const currentLimits=this.#moduleLimits();const currentStats=this.#moduleStatsAt(slot.key);return ALL_MODULES.filter(module=>module.grantOnly===void 0&&moduleFitError(this.#shipSymbol,slot,module)===null&&(module.exclusionGroup===void 0||!occupied.has(module.exclusionGroup))&&this.#moduleLimitRegression(slot.key,module,currentLimits,currentStats)===null)}repairFixedMount(slotKey){const requested=requireString(slotKey,SLOT_KEY);const wanted=normalizeKey(requested,SLOT_KEY);const slot=this.#requireSlot(requested);const fittedKey=this.#fittedKey(requested);const resultSlot=fittedKey??requested;const canonicalKey=slot.key;if(fixedSlotReason(slot)===null){return deepFreeze({status:"refused",slot:resultSlot,reason:"notFixedMount"})}const current=this.#fittedModuleFor(requested);const currentStats=current?this.#statsFor(current):null;const valid=current!==void 0&&currentStats!==null&&(slot.kind==="cargoHatch"?isBuiltInHullModule(current):moduleFitProblem(this.#shipSymbol,slot,currentStats)===null);if(valid){return deepFreeze({status:"unchanged",slot:current.Slot,symbol:current.Item})}const defaultModule=getDefaultLoadout(this.#shipSymbol)?.modules.find(module=>normalizeKey(module.slot,CATALOGUE_KEY)===wanted);if(!defaultModule){return deepFreeze({status:"defaultUnavailable",slot:resultSlot})}const ownKey=ownKeyIn(this.#modules,canonicalKey);const replacement={Slot:ownKey,Item:defaultModule.symbol,...current?.On===void 0?{}:{On:current.On},...current?.Priority===void 0?{}:{Priority:current.Priority},...current?.Health===void 0?{}:{Health:current.Health}};const replacementStats=builtInModuleBySymbol(defaultModule.symbol,"ShipLoadout.repairFixedMount")??(isBuiltInHullModule(replacement)?builtInModuleBySymbol("ModularCargoBayDoor","ShipLoadout.repairFixedMount"):null);if(!replacementStats){return deepFreeze({status:"defaultUnavailable",slot:resultSlot,symbol:defaultModule.symbol})}this.#replaceModule(ownKey,replacement,replacementStats);return deepFreeze({status:"repaired",slot:ownKey,symbol:defaultModule.symbol})}setModule(slotKey,module){const slot=this.#requireSlot(slotKey);if(module===null||module===void 0){throw new TypeError(`ShipLoadout.setModule: no module supplied for "${truncate(slotKey)}" (did the module lookup return undefined?)`)}if(typeof module.symbol!=="string"){throw new TypeError(`ShipLoadout.setModule: module for "${truncate(slotKey)}" must be an outfitting module, received ${describeValue(module)}`)}module=cloneModuleStats(module);const catalogued=builtInModuleBySymbol(module.symbol,FITTED_ITEM);if(catalogued===null){throw new TypeError(`ShipLoadout.setModule: no module is catalogued as "${truncate(module.symbol)}"`)}for(const field of AGGREGATE_STATS){const stated=module[field];if(stated===void 0){if(catalogued[field]===void 0)continue;throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" has no ${field}`)}if(typeof stated!=="number"||!Number.isFinite(stated)){throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" states a ${field} of ${describeValue(stated)}`)}}const problem=moduleFitProblem(this.#shipSymbol,slot,module);if(problem){if(problem.constraint==="immutableSlot"){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem.message}`,"immutableSlot",{slot:slot.key})}throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem.message}`,"incompatibleModule",{...problem.params,slot:slot.key,symbol:module.symbol,constraint:problem.constraint},problem.constraint)}if(module.exclusionGroup!==void 0){const conflict=[...this.#modules.values()].find(fitted=>normalizeKey(fitted.Slot,FITTED_SLOT)!==normalizeKey(slot.key,CATALOGUE_KEY)&&this.#statsFor(fitted)?.exclusionGroup===module.exclusionGroup);if(conflict){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${module.exclusionGroup} is limited to one per ship (already fitted in ${truncate(conflict.Slot)})`,"duplicateExclusiveModule",{exclusionGroup:module.exclusionGroup,slot:slot.key,symbol:module.symbol,previousSlot:conflict.Slot,previousSymbol:conflict.Item})}}const limitProblem=this.#moduleLimitRegression(slot.key,module);if(limitProblem!==null){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:slot.key,symbol:module.symbol})}const key=this.#fittedKey(slotKey)??slot.key;this.#replaceModule(key,{Slot:key,Item:module.symbol},module);return this}removeModule(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);if(wanted==="cargohatch"){throw new LoadoutEditError("ShipLoadout.removeModule: the cargoHatch slot cannot be changed","immutableSlot",{slot:"CargoHatch"})}const parsed=parseSlotName(slotKey);const slot=this.#layout().find(candidate=>normalizeKey(candidate.key,CATALOGUE_KEY)===wanted);if(parsed!==null&&fixedSlotReason(parsed)==="requiredSlot"){const fittedKey=this.#fittedKey(slotKey);const key2=slot?.key??fittedKey??slotKey;throw new LoadoutEditError(`ShipLoadout.removeModule: the ${truncate(key2)} slot is required and cannot be emptied`,"requiredSlot",{slot:key2})}const key=this.#fittedKey(slotKey);if(key!==null){const limitProblem=this.#moduleLimitRegression(key,null);if(limitProblem!==null){const fitted=this.#modules.get(key);throw new LoadoutEditError(`ShipLoadout.removeModule: ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:key,...fitted===void 0?{}:{symbol:fitted.Item}})}this.#replaceModule(key,null)}return this}applyBlueprint(slotKey,blueprintSymbol,options){requireString(blueprintSymbol,"ShipLoadout.applyBlueprint: blueprintSymbol");if(options===null||typeof options!=="object"){throw new TypeError(`ShipLoadout.applyBlueprint: options must be an object with a grade, received ${describeValue(options)}`)}const wantedGrade=options.grade;const wantedQuality=options.quality;const wantedExperimental=options.experimentalEffectSymbol??void 0;requireStringIfPresent(wantedExperimental,"ShipLoadout.applyBlueprint: options.experimentalEffectSymbol");const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout.applyBlueprint: slot "${truncate(slotKey)}" is empty`)}const fittedStats=this.#statsFor(module);if(!fittedStats){throw new TypeError(`ShipLoadout.applyBlueprint: no stats for module "${truncate(module.Item)}"`)}const recipe=resolveBlueprintForModule(module.Item,blueprintSymbol);const named=recipe===blueprintSymbol?`"${truncate(blueprintSymbol)}"`:`"${truncate(blueprintSymbol)}" (${truncate(recipe)} on this module)`;const written=blueprintSymbol.trim().toLowerCase();const resolved=recipe.trim().toLowerCase();if(getPreEngineeredVariants(module.Item).some(variant=>variant.acquisition==="eventReward"&&(variant.blueprintSymbol.toLowerCase()===written||variant.blueprintSymbol.toLowerCase()===resolved))){throw new TypeError(`ShipLoadout.applyBlueprint: ${named} is a fixed pre-engineered identity, not a craftable blueprint; use setPreEngineeredVariant to fit its fixed article`)}if(!Number.isInteger(wantedGrade)||wantedGrade<1||wantedGrade>5){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}const grade=getBlueprintGrade(recipe,wantedGrade);if(!grade){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}let experimental;if(wantedExperimental!==void 0){experimental=getExperimentalEffect(wantedExperimental);if(!experimental){throw new RangeError(`ShipLoadout.applyBlueprint: unknown experimental effect "${truncate(wantedExperimental)}"`)}}const quality=wantedQuality??1;if(!Number.isFinite(quality)||quality<0||quality>1){throw new RangeError(`ShipLoadout.applyBlueprint: quality must be a finite number in [0, 1]`)}if(fittedStats.engineeringLocked){throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is a final pre-engineered article and accepts no further engineering`)}if(!blueprintAvailableFor(module.Item,blueprintSymbol)){const offered=[...blueprintRoutesFor(module.Item)].map(([blueprint,route])=>`${blueprint} (${route})`);throw new TypeError(offered.length>0?`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered blueprint ${named}; available candidates are ${offered.join(", ")}`:`ShipLoadout.applyBlueprint: no registry lists an engineering menu for module "${truncate(module.Item)}"`)}if(wantedExperimental!==void 0&&!experimentalAvailableFor(module.Item,wantedExperimental)){const offered=getExperimentalsForModule(module.Item);throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered experimental effect "${truncate(wantedExperimental)}"; it takes ${offered.length>0?offered.join(", "):"no experimental effect"}`)}const stats=this.#engineeringBaseStats(module)??fittedStats;const base=baseStats(stats);const canonical=primitiveEngineeringInputsFor(stats,grade,experimental);const missing=missingBaseLabels(stats,base,canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){throw new TypeError(`ShipLoadout.applyBlueprint: cannot compute ${named} for module "${truncate(module.Item)}"; missing base stats for ${missing.join(", ")}`)}const damageDistribution=experimental?.damageDistribution??grade.damageDistribution;const primitiveModifiers=computeModifiers(base,canonical.grade,quality,canonical.experimental);const modifiers=journalModifiersFor(stats,primitiveModifiers);if(damageDistribution){for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];if(value===void 0)continue;const label=labelsForDamageType(type)[0];if(label===void 0)continue;const damageModifier={Label:label,Value:value*scaleForLabel(label),OriginalValue:(stats.damageDistribution?.[type]??0)*scaleForLabel(label)};modifiers.push(damageModifier);primitiveModifiers.push(damageModifier)}}const engineering={BlueprintName:blueprintSymbol,Level:wantedGrade,Quality:quality,...wantedExperimental!==void 0?{ExperimentalEffect:wantedExperimental}:{},Modifiers:modifiers};this.#replaceModule(module.Slot,{...module,Engineering:engineering},stats,primitiveModifiers);return this}setExperimentalEffect(slotKey,experimental){if(experimental!==null){requireString(experimental,"ShipLoadout.setExperimentalEffect: experimental")}const wanted=experimental;const module=this.#fittedModuleFor(slotKey);if(!module)return experimentalEffectUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return experimentalEffectUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return experimentalEffectUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}const previous=engineering.ExperimentalEffect??null;if(previous===null&&wanted===null||previous!==null&&wanted!==null&&previous.trim().toLowerCase()===wanted.trim().toLowerCase()){return deepFreeze({kind:"unchanged",experimentalEffectSymbol:previous})}const variant=preEngineeredVariantFor(module);let effect;if(wanted!==null){effect=getExperimentalEffect(wanted);if(!effect){return experimentalEffectUnsupported("unknownExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:wanted})}const restoresBakedEffect=variant?.experimentalEffectSymbol!==void 0&&variant.acquisition!=="mercenary"&&variant.experimentalEffectSymbol.trim().toLowerCase()===wanted.trim().toLowerCase();if(!experimentalAvailableFor(module.Item,wanted)&&!restoresBakedEffect){return experimentalEffectUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:wanted})}}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=wanted===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:wanted};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:engineering.Quality,...wanted===null?{}:{ExperimentalEffect:wanted},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const blueprint=engineering.BlueprintName;const grade=engineering.Level;const quality=engineering.Quality;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const currentEffect=previous===null?void 0:getExperimentalEffect(previous)??null;if(ordinaryEngineeringProof(module.Item,engineering,currentEffect)==="unproven"){return experimentalEffectUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)||!Number.isFinite(quality)||quality<0||quality>1){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:quality,...wanted===null?{}:{experimentalEffectSymbol:wanted}})}return deepFreeze({kind:"updated",previousExperimentalEffectSymbol:previous,experimentalEffectSymbol:wanted})}completeEngineeringGrade(slotKey){const module=this.#fittedModuleFor(slotKey);if(!module)return engineeringNormalizationUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return engineeringNormalizationUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return engineeringNormalizationUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}if(engineering.Quality===1&&engineering.Modifiers!==void 0){return deepFreeze({kind:"unchanged"})}const previousQuality=engineering.Quality;if(!Number.isFinite(previousQuality)||previousQuality<0||previousQuality>1){return engineeringNormalizationUnsupported("invalidQuality",{slot:module.Slot,symbol:module.Item})}const experimental=engineering.ExperimentalEffect??null;const effect=experimental===null?void 0:getExperimentalEffect(experimental)??void 0;if(experimental!==null&&!effect){return engineeringNormalizationUnsupported("unknownExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}const blueprint=engineering.BlueprintName;const grade=engineering.Level;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const variant=preEngineeredVariantFor(module);const restoresBakedEffect=variant?.experimentalEffectSymbol!==void 0&&variant.acquisition!=="mercenary"&&variant.experimentalEffectSymbol.trim().toLowerCase()===experimental?.trim().toLowerCase();if(experimental!==null&&!experimentalAvailableFor(module.Item,experimental)&&!restoresBakedEffect){return engineeringNormalizationUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=experimental===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:experimental};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:1,...experimental===null?{}:{ExperimentalEffect:experimental},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const proof=ordinaryEngineeringProof(module.Item,engineering,effect);if(proof==="unproven"||proof==="proven"&&!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:1,...experimental===null?{}:{experimentalEffectSymbol:experimental}})}return deepFreeze({kind:"normalized",previousQuality:previousQuality,quality:1})}setPreEngineeredVariant(slotKey,variant){if(variant===null||typeof variant!=="object"){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: variant must be a pre-engineered variant, received ${describeValue(variant)}`)}requireString(variant.symbol,"ShipLoadout.setPreEngineeredVariant: variant.symbol");requireString(variant.blueprintSymbol,"ShipLoadout.setPreEngineeredVariant: variant.blueprintSymbol");requireString(variant.acquisition,"ShipLoadout.setPreEngineeredVariant: variant.acquisition");requireStringIfPresent(variant.experimentalEffectSymbol,"ShipLoadout.setPreEngineeredVariant: variant.experimentalEffectSymbol");const known=getPreEngineeredVariants(variant.symbol).find(candidate=>candidate.blueprintSymbol.toLowerCase()===variant.blueprintSymbol.toLowerCase()&&candidate.grade===variant.grade&&(candidate.experimentalEffectSymbol?.toLowerCase()??"")===(variant.experimentalEffectSymbol?.toLowerCase()??"")&&candidate.acquisition===variant.acquisition);if(!known){throw new RangeError(`ShipLoadout.setPreEngineeredVariant: no catalogued variant "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"`)}const stats=getPreEngineeredStats(known);const unresolved=unresolvedModifiers(known);if(unresolved.length>0){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: cannot resolve "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"; missing base stats for ${unresolved.join(", ")}`)}this.setModule(slotKey,stats);const module=this.#fittedModuleFor(slotKey);const engineering={BlueprintName:known.blueprintSymbol,Level:known.grade,Quality:1,...known.experimentalEffectSymbol===void 0?{}:{ExperimentalEffect:known.experimentalEffectSymbol},...known.modifiers?.length?{Modifiers:getPreEngineeredJournalModifiers(known)}:{}};this.#replaceModule(module.Slot,{...module,Engineering:engineering},cloneModuleStats(stats),getPreEngineeredModifiers(known));return this}clearEngineering(slotKey){const module=this.#fittedModuleFor(slotKey);if(module&&this.#statsFor(module)?.engineeringLocked){throw new TypeError(`ShipLoadout.clearEngineering: module "${truncate(module.Item)}" is a final pre-engineered article and its engineering cannot be removed`)}if(module?.Engineering){const baseStats2=this.#engineeringBaseStats(module);const bare={Slot:module.Slot,Item:module.Item};if(module.On!==void 0)bare.On=module.On;if(module.Priority!==void 0){bare.Priority=module.Priority}if(module.Health!==void 0)bare.Health=module.Health;if(module.Value!==void 0)bare.Value=module.Value;this.#replaceModule(module.Slot,bare,baseStats2??void 0)}return this}setModuleEnabled(slotKey,on){this.#patchModule(slotKey,{On:on});return this}setModulePriority(slotKey,priority){if(!Number.isInteger(priority)||priority<0||priority>4){throw new RangeError(`ShipLoadout: power priority must be an integer 0-4, got ${truncate(priority)}`)}this.#patchModule(slotKey,{Priority:priority});return this}#patchModule(slotKey,patch){const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout: slot "${truncate(slotKey)}" is empty`)}this.#modules.set(module.Slot,cloneLoadoutModule({...module,...patch}));this.#slotCache.clear()}toLoadoutEvent(options={}){const unladenMass=this.#computedUnladenMass();const cargoCapacity=this.#computedCargoCapacity();const fuel=this.#computedFuelCapacity();const maxJumpRange=this.#exportableJumpRange(unladenMass);return exportLoadoutEvent({shipSymbol:this.#shipSymbol,...this.#top.ShipName===void 0?{}:{shipName:this.#top.ShipName},...this.#top.ShipIdent===void 0?{}:{shipIdent:this.#top.ShipIdent},modules:this.#modules,layout:this.#layout(),sourcePurchase:this.#sourcePurchase,retailHullValue:this.#ship.hullCost,unladenMass:unladenMass,cargoCapacity:cargoCapacity,fuelCapacity:fuel,maxJumpRange:maxJumpRange,sourceTotalsVoided:this.#importOutcomes.some(outcome=>outcome.sourceSymbol===null&&parseSlotName(outcome.slot)?.kind==="core"),statsFor:module=>this.#statsFor(module)},options)}toSlef(options){return toSlef(this.toLoadoutEvent(options),options.header)}toSlefString(options){return stringifySlef(this.toSlef(options),{indent:options.indent??0})}#exportableJumpRange(unladenMass){let drive;try{drive=this.#resolveDrive()}catch{return null}if(drive===null)return null;const tank=this.#computedFuelCapacity();return singleJumpRange(unladenMass,Math.min(tank.main,drive.maxFuel),drive)}#layout(){if(this.#layoutCache===void 0){this.#layoutCache=Object.freeze(enumerateSlots(this.#ship))}return this.#layoutCache}#requireSlot(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);const slot=this.#layout().find(s=>normalizeKey(s.key,CATALOGUE_KEY)===wanted);if(!slot){throw new RangeError(`ShipLoadout: hull "${truncate(this.#shipSymbol)}" has no slot "${truncate(slotKey)}"`)}return slot}#fittedKey(slotKey){return matchingKeyIn(this.#modules,normalizeKey(slotKey,SLOT_KEY))}#fittedModuleFor(slotKey){const key=this.#fittedKey(slotKey);return key===null?void 0:this.#modules.get(key)}#calculationModules(){return[...this.#modules.values()].map(module=>({mass:this.#moduleMass(module),cargoCapacity:this.#moduleCapacity(module,"CargoCapacity","cargoCapacity"),fuelCapacity:this.#moduleCapacity(module,"FuelCapacity","fuelCapacity")}))}#moduleLimits(){const entries=[...this.#modules.values()].flatMap(module=>{const stats=this.#statsFor(module);return stats===null?[]:[stats]});return calculateModuleLimits(entries)}#moduleStatsAt(slotKey){const fitted=this.#fittedModuleFor(slotKey);return fitted===void 0?null:this.#statsFor(fitted)}#engineeringBaseStats(module){const fitted=this.#statsFor(module);if(!module.Engineering||preEngineeredVariantFor(module)===null)return fitted;const stock=builtInModuleBySymbol(module.Item,FITTED_ITEM);if(!stock)return fitted;return fitted?.engineeringLocked?cloneModuleStats({...stock,engineeringLocked:true}):stock}#moduleForEffectiveStats(module){const modifiers=this.#primitiveModifiers.get(module.Slot);if(modifiers===void 0||module.Engineering===void 0)return module;return{...module,Engineering:{...module.Engineering,Modifiers:modifiers}}}#modulesForEffectiveStats(){return[...this.#modules.values()].map(module=>this.#moduleForEffectiveStats(module))}#moduleLimitRegression(slotKey,replacement,current=this.#moduleLimits(),previous=this.#moduleStatsAt(slotKey)){if(previous?.limitGroup===void 0&&previous?.limitIncrease===void 0&&replacement?.limitGroup===void 0&&replacement?.limitIncrease===void 0){return null}for(const usage of current){const count=usage.count-Number(previous?.limitGroup===usage.group)+Number(replacement?.limitGroup===usage.group);const increase=usage.increase-(previous?.limitIncrease?.group===usage.group?previous.limitIncrease.amount:0)+(replacement?.limitIncrease?.group===usage.group?replacement.limitIncrease.amount:0);const limit=usage.baseLimit+increase;const excess=Math.max(0,count-limit);if(excess>usage.excess){return{...usage,increase:increase,limit:limit,count:count,excess:excess}}}return null}#replaceModule(slotKey,replacement,replacementStats,primitiveModifiers){const previous=this.#modules.get(slotKey)??null;this.#adjustImportedFigures(previous,replacement,replacementStats);if(replacement===null){this.#modules.delete(slotKey);this.#moduleStats.delete(slotKey);this.#primitiveModifiers.delete(slotKey)}else{this.#modules.set(slotKey,cloneLoadoutModule(replacement));if(replacementStats!==void 0)this.#moduleStats.set(slotKey,replacementStats);if(primitiveModifiers===void 0)this.#primitiveModifiers.delete(slotKey);else this.#primitiveModifiers.set(slotKey,primitiveModifiers)}this.#slotCache.clear()}#adjustImportedFigures(previous,next,nextStats){if(this.#top.UnladenMass!==void 0){this.#top.UnladenMass+=this.#moduleMass(next,nextStats)-this.#moduleMass(previous)}if(this.#top.CargoCapacity!==void 0){this.#top.CargoCapacity+=this.#moduleCapacity(next,"CargoCapacity","cargoCapacity",nextStats)-this.#moduleCapacity(previous,"CargoCapacity","cargoCapacity")}if(this.#top.FuelCapacity?.Main!==void 0){const reserve=this.#top.FuelCapacity.Reserve;this.#top.FuelCapacity={Main:this.#top.FuelCapacity.Main+this.#moduleCapacity(next,"FuelCapacity","fuelCapacity",nextStats)-this.#moduleCapacity(previous,"FuelCapacity","fuelCapacity"),...reserve===void 0?{}:{Reserve:reserve}}}if(normalizeKey(previous?.Item,FITTED_ITEM)===normalizeKey(next?.Item,FITTED_ITEM)){return}if(previous!==null&&isCargoHatchSlot(previous.Slot)||next!==null&&isCargoHatchSlot(next.Slot)){return}delete this.#top.ModulesValue;delete this.#top.Rebuy}#moduleMass(module,statsOverride){if(module===null)return 0;if(isCargoHatchSlot(module.Slot))return 0;const modified=getLoadoutModifier(module,"Mass");if(modified!==null)return modified;return(statsOverride??this.#statsFor(module))?.mass??0}#moduleCapacity(module,modifierLabel,field,statsOverride){if(module===null)return 0;if(isCargoHatchSlot(module.Slot))return 0;const modified=getLoadoutModifier(module,modifierLabel);if(modified!==null)return modified;return(statsOverride??this.#statsFor(module))?.[field]??0}#frameShiftDrive(){for(const m of this.#modules.values()){const stats=this.#statsFor(m);if(stats?.slot==="frameShiftDrive")return{module:m,stats:stats}}return void 0}#resolveDrive(){const fsd=this.#frameShiftDrive();if(!fsd)return null;const{module:fsdModule,stats:base}=fsd;if(base.fuelMul===void 0||base.fuelPower===void 0){throw new TypeError(`ShipLoadout: the fitted record for frame shift drive "${truncate(fsdModule.Item)}" has no jump constants`)}const optMass=getLoadoutModifier(fsdModule,"FSDOptimalMass")??base.optMass;const maxFuel=getLoadoutModifier(fsdModule,"MaxFuelPerJump")??base.maxFuel;if(optMass===void 0||maxFuel===void 0){const missing=[...optMass===void 0?["optMass"]:[],...maxFuel===void 0?["maxFuel"]:[]];throw new TypeError(`ShipLoadout: the fitted record for frame shift drive "${truncate(fsdModule.Item)}" has no ${missing.join(" or ")}`)}return{optMass:optMass,maxFuel:maxFuel,fuelMul:base.fuelMul,fuelPower:base.fuelPower,jumpBoost:this.#resolveJumpBoost()}}#resolveJumpBoost(){for(const m of this.#modules.values()){const stats=this.#statsFor(m);if(stats?.engineeringGroup!=="fsdBoosters"&&(stats?.jumpBoost===void 0||stats.jumpBoost===0)){continue}if(m.On===false)continue;if(stats?.jumpBoost===void 0){throw new TypeError(`ShipLoadout: the fitted record for FSD booster "${truncate(m.Item)}" has no jumpBoost`)}return stats.jumpBoost}return 0}#statsFor(module){if(module===null)return null;const stats=this.#moduleStats.get(module.Slot)??builtInModuleBySymbol(module.Item,FITTED_ITEM);if(stats)return stats;return isBuiltInHullModule(module)?builtInModuleBySymbol("ModularCargoBayDoor","ShipLoadout: built-in module"):null}};export{LoadoutEditError,ShipLoadout};//# sourceMappingURL=chunk-CHA6LKH4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/internal/loadout-export.ts","../src/ships/ship-loadout.ts"],"names":["fixedSlotReason","validateLoadout","calculateModuleLimits","publishLoadoutInternals","normalizeLoadoutEvent","preEngineeredVariantFor","moduleFitProblem","effectiveModule","moduleFitError","getShipBySymbol","parseSlef","toSlef","stringifySlef","getLoadoutModifier","getSourceModuleValue","statesInertModifiers","rolledOverFixedArticle","isNonOutfittingSlot","isBuiltInHullModule","cloneLoadoutModule","cloneModuleStats","availableBlueprintsFor","availableExperimentalsFor","ownKeyIn","FITTED_ITEM","blueprintAvailableFor","blueprintRoutesFor","experimentalAvailableFor","primitiveEngineeringInputsFor","missingBaseLabels","journalModifiersFor","getPreEngineeredStats","getPreEngineeredJournalModifiers","getPreEngineeredModifiers","ordinaryEngineeringProof","unresolvedModifiers","matchingKeyIn","isCargoHatchSlot","orderBySlotLayout","builtInModuleBySymbol","getPreEngineeredVariants","ALL_MODULES","getExperimentalEffect","singleJumpRange","calculateUnladenMass","calculateCargoCapacity","calculateFuelCapacity","resolveBlueprintForModule","getBlueprintGrade","getDefaultLoadout","getExperimentalsForModule","baseStats","computeModifiers","labelsForDamageType","scaleForLabel","ammunitionCapacity","loadoutSlotName","parseSlotName","enumerateSlots","normalizeKey","CATALOGUE_KEY","truncate","describeValue","requireString","requireStringIfPresent","deepFreeze","REBUY_FRACTION","exportLoadoutEvent","input","options","fromSource","credits","source","sourcePurchase","totals","sourceTotalsVoided","sourceTotalsHold","modules","hullValue","retailHullValue","modulesValue","computedModulesValue","statsFor","rebuy","Math","trunc","Ship","shipSymbol","toLowerCase","shipName","ShipName","shipIdent","ShipIdent","HullValue","ModulesValue","UnladenMass","unladenMass","CargoCapacity","cargoCapacity","maxJumpRange","MaxJumpRange","FuelCapacity","Main","fuelCapacity","main","Reserve","reserve","Rebuy","Modules","exportModules","ordered","moduleOrder","slotOrderedModules","layout","values","map","module","on","On","explicitPower","priority","Priority","value","sourceModuleValue","moduleValue","Slot","Item","Health","Value","Engineering","sum","stats","cost","SOURCE_ITEM","entry","item","moduleValues","key","slot","fitted","get","SLOT_KEY","FITTED_SLOT","LoadoutEditError","TypeError","code","constraint","params","constructor","message","super","this","structuredClone","experimentalEffectUnsupported","kind","engineeringNormalizationUnsupported","weighable","tonnes","Number","isFinite","AGGREGATE_STATS","ShipLoadout","_ShipLoadout","ship","moduleStats","primitiveModifiers","top","importOutcomes","slotCache","Map","layoutCache","effectiveModules","modulesForEffectiveStats","moduleForEffectiveStats","resolveDrive","frameShiftDriveModule","frameShiftDrive","calculationModules","statedMainFuel","fromSlef","index","entries","length","imported","data","fromImported","fromLoadout","event","outcomes","loadout","unresolved","rollStatedRecipe","push","engineering","BlueprintName","stated","Modifiers","has","variant","acquisition","Level","grade","applyBlueprint","quality","Quality","ExperimentalEffect","experimentalEffectSymbol","action","sourceSymbol","blueprintSymbol","passedOver","preEngineeredVariant","error","RangeError","empty","requested","symbol","filter","parsed","computedUnladenMass","hullMass","cap","Object","freeze","computed","computedFuelCapacity","computedCargoCapacity","reserveFuelCapacity","validation","slots","byKey","builtIn","fitProblem","thrusterMaxMass","maxMass","requiresKnownSlot","fitError","fitConstraint","fitParams","exclusionGroup","limitGroup","limitIncrease","dry","fuel","cargo","mass","cached","currentLimits","moduleLimits","moduleStatsAt","fixedReason","immovableReason","moduleLimitRegression","name","fittedModuleAt","removable","set","slotKey","fittedModuleFor","raw","effective","health","effectiveStats","ammunition","fittedModules","keys","flatMap","availableBlueprints","availableExperimentalEffects","modulesForSlot","requireSlot","occupied","Set","group","currentStats","grantOnly","repairFixedMount","wanted","fittedKey","resultSlot","canonicalKey","status","reason","current","valid","defaultModule","find","ownKey","replacement","replacementStats","replaceModule","setModule","catalogued","field","problem","conflict","previousSlot","previousSymbol","limitProblem","count","limit","removeModule","candidate","wantedGrade","wantedQuality","wantedExperimental","fittedStats","recipe","named","written","trim","resolved","some","isInteger","experimental","engineeringLocked","offered","blueprint","route","join","engineeringBaseStats","base","canonical","missing","features","modifiers","damageDistribution","type","label","damageModifier","Label","OriginalValue","setExperimentalEffect","previous","effect","restoresBakedEffect","stock","labels","originalEffect","withoutEffect","adjusted","currentEffect","blueprintGrade","previousExperimentalEffectSymbol","completeEngineeringGrade","previousQuality","proof","setPreEngineeredVariant","known","clearEngineering","bare","setModuleEnabled","patchModule","setModulePriority","patch","clear","toLoadoutEvent","exportableJumpRange","hullCost","outcome","header","toSlefString","indent","drive","tank","min","maxFuel","s","moduleMass","moduleCapacity","usage","increase","amount","baseLimit","excess","max","adjustImportedFigures","delete","next","nextStats","statsOverride","modified","modifierLabel","m","fsd","fsdModule","fuelMul","fuelPower","optMass","jumpBoost","resolveJumpBoost","engineeringGroup"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{combinedRateOfFire}from"./chunk-37JIMWLK.js";import{builtInModuleBySymbol,getModuleBySymbol}from"./chunk-3LZXB2MC.js";import{getPreEngineeredVariants}from"./chunk-KPJ77VPS.js";import{ALL_MODULES}from"./chunk-7ZERP4TB.js";import{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"./chunk-77I24V6B.js";import{resolveBlueprintForModule}from"./chunk-OLKNYGGT.js";import{getBlueprintGrade,getBlueprint,BLUEPRINTS}from"./chunk-AYAKU4YA.js";import{getBlueprintsForModule,getExperimentalsForModule,getEngineeringGroup}from"./chunk-GLWPSVFV.js";import{fieldForLabel,damageTypeForLabel,capabilityValueForLabel,baseStats,computeModifiers,labelsForDamageType,scaleForLabel,preciseModifierValue}from"./chunk-CJQ37JII.js";import{normalizeKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";function scaleDamageComponents(components,baseDamage,effectiveDamage){const scale=baseDamage!==void 0&&baseDamage!==0&&effectiveDamage!==void 0?effectiveDamage/baseDamage:1;return{...components.kinetic===void 0?{}:{kinetic:components.kinetic*scale},...components.thermal===void 0?{}:{thermal:components.thermal*scale},...components.explosive===void 0?{}:{explosive:components.explosive*scale},...components.absolute===void 0?{}:{absolute:components.absolute*scale},...components.antiXeno===void 0?{}:{antiXeno:components.antiXeno*scale},...components.unclassified===void 0?{}:{unclassified:components.unclassified.map(value=>value*scale)}}}function fixedModifierFeatures(modifiers){return modifiers.map(modifier=>({label:modifier.label,method:modifier.method,min:modifier.value,max:modifier.value}))}var FITTED_ITEM="ShipLoadout: fitted module Item";function isNonOutfittingSlot(slotKey){return/^(paintjob|shipname\d+|shipid\d+|bobble\d+|decal\d+|shipkit.+|weaponcolour|enginecolour|vesselvoice|shipcockpit|stringlights)$/i.test(slotKey)}function isCargoHatchSlot(slotKey){return slotKey.toLowerCase()==="cargohatch"}function isBuiltInHullModule(module){return isCargoHatchSlot(module.Slot)&&module.Item.toLowerCase().startsWith("modularcargobaydoor")}function cloneLoadoutModule(module){return{Slot:module.Slot,Item:module.Item,...module.On===void 0?{}:{On:module.On},...module.Priority===void 0?{}:{Priority:module.Priority},...module.Health===void 0?{}:{Health:module.Health},...module.Value===void 0?{}:{Value:module.Value},...module.Engineering===void 0?{}:{Engineering:{BlueprintName:module.Engineering.BlueprintName,Level:module.Engineering.Level,Quality:module.Engineering.Quality,...module.Engineering.ExperimentalEffect===void 0?{}:{ExperimentalEffect:module.Engineering.ExperimentalEffect},...module.Engineering.ExperimentalEffect_Localised===void 0?{}:{ExperimentalEffect_Localised:module.Engineering.ExperimentalEffect_Localised},...module.Engineering.Modifiers===void 0?{}:{Modifiers:module.Engineering.Modifiers.map(modifier=>({...modifier}))}}}}}function matchingKeyIn(keyed,slotKey){if(keyed.has(slotKey))return slotKey;const wanted=slotKey.toLowerCase();for(const key of keyed.keys()){if(key.toLowerCase()===wanted)return key}return null}function ownKeyIn(keyed,canonicalKey){return matchingKeyIn(keyed,canonicalKey)??(keyed.size>0&&[...keyed.keys()].every(key=>key===key.toLowerCase())?canonicalKey.toLowerCase():canonicalKey)}function orderBySlotLayout(values,layout,slotOf){const order=new Map(layout.map((slot,index)=>[slot.key.toLowerCase(),index]));return[...values].sort((left,right)=>(order.get(slotOf(left).toLowerCase())??Number.MAX_SAFE_INTEGER)-(order.get(slotOf(right).toLowerCase())??Number.MAX_SAFE_INTEGER))}function cloneModuleStats(module){try{return deepFreeze(structuredClone(module))}catch(error){if(!(error instanceof Error&&error.name==="DataCloneError"))throw error;return deepFreeze({...module,...module.restrictedToShips===void 0?{}:{restrictedToShips:[...module.restrictedToShips]},...module.limitIncrease===void 0?{}:{limitIncrease:{...module.limitIncrease}},...module.damageDistribution===void 0?{}:{damageDistribution:{...module.damageDistribution}},...module.damageComponents===void 0?{}:{damageComponents:{...module.damageComponents,...module.damageComponents.unclassified===void 0?{}:{unclassified:[...module.damageComponents.unclassified]}}},...module.projectileRange===void 0?{}:{projectileRange:{...module.projectileRange}}})}}var GUARDIAN_WEAPON_GROUPS=/* @__PURE__ */new Set(["guardianGauss","guardianPlasma","guardianShard"]);function missingBaseLabels(stats,base,features,experimental){const contributions=[...features,...experimental??[]];return[...new Set(contributions.map(contribution=>contribution.label).filter(label=>{if(base[label]!==void 0)return false;return fieldForLabel(label,stats)===null}))]}function recipeSignature(blueprintSymbol){const blueprint=getBlueprint(blueprintSymbol);if(!blueprint)return null;const grades=Object.entries(blueprint.grades).map(([grade,{features:features}])=>`${grade}:${features.map(feature=>`${feature.label}/${feature.method??""}`).sort().join(",")}`).sort().join(";");return`${blueprint.name.toLowerCase()}|${grades}`}var isGenericSpelling=blueprintSymbol=>blueprintSymbol.toLowerCase().startsWith("misc_");function isSoldWithBlueprint(item,wanted){return getPreEngineeredVariants(item).some(variant=>variant.acquisition==="mercenary"&&variant.blueprintSymbol.toLowerCase()===wanted)}function blueprintRoutesFor(item){const routes=/* @__PURE__ */new Map;for(const blueprintSymbol of getBlueprintsForModule(item))routes.set(blueprintSymbol,"ordinary");for(const variant of getPreEngineeredVariants(item)){if(variant.acquisition==="mercenary"&&!routes.has(variant.blueprintSymbol)){routes.set(variant.blueprintSymbol,"mercenary")}}return routes}function blueprintAvailableFor(item,blueprintSymbol){const offered=getBlueprintsForModule(item);const asWritten=normalizeKey(blueprintSymbol,"ShipLoadout.applyBlueprint: blueprintSymbol");const resolved=resolveBlueprintForModule(item,blueprintSymbol).trim();const wanted=resolved.toLowerCase();if(offered.some(id=>id.toLowerCase()===wanted))return true;if(isSoldWithBlueprint(item,wanted)||isSoldWithBlueprint(item,asWritten))return true;if(!isGenericSpelling(wanted))return false;const signature=recipeSignature(resolved);if(signature===null)return false;return offered.some(id=>recipeSignature(id)===signature&&!isGenericSpelling(id))}function experimentalAvailableFor(item,experimentalEffectSymbol){const wanted=normalizeKey(experimentalEffectSymbol,"ShipLoadout.applyBlueprint: options.experimentalEffectSymbol");return getExperimentalsForModule(item).some(id=>id.toLowerCase()===wanted)}function primitiveLabelFor(stats,label){if(label==="MaximumRange"&&stats.maximumRange!==void 0)return"Range";if(label==="DamageFalloffRange"&&stats.falloffRange!==void 0){return"FalloffRange"}if(label==="Range"&&stats.scannerRange!==void 0)return"ScannerRange";if(label==="DSS_PatchRadius")return"ProbeRadius";if(label==="FuelScoopRate")return"RefuelRate";if(label==="EnergyPerRegen"&&stats.shieldRegenRate!==void 0){return"DistributorDraw"}return label}function primitiveEngineeringInputsFor(stats,grade,experimental){const canonicalGrade={...grade,features:grade.features.map(feature=>{const label=primitiveLabelFor(stats,feature.label);return label===feature.label?feature:{...feature,label:label}})};if(!experimental)return{grade:canonicalGrade};return{grade:canonicalGrade,experimental:{...experimental,modifiers:experimental.modifiers.map(modifier=>{const label=primitiveLabelFor(stats,modifier.label);return label===modifier.label?modifier:{...modifier,label:label}})}}}function matchesCalculatedModifiers(captured,calculated){if(!captured||captured.length!==calculated.length)return false;const byLabel=new Map(captured.map(modifier=>[modifier.Label.trim().toLowerCase(),modifier]));if(byLabel.size!==captured.length)return false;return calculated.every(expected=>{const actual=byLabel.get(expected.Label.trim().toLowerCase());if(!actual)return false;if(expected.Value!==void 0){return actual.Value!==void 0&&Math.abs(actual.Value-expected.Value)<=1e-5*Math.max(1,Math.abs(expected.Value))}return actual.ValueStr===expected.ValueStr})}function identityArticles(item,engineering){if(engineering.Modifiers!==void 0||typeof engineering.BlueprintName!=="string"){return[]}const wanted=engineering.BlueprintName.trim().toLowerCase();const experimental=engineering.ExperimentalEffect?.trim().toLowerCase();return getPreEngineeredVariants(item).filter(candidate=>candidate.blueprintSymbol.trim().toLowerCase()===wanted&&candidate.grade===engineering.Level&&(candidate.experimentalEffectSymbol===void 0?experimental===void 0&&engineering.ExperimentalEffect_Localised===void 0:candidate.experimentalEffectSymbol.trim().toLowerCase()===experimental))}function unrollableFixedArticle(item,engineering){const matches=identityArticles(item,engineering).filter(candidate=>!blueprintAvailableFor(item,candidate.blueprintSymbol));return matches.length===1?matches[0]:null}function rolledOverFixedArticle(item,engineering){const matches=identityArticles(item,engineering).filter(candidate=>blueprintAvailableFor(item,candidate.blueprintSymbol));return matches.length===1?matches[0]:null}function statesInertModifiers(stats,modifiers){return modifiers.every(modifier=>{if(damageTypeForLabel(modifier.Label)!==null||capabilityValueForLabel(modifier.Label)!==null){return false}const field=fieldForLabel(modifier.Label,stats);return field===null||typeof stats[field]!=="number"})}function ordinaryEngineeringProof(item,engineering,experimental){const recipe=resolveBlueprintForModule(item,engineering.BlueprintName);const fixedCandidate=getPreEngineeredVariants(item).some(candidate=>candidate.acquisition!=="mercenary"&&candidate.blueprintSymbol.trim().toLowerCase()===recipe.trim().toLowerCase());if(!fixedCandidate)return"notFixedCandidate";const grade=getBlueprintGrade(recipe,engineering.Level);const quality=engineering.Quality;const stock=builtInModuleBySymbol(item,FITTED_ITEM);if(!stock||!grade||experimental===null||!Number.isFinite(quality)||quality<0||quality>1){return"unproven"}const current=primitiveEngineeringInputsFor(stock,grade,experimental);if(missingBaseLabels(stock,baseStats(stock),current.grade.features,current.experimental?.modifiers).length>0){return"unproven"}const calculated=journalModifiersFor(stock,computeModifiers(baseStats(stock),current.grade,quality,current.experimental));const damageDistribution=current.experimental?.damageDistribution??current.grade.damageDistribution;if(damageDistribution){for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];if(value===void 0)continue;const label=labelsForDamageType(type)[0];if(label===void 0)continue;calculated.push({Label:label,Value:value*scaleForLabel(label),OriginalValue:(stock.damageDistribution?.[type]??0)*scaleForLabel(label)})}}return matchesCalculatedModifiers(engineering.Modifiers,calculated)?"proven":"unproven"}var round6=value=>{const rounded=Math.round(value*1e6)/1e6;return Object.is(rounded,-0)?0:rounded};function float32FiringCycle(interval,burstRounds,burstRateOfFire){if(interval<=0)return void 0;const withinBurst=burstRounds>1?Math.fround(Math.fround(burstRounds-1)/Math.fround(burstRateOfFire)):0;const cycle=Math.fround(withinBurst+Math.fround(interval));return cycle>0?cycle:void 0}function float32RateOfFire(interval,burstRounds,burstRateOfFire){const cycle=float32FiringCycle(interval,burstRounds,burstRateOfFire);return cycle===void 0?void 0:Math.fround(Math.fround(burstRounds)/cycle)}function float32DamagePerSecond(damage,rounds,rate,burstRounds,cycle){if(cycle!==void 0&&(rounds!==1||burstRounds!==1)){const damagePerCycle=Math.fround(Math.fround(Math.fround(damage)*Math.fround(rounds))*Math.fround(burstRounds));return Math.fround(damagePerCycle/cycle)}return Math.fround(Math.fround(Math.fround(damage)*Math.fround(rounds))*Math.fround(rate))}var JOURNAL_MODIFIER_ORDER=["CargoCapacity","GuardianModuleResistance","Mass","Integrity","PowerDraw","BootTime","PowerCapacity","HeatEfficiency","FSDOptimalMass","MaxFuelPerJump","FSDHeatRate","EngineOptimalMass","EngineOptPerformance","EngineHeatRate","ShieldGenOptimalMass","ShieldGenStrength","DamagePerSecond","Damage","DistributorDraw","ThermalLoad","ArmourPenetration","MaximumRange","ShotSpeed","RateOfFire","DamageType","$Kinetic;","$Thermal;","$Explosive;","$Absolute;","AmmoClipSize","AmmoMaximum","ReloadTime","Jitter","DamageFalloffRange","DefenceModifierShieldMultiplier","DefenceModifierHealthMultiplier","DefenceModifierHealthAddition","DefenceModifierShieldAddition","RegenRate","BrokenRegenRate","EnergyPerRegen","KineticResistance","ThermicResistance","ExplosiveResistance","CausticResistance","DamageProtection","ModuleDefenceAbsorption","WeaponsCapacity","WeaponsRecharge","EnginesCapacity","EnginesRecharge","SystemsCapacity","SystemsRecharge","ShieldBankSpinUp","ShieldBankDuration","ShieldBankReinforcement","ShieldBankHeat","FSDInterdictorRange","FSDInterdictorFacingLimit","SensorTargetScanAngle","MaxAngle","ScannerTimeToScan","Range","DSS_PatchRadius","FuelScoopRate","FuelCapacity"];var JOURNAL_MODIFIER_RANK=new Map(JOURNAL_MODIFIER_ORDER.map((label,index)=>[label,index]));function sortJournalModifiers(modifiers){return modifiers.map((modifier,index)=>({modifier:modifier,index:index})).sort((a,b)=>(JOURNAL_MODIFIER_RANK.get(a.modifier.Label)??JOURNAL_MODIFIER_ORDER.length)-(JOURNAL_MODIFIER_RANK.get(b.modifier.Label)??JOURNAL_MODIFIER_ORDER.length)||a.index-b.index).map(({modifier:modifier})=>modifier)}function journalModifiersFor(stats,modifiers){const weapon=stats.damage!==void 0;const valueFor=(label,fallback)=>{const modifier=modifiers.find(candidate=>candidate.Label===label);return(modifier&&preciseModifierValue(modifier))??Math.fround(fallback)};const burstTouched=["BurstInterval","BurstSize","BurstRateOfFire"].some(label=>modifiers.some(modifier=>modifier.Label===label));const damageTouched=modifiers.some(modifier=>modifier.Label==="Damage");const rateTouched=burstTouched||modifiers.some(modifier=>modifier.Label==="RateOfFire");let damagePerSecond;let derivedRate;if(weapon&&(damageTouched||rateTouched)){const continuous=stats.burstInterval===void 0&&stats.rateOfFire===void 0;const baseDamage=Math.fround(stats.damage);const effectiveDamage=valueFor("Damage",stats.damage);if(continuous){damagePerSecond={Label:"DamagePerSecond",Value:round6(effectiveDamage),OriginalValue:round6(baseDamage)}}else{const burstRounds=valueFor("BurstSize",stats.burstRounds??1);const burstRate=valueFor("BurstRateOfFire",stats.burstRateOfFire??1);const baseBurstRounds=Math.fround(stats.burstRounds??1);const baseBurstRate=Math.fround(stats.burstRateOfFire??1);const baseInterval=stats.burstInterval===void 0?void 0:Math.fround(stats.burstInterval);const baseCycle=baseInterval===void 0?void 0:float32FiringCycle(baseInterval,baseBurstRounds,baseBurstRate);const baseRate=baseInterval!==void 0?float32RateOfFire(baseInterval,baseBurstRounds,baseBurstRate):stats.rateOfFire===void 0?void 0:Math.fround(stats.rateOfFire);const rateModifier=modifiers.find(modifier=>modifier.Label==="RateOfFire");const effectiveRate=rateModifier&&preciseModifierValue(rateModifier);const effectiveInterval=valueFor("BurstInterval",stats.burstInterval??0);const effectiveCycle=effectiveRate===void 0?float32FiringCycle(effectiveInterval,burstRounds,burstRate):void 0;const rate=effectiveRate??(effectiveCycle===void 0?void 0:Math.fround(Math.fround(burstRounds)/effectiveCycle));if(baseRate!==void 0&&rate!==void 0){const stockRounds=Math.fround(stats.roundsPerShot??1);const effectiveRounds=Math.fround(modifiers.find(modifier=>modifier.Label==="Rounds"||modifier.Label==="RoundsPerShot")?.Value??stockRounds);damagePerSecond={Label:"DamagePerSecond",Value:round6(float32DamagePerSecond(effectiveDamage,effectiveRounds,rate,burstRounds,effectiveCycle)),OriginalValue:round6(float32DamagePerSecond(baseDamage,stockRounds,baseRate,baseBurstRounds,baseCycle))};if(burstTouched){derivedRate={Label:"RateOfFire",Value:round6(rate),OriginalValue:round6(baseRate)}}}}}const result=[];for(const modifier of modifiers){const label=modifier.Label;if(weapon&&["BurstInterval","BurstSize","BurstRateOfFire"].includes(label))continue;if(weapon&&label==="Damage"&&stats.rateOfFire===void 0)continue;let journalLabel=label;if(label==="Range"&&stats.maximumRange!==void 0)journalLabel="MaximumRange";else if(label==="FalloffRange"&&stats.falloffRange!==void 0){journalLabel="DamageFalloffRange"}else if(label==="ScannerRange"&&stats.scannerRange!==void 0){journalLabel="Range"}else if(label==="ProbeRadius")journalLabel="DSS_PatchRadius";else if(label==="RefuelRate")journalLabel="FuelScoopRate";else if(label==="DistributorDraw"&&stats.shieldRegenRate!==void 0){journalLabel="EnergyPerRegen"}result.push(journalLabel===label?modifier:{...modifier,Label:journalLabel})}if(damagePerSecond)result.push(damagePerSecond);if(derivedRate){const direct=result.findIndex(modifier=>modifier.Label==="RateOfFire");if(direct>=0)result[direct]=derivedRate;else result.push(derivedRate)}return sortJournalModifiers(result)}function isFinalGuardianWeaponEngineering(item,blueprint){const group=getEngineeringGroup(item);if(group===null||!GUARDIAN_WEAPON_GROUPS.has(group))return false;const resolved=resolveBlueprintForModule(item,blueprint);return getBlueprint(resolved)!==null&&!blueprintAvailableFor(item,blueprint)}function engineerableBase(item,statsOverride){const stats=statsOverride??builtInModuleBySymbol(item,FITTED_ITEM);if(!stats||stats.engineeringLocked)return null;return{stats:stats,base:baseStats(stats)}}function availableBlueprintsFor(item,statsOverride){const engineerable=engineerableBase(item,statsOverride);if(!engineerable)return[];const{stats:stats,base:base}=engineerable;const available=[];for(const[blueprintSymbol,route]of blueprintRoutesFor(item)){const blueprint=BLUEPRINTS[blueprintSymbol];if(!blueprint)continue;const grades=Object.entries(blueprint.grades).filter(([,grade])=>missingBaseLabels(stats,base,grade.features).length===0).map(([grade])=>Number(grade)).filter(Number.isFinite).sort((a,b)=>a-b);if(grades.length>0)available.push({blueprintSymbol:blueprintSymbol,grades:grades,route:route})}return available}function availableExperimentalsFor(item,statsOverride){const engineerable=engineerableBase(item,statsOverride);if(!engineerable)return[];const{stats:stats,base:base}=engineerable;return getExperimentalsForModule(item).filter(experimentalEffectSymbol=>{const effect=EXPERIMENTAL_EFFECTS[experimentalEffectSymbol];return effect!==void 0&&missingBaseLabels(stats,base,effect.modifiers).length===0})}var MAX_ENGINEERING_GRADE=5;function modifiersWithExperimental(variant,experimental){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);const effectName=experimental===void 0?variant.experimentalEffectSymbol:experimental;if(!module||!variant.modifiers?.length&&effectName==null)return null;const effect=effectName==null?void 0:getExperimentalEffect(effectName);if(effectName!==null&&effectName!==void 0&&!effect)return null;return computeModifiers(baseStats(module),fixedModifierFeatures(variant.modifiers??[]),1,effect??void 0)}function getPreEngineeredModifiers(variant){return modifiersWithExperimental(variant)??[]}function journalModifiersWithExperimental(variant,experimental){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);if(!module)return[];const modifiers=journalModifiersFor(module,modifiersWithExperimental(variant,experimental)??[]);const effectName=experimental===void 0?variant.experimentalEffectSymbol:experimental;const damageDistribution=effectName?getExperimentalEffect(effectName)?.damageDistribution:void 0;if(!damageDistribution)return modifiers;for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];const label=labelsForDamageType(type)[0];if(value===void 0||label===void 0)continue;modifiers.push({Label:label,Value:value*scaleForLabel(label),OriginalValue:(module.damageDistribution?.[type]??0)*scaleForLabel(label)})}return modifiers}function getPreEngineeredJournalModifiers(variant){return journalModifiersWithExperimental(variant)}function sameJournalNumber(actual,expected,base){return Math.abs(actual-expected)<=Math.max(1e-5,Math.abs(base)*1e-4,Math.abs(expected)*1e-6)}function modifierKey(modifier,module){return fieldForLabel(modifier.Label,module)??`label:${normalizeKey(modifier.Label,"identifyPreEngineeredVariant: module.Engineering.Modifiers[].Label")}`}function sameModifier(actual,expected){if(expected.Value!==void 0){return actual.Value!==void 0&&sameJournalNumber(actual.Value,expected.Value,expected.OriginalValue??expected.Value)}return expected.ValueStr!==void 0&&actual.ValueStr!==void 0}function matchesModifierSignature(actualByKey,expected,module){let matched=0;for(const predicted of expected){const actual=actualByKey.get(modifierKey(predicted,module));if(!actual)continue;if(!sameModifier(actual,predicted))return false;matched++}return matched>=Math.max(1,expected.length-1)}function identifyPreEngineeredVariant(module){const engineering=module.Engineering;if(!engineering)return null;requireStringIfPresent(module.Item,"identifyPreEngineeredVariant: module.Item");const stock=getModuleBySymbol(module.Item,ALL_MODULES);if(!stock)return null;const capturedBlueprint=normalizeKey(engineering.BlueprintName,"identifyPreEngineeredVariant: module.Engineering.BlueprintName");const variants=getPreEngineeredVariants(module.Item);const blueprintMatches=variants.filter(candidate=>candidate.blueprintSymbol.toLowerCase()===capturedBlueprint);const blueprintMatch=blueprintMatches.length===1?blueprintMatches[0]:null;const capturedGrade=engineering.Level;if(blueprintMatch?.acquisition==="mercenary"&&Number.isInteger(capturedGrade)&&capturedGrade>=blueprintMatch.grade&&capturedGrade<=MAX_ENGINEERING_GRADE){return blueprintMatch}if(engineering.Modifiers===void 0){const capturedExperimental=normalizeKey(engineering.ExperimentalEffect,"identifyPreEngineeredVariant: module.Engineering.ExperimentalEffect");const identityMatches=blueprintMatches.filter(candidate=>candidate.engineeringLocked===true&&candidate.grade===capturedGrade&&(candidate.experimentalEffectSymbol===void 0?capturedExperimental===void 0&&engineering.ExperimentalEffect_Localised===void 0:candidate.experimentalEffectSymbol.toLowerCase()===capturedExperimental));return identityMatches.length===1?identityMatches[0]:null}if(!engineering.Modifiers?.length)return null;const actualByKey=/* @__PURE__ */new Map;for(const modifier of engineering.Modifiers){actualByKey.set(modifierKey(modifier,stock),modifier)}requireStringIfPresent(engineering.ExperimentalEffect,"identifyPreEngineeredVariant: module.Engineering.ExperimentalEffect");const matches=[];for(const candidate of variants){if(!candidate.modifiers?.length)continue;if(candidate.grade!==engineering.Level)continue;if(candidate.acquisition==="eventReward"&&(engineering.ExperimentalEffect!==void 0||engineering.ExperimentalEffect_Localised!==void 0||capturedBlueprint!==candidate.blueprintSymbol.toLowerCase())){continue}const primitive=modifiersWithExperimental(candidate,engineering.ExperimentalEffect??null);if(!primitive?.length)continue;const matched=matchesModifierSignature(actualByKey,primitive,stock)||matchesModifierSignature(actualByKey,journalModifiersWithExperimental(candidate,engineering.ExperimentalEffect??null),stock);if(matched)matches.push(candidate)}return matches.length===1?matches[0]:null}function unresolvedModifiers(variant){const resolved=new Set(getPreEngineeredModifiers(variant).map(modifier=>modifier.Label));return(variant.modifiers??[]).map(modifier=>modifier.label).filter(label=>!resolved.has(label))}function getPreEngineeredStats(variant){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);if(!module)return null;if(!variant.modifiers?.length&&!variant.engineeringLocked&&variant.experimentalEffectSymbol===void 0)return{...module};const modifiers=variant.modifiers??[];const resolved={...module,...variant.engineeringLocked?{engineeringLocked:true}:{}};for(const{Label:Label,Value:Value,ValueStr:ValueStr}of getPreEngineeredModifiers(variant)){const field=fieldForLabel(Label,module);if(field&&field!=="damageDistribution"&&Value!==void 0){Object.assign(resolved,{[field]:Value/scaleForLabel(Label)})}else if(field&&ValueStr!==void 0&&capabilityValueForLabel(Label)!==null){Object.assign(resolved,{[field]:true})}}const experimentalDamageDistribution=variant.experimentalEffectSymbol?getExperimentalEffect(variant.experimentalEffectSymbol)?.damageDistribution:void 0;if(experimentalDamageDistribution){resolved.damageDistribution={...experimentalDamageDistribution};delete resolved.damageComponents}if(resolved.rateOfFire!==void 0&&!modifiers.some(m=>m.label==="RateOfFire")&&modifiers.some(m=>m.label==="BurstSize"||m.label==="BurstRateOfFire"||m.label==="BurstInterval")){const rate=combinedRateOfFire(resolved);if(rate!==void 0)resolved.rateOfFire=rate}if(module.damageComponents&&!experimentalDamageDistribution){resolved.damageComponents=scaleDamageComponents(module.damageComponents,module.damage,resolved.damage)}return resolved}export{FITTED_ITEM,availableBlueprintsFor,availableExperimentalsFor,blueprintAvailableFor,blueprintRoutesFor,cloneLoadoutModule,cloneModuleStats,experimentalAvailableFor,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,isBuiltInHullModule,isCargoHatchSlot,isFinalGuardianWeaponEngineering,isNonOutfittingSlot,journalModifiersFor,matchingKeyIn,missingBaseLabels,orderBySlotLayout,ordinaryEngineeringProof,ownKeyIn,primitiveEngineeringInputsFor,rolledOverFixedArticle,scaleDamageComponents,statesInertModifiers,unresolvedModifiers,unrollableFixedArticle};//# sourceMappingURL=chunk-DABPLBTN.js.map