@elite-dangerous-almanac/core 0.1.0-beta.5 → 0.1.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROVENANCE/ships/SOURCES.md +45 -23
- package/README.md +4 -1
- package/dist/chunk-4TXQWLIQ.js +1 -0
- package/dist/chunk-4TXQWLIQ.js.map +1 -0
- package/dist/chunk-BSOIPL4A.js +1 -0
- package/dist/{chunk-IHHS5Q5S.js.map → chunk-BSOIPL4A.js.map} +1 -1
- package/dist/{chunk-6LUEKHO5.js → chunk-DFJ6ETMY.js} +1 -1
- package/dist/{chunk-6LUEKHO5.js.map → chunk-DFJ6ETMY.js.map} +1 -1
- package/dist/chunk-GV7ZKYQN.js +1 -0
- package/dist/chunk-GV7ZKYQN.js.map +1 -0
- package/dist/{chunk-ECBYOHPF.js → chunk-PRQELBIC.js} +1 -1
- package/dist/{chunk-VZZ2XIRE.js → chunk-SVZARHWP.js} +1 -1
- package/dist/chunk-SVZARHWP.js.map +1 -0
- package/dist/chunk-T6DP655O.js +1 -0
- package/dist/chunk-T6DP655O.js.map +1 -0
- package/dist/chunk-TH4S5MVD.js +1 -0
- package/dist/{chunk-BNILZXJD.js.map → chunk-TH4S5MVD.js.map} +1 -1
- package/dist/chunk-VF2FGQ4B.js +1 -0
- package/dist/chunk-VF2FGQ4B.js.map +1 -0
- package/dist/chunk-W7XI3WVA.js +1 -0
- package/dist/{chunk-XSFGRMJC.js.map → chunk-W7XI3WVA.js.map} +1 -1
- package/dist/{chunk-GJCB2Z72.js → chunk-XYK6DYVQ.js} +1 -1
- package/dist/{chunk-GJCB2Z72.js.map → chunk-XYK6DYVQ.js.map} +1 -1
- package/dist/{chunk-L2ZZXEZM.js → chunk-ZJB5UYNE.js} +1 -1
- package/dist/{ship-loadout-D27yT2y2.d.ts → ship-loadout-CVRkbZS0.d.ts} +35 -9
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-journal.js +1 -1
- package/dist/ships/decorative-modification-stats.d.ts +109 -0
- package/dist/ships/decorative-modification-stats.js +1 -0
- package/dist/ships/decorative-modification-stats.js.map +1 -0
- package/dist/ships/decorative-modifications.d.ts +4 -2
- package/dist/ships/decorative-modifications.js +1 -1
- package/dist/ships/engineering-options.d.ts +44 -41
- package/dist/ships/engineering-options.js +1 -1
- package/dist/ships/engineering.d.ts +15 -12
- package/dist/ships/engineering.js +1 -1
- package/dist/ships/index.d.ts +6 -3
- package/dist/ships/index.js +1 -1
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules.d.ts +2 -2
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +5 -3
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/pre-engineered.d.ts +6 -4
- package/dist/ships/pre-engineered.js +1 -1
- package/dist/ships/ship-loadout.d.ts +1 -1
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/slef.d.ts +2 -2
- package/package.json +5 -1
- package/dist/chunk-AUHDXSQL.js +0 -1
- package/dist/chunk-AUHDXSQL.js.map +0 -1
- package/dist/chunk-BNILZXJD.js +0 -1
- package/dist/chunk-IHHS5Q5S.js +0 -1
- package/dist/chunk-JBR4PTCM.js +0 -1
- package/dist/chunk-JBR4PTCM.js.map +0 -1
- package/dist/chunk-VZZ2XIRE.js.map +0 -1
- package/dist/chunk-XSFGRMJC.js +0 -1
- /package/dist/{chunk-ECBYOHPF.js.map → chunk-PRQELBIC.js.map} +0 -0
- /package/dist/{chunk-L2ZZXEZM.js.map → chunk-ZJB5UYNE.js.map} +0 -0
|
@@ -379,10 +379,12 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
379
379
|
II's `Int_MkIIAgileBoost_Engine_*` thrusters.
|
|
380
380
|
- **A fuel tank is the one module built for two kinds of mount:** it is `fuelTank`
|
|
381
381
|
and also fits any optional slot large enough, exactly as the game sells it.
|
|
382
|
-
- **`kind` is the engineering family.** The
|
|
382
|
+
- **`kind` is the ordinary engineering-menu family.** The 1026 records mapped by
|
|
383
383
|
`engineering-options.jsonc` repeat that map's group key in the compact on-disk `kind`
|
|
384
|
-
field.
|
|
385
|
-
no engineering family for them
|
|
384
|
+
field. Of the remaining 173 records, 171 carry no `kind` because the pinned sources
|
|
385
|
+
publish no engineering family for them; the fixed Mining Laser and Abrasion Blaster
|
|
386
|
+
omit the family as the in-game correction documented under Engineering options below.
|
|
387
|
+
The group source, derivation, split
|
|
386
388
|
Guardian families and coverage are documented under Engineering options below; this
|
|
387
389
|
field is a projection of that map, not a separate classification source.
|
|
388
390
|
- **Stats source:** coriolis-data `modules/**` for the mechanical, defence, power and
|
|
@@ -1344,7 +1346,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1344
1346
|
- **Availability is a property of the module, not of the blueprint.** A Pulse Laser and a
|
|
1345
1347
|
Rail Gun both take the Efficient blueprint but offer different experimental effects, so
|
|
1346
1348
|
"which experimentals go with blueprint X" has no single answer. Modules are therefore
|
|
1347
|
-
grouped (
|
|
1349
|
+
grouped (52 groups covering 1026 ordinary engineering menus) and each group lists the
|
|
1348
1350
|
`blueprints` and `experimentals` it offers.
|
|
1349
1351
|
- **Source:** EDSY `eddb.js`, whose module-group tables carry each group's `blueprints`
|
|
1350
1352
|
and `expeffects` lists and which modules belong to each group, and whose module records
|
|
@@ -1352,8 +1354,10 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1352
1354
|
denials that narrow either list. Second registry: coriolis-data
|
|
1353
1355
|
`modifications/modules.json`, which carries the same per-group lists keyed by the
|
|
1354
1356
|
journal `BlueprintName`s this catalogue joins on.
|
|
1355
|
-
- **Coverage: every group EDSY's `mtype` table gives a `blueprints:` key.**
|
|
1356
|
-
|
|
1357
|
+
- **Coverage: every retained group EDSY's `mtype` table gives a `blueprints:` key.** After
|
|
1358
|
+
the Mining Laser and Abrasion Blaster corrections below, that is 52 groups over 1026
|
|
1359
|
+
modules, including
|
|
1360
|
+
bulkheads (the 241 ship armour records), life
|
|
1357
1361
|
support, sensors, the Detailed Surface Scanner, cargo racks, refineries, AFMUs, fuel
|
|
1358
1362
|
scoops, FSD interdictors and boosters, Guardian module and shield reinforcement, the
|
|
1359
1363
|
four engineerable limpet controllers, chaff, heat sink and caustic sink launchers,
|
|
@@ -1380,18 +1384,25 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1380
1384
|
- **14 modules are absent because upstream denies them every blueprint:** eight AX
|
|
1381
1385
|
multi-cannons (all but the two gimballed), five of the seven mining tools, and the
|
|
1382
1386
|
Mk II Plasma Shock Accelerator — which is why `antiXenoMultiCannons` holds 2 of that
|
|
1383
|
-
family's 10 modules
|
|
1387
|
+
family's 10 modules and `plasmaAccelerators` 4 of its 5. The other two mining tools
|
|
1388
|
+
are the manually corrected Mining Laser and Abrasion Blaster below, so all seven lack
|
|
1389
|
+
an ordinary menu and the empty `miningToolsLasers` group is not retained.
|
|
1384
1390
|
The ten plain Module Reinforcement Packages are denied their family's only recipe
|
|
1385
1391
|
and are absent too, which leaves `moduleReinforcements` holding the ten Guardian
|
|
1386
1392
|
packages.
|
|
1387
|
-
- **The
|
|
1393
|
+
- **The 173 modules absent have no ordinary engineering menu.** For 171 this comes from
|
|
1394
|
+
the pinned registries. Whole families first, both registries
|
|
1388
1395
|
agreeing: fuel tanks, passenger cabins, the repair/recon/research/decontamination and
|
|
1389
1396
|
multi-limpet controllers, meta-alloy and ordinary module reinforcement, the Pulse Wave
|
|
1390
1397
|
Analyser, the mining launchers, Shock Cannons, Nanite Torpedo Pylons, fighter and
|
|
1391
1398
|
vehicle hangars, the docking computers and Supercruise Assist, the module stabilisers,
|
|
1392
1399
|
the planetary approach suites, the cargo hatch and
|
|
1393
1400
|
the AX utility modules (Xeno Scanners, Shutdown Field Neutralisers), followed by the
|
|
1394
|
-
individually denied modules described above.
|
|
1401
|
+
individually denied modules described above. The other two are the fixed Mining Laser
|
|
1402
|
+
and Abrasion Blaster, corrected from the registry-derived result below. They and the
|
|
1403
|
+
size-5 class-2 Module Reinforcement Package within the registry-derived 171 have no
|
|
1404
|
+
stock menu, but their purchased Mercenary articles remain upgradeable through their
|
|
1405
|
+
bespoke recipes.
|
|
1395
1406
|
- **EDSY's `_X_` prefix means "not applicable" and is honoured**, not stripped: the
|
|
1396
1407
|
Detailed Surface Scanner's group lists only `iss_er` (`Sensor_Expanded`), because its
|
|
1397
1408
|
three other entries are `_X_`-marked. The `Decorative_*` entries on the remote-release
|
|
@@ -1417,14 +1428,14 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1417
1428
|
the nine further groups it carries a list for —
|
|
1418
1429
|
20 in all, every one an exact match. Chaff, heat sink, point defence and ECMs keep the
|
|
1419
1430
|
generic `Misc_*` ids: there coriolis agrees with EDSY.
|
|
1420
|
-
- **
|
|
1431
|
+
- **12 retained groups rest on EDSY alone**, because coriolis carries no blueprint list for
|
|
1421
1432
|
them at all: the nine Guardian-only groups (`guardianPowerPlants`,
|
|
1422
1433
|
`guardianPowerDistributors`, `guardianHullReinforcements`, `moduleReinforcements`,
|
|
1423
1434
|
`shieldReinforcements`, `fsdBoosters`, `guardianGauss`, `guardianPlasma`,
|
|
1424
|
-
`guardianShard`), `antiXenoMissileRacks`, `experimentalWeapons
|
|
1425
|
-
`
|
|
1435
|
+
`guardianShard`), `antiXenoMissileRacks`, `experimentalWeapons` and
|
|
1436
|
+
`antiXenoMultiCannons`. That is coriolis being
|
|
1426
1437
|
silent rather than contradicting — its Guardian and anti-xeno groups are empty
|
|
1427
|
-
objects — but it means the second registry corroborates 40 of the
|
|
1438
|
+
objects — but it means the second registry corroborates 40 of the 52 groups, not
|
|
1428
1439
|
all of them. The Guardian-weapon menus are independently settled by the in-game
|
|
1429
1440
|
observations below: stock weapons take Anti-Guardian Zone Resistance alone, while
|
|
1430
1441
|
the pre-engineered articles are final.
|
|
@@ -1454,19 +1465,30 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1454
1465
|
- **File order is derivable:** `modules` is written group by group in the order `groups`
|
|
1455
1466
|
declares them, and within a group in module-catalogue order, so a re-derivation from the
|
|
1456
1467
|
same sources reproduces the file rather than reshuffling it.
|
|
1457
|
-
- **`exclusions` are the exceptions, and they are real.**
|
|
1468
|
+
- **`exclusions` are the exceptions, and they are real.** 23 modules take their group's
|
|
1458
1469
|
blueprints but not all of its experimental effects: 13 Multi-cannons cannot take Phasing
|
|
1459
1470
|
Sequence, six dumbfire racks cannot take Drag Munitions, four missile racks are short of
|
|
1460
|
-
Penetrator Munitions or FSD Interrupt
|
|
1461
|
-
|
|
1462
|
-
the wildcard is expanded to the explicit list. A module absent from `exclusions` takes
|
|
1463
|
-
its whole group's list. Five mining tools
|
|
1471
|
+
Penetrator Munitions or FSD Interrupt. Upstream these are an exclusion map. A module
|
|
1472
|
+
absent from `exclusions` takes its whole group's list. All seven mining tools
|
|
1464
1473
|
that would otherwise be listed here are absent from the catalogue entirely, taking no
|
|
1465
|
-
blueprint either.
|
|
1466
|
-
- **
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1474
|
+
ordinary blueprint either.
|
|
1475
|
+
- **The fixed Mining Laser and Abrasion Blaster have no ordinary engineering menu.** Both
|
|
1476
|
+
are removed from `modules`, despite EDSY assigning them to `miningToolsLasers` with
|
|
1477
|
+
`Weapon_LongRange`; the Abrasion Blaster is also removed from `exclusions`, where EDSY
|
|
1478
|
+
denies the group's experimental effect. Direct in-game menu confirmation recorded
|
|
1479
|
+
2026-08-15 UTC establishes that neither stock article can receive ordinary engineering;
|
|
1480
|
+
there is no immutable revision for an in-game observation. Their `Weapon_LongRange`
|
|
1481
|
+
grade-5 states are separately catalogued reward articles with hand-set modifiers that
|
|
1482
|
+
identify rather than reproduce them. This does not remove the Mercenary routes: both
|
|
1483
|
+
are acquired at grade 1 with bespoke recipes (`MiningLaser_LongRange` and
|
|
1484
|
+
`AbrasionBlaster_FarReaching`), whose sourced grades 2–5 remain applicable through the
|
|
1485
|
+
`pre-engineered.jsonc` purchase records. A re-derivation from EDSY must reapply this
|
|
1486
|
+
correction by dropping both module mappings, the now-empty `miningToolsLasers` group,
|
|
1487
|
+
both projected `kind` fields in `modules-hardpoint.jsonc`, and the Abrasion Blaster's
|
|
1488
|
+
now-unreachable experimental exclusion.
|
|
1489
|
+
- **An empty experimental menu is still distinct from no menu.** 30 of the 52 groups offer
|
|
1490
|
+
no experimental at all, so 387 of the 1026 grouped modules have an empty experimental
|
|
1491
|
+
list while retaining blueprints.
|
|
1470
1492
|
- **Key form:** the Anti-Guardian blueprint is listed under `GuardianModule_Sturdy`, the id
|
|
1471
1493
|
a Loadout writes and the one EDSY uses — the same and only spelling `blueprints.jsonc`
|
|
1472
1494
|
keys it under.
|
package/README.md
CHANGED
|
@@ -141,7 +141,10 @@ normally writes that id in its `Engineering` block, but a few blueprint aliases
|
|
|
141
141
|
collide across module families; `resolveBlueprintForModule` resolves those journal
|
|
142
142
|
spellings. Functions that ask what engineering a module accepts therefore take the
|
|
143
143
|
module's `symbol`; functions that look up a recipe, effect or modification take its
|
|
144
|
-
`fdname`.
|
|
144
|
+
`fdname`. `getDecorativeModifiers` takes both identities to reconstruct the
|
|
145
|
+
journal-style stat block of a fitted decorative transformation;
|
|
146
|
+
`unresolvedDecorativeModifiers` reports any authored labels the module catalogue could
|
|
147
|
+
not compute.
|
|
145
148
|
|
|
146
149
|
Personal-equipment modifications are keyed by their recipe symbol, just as ship
|
|
147
150
|
blueprints and experimental effects are keyed by `fdname`; there is no second synthetic
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function fixedModifierFeatures(modifiers){return modifiers.map(modifier=>({label:modifier.label,method:modifier.method,min:modifier.value,max:modifier.value}))}export{fixedModifierFeatures};//# sourceMappingURL=chunk-4TXQWLIQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/internal/fixed-modifier-features.ts"],"names":["fixedModifierFeatures","modifiers","map","modifier","label","method","min","value","max"],"mappings":"AAgBO,SAASA,sBACZC,WAEA,OAAOA,UAAUC,IAAKC,WAAA,CAClBC,MAAOD,SAASC,MAChBC,OAAQF,SAASE,OACjBC,IAAKH,SAASI,MACdC,IAAKL,SAASI,QAEtB,QAAAP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{buildModuleCatalogue}from"./chunk-E45EDCYH.js";var modules_hardpoint_default=[{symbol:"Hpt_PulseLaser_Fixed_Small",kind:"pulseLasers",name:"Pulse Laser",mount:"Fixed",class:1,rating:"F",mass:2,integrity:40,powerDraw:.39,bootTime:0,damage:2.05,damageDistribution:{thermal:1},rateOfFire:3.846154,burstInterval:.26,distributorDraw:.3,thermalLoad:.33,armourPiercing:20,maximumRange:3e3,falloffRange:500,cost:2200},{symbol:"Hpt_PulseLaser_Fixed_Medium",kind:"pulseLasers",name:"Pulse Laser",mount:"Fixed",class:2,rating:"E",mass:4,integrity:51,powerDraw:.6,bootTime:0,damage:3.5,damageDistribution:{thermal:1},rateOfFire:3.448276,burstInterval:.29,distributorDraw:.5,thermalLoad:.56,armourPiercing:35,maximumRange:3e3,falloffRange:500,cost:17600},{symbol:"Hpt_PulseLaser_Fixed_Large",kind:"pulseLasers",name:"Pulse Laser",mount:"Fixed",class:3,rating:"D",mass:8,integrity:64,powerDraw:.9,bootTime:0,damage:5.98,damageDistribution:{thermal:1},rateOfFire:3.030303,burstInterval:.33,distributorDraw:.86,thermalLoad:.96,armourPiercing:52,maximumRange:3e3,falloffRange:500,cost:70400},{symbol:"Hpt_PulseLaser_Fixed_Huge",kind:"pulseLasers",name:"Pulse Laser",mount:"Fixed",class:4,rating:"A",mass:16,integrity:80,powerDraw:1.33,bootTime:0,damage:10.24,damageDistribution:{thermal:1},rateOfFire:2.631579,burstInterval:.38,distributorDraw:1.48,thermalLoad:1.64,armourPiercing:65,maximumRange:3e3,falloffRange:500,cost:177600},{symbol:"Hpt_PulseLaser_Gimbal_Small",kind:"pulseLasers",name:"Pulse Laser",mount:"Gimballed",class:1,rating:"G",mass:2,integrity:40,powerDraw:.39,bootTime:0,damage:1.56,damageDistribution:{thermal:1},rateOfFire:4,burstInterval:.25,distributorDraw:.31,thermalLoad:.31,armourPiercing:20,maximumRange:3e3,falloffRange:500,cost:6600},{symbol:"Hpt_PulseLaser_Gimbal_Medium",kind:"pulseLasers",name:"Pulse Laser",mount:"Gimballed",class:2,rating:"F",mass:4,integrity:51,powerDraw:.6,bootTime:0,damage:2.68,damageDistribution:{thermal:1},rateOfFire:3.571429,burstInterval:.28,distributorDraw:.54,thermalLoad:.54,armourPiercing:35,maximumRange:3e3,falloffRange:500,cost:35400},{symbol:"Hpt_PulseLaser_Gimbal_Large",kind:"pulseLasers",name:"Pulse Laser",mount:"Gimballed",class:3,rating:"E",mass:8,integrity:64,powerDraw:.92,bootTime:0,damage:4.58,damageDistribution:{thermal:1},rateOfFire:3.225806,burstInterval:.31,distributorDraw:.92,thermalLoad:.92,armourPiercing:52,maximumRange:3e3,falloffRange:500,cost:140600},{symbol:"Hpt_PulseLaser_Turret_Small",kind:"pulseLasers",name:"Pulse Laser",mount:"Turreted",class:1,rating:"G",mass:2,integrity:40,powerDraw:.38,bootTime:0,damage:1.19,damageDistribution:{thermal:1},rateOfFire:3.333333,burstInterval:.3,distributorDraw:.19,thermalLoad:.19,armourPiercing:20,maximumRange:3e3,falloffRange:500,cost:26e3},{symbol:"Hpt_PulseLaser_Turret_Medium",kind:"pulseLasers",name:"Pulse Laser",mount:"Turreted",class:2,rating:"F",mass:4,integrity:51,powerDraw:.58,bootTime:0,damage:2.05,damageDistribution:{thermal:1},rateOfFire:3.030303,burstInterval:.33,distributorDraw:.33,thermalLoad:.33,armourPiercing:35,maximumRange:3e3,falloffRange:500,cost:132800},{symbol:"Hpt_PulseLaser_Turret_Large",kind:"pulseLasers",name:"Pulse Laser",mount:"Turreted",class:3,rating:"F",mass:8,integrity:64,powerDraw:.89,bootTime:0,damage:3.5,damageDistribution:{thermal:1},rateOfFire:2.702703,burstInterval:.37,distributorDraw:.56,thermalLoad:.56,armourPiercing:52,maximumRange:3e3,falloffRange:500,cost:400400},{symbol:"Hpt_PulseLaserBurst_Fixed_Small",kind:"burstLasers",name:"Burst Laser",mount:"Fixed",class:1,rating:"F",mass:2,integrity:40,powerDraw:.65,bootTime:0,damage:1.72,damageDistribution:{thermal:1},rateOfFire:4.736842,burstInterval:.5,burstRounds:3,burstRateOfFire:15,distributorDraw:.25,thermalLoad:.38,armourPiercing:20,maximumRange:3e3,falloffRange:500,cost:4400},{symbol:"Hpt_PulseLaserBurst_Fixed_Medium",kind:"burstLasers",name:"Burst Laser",mount:"Fixed",class:2,rating:"E",mass:4,integrity:40,powerDraw:1.05,bootTime:0,damage:3.53,damageDistribution:{thermal:1},rateOfFire:3.695409,burstInterval:.63,burstRounds:3,burstRateOfFire:11,distributorDraw:.5,thermalLoad:.78,armourPiercing:35,maximumRange:3e3,falloffRange:500,cost:23e3},{symbol:"Hpt_PulseLaserBurst_Fixed_Large",kind:"burstLasers",name:"Burst Laser",mount:"Fixed",class:3,rating:"D",mass:8,integrity:64,powerDraw:1.66,bootTime:0,damage:7.73,damageDistribution:{thermal:1},rateOfFire:2.68886,burstInterval:.83,burstRounds:3,burstRateOfFire:7,distributorDraw:1.11,thermalLoad:1.7,armourPiercing:52,maximumRange:3e3,falloffRange:500,cost:140400},{symbol:"Hpt_PulseLaserBurst_Fixed_Huge",kind:"burstLasers",name:"Burst Laser",mount:"Fixed",class:4,rating:"E",mass:16,integrity:80,powerDraw:2.58,bootTime:0,damage:20.61,damageDistribution:{thermal:1},rateOfFire:1.565217,burstInterval:1.25,burstRounds:3,burstRateOfFire:3,distributorDraw:2.98,thermalLoad:4.53,armourPiercing:65,maximumRange:3e3,falloffRange:500,cost:281600},{symbol:"Hpt_PulseLaserBurst_Gimbal_Small",kind:"burstLasers",name:"Burst Laser",mount:"Gimballed",class:1,rating:"G",mass:2,integrity:40,powerDraw:.64,bootTime:0,damage:1.22,damageDistribution:{thermal:1},rateOfFire:5.284974,burstInterval:.45,burstRounds:3,burstRateOfFire:17,distributorDraw:.24,thermalLoad:.34,armourPiercing:20,maximumRange:3e3,falloffRange:500,cost:8600},{symbol:"Hpt_PulseLaserBurst_Gimbal_Medium",kind:"burstLasers",name:"Burst Laser",mount:"Gimballed",class:2,rating:"F",mass:4,integrity:40,powerDraw:1.04,bootTime:0,damage:2.45,damageDistribution:{thermal:1},rateOfFire:4.202586,burstInterval:.56,burstRounds:3,burstRateOfFire:13,distributorDraw:.49,thermalLoad:.67,armourPiercing:35,maximumRange:3e3,falloffRange:500,cost:48500},{symbol:"Hpt_PulseLaserBurst_Gimbal_Large",kind:"burstLasers",name:"Burst Laser",mount:"Gimballed",class:3,rating:"E",mass:8,integrity:64,powerDraw:1.65,bootTime:0,damage:5.16,damageDistribution:{thermal:1},rateOfFire:3.218117,burstInterval:.71,burstRounds:3,burstRateOfFire:9,distributorDraw:1.03,thermalLoad:1.42,armourPiercing:52,maximumRange:3e3,falloffRange:500,cost:281600},{symbol:"Hpt_PulseLaserBurst_Turret_Small",kind:"burstLasers",name:"Burst Laser",mount:"Turreted",class:1,rating:"G",mass:2,integrity:40,powerDraw:.6,bootTime:0,damage:.87,damageDistribution:{thermal:1},rateOfFire:4.79798,burstInterval:.52,burstRounds:3,burstRateOfFire:19,distributorDraw:.139,thermalLoad:.19,armourPiercing:20,maximumRange:3e3,falloffRange:500,cost:52800},{symbol:"Hpt_PulseLaserBurst_Turret_Medium",kind:"burstLasers",name:"Burst Laser",mount:"Turreted",class:2,rating:"F",mass:4,integrity:40,powerDraw:.98,bootTime:0,damage:1.72,damageDistribution:{thermal:1},rateOfFire:3.930131,burstInterval:.63,burstRounds:3,burstRateOfFire:15,distributorDraw:.275,thermalLoad:.38,armourPiercing:35,maximumRange:3e3,falloffRange:500,cost:162800},{symbol:"Hpt_PulseLaserBurst_Turret_Large",kind:"burstLasers",name:"Burst Laser",mount:"Turreted",class:3,rating:"E",mass:8,integrity:64,powerDraw:1.57,bootTime:0,damage:3.53,damageDistribution:{thermal:1},rateOfFire:3.119093,burstInterval:.78,burstRounds:3,burstRateOfFire:11,distributorDraw:.56,thermalLoad:.78,armourPiercing:52,maximumRange:3e3,falloffRange:500,cost:800400},{symbol:"Hpt_BeamLaser_Fixed_Small",kind:"beamLasers",name:"Beam Laser",mount:"Fixed",class:1,rating:"E",mass:2,integrity:40,powerDraw:.62,bootTime:0,damage:9.82,damageDistribution:{thermal:1},distributorDraw:1.94,thermalLoad:3.53,armourPiercing:18,maximumRange:3e3,falloffRange:600,cost:37430},{symbol:"Hpt_BeamLaser_Fixed_Medium",kind:"beamLasers",name:"Beam Laser",mount:"Fixed",class:2,rating:"D",mass:4,integrity:51,powerDraw:1.01,bootTime:0,damage:15.96,damageDistribution:{thermal:1},distributorDraw:3.16,thermalLoad:5.11,armourPiercing:35,maximumRange:3e3,falloffRange:600,cost:299520},{symbol:"Hpt_BeamLaser_Fixed_Large",kind:"beamLasers",name:"Beam Laser",mount:"Fixed",class:3,rating:"C",mass:8,integrity:64,powerDraw:1.62,bootTime:0,damage:25.78,damageDistribution:{thermal:1},distributorDraw:5.1,thermalLoad:7.22,armourPiercing:50,maximumRange:3e3,falloffRange:600,cost:1177600},{symbol:"Hpt_BeamLaser_Fixed_Huge",kind:"beamLasers",name:"Beam Laser",mount:"Fixed",class:4,rating:"A",mass:16,integrity:80,powerDraw:2.61,bootTime:0,damage:41.38,damageDistribution:{thermal:1},distributorDraw:8.19,thermalLoad:9.93,armourPiercing:60,maximumRange:3e3,falloffRange:600,cost:2396160},{symbol:"Hpt_BeamLaser_Gimbal_Small",kind:"beamLasers",name:"Beam Laser",mount:"Gimballed",class:1,rating:"E",mass:2,integrity:40,powerDraw:.6,bootTime:0,damage:7.68,damageDistribution:{thermal:1},distributorDraw:2.11,thermalLoad:3.65,armourPiercing:18,maximumRange:3e3,falloffRange:600,cost:74650},{symbol:"Hpt_BeamLaser_Gimbal_Medium",kind:"beamLasers",name:"Beam Laser",mount:"Gimballed",class:2,rating:"D",mass:4,integrity:51,powerDraw:1,bootTime:0,damage:12.52,damageDistribution:{thermal:1},distributorDraw:3.44,thermalLoad:5.32,armourPiercing:35,maximumRange:3e3,falloffRange:600,cost:500600},{symbol:"Hpt_BeamLaser_Gimbal_Large",kind:"beamLasers",name:"Beam Laser",mount:"Gimballed",class:3,rating:"C",mass:8,integrity:64,powerDraw:1.6,bootTime:0,damage:20.3,damageDistribution:{thermal:1},distributorDraw:5.58,thermalLoad:7.61,armourPiercing:50,maximumRange:3e3,falloffRange:600,cost:2396160},{symbol:"Hpt_BeamLaser_Turret_Small",kind:"beamLasers",name:"Beam Laser",mount:"Turreted",class:1,rating:"F",mass:2,integrity:40,powerDraw:.57,bootTime:0,damage:5.4,damageDistribution:{thermal:1},distributorDraw:1.32,thermalLoad:2.4,armourPiercing:18,maximumRange:3e3,falloffRange:600,cost:5e5},{symbol:"Hpt_BeamLaser_Turret_Medium",kind:"beamLasers",name:"Beam Laser",mount:"Turreted",class:2,rating:"E",mass:4,integrity:51,powerDraw:.93,bootTime:0,damage:8.83,damageDistribution:{thermal:1},distributorDraw:2.16,thermalLoad:3.53,armourPiercing:35,maximumRange:3e3,falloffRange:600,cost:2099900},{symbol:"Hpt_BeamLaser_Turret_Large",kind:"beamLasers",name:"Beam Laser",mount:"Turreted",class:3,rating:"D",mass:8,integrity:64,powerDraw:1.51,bootTime:0,damage:14.36,damageDistribution:{thermal:1},distributorDraw:3.51,thermalLoad:5.11,armourPiercing:50,maximumRange:3e3,falloffRange:600,cost:19399600},{symbol:"Hpt_Cannon_Fixed_Small",kind:"cannons",name:"Cannon",mount:"Fixed",class:1,rating:"D",mass:2,integrity:40,powerDraw:.34,bootTime:0,damage:22.5,damageDistribution:{kinetic:1},rateOfFire:.5,burstInterval:2,clipSize:6,ammoMaximum:120,reloadTime:3,distributorDraw:.46,thermalLoad:1.38,armourPiercing:35,maximumRange:3e3,falloffRange:3e3,shotSpeed:1200,cost:21100},{symbol:"Hpt_Cannon_Fixed_Medium",kind:"cannons",name:"Cannon",mount:"Fixed",class:2,rating:"D",mass:4,integrity:51,powerDraw:.49,bootTime:0,damage:36.875,damageDistribution:{kinetic:1},rateOfFire:.460829,burstInterval:2.17,clipSize:6,ammoMaximum:120,reloadTime:3,distributorDraw:.7,thermalLoad:2.11,armourPiercing:50,maximumRange:3500,falloffRange:3500,shotSpeed:1051.051025,cost:168430},{symbol:"Hpt_Cannon_Fixed_Large",kind:"cannons",name:"Cannon",mount:"Fixed",class:3,rating:"C",mass:8,integrity:64,powerDraw:.67,bootTime:0,damage:55.625,damageDistribution:{kinetic:1},rateOfFire:.420168,burstInterval:2.38,clipSize:6,ammoMaximum:120,reloadTime:3,distributorDraw:1.07,thermalLoad:3.2,armourPiercing:70,maximumRange:4e3,falloffRange:4e3,shotSpeed:959.232605,cost:675200},{symbol:"Hpt_Cannon_Fixed_Huge",kind:"cannons",name:"Cannon",mount:"Fixed",class:4,rating:"B",mass:16,integrity:80,powerDraw:.92,bootTime:0,damage:83.125,damageDistribution:{kinetic:1},rateOfFire:.380228,burstInterval:2.63,clipSize:6,ammoMaximum:120,reloadTime:3,distributorDraw:1.61,thermalLoad:4.83,armourPiercing:90,maximumRange:4500,falloffRange:4500,shotSpeed:900,cost:2700800},{symbol:"Hpt_Cannon_Gimbal_Small",kind:"cannons",name:"Cannon",mount:"Gimballed",class:1,rating:"E",mass:2,integrity:40,powerDraw:.38,bootTime:0,damage:15.92,damageDistribution:{kinetic:1},rateOfFire:.520833,burstInterval:1.92,clipSize:5,ammoMaximum:100,reloadTime:4,distributorDraw:.48,thermalLoad:1.25,armourPiercing:35,maximumRange:3e3,falloffRange:3e3,shotSpeed:1e3,cost:42200},{symbol:"Hpt_Cannon_Gimbal_Medium",kind:"cannons",name:"Cannon",mount:"Gimballed",class:2,rating:"D",mass:4,integrity:51,powerDraw:.54,bootTime:0,damage:25.53,damageDistribution:{kinetic:1},rateOfFire:.480769,burstInterval:2.08,clipSize:5,ammoMaximum:100,reloadTime:4,distributorDraw:.75,thermalLoad:1.92,armourPiercing:50,maximumRange:3500,falloffRange:3500,shotSpeed:875,cost:337600},{symbol:"Hpt_Cannon_Gimbal_Huge",kind:"cannons",name:"Cannon",mount:"Gimballed",class:4,rating:"B",mass:16,integrity:80,powerDraw:1.03,bootTime:0,damage:56.59,damageDistribution:{kinetic:1},rateOfFire:.4,burstInterval:2.5,clipSize:5,ammoMaximum:100,reloadTime:4,distributorDraw:1.72,thermalLoad:4.43,armourPiercing:90,maximumRange:4500,falloffRange:4500,shotSpeed:750,cost:5401600},{symbol:"Hpt_Cannon_Turret_Small",kind:"cannons",name:"Cannon",mount:"Turreted",class:1,rating:"F",mass:2,integrity:40,powerDraw:.32,bootTime:0,damage:12.77,damageDistribution:{kinetic:1},rateOfFire:.4329,burstInterval:2.31,clipSize:5,ammoMaximum:100,reloadTime:4,distributorDraw:.22,thermalLoad:.67,armourPiercing:35,maximumRange:3e3,falloffRange:3e3,shotSpeed:1e3,cost:506400},{symbol:"Hpt_Cannon_Turret_Medium",kind:"cannons",name:"Cannon",mount:"Turreted",class:2,rating:"E",mass:4,integrity:51,powerDraw:.45,bootTime:0,damage:19.79,damageDistribution:{kinetic:1},rateOfFire:.4,burstInterval:2.5,clipSize:5,ammoMaximum:100,reloadTime:4,distributorDraw:.34,thermalLoad:1.03,armourPiercing:50,maximumRange:3500,falloffRange:3500,shotSpeed:875,cost:4051200},{symbol:"Hpt_Cannon_Turret_Large",kind:"cannons",name:"Cannon",mount:"Turreted",class:3,rating:"D",mass:8,integrity:64,powerDraw:.64,bootTime:0,damage:30.34,damageDistribution:{kinetic:1},rateOfFire:.367647,burstInterval:2.72,clipSize:5,ammoMaximum:100,reloadTime:4,distributorDraw:.53,thermalLoad:1.58,armourPiercing:70,maximumRange:4e3,falloffRange:4e3,shotSpeed:800,cost:16204800},{symbol:"Hpt_Slugshot_Fixed_Small",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Fixed",class:1,rating:"E",mass:2,integrity:40,powerDraw:.45,bootTime:0,damage:1.43,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:5.555556,burstInterval:.18,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.21,thermalLoad:.41,armourPiercing:20,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:36e3},{symbol:"Hpt_Slugshot_Fixed_Medium",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Fixed",class:2,rating:"A",mass:4,integrity:51,powerDraw:.74,bootTime:0,damage:2.985,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:5,burstInterval:.2,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.37,thermalLoad:.74,armourPiercing:30,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:291840},{symbol:"Hpt_Slugshot_Fixed_Large",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Fixed",class:3,rating:"C",mass:8,integrity:64,powerDraw:1.02,bootTime:0,damage:4.57,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:4.545455,burstInterval:.22,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.57,thermalLoad:1.13,armourPiercing:45,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:1167360},{symbol:"Hpt_Slugshot_Gimbal_Small",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Gimballed",class:1,rating:"E",mass:2,integrity:40,powerDraw:.59,bootTime:0,damage:1.01,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:5.882353,burstInterval:.17,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.26,thermalLoad:.44,armourPiercing:20,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:54720},{symbol:"Hpt_Slugshot_Gimbal_Medium",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Gimballed",class:2,rating:"D",mass:4,integrity:51,powerDraw:1.03,bootTime:0,damage:2.274,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:5.263158,burstInterval:.19,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.49,thermalLoad:.84,armourPiercing:30,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:437760},{symbol:"Hpt_Slugshot_Turret_Small",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Turreted",class:1,rating:"E",mass:2,integrity:40,powerDraw:.42,bootTime:0,damage:.69,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:4.761905,burstInterval:.21,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.1,thermalLoad:.2,armourPiercing:20,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:182400},{symbol:"Hpt_Slugshot_Turret_Medium",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Turreted",class:2,rating:"D",mass:4,integrity:51,powerDraw:.79,bootTime:0,damage:1.67,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:4.347826,burstInterval:.23,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.21,thermalLoad:.41,armourPiercing:30,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:1459200},{symbol:"Hpt_MultiCannon_Fixed_Small",kind:"multiCannons",name:"Multi-Cannon",mount:"Fixed",class:1,rating:"F",mass:2,integrity:40,powerDraw:.28,bootTime:0,damage:1.12,damageDistribution:{kinetic:1},rateOfFire:7.692308,burstInterval:.13,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.06,thermalLoad:.09,armourPiercing:22,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:9500},{symbol:"Hpt_MultiCannon_Fixed_Medium",kind:"multiCannons",name:"Multi-Cannon",mount:"Fixed",class:2,rating:"E",mass:4,integrity:51,powerDraw:.46,bootTime:0,damage:2.19,damageDistribution:{kinetic:1},rateOfFire:7.142857,burstInterval:.14,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.11,thermalLoad:.18,armourPiercing:37,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:38e3},{symbol:"Hpt_MultiCannon_Fixed_Large",kind:"multiCannons",name:"Multi-Cannon",mount:"Fixed",class:3,rating:"C",mass:8,integrity:64,powerDraw:.64,bootTime:0,damage:3.925,damageDistribution:{kinetic:1},rateOfFire:5.882353,burstInterval:.17,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.18,thermalLoad:.28,armourPiercing:54,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:140400},{symbol:"Hpt_MultiCannon_Fixed_Huge",kind:"multiCannons",name:"Multi-Cannon",mount:"Fixed",class:4,rating:"A",mass:16,integrity:80,powerDraw:.73,bootTime:0,damage:4.625,damageDistribution:{kinetic:1},roundsPerShot:2,rateOfFire:3.030303,burstInterval:.33,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.24,thermalLoad:.39,armourPiercing:68,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:1177600},{symbol:"Hpt_MultiCannon_Gimbal_Small",kind:"multiCannons",name:"Multi-Cannon",mount:"Gimballed",class:1,rating:"G",mass:2,integrity:40,powerDraw:.37,bootTime:0,damage:.82,damageDistribution:{kinetic:1},rateOfFire:8.333333,burstInterval:.12,clipSize:90,ammoMaximum:2100,reloadTime:5,distributorDraw:.07,thermalLoad:.1,armourPiercing:22,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:14250},{symbol:"Hpt_MultiCannon_Gimbal_Medium",kind:"multiCannons",name:"Multi-Cannon",mount:"Gimballed",class:2,rating:"F",mass:4,integrity:51,powerDraw:.64,bootTime:0,damage:1.64,damageDistribution:{kinetic:1},rateOfFire:7.692308,burstInterval:.13,clipSize:90,ammoMaximum:2100,reloadTime:5,distributorDraw:.14,thermalLoad:.2,armourPiercing:37,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:57e3},{symbol:"Hpt_MultiCannon_Gimbal_Large",kind:"multiCannons",name:"Multi-Cannon",mount:"Gimballed",class:3,rating:"C",mass:8,integrity:64,powerDraw:.97,bootTime:0,damage:2.84,damageDistribution:{kinetic:1},rateOfFire:6.666667,burstInterval:.15,clipSize:90,ammoMaximum:2100,reloadTime:5,distributorDraw:.25,thermalLoad:.34,armourPiercing:54,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:578436},{symbol:"Hpt_MultiCannon_Turret_Small",kind:"multiCannons",name:"Multi-Cannon",mount:"Turreted",class:1,rating:"G",mass:2,integrity:40,powerDraw:.26,bootTime:0,damage:.56,damageDistribution:{kinetic:1},rateOfFire:7.142857,burstInterval:.14,clipSize:90,ammoMaximum:2100,reloadTime:4,distributorDraw:.03,thermalLoad:.04,armourPiercing:22,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:81600},{symbol:"Hpt_MultiCannon_Turret_Medium",kind:"multiCannons",name:"Multi-Cannon",mount:"Turreted",class:2,rating:"F",mass:4,integrity:51,powerDraw:.5,bootTime:0,damage:1.17,damageDistribution:{kinetic:1},rateOfFire:6.25,burstInterval:.16,clipSize:90,ammoMaximum:2100,reloadTime:4,distributorDraw:.06,thermalLoad:.09,armourPiercing:37,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:1292800},{symbol:"Hpt_MultiCannon_Turret_Large",kind:"multiCannons",name:"Multi-Cannon",mount:"Turreted",class:3,rating:"E",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:.86,bootTime:0,damage:2.23,damageDistribution:{kinetic:1},rateOfFire:5.263158,burstInterval:.19,clipSize:90,ammoMaximum:2100,reloadTime:4,distributorDraw:.16,thermalLoad:.19,armourPiercing:54,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:3794600},{symbol:"Hpt_PlasmaAccelerator_Fixed_Medium",kind:"plasmaAccelerators",name:"Plasma Accelerator",mount:"Fixed",class:2,rating:"C",mass:4,integrity:51,powerDraw:1.43,bootTime:0,damage:54.3,damageDistribution:{kinetic:.2,thermal:.2,absolute:.6},rateOfFire:.330033,burstInterval:3.03,clipSize:5,ammoMaximum:100,reloadTime:6,distributorDraw:8.65,thermalLoad:15.58,armourPiercing:100,maximumRange:3500,falloffRange:2e3,shotSpeed:875,cost:834200},{symbol:"Hpt_PlasmaAccelerator_Fixed_Large",kind:"plasmaAccelerators",name:"Plasma Accelerator",mount:"Fixed",class:3,rating:"B",mass:8,integrity:64,powerDraw:1.97,bootTime:0,damage:83.4,damageDistribution:{kinetic:.2,thermal:.2,absolute:.6},rateOfFire:.289855,burstInterval:3.45,clipSize:5,ammoMaximum:100,reloadTime:6,distributorDraw:13.6,thermalLoad:21.75,armourPiercing:100,maximumRange:3500,falloffRange:2e3,shotSpeed:875,cost:3051200},{symbol:"Hpt_PlasmaAccelerator_Fixed_Huge",kind:"plasmaAccelerators",name:"Plasma Accelerator",mount:"Fixed",class:4,rating:"A",mass:16,integrity:80,powerDraw:2.63,bootTime:0,damage:125.25,damageDistribution:{kinetic:.2,thermal:.2,absolute:.6},rateOfFire:.25,burstInterval:4,clipSize:5,ammoMaximum:100,reloadTime:6,distributorDraw:21.04,thermalLoad:29.46,armourPiercing:100,maximumRange:3500,falloffRange:2e3,shotSpeed:875,cost:13793600},{symbol:"Hpt_Railgun_Fixed_Small",kind:"railGuns",name:"Rail Gun",mount:"Fixed",class:1,rating:"D",mass:2,integrity:40,powerDraw:1.15,bootTime:0,damage:23.34,damageDistribution:{kinetic:.3333333333333333,thermal:.6666666666666666},rateOfFire:1.587302,burstInterval:.63,chargeTime:1.2,clipSize:1,ammoMaximum:80,reloadTime:1,distributorDraw:2.69,thermalLoad:12,armourPiercing:100,maximumRange:3e3,falloffRange:1e3,cost:51600},{symbol:"Hpt_Railgun_Fixed_Medium",kind:"railGuns",name:"Rail Gun",mount:"Fixed",class:2,rating:"B",mass:4,integrity:51,powerDraw:1.63,bootTime:0,damage:41.53,damageDistribution:{kinetic:.3333333333333333,thermal:.6666666666666666},rateOfFire:1.204819,burstInterval:.83,chargeTime:1.2,clipSize:1,ammoMaximum:80,reloadTime:1,distributorDraw:5.11,thermalLoad:20,armourPiercing:100,maximumRange:3e3,falloffRange:1e3,cost:412800},{symbol:"Hpt_BasicMissileRack_Fixed_Small",kind:"missiles",name:"Seeker Missile Rack",mount:"Fixed",guidance:"Seeker",class:1,rating:"B",mass:2,integrity:40,powerDraw:.6,bootTime:0,damage:40,damageDistribution:{explosive:1},rateOfFire:.333333,burstInterval:3,clipSize:6,ammoMaximum:6,reloadTime:12,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:625,cost:72600},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",kind:"missiles",name:"Seeker Missile Rack",mount:"Fixed",guidance:"Seeker",class:2,rating:"B",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:40,damageDistribution:{explosive:1},rateOfFire:.333333,burstInterval:3,clipSize:6,ammoMaximum:18,reloadTime:12,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:625,cost:512400},{symbol:"Hpt_BasicMissileRack_Fixed_Large",kind:"missiles",name:"Seeker Missile Rack",mount:"Fixed",guidance:"Seeker",class:3,rating:"A",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:1.62,bootTime:0,damage:40,damageDistribution:{explosive:1},rateOfFire:.333333,burstInterval:3,clipSize:6,ammoMaximum:36,reloadTime:12,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:625,cost:1471030},{symbol:"Hpt_MineLauncher_Fixed_Small",kind:"mines",name:"Mine Launcher",mount:"Fixed",class:1,rating:"I",mass:2,integrity:40,powerDraw:.4,bootTime:0,damage:44,damageDistribution:{thermal:.5,explosive:.5},rateOfFire:1,burstInterval:1,clipSize:1,ammoMaximum:36,reloadTime:2,distributorDraw:0,thermalLoad:5,armourPiercing:60,cost:24260},{symbol:"Hpt_MineLauncher_Fixed_Medium",kind:"mines",name:"Mine Launcher",mount:"Fixed",class:2,rating:"I",mass:4,integrity:51,powerDraw:.4,bootTime:0,damage:44,damageDistribution:{thermal:.5,explosive:.5},rateOfFire:1,burstInterval:1,clipSize:3,ammoMaximum:72,reloadTime:6.6,distributorDraw:0,thermalLoad:7.5,armourPiercing:60,cost:294080},{symbol:"Hpt_AdvancedTorpPylon_Fixed_Small",kind:"torpedoes",name:"Torpedo Pylon",mount:"Fixed",guidance:"Seeker",class:1,rating:"I",mass:2,integrity:40,powerDraw:.4,bootTime:0,damage:120,damageDistribution:{explosive:1},rateOfFire:1,burstInterval:1,clipSize:1,ammoMaximum:1,reloadTime:5,distributorDraw:0,thermalLoad:45,armourPiercing:1e4,shotSpeed:250,cost:11200},{symbol:"Hpt_AdvancedTorpPylon_Fixed_Medium",kind:"torpedoes",name:"Torpedo Pylon",mount:"Fixed",guidance:"Seeker",class:2,rating:"I",mass:4,integrity:51,powerDraw:.4,bootTime:0,damage:120,damageDistribution:{explosive:1},rateOfFire:1,burstInterval:1,clipSize:2,ammoMaximum:2,reloadTime:5,distributorDraw:0,thermalLoad:50,armourPiercing:1e4,shotSpeed:250,cost:44800},{symbol:"Hpt_AdvancedTorpPylon_Fixed_Large",kind:"torpedoes",name:"Torpedo Pylon",mount:"Fixed",guidance:"Seeker",class:3,rating:"I",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:.6,bootTime:0,damage:120,damageDistribution:{explosive:1},rateOfFire:1,burstInterval:1,clipSize:4,ammoMaximum:4,reloadTime:5,distributorDraw:0,thermalLoad:55,armourPiercing:1e4,shotSpeed:250,cost:157960},{symbol:"Hpt_MiningLaser_Fixed_Small",name:"Mining Laser",mount:"Fixed",class:1,rating:"D",mass:2,integrity:40,powerDraw:.5,bootTime:0,damage:2,damageDistribution:{thermal:1},distributorDraw:1.5,thermalLoad:2,armourPiercing:18,maximumRange:500,falloffRange:300,cost:6800},{symbol:"Hpt_MiningLaser_Fixed_Medium",name:"Mining Laser",mount:"Fixed",class:2,rating:"D",mass:2,integrity:51,powerDraw:.75,bootTime:0,damage:4,damageDistribution:{thermal:1},distributorDraw:3,thermalLoad:4,armourPiercing:18,maximumRange:500,falloffRange:300,cost:22576},{symbol:"Hpt_DumbfireMissileRack_Fixed_Small",kind:"missiles",name:"Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:1,rating:"B",mass:2,integrity:40,powerDraw:.4,bootTime:0,damage:50,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:8,ammoMaximum:16,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:750,cost:32175},{symbol:"Hpt_DumbfireMissileRack_Fixed_Medium",kind:"missiles",name:"Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:2,rating:"B",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:50,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:12,ammoMaximum:48,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:750,cost:240400},{symbol:"Hpt_Cannon_Gimbal_Large",kind:"cannons",name:"Cannon",mount:"Gimballed",class:3,rating:"C",mass:8,integrity:64,powerDraw:.75,bootTime:0,damage:37.421001,damageDistribution:{kinetic:1},rateOfFire:.440529,burstInterval:2.27,clipSize:5,ammoMaximum:100,reloadTime:4,distributorDraw:1.14,thermalLoad:2.93,armourPiercing:70,maximumRange:4e3,falloffRange:4e3,shotSpeed:800,cost:1350400},{symbol:"Hpt_Slugshot_Gimbal_Large",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Gimballed",class:3,rating:"C",mass:8,integrity:64,powerDraw:1.55,bootTime:0,damage:3.77,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:4.761905,burstInterval:.21,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.81,thermalLoad:1.4,armourPiercing:45,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:1751040},{symbol:"Hpt_Slugshot_Turret_Large",kind:"fragmentCannons",name:"Fragment Cannon",mount:"Turreted",class:3,rating:"C",mass:8,integrity:64,powerDraw:1.29,bootTime:0,damage:2.985,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:4,burstInterval:.25,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.37,thermalLoad:.74,armourPiercing:45,maximumRange:2e3,falloffRange:1800,shotSpeed:667,jitter:5,cost:5836800},{symbol:"Hpt_PlasmaAccelerator_Fixed_Large_Advanced",kind:"plasmaAccelerators",name:"Advanced Plasma Accelerator",mount:"Fixed",class:3,rating:"B",entitlement:"ELITE_SPECIFIC_V_POWER_200050",mass:8,integrity:64,powerDraw:1.97,bootTime:0,damage:34.4,damageDistribution:{kinetic:.2,thermal:.2,absolute:.6},rateOfFire:.833333,burstInterval:1.2,clipSize:20,ammoMaximum:300,reloadTime:6,distributorDraw:5.5,thermalLoad:11,armourPiercing:100,maximumRange:3500,falloffRange:2e3,shotSpeed:875,cost:4119120},{symbol:"Hpt_MiningLaser_Fixed_Small_Advanced",name:"Mining Lance",mount:"Fixed",class:1,rating:"D",entitlement:"ELITE_SPECIFIC_V_POWER_200120",mass:2,integrity:40,powerDraw:.7,bootTime:0,damage:8,damageDistribution:{thermal:1},distributorDraw:1.75,thermalLoad:6,armourPiercing:18,maximumRange:2e3,falloffRange:500,cost:13600},{symbol:"Hpt_Railgun_Fixed_Medium_Burst",kind:"railGuns",name:"Imperial Hammer Rail Gun",mount:"Fixed",class:2,rating:"B",entitlement:"ELITE_SPECIFIC_V_POWER_200010",mass:4,integrity:51,powerDraw:1.63,bootTime:0,damage:15,damageDistribution:{kinetic:.3333333333333333,thermal:.6666666666666666},rateOfFire:4.090909,burstInterval:.4,burstRounds:3,burstRateOfFire:6,chargeTime:1.2,clipSize:3,ammoMaximum:240,reloadTime:1.2,distributorDraw:2,thermalLoad:11,armourPiercing:100,maximumRange:3e3,falloffRange:1e3,cost:619200},{symbol:"Hpt_PulseLaser_Fixed_Medium_Disruptor",kind:"pulseLasers",name:"Pulse Disruptor Laser",mount:"Fixed",class:2,rating:"E",entitlement:"ELITE_SPECIFIC_V_POWER_200070",mass:4,integrity:51,powerDraw:.7,bootTime:0,damage:2.8,damageDistribution:{thermal:1},rateOfFire:1.666667,burstInterval:.6,distributorDraw:.9,thermalLoad:1,armourPiercing:35,falloffRange:500,cost:26400},{symbol:"Hpt_Slugshot_Fixed_Large_Range",kind:"fragmentCannons",name:"Pacifier Frag-Cannon",mount:"Fixed",class:3,rating:"C",entitlement:"ELITE_SPECIFIC_V_POWER_200140",mass:8,integrity:64,powerDraw:1.02,bootTime:0,damage:3.96,damageDistribution:{kinetic:1},roundsPerShot:12,rateOfFire:4.545455,burstInterval:.22,clipSize:3,ammoMaximum:180,reloadTime:5,distributorDraw:.57,thermalLoad:1.13,armourPiercing:45,maximumRange:3e3,falloffRange:2800,shotSpeed:1e3,jitter:1.7,cost:1751040},{symbol:"Hpt_DrunkMissileRack_Fixed_Medium",kind:"missiles",name:"Pack-Hound Missile Rack",mount:"Fixed",guidance:"Swarm",class:2,rating:"B",entitlement:"ELITE_SPECIFIC_V_POWER_200080",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:7.5,damageDistribution:{explosive:1},roundsPerShot:4,rateOfFire:2,burstInterval:.5,clipSize:12,ammoMaximum:120,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:600,cost:768600},{symbol:"Hpt_MultiCannon_Fixed_Small_Strong",kind:"multiCannons",name:"Enforcer Cannon",mount:"Fixed",class:1,rating:"F",entitlement:"ELITE_SPECIFIC_V_POWER_200090",mass:2,integrity:40,powerDraw:.28,bootTime:0,damage:2.85,damageDistribution:{kinetic:1},rateOfFire:4.347826,burstInterval:.23,clipSize:60,ammoMaximum:1e3,reloadTime:4,distributorDraw:.12,thermalLoad:.18,armourPiercing:30,maximumRange:4500,falloffRange:3e3,shotSpeed:1800,cost:13980},{symbol:"Hpt_BeamLaser_Fixed_Small_Heat",kind:"beamLasers",name:"Retributor Beam Laser",mount:"Fixed",class:1,rating:"E",entitlement:"ELITE_SPECIFIC_V_POWER_200060",mass:2,integrity:40,powerDraw:.62,bootTime:0,damage:4.91,damageDistribution:{thermal:1},distributorDraw:2.52,thermalLoad:2.7,armourPiercing:18,maximumRange:3e3,falloffRange:800,cost:56150},{symbol:"Hpt_MineLauncher_Fixed_Small_Impulse",kind:"mines",name:"Shock Mine Launcher",mount:"Fixed",class:1,rating:"I",mass:2,integrity:40,powerDraw:.4,bootTime:0,damage:32,damageDistribution:{thermal:.5,explosive:.5},rateOfFire:1,burstInterval:1,clipSize:1,ammoMaximum:36,reloadTime:2,distributorDraw:0,thermalLoad:5,armourPiercing:60,cost:36390},{symbol:"Hpt_PulseLaserBurst_Fixed_Small_Scatter",kind:"burstLasers",name:"Cytoscrambler Burst Laser",mount:"Fixed",class:1,rating:"F",entitlement:"ELITE_SPECIFIC_V_POWER_200030",mass:2,integrity:40,powerDraw:.8,bootTime:0,damage:3.6,damageDistribution:{thermal:1},rateOfFire:7.619048,burstInterval:.7,burstRounds:8,burstRateOfFire:20,distributorDraw:.31,thermalLoad:.28,armourPiercing:1,maximumRange:1e3,falloffRange:600,jitter:1.7,cost:8800},{symbol:"Hpt_BeamLaser_Gimbal_Huge",kind:"beamLasers",name:"Beam Laser",mount:"Gimballed",class:4,rating:"A",mass:16,integrity:80,powerDraw:2.57,bootTime:0,damage:32.68,damageDistribution:{thermal:1},distributorDraw:8.99,thermalLoad:10.62,armourPiercing:60,maximumRange:3e3,falloffRange:600,cost:8746160},{symbol:"Hpt_PulseLaser_Gimbal_Huge",kind:"pulseLasers",name:"Pulse Laser",mount:"Gimballed",class:4,rating:"A",mass:16,integrity:80,powerDraw:1.37,bootTime:0,damage:7.82,damageDistribution:{thermal:1},rateOfFire:2.777778,burstInterval:.36,distributorDraw:1.56,thermalLoad:1.56,armourPiercing:65,maximumRange:3e3,falloffRange:500,cost:877600},{symbol:"Hpt_MultiCannon_Gimbal_Huge",kind:"multiCannons",name:"Multi-Cannon",mount:"Gimballed",class:4,rating:"A",mass:16,integrity:80,powerDraw:1.22,bootTime:0,damage:3.46,damageDistribution:{kinetic:1},roundsPerShot:2,rateOfFire:3.367003,burstInterval:.297,clipSize:90,ammoMaximum:2100,reloadTime:5,distributorDraw:.37,thermalLoad:.51,armourPiercing:68,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:6377600},{symbol:"Hpt_PulseLaserBurst_Gimbal_Huge",kind:"burstLasers",name:"Burst Laser",mount:"Gimballed",class:4,rating:"E",mass:16,integrity:64,powerDraw:2.59,bootTime:0,damage:12.09,damageDistribution:{thermal:1},rateOfFire:2.142857,burstInterval:1,burstRounds:3,burstRateOfFire:5,distributorDraw:2.41,thermalLoad:3.33,armourPiercing:65,maximumRange:3e3,falloffRange:500,cost:1245600},{symbol:"Hpt_DumbfireMissileRack_Fixed_Medium_Lasso",kind:"missiles",name:"Rocket Propelled FSD Disruptor",mount:"Fixed",guidance:"Dumbfire",class:2,rating:"B",entitlement:"ELITE_SPECIFIC_V_POWER_200100",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:40,damageDistribution:{explosive:1},rateOfFire:.333333,burstInterval:3,clipSize:12,ammoMaximum:48,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:750,cost:1951040},{symbol:"Hpt_MiningLaser_Turret_Small",name:"Mining Laser",mount:"Turreted",class:1,rating:"D",mass:2,integrity:40,powerDraw:.5,bootTime:0,damage:2,damageDistribution:{thermal:1},distributorDraw:1.5,thermalLoad:2,armourPiercing:18,maximumRange:500,falloffRange:300,cost:9400},{symbol:"Hpt_MiningLaser_Turret_Medium",name:"Mining Laser",mount:"Turreted",class:2,rating:"D",mass:2,integrity:51,powerDraw:.75,bootTime:0,damage:4,damageDistribution:{thermal:1},distributorDraw:3,thermalLoad:4,armourPiercing:18,maximumRange:500,falloffRange:300,cost:32576},{symbol:"Hpt_FlakMortar_Fixed_Medium",name:"Remote Release Flak Launcher",mount:"Fixed",class:2,rating:"B",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:34,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:32,reloadTime:2,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,falloffRange:1e5,shotSpeed:550,cost:261800},{symbol:"Hpt_ATDumbfireMissile_Fixed_Medium",kind:"antiXenoMissileRacks",name:"AX Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:2,rating:"B",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:27,damageDistribution:{explosive:1,antiXeno:1.5925925925925926},rateOfFire:.5,burstInterval:2,clipSize:8,ammoMaximum:64,reloadTime:5,distributorDraw:.14,thermalLoad:2.4,armourPiercing:60,shotSpeed:750,cost:540900,damageComponents:{explosive:27,antiXeno:43},projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_ATDumbfireMissile_Fixed_Large",kind:"antiXenoMissileRacks",name:"AX Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:3,rating:"A",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:1.62,bootTime:0,damage:27,damageDistribution:{explosive:1,antiXeno:1.5925925925925926},rateOfFire:.5,burstInterval:2,clipSize:12,ammoMaximum:128,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:750,cost:1352250,damageComponents:{explosive:27,antiXeno:43},projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_ATMultiCannon_Fixed_Medium",name:"AX Multi-Cannon",mount:"Fixed",class:2,rating:"E",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:.46,bootTime:0,damage:1.12,damageDistribution:{kinetic:1,antiXeno:1.9553571428571426},rateOfFire:7.142857,burstInterval:.14,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.11,thermalLoad:.18,armourPiercing:17,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:379e3,damageComponents:{kinetic:1.12,antiXeno:2.19}},{symbol:"Hpt_ATMultiCannon_Fixed_Large",name:"AX Multi-Cannon",mount:"Fixed",class:3,rating:"C",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:.64,bootTime:0,damage:2.19,damageDistribution:{kinetic:1,antiXeno:1.7922374429223744},rateOfFire:5.882353,burstInterval:.17,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.18,thermalLoad:.28,armourPiercing:33,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:1181500,damageComponents:{kinetic:2.19,antiXeno:3.925}},{symbol:"Hpt_ATDumbfireMissile_Turret_Medium",name:"AX Missile Rack",mount:"Turreted",guidance:"Dumbfire",class:2,rating:"B",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:20,damageDistribution:{explosive:1,antiXeno:1.85},rateOfFire:.5,burstInterval:2,clipSize:8,ammoMaximum:64,reloadTime:5,distributorDraw:.08,thermalLoad:1.5,armourPiercing:60,shotSpeed:750,cost:2022700,damageComponents:{explosive:20,antiXeno:37},projectileRange:{maximumBoundary:5e3,falloffBoundary:1e5}},{symbol:"Hpt_ATDumbfireMissile_Turret_Large",name:"AX Missile Rack",mount:"Turreted",guidance:"Dumbfire",class:3,rating:"A",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:1.75,bootTime:0,damage:20,damageDistribution:{explosive:1,antiXeno:1.85},rateOfFire:.5,burstInterval:2,clipSize:12,ammoMaximum:128,reloadTime:5,distributorDraw:.14,thermalLoad:1.9,armourPiercing:60,shotSpeed:750,cost:4056750,damageComponents:{explosive:20,antiXeno:37},projectileRange:{maximumBoundary:5e3,falloffBoundary:1e5}},{symbol:"Hpt_FlakMortar_Turret_Medium",name:"Remote Release Flak Launcher",mount:"Turreted",class:2,rating:"B",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:34,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:32,reloadTime:2,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,falloffRange:1e5,shotSpeed:550,cost:1259200},{symbol:"Hpt_ATMultiCannon_Turret_Medium",name:"AX Multi-Cannon",mount:"Turreted",class:2,rating:"F",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:.5,bootTime:0,damage:.56,damageDistribution:{kinetic:1,antiXeno:2.089285714285714},rateOfFire:6.25,burstInterval:.16,clipSize:90,ammoMaximum:2100,reloadTime:4,distributorDraw:.06,thermalLoad:.09,armourPiercing:17,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:1826500,damageComponents:{kinetic:.56,antiXeno:1.17}},{symbol:"Hpt_ATMultiCannon_Turret_Large",name:"AX Multi-Cannon",mount:"Turreted",class:3,rating:"E",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:.64,bootTime:0,damage:1.12,damageDistribution:{kinetic:1,antiXeno:1.9553571428571426},rateOfFire:6.25,burstInterval:.16,clipSize:90,ammoMaximum:2100,reloadTime:4,distributorDraw:.06,thermalLoad:.09,armourPiercing:33,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:3821600,damageComponents:{kinetic:1.12,antiXeno:2.19}},{symbol:"Hpt_Guardian_GaussCannon_Fixed_Medium",kind:"guardianGauss",name:"Guardian Gauss Cannon",mount:"Fixed",class:2,rating:"B",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_GAUSS_FIXED_MEDIUM",mass:4,integrity:42,powerDraw:2.61,bootTime:0,damage:38.5,damageDistribution:{thermal:1,antiXeno:1},rateOfFire:1.204819,burstInterval:.83,burstRounds:1,clipSize:1,ammoMaximum:80,reloadTime:1,distributorDraw:7.2,thermalLoad:25,armourPiercing:140,maximumRange:3e3,falloffRange:1500,cost:543801,damageComponents:{thermal:38.5,antiXeno:38.5}},{symbol:"Hpt_CausticMissile_Fixed_Medium",kind:"experimentalWeapons",name:"Enzyme Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:2,rating:"B",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_CAUSTIC_MEDIUM",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:5,damageDistribution:{explosive:.8,unclassified:.2},rateOfFire:.5,burstInterval:2,clipSize:8,ammoMaximum:64,reloadTime:5,distributorDraw:.08,thermalLoad:1.5,armourPiercing:60,shotSpeed:750,cost:480501,damageComponents:{explosive:4,unclassified:[1]}},{symbol:"Hpt_FlechetteLauncher_Fixed_Medium",name:"Remote Release Flechette Launcher",mount:"Fixed",class:2,rating:"B",entitlement:"ELITE_HORIZONS_V_FLECHETTE_FIXED_MEDIUM",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:13,damageDistribution:{kinetic:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:72,reloadTime:2,distributorDraw:.24,thermalLoad:3.6,armourPiercing:80,shotSpeed:550,cost:353761},{symbol:"Hpt_FlechetteLauncher_Turret_Medium",name:"Remote Release Flechette Launcher",mount:"Turreted",class:2,rating:"B",entitlement:"ELITE_HORIZONS_V_FLECHETTE_TURRET_MEDIUM",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:13,damageDistribution:{kinetic:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:72,reloadTime:2,distributorDraw:.24,thermalLoad:3.6,armourPiercing:70,shotSpeed:550,cost:1279200},{symbol:"Hpt_Guardian_PlasmaLauncher_Fixed_Medium",kind:"guardianPlasma",name:"Guardian Plasma Charger",mount:"Fixed",class:2,rating:"B",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_PLASMA_FIXED_MEDIUM",mass:4,integrity:42,powerDraw:2.13,bootTime:0,damage:2.5,damageDistribution:{absolute:1,antiXeno:1},rateOfFire:5,burstInterval:.2,clipSize:15,ammoMaximum:200,reloadTime:3,distributorDraw:1.25,thermalLoad:5.21,armourPiercing:80,maximumRange:3e3,falloffRange:1e3,shotSpeed:1200,cost:567761,damageComponents:{absolute:2.5,antiXeno:2.5}},{symbol:"Hpt_Guardian_PlasmaLauncher_Turret_Medium",kind:"guardianPlasma",name:"Guardian Plasma Charger",mount:"Turreted",class:2,rating:"E",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_PLASMA_TURRET_MEDIUM",mass:4,integrity:42,powerDraw:2.01,bootTime:0,damage:2,damageDistribution:{absolute:1,antiXeno:1},rateOfFire:5,burstInterval:.2,clipSize:15,ammoMaximum:200,reloadTime:3,distributorDraw:1.4,thermalLoad:5.8,armourPiercing:80,maximumRange:3e3,falloffRange:1e3,shotSpeed:1200,cost:1659200,damageComponents:{absolute:2,antiXeno:2}},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Medium",kind:"guardianShard",name:"Guardian Shard Cannon",mount:"Fixed",class:2,rating:"A",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_SHARD_FIXED_MEDIUM",mass:4,integrity:42,powerDraw:1.21,bootTime:0,damage:3.7235,damageDistribution:{thermal:1,antiXeno:1},roundsPerShot:12,rateOfFire:1.666667,burstInterval:.6,clipSize:5,ammoMaximum:180,reloadTime:5,distributorDraw:.65,thermalLoad:1.2,armourPiercing:45,maximumRange:1700,falloffRange:1700,shotSpeed:1133.333374,jitter:5,cost:507761,damageComponents:{thermal:3.7235,antiXeno:3.7235}},{symbol:"Hpt_Guardian_ShardCannon_Turret_Medium",kind:"guardianShard",name:"Guardian Shard Cannon",mount:"Turreted",class:2,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_SHARD_TURRET_MEDIUM",mass:4,integrity:42,powerDraw:1.16,bootTime:0,damage:2.17,damageDistribution:{thermal:1,antiXeno:1},roundsPerShot:12,rateOfFire:1.666667,burstInterval:.6,clipSize:5,ammoMaximum:180,reloadTime:5,distributorDraw:.57,thermalLoad:1.09,armourPiercing:45,maximumRange:1700,falloffRange:1700,shotSpeed:1133,jitter:5,cost:1767001,damageComponents:{thermal:2.17,antiXeno:2.17}},{symbol:"Hpt_PlasmaShockCannon_Fixed_Medium",name:"Shock Cannon",mount:"Fixed",class:2,rating:"D",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_FIXED_MEDIUM",mass:4,integrity:51,powerDraw:.57,bootTime:0,damage:12.96,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.47,thermalLoad:1.8,armourPiercing:40,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:367501},{symbol:"Hpt_PlasmaShockCannon_Gimbal_Medium",name:"Shock Cannon",mount:"Gimballed",class:2,rating:"D",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_GIMBAL_MEDIUM",mass:4,integrity:51,powerDraw:.61,bootTime:0,damage:10.21,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.58,thermalLoad:2.1,armourPiercing:40,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:565200},{symbol:"Hpt_PlasmaShockCannon_Turret_Medium",name:"Shock Cannon",mount:"Turreted",class:2,rating:"E",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_TURRET_MEDIUM",mass:4,integrity:51,powerDraw:.5,bootTime:0,damage:8.96,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.39,thermalLoad:1.24,armourPiercing:40,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,jitter:0,cost:1359200},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Large",kind:"guardianShard",name:"Guardian Shard Cannon",mount:"Fixed",class:3,rating:"C",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_SHARD_FIXED_LARGE",mass:8,integrity:51,powerDraw:1.68,bootTime:0,damage:5.225,damageDistribution:{thermal:1,antiXeno:1},roundsPerShot:12,rateOfFire:1.666667,burstInterval:.6,clipSize:5,ammoMaximum:180,reloadTime:5,distributorDraw:1.4,thermalLoad:2.2,armourPiercing:60,maximumRange:1700,falloffRange:1700,shotSpeed:1133,jitter:5,cost:1461350,damageComponents:{thermal:5.225,antiXeno:5.225}},{symbol:"Hpt_Guardian_ShardCannon_Turret_Large",kind:"guardianShard",name:"Guardian Shard Cannon",mount:"Turreted",class:3,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_SHARD_TURRET_LARGE",mass:8,integrity:51,powerDraw:1.39,bootTime:0,damage:3.1,damageDistribution:{thermal:1,antiXeno:1},roundsPerShot:12,rateOfFire:1.666667,burstInterval:.6,clipSize:5,ammoMaximum:180,reloadTime:5,distributorDraw:1.2,thermalLoad:1.98,armourPiercing:60,maximumRange:1700,falloffRange:1700,shotSpeed:1133,jitter:5,cost:5865026,damageComponents:{thermal:3.1,antiXeno:3.1}},{symbol:"Hpt_PlasmaShockCannon_Fixed_Large",name:"Shock Cannon",mount:"Fixed",class:3,rating:"C",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_FIXED_LARGE",mass:8,integrity:64,powerDraw:.89,bootTime:0,damage:18.14,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.92,thermalLoad:2.66,armourPiercing:60,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,jitter:0,cost:1015750},{symbol:"Hpt_PlasmaShockCannon_Gimbal_Large",name:"Shock Cannon",mount:"Gimballed",class:3,rating:"C",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_GIMBAL_LARGE",mass:8,integrity:64,powerDraw:.89,bootTime:0,damage:14.87,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:1.07,thermalLoad:3.12,armourPiercing:60,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:2249050},{symbol:"Hpt_PlasmaShockCannon_Turret_Large",name:"Shock Cannon",mount:"Turreted",class:3,rating:"D",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_TURRET_LARGE",mass:8,integrity:64,powerDraw:.64,bootTime:0,damage:12.26,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.79,thermalLoad:2.2,armourPiercing:60,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:6050201},{symbol:"Hpt_Guardian_PlasmaLauncher_Fixed_Large",kind:"guardianPlasma",name:"Guardian Plasma Charger",mount:"Fixed",class:3,rating:"C",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_PLASMA_FIXED_LARGE",mass:8,integrity:51,powerDraw:3.1,bootTime:0,damage:3.5,damageDistribution:{absolute:1,antiXeno:1},rateOfFire:5,burstInterval:.2,clipSize:15,ammoMaximum:200,reloadTime:3,distributorDraw:2.42,thermalLoad:6.15,armourPiercing:95,maximumRange:3e3,falloffRange:1e3,shotSpeed:1200,cost:1423301,damageComponents:{absolute:3.5,antiXeno:3.5}},{symbol:"Hpt_Guardian_PlasmaLauncher_Turret_Large",kind:"guardianPlasma",name:"Guardian Plasma Charger",mount:"Turreted",class:3,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_PLASMA_TURRET_LARGE",mass:8,integrity:51,powerDraw:2.53,bootTime:0,damage:3,damageDistribution:{absolute:1,antiXeno:1},rateOfFire:5,burstInterval:.2,clipSize:15,ammoMaximum:200,reloadTime:3,distributorDraw:2.6,thermalLoad:6.4,armourPiercing:95,maximumRange:3e3,falloffRange:1e3,shotSpeed:1200,cost:5495200,damageComponents:{absolute:3,antiXeno:3}},{symbol:"Hpt_DumbfireMissileRack_Fixed_Large",kind:"missiles",name:"Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:3,rating:"A",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:1.62,bootTime:0,damage:50,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:12,ammoMaximum:96,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:750,cost:1021500},{symbol:"Hpt_PlasmaShockCannon_Turret_Small",name:"Shock Cannon",mount:"Turreted",class:1,rating:"F",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_TURRET_SMALL",mass:2,integrity:40,powerDraw:.54,bootTime:0,damage:4.47,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.21,thermalLoad:.69,armourPiercing:25,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:364e3},{symbol:"Hpt_PlasmaShockCannon_Gimbal_Small",name:"Shock Cannon",mount:"Gimballed",class:1,rating:"E",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_GIMBAL_SMALL",mass:2,integrity:40,powerDraw:.47,bootTime:0,damage:6.91,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.39,thermalLoad:1.45,armourPiercing:25,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:137501},{symbol:"Hpt_PlasmaShockCannon_Fixed_Small",name:"Shock Cannon",mount:"Fixed",class:1,rating:"D",entitlement:"ELITE_HORIZONS_V_PLASMASHOCK_FIXED_SMALL",mass:2,integrity:40,powerDraw:.41,bootTime:0,damage:8.64,damageDistribution:{kinetic:1},rateOfFire:7.843137,burstInterval:.1275,clipSize:16,ammoMaximum:880,reloadTime:6,distributorDraw:.27,thermalLoad:1.14,armourPiercing:25,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:65941},{symbol:"Hpt_Guardian_PlasmaLauncher_Turret_Small",kind:"guardianPlasma",name:"Guardian Plasma Charger",mount:"Turreted",class:1,rating:"F",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_PLASMA_TURRET_SMALL",mass:2,integrity:34,powerDraw:1.6,bootTime:0,damage:1,damageDistribution:{absolute:1,antiXeno:1},rateOfFire:5,burstInterval:.2,clipSize:15,ammoMaximum:200,reloadTime:3,distributorDraw:.8,thermalLoad:5.01,armourPiercing:65,maximumRange:3e3,falloffRange:1e3,shotSpeed:1200,cost:484050,damageComponents:{absolute:1,antiXeno:1}},{symbol:"Hpt_Guardian_PlasmaLauncher_Fixed_Small",kind:"guardianPlasma",name:"Guardian Plasma Charger",mount:"Fixed",class:1,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_PLASMA_FIXED_SMALL",mass:2,integrity:34,powerDraw:1.4,bootTime:0,damage:1.5,damageDistribution:{absolute:1,antiXeno:1},rateOfFire:5,burstInterval:.2,clipSize:15,ammoMaximum:200,reloadTime:3,distributorDraw:.68,thermalLoad:4.21,armourPiercing:65,maximumRange:3e3,falloffRange:1e3,shotSpeed:1200,cost:176500,damageComponents:{absolute:1.5,antiXeno:1.5}},{symbol:"Hpt_Guardian_ShardCannon_Turret_Small",kind:"guardianShard",name:"Guardian Shard Cannon",mount:"Turreted",class:1,rating:"F",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_SHARD_TURRET_SMALL",mass:2,integrity:34,powerDraw:.72,bootTime:0,damage:1.01,damageDistribution:{thermal:1,antiXeno:1},roundsPerShot:12,rateOfFire:1.666667,burstInterval:.6,clipSize:5,ammoMaximum:180,reloadTime:5,distributorDraw:.36,thermalLoad:.58,armourPiercing:30,maximumRange:1700,falloffRange:1700,shotSpeed:1133,jitter:5,cost:502e3,damageComponents:{thermal:1.01,antiXeno:1.01}},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Small",kind:"guardianShard",name:"Guardian Shard Cannon",mount:"Fixed",class:1,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_SHARD_FIXED_SMALL",mass:2,integrity:34,powerDraw:.87,bootTime:0,damage:1.82,damageDistribution:{thermal:1,antiXeno:1},roundsPerShot:12,rateOfFire:1.666667,burstInterval:.6,clipSize:5,ammoMaximum:180,reloadTime:5,distributorDraw:.42,thermalLoad:.69,armourPiercing:30,maximumRange:1700,falloffRange:1700,shotSpeed:1133,jitter:5,cost:151650,damageComponents:{thermal:1.82,antiXeno:1.82}},{symbol:"Hpt_Guardian_GaussCannon_Fixed_Small",kind:"guardianGauss",name:"Guardian Gauss Cannon",mount:"Fixed",class:1,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_GUARDIAN_GAUSS_FIXED_SMALL",mass:2,integrity:40,powerDraw:1.91,bootTime:0,damage:22,damageDistribution:{thermal:1,antiXeno:1},rateOfFire:1.204819,burstInterval:.83,clipSize:1,ammoMaximum:80,reloadTime:1,distributorDraw:3.8,thermalLoad:15,armourPiercing:140,maximumRange:3e3,falloffRange:1500,cost:167250,damageComponents:{thermal:22,antiXeno:22}},{symbol:"Hpt_Mining_SubSurfDispMisle_Fixed_Small",name:"Sub-Surface Displacement Missile",mount:"Fixed",guidance:"Seeker",class:1,rating:"B",mass:2,integrity:40,powerDraw:.42,bootTime:0,damage:5,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:32,reloadTime:2,distributorDraw:.18,thermalLoad:2.25,armourPiercing:25,shotSpeed:550,cost:12600,projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_Mining_SubSurfDispMisle_Turret_Small",name:"Sub-Surface Displacement Missile",mount:"Turreted",guidance:"Seeker",class:1,rating:"B",mass:2,integrity:40,powerDraw:.53,bootTime:0,damage:5,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:32,reloadTime:2,distributorDraw:.16,thermalLoad:2.25,armourPiercing:25,shotSpeed:550,cost:38750,projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_Mining_SubSurfDispMisle_Fixed_Medium",name:"Sub-Surface Displacement Missile",mount:"Fixed",guidance:"Seeker",class:2,rating:"B",mass:4,integrity:51,powerDraw:1.01,bootTime:0,damage:5,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:96,reloadTime:2,distributorDraw:.21,thermalLoad:2.9,armourPiercing:25,shotSpeed:550,cost:122170,projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_Mining_SubSurfDispMisle_Turret_Medium",name:"Sub-Surface Displacement Missile",mount:"Turreted",guidance:"Seeker",class:2,rating:"B",mass:4,integrity:51,powerDraw:.93,bootTime:0,damage:5,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:96,reloadTime:2,distributorDraw:.18,thermalLoad:2.9,armourPiercing:25,shotSpeed:550,cost:381750,projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_Mining_AbrBlstr_Fixed_Small",name:"Abrasion Blaster",mount:"Fixed",class:1,rating:"D",mass:2,integrity:40,powerDraw:.34,bootTime:0,damage:4,damageDistribution:{thermal:1},rateOfFire:5,burstInterval:.2,clipSize:1,reloadTime:0,distributorDraw:2,thermalLoad:2,armourPiercing:18,maximumRange:1e3,falloffRange:1e3,shotSpeed:667,cost:9700},{symbol:"Hpt_Mining_AbrBlstr_Turret_Small",name:"Abrasion Blaster",mount:"Turreted",class:1,rating:"D",mass:2,integrity:40,powerDraw:.47,bootTime:0,damage:4,damageDistribution:{thermal:1},rateOfFire:5,burstInterval:.2,clipSize:1,reloadTime:0,distributorDraw:2,thermalLoad:1.8,armourPiercing:18,maximumRange:1e3,falloffRange:1e3,shotSpeed:667,cost:27480},{symbol:"Hpt_Mining_SeismChrgWarhd_Fixed_Medium",name:"Seismic Charge Launcher",mount:"Fixed",guidance:"Seeker",class:2,rating:"B",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:15,damageDistribution:{explosive:1},rateOfFire:1,burstInterval:1,clipSize:1,ammoMaximum:72,reloadTime:1,distributorDraw:.24,thermalLoad:3.6,armourPiercing:35,shotSpeed:350,cost:153110,projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_Mining_SeismChrgWarhd_Turret_Medium",name:"Seismic Charge Launcher",mount:"Turreted",guidance:"Seeker",class:2,rating:"B",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:15,damageDistribution:{explosive:1},rateOfFire:1,burstInterval:1,clipSize:1,ammoMaximum:72,reloadTime:1,distributorDraw:.24,thermalLoad:3.6,armourPiercing:35,shotSpeed:350,cost:445570,projectileRange:{maximumBoundary:0,falloffBoundary:1e5}},{symbol:"Hpt_MultiCannon_Fixed_Medium_Advanced",kind:"multiCannons",name:"Advanced Multi-Cannon",mount:"Fixed",class:2,rating:"E",mass:4,integrity:51,powerDraw:.46,bootTime:0,damage:2.19,damageDistribution:{kinetic:1},rateOfFire:7.142857,burstInterval:.14,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.11,thermalLoad:.18,armourPiercing:37,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:38e3},{symbol:"Hpt_MultiCannon_Fixed_Small_Advanced",kind:"multiCannons",name:"Advanced Multi-Cannon",mount:"Fixed",class:1,rating:"F",mass:2,integrity:40,powerDraw:.28,bootTime:0,damage:1.12,damageDistribution:{kinetic:1},rateOfFire:7.692308,burstInterval:.13,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.06,thermalLoad:.09,armourPiercing:22,maximumRange:4e3,falloffRange:2e3,shotSpeed:1600,cost:9500},{symbol:"Hpt_DumbfireMissileRack_Fixed_Small_Advanced",kind:"missiles",name:"Advanced Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:1,rating:"B",mass:2,integrity:40,powerDraw:.4,bootTime:0,damage:50,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:8,ammoMaximum:64,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:750,cost:32180},{symbol:"Hpt_DumbfireMissileRack_Fixed_Medium_Advanced",kind:"missiles",name:"Advanced Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:2,rating:"B",mass:4,integrity:51,powerDraw:1.2,bootTime:0,damage:50,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:12,ammoMaximum:64,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:750,cost:1471030},{symbol:"Hpt_ATDumbfireMissile_Fixed_Large_V2",name:"Enhanced AX Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:3,rating:"B",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:1.72,bootTime:0,damage:27,damageDistribution:{explosive:1,antiXeno:1.8518518518518519},rateOfFire:.5,burstInterval:2,clipSize:12,ammoMaximum:128,reloadTime:5,distributorDraw:.24,thermalLoad:3.6,armourPiercing:60,shotSpeed:1250,cost:1703835,damageComponents:{explosive:27,antiXeno:50}},{symbol:"Hpt_ATMultiCannon_Fixed_Medium_V2",name:"Enhanced AX Multi-Cannon",mount:"Fixed",class:2,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:.48,bootTime:0,damage:1.12,damageDistribution:{kinetic:1,antiXeno:2.446428571428571},rateOfFire:7.142857,burstInterval:.14,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.11,thermalLoad:.18,armourPiercing:17,maximumRange:4e3,falloffRange:2e3,shotSpeed:4e3,cost:455077,damageComponents:{kinetic:1.12,antiXeno:2.74}},{symbol:"Hpt_ATDumbfireMissile_Fixed_Medium_V2",name:"Enhanced AX Missile Rack",mount:"Fixed",guidance:"Dumbfire",class:2,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:1.3,bootTime:0,damage:27,damageDistribution:{explosive:1,antiXeno:1.8518518518518519},rateOfFire:.5,burstInterval:2,clipSize:8,ammoMaximum:64,reloadTime:5,distributorDraw:.14,thermalLoad:2.4,armourPiercing:60,shotSpeed:1250,cost:681534,damageComponents:{explosive:27,antiXeno:50}},{symbol:"Hpt_ATDumbfireMissile_Turret_Large_V2",name:"Enhanced AX Missile Rack",mount:"Turreted",guidance:"Dumbfire",class:3,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:1.85,bootTime:0,damage:20,damageDistribution:{explosive:1,antiXeno:2.2},rateOfFire:.5,burstInterval:2,clipSize:12,ammoMaximum:128,reloadTime:5,distributorDraw:.14,thermalLoad:1.9,armourPiercing:60,shotSpeed:1250,cost:5347534,damageComponents:{explosive:20,antiXeno:44}},{symbol:"Hpt_ATDumbfireMissile_Turret_Medium_V2",name:"Enhanced AX Missile Rack",mount:"Turreted",guidance:"Dumbfire",class:2,rating:"E",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:1.3,bootTime:0,damage:20,damageDistribution:{explosive:1,antiXeno:2.2},rateOfFire:.5,burstInterval:2,clipSize:8,ammoMaximum:64,reloadTime:5,distributorDraw:.08,thermalLoad:1.5,armourPiercing:60,shotSpeed:1250,cost:2666286,damageComponents:{explosive:20,antiXeno:44}},{symbol:"Hpt_ATMultiCannon_Fixed_Large_V2",name:"Enhanced AX Multi-Cannon",mount:"Fixed",class:3,rating:"B",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:.69,bootTime:0,damage:2.19,damageDistribution:{kinetic:1,antiXeno:2.1118721461187215},rateOfFire:5.882353,burstInterval:.17,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.18,thermalLoad:.28,armourPiercing:33,maximumRange:4e3,falloffRange:2e3,shotSpeed:4e3,cost:1360322,damageComponents:{kinetic:2.19,antiXeno:4.625}},{symbol:"Hpt_ATMultiCannon_Turret_Large_V2",name:"Enhanced AX Multi-Cannon",mount:"Turreted",class:3,rating:"D",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:.69,bootTime:0,damage:1.12,damageDistribution:{kinetic:1,antiXeno:2.446428571428571},rateOfFire:6.25,burstInterval:.16,clipSize:90,ammoMaximum:2100,reloadTime:4,distributorDraw:.06,thermalLoad:.09,armourPiercing:33,maximumRange:4e3,falloffRange:2e3,shotSpeed:4e3,cost:4588709,damageComponents:{kinetic:1.12,antiXeno:2.74}},{symbol:"Hpt_ATMultiCannon_Turret_Medium_V2",name:"Enhanced AX Multi-Cannon",mount:"Turreted",class:2,rating:"E",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:.52,bootTime:0,damage:.56,damageDistribution:{kinetic:1,antiXeno:2.614285714285714},rateOfFire:6.25,burstInterval:.16,clipSize:90,ammoMaximum:2100,reloadTime:4,distributorDraw:.06,thermalLoad:.09,armourPiercing:17,maximumRange:4e3,falloffRange:2e3,shotSpeed:4e3,cost:2193297,damageComponents:{kinetic:.56,antiXeno:1.464}},{symbol:"Hpt_ATMultiCannon_Gimbal_Large",kind:"antiXenoMultiCannons",name:"Enhanced AX Multi-Cannon",mount:"Gimballed",class:3,rating:"C",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:8,integrity:64,powerDraw:.64,bootTime:0,damage:2.19,damageDistribution:{kinetic:1,antiXeno:1.7922374429223744},rateOfFire:5.882353,burstInterval:.17,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.18,thermalLoad:.28,armourPiercing:33,maximumRange:4e3,falloffRange:2e3,shotSpeed:4e3,cost:2390460,damageComponents:{kinetic:2.19,antiXeno:3.925}},{symbol:"Hpt_ATMultiCannon_Gimbal_Medium",kind:"antiXenoMultiCannons",name:"Enhanced AX Multi-Cannon",mount:"Gimballed",class:2,rating:"E",limitGroup:"experimentalWeapon",entitlement:"ELITE_HORIZONS_V_PLANETARY_LANDINGS",mass:4,integrity:51,powerDraw:.46,bootTime:0,damage:1.12,damageDistribution:{kinetic:1,antiXeno:1.9553571428571426},rateOfFire:7.142857,burstInterval:.14,clipSize:100,ammoMaximum:2100,reloadTime:4,distributorDraw:.11,thermalLoad:.18,armourPiercing:17,maximumRange:4e3,falloffRange:2e3,shotSpeed:4e3,cost:1197644,damageComponents:{kinetic:1.12,antiXeno:2.19}},{symbol:"Hpt_Human_Extraction_Fixed_Medium",name:"Sub-Surface Extraction Missile",mount:"Fixed",guidance:"Seeker",class:2,rating:"B",mass:4,integrity:50,powerDraw:1,bootTime:0,damage:5,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:96,reloadTime:2,distributorDraw:.21,thermalLoad:2.9,armourPiercing:25,shotSpeed:550,cost:822091},{symbol:"Hpt_ATVentDisruptorPylon_Fixed_Medium",name:"Guardian Nanite Torpedo Pylon",mount:"Fixed",class:2,rating:"I",mass:3,integrity:50,powerDraw:.4,bootTime:0,guardianZoneResistance:true,damage:0,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:64,reloadTime:3,distributorDraw:0,thermalLoad:35,shotSpeed:1e3,cost:843170},{symbol:"Hpt_ATVentDisruptorPylon_Fixed_Large",name:"Guardian Nanite Torpedo Pylon",mount:"Fixed",class:3,rating:"I",mass:5,integrity:80,powerDraw:.7,bootTime:0,guardianZoneResistance:true,damage:0,damageDistribution:{explosive:1},rateOfFire:.5,burstInterval:2,clipSize:1,ammoMaximum:125,reloadTime:3,distributorDraw:0,thermalLoad:35,shotSpeed:1e3,cost:1627419},{symbol:"Hpt_Cannon_Gimbal_Medium_Burst",kind:"cannons",name:"Concord Cannon",mount:"Gimballed",class:2,rating:"D",entitlement:"ELITE_SPECIFIC_V_POWER_200130",mass:4,integrity:51,powerDraw:.64,bootTime:0,damage:14.63,damageDistribution:{kinetic:1},rateOfFire:1.086957,burstInterval:2.26,burstRounds:3,burstRateOfFire:4,clipSize:9,ammoMaximum:300,reloadTime:4,distributorDraw:.75,thermalLoad:1.92,armourPiercing:42,maximumRange:3500,falloffRange:3500,shotSpeed:1300,cost:314620},{symbol:"Hpt_MiningToolV2_Fixed_Large",name:"Mining Volley Repeater",mount:"Fixed",class:3,rating:"C",mass:8,integrity:61,powerDraw:1.5,restrictedToShips:["LakonMiner"],bootTime:0,damage:.3,damageDistribution:{thermal:1},rateOfFire:20,burstInterval:.05,burstRounds:1,clipSize:1,ammoMaximum:1,reloadTime:4,distributorDraw:.3,thermalLoad:.4,armourPiercing:18,maximumRange:500,falloffRange:500,shotSpeed:167,cost:149910},{symbol:"Hpt_MkIIPlasmaShockAutocannon_Fixed_Large",name:"Mk II Plasma Shock Accelerator",mount:"Fixed",class:3,rating:"B",mass:8,integrity:64,powerDraw:1.51,bootTime:0,damage:13.94,damageDistribution:{unclassified:1},rateOfFire:7.844016,burstInterval:.4028,burstRounds:4,burstRateOfFire:28,clipSize:18,ammoMaximum:0,reloadTime:5,distributorDraw:.92,thermalLoad:1.66,armourPiercing:60,maximumRange:3e3,falloffRange:2500,shotSpeed:1200,cost:3051200,damageComponents:{unclassified:[13.94]}}];var HARDPOINT_MODULES=buildModuleCatalogue(modules_hardpoint_default,"hardpoint");export{HARDPOINT_MODULES};//# sourceMappingURL=chunk-BSOIPL4A.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/modules-hardpoint.ts"],"names":["buildModuleCatalogue","modules_hardpoint_default","HARDPOINT_MODULES"],"mappings":"O
|
|
1
|
+
{"version":3,"sources":["../src/ships/modules-hardpoint.ts"],"names":["buildModuleCatalogue","modules_hardpoint_default","HARDPOINT_MODULES"],"mappings":"O,6xjEAuCO,IAAME,kBAAiDF,qBAC1DC,0BACA,oBACJC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{findByRawKey,normalizeKey}from"./chunk-S4DBNX2B.js";import{requireStringIfPresent}from"./chunk-B5TT26XE.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var decorative_modifications_default={Decorative_Green:{name:"Festive Green",modules:["Hpt_FlakMortar_Turret_Medium"],modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},Decorative_Red:{name:"Festive Red",modules:["Hpt_FlakMortar_Turret_Medium"],modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},Decorative_Yellow:{name:"Festive Yellow",modules:["Hpt_FlakMortar_Turret_Medium"],modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]}};var DECORATIVE_MODIFICATIONS=deepFreeze(decorative_modifications_default);function getDecorativeModification(fdname){return findByRawKey(DECORATIVE_MODIFICATIONS,fdname,"getDecorativeModification: fdname")}function isDecorativeModification(fdname){requireStringIfPresent(fdname,"isDecorativeModification: fdname");return getDecorativeModification(fdname)!==null}function getDecorativeModificationsForModule(symbol){const wanted=normalizeKey(symbol,"getDecorativeModificationsForModule: symbol");return Object.entries(DECORATIVE_MODIFICATIONS).filter(([,record])=>record.modules.some(m=>m.toLowerCase()===wanted)).map(([id])=>id)}export{DECORATIVE_MODIFICATIONS,getDecorativeModification,getDecorativeModificationsForModule,isDecorativeModification};//# sourceMappingURL=chunk-
|
|
1
|
+
import{findByRawKey,normalizeKey}from"./chunk-S4DBNX2B.js";import{requireStringIfPresent}from"./chunk-B5TT26XE.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var decorative_modifications_default={Decorative_Green:{name:"Festive Green",modules:["Hpt_FlakMortar_Turret_Medium"],modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},Decorative_Red:{name:"Festive Red",modules:["Hpt_FlakMortar_Turret_Medium"],modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},Decorative_Yellow:{name:"Festive Yellow",modules:["Hpt_FlakMortar_Turret_Medium"],modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]}};var DECORATIVE_MODIFICATIONS=deepFreeze(decorative_modifications_default);function getDecorativeModification(fdname){return findByRawKey(DECORATIVE_MODIFICATIONS,fdname,"getDecorativeModification: fdname")}function isDecorativeModification(fdname){requireStringIfPresent(fdname,"isDecorativeModification: fdname");return getDecorativeModification(fdname)!==null}function getDecorativeModificationsForModule(symbol){const wanted=normalizeKey(symbol,"getDecorativeModificationsForModule: symbol");return Object.entries(DECORATIVE_MODIFICATIONS).filter(([,record])=>record.modules.some(m=>m.toLowerCase()===wanted)).map(([id])=>id)}export{DECORATIVE_MODIFICATIONS,getDecorativeModification,getDecorativeModificationsForModule,isDecorativeModification};//# sourceMappingURL=chunk-DFJ6ETMY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/decorative-modifications.ts"],"names":["findByRawKey","normalizeKey","requireStringIfPresent","deepFreeze","decorative_modifications_default","modules","DECORATIVE_MODIFICATIONS","getDecorativeModification","fdname","isDecorativeModification","getDecorativeModificationsForModule","symbol","wanted","Object","entries","filter","record","some","m","toLowerCase","map","id"],"mappings":"O,
|
|
1
|
+
{"version":3,"sources":["../src/ships/decorative-modifications.ts"],"names":["findByRawKey","normalizeKey","requireStringIfPresent","deepFreeze","decorative_modifications_default","modules","DECORATIVE_MODIFICATIONS","getDecorativeModification","fdname","isDecorativeModification","getDecorativeModificationsForModule","symbol","wanted","Object","entries","filter","record","some","m","toLowerCase","map","id"],"mappings":"O,gnBAyHO,IAAMM,yBACTH,WAAWC,kCAkBR,SAASG,0BAA0BC,QACtC,OAAOR,aAAaM,yBAA0BE,OAAQ,oCAC1D,CAuBO,SAASC,yBAAyBD,QACrCN,uBAAuBM,OAAQ,oCAC/B,OAAOD,0BAA0BC,UAAY,IACjD,CAwBO,SAASE,oCAAoCC,QAChD,MAAMC,OAASX,aAAaU,OAAQ,+CACpC,OAAOE,OAAOC,QAAQR,0BACjBS,OAAO,EAAC,CAAGC,UAAYA,OAAOX,QAAQY,KAAMC,GAAMA,EAAEC,gBAAkBP,SACtEQ,IAAI,EAAEC,MAAQA,GACvB,QAAAf,yBAAAC,0BAAAG,oCAAAD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{fixedModifierFeatures}from"./chunk-4TXQWLIQ.js";import{getModuleBySymbol}from"./chunk-PRQELBIC.js";import{ALL_MODULES}from"./chunk-W7XI3WVA.js";import{computeModifiers,baseStats}from"./chunk-SVZARHWP.js";import{getDecorativeModification}from"./chunk-DFJ6ETMY.js";import{requireStringIfPresent}from"./chunk-B5TT26XE.js";function resolveDecorativeModification(symbol,fdname,entryPoint){requireStringIfPresent(symbol,`${entryPoint}: symbol`);requireStringIfPresent(fdname,`${entryPoint}: fdname`);const modification=getDecorativeModification(fdname);if(!modification)return null;const module=getModuleBySymbol(symbol,ALL_MODULES);if(!module)return null;return{modification:modification,modifiers:computeModifiers(baseStats(module),fixedModifierFeatures(modification.modifiers))}}function getDecorativeModifiers(symbol,fdname){return resolveDecorativeModification(symbol,fdname,"getDecorativeModifiers")?.modifiers??null}function unresolvedDecorativeModifiers(symbol,fdname){const resolved=resolveDecorativeModification(symbol,fdname,"unresolvedDecorativeModifiers");if(!resolved)return null;const labels=new Set(resolved.modifiers.map(modifier=>modifier.Label));return resolved.modification.modifiers.map(modifier=>modifier.label).filter(label=>!labels.has(label))}export{getDecorativeModifiers,unresolvedDecorativeModifiers};//# sourceMappingURL=chunk-GV7ZKYQN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/decorative-modification-stats.ts"],"names":["fixedModifierFeatures","getModuleBySymbol","ALL_MODULES","computeModifiers","baseStats","getDecorativeModification","requireStringIfPresent","resolveDecorativeModification","symbol","fdname","entryPoint","modification","module","modifiers","getDecorativeModifiers","unresolvedDecorativeModifiers","resolved","labels","Set","map","modifier","Label","label","filter","has"],"mappings":"O,+TAuCA,SAASO,8BACLC,OACAC,OACAC,YAEAJ,uBAAuBE,OAAQ,GAAGE,sBAClCJ,uBAAuBG,OAAQ,GAAGC,sBAElC,MAAMC,aAAeN,0BAA0BI,QAC/C,IAAKE,aAAc,OAAO,KAC1B,MAAMC,OAASX,kBAAkBO,OAAQN,aACzC,IAAKU,OAAQ,OAAO,KACpB,MAAO,CACHD,0BACAE,UAAWV,iBACPC,UAAUQ,QACVZ,sBAAsBW,aAAaE,YAG/C,CAiDO,SAASC,uBACZN,OACAC,QAEA,OACIF,8BAA8BC,OAAQC,OAAQ,2BAA2BI,WAAa,IAE9F,CAsCO,SAASE,8BAA8BP,OAAgBC,QAC1D,MAAMO,SAAWT,8BAA8BC,OAAQC,OAAQ,iCAC/D,IAAKO,SAAU,OAAO,KACtB,MAAMC,OAAS,IAAIC,IAAIF,SAASH,UAAUM,IAAKC,UAAaA,SAASC,QACrE,OAAOL,SAASL,aAAaE,UACxBM,IAAKC,UAAaA,SAASE,OAC3BC,OAAQD,QAAWL,OAAOO,IAAIF,OACvC,QAAAR,uBAAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ALL_MODULES}from"./chunk-
|
|
1
|
+
import{ALL_MODULES}from"./chunk-W7XI3WVA.js";import{findInKeyIndex,findByKey,filterByKey,createKeyIndex}from"./chunk-S4DBNX2B.js";var MODULES_BY_SYMBOL=/* @__PURE__ */createKeyIndex(ALL_MODULES,"symbol");function builtInModuleBySymbol(symbol,label){return findInKeyIndex(MODULES_BY_SYMBOL,symbol,label)}function getModuleBySymbol(symbol,modules=ALL_MODULES){return modules===ALL_MODULES?builtInModuleBySymbol(symbol,"getModuleBySymbol: symbol"):findByKey(modules,"symbol",symbol,"getModuleBySymbol: symbol")}function getModulesByName(name,modules=ALL_MODULES){return filterByKey(modules,"name",name,"getModulesByName: name")}function getBulkheadsForShip(ship,modules=ALL_MODULES){return filterByKey(modules,"ship",ship,"getBulkheadsForShip: ship")}export{builtInModuleBySymbol,getBulkheadsForShip,getModuleBySymbol,getModulesByName};//# sourceMappingURL=chunk-PRQELBIC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var percent=100;var STAT_LABELS=[{label:"Mass",field:"mass"},{label:"Integrity",field:"integrity"},{label:"PowerDraw",field:"powerDraw"},{label:"BootTime",field:"bootTime"},{label:"FSDOptimalMass",field:"optMass"},{label:"EngineOptimalMass",field:"optMass"},{label:"EngineMinimumMass",field:"minMass"},{label:"MaximumMass",field:"maxMass"},{label:"ShieldGenOptimalMass",field:"optMass"},{label:"ShieldGenMinimumMass",field:"minMass"},{label:"ShieldGenMaximumMass",field:"maxMass"},{label:"EngineOptPerformance",field:"optMultiplier",scale:percent},{label:"EngineMinPerformance",field:"minMultiplier",scale:percent},{label:"EngineMaxPerformance",field:"maxMultiplier",scale:percent},{label:"ShieldGenStrength",field:"optMultiplier",scale:percent},{label:"ShieldGenMinStrength",field:"minMultiplier",scale:percent},{label:"ShieldGenMaxStrength",field:"maxMultiplier",scale:percent},{label:"EngineHeatRate",field:"engineHeatRate"},{label:"FSDHeatRate",field:"fsdHeatRate"},{label:"MaxFuelPerJump",field:"maxFuel"},{label:"PowerCapacity",field:"powerCapacity"},{label:"HeatEfficiency",field:"heatEfficiency"},{label:"EnginesCapacity",field:"enginesCapacity"},{label:"EnginesRecharge",field:"enginesRecharge"},{label:"SystemsCapacity",field:"systemsCapacity"},{label:"SystemsRecharge",field:"systemsRecharge"},{label:"WeaponsCapacity",field:"weaponsCapacity"},{label:"WeaponsRecharge",field:"weaponsRecharge"},{label:"RefuelRate",field:"refuelRate"},{label:"FuelScoopRate",field:"refuelRate"},{label:"FuelCapacity",field:"fuelCapacity"},{label:"CargoCapacity",field:"cargoCapacity"},{label:"RegenRate",field:"shieldRegenRate"},{label:"BrokenRegenRate",field:"shieldBrokenRegenRate"},{label:"EnergyPerRegen",field:"distributorDraw"},{label:"ShieldBankReinforcement",field:"shieldBankReinforcement"},{label:"ShieldBankHeat",field:"shieldBankHeat"},{label:"ShieldBankHeat",field:"thermalLoad"},{label:"ShieldBankSpinUp",field:"shieldBankSpinUp"},{label:"ShieldBankDuration",field:"shieldBankDuration"},{label:"ScannerRange",field:"scannerRange"},{label:"SensorTargetScanAngle",field:"scanAngle"},{label:"MaxAngle",field:"scanAngle"},{label:"ScannerTimeToScan",field:"scanTime"},{label:"ProbeRadius",field:"probeRadius"},{label:"DSS_PatchRadius",field:"probeRadius"},{label:"FSDInterdictorFacingLimit",field:"interdictorFacingLimit"},{label:"FSDInterdictorRange",field:"interdictorRange"},{label:"DefenceModifierShieldMultiplier",field:"shieldBoost",scale:percent,multiplierBase:percent},{label:"DefenceModifierHealthMultiplier",field:"hullBoost",scale:percent,multiplierBase:percent},{label:"DefenceModifierHealthAddition",field:"hullReinforcement"},{label:"DefenceModifierShieldAddition",field:"shieldAddition"},{label:"GuardianModuleResistance",field:"guardianZoneResistance",capabilityValue:"Active"},{label:"KineticResistance",field:"kineticResistance",scale:percent,multiplierBase:-percent},{label:"ThermicResistance",field:"thermalResistance",scale:percent,multiplierBase:-percent},{label:"ExplosiveResistance",field:"explosiveResistance",scale:percent,multiplierBase:-percent},{label:"CausticResistance",field:"causticResistance",scale:percent,multiplierBase:-percent},{label:"DamageProtection",field:"moduleProtection",scale:percent},{label:"ModuleDefenceAbsorption",field:"moduleProtection",scale:percent},{label:"Damage",field:"damage"},{label:"Rounds",field:"roundsPerShot",defaultBase:1},{label:"RoundsPerShot",field:"roundsPerShot",defaultBase:1},{label:"RateOfFire",field:"rateOfFire"},{label:"BurstInterval",field:"burstInterval"},{label:"BurstSize",field:"burstRounds",defaultBase:1},{label:"BurstRateOfFire",field:"burstRateOfFire",defaultBase:1},{label:"AmmoClipSize",field:"clipSize"},{label:"AmmoMaximum",field:"ammoMaximum"},{label:"ReloadTime",field:"reloadTime"},{label:"DistributorDraw",field:"distributorDraw"},{label:"ThermalLoad",field:"thermalLoad"},{label:"ArmourPenetration",field:"armourPiercing"},{label:"Range",field:"maximumRange"},{label:"Range",field:"scannerRange"},{label:"MaximumRange",field:"maximumRange"},{label:"FalloffRange",field:"falloffRange"},{label:"DamageFalloffRange",field:"falloffRange"},{label:"ShotSpeed",field:"shotSpeed"},{label:"$Kinetic;",field:"damageDistribution",damageType:"kinetic",scale:percent,defaultBase:0},{label:"$Thermal;",field:"damageDistribution",damageType:"thermal",scale:percent,defaultBase:0},{label:"$Explosive;",field:"damageDistribution",damageType:"explosive",scale:percent,defaultBase:0},{label:"$Absolute;",field:"damageDistribution",damageType:"absolute",scale:percent,defaultBase:0},{label:"Jitter",field:"jitter",defaultBase:0}];var BY_LABEL=(()=>{const entries=/* @__PURE__ */new Map;for(const entry of STAT_LABELS){const forLabel=entries.get(entry.label)??[];forLabel.push(entry);entries.set(entry.label,forLabel)}return entries})();var LABELS_BY_FIELD=(()=>{const labels=/* @__PURE__ */new Map;for(const entry of STAT_LABELS){if(entry.damageType!==void 0)continue;const fieldLabels=labels.get(entry.field)??[];fieldLabels.push(entry.label);labels.set(entry.field,fieldLabels)}return labels})();function baseStats(stats){const base={};for(const{label:label,field:field,damageType:damageType,scale:scale,defaultBase:defaultBase}of STAT_LABELS){if(base[label]!==void 0)continue;const value=damageType===void 0?stats[field]:stats.damageDistribution?.[damageType];if(typeof value==="number")base[label]=value*(scale??1);else if(defaultBase!==void 0&&isWeapon(stats))base[label]=defaultBase}return base}function isWeapon(stats){return stats.damage!==void 0}function fieldForLabel(label,stats){const entries=BY_LABEL.get(label);if(!entries||entries.length===0)return null;if(stats&&entries.length>1){const carried=entries.find(entry=>typeof stats[entry.field]==="number");if(carried)return carried.field}return entries[0].field}function damageTypeForLabel(label){return BY_LABEL.get(label)?.[0]?.damageType??null}function labelsForDamageType(type){return STAT_LABELS.filter(entry=>entry.damageType===type).map(entry=>entry.label)}function scaleForLabel(label){return BY_LABEL.get(label)?.[0]?.scale??1}function multiplierBaseForLabel(label){return BY_LABEL.get(label)?.[0]?.multiplierBase??null}function capabilityValueForLabel(label){return BY_LABEL.get(label)?.[0]?.capabilityValue??null}function labelsForField(field){return LABELS_BY_FIELD.get(field)??[]}var round6=n=>Math.round(n*1e6)/1e6;function computeModifiers(base,grade,quality=1,experimental){if(!Number.isFinite(quality)||quality<0||quality>1){throw new RangeError(`computeModifiers: quality must be a finite number in [0, 1]`)}const roll=quality;const byLabel=/* @__PURE__ */new Map;const add=(label,method,value,stated)=>{const list=byLabel.get(label)??[];list.push({method:method,value:value,stated:stated});byLabel.set(label,list)};const features="features"in grade?grade.features:grade;for(const f of features){add(f.label,f.method,f.min+(f.max-f.min)*roll,f.min===f.max||roll===0||roll===1)}const experimentalModifiers=experimental&&"modifiers"in experimental?experimental.modifiers:experimental;for(const e of experimentalModifiers??[])add(e.label,e.method,e.value,true);const modifiers=[];let clipIsOverwritten=false;for(const[label,contributions]of byLabel){const capabilityValue=capabilityValueForLabel(label);if(capabilityValue!==null){modifiers.push({Label:label,ValueStr:capabilityValue});continue}const original=base[label];const overwrite=contributions.find(c=>c.method==="overwrite");const multiplierBase=multiplierBaseForLabel(label);const baseless=original===void 0&&(multiplierBase!==null||overwrite!==void 0||contributions.some(c=>c.method==="additive"));if(original===void 0&&!baseless)continue;let value=original??0;if(multiplierBase===null){for(const c of contributions)if(c.method==="multiplicative")value*=1+c.value;for(const c of contributions)if(c.method==="additive")value+=c.value}else{let factor=1+value/multiplierBase;for(const c of contributions){if(c.method==="overwrite")continue;factor*=1+c.value*100/multiplierBase}value=(factor-1)*multiplierBase}if(overwrite)value=overwrite.value;if(label==="AmmoClipSize"){if(overwrite)clipIsOverwritten=true;else if(original!==void 0&&contributions.every(c=>c.stated)){value=snapToStatedWhole(value,original)}}else if(label==="AmmoMaximum"&&!overwrite){value=Math.round(value)}modifiers.push({Label:label,Value:round6(value),...original===void 0&&multiplierBase===null?{}:{OriginalValue:original??0}})}const resolved=resolveFalloffFromRange(modifiers,base);return clipIsOverwritten?resolved:roundClipToWholeBursts(resolved,base)}function roundClipToWholeBursts(modifiers,base){const clip=modifiers.find(m=>m.Label==="AmmoClipSize");if(!clip?.Value||clip.Value===clip.OriginalValue)return modifiers;const burst=modifiers.find(m=>m.Label==="BurstSize")?.Value||base["BurstSize"]||1;const rounded=Math.ceil(clip.Value/burst)*burst;if(rounded===clip.Value)return modifiers;return modifiers.map(m=>m===clip?{...m,Value:rounded}:m)}function snapToStatedWhole(value,base){const whole=Math.round(value);return Math.abs(value-whole)<=Math.abs(base)*5e-4?whole:value}function resolveFalloffFromRange(modifiers,base){const falloff=modifiers.find(m=>m.Label==="FalloffRange");if(!falloff||falloff.Value===void 0)return modifiers;const range=modifiers.find(m=>m.Label==="Range"||m.Label==="MaximumRange")?.Value??base["Range"]??base["MaximumRange"];if(range===void 0){return falloff.Value<=1?modifiers.filter(m=>m!==falloff):modifiers}if(falloff.Value<=1||falloff.Value>range){return modifiers.map(m=>m===falloff?{...m,Value:round6(range)}:m)}return modifiers}function rollsForGrade(grade){if(!Number.isInteger(grade)||grade<1||grade>5){throw new RangeError(`rollsForGrade: grade must be an integer in [1, 5]`)}return grade}function sumMaterials(...lists){const totals=/* @__PURE__ */new Map;for(const list of lists){for(const material of list){const key=material.symbol.toLowerCase();const previous=totals.get(key);totals.set(key,{symbol:previous?.symbol??material.symbol,name:previous?.name??material.name,count:(previous?.count??0)+material.count})}}return[...totals.values()]}export{baseStats,capabilityValueForLabel,computeModifiers,damageTypeForLabel,fieldForLabel,labelsForDamageType,labelsForField,rollsForGrade,scaleForLabel,sumMaterials};//# sourceMappingURL=chunk-VZZ2XIRE.js.map
|
|
1
|
+
var percent=100;var STAT_LABELS=[{label:"Mass",field:"mass"},{label:"Integrity",field:"integrity"},{label:"PowerDraw",field:"powerDraw"},{label:"BootTime",field:"bootTime"},{label:"FSDOptimalMass",field:"optMass"},{label:"EngineOptimalMass",field:"optMass"},{label:"EngineMinimumMass",field:"minMass"},{label:"MaximumMass",field:"maxMass"},{label:"ShieldGenOptimalMass",field:"optMass"},{label:"ShieldGenMinimumMass",field:"minMass"},{label:"ShieldGenMaximumMass",field:"maxMass"},{label:"EngineOptPerformance",field:"optMultiplier",scale:percent},{label:"EngineMinPerformance",field:"minMultiplier",scale:percent},{label:"EngineMaxPerformance",field:"maxMultiplier",scale:percent},{label:"ShieldGenStrength",field:"optMultiplier",scale:percent},{label:"ShieldGenMinStrength",field:"minMultiplier",scale:percent},{label:"ShieldGenMaxStrength",field:"maxMultiplier",scale:percent},{label:"EngineHeatRate",field:"engineHeatRate"},{label:"FSDHeatRate",field:"fsdHeatRate"},{label:"MaxFuelPerJump",field:"maxFuel"},{label:"PowerCapacity",field:"powerCapacity"},{label:"HeatEfficiency",field:"heatEfficiency"},{label:"EnginesCapacity",field:"enginesCapacity"},{label:"EnginesRecharge",field:"enginesRecharge"},{label:"SystemsCapacity",field:"systemsCapacity"},{label:"SystemsRecharge",field:"systemsRecharge"},{label:"WeaponsCapacity",field:"weaponsCapacity"},{label:"WeaponsRecharge",field:"weaponsRecharge"},{label:"RefuelRate",field:"refuelRate"},{label:"FuelScoopRate",field:"refuelRate"},{label:"FuelCapacity",field:"fuelCapacity"},{label:"CargoCapacity",field:"cargoCapacity"},{label:"RegenRate",field:"shieldRegenRate"},{label:"BrokenRegenRate",field:"shieldBrokenRegenRate"},{label:"EnergyPerRegen",field:"distributorDraw"},{label:"ShieldBankReinforcement",field:"shieldBankReinforcement"},{label:"ShieldBankHeat",field:"shieldBankHeat"},{label:"ShieldBankHeat",field:"thermalLoad"},{label:"ShieldBankSpinUp",field:"shieldBankSpinUp"},{label:"ShieldBankDuration",field:"shieldBankDuration"},{label:"ScannerRange",field:"scannerRange"},{label:"SensorTargetScanAngle",field:"scanAngle"},{label:"MaxAngle",field:"scanAngle"},{label:"ScannerTimeToScan",field:"scanTime"},{label:"ProbeRadius",field:"probeRadius"},{label:"DSS_PatchRadius",field:"probeRadius"},{label:"FSDInterdictorFacingLimit",field:"interdictorFacingLimit"},{label:"FSDInterdictorRange",field:"interdictorRange"},{label:"DefenceModifierShieldMultiplier",field:"shieldBoost",scale:percent,multiplierBase:percent},{label:"DefenceModifierHealthMultiplier",field:"hullBoost",scale:percent,multiplierBase:percent},{label:"DefenceModifierHealthAddition",field:"hullReinforcement"},{label:"DefenceModifierShieldAddition",field:"shieldAddition"},{label:"GuardianModuleResistance",field:"guardianZoneResistance",capabilityValue:"Active"},{label:"KineticResistance",field:"kineticResistance",scale:percent,multiplierBase:-percent},{label:"ThermicResistance",field:"thermalResistance",scale:percent,multiplierBase:-percent},{label:"ExplosiveResistance",field:"explosiveResistance",scale:percent,multiplierBase:-percent},{label:"CausticResistance",field:"causticResistance",scale:percent,multiplierBase:-percent},{label:"DamageProtection",field:"moduleProtection",scale:percent},{label:"ModuleDefenceAbsorption",field:"moduleProtection",scale:percent},{label:"Damage",field:"damage"},{label:"Rounds",field:"roundsPerShot",defaultBase:1},{label:"RoundsPerShot",field:"roundsPerShot",defaultBase:1},{label:"RateOfFire",field:"rateOfFire"},{label:"BurstInterval",field:"burstInterval"},{label:"BurstSize",field:"burstRounds",defaultBase:1},{label:"BurstRateOfFire",field:"burstRateOfFire",defaultBase:1},{label:"AmmoClipSize",field:"clipSize"},{label:"AmmoMaximum",field:"ammoMaximum"},{label:"ReloadTime",field:"reloadTime"},{label:"DistributorDraw",field:"distributorDraw"},{label:"ThermalLoad",field:"thermalLoad"},{label:"ArmourPenetration",field:"armourPiercing"},{label:"Range",field:"maximumRange"},{label:"Range",field:"scannerRange"},{label:"MaximumRange",field:"maximumRange"},{label:"FalloffRange",field:"falloffRange"},{label:"DamageFalloffRange",field:"falloffRange"},{label:"ShotSpeed",field:"shotSpeed"},{label:"$Kinetic;",field:"damageDistribution",damageType:"kinetic",scale:percent,defaultBase:0},{label:"$Thermal;",field:"damageDistribution",damageType:"thermal",scale:percent,defaultBase:0},{label:"$Explosive;",field:"damageDistribution",damageType:"explosive",scale:percent,defaultBase:0},{label:"$Absolute;",field:"damageDistribution",damageType:"absolute",scale:percent,defaultBase:0},{label:"Jitter",field:"jitter",defaultBase:0}];var BY_LABEL=(()=>{const entries=/* @__PURE__ */new Map;for(const entry of STAT_LABELS){const forLabel=entries.get(entry.label)??[];forLabel.push(entry);entries.set(entry.label,forLabel)}return entries})();var LABELS_BY_FIELD=(()=>{const labels=/* @__PURE__ */new Map;for(const entry of STAT_LABELS){if(entry.damageType!==void 0)continue;const fieldLabels=labels.get(entry.field)??[];fieldLabels.push(entry.label);labels.set(entry.field,fieldLabels)}return labels})();function baseStats(stats){const base={};for(const{label:label,field:field,damageType:damageType,scale:scale,defaultBase:defaultBase}of STAT_LABELS){if(base[label]!==void 0)continue;const value=damageType===void 0?stats[field]:stats.damageDistribution?.[damageType];if(typeof value==="number")base[label]=value*(scale??1);else if(defaultBase!==void 0&&isWeapon(stats))base[label]=defaultBase}return base}function isWeapon(stats){return stats.damage!==void 0}function fieldForLabel(label,stats){const entries=BY_LABEL.get(label);if(!entries||entries.length===0)return null;if(stats&&entries.length>1){const carried=entries.find(entry=>typeof stats[entry.field]==="number");if(carried)return carried.field}return entries[0].field}function damageTypeForLabel(label){return BY_LABEL.get(label)?.[0]?.damageType??null}function labelsForDamageType(type){return STAT_LABELS.filter(entry=>entry.damageType===type).map(entry=>entry.label)}function scaleForLabel(label){return BY_LABEL.get(label)?.[0]?.scale??1}function multiplierBaseForLabel(label){return BY_LABEL.get(label)?.[0]?.multiplierBase??null}function capabilityValueForLabel(label){return BY_LABEL.get(label)?.[0]?.capabilityValue??null}function labelsForField(field){return LABELS_BY_FIELD.get(field)??[]}var PRECISE_VALUE=/* @__PURE__ */Symbol("precise engineering modifier value");function withPreciseModifierValue(modifier,value){Object.defineProperty(modifier,PRECISE_VALUE,{value:value});return modifier}function preciseModifierValue(modifier){return modifier[PRECISE_VALUE]??modifier.Value}var round6=n=>{const rounded=Math.round(n*1e6)/1e6;return Object.is(rounded,-0)?0:rounded};var FLOAT32_SCALED_BASE_LABELS=/* @__PURE__ */new Set(["EngineOptPerformance","EngineMinPerformance","EngineMaxPerformance","ShieldGenStrength","ShieldGenMinStrength","ShieldGenMaxStrength"]);function computeModifiers(base,grade,quality=1,experimental){if(!Number.isFinite(quality)||quality<0||quality>1){throw new RangeError(`computeModifiers: quality must be a finite number in [0, 1]`)}const f=Math.fround;const roll=f(quality);const byLabel=/* @__PURE__ */new Map;const add=(label,method,value,stated)=>{const list=byLabel.get(label)??[];list.push({method:method,value:value,stated:stated});byLabel.set(label,list)};const features="features"in grade?grade.features:grade;for(const feature of features){const rolledValue=roll===0?feature.min:roll===1?feature.max:feature.min+(feature.max-feature.min)*roll;const value=feature.method==="overwrite"?rolledValue:roll===0||roll===1?f(rolledValue):f(f(feature.min)+f(f(feature.max-feature.min)*roll));add(feature.label,feature.method,value,feature.min===feature.max||roll===0||roll===1)}const experimentalModifiers=experimental&&"modifiers"in experimental?experimental.modifiers:experimental;for(const e of experimentalModifiers??[]){add(e.label,e.method,e.method==="overwrite"?e.value:f(e.value),true)}const modifiers=[];let clipIsOverwritten=false;for(const[label,contributions]of byLabel){const capabilityValue=capabilityValueForLabel(label);if(capabilityValue!==null){modifiers.push({Label:label,ValueStr:capabilityValue});continue}const baseValue=base[label];const overwrite=contributions.find(c=>c.method==="overwrite");const multiplierBase=multiplierBaseForLabel(label);const original=baseValue===void 0?void 0:float32JournalValue(baseValue,multiplierBase,FLOAT32_SCALED_BASE_LABELS.has(label)?scaleForLabel(label):1);const baseless=original===void 0&&(multiplierBase!==null||overwrite!==void 0||contributions.some(c=>c.method==="additive"));if(original===void 0&&!baseless)continue;let value=original??0;if(multiplierBase===null){for(const c of contributions){if(c.method==="multiplicative")value=f(value*f(1+f(c.value)))}for(const c of contributions){if(c.method==="additive")value=f(value+f(c.value))}}else{let factor=f(1+value/multiplierBase);for(const c of contributions){if(c.method==="overwrite")continue;factor=f(factor*f(1+f(f(c.value)*100/multiplierBase)))}value=f(f(factor-1)*multiplierBase)}if(overwrite)value=overwrite.value;if(label==="AmmoClipSize"){if(overwrite)clipIsOverwritten=true;else if(original!==void 0&&contributions.every(c=>c.stated)){value=snapToStatedWhole(value,original)}}else if(label==="AmmoMaximum"&&!overwrite){value=Math.round(value)}modifiers.push(withPreciseModifierValue({Label:label,Value:round6(value),...original===void 0&&multiplierBase===null?{}:{OriginalValue:round6(original??0)}},value))}const resolved=resolveFalloffFromRange(modifiers,base);return clipIsOverwritten?resolved:roundClipToWholeBursts(resolved,base)}function float32JournalValue(value,multiplierBase,scale){if(multiplierBase===null){return Math.fround(Math.fround(value/scale)*scale)}const factor=Math.fround(1+value/multiplierBase);return Math.fround(Math.fround(factor-1)*multiplierBase)}function roundClipToWholeBursts(modifiers,base){const clip=modifiers.find(m=>m.Label==="AmmoClipSize");if(!clip?.Value||clip.Value===clip.OriginalValue)return modifiers;const burst=modifiers.find(m=>m.Label==="BurstSize")?.Value||base["BurstSize"]||1;const rounded=Math.ceil(clip.Value/burst)*burst;if(rounded===clip.Value)return modifiers;return modifiers.map(m=>m===clip?{...m,Value:rounded}:m)}function snapToStatedWhole(value,base){const whole=Math.round(value);return Math.abs(value-whole)<=Math.abs(base)*5e-4?whole:value}function resolveFalloffFromRange(modifiers,base){const falloff=modifiers.find(m=>m.Label==="FalloffRange");if(!falloff||falloff.Value===void 0)return modifiers;const range=modifiers.find(m=>m.Label==="Range"||m.Label==="MaximumRange")?.Value??base["Range"]??base["MaximumRange"];if(range===void 0){return falloff.Value<=1?modifiers.filter(m=>m!==falloff):modifiers}if(falloff.Value<=1||falloff.Value>range){return modifiers.map(m=>m===falloff?{...m,Value:round6(range)}:m)}return modifiers}function rollsForGrade(grade){if(!Number.isInteger(grade)||grade<1||grade>5){throw new RangeError(`rollsForGrade: grade must be an integer in [1, 5]`)}return grade}function sumMaterials(...lists){const totals=/* @__PURE__ */new Map;for(const list of lists){for(const material of list){const key=material.symbol.toLowerCase();const previous=totals.get(key);totals.set(key,{symbol:previous?.symbol??material.symbol,name:previous?.name??material.name,count:(previous?.count??0)+material.count})}}return[...totals.values()]}export{baseStats,capabilityValueForLabel,computeModifiers,damageTypeForLabel,fieldForLabel,labelsForDamageType,labelsForField,preciseModifierValue,rollsForGrade,scaleForLabel,sumMaterials};//# sourceMappingURL=chunk-SVZARHWP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/internal/module-stat-labels.ts","../src/ships/internal/engineering-precision.ts","../src/ships/engineering.ts"],"names":["percent","STAT_LABELS","label","field","scale","multiplierBase","capabilityValue","defaultBase","damageType","BY_LABEL","entries","Map","entry","forLabel","get","push","set","LABELS_BY_FIELD","labels","fieldLabels","baseStats","stats","base","value","damageDistribution","isWeapon","damage","fieldForLabel","length","carried","find","damageTypeForLabel","labelsForDamageType","type","filter","map","scaleForLabel","multiplierBaseForLabel","capabilityValueForLabel","labelsForField","PRECISE_VALUE","Symbol","withPreciseModifierValue","modifier","Object","defineProperty","preciseModifierValue","Value","round6","n","rounded","Math","round","is","FLOAT32_SCALED_BASE_LABELS","Set","computeModifiers","grade","quality","experimental","Number","isFinite","RangeError","f","fround","roll","byLabel","add","method","stated","list","features","feature","rolledValue","min","max","experimentalModifiers","modifiers","e","clipIsOverwritten","contributions","Label","ValueStr","baseValue","overwrite","c","original","float32JournalValue","has","baseless","some","factor","every","snapToStatedWhole","OriginalValue","resolved","resolveFalloffFromRange","roundClipToWholeBursts","clip","m","burst","ceil","whole","abs","falloff","range","rollsForGrade","isInteger","sumMaterials","lists","totals","material","key","symbol","toLowerCase","previous","name","count","values"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{combinedRateOfFire}from"./chunk-LJI7VXJD.js";import{getPreEngineeredVariants}from"./chunk-XYK6DYVQ.js";import{getExperimentalEffect}from"./chunk-PMJG7PHU.js";import{fixedModifierFeatures}from"./chunk-4TXQWLIQ.js";import{getModuleBySymbol}from"./chunk-PRQELBIC.js";import{ALL_MODULES}from"./chunk-W7XI3WVA.js";import{fieldForLabel,scaleForLabel,capabilityValueForLabel,computeModifiers,baseStats}from"./chunk-SVZARHWP.js";import{normalizeKey}from"./chunk-S4DBNX2B.js";import{requireStringIfPresent}from"./chunk-B5TT26XE.js";function scaleDamageComponents(components,baseDamage,effectiveDamage){const scale=baseDamage!==void 0&&baseDamage!==0&&effectiveDamage!==void 0?effectiveDamage/baseDamage:1;return{...components.kinetic===void 0?{}:{kinetic:components.kinetic*scale},...components.thermal===void 0?{}:{thermal:components.thermal*scale},...components.explosive===void 0?{}:{explosive:components.explosive*scale},...components.absolute===void 0?{}:{absolute:components.absolute*scale},...components.antiXeno===void 0?{}:{antiXeno:components.antiXeno*scale},...components.unclassified===void 0?{}:{unclassified:components.unclassified.map(value=>value*scale)}}}function modifiersWithExperimental(variant,experimental){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);const effectName=experimental??variant.experimental;if(!module||!variant.modifiers?.length&&effectName===void 0)return null;const effect=effectName===void 0?void 0:getExperimentalEffect(effectName);if(effectName!==void 0&&!effect)return null;return computeModifiers(baseStats(module),fixedModifierFeatures(variant.modifiers??[]),1,effect??void 0)}function getPreEngineeredModifiers(variant){return modifiersWithExperimental(variant)??[]}function sameJournalNumber(actual,expected){return Math.abs(actual-expected)<=Math.max(1e-5,Math.abs(expected)*1e-6)}function modifierKey(modifier,module){return fieldForLabel(modifier.Label,module)??`label:${normalizeKey(modifier.Label,"identifyPreEngineeredVariant: module.Engineering.Modifiers[].Label")}`}function sameModifier(actual,expected){if(expected.Value!==void 0){return actual.Value!==void 0&&sameJournalNumber(actual.Value,expected.Value)}return expected.ValueStr!==void 0&&actual.ValueStr!==void 0}function identifyPreEngineeredVariant(module){const engineering=module.Engineering;if(!engineering?.Modifiers?.length)return null;requireStringIfPresent(module.Item,"identifyPreEngineeredVariant: module.Item");const stock=getModuleBySymbol(module.Item,ALL_MODULES);if(!stock)return null;const actualByKey=/* @__PURE__ */new Map;for(const modifier of engineering.Modifiers){actualByKey.set(modifierKey(modifier,stock),modifier)}const capturedExperimental=normalizeKey(engineering.ExperimentalEffect,"identifyPreEngineeredVariant: module.Engineering.ExperimentalEffect");const matches=[];for(const candidate of getPreEngineeredVariants(module.Item)){if(!candidate.modifiers?.length)continue;if(candidate.experimental!==void 0&&candidate.experimental.toLowerCase()!==capturedExperimental){continue}const expected=modifiersWithExperimental(candidate,engineering.ExperimentalEffect);if(!expected?.length)continue;let matched=0;let disagrees=false;for(const predicted of expected){const actual=actualByKey.get(modifierKey(predicted,stock));if(!actual)continue;if(!sameModifier(actual,predicted)){disagrees=true;break}matched++}if(!disagrees&&matched>=Math.max(1,expected.length-1))matches.push(candidate)}return matches.length===1?matches[0]:null}function unresolvedModifiers(variant){const resolved=new Set(getPreEngineeredModifiers(variant).map(modifier=>modifier.Label));return(variant.modifiers??[]).map(modifier=>modifier.label).filter(label=>!resolved.has(label))}function getPreEngineeredStats(variant){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);if(!module)return null;if(!variant.modifiers?.length&&!variant.engineeringLocked&&variant.experimental===void 0)return module;const modifiers=variant.modifiers??[];const resolved={...module,...variant.engineeringLocked?{engineeringLocked:true}:{}};for(const{Label:Label,Value:Value,ValueStr:ValueStr}of getPreEngineeredModifiers(variant)){const field=fieldForLabel(Label,module);if(field&&field!=="damageDistribution"&&Value!==void 0){Object.assign(resolved,{[field]:Value/scaleForLabel(Label)})}else if(field&&ValueStr!==void 0&&capabilityValueForLabel(Label)!==null){Object.assign(resolved,{[field]:true})}}const experimentalDamageDistribution=variant.experimental?getExperimentalEffect(variant.experimental)?.damageDistribution:void 0;if(experimentalDamageDistribution){resolved.damageDistribution={...experimentalDamageDistribution};delete resolved.damageComponents}if(resolved.rateOfFire!==void 0&&!modifiers.some(m=>m.label==="RateOfFire")&&modifiers.some(m=>m.label==="BurstSize"||m.label==="BurstRateOfFire"||m.label==="BurstInterval")){const rate=combinedRateOfFire(resolved);if(rate!==void 0)resolved.rateOfFire=rate}if(module.damageComponents&&!experimentalDamageDistribution){resolved.damageComponents=scaleDamageComponents(module.damageComponents,module.damage,resolved.damage)}return resolved}export{getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,scaleDamageComponents,unresolvedModifiers};//# sourceMappingURL=chunk-T6DP655O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ships/internal/damage-components.ts","../src/ships/pre-engineered-stats.ts"],"names":["combinedRateOfFire","getPreEngineeredVariants","getExperimentalEffect","fixedModifierFeatures","getModuleBySymbol","ALL_MODULES","fieldForLabel","scaleForLabel","capabilityValueForLabel","computeModifiers","baseStats","normalizeKey","requireStringIfPresent","scaleDamageComponents","components","baseDamage","effectiveDamage","scale","kinetic","thermal","explosive","absolute","antiXeno","unclassified","map","value","modifiersWithExperimental","variant","experimental","module","symbol","effectName","modifiers","length","effect","getPreEngineeredModifiers","sameJournalNumber","actual","expected","Math","abs","max","modifierKey","modifier","Label","sameModifier","Value","ValueStr","identifyPreEngineeredVariant","engineering","Engineering","Modifiers","Item","stock","actualByKey","Map","set","capturedExperimental","ExperimentalEffect","matches","candidate","toLowerCase","matched","disagrees","predicted","get","push","unresolvedModifiers","resolved","Set","label","filter","has","getPreEngineeredStats","engineeringLocked","field","Object","assign","experimentalDamageDistribution","damageDistribution","damageComponents","rateOfFire","some","m","rate","damage"],"mappings":"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"}
|