eve-fit-engine 0.1.3 → 0.1.4

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/dist/index.cjs CHANGED
@@ -232,6 +232,8 @@ var ATTR = {
232
232
  EXPLOSION_RADIUS: 654,
233
233
  DRF: 858,
234
234
  // damage reduction factor
235
+ EXPLOSION_DELAY: 281,
236
+ // charge attr — "Maximum Flight Time" (ms); range = maxVelocity × flightTime/1000
235
237
  // ---- Breacher Pods (DOT charges, e.g. SCARAB Breacher Pod M) ----
236
238
  DOT_DURATION: 5735,
237
239
  // ms
@@ -4655,10 +4657,14 @@ function readRangeInfo(item, effect, kind) {
4655
4657
  let explosionRadius = 0;
4656
4658
  let explosionVelocity = 0;
4657
4659
  let drf = 0;
4660
+ let flightRange = 0;
4658
4661
  if (kind === "MISSILE" && item.charge) {
4659
4662
  explosionRadius = item.charge.getFinal(ATTR.EXPLOSION_RADIUS, 0);
4660
4663
  explosionVelocity = item.charge.getFinal(ATTR.EXPLOSION_VELOCITY, 0);
4661
4664
  drf = item.charge.getFinal(ATTR.DRF, 0);
4665
+ const velocity = item.charge.getFinal(ATTR.MAX_VELOCITY, 0);
4666
+ const flightMs = item.charge.getFinal(ATTR.EXPLOSION_DELAY, 0);
4667
+ flightRange = velocity * flightMs / 1e3;
4662
4668
  }
4663
4669
  return {
4664
4670
  optimal,
@@ -4667,7 +4673,8 @@ function readRangeInfo(item, effect, kind) {
4667
4673
  burstRange,
4668
4674
  explosionRadius,
4669
4675
  explosionVelocity,
4670
- drf
4676
+ drf,
4677
+ flightRange
4671
4678
  };
4672
4679
  }
4673
4680
 
@@ -4748,6 +4755,7 @@ function computeOffense(ctx, dataset, fit) {
4748
4755
  const weaponTracking = turretContribs.length > 0 ? Math.min(...turretContribs.map((c) => c.range.tracking).filter((v) => v > 0)) : void 0;
4749
4756
  const explosionVelocity = missileContribs.length > 0 ? missileContribs[0].range.explosionVelocity : void 0;
4750
4757
  const explosionRadius = missileContribs.length > 0 ? missileContribs[0].range.explosionRadius : void 0;
4758
+ const missileRange = missileContribs.length > 0 ? Math.max(...missileContribs.map((c) => c.range.flightRange).filter((v) => v > 0)) : void 0;
4751
4759
  return {
4752
4760
  weaponDps,
4753
4761
  weaponSustainedDps,
@@ -4761,6 +4769,7 @@ function computeOffense(ctx, dataset, fit) {
4761
4769
  weaponTracking,
4762
4770
  explosionVelocity,
4763
4771
  explosionRadius,
4772
+ missileRange: missileRange != null && Number.isFinite(missileRange) ? missileRange : void 0,
4764
4773
  breakdown
4765
4774
  };
4766
4775
  }
@@ -4829,7 +4838,8 @@ function fighterContributionFor(fighter, count, _ctx, dataset) {
4829
4838
  burstRange: 0,
4830
4839
  explosionRadius: fighter.getFinal(2125, 0),
4831
4840
  explosionVelocity: fighter.getFinal(2126, 0),
4832
- drf: fighter.getFinal(2127, 0)
4841
+ drf: fighter.getFinal(2127, 0),
4842
+ flightRange: 0
4833
4843
  },
4834
4844
  count
4835
4845
  };
@@ -5461,6 +5471,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
5461
5471
  weaponTracking: offense.weaponTracking,
5462
5472
  explosionVelocity: offense.explosionVelocity,
5463
5473
  explosionRadius: offense.explosionRadius,
5474
+ missileRange: offense.missileRange,
5464
5475
  breakdown: offense.breakdown
5465
5476
  },
5466
5477
  capacitor: {
package/dist/index.d.cts CHANGED
@@ -464,6 +464,7 @@ interface DerivedStats {
464
464
  weaponTracking?: number;
465
465
  explosionVelocity?: number;
466
466
  explosionRadius?: number;
467
+ missileRange?: number;
467
468
  breakdown: WeaponContribution[];
468
469
  };
469
470
  capacitor: {
@@ -652,6 +653,7 @@ interface WeaponContribution {
652
653
  explosionRadius: number;
653
654
  explosionVelocity: number;
654
655
  drf: number;
656
+ flightRange: number;
655
657
  };
656
658
  chargeTypeID?: number;
657
659
  count: number;
@@ -1025,6 +1027,7 @@ declare const ATTR: {
1025
1027
  readonly EXPLOSION_VELOCITY: 653;
1026
1028
  readonly EXPLOSION_RADIUS: 654;
1027
1029
  readonly DRF: 858;
1030
+ readonly EXPLOSION_DELAY: 281;
1028
1031
  readonly DOT_DURATION: 5735;
1029
1032
  readonly DOT_MAX_DAMAGE_PER_TICK: 5736;
1030
1033
  readonly DOT_MAX_HP_PERCENTAGE_PER_TICK: 5737;
@@ -1756,6 +1759,9 @@ interface OffenseReport {
1756
1759
  weaponTracking?: number;
1757
1760
  explosionVelocity?: number;
1758
1761
  explosionRadius?: number;
1762
+ /** Missile max flight range (m) — modified velocity × flight time. The
1763
+ * missile equivalent of `weaponOptimal`. Undefined for non-missile fits. */
1764
+ missileRange?: number;
1759
1765
  breakdown: WeaponContribution[];
1760
1766
  }
1761
1767
  declare function computeOffense(ctx: FitContext, dataset: FittingDataset, fit: {
@@ -1891,6 +1897,9 @@ interface WeaponRangeInfo {
1891
1897
  explosionVelocity: number;
1892
1898
  /** Missile-specific: damage reduction factor (DRF). */
1893
1899
  drf: number;
1900
+ /** Missile-specific: max flight range in meters — modified charge
1901
+ * velocity × flight time (ship/skill/rig bonuses included). 0 otherwise. */
1902
+ flightRange: number;
1894
1903
  }
1895
1904
  declare function readRangeInfo(item: ItemState, effect: SdeEffect, kind: WeaponEffectKind): WeaponRangeInfo;
1896
1905
 
package/dist/index.d.ts CHANGED
@@ -464,6 +464,7 @@ interface DerivedStats {
464
464
  weaponTracking?: number;
465
465
  explosionVelocity?: number;
466
466
  explosionRadius?: number;
467
+ missileRange?: number;
467
468
  breakdown: WeaponContribution[];
468
469
  };
469
470
  capacitor: {
@@ -652,6 +653,7 @@ interface WeaponContribution {
652
653
  explosionRadius: number;
653
654
  explosionVelocity: number;
654
655
  drf: number;
656
+ flightRange: number;
655
657
  };
656
658
  chargeTypeID?: number;
657
659
  count: number;
@@ -1025,6 +1027,7 @@ declare const ATTR: {
1025
1027
  readonly EXPLOSION_VELOCITY: 653;
1026
1028
  readonly EXPLOSION_RADIUS: 654;
1027
1029
  readonly DRF: 858;
1030
+ readonly EXPLOSION_DELAY: 281;
1028
1031
  readonly DOT_DURATION: 5735;
1029
1032
  readonly DOT_MAX_DAMAGE_PER_TICK: 5736;
1030
1033
  readonly DOT_MAX_HP_PERCENTAGE_PER_TICK: 5737;
@@ -1756,6 +1759,9 @@ interface OffenseReport {
1756
1759
  weaponTracking?: number;
1757
1760
  explosionVelocity?: number;
1758
1761
  explosionRadius?: number;
1762
+ /** Missile max flight range (m) — modified velocity × flight time. The
1763
+ * missile equivalent of `weaponOptimal`. Undefined for non-missile fits. */
1764
+ missileRange?: number;
1759
1765
  breakdown: WeaponContribution[];
1760
1766
  }
1761
1767
  declare function computeOffense(ctx: FitContext, dataset: FittingDataset, fit: {
@@ -1891,6 +1897,9 @@ interface WeaponRangeInfo {
1891
1897
  explosionVelocity: number;
1892
1898
  /** Missile-specific: damage reduction factor (DRF). */
1893
1899
  drf: number;
1900
+ /** Missile-specific: max flight range in meters — modified charge
1901
+ * velocity × flight time (ship/skill/rig bonuses included). 0 otherwise. */
1902
+ flightRange: number;
1894
1903
  }
1895
1904
  declare function readRangeInfo(item: ItemState, effect: SdeEffect, kind: WeaponEffectKind): WeaponRangeInfo;
1896
1905
 
package/dist/index.js CHANGED
@@ -230,6 +230,8 @@ var ATTR = {
230
230
  EXPLOSION_RADIUS: 654,
231
231
  DRF: 858,
232
232
  // damage reduction factor
233
+ EXPLOSION_DELAY: 281,
234
+ // charge attr — "Maximum Flight Time" (ms); range = maxVelocity × flightTime/1000
233
235
  // ---- Breacher Pods (DOT charges, e.g. SCARAB Breacher Pod M) ----
234
236
  DOT_DURATION: 5735,
235
237
  // ms
@@ -4653,10 +4655,14 @@ function readRangeInfo(item, effect, kind) {
4653
4655
  let explosionRadius = 0;
4654
4656
  let explosionVelocity = 0;
4655
4657
  let drf = 0;
4658
+ let flightRange = 0;
4656
4659
  if (kind === "MISSILE" && item.charge) {
4657
4660
  explosionRadius = item.charge.getFinal(ATTR.EXPLOSION_RADIUS, 0);
4658
4661
  explosionVelocity = item.charge.getFinal(ATTR.EXPLOSION_VELOCITY, 0);
4659
4662
  drf = item.charge.getFinal(ATTR.DRF, 0);
4663
+ const velocity = item.charge.getFinal(ATTR.MAX_VELOCITY, 0);
4664
+ const flightMs = item.charge.getFinal(ATTR.EXPLOSION_DELAY, 0);
4665
+ flightRange = velocity * flightMs / 1e3;
4660
4666
  }
4661
4667
  return {
4662
4668
  optimal,
@@ -4665,7 +4671,8 @@ function readRangeInfo(item, effect, kind) {
4665
4671
  burstRange,
4666
4672
  explosionRadius,
4667
4673
  explosionVelocity,
4668
- drf
4674
+ drf,
4675
+ flightRange
4669
4676
  };
4670
4677
  }
4671
4678
 
@@ -4746,6 +4753,7 @@ function computeOffense(ctx, dataset, fit) {
4746
4753
  const weaponTracking = turretContribs.length > 0 ? Math.min(...turretContribs.map((c) => c.range.tracking).filter((v) => v > 0)) : void 0;
4747
4754
  const explosionVelocity = missileContribs.length > 0 ? missileContribs[0].range.explosionVelocity : void 0;
4748
4755
  const explosionRadius = missileContribs.length > 0 ? missileContribs[0].range.explosionRadius : void 0;
4756
+ const missileRange = missileContribs.length > 0 ? Math.max(...missileContribs.map((c) => c.range.flightRange).filter((v) => v > 0)) : void 0;
4749
4757
  return {
4750
4758
  weaponDps,
4751
4759
  weaponSustainedDps,
@@ -4759,6 +4767,7 @@ function computeOffense(ctx, dataset, fit) {
4759
4767
  weaponTracking,
4760
4768
  explosionVelocity,
4761
4769
  explosionRadius,
4770
+ missileRange: missileRange != null && Number.isFinite(missileRange) ? missileRange : void 0,
4762
4771
  breakdown
4763
4772
  };
4764
4773
  }
@@ -4827,7 +4836,8 @@ function fighterContributionFor(fighter, count, _ctx, dataset) {
4827
4836
  burstRange: 0,
4828
4837
  explosionRadius: fighter.getFinal(2125, 0),
4829
4838
  explosionVelocity: fighter.getFinal(2126, 0),
4830
- drf: fighter.getFinal(2127, 0)
4839
+ drf: fighter.getFinal(2127, 0),
4840
+ flightRange: 0
4831
4841
  },
4832
4842
  count
4833
4843
  };
@@ -5459,6 +5469,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
5459
5469
  weaponTracking: offense.weaponTracking,
5460
5470
  explosionVelocity: offense.explosionVelocity,
5461
5471
  explosionRadius: offense.explosionRadius,
5472
+ missileRange: offense.missileRange,
5462
5473
  breakdown: offense.breakdown
5463
5474
  },
5464
5475
  capacitor: {
package/dist/node.cjs CHANGED
@@ -260,6 +260,8 @@ var ATTR = {
260
260
  EXPLOSION_RADIUS: 654,
261
261
  DRF: 858,
262
262
  // damage reduction factor
263
+ EXPLOSION_DELAY: 281,
264
+ // charge attr — "Maximum Flight Time" (ms); range = maxVelocity × flightTime/1000
263
265
  // ---- Breacher Pods (DOT charges, e.g. SCARAB Breacher Pod M) ----
264
266
  DOT_DURATION: 5735,
265
267
  // ms
@@ -4683,10 +4685,14 @@ function readRangeInfo(item, effect, kind) {
4683
4685
  let explosionRadius = 0;
4684
4686
  let explosionVelocity = 0;
4685
4687
  let drf = 0;
4688
+ let flightRange = 0;
4686
4689
  if (kind === "MISSILE" && item.charge) {
4687
4690
  explosionRadius = item.charge.getFinal(ATTR.EXPLOSION_RADIUS, 0);
4688
4691
  explosionVelocity = item.charge.getFinal(ATTR.EXPLOSION_VELOCITY, 0);
4689
4692
  drf = item.charge.getFinal(ATTR.DRF, 0);
4693
+ const velocity = item.charge.getFinal(ATTR.MAX_VELOCITY, 0);
4694
+ const flightMs = item.charge.getFinal(ATTR.EXPLOSION_DELAY, 0);
4695
+ flightRange = velocity * flightMs / 1e3;
4690
4696
  }
4691
4697
  return {
4692
4698
  optimal,
@@ -4695,7 +4701,8 @@ function readRangeInfo(item, effect, kind) {
4695
4701
  burstRange,
4696
4702
  explosionRadius,
4697
4703
  explosionVelocity,
4698
- drf
4704
+ drf,
4705
+ flightRange
4699
4706
  };
4700
4707
  }
4701
4708
 
@@ -4776,6 +4783,7 @@ function computeOffense(ctx, dataset, fit) {
4776
4783
  const weaponTracking = turretContribs.length > 0 ? Math.min(...turretContribs.map((c) => c.range.tracking).filter((v) => v > 0)) : void 0;
4777
4784
  const explosionVelocity = missileContribs.length > 0 ? missileContribs[0].range.explosionVelocity : void 0;
4778
4785
  const explosionRadius = missileContribs.length > 0 ? missileContribs[0].range.explosionRadius : void 0;
4786
+ const missileRange = missileContribs.length > 0 ? Math.max(...missileContribs.map((c) => c.range.flightRange).filter((v) => v > 0)) : void 0;
4779
4787
  return {
4780
4788
  weaponDps,
4781
4789
  weaponSustainedDps,
@@ -4789,6 +4797,7 @@ function computeOffense(ctx, dataset, fit) {
4789
4797
  weaponTracking,
4790
4798
  explosionVelocity,
4791
4799
  explosionRadius,
4800
+ missileRange: missileRange != null && Number.isFinite(missileRange) ? missileRange : void 0,
4792
4801
  breakdown
4793
4802
  };
4794
4803
  }
@@ -4857,7 +4866,8 @@ function fighterContributionFor(fighter, count, _ctx, dataset) {
4857
4866
  burstRange: 0,
4858
4867
  explosionRadius: fighter.getFinal(2125, 0),
4859
4868
  explosionVelocity: fighter.getFinal(2126, 0),
4860
- drf: fighter.getFinal(2127, 0)
4869
+ drf: fighter.getFinal(2127, 0),
4870
+ flightRange: 0
4861
4871
  },
4862
4872
  count
4863
4873
  };
@@ -5489,6 +5499,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
5489
5499
  weaponTracking: offense.weaponTracking,
5490
5500
  explosionVelocity: offense.explosionVelocity,
5491
5501
  explosionRadius: offense.explosionRadius,
5502
+ missileRange: offense.missileRange,
5492
5503
  breakdown: offense.breakdown
5493
5504
  },
5494
5505
  capacitor: {
package/dist/node.js CHANGED
@@ -236,6 +236,8 @@ var ATTR = {
236
236
  EXPLOSION_RADIUS: 654,
237
237
  DRF: 858,
238
238
  // damage reduction factor
239
+ EXPLOSION_DELAY: 281,
240
+ // charge attr — "Maximum Flight Time" (ms); range = maxVelocity × flightTime/1000
239
241
  // ---- Breacher Pods (DOT charges, e.g. SCARAB Breacher Pod M) ----
240
242
  DOT_DURATION: 5735,
241
243
  // ms
@@ -4659,10 +4661,14 @@ function readRangeInfo(item, effect, kind) {
4659
4661
  let explosionRadius = 0;
4660
4662
  let explosionVelocity = 0;
4661
4663
  let drf = 0;
4664
+ let flightRange = 0;
4662
4665
  if (kind === "MISSILE" && item.charge) {
4663
4666
  explosionRadius = item.charge.getFinal(ATTR.EXPLOSION_RADIUS, 0);
4664
4667
  explosionVelocity = item.charge.getFinal(ATTR.EXPLOSION_VELOCITY, 0);
4665
4668
  drf = item.charge.getFinal(ATTR.DRF, 0);
4669
+ const velocity = item.charge.getFinal(ATTR.MAX_VELOCITY, 0);
4670
+ const flightMs = item.charge.getFinal(ATTR.EXPLOSION_DELAY, 0);
4671
+ flightRange = velocity * flightMs / 1e3;
4666
4672
  }
4667
4673
  return {
4668
4674
  optimal,
@@ -4671,7 +4677,8 @@ function readRangeInfo(item, effect, kind) {
4671
4677
  burstRange,
4672
4678
  explosionRadius,
4673
4679
  explosionVelocity,
4674
- drf
4680
+ drf,
4681
+ flightRange
4675
4682
  };
4676
4683
  }
4677
4684
 
@@ -4752,6 +4759,7 @@ function computeOffense(ctx, dataset, fit) {
4752
4759
  const weaponTracking = turretContribs.length > 0 ? Math.min(...turretContribs.map((c) => c.range.tracking).filter((v) => v > 0)) : void 0;
4753
4760
  const explosionVelocity = missileContribs.length > 0 ? missileContribs[0].range.explosionVelocity : void 0;
4754
4761
  const explosionRadius = missileContribs.length > 0 ? missileContribs[0].range.explosionRadius : void 0;
4762
+ const missileRange = missileContribs.length > 0 ? Math.max(...missileContribs.map((c) => c.range.flightRange).filter((v) => v > 0)) : void 0;
4755
4763
  return {
4756
4764
  weaponDps,
4757
4765
  weaponSustainedDps,
@@ -4765,6 +4773,7 @@ function computeOffense(ctx, dataset, fit) {
4765
4773
  weaponTracking,
4766
4774
  explosionVelocity,
4767
4775
  explosionRadius,
4776
+ missileRange: missileRange != null && Number.isFinite(missileRange) ? missileRange : void 0,
4768
4777
  breakdown
4769
4778
  };
4770
4779
  }
@@ -4833,7 +4842,8 @@ function fighterContributionFor(fighter, count, _ctx, dataset) {
4833
4842
  burstRange: 0,
4834
4843
  explosionRadius: fighter.getFinal(2125, 0),
4835
4844
  explosionVelocity: fighter.getFinal(2126, 0),
4836
- drf: fighter.getFinal(2127, 0)
4845
+ drf: fighter.getFinal(2127, 0),
4846
+ flightRange: 0
4837
4847
  },
4838
4848
  count
4839
4849
  };
@@ -5465,6 +5475,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
5465
5475
  weaponTracking: offense.weaponTracking,
5466
5476
  explosionVelocity: offense.explosionVelocity,
5467
5477
  explosionRadius: offense.explosionRadius,
5478
+ missileRange: offense.missileRange,
5468
5479
  breakdown: offense.breakdown
5469
5480
  },
5470
5481
  capacitor: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eve-fit-engine",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Pyfa-parity EVE Online ship & structure fitting calculation engine. Inject an SDE dataset + a fit, get the full derived stat block (offense, defense, capacitor, navigation, targeting, fitting, projected, structure).",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "type": "module",