@elite-dangerous-almanac/core 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROVENANCE/i18n/SOURCES.md +2 -2
- package/PROVENANCE/ships/SOURCES.md +29 -9
- package/README.md +54 -40
- package/dist/astro/galaxy-grid.js +1 -1
- package/dist/astro/index.d.ts +1 -1
- package/dist/astro/index.js +1 -1
- package/dist/astro/naming-region-origins.d.ts +1 -1
- package/dist/astro/naming-region-origins.js +1 -1
- package/dist/astro/nebulae.d.ts +2 -2
- package/dist/astro/permit-locks.d.ts +2 -1
- package/dist/astro/permit-locks.js +1 -1
- package/dist/astro/procedural-system.d.ts +2 -1
- package/dist/astro/procedural-system.js +1 -1
- package/dist/astro/sector-name.d.ts +2 -1
- package/dist/astro/sector-name.js +1 -1
- package/dist/astro/system-address.d.ts +1 -1
- package/dist/astro/system-name.d.ts +14 -9
- package/dist/astro/system-name.js +1 -1
- package/dist/chunk-2W5MW376.js +1 -0
- package/dist/chunk-2W5MW376.js.map +1 -0
- package/dist/{chunk-VZZUNSDF.js → chunk-4KJ7CR74.js} +1 -1
- package/dist/{chunk-VZZUNSDF.js.map → chunk-4KJ7CR74.js.map} +1 -1
- package/dist/{chunk-6EUVIZAS.js → chunk-4QYTVSNR.js} +1 -1
- package/dist/{chunk-EKQCVCMK.js → chunk-5ZVYRX6Z.js} +1 -1
- package/dist/{chunk-EKQCVCMK.js.map → chunk-5ZVYRX6Z.js.map} +1 -1
- package/dist/chunk-6GJHUWMO.js +1 -0
- package/dist/chunk-6GJHUWMO.js.map +1 -0
- package/dist/chunk-6L56LWTT.js +1 -0
- package/dist/chunk-6L56LWTT.js.map +1 -0
- package/dist/{chunk-GQ5GX5TB.js → chunk-6O4NRRSB.js} +1 -1
- package/dist/chunk-6O4NRRSB.js.map +1 -0
- package/dist/{chunk-WNGQ3IAM.js → chunk-6UNAD74Z.js} +1 -1
- package/dist/{chunk-WNGQ3IAM.js.map → chunk-6UNAD74Z.js.map} +1 -1
- package/dist/{chunk-JPBMRJFC.js → chunk-77I24V6B.js} +1 -1
- package/dist/chunk-77I24V6B.js.map +1 -0
- package/dist/chunk-7ATBEOVC.js +1 -0
- package/dist/chunk-7ATBEOVC.js.map +1 -0
- package/dist/chunk-7TQ2X6Q3.js +1 -0
- package/dist/chunk-7TQ2X6Q3.js.map +1 -0
- package/dist/{chunk-6EPYVBAX.js → chunk-A6OINYNP.js} +1 -1
- package/dist/{chunk-Q3QCLNVG.js → chunk-AYAKU4YA.js} +1 -1
- package/dist/chunk-AYAKU4YA.js.map +1 -0
- package/dist/chunk-B7EYTZRK.js +1 -0
- package/dist/chunk-B7EYTZRK.js.map +1 -0
- package/dist/{chunk-EBAHNZ36.js → chunk-CIULJH3G.js} +1 -1
- package/dist/{chunk-EBAHNZ36.js.map → chunk-CIULJH3G.js.map} +1 -1
- package/dist/{chunk-SNADUQSJ.js → chunk-CJK2IBI2.js} +1 -1
- package/dist/{chunk-SNADUQSJ.js.map → chunk-CJK2IBI2.js.map} +1 -1
- package/dist/{chunk-DYPOL3CI.js → chunk-CJQ37JII.js} +1 -1
- package/dist/chunk-CJQ37JII.js.map +1 -0
- package/dist/chunk-D6YEHR5S.js +1 -0
- package/dist/chunk-D6YEHR5S.js.map +1 -0
- package/dist/{chunk-Z6XMXMVI.js → chunk-DBDCOHI4.js} +1 -1
- package/dist/chunk-DBDCOHI4.js.map +1 -0
- package/dist/{chunk-AFVYCQWL.js → chunk-DCB4COCL.js} +1 -1
- package/dist/{chunk-AFVYCQWL.js.map → chunk-DCB4COCL.js.map} +1 -1
- package/dist/{chunk-CJWFY6OX.js → chunk-DSMLYA2M.js} +1 -1
- package/dist/{chunk-CJWFY6OX.js.map → chunk-DSMLYA2M.js.map} +1 -1
- package/dist/{chunk-UXBCLFGU.js → chunk-DWRNXUAX.js} +1 -1
- package/dist/{chunk-UXBCLFGU.js.map → chunk-DWRNXUAX.js.map} +1 -1
- package/dist/{chunk-UHSNB5SV.js → chunk-EVJ32UF3.js} +1 -1
- package/dist/{chunk-UHSNB5SV.js.map → chunk-EVJ32UF3.js.map} +1 -1
- package/dist/chunk-EVW4Z4CB.js +1 -0
- package/dist/chunk-EVW4Z4CB.js.map +1 -0
- package/dist/{chunk-4S6WB7QR.js → chunk-FF2X4K5P.js} +1 -1
- package/dist/chunk-FF2X4K5P.js.map +1 -0
- package/dist/chunk-FYVPZBXN.js +1 -0
- package/dist/chunk-FYVPZBXN.js.map +1 -0
- package/dist/{chunk-QTZPA2FR.js → chunk-GLWPSVFV.js} +1 -1
- package/dist/chunk-GLWPSVFV.js.map +1 -0
- package/dist/chunk-GZYPQIO2.js +1 -0
- package/dist/chunk-GZYPQIO2.js.map +1 -0
- package/dist/chunk-H47K3UWG.js +1 -0
- package/dist/chunk-H47K3UWG.js.map +1 -0
- package/dist/chunk-JGOAQLYW.js +1 -0
- package/dist/chunk-JGOAQLYW.js.map +1 -0
- package/dist/{chunk-JWWYAMGD.js → chunk-MGRDB2BZ.js} +1 -1
- package/dist/{chunk-JWWYAMGD.js.map → chunk-MGRDB2BZ.js.map} +1 -1
- package/dist/{chunk-MKGJPVPS.js → chunk-MRTTQYT5.js} +1 -1
- package/dist/{chunk-MKGJPVPS.js.map → chunk-MRTTQYT5.js.map} +1 -1
- package/dist/chunk-MTJ4MS7W.js +1 -0
- package/dist/chunk-MTJ4MS7W.js.map +1 -0
- package/dist/chunk-NIURLW2F.js +1 -0
- package/dist/chunk-NIURLW2F.js.map +1 -0
- package/dist/chunk-OLKNYGGT.js +1 -0
- package/dist/chunk-OLKNYGGT.js.map +1 -0
- package/dist/{chunk-UXFMVZAY.js → chunk-OVUHQEH5.js} +1 -1
- package/dist/{chunk-UXFMVZAY.js.map → chunk-OVUHQEH5.js.map} +1 -1
- package/dist/chunk-OYFMHDYT.js +1 -0
- package/dist/chunk-OYFMHDYT.js.map +1 -0
- package/dist/chunk-OYR5HUQZ.js +1 -0
- package/dist/chunk-OYR5HUQZ.js.map +1 -0
- package/dist/{chunk-LLHGSBPI.js → chunk-PA5EITW5.js} +1 -1
- package/dist/{chunk-LLHGSBPI.js.map → chunk-PA5EITW5.js.map} +1 -1
- package/dist/chunk-PL75RTA2.js +1 -0
- package/dist/{chunk-2VPVZELZ.js.map → chunk-PL75RTA2.js.map} +1 -1
- package/dist/chunk-PY5L6WC5.js +1 -0
- package/dist/chunk-PY5L6WC5.js.map +1 -0
- package/dist/{chunk-W6EPHHTS.js → chunk-Q2L75GSI.js} +1 -1
- package/dist/chunk-Q2L75GSI.js.map +1 -0
- package/dist/chunk-QJ7GB6FF.js +1 -0
- package/dist/chunk-QJ7GB6FF.js.map +1 -0
- package/dist/chunk-QTAMQ6ME.js +1 -0
- package/dist/chunk-QTAMQ6ME.js.map +1 -0
- package/dist/{chunk-VDVFJXX5.js → chunk-QY3L5BKN.js} +1 -1
- package/dist/{chunk-FMPRCYKY.js → chunk-RRYBSAPX.js} +1 -1
- package/dist/chunk-RRYBSAPX.js.map +1 -0
- package/dist/{chunk-J42ZXLBL.js → chunk-T62GO4AA.js} +1 -1
- package/dist/chunk-T62GO4AA.js.map +1 -0
- package/dist/{chunk-E3BRVGJJ.js → chunk-TBZJIQ5P.js} +1 -1
- package/dist/{chunk-E3BRVGJJ.js.map → chunk-TBZJIQ5P.js.map} +1 -1
- package/dist/chunk-V3AEUBHV.js +1 -0
- package/dist/chunk-V3AEUBHV.js.map +1 -0
- package/dist/chunk-VYDQHPY2.js +1 -0
- package/dist/chunk-VYDQHPY2.js.map +1 -0
- package/dist/chunk-XUHAPOM6.js +1 -0
- package/dist/chunk-XUHAPOM6.js.map +1 -0
- package/dist/chunk-Y6KJJMIM.js +1 -0
- package/dist/chunk-Y6KJJMIM.js.map +1 -0
- package/dist/chunk-YXPZ7QQB.js +1 -0
- package/dist/chunk-YXPZ7QQB.js.map +1 -0
- package/dist/{chunk-Y6UZWNP4.js → chunk-ZCEAPJDH.js} +1 -1
- package/dist/{chunk-Y6UZWNP4.js.map → chunk-ZCEAPJDH.js.map} +1 -1
- package/dist/commodities/commodities.d.ts +20 -10
- package/dist/commodities/commodities.js +1 -1
- package/dist/commodities/index.d.ts +15 -4
- package/dist/commodities/index.js +1 -1
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/modification-costs.d.ts +2 -1
- package/dist/equipment/modification-costs.js.map +1 -1
- package/dist/equipment/modification-journal.js +1 -1
- package/dist/equipment/modifications.d.ts +2 -1
- package/dist/equipment/modifications.js +1 -1
- package/dist/equipment/suits.d.ts +6 -3
- package/dist/equipment/suits.js +1 -1
- package/dist/equipment/upgrade-costs.d.ts +8 -4
- package/dist/equipment/upgrade-costs.js +1 -1
- package/dist/equipment/upgrade-costs.js.map +1 -1
- package/dist/equipment/weapons.d.ts +13 -5
- package/dist/equipment/weapons.js +1 -1
- package/dist/i18n/blueprints.d.ts +6 -6
- package/dist/i18n/blueprints.js +1 -1
- package/dist/i18n/diagnostics.d.ts +1 -13
- package/dist/i18n/engineering-groups.d.ts +1 -0
- package/dist/i18n/engineering-groups.js +1 -1
- package/dist/i18n/experimental-effect-descriptions.d.ts +4 -3
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.d.ts +5 -4
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +1 -13
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/pre-engineered.d.ts +7 -6
- package/dist/i18n/pre-engineered.js +1 -1
- package/dist/materials/index.d.ts +16 -4
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials.d.ts +36 -19
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources.d.ts +18 -7
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/armour.d.ts +20 -4
- package/dist/ships/armour.js +1 -1
- package/dist/ships/blueprint-costs.d.ts +20 -17
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-journal.d.ts +9 -8
- package/dist/ships/blueprint-journal.js +1 -1
- package/dist/ships/blueprints.d.ts +14 -12
- package/dist/ships/blueprints.js +1 -1
- package/dist/ships/build-metrics.d.ts +1061 -0
- package/dist/ships/build-metrics.js +1 -0
- package/dist/ships/build-metrics.js.map +1 -0
- package/dist/ships/distributor.d.ts +10 -3
- package/dist/ships/distributor.js +1 -1
- package/dist/ships/engineering-options.d.ts +8 -6
- package/dist/ships/engineering-options.js +1 -1
- package/dist/ships/engineering.d.ts +2 -16
- package/dist/ships/engineering.js +1 -1
- package/dist/ships/experimental-effect-costs.d.ts +5 -5
- package/dist/ships/experimental-effect-costs.js +1 -1
- package/dist/ships/experimental-effects.d.ts +9 -8
- package/dist/ships/experimental-effects.js +1 -1
- package/dist/ships/heat.d.ts +7 -2
- package/dist/ships/heat.js +1 -1
- package/dist/ships/index.d.ts +34 -22
- package/dist/ships/index.js +1 -1
- package/dist/ships/jump-range.d.ts +10 -3
- package/dist/ships/jump-range.js +1 -1
- package/dist/ships/loadout-calculations.d.ts +1 -1
- package/dist/ships/loadout-calculations.js +1 -1
- package/dist/ships/mobility-capacitor.d.ts +90 -0
- package/dist/ships/mobility-capacitor.js +1 -0
- package/dist/ships/mobility-capacitor.js.map +1 -0
- package/dist/ships/mobility.d.ts +41 -17
- package/dist/ships/mobility.js +1 -1
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-core.js +1 -1
- package/dist/ships/modules.d.ts +27 -1
- package/dist/ships/modules.js +1 -1
- package/dist/ships/power.d.ts +12 -5
- package/dist/ships/power.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +10 -8
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/pre-engineered.d.ts +6 -6
- package/dist/ships/pre-engineered.js +1 -1
- package/dist/ships/resistances.d.ts +2 -2
- package/dist/ships/resistances.js +1 -1
- package/dist/ships/shield-capacitor.d.ts +133 -0
- package/dist/ships/shield-capacitor.js +1 -0
- package/dist/ships/shield-capacitor.js.map +1 -0
- package/dist/ships/shield-recovery.d.ts +16 -2
- package/dist/ships/shield-recovery.js +1 -1
- package/dist/ships/shields.d.ts +86 -28
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +100 -671
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/ships.d.ts +7 -6
- package/dist/ships/ships.js +1 -1
- package/dist/ships/slef.d.ts +11 -9
- package/dist/ships/slef.js +1 -1
- package/dist/ships/source-purchase.d.ts +2 -1
- package/dist/ships/source-purchase.js +1 -1
- package/dist/ships/weapons-capacitor.d.ts +10 -3
- package/dist/ships/weapons-capacitor.js +1 -1
- package/dist/ships/weapons.d.ts +22 -6
- package/dist/ships/weapons.js +1 -1
- package/dist/{system-address-DYsN1qOT.d.ts → system-address-cyJaeZIS.d.ts} +2 -1
- package/package.json +17 -2
- package/dist/chunk-24INI4U7.js +0 -1
- package/dist/chunk-24INI4U7.js.map +0 -1
- package/dist/chunk-2FHHMYDC.js +0 -1
- package/dist/chunk-2FHHMYDC.js.map +0 -1
- package/dist/chunk-2TW4ZBI3.js +0 -1
- package/dist/chunk-2TW4ZBI3.js.map +0 -1
- package/dist/chunk-2VPVZELZ.js +0 -1
- package/dist/chunk-4S6WB7QR.js.map +0 -1
- package/dist/chunk-DVL5RBKX.js +0 -1
- package/dist/chunk-DVL5RBKX.js.map +0 -1
- package/dist/chunk-DYPOL3CI.js.map +0 -1
- package/dist/chunk-EXVCRIDP.js +0 -1
- package/dist/chunk-EXVCRIDP.js.map +0 -1
- package/dist/chunk-FGXWVFN6.js +0 -1
- package/dist/chunk-FGXWVFN6.js.map +0 -1
- package/dist/chunk-FMPRCYKY.js.map +0 -1
- package/dist/chunk-G3265B27.js +0 -1
- package/dist/chunk-G3265B27.js.map +0 -1
- package/dist/chunk-GQ5GX5TB.js.map +0 -1
- package/dist/chunk-IOJXLDJN.js +0 -1
- package/dist/chunk-IOJXLDJN.js.map +0 -1
- package/dist/chunk-IYU4WLFM.js +0 -1
- package/dist/chunk-IYU4WLFM.js.map +0 -1
- package/dist/chunk-J42ZXLBL.js.map +0 -1
- package/dist/chunk-JPBMRJFC.js.map +0 -1
- package/dist/chunk-LJI7VXJD.js +0 -1
- package/dist/chunk-LJI7VXJD.js.map +0 -1
- package/dist/chunk-OCND33TO.js +0 -1
- package/dist/chunk-OCND33TO.js.map +0 -1
- package/dist/chunk-P2QOL63K.js +0 -1
- package/dist/chunk-P2QOL63K.js.map +0 -1
- package/dist/chunk-Q3QCLNVG.js.map +0 -1
- package/dist/chunk-QTZPA2FR.js.map +0 -1
- package/dist/chunk-RLUS76LZ.js +0 -1
- package/dist/chunk-RLUS76LZ.js.map +0 -1
- package/dist/chunk-TEOJCBSG.js +0 -1
- package/dist/chunk-TEOJCBSG.js.map +0 -1
- package/dist/chunk-TMMGS6TC.js +0 -1
- package/dist/chunk-TMMGS6TC.js.map +0 -1
- package/dist/chunk-W6EPHHTS.js.map +0 -1
- package/dist/chunk-Z6XMXMVI.js.map +0 -1
- package/dist/chunk-ZNCXENNB.js +0 -1
- package/dist/chunk-ZNCXENNB.js.map +0 -1
- package/dist/chunk-ZZT2PQZ5.js +0 -1
- package/dist/chunk-ZZT2PQZ5.js.map +0 -1
- /package/dist/{chunk-6EUVIZAS.js.map → chunk-4QYTVSNR.js.map} +0 -0
- /package/dist/{chunk-6EPYVBAX.js.map → chunk-A6OINYNP.js.map} +0 -0
- /package/dist/{chunk-VDVFJXX5.js.map → chunk-QY3L5BKN.js.map} +0 -0
package/dist/chunk-EXVCRIDP.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{weaponsCapacitorMetrics}from"./chunk-FMPRCYKY.js";import{shieldRecovery,cellBankSummary}from"./chunk-VZZUNSDF.js";import{shieldMetrics}from"./chunk-2FHHMYDC.js";import{getShipBySymbol,getShipByName,getShipSlots}from"./chunk-WNGQ3IAM.js";import{parseSlef,toSlef,stringifySlef,getLoadoutModifier}from"./chunk-UXFMVZAY.js";import{sourcePurchaseFromLoadout,getSourceModuleValue}from"./chunk-IYU4WLFM.js";import{powerBudget}from"./chunk-RLUS76LZ.js";import{isNonOutfittingSlot,isBuiltInHullModule,cloneLoadoutModule,identifyPreEngineeredVariant,cloneModuleStats,availableBlueprintsFor,availableExperimentalsFor,ownKeyIn,FITTED_ITEM,blueprintAvailableFor,blueprintRoutesFor,experimentalAvailableFor,primitiveEngineeringInputsFor,missingBaseLabels,journalModifiersFor,getPreEngineeredStats,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,ordinaryEngineeringProof,unresolvedModifiers,orderBySlotLayout,matchingKeyIn,isCargoHatchSlot,isFinalGuardianWeaponEngineering,scaleDamageComponents}from"./chunk-ZZT2PQZ5.js";import{weaponMetrics,sumWeaponMetrics,combinedRateOfFire}from"./chunk-LJI7VXJD.js";import{builtInModuleBySymbol,getBulkheadsForShip}from"./chunk-LLHGSBPI.js";import{getPreEngineeredVariants}from"./chunk-2VPVZELZ.js";import{singleJumpRange,frameShiftDriveMassFactor,fuelPerJump,totalRange}from"./chunk-GQ5GX5TB.js";import{calculateUnladenMass,calculateCargoCapacity,calculateFuelCapacity}from"./chunk-AFVYCQWL.js";import{fixedSlotReason,validateLoadout}from"./chunk-B4ZSTOM4.js";import{mobilityMetrics}from"./chunk-24INI4U7.js";import{calculateModuleLimits}from"./chunk-KPETDYQX.js";import{ALL_MODULES}from"./chunk-VDVFJXX5.js";import{CORE_MODULES}from"./chunk-UHSNB5SV.js";import{distributorMetrics}from"./chunk-P2QOL63K.js";import{getExperimentalEffectCost}from"./chunk-SNADUQSJ.js";import{getExperimentalEffect}from"./chunk-JPBMRJFC.js";import{heatMetrics}from"./chunk-W6EPHHTS.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{armourMetrics}from"./chunk-FGXWVFN6.js";import{getBlueprintCost}from"./chunk-TEOJCBSG.js";import{baseStats,computeModifiers,labelsForDamageType,scaleForLabel,sumMaterials,fieldForLabel,labelsForField,capabilityValueForLabel,damageTypeForLabel}from"./chunk-DYPOL3CI.js";import{resolveBlueprintForModule}from"./chunk-2TW4ZBI3.js";import{getExperimentalsForModule}from"./chunk-QTZPA2FR.js";import{getBlueprintGrade}from"./chunk-Q3QCLNVG.js";import{getDefaultLoadout}from"./chunk-GRIK3EDH.js";import{loadoutSlotName}from"./chunk-KAA4VOOB.js";import{parseSlotName,enumerateSlots,SLOT_RESTRICTION_LABELS}from"./chunk-RAO35XDF.js";import{normalizeKey}from"./chunk-BKWLI44T.js";import{truncate,describeValue,requireString,requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var NO_ISSUES=Object.freeze([]);function completeResult(value){return Object.freeze({value:value,complete:true,issues:NO_ISSUES})}function incompleteResult(issues){return Object.freeze({value:null,complete:false,issues:Object.freeze(issues.map(issue=>Object.freeze({...issue,...issue.params?{params:Object.freeze({...issue.params})}:{}})))})}var PREFIX={powerPlant:["int_powerplant","int_guardianpowerplant"],thrusters:["int_engine","int_mkiiagileboost_engine"],frameShiftDrive:["int_hyperdrive"],powerDistributor:["int_powerdistributor","int_guardianpowerdistributor"],shieldGenerator:["int_shieldgenerator"],shieldCellBank:["int_shieldcellbank"],shieldBooster:["hpt_shieldbooster"],shieldReinforcement:["int_guardianshieldreinforcement"],hullReinforcement:["int_hullreinforcement","int_guardianhullreinforcement","int_metaalloyhullreinforcement"],moduleReinforcement:["int_modulereinforcement","int_guardianmodulereinforcement"]};var startsWithAny=(symbol,prefixes)=>prefixes.some(prefix=>symbol.toLowerCase().startsWith(prefix));function isPowerDistributor(module,stats){return stats?.slot?stats.slot==="powerDistributor":startsWithAny(module.Item,PREFIX.powerDistributor)}function isPowerPlant(module,stats){const parsed=parseSlotName(module.Slot);if(parsed?.kind==="core"&&parsed.core==="powerPlant")return true;return stats?.slot?stats.slot==="powerPlant":startsWithAny(module.Item,PREFIX.powerPlant)}function isThruster(module,stats){const parsed=parseSlotName(module.Slot);if(parsed?.kind==="core"&&parsed.core==="thrusters")return true;return stats?.slot?stats.slot==="thrusters":startsWithAny(module.Item,PREFIX.thrusters)}function isFrameShiftDrive(module,stats){const parsed=parseSlotName(module.Slot);if(parsed?.kind==="core"&&parsed.core==="frameShiftDrive")return true;return stats?.slot?stats.slot==="frameShiftDrive":startsWithAny(module.Item,PREFIX.frameShiftDrive)}function isEnabled(module){return module.On!==false}function priorityOf(module){return(module.Priority??0)+1}function effectiveStat(module,field,stats){const stated=statedModifier(module,field);if(stated!==void 0)return stated;const base=stats?.[field];return typeof base==="number"?base:void 0}function statedModifier(module,field){for(const label of labelsForField(field)){if(capabilityValueForLabel(label)!==null)continue;const modified=getLoadoutModifier(module,label);if(modified!==null)return modified/scaleForLabel(label)}return void 0}function effectiveCapability(module,field,stats){for(const label of labelsForField(field)){if(capabilityValueForLabel(label)===null)continue;if(module.Engineering?.Modifiers?.some(modifier=>modifier.Label.toLowerCase()===label.toLowerCase())){return true}}const base=stats[field];return typeof base==="boolean"?base:void 0}function effectiveDamageDistribution(module,stats){const fromEffect=module.Engineering?.ExperimentalEffect?getExperimentalEffect(module.Engineering.ExperimentalEffect)?.damageDistribution:void 0;const distribution={...fromEffect??stats.damageDistribution};let resolved=fromEffect!==void 0||stats.damageDistribution!==void 0;const seen=/* @__PURE__ */new Set;for(const modifier of module.Engineering?.Modifiers??[]){const type=damageTypeForLabel(modifier.Label);if(type===null||seen.has(type))continue;seen.add(type);if(modifier.Value===void 0)continue;distribution[type]=modifier.Value/scaleForLabel(modifier.Label);resolved=true}return resolved?distribution:void 0}function convertsDamage(module){if(module.Engineering?.ExperimentalEffect&&getExperimentalEffect(module.Engineering.ExperimentalEffect)?.damageDistribution){return true}return(module.Engineering?.Modifiers??[]).some(modifier=>damageTypeForLabel(modifier.Label)!==null)}function modifierRatio(module,stats,field){const base=stats?.[field];if(typeof base!=="number"||base===0)return 1;const effective=effectiveStat(module,field,stats);return effective===void 0?1:effective/base}function relatedStat(module,stats,field,ratio){const stated=statedModifier(module,field);if(stated!==void 0)return stated;const base=stats?.[field];return typeof base==="number"?base*ratio:void 0}function effectiveModule(module,stats){if(!stats||!module.Engineering)return stats;const merged={...stats};const fields=new Set(Object.keys(stats));for(const modifier of module.Engineering.Modifiers??[]){const field=fieldForLabel(modifier.Label,stats);if(field)fields.add(field)}for(const key of fields){const capability=effectiveCapability(module,key,stats);if(capability!==void 0){merged[key]=capability;continue}const value=effectiveStat(module,key,stats);if(value!==void 0)merged[key]=value}if(stats.engineeringGroup==="thrusters"){const massRatio=modifierRatio(module,stats,"optMass");const minMass=relatedStat(module,stats,"minMass",massRatio);const maxMass=relatedStat(module,stats,"maxMass",massRatio);if(minMass!==void 0)merged.minMass=minMass;if(maxMass!==void 0)merged.maxMass=maxMass}if(stats.engineeringGroup==="thrusters"||stats.engineeringGroup==="shieldGenerators"){const performanceRatio=modifierRatio(module,stats,"optMultiplier");const minMultiplier=relatedStat(module,stats,"minMultiplier",performanceRatio);const maxMultiplier=relatedStat(module,stats,"maxMultiplier",performanceRatio);if(minMultiplier!==void 0)merged.minMultiplier=minMultiplier;if(maxMultiplier!==void 0)merged.maxMultiplier=maxMultiplier;if(stats.engineeringGroup==="thrusters"){for(const field of["minSpeedMultiplier","optSpeedMultiplier","maxSpeedMultiplier","minRotationMultiplier","optRotationMultiplier","maxRotationMultiplier"]){const value=stats[field];if(value!==void 0)merged[field]=value*performanceRatio}}}const damageDistribution=effectiveDamageDistribution(module,stats);if(damageDistribution)merged.damageDistribution=damageDistribution;if(stats.category==="hardpoint")normalizeEffectiveWeapon(module,merged);if(convertsDamage(module)){delete merged.damageComponents}else if(stats.damageComponents){merged.damageComponents=scaleDamageComponents(stats.damageComponents,stats.damage,typeof merged.damage==="number"?merged.damage:void 0)}return merged}function powerConsumerFor(module,stats){const draw=effectiveStat(module,"powerDraw",stats);if(draw===void 0||draw===0)return null;const mounted=stats?.category==="hardpoint"||stats?.category==="utility";return{draw:draw,priority:priorityOf(module),enabled:isEnabled(module),deployedOnly:mounted&&stats?.alwaysPowered!==true,label:module.Slot,symbol:module.Item}}function powerAvailable(modules,statsFor){for(const module of modules){const stats=statsFor(module);if(!isPowerPlant(module,stats))continue;if(!isEnabled(module))return 0;return effectiveStat(module,"powerCapacity",stats)??0}return 0}function metricIssue(field,reason,module){const defaultSlot=field==="powerCapacity"?"PowerPlant":field==="thrusters"?"MainEngines":void 0;const slot=module?.Slot??defaultSlot;const symbol=module?.Item;const params={field:field,reason:reason,...slot===void 0?{}:{slot:slot},...symbol===void 0?{}:{symbol:symbol}};let message;if(reason==="missing"){message=field==="powerCapacity"?"PowerPlant: no power plant is fitted":field==="thrusters"?"MainEngines: no thrusters are fitted":"no shield generator is fitted"}else if(reason==="unresolved"){const unavailable=field==="thrusters"?"thruster stats":field==="shieldGenerator"?"shield-generator stats":field==="powerCapacity"?"power capacity":field;message=`${truncate(slot??field)}: ${unavailable} unavailable for ${truncate(symbol??field)}`}else if(reason==="disabled"){message=`${truncate(slot??field)}: ${truncate(symbol??field)} is switched off`}else if(reason==="invalid"){message=`${truncate(slot??field)}: ${truncate(symbol??field)} has invalid ${field}`}else{message=`${truncate(slot??field)}: ${truncate(symbol??field)} is not powered with hardpoints retracted`}return{field:field,reason:reason,...slot===void 0?{}:{slot:slot},...symbol===void 0?{}:{symbol:symbol},message:message,params:params}}function powerPlantIssueFor(modules,statsFor){for(const module of modules){const stats=statsFor(module);if(!isPowerPlant(module,stats))continue;if(!isEnabled(module))return metricIssue("powerCapacity","disabled",module);const capacity=effectiveStat(module,"powerCapacity",stats);if(capacity===void 0)return metricIssue("powerCapacity","unresolved",module);return!Number.isFinite(capacity)||capacity<=0?metricIssue("powerCapacity","invalid",module):null}return metricIssue("powerCapacity","missing")}function powerDrawIssueFor(modules,statsFor){for(const module of modules){const consumer=powerConsumerFor(module,statsFor(module));if(consumer&&(!Number.isFinite(consumer.draw)||consumer.draw<0)){return metricIssue("powerDraw","invalid",module)}}return null}function poweredMetricBudgetFor(field,module,stats,modules,getBudget,statsFor){if(!isEnabled(module))return incompleteResult([metricIssue(field,"disabled",module)]);const plantIssue=powerPlantIssueFor(modules,statsFor);if(plantIssue)return incompleteResult([plantIssue]);const drawIssue=powerDrawIssueFor(modules,statsFor);if(drawIssue)return incompleteResult([drawIssue]);const budget=getBudget();return budget.available>0&&poweredStates(module,stats,budget).retracted?completeResult(budget):incompleteResult([metricIssue(field,"shed",module)])}function poweredShieldGeneratorResultFor(modules,getBudget,statsFor){for(const module of modules){if(!startsWithAny(module.Item,PREFIX.shieldGenerator))continue;const stats=statsFor(module);const powered=poweredMetricBudgetFor("shieldGenerator",module,stats,modules,getBudget,statsFor);if(!powered.complete)return powered;return stats===null?incompleteResult([metricIssue("shieldGenerator","unresolved",module)]):completeResult({module:module,budget:powered.value})}return incompleteResult([metricIssue("shieldGenerator","missing")])}function mapResistanceFields(read){return{kineticResistance:read("kineticResistance")??0,thermalResistance:read("thermalResistance")??0,explosiveResistance:read("explosiveResistance")??0,causticResistance:read("causticResistance")??0}}function resistancesOf(module,stats){return mapResistanceFields(field=>effectiveStat(module,field,stats))}function shieldInputFor(ship,modules,budget,systemsPips,statsFor){let generator=null;const boosters=[];let reinforcement=0;for(const module of modules){if(!isEnabled(module))continue;const stats=statsFor(module);if(!(budget.available>0&&poweredStates(module,stats,budget).retracted))continue;if(!generator&&startsWithAny(module.Item,PREFIX.shieldGenerator)){const massRatio=modifierRatio(module,stats,"optMass");const strengthRatio=modifierRatio(module,stats,"optMultiplier");const optMass=effectiveStat(module,"optMass",stats);const minMass=relatedStat(module,stats,"minMass",massRatio);const maxMass=relatedStat(module,stats,"maxMass",Math.max(1,massRatio));const optMultiplier=effectiveStat(module,"optMultiplier",stats);const minMultiplier=relatedStat(module,stats,"minMultiplier",strengthRatio);const maxMultiplier=relatedStat(module,stats,"maxMultiplier",strengthRatio);generator={...optMass===void 0?{}:{optMass:optMass},...minMass===void 0?{}:{minMass:minMass},...maxMass===void 0?{}:{maxMass:maxMass},...optMultiplier===void 0?{}:{optMultiplier:optMultiplier},...minMultiplier===void 0?{}:{minMultiplier:minMultiplier},...maxMultiplier===void 0?{}:{maxMultiplier:maxMultiplier},...resistancesOf(module,stats)}}else if(startsWithAny(module.Item,PREFIX.shieldBooster)){boosters.push({shieldBoost:effectiveStat(module,"shieldBoost",stats)??0,...resistancesOf(module,stats)})}else if(startsWithAny(module.Item,PREFIX.shieldReinforcement)){reinforcement+=effectiveStat(module,"shieldAddition",stats)??0}}return{hullMass:ship.hullMass,baseShieldStrength:ship.baseShieldStrength,generator:generator,boosters:boosters,reinforcement:reinforcement,systemsPips:systemsPips}}function shieldInputResultFor(ship,modules,getBudget,systemsPips,statsFor){const fitted=poweredShieldGeneratorResultFor(modules,getBudget,statsFor);if(!fitted.complete)return fitted;const input=shieldInputFor(ship,modules,fitted.value.budget,systemsPips,statsFor);return completeResult(input)}function mobilityInputResultFor(ship,modules,getBudget,mass,enginesPips,statsFor){let thrusters=null;for(const module of modules){const stats=statsFor(module);if(!isThruster(module,stats))continue;const powered=poweredMetricBudgetFor("thrusters",module,stats,modules,getBudget,statsFor);if(!powered.complete)return powered;const effective=effectiveModule(module,stats);const minMass=effective?.minMass;const optMass=effective?.optMass;const maxMass=effective?.maxMass;const minMultiplier=effective?.minMultiplier;const optMultiplier=effective?.optMultiplier;const maxMultiplier=effective?.maxMultiplier;if(minMass===void 0||optMass===void 0||maxMass===void 0||minMultiplier===void 0||optMultiplier===void 0||maxMultiplier===void 0){return incompleteResult([metricIssue("thrusters","unresolved",module)])}thrusters={minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:minMultiplier,optMultiplier:optMultiplier,maxMultiplier:maxMultiplier,...effective?.optSpeedMultiplier===void 0?{}:{speedCurve:{minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:effective.minSpeedMultiplier??minMultiplier,optMultiplier:effective.optSpeedMultiplier,maxMultiplier:effective.maxSpeedMultiplier??maxMultiplier}},...effective?.optRotationMultiplier===void 0?{}:{rotationCurve:{minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:effective.minRotationMultiplier??minMultiplier,optMultiplier:effective.optRotationMultiplier,maxMultiplier:effective.maxRotationMultiplier??maxMultiplier}}};break}if(!thrusters)return incompleteResult([metricIssue("thrusters","missing")]);return completeResult({minimumSpeed:ship.minimumSpeed,maximumSpeed:ship.maximumSpeed,boost:ship.boost,minPitch:ship.minPitch,pitch:ship.pitch,minRoll:ship.minRoll,roll:ship.roll,minYaw:ship.minYaw,yaw:ship.yaw,mass:typeof mass==="function"?mass():mass,thrusters:thrusters,enginesPips:enginesPips})}function shieldRecoveryInputResultFor(ship,modules,getBudget,systemsPips,statsFor){const generator=poweredShieldGeneratorResultFor(modules,getBudget,statsFor);if(!generator.complete)return generator;const{module:generatorModule,budget:budget}=generator.value;let distributor=null;for(const module of modules){const stats=statsFor(module);if(isPowerDistributor(module,stats)&&isEnabled(module)&&budget.available>0&&poweredStates(module,stats,budget).retracted)distributor=module}const generatorStats=statsFor(generatorModule);const distributorStats=distributor?statsFor(distributor):null;const strength=shieldMetrics(shieldInputFor(ship,modules,budget,0,statsFor)).strength;return completeResult({strength:strength,regenRate:effectiveStat(generatorModule,"shieldRegenRate",generatorStats)??0,brokenRegenRate:effectiveStat(generatorModule,"shieldBrokenRegenRate",generatorStats)??0,distributorDraw:effectiveStat(generatorModule,"distributorDraw",generatorStats)??.6,systemsCapacity:distributor?effectiveStat(distributor,"systemsCapacity",distributorStats)??0:0,systemsRecharge:distributor?effectiveStat(distributor,"systemsRecharge",distributorStats)??0:0,systemsPips:systemsPips})}function weaponsCapacitorInputFor(modules,weaponsPips,budget,statsFor){let weaponsCapacity=0;let weaponsRecharge=0;let sustainedEnergyPerSecond=0;for(const module of modules){if(!isEnabled(module))continue;const stats=statsFor(module);if(!poweredStates(module,stats,budget).deployed)continue;if(isPowerDistributor(module,stats)){weaponsCapacity=effectiveStat(module,"weaponsCapacity",stats)??0;weaponsRecharge=effectiveStat(module,"weaponsRecharge",stats)??0}const weapon=weaponStatsFor(module,stats);if(weapon){sustainedEnergyPerSecond+=weaponMetrics(weapon).sustainedEnergyPerSecond}}return{weaponsCapacity:weaponsCapacity,weaponsRecharge:weaponsRecharge,sustainedEnergyPerSecond:sustainedEnergyPerSecond,weaponsPips:weaponsPips}}function distributorInputFor(modules,pips,budget,statsFor){for(const module of modules){if(!isEnabled(module))continue;const stats=statsFor(module);if(!isPowerDistributor(module,stats))continue;if(!poweredStates(module,stats,budget).retracted)return null;const systemsCapacity=effectiveStat(module,"systemsCapacity",stats);const systemsRecharge=effectiveStat(module,"systemsRecharge",stats);const enginesCapacity=effectiveStat(module,"enginesCapacity",stats);const enginesRecharge=effectiveStat(module,"enginesRecharge",stats);const weaponsCapacity=effectiveStat(module,"weaponsCapacity",stats);const weaponsRecharge=effectiveStat(module,"weaponsRecharge",stats);if(systemsCapacity===void 0||systemsRecharge===void 0||enginesCapacity===void 0||enginesRecharge===void 0||weaponsCapacity===void 0||weaponsRecharge===void 0){return null}return{systemsCapacity:systemsCapacity,systemsRecharge:systemsRecharge,enginesCapacity:enginesCapacity,enginesRecharge:enginesRecharge,weaponsCapacity:weaponsCapacity,weaponsRecharge:weaponsRecharge,...pips}}return null}function heatInputFor(ship,modules,budget,statsFor){let heatEfficiency;let thrusterHeatRate=0;let deployedThrusterHeatRate=0;let fsdHeatRate=0;let weaponsCapacity=0;const weapons=[];for(const module of modules){const stats=statsFor(module);if(isPowerPlant(module,stats)){if(!isEnabled(module))return null;heatEfficiency=effectiveStat(module,"heatEfficiency",stats);continue}if(!isEnabled(module))continue;const running=poweredStates(module,stats,budget);if(isThruster(module,stats)){const heat=effectiveStat(module,"engineHeatRate",stats)??0;if(running.retracted)thrusterHeatRate+=heat;if(running.deployed)deployedThrusterHeatRate+=heat}else if(isFrameShiftDrive(module,stats)){if(running.retracted)fsdHeatRate+=effectiveStat(module,"fsdHeatRate",stats)??0}else if(isPowerDistributor(module,stats)){if(running.deployed){weaponsCapacity=effectiveStat(module,"weaponsCapacity",stats)??0}}const weapon=weaponStatsFor(module,stats);if(!running.deployed)continue;if(!weapon)continue;weapons.push({heatPerSecond:weaponMetrics(weapon).sustainedHeatPerSecond,distributorDraw:weapon.distributorDraw??0})}if(heatEfficiency===void 0)return null;return{heatCapacity:ship.heatCapacity,heatDissipation:ship.heatDissipation,heatEfficiency:heatEfficiency,retractedPowerDraw:poweredDraw(budget,"retracted"),deployedPowerDraw:poweredDraw(budget,"deployed"),thrusterHeatRate:thrusterHeatRate,deployedThrusterHeatRate:deployedThrusterHeatRate,fsdHeatRate:fsdHeatRate,weaponsCapacity:weaponsCapacity,weapons:weapons}}function poweredDraw(budget,state){const powered=state==="retracted"?"poweredRetracted":"poweredDeployed";return budget.bands.reduce((total,band)=>band[powered]?total+band[state]:total,0)}function poweredStates(module,stats,budget){const draw=effectiveStat(module,"powerDraw",stats);if(draw===void 0||draw===0)return{retracted:true,deployed:true};const band=budget.bands[Math.min(budget.bands.length,Math.max(1,priorityOf(module)))-1];if(!band)return{retracted:true,deployed:true};return{retracted:band.poweredRetracted,deployed:band.poweredDeployed}}function cellBankInputsFor(modules,budget,statsFor){const banks=[];for(const module of modules){if(!startsWithAny(module.Item,PREFIX.shieldCellBank))continue;const stats=statsFor(module);const effective=effectiveModule(module,stats);const ammunition=effective?ammunitionCapacity(effective):null;banks.push({slot:module.Slot,symbol:module.Item,reinforcementRate:effective?.shieldBankReinforcement??0,cells:ammunition?.total??0,spinUp:effective?.shieldBankSpinUp??0,duration:effective?.shieldBankDuration??0,heat:effective?.shieldBankHeat??0,powered:budget.available>0&&isEnabled(module)&&poweredStates(module,stats,budget).deployed})}return banks}function stockBulkhead(ship){const variants=getBulkheadsForShip(ship.name,CORE_MODULES);return variants.find(v=>v.symbol.toLowerCase().endsWith("_default"))??variants.find(v=>v.mass===0)??variants[0]??null}function armourInputFor(ship,modules,statsFor){const reinforcements=[];const moduleReinforcements=[];let bulkhead=null;for(const module of modules){if(!isEnabled(module))continue;const stats=statsFor(module);if(module.Slot.toLowerCase()==="armour"){bulkhead={hullBoost:effectiveStat(module,"hullBoost",stats)??0,...resistancesOf(module,stats)}}else if(startsWithAny(module.Item,PREFIX.hullReinforcement)){const boost=getLoadoutModifier(module,"DefenceModifierHealthMultiplier");reinforcements.push({hullReinforcement:effectiveStat(module,"hullReinforcement",stats)??0,hullBoost:boost===null?0:boost/scaleForLabel("DefenceModifierHealthMultiplier"),...resistancesOf(module,stats)})}else if(startsWithAny(module.Item,PREFIX.moduleReinforcement)){moduleReinforcements.push({moduleProtection:effectiveStat(module,"moduleProtection",stats)??0,integrity:effectiveStat(module,"integrity",stats)??0})}}if(!bulkhead){const stock=stockBulkhead(ship);bulkhead=stock?{hullBoost:stock.hullBoost??0,...mapResistanceFields(field=>stock[field])}:null}return{baseArmour:ship.baseArmour,bulkhead:bulkhead,reinforcements:reinforcements,moduleReinforcements:moduleReinforcements}}var WEAPON_FIELDS=["damage","roundsPerShot","rateOfFire","burstInterval","burstRounds","burstRateOfFire","chargeTime","clipSize","ammoMaximum","reloadTime","distributorDraw","thermalLoad","powerDraw","maximumRange","falloffRange","armourPiercing"];function weaponStatsFor(module,stats){if(!stats||stats.category!=="hardpoint")return null;const weapon={};for(const field of WEAPON_FIELDS){const value=effectiveStat(module,field,stats);if(value!==void 0)weapon[field]=value}normalizeEffectiveWeapon(module,weapon);const damageDistribution=effectiveDamageDistribution(module,stats);if(damageDistribution)weapon.damageDistribution=damageDistribution;if(stats.damageComponents&&!convertsDamage(module)){weapon.damageComponents=scaleDamageComponents(stats.damageComponents,stats.damage,typeof weapon.damage==="number"?weapon.damage:void 0)}if(stats.projectileRange)weapon.projectileRange={...stats.projectileRange};return weapon}function burstAdjustedRateOfFire(module,weapon){if(getLoadoutModifier(module,"RateOfFire")!==null)return void 0;const touched=["BurstSize","BurstRateOfFire","BurstInterval"].some(label=>getLoadoutModifier(module,label)!==null);if(!touched)return void 0;return combinedRateOfFire(weapon)}function normalizeEffectiveWeapon(module,weapon){const rate=burstAdjustedRateOfFire(module,weapon);if(rate!==void 0)weapon.rateOfFire=rate;const statedDamagePerSecond=getLoadoutModifier(module,"DamagePerSecond");const firingFactor=Number(weapon.roundsPerShot??1)*Number(weapon.rateOfFire??1);if(statedDamagePerSecond!==null&&firingFactor>0){weapon.damage=statedDamagePerSecond/firingFactor}const{maximumRange:maximumRange,falloffRange:falloffRange}=weapon;if(maximumRange!==void 0&&falloffRange!==void 0&&falloffRange>maximumRange){weapon.falloffRange=maximumRange}}var MILITARY_PREFIXES=["int_hullreinforcement","int_metaalloyhullreinforcement","int_modulereinforcement","int_shieldcellbank","int_guardianhullreinforcement","int_guardianmodulereinforcement","int_guardianshieldreinforcement"];var MINING_PREFIXES=["hpt_mininglaser","hpt_mining_abrblstr","hpt_mining_seismchrgwarhd","hpt_mining_subsurfdispmisle","hpt_human_extraction","hpt_miningtoolv2"];var CARGO_PREFIXES=["int_cargorack","int_largecargorack","int_corrosionproofcargorack","int_fueltank"];var RESTRICTED_SLOT_PREFIXES={mining:MINING_PREFIXES,military:MILITARY_PREFIXES,cargo:CARGO_PREFIXES,limpetController:["int_dronecontrol","int_multidronecontrol"],vesselHangar:["int_fighterbay"],passenger:["int_passengercabin","int_mkii_passengercabin"],planetaryApproachSuite:["int_planetapproachsuite"]};var problem=(constraint,message,params)=>({constraint:constraint,message:message,...params===void 0?{}:{params:params}});function restrictionProblem(slot,symbol){const restriction=slot.restriction;if(!restriction)return null;if(RESTRICTED_SLOT_PREFIXES[restriction].some(prefix=>symbol.startsWith(prefix))){return null}return problem("restrictedMount",`slot only takes ${SLOT_RESTRICTION_LABELS[restriction]}`,{restriction:restriction})}function moduleSlotProblem(slot,module){const required=module.restrictedToSlot;if(!required||slot.restriction===required)return null;return problem("restrictedMount",`module only fits a mount that takes ${SLOT_RESTRICTION_LABELS[required]}`,{restriction:required})}function moduleFitProblem(shipSymbol,slot,module){if(slot.kind==="cargoHatch"){return problem("immutableSlot","the cargoHatch slot cannot be changed")}if(slot.kind==="armour"){const hull=getShipBySymbol(shipSymbol);if(module.slot!=="armour"||module.ship===void 0){return problem("armourRequired","not a ship armour module")}if(!hull||module.ship.toLowerCase()!==hull.name.toLowerCase()){const armourHull=getShipByName(module.ship);return problem("wrongHullArmour",`armour belongs to ${truncate(module.ship)}, not ${truncate(hull?.name??shipSymbol)}`,{armourShipName:module.ship,...armourHull===null?{}:{armourShipSymbol:armourHull.symbol},shipSymbol:shipSymbol,...hull===null?{}:{shipName:hull.name}})}return null}const restricted=module.restrictedToShips;if(restricted&&!restricted.some(symbol2=>symbol2.toLowerCase()===shipSymbol.toLowerCase())){const allowedShipNames=restricted.map(symbol2=>{const hull=getShipBySymbol(symbol2);return hull?.name??symbol2});const labels=restricted.map((symbol2,index)=>{const name=allowedShipNames[index];return name===symbol2?symbol2:`${name} (${symbol2})`});return problem("restrictedHull",`module is restricted to ${truncate(labels.join(", "))}`,{allowedShipNames:allowedShipNames,allowedShipSymbols:[...restricted],shipSymbol:shipSymbol})}const wrongMount=moduleSlotProblem(slot,module);if(wrongMount)return wrongMount;const symbol=module.symbol.toLowerCase();const moduleSlot=module.slot;switch(slot.kind){case"core":if(moduleSlot!==slot.core){return problem("wrongCoreType",`not a ${slot.core} module`,{requiredCore:slot.core,moduleSlot:moduleSlot??"none"})}break;case"hardpoint":{if(module.category!=="hardpoint"){return problem("hardpointRequired","not a hardpoint weapon")}const restricted2=restrictionProblem(slot,symbol);if(restricted2)return restricted2;break}case"utility":if(module.category!=="utility"){return problem("utilityRequired","not a utility module")}return null;case"optional":{const isFuelTank=moduleSlot==="fuelTank";if(module.category!=="internal"&&!isFuelTank){return problem("optionalInternalRequired","not an optional-internal module")}if(moduleSlot&&!isFuelTank){return problem("coreModuleInOptionalSlot","a core module only fits its core slot")}const restricted2=restrictionProblem(slot,symbol);if(restricted2)return restricted2;break}}return module.class>slot.size?problem("oversized",`module size ${truncate(module.class)} exceeds slot size ${slot.size}`,{moduleClass:module.class,slotSize:slot.size}):null}function moduleFitError(shipSymbol,slot,module){return moduleFitProblem(shipSymbol,slot,module)?.message??null}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{event:"Loadout",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}function captureLoadoutEvent(event){const modules=event.Modules;const shipName=event.ShipName;const shipIdent=event.ShipIdent;const hullValue=event.HullValue;const modulesValue=event.ModulesValue;const rebuy=event.Rebuy;const unladenMass=event.UnladenMass;const cargoCapacity=event.CargoCapacity;const fuelCapacity=event.FuelCapacity;return{Ship:event.Ship,Modules:Array.isArray(modules)?captureEach(modules,captureModule):modules,...shipName===void 0?{}:{ShipName:shipName},...shipIdent===void 0?{}:{ShipIdent:shipIdent},...hullValue===void 0?{}:{HullValue:hullValue},...modulesValue===void 0?{}:{ModulesValue:modulesValue},...rebuy===void 0?{}:{Rebuy:rebuy},...unladenMass===void 0?{}:{UnladenMass:unladenMass},...cargoCapacity===void 0?{}:{CargoCapacity:cargoCapacity},...fuelCapacity===void 0?{}:{FuelCapacity:{...fuelCapacity}}}}function captureEach(values,capture){const captured=[];const{length:length}=values;for(let index=0;index<length;index++)captured.push(capture(values[index]));return captured}function captureModule(module){if(module===null||typeof module!=="object")return module;const on=module.On;const priority=module.Priority;const health=module.Health;const value=module.Value;const engineering=module.Engineering;return{Slot:module.Slot,Item:module.Item,...on===void 0?{}:{On:on},...priority===void 0?{}:{Priority:priority},...health===void 0?{}:{Health:health},...value===void 0?{}:{Value:value},...engineering===void 0?{}:{Engineering:captureEngineering(engineering)}}}function captureEngineering(engineering){if(engineering===null||typeof engineering!=="object")return engineering;const experimental=engineering.ExperimentalEffect;const experimentalLocalised=engineering.ExperimentalEffect_Localised;const modifiers=engineering.Modifiers;return{BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:engineering.Quality,...experimental===void 0?{}:{ExperimentalEffect:experimental},...experimentalLocalised===void 0?{}:{ExperimentalEffect_Localised:experimentalLocalised},...modifiers===void 0?{}:{Modifiers:Array.isArray(modifiers)?captureEach(modifiers,modifier=>modifier!==null&&typeof modifier==="object"?{...modifier}:modifier):modifiers}}}function hullLayout(shipSymbol){const slots=getShipSlots(shipSymbol);return slots?enumerateSlots(slots):[]}function fixedMountRejects(shipSymbol,layout,slot,stats){const mount=layout.find(candidate=>candidate.key.toLowerCase()===slot.toLowerCase());return mount!==void 0&&moduleFitProblem(shipSymbol,mount,stats)!==null}function normalizeLoadoutEvent(rawEvent){const event=captureLoadoutEvent(rawEvent);requireString(event.Ship,"ShipLoadout.fromLoadout: event.Ship");if(!Array.isArray(event.Modules)){throw new TypeError(`ShipLoadout.fromLoadout: event.Modules must be an array, received ${describeValue(event.Modules)}`)}const modules=/* @__PURE__ */new Map;const slots=/* @__PURE__ */new Set;for(const module of event.Modules){if(module===null||typeof module!=="object"){throw new TypeError(`ShipLoadout.fromLoadout: event.Modules[] must hold module objects, received ${describeValue(module)}`)}requireString(module.Slot,"ShipLoadout.fromLoadout: module.Slot");requireString(module.Item,"ShipLoadout.fromLoadout: module.Item");if(module.Engineering!==void 0){if(module.Engineering===null||typeof module.Engineering!=="object"){throw new TypeError(`ShipLoadout.fromLoadout: module.Engineering must be an object, received ${describeValue(module.Engineering)}`)}requireStringIfPresent(module.Engineering.BlueprintName,"ShipLoadout.fromLoadout: module.Engineering.BlueprintName");requireStringIfPresent(module.Engineering.ExperimentalEffect,"ShipLoadout.fromLoadout: module.Engineering.ExperimentalEffect");if(module.Engineering.Modifiers!==void 0&&!Array.isArray(module.Engineering.Modifiers)){throw new TypeError(`ShipLoadout.fromLoadout: module.Engineering.Modifiers must be an array, received ${describeValue(module.Engineering.Modifiers)}`)}for(const[index,modifier]of(module.Engineering.Modifiers??[]).entries()){if(modifier===null||typeof modifier!=="object"){throw new TypeError(`ShipLoadout.fromLoadout: module.Engineering.Modifiers[${index}] must be an object, received ${describeValue(modifier)}`)}requireString(modifier.Label,`ShipLoadout.fromLoadout: module.Engineering.Modifiers[${index}].Label`)}}const normalizedSlot=module.Slot.toLowerCase();if(slots.has(normalizedSlot)){throw new TypeError(`ShipLoadout.fromLoadout: duplicate slot "${truncate(module.Slot)}"`)}slots.add(normalizedSlot);modules.set(module.Slot,cloneLoadoutModule(module))}const top={};if(event.ShipName!==void 0)top.ShipName=event.ShipName;if(event.ShipIdent!==void 0)top.ShipIdent=event.ShipIdent;if(event.HullValue!==void 0)top.HullValue=event.HullValue;if(event.ModulesValue!==void 0)top.ModulesValue=event.ModulesValue;if(event.Rebuy!==void 0)top.Rebuy=event.Rebuy;if(event.UnladenMass!==void 0)top.UnladenMass=event.UnladenMass;if(event.CargoCapacity!==void 0)top.CargoCapacity=event.CargoCapacity;if(event.FuelCapacity!==void 0)top.FuelCapacity={...event.FuelCapacity};let invalidatesAggregates=false;const outcomes=[];const defaults=getDefaultLoadout(event.Ship)?.modules??[];let layout;for(const[slot,module]of modules){if(isNonOutfittingSlot(slot)||isBuiltInHullModule(module))continue;const stats=builtInModuleBySymbol(module.Item,"ShipLoadout.fromLoadout: module.Item");const slotKind=parseSlotName(slot)?.kind;const fallback=slotKind==="core"||slotKind==="armour"||slotKind==="cargoHatch"?defaults.find(candidate=>candidate.slot.toLowerCase()===slot.toLowerCase()):void 0;const rejected=fallback!==void 0&&(stats===null||slotKind==="cargoHatch"||fixedMountRejects(event.Ship,layout??=hullLayout(event.Ship),slot,stats));if(stats!==null&&!rejected)continue;if(fallback){modules.set(slot,{Slot:slot,Item:fallback.symbol,...module.On===void 0?{}:{On:module.On},...module.Priority===void 0?{}:{Priority:module.Priority},...module.Health===void 0?{}:{Health:module.Health}});outcomes.push({action:"defaulted",slot:slot,sourceSymbol:module.Item,replacementSymbol:fallback.symbol})}else{modules.delete(slot);outcomes.push({action:"emptied",slot:slot,sourceSymbol:module.Item})}invalidatesAggregates=true}for(const fallback of defaults){const slotKind=parseSlotName(fallback.slot)?.kind;if(slotKind!=="core"&&slotKind!=="armour"&&slotKind!=="cargoHatch"||matchingKeyIn(modules,fallback.slot)!==null){continue}const slot=ownKeyIn(modules,fallback.slot);modules.set(slot,{Slot:slot,Item:fallback.symbol});outcomes.push({action:"defaulted",slot:slot,sourceSymbol:null,replacementSymbol:fallback.symbol});if(slotKind==="core")invalidatesAggregates=true}if(invalidatesAggregates){delete top.ModulesValue;delete top.Rebuy;delete top.UnladenMass;delete top.CargoCapacity;delete top.FuelCapacity}const moduleStats=/* @__PURE__ */new Map;const primitiveModifiers=/* @__PURE__ */new Map;for(const module of modules.values()){const engineering=module.Engineering;const variant=identifyPreEngineeredVariant(module);const catalogueVariantStats=variant?getPreEngineeredStats(variant):null;let variantStats=catalogueVariantStats;const retainsBakedExperimental=variant?.experimental!==void 0&&typeof engineering?.ExperimentalEffect==="string"&&variant.experimental.trim().toLowerCase()===engineering.ExperimentalEffect.trim().toLowerCase();if(variant&&catalogueVariantStats&&!catalogueVariantStats.engineeringLocked&&!retainsBakedExperimental){const{experimental:originalExperimental,...withoutExperimental}=variant;const currentExperimental=engineering?.ExperimentalEffect;const currentVariant=typeof currentExperimental==="string"?{...withoutExperimental,experimental:currentExperimental}:withoutExperimental;variantStats=getPreEngineeredStats(withoutExperimental);primitiveModifiers.set(module.Slot,[...engineering?.Modifiers??[],...getPreEngineeredModifiers(currentVariant)])}if(variantStats)moduleStats.set(module.Slot,cloneModuleStats(variantStats));const guardianFinal=typeof engineering?.BlueprintName==="string"&&isFinalGuardianWeaponEngineering(module.Item,engineering.BlueprintName);if(variantStats?.engineeringLocked||typeof engineering?.BlueprintName!=="string"||!guardianFinal){continue}const normalizedBlueprint=normalizeKey(engineering.BlueprintName,"ShipLoadout.fromLoadout: module.Engineering.BlueprintName");const normalizedExperimental=normalizeKey(engineering.ExperimentalEffect,"ShipLoadout.fromLoadout: module.Engineering.ExperimentalEffect");const variants=getPreEngineeredVariants(module.Item);const exact=variants.find(candidate=>candidate.engineeringLocked===true&&candidate.blueprint.toLowerCase()===normalizedBlueprint&&candidate.grade===engineering.Level&&candidate.experimental?.toLowerCase()===normalizedExperimental);const guardianBase=variants.find(candidate=>candidate.engineeringLocked===true&&candidate.blueprint.toLowerCase()===normalizedBlueprint&&candidate.grade===engineering.Level&&candidate.experimental===void 0);const stats=exact?getPreEngineeredStats(exact):guardianBase&&engineering.ExperimentalEffect!==void 0?getPreEngineeredStats({...guardianBase,experimental:engineering.ExperimentalEffect}):builtInModuleBySymbol(module.Item,"ShipLoadout.fromLoadout: module.Item");if(stats){moduleStats.set(module.Slot,cloneModuleStats({...stats,engineeringLocked:true}))}}return{shipSymbol:event.Ship,modules:modules,moduleStats:moduleStats,primitiveModifiers:primitiveModifiers,top:top,sourcePurchase:sourcePurchaseFromLoadout(event),outcomes:deepFreeze(outcomes)}}var SLOT_KEY="ShipLoadout: slotKey";var requireLoadOptions=(scope,options)=>{for(const field of["fuel","cargo"]){const value=options[field];if(value!==void 0&&(!Number.isFinite(value)||value<0)){throw new RangeError(`${scope}: ${field} must be a finite non-negative number`)}}};var requireEnginesPips=(scope,enginesPips)=>{if(!Number.isFinite(enginesPips)||enginesPips<0||enginesPips>4){throw new RangeError(`${scope}: enginesPips must be a finite number from 0 to 4`)}return enginesPips};var requireSystemsPips=(scope,systemsPips)=>{if(!Number.isFinite(systemsPips)||systemsPips<0||systemsPips>4){throw new RangeError(`${scope}: systemsPips must be a finite number from 0 to 4`)}return systemsPips};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});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}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){return new _ShipLoadout(ship,imported.shipSymbol,imported.modules,imported.top,imported.sourcePurchase,imported.moduleStats,imported.primitiveModifiers,imported.outcomes)}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}get validation(){const slots=this.#layout();const byKey=new Map(slots.map(slot=>[slot.key.toLowerCase(),slot]));const modules=[...this.#modules.values()].map(module=>{const stats=this.#statsFor(module);const slot=byKey.get(module.Slot.toLowerCase());const builtIn=stats===null&&isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module);const fitProblem=stats&&slot&&!builtIn?moduleFitProblem(this.#shipSymbol,slot,stats):null;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}}});return validateLoadout({shipSymbol:this.#shipSymbol,slots:slots,modules:modules})}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:identifyPreEngineeredVariant(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(fitted.Slot.toLowerCase()===slot.key.toLowerCase())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=>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=requested.toLowerCase();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&¤tStats!==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=>module.slot.toLowerCase()===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 problem2=moduleFitProblem(this.#shipSymbol,slot,module);if(problem2){if(problem2.constraint==="immutableSlot"){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem2.message}`,"immutableSlot",{slot:slot.key})}throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem2.message}`,"incompatibleModule",{...problem2.params,slot:slot.key,symbol:module.symbol,constraint:problem2.constraint},problem2.constraint)}if(module.exclusionGroup!==void 0){const conflict=[...this.#modules.values()].find(fitted=>fitted.Slot.toLowerCase()!==slot.key.toLowerCase()&&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=requireString(slotKey,SLOT_KEY).toLowerCase();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=>candidate.key.toLowerCase()===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,fdname,options){requireString(fdname,"ShipLoadout.applyBlueprint: fdname");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.experimental??void 0;requireStringIfPresent(wantedExperimental,"ShipLoadout.applyBlueprint: options.experimental");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,fdname);const named=recipe===fdname?`"${truncate(fdname)}"`:`"${truncate(fdname)}" (${truncate(recipe)} on this module)`;const written=fdname.trim().toLowerCase();const resolved=recipe.trim().toLowerCase();if(getPreEngineeredVariants(module.Item).some(variant=>variant.acquisition==="eventReward"&&(variant.blueprint.toLowerCase()===written||variant.blueprint.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,fdname)){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:fdname,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",experimental:previous})}const variant=identifyPreEngineeredVariant(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?.experimental!==void 0&&variant.experimental.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{experimental:originalEffect,...withoutEffect}=variant;const adjusted=wanted===null?withoutEffect:{...withoutEffect,experimental: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?{}:{experimental:wanted}})}return deepFreeze({kind:"updated",previousExperimental:previous,experimental: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){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=identifyPreEngineeredVariant(module);const restoresBakedEffect=variant?.experimental!==void 0&&variant.experimental.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{experimental:originalEffect,...withoutEffect}=variant;const adjusted=experimental===null?withoutEffect:{...withoutEffect,experimental: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?{}:{experimental: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.blueprint,"ShipLoadout.setPreEngineeredVariant: variant.blueprint");requireString(variant.acquisition,"ShipLoadout.setPreEngineeredVariant: variant.acquisition");requireStringIfPresent(variant.experimental,"ShipLoadout.setPreEngineeredVariant: variant.experimental");const known=getPreEngineeredVariants(variant.symbol).find(candidate=>candidate.blueprint.toLowerCase()===variant.blueprint.toLowerCase()&&candidate.grade===variant.grade&&(candidate.experimental?.toLowerCase()??"")===(variant.experimental?.toLowerCase()??"")&&candidate.acquisition===variant.acquisition);if(!known){throw new RangeError(`ShipLoadout.setPreEngineeredVariant: no catalogued variant "${truncate(variant.blueprint)}" 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.blueprint)}" for module "${truncate(variant.symbol)}"; missing base stats for ${unresolved.join(", ")}`)}this.setModule(slotKey,stats);const module=this.#fittedModuleFor(slotKey);const engineering={BlueprintName:known.blueprint,Level:known.grade,Quality:1,...known.experimental===void 0?{}:{ExperimentalEffect:known.experimental},...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)}get frameShiftDrive(){const drive=this.#resolveDrive();if(drive===null)throw new TypeError("ShipLoadout: build has no frame shift drive");return drive}#maxJumpFuel(fsd){return Math.min(this.fuelCapacity.main,fsd.maxFuel)}frameShiftDriveMassFactor(options={}){requireLoadOptions("ShipLoadout.frameShiftDriveMassFactor",options);const fuel=options.fuel??this.fuelCapacity.main;return frameShiftDriveMassFactor(this.#requireMass(options.cargo??0),fuel,this.frameShiftDrive)}maxJumpRange(){const fsd=this.frameShiftDrive;return singleJumpRange(this.#requireMass(0),this.#maxJumpFuel(fsd),fsd)}jumpRange(options={}){requireLoadOptions("ShipLoadout.jumpRange",options);const fsd=this.frameShiftDrive;const fuel=options.fuel??this.fuelCapacity.main;return singleJumpRange(this.#requireMass(options.cargo??0),fuel,fsd)}ladenJumpRange(){return this.jumpRange({cargo:this.cargoCapacity})}fuelPerJump(distance,options={}){requireLoadOptions("ShipLoadout.fuelPerJump",options);const fsd=this.frameShiftDrive;const fuel=options.fuel??this.fuelCapacity.main;return fuelPerJump(distance,this.#requireMass(options.cargo??0),fuel,fsd)}totalRange(options={}){requireLoadOptions("ShipLoadout.totalRange",options);return totalRange(this.#requireMass(options.cargo??0),options.fuel??this.fuelCapacity.main,this.frameShiftDrive)}standardLoadResult(load){if(load!=="maximum"&&load!=="unladen"&&load!=="laden"){throw new RangeError("ShipLoadout.standardLoadResult: load must be 'maximum', 'unladen', or 'laden'")}const fuel=this.fuelCapacity;const cargo=load==="laden"?this.cargoCapacity:0;const mass=load==="maximum"?this.unladenMass:0;const issues=[];let drive=null;let maximumFuel=null;if(load==="maximum"){const fitted=this.#frameShiftDrive()?.module;let driveError=null;try{drive=this.#resolveDrive();maximumFuel=drive?.maxFuel??null}catch(error){if(!(error instanceof Error))throw error;driveError=error}if(maximumFuel===null){issues.push({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"}})}}if(issues.length>0){return incompleteResult(issues)}const value=Object.freeze({fuel:load==="maximum"?Math.min(fuel.main,maximumFuel):fuel.main,cargo:cargo});if(load==="maximum"){try{this.jumpRange(value)}catch(error){if(!(error instanceof RangeError))throw error;const fitted=this.#frameShiftDrive()?.module;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)}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)}}powerBudget(){const modules=[...this.#modules.values()];const consumers=[];for(const module of modules){const consumer=powerConsumerFor(module,this.#statsFor(module));if(consumer)consumers.push(consumer)}return powerBudget(powerAvailable(modules,module=>this.#statsFor(module)),consumers)}heatMetrics(){const input=heatInputFor(this.#ship,this.#modulesForEffectiveStats(),this.powerBudget(),module=>this.#statsFor(module));return input?heatMetrics(input):null}mobilityMetrics(options={}){requireEnginesPips("ShipLoadout.mobilityMetrics",options.enginesPips??4);requireLoadOptions("ShipLoadout.mobilityMetrics",options);return this.mobilityMetricsResult(options).value}mobilityMetricsResult(options={}){const enginesPips=requireEnginesPips("ShipLoadout.mobilityMetricsResult",options.enginesPips??4);requireLoadOptions("ShipLoadout.mobilityMetricsResult",options);const input=mobilityInputResultFor(this.#ship,[...this.#modules.values()],()=>this.powerBudget(),()=>{const main=options.fuel??this.#top.FuelCapacity?.Main??this.fuelCapacity.main;return this.#requireMass(options.cargo??0)+main},enginesPips,module=>this.#statsFor(module));if(!input.complete)return input;return completeResult(mobilityMetrics(input.value))}shieldMetrics(options={}){requireSystemsPips("ShipLoadout.shieldMetrics",options.systemsPips??0);return this.shieldMetricsResult(options).value}shieldMetricsResult(options={}){const systemsPips=requireSystemsPips("ShipLoadout.shieldMetricsResult",options.systemsPips??0);const input=shieldInputResultFor(this.#ship,[...this.#modules.values()],()=>this.powerBudget(),systemsPips,module=>this.#statsFor(module));if(!input.complete)return input;return completeResult(shieldMetrics(input.value))}shieldRecovery(options={}){requireSystemsPips("ShipLoadout.shieldRecovery",options.systemsPips??4);return this.shieldRecoveryResult(options).value}shieldRecoveryResult(options={}){const systemsPips=requireSystemsPips("ShipLoadout.shieldRecoveryResult",options.systemsPips??4);const input=shieldRecoveryInputResultFor(this.#ship,[...this.#modules.values()],()=>this.powerBudget(),systemsPips,module=>this.#statsFor(module));if(!input.complete)return input;return completeResult(shieldRecovery(input.value))}cellBanks(){const modules=[...this.#modules.values()];const banks=orderBySlotLayout(cellBankInputsFor(modules,this.powerBudget(),module=>this.#statsFor(module)),this.#layout(),bank=>bank.slot);return cellBankSummary(banks)}buildCost(){const hull=this.#ship.hullCost;let modules=0;let mercCoins=0;const unpriced=[];const materials=[];for(const module of this.#modules.values()){const stats=this.#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=identifyPreEngineeredVariant(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?.experimental?.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)})}armourMetrics(){return armourMetrics(armourInputFor(this.#ship,[...this.#modules.values()],module=>this.#statsFor(module)))}weaponMetrics(){const weapons=[];for(const module of this.#modules.values()){const record=this.#statsFor(module);const stats=weaponStatsFor(this.#moduleForEffectiveStats(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.#layout(),weapon=>weapon.slot);return{weapons:orderedWeapons,total:sumWeaponMetrics(orderedWeapons.filter(weapon=>weapon.enabled).map(weapon=>weapon.metrics))}}weaponsCapacitorMetrics(options={}){const weaponsPips=options.weaponsPips??4;if(!Number.isFinite(weaponsPips)||weaponsPips<0||weaponsPips>4){throw new RangeError("ShipLoadout.weaponsCapacitorMetrics: weaponsPips must be a finite number from 0 to 4")}return weaponsCapacitorMetrics(weaponsCapacitorInputFor(this.#modulesForEffectiveStats(),weaponsPips,this.powerBudget(),module=>this.#statsFor(module)))}distributorMetrics(options={}){const pips={systemsPips:options.systemsPips??4,enginesPips:options.enginesPips??4,weaponsPips:options.weaponsPips??4};for(const field of["systemsPips","enginesPips","weaponsPips"]){const value=pips[field];if(!Number.isFinite(value)||value<0||value>4){throw new RangeError(`ShipLoadout.distributorMetrics: ${field} must be a finite number from 0 to 4`)}}const input=distributorInputFor(this.#modulesForEffectiveStats(),pips,this.powerBudget(),module=>this.#statsFor(module));return input?distributorMetrics(input):null}#layout(){if(this.#layoutCache===void 0){this.#layoutCache=Object.freeze(enumerateSlots(this.#ship))}return this.#layoutCache}#requireSlot(slotKey){const wanted=requireString(slotKey,SLOT_KEY).toLowerCase();const slot=this.#layout().find(s=>s.key.toLowerCase()===wanted);if(!slot){throw new RangeError(`ShipLoadout: hull "${truncate(this.#shipSymbol)}" has no slot "${truncate(slotKey)}"`)}return slot}#fittedKey(slotKey){return matchingKeyIn(this.#modules,requireString(slotKey,SLOT_KEY))}#fittedModuleFor(slotKey){const key=this.#fittedKey(slotKey);return key===null?void 0:this.#modules.get(key)}#require(result,what){if(result.value===null){throw new TypeError(`ShipLoadout: cannot determine ${what} (${result.issues.map(i=>i.message).join("; ")})`)}return result.value}#requireMass(cargo){return this.unladenMass+cargo}#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||identifyPreEngineeredVariant(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-EXVCRIDP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/internal/calculation-result.ts","../src/ships/internal/loadout-metrics.ts","../src/ships/internal/loadout-fitting.ts","../src/ships/internal/loadout-export.ts","../src/ships/internal/loadout-import.ts","../src/ships/ship-loadout.ts"],"names":["weaponsCapacitorMetrics","shieldRecovery","cellBankSummary","shieldMetrics","getShipBySymbol","getShipByName","getShipSlots","parseSlef","toSlef","stringifySlef","getLoadoutModifier","sourcePurchaseFromLoadout","getSourceModuleValue","powerBudget","isNonOutfittingSlot","isBuiltInHullModule","cloneLoadoutModule","identifyPreEngineeredVariant","cloneModuleStats","availableBlueprintsFor","availableExperimentalsFor","ownKeyIn","FITTED_ITEM","blueprintAvailableFor","blueprintRoutesFor","experimentalAvailableFor","primitiveEngineeringInputsFor","missingBaseLabels","journalModifiersFor","getPreEngineeredStats","getPreEngineeredJournalModifiers","getPreEngineeredModifiers","ordinaryEngineeringProof","unresolvedModifiers","orderBySlotLayout","matchingKeyIn","isCargoHatchSlot","isFinalGuardianWeaponEngineering","scaleDamageComponents","weaponMetrics","sumWeaponMetrics","combinedRateOfFire","builtInModuleBySymbol","getBulkheadsForShip","getPreEngineeredVariants","singleJumpRange","frameShiftDriveMassFactor","fuelPerJump","totalRange","calculateUnladenMass","calculateCargoCapacity","calculateFuelCapacity","fixedSlotReason","validateLoadout","mobilityMetrics","calculateModuleLimits","ALL_MODULES","CORE_MODULES","distributorMetrics","getExperimentalEffectCost","getExperimentalEffect","heatMetrics","ammunitionCapacity","armourMetrics","getBlueprintCost","baseStats","computeModifiers","labelsForDamageType","scaleForLabel","sumMaterials","fieldForLabel","labelsForField","capabilityValueForLabel","damageTypeForLabel","resolveBlueprintForModule","getExperimentalsForModule","getBlueprintGrade","getDefaultLoadout","loadoutSlotName","parseSlotName","enumerateSlots","SLOT_RESTRICTION_LABELS","normalizeKey","truncate","describeValue","requireString","requireStringIfPresent","deepFreeze","NO_ISSUES","Object","freeze","completeResult","value","complete","issues","incompleteResult","map","issue","params","PREFIX","powerPlant","thrusters","frameShiftDrive","powerDistributor","shieldGenerator","shieldCellBank","shieldBooster","shieldReinforcement","hullReinforcement","moduleReinforcement","startsWithAny","symbol","prefixes","some","prefix","toLowerCase","startsWith","isPowerDistributor","module","stats","slot","Item","isPowerPlant","parsed","Slot","kind","core","isThruster","isFrameShiftDrive","isEnabled","On","priorityOf","Priority","effectiveStat","field","stated","statedModifier","base","label","modified","effectiveCapability","Engineering","Modifiers","modifier","Label","effectiveDamageDistribution","fromEffect","ExperimentalEffect","damageDistribution","distribution","resolved","seen","Set","type","has","add","Value","convertsDamage","modifierRatio","effective","relatedStat","ratio","effectiveModule","merged","fields","keys","key","capability","engineeringGroup","massRatio","minMass","maxMass","performanceRatio","minMultiplier","maxMultiplier","category","normalizeEffectiveWeapon","damageComponents","damage","powerConsumerFor","draw","mounted","priority","enabled","deployedOnly","alwaysPowered","powerAvailable","modules","statsFor","metricIssue","reason","defaultSlot","message","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","ship","systemsPips","generator","boosters","reinforcement","strengthRatio","optMass","Math","max","optMultiplier","push","shieldBoost","hullMass","baseShieldStrength","shieldInputResultFor","fitted","input","mobilityInputResultFor","mass","enginesPips","optSpeedMultiplier","speedCurve","minSpeedMultiplier","maxSpeedMultiplier","optRotationMultiplier","rotationCurve","minRotationMultiplier","maxRotationMultiplier","minimumSpeed","maximumSpeed","boost","minPitch","pitch","minRoll","roll","minYaw","yaw","shieldRecoveryInputResultFor","generatorModule","distributor","generatorStats","distributorStats","strength","regenRate","brokenRegenRate","distributorDraw","systemsCapacity","systemsRecharge","weaponsCapacitorInputFor","weaponsPips","weaponsCapacity","weaponsRecharge","sustainedEnergyPerSecond","deployed","weapon","weaponStatsFor","distributorInputFor","pips","enginesCapacity","enginesRecharge","heatInputFor","heatEfficiency","thrusterHeatRate","deployedThrusterHeatRate","fsdHeatRate","weapons","running","heat","heatPerSecond","sustainedHeatPerSecond","heatCapacity","heatDissipation","retractedPowerDraw","poweredDraw","deployedPowerDraw","state","bands","reduce","total","band","min","length","poweredRetracted","poweredDeployed","cellBankInputsFor","banks","ammunition","reinforcementRate","shieldBankReinforcement","cells","spinUp","shieldBankSpinUp","duration","shieldBankDuration","shieldBankHeat","stockBulkhead","variants","name","find","v","endsWith","armourInputFor","reinforcements","moduleReinforcements","bulkhead","hullBoost","moduleProtection","integrity","stock","baseArmour","WEAPON_FIELDS","projectileRange","burstAdjustedRateOfFire","touched","rate","rateOfFire","statedDamagePerSecond","firingFactor","roundsPerShot","maximumRange","falloffRange","MILITARY_PREFIXES","MINING_PREFIXES","CARGO_PREFIXES","RESTRICTED_SLOT_PREFIXES","mining","military","cargo","limpetController","vesselHangar","passenger","planetaryApproachSuite","problem","constraint","restrictionProblem","restriction","moduleSlotProblem","required","restrictedToSlot","moduleFitProblem","shipSymbol","hull","armourHull","armourShipName","armourShipSymbol","shipName","restricted","restrictedToShips","allowedShipNames","labels","index","join","allowedShipSymbols","wrongMount","moduleSlot","requiredCore","isFuelTank","class","size","moduleClass","slotSize","moduleFitError","REBUY_FRACTION","exportLoadoutEvent","options","fromSource","credits","source","sourcePurchase","totals","sourceTotalsVoided","sourceTotalsHold","hullValue","retailHullValue","modulesValue","computedModulesValue","rebuy","trunc","event","Ship","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","on","explicitPower","sourceModuleValue","moduleValue","Health","sum","cost","SOURCE_ITEM","entry","item","moduleValues","get","captureLoadoutEvent","Array","isArray","captureEach","captureModule","capture","captured","health","engineering","captureEngineering","experimental","experimentalLocalised","ExperimentalEffect_Localised","modifiers","BlueprintName","Level","Quality","hullLayout","slots","fixedMountRejects","mount","candidate","normalizeLoadoutEvent","rawEvent","TypeError","Map","entries","normalizedSlot","set","top","invalidatesAggregates","outcomes","defaults","slotKind","fallback","rejected","action","sourceSymbol","replacementSymbol","delete","moduleStats","primitiveModifiers","variant","catalogueVariantStats","variantStats","retainsBakedExperimental","trim","engineeringLocked","originalExperimental","withoutExperimental","currentExperimental","currentVariant","guardianFinal","normalizedBlueprint","normalizedExperimental","exact","blueprint","grade","guardianBase","SLOT_KEY","requireLoadOptions","scope","RangeError","requireEnginesPips","requireSystemsPips","LoadoutEditError","code","constructor","super","this","structuredClone","experimentalEffectUnsupported","engineeringNormalizationUnsupported","AGGREGATE_STATS","ShipLoadout","_ShipLoadout","importOutcomes","slotCache","layoutCache","fromSlef","imported","data","fromImported","fromLoadout","empty","requested","filter","loadout","computedUnladenMass","calculationModules","cap","computed","computedFuelCapacity","computedCargoCapacity","reserveFuelCapacity","validation","byKey","builtIn","fitProblem","requiresKnownSlot","fitError","fitConstraint","fitParams","exclusionGroup","limitGroup","limitIncrease","cached","currentLimits","moduleLimits","moduleStatsAt","fixedReason","immovableReason","moduleLimitRegression","fittedModuleAt","removable","slotKey","fittedModuleFor","raw","moduleForEffectiveStats","effectiveStats","preEngineeredVariant","fittedModules","flatMap","availableBlueprints","availableExperimentalEffects","modulesForSlot","requireSlot","occupied","group","currentStats","repairFixedMount","wanted","fittedKey","resultSlot","canonicalKey","status","current","valid","defaultModule","ownKey","replacement","replacementStats","replaceModule","setModule","catalogued","conflict","previousSlot","previousSymbol","limitProblem","count","limit","removeModule","applyBlueprint","fdname","wantedGrade","wantedQuality","quality","wantedExperimental","fittedStats","recipe","named","written","acquisition","isInteger","offered","route","engineeringBaseStats","canonical","missing","features","damageModifier","OriginalValue","setExperimentalEffect","previous","effect","restoresBakedEffect","originalEffect","withoutEffect","adjusted","currentEffect","blueprintGrade","previousExperimental","completeEngineeringGrade","previousQuality","proof","setPreEngineeredVariant","known","unresolved","clearEngineering","bare","setModuleEnabled","patchModule","setModulePriority","patch","clear","toLoadoutEvent","fuel","exportableJumpRange","hullCost","outcome","header","toSlefString","indent","drive","resolveDrive","tank","maxFuel","maxJumpFuel","fsd","requireMass","jumpRange","ladenJumpRange","distance","standardLoadResult","load","maximumFuel","driveError","error","Error","driveParams","jumpRangeSummary","maximum","require","unladen","laden","totalMax","totalUnladen","totalLaden","consumers","modulesForEffectiveStats","mobilityMetricsResult","shieldMetricsResult","shieldRecoveryResult","cellBanks","bank","buildCost","mercCoins","unpriced","materials","mercCoinCost","bought","climb","record","metrics","armourPiercing","orderedWeapons","s","result","what","i","moduleMass","moduleCapacity","usage","increase","amount","baseLimit","excess","adjustImportedFigures","next","nextStats","statsOverride","modifierLabel","m","fsdModule","fuelMul","fuelPower","jumpBoost","resolveJumpBoost"],"mappings":"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"}
|
package/dist/chunk-FGXWVFN6.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{mapDamageTypes,stackArmourResistance,effectiveHitPoints}from"./chunk-ZNCXENNB.js";var reinforcementResistances=(sources,type)=>sources.map(source=>source[`${type}Resistance`]??0);function armourMetrics(input){const bulkhead=input.bulkhead??{};const reinforcements=input.reinforcements??[];const moduleReinforcements=input.moduleReinforcements??[];const bulkheads=input.baseArmour*(1+(bulkhead.hullBoost??0));const reinforcement=reinforcements.reduce((sum,pack)=>sum+(pack.hullReinforcement??0)+input.baseArmour*(pack.hullBoost??0),0);const hitPoints=bulkheads+reinforcement;const resistances=mapDamageTypes(type=>stackArmourResistance(bulkhead[`${type}Resistance`]??0,reinforcementResistances(reinforcements,type)));return{hitPoints:hitPoints,bulkheads:bulkheads,reinforcement:reinforcement,resistances:resistances,effectiveHitPoints:effectiveHitPoints(hitPoints,resistances),moduleArmour:moduleReinforcements.reduce((sum,pack)=>sum+(pack.integrity??0),0),moduleProtection:1-moduleReinforcements.reduce((product,pack)=>product*(1-(pack.moduleProtection??0)),1)}}export{armourMetrics};//# sourceMappingURL=chunk-FGXWVFN6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/armour.ts"],"names":["mapDamageTypes","stackArmourResistance","effectiveHitPoints","reinforcementResistances","sources","type","map","source","armourMetrics","input","bulkhead","reinforcements","moduleReinforcements","bulkheads","baseArmour","hullBoost","reinforcement","reduce","sum","pack","hullReinforcement","hitPoints","resistances","moduleArmour","integrity","moduleProtection","product"],"mappings":"O,kFA8HA,IAAMG,yBAA2B,CAC7BC,QACAC,OACWD,QAAQE,IAAKC,QAAWA,OAAO,GAAGF,mBAAqB,GAqB/D,SAASG,cAAcC,OAC1B,MAAMC,SAA2BD,MAAMC,UAAY,CAAA,EACnD,MAAMC,eAAiBF,MAAME,gBAAkB,GAC/C,MAAMC,qBAAuBH,MAAMG,sBAAwB,GAE3D,MAAMC,UAAYJ,MAAMK,YAAc,GAAKJ,SAASK,WAAa,IACjE,MAAMC,cAAgBL,eAAeM,OACjC,CAACC,IAAKC,OACFD,KAAOC,KAAKC,mBAAqB,GAAKX,MAAMK,YAAcK,KAAKJ,WAAa,GAChF,GAEJ,MAAMM,UAAYR,UAAYG,cAE9B,MAAMM,YAAiCtB,eAAgBK,MACnDJ,sBACIS,SAAS,GAAGL,mBAAqB,EACjCF,yBAAyBQ,eAAgBN,QAIjD,MAAO,CACHgB,oBACAR,oBACAG,4BACAM,wBACApB,mBAAoBA,mBAAmBmB,UAAWC,aAClDC,aAAcX,qBAAqBK,OAAO,CAACC,IAAKC,OAASD,KAAOC,KAAKK,WAAa,GAAI,GACtFC,iBACI,EACAb,qBAAqBK,OACjB,CAACS,QAASP,OAASO,SAAW,GAAKP,KAAKM,kBAAoB,IAC5D,GAGhB,QAAAjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/weapons-capacitor.ts"],"names":["capacitorRechargeAtPips","requireFiniteNonNegative","scope","name","value","Number","isFinite","RangeError","weaponsCapacitorMetrics","input","weaponsPips","field","rechargeRate","weaponsRecharge","netDrainRate","Math","max","sustainedEnergyPerSecond","capacity","weaponsCapacity","timeToDrain","Infinity"],"mappings":"O,kDAmDA,SAASC,yBAAyBC,MAAeC,KAAcC,OAC3D,IAAKC,OAAOC,SAASF,QAAUA,MAAQ,EAAG,CACtC,MAAM,IAAIG,WAAW,GAAGL,UAAUC,4CACtC,CACJ,CAwBO,SAASK,wBAAwBC,OACpC,MAAMP,MAAQ,0BACd,MAAMQ,YAAcD,MAAMC,aAAe,EACzC,IAAKL,OAAOC,SAASI,cAAgBA,YAAc,GAAKA,YAAc,EAAG,CACrE,MAAM,IAAIH,WAAW,GAAGL,yDAC5B,CACA,IAAA,MAAWS,QAAS,CAChB,kBACA,kBACA,4BACQ,CACRV,yBAAyBC,MAAOS,MAAOF,MAAME,OACjD,CAEA,MAAMC,aAAeZ,wBAAwBS,MAAMI,gBAAiBH,aACpE,MAAMI,aAAeC,KAAKC,IAAI,EAAGP,MAAMQ,yBAA2BL,cAClE,MAAO,CACHF,wBACAQ,SAAUT,MAAMU,gBAChBP,0BACAK,yBAA0BR,MAAMQ,yBAChCH,0BACAM,YAAaN,eAAiB,EAAIO,SAAWZ,MAAMU,gBAAkBL,aAE7E,QAAAN"}
|
package/dist/chunk-G3265B27.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getHandAuthoredRegionOrigin}from"./chunk-UXBCLFGU.js";import{packBoxelCode,assertBoxelCode}from"./chunk-DI5RXSJR.js";import{canonicalizeSectorName,sectorGridPositionFromName}from"./chunk-DVL5RBKX.js";import{requireString,requireStringIfPresent}from"./chunk-PKWVG2JY.js";var CODE_A_UPPER="A".charCodeAt(0);var CODE_A_LOWER="a".charCodeAt(0);function lettersToBoxelCode(l1,l2,l3,n1){return packBoxelCode(l1,l2,l3,n1)}function boxelCodeToLetters(boxelCode){assertBoxelCode(boxelCode);return{l1:boxelCode%26,l2:Math.trunc(boxelCode/26)%26,l3:Math.trunc(boxelCode/(26*26))%26,n1:Math.trunc(boxelCode/(26*26*26))}}function parseSystemName(name){if(name==null)return null;const s=requireString(name,"parseSystemName: name");const lower=s.toLowerCase();let i=s.length-1;if(i<9)return null;if(lower[i]<"0"||lower[i]>"9")return null;while(i>8&&lower[i]>="0"&&lower[i]<="9")i--;const n2=Number.parseInt(lower.substring(i+1),10);if(Number.isNaN(n2))return null;let n1=0;if(lower[i]==="-"){i--;const vend=i;while(i>8&&lower[i]>="0"&&lower[i]<="9")i--;if(i===vend)return null;n1=Number.parseInt(lower.substring(i+1,vend+1),10);if(Number.isNaN(n1))return null}if(lower[i]<"a"||lower[i]>"h")return null;const massCode=lower.charCodeAt(i)-CODE_A_LOWER;i--;if(lower[i]!==" ")return null;i--;if(lower[i]<"a"||lower[i]>"z")return null;const l3=lower.charCodeAt(i)-CODE_A_LOWER;i--;if(lower[i]!=="-")return null;i--;if(lower[i]<"a"||lower[i]>"z")return null;const l2=lower.charCodeAt(i)-CODE_A_LOWER;i--;if(lower[i]<"a"||lower[i]>"z")return null;const l1=lower.charCodeAt(i)-CODE_A_LOWER;i--;if(lower[i]!==" ")return null;i--;return{regionName:s.substring(0,i+1),l1:l1,l2:l2,l3:l3,massCode:massCode,n1:n1,n2:n2}}function formatSystemName(parts){const l1=String.fromCharCode(CODE_A_UPPER+parts.l1);const l2=String.fromCharCode(CODE_A_UPPER+parts.l2);const l3=String.fromCharCode(CODE_A_UPPER+parts.l3);const mc=String.fromCharCode(CODE_A_LOWER+parts.massCode);const n1=Math.trunc(parts.n1);const n2=Math.trunc(parts.n2);const index=n1!==0?`${n1}-${n2}`:`${n2}`;return`${parts.regionName} ${l1}${l2}-${l3} ${mc}${index}`}function canonicalizeSystemName(name){requireStringIfPresent(name,"canonicalizeSystemName: name");const parts=parseSystemName(name);if(!parts)return null;return formatSystemName({...parts,regionName:canonicalizeSectorName(parts.regionName)??getHandAuthoredRegionOrigin(parts.regionName)?.name??parts.regionName})}function isProceduralSystemName(name,options={}){requireStringIfPresent(name,"isProceduralSystemName: name");const parts=parseSystemName(name?.trim());if(!parts)return false;return options.strict?sectorGridPositionFromName(parts.regionName)!==null:true}export{boxelCodeToLetters,canonicalizeSystemName,formatSystemName,isProceduralSystemName,lettersToBoxelCode,parseSystemName};//# sourceMappingURL=chunk-G3265B27.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/astro/system-name.ts"],"names":["getHandAuthoredRegionOrigin","packBoxelCode","assertBoxelCode","canonicalizeSectorName","sectorGridPositionFromName","requireString","requireStringIfPresent","CODE_A_UPPER","charCodeAt","CODE_A_LOWER","lettersToBoxelCode","l1","l2","l3","n1","boxelCodeToLetters","boxelCode","Math","trunc","parseSystemName","name","s","lower","toLowerCase","i","length","n2","Number","parseInt","substring","isNaN","vend","massCode","regionName","formatSystemName","parts","String","fromCharCode","mc","index","canonicalizeSystemName","isProceduralSystemName","options","trim","strict"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/jump-range.ts"],"names":["MAX_TOTAL_RANGE_JUMPS","requireNonNegative","scope","name","value","Number","isFinite","RangeError","requirePositive","validateFsd","fsd","optMass","maxFuel","fuelMul","fuelPower","jumpBoost","frameShiftDriveMassFactorUnchecked","mass","fuel","singleJumpRangeUnchecked","burn","Math","min","base","pow","range","frameShiftDriveMassFactor","singleJumpRange","fuelPerJump","distance","maxDistance","cost","totalRange","jumps","max","ceil","remaining","i"],"mappings":"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"}
|
package/dist/chunk-IOJXLDJN.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ALL_MATERIALS}from"./chunk-V4C6FIE2.js";import{findInKeyIndex,findByKey,filterByKey,createKeyIndex}from"./chunk-BKWLI44T.js";var MaterialGrade=/* @__PURE__ */(MaterialGrade2=>{MaterialGrade2[MaterialGrade2["VeryCommon"]=1]="VeryCommon";MaterialGrade2[MaterialGrade2["Common"]=2]="Common";MaterialGrade2[MaterialGrade2["Standard"]=3]="Standard";MaterialGrade2[MaterialGrade2["Rare"]=4]="Rare";MaterialGrade2[MaterialGrade2["VeryRare"]=5]="VeryRare";return MaterialGrade2})(MaterialGrade||{});var MaterialLine=/* @__PURE__ */(MaterialLine2=>{MaterialLine2["Carbon"]="Carbon";MaterialLine2["Phosphorus"]="Phosphorus";MaterialLine2["Sulphur"]="Sulphur";MaterialLine2["Iron"]="Iron";MaterialLine2["Nickel"]="Nickel";MaterialLine2["Rhenium"]="Rhenium";MaterialLine2["Lead"]="Lead";MaterialLine2["Chemical"]="Chemical";MaterialLine2["Thermic"]="Thermic";MaterialLine2["Heat"]="Heat";MaterialLine2["Conductive"]="Conductive";MaterialLine2["MechanicalComponents"]="Mechanical Components";MaterialLine2["Capacitors"]="Capacitors";MaterialLine2["Shielding"]="Shielding";MaterialLine2["Composite"]="Composite";MaterialLine2["Crystals"]="Crystals";MaterialLine2["Alloys"]="Alloys";MaterialLine2["EmissionData"]="Emission Data";MaterialLine2["WakeScans"]="Wake Scans";MaterialLine2["ShieldData"]="Shield Data";MaterialLine2["EncryptionFiles"]="Encryption Files";MaterialLine2["DataArchives"]="Data Archives";MaterialLine2["EncodedFirmware"]="Encoded Firmware";MaterialLine2["Guardian"]="Guardian";MaterialLine2["Thargoid"]="Thargoid";return MaterialLine2})(MaterialLine||{});var MATERIALS_BY_SYMBOL=/* @__PURE__ */createKeyIndex(ALL_MATERIALS,"symbol");var MATERIALS_BY_NAME=/* @__PURE__ */createKeyIndex(ALL_MATERIALS,"name");var MATERIALS_BY_ELEMENT=/* @__PURE__ */createKeyIndex(ALL_MATERIALS,"elementSymbol");function getMaterialBySymbol(symbol,materials=ALL_MATERIALS){return materials===ALL_MATERIALS?findInKeyIndex(MATERIALS_BY_SYMBOL,symbol,"getMaterialBySymbol: symbol"):findByKey(materials,"symbol",symbol,"getMaterialBySymbol: symbol")}function getMaterialByName(name,materials=ALL_MATERIALS){return materials===ALL_MATERIALS?findInKeyIndex(MATERIALS_BY_NAME,name,"getMaterialByName: name"):findByKey(materials,"name",name,"getMaterialByName: name")}function getMaterialByElementSymbol(elementSymbol,materials=ALL_MATERIALS){return materials===ALL_MATERIALS?findInKeyIndex(MATERIALS_BY_ELEMENT,elementSymbol,"getMaterialByElementSymbol: elementSymbol"):findByKey(materials,"elementSymbol",elementSymbol,"getMaterialByElementSymbol: elementSymbol")}function materialsByGrade(grade,materials=ALL_MATERIALS){return materials.filter(material=>material.grade===grade)}function materialsInLine(line,materials=ALL_MATERIALS){return filterByKey(materials,"line",line,"materialsInLine: line")}function materialsInCategory(category,materials=ALL_MATERIALS){return filterByKey(materials,"category",category,"materialsInCategory: category")}export{MaterialGrade,MaterialLine,getMaterialByElementSymbol,getMaterialByName,getMaterialBySymbol,materialsByGrade,materialsInCategory,materialsInLine};//# sourceMappingURL=chunk-IOJXLDJN.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/materials/materials.ts"],"names":["ALL_MATERIALS","findInKeyIndex","findByKey","filterByKey","createKeyIndex","MaterialGrade","MaterialLine","MATERIALS_BY_SYMBOL","MATERIALS_BY_NAME","MATERIALS_BY_ELEMENT","getMaterialBySymbol","symbol","materials","getMaterialByName","name","getMaterialByElementSymbol","elementSymbol","materialsByGrade","grade","filter","material","materialsInLine","line","materialsInCategory","category"],"mappings":"O,6HAoEO,IAAKK,6BAAA,CAAAA,iBAERA,eAAAA,eAAA,cAAa,GAAb,aAEAA,eAAAA,eAAA,UAAS,GAAT,SAEAA,eAAAA,eAAA,YAAW,GAAX,WAEAA,eAAAA,eAAA,QAAO,GAAP,OAEAA,eAAAA,eAAA,YAAW,GAAX,WAVQ,OAAAA,cAAA,EAAA,CAAAA,eAAA,CAAA,GAuBL,IAAKC,4BAAA,CAAAA,gBAERA,cAAA,UAAS,SAETA,cAAA,cAAa,aAEbA,cAAA,WAAU,UAEVA,cAAA,QAAO,OAEPA,cAAA,UAAS,SAETA,cAAA,WAAU,UAEVA,cAAA,QAAO,OAEPA,cAAA,YAAW,WAEXA,cAAA,WAAU,UAEVA,cAAA,QAAO,OAEPA,cAAA,cAAa,aAEbA,cAAA,wBAAuB,wBAEvBA,cAAA,cAAa,aAEbA,cAAA,aAAY,YAEZA,cAAA,aAAY,YAEZA,cAAA,YAAW,WAEXA,cAAA,UAAS,SAETA,cAAA,gBAAe,gBAEfA,cAAA,aAAY,aAEZA,cAAA,cAAa,cAEbA,cAAA,mBAAkB,mBAElBA,cAAA,gBAAe,gBAEfA,cAAA,mBAAkB,mBAElBA,cAAA,YAAW,WAEXA,cAAA,YAAW,WAlDH,OAAAA,aAAA,EAAA,CAAAA,cAAA,CAAA,GAsFZ,IAAMC,mCAAsCH,eAAeJ,cAAe,UAC1E,IAAMQ,iCAAoCJ,eAAeJ,cAAe,QACxE,IAAMS,oCAAuCL,eAAeJ,cAAe,iBAsBpE,SAASU,oBACZC,OACAC,UAAiCZ,eAEjC,OAAOY,YAAcZ,cACfC,eAAeM,oBAAqBI,OAAQ,+BAC5CT,UAAUU,UAAW,SAAUD,OAAQ,8BACjD,CAiBO,SAASE,kBACZC,KACAF,UAAiCZ,eAEjC,OAAOY,YAAcZ,cACfC,eAAeO,kBAAmBM,KAAM,2BACxCZ,UAAUU,UAAW,OAAQE,KAAM,0BAC7C,CAkBO,SAASC,2BACZC,cACAJ,UAAiCZ,eAEjC,OAAOY,YAAcZ,cACfC,eACIQ,qBACAO,cACA,6CAEJd,UACIU,UACA,gBACAI,cACA,4CAEd,CAiBO,SAASC,iBACZC,MACAN,UAAiCZ,eAEjC,OAAOY,UAAUO,OAAQC,UAAaA,SAASF,QAAUA,MAC7D,CAmBO,SAASG,gBACZC,KACAV,UAAiCZ,eAEjC,OAAOG,YAAYS,UAAW,OAAQU,KAAM,wBAChD,CAwBO,SAASC,oBACZC,SACAZ,UAAiCZ,eAEjC,OAAOG,YAAYS,UAAW,WAAYY,SAAU,gCACxD,QAAAnB,cAAAC,aAAAS,2BAAAF,kBAAAH,oBAAAO,iBAAAM,oBAAAF"}
|
package/dist/chunk-IYU4WLFM.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";function sourcePurchaseFromLoadout(event){const bySlot=/* @__PURE__ */new Map;for(const module of event.Modules){if(module.Value===void 0)continue;bySlot.set(module.Slot,{slot:module.Slot,item:module.Item,value:module.Value})}if(event.HullValue===void 0&&event.ModulesValue===void 0&&event.Rebuy===void 0&&bySlot.size===0){return null}return deepFreeze({hullValue:event.HullValue??null,modulesValue:event.ModulesValue??null,rebuy:event.Rebuy??null,moduleValues:[...bySlot.values()],moduleCount:event.Modules.length})}function getSourceModuleValue(record,slotKey){requireStringIfPresent(slotKey,"getSourceModuleValue: slotKey");for(const entry of record.moduleValues){if(entry.slot===slotKey)return entry}const wanted=slotKey?.toLowerCase();for(const entry of record.moduleValues){if(entry.slot.toLowerCase()===wanted)return entry}return null}function sumSourceModuleValues(record){let sum=0;for(const entry of record.moduleValues)sum+=entry.value;return sum}export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues};//# sourceMappingURL=chunk-IYU4WLFM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/source-purchase.ts"],"names":["requireStringIfPresent","deepFreeze","sourcePurchaseFromLoadout","event","bySlot","Map","module","Modules","Value","set","Slot","slot","item","Item","value","HullValue","ModulesValue","Rebuy","size","hullValue","modulesValue","rebuy","moduleValues","values","moduleCount","length","getSourceModuleValue","record","slotKey","entry","wanted","toLowerCase","sumSourceModuleValues","sum"],"mappings":"O,6FA0FO,SAASE,0BAA0BC,OACtC,MAAMC,sBAAA,IAAaC,IACnB,IAAA,MAAWC,UAAUH,MAAMI,QAAS,CAChC,GAAID,OAAOE,aAAU,EAAW,SAChCJ,OAAOK,IAAIH,OAAOI,KAAM,CACpBC,KAAML,OAAOI,KACbE,KAAMN,OAAOO,KACbC,MAAOR,OAAOE,OAEtB,CACA,GACIL,MAAMY,iBAAc,GACpBZ,MAAMa,oBAAiB,GACvBb,MAAMc,aAAU,GAChBb,OAAOc,OAAS,EAClB,CACE,OAAO,IACX,CACA,OAAOjB,WAAW,CACdkB,UAAWhB,MAAMY,WAAa,KAC9BK,aAAcjB,MAAMa,cAAgB,KACpCK,MAAOlB,MAAMc,OAAS,KACtBK,aAAc,IAAIlB,OAAOmB,UACzBC,YAAarB,MAAMI,QAAQkB,QAEnC,CAuBO,SAASC,qBACZC,OACAC,SAEA5B,uBAAuB4B,QAAS,iCAChC,IAAA,MAAWC,SAASF,OAAOL,aAAc,CACrC,GAAIO,MAAMlB,OAASiB,QAAS,OAAOC,KACvC,CACA,MAAMC,OAASF,SAASG,cACxB,IAAA,MAAWF,SAASF,OAAOL,aAAc,CACrC,GAAIO,MAAMlB,KAAKoB,gBAAkBD,OAAQ,OAAOD,KACpD,CACA,OAAO,IACX,CAsBO,SAASG,sBAAsBL,QAClC,IAAIM,IAAM,EACV,IAAA,MAAWJ,SAASF,OAAOL,aAAcW,KAAOJ,MAAMf,MACtD,OAAOmB,GACX,QAAAP,qBAAAxB,0BAAA8B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/pre-engineered.ts"],"names":["getLocalizedName","createDeduplicatedLocalizedNameIndex","requireObject","requireString","requireStringIfPresent","pre_engineered_variant_names_default","NAMES","identityKey","identity","prefix","symbol","trim","blueprint","experimental","acquisition","getPreEngineeredVariantName","variant","locale"],"mappings":"O,wheAeA,IAAMM,qBAAwBL,qCAC1BI,sCAeJ,SAASE,YAAYC,UACjB,MAAMC,OAAS,uCACfP,cAAcM,SAAUC,QACxB,MAAMC,OAASP,cAAcK,SAASE,OAAQ,GAAGD,iBAAiBE,OAClE,MAAMC,UAAYT,cAAcK,SAASI,UAAW,GAAGH,oBAAoBE,OAC3EP,uBAAuBI,SAASK,aAAc,GAAGJ,uBACjD,MAAMI,aAAeL,SAASK,cAAcF,QAAU,GACtD,MAAMG,YAAcX,cAAcK,SAASM,YAAa,GAAGL,sBAAsBE,OACjF,MAAO,GAAGD,UAAUE,aAAaC,gBAAgBC,aACrD,CAuBO,SAASC,4BACZC,QACAC,QAEA,OAAOjB,iBACHM,MACAC,YAAYS,SACZC,OACA,8BACA,UAER,QAAAF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/experimental-effects.ts"],"names":["findByRawKey","deepFreeze","experimental_effects_default","EXPERIMENTAL_EFFECTS","getExperimentalEffect","fdname"],"mappings":"O,qndAyCO,IAAMG,qBAAqEF,WAC9EC,8BAoBG,SAASE,sBAAsBC,QAClC,OAAOL,aAAaG,qBAAsBE,OAAQ,gCACtD,QAAAF,qBAAAC"}
|
package/dist/chunk-LJI7VXJD.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function combinedRateOfFire(weapon){const interval=weapon.burstInterval;if(interval===void 0||interval<=0)return void 0;const burst=weapon.burstRounds&&weapon.burstRounds>0?weapon.burstRounds:1;const burstRate=weapon.burstRateOfFire&&weapon.burstRateOfFire>0?weapon.burstRateOfFire:1;const cycle=(burst>1?(burst-1)/burstRate:0)+interval;return cycle>0?burst/cycle:void 0}var ZERO_SPLIT={kinetic:0,thermal:0,explosive:0,absolute:0,antiXeno:0};function splitDamage(damage,distribution){if(!distribution)return{...ZERO_SPLIT,absolute:damage};return{kinetic:damage*(distribution.kinetic??0),thermal:damage*(distribution.thermal??0),explosive:damage*(distribution.explosive??0),absolute:damage*(distribution.absolute??0),...(distribution.unclassified??0)===0?{}:{unclassified:damage*distribution.unclassified},antiXeno:damage*(distribution.antiXeno??0)}}function splitComponents(damage,components){const unclassified=(components.unclassified??[]).reduce((sum,value)=>sum+value,0);const conventional=(components.kinetic??0)+(components.thermal??0)+(components.explosive??0)+(components.absolute??0)+unclassified;if(conventional<=0)return{...ZERO_SPLIT,absolute:damage};const scale=damage/conventional;return{kinetic:(components.kinetic??0)*scale,thermal:(components.thermal??0)*scale,explosive:(components.explosive??0)*scale,absolute:(components.absolute??0)*scale,...unclassified===0?{}:{unclassified:unclassified*scale},antiXeno:(components.antiXeno??0)*scale}}function sustainedFireFactor(weapon){const rateOfFire=weapon.rateOfFire;const clip=weapon.clipSize===void 0?void 0:Math.ceil(weapon.clipSize);if(!rateOfFire||!clip||clip<=0)return 1;const burst=weapon.burstRounds&&weapon.burstRounds>0?weapon.burstRounds:1;const burstRate=weapon.burstRateOfFire&&weapon.burstRateOfFire>0?weapon.burstRateOfFire:1;const reload=weapon.reloadTime??0;const cycle=(clip-burst)/rateOfFire+(burst-1)/burstRate+reload;if(cycle<=0)return 1;const sustainedRate=clip/cycle;return Math.min(1,sustainedRate/rateOfFire)}function damagePerSecond(weapon){const damage=weapon.damage??0;const rounds=weapon.roundsPerShot&&weapon.roundsPerShot>0?weapon.roundsPerShot:1;return damage*rounds*(weapon.rateOfFire??1)}function sustainedDamagePerSecond(weapon){return damagePerSecond(weapon)*sustainedFireFactor(weapon)}function energyPerSecond(weapon){return(weapon.distributorDraw??0)*(weapon.rateOfFire??1)}function heatPerSecond(weapon){return(weapon.thermalLoad??0)*(weapon.rateOfFire??1)}function damageFalloff(weapon,metres){const maximum=weapon.maximumRange;if(maximum!==void 0&&metres>maximum)return 0;const falloff=weapon.falloffRange;if(falloff===void 0||maximum===void 0||metres<=falloff)return 1;const taper=maximum-falloff;if(taper<=0)return 1;return Math.max(0,1-(metres-falloff)/taper)}function armourPiercingFactor(armourPiercing,hardness){if(!Number.isFinite(armourPiercing)||armourPiercing<0){throw new RangeError("armourPiercingFactor: armour piercing must be a finite non-negative number")}if(!Number.isFinite(hardness)||hardness<0){throw new RangeError("armourPiercingFactor: hardness must be a finite non-negative number")}if(hardness===0)return 1;return Math.min(1,armourPiercing/hardness)}function weaponMetrics(weapon){const continuous=weapon.rateOfFire===void 0;const rateOfFire=weapon.rateOfFire??1;const factor=sustainedFireFactor(weapon);const dps=damagePerSecond(weapon);const sdps=dps*factor;const eps=energyPerSecond(weapon);const hps=heatPerSecond(weapon);const rounds=weapon.roundsPerShot&&weapon.roundsPerShot>0?weapon.roundsPerShot:1;return{damagePerShot:(weapon.damage??0)*rounds,rateOfFire:rateOfFire,sustainedRateOfFire:rateOfFire*factor,damagePerSecond:dps,sustainedDamagePerSecond:sdps,energyPerSecond:eps,sustainedEnergyPerSecond:eps*factor,heatPerSecond:hps,sustainedHeatPerSecond:hps*factor,thermalLoad:weapon.thermalLoad??0,powerDraw:weapon.powerDraw??0,damageByType:weapon.damageComponents?splitComponents(dps,weapon.damageComponents):splitDamage(dps,weapon.damageDistribution),sustainedDamageByType:weapon.damageComponents?splitComponents(sdps,weapon.damageComponents):splitDamage(sdps,weapon.damageDistribution),continuous:continuous}}function sumWeaponMetrics(metrics){const damageByType=emptyDamageSplitAccumulator();const sustainedDamageByType=emptyDamageSplitAccumulator();let damagePerSecond2=0;let sustainedDamagePerSecond2=0;let energyPerSecond2=0;let sustainedEnergyPerSecond=0;let heatPerSecond2=0;let sustainedHeatPerSecond=0;let thermalLoad=0;let powerDraw=0;for(const metric of metrics){damagePerSecond2+=metric.damagePerSecond;sustainedDamagePerSecond2+=metric.sustainedDamagePerSecond;energyPerSecond2+=metric.energyPerSecond;sustainedEnergyPerSecond+=metric.sustainedEnergyPerSecond;heatPerSecond2+=metric.heatPerSecond;sustainedHeatPerSecond+=metric.sustainedHeatPerSecond;thermalLoad+=metric.thermalLoad;powerDraw+=metric.powerDraw;addDamageSplit(damageByType,metric.damageByType);addDamageSplit(sustainedDamageByType,metric.sustainedDamageByType)}return{damagePerSecond:damagePerSecond2,sustainedDamagePerSecond:sustainedDamagePerSecond2,energyPerSecond:energyPerSecond2,sustainedEnergyPerSecond:sustainedEnergyPerSecond,heatPerSecond:heatPerSecond2,sustainedHeatPerSecond:sustainedHeatPerSecond,thermalLoad:thermalLoad,powerDraw:powerDraw,damageByType:finishDamageSplit(damageByType),sustainedDamageByType:finishDamageSplit(sustainedDamageByType)}}function emptyDamageSplitAccumulator(){return{kinetic:0,thermal:0,explosive:0,absolute:0,unclassified:0,antiXeno:0}}function addDamageSplit(total,split){total.kinetic+=split.kinetic;total.thermal+=split.thermal;total.explosive+=split.explosive;total.absolute+=split.absolute;total.unclassified+=split.unclassified??0;total.antiXeno+=split.antiXeno}function finishDamageSplit(total){const{unclassified:unclassified,...classified}=total;return unclassified===0?classified:{...classified,unclassified:unclassified}}export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics};//# sourceMappingURL=chunk-LJI7VXJD.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/weapons.ts"],"names":["combinedRateOfFire","weapon","interval","burstInterval","burst","burstRounds","burstRate","burstRateOfFire","cycle","ZERO_SPLIT","kinetic","thermal","explosive","absolute","antiXeno","splitDamage","damage","distribution","unclassified","splitComponents","components","reduce","sum","value","conventional","scale","sustainedFireFactor","rateOfFire","clip","clipSize","Math","ceil","reload","reloadTime","sustainedRate","min","damagePerSecond","rounds","roundsPerShot","sustainedDamagePerSecond","energyPerSecond","distributorDraw","heatPerSecond","thermalLoad","damageFalloff","metres","maximum","maximumRange","falloff","falloffRange","taper","max","armourPiercingFactor","armourPiercing","hardness","Number","isFinite","RangeError","weaponMetrics","continuous","factor","dps","sdps","eps","hps","damagePerShot","sustainedRateOfFire","sustainedEnergyPerSecond","sustainedHeatPerSecond","powerDraw","damageByType","damageComponents","damageDistribution","sustainedDamageByType","sumWeaponMetrics","metrics","emptyDamageSplitAccumulator","metric","addDamageSplit","finishDamageSplit","total","split","classified"],"mappings":"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"}
|
package/dist/chunk-OCND33TO.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{findInKeyIndex,createKeyIndex}from"./chunk-BKWLI44T.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var weapons_default=[{symbol:"wpn_s_pistol_kinetic_sauto",name:"Karma P-15",upgradeGroup:"karma",class:"pistol",slot:"secondary",damageType:"kinetic",fireMode:"semi-automatic",rateOfFire:10,magazineSize:24,reserveAmmo:120,headshotMultiplier:2,effectiveRange:25,grades:{1:{damage:1.4,modificationSlots:0},2:{damage:1.8,modificationSlots:1},3:{damage:2.4,modificationSlots:2},4:{damage:3.8,modificationSlots:3},5:{damage:4.1,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_assaultrifle_kinetic_fauto",name:"Karma AR-50",upgradeGroup:"karma",class:"rifle",slot:"primary",damageType:"kinetic",fireMode:"automatic",rateOfFire:9.5,magazineSize:50,reserveAmmo:200,headshotMultiplier:2,effectiveRange:50,grades:{1:{damage:1,modificationSlots:0},2:{damage:1.2,modificationSlots:1},3:{damage:1.6,modificationSlots:2},4:{damage:2.2,modificationSlots:3},5:{damage:2.8,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_submachinegun_kinetic_fauto",name:"Karma C-44",upgradeGroup:"karma",class:"carbine",slot:"primary",damageType:"kinetic",fireMode:"automatic",rateOfFire:13.3,magazineSize:45,reserveAmmo:360,headshotMultiplier:2,effectiveRange:25,grades:{1:{damage:.6,modificationSlots:0},2:{damage:.9,modificationSlots:1},3:{damage:1.1,modificationSlots:2},4:{damage:1.5,modificationSlots:3},5:{damage:1.9,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_launcher_rocket_sauto",name:"Karma L-6",upgradeGroup:"karma",class:"launcher",slot:"primary",damageType:"explosive",fireMode:"automatic",rateOfFire:1,magazineSize:2,reserveAmmo:8,headshotMultiplier:1,effectiveRange:300,grades:{1:{damage:40,modificationSlots:0},2:{damage:52.4,modificationSlots:1},3:{damage:69.2,modificationSlots:2},4:{damage:90,modificationSlots:3},5:{damage:119.2,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_assaultrifle_laser_fauto",name:"TK Aphelion",upgradeGroup:"takada",class:"rifle",slot:"primary",damageType:"thermal",fireMode:"automatic",rateOfFire:5.7,magazineSize:25,reserveAmmo:150,headshotMultiplier:1,effectiveRange:70,grades:{1:{damage:1.6,modificationSlots:0},2:{damage:2.1,modificationSlots:1},3:{damage:2.7,modificationSlots:2},4:{damage:3.6,modificationSlots:3},5:{damage:4.7,modificationSlots:4}},engineeringType:"laser"},{symbol:"wpn_m_submachinegun_laser_fauto",name:"TK Eclipse",upgradeGroup:"takada",class:"carbine",slot:"primary",damageType:"thermal",fireMode:"automatic",rateOfFire:10,magazineSize:45,reserveAmmo:280,headshotMultiplier:1,effectiveRange:25,grades:{1:{damage:.9,modificationSlots:0},2:{damage:1.1,modificationSlots:1},3:{damage:1.5,modificationSlots:2},4:{damage:1.9,modificationSlots:3},5:{damage:2.5,modificationSlots:4}},engineeringType:"laser"},{symbol:"wpn_s_pistol_laser_sauto",name:"TK Zenith",upgradeGroup:"takada",class:"pistol",slot:"secondary",damageType:"thermal",fireMode:"burst",rateOfFire:5.7,magazineSize:18,reserveAmmo:90,headshotMultiplier:1,effectiveRange:35,grades:{1:{damage:1.7,modificationSlots:0},2:{damage:2.2,modificationSlots:1},3:{damage:2.9,modificationSlots:2},4:{damage:3.8,modificationSlots:3},5:{damage:5,modificationSlots:4}},engineeringType:"laser"},{symbol:"wpn_m_sniper_plasma_charged",name:"Manticore Executioner",upgradeGroup:"manticore",class:"sniper",slot:"primary",damageType:"plasma",fireMode:"semi-automatic",rateOfFire:.8,magazineSize:3,reserveAmmo:30,headshotMultiplier:3,effectiveRange:100,grades:{1:{damage:15,modificationSlots:0},2:{damage:19.6,modificationSlots:1},3:{damage:26,modificationSlots:2},4:{damage:34,modificationSlots:3},5:{damage:44.7,modificationSlots:4}},engineeringType:"plasma"},{symbol:"wpn_s_pistol_plasma_charged",name:"Manticore Tormentor",upgradeGroup:"manticore",class:"pistol",slot:"secondary",damageType:"plasma",fireMode:"semi-automatic",rateOfFire:1.7,magazineSize:6,reserveAmmo:72,headshotMultiplier:2,effectiveRange:15,grades:{1:{damage:7.5,modificationSlots:0},2:{damage:9.8,modificationSlots:1},3:{damage:13,modificationSlots:2},4:{damage:17,modificationSlots:3},5:{damage:22.4,modificationSlots:4}},engineeringType:"plasma"},{symbol:"wpn_m_shotgun_plasma_doublebarrel",name:"Manticore Intimidator",upgradeGroup:"manticore",class:"shotgun",slot:"primary",damageType:"plasma",fireMode:"semi-automatic",rateOfFire:1.3,magazineSize:2,reserveAmmo:24,headshotMultiplier:1.5,effectiveRange:7,grades:{1:{damage:1.8,modificationSlots:0},2:{damage:2.3,modificationSlots:1},3:{damage:3,modificationSlots:2},4:{damage:4,modificationSlots:3},5:{damage:5.2,modificationSlots:4}},engineeringType:"plasma"},{symbol:"wpn_m_assaultrifle_plasma_fauto",name:"Manticore Oppressor",upgradeGroup:"manticore",class:"rifle",slot:"primary",damageType:"plasma",fireMode:"automatic",rateOfFire:6.7,magazineSize:50,reserveAmmo:300,headshotMultiplier:1.5,effectiveRange:35,grades:{1:{damage:1.1,modificationSlots:0},2:{damage:1.4,modificationSlots:1},3:{damage:1.9,modificationSlots:2},4:{damage:2.5,modificationSlots:3},5:{damage:3.275,modificationSlots:4}},engineeringType:"plasma"}];var PERSONAL_WEAPONS=deepFreeze(weapons_default);var BY_SYMBOL=/* @__PURE__ */createKeyIndex(PERSONAL_WEAPONS,"symbol");var BY_NAME=/* @__PURE__ */createKeyIndex(PERSONAL_WEAPONS,"name");function getPersonalWeaponBySymbol(symbol){return findInKeyIndex(BY_SYMBOL,symbol,"getPersonalWeaponBySymbol: symbol")}function getPersonalWeaponByName(name){return findInKeyIndex(BY_NAME,name,"getPersonalWeaponByName: name")}function getPersonalWeaponGrade(weapon,grade){if(!Number.isInteger(grade)||grade<1||grade>5){throw new RangeError(`getPersonalWeaponGrade: grade must be an integer in [1, 5]`)}return weapon.grades[String(grade)]}export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade};//# sourceMappingURL=chunk-OCND33TO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/equipment/weapons.ts"],"names":["findInKeyIndex","createKeyIndex","deepFreeze","weapons_default","symbol","name","grades","PERSONAL_WEAPONS","BY_SYMBOL","BY_NAME","getPersonalWeaponBySymbol","getPersonalWeaponByName","getPersonalWeaponGrade","weapon","grade","Number","isInteger","RangeError","String"],"mappings":"O,i/JA0EO,IAAMO,iBAA8CL,WACvDC,iBAGJ,IAAMK,yBAA4BP,eAAeM,iBAAkB,UACnE,IAAME,uBAA0BR,eAAeM,iBAAkB,QAe1D,SAASG,0BAA0BN,QACtC,OAAOJ,eAAeQ,UAAWJ,OAAQ,oCAC7C,CAgBO,SAASO,wBAAwBN,MACpC,OAAOL,eAAeS,QAASJ,KAAM,gCACzC,CAeO,SAASO,uBAAuBC,OAAwBC,OAC3D,IAAKC,OAAOC,UAAUF,QAAUA,MAAQ,GAAKA,MAAQ,EAAG,CACpD,MAAM,IAAIG,WAAW,6DACzB,CACA,OAAOJ,OAAOP,OAAOY,OAAOJ,OAChC,QAAAP,iBAAAI,wBAAAD,0BAAAE"}
|
package/dist/chunk-P2QOL63K.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";var requirePips=(name,value)=>{if(!Number.isFinite(value)||value<0||value>4){throw new RangeError(`distributorMetrics: ${name} must be a finite number from 0 to 4`)}};var requireFiniteNonNegative=(name,value)=>{if(!Number.isFinite(value)||value<0){throw new RangeError(`distributorMetrics: ${name} must be a finite non-negative number`)}};var capacitorMetrics=(capacity,ratedRecharge,pips)=>({capacity:capacity,ratedRecharge:ratedRecharge,rechargeRate:capacitorRechargeAtPips(ratedRecharge,pips)});function distributorMetrics(input){const pips={systems:input.systemsPips??4,engines:input.enginesPips??4,weapons:input.weaponsPips??4};requirePips("systemsPips",pips.systems);requirePips("enginesPips",pips.engines);requirePips("weaponsPips",pips.weapons);for(const field of["systemsCapacity","systemsRecharge","enginesCapacity","enginesRecharge","weaponsCapacity","weaponsRecharge"]){requireFiniteNonNegative(field,input[field])}return{systems:capacitorMetrics(input.systemsCapacity,input.systemsRecharge,pips.systems),engines:capacitorMetrics(input.enginesCapacity,input.enginesRecharge,pips.engines),weapons:capacitorMetrics(input.weaponsCapacity,input.weaponsRecharge,pips.weapons),pips:pips}}export{distributorMetrics};//# sourceMappingURL=chunk-P2QOL63K.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/distributor.ts"],"names":["capacitorRechargeAtPips","requirePips","name","value","Number","isFinite","RangeError","requireFiniteNonNegative","capacitorMetrics","capacity","ratedRecharge","pips","rechargeRate","distributorMetrics","input","systems","systemsPips","engines","enginesPips","weapons","weaponsPips","field","systemsCapacity","systemsRecharge","enginesCapacity","enginesRecharge","weaponsCapacity","weaponsRecharge"],"mappings":"O,kDA0EA,IAAMC,YAAc,CAACC,KAAcC,SAC/B,IAAKC,OAAOC,SAASF,QAAUA,MAAQ,GAAKA,MAAQ,EAAG,CACnD,MAAM,IAAIG,WAAW,uBAAuBJ,2CAChD,GAGJ,IAAMK,yBAA2B,CAACL,KAAcC,SAC5C,IAAKC,OAAOC,SAASF,QAAUA,MAAQ,EAAG,CACtC,MAAM,IAAIG,WAAW,uBAAuBJ,4CAChD,GAGJ,IAAMM,iBAAmB,CACrBC,SACAC,cACAC,QAAA,CAEAF,kBACAC,4BACAE,aAAcZ,wBAAwBU,cAAeC,QA+BlD,SAASE,mBAAmBC,OAC/B,MAAMH,KAAO,CACTI,QAASD,MAAME,aAAe,EAC9BC,QAASH,MAAMI,aAAe,EAC9BC,QAASL,MAAMM,aAAe,GAElCnB,YAAY,cAAeU,KAAKI,SAChCd,YAAY,cAAeU,KAAKM,SAChChB,YAAY,cAAeU,KAAKQ,SAChC,IAAA,MAAWE,QAAS,CAChB,kBACA,kBACA,kBACA,kBACA,kBACA,mBACQ,CACRd,yBAAyBc,MAAOP,MAAMO,OAC1C,CAEA,MAAO,CACHN,QAASP,iBAAiBM,MAAMQ,gBAAiBR,MAAMS,gBAAiBZ,KAAKI,SAC7EE,QAAST,iBAAiBM,MAAMU,gBAAiBV,MAAMW,gBAAiBd,KAAKM,SAC7EE,QAASX,iBAAiBM,MAAMY,gBAAiBZ,MAAMa,gBAAiBhB,KAAKQ,SAC7ER,UAER,QAAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/blueprints.ts"],"names":["findByRawKey","requireStringIfPresent","deepFreeze","blueprints_default","grades","BLUEPRINTS","getBlueprint","fdname","getBlueprintGrade","grade","Number","isInteger","RangeError","String"],"mappings":"O,g5gIAgEO,IAAMK,WAAkDH,WAC3DC,oBAmBG,SAASG,aAAaC,QACzB,OAAOP,aAAaK,WAAYE,OAAQ,uBAC5C,CAqBO,SAASC,kBAAkBD,OAAgBE,OAC9CR,uBAAuBM,OAAQ,6BAC/B,IAAKG,OAAOC,UAAUF,QAAUA,MAAQ,GAAKA,MAAQ,EAAG,CACpD,MAAM,IAAIG,WAAW,wDACzB,CACA,OAAON,aAAaC,SAASH,OAAOS,OAAOJ,SAAW,IAC1D,QAAAJ,WAAAC,aAAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/engineering-options.ts"],"names":["normalizeKey","requireStringIfPresent","deepFreeze","engineering_options_default","groups","blueprints","experimentals","modules","exclusions","DATA","ENGINEERING_OPTION_GROUPS","moduleGroup","Map","Object","entries","map","symbol","group","toLowerCase","moduleExclusions","effects","Set","e","getEngineeringGroup","get","getBlueprintsForModule","getExperimentalsForModule","normalized","all","excluded","filter","has","getExperimentalsForBlueprint","fdname","out","values","some","b","effect","add","sort"],"mappings":"O,oi2DAwJA,IAAMS,KAA8BP,WAAWC,6BAcxC,IAAMO,0BAETD,KAAKL,OAET,IAAMO,YAAc,IAAIC,IACpBC,OAAOC,QAAQL,KAAKF,SAASQ,IAAI,EAAEC,OAAQC,SAAW,CAACD,OAAOE,cAAeD,SAEjF,IAAME,iBAAmB,IAAIP,IACzBC,OAAOC,QAAQL,KAAKD,YAAYO,IAAI,EAAEC,OAAQI,WAAa,CACvDJ,OAAOE,cACP,IAAIG,IAAID,QAAQL,IAAKO,GAAMA,EAAEJ,mBAgC9B,SAASK,oBAAoBP,QAChC,OAAOL,YAAYa,IAAIxB,aAAagB,OAAQ,iCAAmC,IACnF,CA4CO,SAASS,uBAAuBT,QACnCf,uBAAuBe,OAAQ,kCAC/B,MAAMC,MAAQM,oBAAoBP,QAClC,OAAOC,QAAU,KAAO,GAAKP,0BAA0BO,OAAQZ,UACnE,CAmCO,SAASqB,0BAA0BV,QACtC,MAAMW,WAAa3B,aAAagB,OAAQ,qCACxC,MAAMC,MAAQN,YAAYa,IAAIG,YAC9B,GAAIV,aAAU,EAAW,MAAO,GAChC,MAAMW,IAAMlB,0BAA0BO,OAAQX,cAC9C,MAAMuB,SAAWV,iBAAiBK,IAAIG,YACtC,OAAOE,gBAAa,EAAYD,IAAMA,IAAIE,OAAQR,IAAOO,SAASE,IAAIT,EAAEJ,eAC5E,CAsCO,SAASc,6BAA6BC,QACzC,MAAMN,WAAa3B,aAAaiC,OAAQ,wCACxC,MAAMC,mBAAA,IAAUb,IAChB,IAAA,MAAWJ,SAASJ,OAAOsB,OAAOzB,2BAA4B,CAC1D,IAAKO,MAAMZ,WAAW+B,KAAMC,GAAMA,EAAEnB,gBAAkBS,YAAa,SACnE,IAAA,MAAWW,UAAUrB,MAAMX,cAAe4B,IAAIK,IAAID,OACtD,CACA,MAAO,IAAIJ,KAAKM,MACpB,QAAA9B,0BAAAe,uBAAAF,oBAAAS,6BAAAN"}
|