Update shield recovery/regeneration calculations

This commit is contained in:
Cmdr McDonald
2016-12-20 13:58:00 +00:00
parent bb7db144d6
commit e53ffd0273
3 changed files with 14 additions and 14 deletions

View File

@@ -19,6 +19,7 @@
* Add 'Hardness' information to ship summary
* Add module copy functionality - drag module whilst holding 'alt' to copy
* Add base resistances to defence summary tooltip
* Update shield recovery/regeneration calculations
#2.2.5
* Calculate rate of fire for multi-burst weapons

View File

@@ -64,6 +64,8 @@ export default class InternalSlot extends Slot {
{ showModuleResistances && m.getExplosiveResistance() ? <div className='l'>{translate('explres')}: {formats.pct(m.getExplosiveResistance())}</div> : null }
{ showModuleResistances && m.getKineticResistance() ? <div className='l'>{translate('kinres')}: {formats.pct(m.getKineticResistance())}</div> : null }
{ showModuleResistances && m.getThermalResistance() ? <div className='l'>{translate('thermres')}: {formats.pct(m.getThermalResistance())}</div> : null }
{ m.getRegenerationRate() ? <div className='l'>{translate('regen')}: {formats.round1(m.getRegenerationRate())}{u.ps}</div> : null }
{ m.getBrokenRegenerationRate() ? <div className='l'>{translate('brokenregen')}: {formats.round1(m.getBrokenRegenerationRate())}{u.ps}</div> : null }
{ m && validMods.length > 0 ? <div className='r' ><button onClick={this._toggleModifications.bind(this)} onContextMenu={stopCtxPropagation} onMouseOver={termtip.bind(null, 'modifications')} onMouseOut={tooltip.bind(null, null)}><ListModifications /></button></div> : null }

View File

@@ -201,13 +201,11 @@ export default class Ship {
* @return {Number} Recovery time in seconds
*/
calcShieldRecovery() {
if (this.shield > 0) {
const sgSlot = this.findInternalByGroup('sg');
if (sgSlot != null) {
let brokenRegenRate = 1 + sgSlot.m.getModValue('brokenregen') / 10000;
// 50% of shield strength / recovery recharge rate + 15 second delay before recharge starts
return ((this.shield / 2) / (sgSlot.m.recover * brokenRegenRate)) + 15;
}
const shieldGenerator = this.findShieldGenerator();
if (shieldGenerator) {
const brokenRegenRate = shieldGenerator.getBrokenRegenerationRate();
// 50% of shield strength / broken recharge rate + 15 second delay before recharge starts
return ((this.shield / 2) / brokenRegenRate) + 15;
}
return 0;
}
@@ -219,13 +217,12 @@ export default class Ship {
* @return {Number} 50 - 100% Recharge time in seconds
*/
calcShieldRecharge() {
if (this.shield > 0) {
const sgSlot = this.findInternalByGroup('sg');
if (sgSlot != null) {
let regenRate = 1 + sgSlot.m.getModValue('regen') / 10000;
// 50% -> 100% recharge time, Bi-Weave shields charge at 1.8 MJ/s
return (this.shield / 2) / ((sgSlot.m.grp == 'bsg' ? 1.8 : 1) * regenRate);
}
const shieldGenerator = this.findShieldGenerator();
if (shieldGenerator) {
const regenRate = shieldGenerator.getRegenerationRate();
// 50% of shield strength / recharge rate
return (this.shield / 2) / regenRate;
}
return 0;
}