From b944035541d62bf1bd78d1051a8f6f62f5fec345 Mon Sep 17 00:00:00 2001 From: Cmdr McDonald Date: Mon, 12 Dec 2016 13:37:36 +0000 Subject: [PATCH] Use separate speed/rotation/acceleration multipliers for thrusters if available --- ChangeLog.md | 1 + src/app/shipyard/Calculations.js | 24 ++++++++--------- src/app/shipyard/Module.js | 46 ++++++++++++++++++++++---------- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index cd710252..8e0b2e59 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -6,6 +6,7 @@ * Fix issue when importing Viper Mk IV * Ensure ordering of all types of modules (standard, internal, utilities) is consistent * Add rebuilds per bay information for fighter hangars + * Use separate speed/rotation/acceleration multipliers for thrusters if available #2.2.5 * Calculate rate of fire for multi-burst weapons diff --git a/src/app/shipyard/Calculations.js b/src/app/shipyard/Calculations.js index 600b6bab..f9ab11e4 100644 --- a/src/app/shipyard/Calculations.js +++ b/src/app/shipyard/Calculations.js @@ -78,9 +78,9 @@ export function speed(mass, baseSpeed, thrusters, engpip) { const minMass = thrusters instanceof Module ? thrusters.getMinMass() : thrusters.minmass; const optMass = thrusters instanceof Module ? thrusters.getOptMass() : thrusters.optmass; const maxMass = thrusters instanceof Module ? thrusters.getMaxMass() : thrusters.maxmass; - const minMul = thrusters instanceof Module ? thrusters.getMinMul() : thrusters.minmul; - const optMul = thrusters instanceof Module ? thrusters.getOptMul() : thrusters.optmul; - const maxMul = thrusters instanceof Module ? thrusters.getMaxMul() : thrusters.maxmul; + const minMul = thrusters instanceof Module ? thrusters.getMinMul('speed') : (thrusters.minmulspeed ? thrusters.minmulspeed : thrusters.minmul); + const optMul = thrusters instanceof Module ? thrusters.getOptMul('speed') : (thrusters.optmulspeed ? thrusters.minmulspeed : thrusters.minmul); + const maxMul = thrusters instanceof Module ? thrusters.getMaxMul('speed') : (thrusters.maxmulspeed ? thrusters.minmulspeed : thrusters.minmul); let results = normValues(minMass, optMass, maxMass, minMul, optMul, maxMul, mass, baseSpeed, engpip); @@ -100,9 +100,9 @@ export function pitch(mass, basePitch, thrusters, engpip) { let minMass = thrusters instanceof Module ? thrusters.getMinMass() : thrusters.minmass; let optMass = thrusters instanceof Module ? thrusters.getOptMass() : thrusters.optmass; let maxMass = thrusters instanceof Module ? thrusters.getMaxMass() : thrusters.maxmass; - let minMul = thrusters instanceof Module ? thrusters.getMinMul() : thrusters.minmul; - let optMul = thrusters instanceof Module ? thrusters.getOptMul() : thrusters.optmul; - let maxMul = thrusters instanceof Module ? thrusters.getMaxMul() : thrusters.maxmul; + let minMul = thrusters instanceof Module ? thrusters.getMinMul('rotation') : (thrusters.minmulrotation ? thrusters.minmulrotation : thrusters.minmul); + let optMul = thrusters instanceof Module ? thrusters.getOptMul('rotation') : (thrusters.optmulrotation ? thrusters.optmulrotation : thrusters.optmul); + let maxMul = thrusters instanceof Module ? thrusters.getMaxMul('rotation') : (thrusters.maxmulrotation ? thrusters.maxmulrotation : thrusters.maxmul); return normValues(minMass, optMass, maxMass, minMul, optMul, maxMul, mass, basePitch, engpip); } @@ -120,9 +120,9 @@ export function yaw(mass, baseYaw, thrusters, engpip) { let minMass = thrusters instanceof Module ? thrusters.getMinMass() : thrusters.minmass; let optMass = thrusters instanceof Module ? thrusters.getOptMass() : thrusters.optmass; let maxMass = thrusters instanceof Module ? thrusters.getMaxMass() : thrusters.maxmass; - let minMul = thrusters instanceof Module ? thrusters.getMinMul() : thrusters.minmul; - let optMul = thrusters instanceof Module ? thrusters.getOptMul() : thrusters.optmul; - let maxMul = thrusters instanceof Module ? thrusters.getMaxMul() : thrusters.maxmul; + let minMul = thrusters instanceof Module ? thrusters.getMinMul('rotation') : (thrusters.minmulrotation ? thrusters.minmulrotation : thrusters.minmul); + let optMul = thrusters instanceof Module ? thrusters.getOptMul('rotation') : (thrusters.optmulrotation ? thrusters.optmulrotation : thrusters.optmul); + let maxMul = thrusters instanceof Module ? thrusters.getMaxMul('rotation') : (thrusters.maxmulrotation ? thrusters.maxmulrotation : thrusters.maxmul); return normValues(minMass, optMass, maxMass, minMul, optMul, maxMul, mass, baseYaw, engpip); } @@ -140,9 +140,9 @@ export function roll(mass, baseRoll, thrusters, engpip) { let minMass = thrusters instanceof Module ? thrusters.getMinMass() : thrusters.minmass; let optMass = thrusters instanceof Module ? thrusters.getOptMass() : thrusters.optmass; let maxMass = thrusters instanceof Module ? thrusters.getMaxMass() : thrusters.maxmass; - let minMul = thrusters instanceof Module ? thrusters.getMinMul() : thrusters.minmul; - let optMul = thrusters instanceof Module ? thrusters.getOptMul() : thrusters.optmul; - let maxMul = thrusters instanceof Module ? thrusters.getMaxMul() : thrusters.maxmul; + let minMul = thrusters instanceof Module ? thrusters.getMinMul('rotation') : (thrusters.minmulrotation ? thrusters.minmulrotation : thrusters.minmul); + let optMul = thrusters instanceof Module ? thrusters.getOptMul('rotation') : (thrusters.optmulrotation ? thrusters.optmulrotation : thrusters.optmul); + let maxMul = thrusters instanceof Module ? thrusters.getMaxMul('rotation') : (thrusters.maxmulrotation ? thrusters.maxmulrotation : thrusters.maxmul); return normValues(minMass, optMass, maxMass, minMul, optMul, maxMul, mass, baseRoll, engpip); } diff --git a/src/app/shipyard/Module.js b/src/app/shipyard/Module.js index bf38e8ec..31ee09e8 100755 --- a/src/app/shipyard/Module.js +++ b/src/app/shipyard/Module.js @@ -370,42 +370,60 @@ export default class Module { /** * Get the minimum multiplier for this module, taking in to account modifications + * @param {string} type the type for which we are obtaining the multiplier. Can be 'speed', 'rotation', 'acceleration', or null * @return {Number} the minimum multiplier of this module */ - getMinMul() { + getMinMul(type = null) { // Modifier is optmul let result = 0; - if (this['minmul']) { + if (this['minmul' + type]) { + result = this['minmul' + type]; + } else if (this['minmul']) { result = this['minmul']; - if (result) { - let mult = this.getModValue('optmul') / 10000; - if (mult) { result = result * (1 + mult); } - } + } + if (result) { + let mult = this.getModValue('optmul') / 10000; + if (mult) { result = result * (1 + mult); } } return result; } /** * Get the optimum multiplier for this module, taking in to account modifications + * @param {string} type the type for which we are obtaining the multiplier. Can be 'speed', 'rotation', 'acceleration', or null * @return {Number} the optimum multiplier of this module */ - getOptMul() { - return this._getModifiedValue('optmul'); + getOptMul(type = null) { + // Modifier is optmul + let result = 0; + if (this['optmul' + type]) { + result = this['optmul' + type]; + } else if (this['optmul']) { + result = this['optmul']; + } + if (result) { + let mult = this.getModValue('optmul') / 10000; + if (mult) { result = result * (1 + mult); } + } + return result; } /** * Get the maximum multiplier for this module, taking in to account modifications + * @param {string} type the type for which we are obtaining the multiplier. Can be 'speed', 'rotation', 'acceleration', or null * @return {Number} the maximum multiplier of this module */ - getMaxMul() { + getMaxMul(type = null) { // Modifier is optmul let result = 0; - if (this['maxmul']) { + if (this['maxmul' + type]) { + result = this['maxmul' + type]; + } else if (this['maxmul']) { result = this['maxmul']; - if (result) { - let mult = this.getModValue('optmul') / 10000; - if (mult) { result = result * (1 + mult); } - } + } + if (result) { + let mult = this.getModValue('optmul') / 10000; + if (mult) { result = result * (1 + mult); } } return result; }