@elite-dangerous-almanac/core 0.2.0 → 0.2.2
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/README.md +3 -2
- package/THIRD_PARTY_NOTICES.md +24 -2
- package/dist/astro/body-orbit.d.ts +174 -0
- package/dist/astro/body-orbit.js +1 -0
- package/dist/astro/body-orbit.js.map +1 -0
- package/dist/astro/body-physics.d.ts +228 -0
- package/dist/astro/body-physics.js +1 -0
- package/dist/astro/body-physics.js.map +1 -0
- package/dist/astro/body-rings.d.ts +223 -0
- package/dist/astro/body-rings.js +1 -0
- package/dist/astro/body-rings.js.map +1 -0
- package/dist/astro/codex-region-lookup.js +1 -1
- package/dist/astro/codex-region-lookup.js.map +1 -1
- package/dist/astro/index.d.ts +38 -1
- package/dist/astro/index.js +1 -1
- package/dist/astro/nebulae.d.ts +4 -4
- package/dist/astro/procedural-system.js +1 -1
- package/dist/astro/star-physics.d.ts +255 -0
- package/dist/astro/star-physics.js +1 -0
- package/dist/astro/star-physics.js.map +1 -0
- package/dist/body-scan-CEUYjCfH.d.ts +416 -0
- package/dist/chunk-37JIMWLK.js +1 -0
- package/dist/chunk-37JIMWLK.js.map +1 -0
- package/dist/{chunk-PA5EITW5.js → chunk-3LZXB2MC.js} +1 -1
- package/dist/{chunk-PA5EITW5.js.map → chunk-3LZXB2MC.js.map} +1 -1
- package/dist/chunk-3RTUSDQF.js +1 -0
- package/dist/chunk-3RTUSDQF.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-GZYPQIO2.js → chunk-4OTQBHQL.js} +1 -1
- package/dist/chunk-4OTQBHQL.js.map +1 -0
- 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-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-MRTTQYT5.js → chunk-7EWZGDWY.js} +1 -1
- package/dist/{chunk-TBZJIQ5P.js → chunk-7TVFV3VO.js} +1 -1
- package/dist/chunk-7TVFV3VO.js.map +1 -0
- package/dist/chunk-7ZERP4TB.js +1 -0
- package/dist/{chunk-QY3L5BKN.js.map → chunk-7ZERP4TB.js.map} +1 -1
- package/dist/{chunk-Y6KJJMIM.js → chunk-A4QKXXZD.js} +1 -1
- package/dist/{chunk-Q5XOGATC.js → chunk-AIEC3LBT.js} +1 -1
- package/dist/chunk-B5VTFOK4.js +1 -0
- package/dist/chunk-B5VTFOK4.js.map +1 -0
- package/dist/chunk-DAQ3PJ4R.js +1 -0
- package/dist/chunk-DAQ3PJ4R.js.map +1 -0
- 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-GBTCWNO6.js +1 -0
- package/dist/chunk-GBTCWNO6.js.map +1 -0
- 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-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-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-NEXDA73Y.js +1 -0
- package/dist/chunk-NEXDA73Y.js.map +1 -0
- package/dist/chunk-OJC6AUL7.js +1 -0
- package/dist/chunk-OJC6AUL7.js.map +1 -0
- package/dist/chunk-P2MUFVJC.js +1 -0
- package/dist/chunk-P2MUFVJC.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-SS6XK336.js +1 -0
- package/dist/chunk-SS6XK336.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-TMXKC6JL.js +1 -0
- package/dist/chunk-TMXKC6JL.js.map +1 -0
- 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/chunk-ZZ376WHL.js +1 -0
- package/dist/chunk-ZZ376WHL.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.d.ts +1 -1
- package/dist/commodities/commodities.js +1 -1
- package/dist/commodities/index.js +1 -1
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/upgrade-costs.js +1 -1
- package/dist/equipment/upgrade-costs.js.map +1 -1
- package/dist/i18n/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.d.ts +1 -1
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources.d.ts +1 -1
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/armour.js +1 -1
- package/dist/ships/build-metrics.d.ts +21 -232
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/distributor.d.ts +1 -1
- package/dist/ships/distributor.js +1 -1
- package/dist/ships/heat.d.ts +1 -1
- package/dist/ships/heat.js +1 -1
- package/dist/ships/index.d.ts +3 -3
- package/dist/ships/index.js +1 -1
- package/dist/ships/jump-range.js +1 -1
- package/dist/ships/loadout-calculations.d.ts +2 -2
- package/dist/ships/loadout-validation.d.ts +111 -5
- package/dist/ships/loadout-validation.js +1 -1
- package/dist/ships/mobility-capacitor.d.ts +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 +17 -10
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/resistances.js +1 -1
- package/dist/ships/shield-capacitor.d.ts +1 -1
- package/dist/ships/shield-capacitor.js +1 -1
- package/dist/ships/shield-recovery.js +1 -1
- package/dist/ships/shields.d.ts +1 -1
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +140 -18
- 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 +18 -3
- 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-GVNTKCVF.js +0 -1
- package/dist/chunk-GVNTKCVF.js.map +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-QY3L5BKN.js +0 -1
- package/dist/chunk-RRYBSAPX.js +0 -1
- package/dist/chunk-RRYBSAPX.js.map +0 -1
- package/dist/chunk-TBZJIQ5P.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-MRTTQYT5.js.map → chunk-7EWZGDWY.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-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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/modules-core.ts"],"names":["buildModuleCatalogue","modules_core_default","CORE_MODULES"],"mappings":"O,
|
|
1
|
+
{"version":3,"sources":["../src/ships/modules-core.ts"],"names":["buildModuleCatalogue","modules_core_default","CORE_MODULES"],"mappings":"O,8hjIAqCO,IAAME,aAA4CF,qBACrDC,qBACA,eACJC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{bodyMass,GRAVITATIONAL_CONSTANT}from"./chunk-TMXKC6JL.js";import{positiveQuantity,finiteQuantity}from"./chunk-P2MUFVJC.js";import{requireObject}from"./chunk-PKWVG2JY.js";var SPEED_OF_LIGHT=299792458;var SOLAR_RADIUS=6957e5;var SOLAR_EFFECTIVE_TEMPERATURE=5772;var SOLAR_ABSOLUTE_BOLOMETRIC_MAGNITUDE=4.74;var SOLAR_MAIN_SEQUENCE_LIFETIME_MY=1e4;var CHANDRASEKHAR_LIMIT_SOLAR_MASSES=1.44;var TOV_LIMIT_SOLAR_MASSES=2.17;var NEUTRON_STAR_MASS_DROP_OFF_SOLAR_MASSES=2.51;var MILLISECOND_PULSAR_PERIOD=.01;var STANDARD_PULSAR_PERIOD=5;var SLOW_PERIOD_PULSAR_PERIOD=30;var ULTRA_LONG_PERIOD_LIMIT=3600;var MAGNETAR_MAX_ABSOLUTE_MAGNITUDE=10;var ANOMALOUS_PULSAR_MASS=2.1;function mainSequenceLifetime(body){requireObject(body,"mainSequenceLifetime: body");const solarMasses=positiveQuantity(body.StellarMass);if(solarMasses===null)return null;return SOLAR_MAIN_SEQUENCE_LIFETIME_MY*Math.pow(solarMasses,-2.5)}function absoluteBolometricMagnitude(body){requireObject(body,"absoluteBolometricMagnitude: body");const radiusM=positiveQuantity(body.Radius);const temperatureK=positiveQuantity(body.SurfaceTemperature);if(radiusM===null||temperatureK===null)return null;const solarRadii=radiusM/SOLAR_RADIUS;const luminosity=solarRadii*solarRadii*Math.pow(temperatureK/SOLAR_EFFECTIVE_TEMPERATURE,4);return SOLAR_ABSOLUTE_BOLOMETRIC_MAGNITUDE-2.5*Math.log10(luminosity)}function schwarzschildRadius(body){requireObject(body,"schwarzschildRadius: body");const massKg=bodyMass(body);if(massKg===null)return null;return 2*GRAVITATIONAL_CONSTANT*massKg/SPEED_OF_LIGHT**2}function assessMassStability(body){requireObject(body,"assessMassStability: body");const solarMasses=positiveQuantity(body.StellarMass);const starType=body.StarType;if(solarMasses===null||typeof starType!=="string")return null;if(starType.startsWith("D")&&solarMasses>CHANDRASEKHAR_LIMIT_SOLAR_MASSES){return{limit:"chandrasekhar",limitSolarMasses:CHANDRASEKHAR_LIMIT_SOLAR_MASSES,severity:"danger"}}if(starType==="N"){if(solarMasses>NEUTRON_STAR_MASS_DROP_OFF_SOLAR_MASSES){return{limit:"neutron-star-mass-drop-off",limitSolarMasses:NEUTRON_STAR_MASS_DROP_OFF_SOLAR_MASSES,severity:"danger"}}if(solarMasses>TOV_LIMIT_SOLAR_MASSES){return{limit:"tolman-oppenheimer-volkoff",limitSolarMasses:TOV_LIMIT_SOLAR_MASSES,severity:"warning"}}}return null}function classifyNeutronStar(body){requireObject(body,"classifyNeutronStar: body");const solarMasses=positiveQuantity(body.StellarMass);const rotationPeriod=finiteQuantity(body.RotationPeriod);const absoluteMagnitude=finiteQuantity(body.AbsoluteMagnitude);if(solarMasses===null||rotationPeriod===null||absoluteMagnitude===null)return null;const period=Math.abs(rotationPeriod);const heavy=solarMasses>ANOMALOUS_PULSAR_MASS;if(period<MILLISECOND_PULSAR_PERIOD){return heavy?"hyper-massive-millisecond-pulsar":"millisecond-pulsar"}if(period<STANDARD_PULSAR_PERIOD){return heavy?"anomalous-mass-pulsar":"standard-pulsar"}if(period<SLOW_PERIOD_PULSAR_PERIOD){return heavy?"anomalous-mass-slow-period-pulsar":"slow-period-pulsar"}if(period<ULTRA_LONG_PERIOD_LIMIT){return absoluteMagnitude<MAGNETAR_MAX_ABSOLUTE_MAGNITUDE?"ultra-long-period-magnetar":"ultra-long-period-pulsar"}return"anomalous-slow-rotator"}export{CHANDRASEKHAR_LIMIT_SOLAR_MASSES,NEUTRON_STAR_MASS_DROP_OFF_SOLAR_MASSES,SOLAR_RADIUS,SPEED_OF_LIGHT,TOV_LIMIT_SOLAR_MASSES,absoluteBolometricMagnitude,assessMassStability,classifyNeutronStar,mainSequenceLifetime,schwarzschildRadius};//# sourceMappingURL=chunk-GBTCWNO6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/astro/star-physics.ts"],"names":["bodyMass","GRAVITATIONAL_CONSTANT","positiveQuantity","finiteQuantity","requireObject","SPEED_OF_LIGHT","SOLAR_RADIUS","SOLAR_EFFECTIVE_TEMPERATURE","SOLAR_ABSOLUTE_BOLOMETRIC_MAGNITUDE","SOLAR_MAIN_SEQUENCE_LIFETIME_MY","CHANDRASEKHAR_LIMIT_SOLAR_MASSES","TOV_LIMIT_SOLAR_MASSES","NEUTRON_STAR_MASS_DROP_OFF_SOLAR_MASSES","MILLISECOND_PULSAR_PERIOD","STANDARD_PULSAR_PERIOD","SLOW_PERIOD_PULSAR_PERIOD","ULTRA_LONG_PERIOD_LIMIT","MAGNETAR_MAX_ABSOLUTE_MAGNITUDE","ANOMALOUS_PULSAR_MASS","mainSequenceLifetime","body","solarMasses","StellarMass","Math","pow","absoluteBolometricMagnitude","radiusM","Radius","temperatureK","SurfaceTemperature","solarRadii","luminosity","log10","schwarzschildRadius","massKg","assessMassStability","starType","StarType","startsWith","limit","limitSolarMasses","severity","classifyNeutronStar","rotationPeriod","RotationPeriod","absoluteMagnitude","AbsoluteMagnitude","period","abs","heavy"],"mappings":"O,0KAwCO,IAAMK,eAAiB,UAGvB,IAAMC,aAAe,OAG5B,IAAMC,4BAA8B,KAGpC,IAAMC,oCAAsC,KAG5C,IAAMC,gCAAkC,IAMjC,IAAMC,iCAAmC,KAMzC,IAAMC,uBAAyB,KAU/B,IAAMC,wCAA0C,KA4CvD,IAAMC,0BAA4B,IAElC,IAAMC,uBAAyB,EAE/B,IAAMC,0BAA4B,GAElC,IAAMC,wBAA0B,KAEhC,IAAMC,gCAAkC,GAExC,IAAMC,sBAAwB,IAiCvB,SAASC,qBAAqBC,MACjChB,cAAcgB,KAAM,8BACpB,MAAMC,YAAcnB,iBAAiBkB,KAAKE,aAC1C,GAAID,cAAgB,KAAM,OAAO,KACjC,OAAOZ,gCAAkCc,KAAKC,IAAIH,aAAa,IACnE,CAiCO,SAASI,4BAA4BL,MACxChB,cAAcgB,KAAM,qCACpB,MAAMM,QAAUxB,iBAAiBkB,KAAKO,QACtC,MAAMC,aAAe1B,iBAAiBkB,KAAKS,oBAC3C,GAAIH,UAAY,MAAQE,eAAiB,KAAM,OAAO,KAEtD,MAAME,WAAaJ,QAAUpB,aAC7B,MAAMyB,WACFD,WAAaA,WAAaP,KAAKC,IAAII,aAAerB,4BAA6B,GACnF,OAAOC,oCAAsC,IAAMe,KAAKS,MAAMD,WAClE,CA0BO,SAASE,oBAAoBb,MAChChB,cAAcgB,KAAM,6BACpB,MAAMc,OAASlC,SAASoB,MACxB,GAAIc,SAAW,KAAM,OAAO,KAC5B,OAAQ,EAAIjC,uBAAyBiC,OAAU7B,gBAAkB,CACrE,CAoCO,SAAS8B,oBAAoBf,MAChChB,cAAcgB,KAAM,6BACpB,MAAMC,YAAcnB,iBAAiBkB,KAAKE,aAC1C,MAAMc,SAAWhB,KAAKiB,SACtB,GAAIhB,cAAgB,aAAee,WAAa,SAAU,OAAO,KAGjE,GAAIA,SAASE,WAAW,MAAQjB,YAAcX,iCAAkC,CAC5E,MAAO,CACH6B,MAAO,gBACPC,iBAAkB9B,iCAClB+B,SAAU,SAElB,CACA,GAAIL,WAAa,IAAK,CAClB,GAAIf,YAAcT,wCAAyC,CACvD,MAAO,CACH2B,MAAO,6BACPC,iBAAkB5B,wCAClB6B,SAAU,SAElB,CACA,GAAIpB,YAAcV,uBAAwB,CACtC,MAAO,CACH4B,MAAO,6BACPC,iBAAkB7B,uBAClB8B,SAAU,UAElB,CACJ,CACA,OAAO,IACX,CA0CO,SAASC,oBAAoBtB,MAChChB,cAAcgB,KAAM,6BACpB,MAAMC,YAAcnB,iBAAiBkB,KAAKE,aAC1C,MAAMqB,eAAiBxC,eAAeiB,KAAKwB,gBAC3C,MAAMC,kBAAoB1C,eAAeiB,KAAK0B,mBAC9C,GAAIzB,cAAgB,MAAQsB,iBAAmB,MAAQE,oBAAsB,KAAM,OAAO,KAE1F,MAAME,OAASxB,KAAKyB,IAAIL,gBACxB,MAAMM,MAAQ5B,YAAcH,sBAE5B,GAAI6B,OAASlC,0BAA2B,CACpC,OAAOoC,MAAQ,mCAAqC,oBACxD,CACA,GAAIF,OAASjC,uBAAwB,CACjC,OAAOmC,MAAQ,wBAA0B,iBAC7C,CACA,GAAIF,OAAShC,0BAA2B,CACpC,OAAOkC,MAAQ,oCAAsC,oBACzD,CACA,GAAIF,OAAS/B,wBAAyB,CAClC,OAAO6B,kBAAoB5B,gCACrB,6BACA,0BACV,CACA,MAAO,wBACX,QAAAP,iCAAAE,wCAAAN,aAAAD,eAAAM,uBAAAc,4BAAAU,oBAAAO,oBAAAvB,qBAAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{requireFiniteNonNegative}from"./chunk-65FZECUX.js";var PRIORITY_GROUPS=5;var EPSILON=1e-9;function bandIndex(priority){if(priority===void 0||!Number.isFinite(priority))return 0;return Math.min(PRIORITY_GROUPS,Math.max(1,Math.trunc(priority)))-1}function powerBudget(available,consumers){requireFiniteNonNegative("powerBudget","available power",available);const retractedByBand=Array(PRIORITY_GROUPS).fill(0);const deployedByBand=Array(PRIORITY_GROUPS).fill(0);for(const consumer of consumers){requireFiniteNonNegative("powerBudget","consumer draw",consumer.draw)}const consumerResults=consumers.map(consumer=>Object.freeze({...consumer.label===void 0?{}:{label:consumer.label},...consumer.symbol===void 0?{}:{symbol:consumer.symbol},draw:consumer.draw,enabled:consumer.enabled!==false,priority:bandIndex(consumer.priority)+1,deployedOnly:consumer.deployedOnly??false}));for(const consumer of consumers){if(consumer.enabled===false)continue;const draw=consumer.draw;if(draw===0)continue;const index=bandIndex(consumer.priority);if(consumer.deployedOnly)deployedByBand[index]+=draw;else retractedByBand[index]+=draw}const bands=[];let retractedTotal=0;let deployedTotal=0;for(let i=0;i<PRIORITY_GROUPS;i++){const retracted=retractedByBand[i];const deployed=deployedByBand[i];retractedTotal+=retracted;deployedTotal+=retracted+deployed;bands.push(Object.freeze({priority:i+1,retracted:retracted,deployed:retracted+deployed,retractedTotal:retractedTotal,deployedTotal:deployedTotal,poweredRetracted:retractedTotal<=available+EPSILON,poweredDeployed:deployedTotal<=available+EPSILON}))}return Object.freeze({available:available,retracted:retractedTotal,deployed:deployedTotal,headroom:available-deployedTotal,utilisation:available>0?deployedTotal/available:deployedTotal>0?Infinity:0,withinBudget:deployedTotal<=available+EPSILON,bands:Object.freeze(bands),consumers:Object.freeze(consumerResults)})}export{powerBudget};//# sourceMappingURL=chunk-GGQMIQPC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/power.ts"],"names":["requireFiniteNonNegative","PRIORITY_GROUPS","EPSILON","bandIndex","priority","Number","isFinite","Math","min","max","trunc","powerBudget","available","consumers","retractedByBand","Array","fill","deployedByBand","consumer","draw","consumerResults","map","Object","freeze","label","symbol","enabled","deployedOnly","index","bands","retractedTotal","deployedTotal","i","retracted","deployed","push","poweredRetracted","poweredDeployed","headroom","utilisation","Infinity","withinBudget"],"mappings":"O,mDAsCA,IAAMC,gBAAkB,EAOxB,IAAMC,QAAU,KAwGhB,SAASC,UAAUC,UACf,GAAIA,gBAAa,IAAcC,OAAOC,SAASF,UAAW,OAAO,EACjE,OAAOG,KAAKC,IAAIP,gBAAiBM,KAAKE,IAAI,EAAGF,KAAKG,MAAMN,YAAc,CAC1E,CA+BO,SAASO,YAAYC,UAAmBC,WAC3Cb,yBAAyB,cAAe,kBAAmBY,WAE3D,MAAME,gBAAkBC,MAAcd,iBAAiBe,KAAK,GAC5D,MAAMC,eAAiBF,MAAcd,iBAAiBe,KAAK,GAC3D,IAAA,MAAWE,YAAYL,UAAW,CAC9Bb,yBAAyB,cAAe,gBAAiBkB,SAASC,KACtE,CACA,MAAMC,gBAAyCP,UAAUQ,IAAKH,UAC1DI,OAAOC,OAAO,IACNL,SAASM,aAAU,EAAY,CAAA,EAAK,CAAEA,MAAON,SAASM,UACtDN,SAASO,cAAW,EAAY,CAAA,EAAK,CAAEA,OAAQP,SAASO,QAC5DN,KAAMD,SAASC,KACfO,QAASR,SAASQ,UAAY,MAC9BtB,SAAUD,UAAUe,SAASd,UAAY,EACzCuB,aAAcT,SAASS,cAAgB,SAI/C,IAAA,MAAWT,YAAYL,UAAW,CAC9B,GAAIK,SAASQ,UAAY,MAAO,SAChC,MAAMP,KAAOD,SAASC,KACtB,GAAIA,OAAS,EAAG,SAChB,MAAMS,MAAQzB,UAAUe,SAASd,UACjC,GAAIc,SAASS,aAAcV,eAAeW,QAAWT,UAChDL,gBAAgBc,QAAWT,IACpC,CAEA,MAAMU,MAAqB,GAC3B,IAAIC,eAAiB,EACrB,IAAIC,cAAgB,EACpB,IAAA,IAASC,EAAI,EAAGA,EAAI/B,gBAAiB+B,IAAK,CACtC,MAAMC,UAAYnB,gBAAgBkB,GAClC,MAAME,SAAWjB,eAAee,GAChCF,gBAAkBG,UAElBF,eAAiBE,UAAYC,SAC7BL,MAAMM,KACFb,OAAOC,OAAO,CACVnB,SAAU4B,EAAI,EACdC,oBAEAC,SAAUD,UAAYC,SACtBJ,8BACAC,4BACAK,iBAAkBN,gBAAkBlB,UAAYV,QAChDmC,gBAAiBN,eAAiBnB,UAAYV,UAG1D,CAEA,OAAOoB,OAAOC,OAAO,CACjBX,oBACAqB,UAAWH,eACXI,SAAUH,cACVO,SAAU1B,UAAYmB,cACtBQ,YAAa3B,UAAY,EAAImB,cAAgBnB,UAAYmB,cAAgB,EAAIS,SAAW,EACxFC,aAAcV,eAAiBnB,UAAYV,QAC3C2B,MAAOP,OAAOC,OAAOM,OACrBhB,UAAWS,OAAOC,OAAOH,kBAEjC,QAAAT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{buildCommodityCatalogue}from"./chunk-L747RVPO.js";var rare_commodities_default=[{symbol:"EraninPearlWhisky",name:"Eranin Pearl Whisky",category:"Legal Drugs"},{symbol:"LavianBrandy",name:"Lavian Brandy",category:"Legal Drugs"},{symbol:"HIP10175BushMeat",name:"HIP 10175 Bush Meat",category:"Foods"},{symbol:"AlbinoQuechuaMammoth",name:"Albino Quechua Mammoth Meat",category:"Foods"},{symbol:"UtgaroarMillenialEggs",name:"Utgaroar Millennial Eggs",category:"Foods"},{symbol:"WitchhaulKobeBeef",name:"Witchhaul Kobe Beef",category:"Foods"},{symbol:"KarsukiLocusts",name:"Karsuki Locusts",category:"Foods"},{symbol:"GiantIrukamaSnails",name:"Giant Irukama Snails",category:"Foods"},{symbol:"BaltahSineVacuumKrill",name:"Baltah'sine Vacuum Krill",category:"Foods"},{symbol:"CetiRabbits",name:"Ceti Rabbits",category:"Foods"},{symbol:"KachiriginLeaches",name:"Kachirigin Filter Leeches",category:"Medicines"},{symbol:"LyraeWeed",name:"Lyrae Weed",category:"Legal Drugs"},{symbol:"OnionHead",name:"Onionhead",category:"Legal Drugs"},{symbol:"TarachTorSpice",name:"Tarach Spice",category:"Legal Drugs"},{symbol:"Wolf1301Fesh",name:"Wolf Fesh",category:"Legal Drugs"},{symbol:"BorasetaniPathogenetics",name:"Borasetani Pathogenetics",category:"Weapons"},{symbol:"HIP118311Swarm",name:"HIP 118311 Swarm",category:"Weapons"},{symbol:"KonggaAle",name:"Kongga Ale",category:"Legal Drugs"},{symbol:"WuthieloKuFroth",name:"Wuthielo Ku Froth",category:"Legal Drugs"},{symbol:"AlacarakmoSkinArt",name:"Alacarakmo Skin Art",category:"Consumer Items"},{symbol:"EleuThermals",name:"Eleu Thermals",category:"Consumer Items"},{symbol:"EshuUmbrellas",name:"Eshu Umbrellas",category:"Consumer Items"},{symbol:"KaretiiCouture",name:"Karetii Couture",category:"Consumer Items"},{symbol:"NjangariSaddles",name:"Njangari Saddles",category:"Consumer Items"},{symbol:"AnyNaCoffee",name:"Any Na Coffee",category:"Foods"},{symbol:"CD75CatCoffee",name:"CD-75 Kitten Brand Coffee",category:"Foods"},{symbol:"GomanYauponCoffee",name:"Goman Yaupon Coffee",category:"Foods"},{symbol:"VolkhabBeeDrones",name:"Volkhab Bee Drones",category:"Machinery"},{symbol:"KinagoInstruments",name:"Kinago Violins",category:"Consumer Items"},{symbol:"NgunaModernAntiques",name:"Nguna Modern Antiques",category:"Consumer Items"},{symbol:"RajukruStoves",name:"Rajukru Multi-Stoves",category:"Consumer Items"},{symbol:"TiolceWaste2PasteUnits",name:"Tiolce Waste2Paste Units",category:"Consumer Items"},{symbol:"ChiEridaniMarinePaste",name:"Chi Eridani Marine Paste",category:"Foods"},{symbol:"EsusekuCaviar",name:"Esuseku Caviar",category:"Foods"},{symbol:"LiveHecateSeaWorms",name:"Live Hecate Sea Worms",category:"Foods"},{symbol:"HelvetitjPearls",name:"Helvetitj Pearls",category:"Metals"},{symbol:"HIP41181Squid",name:"HIP Proto-Squid",category:"Foods"},{symbol:"CoquimSpongiformVictuals",name:"Coquim Spongiform Victuals",category:"Foods"},{symbol:"AerialEdenApple",name:"Eden Apples of Aerial",category:"Foods"},{symbol:"NeritusBerries",name:"Neritus Berries",category:"Foods"},{symbol:"OchoengChillies",name:"Ochoeng Chillies",category:"Foods"},{symbol:"DeuringasTruffles",name:"Deuringas Truffles",category:"Foods"},{symbol:"HR7221Wheat",name:"HR 7221 Wheat",category:"Foods"},{symbol:"JarouaRice",name:"Jaroua Rice",category:"Foods"},{symbol:"BelalansRayLeather",name:"Belalans Ray Leather",category:"Textiles"},{symbol:"DamnaCarapaces",name:"Damna Carapaces",category:"Textiles"},{symbol:"RapaBaoSnakeSkins",name:"Rapa Bao Snake Skins",category:"Textiles"},{symbol:"VanayequiRhinoFur",name:"Vanayequi Ceratomorpha Fur",category:"Textiles"},{symbol:"BastSnakeGin",name:"Bast Snake Gin",category:"Legal Drugs"},{symbol:"ThrutisCream",name:"Thrutis Cream",category:"Legal Drugs"},{symbol:"WulpaHyperboreSystems",name:"Wulpa Hyperbore Systems",category:"Machinery"},{symbol:"AganippeRush",name:"Aganippe Rush",category:"Medicines"},{symbol:"TerraMaterBloodBores",name:"Terra Mater Blood Bores",category:"Medicines"},{symbol:"HolvaDuellingBlades",name:"Holva Duelling Blades",category:"Weapons"},{symbol:"KamorinHistoricWeapons",name:"Kamorin Historic Weapons",category:"Weapons"},{symbol:"GilyaSignatureWeapons",name:"Gilya Signature Weapons",category:"Weapons"},{symbol:"DeltaPhoenicisPalms",name:"Delta Phoenicis Palms",category:"Chemicals"},{symbol:"ToxandjiVirocide",name:"Toxandji Virocide",category:"Chemicals"},{symbol:"XiheCompanions",name:"Xihe Biomorphic Companions",category:"Technology"},{symbol:"SanumaMEAT",name:"Sanuma Decorative Meat",category:"Foods"},{symbol:"EthgrezeTeaBuds",name:"Ethgreze Tea Buds",category:"Foods"},{symbol:"CeremonialHeikeTea",name:"Ceremonial Heike Tea",category:"Foods"},{symbol:"TanmarkTranquilTea",name:"Tanmark Tranquil Tea",category:"Foods"},{symbol:"AZCancriFormula42",name:"AZ Cancri Formula 42",category:"Technology"},{symbol:"KamitraCigars",name:"Kamitra Cigars",category:"Legal Drugs"},{symbol:"RusaniOldSmokey",name:"Rusani Old Smokey",category:"Legal Drugs"},{symbol:"YasoKondiLeaf",name:"Yaso Kondi Leaf",category:"Legal Drugs"},{symbol:"ChateauDeAegaeon",name:"Chateau De Aegaeon",category:"Legal Drugs"},{symbol:"WatersOfShintara",name:"The Waters of Shintara",category:"Medicines"},{symbol:"OphiuchiExinoArtefacts",name:"Ophiuch Exino Artefacts",category:"Consumer Items"},{symbol:"BakedGreebles",name:"Baked Greebles",category:"Foods"},{symbol:"CetiAepyornisEgg",name:"Aepyornis Egg",category:"Foods"},{symbol:"SaxonWine",name:"Saxon Wine",category:"Legal Drugs"},{symbol:"CentauriMegaGin",name:"Centauri Mega Gin",category:"Legal Drugs"},{symbol:"AnduligaFireWorks",name:"Anduliga Fire Works",category:"Consumer Items"},{symbol:"BankiAmphibiousLeather",name:"Banki Amphibious Leather",category:"Textiles"},{symbol:"CherbonesBloodCrystals",name:"Cherbones Blood Crystals",category:"Metals"},{symbol:"MotronaExperienceJelly",name:"Motrona Experience Jelly",category:"Legal Drugs"},{symbol:"GeawenDanceDust",name:"Geawen Dance Dust",category:"Legal Drugs"},{symbol:"GerasianGueuzeBeer",name:"Gerasian Gueuze Beer",category:"Legal Drugs"},{symbol:"HaidneBlackBrew",name:"Haiden Black Brew",category:"Foods"},{symbol:"HavasupaiDreamCatcher",name:"Havasupai Dream Catcher",category:"Consumer Items"},{symbol:"BurnhamBileDistillate",name:"Burnham Bile Distillate",category:"Legal Drugs"},{symbol:"HIPOrganophosphates",name:"HIP Organophosphates",category:"Chemicals"},{symbol:"JaradharrePuzzlebox",name:"Jaradharre Puzzle Box",category:"Consumer Items"},{symbol:"KorroKungPellets",name:"Koro Kung Pellets",category:"Chemicals"},{symbol:"LFTVoidExtractCoffee",name:"Void Extract Coffee",category:"Foods"},{symbol:"HonestyPills",name:"Honesty Pills",category:"Medicines"},{symbol:"NonEuclidianExotanks",name:"Non Euclidian Exotanks",category:"Machinery"},{symbol:"LTTHyperSweet",name:"LTT Hyper Sweet",category:"Foods"},{symbol:"MechucosHighTea",name:"Mechucos High Tea",category:"Foods"},{symbol:"MedbStarlube",name:"Medb Starlube",category:"Chemicals"},{symbol:"MokojingBeastFeast",name:"Mokojing Beast Feast",category:"Foods"},{symbol:"MukusubiiChitinOs",name:"Mukusubii Chitin-os",category:"Foods"},{symbol:"MulachiGiantFungus",name:"Mulachi Giant Fungus",category:"Foods"},{symbol:"NgadandariFireOpals",name:"Ngadandari Fire Opals",category:"Metals"},{symbol:"TiegfriesSynthSilk",name:"Tiegfries Synth Silk",category:"Textiles"},{symbol:"UzumokuLowGWings",name:"Uzumoku Low-G Wings",category:"Consumer Items"},{symbol:"VHerculisBodyRub",name:"V Herculis Body Rub",category:"Medicines"},{symbol:"WheemeteWheatCakes",name:"Wheemete Wheat Cakes",category:"Foods"},{symbol:"VegaSlimWeed",name:"Vega Slimweed",category:"Medicines"},{symbol:"AltairianSkin",name:"Altairian Skin",category:"Consumer Items"},{symbol:"PavonisEarGrubs",name:"Pavonis Ear Grubs",category:"Legal Drugs"},{symbol:"JotunMookah",name:"Jotun Mookah",category:"Textiles"},{symbol:"GiantVerrix",name:"Giant Verrix",category:"Machinery"},{symbol:"IndiBourbon",name:"Indi Bourbon",category:"Legal Drugs"},{symbol:"AroucaConventualSweets",name:"Arouca Conventual Sweets",category:"Foods"},{symbol:"TauriChimes",name:"Tauri Chimes",category:"Consumer Items"},{symbol:"ZeesszeAntGlue",name:"Zeessze Ant Grub Glue",category:"Consumer Items"},{symbol:"PantaaPrayerSticks",name:"Pantaa Prayer Sticks",category:"Medicines"},{symbol:"FujinTea",name:"Fujin Tea",category:"Foods"},{symbol:"ChameleonCloth",name:"Chameleon Cloth",category:"Textiles"},{symbol:"OrrerianViciousBrew",name:"Orrerian Vicious Brew",category:"Foods"},{symbol:"UszaianTreeGrub",name:"Uszaian Tree Grub",category:"Foods"},{symbol:"MomusBogSpaniel",name:"Momus Bog Spaniel",category:"Consumer Items"},{symbol:"DisoMaCorn",name:"Diso Ma Corn",category:"Foods"},{symbol:"LeestianEvilJuice",name:"Leestian Evil Juice",category:"Legal Drugs"},{symbol:"BlueMilk",name:"Azure Milk",category:"Foods"},{symbol:"AlienEggs",name:"Leathery Eggs",category:"Consumer Items"},{symbol:"AlyaBodilySoap",name:"Alya Body Soap",category:"Medicines"},{symbol:"VidavantianLace",name:"Vidavantian Lace",category:"Consumer Items"},{symbol:"TransgenicOnionHead",name:"Lucan Onionhead",category:"Legal Drugs"},{symbol:"JaquesQuinentianStill",name:"Jaques Quinentian Still",category:"Consumer Items"},{symbol:"SoontillRelics",name:"Soontill Relics",category:"Consumer Items"},{symbol:"Advert1",name:"Ultra-Compact Processor Prototypes",category:"Consumer Items"},{symbol:"TheHuttonMug",name:"The Hutton Mug",category:"Consumer Items"},{symbol:"SothisCrystallineGold",name:"Sothis Crystalline Gold",category:"Metals"},{symbol:"MasterChefs",name:"Master Chefs",category:"Slavery"},{symbol:"PersonalGifts",name:"Festive Gifts",category:"Salvage"},{symbol:"CrystallineSpheres",name:"Crystalline Spheres",category:"Salvage"},{symbol:"OnionHeadA",name:"Onionhead Alpha Strain",category:"Legal Drugs"},{symbol:"OnionHeadB",name:"Onionhead Beta Strain",category:"Legal Drugs"},{symbol:"GalacticTravelGuide",name:"Galactic Travel Guide",category:"Salvage"},{symbol:"AnimalEffigies",name:"Crom Silver Fesh",category:"Legal Drugs"},{symbol:"ShansCharisOrchid",name:"Shan's Charis Orchid",category:"Consumer Items"},{symbol:"BuckyballBeerMats",name:"Buckyball Beer Mats",category:"Consumer Items"},{symbol:"HarmaSilverSeaRum",name:"Harma Silver Sea Rum",category:"Legal Drugs"},{symbol:"PlatinumAloy",name:"Platinum Alloy",category:"Metals"},{symbol:"Nanomedicines",name:"Nanomedicines",category:"Medicines"},{symbol:"Duradrives",name:"Duradrives",category:"Consumer Items"},{symbol:"ApaVietii",name:"Apa Vietii",category:"Legal Drugs"},{symbol:"ClassifiedExperimentalEquipment",name:"Classified Experimental Equipment",category:"Technology"}];var RARE_COMMODITIES=buildCommodityCatalogue(rare_commodities_default,true);export{RARE_COMMODITIES};//# sourceMappingURL=chunk-EYGVDJ2I.js.map
|
|
1
|
+
import{buildCommodityCatalogue}from"./chunk-VQJXRPYI.js";var rare_commodities_default=[{symbol:"EraninPearlWhisky",name:"Eranin Pearl Whisky",category:"Legal Drugs"},{symbol:"LavianBrandy",name:"Lavian Brandy",category:"Legal Drugs"},{symbol:"HIP10175BushMeat",name:"HIP 10175 Bush Meat",category:"Foods"},{symbol:"AlbinoQuechuaMammoth",name:"Albino Quechua Mammoth Meat",category:"Foods"},{symbol:"UtgaroarMillenialEggs",name:"Utgaroar Millennial Eggs",category:"Foods"},{symbol:"WitchhaulKobeBeef",name:"Witchhaul Kobe Beef",category:"Foods"},{symbol:"KarsukiLocusts",name:"Karsuki Locusts",category:"Foods"},{symbol:"GiantIrukamaSnails",name:"Giant Irukama Snails",category:"Foods"},{symbol:"BaltahSineVacuumKrill",name:"Baltah'sine Vacuum Krill",category:"Foods"},{symbol:"CetiRabbits",name:"Ceti Rabbits",category:"Foods"},{symbol:"KachiriginLeaches",name:"Kachirigin Filter Leeches",category:"Medicines"},{symbol:"LyraeWeed",name:"Lyrae Weed",category:"Legal Drugs"},{symbol:"OnionHead",name:"Onionhead",category:"Legal Drugs"},{symbol:"TarachTorSpice",name:"Tarach Spice",category:"Legal Drugs"},{symbol:"Wolf1301Fesh",name:"Wolf Fesh",category:"Legal Drugs"},{symbol:"BorasetaniPathogenetics",name:"Borasetani Pathogenetics",category:"Weapons"},{symbol:"HIP118311Swarm",name:"HIP 118311 Swarm",category:"Weapons"},{symbol:"KonggaAle",name:"Kongga Ale",category:"Legal Drugs"},{symbol:"WuthieloKuFroth",name:"Wuthielo Ku Froth",category:"Legal Drugs"},{symbol:"AlacarakmoSkinArt",name:"Alacarakmo Skin Art",category:"Consumer Items"},{symbol:"EleuThermals",name:"Eleu Thermals",category:"Consumer Items"},{symbol:"EshuUmbrellas",name:"Eshu Umbrellas",category:"Consumer Items"},{symbol:"KaretiiCouture",name:"Karetii Couture",category:"Consumer Items"},{symbol:"NjangariSaddles",name:"Njangari Saddles",category:"Consumer Items"},{symbol:"AnyNaCoffee",name:"Any Na Coffee",category:"Foods"},{symbol:"CD75CatCoffee",name:"CD-75 Kitten Brand Coffee",category:"Foods"},{symbol:"GomanYauponCoffee",name:"Goman Yaupon Coffee",category:"Foods"},{symbol:"VolkhabBeeDrones",name:"Volkhab Bee Drones",category:"Machinery"},{symbol:"KinagoInstruments",name:"Kinago Violins",category:"Consumer Items"},{symbol:"NgunaModernAntiques",name:"Nguna Modern Antiques",category:"Consumer Items"},{symbol:"RajukruStoves",name:"Rajukru Multi-Stoves",category:"Consumer Items"},{symbol:"TiolceWaste2PasteUnits",name:"Tiolce Waste2Paste Units",category:"Consumer Items"},{symbol:"ChiEridaniMarinePaste",name:"Chi Eridani Marine Paste",category:"Foods"},{symbol:"EsusekuCaviar",name:"Esuseku Caviar",category:"Foods"},{symbol:"LiveHecateSeaWorms",name:"Live Hecate Sea Worms",category:"Foods"},{symbol:"HelvetitjPearls",name:"Helvetitj Pearls",category:"Metals"},{symbol:"HIP41181Squid",name:"HIP Proto-Squid",category:"Foods"},{symbol:"CoquimSpongiformVictuals",name:"Coquim Spongiform Victuals",category:"Foods"},{symbol:"AerialEdenApple",name:"Eden Apples of Aerial",category:"Foods"},{symbol:"NeritusBerries",name:"Neritus Berries",category:"Foods"},{symbol:"OchoengChillies",name:"Ochoeng Chillies",category:"Foods"},{symbol:"DeuringasTruffles",name:"Deuringas Truffles",category:"Foods"},{symbol:"HR7221Wheat",name:"HR 7221 Wheat",category:"Foods"},{symbol:"JarouaRice",name:"Jaroua Rice",category:"Foods"},{symbol:"BelalansRayLeather",name:"Belalans Ray Leather",category:"Textiles"},{symbol:"DamnaCarapaces",name:"Damna Carapaces",category:"Textiles"},{symbol:"RapaBaoSnakeSkins",name:"Rapa Bao Snake Skins",category:"Textiles"},{symbol:"VanayequiRhinoFur",name:"Vanayequi Ceratomorpha Fur",category:"Textiles"},{symbol:"BastSnakeGin",name:"Bast Snake Gin",category:"Legal Drugs"},{symbol:"ThrutisCream",name:"Thrutis Cream",category:"Legal Drugs"},{symbol:"WulpaHyperboreSystems",name:"Wulpa Hyperbore Systems",category:"Machinery"},{symbol:"AganippeRush",name:"Aganippe Rush",category:"Medicines"},{symbol:"TerraMaterBloodBores",name:"Terra Mater Blood Bores",category:"Medicines"},{symbol:"HolvaDuellingBlades",name:"Holva Duelling Blades",category:"Weapons"},{symbol:"KamorinHistoricWeapons",name:"Kamorin Historic Weapons",category:"Weapons"},{symbol:"GilyaSignatureWeapons",name:"Gilya Signature Weapons",category:"Weapons"},{symbol:"DeltaPhoenicisPalms",name:"Delta Phoenicis Palms",category:"Chemicals"},{symbol:"ToxandjiVirocide",name:"Toxandji Virocide",category:"Chemicals"},{symbol:"XiheCompanions",name:"Xihe Biomorphic Companions",category:"Technology"},{symbol:"SanumaMEAT",name:"Sanuma Decorative Meat",category:"Foods"},{symbol:"EthgrezeTeaBuds",name:"Ethgreze Tea Buds",category:"Foods"},{symbol:"CeremonialHeikeTea",name:"Ceremonial Heike Tea",category:"Foods"},{symbol:"TanmarkTranquilTea",name:"Tanmark Tranquil Tea",category:"Foods"},{symbol:"AZCancriFormula42",name:"AZ Cancri Formula 42",category:"Technology"},{symbol:"KamitraCigars",name:"Kamitra Cigars",category:"Legal Drugs"},{symbol:"RusaniOldSmokey",name:"Rusani Old Smokey",category:"Legal Drugs"},{symbol:"YasoKondiLeaf",name:"Yaso Kondi Leaf",category:"Legal Drugs"},{symbol:"ChateauDeAegaeon",name:"Chateau De Aegaeon",category:"Legal Drugs"},{symbol:"WatersOfShintara",name:"The Waters of Shintara",category:"Medicines"},{symbol:"OphiuchiExinoArtefacts",name:"Ophiuch Exino Artefacts",category:"Consumer Items"},{symbol:"BakedGreebles",name:"Baked Greebles",category:"Foods"},{symbol:"CetiAepyornisEgg",name:"Aepyornis Egg",category:"Foods"},{symbol:"SaxonWine",name:"Saxon Wine",category:"Legal Drugs"},{symbol:"CentauriMegaGin",name:"Centauri Mega Gin",category:"Legal Drugs"},{symbol:"AnduligaFireWorks",name:"Anduliga Fire Works",category:"Consumer Items"},{symbol:"BankiAmphibiousLeather",name:"Banki Amphibious Leather",category:"Textiles"},{symbol:"CherbonesBloodCrystals",name:"Cherbones Blood Crystals",category:"Metals"},{symbol:"MotronaExperienceJelly",name:"Motrona Experience Jelly",category:"Legal Drugs"},{symbol:"GeawenDanceDust",name:"Geawen Dance Dust",category:"Legal Drugs"},{symbol:"GerasianGueuzeBeer",name:"Gerasian Gueuze Beer",category:"Legal Drugs"},{symbol:"HaidneBlackBrew",name:"Haiden Black Brew",category:"Foods"},{symbol:"HavasupaiDreamCatcher",name:"Havasupai Dream Catcher",category:"Consumer Items"},{symbol:"BurnhamBileDistillate",name:"Burnham Bile Distillate",category:"Legal Drugs"},{symbol:"HIPOrganophosphates",name:"HIP Organophosphates",category:"Chemicals"},{symbol:"JaradharrePuzzlebox",name:"Jaradharre Puzzle Box",category:"Consumer Items"},{symbol:"KorroKungPellets",name:"Koro Kung Pellets",category:"Chemicals"},{symbol:"LFTVoidExtractCoffee",name:"Void Extract Coffee",category:"Foods"},{symbol:"HonestyPills",name:"Honesty Pills",category:"Medicines"},{symbol:"NonEuclidianExotanks",name:"Non Euclidian Exotanks",category:"Machinery"},{symbol:"LTTHyperSweet",name:"LTT Hyper Sweet",category:"Foods"},{symbol:"MechucosHighTea",name:"Mechucos High Tea",category:"Foods"},{symbol:"MedbStarlube",name:"Medb Starlube",category:"Chemicals"},{symbol:"MokojingBeastFeast",name:"Mokojing Beast Feast",category:"Foods"},{symbol:"MukusubiiChitinOs",name:"Mukusubii Chitin-os",category:"Foods"},{symbol:"MulachiGiantFungus",name:"Mulachi Giant Fungus",category:"Foods"},{symbol:"NgadandariFireOpals",name:"Ngadandari Fire Opals",category:"Metals"},{symbol:"TiegfriesSynthSilk",name:"Tiegfries Synth Silk",category:"Textiles"},{symbol:"UzumokuLowGWings",name:"Uzumoku Low-G Wings",category:"Consumer Items"},{symbol:"VHerculisBodyRub",name:"V Herculis Body Rub",category:"Medicines"},{symbol:"WheemeteWheatCakes",name:"Wheemete Wheat Cakes",category:"Foods"},{symbol:"VegaSlimWeed",name:"Vega Slimweed",category:"Medicines"},{symbol:"AltairianSkin",name:"Altairian Skin",category:"Consumer Items"},{symbol:"PavonisEarGrubs",name:"Pavonis Ear Grubs",category:"Legal Drugs"},{symbol:"JotunMookah",name:"Jotun Mookah",category:"Textiles"},{symbol:"GiantVerrix",name:"Giant Verrix",category:"Machinery"},{symbol:"IndiBourbon",name:"Indi Bourbon",category:"Legal Drugs"},{symbol:"AroucaConventualSweets",name:"Arouca Conventual Sweets",category:"Foods"},{symbol:"TauriChimes",name:"Tauri Chimes",category:"Consumer Items"},{symbol:"ZeesszeAntGlue",name:"Zeessze Ant Grub Glue",category:"Consumer Items"},{symbol:"PantaaPrayerSticks",name:"Pantaa Prayer Sticks",category:"Medicines"},{symbol:"FujinTea",name:"Fujin Tea",category:"Foods"},{symbol:"ChameleonCloth",name:"Chameleon Cloth",category:"Textiles"},{symbol:"OrrerianViciousBrew",name:"Orrerian Vicious Brew",category:"Foods"},{symbol:"UszaianTreeGrub",name:"Uszaian Tree Grub",category:"Foods"},{symbol:"MomusBogSpaniel",name:"Momus Bog Spaniel",category:"Consumer Items"},{symbol:"DisoMaCorn",name:"Diso Ma Corn",category:"Foods"},{symbol:"LeestianEvilJuice",name:"Leestian Evil Juice",category:"Legal Drugs"},{symbol:"BlueMilk",name:"Azure Milk",category:"Foods"},{symbol:"AlienEggs",name:"Leathery Eggs",category:"Consumer Items"},{symbol:"AlyaBodilySoap",name:"Alya Body Soap",category:"Medicines"},{symbol:"VidavantianLace",name:"Vidavantian Lace",category:"Consumer Items"},{symbol:"TransgenicOnionHead",name:"Lucan Onionhead",category:"Legal Drugs"},{symbol:"JaquesQuinentianStill",name:"Jaques Quinentian Still",category:"Consumer Items"},{symbol:"SoontillRelics",name:"Soontill Relics",category:"Consumer Items"},{symbol:"Advert1",name:"Ultra-Compact Processor Prototypes",category:"Consumer Items"},{symbol:"TheHuttonMug",name:"The Hutton Mug",category:"Consumer Items"},{symbol:"SothisCrystallineGold",name:"Sothis Crystalline Gold",category:"Metals"},{symbol:"MasterChefs",name:"Master Chefs",category:"Slavery"},{symbol:"PersonalGifts",name:"Festive Gifts",category:"Salvage"},{symbol:"CrystallineSpheres",name:"Crystalline Spheres",category:"Salvage"},{symbol:"OnionHeadA",name:"Onionhead Alpha Strain",category:"Legal Drugs"},{symbol:"OnionHeadB",name:"Onionhead Beta Strain",category:"Legal Drugs"},{symbol:"GalacticTravelGuide",name:"Galactic Travel Guide",category:"Salvage"},{symbol:"AnimalEffigies",name:"Crom Silver Fesh",category:"Legal Drugs"},{symbol:"ShansCharisOrchid",name:"Shan's Charis Orchid",category:"Consumer Items"},{symbol:"BuckyballBeerMats",name:"Buckyball Beer Mats",category:"Consumer Items"},{symbol:"HarmaSilverSeaRum",name:"Harma Silver Sea Rum",category:"Legal Drugs"},{symbol:"PlatinumAloy",name:"Platinum Alloy",category:"Metals"},{symbol:"Nanomedicines",name:"Nanomedicines",category:"Medicines"},{symbol:"Duradrives",name:"Duradrives",category:"Consumer Items"},{symbol:"ApaVietii",name:"Apa Vietii",category:"Legal Drugs"},{symbol:"ClassifiedExperimentalEquipment",name:"Classified Experimental Equipment",category:"Technology"}];var RARE_COMMODITIES=buildCommodityCatalogue(rare_commodities_default,true);export{RARE_COMMODITIES};//# sourceMappingURL=chunk-GMTAFUAG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function buildMaterialCatalogue(records,category){return Object.freeze(records.map(record=>Object.freeze({category:category,symbol:record.symbol,name:record.name,elementSymbol:record.elementSymbol,grade:record.grade,line:record.line})))}export{buildMaterialCatalogue};//# sourceMappingURL=chunk-
|
|
1
|
+
function buildMaterialCatalogue(records,category){return Object.freeze(records.map(record=>Object.freeze({category:category,symbol:record.symbol,name:record.name,elementSymbol:record.elementSymbol,grade:record.grade,line:record.line})))}export{buildMaterialCatalogue};//# sourceMappingURL=chunk-GTEHRZPN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/materials/internal/material-catalogue.ts"],"names":["buildMaterialCatalogue","records","category","Object","freeze","map","record","symbol","name","elementSymbol","grade","line"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/materials/internal/material-catalogue.ts"],"names":["buildMaterialCatalogue","records","category","Object","freeze","map","record","symbol","name","elementSymbol","grade","line"],"mappings":"AAQO,SAASA,uBACZC,QACAC,UAKA,OAAOC,OAAOC,OACVH,QAAQI,IAAKC,QACTH,OAAOC,OAAO,CACVF,kBACAK,OAAQD,OAAOC,OACfC,KAAMF,OAAOE,KACbC,cAAeH,OAAOG,cACtBC,MAAOJ,OAAOI,MACdC,KAAML,OAAOK,QAI7B,QAAAX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{buildMaterialCatalogue}from"./chunk-
|
|
1
|
+
import{buildMaterialCatalogue}from"./chunk-GTEHRZPN.js";var materials_manufactured_default=[{symbol:"SalvagedAlloys",name:"Salvaged Alloys",elementSymbol:null,grade:1,line:"Alloys"},{symbol:"GalvanisingAlloys",name:"Galvanising Alloys",elementSymbol:null,grade:2,line:"Alloys"},{symbol:"PhaseAlloys",name:"Phase Alloys",elementSymbol:null,grade:3,line:"Alloys"},{symbol:"ProtoLightAlloys",name:"Proto Light Alloys",elementSymbol:null,grade:4,line:"Alloys"},{symbol:"ProtoRadiolicAlloys",name:"Proto Radiolic Alloys",elementSymbol:null,grade:5,line:"Alloys"},{symbol:"GridResistors",name:"Grid Resistors",elementSymbol:null,grade:1,line:"Capacitors"},{symbol:"HybridCapacitors",name:"Hybrid Capacitors",elementSymbol:null,grade:2,line:"Capacitors"},{symbol:"ElectrochemicalArrays",name:"Electrochemical Arrays",elementSymbol:null,grade:3,line:"Capacitors"},{symbol:"PolymerCapacitors",name:"Polymer Capacitors",elementSymbol:null,grade:4,line:"Capacitors"},{symbol:"MilitarySupercapacitors",name:"Military Supercapacitors",elementSymbol:null,grade:5,line:"Capacitors"},{symbol:"ChemicalStorageUnits",name:"Chemical Storage Units",elementSymbol:null,grade:1,line:"Chemical"},{symbol:"ChemicalProcessors",name:"Chemical Processors",elementSymbol:null,grade:2,line:"Chemical"},{symbol:"ChemicalDistillery",name:"Chemical Distillery",elementSymbol:null,grade:3,line:"Chemical"},{symbol:"ChemicalManipulators",name:"Chemical Manipulators",elementSymbol:null,grade:4,line:"Chemical"},{symbol:"PharmaceuticalIsolators",name:"Pharmaceutical Isolators",elementSymbol:null,grade:5,line:"Chemical"},{symbol:"CompactComposites",name:"Compact Composites",elementSymbol:null,grade:1,line:"Composite"},{symbol:"FilamentComposites",name:"Filament Composites",elementSymbol:null,grade:2,line:"Composite"},{symbol:"HighDensityComposites",name:"High Density Composites",elementSymbol:null,grade:3,line:"Composite"},{symbol:"FedProprietaryComposites",name:"Proprietary Composites",elementSymbol:null,grade:4,line:"Composite"},{symbol:"FedCoreComposites",name:"Core Dynamics Composites",elementSymbol:null,grade:5,line:"Composite"},{symbol:"BasicConductors",name:"Basic Conductors",elementSymbol:null,grade:1,line:"Conductive"},{symbol:"ConductiveComponents",name:"Conductive Components",elementSymbol:null,grade:2,line:"Conductive"},{symbol:"ConductiveCeramics",name:"Conductive Ceramics",elementSymbol:null,grade:3,line:"Conductive"},{symbol:"ConductivePolymers",name:"Conductive Polymers",elementSymbol:null,grade:4,line:"Conductive"},{symbol:"BiotechConductors",name:"Biotech Conductors",elementSymbol:null,grade:5,line:"Conductive"},{symbol:"CrystalShards",name:"Crystal Shards",elementSymbol:null,grade:1,line:"Crystals"},{symbol:"UncutFocusCrystals",name:"Flawed Focus Crystals",elementSymbol:null,grade:2,line:"Crystals"},{symbol:"FocusCrystals",name:"Focus Crystals",elementSymbol:null,grade:3,line:"Crystals"},{symbol:"RefinedFocusCrystals",name:"Refined Focus Crystals",elementSymbol:null,grade:4,line:"Crystals"},{symbol:"ExquisiteFocusCrystals",name:"Exquisite Focus Crystals",elementSymbol:null,grade:5,line:"Crystals"},{symbol:"Guardian_PowerCell",name:"Guardian Power Cell",elementSymbol:null,grade:1,line:"Guardian"},{symbol:"Guardian_Sentinel_WreckageComponents",name:"Guardian Sentinel Wreckage Components",elementSymbol:null,grade:1,line:"Guardian"},{symbol:"Guardian_PowerConduit",name:"Guardian Power Conduit",elementSymbol:null,grade:2,line:"Guardian"},{symbol:"Guardian_Sentinel_WeaponParts",name:"Guardian Sentinel Weapon Parts",elementSymbol:null,grade:3,line:"Guardian"},{symbol:"Guardian_TechComponent",name:"Guardian Technology Component",elementSymbol:null,grade:3,line:"Guardian"},{symbol:"HeatConductionWiring",name:"Heat Conduction Wiring",elementSymbol:null,grade:1,line:"Heat"},{symbol:"HeatDispersionPlate",name:"Heat Dispersion Plate",elementSymbol:null,grade:2,line:"Heat"},{symbol:"HeatExchangers",name:"Heat Exchangers",elementSymbol:null,grade:3,line:"Heat"},{symbol:"HeatVanes",name:"Heat Vanes",elementSymbol:null,grade:4,line:"Heat"},{symbol:"ProtoHeatRadiators",name:"Proto Heat Radiators",elementSymbol:null,grade:5,line:"Heat"},{symbol:"MechanicalScrap",name:"Mechanical Scrap",elementSymbol:null,grade:1,line:"Mechanical Components"},{symbol:"MechanicalEquipment",name:"Mechanical Equipment",elementSymbol:null,grade:2,line:"Mechanical Components"},{symbol:"MechanicalComponents",name:"Mechanical Components",elementSymbol:null,grade:3,line:"Mechanical Components"},{symbol:"ConfigurableComponents",name:"Configurable Components",elementSymbol:null,grade:4,line:"Mechanical Components"},{symbol:"ImprovisedComponents",name:"Improvised Components",elementSymbol:null,grade:5,line:"Mechanical Components"},{symbol:"WornShieldEmitters",name:"Worn Shield Emitters",elementSymbol:null,grade:1,line:"Shielding"},{symbol:"ShieldEmitters",name:"Shield Emitters",elementSymbol:null,grade:2,line:"Shielding"},{symbol:"ShieldingSensors",name:"Shielding Sensors",elementSymbol:null,grade:3,line:"Shielding"},{symbol:"CompoundShielding",name:"Compound Shielding",elementSymbol:null,grade:4,line:"Shielding"},{symbol:"ImperialShielding",name:"Imperial Shielding",elementSymbol:null,grade:5,line:"Shielding"},{symbol:"tg_abrasion03",name:"Hardened Surface Fragments",elementSymbol:null,grade:1,line:"Thargoid"},{symbol:"tg_causticshard",name:"Caustic Shard",elementSymbol:null,grade:2,line:"Thargoid"},{symbol:"unknowncorechip",name:"Tactical Core Chip",elementSymbol:null,grade:2,line:"Thargoid"},{symbol:"UnknownCarapace",name:"Thargoid Carapace",elementSymbol:null,grade:2,line:"Thargoid"},{symbol:"TG_BioMechanicalConduits",name:"Bio-Mechanical Conduits",elementSymbol:null,grade:3,line:"Thargoid"},{symbol:"tg_causticgeneratorparts",name:"Corrosive Mechanisms",elementSymbol:null,grade:3,line:"Thargoid"},{symbol:"tg_abrasion02",name:"Phasing Membrane Residue",elementSymbol:null,grade:3,line:"Thargoid"},{symbol:"UnknownEnergyCell",name:"Thargoid Energy Cell",elementSymbol:null,grade:3,line:"Thargoid"},{symbol:"TG_WreckageComponents",name:"Wreckage Components",elementSymbol:null,grade:3,line:"Thargoid"},{symbol:"tg_causticcrystal",name:"Caustic Crystal",elementSymbol:null,grade:4,line:"Thargoid"},{symbol:"UnknownTechnologyComponents",name:"Thargoid Technological Components",elementSymbol:null,grade:4,line:"Thargoid"},{symbol:"TG_WeaponParts",name:"Weapon Parts",elementSymbol:null,grade:4,line:"Thargoid"},{symbol:"tg_abrasion01",name:"Heat Exposure Specimen",elementSymbol:null,grade:5,line:"Thargoid"},{symbol:"TG_PropulsionElement",name:"Propulsion Elements",elementSymbol:null,grade:5,line:"Thargoid"},{symbol:"UnknownEnergySource",name:"Sensor Fragment",elementSymbol:null,grade:5,line:"Thargoid"},{symbol:"UnknownOrganicCircuitry",name:"Thargoid Organic Circuitry",elementSymbol:null,grade:5,line:"Thargoid"},{symbol:"TemperedAlloys",name:"Tempered Alloys",elementSymbol:null,grade:1,line:"Thermic"},{symbol:"HeatResistantCeramics",name:"Heat Resistant Ceramics",elementSymbol:null,grade:2,line:"Thermic"},{symbol:"PrecipitatedAlloys",name:"Precipitated Alloys",elementSymbol:null,grade:3,line:"Thermic"},{symbol:"ThermicAlloys",name:"Thermic Alloys",elementSymbol:null,grade:4,line:"Thermic"},{symbol:"MilitaryGradeAlloys",name:"Military Grade Alloys",elementSymbol:null,grade:5,line:"Thermic"}];var MANUFACTURED_MATERIALS=buildMaterialCatalogue(materials_manufactured_default,"manufactured");export{MANUFACTURED_MATERIALS};//# sourceMappingURL=chunk-ITKZKREP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ALL_MATERIALS}from"./chunk-
|
|
1
|
+
import{ALL_MATERIALS}from"./chunk-JO52LYO3.js";import{findInKeyIndex,findByKey,filterByKey,createKeyIndex}from"./chunk-BKWLI44T.js";import{describeValue}from"./chunk-PKWVG2JY.js";var MaterialGrade=/* @__PURE__ */(MaterialGrade2=>{MaterialGrade2[MaterialGrade2["VeryCommon"]=1]="VeryCommon";MaterialGrade2[MaterialGrade2["Common"]=2]="Common";MaterialGrade2[MaterialGrade2["Standard"]=3]="Standard";MaterialGrade2[MaterialGrade2["Rare"]=4]="Rare";MaterialGrade2[MaterialGrade2["VeryRare"]=5]="VeryRare";return MaterialGrade2})(MaterialGrade||{});var MaterialLine=/* @__PURE__ */(MaterialLine2=>{MaterialLine2["Carbon"]="Carbon";MaterialLine2["Phosphorus"]="Phosphorus";MaterialLine2["Sulphur"]="Sulphur";MaterialLine2["Iron"]="Iron";MaterialLine2["Nickel"]="Nickel";MaterialLine2["Rhenium"]="Rhenium";MaterialLine2["Lead"]="Lead";MaterialLine2["Chemical"]="Chemical";MaterialLine2["Thermic"]="Thermic";MaterialLine2["Heat"]="Heat";MaterialLine2["Conductive"]="Conductive";MaterialLine2["MechanicalComponents"]="Mechanical Components";MaterialLine2["Capacitors"]="Capacitors";MaterialLine2["Shielding"]="Shielding";MaterialLine2["Composite"]="Composite";MaterialLine2["Crystals"]="Crystals";MaterialLine2["Alloys"]="Alloys";MaterialLine2["EmissionData"]="Emission Data";MaterialLine2["WakeScans"]="Wake Scans";MaterialLine2["ShieldData"]="Shield Data";MaterialLine2["EncryptionFiles"]="Encryption Files";MaterialLine2["DataArchives"]="Data Archives";MaterialLine2["EncodedFirmware"]="Encoded Firmware";MaterialLine2["Guardian"]="Guardian";MaterialLine2["Thargoid"]="Thargoid";return MaterialLine2})(MaterialLine||{});var MATERIALS_BY_SYMBOL=/* @__PURE__ */createKeyIndex(ALL_MATERIALS,"symbol");var MATERIALS_BY_NAME=/* @__PURE__ */createKeyIndex(ALL_MATERIALS,"name");var MATERIALS_BY_ELEMENT=/* @__PURE__ */createKeyIndex(ALL_MATERIALS,"elementSymbol");function getMaterialBySymbol(symbol,materials=ALL_MATERIALS){return materials===ALL_MATERIALS?findInKeyIndex(MATERIALS_BY_SYMBOL,symbol,"getMaterialBySymbol: symbol"):findByKey(materials,"symbol",symbol,"getMaterialBySymbol: symbol")}function getMaterialByName(name,materials=ALL_MATERIALS){return materials===ALL_MATERIALS?findInKeyIndex(MATERIALS_BY_NAME,name,"getMaterialByName: name"):findByKey(materials,"name",name,"getMaterialByName: name")}function getMaterialByElementSymbol(elementSymbol,materials=ALL_MATERIALS){return materials===ALL_MATERIALS?findInKeyIndex(MATERIALS_BY_ELEMENT,elementSymbol,"getMaterialByElementSymbol: elementSymbol"):findByKey(materials,"elementSymbol",elementSymbol,"getMaterialByElementSymbol: elementSymbol")}function materialsByGrade(grade){if(grade==null)return[];if(typeof grade!=="number"){throw new TypeError(`materialsByGrade: grade must be a number, received ${describeValue(grade)}`)}return ALL_MATERIALS.filter(material=>material.grade===grade)}function materialsInLine(line){return filterByKey(ALL_MATERIALS,"line",line,"materialsInLine: line")}function materialsInCategory(category){return filterByKey(ALL_MATERIALS,"category",category,"materialsInCategory: category")}export{MaterialGrade,MaterialLine,getMaterialByElementSymbol,getMaterialByName,getMaterialBySymbol,materialsByGrade,materialsInCategory,materialsInLine};//# sourceMappingURL=chunk-IWFQ4ZKF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ALL_COMMODITIES}from"./chunk-
|
|
1
|
+
import{ALL_COMMODITIES}from"./chunk-77TT4K53.js";import{findInKeyIndex,findByKey,filterByKey,createKeyIndex}from"./chunk-BKWLI44T.js";var COMMODITIES_BY_SYMBOL=/* @__PURE__ */createKeyIndex(ALL_COMMODITIES,"symbol");var COMMODITIES_BY_NAME=/* @__PURE__ */createKeyIndex(ALL_COMMODITIES,"name");function getCommodityBySymbol(symbol,commodities=ALL_COMMODITIES){return commodities===ALL_COMMODITIES?findInKeyIndex(COMMODITIES_BY_SYMBOL,symbol,"getCommodityBySymbol: symbol"):findByKey(commodities,"symbol",symbol,"getCommodityBySymbol: symbol")}function getCommodityByName(name,commodities=ALL_COMMODITIES){return commodities===ALL_COMMODITIES?findInKeyIndex(COMMODITIES_BY_NAME,name,"getCommodityByName: name"):findByKey(commodities,"name",name,"getCommodityByName: name")}function commoditiesInCategory(category){return filterByKey(ALL_COMMODITIES,"category",category,"commoditiesInCategory: category")}export{commoditiesInCategory,getCommodityByName,getCommodityBySymbol};//# sourceMappingURL=chunk-J7BM5NGK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";var phaseTime=(megajoules,rate,draw,capacity,recharge)=>{if(megajoules<=0)return 0;if(rate<=0)return Infinity;if(draw<=0)return megajoules/rate;const drain=rate*draw-recharge;if(drain<=0)return megajoules/rate;const capacitorLifetime=capacity/drain;const beforeEmpty=capacitorLifetime*rate;if(megajoules<=beforeEmpty)return megajoules/rate;if(recharge<=0)return Infinity;return capacitorLifetime+(megajoules-beforeEmpty)/(recharge/draw)};function shieldRecovery(input){const pips=requirePips("shieldRecovery","systemsPips",input.systemsPips??4);for(const field of["strength","regenRate","brokenRegenRate","distributorDraw","systemsCapacity","systemsRecharge"]){requireFiniteNonNegative("shieldRecovery",field,input[field])}const recharge=capacitorRechargeAtPips(input.systemsRecharge,pips);const half=input.strength/2;return Object.freeze({regenRate:input.regenRate,brokenRegenRate:input.brokenRegenRate,recoveryTime:16+phaseTime(half,input.brokenRegenRate,input.distributorDraw,input.systemsCapacity,recharge),regenTime:phaseTime(half,input.regenRate,input.distributorDraw,input.systemsCapacity,recharge)})}function cellBankSummary(banks){for(const[index,bank]of banks.entries()){if(typeof bank.powered!=="boolean"){throw new TypeError(`cellBankSummary: banks[${index}].powered must be a boolean`)}}const metrics=banks.map(bank=>Object.freeze({slot:bank.slot,symbol:bank.symbol,reinforcement:bank.reinforcementRate*bank.duration,cells:bank.cells,spinUp:bank.spinUp,duration:bank.duration,heat:bank.heat,powered:bank.powered}));return Object.freeze({banks:Object.freeze(metrics),totalRestorable:metrics.reduce((sum,bank)=>sum+(bank.powered?bank.reinforcement*bank.cells:0),0),totalCells:metrics.reduce((sum,bank)=>sum+(bank.powered?bank.cells:0),0)})}export{cellBankSummary,shieldRecovery};//# sourceMappingURL=chunk-JMAXSXXQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/shield-recovery.ts"],"names":["capacitorRechargeAtPips","requirePips","requireFiniteNonNegative","phaseTime","megajoules","rate","draw","capacity","recharge","Infinity","drain","capacitorLifetime","beforeEmpty","shieldRecovery","input","pips","systemsPips","field","systemsRecharge","half","strength","Object","freeze","regenRate","brokenRegenRate","recoveryTime","distributorDraw","systemsCapacity","regenTime","cellBankSummary","banks","index","bank","entries","powered","TypeError","metrics","map","slot","symbol","reinforcement","reinforcementRate","duration","cells","spinUp","heat","totalRestorable","reduce","sum","totalCells"],"mappings":"O,wHA2GA,IAAMG,UAAY,CACdC,WACAC,KACAC,KACAC,SACAC,YAEA,GAAIJ,YAAc,EAAG,OAAO,EAC5B,GAAIC,MAAQ,EAAG,OAAOI,SACtB,GAAIH,MAAQ,EAAG,OAAOF,WAAaC,KACnC,MAAMK,MAAQL,KAAOC,KAAOE,SAC5B,GAAIE,OAAS,EAAG,OAAON,WAAaC,KACpC,MAAMM,kBAAoBJ,SAAWG,MACrC,MAAME,YAAcD,kBAAoBN,KACxC,GAAID,YAAcQ,YAAa,OAAOR,WAAaC,KACnD,GAAIG,UAAY,EAAG,OAAOC,SAC1B,OAAOE,mBAAqBP,WAAaQ,cAAgBJ,SAAWF,OAoBjE,SAASO,eAAeC,OAC3B,MAAMC,KAAOd,YAAY,iBAAkB,cAAea,MAAME,aAAe,GAC/E,IAAA,MAAWC,QAAS,CAChB,WACA,YACA,kBACA,kBACA,kBACA,mBACQ,CACRf,yBAAyB,iBAAkBe,MAAOH,MAAMG,OAC5D,CACA,MAAMT,SAAWR,wBAAwBc,MAAMI,gBAAiBH,MAChE,MAAMI,KAAOL,MAAMM,SAAW,EAC9B,OAAOC,OAAOC,OAAO,CACjBC,UAAWT,MAAMS,UACjBC,gBAAiBV,MAAMU,gBACvBC,aACI,GACAtB,UACIgB,KACAL,MAAMU,gBACNV,MAAMY,gBACNZ,MAAMa,gBACNnB,UAERoB,UAAWzB,UACPgB,KACAL,MAAMS,UACNT,MAAMY,gBACNZ,MAAMa,gBACNnB,WAGZ,CAmBO,SAASqB,gBAAgBC,OAC5B,IAAA,MAAYC,MAAOC,QAASF,MAAMG,UAAW,CACzC,UAAWD,KAAKE,UAAY,UAAW,CACnC,MAAM,IAAIC,UAAU,0BAA0BJ,mCAClD,CACJ,CACA,MAAMK,QAAUN,MAAMO,IAAKL,MACvBX,OAAOC,OAAO,CACVgB,KAAMN,KAAKM,KACXC,OAAQP,KAAKO,OACbC,cAAeR,KAAKS,kBAAoBT,KAAKU,SAC7CC,MAAOX,KAAKW,MACZC,OAAQZ,KAAKY,OACbF,SAAUV,KAAKU,SACfG,KAAMb,KAAKa,KACXX,QAASF,KAAKE,WAGtB,OAAOb,OAAOC,OAAO,CACjBQ,MAAOT,OAAOC,OAAOc,SACrBU,gBAAiBV,QAAQW,OACrB,CAACC,IAAKhB,OAASgB,KAAOhB,KAAKE,QAAUF,KAAKQ,cAAgBR,KAAKW,MAAQ,GACvE,GAEJM,WAAYb,QAAQW,OAAO,CAACC,IAAKhB,OAASgB,KAAOhB,KAAKE,QAAUF,KAAKW,MAAQ,GAAI,IAEzF,QAAAd,gBAAAhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ENCODED_MATERIALS}from"./chunk-AIEC3LBT.js";import{MANUFACTURED_MATERIALS}from"./chunk-ITKZKREP.js";import{RAW_MATERIALS}from"./chunk-Q6YDPREF.js";var ALL_MATERIALS=Object.freeze([...RAW_MATERIALS,...MANUFACTURED_MATERIALS,...ENCODED_MATERIALS]);export{ALL_MATERIALS};//# sourceMappingURL=chunk-JO52LYO3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";var capacitorMetrics=(capacity,ratedRecharge,pips)=>Object.freeze({capacity:capacity,ratedRecharge:ratedRecharge,rechargeRate:capacitorRechargeAtPips(ratedRecharge,pips)});function distributorMetrics(input){const pips=Object.freeze({systems:input.systemsPips??4,engines:input.enginesPips??4,weapons:input.weaponsPips??4});requirePips("distributorMetrics","systemsPips",pips.systems);requirePips("distributorMetrics","enginesPips",pips.engines);requirePips("distributorMetrics","weaponsPips",pips.weapons);for(const field of["systemsCapacity","systemsRecharge","enginesCapacity","enginesRecharge","weaponsCapacity","weaponsRecharge"]){requireFiniteNonNegative("distributorMetrics",field,input[field])}return Object.freeze({systems:capacitorMetrics(input.systemsCapacity,input.systemsRecharge,pips.systems),engines:capacitorMetrics(input.enginesCapacity,input.enginesRecharge,pips.engines),weapons:capacitorMetrics(input.weaponsCapacity,input.weaponsRecharge,pips.weapons),pips:pips})}export{distributorMetrics};//# sourceMappingURL=chunk-M2TCZKRT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/distributor.ts"],"names":["capacitorRechargeAtPips","requirePips","requireFiniteNonNegative","capacitorMetrics","capacity","ratedRecharge","pips","Object","freeze","rechargeRate","distributorMetrics","input","systems","systemsPips","engines","enginesPips","weapons","weaponsPips","field","systemsCapacity","systemsRecharge","enginesCapacity","enginesRecharge","weaponsCapacity","weaponsRecharge"],"mappings":"O,wHAkFA,IAAMG,iBAAmB,CACrBC,SACAC,cACAC,OAEAC,OAAOC,OAAO,CACVJ,kBACAC,4BACAI,aAAcT,wBAAwBK,cAAeC,QA+BtD,SAASI,mBAAmBC,OAC/B,MAAML,KAAOC,OAAOC,OAAO,CACvBI,QAASD,MAAME,aAAe,EAC9BC,QAASH,MAAMI,aAAe,EAC9BC,QAASL,MAAMM,aAAe,IAElChB,YAAY,qBAAsB,cAAeK,KAAKM,SACtDX,YAAY,qBAAsB,cAAeK,KAAKQ,SACtDb,YAAY,qBAAsB,cAAeK,KAAKU,SACtD,IAAA,MAAWE,QAAS,CAChB,kBACA,kBACA,kBACA,kBACA,kBACA,mBACQ,CACRhB,yBAAyB,qBAAsBgB,MAAOP,MAAMO,OAChE,CAEA,OAAOX,OAAOC,OAAO,CACjBI,QAAST,iBAAiBQ,MAAMQ,gBAAiBR,MAAMS,gBAAiBd,KAAKM,SAC7EE,QAASX,iBAAiBQ,MAAMU,gBAAiBV,MAAMW,gBAAiBhB,KAAKQ,SAC7EE,QAASb,iBAAiBQ,MAAMY,gBAAiBZ,MAAMa,gBAAiBlB,KAAKU,SAC7EV,WAER,QAAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";function weaponsCapacitorMetrics(input){const scope="weaponsCapacitorMetrics";const weaponsPips=requirePips(scope,"weaponsPips",input.weaponsPips??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-M4FZRDAH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/weapons-capacitor.ts"],"names":["capacitorRechargeAtPips","requirePips","requireFiniteNonNegative","weaponsCapacitorMetrics","input","scope","weaponsPips","field","rechargeRate","weaponsRecharge","netDrainRate","Math","max","sustainedEnergyPerSecond","Object","freeze","capacity","weaponsCapacity","timeToDrain","Infinity"],"mappings":"O,wHAiFO,SAASG,wBAAwBC,OACpC,MAAMC,MAAQ,0BACd,MAAMC,YAAcL,YAAYI,MAAO,cAAeD,MAAME,aAAe,GAC3E,IAAA,MAAWC,QAAS,CAChB,kBACA,kBACA,4BACQ,CACRL,yBAAyBG,MAAOE,MAAOH,MAAMG,OACjD,CAEA,MAAMC,aAAeR,wBAAwBI,MAAMK,gBAAiBH,aACpE,MAAMI,aAAeC,KAAKC,IAAI,EAAGR,MAAMS,yBAA2BL,cAClE,OAAOM,OAAOC,OAAO,CACjBT,wBACAU,SAAUZ,MAAMa,gBAChBT,0BACAK,yBAA0BT,MAAMS,yBAChCH,0BACAQ,YAAaR,eAAiB,EAAIS,SAAWf,MAAMa,gBAAkBP,cAE7E,QAAAP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{bodyMass,rocheLimitsForDensity,GRAVITATIONAL_CONSTANT}from"./chunk-TMXKC6JL.js";import{positiveQuantity}from"./chunk-P2MUFVJC.js";import{requireString,requireObject}from"./chunk-PKWVG2JY.js";var ICY_PARTICLE_DENSITY=1e3;var ROCKY_PARTICLE_DENSITY=3e3;var METALLIC_PARTICLE_DENSITY=4500;var RING_NOMINAL_RADIUS_FRACTION=3/8;var VISIBLE_RING_MIN_SURFACE_DENSITY=.1;var VISIBLE_RING_MAX_WIDTH=1e9;function ringParticleDensity(ringClass){const token=requireString(ringClass,"ringParticleDensity: ringClass").toLowerCase();if(token.includes("metal"))return METALLIC_PARTICLE_DENSITY;if(token.includes("rock"))return ROCKY_PARTICLE_DENSITY;return ICY_PARTICLE_DENSITY}function ringSurfaceDensity(ring){requireObject(ring,"ringSurfaceDensity: ring");const innerM=positiveQuantity(ring.InnerRad);const outerM=positiveQuantity(ring.OuterRad);const massMt=positiveQuantity(ring.MassMT);if(innerM===null||outerM===null||massMt===null)return null;if(outerM<=innerM)return null;const innerKm=innerM/1e3;const outerKm=outerM/1e3;return massMt/(Math.PI*(outerKm*outerKm-innerKm*innerKm))}function isInvisibleRing(ring){requireObject(ring,"isInvisibleRing: ring");const surfaceDensity=ringSurfaceDensity(ring);if(surfaceDensity===null)return false;const width=ring.OuterRad-ring.InnerRad;return width>VISIBLE_RING_MAX_WIDTH&&surfaceDensity<VISIBLE_RING_MIN_SURFACE_DENSITY}function ringDynamics(ring,primary){requireObject(ring,"ringDynamics: ring");const inner=positiveQuantity(ring.InnerRad);const outer=positiveQuantity(ring.OuterRad);const primaryMassKg=bodyMass(primary);if(inner===null||outer===null||primaryMassKg===null)return null;if(outer<=inner)return null;const nominalRadius=inner+(outer-inner)*RING_NOMINAL_RADIUS_FRACTION;const orbitalPeriod=2*Math.PI*Math.sqrt(nominalRadius**3/(GRAVITATIONAL_CONSTANT*primaryMassKg));return{orbitalPeriod:orbitalPeriod,nominalRadius:nominalRadius,innerVelocity:2*Math.PI*inner/orbitalPeriod,outerVelocity:2*Math.PI*outer/orbitalPeriod}}function ringRocheLimits(ring,primary){requireObject(ring,"ringRocheLimits: ring");return rocheLimitsForDensity(primary,ringParticleDensity(ring.RingClass))}export{RING_NOMINAL_RADIUS_FRACTION,VISIBLE_RING_MAX_WIDTH,VISIBLE_RING_MIN_SURFACE_DENSITY,isInvisibleRing,ringDynamics,ringParticleDensity,ringRocheLimits,ringSurfaceDensity};//# sourceMappingURL=chunk-NEXDA73Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/astro/body-rings.ts"],"names":["bodyMass","rocheLimitsForDensity","GRAVITATIONAL_CONSTANT","positiveQuantity","requireString","requireObject","ICY_PARTICLE_DENSITY","ROCKY_PARTICLE_DENSITY","METALLIC_PARTICLE_DENSITY","RING_NOMINAL_RADIUS_FRACTION","VISIBLE_RING_MIN_SURFACE_DENSITY","VISIBLE_RING_MAX_WIDTH","ringParticleDensity","ringClass","token","toLowerCase","includes","ringSurfaceDensity","ring","innerM","InnerRad","outerM","OuterRad","massMt","MassMT","innerKm","outerKm","Math","PI","isInvisibleRing","surfaceDensity","width","ringDynamics","primary","inner","outer","primaryMassKg","nominalRadius","orbitalPeriod","sqrt","innerVelocity","outerVelocity","ringRocheLimits","RingClass"],"mappings":"O,+LA6CA,IAAMM,qBAAuB,IAE7B,IAAMC,uBAAyB,IAE/B,IAAMC,0BAA4B,KAM3B,IAAMC,6BAA+B,EAAI,EAMzC,IAAMC,iCAAmC,GAMzC,IAAMC,uBAAyB,IAwC/B,SAASC,oBAAoBC,WAChC,MAAMC,MAAQV,cAAcS,UAAW,kCAAkCE,cACzE,GAAID,MAAME,SAAS,SAAU,OAAOR,0BACpC,GAAIM,MAAME,SAAS,QAAS,OAAOT,uBACnC,OAAOD,oBACX,CA8BO,SAASW,mBAAmBC,MAC/Bb,cAAca,KAAM,4BACpB,MAAMC,OAAShB,iBAAiBe,KAAKE,UACrC,MAAMC,OAASlB,iBAAiBe,KAAKI,UACrC,MAAMC,OAASpB,iBAAiBe,KAAKM,QACrC,GAAIL,SAAW,MAAQE,SAAW,MAAQE,SAAW,KAAM,OAAO,KAClE,GAAIF,QAAUF,OAAQ,OAAO,KAE7B,MAAMM,QAAUN,OAAS,IACzB,MAAMO,QAAUL,OAAS,IACzB,OAAOE,QAAUI,KAAKC,IAAMF,QAAUA,QAAUD,QAAUA,SAC9D,CA6BO,SAASI,gBAAgBX,MAC5Bb,cAAca,KAAM,yBACpB,MAAMY,eAAiBb,mBAAmBC,MAC1C,GAAIY,iBAAmB,KAAM,OAAO,MAEpC,MAAMC,MAAQb,KAAKI,SAAWJ,KAAKE,SACnC,OAAOW,MAAQpB,wBAA0BmB,eAAiBpB,gCAC9D,CA8CO,SAASsB,aAAad,KAAgBe,SACzC5B,cAAca,KAAM,sBACpB,MAAMgB,MAAQ/B,iBAAiBe,KAAKE,UACpC,MAAMe,MAAQhC,iBAAiBe,KAAKI,UACpC,MAAMc,cAAgBpC,SAASiC,SAC/B,GAAIC,QAAU,MAAQC,QAAU,MAAQC,gBAAkB,KAAM,OAAO,KACvE,GAAID,OAASD,MAAO,OAAO,KAE3B,MAAMG,cAAgBH,OAASC,MAAQD,OAASzB,6BAChD,MAAM6B,cACF,EAAIX,KAAKC,GAAKD,KAAKY,KAAKF,eAAiB,GAAKnC,uBAAyBkC,gBAC3E,MAAO,CACHE,4BACAD,4BACAG,cAAgB,EAAIb,KAAKC,GAAKM,MAASI,cACvCG,cAAgB,EAAId,KAAKC,GAAKO,MAASG,cAE/C,CA6BO,SAASI,gBAAgBxB,KAAgBe,SAC5C5B,cAAca,KAAM,yBACpB,OAAOjB,sBAAsBgC,QAASrB,oBAAoBM,KAAKyB,WACnE,QAAAlC,6BAAAE,uBAAAD,iCAAAmB,gBAAAG,aAAApB,oBAAA8B,gBAAAzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{calculateModuleLimits}from"./chunk-KPETDYQX.js";import{describeValue,truncate}from"./chunk-PKWVG2JY.js";function isRequiredSlot(slot){return slot.kind==="core"||slot.kind==="armour"}function fixedSlotReason(slot){if(slot.kind==="cargoHatch")return"cargoHatch";return isRequiredSlot(slot)?"requiredSlot":null}function tenths(tonnes){return Math.round(tonnes*10)/10}var LOAD_PHRASE=Object.freeze({dry:"before fuel",unladen:"with a full tank",laden:"fully laden"});function thrusterLoads(mass){if(mass===void 0)return[];const loads=[{load:"dry",mass:mass.dry}];if(mass.fuel===void 0)return loads;loads.push({load:"unladen",mass:mass.dry+mass.fuel});if(mass.cargo===void 0)return loads;loads.push({load:"laden",mass:mass.dry+mass.fuel+mass.cargo});return loads}function requireTonnes(name,value){if(value===void 0)return;if(!Number.isFinite(value)||value<0){throw new RangeError(`validateLoadout: ${name} must be a finite non-negative number of tonnes, received ${describeValue(value)}`)}}function validateLoadout(input){if(!Array.isArray(input.slots)){throw new TypeError(`validateLoadout: input.slots must be an array, received ${describeValue(input.slots)}`)}requireTonnes("input.mass.dry",input.mass?.dry);requireTonnes("input.mass.fuel",input.mass?.fuel);requireTonnes("input.mass.cargo",input.mass?.cargo);for(const module of input.modules){requireTonnes(`${truncate(module.slot)} thrusterMaxMass`,module.thrusterMaxMass)}const issues=[];const seen=/* @__PURE__ */new Map;for(const module of input.modules){const normalized=module.slot.toLowerCase();const previous=seen.get(normalized);if(previous!==void 0){issues.push({code:"duplicateSlot",severity:"error",slot:module.slot,symbol:module.symbol,params:{slot:module.slot,previousSlot:previous,symbol:module.symbol},message:`Slot ${truncate(module.slot)} occurs more than once (also ${truncate(previous)})`})}else{seen.set(normalized,module.slot)}}const exclusive=/* @__PURE__ */new Map;for(const module of input.modules){if(!module.exclusionGroup)continue;const previous=exclusive.get(module.exclusionGroup);if(previous){issues.push({code:"duplicateExclusiveModule",severity:"error",slot:module.slot,symbol:module.symbol,params:{exclusionGroup:module.exclusionGroup,slot:module.slot,symbol:module.symbol,previousSlot:previous.slot,previousSymbol:previous.symbol},message:`${truncate(module.slot)}: ${truncate(module.symbol)} conflicts with ${truncate(previous.symbol)} in ${truncate(previous.slot)} (${module.exclusionGroup} is limited to one per ship)`})}else{exclusive.set(module.exclusionGroup,module)}}for(const usage of calculateModuleLimits(input.modules)){if(usage.excess===0)continue;issues.push({code:"moduleLimitExceeded",severity:"error",params:{group:usage.group,count:usage.count,limit:usage.limit},message:`${usage.group} has ${usage.count} fitted modules but the ship allows ${usage.limit}`})}const knownSlots=new Map(input.slots.map(slot=>[slot.key.toLowerCase(),slot]));for(const module of input.modules){if(module.requiresKnownSlot!==false&&!knownSlots.has(module.slot.toLowerCase())){issues.push({code:"unknownSlot",severity:"error",slot:module.slot,symbol:module.symbol,message:`${truncate(module.slot)} is not a slot on ${truncate(input.shipSymbol)}`,params:{shipSymbol:input.shipSymbol,slot:module.slot,symbol:module.symbol}})}}for(const slot of input.slots){if(isRequiredSlot(slot)&&!seen.has(slot.key.toLowerCase())){issues.push({code:"missingRequiredSlot",severity:"incomplete",slot:slot.key,message:`${truncate(slot.key)} is required for an operational build`,params:{slot:slot.key}})}}for(const module of input.modules){if(module.fitError!==null){issues.push({code:"incompatibleModule",severity:"error",slot:module.slot,symbol:module.symbol,message:`${truncate(module.slot)}: ${truncate(module.symbol)} ${truncate(module.fitError)}`,params:{...module.fitParams,slot:module.slot,symbol:module.symbol,constraint:module.fitConstraint??"unknownConstraint"}})}}for(const load of thrusterLoads(input.mass)){for(const module of input.modules){if(module.thrusterMaxMass===void 0||load.mass<=module.thrusterMaxMass){continue}issues.push({code:"thrusterMassExceeded",severity:load.load==="laden"?"warning":"error",slot:module.slot,symbol:module.symbol,message:`${truncate(module.slot)}: ${truncate(module.symbol)} is rated to ${tenths(module.thrusterMaxMass)} t but the ship weighs ${tenths(load.mass)} t ${LOAD_PHRASE[load.load]}`,params:{slot:module.slot,symbol:module.symbol,load:load.load,mass:load.mass,maxMass:module.thrusterMaxMass}})}if(issues.some(issue=>issue.code==="thrusterMassExceeded"))break}const frozen=Object.freeze(issues.map(issue=>Object.freeze({...issue,...issue.params?{params:Object.freeze(Object.fromEntries(Object.entries(issue.params).map(([key,value])=>[key,Array.isArray(value)?Object.freeze([...value]):value])))}:{}})));return Object.freeze({valid:!issues.some(issue=>issue.severity==="error"),complete:!issues.some(issue=>issue.severity!=="warning"),issues:frozen})}export{fixedSlotReason,validateLoadout};//# sourceMappingURL=chunk-OJC6AUL7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/internal/loadout-slot-rules.ts","../src/ships/loadout-validation.ts"],"names":["calculateModuleLimits","describeValue","truncate","isRequiredSlot","slot","kind","fixedSlotReason","tenths","tonnes","Math","round","LOAD_PHRASE","Object","freeze","dry","unladen","laden","thrusterLoads","mass","loads","load","fuel","push","cargo","requireTonnes","name","value","Number","isFinite","RangeError","validateLoadout","input","Array","isArray","slots","TypeError","module","modules","thrusterMaxMass","issues","seen","Map","normalized","toLowerCase","previous","get","code","severity","symbol","params","previousSlot","message","set","exclusive","exclusionGroup","previousSymbol","usage","excess","group","count","limit","knownSlots","map","key","requiresKnownSlot","has","shipSymbol","fitError","fitParams","constraint","fitConstraint","maxMass","some","issue","frozen","fromEntries","entries","valid","complete"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function positiveQuantity(value){return typeof value==="number"&&Number.isFinite(value)&&value>0?value:null}function finiteQuantity(value){return typeof value==="number"&&Number.isFinite(value)?value:null}function sphereVolume(radiusM){return 4/3*Math.PI*radiusM**3}export{finiteQuantity,positiveQuantity,sphereVolume};//# sourceMappingURL=chunk-P2MUFVJC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/astro/internal/body-quantities.ts"],"names":["positiveQuantity","value","Number","isFinite","finiteQuantity","sphereVolume","radiusM","Math","PI"],"mappings":"AAmBO,SAASA,iBAAiBC,OAC7B,cAAcA,QAAU,UAAYC,OAAOC,SAASF,QAAUA,MAAQ,EAAIA,MAAQ,IACtF,CAUO,SAASG,eAAeH,OAC3B,cAAcA,QAAU,UAAYC,OAAOC,SAASF,OAASA,MAAQ,IACzE,CASO,SAASI,aAAaC,SACzB,OAAQ,EAAI,EAAKC,KAAKC,GAAKF,SAAW,CAC1C,QAAAF,eAAAJ,iBAAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{mapDamageTypes,stackArmourResistance,effectiveHitPoints}from"./chunk-
|
|
1
|
+
import{mapDamageTypes,stackArmourResistance,effectiveHitPoints}from"./chunk-F44QX47A.js";var reinforcementResistances=(sources,type)=>sources.map(source=>source[`${type}Resistance`]??0);function armourMetrics(input){const bulkhead=input.bulkhead??{};const reinforcements=input.reinforcements??[];const moduleReinforcements=input.moduleReinforcements??[];const bulkheads=input.baseArmour*(1+(bulkhead.hullBoost??0));const reinforcement=reinforcements.reduce((sum,pack)=>sum+(pack.hullReinforcement??0)+input.baseArmour*(pack.hullBoost??0),0);const hitPoints=bulkheads+reinforcement;const resistances=Object.freeze(mapDamageTypes(type=>stackArmourResistance(bulkhead[`${type}Resistance`]??0,reinforcementResistances(reinforcements,type))));return Object.freeze({hitPoints:hitPoints,bulkheads:bulkheads,reinforcement:reinforcement,resistances:resistances,effectiveHitPoints:Object.freeze(effectiveHitPoints(hitPoints,resistances)),moduleArmour:moduleReinforcements.reduce((sum,pack)=>sum+(pack.integrity??0),0),moduleProtection:1-moduleReinforcements.reduce((product,pack)=>product*(1-(pack.moduleProtection??0)),1)})}export{armourMetrics};//# sourceMappingURL=chunk-Q5ALV3DI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{buildMaterialCatalogue}from"./chunk-
|
|
1
|
+
import{buildMaterialCatalogue}from"./chunk-GTEHRZPN.js";var materials_raw_default=[{symbol:"Carbon",name:"Carbon",elementSymbol:"C",grade:1,line:"Carbon"},{symbol:"Vanadium",name:"Vanadium",elementSymbol:"V",grade:2,line:"Carbon"},{symbol:"Niobium",name:"Niobium",elementSymbol:"Nb",grade:3,line:"Carbon"},{symbol:"Yttrium",name:"Yttrium",elementSymbol:"Y",grade:4,line:"Carbon"},{symbol:"Iron",name:"Iron",elementSymbol:"Fe",grade:1,line:"Iron"},{symbol:"Zinc",name:"Zinc",elementSymbol:"Zn",grade:2,line:"Iron"},{symbol:"Tin",name:"Tin",elementSymbol:"Sn",grade:3,line:"Iron"},{symbol:"Selenium",name:"Selenium",elementSymbol:"Se",grade:4,line:"Iron"},{symbol:"Lead",name:"Lead",elementSymbol:"Pb",grade:1,line:"Lead"},{symbol:"Zirconium",name:"Zirconium",elementSymbol:"Zr",grade:2,line:"Lead"},{symbol:"Boron",name:"Boron",elementSymbol:"B",grade:3,line:"Lead"},{symbol:"Antimony",name:"Antimony",elementSymbol:"Sb",grade:4,line:"Lead"},{symbol:"Nickel",name:"Nickel",elementSymbol:"Ni",grade:1,line:"Nickel"},{symbol:"Germanium",name:"Germanium",elementSymbol:"Ge",grade:2,line:"Nickel"},{symbol:"Tungsten",name:"Tungsten",elementSymbol:"W",grade:3,line:"Nickel"},{symbol:"Tellurium",name:"Tellurium",elementSymbol:"Te",grade:4,line:"Nickel"},{symbol:"Phosphorus",name:"Phosphorus",elementSymbol:"P",grade:1,line:"Phosphorus"},{symbol:"Chromium",name:"Chromium",elementSymbol:"Cr",grade:2,line:"Phosphorus"},{symbol:"Molybdenum",name:"Molybdenum",elementSymbol:"Mo",grade:3,line:"Phosphorus"},{symbol:"Technetium",name:"Technetium",elementSymbol:"Tc",grade:4,line:"Phosphorus"},{symbol:"Rhenium",name:"Rhenium",elementSymbol:"Re",grade:1,line:"Rhenium"},{symbol:"Arsenic",name:"Arsenic",elementSymbol:"As",grade:2,line:"Rhenium"},{symbol:"Mercury",name:"Mercury",elementSymbol:"Hg",grade:3,line:"Rhenium"},{symbol:"Polonium",name:"Polonium",elementSymbol:"Po",grade:4,line:"Rhenium"},{symbol:"Sulphur",name:"Sulphur",elementSymbol:"S",grade:1,line:"Sulphur"},{symbol:"Manganese",name:"Manganese",elementSymbol:"Mn",grade:2,line:"Sulphur"},{symbol:"Cadmium",name:"Cadmium",elementSymbol:"Cd",grade:3,line:"Sulphur"},{symbol:"Ruthenium",name:"Ruthenium",elementSymbol:"Ru",grade:4,line:"Sulphur"}];var RAW_MATERIALS=buildMaterialCatalogue(materials_raw_default,"raw");export{RAW_MATERIALS};//# sourceMappingURL=chunk-Q6YDPREF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{shieldMetrics}from"./chunk-5VWACBTN.js";import{getShipBySymbol,getShipByName,getShipSlots}from"./chunk-6UNAD74Z.js";import{getLoadoutModifier}from"./chunk-T4MKUKYS.js";import{sourcePurchaseFromLoadout}from"./chunk-NIURLW2F.js";import{identifyPreEngineeredVariant,unrollableFixedArticle,cloneLoadoutModule,isNonOutfittingSlot,isBuiltInHullModule,matchingKeyIn,ownKeyIn,getPreEngineeredStats,getPreEngineeredModifiers,cloneModuleStats,isFinalGuardianWeaponEngineering,scaleDamageComponents}from"./chunk-4OTQBHQL.js";import{weaponMetrics,combinedRateOfFire}from"./chunk-37JIMWLK.js";import{builtInModuleBySymbol,getBulkheadsForShip}from"./chunk-3LZXB2MC.js";import{getPreEngineeredVariants}from"./chunk-PL75RTA2.js";import{CORE_MODULES}from"./chunk-FA5JVXVG.js";import{getExperimentalEffect}from"./chunk-77I24V6B.js";import{getDefaultLoadout}from"./chunk-GRIK3EDH.js";import{fieldForLabel,scaleForLabel,labelsForField,capabilityValueForLabel,damageTypeForLabel}from"./chunk-CJQ37JII.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{parseSlotName,SLOT_RESTRICTION_LABELS,enumerateSlots}from"./chunk-RAO35XDF.js";import{normalizeKey}from"./chunk-BKWLI44T.js";import{truncate,requireString,describeValue,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}function preEngineeredVariantFor(module){return identifyPreEngineeredVariant(module)??(module.Engineering?unrollableFixedArticle(module.Item,module.Engineering):null)}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=preEngineeredVariantFor(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 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,moduleFitError,moduleFitProblem,normalizeLoadoutEvent,powerAvailable,powerConsumerFor,preEngineeredVariantFor,publishLoadoutInternals,shieldCapacitorInputResultFor,shieldInputResultFor,shieldRecoveryInputResultFor,weaponStatsFor,weaponsCapacitorInputFor};//# sourceMappingURL=chunk-SS6XK336.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/internal/loadout-fitting.ts","../src/ships/internal/loadout-import.ts","../src/ships/internal/calculation-result.ts","../src/ships/internal/loadout-metrics.ts","../src/ships/internal/loadout-internals.ts"],"names":["shieldMetrics","getShipBySymbol","getShipByName","getShipSlots","getLoadoutModifier","sourcePurchaseFromLoadout","identifyPreEngineeredVariant","unrollableFixedArticle","cloneLoadoutModule","isNonOutfittingSlot","isBuiltInHullModule","matchingKeyIn","ownKeyIn","getPreEngineeredStats","getPreEngineeredModifiers","cloneModuleStats","isFinalGuardianWeaponEngineering","scaleDamageComponents","weaponMetrics","combinedRateOfFire","builtInModuleBySymbol","getBulkheadsForShip","getPreEngineeredVariants","CORE_MODULES","getExperimentalEffect","getDefaultLoadout","fieldForLabel","scaleForLabel","labelsForField","capabilityValueForLabel","damageTypeForLabel","ammunitionCapacity","parseSlotName","SLOT_RESTRICTION_LABELS","enumerateSlots","normalizeKey","truncate","requireString","describeValue","requireStringIfPresent","deepFreeze","MILITARY_PREFIXES","MINING_PREFIXES","CARGO_PREFIXES","RESTRICTED_SLOT_PREFIXES","mining","military","cargo","limpetController","vesselHangar","passenger","planetaryApproachSuite","problem","constraint","message","params","restrictionProblem","slot","symbol","restriction","some","prefix","startsWith","moduleSlotProblem","module","required","restrictedToSlot","moduleFitProblem","shipSymbol","kind","hull","ship","toLowerCase","name","armourHull","armourShipName","armourShipSymbol","shipName","restricted","restrictedToShips","allowedShipNames","map","labels","index","join","allowedShipSymbols","wrongMount","moduleSlot","core","requiredCore","category","isFuelTank","class","size","moduleClass","slotSize","moduleFitError","preEngineeredVariantFor","Engineering","Item","captureLoadoutEvent","event","modules","Modules","ShipName","shipIdent","ShipIdent","hullValue","HullValue","modulesValue","ModulesValue","rebuy","Rebuy","unladenMass","UnladenMass","cargoCapacity","CargoCapacity","fuelCapacity","FuelCapacity","Ship","Array","isArray","captureEach","captureModule","values","capture","captured","length","push","on","On","priority","Priority","health","Health","value","Value","engineering","Slot","captureEngineering","experimental","ExperimentalEffect","experimentalLocalised","ExperimentalEffect_Localised","modifiers","Modifiers","BlueprintName","Level","Quality","modifier","hullLayout","slots","fixedMountRejects","layout","stats","mount","find","candidate","key","normalizeLoadoutEvent","rawEvent","TypeError","Map","Set","entries","Label","normalizedSlot","has","add","set","top","invalidatesAggregates","outcomes","defaults","slotKind","fallback","rejected","action","sourceSymbol","replacementSymbol","delete","moduleStats","primitiveModifiers","variant","catalogueVariantStats","variantStats","retainsBakedExperimental","experimentalEffectSymbol","trim","engineeringLocked","originalExperimental","withoutExperimental","currentExperimental","currentVariant","guardianFinal","normalizedBlueprint","normalizedExperimental","variants","exact","blueprintSymbol","grade","guardianBase","sourcePurchase","NO_ISSUES","Object","freeze","completeResult","complete","issues","incompleteResult","issue","PREFIX","powerPlant","thrusters","frameShiftDrive","powerDistributor","shieldGenerator","shieldCellBank","shieldBooster","shieldReinforcement","hullReinforcement","moduleReinforcement","startsWithAny","prefixes","isPowerDistributor","isPowerPlant","parsed","isThruster","isFrameShiftDrive","isEnabled","priorityOf","effectiveStat","field","stated","statedModifier","base","label","modified","effectiveCapability","effectiveDamageDistribution","fromEffect","damageDistribution","distribution","resolved","seen","type","convertsDamage","modifierRatio","effective","relatedStat","ratio","effectiveModule","merged","fields","keys","capability","engineeringGroup","massRatio","minMass","maxMass","performanceRatio","minMultiplier","maxMultiplier","normalizeEffectiveWeapon","damageComponents","damage","powerConsumerFor","draw","mounted","enabled","deployedOnly","alwaysPowered","powerAvailable","statsFor","DEFAULT_SLOT","powerCapacity","heatEfficiency","UNRESOLVED_FACT","NOTHING_FITTED","metricIssue","reason","defaultSlot","unavailable","powerPlantIssueFor","capacity","Number","isFinite","powerDrawIssueFor","consumer","poweredMetricBudgetFor","getBudget","plantIssue","drawIssue","budget","available","poweredStates","retracted","poweredShieldGeneratorResultFor","powered","mapResistanceFields","read","kineticResistance","thermalResistance","explosiveResistance","causticResistance","resistancesOf","shieldInputFor","generator","boosters","reinforcement","strengthRatio","optMass","Math","max","optMultiplier","shieldBoost","hullMass","baseShieldStrength","shieldInputResultFor","fitted","shieldCapacitorInputResultFor","systemsPips","capacitor","systemsCapacitorResultFor","shields","strength","resistances","systemsCapacity","systemsRecharge","distributor","thrusterCurveFor","optSpeedMultiplier","speedCurve","minSpeedMultiplier","maxSpeedMultiplier","optRotationMultiplier","rotationCurve","minRotationMultiplier","maxRotationMultiplier","fittedThrusterParamsFor","mobilityInputResultFor","mass","minimumSpeed","maximumSpeed","boost","minPitch","pitch","minRoll","roll","minYaw","yaw","shieldRecoveryInputResultFor","generatorModule","generatorStats","distributorDraw","regenRate","brokenRegenRate","weaponsCapacitorInputFor","weaponsPips","weaponsCapacity","weaponsRecharge","sustainedEnergyPerSecond","deployed","weapon","weaponStatsFor","distributorInputResultFor","pips","disabled","enginesCapacity","enginesRecharge","heatInputResultFor","plant","thrusterHeatRate","deployedThrusterHeatRate","fsdHeatRate","weapons","running","heat","heatPerSecond","sustainedHeatPerSecond","heatCapacity","heatDissipation","retractedPowerDraw","poweredDraw","deployedPowerDraw","state","bands","reduce","total","band","min","poweredRetracted","poweredDeployed","cellBankInputsFor","banks","ammunition","reinforcementRate","shieldBankReinforcement","cells","spinUp","shieldBankSpinUp","duration","shieldBankDuration","shieldBankHeat","stockBulkhead","v","endsWith","armourInputFor","reinforcements","moduleReinforcements","bulkhead","hullBoost","moduleProtection","integrity","stock","baseArmour","WEAPON_FIELDS","projectileRange","burstAdjustedRateOfFire","touched","rate","rateOfFire","statedDamagePerSecond","firingFactor","roundsPerShot","maximumRange","falloffRange","INTERNALS","WeakMap","publishLoadoutInternals","build","internals","loadoutInternals","get"],"mappings":"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"}
|