Use better DPE calculation methodology

This commit is contained in:
Cmdr McDonald
2017-01-14 13:15:15 +00:00
parent 7f377d6345
commit 3def84e435
2 changed files with 14 additions and 37 deletions

View File

@@ -3,6 +3,7 @@
* Add falloff for weapons * Add falloff for weapons
* Use falloff when calculating weapon effectiveness in damage dealt * Use falloff when calculating weapon effectiveness in damage dealt
* Add engagement range slider to allow user to see change in weapon effectiveness with range * Add engagement range slider to allow user to see change in weapon effectiveness with range
* Use better DPE calculation methodology
#2.2.8 #2.2.8
* Fix issue where filling all internals with cargo racks would include restricted slots * Fix issue where filling all internals with cargo racks would include restricted slots

View File

@@ -947,51 +947,27 @@ export default class Ship {
for (let slotNum in this.hardpoints) { for (let slotNum in this.hardpoints) {
const slot = this.hardpoints[slotNum]; const slot = this.hardpoints[slotNum];
if (slot.m && slot.enabled && slot.m.getDps()) { if (slot.m && slot.enabled && slot.m.getDps()) {
const dpe = slot.m.getDps() / slot.m.getEps(); const dpe = slot.m.getEps() === 0 ? 0 : slot.m.getDps() / slot.m.getEps();
const dps = slot.m.getDps(); const dps = slot.m.getDps();
const sdps = slot.m.getClip() ? (slot.m.getClip() * slot.m.getDps() / slot.m.getRoF()) / ((slot.m.getClip() / slot.m.getRoF()) + slot.m.getReload()) : dps; const sdps = slot.m.getClip() ? (slot.m.getClip() * slot.m.getDps() / slot.m.getRoF()) / ((slot.m.getClip() / slot.m.getRoF()) + slot.m.getReload()) : dps;
totalDpe += dpe; totalDpe += dpe;
totalDps += dps; totalDps += dps;
totalSDps += sdps; totalSDps += sdps;
if (slot.m.getDamageType() === 'E') { if (slot.m.getDamageType().indexOf('E') != -1) {
totalExplDpe += dpe; totalExplDpe += dpe / slot.m.getDamageType().length;
totalExplDps += dps; totalExplDps += dps / slot.m.getDamageType().length;
totalExplSDps += sdps; totalExplSDps += sdps / slot.m.getDamageType().length;
} }
if (slot.m.getDamageType() === 'K') { if (slot.m.getDamageType().indexOf('K') != -1) {
totalKinDpe += dpe; totalKinDpe += dpe / slot.m.getDamageType().length;
totalKinDps += dps; totalKinDps += dps / slot.m.getDamageType().length;
totalKinSDps += sdps; totalKinSDps += sdps / slot.m.getDamageType().length;
} }
if (slot.m.getDamageType() === 'T') { if (slot.m.getDamageType().indexOf('T') != -1) {
totalThermDpe += dpe; totalThermDpe += dpe / slot.m.getDamageType().length;
totalThermDps += dps; totalThermDps += dps / slot.m.getDamageType().length;
totalThermSDps += sdps; totalThermSDps += sdps / slot.m.getDamageType().length;
}
if (slot.m.getDamageType() === 'EK') {
totalExplDpe += dpe / 2;
totalKinDpe += dpe / 2;
totalExplDps += dps / 2;
totalKinDps += dps / 2;
totalExplSDps += sdps / 2;
totalKinSDps += sdps / 2;
}
if (slot.m.getDamageType() === 'ET') {
totalExplDpe += dpe / 2;
totalThermDpe += dpe / 2;
totalExplDps += dps / 2;
totalThermDps += dps / 2;
totalExplSDps += sdps / 2;
totalThermSDps += sdps / 2;
}
if (slot.m.getDamageType() === 'KT') {
totalKinDpe += dpe / 2;
totalThermDpe += dpe / 2;
totalKinDps += dps / 2;
totalThermDps += dps / 2;
totalKinSDps += sdps / 2;
totalThermSDps += sdps / 2;
} }
} }
} }