From 8463dd46f7bf6a1236a4f0ad282d6d58a3edc22f Mon Sep 17 00:00:00 2001 From: Felix Linker Date: Mon, 20 Aug 2018 03:43:38 +0200 Subject: [PATCH 1/3] Removed unused variable --- src/app/shipyard/Calculations.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/app/shipyard/Calculations.js b/src/app/shipyard/Calculations.js index c330243b..867f8d8b 100644 --- a/src/app/shipyard/Calculations.js +++ b/src/app/shipyard/Calculations.js @@ -488,7 +488,6 @@ export function shieldMetrics(ship, sys) { sys: (1 - sysResistance), total: sgSbExplosiveDmg * (1 - sysResistance), max: sgSbExplosiveDmg * (1 - maxSysResistance), - res: 1 - sgSbExplosiveDmg }; let sgKineticDmg = 1 - shieldGenerator.getKineticResistance(); @@ -499,7 +498,6 @@ export function shieldMetrics(ship, sys) { sys: (1 - sysResistance), total: sgSbKineticDmg * (1 - sysResistance), max: sgSbKineticDmg * (1 - maxSysResistance), - res: 1 - sgSbKineticDmg }; let sgThermalDmg = 1 - shieldGenerator.getThermalResistance(); @@ -510,7 +508,6 @@ export function shieldMetrics(ship, sys) { sys: (1 - sysResistance), total: sgSbThermalDmg * (1 - sysResistance), max: sgSbThermalDmg * (1 - maxSysResistance), - res: 1 - sgSbThermalDmg }; } return shield; From 4e87b3a0b888bfdf536e3de5fed3300066d4b20c Mon Sep 17 00:00:00 2001 From: Felix Linker Date: Mon, 20 Aug 2018 03:44:24 +0200 Subject: [PATCH 2/3] Fixed shield proportion calc in defence panel --- src/app/components/Defence.jsx | 14 +++++++------- src/app/shipyard/Calculations.js | 3 +++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/app/components/Defence.jsx b/src/app/components/Defence.jsx index 4dbf0dc1..0528c192 100644 --- a/src/app/components/Defence.jsx +++ b/src/app/components/Defence.jsx @@ -102,19 +102,19 @@ export default class Defence extends TranslatedComponent { // Add effective shield from resistances const rawMj = shield.generator + shield.boosters + shield.cells; - const explosiveMj = rawMj / shield.explosive.total - rawMj; + const explosiveMj = rawMj / (shield.explosive.base) - rawMj; if (explosiveMj != 0) effectiveShieldExplosiveTt.push(
{translate('resistance') + ' ' + formats.int(explosiveMj)}{units.MJ}
); - const kineticMj = rawMj / shield.kinetic.total - rawMj; + const kineticMj = rawMj / (shield.kinetic.base) - rawMj; if (kineticMj != 0) effectiveShieldKineticTt.push(
{translate('resistance') + ' ' + formats.int(kineticMj)}{units.MJ}
); - const thermalMj = rawMj / shield.thermal.total - rawMj; + const thermalMj = rawMj / (shield.thermal.base) - rawMj; if (thermalMj != 0) effectiveShieldThermalTt.push(
{translate('resistance') + ' ' + formats.int(thermalMj)}{units.MJ}
); // Add effective shield from power distributor SYS pips if (shield.absolute.sys != 1) { - effectiveShieldAbsoluteTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.absolute.sys - rawMj)}{units.MJ}
); - effectiveShieldExplosiveTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.explosive.sys - rawMj)}{units.MJ}
); - effectiveShieldKineticTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.kinetic.sys - rawMj)}{units.MJ}
); - effectiveShieldThermalTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.thermal.sys - rawMj)}{units.MJ}
); + effectiveShieldAbsoluteTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.absolute.total - rawMj)}{units.MJ}
); + effectiveShieldExplosiveTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.explosive.total - rawMj / shield.explosive.base)}{units.MJ}
); + effectiveShieldKineticTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.kinetic.total - rawMj / shield.kinetic.base)}{units.MJ}
); + effectiveShieldThermalTt.push(
{translate('power distributor') + ' ' + formats.int(rawMj / shield.thermal.total - rawMj / shield.thermal.base)}{units.MJ}
); } } diff --git a/src/app/shipyard/Calculations.js b/src/app/shipyard/Calculations.js index 867f8d8b..467d67b8 100644 --- a/src/app/shipyard/Calculations.js +++ b/src/app/shipyard/Calculations.js @@ -486,6 +486,7 @@ export function shieldMetrics(ship, sys) { generator: sgExplosiveDmg, boosters: sgSbExplosiveDmg - sgExplosiveDmg, sys: (1 - sysResistance), + base: sgSbExplosiveDmg, total: sgSbExplosiveDmg * (1 - sysResistance), max: sgSbExplosiveDmg * (1 - maxSysResistance), }; @@ -496,6 +497,7 @@ export function shieldMetrics(ship, sys) { generator: sgKineticDmg, boosters: sgSbKineticDmg - sgKineticDmg, sys: (1 - sysResistance), + base: sgSbKineticDmg, total: sgSbKineticDmg * (1 - sysResistance), max: sgSbKineticDmg * (1 - maxSysResistance), }; @@ -506,6 +508,7 @@ export function shieldMetrics(ship, sys) { generator: sgThermalDmg, boosters: sgSbThermalDmg - sgThermalDmg, sys: (1 - sysResistance), + base: sgSbThermalDmg, total: sgSbThermalDmg * (1 - sysResistance), max: sgSbThermalDmg * (1 - maxSysResistance), }; From ea7a6f88720600206123d11bf3f07ff75f5967b3 Mon Sep 17 00:00:00 2001 From: Felix Linker Date: Mon, 20 Aug 2018 03:45:05 +0200 Subject: [PATCH 3/3] Added object documentation to shield damage multiplier objects --- src/app/shipyard/Calculations.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/app/shipyard/Calculations.js b/src/app/shipyard/Calculations.js index 467d67b8..a48acd57 100644 --- a/src/app/shipyard/Calculations.js +++ b/src/app/shipyard/Calculations.js @@ -480,8 +480,25 @@ export function shieldMetrics(ship, sys) { max: 1 - maxSysResistance }; + /** + * An object that stores a selection of difference damage multipliers that + * deal with a ship's shield strength. + * @typedef {Object} ShieldDamageMults + * @property {number} generator Base damage multiplier of the shield + * contributing it's base resistance. + * @property {number} boosters Damage multiplier contributed by all + * boosters, i.e. `rawMj / (generator * boosters)` equals shield strength + * with 0 pips to sys. + * @property {number} sys Damage multiplier contributed by pips to sys. + * @property {number} base Damage multiplier with 0 pips to sys; just + * boosters and shield generator. Equals `generator * boosters`. + * @property {number} total Damage multiplier with current pip settings. + * @property {number} max Damage multiplier with 4 pips to sys. + */ + let sgExplosiveDmg = 1 - shieldGenerator.getExplosiveResistance(); let sgSbExplosiveDmg = diminishDamageMult(sgExplosiveDmg * 0.7, (1 - shieldGenerator.getExplosiveResistance()) * boosterExplDmg); + /** @type {ShieldDamageMults} */ shield.explosive = { generator: sgExplosiveDmg, boosters: sgSbExplosiveDmg - sgExplosiveDmg, @@ -493,6 +510,7 @@ export function shieldMetrics(ship, sys) { let sgKineticDmg = 1 - shieldGenerator.getKineticResistance(); let sgSbKineticDmg = diminishDamageMult(sgKineticDmg * 0.7, (1 - shieldGenerator.getKineticResistance()) * boosterKinDmg); + /** @type {ShieldDamageMults} */ shield.kinetic = { generator: sgKineticDmg, boosters: sgSbKineticDmg - sgKineticDmg, @@ -504,6 +522,7 @@ export function shieldMetrics(ship, sys) { let sgThermalDmg = 1 - shieldGenerator.getThermalResistance(); let sgSbThermalDmg = diminishDamageMult(sgThermalDmg * 0.7, (1 - shieldGenerator.getThermalResistance()) * boosterThermDmg); + /** @type {ShieldDamageMults} */ shield.thermal = { generator: sgThermalDmg, boosters: sgSbThermalDmg - sgThermalDmg,