@elite-dangerous-almanac/core 0.2.10 → 0.2.11
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/README.md +5 -3
- package/dist/chunk-36I5QLTL.js +1 -0
- package/dist/chunk-36I5QLTL.js.map +1 -0
- package/dist/chunk-4WC5NHBJ.js +1 -0
- package/dist/chunk-4WC5NHBJ.js.map +1 -0
- package/dist/{chunk-HIJR7DOC.js → chunk-53EBUFVU.js} +1 -1
- package/dist/{chunk-HIJR7DOC.js.map → chunk-53EBUFVU.js.map} +1 -1
- package/dist/chunk-A6QTYK2D.js +1 -0
- package/dist/chunk-A6QTYK2D.js.map +1 -0
- package/dist/{chunk-5VWACBTN.js → chunk-DBJKLXLS.js} +1 -1
- package/dist/{chunk-5VWACBTN.js.map → chunk-DBJKLXLS.js.map} +1 -1
- package/dist/{chunk-X3MXPE7G.js → chunk-RA6SY445.js} +1 -1
- package/dist/{chunk-G7WARJ3X.js → chunk-ZWT5Y3JR.js} +1 -1
- package/dist/chunk-ZWT5Y3JR.js.map +1 -0
- package/dist/equipment/index.d.ts +7 -0
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/suit-loadout.d.ts +284 -0
- package/dist/equipment/suit-loadout.js +1 -0
- package/dist/equipment/suit-loadout.js.map +1 -0
- package/dist/i18n/index.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/index.js +1 -1
- package/dist/ships/shields.d.ts +4 -1
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +5 -1
- package/dist/ships/ship-loadout.js +1 -1
- package/package.json +5 -1
- package/dist/chunk-G7WARJ3X.js.map +0 -1
- package/dist/chunk-GVNTKCVF.js +0 -1
- package/dist/chunk-GVNTKCVF.js.map +0 -1
- package/dist/chunk-ZBUTGTZ3.js +0 -1
- package/dist/chunk-ZBUTGTZ3.js.map +0 -1
- /package/dist/{chunk-X3MXPE7G.js.map → chunk-RA6SY445.js.map} +0 -0
|
@@ -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":["getShipBySymbol","getShipByName","getShipSlots","getLoadoutModifier","sourcePurchaseFromLoadout","weaponMetrics","isBuiltInHullSymbol","identifyPreEngineeredVariant","unrollableFixedArticle","cloneLoadoutModule","isNonOutfittingSlot","isBuiltInHullModule","matchingKeyIn","ownKeyIn","getPreEngineeredStats","getPreEngineeredModifiers","cloneModuleStats","isFinalGuardianWeaponEngineering","scaleDamageComponents","getPreEngineeredVariants","shieldMetrics","builtInModuleBySymbol","getBulkheadsForShip","CORE_MODULES","stockedMountKind","getDefaultLoadout","getExperimentalEffect","ammunitionCapacity","fieldForLabel","scaleForLabel","labelsForField","capabilityValueForLabel","damageTypeForLabel","BURST_PATTERN_LABELS","journalRateOfFire","preciseValueFor","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","stockedMountRejects","layout","stats","mount","find","candidate","key","normalizeLoadoutEvent","rawEvent","TypeError","Map","Set","entries","Label","normalizedSlot","has","add","set","top","invalidatesAggregates","outcomes","defaults","parsed","stocked","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","isThruster","isFrameShiftDrive","isEnabled","priorityOf","effectiveStat","field","stated","statedModifier","base","label","modified","effectiveCapability","effectiveDamageDistribution","fromEffect","damageDistribution","distribution","resolved","seen","type","convertsDamage","modifierRatio","effective","relatedStat","ratio","carriesMassCurve","minMass","maxMass","minMultiplier","maxMultiplier","maxMassRatio","Math","max","effectiveModule","merged","fields","keys","capability","massRatio","performanceRatio","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","optMass","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","FIRING_RATE_LABELS","readsDamageFromPerSecond","every","rate","rateOfFire","statedDamagePerSecond","firingFactor","roundsPerShot","maximumRange","falloffRange","INTERNALS","WeakMap","publishLoadoutInternals","build","internals","loadoutInternals","get"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{massCurveMultiplier}from"./chunk-6BFQIYGZ.js";import{mapDamageTypes,effectiveHitPoints,stackShieldResistance}from"./chunk-F44QX47A.js";var curveLabels=scope=>({scope:scope,mass:"hullMass",curve:"generator"});function generatorCurveMultiplier(scope,hullMass,generator){const{minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:minMultiplier,optMultiplier:optMultiplier,maxMultiplier:maxMultiplier}=generator;if(minMass===void 0||optMass===void 0||maxMass===void 0||minMultiplier===void 0||optMultiplier===void 0||maxMultiplier===void 0){return 0}return massCurveMultiplier(curveLabels(scope),hullMass,{minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:minMultiplier,optMultiplier:optMultiplier,maxMultiplier:maxMultiplier})}function shieldMassCurveMultiplier(hullMass,generator){return generatorCurveMultiplier("shieldMassCurveMultiplier",hullMass,generator)}function shieldStrength(hullMass,baseShieldStrength,generator,boostMultiplier=1){return baseShieldStrength*generatorCurveMultiplier("shieldStrength",hullMass,generator)*boostMultiplier}var boosterResistances=(boosters,type)=>boosters.map(booster=>booster[`${type}Resistance`]??0);function shieldMetrics(input){const boosters=input.boosters??[];const reinforcement=input.reinforcement??0;const generator=input.generator??null;if(!generator){const none=Object.freeze(mapDamageTypes(()=>0));return Object.freeze({strength:0,generator:0,boosters:0,reinforcement:0,massCurveMultiplier:0,boostMultiplier:1,resistances:none,effectiveHitPoints:Object.freeze(effectiveHitPoints(0,none))})}const massCurveMultiplier2=generatorCurveMultiplier("shieldMetrics",input.hullMass,generator);const boostMultiplier=1+boosters.reduce((sum,booster)=>sum+(booster.shieldBoost??0),0);const generatorStrength=input.baseShieldStrength*massCurveMultiplier2;const boostersStrength=generatorStrength*(boostMultiplier-1);const strength=generatorStrength+boostersStrength+reinforcement;const resistances=Object.freeze(mapDamageTypes(type=>stackShieldResistance(generator[`${type}Resistance`]??0,boosterResistances(boosters,type))));return Object.freeze({strength:strength,generator:generatorStrength,boosters:boostersStrength,reinforcement:reinforcement,massCurveMultiplier:massCurveMultiplier2,boostMultiplier:boostMultiplier,resistances:resistances,effectiveHitPoints:Object.freeze(effectiveHitPoints(strength,resistances))})}export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength};//# sourceMappingURL=chunk-
|
|
1
|
+
import{massCurveMultiplier}from"./chunk-6BFQIYGZ.js";import{mapDamageTypes,effectiveHitPoints,stackShieldResistance}from"./chunk-F44QX47A.js";var curveLabels=scope=>({scope:scope,mass:"hullMass",curve:"generator"});function generatorCurveMultiplier(scope,hullMass,generator){const{minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:minMultiplier,optMultiplier:optMultiplier,maxMultiplier:maxMultiplier}=generator;if(minMass===void 0||optMass===void 0||maxMass===void 0||minMultiplier===void 0||optMultiplier===void 0||maxMultiplier===void 0){return 0}return massCurveMultiplier(curveLabels(scope),hullMass,{minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:minMultiplier,optMultiplier:optMultiplier,maxMultiplier:maxMultiplier})}function shieldMassCurveMultiplier(hullMass,generator){return generatorCurveMultiplier("shieldMassCurveMultiplier",hullMass,generator)}function shieldStrength(hullMass,baseShieldStrength,generator,boostMultiplier=1){return baseShieldStrength*generatorCurveMultiplier("shieldStrength",hullMass,generator)*boostMultiplier}var boosterResistances=(boosters,type)=>boosters.map(booster=>booster[`${type}Resistance`]??0);function shieldMetrics(input){const boosters=input.boosters??[];const reinforcement=input.reinforcement??0;const generator=input.generator??null;if(!generator){const none=Object.freeze(mapDamageTypes(()=>0));return Object.freeze({strength:0,generator:0,boosters:0,reinforcement:0,massCurveMultiplier:0,boostMultiplier:1,resistances:none,effectiveHitPoints:Object.freeze(effectiveHitPoints(0,none))})}const massCurveMultiplier2=generatorCurveMultiplier("shieldMetrics",input.hullMass,generator);const boostMultiplier=1+boosters.reduce((sum,booster)=>sum+(booster.shieldBoost??0),0);const generatorStrength=input.baseShieldStrength*massCurveMultiplier2;const boostersStrength=generatorStrength*(boostMultiplier-1);const strength=generatorStrength+boostersStrength+reinforcement;const resistances=Object.freeze(mapDamageTypes(type=>stackShieldResistance(generator[`${type}Resistance`]??0,boosterResistances(boosters,type))));return Object.freeze({strength:strength,generator:generatorStrength,boosters:boostersStrength,reinforcement:reinforcement,massCurveMultiplier:massCurveMultiplier2,boostMultiplier:boostMultiplier,resistances:resistances,effectiveHitPoints:Object.freeze(effectiveHitPoints(strength,resistances))})}export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength};//# sourceMappingURL=chunk-DBJKLXLS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/shields.ts"],"names":["massCurveMultiplier","mapDamageTypes","effectiveHitPoints","stackShieldResistance","curveLabels","scope","mass","curve","generatorCurveMultiplier","hullMass","generator","minMass","optMass","maxMass","minMultiplier","optMultiplier","maxMultiplier","shieldMassCurveMultiplier","shieldStrength","baseShieldStrength","boostMultiplier","boosterResistances","boosters","type","map","booster","shieldMetrics","input","reinforcement","none","Object","freeze","strength","resistances","reduce","sum","shieldBoost","generatorStrength","boostersStrength"],"mappings":"O,
|
|
1
|
+
{"version":3,"sources":["../src/ships/shields.ts"],"names":["massCurveMultiplier","mapDamageTypes","effectiveHitPoints","stackShieldResistance","curveLabels","scope","mass","curve","generatorCurveMultiplier","hullMass","generator","minMass","optMass","maxMass","minMultiplier","optMultiplier","maxMultiplier","shieldMassCurveMultiplier","shieldStrength","baseShieldStrength","boostMultiplier","boosterResistances","boosters","type","map","booster","shieldMetrics","input","reinforcement","none","Object","freeze","strength","resistances","reduce","sum","shieldBoost","generatorStrength","boostersStrength"],"mappings":"O,uIAsLA,IAAMI,YAAeC,QAAA,CACjBA,YACAC,KAAM,WACNC,MAAO,cAQX,SAASC,yBACLH,MACAI,SACAC,WAEA,MAAMC,QAAEA,QAAAC,QAASA,QAAAC,QAASA,QAAAC,cAASA,cAAAC,cAAeA,cAAAC,cAAeA,eAAkBN,UACnF,GACIC,eAAY,GACZC,eAAY,GACZC,eAAY,GACZC,qBAAkB,GAClBC,qBAAkB,GAClBC,qBAAkB,EACpB,CAGE,OAAO,CACX,CAGA,OAAOhB,oBAAoBI,YAAYC,OAAQI,SAAU,CACrDE,gBACAC,gBACAC,gBACAC,4BACAC,4BACAC,6BAER,CA2DO,SAASC,0BACZR,SACAC,WAEA,OAAOF,yBAAyB,4BAA6BC,SAAUC,UAC3E,CAiBO,SAASQ,eACZT,SACAU,mBACAT,UACAU,gBAAkB,GAElB,OACID,mBACAX,yBAAyB,iBAAkBC,SAAUC,WACrDU,eAER,CAGA,IAAMC,mBAAqB,CAACC,SAA0CC,OAClED,SAASE,IAAKC,SAAYA,QAAQ,GAAGF,mBAAqB,GA2CvD,SAASG,cAAcC,OAC1B,MAAML,SAAWK,MAAML,UAAY,GACnC,MAAMM,cAAgBD,MAAMC,eAAiB,EAC7C,MAAMlB,UAAYiB,MAAMjB,WAAa,KAErC,IAAKA,UAAW,CACZ,MAAMmB,KAAOC,OAAOC,OAAO9B,eAAe,IAAM,IAChD,OAAO6B,OAAOC,OAAO,CACjBC,SAAU,EACVtB,UAAW,EACXY,SAAU,EACVM,cAAe,EACf5B,oBAAqB,EACrBoB,gBAAiB,EACjBa,YAAaJ,KACb3B,mBAAoB4B,OAAOC,OAAO7B,mBAAmB,EAAG2B,QAEhE,CAEA,MAAM7B,qBAAsBQ,yBACxB,gBACAmB,MAAMlB,SACNC,WAEJ,MAAMU,gBACF,EAAIE,SAASY,OAAO,CAACC,IAAKV,UAAYU,KAAOV,QAAQW,aAAe,GAAI,GAC5E,MAAMC,kBAAoBV,MAAMR,mBAAqBnB,qBACrD,MAAMsC,iBAAmBD,mBAAqBjB,gBAAkB,GAChE,MAAMY,SAAWK,kBAAoBC,iBAAmBV,cAExD,MAAMK,YAAiCH,OAAOC,OAC1C9B,eAAgBsB,MACZpB,sBACIO,UAAU,GAAGa,mBAAqB,EAClCF,mBAAmBC,SAAUC,SAKzC,OAAOO,OAAOC,OAAO,CACjBC,kBACAtB,UAAW2B,kBACXf,SAAUgB,iBACVV,4BACA5B,oBAAAA,qBACAoB,gCACAa,wBACA/B,mBAAoB4B,OAAOC,OAAO7B,mBAAmB8B,SAAUC,eAEvE,QAAAhB,0BAAAS,cAAAR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ALL_MICRO_RESOURCES}from"./chunk-
|
|
1
|
+
import{ALL_MICRO_RESOURCES}from"./chunk-4WC5NHBJ.js";import{findInKeyIndex,findByKey,filterByKey,createKeyIndex}from"./chunk-BKWLI44T.js";var MICRO_RESOURCES_BY_SYMBOL=/* @__PURE__ */createKeyIndex(ALL_MICRO_RESOURCES,"symbol");var MICRO_RESOURCES_BY_NAME=/* @__PURE__ */createKeyIndex(ALL_MICRO_RESOURCES,"name");function getMicroResourceBySymbol(symbol,microResources=ALL_MICRO_RESOURCES){return microResources===ALL_MICRO_RESOURCES?findInKeyIndex(MICRO_RESOURCES_BY_SYMBOL,symbol,"getMicroResourceBySymbol: symbol"):findByKey(microResources,"symbol",symbol,"getMicroResourceBySymbol: symbol")}function getMicroResourceByName(name,microResources=ALL_MICRO_RESOURCES){return microResources===ALL_MICRO_RESOURCES?findInKeyIndex(MICRO_RESOURCES_BY_NAME,name,"getMicroResourceByName: name"):findByKey(microResources,"name",name,"getMicroResourceByName: name")}function microResourcesInCategory(category){return filterByKey(ALL_MICRO_RESOURCES,"category",category,"microResourcesInCategory: category")}export{getMicroResourceByName,getMicroResourceBySymbol,microResourcesInCategory};//# sourceMappingURL=chunk-RA6SY445.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{weaponsCapacitorMetrics}from"./chunk-M4FZRDAH.js";import{shieldCapacitorMetrics}from"./chunk-XQJERZUS.js";import{cellBankSummary,shieldRecovery}from"./chunk-JMAXSXXQ.js";import{loadoutInternals,fittedThrusterParamsFor,preEngineeredVariantFor,powerConsumerFor,powerAvailable,heatInputResultFor,completeResult,cellBankInputsFor,armourInputFor,weaponStatsFor,weaponsCapacitorInputFor,mobilityInputResultFor,shieldInputResultFor,shieldCapacitorInputResultFor,shieldRecoveryInputResultFor,distributorInputResultFor,incompleteResult}from"./chunk-ZBUTGTZ3.js";import{weaponMetrics,sumWeaponMetrics}from"./chunk-AAU7OM47.js";import{isNonOutfittingSlot,isBuiltInHullModule,orderBySlotLayout}from"./chunk-C3YZ5KTA.js";import{shieldMetrics}from"./chunk-5VWACBTN.js";import{powerBudget}from"./chunk-GGQMIQPC.js";import{frameShiftDriveMassFactor,singleJumpRange,fuelPerJump,totalRange}from"./chunk-VTMCSCXV.js";import{calculateUnladenMass}from"./chunk-C3LLPLLD.js";import{mobilityCapacitorMetrics}from"./chunk-VEEBJFJ7.js";import{mobilityMetrics}from"./chunk-A4QKXXZD.js";import{distributorMetrics}from"./chunk-M2TCZKRT.js";import{getExperimentalEffectCost}from"./chunk-CJK2IBI2.js";import{heatMetrics}from"./chunk-6HA2YIKW.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{armourMetrics}from"./chunk-Q5ALV3DI.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";import{getBlueprintCost}from"./chunk-K5JK3XQB.js";import{sumMaterials}from"./chunk-U73MBQ45.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var FACADE="BuildMetrics";function requireLoadOptions(scope,options){for(const field of["fuel","cargo"]){const value=options[field];if(value!==void 0)requireFiniteNonNegative(scope,field,value)}}var BuildMetrics=class _BuildMetrics{#build;#state;constructor(build,state){this.#build=build;this.#state=state}static of(build){return new _BuildMetrics(build,loadoutInternals(build,`${FACADE}.of: build`))}loadout(){return this.#build}frameShiftDrive(){const drive=this.#state.resolveDrive();if(drive===null){throw new TypeError(`${FACADE}: build has no frame shift drive`)}return drive}thrusters(){return fittedThrusterParamsFor(this.#state.modules(),this.#state.statsFor)}frameShiftDriveMassFactor(options={}){requireLoadOptions(`${FACADE}.frameShiftDriveMassFactor`,options);return frameShiftDriveMassFactor(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}maxJumpRange(){const fsd=this.frameShiftDrive();return singleJumpRange(this.#loadedMass(0),this.#maxJumpFuel(fsd),fsd)}jumpRange(options={}){requireLoadOptions(`${FACADE}.jumpRange`,options);return singleJumpRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}ladenJumpRange(){return this.jumpRange({cargo:this.#build.cargoCapacity})}fuelPerJump(distance,options={}){requireLoadOptions(`${FACADE}.fuelPerJump`,options);return fuelPerJump(distance,this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}totalRange(options={}){requireLoadOptions(`${FACADE}.totalRange`,options);return totalRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}standardLoadResult(load){return this.#standardLoad(load)}jumpRangeSummary(){const maximum=this.#require(this.standardLoadResult("maximum"),"maximum load");const unladen=this.#require(this.standardLoadResult("unladen"),"unladen load");const laden=this.#require(this.standardLoadResult("laden"),"laden load");return{max:this.jumpRange(maximum),unladen:this.jumpRange(unladen),laden:this.jumpRange(laden),totalMax:this.totalRange(maximum),totalUnladen:this.totalRange(unladen),totalLaden:this.totalRange(laden)}}buildMass(options={}){requireLoadOptions(`${FACADE}.buildMass`,options);const unladen=this.#build.unladenMass;const fuel=options.fuel??this.#build.fuelCapacity.main;const cargo=options.cargo??0;return Object.freeze({hull:this.#state.ship.hullMass,modules:calculateUnladenMass(0,this.#state.calculationModules()),unladen:unladen,fuel:fuel,cargo:cargo,total:unladen+fuel+cargo})}buildCost(){const hull=this.#state.ship.hullCost;let modules=0;let mercCoins=0;const unpriced=[];const materials=[];for(const module of this.#state.modules()){const stats=this.#state.statsFor(module);if(stats?.cost!==void 0){modules+=stats.cost}else if(stats!==null||!isNonOutfittingSlot(module.Slot)&&!isBuiltInHullModule(module)){unpriced.push({slot:module.Slot,symbol:module.Item})}const variant=preEngineeredVariantFor(module);mercCoins+=variant?.mercCoinCost??0;const engineering=module.Engineering;if(!engineering)continue;const grade=engineering.Level;const bought=variant?.grade??0;if(Number.isInteger(grade)&&grade>bought&&grade<=5){const climb=getBlueprintCost(engineering.BlueprintName,grade,bought);if(climb){materials.push(climb.materials);mercCoins+=climb.mercCoins}}const experimental=engineering.ExperimentalEffect;if(experimental!==void 0&&experimental.toLowerCase()!==variant?.experimentalEffectSymbol?.toLowerCase()){const cost=getExperimentalEffectCost(experimental);if(cost)materials.push(cost)}}return deepFreeze({credits:{total:hull+modules,hull:hull,modules:modules,rebuy:Math.trunc((hull+modules)*.05),unpriced:unpriced},mercCoins:mercCoins,materials:sumMaterials(...materials)})}powerBudget(){const modules=this.#state.modules();const consumers=[];for(const module of modules){const consumer=powerConsumerFor(module,this.#state.statsFor(module));if(consumer)consumers.push(consumer)}return powerBudget(powerAvailable(modules,this.#state.statsFor),consumers)}heatMetricsResult(){const input=heatInputResultFor(this.#state.ship,this.#state.effectiveModules(),this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(heatMetrics(input.value)):input}mobilityMetricsResult(options={}){return this.#mobility(options)}mobilityCapacitorMetricsResult(options={}){return this.#mobilityCapacitor(options)}shieldMetricsResult(){return this.#shields()}shieldCapacitorMetricsResult(options={}){return this.#shieldCapacitor(options)}shieldRecoveryResult(options={}){return this.#recovery(options)}cellBanks(){return cellBankSummary(orderBySlotLayout(cellBankInputsFor(this.#state.modules(),this.powerBudget(),this.#state.statsFor),this.#state.layout(),bank=>bank.slot))}armourMetrics(){return armourMetrics(armourInputFor(this.#state.ship,this.#state.modules(),this.#state.statsFor))}weaponMetrics(){const weapons=[];for(const module of this.#state.modules()){const record=this.#state.statsFor(module);const stats=weaponStatsFor(this.#state.effectiveModule(module),record);if(!stats)continue;weapons.push({slot:module.Slot,symbol:module.Item,name:record?.name??module.Item,enabled:module.On!==false,metrics:weaponMetrics(stats),ammunition:ammunitionCapacity(stats),...stats.maximumRange===void 0?{}:{maximumRange:stats.maximumRange},...stats.falloffRange===void 0?{}:{falloffRange:stats.falloffRange},...stats.projectileRange===void 0?{}:{projectileRange:{...stats.projectileRange}},...stats.armourPiercing===void 0?{}:{armourPiercing:stats.armourPiercing}})}const orderedWeapons=orderBySlotLayout(weapons,this.#state.layout(),weapon=>weapon.slot);return{weapons:orderedWeapons,total:sumWeaponMetrics(orderedWeapons.filter(weapon=>weapon.enabled).map(weapon=>weapon.metrics))}}weaponsCapacitorMetrics(options={}){const weaponsPips=requirePips(`${FACADE}.weaponsCapacitorMetrics`,"weaponsPips",options.weaponsPips??4);return weaponsCapacitorMetrics(weaponsCapacitorInputFor(this.#state.effectiveModules(),weaponsPips,this.powerBudget(),this.#state.statsFor))}distributorMetricsResult(options={}){return this.#distributor(options)}#mobility(options){const input=this.#mobilityInput(`${FACADE}.mobilityMetricsResult`,options);return input.complete?completeResult(mobilityMetrics(input.value)):input}#mobilityCapacitor(options){const scope=`${FACADE}.mobilityCapacitorMetricsResult`;const enginesPips=requirePips(scope,"enginesPips",options.enginesPips??4);const input=this.#mobilityInput(scope,options);return input.complete?completeResult(mobilityCapacitorMetrics({...input.value,enginesPips:enginesPips})):input}#mobilityInput(scope,options){requireLoadOptions(scope,options);return mobilityInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),()=>this.#loadedMass(options.cargo??0)+(options.fuel??this.#state.statedMainFuel()??this.#build.fuelCapacity.main),this.#state.statsFor)}#shields(){const input=shieldInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(shieldMetrics(input.value)):input}#shieldCapacitor(options){const systemsPips=requirePips(`${FACADE}.shieldCapacitorMetricsResult`,"systemsPips",options.systemsPips??4);const input=shieldCapacitorInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldCapacitorMetrics(input.value)):input}#recovery(options){const systemsPips=requirePips(`${FACADE}.shieldRecoveryResult`,"systemsPips",options.systemsPips??4);const input=shieldRecoveryInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldRecovery(input.value)):input}#distributor(options){const scope=`${FACADE}.distributorMetricsResult`;const pips={systemsPips:requirePips(scope,"systemsPips",options.systemsPips??4),enginesPips:requirePips(scope,"enginesPips",options.enginesPips??4),weaponsPips:requirePips(scope,"weaponsPips",options.weaponsPips??4)};const input=distributorInputResultFor(this.#state.effectiveModules(),pips,this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(distributorMetrics(input.value)):input}#standardLoad(load){if(load!=="maximum"&&load!=="unladen"&&load!=="laden"){throw new RangeError(`${FACADE}.standardLoadResult: load must be 'maximum', 'unladen', or 'laden'`)}const fuel=this.#build.fuelCapacity;const cargo=load==="laden"?this.#build.cargoCapacity:0;const mass=load==="maximum"?this.#build.unladenMass:0;let drive=null;let maximumFuel=null;if(load==="maximum"){const fitted=this.#state.frameShiftDriveModule();let driveError=null;try{drive=this.#state.resolveDrive();maximumFuel=drive?.maxFuel??null}catch(error){if(!(error instanceof Error))throw error;driveError=error}if(maximumFuel===null){return incompleteResult([{field:"frameShiftDrive",reason:fitted?"unresolved":"missing",slot:fitted?.Slot??"FrameShiftDrive",...fitted?{symbol:fitted.Item}:{},message:driveError?.message??"FrameShiftDrive: no frame shift drive is fitted",params:fitted?{field:"frameShiftDrive",reason:"unresolved",slot:fitted.Slot,symbol:fitted.Item}:{field:"frameShiftDrive",reason:"missing",slot:"FrameShiftDrive"}}])}}const carriedFuel=load==="maximum"?Math.min(fuel.main,maximumFuel):fuel.main;const value=Object.freeze({fuel:carriedFuel,cargo:cargo,mass:this.#build.unladenMass+carriedFuel+cargo});if(load==="maximum"){try{this.jumpRange(value)}catch(error){if(!(error instanceof RangeError))throw error;const fitted=this.#state.frameShiftDriveModule();const field=drive!==null&&(!Number.isFinite(drive.maxFuel)||drive.maxFuel<0)?"frameShiftDrive":!Number.isFinite(value.fuel)||value.fuel<0?"fuelCapacity":!Number.isFinite(mass)||mass<0?"mass":"frameShiftDrive";const driveParams=field==="frameShiftDrive"&&fitted?{slot:fitted.Slot,symbol:fitted.Item}:{};return incompleteResult([{field:field,reason:"invalid",...driveParams,message:error.message,params:{field:field,reason:"invalid",...driveParams}}])}}return completeResult(value)}#require(result,what){if(result.value===null){throw new TypeError(`${FACADE}: cannot determine ${what} (${result.issues.map(issue=>issue.message).join("; ")})`)}return result.value}#loadedMass(cargo){return this.#build.unladenMass+cargo}#maxJumpFuel(fsd){return Math.min(this.#build.fuelCapacity.main,fsd.maxFuel)}};export{BuildMetrics};//# sourceMappingURL=chunk-G7WARJ3X.js.map
|
|
1
|
+
import{weaponsCapacitorMetrics}from"./chunk-M4FZRDAH.js";import{powerBudget}from"./chunk-GGQMIQPC.js";import{shieldCapacitorMetrics}from"./chunk-XQJERZUS.js";import{cellBankSummary,shieldRecovery}from"./chunk-JMAXSXXQ.js";import{loadoutInternals,fittedThrusterParamsFor,preEngineeredVariantFor,powerConsumerFor,powerAvailable,heatInputResultFor,completeResult,cellBankInputsFor,armourInputFor,weaponStatsFor,weaponsCapacitorInputFor,mobilityInputResultFor,shieldInputResultFor,shieldCapacitorInputResultFor,shieldRecoveryInputResultFor,distributorInputResultFor,incompleteResult}from"./chunk-A6QTYK2D.js";import{weaponMetrics,sumWeaponMetrics}from"./chunk-AAU7OM47.js";import{isNonOutfittingSlot,isBuiltInHullModule,orderBySlotLayout}from"./chunk-C3YZ5KTA.js";import{shieldMetrics}from"./chunk-DBJKLXLS.js";import{heatMetrics}from"./chunk-6HA2YIKW.js";import{frameShiftDriveMassFactor,singleJumpRange,fuelPerJump,totalRange}from"./chunk-VTMCSCXV.js";import{calculateUnladenMass}from"./chunk-C3LLPLLD.js";import{mobilityCapacitorMetrics}from"./chunk-VEEBJFJ7.js";import{mobilityMetrics}from"./chunk-A4QKXXZD.js";import{distributorMetrics}from"./chunk-M2TCZKRT.js";import{getExperimentalEffectCost}from"./chunk-CJK2IBI2.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{armourMetrics}from"./chunk-Q5ALV3DI.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";import{getBlueprintCost}from"./chunk-K5JK3XQB.js";import{sumMaterials}from"./chunk-U73MBQ45.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var FACADE="BuildMetrics";function requireLoadOptions(scope,options){for(const field of["fuel","cargo"]){const value=options[field];if(value!==void 0)requireFiniteNonNegative(scope,field,value)}}var BuildMetrics=class _BuildMetrics{#build;#state;constructor(build,state){this.#build=build;this.#state=state}static of(build){return new _BuildMetrics(build,loadoutInternals(build,`${FACADE}.of: build`))}loadout(){return this.#build}frameShiftDrive(){const drive=this.#state.resolveDrive();if(drive===null){throw new TypeError(`${FACADE}: build has no frame shift drive`)}return drive}thrusters(){return fittedThrusterParamsFor(this.#state.modules(),this.#state.statsFor)}frameShiftDriveMassFactor(options={}){requireLoadOptions(`${FACADE}.frameShiftDriveMassFactor`,options);return frameShiftDriveMassFactor(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}maxJumpRange(){const fsd=this.frameShiftDrive();return singleJumpRange(this.#loadedMass(0),this.#maxJumpFuel(fsd),fsd)}jumpRange(options={}){requireLoadOptions(`${FACADE}.jumpRange`,options);return singleJumpRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}ladenJumpRange(){return this.jumpRange({cargo:this.#build.cargoCapacity})}fuelPerJump(distance,options={}){requireLoadOptions(`${FACADE}.fuelPerJump`,options);return fuelPerJump(distance,this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}totalRange(options={}){requireLoadOptions(`${FACADE}.totalRange`,options);return totalRange(this.#loadedMass(options.cargo??0),options.fuel??this.#build.fuelCapacity.main,this.frameShiftDrive())}standardLoadResult(load){return this.#standardLoad(load)}jumpRangeSummary(){const maximum=this.#require(this.standardLoadResult("maximum"),"maximum load");const unladen=this.#require(this.standardLoadResult("unladen"),"unladen load");const laden=this.#require(this.standardLoadResult("laden"),"laden load");return{max:this.jumpRange(maximum),unladen:this.jumpRange(unladen),laden:this.jumpRange(laden),totalMax:this.totalRange(maximum),totalUnladen:this.totalRange(unladen),totalLaden:this.totalRange(laden)}}buildMass(options={}){requireLoadOptions(`${FACADE}.buildMass`,options);const unladen=this.#build.unladenMass;const fuel=options.fuel??this.#build.fuelCapacity.main;const cargo=options.cargo??0;return Object.freeze({hull:this.#state.ship.hullMass,modules:calculateUnladenMass(0,this.#state.calculationModules()),unladen:unladen,fuel:fuel,cargo:cargo,total:unladen+fuel+cargo})}buildCost(){const hull=this.#state.ship.hullCost;let modules=0;let mercCoins=0;const unpriced=[];const materials=[];for(const module of this.#state.modules()){const stats=this.#state.statsFor(module);if(stats?.cost!==void 0){modules+=stats.cost}else if(stats!==null||!isNonOutfittingSlot(module.Slot)&&!isBuiltInHullModule(module)){unpriced.push({slot:module.Slot,symbol:module.Item})}const variant=preEngineeredVariantFor(module);mercCoins+=variant?.mercCoinCost??0;const engineering=module.Engineering;if(!engineering)continue;const grade=engineering.Level;const bought=variant?.grade??0;if(Number.isInteger(grade)&&grade>bought&&grade<=5){const climb=getBlueprintCost(engineering.BlueprintName,grade,bought);if(climb){materials.push(climb.materials);mercCoins+=climb.mercCoins}}const experimental=engineering.ExperimentalEffect;if(experimental!==void 0&&experimental.toLowerCase()!==variant?.experimentalEffectSymbol?.toLowerCase()){const cost=getExperimentalEffectCost(experimental);if(cost)materials.push(cost)}}return deepFreeze({credits:{total:hull+modules,hull:hull,modules:modules,rebuy:Math.trunc((hull+modules)*.05),unpriced:unpriced},mercCoins:mercCoins,materials:sumMaterials(...materials)})}powerBudget(){const modules=this.#state.modules();const consumers=[];for(const module of modules){const consumer=powerConsumerFor(module,this.#state.statsFor(module));if(consumer)consumers.push(consumer)}return powerBudget(powerAvailable(modules,this.#state.statsFor),consumers)}heatMetricsResult(){const input=heatInputResultFor(this.#state.ship,this.#state.effectiveModules(),this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(heatMetrics(input.value)):input}mobilityMetricsResult(options={}){return this.#mobility(options)}mobilityCapacitorMetricsResult(options={}){return this.#mobilityCapacitor(options)}shieldMetricsResult(){return this.#shields()}shieldCapacitorMetricsResult(options={}){return this.#shieldCapacitor(options)}shieldRecoveryResult(options={}){return this.#recovery(options)}cellBanks(){return cellBankSummary(orderBySlotLayout(cellBankInputsFor(this.#state.modules(),this.powerBudget(),this.#state.statsFor),this.#state.layout(),bank=>bank.slot))}armourMetrics(){return armourMetrics(armourInputFor(this.#state.ship,this.#state.modules(),this.#state.statsFor))}weaponMetrics(){const weapons=[];for(const module of this.#state.modules()){const record=this.#state.statsFor(module);const stats=weaponStatsFor(this.#state.effectiveModule(module),record);if(!stats)continue;weapons.push({slot:module.Slot,symbol:module.Item,name:record?.name??module.Item,enabled:module.On!==false,metrics:weaponMetrics(stats),ammunition:ammunitionCapacity(stats),...stats.maximumRange===void 0?{}:{maximumRange:stats.maximumRange},...stats.falloffRange===void 0?{}:{falloffRange:stats.falloffRange},...stats.projectileRange===void 0?{}:{projectileRange:{...stats.projectileRange}},...stats.armourPiercing===void 0?{}:{armourPiercing:stats.armourPiercing}})}const orderedWeapons=orderBySlotLayout(weapons,this.#state.layout(),weapon=>weapon.slot);return{weapons:orderedWeapons,total:sumWeaponMetrics(orderedWeapons.filter(weapon=>weapon.enabled).map(weapon=>weapon.metrics))}}weaponsCapacitorMetrics(options={}){const weaponsPips=requirePips(`${FACADE}.weaponsCapacitorMetrics`,"weaponsPips",options.weaponsPips??4);return weaponsCapacitorMetrics(weaponsCapacitorInputFor(this.#state.effectiveModules(),weaponsPips,this.powerBudget(),this.#state.statsFor))}distributorMetricsResult(options={}){return this.#distributor(options)}#mobility(options){const input=this.#mobilityInput(`${FACADE}.mobilityMetricsResult`,options);return input.complete?completeResult(mobilityMetrics(input.value)):input}#mobilityCapacitor(options){const scope=`${FACADE}.mobilityCapacitorMetricsResult`;const enginesPips=requirePips(scope,"enginesPips",options.enginesPips??4);const input=this.#mobilityInput(scope,options);return input.complete?completeResult(mobilityCapacitorMetrics({...input.value,enginesPips:enginesPips})):input}#mobilityInput(scope,options){requireLoadOptions(scope,options);return mobilityInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),()=>this.#loadedMass(options.cargo??0)+(options.fuel??this.#state.statedMainFuel()??this.#build.fuelCapacity.main),this.#state.statsFor)}#shields(){const input=shieldInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(shieldMetrics(input.value)):input}#shieldCapacitor(options){const systemsPips=requirePips(`${FACADE}.shieldCapacitorMetricsResult`,"systemsPips",options.systemsPips??4);const input=shieldCapacitorInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldCapacitorMetrics(input.value)):input}#recovery(options){const systemsPips=requirePips(`${FACADE}.shieldRecoveryResult`,"systemsPips",options.systemsPips??4);const input=shieldRecoveryInputResultFor(this.#state.ship,this.#state.modules(),()=>this.powerBudget(),systemsPips,this.#state.statsFor);return input.complete?completeResult(shieldRecovery(input.value)):input}#distributor(options){const scope=`${FACADE}.distributorMetricsResult`;const pips={systemsPips:requirePips(scope,"systemsPips",options.systemsPips??4),enginesPips:requirePips(scope,"enginesPips",options.enginesPips??4),weaponsPips:requirePips(scope,"weaponsPips",options.weaponsPips??4)};const input=distributorInputResultFor(this.#state.effectiveModules(),pips,this.powerBudget(),this.#state.statsFor);return input.complete?completeResult(distributorMetrics(input.value)):input}#standardLoad(load){if(load!=="maximum"&&load!=="unladen"&&load!=="laden"){throw new RangeError(`${FACADE}.standardLoadResult: load must be 'maximum', 'unladen', or 'laden'`)}const fuel=this.#build.fuelCapacity;const cargo=load==="laden"?this.#build.cargoCapacity:0;const mass=load==="maximum"?this.#build.unladenMass:0;let drive=null;let maximumFuel=null;if(load==="maximum"){const fitted=this.#state.frameShiftDriveModule();let driveError=null;try{drive=this.#state.resolveDrive();maximumFuel=drive?.maxFuel??null}catch(error){if(!(error instanceof Error))throw error;driveError=error}if(maximumFuel===null){return incompleteResult([{field:"frameShiftDrive",reason:fitted?"unresolved":"missing",slot:fitted?.Slot??"FrameShiftDrive",...fitted?{symbol:fitted.Item}:{},message:driveError?.message??"FrameShiftDrive: no frame shift drive is fitted",params:fitted?{field:"frameShiftDrive",reason:"unresolved",slot:fitted.Slot,symbol:fitted.Item}:{field:"frameShiftDrive",reason:"missing",slot:"FrameShiftDrive"}}])}}const carriedFuel=load==="maximum"?Math.min(fuel.main,maximumFuel):fuel.main;const value=Object.freeze({fuel:carriedFuel,cargo:cargo,mass:this.#build.unladenMass+carriedFuel+cargo});if(load==="maximum"){try{this.jumpRange(value)}catch(error){if(!(error instanceof RangeError))throw error;const fitted=this.#state.frameShiftDriveModule();const field=drive!==null&&(!Number.isFinite(drive.maxFuel)||drive.maxFuel<0)?"frameShiftDrive":!Number.isFinite(value.fuel)||value.fuel<0?"fuelCapacity":!Number.isFinite(mass)||mass<0?"mass":"frameShiftDrive";const driveParams=field==="frameShiftDrive"&&fitted?{slot:fitted.Slot,symbol:fitted.Item}:{};return incompleteResult([{field:field,reason:"invalid",...driveParams,message:error.message,params:{field:field,reason:"invalid",...driveParams}}])}}return completeResult(value)}#require(result,what){if(result.value===null){throw new TypeError(`${FACADE}: cannot determine ${what} (${result.issues.map(issue=>issue.message).join("; ")})`)}return result.value}#loadedMass(cargo){return this.#build.unladenMass+cargo}#maxJumpFuel(fsd){return Math.min(this.#build.fuelCapacity.main,fsd.maxFuel)}};export{BuildMetrics};//# sourceMappingURL=chunk-ZWT5Y3JR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/build-metrics.ts"],"names":["weaponsCapacitorMetrics","powerBudget","shieldCapacitorMetrics","cellBankSummary","shieldRecovery","loadoutInternals","fittedThrusterParamsFor","preEngineeredVariantFor","powerConsumerFor","powerAvailable","heatInputResultFor","completeResult","cellBankInputsFor","armourInputFor","weaponStatsFor","weaponsCapacitorInputFor","mobilityInputResultFor","shieldInputResultFor","shieldCapacitorInputResultFor","shieldRecoveryInputResultFor","distributorInputResultFor","incompleteResult","weaponMetrics","sumWeaponMetrics","isNonOutfittingSlot","isBuiltInHullModule","orderBySlotLayout","shieldMetrics","heatMetrics","frameShiftDriveMassFactor","singleJumpRange","fuelPerJump","totalRange","calculateUnladenMass","mobilityCapacitorMetrics","mobilityMetrics","distributorMetrics","getExperimentalEffectCost","ammunitionCapacity","armourMetrics","requirePips","requireFiniteNonNegative","getBlueprintCost","sumMaterials","deepFreeze","FACADE","requireLoadOptions","scope","options","field","value","BuildMetrics","_BuildMetrics","build","state","constructor","this","of","loadout","frameShiftDrive","drive","resolveDrive","TypeError","thrusters","modules","statsFor","loadedMass","cargo","fuel","fuelCapacity","main","maxJumpRange","fsd","maxJumpFuel","jumpRange","ladenJumpRange","cargoCapacity","distance","standardLoadResult","load","standardLoad","jumpRangeSummary","maximum","require","unladen","laden","max","totalMax","totalUnladen","totalLaden","buildMass","unladenMass","Object","freeze","hull","ship","hullMass","calculationModules","total","buildCost","hullCost","mercCoins","unpriced","materials","module","stats","cost","Slot","push","slot","symbol","Item","variant","mercCoinCost","engineering","Engineering","grade","Level","bought","Number","isInteger","climb","BlueprintName","experimental","ExperimentalEffect","toLowerCase","experimentalEffectSymbol","credits","rebuy","Math","trunc","consumers","consumer","heatMetricsResult","input","effectiveModules","complete","mobilityMetricsResult","mobility","mobilityCapacitorMetricsResult","mobilityCapacitor","shieldMetricsResult","shields","shieldCapacitorMetricsResult","shieldCapacitor","shieldRecoveryResult","recovery","cellBanks","layout","bank","weapons","record","effectiveModule","name","enabled","On","metrics","ammunition","maximumRange","falloffRange","projectileRange","armourPiercing","orderedWeapons","weapon","filter","map","weaponsPips","distributorMetricsResult","distributor","mobilityInput","enginesPips","statedMainFuel","systemsPips","pips","RangeError","mass","maximumFuel","fitted","frameShiftDriveModule","driveError","maxFuel","error","Error","reason","message","params","carriedFuel","min","isFinite","driveParams","result","what","issues","issue","join"],"mappings":"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"}
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
* Elite Dangerous personal equipment: Odyssey suits, handheld weapons, suit tools,
|
|
3
3
|
* Pioneer Supplies grade progression and engineer-applied modifications.
|
|
4
4
|
*
|
|
5
|
+
* **Reading a journal suit loadout? Start with {@link parseSuitLoadout}.** It takes a
|
|
6
|
+
* `SuitLoadout`, `SwitchSuitLoadout` or `CreateSuitLoadout` event and answers with the
|
|
7
|
+
* suit, its stats at the grade it states, its modifications and the weapon at each
|
|
8
|
+
* mount. The lookups below are what it resolves an event against, and what an outfitting
|
|
9
|
+
* screen browsing the catalogues calls directly.
|
|
10
|
+
*
|
|
5
11
|
* Material shopping lists are deliberately leaf-only: import grade-upgrade costs from
|
|
6
12
|
* `equipment/upgrade-costs` and modification costs from
|
|
7
13
|
* `equipment/modification-costs`. Keeping them off this barrel lets identity and stat
|
|
@@ -14,3 +20,4 @@ export { PERSONAL_TOOLS, PersonalTool, getPersonalToolById } from './tools.js';
|
|
|
14
20
|
export { PersonalEngineeringIngredient, PersonalModifier, applyPersonalModifiers, sumPersonalEngineeringIngredients } from './engineering.js';
|
|
15
21
|
export { PERSONAL_MODIFICATIONS, PersonalModification, PersonalModificationTarget, getPersonalModification } from './modifications.js';
|
|
16
22
|
export { resolvePersonalModificationForWeapon } from './modification-journal.js';
|
|
23
|
+
export { FittedPersonalModification, FittedPersonalWeapon, SuitLoadout, SuitLoadoutEvent, SuitLoadoutImportOutcome, SuitLoadoutModuleEvent, parseSuitLoadout } from './suit-loadout.js';
|
package/dist/equipment/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{resolvePersonalModificationForWeapon}from"../chunk-R2AEZYX7.js";export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-YI5XKWW2.js";export{PERSONAL_TOOLS,getPersonalToolById}from"../chunk-CEF7SMB2.js";export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-C6G7IN74.js";export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade,personalWeaponMetrics}from"../chunk-PIU24HRN.js"; export{applyPersonalModifiers,sumPersonalEngineeringIngredients}from"../chunk-SIL356HB.js"; //# sourceMappingURL=index.js.map
|
|
1
|
+
export{parseSuitLoadout}from"../chunk-36I5QLTL.js";export{resolvePersonalModificationForWeapon}from"../chunk-R2AEZYX7.js";export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-YI5XKWW2.js";export{PERSONAL_TOOLS,getPersonalToolById}from"../chunk-CEF7SMB2.js";export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-C6G7IN74.js";export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade,personalWeaponMetrics}from"../chunk-PIU24HRN.js"; export{applyPersonalModifiers,sumPersonalEngineeringIngredients}from"../chunk-SIL356HB.js"; //# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { PersonalModifier } from './engineering.js';
|
|
2
|
+
import { PersonalModification } from './modifications.js';
|
|
3
|
+
import { d as PersonalMountKey, e as PersonalWeapon, E as EquipmentGrade, i as PersonalWeaponMetrics, l as Suit, m as SuitGrade } from '../suits-B4sQMLFe.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Import a journal suit loadout: the suit a Commander wears, its grade, the permanent
|
|
7
|
+
* modifications on it, and the weapon at each mount with the modifications on that.
|
|
8
|
+
*
|
|
9
|
+
* The game writes the same payload under three event names — `SuitLoadout` when a
|
|
10
|
+
* session starts or a loadout changes, `SwitchSuitLoadout` when the Commander changes
|
|
11
|
+
* suit, and `CreateSuitLoadout` when they save a new one — so {@link parseSuitLoadout}
|
|
12
|
+
* takes any of the three.
|
|
13
|
+
*
|
|
14
|
+
* This is the personal-equipment counterpart of `ships/ship-loadout`, at the scale the
|
|
15
|
+
* domain needs: a suit has no editor, so an import is one frozen record rather than a
|
|
16
|
+
* mutable build. It carries the suit and weapon catalogues and the modification recipes,
|
|
17
|
+
* which is every catalogue an event names.
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/** One weapon entry in a journal suit-loadout event. */
|
|
23
|
+
interface SuitLoadoutModuleEvent {
|
|
24
|
+
/** The mount it occupies, e.g. `"PrimaryWeapon1"`. */
|
|
25
|
+
readonly SlotName: string;
|
|
26
|
+
/** The owned weapon instance's id. */
|
|
27
|
+
readonly SuitModuleID?: number;
|
|
28
|
+
/** The weapon's Frontier symbol, e.g. `"wpn_m_launcher_rocket_sauto"`. */
|
|
29
|
+
readonly ModuleName: string;
|
|
30
|
+
/** The weapon's display name, when the event states one. */
|
|
31
|
+
readonly ModuleName_Localised?: string;
|
|
32
|
+
/** The weapon's Pioneer Supplies grade, 1–5. */
|
|
33
|
+
readonly Class: number;
|
|
34
|
+
/** Each permanent modification on the weapon, in the game's own spelling. */
|
|
35
|
+
readonly WeaponMods?: readonly string[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A journal `SuitLoadout`, `SwitchSuitLoadout` or `CreateSuitLoadout` event.
|
|
39
|
+
*
|
|
40
|
+
* @remarks
|
|
41
|
+
* `event` and `timestamp` name the journal line rather than the loadout, and the
|
|
42
|
+
* `_Localised` fields are the game's own display text for a locale. {@link
|
|
43
|
+
* parseSuitLoadout} drops all four; `i18n/suits`, `i18n/personal-weapons` and
|
|
44
|
+
* `i18n/personal-modifications` answer for display text in every stored locale.
|
|
45
|
+
*/
|
|
46
|
+
interface SuitLoadoutEvent {
|
|
47
|
+
/** The journal event name. Accepted on input, and not part of the loadout. */
|
|
48
|
+
readonly event?: string;
|
|
49
|
+
/** When the game wrote the line. */
|
|
50
|
+
readonly timestamp?: string;
|
|
51
|
+
/** The owned suit instance's id. */
|
|
52
|
+
readonly SuitID?: number;
|
|
53
|
+
/** The suit's grade-specific Frontier symbol, e.g. `"tacticalsuit_class5"`. */
|
|
54
|
+
readonly SuitName: string;
|
|
55
|
+
/** The suit's display name, when the event states one. */
|
|
56
|
+
readonly SuitName_Localised?: string;
|
|
57
|
+
/** Each permanent modification on the suit, in the game's own spelling. */
|
|
58
|
+
readonly SuitMods?: readonly string[];
|
|
59
|
+
/** The saved loadout's id. */
|
|
60
|
+
readonly LoadoutID?: number;
|
|
61
|
+
/** The player-given loadout name, e.g. `"Double Trouble"`. */
|
|
62
|
+
readonly LoadoutName?: string;
|
|
63
|
+
/** The weapon at each occupied mount. */
|
|
64
|
+
readonly Modules?: readonly SuitLoadoutModuleEvent[];
|
|
65
|
+
}
|
|
66
|
+
/** One modification an event states, resolved against the recipe catalogue. */
|
|
67
|
+
interface FittedPersonalModification {
|
|
68
|
+
/** The symbol the event wrote, e.g. `"weapon_range"`. */
|
|
69
|
+
readonly journalSymbol: string;
|
|
70
|
+
/**
|
|
71
|
+
* The recipe key, e.g. `"weapon_range_kinetic"`, ready to index
|
|
72
|
+
* `PERSONAL_MODIFICATIONS` and `PERSONAL_MODIFICATION_COSTS`.
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* It is {@link journalSymbol} trimmed and lower-cased, which is how both catalogues
|
|
76
|
+
* key a recipe. Greater Range, Headshot Damage and Improved Hip Fire Accuracy carry
|
|
77
|
+
* a Kinetic, a Laser and a Plasma recipe each, and the journal writes one symbol for
|
|
78
|
+
* all three, so there the key also gains the suffix the weapon at the mount settles;
|
|
79
|
+
* `equipment/modification-journal` is that lookup.
|
|
80
|
+
*/
|
|
81
|
+
readonly symbol: string;
|
|
82
|
+
/** The recipe itself. */
|
|
83
|
+
readonly modification: PersonalModification;
|
|
84
|
+
}
|
|
85
|
+
/** One weapon an event puts on a suit mount, resolved against the weapon catalogue. */
|
|
86
|
+
interface FittedPersonalWeapon {
|
|
87
|
+
/** The mount, in the catalogue's spelling, whatever spelling the event used. */
|
|
88
|
+
readonly mount: PersonalMountKey;
|
|
89
|
+
/** The owned weapon instance's id, or `null` when the event states none. */
|
|
90
|
+
readonly moduleId: number | null;
|
|
91
|
+
/** The weapon. */
|
|
92
|
+
readonly weapon: PersonalWeapon;
|
|
93
|
+
/** The weapon's grade, from the event's `Class`. */
|
|
94
|
+
readonly grade: EquipmentGrade;
|
|
95
|
+
/**
|
|
96
|
+
* Each modification the catalogues resolved, in the order the event lists them.
|
|
97
|
+
* Anything the event stated and this leaves out is in
|
|
98
|
+
* {@link SuitLoadout.importOutcomes}.
|
|
99
|
+
*/
|
|
100
|
+
readonly modifications: readonly FittedPersonalModification[];
|
|
101
|
+
/**
|
|
102
|
+
* Every modifier that acts on this weapon, ready for `applyPersonalModifiers`.
|
|
103
|
+
*
|
|
104
|
+
* @remarks
|
|
105
|
+
* This includes the suit's own modifiers that name a stat the weapon carries: Extra
|
|
106
|
+
* Ammo Capacity is a suit modification and multiplies a *weapon's* `reserveAmmo`, so
|
|
107
|
+
* one list answers for the weapon and a consumer does not have to know which
|
|
108
|
+
* equipment the recipe sits on. That is also why nothing is ever concatenated onto
|
|
109
|
+
* it: adding {@link SuitLoadout.modifiers} multiplies those factors in a second time.
|
|
110
|
+
*/
|
|
111
|
+
readonly modifiers: readonly PersonalModifier[];
|
|
112
|
+
/** Whether Reload Speed is fitted, which selects `weapon.reloadTime.upgraded`. */
|
|
113
|
+
readonly reloadSpeed: boolean;
|
|
114
|
+
/** Whether Scope is fitted, which selects `weapon.scopeMagnification.upgraded`. */
|
|
115
|
+
readonly scope: boolean;
|
|
116
|
+
/** What the weapon does per second at this grade, with {@link modifiers} folded in. */
|
|
117
|
+
readonly metrics: PersonalWeaponMetrics;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Something an event states that the import could not use.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* An event is taken as far as the catalogues allow. Every outcome reports one entry the
|
|
124
|
+
* import left out — a weapon it does not fit, or a modification it does not apply — so
|
|
125
|
+
* the loadout holds what the catalogues answer for. The suit is the one identity a miss
|
|
126
|
+
* refuses outright, because nothing else in the event stands without it; a malformed
|
|
127
|
+
* event is refused too, and {@link parseSuitLoadout} states what it checks.
|
|
128
|
+
*/
|
|
129
|
+
interface SuitLoadoutImportOutcome {
|
|
130
|
+
/**
|
|
131
|
+
* Why the entry is left out:
|
|
132
|
+
*
|
|
133
|
+
* - `unknownWeapon` — no catalogue weapon answers to `ModuleName`.
|
|
134
|
+
* - `unknownMount` — the suit carries no mount by that `SlotName`.
|
|
135
|
+
* - `refusedMount` — the weapon resolves, and the mount does not take its kind: a
|
|
136
|
+
* primary weapon in the secondary mount, or the reverse.
|
|
137
|
+
* - `unknownGrade` — `Class` is not an integer from 1 through 5, so the weapon has
|
|
138
|
+
* no stats to report.
|
|
139
|
+
* - `unknownModification` — no recipe answers to the symbol.
|
|
140
|
+
* - `refusedModification` — the recipe resolves, and it belongs to the other
|
|
141
|
+
* equipment: a suit recipe under `WeaponMods`, or a weapon recipe under `SuitMods`.
|
|
142
|
+
*/
|
|
143
|
+
readonly action: 'unknownWeapon' | 'unknownMount' | 'refusedMount' | 'unknownGrade' | 'unknownModification' | 'refusedModification';
|
|
144
|
+
/**
|
|
145
|
+
* The mount the event named, in its own spelling, or `null` for a modification on
|
|
146
|
+
* the suit itself.
|
|
147
|
+
*/
|
|
148
|
+
readonly mount: string | null;
|
|
149
|
+
/** The weapon or recipe symbol the event stated. */
|
|
150
|
+
readonly sourceSymbol: string;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* One imported suit loadout: the suit, its modifications, and the weapon at each mount.
|
|
154
|
+
*
|
|
155
|
+
* @remarks
|
|
156
|
+
* Every field is a frozen fact the event stated or the catalogues resolved. Read a mount
|
|
157
|
+
* with `loadout.weapons.find((fitted) => fitted.mount === 'PrimaryWeapon1')`; an absent
|
|
158
|
+
* one holds no weapon, which is what the game writes for an empty mount.
|
|
159
|
+
*/
|
|
160
|
+
interface SuitLoadout {
|
|
161
|
+
/** The suit model. */
|
|
162
|
+
readonly suit: Suit;
|
|
163
|
+
/** The suit's grade, from its Frontier symbol. */
|
|
164
|
+
readonly grade: EquipmentGrade;
|
|
165
|
+
/** The suit's stats at {@link grade}. */
|
|
166
|
+
readonly stats: SuitGrade;
|
|
167
|
+
/** The owned suit instance's id, or `null` when the event states none. */
|
|
168
|
+
readonly suitId: number | null;
|
|
169
|
+
/** The saved loadout's id, or `null` when the event states none. */
|
|
170
|
+
readonly loadoutId: number | null;
|
|
171
|
+
/** The player-given loadout name, or `null` when the event states none. */
|
|
172
|
+
readonly name: string | null;
|
|
173
|
+
/**
|
|
174
|
+
* Each modification the catalogues resolved, in the order the event lists them.
|
|
175
|
+
* Anything the event stated and this leaves out is in {@link importOutcomes}.
|
|
176
|
+
*/
|
|
177
|
+
readonly modifications: readonly FittedPersonalModification[];
|
|
178
|
+
/**
|
|
179
|
+
* Every modifier the suit's modifications carry, ready for `applyPersonalModifiers`.
|
|
180
|
+
*
|
|
181
|
+
* @remarks
|
|
182
|
+
* A modifier here names a stat of whatever the recipe changes. Most name a suit
|
|
183
|
+
* stat; Extra Ammo Capacity names a weapon's `reserveAmmo` and Reduced Tool Battery
|
|
184
|
+
* Consumption names a tool's `toolEnergyDrain`. `applyPersonalModifiers` reads one
|
|
185
|
+
* stat at a time, so pass the base the stat belongs to and the rest are skipped.
|
|
186
|
+
*
|
|
187
|
+
* **Never concatenate this list with a weapon's own.**
|
|
188
|
+
* {@link FittedPersonalWeapon.modifiers} already carries the suit modifiers that act
|
|
189
|
+
* on that weapon, so a joined list multiplies them in twice: the reserve of a weapon
|
|
190
|
+
* behind Extra Ammo Capacity reads 1.5× from either list alone, and 2.25× from both.
|
|
191
|
+
* Use the weapon's list for a weapon stat, and this one for a suit or tool stat.
|
|
192
|
+
*/
|
|
193
|
+
readonly modifiers: readonly PersonalModifier[];
|
|
194
|
+
/** The weapon at each occupied mount, in the order the event lists them. */
|
|
195
|
+
readonly weapons: readonly FittedPersonalWeapon[];
|
|
196
|
+
/**
|
|
197
|
+
* Everything the event stated that the import left out, as
|
|
198
|
+
* `ships/ship-loadout` reports its own import changes.
|
|
199
|
+
*/
|
|
200
|
+
readonly importOutcomes: readonly SuitLoadoutImportOutcome[];
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Import a journal `SuitLoadout`, `SwitchSuitLoadout` or `CreateSuitLoadout` event.
|
|
204
|
+
*
|
|
205
|
+
* @param event - The event object, as the game wrote it.
|
|
206
|
+
* @returns The frozen {@link SuitLoadout}.
|
|
207
|
+
* @remarks
|
|
208
|
+
* A mount name is matched case-insensitively, with surrounding whitespace ignored, and
|
|
209
|
+
* the loadout reports the catalogue's own spelling — so `fitted.mount === 'PrimaryWeapon1'`
|
|
210
|
+
* holds whatever spelling the source used. Weapon and recipe symbols are matched the
|
|
211
|
+
* same way.
|
|
212
|
+
*
|
|
213
|
+
* The suit has to resolve: an unknown `SuitName` is a `TypeError`, because the grade,
|
|
214
|
+
* the mounts and every stat come from it. Everything else the catalogues cannot resolve
|
|
215
|
+
* is left out of the loadout and reported by {@link SuitLoadout.importOutcomes}, so one
|
|
216
|
+
* unknown weapon does not cost a caller the rest of the event.
|
|
217
|
+
*
|
|
218
|
+
* `SuitID`, `SuitModuleID`, `LoadoutID` and `LoadoutName` are kept: they name the items
|
|
219
|
+
* the Commander owns and the loadout slot they sit in, which is what a later
|
|
220
|
+
* `LoadoutEquipModule` event joins to. `event`, `timestamp` and the `_Localised` display
|
|
221
|
+
* text are dropped.
|
|
222
|
+
* @throws {TypeError} If `event` is not shaped like one. `event` must be an object whose
|
|
223
|
+
* `SuitName` is a string naming a catalogued suit; `Modules`, `SuitMods` and `WeaponMods`
|
|
224
|
+
* must be arrays whenever they are present; each module must be an object with a string
|
|
225
|
+
* `SlotName` and `ModuleName`, no two claiming the same mount; and each modification must
|
|
226
|
+
* be a string. Every other field is trusted.
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* import { parseSuitLoadout } from '@elite-dangerous-almanac/core/equipment/suit-loadout';
|
|
230
|
+
*
|
|
231
|
+
* const loadout = parseSuitLoadout({
|
|
232
|
+
* event: 'SwitchSuitLoadout',
|
|
233
|
+
* SuitID: 1700482757598197,
|
|
234
|
+
* SuitName: 'tacticalsuit_class5',
|
|
235
|
+
* SuitMods: ['suit_nightvision', 'suit_increasedammoreserves'],
|
|
236
|
+
* LoadoutID: 4293000007,
|
|
237
|
+
* LoadoutName: 'Double Trouble',
|
|
238
|
+
* Modules: [
|
|
239
|
+
* {
|
|
240
|
+
* SlotName: 'PrimaryWeapon1',
|
|
241
|
+
* SuitModuleID: 1701103603778031,
|
|
242
|
+
* ModuleName: 'wpn_m_launcher_rocket_sauto',
|
|
243
|
+
* Class: 5,
|
|
244
|
+
* WeaponMods: ['weapon_clipsize'],
|
|
245
|
+
* },
|
|
246
|
+
* ],
|
|
247
|
+
* });
|
|
248
|
+
*
|
|
249
|
+
* loadout.suit.name; // -> 'Dominator Suit'
|
|
250
|
+
* loadout.grade; // -> 5
|
|
251
|
+
* loadout.name; // -> 'Double Trouble'
|
|
252
|
+
* loadout.weapons[0]?.weapon.name; // -> 'Karma L-6'
|
|
253
|
+
* loadout.weapons[0]?.metrics.damagePerSecond; // -> 119.2
|
|
254
|
+
* ```
|
|
255
|
+
* @example
|
|
256
|
+
* A stat the game shows on foot is the catalogue's base with the fitted modifiers folded
|
|
257
|
+
* onto it. The suit's Extra Ammo Capacity reaches the weapon that carries the reserve.
|
|
258
|
+
*
|
|
259
|
+
* ```ts
|
|
260
|
+
* import { applyPersonalModifiers } from '@elite-dangerous-almanac/core/equipment/engineering';
|
|
261
|
+
* import { parseSuitLoadout } from '@elite-dangerous-almanac/core/equipment/suit-loadout';
|
|
262
|
+
*
|
|
263
|
+
* const loadout = parseSuitLoadout({
|
|
264
|
+
* SuitName: 'tacticalsuit_class5',
|
|
265
|
+
* SuitMods: ['suit_increasedshieldregen', 'suit_increasedammoreserves'],
|
|
266
|
+
* Modules: [
|
|
267
|
+
* {
|
|
268
|
+
* SlotName: 'PrimaryWeapon1',
|
|
269
|
+
* ModuleName: 'wpn_m_launcher_rocket_sauto',
|
|
270
|
+
* Class: 5,
|
|
271
|
+
* WeaponMods: [],
|
|
272
|
+
* },
|
|
273
|
+
* ],
|
|
274
|
+
* });
|
|
275
|
+
*
|
|
276
|
+
* const fitted = loadout.weapons[0]!;
|
|
277
|
+
* applyPersonalModifiers('shieldRegeneration', loadout.stats.shieldRegeneration, loadout.modifiers);
|
|
278
|
+
* // -> 3.1
|
|
279
|
+
* applyPersonalModifiers('reserveAmmo', fitted.weapon.reserveAmmo, fitted.modifiers); // -> 12
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
declare function parseSuitLoadout(event: SuitLoadoutEvent): SuitLoadout;
|
|
283
|
+
|
|
284
|
+
export { type FittedPersonalModification, type FittedPersonalWeapon, type SuitLoadout, type SuitLoadoutEvent, type SuitLoadoutImportOutcome, type SuitLoadoutModuleEvent, parseSuitLoadout };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{parseSuitLoadout}from"../chunk-36I5QLTL.js"; //# sourceMappingURL=suit-loadout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"O"}
|
package/dist/i18n/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getPersonalModificationDescription,getPersonalModificationName}from"../chunk-SS7HVNP5.js";export{getPersonalToolName}from"../chunk-E2HDF6PJ.js";export{getPersonalWeaponDescription}from"../chunk-7C7NJWCF.js";export{getPreEngineeredVariantName}from"../chunk-T7IQHFQ2.js";export{getLoadoutSlotName,getSlotRestrictionLabel}from"../chunk-ZRG35JSH.js"; export{getPersonalMountName,getSuitDescription,getSuitName}from"../chunk-RA4YJBU5.js";export{getCalculationIssueMessage,getLoadoutEditErrorMessage,getLoadoutIssueMessage,getSlefDiagnosticMessage}from"../chunk-6G6TYW2D.js";export{getExperimentalEffectDescription}from"../chunk-RJ3ZLQRB.js";export{getExperimentalEffectName}from"../chunk-QPT2WJYN.js";export{getMaterialName}from"../chunk-UE22QU7A.js";export{getMicroResourceName}from"../chunk-WZIBBJHA.js";export{getOutfittingFamilyName}from"../chunk-YBE5M27G.js";export{
|
|
1
|
+
export{getModuleName}from"../chunk-URRPEUIK.js";export{getPersonalModificationDescription,getPersonalModificationName}from"../chunk-SS7HVNP5.js";export{getPersonalToolName}from"../chunk-E2HDF6PJ.js";export{getPersonalWeaponDescription}from"../chunk-7C7NJWCF.js";export{getPreEngineeredVariantName}from"../chunk-T7IQHFQ2.js";export{getLoadoutSlotName,getSlotRestrictionLabel}from"../chunk-ZRG35JSH.js"; export{getPersonalMountName,getSuitDescription,getSuitName}from"../chunk-RA4YJBU5.js";export{getCommodityName}from"../chunk-TRGHPX2O.js";export{getCalculationIssueMessage,getLoadoutEditErrorMessage,getLoadoutIssueMessage,getSlefDiagnosticMessage}from"../chunk-6G6TYW2D.js";export{getExperimentalEffectDescription}from"../chunk-RJ3ZLQRB.js";export{getExperimentalEffectName}from"../chunk-QPT2WJYN.js";export{getMaterialName}from"../chunk-UE22QU7A.js";export{getMicroResourceName}from"../chunk-WZIBBJHA.js";export{getOutfittingFamilyName}from"../chunk-YBE5M27G.js";export{getBlueprintName}from"../chunk-UI5RROGI.js"; //# sourceMappingURL=index.js.map
|
package/dist/materials/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getMicroResourceByName,getMicroResourceBySymbol,microResourcesInCategory}from"../chunk-
|
|
1
|
+
export{getMicroResourceByName,getMicroResourceBySymbol,microResourcesInCategory}from"../chunk-RA6SY445.js";export{MaterialGrade,MaterialLine,getMaterialByElementSymbol,getMaterialByName,getMaterialBySymbol,materialsByGrade,materialsInCategory,materialsInLine}from"../chunk-ETREYN5U.js";export{ALL_MATERIALS}from"../chunk-FP2TQJZP.js";export{ENCODED_MATERIALS}from"../chunk-A5TCT2AJ.js";export{MANUFACTURED_MATERIALS}from"../chunk-PF3HZ73R.js";export{RAW_MATERIALS}from"../chunk-GZLD7RTK.js"; export{ALL_MICRO_RESOURCES}from"../chunk-4WC5NHBJ.js";export{DATA_MICRO_RESOURCES}from"../chunk-GVLDFJEY.js";export{ITEM_MICRO_RESOURCES}from"../chunk-WHWFKHV3.js";export{COMPONENT_MICRO_RESOURCES}from"../chunk-HTB52N6S.js";export{CONSUMABLE_MICRO_RESOURCES}from"../chunk-K7L7SMIR.js"; //# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ALL_MICRO_RESOURCES}from"../chunk-
|
|
1
|
+
export{ALL_MICRO_RESOURCES}from"../chunk-4WC5NHBJ.js"; //# sourceMappingURL=micro-resources-all.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getMicroResourceByName,getMicroResourceBySymbol,microResourcesInCategory}from"../chunk-
|
|
1
|
+
export{getMicroResourceByName,getMicroResourceBySymbol,microResourcesInCategory}from"../chunk-RA6SY445.js"; //# sourceMappingURL=micro-resources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{BuildMetrics}from"../chunk-
|
|
1
|
+
export{BuildMetrics}from"../chunk-ZWT5Y3JR.js"; //# sourceMappingURL=build-metrics.js.map
|
package/dist/ships/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{LoadoutEditError,ShipLoadout}from"../chunk-
|
|
1
|
+
export{LoadoutEditError,ShipLoadout}from"../chunk-53EBUFVU.js";export{OUTFITTING_FAMILIES}from"../chunk-M6G3UDTX.js";export{validateLoadout}from"../chunk-3GNYPM6J.js";export{SHIP_MODULE_LIMITS,calculateModuleLimits}from"../chunk-KPETDYQX.js";export{hasFrameShiftDriveJumpStats,hasMassCurveStats,hasPowerDistributorStats,hasPowerGenerationStats,hasShieldRegenerationStats,hasWeaponDamageStats}from"../chunk-JTQVWIGL.js";export{BuildMetrics}from"../chunk-ZWT5Y3JR.js";export{weaponsCapacitorMetrics}from"../chunk-M4FZRDAH.js";export{powerBudget}from"../chunk-GGQMIQPC.js";export{shieldCapacitorMetrics}from"../chunk-XQJERZUS.js";export{cellBankSummary,shieldRecovery}from"../chunk-JMAXSXXQ.js"; export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-C4FUV6GF.js";export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-T4MKUKYS.js";export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-NIURLW2F.js";export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-AAU7OM47.js";export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-C3YZ5KTA.js";export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered}from"../chunk-AUBV6S7V.js";export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-DBJKLXLS.js";export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-OSMBAFRW.js"; export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-6HA2YIKW.js";export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-VTMCSCXV.js";export{calculateCargoCapacity,calculateFuelCapacity,calculatePassengerCapacity,calculateUnladenMass}from"../chunk-C3LLPLLD.js"; export{mobilityCapacitorMetrics}from"../chunk-VEEBJFJ7.js";export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-A4QKXXZD.js"; export{distributorMetrics}from"../chunk-M2TCZKRT.js"; export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-77I24V6B.js";export{SHIP_GUNSIGHTS,getShipGunsight,projectGunsight}from"../chunk-XSN53F7W.js";export{ammunitionCapacity}from"../chunk-AA3K5XUE.js";export{armourMetrics}from"../chunk-Q5ALV3DI.js";export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-F44QX47A.js"; export{computeModifiers,sumMaterials}from"../chunk-U73MBQ45.js"; export{resolveBlueprintForModule}from"../chunk-2J6NNI3Y.js";export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-M4STXLXO.js";export{BLUEPRINTS,getBlueprint,getBlueprintGrade}from"../chunk-AYAKU4YA.js"; export{SLOT_RESTRICTION_LABELS,enumerateSlots,parseSlotName}from"../chunk-RAO35XDF.js"; //# sourceMappingURL=index.js.map
|
package/dist/ships/shields.d.ts
CHANGED
|
@@ -54,7 +54,10 @@ import { DamageResistances, DamageTypeValues, DamageResistanceParams } from './r
|
|
|
54
54
|
* An {@link OutfittingModule} record satisfies this as-is, so a catalogue entry can be
|
|
55
55
|
* passed straight in — the six curve fields and the resistances are exactly what a
|
|
56
56
|
* generator's record carries. `optMultiplier` is what a Reinforced/Thermic blueprint
|
|
57
|
-
* moves
|
|
57
|
+
* moves, and `optMass` what Enhanced Low Power moves. A recipe names those two alone and
|
|
58
|
+
* the four endpoints follow them, so pass the whole moved curve rather than a moved
|
|
59
|
+
* optimum on stock endpoints. `FittedModule.effectiveStats` carries it already.
|
|
60
|
+
* Every field is optional because the type accepts those records; a generator
|
|
58
61
|
* **missing** any of the six curve fields cannot be placed on the curve at all, and
|
|
59
62
|
* raises no shield ({@link shieldMassCurveMultiplier} returns `0`).
|
|
60
63
|
*
|