@elite-dangerous-almanac/core 0.2.10 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/PROVENANCE/astro/SOURCES.md +18 -0
  2. package/PROVENANCE/commodities/SOURCES.md +2 -1
  3. package/PROVENANCE/i18n/SOURCES.md +66 -2
  4. package/PROVENANCE/ships/SOURCES.md +58 -51
  5. package/README.md +7 -5
  6. package/THIRD_PARTY_NOTICES.md +2 -1
  7. package/dist/astro/codex-region-lookup.js +1 -1
  8. package/dist/astro/codex-region.d.ts +5 -1
  9. package/dist/astro/codex-region.js +1 -1
  10. package/dist/astro/index.js +1 -1
  11. package/dist/chunk-25EECUZ2.js +1 -0
  12. package/dist/chunk-25EECUZ2.js.map +1 -0
  13. package/dist/chunk-36I5QLTL.js +1 -0
  14. package/dist/chunk-36I5QLTL.js.map +1 -0
  15. package/dist/{chunk-2TY42PTF.js → chunk-6MQOPQAA.js} +1 -1
  16. package/dist/{chunk-X3MXPE7G.js → chunk-7UF4XRIR.js} +1 -1
  17. package/dist/{chunk-K5JK3XQB.js → chunk-ARG6ESYB.js} +1 -1
  18. package/dist/{chunk-K5JK3XQB.js.map → chunk-ARG6ESYB.js.map} +1 -1
  19. package/dist/{chunk-ADLVPKUV.js → chunk-ATD32GCX.js} +1 -1
  20. package/dist/{chunk-ADLVPKUV.js.map → chunk-ATD32GCX.js.map} +1 -1
  21. package/dist/chunk-BUQLUEQS.js +1 -0
  22. package/dist/chunk-BUQLUEQS.js.map +1 -0
  23. package/dist/{chunk-SFEQXUIA.js → chunk-CCJPWDMA.js} +1 -1
  24. package/dist/{chunk-5VWACBTN.js → chunk-DBJKLXLS.js} +1 -1
  25. package/dist/{chunk-5VWACBTN.js.map → chunk-DBJKLXLS.js.map} +1 -1
  26. package/dist/{chunk-G7WARJ3X.js → chunk-DEY44PHF.js} +1 -1
  27. package/dist/chunk-DEY44PHF.js.map +1 -0
  28. package/dist/chunk-EXHZ4CFB.js +1 -0
  29. package/dist/{chunk-AUBV6S7V.js.map → chunk-EXHZ4CFB.js.map} +1 -1
  30. package/dist/chunk-FRG7MKSJ.js +1 -0
  31. package/dist/{chunk-T7IQHFQ2.js.map → chunk-FRG7MKSJ.js.map} +1 -1
  32. package/dist/chunk-KLC5XT6F.js +1 -0
  33. package/dist/chunk-KLC5XT6F.js.map +1 -0
  34. package/dist/chunk-KR664YI3.js +1 -0
  35. package/dist/{chunk-UI5RROGI.js.map → chunk-KR664YI3.js.map} +1 -1
  36. package/dist/{chunk-Q647OXON.js → chunk-LOWKWUNS.js} +1 -1
  37. package/dist/{chunk-Q647OXON.js.map → chunk-LOWKWUNS.js.map} +1 -1
  38. package/dist/chunk-O4NIJDL4.js +1 -0
  39. package/dist/chunk-O4NIJDL4.js.map +1 -0
  40. package/dist/{chunk-C3YZ5KTA.js → chunk-P6HCQ2YE.js} +1 -1
  41. package/dist/chunk-P6HCQ2YE.js.map +1 -0
  42. package/dist/chunk-WDAYRHXR.js +1 -0
  43. package/dist/{chunk-AYAKU4YA.js.map → chunk-WDAYRHXR.js.map} +1 -1
  44. package/dist/commodities/commodities-all.js +1 -1
  45. package/dist/commodities/commodities-standard.d.ts +1 -1
  46. package/dist/commodities/commodities-standard.js +1 -1
  47. package/dist/commodities/commodities.js +1 -1
  48. package/dist/commodities/index.js +1 -1
  49. package/dist/equipment/index.d.ts +7 -0
  50. package/dist/equipment/index.js +1 -1
  51. package/dist/equipment/suit-loadout.d.ts +284 -0
  52. package/dist/equipment/suit-loadout.js +1 -0
  53. package/dist/equipment/suit-loadout.js.map +1 -0
  54. package/dist/i18n/blueprints.js +1 -1
  55. package/dist/i18n/codex-regions.d.ts +33 -0
  56. package/dist/i18n/codex-regions.js +1 -0
  57. package/dist/i18n/codex-regions.js.map +1 -0
  58. package/dist/i18n/index.d.ts +10 -8
  59. package/dist/i18n/index.js +1 -1
  60. package/dist/i18n/pre-engineered.d.ts +4 -0
  61. package/dist/i18n/pre-engineered.js +1 -1
  62. package/dist/materials/index.js +1 -1
  63. package/dist/materials/micro-resources-all.js +1 -1
  64. package/dist/materials/micro-resources.js +1 -1
  65. package/dist/ships/blueprint-costs.js +1 -1
  66. package/dist/ships/blueprints.d.ts +1 -2
  67. package/dist/ships/blueprints.js +1 -1
  68. package/dist/ships/build-metrics.js +1 -1
  69. package/dist/ships/index.js +1 -1
  70. package/dist/ships/pre-engineered-stats.d.ts +5 -9
  71. package/dist/ships/pre-engineered-stats.js +1 -1
  72. package/dist/ships/pre-engineered.d.ts +12 -6
  73. package/dist/ships/pre-engineered.js +1 -1
  74. package/dist/ships/shields.d.ts +4 -1
  75. package/dist/ships/shields.js +1 -1
  76. package/dist/ships/ship-loadout.d.ts +21 -19
  77. package/dist/ships/ship-loadout.js +1 -1
  78. package/package.json +14 -5
  79. package/dist/chunk-AUBV6S7V.js +0 -1
  80. package/dist/chunk-AYAKU4YA.js +0 -1
  81. package/dist/chunk-C3YZ5KTA.js.map +0 -1
  82. package/dist/chunk-G7WARJ3X.js.map +0 -1
  83. package/dist/chunk-GVNTKCVF.js +0 -1
  84. package/dist/chunk-GVNTKCVF.js.map +0 -1
  85. package/dist/chunk-HIJR7DOC.js +0 -1
  86. package/dist/chunk-HIJR7DOC.js.map +0 -1
  87. package/dist/chunk-T7IQHFQ2.js +0 -1
  88. package/dist/chunk-UI5RROGI.js +0 -1
  89. package/dist/chunk-ZBUTGTZ3.js +0 -1
  90. package/dist/chunk-ZBUTGTZ3.js.map +0 -1
  91. /package/dist/{chunk-2TY42PTF.js.map → chunk-6MQOPQAA.js.map} +0 -0
  92. /package/dist/{chunk-X3MXPE7G.js.map → chunk-7UF4XRIR.js.map} +0 -0
  93. /package/dist/{chunk-SFEQXUIA.js.map → chunk-CCJPWDMA.js.map} +0 -0
