mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-08 22:33:24 +00:00
Moved the resistance modifiers value calculation to the setModValue of a Module class.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
} 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);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user