From 46bcc2313f6fe9f6899ef22f10681c5e6ba54009 Mon Sep 17 00:00:00 2001 From: Alexey Gorb Date: Sun, 15 Aug 2021 14:37:45 +0200 Subject: [PATCH] Moved the resistance modifiers value calculation to the setModValue of a Module class. --- src/app/components/Modification.jsx | 2 +- src/app/shipyard/Module.js | 12 +++++++++--- src/app/shipyard/Ship.js | 17 +++++------------ src/app/utils/JournalUtils.js | 10 +--------- 4 files changed, 16 insertions(+), 25 deletions(-) diff --git a/src/app/components/Modification.jsx b/src/app/components/Modification.jsx index 28421a86..70300835 100644 --- a/src/app/components/Modification.jsx +++ b/src/app/components/Modification.jsx @@ -44,7 +44,7 @@ export default class Modification extends TranslatedComponent { if (reCast.endsWith(value) || reCast.startsWith(value)) { let { m, name, ship } = this.props; value = Math.max(Math.min(value, 50000), -50000); - ship.setModification(m, name, value, true, true); + ship.setModification(m, name, value, true); } } diff --git a/src/app/shipyard/Module.js b/src/app/shipyard/Module.js index fc702603..dbbdc09c 100755 --- a/src/app/shipyard/Module.js +++ b/src/app/shipyard/Module.js @@ -70,7 +70,7 @@ export default class Module { /** * Set a value for a given modification ID - * @param {Number} name The name of the modification + * @param {String} name The name of the modification * @param {object} value The value of the modification. If it is a numeric value then it should be an integer scaled so that -2.34% == -234 * @param {Boolean} valueiswithspecial true if the value includes the special effect (when coming from a UI component) */ @@ -81,7 +81,13 @@ export default class Module { if (!this.origVals) { this.origVals = {}; } - if (valueiswithspecial && this.blueprint && this.blueprint.special) { + if (!valueiswithspecial) { + // Resistance modifiers scale with the base value. + if (name === 'kinres' || name === 'thermres' || name === 'causres' || name === 'explres') { + let baseValue = this.get(name, false); + value = (1 - baseValue) * value; + } + } else if (valueiswithspecial && this.blueprint && this.blueprint.special) { // This module has a special effect, see if we need to alter the stored value const modifierActions = Modifications.modifierActions[this.blueprint.special.edname]; if (modifierActions && modifierActions[name]) { @@ -113,7 +119,7 @@ export default class Module { /** * Helper to obtain a module's value. * @param {String} name The name of the modifier to obtain - * @param {Number} modified Whether to return the raw or modified value + * @param {Boolean} modified Whether to return the raw or modified value * @return {Number} The value queried */ get(name, modified = true) { diff --git a/src/app/shipyard/Ship.js b/src/app/shipyard/Ship.js index db883244..cbfbcd79 100755 --- a/src/app/shipyard/Ship.js +++ b/src/app/shipyard/Ship.js @@ -492,25 +492,18 @@ export default class Ship { * @param {Object} m The module to change * @param {Object} name The name of the modification to change * @param {Number} value The new value of the modification. The value of the modification is scaled to provide two decimal places of precision in an integer. For example 1.23% is stored as 123 - * @param {bool} sentfromui True if this update was sent from the UI - * @param {bool} isAbsolute True if value is an absolute value and not a - * modification value + * @param {boolean} isAbsolute True if value is an absolute value and not a modification value */ - setModification(m, name, value, sentfromui, isAbsolute) { + setModification(m, name, value, isAbsolute = false) { if (isNaN(value)) { // Value passed is invalid; reset it to 0 value = 0; } if (isAbsolute) { - m.setPretty(name, value, sentfromui); + m.setPretty(name, value, isAbsolute); } else { - // Resistance modifiers scale with the base value - if (name == 'kinres' || name == 'thermres' || name == 'causres' || name == 'explres') { - let baseValue = m.get(name, false); - value = (1 - baseValue) * value; - } - m.setModValue(name, value, sentfromui); + m.setModValue(name, value, false); } // Handle special cases @@ -543,7 +536,7 @@ export default class Ship { this.recalculateArmour(); } else if (name === 'shieldreinforcement') { this.recalculateShieldCells(); - } else if (name === 'burst' || name == 'burstrof' || name === 'clip' || name === 'damage' || name === 'distdraw' || name === 'jitter' || name === 'piercing' || name === 'range' || name === 'reload' || name === 'rof' || name === 'thermload') { + } else if (name === 'burst' || name === 'burstrof' || name === 'clip' || name === 'damage' || name === 'distdraw' || name === 'jitter' || name === 'piercing' || name === 'range' || name === 'reload' || name === 'rof' || name === 'thermload') { this.recalculateDps(); this.recalculateHps(); this.recalculateEps(); diff --git a/src/app/utils/JournalUtils.js b/src/app/utils/JournalUtils.js index d42ebfea..1411721d 100644 --- a/src/app/utils/JournalUtils.js +++ b/src/app/utils/JournalUtils.js @@ -293,20 +293,12 @@ function _addModifications(module, modifiers, quality, blueprint, grade, special // Carry out the required changes for (const action in modifierActions) { - if (isNaN(modifierActions[action])) { - module.setModValue(action, modifierActions[action]); - } else { - module.setModValue(action, value, true); - } + module.setModValue(action, value, true); } } } else if (quality) { setQualityCB(module.blueprint, quality, (featureName, value) => { // The resistance values of bulkheads need an extra adjustment. - if (featureName === 'kinres' || featureName === 'thermres' || featureName === 'causres' || featureName === 'explres') { - let baseValue = module.get(featureName, false); - value = (1 - baseValue) * value; - } module.setModValue(featureName, value, false); }); }