mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-09 06:43:24 +00:00
Use single calculation for shield metrics
This commit is contained in:
@@ -310,7 +310,7 @@
|
|||||||
"unladenRange": 18.74,
|
"unladenRange": 18.74,
|
||||||
"yaw": 10,
|
"yaw": 10,
|
||||||
"fullTankRange": 18.36,
|
"fullTankRange": 18.36,
|
||||||
"hardness": 170,
|
"hardness": 65,
|
||||||
"ladenRange": 16.59,
|
"ladenRange": 16.59,
|
||||||
"unladenFastestRange": 74.2,
|
"unladenFastestRange": 74.2,
|
||||||
"ladenFastestRange": 66.96,
|
"ladenFastestRange": 66.96,
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ export default class Modification extends TranslatedComponent {
|
|||||||
this.setState({ value });
|
this.setState({ value });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Triggered when an update to slider value is finished i.e. when losing focus
|
||||||
|
*/
|
||||||
_updateFinished() {
|
_updateFinished() {
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ export function shieldMetrics(ship, sys) {
|
|||||||
|
|
||||||
// Calculate diminishing returns for boosters
|
// Calculate diminishing returns for boosters
|
||||||
// Diminishing returns not currently in-game
|
// Diminishing returns not currently in-game
|
||||||
//boost = Math.min(boost, (1 - Math.pow(Math.E, -0.7 * boost)) * 2.5);
|
// boost = Math.min(boost, (1 - Math.pow(Math.E, -0.7 * boost)) * 2.5);
|
||||||
|
|
||||||
// Remove base shield generator strength
|
// Remove base shield generator strength
|
||||||
boost -= 1;
|
boost -= 1;
|
||||||
|
|||||||
@@ -1204,53 +1204,13 @@ export default class Ship {
|
|||||||
* @return {this} The ship instance (for chaining operations)
|
* @return {this} The ship instance (for chaining operations)
|
||||||
*/
|
*/
|
||||||
recalculateShield() {
|
recalculateShield() {
|
||||||
let shield = 0;
|
// Obtain shield metrics with 0 pips to sys (parts affected by SYS aren't used here)
|
||||||
let shieldBoost = 1;
|
const metrics = Calc.shieldMetrics(this, 0);
|
||||||
let shieldExplRes = null;
|
|
||||||
let shieldKinRes = null;
|
|
||||||
let shieldThermRes = null;
|
|
||||||
let shieldExplDRStart = null;
|
|
||||||
let shieldExplDREnd = null;
|
|
||||||
let shieldKinDRStart = null;
|
|
||||||
let shieldKinDREnd = null;
|
|
||||||
let shieldThermDRStart = null;
|
|
||||||
let shieldThermDREnd = null;
|
|
||||||
|
|
||||||
const sgSlot = this.findInternalByGroup('sg');
|
|
||||||
if (sgSlot && sgSlot.enabled) {
|
|
||||||
// Shield from generator
|
|
||||||
shield = Calc.shieldStrength(this.hullMass, this.baseShieldStrength, sgSlot.m, 1);
|
|
||||||
shieldExplRes = 1 - sgSlot.m.getExplosiveResistance();
|
|
||||||
shieldExplDRStart = shieldExplRes * 0.7;
|
|
||||||
shieldExplDREnd = 0;
|
|
||||||
shieldKinRes = 1 - sgSlot.m.getKineticResistance();
|
|
||||||
shieldKinDRStart = shieldKinRes * 0.7;
|
|
||||||
shieldKinDREnd = 0;
|
|
||||||
shieldThermRes = 1 - sgSlot.m.getThermalResistance();
|
|
||||||
shieldThermDRStart = shieldThermRes * 0.7;
|
|
||||||
shieldThermDREnd = 0;
|
|
||||||
|
|
||||||
// Shield from boosters
|
|
||||||
for (let slot of this.hardpoints) {
|
|
||||||
if (slot.enabled && slot.m && slot.m.grp == 'sb') {
|
|
||||||
shieldBoost += slot.m.getShieldBoost();
|
|
||||||
shieldExplRes *= (1 - slot.m.getExplosiveResistance());
|
|
||||||
shieldKinRes *= (1 - slot.m.getKineticResistance());
|
|
||||||
shieldThermRes *= (1 - slot.m.getThermalResistance());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// We apply diminishing returns to the boosted value
|
|
||||||
shieldBoost = Math.min(shieldBoost, (1 - Math.pow(Math.E, -0.7 * shieldBoost)) * 2.5);
|
|
||||||
|
|
||||||
shield = shield * shieldBoost;
|
|
||||||
|
|
||||||
this.shield = shield;
|
|
||||||
this.shieldExplRes = shieldExplRes ? 1 - this.diminishingReturns(shieldExplRes, shieldExplDREnd, shieldExplDRStart) : null;
|
|
||||||
this.shieldKinRes = shieldKinRes ? 1 - this.diminishingReturns(shieldKinRes, shieldKinDREnd, shieldKinDRStart) : null;
|
|
||||||
this.shieldThermRes = shieldThermRes ? 1 - this.diminishingReturns(shieldThermRes, shieldThermDREnd, shieldThermDRStart) : null;
|
|
||||||
|
|
||||||
|
this.shield = metrics.generator + metrics.boosters;
|
||||||
|
this.shieldExplRes = this.shield > 0 ? 1 - metrics.explosive.total : null;
|
||||||
|
this.shieldKinRes = this.shield > 0 ? 1 - metrics.kinetic.total : null;
|
||||||
|
this.shieldThermRes = this.shield > 0 ? 1 - metrics.thermal.total : null;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user