diff --git a/src/app/components/EngineProfile.jsx b/src/app/components/EngineProfile.jsx
index 6e4af044..39606fc1 100644
--- a/src/app/components/EngineProfile.jsx
+++ b/src/app/components/EngineProfile.jsx
@@ -86,19 +86,13 @@ export default class EngineProfile extends TranslatedComponent {
// Calculate bounds for our line chart
const thrusters = ship.standard[1].m;
- const minMass = thrusters.getMinMass();
+ const minMass = ship.calcLowestPossibleMass({th: thrusters});
const maxMass = thrusters.getMaxMass();
+ let mass = ship.unladenMass + ship.fuelCapacity + cargo;
const minSpeed = Calc.speed(maxMass, ship.speed, thrusters, ship.engpip)[4];
const maxSpeed = Calc.speed(minMass, ship.speed, thrusters, ship.engpip)[4];
- let mass = ship.unladenMass + ship.fuelCapacity + cargo;
- let mark;
- if (mass < minMass) {
- mark = minMass;
- } else if (mass > maxMass) {
- mark = maxMass;
- } else {
- mark = mass;
- }
+ // Add a mark at our current mass
+ const mark = Math.min(mass, maxMass);
const cargoPercent = cargo / ship.cargoCapacity;
diff --git a/src/app/components/FSDProfile.jsx b/src/app/components/FSDProfile.jsx
index 7633a34a..42e26b6c 100644
--- a/src/app/components/FSDProfile.jsx
+++ b/src/app/components/FSDProfile.jsx
@@ -88,19 +88,13 @@ export default class FSDProfile extends TranslatedComponent {
// Calculate bounds for our line chart - use thruster info for X
const thrusters = ship.standard[1].m;
const fsd = ship.standard[2].m;
- const minMass = thrusters.getMinMass();
+ const minMass = ship.calcLowestPossibleMass({th: thrusters});
const maxMass = thrusters.getMaxMass();
- const minRange = 0;
+ let mass = ship.unladenMass + ship.fuelCapacity + cargo;
+ const minRange = Calc.jumpRange(maxMass, fsd, ship.fuelCapacity);
const maxRange = Calc.jumpRange(minMass + fsd.getMaxFuelPerJump(), fsd, fsd.getMaxFuelPerJump());
- let mass = ship.unladenMass + fsd.getMaxFuelPerJump() + cargo;
- let mark;
- if (mass < minMass) {
- mark = minMass;
- } else if (mass > maxMass) {
- mark = maxMass;
- } else {
- mark = mass;
- }
+ // Add a mark at our current mass
+ const mark = Math.min(mass, maxMass);
const cargoPercent = cargo / ship.cargoCapacity;
diff --git a/src/app/i18n/en.js b/src/app/i18n/en.js
index c4dc2fe0..572d34f5 100644
--- a/src/app/i18n/en.js
+++ b/src/app/i18n/en.js
@@ -282,10 +282,10 @@ The retrofit costs provides information about the costs of changing the base bui
The reload costs provides information about the costs of reloading your current build.
Engine Profile
-The engine profile panel provides information about the capabilities of your current thrusters. The graph shows you how the maximum speed (with 4 pips to engines) alters with the overall mass of your build. The slider can be altered to change the amount of cargo you have on-board. Your engine profile can be altered by obtaining different thrusters or engineering your existing thrusters.
+The engine profile panel provides information about the capabilities of your current thrusters. The graph shows you how the maximum speed (with a full fuel tank and 4 pips to engines) alters with the overall mass of your build. The slider can be altered to change the amount of cargo you have on-board. Your engine profile can be altered by obtaining different thrusters or engineering your existing thrusters.
FSD Profile
-The FSD profile panel provides information about the capabilities of your current frame shift drive. The graph shows you how the maximum jump range alters with the overall mass of your build. The slider can be altered to change the amount of cargo you have on-board. Your FSD profile can be altered by obtaining a different FSD or engineering your existing FSD.
+The FSD profile panel provides information about the capabilities of your current frame shift drive. The graph shows you how the maximum jump range (with a full fuel tank) alters with the overall mass of your build. The slider can be altered to change the amount of cargo you have on-board. Your FSD profile can be altered by obtaining a different FSD or engineering your existing FSD.
Jump Range
The jump range panel provides information about the build' jump range. The graph shows how the build's jump range changes with the amount of cargo on-board. The slider can be altered to change the amount of fuel you have on-board.
diff --git a/src/app/shipyard/Ship.js b/src/app/shipyard/Ship.js
index e369f259..f1325dee 100755
--- a/src/app/shipyard/Ship.js
+++ b/src/app/shipyard/Ship.js
@@ -1682,6 +1682,25 @@ export default class Ship {
return this;
}
+ /**
+ * Calculate the lowest possible mass for this ship.
+ * @param {Object} m Module override set (standard type => Module)
+ * @return {number} The lowest possible mass for this ship
+ */
+ calcLowestPossibleMass(m) {
+ m = m || {};
+
+ let mass = this.hullMass;
+ mass += m.pp ? m.pp.getMass() : ModuleUtils.standard(0, '2D').getMass();
+ mass += m.th ? m.th.getMass() : ModuleUtils.standard(1, '2D').getMass();
+ mass += m.fsd ? m.fsd.getMass() : ModuleUtils.standard(2, this.standard[2].maxClass + 'D').getMass();
+ mass += m.ls ? m.ls.getMass() : ModuleUtils.standard(3, this.standard[3].maxClass + 'D').getMass() * 0.3; // Lightweight grade 4 mod reduces mass by up to 70%
+ mass += m.pd ? m.pd.getMass() : ModuleUtils.standard(4, '2D').getMass();
+ mass += m.s ? m.s.getMass() : ModuleUtils.standard(5, this.standard[5].maxClass + 'D').getMass();
+ mass += m.ft ? m.ft.getMass() : ModuleUtils.standard(6, '1C').getMass();
+ return mass;
+ }
+
/**
* Use the lightest standard ModuleUtils unless otherwise specified
* @param {Object} m Module override set (standard type => module ID)