mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-10 07:05:35 +00:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
97f3bece33 | ||
|
|
be02444487 | ||
|
|
fc012fe68a | ||
|
|
7ac16d6d22 | ||
|
|
d82128690b | ||
|
|
9e57eb4262 | ||
|
|
6e0d45f419 | ||
|
|
645e86714e | ||
|
|
00afd1cd6a | ||
|
|
77ae126a51 | ||
|
|
9c82c7caed | ||
|
|
d9a92e7a78 | ||
|
|
d8a87029a6 | ||
|
|
f407d0f92a | ||
|
|
4ac42e62e6 | ||
|
|
748c63fa0b | ||
|
|
78ca756cef | ||
|
|
a8554b51c2 | ||
|
|
e54e4da289 | ||
|
|
f97cb5f5a7 | ||
|
|
318e8077d0 | ||
|
|
c8355a532d | ||
|
|
3686ccd4ed | ||
|
|
f02db0120a | ||
|
|
d9ad93d3cd | ||
|
|
77018cc1ad | ||
|
|
30a8a29ce3 | ||
|
|
7b1aa646ac | ||
|
|
49e4409862 |
@@ -3,7 +3,7 @@ notifications:
|
|||||||
email: false
|
email: false
|
||||||
sudo: false
|
sudo: false
|
||||||
node_js:
|
node_js:
|
||||||
- "4.2.6"
|
- "4.8.1"
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- node_modules
|
- node_modules
|
||||||
@@ -12,4 +12,4 @@ before_script:
|
|||||||
|
|
||||||
script:
|
script:
|
||||||
- npm run lint
|
- npm run lint
|
||||||
- npm test
|
- npm test
|
||||||
|
|||||||
17
ChangeLog.md
17
ChangeLog.md
@@ -1,3 +1,20 @@
|
|||||||
|
#2.3.7
|
||||||
|
* Fixed Travis test issues
|
||||||
|
* Bumped NodeJS version to provide better compatability and support
|
||||||
|
* Added updated German Translation
|
||||||
|
* Fixed issues with Safari
|
||||||
|
* Use coriolis-data 2.3.7
|
||||||
|
* Fixed Orca mass-lock
|
||||||
|
|
||||||
|
#2.3.6
|
||||||
|
* Update miner role to provide better defaults
|
||||||
|
* Fix issue where torpedo special effects were not showing
|
||||||
|
* Fix typo causing long range blueprint to not modify shot speed in some circumstances
|
||||||
|
* Fix for Spanish translation of Chaff Launcher (thanks to DamonFstr)
|
||||||
|
* Update for Russian translation (thanks to LeeNTien)
|
||||||
|
* Use coriolis-data 2.3.6:
|
||||||
|
* Add shotspeed modifier to cannon/multi-cannon/fragment cannon
|
||||||
|
|
||||||
#2.3.5
|
#2.3.5
|
||||||
* Ensure that hidden blueprint effects are applied when a blueprint is selected
|
* Ensure that hidden blueprint effects are applied when a blueprint is selected
|
||||||
* Handle display when summary values show thrusters disabled but current mass keeps them enabled
|
* Handle display when summary values show thrusters disabled but current mass keeps them enabled
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ describe('Import Modal', function() {
|
|||||||
expect(modal.state.singleBuild).toBe(true);
|
expect(modal.state.singleBuild).toBe(true);
|
||||||
clickProceed();
|
clickProceed();
|
||||||
expect(MockRouter.go.mock.calls.length).toBe(1);
|
expect(MockRouter.go.mock.calls.length).toBe(1);
|
||||||
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/anaconda?code=A4putkFklkdzsuf52c0o0o0o1m1m0q0q0404-0l0b0100034k5n052d04---0303326b.AwRj4zNLaA%3D%3D.CwBhCYzBGW9qCTSqq5xA.H4sIAAAAAAAAA2MUe8HMwPD%2FPwMcAABTINwTEgAAAA%3D%3D&bn=Test%20My%20Ship');
|
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/anaconda?code=A4putkFklkdzsuf52c0o0o0o1m1m0q0q0404-0l0b0100034k5n052d04---0303326b.AwRj4zNLaA%3D%3D.CwBhCYzBGW9qCTSqq5xA.H4sIAAAAAAAAA2MUe8HMwPD%2FPwMAAGvB0AkAAAA%3D&bn=Test%20My%20Ship');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -186,7 +186,7 @@ describe('Import Modal', function() {
|
|||||||
expect(modal.state.singleBuild).toBe(true);
|
expect(modal.state.singleBuild).toBe(true);
|
||||||
clickProceed();
|
clickProceed();
|
||||||
expect(MockRouter.go.mock.calls.length).toBe(1);
|
expect(MockRouter.go.mock.calls.length).toBe(1);
|
||||||
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/asp?code=A0pftiFflfddsnf5------020202033c044002v62f2i.AwRj4yvI.CwRgDBldHnJA.H4sIAAAAAAAAA2P858DAwPCXEUhwHPvx%2F78YG5AltB7I%2F8%2F0TwImJboDSPJ%2F%2B%2Ff%2Fv%2FKlX%2F%2F%2Fi3AwMTBIfARK%2FGf%2BJwVSxArStVAYqOjvz%2F%2F%2FJVo5GRhE2IBc4SKQSSz%2FDGEmCa398P8%2F%2F2%2BgTf%2F%2FAwDFxwtofAAAAA%3D%3D&bn=Multi-purpose%20Asp%20Explorer');
|
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/asp?code=A0pftiFflfddsnf5------020202033c044002v62f2i.AwRj4yvI.CwRgDBldHnJA.H4sIAAAAAAAAA2P858DAwPCXEUhwHPvx%2F78YG5AltB7I%2F8%2F0TwImJboDSPJ%2F%2B%2Ff%2Fv%2FKlX%2F%2F%2Fi3AwMTBIfARK%2FGf%2BJwVSxArStVAYqOjvz%2F%2F%2FJVo5GRhE2IBc4SKQSSz%2FDGEmCa398P8%2F%2F2%2BgTf%2F%2FA7kMAExxqlSAAAAA&bn=Multi-purpose%20Asp%20Explorer');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('imports a valid v4 build with modifications', function() {
|
it('imports a valid v4 build with modifications', function() {
|
||||||
@@ -198,7 +198,7 @@ describe('Import Modal', function() {
|
|||||||
expect(modal.state.singleBuild).toBe(true);
|
expect(modal.state.singleBuild).toBe(true);
|
||||||
clickProceed();
|
clickProceed();
|
||||||
expect(MockRouter.go.mock.calls.length).toBe(1);
|
expect(MockRouter.go.mock.calls.length).toBe(1);
|
||||||
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/imperial_courier?code=A0patzF5l0das8f31a1a270202000e402t0101-2f.AwRj4zKA.CwRgDBldLiQ%3D.H4sIAAAAAAAAA12OP0tCYRjFj9fuVbvF1du9ekkT8s%2FkIg4NElyIBBd321yaGvwUQTS3N7UFfYygIT9EoyQUJA36ns47XJCWA%2B%2Fz%2Bz3Pe3ImBbDNKaqNPSBoGrL4ngfomKpFGiJ%2BLgHteR1IPjxJT5pF11uSeXNsJVcRfgdC92syWUuK0iMdKZqrjJ%2F0aoA71lJ5oKf38knWcCiptCPdhJIerdS00vlK0qktlqoj983UmqqHjQ33VsW8eazFmaTyULP2hQ4lX8LBme6g%2F6v0TTdbxJ2KhdEIaCw15MF%2FNB0L%2BS2hwEwyFM8KgP%2BqEpWWA3Qu9Z3z9kPWHzakt7Dt%2BAeD7ghSTgEAAA%3D%3D&bn=Multi-purpose%20Imperial%20Courier');
|
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/imperial_courier?code=A0patzF5l0das8f31a1a270202000e402t0101-2f.AwRj4zKA.CwRgDBldLiQ%3D.H4sIAAAAAAAAA12OPUvDYBSFT1OTfkRJjUkbbC3Yj8mlODgUISAtdOlety5ODv0Vgji7O7kJ%2FgzBQX%2BEY7Gg0NKhfY%2FnHQLFDBdynufe9%2BRMCmCb06g29oCgacjiRx6gY6oWKUT8UgLaszqQfHmSnpVFN1uSeXNsJVcj%2FA2EHlZkspIUpUc6UjTXGT85qwHuSEuVc%2F16r99kDQeSSjvSbSjpyUpNK10uJJ3aYqk6smwm1lQ9bOxw71TMm8VanEqq9JW1r3Qo%2BREOLnQHvbWmb7rZIu5VLIyGQGOukPv%2F0WQk5LeEAjPOUDwtAP6bShy2HKAz0HPO%2B5KsP25I79O2I7LvD%2Bz4Il1XAQAA&bn=Multi-purpose%20Imperial%20Courier');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -240,7 +240,7 @@ describe('Import Modal', function() {
|
|||||||
expect(modal.state.singleBuild).toBe(true);
|
expect(modal.state.singleBuild).toBe(true);
|
||||||
clickProceed();
|
clickProceed();
|
||||||
expect(MockRouter.go.mock.calls.length).toBe(1);
|
expect(MockRouter.go.mock.calls.length).toBe(1);
|
||||||
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/federal_corvette?code=A2putsFklndzsxf50x0x7l28281919040404040402020l06p05sf63c5ifr--v66g2f.AwRj4zNaqA%3D%3D.CwRgDBldUExuBiIlUA%3D%3D.H4sIAAAAAAAAA02SPy9DURjG3%2F65vW1v47TXVbeqqF7EQtIIBomRJswsYmISH8BgkFhqFZ9AwlALMYitkXQyEF2k4SMYJNK0dV7PK7nc5ck55%2Fm9z%2FnznpBeJqLvECQbM4hUjZnjO5hyWGfFikAGGjGiku0QuddhQCNdZmdWM9snsDmih4REOdlnNvz9DrPrJIicPdSwoZf8pAnTIpq8x7DYADS%2Bi5DERY85%2BYqpmkc6x%2FWGf6beKCR3YBIZFZCxCgrtczjuOmo4qTf94F4KYuxhz5jjEhXmUJNexFrpIUo02ALN1j9u1JMgD%2FMga1GfbMNRd9iHUwGy%2BpspZF3IBSGvMFJluS%2FuR24FJ2KlV%2Fxju6sQq4lhRsQTUVUJTgegLtS6EUjEE1HPAmUC0KdAjwKJeCKqD8zoURx72gHyDW9nvQhJGHkyUscS1x%2BAZnAlqwU%2FI%2BKJKEvextXrf93eQrR1KUlS5HWwGC61mfOn0oN3IM4OHoBzuuIHj33hS5jT8KeamIYa0sjhgH%2BLfplP4kcwD5Xl3xR1wfeHtqWzBHHX8I9SH9Je%2FgGvXxeungIAAA%3D%3D&bn=Imported%20Federal%20Corvette');
|
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/federal_corvette?code=A2putsFklndzsxf50x0x7l28281919040404040402020l06p05sf63c5ifr--v66g2f.AwRj4zNaqA%3D%3D.CwRgDBldUExuBiIlUA%3D%3D.H4sIAAAAAAAAA12STy8DURTFb1szU53Ga8dg2qqqDmJDIoKFxJImumYjVrVqfAALC4lNbcUnkLCoDbEQu0bSlQVhI8JHsJBIQ73rXMkwMYuT9%2Bb87nl%2F7ovoRSL6ikD6TYNINZg5XsWUo7pfrBikr2USlRyXyDuLAhr6ZHanNLOzD5tjOiskysk5dOBvfTB7bjeRW0MNG3ohSBq1bKKxKwyLLUAjmwjpPu4wJx4xVbNI57heDfbUKUAy2xaRUQZpllHoHMHxKqjhhF4LgjtJiFHDmqbrEeVnUJOax7%2FSdRfRwBNotv9wo5kAuZMD2egKyDYcdYl1OBki6z%2BZQjaFnBPyFCM1LefF%2BcgrY0es9FKwbW8ZYj9gmBbxRVRdglMh6BNqnwsk4ouoO4HSIehNoBuBRHwR1QOmsBvHmk6IfMbd2fdCEka%2BjNSexPWGoEkcyX6CnxbxRZQtd%2BPpym%2B31xFtn0iSFPkf%2BBkttZlzB9KDFyBuFRfAGV0Ogoff8SSsCfjjD5hGWtLIwZB%2FgX5Zt%2BLHMI9My7sp6nzgZzekswTxVvCOkq%2FSXqb%2F3zfLxh6HrwIAAA%3D%3D&bn=Imported%20Federal%20Corvette');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('imports a valid companion API build', function() {
|
it('imports a valid companion API build', function() {
|
||||||
@@ -252,7 +252,7 @@ describe('Import Modal', function() {
|
|||||||
expect(modal.state.singleBuild).toBe(true);
|
expect(modal.state.singleBuild).toBe(true);
|
||||||
clickProceed();
|
clickProceed();
|
||||||
expect(MockRouter.go.mock.calls.length).toBe(1);
|
expect(MockRouter.go.mock.calls.length).toBe(1);
|
||||||
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/beluga?code=A0pktsFplCdpsnf70t0t2727270004040404043c4fmimlmm04mc0iv62i2f.AwRj4yukg%3D%3D%3D.CwRgDBldHi8IUA%3D%3D.H4sIAAAAAAAAA2P8Z8%2FAwPCXEUiIKTMxMPCv%2F%2Ff%2FP8cFIPGf6Z8YTEr0GjMDg%2FJWICERBOTzn%2Fn7%2F7%2FIO5Ai5n9SIEWsQEIoSxAolfbt%2F3%2BJPk4GBhE7YQYGYVmgcuVnf4Aq%2FwMAIrEcGGsAAAA%3D&bn=Imported%20Beluga%20Liner');
|
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/beluga?code=A0pktsFplCdpsnf70t0t2727270004040404043c4fmimlmm04mc0iv62i2f.AwRj4yukg%3D%3D%3D.CwRgDBldHi8IUA%3D%3D.H4sIAAAAAAAAA2P8Z8%2FAwPCXEUiIKTMxMPCv%2F%2Ff%2FP8cFIPGf6Z8YTEr0GjMDg%2FJWICERBOTzn%2Fn7%2F7%2FIO5Ai5n9SIEWsQEIoSxAolfbt%2F3%2BJPk4GBhE7YQYGYVmgcuVnf4Aq%2FwOVAAAyiFctbgAAAA%3D%3D&bn=Imported%20Beluga%20Liner');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('imports a valid companion API build', function() {
|
it('imports a valid companion API build', function() {
|
||||||
@@ -276,7 +276,7 @@ describe('Import Modal', function() {
|
|||||||
expect(modal.state.singleBuild).toBe(true);
|
expect(modal.state.singleBuild).toBe(true);
|
||||||
clickProceed();
|
clickProceed();
|
||||||
expect(MockRouter.go.mock.calls.length).toBe(1);
|
expect(MockRouter.go.mock.calls.length).toBe(1);
|
||||||
expect(MockRouter.go.mock.calls[0][0]).toBe('outfit/cobra_mk_iii?code=A0p0tdFaldd3sdf4------34---2f2i.AwRj4yKA.CwRgDMYExre1Rcg%3D..EweloBhBGA2EoFMCGBzANokMK6A%3D');
|
expect(MockRouter.go.mock.calls[0][0]).toBe('/outfit/cobra_mk_iii?code=A0p0tdFaldd3sdf4------34---2f2i.AwRj4yKA.CwRgDMYExrezBUg%3D.&bn=Imported%20Cobra%20Mk%20III');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "coriolis_shipyard",
|
"name": "coriolis_shipyard",
|
||||||
"version": "2.3.5",
|
"version": "2.3.7",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/EDCD/coriolis"
|
"url": "https://github.com/EDCD/coriolis"
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"homepage": "https://coriolis.edcd.io",
|
"homepage": "https://coriolis.edcd.io",
|
||||||
"bugs": "https://github.com/EDCD/coriolis/issues",
|
"bugs": "https://github.com/EDCD/coriolis/issues",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engine": "node >= 4.0.0",
|
"engine": "node >= 4.8.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prepublish": "rollup -c && uglifyjs d3.js -c -m -o d3.min.js",
|
"prepublish": "rollup -c && uglifyjs d3.js -c -m -o d3.min.js",
|
||||||
@@ -84,7 +84,8 @@
|
|||||||
"style-loader": "^0.16.1",
|
"style-loader": "^0.16.1",
|
||||||
"url-loader": "^0.5.8",
|
"url-loader": "^0.5.8",
|
||||||
"webpack": "^2.4.1",
|
"webpack": "^2.4.1",
|
||||||
"webpack-dev-server": "^2.4.4"
|
"webpack-dev-server": "^2.4.4",
|
||||||
|
"uglify-js": "^2.4.11"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"babel-polyfill": "*",
|
"babel-polyfill": "*",
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export default class HardpointSlot extends Slot {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const className = cn('details', enabled ? '' : 'disabled')
|
const className = cn('details', enabled ? '' : 'disabled');
|
||||||
return <div className={className} draggable='true' onDragStart={drag} onDragEnd={drop}>
|
return <div className={className} draggable='true' onDragStart={drag} onDragEnd={drop}>
|
||||||
<div className={'cb'}>
|
<div className={'cb'}>
|
||||||
<div className={'l'}>
|
<div className={'l'}>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export default class InternalSlot extends Slot {
|
|||||||
|
|
||||||
let mass = m.getMass() || m.cargo || m.fuel || 0;
|
let mass = m.getMass() || m.cargo || m.fuel || 0;
|
||||||
|
|
||||||
const className = cn('details', enabled ? '' : 'disabled')
|
const className = cn('details', enabled ? '' : 'disabled');
|
||||||
return <div className={className} draggable='true' onDragStart={drag} onDragEnd={drop}>
|
return <div className={className} draggable='true' onDragStart={drag} onDragEnd={drop}>
|
||||||
<div className={'cb'}>
|
<div className={'cb'}>
|
||||||
<div className={'l'}>{classRating} {translate(m.name || m.grp)}{m.mods && Object.keys(m.mods).length > 0 ? <span onMouseOver={termtip.bind(null, modTT)} onMouseOut={tooltip.bind(null, null)}><Modified /></span> : ''}</div>
|
<div className={'l'}>{classRating} {translate(m.name || m.grp)}{m.mods && Object.keys(m.mods).length > 0 ? <span onMouseOver={termtip.bind(null, modTT)} onMouseOut={tooltip.bind(null, null)}><Modified /></span> : ''}</div>
|
||||||
|
|||||||
@@ -216,7 +216,6 @@ export default class InternalSlotSection extends SlotSection {
|
|||||||
onChange={this.props.onChange}
|
onChange={this.props.onChange}
|
||||||
onSelect={this._selectModule.bind(this, s)}
|
onSelect={this._selectModule.bind(this, s)}
|
||||||
selected={currentMenu == s}
|
selected={currentMenu == s}
|
||||||
enabled={s.enabled}
|
|
||||||
eligible={s.eligible}
|
eligible={s.eligible}
|
||||||
m={s.m}
|
m={s.m}
|
||||||
drag={this._drag.bind(this, s)}
|
drag={this._drag.bind(this, s)}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
const translate = language.translate;
|
const translate = language.translate;
|
||||||
|
|
||||||
const specials = [];
|
const specials = [];
|
||||||
const specialsId = m.missile ? 'specials_' + m.missile : 'specials';
|
const specialsId = m.missile && Modifications.modules[m.grp]['specials_' + m.missile] ? 'specials_' + m.missile : 'specials';
|
||||||
if (Modifications.modules[m.grp][specialsId] && Modifications.modules[m.grp][specialsId].length > 0) {
|
if (Modifications.modules[m.grp][specialsId] && Modifications.modules[m.grp][specialsId].length > 0) {
|
||||||
const close = this._specialSelected.bind(this, null);
|
const close = this._specialSelected.bind(this, null);
|
||||||
specials.push(<div style={{ cursor: 'pointer' }} key={ 'none' } onClick={ close }>{translate('PHRASE_NO_SPECIAL')}</div>);
|
specials.push(<div style={{ cursor: 'pointer' }} key={ 'none' } onClick={ close }>{translate('PHRASE_NO_SPECIAL')}</div>);
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ export default class ShipPicker extends TranslatedComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* constructor
|
||||||
* @param {Object} props React Component properties
|
* @param {object} props Properties react
|
||||||
* @param {Object} context React Component context
|
* @param {object} context react context
|
||||||
*/
|
*/
|
||||||
constructor(props, context) {
|
constructor(props, context) { // eslint-disable-line
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.shipOrder = Object.keys(Ships).sort();
|
this.shipOrder = Object.keys(Ships).sort();
|
||||||
@@ -39,8 +39,8 @@ export default class ShipPicker extends TranslatedComponent {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Update ship
|
* Update ship
|
||||||
* @param {object} ship the ship
|
* @param {object} ship the ship
|
||||||
* @param {string} build the build, if present
|
* @param {string} build the build, if present
|
||||||
*/
|
*/
|
||||||
_shipChange(ship, build) {
|
_shipChange(ship, build) {
|
||||||
this._closeMenu();
|
this._closeMenu();
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ export default class SlotSection extends TranslatedComponent {
|
|||||||
static propTypes = {
|
static propTypes = {
|
||||||
ship: PropTypes.object.isRequired,
|
ship: PropTypes.object.isRequired,
|
||||||
onChange: PropTypes.func.isRequired,
|
onChange: PropTypes.func.isRequired,
|
||||||
|
onCargoChange: PropTypes.func.isRequired,
|
||||||
|
onFuelChange: PropTypes.func.isRequired,
|
||||||
code: PropTypes.string.isRequired,
|
code: PropTypes.string.isRequired,
|
||||||
togglePwr: PropTypes.func
|
togglePwr: PropTypes.func
|
||||||
};
|
};
|
||||||
@@ -129,44 +131,46 @@ export default class SlotSection extends TranslatedComponent {
|
|||||||
let { originSlot, targetSlot, copy } = this.state;
|
let { originSlot, targetSlot, copy } = this.state;
|
||||||
let m = originSlot.m;
|
let m = originSlot.m;
|
||||||
|
|
||||||
if (copy) {
|
if (targetSlot && originSlot != targetSlot) {
|
||||||
// We want to copy the module in to the target slot
|
if (copy) {
|
||||||
if (targetSlot && canMount(this.props.ship, targetSlot, m.grp, m.class)) {
|
// We want to copy the module in to the target slot
|
||||||
const mCopy = m.clone();
|
if (targetSlot && canMount(this.props.ship, targetSlot, m.grp, m.class)) {
|
||||||
this.props.ship.use(targetSlot, mCopy, false);
|
const mCopy = m.clone();
|
||||||
// Copy power info
|
this.props.ship.use(targetSlot, mCopy, false);
|
||||||
targetSlot.enabled = originSlot.enabled;
|
// Copy power info
|
||||||
targetSlot.priority = originSlot.priority;
|
targetSlot.enabled = originSlot.enabled;
|
||||||
this.props.onChange();
|
targetSlot.priority = originSlot.priority;
|
||||||
}
|
this.props.onChange();
|
||||||
} else {
|
}
|
||||||
// Store power info
|
} else {
|
||||||
const originEnabled = targetSlot.enabled;
|
// Store power info
|
||||||
const originPriority = targetSlot.priority;
|
const originEnabled = targetSlot.enabled;
|
||||||
const targetEnabled = originSlot.enabled;
|
const originPriority = targetSlot.priority;
|
||||||
const targetPriority = originSlot.priority;
|
const targetEnabled = originSlot.enabled;
|
||||||
// We want to move the module in to the target slot, and swap back any module that was originally in the target slot
|
const targetPriority = originSlot.priority;
|
||||||
if (targetSlot && m && canMount(this.props.ship, targetSlot, m.grp, m.class)) {
|
// We want to move the module in to the target slot, and swap back any module that was originally in the target slot
|
||||||
// Swap modules if possible
|
if (targetSlot && m && canMount(this.props.ship, targetSlot, m.grp, m.class)) {
|
||||||
if (targetSlot.m && canMount(this.props.ship, originSlot, targetSlot.m.grp, targetSlot.m.class)) {
|
// Swap modules if possible
|
||||||
this.props.ship.use(originSlot, targetSlot.m, true);
|
if (targetSlot.m && canMount(this.props.ship, originSlot, targetSlot.m.grp, targetSlot.m.class)) {
|
||||||
this.props.ship.use(targetSlot, m);
|
this.props.ship.use(originSlot, targetSlot.m, true);
|
||||||
// Swap power
|
this.props.ship.use(targetSlot, m);
|
||||||
originSlot.enabled = originEnabled;
|
// Swap power
|
||||||
originSlot.priority = originPriority;
|
originSlot.enabled = originEnabled;
|
||||||
targetSlot.enabled = targetEnabled;
|
originSlot.priority = originPriority;
|
||||||
targetSlot.priority = targetPriority;
|
targetSlot.enabled = targetEnabled;
|
||||||
} else { // Otherwise empty the origin slot
|
targetSlot.priority = targetPriority;
|
||||||
// Store power
|
} else { // Otherwise empty the origin slot
|
||||||
const targetEnabled = originSlot.enabled;
|
// Store power
|
||||||
this.props.ship.use(originSlot, null, true); // Empty but prevent summary update
|
const targetEnabled = originSlot.enabled;
|
||||||
this.props.ship.use(targetSlot, m);
|
this.props.ship.use(originSlot, null, true); // Empty but prevent summary update
|
||||||
originSlot.enabled = 0;
|
this.props.ship.use(targetSlot, m);
|
||||||
originSlot.priority = 0;
|
originSlot.enabled = 0;
|
||||||
targetSlot.enabled = targetEnabled;
|
originSlot.priority = 0;
|
||||||
targetSlot.priority = targetPriority;
|
targetSlot.enabled = targetEnabled;
|
||||||
|
targetSlot.priority = targetPriority;
|
||||||
|
}
|
||||||
|
this.props.onChange();
|
||||||
}
|
}
|
||||||
this.props.onChange();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.setState({ originSlot: null, targetSlot: null, copy: null });
|
this.setState({ originSlot: null, targetSlot: null, copy: null });
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
_optimizeStandard() {
|
_optimizeStandard() {
|
||||||
this.props.ship.useLightestStandard();
|
this.props.ship.useLightestStandard();
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
|
this.props.onCargoChange(this.props.ship.cargoCapacity);
|
||||||
|
this.props.onFuelChange(this.props.ship.fuelCapacity);
|
||||||
this._close();
|
this._close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,6 +41,8 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
_multiPurpose(shielded, bulkheadIndex) {
|
_multiPurpose(shielded, bulkheadIndex) {
|
||||||
ShipRoles.multiPurpose(this.props.ship, shielded, bulkheadIndex);
|
ShipRoles.multiPurpose(this.props.ship, shielded, bulkheadIndex);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
|
this.props.onCargoChange(this.props.ship.cargoCapacity);
|
||||||
|
this.props.onFuelChange(this.props.ship.fuelCapacity);
|
||||||
this._close();
|
this._close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,6 +53,8 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
_optimizeCargo(shielded) {
|
_optimizeCargo(shielded) {
|
||||||
ShipRoles.trader(this.props.ship, shielded);
|
ShipRoles.trader(this.props.ship, shielded);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
|
this.props.onCargoChange(this.props.ship.cargoCapacity);
|
||||||
|
this.props.onFuelChange(this.props.ship.fuelCapacity);
|
||||||
this._close();
|
this._close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +65,8 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
_optimizeMiner(shielded) {
|
_optimizeMiner(shielded) {
|
||||||
ShipRoles.miner(this.props.ship, shielded);
|
ShipRoles.miner(this.props.ship, shielded);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
|
this.props.onCargoChange(this.props.ship.cargoCapacity);
|
||||||
|
this.props.onFuelChange(this.props.ship.fuelCapacity);
|
||||||
this._close();
|
this._close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,6 +77,8 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
_optimizeExplorer(planetary) {
|
_optimizeExplorer(planetary) {
|
||||||
ShipRoles.explorer(this.props.ship, planetary);
|
ShipRoles.explorer(this.props.ship, planetary);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
|
this.props.onCargoChange(this.props.ship.cargoCapacity);
|
||||||
|
this.props.onFuelChange(this.props.ship.fuelCapacity);
|
||||||
this._close();
|
this._close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,6 +88,8 @@ export default class StandardSlotSection extends SlotSection {
|
|||||||
_optimizeRacer() {
|
_optimizeRacer() {
|
||||||
ShipRoles.racer(this.props.ship);
|
ShipRoles.racer(this.props.ship);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
|
this.props.onCargoChange(this.props.ship.cargoCapacity);
|
||||||
|
this.props.onFuelChange(this.props.ship.fuelCapacity);
|
||||||
this._close();
|
this._close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ export default class UtilitySlotSection extends SlotSection {
|
|||||||
dragOver={this._dragOverSlot.bind(this, h)}
|
dragOver={this._dragOverSlot.bind(this, h)}
|
||||||
drop={this._drop}
|
drop={this._drop}
|
||||||
dropClass={this._dropClass(h, originSlot, targetSlot)}
|
dropClass={this._dropClass(h, originSlot, targetSlot)}
|
||||||
enabled={h.enabled}
|
|
||||||
ship={ship}
|
ship={ship}
|
||||||
m={h.m}
|
m={h.m}
|
||||||
enabled={h.enabled ? true : false}
|
enabled={h.enabled ? true : false}
|
||||||
|
|||||||
1089
src/app/i18n/de.js
1089
src/app/i18n/de.js
File diff suppressed because it is too large
Load Diff
@@ -46,7 +46,7 @@ export const terms = {
|
|||||||
'cr': 'Compartimento de carga',
|
'cr': 'Compartimento de carga',
|
||||||
'cs': 'Esc\u00e1ner de carga',
|
'cs': 'Esc\u00e1ner de carga',
|
||||||
'cells': 'celdas',
|
'cells': 'celdas',
|
||||||
'Chaff Launcher': 'Lanzador de birutas',
|
'Chaff Launcher': 'Lanzador de virutas',
|
||||||
'close': 'Cerrar',
|
'close': 'Cerrar',
|
||||||
'cc': 'Controlador de Drones de Recogida',
|
'cc': 'Controlador de Drones de Recogida',
|
||||||
'compare': 'Comparar',
|
'compare': 'Comparar',
|
||||||
|
|||||||
@@ -14,20 +14,315 @@ export const formats = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const terms = {
|
export const terms = {
|
||||||
// Phrases
|
PHRASE_ALT_ALL: 'Alt + Нажатие для заполнения всех слотов',
|
||||||
PHRASE_BACKUP_DESC: 'Сохраните все данные перед переносом в другой браузер или устройство', // Backup of all Coriolis data to save or transfer to another browser/device
|
PHRASE_BACKUP_DESC: 'Сохраните все данные перед переносом в другой браузер или устройство',
|
||||||
PHRASE_CONFIRMATION: 'Вы уверены?', // Are You Sure?
|
PHRASE_CONFIRMATION: 'Вы уверены?',
|
||||||
PHRASE_EXPORT_DESC: 'Детальный JSON-экспорт вашей сборки для использования в других местах и инструментах', // A detailed JSON export of your build for use in other sites and tools
|
PHRASE_EXPORT_DESC: 'Детальный JSON-экспорт вашей сборки для использования в других местах и инструментах',
|
||||||
PHRASE_FASTEST_RANGE: 'Последовательные прыжки максимальной дальности', // Consecutive max range jumps
|
PHRASE_FASTEST_RANGE: 'Последовательные прыжки максимальной дальности',
|
||||||
PHRASE_IMPORT: 'Для импорта вставьте код в эту форму', // Paste JSON or import here
|
PHRASE_IMPORT: 'Для импорта вставьте код в эту форму',
|
||||||
PHRASE_LADEN: 'Масса корабля с учётом топлива и грузов', // Ship Mass + Fuel + Cargo
|
PHRASE_LADEN: 'Масса корабля с учётом топлива и грузов',
|
||||||
PHRASE_NO_BUILDS: 'Нечего сравнивать', // No builds added to comparison!
|
PHRASE_NO_BUILDS: 'Нечего сравнивать',
|
||||||
PHRASE_NO_RETROCH: 'нет ранних версий сборки\\конфигурации', // No Retrofitting changes
|
PHRASE_NO_RETROCH: 'Нет ранних версий сборки',
|
||||||
PHRASE_SELECT_BUILDS: 'Выберите конфигурацию для сравнения', // Select Builds to Compare
|
PHRASE_SELECT_BUILDS: 'Выберите конфигурацию для сравнения',
|
||||||
PHRASE_SG_RECHARGE: 'восстановление с 60% до 100% объема щита', // Time from 50% to 100% Charge
|
PHRASE_SG_RECHARGE: 'Восстановление с 50% до 100% объема щита, учитывая полный аккумулятор СИС в начале',
|
||||||
PHRASE_SG_RECOVER: 'восстановление [до 60%] после снятия щита', // Recovery (to 50%) after collapse
|
PHRASE_SG_RECOVER: 'Восстановление с 0% до 50% объема щита, учитывая полный аккумулятор СИС в начале',
|
||||||
PHRASE_UNLADEN: 'Масса корабля без учета топлива и грузов', // Ship Mass excluding Fuel and Cargo
|
PHRASE_UNLADEN: 'Масса корабля без учета топлива и грузов',
|
||||||
PHRASE_UPDATE_RDY: 'Доступно обновление. Нажмите для обновления.', // Update Available! Click to Refresh
|
PHRASE_UPDATE_RDY: 'Доступна новая версия. Нажмите для обновления.',
|
||||||
|
PHRASE_ENGAGEMENT_RANGE: 'Дистанция между кораблём и целью',
|
||||||
|
PHRASE_SELECT_BLUEPRINT: 'Нажмите чтобы выбрать чертёж',
|
||||||
|
PHRASE_BLUEPRINT_WORST: 'Худшие основные значения для чертежа',
|
||||||
|
PHRASE_BLUEPRINT_RANDOM: 'Случайный выбор между худшими и лучшими значениями для этого чертежа',
|
||||||
|
PHRASE_BLUEPRINT_BEST: 'Лучшие основные значения для чертежа',
|
||||||
|
PHRASE_BLUEPRINT_EXTREME: 'Лучшие положительные и худшие отрицательные основные значения для чертежа',
|
||||||
|
PHRASE_BLUEPRINT_RESET: 'Убрать все изменения и чертёж',
|
||||||
|
PHRASE_SELECT_SPECIAL: 'Нажмите чтобы выбрать экспериментальный эффект',
|
||||||
|
PHRASE_NO_SPECIAL: 'Без экспериментального эффекта',
|
||||||
|
PHRASE_SHOPPING_LIST: 'Станции что продают эту сборку',
|
||||||
|
PHRASE_REFIT_SHOPPING_LIST: 'Станции что продают необходимые модули',
|
||||||
|
PHRASE_TOTAL_EFFECTIVE_SHIELD: 'Общий урон что может быть нанесён в каждым типе, если используются все щитонакопители',
|
||||||
|
PHRASE_TIME_TO_LOSE_SHIELDS: 'Щиты продержатся',
|
||||||
|
PHRASE_TIME_TO_RECOVER_SHIELDS: 'Щиты восстановятся за',
|
||||||
|
PHRASE_TIME_TO_RECHARGE_SHIELDS: 'Щиты будут заряжены за',
|
||||||
|
PHRASE_SHIELD_SOURCES: 'Подробности энергии щита',
|
||||||
|
PHRASE_EFFECTIVE_SHIELD: 'Эффективная сила щита против разных типов урона',
|
||||||
|
PHRASE_ARMOUR_SOURCES: 'Подробности состава брони',
|
||||||
|
PHRASE_EFFECTIVE_ARMOUR: 'Эффективная сила брони против разных типов урона',
|
||||||
|
PHRASE_DAMAGE_TAKEN: '% общих повреждений полученных в разных типах урона',
|
||||||
|
PHRASE_TIME_TO_LOSE_ARMOUR: 'Броня продержится',
|
||||||
|
PHRASE_MODULE_PROTECTION_EXTERNAL: 'Защита гнёзд',
|
||||||
|
PHRASE_MODULE_PROTECTION_INTERNAL: 'Защита всех остальных модулей',
|
||||||
|
PHRASE_SHIELD_DAMAGE: 'Подробности источников поддерживаемого ДПС против щитов',
|
||||||
|
PHRASE_ARMOUR_DAMAGE: 'Подробности источников поддерживаемого ДПС против брони',
|
||||||
|
|
||||||
|
PHRASE_TIME_TO_REMOVE_SHIELDS: 'Снимет щиты за',
|
||||||
|
TT_TIME_TO_REMOVE_SHIELDS: 'Непрерывным огнём из всех орудий',
|
||||||
|
PHRASE_TIME_TO_REMOVE_ARMOUR: 'Снимет броню за',
|
||||||
|
TT_TIME_TO_REMOVE_ARMOUR: 'Непрерывным огнём из всех орудий',
|
||||||
|
PHRASE_TIME_TO_DRAIN_WEP: 'Опустошит ОРУЖ за',
|
||||||
|
TT_TIME_TO_DRAIN_WEP: 'Время за которое опустошится аккумулятор ОРУЖ при стрельбе из всех орудий',
|
||||||
|
TT_TIME_TO_LOSE_SHIELDS: 'Против поддерживаемой стрельбы из всех орудий противника',
|
||||||
|
TT_TIME_TO_LOSE_ARMOUR: 'Против поддерживаемой стрельбы из всех орудий противника',
|
||||||
|
TT_MODULE_ARMOUR: 'Броня защищаюшае модули от урона',
|
||||||
|
TT_MODULE_PROTECTION_EXTERNAL: 'Процент урона перенаправленного от гнёзд на наборы для усиления модулей',
|
||||||
|
TT_MODULE_PROTECTION_INTERNAL: 'Процент урона перенаправленного от модулей вне гнёзд на наборы для усиления модулей',
|
||||||
|
|
||||||
|
TT_EFFECTIVE_SDPS_SHIELDS: 'Реальный поддерживаемый ДПС пока аккумулятор ОРУЖ не пуст',
|
||||||
|
TT_EFFECTIVENESS_SHIELDS: 'Эффективность в сравнении с попаданием по цели с 0-сопротивляемостью без пунктов в СИС на 0 метрах',
|
||||||
|
TT_EFFECTIVE_SDPS_ARMOUR: 'Реальный поддерживаемый ДПС пока аккумулятор ОРУЖ не пуст',
|
||||||
|
TT_EFFECTIVENESS_ARMOUR: 'Эффективность в сравнении с попаданием по цели с 0-сопротивляемостью на 0 метрах',
|
||||||
|
|
||||||
|
PHRASE_EFFECTIVE_SDPS_SHIELDS: 'ПДПС против щитов',
|
||||||
|
PHRASE_EFFECTIVE_SDPS_ARMOUR: 'ПДПС против брони',
|
||||||
|
|
||||||
|
TT_SUMMARY_SPEED: 'С полным топливным баком и 4 пунктами в ДВИ',
|
||||||
|
TT_SUMMARY_SPEED_NONFUNCTIONAL: 'маневровые двигатели выключены или превышена максимальная масса с топливом и грузом',
|
||||||
|
TT_SUMMARY_BOOST: 'С полным топливным баком и 4 пунктами в ДВИ',
|
||||||
|
TT_SUMMARY_BOOST_NONFUNCTIONAL: 'Распределитель питания не может обеспечить достаточно энергии для форсажа',
|
||||||
|
TT_SUMMARY_SHIELDS: 'Чистая сила щита, включая усилители',
|
||||||
|
TT_SUMMARY_SHIELDS_NONFUNCTIONAL: 'Шитогенератор отсутствует или выключен',
|
||||||
|
TT_SUMMARY_INTEGRITY: 'Целостность корабля, включая переборки и наборы для усиления корпуса',
|
||||||
|
TT_SUMMARY_HULL_MASS: 'Масса корпуса без каких-либо модулей',
|
||||||
|
TT_SUMMARY_UNLADEN_MASS: 'Масса корпуса и модулей без топлива и груза',
|
||||||
|
TT_SUMMARY_LADEN_MASS: 'Масса корпуса и модулей с топливом и грузом',
|
||||||
|
TT_SUMMARY_DPS: 'Урон в секунду при стрельбе из всех орудий',
|
||||||
|
TT_SUMMARY_EPS: 'Расход аккумулятора ОРУЖ в секунду при стрельбе из всех орудий',
|
||||||
|
TT_SUMMARY_TTD: 'Время расхода аккумулятора ОРУЖ при стрельбе из всех орудий и с 4 пунктами в ОРУЖ',
|
||||||
|
TT_SUMMARY_MAX_SINGLE_JUMP: 'Самый дальний возможный прыжок без груза и с топливом достаточным только на сам прыжок',
|
||||||
|
TT_SUMMARY_UNLADEN_SINGLE_JUMP: 'Самый дальний возможный прыжок без груза и с полным топливным баком',
|
||||||
|
TT_SUMMARY_LADEN_SINGLE_JUMP: 'Самый дальний возможный прыжок с полным грузовым отсеком и с полным топливным баком',
|
||||||
|
TT_SUMMARY_UNLADEN_TOTAL_JUMP: 'Самая дальняя общая дистанция без груза, с полным топливным баком и при прыжках на максимальное расстояние',
|
||||||
|
TT_SUMMARY_LADEN_TOTAL_JUMP: 'Самая дальняя общая дистанция с полным грузовым отсеком, с полным топливным баком и при прыжках на максимальное расстояние',
|
||||||
|
|
||||||
|
HELP_MODIFICATIONS_MENU: 'Ткните на номер чтобы ввести новое значение, или потяните вдоль полосы для малых изменений',
|
||||||
|
|
||||||
|
// Other languages fallback to these values
|
||||||
|
// Only Translate to other languages if the name is different in-game
|
||||||
|
am: 'Блок Автом. Полевого Ремонта',
|
||||||
|
bh: 'Переборки',
|
||||||
|
bl: 'Пучковый Лазер',
|
||||||
|
bsg: 'Двухпоточный Щитогенератор',
|
||||||
|
c: 'Орудие',
|
||||||
|
cc: 'Контроллер магнитного снаряда для сбора',
|
||||||
|
ch: 'Разбрасыватель дипольных отражателей',
|
||||||
|
cr: 'Грузовой стеллаж',
|
||||||
|
cs: 'Сканер содержимого',
|
||||||
|
dc: 'Стыковочный компьютер',
|
||||||
|
ec: 'Электр. противодействие',
|
||||||
|
fc: 'Залповое орудие',
|
||||||
|
fh: 'Ангар для истребителя',
|
||||||
|
fi: 'FSD-перехватчик',
|
||||||
|
fs: 'Топливозаборник',
|
||||||
|
fsd: 'Рамочно Сместительный двигатель',
|
||||||
|
ft: 'Топливный бак',
|
||||||
|
fx: 'Контроллер магнитного снаряда для топлива',
|
||||||
|
hb: 'Контроллер магнитного снаряда для взлома трюма',
|
||||||
|
hr: 'Набор для усиления корпуса',
|
||||||
|
hs: 'Теплоотводная катапульта',
|
||||||
|
kw: 'Сканер преступников',
|
||||||
|
ls: 'Система жизнеобеспечения',
|
||||||
|
mc: 'Многоствольное орудие',
|
||||||
|
ml: 'Проходочный лазер',
|
||||||
|
mr: 'Ракетный лоток',
|
||||||
|
mrp: 'Набор для усиления модуля',
|
||||||
|
nl: 'Мины',
|
||||||
|
pa: 'Ускоритель плазмы',
|
||||||
|
pas: 'Комплект для сближения с планетой',
|
||||||
|
pc: 'Контроллер магнитного снаряда для геологоразведки',
|
||||||
|
pce: 'Каюта пассажира эконом-класса',
|
||||||
|
pci: 'Каюта пассажира бизнес-класса',
|
||||||
|
pcm: 'Каюта пассажира первого класса',
|
||||||
|
pcq: 'Каюта пассажира класса люкс',
|
||||||
|
pd: 'Распределитель питания',
|
||||||
|
pl: 'Ипмульсный лазер',
|
||||||
|
po: 'Точечная оборона',
|
||||||
|
pp: 'Силовая установка',
|
||||||
|
psg: 'Призматический щитогенератор',
|
||||||
|
pv: 'Гараж для планетарного транспорта',
|
||||||
|
rf: 'Устройство переработки',
|
||||||
|
rg: 'Электромагнитная пушка',
|
||||||
|
s: 'Сенсоры',
|
||||||
|
sb: 'Усилитель щита',
|
||||||
|
sc: 'Сканер обнаружения',
|
||||||
|
scb: 'Щитонакопитель',
|
||||||
|
sg: 'Щитогенератор',
|
||||||
|
ss: 'Сканер Поверхностей',
|
||||||
|
t: 'Маневровые двигатели',
|
||||||
|
tp: 'Торпедная стойка',
|
||||||
|
ul: 'Пульсирующие лазеры',
|
||||||
|
ws: 'Сканер следа FSD',
|
||||||
|
|
||||||
|
// Items on the outfitting page
|
||||||
|
// Notification of restricted slot
|
||||||
|
emptyrestricted: 'пусто (ограниченно)',
|
||||||
|
'damage dealt to': 'Урон нанесён',
|
||||||
|
'damage received from': 'Урон получен от',
|
||||||
|
'against shields': 'Против шитов',
|
||||||
|
'against hull': 'Против корпуса',
|
||||||
|
'total effective shield': 'Общие эффективные щиты',
|
||||||
|
|
||||||
|
// 'ammo' was overloaded for outfitting page and modul info, so changed to ammunition for outfitting page
|
||||||
|
ammunition: 'Припасы',
|
||||||
|
|
||||||
|
// Unit for seconds
|
||||||
|
secs: 'с',
|
||||||
|
|
||||||
|
rebuildsperbay: 'Построек за полосу',
|
||||||
|
|
||||||
|
// Blueprint rolls
|
||||||
|
worst: 'Худшее',
|
||||||
|
average: 'Среднее',
|
||||||
|
random: 'Случайное',
|
||||||
|
best: 'Лучшее',
|
||||||
|
extreme: 'Экстремальное',
|
||||||
|
reset: 'Обнулить',
|
||||||
|
|
||||||
|
// Weapon, offence, defence and movement
|
||||||
|
dpe: 'Урон на МДж энергии',
|
||||||
|
dps: 'Урон в Секунду',
|
||||||
|
sdps: 'Поддерживаемый урон в секунду',
|
||||||
|
dpssdps: 'Урон в секунду (поддерживаемый урон в секунду)',
|
||||||
|
eps: 'Энергия в секунду',
|
||||||
|
epsseps: 'Энергия в секунду (поддерживаемая энергия в секунду)',
|
||||||
|
hps: 'Нагрев в секунду',
|
||||||
|
hpsshps: 'Heat per second (sustained heat per second)',
|
||||||
|
'damage by': 'Урон',
|
||||||
|
'damage from': 'Урон от',
|
||||||
|
'shield cells': 'Щитонакопители',
|
||||||
|
'recovery': 'Восстановление',
|
||||||
|
'recharge': 'Перезарядка',
|
||||||
|
'engine pips': 'Пункты в двигателе',
|
||||||
|
'4b': '4 пункта и Форсаж',
|
||||||
|
'speed': 'Скорость',
|
||||||
|
'pitch': 'Тангаж',
|
||||||
|
'roll': 'Крен',
|
||||||
|
'yaw': 'Рыскание',
|
||||||
|
'internal protection': 'Внутренняя защита',
|
||||||
|
'external protection': 'Внешняя защита',
|
||||||
|
'engagement range': 'Боевое расстояние',
|
||||||
|
'total': 'Общее',
|
||||||
|
|
||||||
|
// Modifications
|
||||||
|
ammo: 'Макс. боекомплект',
|
||||||
|
boot: 'Время загрузки',
|
||||||
|
brokenregen: 'Скорость восстановления при пробое',
|
||||||
|
burst: 'Длина очереди',
|
||||||
|
burstrof: 'Скорострельность очереди',
|
||||||
|
clip: 'Боекомплект',
|
||||||
|
damage: 'Урон',
|
||||||
|
distdraw: 'Тяга распределителя',
|
||||||
|
duration: 'Продолжительность',
|
||||||
|
eff: 'Эффективность',
|
||||||
|
engcap: 'Ресурс двигателей',
|
||||||
|
engrate: 'Перезарядка двигателей',
|
||||||
|
explres: 'Сопротивление взрывам',
|
||||||
|
facinglimit: 'Ограничение по направлению',
|
||||||
|
hullboost: 'Увеличение корпуса',
|
||||||
|
hullreinforcement: 'Укрепление корпуса',
|
||||||
|
integrity: 'Целостность',
|
||||||
|
jitter: 'Дрожание',
|
||||||
|
kinres: 'Сопротивление китетическому урону',
|
||||||
|
maxfuel: 'Макс. топлива на прыжок',
|
||||||
|
mass: 'Масса',
|
||||||
|
optmass: 'Оптимизированная масса',
|
||||||
|
optmul: 'Оптимальный усилитель',
|
||||||
|
pgen: 'Мощность',
|
||||||
|
piercing: 'Бронебойность',
|
||||||
|
power: 'Энергопотребление',
|
||||||
|
protection: 'Защита от повреждений',
|
||||||
|
range: 'Дальность',
|
||||||
|
ranget: 'Дальность', // Range in time (for FSD interdictor)
|
||||||
|
regen: 'Скорость восстановления',
|
||||||
|
reload: 'Время перезарядки',
|
||||||
|
rof: 'Скорострельность',
|
||||||
|
angle: 'Угол сканера',
|
||||||
|
scanrate: 'Скорость сканера',
|
||||||
|
scantime: 'Время сканирования',
|
||||||
|
shield: 'Щит',
|
||||||
|
shieldboost: 'Усиление щитов',
|
||||||
|
shieldreinforcement: 'Усилитель щита',
|
||||||
|
shotspeed: 'Скорость выстрела',
|
||||||
|
spinup: 'Время раскрутки',
|
||||||
|
syscap: 'Ресурс систем',
|
||||||
|
sysrate: 'Перезарядка систем',
|
||||||
|
thermload: 'Тепловая нагрузка',
|
||||||
|
thermres: 'Сопротивление термическому урону',
|
||||||
|
wepcap: 'Орудийный ресурс',
|
||||||
|
weprate: 'Перезарядка оружия',
|
||||||
|
|
||||||
|
// Shield generators use a different terminology
|
||||||
|
minmass_sg: 'Мин. масса корпуса',
|
||||||
|
optmass_sg: 'Опт. масса корпуса',
|
||||||
|
maxmass_sg: 'Макс. масса корпуса',
|
||||||
|
minmul_sg: 'Минимальная прочность',
|
||||||
|
optmul_sg: 'Оптимальная прочность',
|
||||||
|
maxmul_sg: 'Максимальная прочность',
|
||||||
|
minmass_psg: 'Мин. масса корпуса',
|
||||||
|
optmass_psg: 'Опт. масса корпуса',
|
||||||
|
maxmass_psg: 'Макс. масса корпуса',
|
||||||
|
minmul_psg: 'Минимальная прочность',
|
||||||
|
optmul_psg: 'Оптимальная прочность',
|
||||||
|
maxmul_psg: 'Максимальная прочность',
|
||||||
|
minmass_bsg: 'Мин. масса корпуса',
|
||||||
|
optmass_bsg: 'Опт. масса корпуса',
|
||||||
|
maxmass_bsg: 'Макс. масса корпуса',
|
||||||
|
minmul_bsg: 'Минимальная прочность',
|
||||||
|
optmul_bsg: 'Оптимальная прочность',
|
||||||
|
maxmul_bsg: 'Максимальная прочность',
|
||||||
|
|
||||||
|
range_s: 'Типовой диапозон выброса',
|
||||||
|
|
||||||
|
// Damage types
|
||||||
|
absolute: 'Общий',
|
||||||
|
explosive: 'Взрывч.',
|
||||||
|
kinetic: 'Механич.',
|
||||||
|
thermal: 'Тепл.',
|
||||||
|
|
||||||
|
// Shield sources
|
||||||
|
generator: 'Генератор',
|
||||||
|
boosters: 'Усилители',
|
||||||
|
cells: 'Накопители',
|
||||||
|
|
||||||
|
// Armour sources
|
||||||
|
bulkheads: 'Переборки',
|
||||||
|
reinforcement: 'Усилители',
|
||||||
|
|
||||||
|
// Panel headings and subheadings
|
||||||
|
'power and costs': 'Энергия и стоимость',
|
||||||
|
'costs': 'Цены',
|
||||||
|
'retrofit costs': 'Стоимость модификации',
|
||||||
|
'reload costs': 'Стоимость перезарядки',
|
||||||
|
'profiles': 'Графики',
|
||||||
|
'engine profile': 'Двигатели',
|
||||||
|
'fsd profile': 'FSD',
|
||||||
|
'movement profile': 'Движение',
|
||||||
|
'damage to opponent\'s shields': 'Урон щиту противника',
|
||||||
|
'damage to opponent\'s hull': 'Урон корпусу противника',
|
||||||
|
'offence': 'Нападение',
|
||||||
|
'defence': 'Оборона',
|
||||||
|
'shield metrics': 'Данные щита',
|
||||||
|
'raw shield strength': 'Чистая мощность щита',
|
||||||
|
'shield sources': 'Ресурсы щита',
|
||||||
|
'damage taken': 'Полученный урон',
|
||||||
|
'effective shield': 'Эффективный щит',
|
||||||
|
'armour metrics': 'Данные брони',
|
||||||
|
'raw armour strength': 'Чистая мощность брони',
|
||||||
|
'armour sources': 'Ресурсы брони',
|
||||||
|
'raw module armour': 'Чистая броня модулей',
|
||||||
|
'effective armour': 'Эффективная броня',
|
||||||
|
'offence metrics': 'Данные нападения',
|
||||||
|
'defence metrics': 'Данные обороны',
|
||||||
|
// Misc items
|
||||||
|
'fuel carried': 'Топливо на борту',
|
||||||
|
'cargo carried': 'Груз на борту',
|
||||||
|
'ship control': 'Управление кораблём',
|
||||||
|
'opponent': 'Противник',
|
||||||
|
'opponent\'s shields': 'Щит противника',
|
||||||
|
'opponent\'s armour': 'Броня противника',
|
||||||
|
'shield damage sources': 'источники урона по щиту',
|
||||||
|
'armour damage sources': 'источники урона по броне',
|
||||||
|
'never': 'Никогда',
|
||||||
|
'stock': 'базовый',
|
||||||
|
'boost': 'Форсаж',
|
||||||
|
|
||||||
// Units / Metrics
|
// Units / Metrics
|
||||||
'/s': '/с', // Per second
|
'/s': '/с', // Per second
|
||||||
@@ -105,7 +400,7 @@ export const terms = {
|
|||||||
DPS: 'УВС', // Damage per second abbreviation
|
DPS: 'УВС', // Damage per second abbreviation
|
||||||
efficiency: 'Эффективность', // Power Plant efficiency
|
efficiency: 'Эффективность', // Power Plant efficiency
|
||||||
empty: 'пусто',
|
empty: 'пусто',
|
||||||
ENG: 'ДВГ', // Abbreviation - Engine recharge rate for power distributor
|
ENG: 'ДВИ', // Abbreviation - Engine recharge rate for power distributor
|
||||||
export: 'Экспорт',
|
export: 'Экспорт',
|
||||||
forum: 'Форум',
|
forum: 'Форум',
|
||||||
fuel: 'Топливо',
|
fuel: 'Топливо',
|
||||||
@@ -153,12 +448,12 @@ export const terms = {
|
|||||||
speed: 'скорость',
|
speed: 'скорость',
|
||||||
standard: 'Стандартный', // Standard / Common modules (FSD, power plant, life support, etc)
|
standard: 'Стандартный', // Standard / Common modules (FSD, power plant, life support, etc)
|
||||||
Stock: 'Стандартная комплектация', // Thermal-load abbreviation
|
Stock: 'Стандартная комплектация', // Thermal-load abbreviation
|
||||||
SYS: 'СИСТЕМЫ', // Abbreviation - System recharge rate for power distributor
|
SYS: 'СИС', // Abbreviation - System recharge rate for power distributor
|
||||||
time: 'Время', // time it takes to complete something
|
time: 'Время', // time it takes to complete something
|
||||||
total: 'Всего',
|
total: 'Всего',
|
||||||
type: 'Тип',
|
type: 'Тип',
|
||||||
unladen: 'Пустой', // No cargo or fuel
|
unladen: 'Пустой', // No cargo or fuel
|
||||||
URL: 'Ссылка', // Link, Uniform Resource Locator
|
URL: 'Ссылка', // Link, Uniform Resource Locator
|
||||||
WEP: 'ОРУДИЯ', // Abbreviation - Weapon recharge rate for power distributor
|
WEP: 'ОРУЖ', // Abbreviation - Weapon recharge rate for power distributor
|
||||||
yes: 'Да'
|
yes: 'Да'
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -446,7 +446,10 @@ export default class OutfittingPage extends Page {
|
|||||||
fuel = ship.fuelCapacity;
|
fuel = ship.fuelCapacity;
|
||||||
}
|
}
|
||||||
const code = this._fullCode(ship, fuel, cargo);
|
const code = this._fullCode(ship, fuel, cargo);
|
||||||
this.setState({ code, cargo, fuel }, () => this._updateRoute(shipId, buildName, code));
|
// Only update the state if this really has been updated
|
||||||
|
if (this.state.code != code || this.state.cargo != cargo || this.state.fuel != fuel) {
|
||||||
|
this.setState({ code, cargo, fuel }, () => this._updateRoute(shipId, buildName, code));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -551,7 +554,7 @@ export default class OutfittingPage extends Page {
|
|||||||
const internalSlotMarker = `${ship.name}${_iStr}${_pStr}${_mStr}`;
|
const internalSlotMarker = `${ship.name}${_iStr}${_pStr}${_mStr}`;
|
||||||
const hardpointsSlotMarker = `${ship.name}${_hStr}${_pStr}${_mStr}`;
|
const hardpointsSlotMarker = `${ship.name}${_hStr}${_pStr}${_mStr}`;
|
||||||
const boostMarker = `${ship.canBoost(cargo, fuel)}`;
|
const boostMarker = `${ship.canBoost(cargo, fuel)}`;
|
||||||
const shipSummaryMarker = `${ship.name}${_sStr}${_iStr}${_hStr}${_pStr}${_mStr}${ship.ladenMass}${ship.cargo}${ship.fuel}`;
|
const shipSummaryMarker = `${ship.name}${_sStr}${_iStr}${_hStr}${_pStr}${_mStr}${ship.ladenMass}${cargo}${fuel}`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div id='outfit' className={'page'} style={{ fontSize: (sizeRatio * 0.9) + 'em' }}>
|
<div id='outfit' className={'page'} style={{ fontSize: (sizeRatio * 0.9) + 'em' }}>
|
||||||
@@ -588,10 +591,10 @@ export default class OutfittingPage extends Page {
|
|||||||
|
|
||||||
{/* Main tables */}
|
{/* Main tables */}
|
||||||
<ShipSummaryTable ship={ship} fuel={fuel} cargo={cargo} marker={shipSummaryMarker} />
|
<ShipSummaryTable ship={ship} fuel={fuel} cargo={cargo} marker={shipSummaryMarker} />
|
||||||
<StandardSlotSection ship={ship} fuel={fuel} cargo={cargo} code={standardSlotMarker} onChange={shipUpdated} currentMenu={menu} />
|
<StandardSlotSection ship={ship} fuel={fuel} cargo={cargo} code={standardSlotMarker} onChange={shipUpdated} onCargoChange={this._cargoUpdated} onFuelChange={this._fuelUpdated} currentMenu={menu} />
|
||||||
<InternalSlotSection ship={ship} code={internalSlotMarker} onChange={shipUpdated} currentMenu={menu} />
|
<InternalSlotSection ship={ship} code={internalSlotMarker} onChange={shipUpdated} onCargoChange={this._cargoUpdated} onFuelChange={this._fuelUpdated} currentMenu={menu} />
|
||||||
<HardpointSlotSection ship={ship} code={hardpointsSlotMarker} onChange={shipUpdated} currentMenu={menu} />
|
<HardpointSlotSection ship={ship} code={hardpointsSlotMarker} onChange={shipUpdated} onCargoChange={this._cargoUpdated} onFuelChange={this._fuelUpdated} currentMenu={menu} />
|
||||||
<UtilitySlotSection ship={ship} code={hardpointsSlotMarker} onChange={shipUpdated} currentMenu={menu} />
|
<UtilitySlotSection ship={ship} code={hardpointsSlotMarker} onChange={shipUpdated} onCargoChange={this._cargoUpdated} onFuelChange={this._fuelUpdated} currentMenu={menu} />
|
||||||
|
|
||||||
{/* Control of ship and opponent */}
|
{/* Control of ship and opponent */}
|
||||||
<div className='group quarter'>
|
<div className='group quarter'>
|
||||||
|
|||||||
@@ -693,7 +693,7 @@ export default class Module {
|
|||||||
* @return {string} the shot speed for this module
|
* @return {string} the shot speed for this module
|
||||||
*/
|
*/
|
||||||
getShotSpeed() {
|
getShotSpeed() {
|
||||||
if (this.blueprint && (this.blueprint.name === 'Focused' || this.blueprintname === 'Long Range')) {
|
if (this.blueprint && (this.blueprint.name === 'Focused' || this.blueprint.name === 'Long range')) {
|
||||||
// If the modification is focused or long range then the shot speed
|
// If the modification is focused or long range then the shot speed
|
||||||
// uses the range modifier
|
// uses the range modifier
|
||||||
const rangemod = this.getModValue('range') / 10000;
|
const rangemod = this.getModValue('range') / 10000;
|
||||||
|
|||||||
@@ -132,6 +132,20 @@ export default class ModuleSet {
|
|||||||
return new Module({ template: pd });
|
return new Module({ template: pd });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Find the power distributor that matches the requirements
|
||||||
|
* @param {Object} requirements The requirements to be met (currently only support 'weprate')
|
||||||
|
* @return {Object} Power distributor
|
||||||
|
*/
|
||||||
|
matchingPowerDist(requirements) {
|
||||||
|
let pd = this.standard[4][0];
|
||||||
|
for (let p of this.standard[4]) {
|
||||||
|
if (p.weprate >= requirements.weprate || p.weprate >= pd.weprate) {
|
||||||
|
pd = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Module({ template: pd });
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the lightest Thruster that can handle the specified tonnage
|
* Finds the lightest Thruster that can handle the specified tonnage
|
||||||
* @param {number} ladenMass Ship laden mass (mass + cargo + fuel)
|
* @param {number} ladenMass Ship laden mass (mass + cargo + fuel)
|
||||||
|
|||||||
@@ -252,24 +252,6 @@ export function miner(ship, shielded) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Collector limpet controller if there are enough internals left
|
|
||||||
let collectorLimpetsRequired = Math.max(ship.internal.filter(a => (!a.eligible) || a.eligible.cr).length - 6, 0);
|
|
||||||
if (collectorLimpetsRequired > 0) {
|
|
||||||
const collectorOrder = [1, 2, 3, 4, 5, 6, 7, 8];
|
|
||||||
const collectorInternals = ship.internal.filter(a => usedSlots.indexOf(a) == -1)
|
|
||||||
.filter(a => (!a.eligible) || a.eligible.cc)
|
|
||||||
.sort((a,b) => collectorOrder.indexOf(a.maxClass) - collectorOrder.indexOf(b.maxClass));
|
|
||||||
for (let i = 0; i < collectorInternals.length && collectorLimpetsRequired > 0; i++) {
|
|
||||||
if (canMount(ship, collectorInternals[i], 'cc')) {
|
|
||||||
// Collector only has odd classes
|
|
||||||
const collectorClass = collectorInternals[i].maxClass % 2 === 0 ? collectorInternals[i].maxClass - 1 : collectorInternals[i].maxClass;
|
|
||||||
ship.use(collectorInternals[i], ModuleUtils.findInternal('cc', collectorClass, 'A'));
|
|
||||||
usedSlots.push(collectorInternals[i]);
|
|
||||||
collectorLimpetsRequired -= collectorInternals[i].m.maximum;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dual mining lasers of highest possible class; remove anything else
|
// Dual mining lasers of highest possible class; remove anything else
|
||||||
const miningLaserOrder = [2, 3, 4, 1, 0];
|
const miningLaserOrder = [2, 3, 4, 1, 0];
|
||||||
const miningLaserHardpoints = ship.hardpoints.concat().sort(function(a,b) {
|
const miningLaserHardpoints = ship.hardpoints.concat().sort(function(a,b) {
|
||||||
@@ -284,6 +266,44 @@ export function miner(ship, shielded) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Number of collector limpets required to be active is a function of the size of the ship and the power of the lasers
|
||||||
|
const miningLaserDps = ship.hardpoints.filter(h => h.m != null)
|
||||||
|
.reduce(function(a, b) {
|
||||||
|
return a + b.m.getDps();
|
||||||
|
}, 0);
|
||||||
|
// Find out how many internal slots we have, and their potential cargo size
|
||||||
|
const potentialCargo = ship.internal.filter(a => usedSlots.indexOf(a) == -1)
|
||||||
|
.filter(a => (!a.eligible) || a.eligible.cr)
|
||||||
|
.map(b => Math.pow(2, b.maxClass));
|
||||||
|
// One collector for each 1.25 DPS, multiply by 1.25 for medium ships and 1.5 for large ships as they have further to travel
|
||||||
|
// 0 if we only have 1 cargo slot, otherwise minium of 1 and maximum of 6 (excluding size modifier)
|
||||||
|
const sizeModifier = ship.class == 2 ? 1.2 : ship.class == 3 ? 1.5 : 1;
|
||||||
|
let collectorLimpetsRequired = potentialCargo.length == 1 ? 0 : Math.ceil(sizeModifier * Math.min(6, Math.floor(miningLaserDps / 1.25)));
|
||||||
|
|
||||||
|
if (collectorLimpetsRequired > 0) {
|
||||||
|
const collectorOrder = [1, 2, 3, 4, 5, 6, 7, 8];
|
||||||
|
const collectorInternals = ship.internal.filter(a => usedSlots.indexOf(a) == -1)
|
||||||
|
.filter(a => (!a.eligible) || a.eligible.cc)
|
||||||
|
.sort((a,b) => collectorOrder.indexOf(a.maxClass) - collectorOrder.indexOf(b.maxClass));
|
||||||
|
// Always keep at least 2 slots free for cargo racks (1 for shielded)
|
||||||
|
for (let i = 0; i < collectorInternals.length - (shielded ? 1 : 2) && collectorLimpetsRequired > 0; i++) {
|
||||||
|
if (canMount(ship, collectorInternals[i], 'cc')) {
|
||||||
|
// Collector only has odd classes
|
||||||
|
const collectorClass = collectorInternals[i].maxClass % 2 === 0 ? collectorInternals[i].maxClass - 1 : collectorInternals[i].maxClass;
|
||||||
|
ship.use(collectorInternals[i], ModuleUtils.findInternal('cc', collectorClass, 'D'));
|
||||||
|
usedSlots.push(collectorInternals[i]);
|
||||||
|
collectorLimpetsRequired -= collectorInternals[i].m.maximum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Power distributor to power the mining lasers indefinitely
|
||||||
|
const wepRateRequired = ship.hardpoints.filter(h => h.m != null)
|
||||||
|
.reduce(function(a, b) {
|
||||||
|
return a + b.m.getEps();
|
||||||
|
}, 0);
|
||||||
|
standardOpts.pd = ship.getAvailableModules().matchingPowerDist({ weprate: wepRateRequired }).id;
|
||||||
|
|
||||||
// Fill the empty internals with cargo racks
|
// Fill the empty internals with cargo racks
|
||||||
for (let i = ship.internal.length; i--;) {
|
for (let i = ship.internal.length; i--;) {
|
||||||
let slot = ship.internal[i];
|
let slot = ship.internal[i];
|
||||||
|
|||||||
@@ -36,6 +36,23 @@
|
|||||||
</script>
|
</script>
|
||||||
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
<!-- Piwik -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
var _paq = _paq || [];
|
||||||
|
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||||||
|
_paq.push(["setCookieDomain", "*.coriolis.edcd.io"]);
|
||||||
|
_paq.push(['trackPageView']);
|
||||||
|
_paq.push(['enableLinkTracking']);
|
||||||
|
(function() {
|
||||||
|
var u="//stats.isadankme.me/";
|
||||||
|
_paq.push(['setTrackerUrl', u+'piwik.php']);
|
||||||
|
_paq.push(['setSiteId', '4']);
|
||||||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||||
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<!-- End Piwik Code -->
|
||||||
</head>
|
</head>
|
||||||
<body style="background-color:#000;">
|
<body style="background-color:#000;">
|
||||||
<section id="coriolis"></section>
|
<section id="coriolis"></section>
|
||||||
|
|||||||
@@ -60,6 +60,9 @@
|
|||||||
|
|
||||||
.summary {
|
.summary {
|
||||||
stroke: @fg;
|
stroke: @fg;
|
||||||
stroke-width: 10;
|
|
||||||
fill: @fg;
|
fill: @fg;
|
||||||
|
|
||||||
|
svg {
|
||||||
|
stroke-width: 10;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ select {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
line-height:@optionSpacing;
|
line-height:@optionSpacing;
|
||||||
color: @primary-disabled;
|
color: @primary-disabled;
|
||||||
stroke-width: 0.5em;
|
|
||||||
stroke: @primary-disabled;
|
stroke: @primary-disabled;
|
||||||
|
|
||||||
.no-touch &:hover {
|
.no-touch &:hover {
|
||||||
@@ -96,6 +95,10 @@ select {
|
|||||||
color: @primary;
|
color: @primary;
|
||||||
stroke: @primary;
|
stroke: @primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
stroke-width: 0.5em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.lc, .c {
|
.lc, .c {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
border: 1px solid @primary-disabled;
|
border: 1px solid @primary-disabled;
|
||||||
color: @fg;
|
color: @fg;
|
||||||
stroke: @fg;
|
stroke: @fg;
|
||||||
stroke-width: 20;
|
|
||||||
fill: @fg;
|
fill: @fg;
|
||||||
|
|
||||||
.details-container {
|
.details-container {
|
||||||
@@ -57,11 +56,13 @@
|
|||||||
width: 1.2em;
|
width: 1.2em;
|
||||||
color: @primary-disabled;
|
color: @primary-disabled;
|
||||||
stroke: @primary-disabled;
|
stroke: @primary-disabled;
|
||||||
stroke-width: 20;
|
|
||||||
border-right: 1px solid @primary-disabled;
|
border-right: 1px solid @primary-disabled;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding-top: 0.2em;
|
padding-top: 0.2em;
|
||||||
padding-left: 0.05em;
|
padding-left: 0.05em;
|
||||||
|
svg {
|
||||||
|
stroke-width: 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.empty {
|
.empty {
|
||||||
@@ -69,16 +70,17 @@
|
|||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
color: lighten(@primary-bg, 12%);
|
color: lighten(@primary-bg, 12%);
|
||||||
stroke: lighten(@primary-bg, 12%);
|
stroke: lighten(@primary-bg, 12%);
|
||||||
stroke-width: 20;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
letter-spacing: 0.1em;
|
letter-spacing: 0.1em;
|
||||||
line-height: 1.7em;
|
line-height: 1.7em;
|
||||||
|
svg {
|
||||||
|
stroke-width: 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.selected {
|
&.selected {
|
||||||
color: @primary-bg;
|
color: @primary-bg;
|
||||||
stroke: @primary-bg;
|
stroke: @primary-bg;
|
||||||
stroke-width: 20;
|
|
||||||
fill: @primary-bg;
|
fill: @primary-bg;
|
||||||
background-color: @primary;
|
background-color: @primary;
|
||||||
border: 1px solid @primary;
|
border: 1px solid @primary;
|
||||||
@@ -86,13 +88,18 @@
|
|||||||
.sz {
|
.sz {
|
||||||
color: @primary;
|
color: @primary;
|
||||||
stroke: @primary;
|
stroke: @primary;
|
||||||
stroke-width: 20;
|
|
||||||
background-color: @primary-bg;
|
background-color: @primary-bg;
|
||||||
border-right: 1px solid @primary;
|
border-right: 1px solid @primary;
|
||||||
|
svg {
|
||||||
|
stroke-width: 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.details {
|
.details {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
svg {
|
||||||
|
stroke-width: 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.eligible {
|
&.eligible {
|
||||||
@@ -144,4 +151,8 @@
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
stroke-width: 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user