diff --git a/src/app/components/HardpointSlot.jsx b/src/app/components/HardpointSlot.jsx index 9337dac0..f7678f0c 100644 --- a/src/app/components/HardpointSlot.jsx +++ b/src/app/components/HardpointSlot.jsx @@ -79,7 +79,7 @@ export default class HardpointSlot extends Slot {
{formats.round(m.getMass())}{u.T}
- { m.getDps() ?
{translate('DPS')}: {formats.round1(m.getDps())} { m.getClip() ? ({formats.round1((m.getClip() * m.getDps() / m.getRoF()) / ((m.getClip() / m.getRoF()) + m.getReload())) }) : null }
: null } + { m.getDps() ?
{translate('DPS')}: {formats.round1(m.getDps())} { m.getClip() ? ({formats.round1(m.getSDps()) }) : null }
: null } { m.getEps() ?
{translate('EPS')}: {formats.round1(m.getEps())}{u.MW} { m.getClip() ? ({formats.round1((m.getClip() * m.getEps() / m.getRoF()) / ((m.getClip() / m.getRoF()) + m.getReload())) }{u.MW}) : null }
: null } { m.getHps() ?
{translate('HPS')}: {formats.round1(m.getHps())} { m.getClip() ? ({formats.round1((m.getClip() * m.getHps() / m.getRoF()) / ((m.getClip() / m.getRoF()) + m.getReload())) }) : null }
: null } { m.getDps() && m.getEps() ?
{translate('DPE')}: {formats.f1(m.getDps() / m.getEps())}
: null } diff --git a/src/app/shipyard/Calculations.js b/src/app/shipyard/Calculations.js index b72fd0d3..aa62b187 100644 --- a/src/app/shipyard/Calculations.js +++ b/src/app/shipyard/Calculations.js @@ -852,7 +852,7 @@ export function _weaponSustainedDps(m, opponent, opponentShields, opponentArmour weapon.eps = m.getClip() ? (m.getClip() * m.getEps() / m.getRoF()) / ((m.getClip() / m.getRoF()) + m.getReload()) : m.getEps(); // Initial sustained DPS - let sDps = m.getClip() ? (m.getClip() * m.getDps() / m.getRoF()) / ((m.getClip() / m.getRoF()) + m.getReload()) : m.getDps(); + let sDps = m.getSDps(); // Take fall-off in to account const falloff = m.getFalloff(); diff --git a/src/app/shipyard/Module.js b/src/app/shipyard/Module.js index cc9247ef..81a0187c 100755 --- a/src/app/shipyard/Module.js +++ b/src/app/shipyard/Module.js @@ -550,6 +550,27 @@ export default class Module { return damage * rpshot * rof; } + /** + * Get the SDPS for this module, taking into account modifications and special + * effects. + * @return {Number} The SDPS of this module + */ + getSDps() { + let dps = this.getDps(); + if (this.getClip()) { + let clipSize = this.getClip(); + // If auto-loader is applied, effective clip size will be nearly doubled + // as you get one reload for every two shots fired. + if (this.blueprint && this.blueprint.special && this.blueprint.special.edname === 'special_auto_loader') { + clipSize += clipSize - 1; + } + let timeToDeplete = clipSize / this.getRoF(); + return dps * timeToDeplete / (timeToDeplete + this.getReload()); + } else { + return dps; + } + } + /** * Get the EPS for this module, taking in to account modifications * @return {Number} the EPS of this module