diff --git a/src/app/shipyard/Calculations.js b/src/app/shipyard/Calculations.js index b7a2f22a..dd381127 100644 --- a/src/app/shipyard/Calculations.js +++ b/src/app/shipyard/Calculations.js @@ -544,7 +544,7 @@ export function calcBoost(ship) { if (!ship.boostEnergy || !ship.standard[4] || !ship.standard[4].m) { return undefined; } - return ship.boostEnergy / ship.standard[4].m.engrate; + return ship.boostEnergy / ship.standard[4].m.getEnginesRechargeRate(); } @@ -585,7 +585,7 @@ export function armourMetrics(ship) { hullThermDmg = hullThermDmg * (1 - slot.m.getThermalResistance()); hullCausDmg = hullCausDmg * (1 - slot.m.getCausticResistance()); } - if (slot.m && slot.m.grp == 'mrp') { + if (slot.m && (slot.m.grp == 'mrp' || slot.m.grp == 'gmrp')) { moduleArmour += slot.m.getIntegrity(); moduleProtection = moduleProtection * (1 - slot.m.getProtection()); } diff --git a/src/app/shipyard/Module.js b/src/app/shipyard/Module.js index a8e5c3cd..afed8fae 100755 --- a/src/app/shipyard/Module.js +++ b/src/app/shipyard/Module.js @@ -150,10 +150,17 @@ export default class Module { } if (modValue) { if (modification.method === 'additive') { + // Resistance modding for hull reinforcement packages has additional + // diminishing returns implemented. The mod value gets lowered by + // the amount of base resistance the hrp has. + if (this.grp === 'hr' && + (name === 'kinres' || name === 'thermres' || name === 'explres')) { + modValue = modValue * (1 - result); + } result = result + modValue; } else if (modification.method === 'overwrite') { result = modValue; - } else if (name === 'shieldboost') { + } else if (name === 'shieldboost' || name === 'hullboost') { result = (1 + result) * (1 + modValue) - 1; } else { result = result * (1 + modValue); @@ -441,7 +448,8 @@ export default class Module { let result = 0; if (this['maxmass']) { result = this['maxmass']; - if (result) { + // max mass is only modified for non-shield boosters + if (result && this.grp !== 'sg') { let mult = this.getModValue('optmass') / 10000; if (mult) { result = result * (1 + mult); } } diff --git a/src/app/shipyard/Ship.js b/src/app/shipyard/Ship.js index 19bfdf64..87be0b90 100755 --- a/src/app/shipyard/Ship.js +++ b/src/app/shipyard/Ship.js @@ -937,7 +937,12 @@ export default class Ship { let epsChanged = n && n.getEps() || old && old.getEps(); let hpsChanged = n && n.getHps() || old && old.getHps(); - let armourChange = (slot === this.bulkheads) || (n && n.grp === 'hr') || (n && n.grp === 'ghrp') || (old && old.grp === 'hr') || (old && old.grp === 'ghrp') || (n && n.grp === 'mrp') || (old && old.grp === 'mrp') || (n && n.grp == 'mahr') || (old && old.grp == 'mahr'); + let armourChange = (slot === this.bulkheads) || + (n && n.grp === 'hr') || (old && old.grp === 'hr') || + (n && n.grp === 'ghrp') || (old && old.grp === 'ghrp') || + (n && n.grp == 'mahr') || (old && old.grp == 'mahr') || + (n && n.grp === 'mrp') || (old && old.grp === 'mrp') || + (n && n.grp === 'gmrp') || (old && old.grp == 'gmrp'); let shieldChange = (n && n.grp === 'bsg') || (old && old.grp === 'bsg') || (n && n.grp === 'psg') || (old && old.grp === 'psg') || (n && n.grp === 'sg') || (old && old.grp === 'sg') || (n && n.grp === 'sb') || (old && old.grp === 'sb') || (old && old.grp === 'gsrp') || (n && n.grp === 'gsrp');