@elite-dangerous-almanac/core 0.2.0 → 0.2.1
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/ships/SOURCES.md +23 -0
- package/dist/chunk-37JIMWLK.js +1 -0
- package/dist/chunk-37JIMWLK.js.map +1 -0
- package/dist/chunk-4CBMQULR.js +1 -0
- package/dist/{chunk-4ZGUSHTP.js.map → chunk-4CBMQULR.js.map} +1 -1
- package/dist/{chunk-QTAMQ6ME.js → chunk-5VWACBTN.js} +1 -1
- package/dist/chunk-65FZECUX.js +1 -0
- package/dist/chunk-65FZECUX.js.map +1 -0
- package/dist/chunk-6BFQIYGZ.js +1 -0
- package/dist/chunk-6BFQIYGZ.js.map +1 -0
- package/dist/chunk-6HA2YIKW.js +1 -0
- package/dist/chunk-6HA2YIKW.js.map +1 -0
- package/dist/{chunk-7EE5VIHR.js → chunk-6HMIF2RJ.js} +1 -1
- package/dist/chunk-6S36AVA4.js +1 -0
- package/dist/chunk-6S36AVA4.js.map +1 -0
- package/dist/chunk-6WTUY6ZX.js +1 -0
- package/dist/{chunk-V3AEUBHV.js.map → chunk-6WTUY6ZX.js.map} +1 -1
- package/dist/chunk-77TT4K53.js +1 -0
- package/dist/{chunk-Y6KJJMIM.js → chunk-A4QKXXZD.js} +1 -1
- package/dist/chunk-AAE4KZ2V.js +1 -0
- package/dist/chunk-AAE4KZ2V.js.map +1 -0
- package/dist/{chunk-Q5XOGATC.js → chunk-AIEC3LBT.js} +1 -1
- package/dist/{chunk-QY3L5BKN.js → chunk-APEG4ZER.js} +1 -1
- package/dist/{chunk-JGOAQLYW.js → chunk-F44QX47A.js} +1 -1
- package/dist/{chunk-EVJ32UF3.js → chunk-FA5JVXVG.js} +1 -1
- package/dist/{chunk-EVJ32UF3.js.map → chunk-FA5JVXVG.js.map} +1 -1
- package/dist/chunk-GGQMIQPC.js +1 -0
- package/dist/chunk-GGQMIQPC.js.map +1 -0
- package/dist/{chunk-EYGVDJ2I.js → chunk-GMTAFUAG.js} +1 -1
- package/dist/{chunk-Z43DN4PY.js → chunk-GTEHRZPN.js} +1 -1
- package/dist/{chunk-Z43DN4PY.js.map → chunk-GTEHRZPN.js.map} +1 -1
- package/dist/{chunk-PA5EITW5.js → chunk-HUYYGTRM.js} +1 -1
- package/dist/{chunk-PA5EITW5.js.map → chunk-HUYYGTRM.js.map} +1 -1
- package/dist/{chunk-HKXXFIRI.js → chunk-ITKZKREP.js} +1 -1
- package/dist/{chunk-OYR5HUQZ.js → chunk-IWFQ4ZKF.js} +1 -1
- package/dist/{chunk-ZCEAPJDH.js → chunk-J7BM5NGK.js} +1 -1
- package/dist/chunk-JET673E5.js +1 -0
- package/dist/chunk-JET673E5.js.map +1 -0
- package/dist/chunk-JMAXSXXQ.js +1 -0
- package/dist/chunk-JMAXSXXQ.js.map +1 -0
- package/dist/chunk-JO52LYO3.js +1 -0
- package/dist/chunk-M2TCZKRT.js +1 -0
- package/dist/chunk-M2TCZKRT.js.map +1 -0
- package/dist/chunk-M4FZRDAH.js +1 -0
- package/dist/chunk-M4FZRDAH.js.map +1 -0
- package/dist/chunk-OJC6AUL7.js +1 -0
- package/dist/chunk-OJC6AUL7.js.map +1 -0
- package/dist/{chunk-FYVPZBXN.js → chunk-Q5ALV3DI.js} +1 -1
- package/dist/{chunk-SQS7672E.js → chunk-Q6YDPREF.js} +1 -1
- package/dist/chunk-SG6YLUQ4.js +1 -0
- package/dist/chunk-SG6YLUQ4.js.map +1 -0
- package/dist/{chunk-OVUHQEH5.js → chunk-T4MKUKYS.js} +1 -1
- package/dist/{chunk-OVUHQEH5.js.map → chunk-T4MKUKYS.js.map} +1 -1
- package/dist/{chunk-XUHAPOM6.js → chunk-VEEBJFJ7.js} +1 -1
- package/dist/{chunk-L747RVPO.js → chunk-VQJXRPYI.js} +1 -1
- package/dist/{chunk-L747RVPO.js.map → chunk-VQJXRPYI.js.map} +1 -1
- package/dist/chunk-VTMCSCXV.js +1 -0
- package/dist/chunk-VTMCSCXV.js.map +1 -0
- package/dist/chunk-XQJERZUS.js +1 -0
- package/dist/chunk-XQJERZUS.js.map +1 -0
- package/dist/commodities/commodities-all.js +1 -1
- package/dist/commodities/commodities-rare.js +1 -1
- package/dist/commodities/commodities-standard.js +1 -1
- package/dist/commodities/commodities.js +1 -1
- package/dist/commodities/index.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials-encoded.js +1 -1
- package/dist/materials/materials-manufactured.js +1 -1
- package/dist/materials/materials-raw.js +1 -1
- package/dist/materials/materials.js +1 -1
- package/dist/ships/armour.js +1 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/distributor.js +1 -1
- package/dist/ships/heat.js +1 -1
- package/dist/ships/index.d.ts +1 -1
- package/dist/ships/index.js +1 -1
- package/dist/ships/jump-range.js +1 -1
- package/dist/ships/loadout-validation.d.ts +111 -5
- package/dist/ships/loadout-validation.js +1 -1
- package/dist/ships/mobility-capacitor.js +1 -1
- 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-internal.js +1 -1
- package/dist/ships/modules.d.ts +21 -1
- package/dist/ships/modules.js +1 -1
- package/dist/ships/power.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +12 -7
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/resistances.js +1 -1
- package/dist/ships/shield-capacitor.js +1 -1
- package/dist/ships/shield-recovery.js +1 -1
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +84 -17
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/slef.d.ts +4 -1
- package/dist/ships/slef.js +1 -1
- package/dist/ships/weapons-capacitor.js +1 -1
- package/dist/ships/weapons.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4KJ7CR74.js +0 -1
- package/dist/chunk-4KJ7CR74.js.map +0 -1
- package/dist/chunk-4ZGUSHTP.js +0 -1
- package/dist/chunk-6L56LWTT.js +0 -1
- package/dist/chunk-6L56LWTT.js.map +0 -1
- package/dist/chunk-6O4NRRSB.js +0 -1
- package/dist/chunk-6O4NRRSB.js.map +0 -1
- package/dist/chunk-7TQ2X6Q3.js +0 -1
- package/dist/chunk-7TQ2X6Q3.js.map +0 -1
- package/dist/chunk-B4ZSTOM4.js +0 -1
- package/dist/chunk-B4ZSTOM4.js.map +0 -1
- package/dist/chunk-D6YEHR5S.js +0 -1
- package/dist/chunk-D6YEHR5S.js.map +0 -1
- package/dist/chunk-EVW4Z4CB.js +0 -1
- package/dist/chunk-EVW4Z4CB.js.map +0 -1
- package/dist/chunk-GZYPQIO2.js +0 -1
- package/dist/chunk-GZYPQIO2.js.map +0 -1
- package/dist/chunk-JQG4C67D.js +0 -1
- package/dist/chunk-OYFMHDYT.js +0 -1
- package/dist/chunk-OYFMHDYT.js.map +0 -1
- package/dist/chunk-PY5L6WC5.js +0 -1
- package/dist/chunk-PY5L6WC5.js.map +0 -1
- package/dist/chunk-Q2L75GSI.js +0 -1
- package/dist/chunk-Q2L75GSI.js.map +0 -1
- package/dist/chunk-QJ7GB6FF.js +0 -1
- package/dist/chunk-QJ7GB6FF.js.map +0 -1
- package/dist/chunk-RRYBSAPX.js +0 -1
- package/dist/chunk-RRYBSAPX.js.map +0 -1
- package/dist/chunk-V3AEUBHV.js +0 -1
- package/dist/chunk-V4C6FIE2.js +0 -1
- package/dist/chunk-VYDQHPY2.js +0 -1
- package/dist/chunk-VYDQHPY2.js.map +0 -1
- package/dist/chunk-YXPZ7QQB.js +0 -1
- package/dist/chunk-YXPZ7QQB.js.map +0 -1
- /package/dist/{chunk-QTAMQ6ME.js.map → chunk-5VWACBTN.js.map} +0 -0
- /package/dist/{chunk-7EE5VIHR.js.map → chunk-6HMIF2RJ.js.map} +0 -0
- /package/dist/{chunk-JQG4C67D.js.map → chunk-77TT4K53.js.map} +0 -0
- /package/dist/{chunk-Y6KJJMIM.js.map → chunk-A4QKXXZD.js.map} +0 -0
- /package/dist/{chunk-Q5XOGATC.js.map → chunk-AIEC3LBT.js.map} +0 -0
- /package/dist/{chunk-QY3L5BKN.js.map → chunk-APEG4ZER.js.map} +0 -0
- /package/dist/{chunk-JGOAQLYW.js.map → chunk-F44QX47A.js.map} +0 -0
- /package/dist/{chunk-EYGVDJ2I.js.map → chunk-GMTAFUAG.js.map} +0 -0
- /package/dist/{chunk-HKXXFIRI.js.map → chunk-ITKZKREP.js.map} +0 -0
- /package/dist/{chunk-OYR5HUQZ.js.map → chunk-IWFQ4ZKF.js.map} +0 -0
- /package/dist/{chunk-ZCEAPJDH.js.map → chunk-J7BM5NGK.js.map} +0 -0
- /package/dist/{chunk-V4C6FIE2.js.map → chunk-JO52LYO3.js.map} +0 -0
- /package/dist/{chunk-FYVPZBXN.js.map → chunk-Q5ALV3DI.js.map} +0 -0
- /package/dist/{chunk-SQS7672E.js.map → chunk-Q6YDPREF.js.map} +0 -0
- /package/dist/{chunk-XUHAPOM6.js.map → chunk-VEEBJFJ7.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/internal/damage-components.ts","../src/ships/internal/fixed-modifier-features.ts","../src/ships/internal/loadout-state.ts","../src/ships/internal/loadout-engineering.ts","../src/ships/pre-engineered-stats.ts"],"names":["combinedRateOfFire","getPreEngineeredVariants","builtInModuleBySymbol","getModuleBySymbol","ALL_MODULES","EXPERIMENTAL_EFFECTS","getExperimentalEffect","fieldForLabel","baseStats","computeModifiers","labelsForDamageType","scaleForLabel","preciseModifierValue","capabilityValueForLabel","resolveBlueprintForModule","getBlueprintsForModule","getExperimentalsForModule","getEngineeringGroup","getBlueprintGrade","getBlueprint","BLUEPRINTS","normalizeKey","requireStringIfPresent","deepFreeze","scaleDamageComponents","components","baseDamage","effectiveDamage","scale","kinetic","thermal","explosive","absolute","antiXeno","unclassified","map","value","fixedModifierFeatures","modifiers","modifier","label","method","min","max","FITTED_ITEM","isNonOutfittingSlot","slotKey","test","isCargoHatchSlot","toLowerCase","isBuiltInHullModule","module","Slot","Item","startsWith","cloneLoadoutModule","On","Priority","Health","Value","Engineering","BlueprintName","Level","Quality","ExperimentalEffect","ExperimentalEffect_Localised","Modifiers","matchingKeyIn","keyed","has","wanted","key","keys","ownKeyIn","canonicalKey","size","every","orderBySlotLayout","values","layout","slotOf","order","Map","slot","index","sort","left","right","get","Number","MAX_SAFE_INTEGER","cloneModuleStats","structuredClone","error","Error","name","restrictedToShips","limitIncrease","damageDistribution","damageComponents","projectileRange","GUARDIAN_WEAPON_GROUPS","Set","missingBaseLabels","stats","base","features","experimental","contributions","contribution","filter","recipeSignature","blueprintSymbol","blueprint","grades","Object","entries","grade","feature","join","isGenericSpelling","isSoldWithBlueprint","item","some","variant","acquisition","blueprintRoutesFor","routes","set","blueprintAvailableFor","offered","asWritten","resolved","trim","id","signature","experimentalAvailableFor","experimentalEffectSymbol","primitiveLabelFor","maximumRange","falloffRange","scannerRange","shieldRegenRate","primitiveEngineeringInputsFor","canonicalGrade","matchesCalculatedModifiers","captured","calculated","length","byLabel","Label","expected","actual","Math","abs","ValueStr","ordinaryEngineeringProof","engineering","recipe","fixedCandidate","candidate","quality","stock","isFinite","current","journalModifiersFor","type","push","OriginalValue","round6","rounded","round","is","float32FiringCycle","interval","burstRounds","burstRateOfFire","withinBurst","fround","cycle","float32RateOfFire","float32DamagePerSecond","damage","rounds","rate","damagePerCycle","JOURNAL_MODIFIER_ORDER","JOURNAL_MODIFIER_RANK","sortJournalModifiers","a","b","weapon","valueFor","fallback","find","burstTouched","damageTouched","rateTouched","damagePerSecond","derivedRate","continuous","burstInterval","rateOfFire","burstRate","baseBurstRounds","baseBurstRate","baseInterval","baseCycle","baseRate","rateModifier","effectiveRate","effectiveInterval","effectiveCycle","stockRounds","roundsPerShot","effectiveRounds","result","includes","journalLabel","direct","findIndex","isFinalGuardianWeaponEngineering","group","engineerableBase","statsOverride","engineeringLocked","availableBlueprintsFor","engineerable","available","route","availableExperimentalsFor","effect","MAX_ENGINEERING_GRADE","modifiersWithExperimental","symbol","effectName","getPreEngineeredModifiers","journalModifiersWithExperimental","getPreEngineeredJournalModifiers","sameJournalNumber","modifierKey","sameModifier","matchesModifierSignature","actualByKey","matched","predicted","identifyPreEngineeredVariant","capturedBlueprint","variants","blueprintMatches","blueprintMatch","capturedGrade","isInteger","capturedExperimental","identityMatches","matches","primitive","unresolvedModifiers","getPreEngineeredStats","field","assign","experimentalDamageDistribution","m"],"mappings":"O,g0BAWO,SAASwB,sBACZC,WACAC,WACAC,iBAEA,MAAMC,MACFF,kBAAe,GAAaA,aAAe,GAAKC,uBAAoB,EAC9DA,gBAAkBD,WAClB,EACV,MAAO,IACCD,WAAWI,eAAY,EAAY,CAAA,EAAK,CAAEA,QAASJ,WAAWI,QAAUD,UACxEH,WAAWK,eAAY,EAAY,CAAA,EAAK,CAAEA,QAASL,WAAWK,QAAUF,UACxEH,WAAWM,iBAAc,EAAY,CAAA,EAAK,CAAEA,UAAWN,WAAWM,UAAYH,UAC9EH,WAAWO,gBAAa,EAAY,CAAA,EAAK,CAAEA,SAAUP,WAAWO,SAAWJ,UAC3EH,WAAWQ,gBAAa,EAAY,CAAA,EAAK,CAAEA,SAAUR,WAAWQ,SAAWL,UAC3EH,WAAWS,oBAAiB,EAC1B,CAAA,EACA,CAAEA,aAAcT,WAAWS,aAAaC,IAAKC,OAAUA,MAAQR,QAE7E,CCdO,SAASS,sBACZC,WAEA,OAAOA,UAAUH,IAAKI,WAAA,CAClBC,MAAOD,SAASC,MAChBC,OAAQF,SAASE,OACjBC,IAAKH,SAASH,MACdO,IAAKJ,SAASH,QAEtB,CCZO,IAAMQ,YAAc,kCAGpB,SAASC,oBAAoBC,SAChC,MAAO,kIAAkIC,KACrID,QAER,CAGO,SAASE,iBAAiBF,SAC7B,OAAOA,QAAQG,gBAAkB,YACrC,CAGO,SAASC,oBAAoBC,QAChC,OACIH,iBAAiBG,OAAOC,OAASD,OAAOE,KAAKJ,cAAcK,WAAW,sBAE9E,CAGO,SAASC,mBAAmBJ,QAC/B,MAAO,CACHC,KAAMD,OAAOC,KACbC,KAAMF,OAAOE,QACTF,OAAOK,UAAO,EAAY,CAAA,EAAK,CAAEA,GAAIL,OAAOK,OAC5CL,OAAOM,gBAAa,EAAY,CAAA,EAAK,CAAEA,SAAUN,OAAOM,aACxDN,OAAOO,cAAW,EAAY,CAAA,EAAK,CAAEA,OAAQP,OAAOO,WACpDP,OAAOQ,aAAU,EAAY,CAAA,EAAK,CAAEA,MAAOR,OAAOQ,UAClDR,OAAOS,mBAAgB,EACrB,CAAA,EACA,CACIA,YAAa,CACTC,cAAeV,OAAOS,YAAYC,cAClCC,MAAOX,OAAOS,YAAYE,MAC1BC,QAASZ,OAAOS,YAAYG,WACxBZ,OAAOS,YAAYI,0BAAuB,EACxC,CAAA,EACA,CAAEA,mBAAoBb,OAAOS,YAAYI,uBAC3Cb,OAAOS,YAAYK,oCAAiC,EAClD,CAAA,EACA,CACIA,6BACId,OAAOS,YAAYK,iCAE7Bd,OAAOS,YAAYM,iBAAc,EAC/B,CAAA,EACA,CACIA,UAAWf,OAAOS,YAAYM,UAAU/B,IAAKI,WAAA,IACtCA,eAMvC,CAaO,SAAS4B,cAAcC,MAAqCtB,SAC/D,GAAIsB,MAAMC,IAAIvB,SAAU,OAAOA,QAC/B,MAAMwB,OAASxB,QAAQG,cACvB,IAAA,MAAWsB,OAAOH,MAAMI,OAAQ,CAC5B,GAAID,IAAItB,gBAAkBqB,OAAQ,OAAOC,GAC7C,CACA,OAAO,IACX,CAGO,SAASE,SAASL,MAAqCM,cAC1D,OACIP,cAAcC,MAAOM,gBACpBN,MAAMO,KAAO,GAAK,IAAIP,MAAMI,QAAQI,MAAOL,KAAQA,MAAQA,IAAItB,eAC1DyB,aAAazB,cACbyB,aAEd,CAGO,SAASG,kBACZC,OACAC,OACAC,QAEA,MAAMC,MAAQ,IAAIC,IAAIH,OAAO5C,IAAI,CAACgD,KAAMC,QAAU,CAACD,KAAKZ,IAAItB,cAAemC,SAC3E,MAAO,IAAIN,QAAQO,KACf,CAACC,KAAMC,SACFN,MAAMO,IAAIR,OAAOM,MAAMrC,gBAAkBwC,OAAOC,mBAChDT,MAAMO,IAAIR,OAAOO,OAAOtC,gBAAkBwC,OAAOC,kBAE9D,CAGO,SAASC,iBAAiBxC,QAC7B,IACI,OAAO5B,WAAWqE,gBAAgBzC,QACtC,CAAA,MAAS0C,OACL,KAAMA,iBAAiBC,OAASD,MAAME,OAAS,kBAAmB,MAAMF,MACxE,OAAOtE,WAAW,IACX4B,UACCA,OAAO6C,yBAAsB,EAC3B,CAAA,EACA,CAAEA,kBAAmB,IAAI7C,OAAO6C,uBAClC7C,OAAO8C,qBAAkB,EACvB,CAAA,EACA,CAAEA,cAAe,IAAK9C,OAAO8C,mBAC/B9C,OAAO+C,0BAAuB,EAC5B,CAAA,EACA,CAAEA,mBAAoB,IAAK/C,OAAO+C,wBACpC/C,OAAOgD,wBAAqB,EAC1B,CAAA,EACA,CACIA,iBAAkB,IACXhD,OAAOgD,oBACNhD,OAAOgD,iBAAiBjE,oBAAiB,EACvC,CAAA,EACA,CAAEA,aAAc,IAAIiB,OAAOgD,iBAAiBjE,oBAG5DiB,OAAOiD,uBAAoB,EACzB,CAAA,EACA,CAAEA,gBAAiB,IAAKjD,OAAOiD,mBAE7C,CACJ,CCpHA,IAAMC,sCAAA,IAAkDC,IAAI,CACxD,gBACA,iBACA,kBAeG,SAASC,kBACZC,MACAC,KACAC,SACAC,cAEA,MAAMC,cAAgB,IAAIF,YAAcC,cAAgB,IACxD,MAAO,IACA,IAAIL,IACHM,cACKzE,IAAK0E,cAAiBA,aAAarE,OACnCsE,OAAQtE,QACL,GAAIiE,KAAKjE,cAAW,EAAW,OAAO,MACtC,OAAOjC,cAAciC,MAAOgE,SAAW,QAI3D,CAeA,SAASO,gBAAgBC,iBACrB,MAAMC,UAAY9F,aAAa6F,iBAC/B,IAAKC,UAAW,OAAO,KACvB,MAAMC,OAASC,OAAOC,QAAQH,UAAUC,QACnC/E,IACG,EAAEkF,OAASX,sBACP,GAAGW,SAASX,SACPvE,IAAKmF,SAAY,GAAGA,QAAQ9E,SAAS8E,QAAQ7E,QAAU,MACvD4C,OACAkC,KAAK,QAEjBlC,OACAkC,KAAK,KACV,MAAO,GAAGN,UAAUlB,KAAK9C,iBAAiBiE,QAC9C,CAGA,IAAMM,kBAAqBR,iBACvBA,gBAAgB/D,cAAcK,WAAW,SA2B7C,SAASmE,oBAAoBC,KAAcpD,QACvC,OAAOrE,yBAAyByH,MAAMC,KACjCC,SACGA,QAAQC,cAAgB,aAAeD,QAAQZ,gBAAgB/D,gBAAkBqB,OAE7F,CASO,SAASwD,mBAAmBJ,MAC/B,MAAMK,sBAAA,IAAa7C,IACnB,IAAA,MAAW8B,mBAAmBjG,uBAAuB2G,MACjDK,OAAOC,IAAIhB,gBAAiB,YAChC,IAAA,MAAWY,WAAW3H,yBAAyByH,MAAO,CAClD,GAAIE,QAAQC,cAAgB,cAAgBE,OAAO1D,IAAIuD,QAAQZ,iBAAkB,CAC7Ee,OAAOC,IAAIJ,QAAQZ,gBAAiB,YACxC,CACJ,CACA,OAAOe,MACX,CA+DO,SAASE,sBAAsBP,KAAcV,iBAChD,MAAMkB,QAAUnH,uBAAuB2G,MACvC,MAAMS,UAAY9G,aAAa2F,gBAAiB,+CAChD,MAAMoB,SAAWtH,0BAA0B4G,KAAMV,iBAAiBqB,OAClE,MAAM/D,OAAS8D,SAASnF,cACxB,GAAIiF,QAAQP,KAAMW,IAAOA,GAAGrF,gBAAkBqB,QAAS,OAAO,KAE9D,GAAImD,oBAAoBC,KAAMpD,SAAWmD,oBAAoBC,KAAMS,WAAY,OAAO,KACtF,IAAKX,kBAAkBlD,QAAS,OAAO,MACvC,MAAMiE,UAAYxB,gBAAgBqB,UAClC,GAAIG,YAAc,KAAM,OAAO,MAE/B,OAAOL,QAAQP,KAAMW,IAAOvB,gBAAgBuB,MAAQC,YAAcf,kBAAkBc,IACxF,CAaO,SAASE,yBAAyBd,KAAce,0BACnD,MAAMnE,OAASjD,aACXoH,yBACA,gEAEJ,OAAOzH,0BAA0B0G,MAAMC,KAAMW,IAAOA,GAAGrF,gBAAkBqB,OAC7E,CAGA,SAASoE,kBAAkBlC,MAAyBhE,OAChD,GAAIA,QAAU,gBAAkBgE,MAAMmC,oBAAiB,EAAW,MAAO,QACzE,GAAInG,QAAU,sBAAwBgE,MAAMoC,oBAAiB,EAAW,CACpE,MAAO,cACX,CACA,GAAIpG,QAAU,SAAWgE,MAAMqC,oBAAiB,EAAW,MAAO,eAClE,GAAIrG,QAAU,kBAAmB,MAAO,cACxC,GAAIA,QAAU,gBAAiB,MAAO,aACtC,GAAIA,QAAU,kBAAoBgE,MAAMsC,uBAAoB,EAAW,CACnE,MAAO,iBACX,CACA,OAAOtG,KACX,CAYO,SAASuG,8BACZvC,MACAa,MACAV,cAEA,MAAMqC,eAAiB,IAChB3B,MACHX,SAAUW,MAAMX,SAASvE,IAAKmF,UAC1B,MAAM9E,MAAQkG,kBAAkBlC,MAAOc,QAAQ9E,OAC/C,OAAOA,QAAU8E,QAAQ9E,MAAQ8E,QAAU,IAAKA,QAAS9E,gBAGjE,IAAKmE,aAAc,MAAO,CAAEU,MAAO2B,gBACnC,MAAO,CACH3B,MAAO2B,eACPrC,aAAc,IACPA,aACHrE,UAAWqE,aAAarE,UAAUH,IAAKI,WACnC,MAAMC,MAAQkG,kBAAkBlC,MAAOjE,SAASC,OAChD,OAAOA,QAAUD,SAASC,MAAQD,SAAW,IAAKA,SAAUC,gBAI5E,CAGA,SAASyG,2BACLC,SACAC,YAEA,IAAKD,UAAYA,SAASE,SAAWD,WAAWC,OAAQ,OAAO,MAC/D,MAAMC,QAAU,IAAInE,IAChBgE,SAAS/G,IAAKI,UAAa,CAACA,SAAS+G,MAAMjB,OAAOpF,cAAeV,YAErE,GAAI8G,QAAQ1E,OAASuE,SAASE,OAAQ,OAAO,MAC7C,OAAOD,WAAWvE,MAAO2E,WACrB,MAAMC,OAASH,QAAQ7D,IAAI+D,SAASD,MAAMjB,OAAOpF,eACjD,IAAKuG,OAAQ,OAAO,MACpB,GAAID,SAAS5F,aAAU,EAAW,CAC9B,OACI6F,OAAO7F,aAAU,GACjB8F,KAAKC,IAAIF,OAAO7F,MAAQ4F,SAAS5F,QAC7B,KAAO8F,KAAK9G,IAAI,EAAG8G,KAAKC,IAAIH,SAAS5F,OAEjD,CACA,OAAO6F,OAAOG,WAAaJ,SAASI,UAE5C,CAYO,SAASC,yBACZlC,KACAmC,YACAlD,cAEA,MAAMmD,OAAShJ,0BAA0B4G,KAAMmC,YAAYhG,eAC3D,MAAMkG,eAAiB9J,yBAAyByH,MAAMC,KACjDqC,WACGA,UAAUnC,cAAgB,aAC1BmC,UAAUhD,gBAAgBqB,OAAOpF,gBAAkB6G,OAAOzB,OAAOpF,eAEzE,IAAK8G,eAAgB,MAAO,oBAE5B,MAAM1C,MAAQnG,kBAAkB4I,OAAQD,YAAY/F,OACpD,MAAMmG,QAAUJ,YAAY9F,QAC5B,MAAMmG,MAAQhK,sBAAsBwH,KAAM9E,aAC1C,IACKsH,QACA7C,OACDV,eAAiB,OAChBlB,OAAO0E,SAASF,UACjBA,QAAU,GACVA,QAAU,EACZ,CACE,MAAO,UACX,CAEA,MAAMG,QAAUrB,8BAA8BmB,MAAO7C,MAAOV,cAC5D,GACIJ,kBACI2D,MACA1J,UAAU0J,OACVE,QAAQ/C,MAAMX,SACd0D,QAAQzD,cAAcrE,WACxB8G,OAAS,EACb,CACE,MAAO,UACX,CAEA,MAAMD,WAAakB,oBACfH,MACAzJ,iBAAiBD,UAAU0J,OAAQE,QAAQ/C,MAAO4C,QAASG,QAAQzD,eAEvE,MAAMT,mBACFkE,QAAQzD,cAAcT,oBAAsBkE,QAAQ/C,MAAMnB,mBAC9D,GAAIA,mBAAoB,CACpB,IAAA,MAAWoE,OAAQ,CAAC,UAAW,UAAW,YAAa,YAAsB,CACzE,MAAMlI,MAAQ8D,mBAAmBoE,MACjC,GAAIlI,aAAU,EAAW,SACzB,MAAMI,MAAQ9B,oBAAoB4J,MAAM,GACxC,GAAI9H,aAAU,EAAW,SACzB2G,WAAWoB,KAAK,CACZjB,MAAO9G,MACPmB,MAAOvB,MAAQzB,cAAc6B,OAC7BgI,eAAgBN,MAAMhE,qBAAqBoE,OAAS,GAAK3J,cAAc6B,QAE/E,CACJ,CACA,OAAOyG,2BAA2BY,YAAY3F,UAAWiF,YAAc,SAAW,UACtF,CAGA,IAAMsB,OAAUrI,QACZ,MAAMsI,QAAUjB,KAAKkB,MAAMvI,MAAQ,KAAO,IAC1C,OAAO+E,OAAOyD,GAAGF,SAAS,GAAM,EAAIA,SAIxC,SAASG,mBACLC,SACAC,YACAC,iBAEA,GAAIF,UAAY,EAAG,YAAO,EAC1B,MAAMG,YACFF,YAAc,EACRtB,KAAKyB,OAAOzB,KAAKyB,OAAOH,YAAc,GAAKtB,KAAKyB,OAAOF,kBACvD,EACV,MAAMG,MAAQ1B,KAAKyB,OAAOD,YAAcxB,KAAKyB,OAAOJ,WACpD,OAAOK,MAAQ,EAAIA,WAAQ,CAC/B,CAGA,SAASC,kBACLN,SACAC,YACAC,iBAEA,MAAMG,MAAQN,mBAAmBC,SAAUC,YAAaC,iBACxD,OAAOG,aAAU,OAAY,EAAY1B,KAAKyB,OAAOzB,KAAKyB,OAAOH,aAAeI,MACpF,CAGA,SAASE,uBACLC,OACAC,OACAC,KACAT,YACAI,OAEA,GAAIA,aAAU,IAAcI,SAAW,GAAKR,cAAgB,GAAI,CAC5D,MAAMU,eAAiBhC,KAAKyB,OACxBzB,KAAKyB,OAAOzB,KAAKyB,OAAOI,QAAU7B,KAAKyB,OAAOK,SAAW9B,KAAKyB,OAAOH,cAEzE,OAAOtB,KAAKyB,OAAOO,eAAiBN,MACxC,CACA,OAAO1B,KAAKyB,OAAOzB,KAAKyB,OAAOzB,KAAKyB,OAAOI,QAAU7B,KAAKyB,OAAOK,SAAW9B,KAAKyB,OAAOM,MAC5F,CAEA,IAAME,uBAAyB,CAC3B,gBACA,2BACA,OACA,YACA,YACA,WACA,gBACA,iBACA,iBACA,iBACA,cACA,oBACA,uBACA,iBACA,uBACA,oBACA,kBACA,SACA,kBACA,cACA,oBACA,eACA,YACA,aACA,aACA,YACA,YACA,cACA,aACA,eACA,cACA,aACA,SACA,qBACA,kCACA,kCACA,gCACA,gCACA,YACA,kBACA,iBACA,oBACA,oBACA,sBACA,oBACA,mBACA,0BACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,qBACA,0BACA,iBACA,sBACA,4BACA,wBACA,WACA,oBACA,QACA,kBACA,gBACA,gBAGJ,IAAMC,sBAAqD,IAAIzG,IAC3DwG,uBAAuBvJ,IAAI,CAACK,MAAO4C,QAAU,CAAC5C,MAAO4C,SAIzD,SAASwG,qBAAqBtJ,WAC1B,OAAOA,UACFH,IAAI,CAACI,SAAU6C,SAAA,CAAa7C,kBAAU6C,eACtCC,KACG,CAACwG,EAAGC,KACCH,sBAAsBnG,IAAIqG,EAAEtJ,SAAS+G,QAAUoC,uBAAuBtC,SAClEuC,sBAAsBnG,IAAIsG,EAAEvJ,SAAS+G,QAClCoC,uBAAuBtC,SAAWyC,EAAEzG,MAAQ0G,EAAE1G,OAE7DjD,IAAI,EAAGI,qBAAeA,SAC/B,CAeO,SAAS8H,oBACZ7D,MACAlE,WAEA,MAAMyJ,OAASvF,MAAM8E,cAAW,EAChC,MAAMU,SAAW,CAACxJ,MAAeyJ,YAC7B,MAAM1J,SAAWD,UAAU4J,KAAMlC,WAAcA,UAAUV,QAAU9G,OACnE,OAAQD,UAAY3B,qBAAqB2B,YAAckH,KAAKyB,OAAOe,WAEvE,MAAME,aAAe,CAAC,gBAAiB,YAAa,mBAAmBxE,KAAMnF,OACzEF,UAAUqF,KAAMpF,UAAaA,SAAS+G,QAAU9G,QAEpD,MAAM4J,cAAgB9J,UAAUqF,KAAMpF,UAAaA,SAAS+G,QAAU,UACtE,MAAM+C,YACFF,cAAgB7J,UAAUqF,KAAMpF,UAAaA,SAAS+G,QAAU,cAEpE,IAAIgD,gBACJ,IAAIC,YACJ,GAAIR,SAAWK,eAAiBC,aAAc,CAC1C,MAAMG,WAAahG,MAAMiG,qBAAkB,GAAajG,MAAMkG,kBAAe,EAC7E,MAAMhL,WAAa+H,KAAKyB,OAAO1E,MAAM8E,QACrC,MAAM3J,gBAAkBqK,SAAS,SAAUxF,MAAM8E,QACjD,GAAIkB,WAAY,CACZF,gBAAkB,CACdhD,MAAO,kBACP3F,MAAO8G,OAAO9I,iBACd6I,cAAeC,OAAO/I,YAE9B,KAAO,CACH,MAAMqJ,YAAciB,SAAS,YAAaxF,MAAMuE,aAAe,GAC/D,MAAM4B,UAAYX,SAAS,kBAAmBxF,MAAMwE,iBAAmB,GACvE,MAAM4B,gBAAkBnD,KAAKyB,OAAO1E,MAAMuE,aAAe,GACzD,MAAM8B,cAAgBpD,KAAKyB,OAAO1E,MAAMwE,iBAAmB,GAC3D,MAAM8B,aACFtG,MAAMiG,qBAAkB,OAAY,EAAYhD,KAAKyB,OAAO1E,MAAMiG,eACtE,MAAMM,UACFD,oBAAiB,OACX,EACAjC,mBAAmBiC,aAAcF,gBAAiBC,eAC5D,MAAMG,SACFF,oBAAiB,EACX1B,kBAAkB0B,aAAcF,gBAAiBC,eACjDrG,MAAMkG,kBAAe,OACnB,EACAjD,KAAKyB,OAAO1E,MAAMkG,YAC9B,MAAMO,aAAe3K,UAAU4J,KAAM3J,UAAaA,SAAS+G,QAAU,cACrE,MAAM4D,cAAgBD,cAAgBrM,qBAAqBqM,cAC3D,MAAME,kBAAoBnB,SAAS,gBAAiBxF,MAAMiG,eAAiB,GAC3E,MAAMW,eACFF,qBAAkB,EACZrC,mBAAmBsC,kBAAmBpC,YAAa4B,gBACnD,EACV,MAAMnB,KACF0B,gBACCE,sBAAmB,OACd,EACA3D,KAAKyB,OAAOzB,KAAKyB,OAAOH,aAAeqC,iBACjD,GAAIJ,gBAAa,GAAaxB,YAAS,EAAW,CAC9C,MAAM6B,YAAc5D,KAAKyB,OAAO1E,MAAM8G,eAAiB,GACvD,MAAMC,gBAAkB9D,KAAKyB,OACzB5I,UAAU4J,KACL3J,UACGA,SAAS+G,QAAU,UAAY/G,SAAS+G,QAAU,kBACvD3F,OAAS0J,aAEhBf,gBAAkB,CACdhD,MAAO,kBACP3F,MAAO8G,OACHY,uBACI1J,gBACA4L,gBACA/B,KACAT,YACAqC,iBAGR5C,cAAeC,OACXY,uBACI3J,WACA2L,YACAL,SACAJ,gBACAG,aAIZ,GAAIZ,aAAc,CACdI,YAAc,CACVjD,MAAO,aACP3F,MAAO8G,OAAOe,MACdhB,cAAeC,OAAOuC,UAE9B,CACJ,CACJ,CACJ,CAEA,MAAMQ,OAAgC,GACtC,IAAA,MAAWjL,YAAYD,UAAW,CAC9B,MAAME,MAAQD,SAAS+G,MACvB,GAAIyC,QAAU,CAAC,gBAAiB,YAAa,mBAAmB0B,SAASjL,OAAQ,SACjF,GAAIuJ,QAAUvJ,QAAU,UAAYgE,MAAMkG,kBAAe,EAAW,SACpE,IAAIgB,aAAelL,MACnB,GAAIA,QAAU,SAAWgE,MAAMmC,oBAAiB,EAAW+E,aAAe,oBAAA,GACjElL,QAAU,gBAAkBgE,MAAMoC,oBAAiB,EAAW,CACnE8E,aAAe,oBACnB,MAAA,GAAWlL,QAAU,gBAAkBgE,MAAMqC,oBAAiB,EAAW,CACrE6E,aAAe,OACnB,MAAA,GAAWlL,QAAU,cAAekL,aAAe,uBAAA,GAC1ClL,QAAU,aAAckL,aAAe,qBAAA,GACvClL,QAAU,mBAAqBgE,MAAMsC,uBAAoB,EAAW,CACzE4E,aAAe,gBACnB,CACAF,OAAOjD,KAAKmD,eAAiBlL,MAAQD,SAAW,IAAKA,SAAU+G,MAAOoE,cAC1E,CACA,GAAIpB,gBAAiBkB,OAAOjD,KAAK+B,iBACjC,GAAIC,YAAa,CACb,MAAMoB,OAASH,OAAOI,UAAWrL,UAAaA,SAAS+G,QAAU,cACjE,GAAIqE,QAAU,EAAGH,OAAOG,QAAUpB,iBAC7BiB,OAAOjD,KAAKgC,YACrB,CACA,OAAOX,qBAAqB4B,OAChC,CAYO,SAASK,iCAAiCnG,KAAcT,WAC3D,MAAM6G,MAAQ7M,oBAAoByG,MAClC,GAAIoG,QAAU,OAASzH,uBAAuBhC,IAAIyJ,OAAQ,OAAO,MACjE,MAAM1F,SAAWtH,0BAA0B4G,KAAMT,WACjD,OAAO9F,aAAaiH,YAAc,OAASH,sBAAsBP,KAAMT,UAC3E,CAOA,SAAS8G,iBACLrG,KACAsG,eAEA,MAAMxH,MAAQwH,eAAiB9N,sBAAsBwH,KAAM9E,aAC3D,IAAK4D,OAASA,MAAMyH,kBAAmB,OAAO,KAC9C,MAAO,CAAEzH,YAAOC,KAAMjG,UAAUgG,OACpC,CAYO,SAAS0H,uBACZxG,KACAsG,eAEA,MAAMG,aAAeJ,iBAAiBrG,KAAMsG,eAC5C,IAAKG,aAAc,MAAO,GAC1B,MAAM3H,MAAEA,MAAAC,KAAOA,MAAS0H,aACxB,MAAMC,UAAkC,GACxC,IAAA,MAAYpH,gBAAiBqH,SAAUvG,mBAAmBJ,MAAO,CAC7D,MAAMT,UAAY7F,WAAW4F,iBAC7B,IAAKC,UAAW,SAChB,MAAMC,OAASC,OAAOC,QAAQH,UAAUC,QACnCJ,OAAO,EAAC,CAAGO,SAAWd,kBAAkBC,MAAOC,KAAMY,MAAMX,UAAU0C,SAAW,GAChFjH,IAAI,EAAEkF,SAAW5B,OAAO4B,QACxBP,OAAOrB,OAAO0E,UACd9E,KAAK,CAACwG,EAAGC,IAAMD,EAAIC,GACxB,GAAI5E,OAAOkC,OAAS,EAAGgF,UAAU7D,KAAK,CAAEvD,gCAAiBE,cAAQmH,aACrE,CACA,OAAOD,SACX,CAGO,SAASE,0BACZ5G,KACAsG,eAEA,MAAMG,aAAeJ,iBAAiBrG,KAAMsG,eAC5C,IAAKG,aAAc,MAAO,GAC1B,MAAM3H,MAAEA,MAAAC,KAAOA,MAAS0H,aACxB,OAAOnN,0BAA0B0G,MAAMZ,OAAQ2B,2BAC3C,MAAM8F,OAASlO,qBAAqBoI,0BACpC,OACI8F,cAAW,GAAahI,kBAAkBC,MAAOC,KAAM8H,OAAOjM,WAAW8G,SAAW,GAGhG,CCnrBA,IAAMoF,sBAAwB,EAG9B,SAASC,0BACL7G,QACAjB,cAEA,MAAMxD,OAAShD,kBAAkByH,QAAQ8G,OAAQtO,aACjD,MAAMuO,WAAahI,oBAAiB,EAAYiB,QAAQa,yBAA2B9B,aACnF,IAAKxD,SAAYyE,QAAQtF,WAAW8G,QAAUuF,YAAc,KAAO,OAAO,KAC1E,MAAMJ,OAASI,YAAc,UAAO,EAAYrO,sBAAsBqO,YACtE,GAAIA,aAAe,MAAQA,kBAAe,IAAcJ,OAAQ,OAAO,KACvE,OAAO9N,iBACHD,UAAU2C,QACVd,sBAAsBuF,QAAQtF,WAAa,IAC3C,EACAiM,aAAU,EAElB,CA2BO,SAASK,0BAA0BhH,SACtC,OAAO6G,0BAA0B7G,UAAY,EACjD,CAGA,SAASiH,iCACLjH,QACAjB,cAEA,MAAMxD,OAAShD,kBAAkByH,QAAQ8G,OAAQtO,aACjD,IAAK+C,OAAQ,MAAO,GACpB,MAAMb,UAAY+H,oBACdlH,OACAsL,0BAA0B7G,QAASjB,eAAiB,IAExD,MAAMgI,WAAahI,oBAAiB,EAAYiB,QAAQa,yBAA2B9B,aACnF,MAAMT,mBAAqByI,WACrBrO,sBAAsBqO,aAAazI,wBACnC,EACN,IAAKA,mBAAoB,OAAO5D,UAChC,IAAA,MAAWgI,OAAQ,CAAC,UAAW,UAAW,YAAa,YAAsB,CACzE,MAAMlI,MAAQ8D,mBAAmBoE,MACjC,MAAM9H,MAAQ9B,oBAAoB4J,MAAM,GACxC,GAAIlI,aAAU,GAAaI,aAAU,EAAW,SAChDF,UAAUiI,KAAK,CACXjB,MAAO9G,MACPmB,MAAOvB,MAAQzB,cAAc6B,OAC7BgI,eAAgBrH,OAAO+C,qBAAqBoE,OAAS,GAAK3J,cAAc6B,QAEhF,CACA,OAAOF,SACX,CAyBO,SAASwM,iCACZlH,SAEA,OAAOiH,iCAAiCjH,QAC5C,CAGA,SAASmH,kBAAkBvF,OAAgBD,UACvC,OAAOE,KAAKC,IAAIF,OAASD,WAAaE,KAAK9G,IAAI,KAAM8G,KAAKC,IAAIH,UAAY,KAC9E,CAGA,SAASyF,YAAYzM,SAA+BY,QAChD,OACI5C,cAAcgC,SAAS+G,MAAOnG,SAC9B,SAAS9B,aAAakB,SAAS+G,MAAO,uEAE9C,CAGA,SAAS2F,aAAazF,OAA6BD,UAC/C,GAAIA,SAAS5F,aAAU,EAAW,CAC9B,OAAO6F,OAAO7F,aAAU,GAAaoL,kBAAkBvF,OAAO7F,MAAO4F,SAAS5F,MAClF,CAGA,OAAO4F,SAASI,gBAAa,GAAaH,OAAOG,gBAAa,CAClE,CAGA,SAASuF,yBACLC,YACA5F,SACApG,QAEA,IAAIiM,QAAU,EACd,IAAA,MAAWC,aAAa9F,SAAU,CAC9B,MAAMC,OAAS2F,YAAY3J,IAAIwJ,YAAYK,UAAWlM,SACtD,IAAKqG,OAAQ,SACb,IAAKyF,aAAazF,OAAQ6F,WAAY,OAAO,MAC7CD,SACJ,CACA,OAAOA,SAAW3F,KAAK9G,IAAI,EAAG4G,SAASH,OAAS,EACpD,CAkDO,SAASkG,6BAA6BnM,QACzC,MAAM0G,YAAc1G,OAAOS,YAC3B,IAAKiG,YAAa,OAAO,KAGzBvI,uBAAuB6B,OAAOE,KAAM,6CACpC,MAAM6G,MAAQ/J,kBAAkBgD,OAAOE,KAAMjD,aAC7C,IAAK8J,MAAO,OAAO,KAEnB,MAAMqF,kBAAoBlO,aACtBwI,YAAYhG,cACZ,kEAEJ,MAAM2L,SAAWvP,yBAAyBkD,OAAOE,MACjD,MAAMoM,iBAAmBD,SAAS1I,OAC7BkD,WAAcA,UAAUhD,gBAAgB/D,gBAAkBsM,mBAE/D,MAAMG,eAAiBD,iBAAiBrG,SAAW,EAAIqG,iBAAiB,GAAM,KAC9E,MAAME,cAAgB9F,YAAY/F,MAClC,GACI4L,gBAAgB7H,cAAgB,aAChCpC,OAAOmK,UAAUD,gBACjBA,eAAiBD,eAAerI,OAChCsI,eAAiBnB,sBACnB,CACE,OAAOkB,cACX,CACA,GAAI7F,YAAY3F,iBAAc,EAAW,CACrC,MAAM2L,qBAAuBxO,aACzBwI,YAAY7F,mBACZ,uEAEJ,MAAM8L,gBAAkBL,iBAAiB3I,OACpCkD,WACGA,UAAUiE,oBAAsB,MAChCjE,UAAU3C,QAAUsI,gBACnB3F,UAAUvB,gCAA6B,EAClCoH,4BAAyB,GACzBhG,YAAY5F,oCAAiC,EAC7C+F,UAAUvB,yBAAyBxF,gBAAkB4M,uBAEnE,OAAOC,gBAAgB1G,SAAW,EAAI0G,gBAAgB,GAAM,IAChE,CACA,IAAKjG,YAAY3F,WAAWkF,OAAQ,OAAO,KAE3C,MAAM+F,2BAAA,IAAkBjK,IACxB,IAAA,MAAW3C,YAAYsH,YAAY3F,UAAW,CAC1CiL,YAAYnH,IAAIgH,YAAYzM,SAAU2H,OAAQ3H,SAClD,CACAjB,uBACIuI,YAAY7F,mBACZ,uEAEJ,MAAM+L,QAAkC,GACxC,IAAA,MAAW/F,aAAawF,SAAU,CAC9B,IAAKxF,UAAU1H,WAAW8G,OAAQ,SAClC,GAAIY,UAAU3C,QAAUwC,YAAY/F,MAAO,SAK3C,GACIkG,UAAUnC,cAAgB,gBACzBgC,YAAY7F,0BAAuB,GAChC6F,YAAY5F,oCAAiC,GAC7CsL,oBAAsBvF,UAAUhD,gBAAgB/D,eACtD,CACE,QACJ,CACA,MAAM+M,UAAYvB,0BACdzE,UACAH,YAAY7F,oBAAsB,MAEtC,IAAKgM,WAAW5G,OAAQ,SAIxB,MAAMgG,QACFF,yBAAyBC,YAAaa,UAAW9F,QACjDgF,yBACIC,YACAN,iCAAiC7E,UAAWH,YAAY7F,oBAAsB,MAC9EkG,OAER,GAAIkF,QAASW,QAAQxF,KAAKP,UAC9B,CACA,OAAO+F,QAAQ3G,SAAW,EAAI2G,QAAQ,GAAM,IAChD,CAuBO,SAASE,oBAAoBrI,SAChC,MAAMQ,SAAW,IAAI9B,IAAIsI,0BAA0BhH,SAASzF,IAAKI,UAAaA,SAAS+G,QACvF,OAAQ1B,QAAQtF,WAAa,IACxBH,IAAKI,UAAaA,SAASC,OAC3BsE,OAAQtE,QAAW4F,SAAS/D,IAAI7B,OACzC,CAqCO,SAAS0N,sBAAsBtI,SAClC,MAAMzE,OAAShD,kBAAkByH,QAAQ8G,OAAQtO,aACjD,IAAK+C,OAAQ,OAAO,KACpB,IACKyE,QAAQtF,WAAW8G,SACnBxB,QAAQqG,mBACTrG,QAAQa,gCAA6B,EAKrC,MAAO,IAAKtF,QAChB,MAAMb,UAAYsF,QAAQtF,WAAa,GACvC,MAAM8F,SAA6E,IAC5EjF,UACCyE,QAAQqG,kBAAoB,CAAEA,kBAAmB,MAAS,CAAA,GAElE,IAAA,MAAW3E,MAAEA,MAAA3F,MAAOA,MAAAgG,SAAOA,YAAciF,0BAA0BhH,SAAU,CACzE,MAAMuI,MAAQ5P,cAAc+I,MAAOnG,QAInC,GAAIgN,OAASA,QAAU,sBAAwBxM,aAAU,EAAW,CAChEwD,OAAOiJ,OAAOhI,SAAU,CAAE+H,CAACA,OAAQxM,MAAQhD,cAAc2I,QAC7D,MAAA,GAAW6G,OAASxG,gBAAa,GAAa9I,wBAAwByI,SAAW,KAAM,CACnFnC,OAAOiJ,OAAOhI,SAAU,CAAE+H,CAACA,OAAQ,MACvC,CACJ,CACA,MAAME,+BAAiCzI,QAAQa,yBACzCnI,sBAAsBsH,QAAQa,2BAA2BvC,wBACzD,EACN,GAAImK,+BAAgC,CAChCjI,SAASlC,mBAAqB,IAAKmK,uCAC5BjI,SAASjC,gBACpB,CAGA,GACIiC,SAASsE,kBAAe,IACvBpK,UAAUqF,KAAM2I,GAAMA,EAAE9N,QAAU,eACnCF,UAAUqF,KACL2I,GACGA,EAAE9N,QAAU,aACZ8N,EAAE9N,QAAU,mBACZ8N,EAAE9N,QAAU,iBAEtB,CACE,MAAMgJ,KAAOxL,mBAAmBoI,UAChC,GAAIoD,YAAS,EAAWpD,SAASsE,WAAalB,IAClD,CACA,GAAIrI,OAAOgD,mBAAqBkK,+BAAgC,CAC5DjI,SAASjC,iBAAmB3E,sBACxB2B,OAAOgD,iBACPhD,OAAOmI,OACPlD,SAASkD,OAEjB,CACA,OAAOlD,QACX,QAAAxF,YAAAsL,uBAAAI,0BAAArG,sBAAAH,mBAAAvE,mBAAAoC,iBAAA6C,yBAAAsG,iCAAAF,0BAAAsB,sBAAAZ,6BAAApM,oBAAAF,iBAAA6K,iCAAAhL,oBAAAwH,oBAAAlG,cAAAoC,kBAAA1B,kBAAA+E,yBAAAnF,SAAAsE,8BAAAvH,sBAAAyO"}
|
package/dist/chunk-JQG4C67D.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{RARE_COMMODITIES}from"./chunk-EYGVDJ2I.js";import{COMMODITIES}from"./chunk-7EE5VIHR.js";var ALL_COMMODITIES=Object.freeze([...COMMODITIES,...RARE_COMMODITIES]);export{ALL_COMMODITIES};//# sourceMappingURL=chunk-JQG4C67D.js.map
|
package/dist/chunk-OYFMHDYT.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{sourcePurchaseFromLoadout,getSourceModuleValue}from"./chunk-NIURLW2F.js";import{getShipBySymbol,getShipByName,getShipSlots}from"./chunk-6UNAD74Z.js";import{fixedSlotReason,validateLoadout}from"./chunk-B4ZSTOM4.js";import{calculateModuleLimits}from"./chunk-KPETDYQX.js";import{getDefaultLoadout}from"./chunk-GRIK3EDH.js";import{publishLoadoutInternals,effectiveModule}from"./chunk-VYDQHPY2.js";import{parseSlef,toSlef,stringifySlef,getLoadoutModifier}from"./chunk-OVUHQEH5.js";import{isNonOutfittingSlot,isBuiltInHullModule,cloneLoadoutModule,identifyPreEngineeredVariant,cloneModuleStats,availableBlueprintsFor,availableExperimentalsFor,ownKeyIn,FITTED_ITEM,blueprintAvailableFor,blueprintRoutesFor,experimentalAvailableFor,primitiveEngineeringInputsFor,missingBaseLabels,journalModifiersFor,getPreEngineeredStats,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,ordinaryEngineeringProof,unresolvedModifiers,matchingKeyIn,isCargoHatchSlot,isFinalGuardianWeaponEngineering,orderBySlotLayout}from"./chunk-GZYPQIO2.js";import{getPreEngineeredVariants}from"./chunk-PL75RTA2.js";import{builtInModuleBySymbol}from"./chunk-PA5EITW5.js";import{ALL_MODULES}from"./chunk-QY3L5BKN.js";import{singleJumpRange}from"./chunk-6O4NRRSB.js";import{calculateUnladenMass,calculateCargoCapacity,calculateFuelCapacity}from"./chunk-DCB4COCL.js";import{getExperimentalEffect}from"./chunk-77I24V6B.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{baseStats,computeModifiers,labelsForDamageType,scaleForLabel}from"./chunk-CJQ37JII.js";import{resolveBlueprintForModule}from"./chunk-OLKNYGGT.js";import{getExperimentalsForModule}from"./chunk-GLWPSVFV.js";import{getBlueprintGrade}from"./chunk-AYAKU4YA.js";import{loadoutSlotName}from"./chunk-KAA4VOOB.js";import{parseSlotName,enumerateSlots,SLOT_RESTRICTION_LABELS}from"./chunk-RAO35XDF.js";import{normalizeKey,CATALOGUE_KEY}from"./chunk-BKWLI44T.js";import{truncate,describeValue,requireString,requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var 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{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?.experimentalEffectSymbol!==void 0&&typeof engineering?.ExperimentalEffect==="string"&&variant.experimentalEffectSymbol.trim().toLowerCase()===engineering.ExperimentalEffect.trim().toLowerCase();if(variant&&catalogueVariantStats&&!catalogueVariantStats.engineeringLocked&&!retainsBakedExperimental){const{experimentalEffectSymbol:originalExperimental,...withoutExperimental}=variant;const currentExperimental=engineering?.ExperimentalEffect;const currentVariant=typeof currentExperimental==="string"?{...withoutExperimental,experimentalEffectSymbol: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.blueprintSymbol.toLowerCase()===normalizedBlueprint&&candidate.grade===engineering.Level&&candidate.experimentalEffectSymbol?.toLowerCase()===normalizedExperimental);const guardianBase=variants.find(candidate=>candidate.engineeringLocked===true&&candidate.blueprintSymbol.toLowerCase()===normalizedBlueprint&&candidate.grade===engineering.Level&&candidate.experimentalEffectSymbol===void 0);const stats=exact?getPreEngineeredStats(exact):guardianBase&&engineering.ExperimentalEffect!==void 0?getPreEngineeredStats({...guardianBase,experimentalEffectSymbol: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 FITTED_SLOT="ShipLoadout: fitted module Slot";var LoadoutEditError=class extends TypeError{code;constraint;params;constructor(message,code,params,constraint){super(message);this.code=code;this.params=deepFreeze(structuredClone(params));if(constraint!==void 0)this.constraint=constraint}};var experimentalEffectUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});var engineeringNormalizationUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});var AGGREGATE_STATS=["mass","cargoCapacity","fuelCapacity"];var ShipLoadout=class _ShipLoadout{#ship;#shipSymbol;#modules;#moduleStats;#primitiveModifiers;#top;#sourcePurchase;#importOutcomes;#slotCache=/* @__PURE__ */new Map;#layoutCache;constructor(ship,shipSymbol,modules,top,sourcePurchase=null,moduleStats=/* @__PURE__ */new Map,primitiveModifiers=/* @__PURE__ */new Map,importOutcomes=deepFreeze([])){this.#ship=ship;this.#shipSymbol=shipSymbol;this.#modules=modules;this.#top=top;this.#sourcePurchase=sourcePurchase;this.#moduleStats=moduleStats;this.#primitiveModifiers=primitiveModifiers;this.#importOutcomes=importOutcomes;publishLoadoutInternals(this,{ship:ship,modules:()=>[...this.#modules.values()],effectiveModules:()=>this.#modulesForEffectiveStats(),effectiveModule:module=>this.#moduleForEffectiveStats(module),statsFor:module=>this.#statsFor(module),layout:()=>this.#layout(),resolveDrive:()=>this.#resolveDrive(),frameShiftDriveModule:()=>this.#frameShiftDrive()?.module,calculationModules:()=>this.#calculationModules(),statedMainFuel:()=>this.#top.FuelCapacity?.Main})}static fromSlef(input,index=0){const entries=parseSlef(input);const entry=entries[index];if(!entry){throw new TypeError(`ShipLoadout.fromSlef: no entry at index ${truncate(index)} (have ${entries.length})`)}const imported=normalizeLoadoutEvent(entry.data);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromSlef: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static fromLoadout(event){if(event===null||typeof event!=="object"){throw new TypeError(`ShipLoadout.fromLoadout: event must be a Loadout event, received ${describeValue(event)}`)}const imported=normalizeLoadoutEvent(event);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromLoadout: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static#fromImported(imported,ship){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}validation(){const slots=this.#layout();const byKey=new Map(slots.map(slot=>[normalizeKey(slot.key,CATALOGUE_KEY),slot]));const modules=[...this.#modules.values()].map(module=>{const stats=this.#statsFor(module);const slot=byKey.get(normalizeKey(module.Slot,FITTED_SLOT));const builtIn=stats===null&&isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module);const fitProblem=stats&&slot&&!builtIn?moduleFitProblem(this.#shipSymbol,slot,stats):null;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(normalizeKey(fitted.Slot,FITTED_SLOT)===normalizeKey(slot.key,CATALOGUE_KEY))return[];const group=this.#statsFor(fitted)?.exclusionGroup;return group===void 0?[]:[group]}));const currentLimits=this.#moduleLimits();const currentStats=this.#moduleStatsAt(slot.key);return ALL_MODULES.filter(module=>moduleFitError(this.#shipSymbol,slot,module)===null&&(module.exclusionGroup===void 0||!occupied.has(module.exclusionGroup))&&this.#moduleLimitRegression(slot.key,module,currentLimits,currentStats)===null)}repairFixedMount(slotKey){const requested=requireString(slotKey,SLOT_KEY);const wanted=normalizeKey(requested,SLOT_KEY);const slot=this.#requireSlot(requested);const fittedKey=this.#fittedKey(requested);const resultSlot=fittedKey??requested;const canonicalKey=slot.key;if(fixedSlotReason(slot)===null){return deepFreeze({status:"refused",slot:resultSlot,reason:"notFixedMount"})}const current=this.#fittedModuleFor(requested);const currentStats=current?this.#statsFor(current):null;const valid=current!==void 0&¤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=>normalizeKey(module.slot,CATALOGUE_KEY)===wanted);if(!defaultModule){return deepFreeze({status:"defaultUnavailable",slot:resultSlot})}const ownKey=ownKeyIn(this.#modules,canonicalKey);const replacement={Slot:ownKey,Item:defaultModule.symbol,...current?.On===void 0?{}:{On:current.On},...current?.Priority===void 0?{}:{Priority:current.Priority},...current?.Health===void 0?{}:{Health:current.Health}};const replacementStats=builtInModuleBySymbol(defaultModule.symbol,"ShipLoadout.repairFixedMount")??(isBuiltInHullModule(replacement)?builtInModuleBySymbol("ModularCargoBayDoor","ShipLoadout.repairFixedMount"):null);if(!replacementStats){return deepFreeze({status:"defaultUnavailable",slot:resultSlot,symbol:defaultModule.symbol})}this.#replaceModule(ownKey,replacement,replacementStats);return deepFreeze({status:"repaired",slot:ownKey,symbol:defaultModule.symbol})}setModule(slotKey,module){const slot=this.#requireSlot(slotKey);if(module===null||module===void 0){throw new TypeError(`ShipLoadout.setModule: no module supplied for "${truncate(slotKey)}" (did the module lookup return undefined?)`)}if(typeof module.symbol!=="string"){throw new TypeError(`ShipLoadout.setModule: module for "${truncate(slotKey)}" must be an outfitting module, received ${describeValue(module)}`)}module=cloneModuleStats(module);const catalogued=builtInModuleBySymbol(module.symbol,FITTED_ITEM);if(catalogued===null){throw new TypeError(`ShipLoadout.setModule: no module is catalogued as "${truncate(module.symbol)}"`)}for(const field of AGGREGATE_STATS){const stated=module[field];if(stated===void 0){if(catalogued[field]===void 0)continue;throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" has no ${field}`)}if(typeof stated!=="number"||!Number.isFinite(stated)){throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" states a ${field} of ${describeValue(stated)}`)}}const 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=>normalizeKey(fitted.Slot,FITTED_SLOT)!==normalizeKey(slot.key,CATALOGUE_KEY)&&this.#statsFor(fitted)?.exclusionGroup===module.exclusionGroup);if(conflict){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${module.exclusionGroup} is limited to one per ship (already fitted in ${truncate(conflict.Slot)})`,"duplicateExclusiveModule",{exclusionGroup:module.exclusionGroup,slot:slot.key,symbol:module.symbol,previousSlot:conflict.Slot,previousSymbol:conflict.Item})}}const limitProblem=this.#moduleLimitRegression(slot.key,module);if(limitProblem!==null){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:slot.key,symbol:module.symbol})}const key=this.#fittedKey(slotKey)??slot.key;this.#replaceModule(key,{Slot:key,Item:module.symbol},module);return this}removeModule(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);if(wanted==="cargohatch"){throw new LoadoutEditError("ShipLoadout.removeModule: the cargoHatch slot cannot be changed","immutableSlot",{slot:"CargoHatch"})}const parsed=parseSlotName(slotKey);const slot=this.#layout().find(candidate=>normalizeKey(candidate.key,CATALOGUE_KEY)===wanted);if(parsed!==null&&fixedSlotReason(parsed)==="requiredSlot"){const fittedKey=this.#fittedKey(slotKey);const key2=slot?.key??fittedKey??slotKey;throw new LoadoutEditError(`ShipLoadout.removeModule: the ${truncate(key2)} slot is required and cannot be emptied`,"requiredSlot",{slot:key2})}const key=this.#fittedKey(slotKey);if(key!==null){const limitProblem=this.#moduleLimitRegression(key,null);if(limitProblem!==null){const fitted=this.#modules.get(key);throw new LoadoutEditError(`ShipLoadout.removeModule: ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:key,...fitted===void 0?{}:{symbol:fitted.Item}})}this.#replaceModule(key,null)}return this}applyBlueprint(slotKey,blueprintSymbol,options){requireString(blueprintSymbol,"ShipLoadout.applyBlueprint: blueprintSymbol");if(options===null||typeof options!=="object"){throw new TypeError(`ShipLoadout.applyBlueprint: options must be an object with a grade, received ${describeValue(options)}`)}const wantedGrade=options.grade;const wantedQuality=options.quality;const wantedExperimental=options.experimentalEffectSymbol??void 0;requireStringIfPresent(wantedExperimental,"ShipLoadout.applyBlueprint: options.experimentalEffectSymbol");const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout.applyBlueprint: slot "${truncate(slotKey)}" is empty`)}const fittedStats=this.#statsFor(module);if(!fittedStats){throw new TypeError(`ShipLoadout.applyBlueprint: no stats for module "${truncate(module.Item)}"`)}const recipe=resolveBlueprintForModule(module.Item,blueprintSymbol);const named=recipe===blueprintSymbol?`"${truncate(blueprintSymbol)}"`:`"${truncate(blueprintSymbol)}" (${truncate(recipe)} on this module)`;const written=blueprintSymbol.trim().toLowerCase();const resolved=recipe.trim().toLowerCase();if(getPreEngineeredVariants(module.Item).some(variant=>variant.acquisition==="eventReward"&&(variant.blueprintSymbol.toLowerCase()===written||variant.blueprintSymbol.toLowerCase()===resolved))){throw new TypeError(`ShipLoadout.applyBlueprint: ${named} is a fixed pre-engineered identity, not a craftable blueprint; use setPreEngineeredVariant to fit its fixed article`)}if(!Number.isInteger(wantedGrade)||wantedGrade<1||wantedGrade>5){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}const grade=getBlueprintGrade(recipe,wantedGrade);if(!grade){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}let experimental;if(wantedExperimental!==void 0){experimental=getExperimentalEffect(wantedExperimental);if(!experimental){throw new RangeError(`ShipLoadout.applyBlueprint: unknown experimental effect "${truncate(wantedExperimental)}"`)}}const quality=wantedQuality??1;if(!Number.isFinite(quality)||quality<0||quality>1){throw new RangeError(`ShipLoadout.applyBlueprint: quality must be a finite number in [0, 1]`)}if(fittedStats.engineeringLocked){throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is a final pre-engineered article and accepts no further engineering`)}if(!blueprintAvailableFor(module.Item,blueprintSymbol)){const offered=[...blueprintRoutesFor(module.Item)].map(([blueprint,route])=>`${blueprint} (${route})`);throw new TypeError(offered.length>0?`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered blueprint ${named}; available candidates are ${offered.join(", ")}`:`ShipLoadout.applyBlueprint: no registry lists an engineering menu for module "${truncate(module.Item)}"`)}if(wantedExperimental!==void 0&&!experimentalAvailableFor(module.Item,wantedExperimental)){const offered=getExperimentalsForModule(module.Item);throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered experimental effect "${truncate(wantedExperimental)}"; it takes ${offered.length>0?offered.join(", "):"no experimental effect"}`)}const stats=this.#engineeringBaseStats(module)??fittedStats;const base=baseStats(stats);const canonical=primitiveEngineeringInputsFor(stats,grade,experimental);const missing=missingBaseLabels(stats,base,canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){throw new TypeError(`ShipLoadout.applyBlueprint: cannot compute ${named} for module "${truncate(module.Item)}"; missing base stats for ${missing.join(", ")}`)}const damageDistribution=experimental?.damageDistribution??grade.damageDistribution;const primitiveModifiers=computeModifiers(base,canonical.grade,quality,canonical.experimental);const modifiers=journalModifiersFor(stats,primitiveModifiers);if(damageDistribution){for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];if(value===void 0)continue;const label=labelsForDamageType(type)[0];if(label===void 0)continue;const damageModifier={Label:label,Value:value*scaleForLabel(label),OriginalValue:(stats.damageDistribution?.[type]??0)*scaleForLabel(label)};modifiers.push(damageModifier);primitiveModifiers.push(damageModifier)}}const engineering={BlueprintName:blueprintSymbol,Level:wantedGrade,Quality:quality,...wantedExperimental!==void 0?{ExperimentalEffect:wantedExperimental}:{},Modifiers:modifiers};this.#replaceModule(module.Slot,{...module,Engineering:engineering},stats,primitiveModifiers);return this}setExperimentalEffect(slotKey,experimental){if(experimental!==null){requireString(experimental,"ShipLoadout.setExperimentalEffect: experimental")}const wanted=experimental;const module=this.#fittedModuleFor(slotKey);if(!module)return experimentalEffectUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return experimentalEffectUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return experimentalEffectUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}const previous=engineering.ExperimentalEffect??null;if(previous===null&&wanted===null||previous!==null&&wanted!==null&&previous.trim().toLowerCase()===wanted.trim().toLowerCase()){return deepFreeze({kind:"unchanged",experimentalEffectSymbol:previous})}const variant=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?.experimentalEffectSymbol!==void 0&&variant.experimentalEffectSymbol.trim().toLowerCase()===wanted.trim().toLowerCase();if(!experimentalAvailableFor(module.Item,wanted)&&!restoresBakedEffect){return experimentalEffectUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:wanted})}}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=wanted===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:wanted};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:engineering.Quality,...wanted===null?{}:{ExperimentalEffect:wanted},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const blueprint=engineering.BlueprintName;const grade=engineering.Level;const quality=engineering.Quality;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const currentEffect=previous===null?void 0:getExperimentalEffect(previous)??null;if(ordinaryEngineeringProof(module.Item,engineering,currentEffect)==="unproven"){return experimentalEffectUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)||!Number.isFinite(quality)||quality<0||quality>1){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:quality,...wanted===null?{}:{experimentalEffectSymbol:wanted}})}return deepFreeze({kind:"updated",previousExperimentalEffectSymbol:previous,experimentalEffectSymbol:wanted})}completeEngineeringGrade(slotKey){const module=this.#fittedModuleFor(slotKey);if(!module)return engineeringNormalizationUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return engineeringNormalizationUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return engineeringNormalizationUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}if(engineering.Quality===1&&engineering.Modifiers!==void 0){return deepFreeze({kind:"unchanged"})}const previousQuality=engineering.Quality;if(!Number.isFinite(previousQuality)||previousQuality<0||previousQuality>1){return engineeringNormalizationUnsupported("invalidQuality",{slot:module.Slot,symbol:module.Item})}const experimental=engineering.ExperimentalEffect??null;const effect=experimental===null?void 0:getExperimentalEffect(experimental)??void 0;if(experimental!==null&&!effect){return engineeringNormalizationUnsupported("unknownExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}const blueprint=engineering.BlueprintName;const grade=engineering.Level;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const variant=identifyPreEngineeredVariant(module);const restoresBakedEffect=variant?.experimentalEffectSymbol!==void 0&&variant.experimentalEffectSymbol.trim().toLowerCase()===experimental?.trim().toLowerCase();if(experimental!==null&&!experimentalAvailableFor(module.Item,experimental)&&!restoresBakedEffect){return engineeringNormalizationUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=experimental===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:experimental};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:1,...experimental===null?{}:{ExperimentalEffect:experimental},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const proof=ordinaryEngineeringProof(module.Item,engineering,effect);if(proof==="unproven"||proof==="proven"&&!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:1,...experimental===null?{}:{experimentalEffectSymbol:experimental}})}return deepFreeze({kind:"normalized",previousQuality:previousQuality,quality:1})}setPreEngineeredVariant(slotKey,variant){if(variant===null||typeof variant!=="object"){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: variant must be a pre-engineered variant, received ${describeValue(variant)}`)}requireString(variant.symbol,"ShipLoadout.setPreEngineeredVariant: variant.symbol");requireString(variant.blueprintSymbol,"ShipLoadout.setPreEngineeredVariant: variant.blueprintSymbol");requireString(variant.acquisition,"ShipLoadout.setPreEngineeredVariant: variant.acquisition");requireStringIfPresent(variant.experimentalEffectSymbol,"ShipLoadout.setPreEngineeredVariant: variant.experimentalEffectSymbol");const known=getPreEngineeredVariants(variant.symbol).find(candidate=>candidate.blueprintSymbol.toLowerCase()===variant.blueprintSymbol.toLowerCase()&&candidate.grade===variant.grade&&(candidate.experimentalEffectSymbol?.toLowerCase()??"")===(variant.experimentalEffectSymbol?.toLowerCase()??"")&&candidate.acquisition===variant.acquisition);if(!known){throw new RangeError(`ShipLoadout.setPreEngineeredVariant: no catalogued variant "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"`)}const stats=getPreEngineeredStats(known);const unresolved=unresolvedModifiers(known);if(unresolved.length>0){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: cannot resolve "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"; missing base stats for ${unresolved.join(", ")}`)}this.setModule(slotKey,stats);const module=this.#fittedModuleFor(slotKey);const engineering={BlueprintName:known.blueprintSymbol,Level:known.grade,Quality:1,...known.experimentalEffectSymbol===void 0?{}:{ExperimentalEffect:known.experimentalEffectSymbol},...known.modifiers?.length?{Modifiers:getPreEngineeredJournalModifiers(known)}:{}};this.#replaceModule(module.Slot,{...module,Engineering:engineering},cloneModuleStats(stats),getPreEngineeredModifiers(known));return this}clearEngineering(slotKey){const module=this.#fittedModuleFor(slotKey);if(module&&this.#statsFor(module)?.engineeringLocked){throw new TypeError(`ShipLoadout.clearEngineering: module "${truncate(module.Item)}" is a final pre-engineered article and its engineering cannot be removed`)}if(module?.Engineering){const baseStats2=this.#engineeringBaseStats(module);const bare={Slot:module.Slot,Item:module.Item};if(module.On!==void 0)bare.On=module.On;if(module.Priority!==void 0){bare.Priority=module.Priority}if(module.Health!==void 0)bare.Health=module.Health;if(module.Value!==void 0)bare.Value=module.Value;this.#replaceModule(module.Slot,bare,baseStats2??void 0)}return this}setModuleEnabled(slotKey,on){this.#patchModule(slotKey,{On:on});return this}setModulePriority(slotKey,priority){if(!Number.isInteger(priority)||priority<0||priority>4){throw new RangeError(`ShipLoadout: power priority must be an integer 0-4, got ${truncate(priority)}`)}this.#patchModule(slotKey,{Priority:priority});return this}#patchModule(slotKey,patch){const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout: slot "${truncate(slotKey)}" is empty`)}this.#modules.set(module.Slot,cloneLoadoutModule({...module,...patch}));this.#slotCache.clear()}toLoadoutEvent(options={}){const unladenMass=this.#computedUnladenMass();const cargoCapacity=this.#computedCargoCapacity();const fuel=this.#computedFuelCapacity();const maxJumpRange=this.#exportableJumpRange(unladenMass);return exportLoadoutEvent({shipSymbol:this.#shipSymbol,...this.#top.ShipName===void 0?{}:{shipName:this.#top.ShipName},...this.#top.ShipIdent===void 0?{}:{shipIdent:this.#top.ShipIdent},modules:this.#modules,layout:this.#layout(),sourcePurchase:this.#sourcePurchase,retailHullValue:this.#ship.hullCost,unladenMass:unladenMass,cargoCapacity:cargoCapacity,fuelCapacity:fuel,maxJumpRange:maxJumpRange,sourceTotalsVoided:this.#importOutcomes.some(outcome=>outcome.sourceSymbol===null&&parseSlotName(outcome.slot)?.kind==="core"),statsFor:module=>this.#statsFor(module)},options)}toSlef(options){return toSlef(this.toLoadoutEvent(options),options.header)}toSlefString(options){return stringifySlef(this.toSlef(options),{indent:options.indent??0})}#exportableJumpRange(unladenMass){let drive;try{drive=this.#resolveDrive()}catch{return null}if(drive===null)return null;const tank=this.#computedFuelCapacity();return singleJumpRange(unladenMass,Math.min(tank.main,drive.maxFuel),drive)}#layout(){if(this.#layoutCache===void 0){this.#layoutCache=Object.freeze(enumerateSlots(this.#ship))}return this.#layoutCache}#requireSlot(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);const slot=this.#layout().find(s=>normalizeKey(s.key,CATALOGUE_KEY)===wanted);if(!slot){throw new RangeError(`ShipLoadout: hull "${truncate(this.#shipSymbol)}" has no slot "${truncate(slotKey)}"`)}return slot}#fittedKey(slotKey){return matchingKeyIn(this.#modules,normalizeKey(slotKey,SLOT_KEY))}#fittedModuleFor(slotKey){const key=this.#fittedKey(slotKey);return key===null?void 0:this.#modules.get(key)}#calculationModules(){return[...this.#modules.values()].map(module=>({mass:this.#moduleMass(module),cargoCapacity:this.#moduleCapacity(module,"CargoCapacity","cargoCapacity"),fuelCapacity:this.#moduleCapacity(module,"FuelCapacity","fuelCapacity")}))}#moduleLimits(){const entries=[...this.#modules.values()].flatMap(module=>{const stats=this.#statsFor(module);return stats===null?[]:[stats]});return calculateModuleLimits(entries)}#moduleStatsAt(slotKey){const fitted=this.#fittedModuleFor(slotKey);return fitted===void 0?null:this.#statsFor(fitted)}#engineeringBaseStats(module){const fitted=this.#statsFor(module);if(!module.Engineering||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-OYFMHDYT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/internal/loadout-fitting.ts","../src/ships/internal/loadout-export.ts","../src/ships/internal/loadout-import.ts","../src/ships/ship-loadout.ts"],"names":["sourcePurchaseFromLoadout","getSourceModuleValue","getShipBySymbol","getShipByName","getShipSlots","fixedSlotReason","validateLoadout","calculateModuleLimits","getDefaultLoadout","publishLoadoutInternals","effectiveModule","parseSlef","toSlef","stringifySlef","getLoadoutModifier","isNonOutfittingSlot","isBuiltInHullModule","cloneLoadoutModule","identifyPreEngineeredVariant","cloneModuleStats","availableBlueprintsFor","availableExperimentalsFor","ownKeyIn","FITTED_ITEM","blueprintAvailableFor","blueprintRoutesFor","experimentalAvailableFor","primitiveEngineeringInputsFor","missingBaseLabels","journalModifiersFor","getPreEngineeredStats","getPreEngineeredJournalModifiers","getPreEngineeredModifiers","ordinaryEngineeringProof","unresolvedModifiers","matchingKeyIn","isCargoHatchSlot","isFinalGuardianWeaponEngineering","orderBySlotLayout","getPreEngineeredVariants","builtInModuleBySymbol","ALL_MODULES","singleJumpRange","calculateUnladenMass","calculateCargoCapacity","calculateFuelCapacity","getExperimentalEffect","ammunitionCapacity","baseStats","computeModifiers","labelsForDamageType","scaleForLabel","resolveBlueprintForModule","getExperimentalsForModule","getBlueprintGrade","loadoutSlotName","parseSlotName","enumerateSlots","SLOT_RESTRICTION_LABELS","normalizeKey","CATALOGUE_KEY","truncate","describeValue","requireString","requireStringIfPresent","deepFreeze","MILITARY_PREFIXES","MINING_PREFIXES","CARGO_PREFIXES","RESTRICTED_SLOT_PREFIXES","mining","military","cargo","limpetController","vesselHangar","passenger","planetaryApproachSuite","problem","constraint","message","params","restrictionProblem","slot","symbol","restriction","some","prefix","startsWith","moduleSlotProblem","module","required","restrictedToSlot","moduleFitProblem","shipSymbol","kind","hull","ship","toLowerCase","name","armourHull","armourShipName","armourShipSymbol","shipName","restricted","restrictedToShips","allowedShipNames","map","labels","index","join","allowedShipSymbols","wrongMount","moduleSlot","core","requiredCore","category","isFuelTank","class","size","moduleClass","slotSize","moduleFitError","REBUY_FRACTION","exportLoadoutEvent","input","options","fromSource","credits","source","sourcePurchase","totals","sourceTotalsVoided","sourceTotalsHold","modules","hullValue","retailHullValue","modulesValue","computedModulesValue","statsFor","rebuy","Math","trunc","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","On","explicitPower","priority","Priority","value","sourceModuleValue","moduleValue","Slot","Item","Health","Value","Engineering","sum","stats","cost","SOURCE_ITEM","entry","item","moduleValues","key","fitted","get","captureLoadoutEvent","event","Array","isArray","captureEach","captureModule","capture","captured","length","push","health","engineering","captureEngineering","experimental","ExperimentalEffect","experimentalLocalised","ExperimentalEffect_Localised","modifiers","Modifiers","BlueprintName","Level","Quality","modifier","hullLayout","slots","fixedMountRejects","mount","find","candidate","normalizeLoadoutEvent","rawEvent","TypeError","Map","Set","entries","Label","normalizedSlot","has","add","set","top","invalidatesAggregates","outcomes","defaults","slotKind","fallback","rejected","action","sourceSymbol","replacementSymbol","delete","moduleStats","primitiveModifiers","variant","catalogueVariantStats","variantStats","retainsBakedExperimental","experimentalEffectSymbol","trim","engineeringLocked","originalExperimental","withoutExperimental","currentExperimental","currentVariant","guardianFinal","normalizedBlueprint","normalizedExperimental","variants","exact","blueprintSymbol","grade","guardianBase","SLOT_KEY","FITTED_SLOT","LoadoutEditError","code","constructor","super","this","structuredClone","experimentalEffectUnsupported","engineeringNormalizationUnsupported","AGGREGATE_STATS","ShipLoadout","_ShipLoadout","importOutcomes","slotCache","layoutCache","effectiveModules","modulesForEffectiveStats","moduleForEffectiveStats","resolveDrive","frameShiftDriveModule","frameShiftDrive","calculationModules","statedMainFuel","fromSlef","imported","data","fromImported","fromLoadout","empty","requested","filter","parsed","loadout","computedUnladenMass","hullMass","cap","Object","freeze","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","effective","effectiveStats","ammunition","preEngineeredVariant","fittedModules","keys","flatMap","availableBlueprints","availableExperimentalEffects","modulesForSlot","requireSlot","occupied","group","currentStats","repairFixedMount","wanted","fittedKey","resultSlot","canonicalKey","status","reason","current","valid","defaultModule","ownKey","replacement","replacementStats","replaceModule","setModule","catalogued","field","stated","Number","isFinite","conflict","previousSlot","previousSymbol","limitProblem","count","limit","removeModule","applyBlueprint","wantedGrade","wantedQuality","quality","wantedExperimental","RangeError","fittedStats","recipe","named","written","resolved","acquisition","isInteger","offered","blueprint","route","engineeringBaseStats","base","canonical","missing","features","damageDistribution","type","label","damageModifier","OriginalValue","setExperimentalEffect","previous","effect","restoresBakedEffect","stock","originalEffect","withoutEffect","adjusted","currentEffect","blueprintGrade","previousExperimentalEffectSymbol","completeEngineeringGrade","previousQuality","proof","setPreEngineeredVariant","known","unresolved","clearEngineering","bare","setModuleEnabled","patchModule","setModulePriority","patch","clear","toLoadoutEvent","fuel","exportableJumpRange","hullCost","outcome","header","toSlefString","indent","drive","tank","min","maxFuel","s","mass","moduleMass","moduleCapacity","usage","increase","amount","baseLimit","excess","max","adjustImportedFigures","next","nextStats","statsOverride","modified","modifierLabel","m","fsd","fsdModule","fuelMul","fuelPower","optMass","jumpBoost","resolveJumpBoost","engineeringGroup"],"mappings":"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"}
|
package/dist/chunk-PY5L6WC5.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{weaponsCapacitorMetrics}from"./chunk-RRYBSAPX.js";import{shieldCapacitorMetrics}from"./chunk-6L56LWTT.js";import{cellBankSummary,shieldRecovery}from"./chunk-4KJ7CR74.js";import{loadoutInternals,fittedThrusterParamsFor,powerConsumerFor,powerAvailable,heatInputResultFor,completeResult,cellBankInputsFor,armourInputFor,weaponStatsFor,weaponsCapacitorInputFor,mobilityInputResultFor,shieldInputResultFor,shieldCapacitorInputResultFor,shieldRecoveryInputResultFor,distributorInputResultFor,incompleteResult}from"./chunk-VYDQHPY2.js";import{isNonOutfittingSlot,isBuiltInHullModule,identifyPreEngineeredVariant,orderBySlotLayout}from"./chunk-GZYPQIO2.js";import{weaponMetrics,sumWeaponMetrics}from"./chunk-7TQ2X6Q3.js";import{shieldMetrics}from"./chunk-QTAMQ6ME.js";import{powerBudget}from"./chunk-D6YEHR5S.js";import{frameShiftDriveMassFactor,singleJumpRange,fuelPerJump,totalRange}from"./chunk-6O4NRRSB.js";import{calculateUnladenMass}from"./chunk-DCB4COCL.js";import{mobilityCapacitorMetrics}from"./chunk-XUHAPOM6.js";import{mobilityMetrics}from"./chunk-Y6KJJMIM.js";import{distributorMetrics}from"./chunk-YXPZ7QQB.js";import{getExperimentalEffectCost}from"./chunk-CJK2IBI2.js";import{heatMetrics}from"./chunk-Q2L75GSI.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{armourMetrics}from"./chunk-FYVPZBXN.js";import{getBlueprintCost}from"./chunk-MTJ4MS7W.js";import{sumMaterials}from"./chunk-CJQ37JII.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var FACADE="BuildMetrics";function requireLoadOptions(scope,options){for(const field of["fuel","cargo"]){const value=options[field];if(value!==void 0&&(!Number.isFinite(value)||value<0)){throw new RangeError(`${scope}: ${field} must be a finite non-negative number`)}}}function requirePipAllocation(scope,name,value){if(!Number.isFinite(value)||value<0||value>4){throw new RangeError(`${scope}: ${name} must be a finite number from 0 to 4`)}return value}var BuildMetrics=class _BuildMetrics{#build;#state;constructor(build,state){this.#build=build;this.#state=state}static of(build){return new _BuildMetrics(build,loadoutInternals(build,`${FACADE}.of: build`))}loadout(){return this.#build}frameShiftDrive(){const drive=this.#state.resolveDrive();if(drive===null){throw new TypeError(`${FACADE}: build has no frame shift drive`)}return drive}thrusters(){return fittedThrusterParamsFor(this.#state.modules(),this.#state.statsFor)}frameShiftDriveMassFactor(options={}){requireLoadOptions(`${FACADE}.frameShiftDriveMassFactor`,options);return frameShiftDriveMassFactor(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}maxJumpRange(){const fsd=this.frameShiftDrive();return singleJumpRange(this.#loadedMass(0),this.#maxJumpFuel(fsd),fsd)}jumpRange(options={}){requireLoadOptions(`${FACADE}.jumpRange`,options);return singleJumpRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}ladenJumpRange(){return this.jumpRange({cargo:this.#build.cargoCapacity})}fuelPerJump(distance,options={}){requireLoadOptions(`${FACADE}.fuelPerJump`,options);return fuelPerJump(distance,this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}totalRange(options={}){requireLoadOptions(`${FACADE}.totalRange`,options);return totalRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}standardLoad(load){return this.#standardLoad("standardLoad",load).value}standardLoadResult(load){return this.#standardLoad("standardLoadResult",load)}jumpRangeSummary(){const maximum=this.#require(this.standardLoadResult("maximum"),"maximum load");const unladen=this.#require(this.standardLoadResult("unladen"),"unladen load");const laden=this.#require(this.standardLoadResult("laden"),"laden load");return{max:this.jumpRange(maximum),unladen:this.jumpRange(unladen),laden:this.jumpRange(laden),totalMax:this.totalRange(maximum),totalUnladen:this.totalRange(unladen),totalLaden:this.totalRange(laden)}}buildMass(options={}){requireLoadOptions(`${FACADE}.buildMass`,options);const unladen=this.#build.unladenMass;const fuel=options.fuel??this.#build.fuelCapacity.main;const cargo=options.cargo??0;return Object.freeze({hull:this.#state.ship.hullMass,modules:calculateUnladenMass(0,this.#state.calculationModules()),unladen:unladen,fuel:fuel,cargo:cargo,total:unladen+fuel+cargo})}buildCost(){const hull=this.#state.ship.hullCost;let modules=0;let mercCoins=0;const unpriced=[];const materials=[];for(const module of this.#state.modules()){const stats=this.#state.statsFor(module);if(stats?.cost!==void 0){modules+=stats.cost}else if(stats!==null||!isNonOutfittingSlot(module.Slot)&&!isBuiltInHullModule(module)){unpriced.push({slot:module.Slot,symbol:module.Item})}const variant=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?.experimentalEffectSymbol?.toLowerCase()){const cost=getExperimentalEffectCost(experimental);if(cost)materials.push(cost)}}return deepFreeze({credits:{total:hull+modules,hull:hull,modules:modules,rebuy:Math.trunc((hull+modules)*.05),unpriced:unpriced},mercCoins:mercCoins,materials:sumMaterials(...materials)})}powerBudget(){const modules=this.#state.modules();const consumers=[];for(const module of modules){const consumer=powerConsumerFor(module,this.#state.statsFor(module));if(consumer)consumers.push(consumer)}return powerBudget(powerAvailable(modules,this.#state.statsFor),consumers)}heatMetrics(){return this.heatMetricsResult().value}heatMetricsResult(){const input=heatInputResultFor(this.#state.ship,this.#state.effectiveModules(),this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(heatMetrics(input.value)):input}mobilityMetrics(options={}){return this.#mobility("mobilityMetrics",options).value}mobilityMetricsResult(options={}){return this.#mobility("mobilityMetricsResult",options)}mobilityCapacitorMetrics(options={}){return this.#mobilityCapacitor("mobilityCapacitorMetrics",options).value}mobilityCapacitorMetricsResult(options={}){return this.#mobilityCapacitor("mobilityCapacitorMetricsResult",options)}shieldMetrics(){return this.#shields().value}shieldMetricsResult(){return this.#shields()}shieldCapacitorMetrics(options={}){return this.#shieldCapacitor("shieldCapacitorMetrics",options).value}shieldCapacitorMetricsResult(options={}){return this.#shieldCapacitor("shieldCapacitorMetricsResult",options)}shieldRecovery(options={}){return this.#recovery("shieldRecovery",options).value}shieldRecoveryResult(options={}){return this.#recovery("shieldRecoveryResult",options)}cellBanks(){return cellBankSummary(orderBySlotLayout(cellBankInputsFor(this.#state.modules(),this.powerBudget(),this.#state.statsFor),this.#state.layout(),bank=>bank.slot))}armourMetrics(){return armourMetrics(armourInputFor(this.#state.ship,this.#state.modules(),this.#state.statsFor))}weaponMetrics(){const weapons=[];for(const module of this.#state.modules()){const record=this.#state.statsFor(module);const stats=weaponStatsFor(this.#state.effectiveModule(module),record);if(!stats)continue;weapons.push({slot:module.Slot,symbol:module.Item,name:record?.name??module.Item,enabled:module.On!==false,metrics:weaponMetrics(stats),ammunition:ammunitionCapacity(stats),...stats.maximumRange===void 0?{}:{maximumRange:stats.maximumRange},...stats.falloffRange===void 0?{}:{falloffRange:stats.falloffRange},...stats.projectileRange===void 0?{}:{projectileRange:{...stats.projectileRange}},...stats.armourPiercing===void 0?{}:{armourPiercing:stats.armourPiercing}})}const orderedWeapons=orderBySlotLayout(weapons,this.#state.layout(),weapon=>weapon.slot);return{weapons:orderedWeapons,total:sumWeaponMetrics(orderedWeapons.filter(weapon=>weapon.enabled).map(weapon=>weapon.metrics))}}weaponsCapacitorMetrics(options={}){const weaponsPips=requirePipAllocation(`${FACADE}.weaponsCapacitorMetrics`,"weaponsPips",options.weaponsPips??4);return weaponsCapacitorMetrics(weaponsCapacitorInputFor(this.#state.effectiveModules(),weaponsPips,this.powerBudget(),this.#state.statsFor))}distributorMetrics(options={}){return this.#distributor("distributorMetrics",options).value}distributorMetricsResult(options={}){return this.#distributor("distributorMetricsResult",options)}#mobility(method,options){const input=this.#mobilityInput(`${FACADE}.${method}`,options);return input.complete?completeResult(mobilityMetrics(input.value)):input}#mobilityCapacitor(method,options){const scope=`${FACADE}.${method}`;const enginesPips=requirePipAllocation(scope,"enginesPips",options.enginesPips??4);const input=this.#mobilityInput(scope,options);return input.complete?completeResult(mobilityCapacitorMetrics({...input.value,enginesPips:enginesPips})):input}#mobilityInput(scope,options){requireLoadOptions(scope,options);return mobilityInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),()=>this.#loadedMass(options.cargo??0)+(options.fuel??this.#state.statedMainFuel()??this.#build.fuelCapacity.main),this.#state.statsFor)}#shields(){const input=shieldInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(shieldMetrics(input.value)):input}#shieldCapacitor(method,options){const systemsPips=requirePipAllocation(`${FACADE}.${method}`,"systemsPips",options.systemsPips??4);const input=shieldCapacitorInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldCapacitorMetrics(input.value)):input}#recovery(method,options){const systemsPips=requirePipAllocation(`${FACADE}.${method}`,"systemsPips",options.systemsPips??4);const input=shieldRecoveryInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldRecovery(input.value)):input}#distributor(method,options){const scope=`${FACADE}.${method}`;const pips={systemsPips:requirePipAllocation(scope,"systemsPips",options.systemsPips??4),enginesPips:requirePipAllocation(scope,"enginesPips",options.enginesPips??4),weaponsPips:requirePipAllocation(scope,"weaponsPips",options.weaponsPips??4)};const input=distributorInputResultFor(this.#state.effectiveModules(),pips,this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(distributorMetrics(input.value)):input}#standardLoad(method,load){if(load!=="maximum"&&load!=="unladen"&&load!=="laden"){throw new RangeError(`${FACADE}.${method}: load must be 'maximum', 'unladen', or 'laden'`)}const fuel=this.#build.fuelCapacity;const cargo=load==="laden"?this.#build.cargoCapacity:0;const mass=load==="maximum"?this.#build.unladenMass:0;let drive=null;let maximumFuel=null;if(load==="maximum"){const fitted=this.#state.frameShiftDriveModule();let driveError=null;try{drive=this.#state.resolveDrive();maximumFuel=drive?.maxFuel??null}catch(error){if(!(error instanceof Error))throw error;driveError=error}if(maximumFuel===null){return incompleteResult([{field:"frameShiftDrive",reason:fitted?"unresolved":"missing",slot:fitted?.Slot??"FrameShiftDrive",...fitted?{symbol:fitted.Item}:{},message:driveError?.message??"FrameShiftDrive: no frame shift drive is fitted",params:fitted?{field:"frameShiftDrive",reason:"unresolved",slot:fitted.Slot,symbol:fitted.Item}:{field:"frameShiftDrive",reason:"missing",slot:"FrameShiftDrive"}}])}}const carriedFuel=load==="maximum"?Math.min(fuel.main,maximumFuel):fuel.main;const value=Object.freeze({fuel:carriedFuel,cargo:cargo,mass:this.#build.unladenMass+carriedFuel+cargo});if(load==="maximum"){try{this.jumpRange(value)}catch(error){if(!(error instanceof RangeError))throw error;const fitted=this.#state.frameShiftDriveModule();const field=drive!==null&&(!Number.isFinite(drive.maxFuel)||drive.maxFuel<0)?"frameShiftDrive":!Number.isFinite(value.fuel)||value.fuel<0?"fuelCapacity":!Number.isFinite(mass)||mass<0?"mass":"frameShiftDrive";const driveParams=field==="frameShiftDrive"&&fitted?{slot:fitted.Slot,symbol:fitted.Item}:{};return incompleteResult([{field:field,reason:"invalid",...driveParams,message:error.message,params:{field:field,reason:"invalid",...driveParams}}])}}return completeResult(value)}#require(result,what){if(result.value===null){throw new TypeError(`${FACADE}: cannot determine ${what} (${result.issues.map(issue=>issue.message).join("; ")})`)}return result.value}#loadedMass(cargo){return this.#build.unladenMass+cargo}#maxJumpFuel(fsd){return Math.min(this.#build.fuelCapacity.main,fsd.maxFuel)}};export{BuildMetrics};//# sourceMappingURL=chunk-PY5L6WC5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/build-metrics.ts"],"names":["weaponsCapacitorMetrics","shieldCapacitorMetrics","cellBankSummary","shieldRecovery","loadoutInternals","fittedThrusterParamsFor","powerConsumerFor","powerAvailable","heatInputResultFor","completeResult","cellBankInputsFor","armourInputFor","weaponStatsFor","weaponsCapacitorInputFor","mobilityInputResultFor","shieldInputResultFor","shieldCapacitorInputResultFor","shieldRecoveryInputResultFor","distributorInputResultFor","incompleteResult","isNonOutfittingSlot","isBuiltInHullModule","identifyPreEngineeredVariant","orderBySlotLayout","weaponMetrics","sumWeaponMetrics","shieldMetrics","powerBudget","frameShiftDriveMassFactor","singleJumpRange","fuelPerJump","totalRange","calculateUnladenMass","mobilityCapacitorMetrics","mobilityMetrics","distributorMetrics","getExperimentalEffectCost","heatMetrics","ammunitionCapacity","armourMetrics","getBlueprintCost","sumMaterials","deepFreeze","FACADE","requireLoadOptions","scope","options","field","value","Number","isFinite","RangeError","requirePipAllocation","name","BuildMetrics","_BuildMetrics","build","state","constructor","this","of","loadout","frameShiftDrive","drive","resolveDrive","TypeError","thrusters","modules","statsFor","loadedMass","cargo","fuel","fuelCapacity","main","maxJumpRange","fsd","maxJumpFuel","jumpRange","ladenJumpRange","cargoCapacity","distance","standardLoad","load","standardLoadResult","jumpRangeSummary","maximum","require","unladen","laden","max","totalMax","totalUnladen","totalLaden","buildMass","unladenMass","Object","freeze","hull","ship","hullMass","calculationModules","total","buildCost","hullCost","mercCoins","unpriced","materials","module","stats","cost","Slot","push","slot","symbol","Item","variant","mercCoinCost","engineering","Engineering","grade","Level","bought","isInteger","climb","BlueprintName","experimental","ExperimentalEffect","toLowerCase","experimentalEffectSymbol","credits","rebuy","Math","trunc","consumers","consumer","heatMetricsResult","input","effectiveModules","complete","mobility","mobilityMetricsResult","mobilityCapacitor","mobilityCapacitorMetricsResult","shields","shieldMetricsResult","shieldCapacitor","shieldCapacitorMetricsResult","recovery","shieldRecoveryResult","cellBanks","layout","bank","weapons","record","effectiveModule","enabled","On","metrics","ammunition","maximumRange","falloffRange","projectileRange","armourPiercing","orderedWeapons","weapon","filter","map","weaponsPips","distributor","distributorMetricsResult","method","mobilityInput","enginesPips","statedMainFuel","systemsPips","pips","mass","maximumFuel","fitted","frameShiftDriveModule","driveError","maxFuel","error","Error","reason","message","params","carriedFuel","min","driveParams","result","what","issues","issue","join"],"mappings":"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"}
|
package/dist/chunk-Q2L75GSI.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var OVERHEAT_HEAT_LEVEL=1.5;var DRAINED_CAPACITOR_MULTIPLIER=5;function equilibriumHeatLevel(dissipation,thermalLoad){requireNonNegative("equilibriumHeatLevel","dissipation",dissipation);requireNonNegative("equilibriumHeatLevel","thermal load",thermalLoad);if(dissipation===0)return thermalLoad===0?0:Infinity;return Math.sqrt(thermalLoad/dissipation)}function effectiveWeaponThermalLoad(thermalLoad,distributorDraw,weaponsCapacity,capacitorLevel){requireNonNegative("effectiveWeaponThermalLoad","thermal load",thermalLoad);requireNonNegative("effectiveWeaponThermalLoad","distributor draw",distributorDraw);requireNonNegative("effectiveWeaponThermalLoad","weapons capacity",weaponsCapacity);requireNonNegative("effectiveWeaponThermalLoad","capacitor level",capacitorLevel);if(capacitorLevel>1){throw new RangeError("effectiveWeaponThermalLoad: capacitor level must be at most 1")}if(weaponsCapacity===0){return thermalLoad*(distributorDraw>0?DRAINED_CAPACITOR_MULTIPLIER:1)}const shortfall=clamp(1-(weaponsCapacity*capacitorLevel-distributorDraw)/weaponsCapacity);return thermalLoad*(1+(DRAINED_CAPACITOR_MULTIPLIER-1)*shortfall)}function heatLevelAtTime(params){const{heatCapacity:heatCapacity,heatDissipation:heatDissipation,thermalLoad:thermalLoad,startLevel:startLevel,seconds:seconds}=params;validateHeatParams("heatLevelAtTime",heatCapacity,heatDissipation,thermalLoad,startLevel);requireNonNegative("heatLevelAtTime","seconds",seconds);if(seconds===0)return startLevel;const linearRate=(thermalLoad-heatDissipation)/heatCapacity;if(startLevel>=1){if(linearRate>=0)return startLevel+linearRate*seconds;const secondsToOne=(startLevel-1)/-linearRate;if(seconds<=secondsToOne)return startLevel+linearRate*seconds;return belowOneLevelAtTime(heatCapacity,heatDissipation,thermalLoad,1,seconds-secondsToOne)}if(thermalLoad>heatDissipation){const secondsToOne=belowOneSecondsToLevel(heatCapacity,heatDissipation,thermalLoad,startLevel,1);if(seconds>secondsToOne)return 1+linearRate*(seconds-secondsToOne)}return belowOneLevelAtTime(heatCapacity,heatDissipation,thermalLoad,startLevel,seconds)}function secondsToHeatLevel(params){const{heatCapacity:heatCapacity,heatDissipation:heatDissipation,thermalLoad:thermalLoad,startLevel:startLevel,targetLevel:targetLevel}=params;validateHeatParams("secondsToHeatLevel",heatCapacity,heatDissipation,thermalLoad,startLevel);requireNonNegative("secondsToHeatLevel","target level",targetLevel);if(targetLevel===startLevel)return 0;const linearRate=(thermalLoad-heatDissipation)/heatCapacity;if(targetLevel>startLevel){let seconds2=0;let level2=startLevel;if(level2<1){const to=Math.min(targetLevel,1);seconds2=belowOneSecondsToLevel(heatCapacity,heatDissipation,thermalLoad,level2,to);if(!Number.isFinite(seconds2)||targetLevel<=1)return seconds2;level2=1}if(linearRate<=0)return Infinity;return seconds2+(targetLevel-level2)/linearRate}let seconds=0;let level=startLevel;if(level>1){if(linearRate>=0)return Infinity;const to=Math.max(targetLevel,1);seconds=(level-to)/-linearRate;if(targetLevel>=1)return seconds;level=1}return seconds+belowOneSecondsToLevel(heatCapacity,heatDissipation,thermalLoad,level,targetLevel)}function heatMetrics(input){const{heatCapacity:heatCapacity,heatDissipation:heatDissipation,heatEfficiency:heatEfficiency}=input;requireNonNegative("heatMetrics","heat capacity",heatCapacity);requireNonNegative("heatMetrics","heat dissipation",heatDissipation);if(heatCapacity===0)throw new RangeError("heatMetrics: heat capacity must be above 0");requireNonNegative("heatMetrics","heat efficiency",heatEfficiency);const retracted=requireNonNegative("heatMetrics","retracted power draw",input.retractedPowerDraw??0);const deployed=requireNonNegative("heatMetrics","deployed power draw",input.deployedPowerDraw??retracted);const thrusterHeat=requireNonNegative("heatMetrics","thruster heat rate",input.thrusterHeatRate??0);const deployedThrusterHeat=requireNonNegative("heatMetrics","deployed thruster heat rate",input.deployedThrusterHeatRate??thrusterHeat);const fsdHeat=requireNonNegative("heatMetrics","FSD heat rate",input.fsdHeatRate??0);const weaponsCapacity=requireNonNegative("heatMetrics","weapons capacity",input.weaponsCapacity??0);const idleLoad=retracted*heatEfficiency;const deployedLoad=deployed*heatEfficiency;const weaponHeat=capacitorLevel=>(input.weapons??[]).reduce((total,weapon)=>total+effectiveWeaponThermalLoad(weapon.heatPerSecond??0,weapon.distributorDraw??0,weaponsCapacity,capacitorLevel),0);const firingBase=deployedLoad+deployedThrusterHeat;const state=(load,base)=>heatState(heatCapacity,heatDissipation,load,base);return Object.freeze({heatEfficiency:heatEfficiency,hullHeatCapacity:heatCapacity,hullHeatDissipation:heatDissipation,idle:state(idleLoad,0),thrusters:state(idleLoad+thrusterHeat,idleLoad),fsdCharging:state(idleLoad+thrusterHeat+fsdHeat,idleLoad+thrusterHeat),firingSustained:state(firingBase+weaponHeat(1),firingBase),firingDrained:state(firingBase+weaponHeat(0),firingBase)})}function heatState(heatCapacity,heatDissipation,thermalLoad,baseLoad){const overheats=thermalLoad>heatDissipation;const heatLevel=overheats?Infinity:equilibriumHeatLevel(heatDissipation,thermalLoad);const baseLevel=baseLoad>heatDissipation?1:equilibriumHeatLevel(heatDissipation,baseLoad);return Object.freeze({thermalLoad:thermalLoad,heatLevel:heatLevel,gauge:heatLevel/OVERHEAT_HEAT_LEVEL,overheats:overheats,secondsToOverheat:overheats?secondsToHeatLevel({heatCapacity:heatCapacity,heatDissipation:heatDissipation,thermalLoad:thermalLoad,startLevel:baseLevel,targetLevel:OVERHEAT_HEAT_LEVEL}):null})}function belowOneLevelAtTime(heatCapacity,heatDissipation,thermalLoad,startLevel,seconds){const dissipationRate=heatDissipation/heatCapacity;if(heatDissipation===0)return startLevel+thermalLoad/heatCapacity*seconds;if(thermalLoad===0){if(startLevel===0)return 0;return 1/(1/startLevel+dissipationRate*seconds)}const loadRate=thermalLoad/heatCapacity;const settled=Math.sqrt(loadRate/dissipationRate);const rate=Math.sqrt(dissipationRate*loadRate);if(startLevel===settled)return settled;if(startLevel<settled){return settled*Math.tanh(rate*seconds+Math.atanh(startLevel/settled))}return settled/Math.tanh(rate*seconds+Math.atanh(settled/startLevel))}function belowOneSecondsToLevel(heatCapacity,heatDissipation,thermalLoad,startLevel,targetLevel){const dissipationRate=heatDissipation/heatCapacity;if(heatDissipation===0){if(targetLevel<startLevel||thermalLoad===0)return Infinity;return(targetLevel-startLevel)*heatCapacity/thermalLoad}if(thermalLoad===0){if(targetLevel>startLevel)return Infinity;if(targetLevel===0)return Infinity;return(1/targetLevel-1/startLevel)/dissipationRate}const loadRate=thermalLoad/heatCapacity;const settled=Math.sqrt(loadRate/dissipationRate);const rate=Math.sqrt(dissipationRate*loadRate);if(targetLevel>startLevel?targetLevel>=settled:targetLevel<=settled)return Infinity;const from=startLevel<settled?startLevel/settled:settled/startLevel;const to=startLevel<settled?targetLevel/settled:settled/targetLevel;return(Math.atanh(to)-Math.atanh(from))/rate}function clamp(value){return Math.min(Math.max(value,0),1)}function requireNonNegative(caller,what,value){if(!Number.isFinite(value)||value<0){throw new RangeError(`${caller}: ${what} must be a finite non-negative number`)}return value}function validateHeatParams(caller,heatCapacity,heatDissipation,thermalLoad,startLevel){requireNonNegative(caller,"heat capacity",heatCapacity);requireNonNegative(caller,"heat dissipation",heatDissipation);requireNonNegative(caller,"thermal load",thermalLoad);requireNonNegative(caller,"start level",startLevel);if(heatCapacity===0)throw new RangeError(`${caller}: heat capacity must be above 0`)}export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel};//# sourceMappingURL=chunk-Q2L75GSI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/heat.ts"],"names":["OVERHEAT_HEAT_LEVEL","DRAINED_CAPACITOR_MULTIPLIER","equilibriumHeatLevel","dissipation","thermalLoad","requireNonNegative","Infinity","Math","sqrt","effectiveWeaponThermalLoad","distributorDraw","weaponsCapacity","capacitorLevel","RangeError","shortfall","clamp","heatLevelAtTime","params","heatCapacity","heatDissipation","startLevel","seconds","validateHeatParams","linearRate","secondsToOne","belowOneLevelAtTime","belowOneSecondsToLevel","secondsToHeatLevel","targetLevel","level","to","min","Number","isFinite","max","heatMetrics","input","heatEfficiency","retracted","retractedPowerDraw","deployed","deployedPowerDraw","thrusterHeat","thrusterHeatRate","deployedThrusterHeat","deployedThrusterHeatRate","fsdHeat","fsdHeatRate","idleLoad","deployedLoad","weaponHeat","weapons","reduce","total","weapon","heatPerSecond","firingBase","state","load","base","heatState","Object","freeze","hullHeatCapacity","hullHeatDissipation","idle","thrusters","fsdCharging","firingSustained","firingDrained","baseLoad","overheats","heatLevel","baseLevel","gauge","secondsToOverheat","dissipationRate","loadRate","settled","rate","tanh","atanh","from","value","caller","what"],"mappings":"AA8EO,IAAMA,oBAAsB,IAMnC,IAAMC,6BAA+B,EAgL9B,SAASC,qBAAqBC,YAAqBC,aACtDC,mBAAmB,uBAAwB,cAAeF,aAC1DE,mBAAmB,uBAAwB,eAAgBD,aAC3D,GAAID,cAAgB,EAAG,OAAOC,cAAgB,EAAI,EAAIE,SACtD,OAAOC,KAAKC,KAAKJ,YAAcD,YACnC,CAwBO,SAASM,2BACZL,YACAM,gBACAC,gBACAC,gBAEAP,mBAAmB,6BAA8B,eAAgBD,aACjEC,mBAAmB,6BAA8B,mBAAoBK,iBACrEL,mBAAmB,6BAA8B,mBAAoBM,iBACrEN,mBAAmB,6BAA8B,kBAAmBO,gBACpE,GAAIA,eAAiB,EAAG,CACpB,MAAM,IAAIC,WAAW,gEACzB,CACA,GAAIF,kBAAoB,EAAG,CAEvB,OAAOP,aAAeM,gBAAkB,EAAIT,6BAA+B,EAC/E,CACA,MAAMa,UAAYC,MACd,GAAKJ,gBAAkBC,eAAiBF,iBAAmBC,iBAE/D,OAAOP,aAAe,GAAKH,6BAA+B,GAAKa,UACnE,CAoBO,SAASE,gBAAgBC,QAY5B,MAAMC,aAAEA,aAAAC,gBAAcA,gBAAAf,YAAiBA,YAAAgB,WAAaA,WAAAC,QAAYA,SAAYJ,OAC5EK,mBAAmB,kBAAmBJ,aAAcC,gBAAiBf,YAAagB,YAClFf,mBAAmB,kBAAmB,UAAWgB,SACjD,GAAIA,UAAY,EAAG,OAAOD,WAE1B,MAAMG,YAAcnB,YAAce,iBAAmBD,aACrD,GAAIE,YAAc,EAAG,CAEjB,GAAIG,YAAc,EAAG,OAAOH,WAAaG,WAAaF,QACtD,MAAMG,cAAgBJ,WAAa,IAAMG,WACzC,GAAIF,SAAWG,aAAc,OAAOJ,WAAaG,WAAaF,QAC9D,OAAOI,oBACHP,aACAC,gBACAf,YACA,EACAiB,QAAUG,aAElB,CACA,GAAIpB,YAAce,gBAAiB,CAE/B,MAAMK,aAAeE,uBACjBR,aACAC,gBACAf,YACAgB,WACA,GAEJ,GAAIC,QAAUG,aAAc,OAAO,EAAID,YAAcF,QAAUG,aACnE,CACA,OAAOC,oBAAoBP,aAAcC,gBAAiBf,YAAagB,WAAYC,QACvF,CAsBO,SAASM,mBAAmBV,QAY/B,MAAMC,aAAEA,aAAAC,gBAAcA,gBAAAf,YAAiBA,YAAAgB,WAAaA,WAAAQ,YAAYA,aAAgBX,OAChFK,mBACI,qBACAJ,aACAC,gBACAf,YACAgB,YAEJf,mBAAmB,qBAAsB,eAAgBuB,aACzD,GAAIA,cAAgBR,WAAY,OAAO,EAEvC,MAAMG,YAAcnB,YAAce,iBAAmBD,aACrD,GAAIU,YAAcR,WAAY,CAC1B,IAAIC,SAAU,EACd,IAAIQ,OAAQT,WACZ,GAAIS,OAAQ,EAAG,CACX,MAAMC,GAAKvB,KAAKwB,IAAIH,YAAa,GACjCP,SAAUK,uBAAuBR,aAAcC,gBAAiBf,YAAayB,OAAOC,IACpF,IAAKE,OAAOC,SAASZ,WAAYO,aAAe,EAAG,OAAOP,SAC1DQ,OAAQ,CACZ,CACA,GAAIN,YAAc,EAAG,OAAOjB,SAC5B,OAAOe,UAAWO,YAAcC,QAASN,UAC7C,CAEA,IAAIF,QAAU,EACd,IAAIQ,MAAQT,WACZ,GAAIS,MAAQ,EAAG,CACX,GAAIN,YAAc,EAAG,OAAOjB,SAC5B,MAAMwB,GAAKvB,KAAK2B,IAAIN,YAAa,GACjCP,SAAWQ,MAAQC,KAAOP,WAC1B,GAAIK,aAAe,EAAG,OAAOP,QAC7BQ,MAAQ,CACZ,CACA,OACIR,QACAK,uBAAuBR,aAAcC,gBAAiBf,YAAayB,MAAOD,YAElF,CAuBO,SAASO,YAAYC,OACxB,MAAMlB,aAAEA,aAAAC,gBAAcA,gBAAAkB,eAAiBA,gBAAmBD,MAC1D/B,mBAAmB,cAAe,gBAAiBa,cACnDb,mBAAmB,cAAe,mBAAoBc,iBACtD,GAAID,eAAiB,EAAG,MAAM,IAAIL,WAAW,8CAC7CR,mBAAmB,cAAe,kBAAmBgC,gBACrD,MAAMC,UAAYjC,mBACd,cACA,uBACA+B,MAAMG,oBAAsB,GAEhC,MAAMC,SAAWnC,mBACb,cACA,sBACA+B,MAAMK,mBAAqBH,WAE/B,MAAMI,aAAerC,mBACjB,cACA,qBACA+B,MAAMO,kBAAoB,GAE9B,MAAMC,qBAAuBvC,mBACzB,cACA,8BACA+B,MAAMS,0BAA4BH,cAEtC,MAAMI,QAAUzC,mBAAmB,cAAe,gBAAiB+B,MAAMW,aAAe,GACxF,MAAMpC,gBAAkBN,mBACpB,cACA,mBACA+B,MAAMzB,iBAAmB,GAG7B,MAAMqC,SAAWV,UAAYD,eAC7B,MAAMY,aAAeT,SAAWH,eAChC,MAAMa,WAActC,iBACfwB,MAAMe,SAAW,IAAIC,OAClB,CAACC,MAAOC,SACJD,MACA5C,2BACI6C,OAAOC,eAAiB,EACxBD,OAAO5C,iBAAmB,EAC1BC,gBACAC,gBAER,GAIR,MAAM4C,WAAaP,aAAeL,qBAClC,MAAMa,MAAQ,CAACC,KAAcC,OACzBC,UAAU1C,aAAcC,gBAAiBuC,KAAMC,MAEnD,OAAOE,OAAOC,OAAO,CACjBzB,8BACA0B,iBAAkB7C,aAClB8C,oBAAqB7C,gBACrB8C,KAAMR,MAAMT,SAAU,GACtBkB,UAAWT,MAAMT,SAAWN,aAAcM,UAC1CmB,YAAaV,MAAMT,SAAWN,aAAeI,QAASE,SAAWN,cACjE0B,gBAAiBX,MAAMD,WAAaN,WAAW,GAAIM,YACnDa,cAAeZ,MAAMD,WAAaN,WAAW,GAAIM,aAEzD,CAGA,SAASI,UACL1C,aACAC,gBACAf,YACAkE,UAEA,MAAMC,UAAYnE,YAAce,gBAChC,MAAMqD,UAAYD,UAAYjE,SAAWJ,qBAAqBiB,gBAAiBf,aAC/E,MAAMqE,UACFH,SAAWnD,gBAAkB,EAAIjB,qBAAqBiB,gBAAiBmD,UAC3E,OAAOT,OAAOC,OAAO,CACjB1D,wBACAoE,oBACAE,MAAOF,UAAYxE,oBACnBuE,oBACAI,kBAAmBJ,UACb5C,mBAAmB,CACfT,0BACAC,gCACAf,wBACAgB,WAAYqD,UACZ7C,YAAa5B,sBAEjB,MAEd,CAMA,SAASyB,oBACLP,aACAC,gBACAf,YACAgB,WACAC,SAEA,MAAMuD,gBAAkBzD,gBAAkBD,aAC1C,GAAIC,kBAAoB,EAAG,OAAOC,WAAchB,YAAcc,aAAgBG,QAC9E,GAAIjB,cAAgB,EAAG,CAEnB,GAAIgB,aAAe,EAAG,OAAO,EAC7B,OAAO,GAAK,EAAIA,WAAawD,gBAAkBvD,QACnD,CACA,MAAMwD,SAAWzE,YAAcc,aAC/B,MAAM4D,QAAUvE,KAAKC,KAAKqE,SAAWD,iBACrC,MAAMG,KAAOxE,KAAKC,KAAKoE,gBAAkBC,UACzC,GAAIzD,aAAe0D,QAAS,OAAOA,QACnC,GAAI1D,WAAa0D,QAAS,CACtB,OAAOA,QAAUvE,KAAKyE,KAAKD,KAAO1D,QAAUd,KAAK0E,MAAM7D,WAAa0D,SACxE,CAEA,OAAOA,QAAUvE,KAAKyE,KAAKD,KAAO1D,QAAUd,KAAK0E,MAAMH,QAAU1D,YACrE,CAMA,SAASM,uBACLR,aACAC,gBACAf,YACAgB,WACAQ,aAEA,MAAMgD,gBAAkBzD,gBAAkBD,aAC1C,GAAIC,kBAAoB,EAAG,CAEvB,GAAIS,YAAcR,YAAchB,cAAgB,EAAG,OAAOE,SAC1D,OAASsB,YAAcR,YAAcF,aAAgBd,WACzD,CACA,GAAIA,cAAgB,EAAG,CACnB,GAAIwB,YAAcR,WAAY,OAAOd,SACrC,GAAIsB,cAAgB,EAAG,OAAOtB,SAC9B,OAAQ,EAAIsB,YAAc,EAAIR,YAAcwD,eAChD,CACA,MAAMC,SAAWzE,YAAcc,aAC/B,MAAM4D,QAAUvE,KAAKC,KAAKqE,SAAWD,iBACrC,MAAMG,KAAOxE,KAAKC,KAAKoE,gBAAkBC,UACzC,GAAIjD,YAAcR,WAAaQ,aAAekD,QAAUlD,aAAekD,QAAS,OAAOxE,SACvF,MAAM4E,KAAO9D,WAAa0D,QAAU1D,WAAa0D,QAAUA,QAAU1D,WACrE,MAAMU,GAAKV,WAAa0D,QAAUlD,YAAckD,QAAUA,QAAUlD,YACpE,OAAQrB,KAAK0E,MAAMnD,IAAMvB,KAAK0E,MAAMC,OAASH,IACjD,CAEA,SAAShE,MAAMoE,OACX,OAAO5E,KAAKwB,IAAIxB,KAAK2B,IAAIiD,MAAO,GAAI,EACxC,CAEA,SAAS9E,mBAAmB+E,OAAgBC,KAAcF,OACtD,IAAKnD,OAAOC,SAASkD,QAAUA,MAAQ,EAAG,CACtC,MAAM,IAAItE,WAAW,GAAGuE,WAAWC,4CACvC,CACA,OAAOF,KACX,CAEA,SAAS7D,mBACL8D,OACAlE,aACAC,gBACAf,YACAgB,YAEAf,mBAAmB+E,OAAQ,gBAAiBlE,cAC5Cb,mBAAmB+E,OAAQ,mBAAoBjE,iBAC/Cd,mBAAmB+E,OAAQ,eAAgBhF,aAC3CC,mBAAmB+E,OAAQ,cAAehE,YAC1C,GAAIF,eAAiB,EAAG,MAAM,IAAIL,WAAW,GAAGuE,wCACpD,QAAApF,oBAAAS,2BAAAP,qBAAAc,gBAAAmB,YAAAR"}
|
package/dist/chunk-QJ7GB6FF.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function requirePips(scope,name,value){if(!Number.isFinite(value)||value<0||value>4){throw new RangeError(`${scope}: ${name} must be a finite number from 0 to 4`)}}export{requirePips};//# sourceMappingURL=chunk-QJ7GB6FF.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/internal/pips.ts"],"names":["requirePips","scope","name","value","Number","isFinite","RangeError"],"mappings":"AAqBO,SAASA,YAAYC,MAAeC,KAAcC,OACrD,IAAKC,OAAOC,SAASF,QAAUA,MAAQ,GAAKA,MAAQ,EAAG,CACnD,MAAM,IAAIG,WAAW,GAAGL,UAAUC,2CACtC,CACJ,QAAAF"}
|
package/dist/chunk-RRYBSAPX.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";function requireFiniteNonNegative(scope,name,value){if(!Number.isFinite(value)||value<0){throw new RangeError(`${scope}: ${name} must be a finite non-negative number`)}}function weaponsCapacitorMetrics(input){const scope="weaponsCapacitorMetrics";const weaponsPips=input.weaponsPips??4;if(!Number.isFinite(weaponsPips)||weaponsPips<0||weaponsPips>4){throw new RangeError(`${scope}: weaponsPips must be a finite number from 0 to 4`)}for(const field of["weaponsCapacity","weaponsRecharge","sustainedEnergyPerSecond"]){requireFiniteNonNegative(scope,field,input[field])}const rechargeRate=capacitorRechargeAtPips(input.weaponsRecharge,weaponsPips);const netDrainRate=Math.max(0,input.sustainedEnergyPerSecond-rechargeRate);return Object.freeze({weaponsPips:weaponsPips,capacity:input.weaponsCapacity,rechargeRate:rechargeRate,sustainedEnergyPerSecond:input.sustainedEnergyPerSecond,netDrainRate:netDrainRate,timeToDrain:netDrainRate===0?Infinity:input.weaponsCapacity/netDrainRate})}export{weaponsCapacitorMetrics};//# sourceMappingURL=chunk-RRYBSAPX.js.map
|
|
@@ -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","Object","freeze","capacity","weaponsCapacity","timeToDrain","Infinity"],"mappings":"O,kDA0DA,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,OAAOM,OAAOC,OAAO,CACjBT,wBACAU,SAAUX,MAAMY,gBAChBT,0BACAK,yBAA0BR,MAAMQ,yBAChCH,0BACAQ,YAAaR,eAAiB,EAAIS,SAAWd,MAAMY,gBAAkBP,cAE7E,QAAAN"}
|
package/dist/chunk-V3AEUBHV.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{massCurveMultiplier,requireFiniteNonNegative,validateMassCurve}from"./chunk-EVW4Z4CB.js";var requireFiniteRange=(scope,name,value,minimum,maximum)=>{if(!Number.isFinite(value)||value<minimum||value>maximum){throw new RangeError(`${scope}: ${name} must be a finite number from ${minimum} to ${maximum}`)}};var curveMultiplier=(scope,mass,thrusters)=>massCurveMultiplier({scope:scope,mass:"mass",curve:"thrusters"},mass,thrusters);function resolveMobilityCurves(scope,input){for(const field of["minimumSpeed","maximumSpeed","boost","pitch","roll","yaw","mass"]){requireFiniteNonNegative(scope,field,input[field])}if(input.minimumSpeed>input.maximumSpeed){throw new RangeError(`${scope}: minimumSpeed must not exceed maximumSpeed`)}for(const[minimum,maximum]of[["minPitch","pitch"],["minRoll","roll"],["minYaw","yaw"]]){requireFiniteRange(scope,minimum,input[minimum],0,input[maximum])}if(!input.thrusters)return null;validateMassCurve(`${scope}: thrusters`,input.thrusters);return{massCurveMultiplier:curveMultiplier(`${scope}: speed curve`,input.mass,input.thrusters.speedCurve??input.thrusters),rotationMassCurveMultiplier:curveMultiplier(`${scope}: rotation curve`,input.mass,input.thrusters.rotationCurve??input.thrusters)}}export{curveMultiplier,resolveMobilityCurves};//# sourceMappingURL=chunk-V3AEUBHV.js.map
|
package/dist/chunk-V4C6FIE2.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ENCODED_MATERIALS}from"./chunk-Q5XOGATC.js";import{MANUFACTURED_MATERIALS}from"./chunk-HKXXFIRI.js";import{RAW_MATERIALS}from"./chunk-SQS7672E.js";var ALL_MATERIALS=Object.freeze([...RAW_MATERIALS,...MANUFACTURED_MATERIALS,...ENCODED_MATERIALS]);export{ALL_MATERIALS};//# sourceMappingURL=chunk-V4C6FIE2.js.map
|
package/dist/chunk-VYDQHPY2.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getLoadoutModifier}from"./chunk-OVUHQEH5.js";import{scaleDamageComponents}from"./chunk-GZYPQIO2.js";import{weaponMetrics,combinedRateOfFire}from"./chunk-7TQ2X6Q3.js";import{shieldMetrics}from"./chunk-QTAMQ6ME.js";import{getBulkheadsForShip}from"./chunk-PA5EITW5.js";import{CORE_MODULES}from"./chunk-EVJ32UF3.js";import{getExperimentalEffect}from"./chunk-77I24V6B.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{fieldForLabel,scaleForLabel,labelsForField,capabilityValueForLabel,damageTypeForLabel}from"./chunk-CJQ37JII.js";import{parseSlotName}from"./chunk-RAO35XDF.js";import{describeValue,truncate}from"./chunk-PKWVG2JY.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}var DEFAULT_SLOT={powerCapacity:"PowerPlant",heatEfficiency:"PowerPlant",thrusters:"MainEngines",powerDistributor:"PowerDistributor"};var UNRESOLVED_FACT={thrusters:"thruster stats",shieldGenerator:"shield-generator stats",powerCapacity:"power capacity",heatEfficiency:"heat efficiency",powerDistributor:"power-distributor stats"};var NOTHING_FITTED={powerCapacity:"PowerPlant: no power plant is fitted",heatEfficiency:"PowerPlant: no power plant is fitted",thrusters:"MainEngines: no thrusters are fitted",powerDistributor:"PowerDistributor: no power distributor is fitted"};function metricIssue(field,reason,module){const defaultSlot=DEFAULT_SLOT[field];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=NOTHING_FITTED[field]??"no shield generator is fitted"}else if(reason==="unresolved"){const unavailable=UNRESOLVED_FACT[field]??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,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}}function shieldInputResultFor(ship,modules,getBudget,statsFor){const fitted=poweredShieldGeneratorResultFor(modules,getBudget,statsFor);if(!fitted.complete)return fitted;return completeResult(shieldInputFor(ship,modules,fitted.value.budget,statsFor))}function shieldCapacitorInputResultFor(ship,modules,getBudget,systemsPips,statsFor){const fitted=poweredShieldGeneratorResultFor(modules,getBudget,statsFor);if(!fitted.complete)return fitted;const budget=fitted.value.budget;const capacitor=systemsCapacitorResultFor(modules,budget,statsFor);if(!capacitor.complete)return capacitor;const shields=shieldMetrics(shieldInputFor(ship,modules,budget,statsFor));return completeResult({strength:shields.strength,resistances:shields.resistances,systemsCapacity:capacitor.value.systemsCapacity,systemsRecharge:capacitor.value.systemsRecharge,systemsPips:systemsPips})}function systemsCapacitorResultFor(modules,budget,statsFor){let distributor=null;for(const module of modules){const stats2=statsFor(module);if(isPowerDistributor(module,stats2)&&isEnabled(module)&&budget.available>0&&poweredStates(module,stats2,budget).retracted)distributor=module}if(!distributor)return completeResult({systemsCapacity:0,systemsRecharge:0});const stats=statsFor(distributor);const systemsCapacity=effectiveStat(distributor,"systemsCapacity",stats);const systemsRecharge=effectiveStat(distributor,"systemsRecharge",stats);return systemsCapacity===void 0||systemsRecharge===void 0?incompleteResult([metricIssue("powerDistributor","unresolved",distributor)]):completeResult({systemsCapacity:systemsCapacity,systemsRecharge:systemsRecharge})}function thrusterCurveFor(module,stats){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 null}return{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}}}}function fittedThrusterParamsFor(modules,statsFor){for(const module of modules){const stats=statsFor(module);if(isThruster(module,stats))return thrusterCurveFor(module,stats)}return null}function mobilityInputResultFor(ship,modules,getBudget,mass,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;thrusters=thrusterCurveFor(module,stats);if(!thrusters)return incompleteResult([metricIssue("thrusters","unresolved",module)]);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})}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;const generatorStats=statsFor(generatorModule);const distributorDraw=effectiveStat(generatorModule,"distributorDraw",generatorStats);const regenRate=effectiveStat(generatorModule,"shieldRegenRate",generatorStats);const brokenRegenRate=effectiveStat(generatorModule,"shieldBrokenRegenRate",generatorStats);if(distributorDraw===void 0||regenRate===void 0||brokenRegenRate===void 0){return incompleteResult([metricIssue("shieldGenerator","unresolved",generatorModule)])}const capacitor=systemsCapacitorResultFor(modules,budget,statsFor);if(!capacitor.complete)return capacitor;const strength=shieldMetrics(shieldInputFor(ship,modules,budget,statsFor)).strength;return completeResult({strength:strength,regenRate:regenRate,brokenRegenRate:brokenRegenRate,distributorDraw:distributorDraw,systemsCapacity:capacitor.value.systemsCapacity,systemsRecharge:capacitor.value.systemsRecharge,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 distributorInputResultFor(modules,pips,budget,statsFor){let disabled=null;for(const module of modules){const stats=statsFor(module);if(!isPowerDistributor(module,stats))continue;if(!isEnabled(module)){disabled??=module;continue}if(!poweredStates(module,stats,budget).retracted){return incompleteResult([metricIssue("powerDistributor","shed",module)])}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 incompleteResult([metricIssue("powerDistributor","unresolved",module)])}return completeResult({systemsCapacity:systemsCapacity,systemsRecharge:systemsRecharge,enginesCapacity:enginesCapacity,enginesRecharge:enginesRecharge,weaponsCapacity:weaponsCapacity,weaponsRecharge:weaponsRecharge,...pips})}return incompleteResult([disabled===null?metricIssue("powerDistributor","missing"):metricIssue("powerDistributor","disabled",disabled)])}function heatInputResultFor(ship,modules,budget,statsFor){let plant=null;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 incompleteResult([metricIssue("powerCapacity","disabled",module)])}plant=module;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 incompleteResult([plant===null?metricIssue("powerCapacity","missing"):metricIssue("heatEfficiency","unresolved",plant)])}return completeResult({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 INTERNALS=/* @__PURE__ */new WeakMap;function publishLoadoutInternals(build,internals){INTERNALS.set(build,internals)}function loadoutInternals(build,label){const internals=typeof build==="object"&&build!==null?INTERNALS.get(build):void 0;if(internals===void 0){throw new TypeError(`${label} must be a ShipLoadout, received ${describeValue(build)}`)}return internals}export{armourInputFor,cellBankInputsFor,completeResult,distributorInputResultFor,effectiveModule,fittedThrusterParamsFor,heatInputResultFor,incompleteResult,loadoutInternals,mobilityInputResultFor,powerAvailable,powerConsumerFor,publishLoadoutInternals,shieldCapacitorInputResultFor,shieldInputResultFor,shieldRecoveryInputResultFor,weaponStatsFor,weaponsCapacitorInputFor};//# sourceMappingURL=chunk-VYDQHPY2.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-internals.ts"],"names":["getLoadoutModifier","scaleDamageComponents","weaponMetrics","combinedRateOfFire","shieldMetrics","getBulkheadsForShip","CORE_MODULES","getExperimentalEffect","ammunitionCapacity","fieldForLabel","scaleForLabel","labelsForField","capabilityValueForLabel","damageTypeForLabel","parseSlotName","describeValue","truncate","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","DEFAULT_SLOT","powerCapacity","heatEfficiency","UNRESOLVED_FACT","NOTHING_FITTED","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","generator","boosters","reinforcement","strengthRatio","optMass","Math","max","optMultiplier","push","shieldBoost","hullMass","baseShieldStrength","shieldInputResultFor","fitted","shieldCapacitorInputResultFor","systemsPips","capacitor","systemsCapacitorResultFor","shields","strength","resistances","systemsCapacity","systemsRecharge","distributor","thrusterCurveFor","optSpeedMultiplier","speedCurve","minSpeedMultiplier","maxSpeedMultiplier","optRotationMultiplier","rotationCurve","minRotationMultiplier","maxRotationMultiplier","fittedThrusterParamsFor","mobilityInputResultFor","mass","minimumSpeed","maximumSpeed","boost","minPitch","pitch","minRoll","roll","minYaw","yaw","shieldRecoveryInputResultFor","generatorModule","generatorStats","distributorDraw","regenRate","brokenRegenRate","weaponsCapacitorInputFor","weaponsPips","weaponsCapacity","weaponsRecharge","sustainedEnergyPerSecond","deployed","weapon","weaponStatsFor","distributorInputResultFor","pips","disabled","enginesCapacity","enginesRecharge","heatInputResultFor","plant","thrusterHeatRate","deployedThrusterHeatRate","fsdHeatRate","weapons","running","heat","heatPerSecond","sustainedHeatPerSecond","heatCapacity","heatDissipation","retractedPowerDraw","poweredDraw","deployedPowerDraw","state","bands","reduce","total","band","min","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","INTERNALS","WeakMap","publishLoadoutInternals","build","internals","set","loadoutInternals","get","TypeError"],"mappings":"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"}
|