eve-fit-engine 0.1.20 → 0.1.22
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/data/.build +1 -1
- package/data/manifest.json +1 -1
- package/dist/index.cjs +8 -2
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +8 -2
- package/dist/node.cjs +8 -2
- package/dist/node.js +8 -2
- package/package.json +2 -1
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/attributes.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/categories.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/clone-grades.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/dbuff-collections.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/dynamic-attributes.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/effects.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/groups.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/market-groups.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/meta-groups.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/charges.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/drones.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/fighters.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/implants.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/modules.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/mutaplasmids.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/ships.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/skills.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/structure-modules.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/structures.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/subsystems.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/types/system-effects.json +0 -0
- /package/data/{v4fa5cbe900d0 → v4db61606166f}/units.json +0 -0
package/data/.build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3458726
|
package/data/manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"4db61606166f","builtAt":"2026-08-07T06:12:02.279Z","totalBytes":8459685,"files":{"attributes.json":{"bytes":251648,"entries":1273},"units.json":{"bytes":3458,"entries":60},"effects.json":{"bytes":1598314,"entries":3416},"meta-groups.json":{"bytes":1108,"entries":13},"categories.json":{"bytes":1192,"entries":33},"groups.json":{"bytes":64022,"entries":963},"market-groups.json":{"bytes":197613,"entries":2106},"clone-grades.json":{"bytes":18709,"entries":4},"dbuff-collections.json":{"bytes":87418,"entries":276},"dynamic-attributes.json":{"bytes":143296,"entries":413},"types/ships.json":{"bytes":912990,"entries":423},"types/modules.json":{"bytes":2571430,"entries":3995},"types/charges.json":{"bytes":599961,"entries":1017},"types/drones.json":{"bytes":195367,"entries":154},"types/fighters.json":{"bytes":133181,"entries":94},"types/implants.json":{"bytes":565271,"entries":1301},"types/subsystems.json":{"bytes":36255,"entries":48},"types/skills.json":{"bytes":203164,"entries":511},"types/system-effects.json":{"bytes":37911,"entries":114},"types/structures.json":{"bytes":31627,"entries":18},"types/structure-modules.json":{"bytes":246957,"entries":356},"types/mutaplasmids.json":{"bytes":558793,"entries":2844}}}
|
package/dist/index.cjs
CHANGED
|
@@ -146,6 +146,9 @@ var ATTR = {
|
|
|
146
146
|
UPGRADE_COST: 1153,
|
|
147
147
|
// calibration used per rig
|
|
148
148
|
DRONE_BANDWIDTH: 1271,
|
|
149
|
+
// ship: the cap, Mbit/s
|
|
150
|
+
DRONE_BANDWIDTH_USED: 1272,
|
|
151
|
+
// drone: what ONE drone of this type occupies
|
|
149
152
|
DRONE_CAPACITY: 283,
|
|
150
153
|
// ---- Slots (ship attributes telling how many slots) ----
|
|
151
154
|
HI_SLOTS: 14,
|
|
@@ -5427,7 +5430,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5427
5430
|
const t = dataset.getType(droneItem.typeID);
|
|
5428
5431
|
if (!t) continue;
|
|
5429
5432
|
const volume = t.volume ?? 0;
|
|
5430
|
-
const bandwidth = droneItem.getBase(ATTR.
|
|
5433
|
+
const bandwidth = droneItem.getBase(ATTR.DRONE_BANDWIDTH_USED) ?? 0;
|
|
5431
5434
|
droneBayUsed += volume * fd.countTotal;
|
|
5432
5435
|
droneBwUsed += bandwidth * fd.countActive;
|
|
5433
5436
|
}
|
|
@@ -5533,7 +5536,10 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5533
5536
|
bayMax: ship.getFinal(ATTR.DRONE_CAPACITY, 0),
|
|
5534
5537
|
bandwidthUsed: droneBwUsed,
|
|
5535
5538
|
bandwidthMax: ship.getFinal(ATTR.DRONE_BANDWIDTH, 0),
|
|
5536
|
-
|
|
5539
|
+
// Drones in space, not drone GROUPS in space. `ctx.drones` holds one
|
|
5540
|
+
// ItemState per FitDrone stack, so filtering by state counted five
|
|
5541
|
+
// active Ogre IIs as 1 — and this is the number bandwidth gates.
|
|
5542
|
+
active: fit.drones.reduce((n, d) => n + d.countActive, 0),
|
|
5537
5543
|
// Drone control range is the ship base (default 20 km, attr 458)
|
|
5538
5544
|
// PLUS the character's accumulated skill bonus on the same attr.
|
|
5539
5545
|
// Drone Avionics V + Advanced Drone Avionics V each ModAdd to
|
package/dist/index.d.cts
CHANGED
|
@@ -961,6 +961,7 @@ declare const ATTR: {
|
|
|
961
961
|
readonly UPGRADE_CAPACITY: 1132;
|
|
962
962
|
readonly UPGRADE_COST: 1153;
|
|
963
963
|
readonly DRONE_BANDWIDTH: 1271;
|
|
964
|
+
readonly DRONE_BANDWIDTH_USED: 1272;
|
|
964
965
|
readonly DRONE_CAPACITY: 283;
|
|
965
966
|
readonly HI_SLOTS: 14;
|
|
966
967
|
readonly MED_SLOTS: 13;
|
package/dist/index.d.ts
CHANGED
|
@@ -961,6 +961,7 @@ declare const ATTR: {
|
|
|
961
961
|
readonly UPGRADE_CAPACITY: 1132;
|
|
962
962
|
readonly UPGRADE_COST: 1153;
|
|
963
963
|
readonly DRONE_BANDWIDTH: 1271;
|
|
964
|
+
readonly DRONE_BANDWIDTH_USED: 1272;
|
|
964
965
|
readonly DRONE_CAPACITY: 283;
|
|
965
966
|
readonly HI_SLOTS: 14;
|
|
966
967
|
readonly MED_SLOTS: 13;
|
package/dist/index.js
CHANGED
|
@@ -144,6 +144,9 @@ var ATTR = {
|
|
|
144
144
|
UPGRADE_COST: 1153,
|
|
145
145
|
// calibration used per rig
|
|
146
146
|
DRONE_BANDWIDTH: 1271,
|
|
147
|
+
// ship: the cap, Mbit/s
|
|
148
|
+
DRONE_BANDWIDTH_USED: 1272,
|
|
149
|
+
// drone: what ONE drone of this type occupies
|
|
147
150
|
DRONE_CAPACITY: 283,
|
|
148
151
|
// ---- Slots (ship attributes telling how many slots) ----
|
|
149
152
|
HI_SLOTS: 14,
|
|
@@ -5425,7 +5428,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5425
5428
|
const t = dataset.getType(droneItem.typeID);
|
|
5426
5429
|
if (!t) continue;
|
|
5427
5430
|
const volume = t.volume ?? 0;
|
|
5428
|
-
const bandwidth = droneItem.getBase(ATTR.
|
|
5431
|
+
const bandwidth = droneItem.getBase(ATTR.DRONE_BANDWIDTH_USED) ?? 0;
|
|
5429
5432
|
droneBayUsed += volume * fd.countTotal;
|
|
5430
5433
|
droneBwUsed += bandwidth * fd.countActive;
|
|
5431
5434
|
}
|
|
@@ -5531,7 +5534,10 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5531
5534
|
bayMax: ship.getFinal(ATTR.DRONE_CAPACITY, 0),
|
|
5532
5535
|
bandwidthUsed: droneBwUsed,
|
|
5533
5536
|
bandwidthMax: ship.getFinal(ATTR.DRONE_BANDWIDTH, 0),
|
|
5534
|
-
|
|
5537
|
+
// Drones in space, not drone GROUPS in space. `ctx.drones` holds one
|
|
5538
|
+
// ItemState per FitDrone stack, so filtering by state counted five
|
|
5539
|
+
// active Ogre IIs as 1 — and this is the number bandwidth gates.
|
|
5540
|
+
active: fit.drones.reduce((n, d) => n + d.countActive, 0),
|
|
5535
5541
|
// Drone control range is the ship base (default 20 km, attr 458)
|
|
5536
5542
|
// PLUS the character's accumulated skill bonus on the same attr.
|
|
5537
5543
|
// Drone Avionics V + Advanced Drone Avionics V each ModAdd to
|
package/dist/node.cjs
CHANGED
|
@@ -174,6 +174,9 @@ var ATTR = {
|
|
|
174
174
|
UPGRADE_COST: 1153,
|
|
175
175
|
// calibration used per rig
|
|
176
176
|
DRONE_BANDWIDTH: 1271,
|
|
177
|
+
// ship: the cap, Mbit/s
|
|
178
|
+
DRONE_BANDWIDTH_USED: 1272,
|
|
179
|
+
// drone: what ONE drone of this type occupies
|
|
177
180
|
DRONE_CAPACITY: 283,
|
|
178
181
|
// ---- Slots (ship attributes telling how many slots) ----
|
|
179
182
|
HI_SLOTS: 14,
|
|
@@ -5455,7 +5458,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5455
5458
|
const t = dataset.getType(droneItem.typeID);
|
|
5456
5459
|
if (!t) continue;
|
|
5457
5460
|
const volume = t.volume ?? 0;
|
|
5458
|
-
const bandwidth = droneItem.getBase(ATTR.
|
|
5461
|
+
const bandwidth = droneItem.getBase(ATTR.DRONE_BANDWIDTH_USED) ?? 0;
|
|
5459
5462
|
droneBayUsed += volume * fd.countTotal;
|
|
5460
5463
|
droneBwUsed += bandwidth * fd.countActive;
|
|
5461
5464
|
}
|
|
@@ -5561,7 +5564,10 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5561
5564
|
bayMax: ship.getFinal(ATTR.DRONE_CAPACITY, 0),
|
|
5562
5565
|
bandwidthUsed: droneBwUsed,
|
|
5563
5566
|
bandwidthMax: ship.getFinal(ATTR.DRONE_BANDWIDTH, 0),
|
|
5564
|
-
|
|
5567
|
+
// Drones in space, not drone GROUPS in space. `ctx.drones` holds one
|
|
5568
|
+
// ItemState per FitDrone stack, so filtering by state counted five
|
|
5569
|
+
// active Ogre IIs as 1 — and this is the number bandwidth gates.
|
|
5570
|
+
active: fit.drones.reduce((n, d) => n + d.countActive, 0),
|
|
5565
5571
|
// Drone control range is the ship base (default 20 km, attr 458)
|
|
5566
5572
|
// PLUS the character's accumulated skill bonus on the same attr.
|
|
5567
5573
|
// Drone Avionics V + Advanced Drone Avionics V each ModAdd to
|
package/dist/node.js
CHANGED
|
@@ -150,6 +150,9 @@ var ATTR = {
|
|
|
150
150
|
UPGRADE_COST: 1153,
|
|
151
151
|
// calibration used per rig
|
|
152
152
|
DRONE_BANDWIDTH: 1271,
|
|
153
|
+
// ship: the cap, Mbit/s
|
|
154
|
+
DRONE_BANDWIDTH_USED: 1272,
|
|
155
|
+
// drone: what ONE drone of this type occupies
|
|
153
156
|
DRONE_CAPACITY: 283,
|
|
154
157
|
// ---- Slots (ship attributes telling how many slots) ----
|
|
155
158
|
HI_SLOTS: 14,
|
|
@@ -5431,7 +5434,7 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5431
5434
|
const t = dataset.getType(droneItem.typeID);
|
|
5432
5435
|
if (!t) continue;
|
|
5433
5436
|
const volume = t.volume ?? 0;
|
|
5434
|
-
const bandwidth = droneItem.getBase(ATTR.
|
|
5437
|
+
const bandwidth = droneItem.getBase(ATTR.DRONE_BANDWIDTH_USED) ?? 0;
|
|
5435
5438
|
droneBayUsed += volume * fd.countTotal;
|
|
5436
5439
|
droneBwUsed += bandwidth * fd.countActive;
|
|
5437
5440
|
}
|
|
@@ -5537,7 +5540,10 @@ function deriveStats(ctx, dataset, damageProfile, fit, projectionReports) {
|
|
|
5537
5540
|
bayMax: ship.getFinal(ATTR.DRONE_CAPACITY, 0),
|
|
5538
5541
|
bandwidthUsed: droneBwUsed,
|
|
5539
5542
|
bandwidthMax: ship.getFinal(ATTR.DRONE_BANDWIDTH, 0),
|
|
5540
|
-
|
|
5543
|
+
// Drones in space, not drone GROUPS in space. `ctx.drones` holds one
|
|
5544
|
+
// ItemState per FitDrone stack, so filtering by state counted five
|
|
5545
|
+
// active Ogre IIs as 1 — and this is the number bandwidth gates.
|
|
5546
|
+
active: fit.drones.reduce((n, d) => n + d.countActive, 0),
|
|
5541
5547
|
// Drone control range is the ship base (default 20 km, attr 458)
|
|
5542
5548
|
// PLUS the character's accumulated skill bonus on the same attr.
|
|
5543
5549
|
// Drone Avionics V + Advanced Drone Avionics V each ModAdd to
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve-fit-engine",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
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",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"diff": "node test/diff/run-diff.mjs",
|
|
56
56
|
"diff:recalibrate": "node scripts/recalibrate-pyfa-pin.mjs",
|
|
57
57
|
"test:pyfa": "tsx test/parity/run-pyfa-parity.ts",
|
|
58
|
+
"test:drones": "tsx test/drone-bandwidth.ts",
|
|
58
59
|
"audit:coverage": "tsx test/effect-coverage-audit.ts",
|
|
59
60
|
"drift": "node scripts/check-pyfa-drift.mjs",
|
|
60
61
|
"drift:update": "node scripts/check-pyfa-drift.mjs --update",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|