@@ -0,0 +1 @@
1
+ import{getShipBySymbol,getShipByName,getShipSlots}from"./chunk-C4FUV6GF.js";import{getLoadoutModifier}from"./chunk-T4MKUKYS.js";import{sourcePurchaseFromLoadout}from"./chunk-NIURLW2F.js";import{weaponMetrics}from"./chunk-AAU7OM47.js";import{isBuiltInHullSymbol,identifyPreEngineeredVariant,unrollableFixedArticle,cloneLoadoutModule,isNonOutfittingSlot,isBuiltInHullModule,matchingKeyIn,ownKeyIn,getPreEngineeredStats,getPreEngineeredModifiers,cloneModuleStats,isFinalGuardianWeaponEngineering,scaleDamageComponents}from"./chunk-P6HCQ2YE.js";import{builtInModuleBySymbol,getBulkheadsForShip}from"./chunk-OSMBAFRW.js";import{getPreEngineeredVariants}from"./chunk-EXHZ4CFB.js";import{shieldMetrics}from"./chunk-DBJKLXLS.js";import{CORE_MODULES}from"./chunk-ZZTDEDXJ.js";import{stockedMountKind}from"./chunk-M6J7KP7G.js";import{getDefaultLoadout}from"./chunk-KY7KSPU6.js";import{getExperimentalEffect}from"./chunk-77I24V6B.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{fieldForLabel,scaleForLabel,labelsForField,capabilityValueForLabel,damageTypeForLabel}from"./chunk-U73MBQ45.js";import{BURST_PATTERN_LABELS,journalRateOfFire,preciseValueFor}from"./chunk-EFQOUATZ.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","int_largebuggybay","int_mkiilargebuggybay"],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(isBuiltInHullSymbol(module.symbol)){return problem("builtInHullModule","the cargo hatch is part of the hull, not an outfitting module")}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 stockedMountRejects(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 parsed=parseSlotName(slot);const stocked=parsed===null?null:stockedMountKind(parsed);const fallback=stocked===null?void 0:defaults.find(candidate=>candidate.slot.toLowerCase()===slot.toLowerCase());const rejected=fallback!==void 0&&(stats===null||stocked==="cargoHatch"||stockedMountRejects(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 parsed=parseSlotName(fallback.slot);const stocked=parsed===null?null:stockedMountKind(parsed);if(stocked===null||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(stocked==="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 carriesMassCurve(stats){return(stats.minMass??stats.maxMass??stats.minMultiplier??stats.maxMultiplier)!==void 0}function maxMassRatio(thrusters,ratio){return thrusters?ratio:Math.max(1,ratio)}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(carriesMassCurve(stats)){const thrusters=stats.slot==="thrusters";const massRatio=modifierRatio(module,stats,"optMass");const minMass=relatedStat(module,stats,"minMass",massRatio);const maxMass=relatedStat(module,stats,"maxMass",maxMassRatio(thrusters,massRatio));if(minMass!==void 0)merged.minMass=minMass;if(maxMass!==void 0)merged.maxMass=maxMass;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(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 effective=effectiveModule(module,stats);const{optMass:optMass,minMass:minMass,maxMass:maxMass,optMultiplier:optMultiplier,minMultiplier:minMultiplier,maxMultiplier:maxMultiplier}=effective??{};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 modifiers=module.Engineering?.Modifiers;const touched=BURST_PATTERN_LABELS.some(label=>getLoadoutModifier(module,label)!==null);if(!touched)return void 0;const stated=(label,field)=>preciseValueFor(modifiers,label)??weapon[field];return journalRateOfFire(stated("BurstInterval","burstInterval"),stated("BurstSize","burstRounds"),stated("BurstRateOfFire","burstRateOfFire"))}var FIRING_RATE_LABELS=["RateOfFire","BurstRateOfFire","BurstSize","BurstInterval","RoundsPerShot","Rounds"];function readsDamageFromPerSecond(module){return getLoadoutModifier(module,"Damage")===null&&FIRING_RATE_LABELS.every(label=>getLoadoutModifier(module,label)===null)}function normalizeEffectiveWeapon(module,weapon){const rate=burstAdjustedRateOfFire(module,weapon);if(rate!==void 0)weapon.rateOfFire=rate;if(readsDamageFromPerSecond(module)){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-BUQLUEQS.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":["getShipBySymbol","getShipByName","getShipSlots","getLoadoutModifier","sourcePurchaseFromLoadout","weaponMetrics","isBuiltInHullSymbol","identifyPreEngineeredVariant","unrollableFixedArticle","cloneLoadoutModule","isNonOutfittingSlot","isBuiltInHullModule","matchingKeyIn","ownKeyIn","getPreEngineeredStats","getPreEngineeredModifiers","cloneModuleStats","isFinalGuardianWeaponEngineering","scaleDamageComponents","builtInModuleBySymbol","getBulkheadsForShip","getPreEngineeredVariants","shieldMetrics","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{RARE_COMMODITIES}from"./chunk-TYRH73MO.js";import{COMMODITIES}from"./chunk-Q647OXON.js";var ALL_COMMODITIES=Object.freeze([...COMMODITIES,...RARE_COMMODITIES]);export{ALL_COMMODITIES};//# sourceMappingURL=chunk-SFEQXUIA.js.map
1
+ import{RARE_COMMODITIES}from"./chunk-TYRH73MO.js";import{COMMODITIES}from"./chunk-LOWKWUNS.js";var ALL_COMMODITIES=Object.freeze([...COMMODITIES,...RARE_COMMODITIES]);export{ALL_COMMODITIES};//# sourceMappingURL=chunk-CCJPWDMA.js.map
@@ -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-5VWACBTN.js.map
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,uIAmLA,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
+ {"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{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{loadoutInternals,fittedThrusterParamsFor,preEngineeredVariantFor,powerConsumerFor,powerAvailable,heatInputResultFor,completeResult,cellBankInputsFor,armourInputFor,weaponStatsFor,weaponsCapacitorInputFor,mobilityInputResultFor,shieldInputResultFor,shieldCapacitorInputResultFor,shieldRecoveryInputResultFor,distributorInputResultFor,incompleteResult}from"./chunk-BUQLUEQS.js";import{weaponsCapacitorMetrics}from"./chunk-M4FZRDAH.js";import{weaponMetrics,sumWeaponMetrics}from"./chunk-AAU7OM47.js";import{powerBudget}from"./chunk-GGQMIQPC.js";import{isNonOutfittingSlot,isBuiltInHullModule,orderBySlotLayout}from"./chunk-P6HCQ2YE.js";import{shieldCapacitorMetrics}from"./chunk-XQJERZUS.js";import{cellBankSummary,shieldRecovery}from"./chunk-JMAXSXXQ.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-ARG6ESYB.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-DEY44PHF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/build-metrics.ts"],"names":["loadoutInternals","fittedThrusterParamsFor","preEngineeredVariantFor","powerConsumerFor","powerAvailable","heatInputResultFor","completeResult","cellBankInputsFor","armourInputFor","weaponStatsFor","weaponsCapacitorInputFor","mobilityInputResultFor","shieldInputResultFor","shieldCapacitorInputResultFor","shieldRecoveryInputResultFor","distributorInputResultFor","incompleteResult","weaponsCapacitorMetrics","weaponMetrics","sumWeaponMetrics","powerBudget","isNonOutfittingSlot","isBuiltInHullModule","orderBySlotLayout","shieldCapacitorMetrics","cellBankSummary","shieldRecovery","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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"}
@@ -0,0 +1 @@
1
+ import{filterByKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var pre_engineered_default=[{symbol:"Hpt_Mining_AbrBlstr_Fixed_Small",name:"Far-Reaching Abrasion Blaster",blueprintSymbol:"AbrasionBlaster_FarReaching",grade:1,acquisition:"mercenary",mercCoinCost:400,modifiers:[{label:"DistributorDraw",method:"multiplicative",value:-.125},{label:"FalloffRange",method:"multiplicative",value:-.58},{label:"MaximumRange",method:"multiplicative",value:.4},{label:"PowerDraw",method:"multiplicative",value:-.125},{label:"ShotSpeed",method:"multiplicative",value:.4},{label:"ThermalLoad",method:"multiplicative",value:-.05}]},{symbol:"Hpt_CausticMissile_Fixed_Medium",name:"High-Yield Enzyme Missile Rack",blueprintSymbol:"EnzymeMissileRack_HighYield",grade:1,acquisition:"mercenary",mercCoinCost:850,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.125},{label:"AmmoMaximum",method:"multiplicative",value:.015625},{label:"Damage",method:"multiplicative",value:.05},{label:"Mass",method:"multiplicative",value:.15},{label:"PowerDraw",method:"multiplicative",value:.05}]},{symbol:"Hpt_Slugshot_Gimbal_Small",name:"Double Screaming Fragment Cannon",blueprintSymbol:"FragmentCannonSmall_DoubleScreaming",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_screening_shell",mercCoinCost:800,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.333333},{label:"AmmoMaximum",method:"multiplicative",value:.066667},{label:"BurstSize",method:"additive",value:1},{label:"Mass",method:"multiplicative",value:.15},{label:"MaximumRange",method:"multiplicative",value:-.025},{label:"PowerDraw",method:"multiplicative",value:.05},{label:"RateOfFire",method:"multiplicative",value:-.615}]},{symbol:"Hpt_Slugshot_Gimbal_Large",name:"Double Screaming Fragment Cannon",blueprintSymbol:"FragmentCannonLarge_DoubleScreaming",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_screening_shell",mercCoinCost:950,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.333333},{label:"AmmoMaximum",method:"multiplicative",value:.066667},{label:"BurstSize",method:"additive",value:1},{label:"Mass",method:"multiplicative",value:.15},{label:"MaximumRange",method:"multiplicative",value:-.025},{label:"PowerDraw",method:"multiplicative",value:.05},{label:"RateOfFire",method:"multiplicative",value:-.5449747}]},{symbol:"Hpt_MiningLaser_Fixed_Small",name:"Long Range Mining Laser",blueprintSymbol:"MiningLaser_LongRange",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_incendiary_rounds",mercCoinCost:450,modifiers:[{label:"Damage",method:"multiplicative",value:-.05},{label:"DistributorDraw",method:"multiplicative",value:-.05},{label:"FalloffRange",method:"multiplicative",value:-.3},{label:"Integrity",method:"multiplicative",value:-.125},{label:"MaximumRange",method:"multiplicative",value:.4},{label:"PowerDraw",method:"multiplicative",value:-.05},{label:"ThermalLoad",method:"multiplicative",value:-.083}]},{symbol:"Hpt_MultiCannon_Fixed_Medium",name:"Rapid Phase Multi-Cannon",blueprintSymbol:"MultiCannon_Rapid",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_phasing_sequence",mercCoinCost:850,modifiers:[{label:"AmmoClipSize",method:"overwrite",value:130},{label:"AmmoMaximum",method:"overwrite",value:2530},{label:"FalloffRange",method:"overwrite",value:315},{label:"Jitter",method:"additive",value:.75},{label:"MaximumRange",method:"multiplicative",value:-.125},{label:"RateOfFire",method:"multiplicative",value:.077}]},{symbol:"Hpt_Railgun_Fixed_Medium",name:"Enduring Feedback Rail Gun",blueprintSymbol:"RailGun_LongShot",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_feedback_cascade_cooled",mercCoinCost:950,modifiers:[{label:"AmmoMaximum",method:"multiplicative",value:.1},{label:"Damage",method:"multiplicative",value:.17375},{label:"FalloffRange",method:"multiplicative",value:.32},{label:"Mass",method:"multiplicative",value:.225},{label:"MaximumRange",method:"multiplicative",value:.1},{label:"PowerDraw",method:"multiplicative",value:.087},{label:"RateOfFire",method:"multiplicative",value:.042},{label:"ReloadTime",method:"multiplicative",value:.062},{label:"ThermalLoad",method:"multiplicative",value:.6}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Drag Seeker Missile Rack",blueprintSymbol:"SeekerMissileRack_Drag",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_drag_munitions",mercCoinCost:800,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.333333},{label:"AmmoMaximum",method:"multiplicative",value:.166667},{label:"DistributorDraw",method:"multiplicative",value:.104167},{label:"Mass",method:"multiplicative",value:.375},{label:"PowerDraw",method:"multiplicative",value:.0625},{label:"RateOfFire",method:"multiplicative",value:.02}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Lightweight Thermal Seeker Missile Rack",blueprintSymbol:"SeekerMissileRack_LightWeightThermal",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_thermal_cascade",mercCoinCost:800,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.166667},{label:"AmmoMaximum",method:"multiplicative",value:.055556},{label:"DistributorDraw",method:"multiplicative",value:-.04},{label:"Integrity",method:"multiplicative",value:-.15},{label:"Mass",method:"multiplicative",value:-.09},{label:"PowerDraw",method:"multiplicative",value:-.02},{label:"RateOfFire",method:"multiplicative",value:.01}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Lockdown Seeker Missile Rack",blueprintSymbol:"SeekerMissileRackMedium_Lockdown",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_fsd_interrupt",mercCoinCost:800,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.166667},{label:"AmmoMaximum",method:"multiplicative",value:.055556},{label:"ArmourPenetration",method:"multiplicative",value:.04},{label:"BurstInterval",method:"multiplicative",value:-.01},{label:"Damage",method:"multiplicative",value:.034286},{label:"Integrity",method:"multiplicative",value:.1},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.075},{label:"ThermalLoad",method:"multiplicative",value:-.01}]},{symbol:"Hpt_BasicMissileRack_Fixed_Large",name:"Lockdown Seeker Missile Rack",blueprintSymbol:"SeekerMissileRackLarge_Lockdown",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_fsd_interrupt",mercCoinCost:900,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.166667},{label:"AmmoMaximum",method:"multiplicative",value:.083333},{label:"ArmourPenetration",method:"multiplicative",value:.04},{label:"BurstInterval",method:"multiplicative",value:-.01},{label:"Damage",method:"multiplicative",value:.034286},{label:"Integrity",method:"multiplicative",value:.1},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.075},{label:"ThermalLoad",method:"multiplicative",value:-.01}]},{symbol:"Hpt_BeamLaser_Fixed_Huge",name:"Overloaded Beam laser",blueprintSymbol:"BeamLaser_Overloaded",grade:1,acquisition:"mercenary",mercCoinCost:950,modifiers:[{label:"Damage",method:"multiplicative",value:.1},{label:"DistributorDraw",method:"multiplicative",value:.25},{label:"Mass",method:"multiplicative",value:.5},{label:"PowerDraw",method:"multiplicative",value:.125},{label:"ThermalLoad",method:"multiplicative",value:.095}]},{symbol:"Hpt_PulseLaserBurst_Gimbal_Medium",name:"Regenerative Burst Laser",blueprintSymbol:"BurstLaser_Regenerative",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_regeneration_sequence",mercCoinCost:750,modifiers:[{label:"Damage",method:"multiplicative",value:.04},{label:"DistributorDraw",method:"multiplicative",value:.138},{label:"FalloffRange",method:"multiplicative",value:-.472},{label:"MaximumRange",method:"multiplicative",value:.1},{label:"PowerDraw",method:"multiplicative",value:.05},{label:"RateOfFire",method:"multiplicative",value:.02}]},{symbol:"Hpt_Cannon_Fixed_Huge",name:"Force Impact Cannon",blueprintSymbol:"Cannon_ForceImpact",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_force_shell",mercCoinCost:850,damageDistribution:{kinetic:.5,explosive:.5},modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.167},{label:"AmmoMaximum",method:"multiplicative",value:.058},{label:"Damage",method:"multiplicative",value:-.35},{label:"DistributorDraw",method:"multiplicative",value:.1},{label:"Mass",method:"multiplicative",value:.25},{label:"PowerDraw",method:"multiplicative",value:.15},{label:"RateOfFire",method:"multiplicative",value:-.143}]},{symbol:"Hpt_BasicMissileRack_Fixed_Large",name:"Exposing Missiles",blueprintSymbol:"SeekerMissileRackLarge_ExposingMissiles",grade:1,acquisition:"mercenary",experimentalEffectSymbol:"special_drag_munitions",mercCoinCost:800,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.166667},{label:"AmmoMaximum",method:"multiplicative",value:.055556},{label:"Damage",method:"multiplicative",value:-.04},{label:"Mass",method:"multiplicative",value:.35},{label:"PowerDraw",method:"multiplicative",value:.125},{label:"RateOfFire",method:"multiplicative",value:.036},{label:"ReloadTime",method:"multiplicative",value:-.05},{label:"ThermalLoad",method:"multiplicative",value:1.04}]},{symbol:"Int_CargoRack_Size5_Class1",name:"Extended Cargo Rack",blueprintSymbol:"CargoRackS5C1_Extended",grade:1,acquisition:"mercenary",mercCoinCost:550,modifiers:[{label:"CargoCapacity",method:"multiplicative",value:.09375}]},{symbol:"Int_CargoRack_Size6_Class1",name:"Extended Cargo Rack",blueprintSymbol:"CargoRackS6C1_Extended",grade:1,acquisition:"mercenary",mercCoinCost:550,modifiers:[{label:"CargoCapacity",method:"multiplicative",value:.09375}]},{symbol:"Int_DetailedSurfaceScanner_Tiny",name:"Long Range Detailed Surface Scanner",blueprintSymbol:"DetailedSurfaceScanner_LongRange",grade:1,acquisition:"mercenary",mercCoinCost:350,modifiers:[{label:"ProbeRadius",method:"multiplicative",value:.1}]},{symbol:"Int_ModuleReinforcement_Size5_Class2",name:"Heavy Duty Module Reinforcement Package",blueprintSymbol:"ModuleReinforcement_HeavyDuty",grade:1,acquisition:"mercenary",mercCoinCost:450,modifiers:[{label:"DamageProtection",method:"multiplicative",value:.025},{label:"Integrity",method:"multiplicative",value:.025},{label:"Mass",method:"multiplicative",value:.25}]},{symbol:"Int_PowerDistributor_Size3_Class2",name:"Support Focused Power Distributor",blueprintSymbol:"PowerDistributorS3C2_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:300,modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.045},{label:"EnginesRecharge",method:"multiplicative",value:.04},{label:"SystemsCapacity",method:"multiplicative",value:.045},{label:"SystemsRecharge",method:"multiplicative",value:.04},{label:"WeaponsCapacity",method:"multiplicative",value:-.0625},{label:"WeaponsRecharge",method:"multiplicative",value:-.05}]},{symbol:"Int_PowerDistributor_Size3_Class5",name:"Support Focused Power Distributor",blueprintSymbol:"PowerDistributorS3C5_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:350,modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.045},{label:"EnginesRecharge",method:"multiplicative",value:.04},{label:"SystemsCapacity",method:"multiplicative",value:.045},{label:"SystemsRecharge",method:"multiplicative",value:.04},{label:"WeaponsCapacity",method:"multiplicative",value:-.0625},{label:"WeaponsRecharge",method:"multiplicative",value:-.05}]},{symbol:"Int_PowerDistributor_Size4_Class2",name:"Support Focused Power Distributor",blueprintSymbol:"PowerDistributorS4C2_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:400,modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.045},{label:"EnginesRecharge",method:"multiplicative",value:.04},{label:"SystemsCapacity",method:"multiplicative",value:.045},{label:"SystemsRecharge",method:"multiplicative",value:.04},{label:"WeaponsCapacity",method:"multiplicative",value:-.0625},{label:"WeaponsRecharge",method:"multiplicative",value:-.05}]},{symbol:"Int_PowerDistributor_Size4_Class5",name:"Support Focused Power Distributor",blueprintSymbol:"PowerDistributorS4C5_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:450,modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.045},{label:"EnginesRecharge",method:"multiplicative",value:.04},{label:"SystemsCapacity",method:"multiplicative",value:.045},{label:"SystemsRecharge",method:"multiplicative",value:.04},{label:"WeaponsCapacity",method:"multiplicative",value:-.0625},{label:"WeaponsRecharge",method:"multiplicative",value:-.05}]},{symbol:"Int_PowerDistributor_Size5_Class5",name:"Balanced Power Distributor",blueprintSymbol:"PowerDistributor_Balanced",grade:1,acquisition:"mercenary",mercCoinCost:500,modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.021},{label:"EnginesRecharge",method:"multiplicative",value:.023},{label:"Integrity",method:"multiplicative",value:-.0125},{label:"Mass",method:"multiplicative",value:.025},{label:"PowerDraw",method:"multiplicative",value:-.01},{label:"SystemsCapacity",method:"multiplicative",value:.021},{label:"SystemsRecharge",method:"multiplicative",value:.023},{label:"WeaponsCapacity",method:"multiplicative",value:.021},{label:"WeaponsRecharge",method:"multiplicative",value:.023}]},{symbol:"Int_PowerDistributor_Size6_Class5",name:"Support Focused Power Distributor",blueprintSymbol:"PowerDistributorS6C5_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:550,modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.045},{label:"EnginesRecharge",method:"multiplicative",value:.04},{label:"SystemsCapacity",method:"multiplicative",value:.045},{label:"SystemsRecharge",method:"multiplicative",value:.04},{label:"WeaponsCapacity",method:"multiplicative",value:-.0625},{label:"WeaponsRecharge",method:"multiplicative",value:-.05}]},{symbol:"Hpt_Mining_AbrBlstr_Fixed_Small",name:"Abrasion Blaster",blueprintSymbol:"Weapon_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"DistributorDraw",method:"multiplicative",value:-.5},{label:"FalloffRange",method:"multiplicative",value:4},{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaximumRange",method:"multiplicative",value:4},{label:"PowerDraw",method:"multiplicative",value:-.5},{label:"ThermalLoad",method:"multiplicative",value:-.5}]},{symbol:"Hpt_CausticMissile_Fixed_Medium",name:"Enzyme Missile Rack",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.75},{label:"AmmoMaximum",method:"multiplicative",value:.25},{label:"Damage",method:"multiplicative",value:.5},{label:"Mass",method:"multiplicative",value:.6},{label:"PowerDraw",method:"multiplicative",value:.2}]},{symbol:"Hpt_Slugshot_Gimbal_Small",name:"Fragment Cannon",blueprintSymbol:"Weapon_DoubleShot",grade:5,acquisition:"communityGoal",experimentalEffectSymbol:"special_screening_shell",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1.6667},{label:"AmmoMaximum",method:"multiplicative",value:.67776},{label:"BurstInterval",method:"multiplicative",value:-.06},{label:"BurstSize",method:"overwrite",value:2},{label:"Mass",method:"multiplicative",value:.6},{label:"MaximumRange",method:"multiplicative",value:-.1},{label:"PowerDraw",method:"multiplicative",value:.2}]},{symbol:"Hpt_Slugshot_Gimbal_Large",name:"Fragment Cannon",blueprintSymbol:"Weapon_DoubleShot",grade:5,acquisition:"communityGoal",experimentalEffectSymbol:"special_screening_shell",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1.6667},{label:"AmmoMaximum",method:"multiplicative",value:.67776},{label:"BurstInterval",method:"multiplicative",value:-.06},{label:"BurstSize",method:"overwrite",value:2},{label:"Mass",method:"multiplicative",value:.6},{label:"MaximumRange",method:"multiplicative",value:-.1},{label:"PowerDraw",method:"multiplicative",value:.2}]},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Medium",name:"Guardian Shard Cannon",blueprintSymbol:"Weapon_LongRange",grade:5,acquisition:"communityGoal",engineeringLocked:true,modifiers:[{label:"ArmourPenetration",method:"multiplicative",value:1.02},{label:"DistributorDraw",method:"multiplicative",value:5.05},{label:"Jitter",method:"additive",value:-3.5},{label:"Mass",method:"multiplicative",value:.5},{label:"MaximumRange",method:"multiplicative",value:4},{label:"PowerDraw",method:"multiplicative",value:1.3},{label:"ShotSpeed",method:"overwrite",value:1258.89},{label:"ThermalLoad",method:"multiplicative",value:15.5}]},{symbol:"Hpt_MultiCannon_Fixed_Medium",name:"Multi-Cannon",blueprintSymbol:"Weapon_RapidFire",grade:1,acquisition:"communityGoal",experimentalEffectSymbol:"special_phasing_sequence",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:3},{label:"AmmoMaximum",method:"overwrite",value:6400},{label:"BurstInterval",method:"overwrite",value:.1},{label:"FalloffRange",method:"multiplicative",value:-.1},{label:"Jitter",method:"additive",value:3},{label:"MaximumRange",method:"multiplicative",value:-.5},{label:"RoundsPerShot",method:"additive",value:2}]},{symbol:"Hpt_Railgun_Fixed_Medium",name:"Rail Gun",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimentalEffectSymbol:"special_feedback_cascade_cooled",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.61145},{label:"FalloffRange",method:"multiplicative",value:5},{label:"Mass",method:"multiplicative",value:.9},{label:"MaximumRange",method:"multiplicative",value:1},{label:"PowerDraw",method:"multiplicative",value:.65},{label:"ReloadTime",method:"multiplicative",value:.25}]},{symbol:"Hpt_Railgun_Fixed_Medium_Burst",name:"Imperial Hammer Rail Gun",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimentalEffectSymbol:"special_super_penetrator",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.2635},{label:"Damage",method:"multiplicative",value:-.2},{label:"Mass",method:"multiplicative",value:.7},{label:"PowerDraw",method:"multiplicative",value:.25}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Seeker Missile Rack",blueprintSymbol:"Weapon_HighCapacity",grade:1,acquisition:"communityGoal",experimentalEffectSymbol:"special_drag_munitions",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:2},{label:"AmmoMaximum",method:"multiplicative",value:2},{label:"BurstInterval",method:"multiplicative",value:-.2},{label:"DistributorDraw",method:"overwrite",value:.34},{label:"Mass",method:"multiplicative",value:1.5},{label:"PowerDraw",method:"multiplicative",value:.25}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Seeker Missile Rack",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimentalEffectSymbol:"special_fsd_interrupt",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"ArmourPenetration",method:"multiplicative",value:.4},{label:"BurstInterval",method:"multiplicative",value:-.1},{label:"Damage",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:1},{label:"Mass",method:"multiplicative",value:1.2},{label:"PowerDraw",method:"multiplicative",value:.3},{label:"ThermalLoad",method:"multiplicative",value:-.1}]},{symbol:"Hpt_BasicMissileRack_Fixed_Large",name:"Seeker Missile Rack",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimentalEffectSymbol:"special_fsd_interrupt",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"ArmourPenetration",method:"multiplicative",value:.4},{label:"BurstInterval",method:"multiplicative",value:-.1},{label:"Damage",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:1},{label:"Mass",method:"multiplicative",value:1.2},{label:"PowerDraw",method:"multiplicative",value:.3},{label:"ThermalLoad",method:"multiplicative",value:-.1}]},{symbol:"Hpt_ElectronicCountermeasure_Tiny",name:"Electronic Countermeasure",blueprintSymbol:"Misc_LightWeight",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:1},{label:"Mass",method:"multiplicative",value:-.85},{label:"PowerDraw",method:"multiplicative",value:1}]},{symbol:"Hpt_CrimeScanner_Size0_Class5",name:"Kill Warrant Scanner",blueprintSymbol:"Sensor_FastScan",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaxAngle",method:"multiplicative",value:-.3},{label:"PowerDraw",method:"multiplicative",value:.5},{label:"ScannerRange",method:"multiplicative",value:.65},{label:"ScannerTimeToScan",method:"multiplicative",value:-.8}]},{symbol:"Hpt_CrimeScanner_Size0_Class3",name:"Kill Warrant Scanner",blueprintSymbol:"Sensor_FastScan",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaxAngle",method:"multiplicative",value:-.3},{label:"PowerDraw",method:"multiplicative",value:.5},{label:"ScannerRange",method:"multiplicative",value:.65},{label:"ScannerTimeToScan",method:"multiplicative",value:-.8}]},{symbol:"Hpt_PlasmaPointDefence_Turret_Tiny",name:"Point Defence",blueprintSymbol:"Misc_LightWeight",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:-.5},{label:"Mass",method:"multiplicative",value:-.85},{label:"MaximumRange",method:"multiplicative",value:1},{label:"ThermalLoad",method:"multiplicative",value:.05}]},{symbol:"Int_PowerDistributor_Size3_Class5",name:"Power Distributor",blueprintSymbol:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size3_Class2",name:"Power Distributor",blueprintSymbol:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size4_Class5",name:"Power Distributor",blueprintSymbol:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size4_Class2",name:"Power Distributor",blueprintSymbol:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size6_Class5",name:"Power Distributor",blueprintSymbol:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_Powerplant_Size3_Class5",name:"Power Plant",blueprintSymbol:"PowerPlant_Armoured",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.13},{label:"Integrity",method:"multiplicative",value:.95},{label:"Mass",method:"multiplicative",value:.2},{label:"PowerCapacity",method:"multiplicative",value:.52}]},{symbol:"Int_Powerplant_Size3_Class5",name:"Power Plant",blueprintSymbol:"PowerPlant_Boosted",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:-.3},{label:"PowerCapacity",method:"multiplicative",value:.6}]},{symbol:"Int_Powerplant_Size4_Class5",name:"Power Plant",blueprintSymbol:"PowerPlant_Boosted",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:-.3},{label:"PowerCapacity",method:"multiplicative",value:.6}]},{symbol:"Int_Powerplant_Size5_Class5",name:"Power Plant",blueprintSymbol:"PowerPlant_Boosted",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.35},{label:"Integrity",method:"overwrite",value:74},{label:"PowerCapacity",method:"multiplicative",value:.6}]},{symbol:"Int_Hyperdrive_Size3_Class5",name:"Frame Shift Drive",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Size4_Class5",name:"Frame Shift Drive",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Size6_Class5",name:"Frame Shift Drive",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_CargoRack_Size5_Class1",name:"Cargo Rack",blueprintSymbol:"CargoRack_IncreasedCapacity",grade:5,acquisition:"communityGoal",modifiers:[{label:"CargoCapacity",method:"multiplicative",value:.34375}]},{symbol:"Int_CargoRack_Size6_Class1",name:"Cargo Rack",blueprintSymbol:"CargoRack_IncreasedCapacity",grade:5,acquisition:"communityGoal",modifiers:[{label:"CargoCapacity",method:"multiplicative",value:.34375}]},{symbol:"Int_ShieldGenerator_Size3_Class5",name:"Shield Generator",blueprintSymbol:"ShieldGenerator_Kinetic",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:.2},{label:"KineticResistance",method:"additive",value:.18},{label:"PowerDraw",method:"multiplicative",value:.4},{label:"ThermicResistance",method:"additive",value:.42}]},{symbol:"Hpt_ATDumbfireMissile_Fixed_Medium",name:"Sirius AX Missile Rack",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.3},{label:"Damage",method:"multiplicative",value:-.03},{label:"DistributorDraw",method:"multiplicative",value:-.2},{label:"Jitter",method:"additive",value:.5},{label:"Mass",method:"multiplicative",value:.7},{label:"PowerDraw",method:"multiplicative",value:.2},{label:"ReloadTime",method:"multiplicative",value:-.45}]},{symbol:"Hpt_ATDumbfireMissile_Fixed_Large",name:"Sirius AX Missile Rack",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.3},{label:"Damage",method:"multiplicative",value:-.03},{label:"DistributorDraw",method:"multiplicative",value:-.2},{label:"Jitter",method:"additive",value:.5},{label:"Mass",method:"multiplicative",value:.7},{label:"PowerDraw",method:"multiplicative",value:.2},{label:"ReloadTime",method:"multiplicative",value:-.45}]},{symbol:"Hpt_ATMultiCannon_Gimbal_Medium",name:"Azimuth Enhanced AX Multi-Cannon",blueprintSymbol:"Weapon_Overcharged",grade:5,acquisition:"techBroker",experimentalEffectSymbol:"special_auto_loader",engineeringLocked:true,modifiers:[{label:"Damage",method:"multiplicative",value:.1},{label:"PowerDraw",method:"multiplicative",value:.75},{label:"ThermalLoad",method:"multiplicative",value:3}]},{symbol:"Hpt_ATMultiCannon_Gimbal_Large",name:"Azimuth Enhanced AX Multi-Cannon",blueprintSymbol:"Weapon_Overcharged",grade:5,acquisition:"techBroker",experimentalEffectSymbol:"special_auto_loader",engineeringLocked:true,modifiers:[{label:"Damage",method:"multiplicative",value:.1},{label:"PowerDraw",method:"multiplicative",value:.75},{label:"ThermalLoad",method:"multiplicative",value:3}]},{symbol:"Hpt_Guardian_GaussCannon_Fixed_Small",name:"Modified Guardian Gauss Cannon",blueprintSymbol:"Weapon_RapidFire",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:3},{label:"AmmoMaximum",method:"multiplicative",value:4},{label:"BurstInterval",method:"multiplicative",value:-.38237},{label:"BurstRateOfFire",method:"overwrite",value:10},{label:"BurstSize",method:"overwrite",value:4},{label:"Damage",method:"multiplicative",value:-.75214},{label:"DistributorDraw",method:"multiplicative",value:-.75},{label:"FalloffRange",method:"multiplicative",value:-.2},{label:"ThermalLoad",method:"multiplicative",value:-.75}]},{symbol:"Hpt_Guardian_GaussCannon_Fixed_Medium",name:"Modified Guardian Gauss Cannon",blueprintSymbol:"Weapon_RapidFire",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:3},{label:"AmmoMaximum",method:"multiplicative",value:4},{label:"BurstInterval",method:"multiplicative",value:-.38237},{label:"BurstRateOfFire",method:"overwrite",value:10},{label:"BurstSize",method:"overwrite",value:4},{label:"Damage",method:"multiplicative",value:-.75214},{label:"DistributorDraw",method:"multiplicative",value:-.75},{label:"FalloffRange",method:"multiplicative",value:-.2},{label:"ThermalLoad",method:"multiplicative",value:-.75}]},{symbol:"Hpt_Guardian_PlasmaLauncher_Fixed_Small",name:"Modified Guardian Plasma Charger",blueprintSymbol:"Weapon_Overcharged",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"overwrite",value:20},{label:"ArmourPenetration",method:"multiplicative",value:.375},{label:"Damage",method:"multiplicative",value:.66},{label:"PowerDraw",method:"multiplicative",value:.3239},{label:"ShotSpeed",method:"multiplicative",value:4},{label:"ThermalLoad",method:"multiplicative",value:.5}]},{symbol:"Hpt_Guardian_PlasmaLauncher_Fixed_Medium",name:"Modified Guardian Plasma Charger",blueprintSymbol:"Weapon_Overcharged",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"overwrite",value:20},{label:"ArmourPenetration",method:"multiplicative",value:.375},{label:"Damage",method:"multiplicative",value:.66},{label:"PowerDraw",method:"multiplicative",value:.3239},{label:"ShotSpeed",method:"multiplicative",value:4},{label:"ThermalLoad",method:"multiplicative",value:.5}]},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Small",name:"Modified Guardian Shard Cannon",blueprintSymbol:"Weapon_LongRange",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"ArmourPenetration",method:"multiplicative",value:1.02},{label:"DistributorDraw",method:"multiplicative",value:4.2769},{label:"FalloffRange",method:"overwrite",value:1500},{label:"Jitter",method:"additive",value:-3.5},{label:"Mass",method:"multiplicative",value:.5},{label:"MaximumRange",method:"overwrite",value:3e3},{label:"PowerDraw",method:"multiplicative",value:1.3},{label:"ShotSpeed",method:"overwrite",value:3568.6},{label:"ThermalLoad",method:"multiplicative",value:15.5}]},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Medium",name:"Modified Guardian Shard Cannon",blueprintSymbol:"Weapon_LongRange",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"ArmourPenetration",method:"multiplicative",value:1.02},{label:"DistributorDraw",method:"overwrite",value:3.43},{label:"FalloffRange",method:"overwrite",value:1500},{label:"Jitter",method:"additive",value:-3.5},{label:"Mass",method:"multiplicative",value:.5},{label:"MaximumRange",method:"overwrite",value:3e3},{label:"PowerDraw",method:"multiplicative",value:1.3},{label:"ShotSpeed",method:"overwrite",value:6299.209},{label:"ThermalLoad",method:"multiplicative",value:15.5}]},{symbol:"Hpt_MiningLaser_Fixed_Small",name:"Mining Laser",blueprintSymbol:"Weapon_LongRange",grade:5,acquisition:"techBroker",experimentalEffectSymbol:"special_incendiary_rounds",modifiers:[{label:"Damage",method:"multiplicative",value:-.05},{label:"DistributorDraw",method:"multiplicative",value:-.5},{label:"FalloffRange",method:"multiplicative",value:7.3333},{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaximumRange",method:"multiplicative",value:4},{label:"PowerDraw",method:"multiplicative",value:-.5},{label:"ThermalLoad",method:"multiplicative",value:-.83}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Seeker Missile Rack V1",blueprintSymbol:"Weapon_HighCapacity",grade:5,acquisition:"techBroker",experimentalEffectSymbol:"special_thermal_cascade",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.1},{label:"DistributorDraw",method:"multiplicative",value:-.4},{label:"Integrity",method:"multiplicative",value:-.6},{label:"Mass",method:"multiplicative",value:-.9},{label:"PowerDraw",method:"multiplicative",value:-.2}]},{symbol:"Hpt_HeatSinkLauncher_Turret_Tiny",name:"Sirius Heat Sink Launcher",blueprintSymbol:"Misc_HeatSinkCapacity",grade:1,acquisition:"techBroker",modifiers:[{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"ReloadTime",method:"multiplicative",value:.75}]},{symbol:"Int_Hyperdrive_Size5_Class5",name:"Frame Shift Drive",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size2_Class5",name:"Frame Shift Drive (SCO) V1",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size3_Class5",name:"Frame Shift Drive (SCO) V1",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size4_Class5",name:"Frame Shift Drive (SCO) V1",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size5_Class5",name:"Frame Shift Drive (SCO) V1",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size6_Class5",name:"Frame Shift Drive (SCO) V1",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size7_Class5",name:"Frame Shift Drive (SCO) V1",blueprintSymbol:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_DetailedSurfaceScanner_Tiny",name:"Detailed Surface Scanner V1",blueprintSymbol:"Sensor_Expanded",grade:5,acquisition:"techBroker",modifiers:[{label:"DSS_PatchRadius",method:"multiplicative",value:1}]},{symbol:"Hpt_FlakMortar_Turret_Medium",name:"Festive Green Remote Release Flak Launcher",blueprintSymbol:"Decorative_Green",grade:5,acquisition:"eventReward",modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},{symbol:"Hpt_FlakMortar_Turret_Medium",name:"Festive Red Remote Release Flak Launcher",blueprintSymbol:"Decorative_Red",grade:5,acquisition:"eventReward",modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},{symbol:"Hpt_FlakMortar_Turret_Medium",name:"Festive Yellow Remote Release Flak Launcher",blueprintSymbol:"Decorative_Yellow",grade:5,acquisition:"eventReward",modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]}];var PRE_ENGINEERED_MODULES=deepFreeze(pre_engineered_default);function getPreEngineeredVariants(symbol){return filterByKey(PRE_ENGINEERED_MODULES,"symbol",symbol,"getPreEngineeredVariants: symbol")}function isPreEngineered(symbol){requireStringIfPresent(symbol,"isPreEngineered: symbol");return getPreEngineeredVariants(symbol).length>0}export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered};//# sourceMappingURL=chunk-EXHZ4CFB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ships/pre-engineered.ts"],"names":["filterByKey","requireStringIfPresent","deepFreeze","pre_engineered_default","symbol","PRE_ENGINEERED_MODULES","getPreEngineeredVariants","isPreEngineered","length"],"mappings":"O,y96BAuKO,IAAMK,uBAA0DH,WACnEC,wBA4BG,SAASG,yBAAyBF,QACrC,OAAOJ,YACHK,uBACA,SACAD,OACA,mCAER,CAkBO,SAASG,gBAAgBH,QAC5BH,uBAAuBG,OAAQ,2BAC/B,OAAOE,yBAAyBF,QAAQI,OAAS,CACrD,QAAAH,uBAAAC,yBAAAC"}
1
+ {"version":3,"sources":["../src/ships/pre-engineered.ts"],"names":["filterByKey","requireStringIfPresent","deepFreeze","pre_engineered_default","symbol","PRE_ENGINEERED_MODULES","getPreEngineeredVariants","isPreEngineered","length"],"mappings":"O,wqtCAwKO,IAAMK,uBAA0DH,WACnEC,wBA4BG,SAASG,yBAAyBF,QACrC,OAAOJ,YACHK,uBACA,SACAD,OACA,mCAER,CAkBO,SAASG,gBAAgBH,QAC5BH,uBAAuBG,OAAQ,2BAC/B,OAAOE,yBAAyBF,QAAQI,OAAS,CACrD,QAAAH,uBAAAC,yBAAAC"}
@@ -0,0 +1 @@
1
+ import{getLocalizedName,createDeduplicatedLocalizedNameIndex}from"./chunk-RVIYOHYF.js";import{requireObject,requireString,requireStringIfPresent}from"./chunk-PKWVG2JY.js";var pre_engineered_variant_names_default={nameKeys:{"Hpt_Mining_AbrBlstr_Fixed_Small|AbrasionBlaster_FarReaching||mercenary":"Far-Reaching Abrasion Blaster","Hpt_CausticMissile_Fixed_Medium|EnzymeMissileRack_HighYield||mercenary":"High-Yield Enzyme Missile Rack","Hpt_Slugshot_Gimbal_Small|FragmentCannonSmall_DoubleScreaming|special_screening_shell|mercenary":"Double Screaming Fragment Cannon","Hpt_Slugshot_Gimbal_Large|FragmentCannonLarge_DoubleScreaming|special_screening_shell|mercenary":"Double Screaming Fragment Cannon","Hpt_MiningLaser_Fixed_Small|MiningLaser_LongRange|special_incendiary_rounds|mercenary":"Long Range Mining Laser","Hpt_MultiCannon_Fixed_Medium|MultiCannon_Rapid|special_phasing_sequence|mercenary":"Rapid Phase Multi-Cannon","Hpt_Railgun_Fixed_Medium|RailGun_LongShot|special_feedback_cascade_cooled|mercenary":"Enduring Feedback Rail Gun","Hpt_BasicMissileRack_Fixed_Medium|SeekerMissileRack_Drag|special_drag_munitions|mercenary":"Drag Seeker Missile Rack","Hpt_BasicMissileRack_Fixed_Medium|SeekerMissileRack_LightWeightThermal|special_thermal_cascade|mercenary":"Lightweight Thermal Seeker Missile Rack","Hpt_BasicMissileRack_Fixed_Medium|SeekerMissileRackMedium_Lockdown|special_fsd_interrupt|mercenary":"Lockdown Seeker Missile Rack","Hpt_BasicMissileRack_Fixed_Large|SeekerMissileRackLarge_Lockdown|special_fsd_interrupt|mercenary":"Lockdown Seeker Missile Rack","Hpt_BeamLaser_Fixed_Huge|BeamLaser_Overloaded||mercenary":"Overloaded Beam laser","Hpt_PulseLaserBurst_Gimbal_Medium|BurstLaser_Regenerative|special_regeneration_sequence|mercenary":"Regenerative Burst Laser","Hpt_Cannon_Fixed_Huge|Cannon_ForceImpact|special_force_shell|mercenary":"Force Impact Cannon","Hpt_BasicMissileRack_Fixed_Large|SeekerMissileRackLarge_ExposingMissiles|special_drag_munitions|mercenary":"Exposing Missiles","Int_CargoRack_Size5_Class1|CargoRackS5C1_Extended||mercenary":"Extended Cargo Rack","Int_CargoRack_Size6_Class1|CargoRackS6C1_Extended||mercenary":"Extended Cargo Rack","Int_DetailedSurfaceScanner_Tiny|DetailedSurfaceScanner_LongRange||mercenary":"Long Range Detailed Surface Scanner","Int_ModuleReinforcement_Size5_Class2|ModuleReinforcement_HeavyDuty||mercenary":"Heavy Duty Module Reinforcement Package","Int_PowerDistributor_Size3_Class2|PowerDistributorS3C2_SupportFocused||mercenary":"Support Focused Power Distributor","Int_PowerDistributor_Size3_Class5|PowerDistributorS3C5_SupportFocused||mercenary":"Support Focused Power Distributor","Int_PowerDistributor_Size4_Class2|PowerDistributorS4C2_SupportFocused||mercenary":"Support Focused Power Distributor","Int_PowerDistributor_Size4_Class5|PowerDistributorS4C5_SupportFocused||mercenary":"Support Focused Power Distributor","Int_PowerDistributor_Size5_Class5|PowerDistributor_Balanced||mercenary":"Balanced Power Distributor","Int_PowerDistributor_Size6_Class5|PowerDistributorS6C5_SupportFocused||mercenary":"Support Focused Power Distributor","Hpt_Mining_AbrBlstr_Fixed_Small|Weapon_LongRange||communityGoal":"Abrasion Blaster","Hpt_CausticMissile_Fixed_Medium|Weapon_HighCapacity||communityGoal":"Enzyme Missile Rack","Hpt_Slugshot_Gimbal_Small|Weapon_DoubleShot|special_screening_shell|communityGoal":"Fragment Cannon","Hpt_Slugshot_Gimbal_Large|Weapon_DoubleShot|special_screening_shell|communityGoal":"Fragment Cannon","Hpt_Guardian_ShardCannon_Fixed_Medium|Weapon_LongRange||communityGoal":"Guardian Shard Cannon","Hpt_MultiCannon_Fixed_Medium|Weapon_RapidFire|special_phasing_sequence|communityGoal":"Multi-Cannon","Hpt_Railgun_Fixed_Medium|Weapon_HighCapacity|special_feedback_cascade_cooled|communityGoal":"Rail Gun","Hpt_Railgun_Fixed_Medium_Burst|Weapon_HighCapacity|special_super_penetrator|communityGoal":"Imperial Hammer Rail Gun","Hpt_BasicMissileRack_Fixed_Medium|Weapon_HighCapacity|special_drag_munitions|communityGoal":"Seeker Missile Rack","Hpt_BasicMissileRack_Fixed_Medium|Weapon_HighCapacity|special_fsd_interrupt|communityGoal":"Seeker Missile Rack","Hpt_BasicMissileRack_Fixed_Large|Weapon_HighCapacity|special_fsd_interrupt|communityGoal":"Seeker Missile Rack","Hpt_ElectronicCountermeasure_Tiny|Misc_LightWeight||communityGoal":"Electronic Countermeasure","Hpt_CrimeScanner_Size0_Class5|Sensor_FastScan||communityGoal":"Kill Warrant Scanner","Hpt_CrimeScanner_Size0_Class3|Sensor_FastScan||communityGoal":"Kill Warrant Scanner","Hpt_PlasmaPointDefence_Turret_Tiny|Misc_LightWeight||communityGoal":"Point Defence","Int_PowerDistributor_Size3_Class5|PowerDistributor_PrioritySystems||communityGoal":"Power Distributor","Int_PowerDistributor_Size3_Class2|PowerDistributor_PrioritySystems||communityGoal":"Power Distributor","Int_PowerDistributor_Size4_Class5|PowerDistributor_PrioritySystems||communityGoal":"Power Distributor","Int_PowerDistributor_Size4_Class2|PowerDistributor_PrioritySystems||communityGoal":"Power Distributor","Int_PowerDistributor_Size6_Class5|PowerDistributor_PrioritySystems||communityGoal":"Power Distributor","Int_Powerplant_Size3_Class5|PowerPlant_Armoured||communityGoal":"Power Plant","Int_Powerplant_Size3_Class5|PowerPlant_Boosted||communityGoal":"Power Plant","Int_Powerplant_Size4_Class5|PowerPlant_Boosted||communityGoal":"Power Plant","Int_Powerplant_Size5_Class5|PowerPlant_Boosted||communityGoal":"Power Plant","Int_Hyperdrive_Size3_Class5|FSD_LongRange||communityGoal":"Frame Shift Drive","Int_Hyperdrive_Size4_Class5|FSD_LongRange||communityGoal":"Frame Shift Drive","Int_Hyperdrive_Size6_Class5|FSD_LongRange||communityGoal":"Frame Shift Drive","Int_CargoRack_Size5_Class1|CargoRack_IncreasedCapacity||communityGoal":"Cargo Rack","Int_CargoRack_Size6_Class1|CargoRack_IncreasedCapacity||communityGoal":"Cargo Rack","Int_ShieldGenerator_Size3_Class5|ShieldGenerator_Kinetic||communityGoal":"Shield Generator","Hpt_ATDumbfireMissile_Fixed_Medium|Weapon_HighCapacity||techBroker":"Sirius AX Missile Rack","Hpt_ATDumbfireMissile_Fixed_Large|Weapon_HighCapacity||techBroker":"Sirius AX Missile Rack","Hpt_ATMultiCannon_Gimbal_Medium|Weapon_Overcharged|special_auto_loader|techBroker":"Azimuth Enhanced AX Multi-Cannon","Hpt_ATMultiCannon_Gimbal_Large|Weapon_Overcharged|special_auto_loader|techBroker":"Azimuth Enhanced AX Multi-Cannon","Hpt_Guardian_GaussCannon_Fixed_Small|Weapon_RapidFire||techBroker":"Modified Guardian Gauss Cannon","Hpt_Guardian_GaussCannon_Fixed_Medium|Weapon_RapidFire||techBroker":"Modified Guardian Gauss Cannon","Hpt_Guardian_PlasmaLauncher_Fixed_Small|Weapon_Overcharged||techBroker":"Modified Guardian Plasma Charger","Hpt_Guardian_PlasmaLauncher_Fixed_Medium|Weapon_Overcharged||techBroker":"Modified Guardian Plasma Charger","Hpt_Guardian_ShardCannon_Fixed_Small|Weapon_LongRange||techBroker":"Modified Guardian Shard Cannon","Hpt_Guardian_ShardCannon_Fixed_Medium|Weapon_LongRange||techBroker":"Modified Guardian Shard Cannon","Hpt_MiningLaser_Fixed_Small|Weapon_LongRange|special_incendiary_rounds|techBroker":"Mining Laser","Hpt_BasicMissileRack_Fixed_Medium|Weapon_HighCapacity|special_thermal_cascade|techBroker":"Seeker Missile Rack V1","Hpt_HeatSinkLauncher_Turret_Tiny|Misc_HeatSinkCapacity||techBroker":"Sirius Heat Sink Launcher","Int_Hyperdrive_Size5_Class5|FSD_LongRange||techBroker":"Frame Shift Drive","Int_Hyperdrive_Overcharge_Size2_Class5|FSD_LongRange||techBroker":"Frame Shift Drive (SCO) V1","Int_Hyperdrive_Overcharge_Size3_Class5|FSD_LongRange||techBroker":"Frame Shift Drive (SCO) V1","Int_Hyperdrive_Overcharge_Size4_Class5|FSD_LongRange||techBroker":"Frame Shift Drive (SCO) V1","Int_Hyperdrive_Overcharge_Size5_Class5|FSD_LongRange||techBroker":"Frame Shift Drive (SCO) V1","Int_Hyperdrive_Overcharge_Size6_Class5|FSD_LongRange||techBroker":"Frame Shift Drive (SCO) V1","Int_Hyperdrive_Overcharge_Size7_Class5|FSD_LongRange||techBroker":"Frame Shift Drive (SCO) V1","Int_DetailedSurfaceScanner_Tiny|Sensor_Expanded||techBroker":"Detailed Surface Scanner V1","Hpt_FlakMortar_Turret_Medium|Decorative_Green||eventReward":"Festive Green Remote Release Flak Launcher","Hpt_FlakMortar_Turret_Medium|Decorative_Red||eventReward":"Festive Red Remote Release Flak Launcher","Hpt_FlakMortar_Turret_Medium|Decorative_Yellow||eventReward":"Festive Yellow Remote Release Flak Launcher"},names:{"Far-Reaching Abrasion Blaster":{en:"Far-Reaching Abrasion Blaster",de:"Abrasionsblaster mit großer Reichweite",es:"Destructor de abrasión de largo alcance",fr:"Surfaceur abrasif longue portée",pt:"Detonador de abrasão de longo alcance",ru:"Абразивный бластер с увеличенной дальностью"},"High-Yield Enzyme Missile Rack":{en:"High-Yield Enzyme Missile Rack",de:"Enzymraketenrampe mit hohen Erträgen",es:"Lanzamisiles de enzimas de alto rendimiento",fr:"Batterie de missiles enzymatiques à hauts rendements",pt:"Estante de mísseis enzimáticos de alta potência",ru:"Блок энзимных ракет высокой мощности"},"Double Screaming Fragment Cannon":{en:"Double Screaming Fragment Cannon",de:"Doppelschrei-Splitterkanone",es:"Cañón de fragmentación doble con proyectil de pantalla",fr:"Double canon à fragmentation Screaming",pt:"Canhão de fragmentos duplo de barragem",ru:"Залповое орудие «Двойной вой»"},"Long Range Mining Laser":{en:"Long Range Mining Laser",de:"Ferndistanz-Abbaulaser",es:"Láser de minería de largo alcance",fr:"Laser minier longue portée",pt:"Laser de mineração de longo alcance",ru:"Проходочный лазер с увеличенной дальностью"},"Rapid Phase Multi-Cannon":{en:"Rapid Phase Multi-Cannon",de:"Schnellfeuer-Mehrfachgeschütz",es:"Multicañón de fase con disparo rápido",fr:"Multi-canon à phase rapide",pt:"Canhão de repetição de tiro rápido",ru:"Скорострельное фазовое многоствольное орудие"},"Enduring Feedback Rail Gun":{en:"Enduring Feedback Rail Gun",de:"Robuste Feedback-Schienenkanone",es:"Cañón de riel Retroalimentación Soportable",fr:"Canon électrique énergétique résistant",pt:"Canhão elétrico de feedback duradouro",ru:"Электромагнитная пушка с постоянным откликом"},"Drag Seeker Missile Rack":{en:"Drag Seeker Missile Rack",de:"Suchraketenrampe ziehen",es:"Lanzamisiles guiado con lastre",fr:"Batterie de missiles TC à inertie",pt:"Estante de míssil guiado de arrasto",ru:"Блок ракет с самонаведением и замедляющими боеприпасами"},"Lightweight Thermal Seeker Missile Rack":{en:"Lightweight Thermal Seeker Missile Rack",de:"Leichte thermische Suchraketenrampe",es:"Lanzamisiles guiado térmico ligero",fr:"Batterie de missiles TC thermiques légers",pt:"Estante de míssil guiado leve",ru:"Легкий блок тепловых ракет с самонаведением"},"Lockdown Seeker Missile Rack":{en:"Lockdown Seeker Missile Rack",de:"Abriegelung-Suchraketenrampe",es:"Lanzamisiles guiado con bloqueo",fr:"Batterie de missiles TC à verrouillage",pt:"Estante de míssil guiado de precisão",ru:"Блок ракет с самонаведением и блокировкой"},"Overloaded Beam laser":{en:"Overloaded Beam laser",de:"Überladener Strahlenlaser",es:"Láser de rayo sobrecargado",fr:"Rayon laser surchargé",pt:"Laser contínuo sobrecarregado",ru:"Разогнанный пучковый лазер"},"Regenerative Burst Laser":{en:"Regenerative Burst Laser",de:"Regenerativer Salvenlaser",es:"Láser de ráfagas regenerativo",fr:"Laser à rafale régénératif",pt:"Laser de rajada regenerativo",ru:"Регенеративный пульсирующий лазер"},"Force Impact Cannon":{en:"Force Impact Cannon",de:"Krafteinschlagkanone",es:"Cañón de impacto potente",fr:"Canon à impact de force",pt:"Canhão de impacto de força",ru:"Орудие силового воздействия"},"Exposing Missiles":{en:"Exposing Missiles",de:"Enttarnungsraketen",es:"Misiles reveladores",fr:"Missiles exposés",pt:"Misseis de exposição",ru:"Ракеты обнаружения"},"Extended Cargo Rack":{en:"Extended Cargo Rack",de:"Erweitertes Frachtgestell",es:"Bodega de carga extendida",fr:"Compartiment soute agrandi",pt:"Estante de carga estendido",ru:"Увеличенный грузовой стеллаж"},"Long Range Detailed Surface Scanner":{en:"Long Range Detailed Surface Scanner",de:"Ferndistanz-Detail-Oberflächenscanner",es:"Escáner de análisis de superficie detallado de largo alcance",fr:"Détecteur de surface détaillé longue portée",pt:"Scanner de superfície detalhada de Longo Alcance",ru:"Подробный сканер поверхностей с увеличенной дальностью"},"Heavy Duty Module Reinforcement Package":{en:"Heavy Duty Module Reinforcement Package",de:"Schwere Modulverstärkung (Paket)",es:"Paquete de refuerzo de módulo de alta resistencia",fr:"Pack de renforcement de modules lourds",pt:"Pacote de Reforço de módulo Pesado",ru:"Укрепленный набор для усиления модуля"},"Support Focused Power Distributor":{en:"Support Focused Power Distributor",de:"Unterstützungsfokussierter Energieverteiler",es:"Distribuidor de energía orientado al apoyo",fr:"Répartiteur de puissance optimisé Survie",pt:"Distribuidor de energia com foco no suporte",ru:"Вспомогательный распределитель питания"},"Balanced Power Distributor":{en:"Balanced Power Distributor",de:"Abgeglichener Energieverteiler",es:"Distribuidor de energía equilibrado",fr:"Répartiteur de puissance équilibré",pt:"Distribuidor de energia equilibrado",ru:"Сбалансированный распределитель энергии"},"Abrasion Blaster":{en:"Abrasion Blaster",de:"Abrasionsblaster",es:"Destructor de abrasión",fr:"Surfaceur abrasif",pt:"Detonador de Abrasão",ru:"Шлифовальный бластер"},"Enzyme Missile Rack":{en:"Enzyme Missile Rack",de:"Enzymraketenwerfer",es:"Lanzamisiles de Enzimas",fr:"Batterie de missile enzymatique",pt:"Estante de Míssel Enzimático",ru:"Пусковая энзимных ракет"},"Fragment Cannon":{en:"Fragment Cannon",de:"Splitterkanone",es:"Cañón de fragmentación",fr:"Canon à fragmentation",pt:"Canhão de Fragmentação",ru:"Залповое орудие"},"Guardian Shard Cannon":{en:"Guardian Shard Cannon",de:"Fragmentkanone",es:"Cañón de esquirlas",fr:"Canon à éclats",pt:"Canhão de fragmentos",ru:"Осколочное орудие"},"Multi-Cannon":{en:"Multi-Cannon",de:"Mehrfachgeschütz",es:"Multicañón",fr:"Multi-canon",pt:"Canhão de Repetição",ru:"Многоствольное орудие"},"Rail Gun":{en:"Rail Gun",de:"Schienenkanone",es:"Cañón de riel",fr:"Canon électrique",pt:"Canhão Elétrico",ru:"Электромагнитная пушка"},"Imperial Hammer Rail Gun":{en:"Imperial Hammer Rail Gun",de:"Hammer",es:"Martillo",fr:"Marteleur",pt:"Martelo",ru:"«Молот»"},"Seeker Missile Rack":{en:"Seeker Missile Rack",de:"Suchraketenrampe",es:"Lanzamisiles guiados",fr:"Missiles TC",pt:"Estante de Míssil Guiado",ru:"Блок ракет с самонаведением"},"Electronic Countermeasure":{en:"Electronic Countermeasure",de:"Elektronische Gegenmaßnahme",es:"Contramedidas electrónicas",fr:"Contre-mesures électroniques",pt:"Contramedida Eletrônica",ru:"Электр. противодействие"},"Kill Warrant Scanner":{en:"Kill Warrant Scanner",de:"Tötungsbefehl-Scanner",es:"Escáner de recompensas",fr:"Détecteur d'avis de recherche",pt:"Scanner de Registro Criminal",ru:"Сканер преступников"},"Point Defence":{en:"Point Defence",de:"Punktverteidigung",es:"Defensa de punto",fr:"Défense ponctuelle",pt:"Defesa de Ponto",ru:"Точечная оборона"},"Power Distributor":{en:"Power Distributor",de:"Energieverteiler",es:"Distribuidor de energía",fr:"Répartiteur de puissance",pt:"Distribuidor de Energia",ru:"Распределитель питания"},"Power Plant":{en:"Power Plant",de:"Kraftwerk",es:"Núcleo de energía",fr:"Générateur",pt:"Gerador de Energia",ru:"Силовая установка"},"Frame Shift Drive":{en:"Frame Shift Drive",de:"Frameshiftantrieb",es:"Motor de salto",fr:"Réacteur FSD",pt:"Motor de Distorção de Fase",ru:"Рамочно Сместительный двигатель"},"Cargo Rack":{en:"Cargo Rack",de:"Frachtgestell",es:"Bodega de carga",fr:"Compartiment de soute",pt:"Estante de Carga",ru:"Грузовой стеллаж"},"Shield Generator":{en:"Shield Generator",de:"Schildgenerator",es:"Generador de escudos",fr:"Générateur de bouclier",pt:"Gerador de Escudo",ru:"Щитогенератор"},"Sirius AX Missile Rack":{en:"Sirius AX Missile Rack",de:"Sirius AX-Raketenrampe",es:"Sirius Lanzamisiles AX",fr:"Sirius Batterie de missiles AX",pt:"Sirius Estante de Mísseis AX",ru:"Sirius Блок ракет АИ"},"Azimuth Enhanced AX Multi-Cannon":{en:"Azimuth Enhanced AX Multi-Cannon",de:"Azimuth Fortschrittliches AX Mehrfachgeschütz",pt:"Azimuth Canhão de Repetição AX Melhorado",ru:"Azimuth Улучш. многоствольное орудие АИ"},"Modified Guardian Gauss Cannon":{en:"Modified Guardian Gauss Cannon",de:"Modifizierte Guardian-Gausskanone",es:"Cañón Gauss Guardián modificado",fr:"Canon de Gauss - Guardians modifié",pt:"Canhão Gauss Guardian modificado",ru:"Модифицированная пушка Гаусса"},"Modified Guardian Plasma Charger":{en:"Modified Guardian Plasma Charger",de:"Modifizierter Guardian-Plasmalader",es:"Cargador de Plasma Guardián modificado",fr:"Chargeur à Plasma - Guardians modifié",pt:"Carregador de Plasma Guardian modificado",ru:"Модифицированная плазменная пушка"},"Modified Guardian Shard Cannon":{en:"Modified Guardian Shard Cannon",de:"Modifizierte Fragmentkanone",es:"Cañón de esquirlas modificado",fr:"Canon à éclats modifié",pt:"Canhão de fragmentos modificado",ru:"Модифицированное осколочное орудие"},"Mining Laser":{en:"Mining Laser",de:"Abbaulaser",es:"Láser de minería",fr:"Laser Minier",pt:"Laser de Mineração",ru:"Проходочный лазер"},"Seeker Missile Rack V1":{en:"Seeker Missile Rack V1",de:"Suchraketenrampe V1",es:"Lanzamisiles guiados V1",fr:"Missiles TC V1",pt:"Estante de Míssil Guiado V1",ru:"Блок ракет с самонаведением V1"},"Sirius Heat Sink Launcher":{en:"Sirius Heat Sink Launcher",de:"Sirius Kühlkörperabwurf",es:"Sirius Eyector térmico",fr:"Sirius Éjecteur de dissipateur thermique",pt:"Sirius Lançador de Dissipador Térmico",ru:"Sirius Теплоотводная катапульта"},"Frame Shift Drive (SCO) V1":{en:"Frame Shift Drive (SCO) V1",pt:"Motor de Distorção de Fase (SSV) V1",ru:"Двигатель FSD (ПГР) V1"},"Detailed Surface Scanner V1":{en:"Detailed Surface Scanner V1",de:"Detail-Oberflächenscanner V1",es:"Escáner de superficie detallado V1",fr:"Détecteur de surface détaillé V1",pt:"Scanner de Superfície V1",ru:"Сканер поверхностей V1"},"Festive Green Remote Release Flak Launcher":{en:"Festive Green Remote Release Flak Launcher",de:"Festlicher grüner Flakwerfer mit Fernzündung",es:"Lanzamisiles antiaéreo remoto festivo verde",fr:"Lanceur antiaérien déclenché à distance festif vert",pt:"Lançador de Flak Remoto festivo verde",ru:"Праздничный зелёный зенитный снаряд с дистанционным подрывом"},"Festive Red Remote Release Flak Launcher":{en:"Festive Red Remote Release Flak Launcher",de:"Festlicher roter Flakwerfer mit Fernzündung",es:"Lanzamisiles antiaéreo remoto festivo rojo",fr:"Lanceur antiaérien déclenché à distance festif rouge",pt:"Lançador de Flak Remoto festivo vermelho",ru:"Праздничный красный зенитный снаряд с дистанционным подрывом"},"Festive Yellow Remote Release Flak Launcher":{en:"Festive Yellow Remote Release Flak Launcher",de:"Festlicher gelber Flakwerfer mit Fernzündung",es:"Lanzamisiles antiaéreo remoto festivo amarillo",fr:"Lanceur antiaérien déclenché à distance festif jaune",pt:"Lançador de Flak Remoto festivo amarelo",ru:"Праздничный жёлтый зенитный снаряд с дистанционным подрывом"}}};var NAMES=/* @__PURE__ */createDeduplicatedLocalizedNameIndex(pre_engineered_variant_names_default);function identityKey(identity){const prefix="getPreEngineeredVariantName: variant";requireObject(identity,prefix);const symbol=requireString(identity.symbol,`${prefix}.symbol`).trim();const blueprint=requireString(identity.blueprintSymbol,`${prefix}.blueprintSymbol`).trim();requireStringIfPresent(identity.experimentalEffectSymbol,`${prefix}.experimentalEffectSymbol`);const experimental=identity.experimentalEffectSymbol?.trim()??"";const acquisition=requireString(identity.acquisition,`${prefix}.acquisition`).trim();return`${symbol}|${blueprint}|${experimental}|${acquisition}`}function getPreEngineeredVariantName(variant,locale){return getLocalizedName(NAMES,identityKey(variant),locale,"getPreEngineeredVariantName","variant")}export{getPreEngineeredVariantName};//# sourceMappingURL=chunk-FRG7MKSJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/i18n/pre-engineered.ts"],"names":["getLocalizedName","createDeduplicatedLocalizedNameIndex","requireObject","requireString","requireStringIfPresent","pre_engineered_variant_names_default","NAMES","identityKey","identity","prefix","symbol","trim","blueprint","blueprintSymbol","experimentalEffectSymbol","experimental","acquisition","getPreEngineeredVariantName","variant","locale"],"mappings":"O,g/iBAeA,IAAMM,qBAAwBL,qCAC1BI,sCAeJ,SAASE,YAAYC,UACjB,MAAMC,OAAS,uCACfP,cAAcM,SAAUC,QACxB,MAAMC,OAASP,cAAcK,SAASE,OAAQ,GAAGD,iBAAiBE,OAClE,MAAMC,UAAYT,cAAcK,SAASK,gBAAiB,GAAGJ,0BAA0BE,OACvFP,uBAAuBI,SAASM,yBAA0B,GAAGL,mCAC7D,MAAMM,aAAeP,SAASM,0BAA0BH,QAAU,GAClE,MAAMK,YAAcb,cAAcK,SAASQ,YAAa,GAAGP,sBAAsBE,OACjF,MAAO,GAAGD,UAAUE,aAAaG,gBAAgBC,aACrD,CAwBO,SAASC,4BACZC,QACAC,QAEA,OAAOnB,iBACHM,MACAC,YAAYW,SACZC,OACA,8BACA,UAER,QAAAF"}
1
+ {"version":3,"sources":["../src/i18n/pre-engineered.ts"],"names":["getLocalizedName","createDeduplicatedLocalizedNameIndex","requireObject","requireString","requireStringIfPresent","pre_engineered_variant_names_default","NAMES","identityKey","identity","prefix","symbol","trim","blueprint","blueprintSymbol","experimentalEffectSymbol","experimental","acquisition","getPreEngineeredVariantName","variant","locale"],"mappings":"O,gllBAeA,IAAMM,qBAAwBL,qCAC1BI,sCAeJ,SAASE,YAAYC,UACjB,MAAMC,OAAS,uCACfP,cAAcM,SAAUC,QACxB,MAAMC,OAASP,cAAcK,SAASE,OAAQ,GAAGD,iBAAiBE,OAClE,MAAMC,UAAYT,cAAcK,SAASK,gBAAiB,GAAGJ,0BAA0BE,OACvFP,uBAAuBI,SAASM,yBAA0B,GAAGL,mCAC7D,MAAMM,aAAeP,SAASM,0BAA0BH,QAAU,GAClE,MAAMK,YAAcb,cAAcK,SAASQ,YAAa,GAAGP,sBAAsBE,OACjF,MAAO,GAAGD,UAAUE,aAAaG,gBAAgBC,aACrD,CAwBO,SAASC,4BACZC,QACAC,QAEA,OAAOnB,iBACHM,MACAC,YAAYW,SACZC,OACA,8BACA,UAER,QAAAF"}
@@ -0,0 +1 @@
1
+ import{CONSUMABLE_MICRO_RESOURCES}from"./chunk-K7L7SMIR.js";import{DATA_MICRO_RESOURCES}from"./chunk-GVLDFJEY.js";import{ITEM_MICRO_RESOURCES}from"./chunk-WHWFKHV3.js";import{COMPONENT_MICRO_RESOURCES}from"./chunk-HTB52N6S.js";var ALL_MICRO_RESOURCES=Object.freeze([...COMPONENT_MICRO_RESOURCES,...CONSUMABLE_MICRO_RESOURCES,...DATA_MICRO_RESOURCES,...ITEM_MICRO_RESOURCES]);export{ALL_MICRO_RESOURCES};//# sourceMappingURL=chunk-KLC5XT6F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/materials/micro-resources-all.ts"],"names":["CONSUMABLE_MICRO_RESOURCES","DATA_MICRO_RESOURCES","ITEM_MICRO_RESOURCES","COMPONENT_MICRO_RESOURCES","ALL_MICRO_RESOURCES","Object","freeze"],"mappings":"O,4NA6BO,IAAMI,oBAAgDC,OAAOC,OAAO,IACpEH,6BACAH,8BACAC,wBACAC,8BACNE"}