diff --git a/ChangeLog.md b/ChangeLog.md
index cbed8ff4..5c61f749 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+#2.3.0
+ * Add 2.3 diminishing returns on shield value
+ * Make scan time visible on scanners where available
+
#2.2.19
* Power management panel now displays modules in descending order of power usage by default
* Shot speed can no longer be modified directly. Its value is derived from the range modifier for Long Range and Focused modifications
diff --git a/package.json b/package.json
index 8797a507..6f9d4a16 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "coriolis_shipyard",
- "version": "2.2.19",
+ "version": "2.3.0b",
"repository": {
"type": "git",
"url": "https://github.com/EDCD/coriolis"
diff --git a/src/app/components/AvailableModulesMenu.jsx b/src/app/components/AvailableModulesMenu.jsx
index a1e93235..fba8ad15 100644
--- a/src/app/components/AvailableModulesMenu.jsx
+++ b/src/app/components/AvailableModulesMenu.jsx
@@ -41,6 +41,8 @@ const GRPCAT = {
'mr': 'ordnance',
'tp': 'ordnance',
'nl': 'ordnance',
+ 'sc': 'scanners',
+ 'ss': 'scanners',
// Utilities
'cs': 'scanners',
'kw': 'scanners',
@@ -60,7 +62,6 @@ const CATEGORIES = {
'limpet controllers': ['cc', 'fx', 'hb', 'pc'],
'passenger cabins': ['pce', 'pci', 'pcm', 'pcq'],
'rf': ['rf'],
- 'sc': ['sc'],
'shields': ['sg', 'bsg', 'psg', 'scb'],
'structural reinforcement': ['hr', 'mrp'],
'dc': ['dc'],
@@ -72,7 +73,7 @@ const CATEGORIES = {
'sb': ['sb'],
'hs': ['hs'],
'defence': ['ch', 'po', 'ec'],
- 'scanners': ['cs', 'kw', 'ws'],
+ 'scanners': ['sc', 'ss', 'cs', 'kw', 'ws'], // Overloaded with internal scanners
};
/**
diff --git a/src/app/components/HardpointSlot.jsx b/src/app/components/HardpointSlot.jsx
index ce8416a9..419463bf 100644
--- a/src/app/components/HardpointSlot.jsx
+++ b/src/app/components/HardpointSlot.jsx
@@ -75,6 +75,7 @@ export default class HardpointSlot extends Slot {
{ m.getDps() && m.getEps() ?
{translate('DPE')}: {formats.f1(m.getDps() / m.getEps())}
: null }
{ m.getRoF() ? {translate('ROF')}: {formats.f1(m.getRoF())}{u.ps}
: null }
{ m.getRange() ? {translate('range')} {formats.f1(m.getRange() / 1000)}{u.km}
: null }
+ { m.getScanTime() ? {translate('scantime')} {formats.f1(m.getScanTime())}{u.s}
: null }
{ m.getFalloff() ? {translate('falloff')} {formats.round(m.getFalloff() / 1000)}{u.km}
: null }
{ m.getShieldBoost() ? +{formats.pct1(m.getShieldBoost())}
: null }
{ m.getAmmo() ? {translate('ammunition')}: {formats.int(m.getClip())}/{formats.int(m.getAmmo())}
: null }
diff --git a/src/app/i18n/en.js b/src/app/i18n/en.js
index 572d34f5..a77101b1 100644
--- a/src/app/i18n/en.js
+++ b/src/app/i18n/en.js
@@ -88,9 +88,10 @@ export const terms = {
rg: 'Rail Gun',
s: 'Sensors',
sb: 'Shield Booster',
- sc: 'Scanner',
+ sc: 'Stellar Scanners',
scb: 'Shield Cell Bank',
sg: 'Shield Generator',
+ ss: 'Surface Scanners',
t: 'thrusters',
tp: 'Torpedo Pylon',
ul: 'Burst Laser',
@@ -177,6 +178,9 @@ export const terms = {
regen: 'Regeneration rate',
reload: 'Reload',
rof: 'Rate of fire',
+ scanangle: 'Scan angle',
+ scanrange: 'Scan range',
+ scantime: 'Scan time',
shield: 'Shield',
shieldboost: 'Shield boost',
shieldreinforcement: 'Shield reinforcement',
diff --git a/src/app/shipyard/Module.js b/src/app/shipyard/Module.js
index 1f2dea54..e013609b 100755
--- a/src/app/shipyard/Module.js
+++ b/src/app/shipyard/Module.js
@@ -344,6 +344,14 @@ export default class Module {
return this._getModifiedValue('ranget');
}
+ /**
+ * Get the scan time for this module, taking in to account modifications
+ * @return {Number} the scan time of this module
+ */
+ getScanTime() {
+ return this._getModifiedValue('scantime');
+ }
+
/**
* Get the capture arc for this module, taking in to account modifications
* @return {Number} the capture arc of this module
diff --git a/src/app/shipyard/Ship.js b/src/app/shipyard/Ship.js
index f1325dee..bfccca8c 100755
--- a/src/app/shipyard/Ship.js
+++ b/src/app/shipyard/Ship.js
@@ -1258,8 +1258,7 @@ export default class Ship {
}
// We apply diminishing returns to the boosted value
- // (no we don't; FD pulled back on this idea. But leave this here in case they reinstate it)
- // shieldBoost = Math.min(shieldBoost, (1 - Math.pow(Math.E, -0.7 * shieldBoost)) * 2.5);
+ shieldBoost = Math.min(shieldBoost, (1 - Math.pow(Math.E, -0.7 * shieldBoost)) * 2.5);
shield = shield * shieldBoost;