Compare commits

...

33 Commits
1.5.5 ... 1.7.2

Author SHA1 Message Date
Colin McLeod
4c74675edd Bumping version to 1.7.2 2015-09-22 09:27:39 -07:00
Colin McLeod
d43ee25e71 Use full name for Advanced Plasma Accelerator 2015-09-22 09:27:19 -07:00
Colin McLeod
46f00e0bc7 Lint fixes 2015-09-22 09:14:47 -07:00
Colin McLeod
d3cea71e50 Bumping version to 1.7.1 2015-09-22 09:13:43 -07:00
Colin McLeod
0516a6f54d Use calculated boost speed in comparisons. Fixes #91 2015-09-22 09:13:21 -07:00
Colin McLeod
eb8373f8b4 Line chart UI tweaks 2015-09-22 01:43:54 -07:00
Colin McLeod
202bbbd357 Use power icons for power management 2015-09-22 00:43:55 -07:00
Colin McLeod
b9e404c4da Adding italian number format support 2015-09-21 23:44:24 -07:00
Colin McLeod
e16ce83c03 Adding Spanish support 2015-09-21 23:44:05 -07:00
Colin McLeod
83c266d083 Bumping version to 1.7.0 2015-09-21 21:43:56 -07:00
Colin McLeod
349b8f436c Import/export fixture fixes for FSD Interdictor 2015-09-21 21:43:17 -07:00
Colin McLeod
e9a0a01e14 Lint fixes 2015-09-21 21:42:48 -07:00
Colin McLeod
457b8920f2 Partial Italian translation 2015-09-21 21:00:29 -07:00
Colin McLeod
31b63e9a87 en.js formatting 2015-09-21 21:00:17 -07:00
Colin McLeod
8dc3725b47 Chart UI Tweaks 2015-09-21 20:58:13 -07:00
Colin McLeod
e2096ba9f4 Display calculate boost speed 2015-09-21 20:47:59 -07:00
Colin McLeod
231fcbb3bc Calculate top boost speed 2015-09-21 20:47:31 -07:00
Colin McLeod
75c22de166 Use true base boost speeds 2015-09-21 20:45:44 -07:00
Colin McLeod
d196127392 Improve Shield Cell bank readability 2015-09-20 10:56:39 -07:00
Colin McLeod
fb4dc906aa Empty Spanish translations for now 2015-09-20 10:56:18 -07:00
Colin McLeod
9937ba8039 Merge pull request #93 from koreldan/master
added italian language
2015-09-19 22:10:06 -07:00
enrico
d92722f1c2 added italian language 2015-09-20 01:13:07 +02:00
Colin McLeod
69096d7816 Merge pull request #92 from SmokyBird/patch-1
Update fr.js
2015-09-19 14:48:55 -07:00
SmokyBird
2846827959 Update fr.js
Changed a few translations to keep the real ones, coming from the game.
2015-09-19 14:50:53 +02:00
Colin McLeod
67bd56e692 Top speed display and test tweaks 2015-09-17 22:09:30 -07:00
Colin McLeod
95f5e8e5ae Bumping version to 1.6.0 2015-09-17 01:00:38 -07:00
Colin McLeod
eb52a7548c Improve multi series tooltips for line chart 2015-09-17 01:00:10 -07:00
Colin McLeod
b479b61926 Minor bar chart UI tweak 2015-09-17 00:59:29 -07:00
Colin McLeod
726a08b05b Calculate speed based on Thrusters. Closes #16 2015-09-17 00:59:09 -07:00
Colin McLeod
fc2f76c31c Updating ships and thrusters for speed calculation support 2015-09-17 00:57:31 -07:00
Colin McLeod
839e1a5cbd Removing unused icon 2015-09-17 00:55:26 -07:00
Colin McLeod
12beeffae0 Hack to component select. Closes #89 2015-09-14 10:45:06 -07:00
Colin McLeod
83ad7d9f6c Correct price of Federal Gunship 2015-09-07 12:43:52 -07:00
53 changed files with 861 additions and 649 deletions

3
app/icons/no-power.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
<path d="M437.020 74.98c-48.353-48.351-112.64-74.98-181.020-74.98s-132.667 26.629-181.020 74.98c-48.351 48.353-74.98 112.64-74.98 181.020s26.629 132.667 74.98 181.020c48.353 48.351 112.64 74.98 181.020 74.98s132.667-26.629 181.020-74.98c48.351-48.353 74.98-112.64 74.98-181.020s-26.629-132.667-74.98-181.020zM448 256c0 41.407-13.177 79.794-35.556 111.19l-267.633-267.634c31.396-22.379 69.782-35.556 111.189-35.556 105.869 0 192 86.131 192 192zM64 256c0-41.407 13.177-79.793 35.556-111.189l267.635 267.634c-31.397 22.378-69.784 35.555-111.191 35.555-105.869 0-192-86.131-192-192z"></path>
</svg>

After

Width:  |  Height:  |  Size: 697 B

3
app/icons/power.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
<path d="M192 0l-192 256h192l-128 256 448-320h-256l192-192z"></path>
</svg>

After

Width:  |  Height:  |  Size: 178 B

View File

@@ -18,7 +18,6 @@
<meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="180x180" href="/images/logo/apple-touch-icon-precomposed.png"> <link rel="apple-touch-icon-precomposed" sizes="180x180" href="/images/logo/apple-touch-icon-precomposed.png">
<link rel="apple-touch-icon" href="/images/logo/apple-touch-icon.png"> <link rel="apple-touch-icon" href="/images/logo/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="180x180" href="/images/logo/apple-touch-icon-180x180.png">
<!-- iPhone, iPod Touch, portrait --> <!-- iPhone, iPod Touch, portrait -->
<link href="/images/splash/320x460.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image"> <link href="/images/splash/320x460.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
<!-- iPhone, iPod Touch, landscape --> <!-- iPhone, iPod Touch, landscape -->

View File

@@ -42,8 +42,6 @@ function($rootScope, $location, $window, $doc, $state, $translate, localeFormat,
// Global Reference variables // Global Reference variables
$rootScope.insurance = { opts: [{ name: 'standard', pct: 0.05 }, { name: 'alpha', pct: 0.025 }, { name: 'beta', pct: 0.0375 }] }; $rootScope.insurance = { opts: [{ name: 'standard', pct: 0.05 }, { name: 'alpha', pct: 0.025 }, { name: 'beta', pct: 0.0375 }] };
$rootScope.discounts = { opts: Discounts }; $rootScope.discounts = { opts: Discounts };
$rootScope.STATUS = ['', 'disabled', 'off', 'on'];
$rootScope.STATUS_CLASS = ['', 'disabled', 'warning', 'secondary-disabled'];
$rootScope.sizeRatio = Persist.getSizeRatio(); $rootScope.sizeRatio = Persist.getSizeRatio();
$rootScope.title = 'Coriolis'; $rootScope.title = 'Coriolis';

View File

@@ -100,11 +100,12 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
$scope.speedSeries = { $scope.speedSeries = {
xMin: 0, xMin: 0,
xMax: ship.cargoCapacity, xMax: ship.cargoCapacity,
yMax: 500, yMax: calcSpeed(ship.unladenMass, ship.speed, ship.boost, $scope.th.c, ship.pipSpeed).boost,
yMin: 0, yMin: 0,
series: ['speed', 'boost'], series: ['boost', '4 Pips', '2 Pips', '0 Pips'],
colors: ['#0088d2', '#ff8c0d', '#D26D00', '#c06400'],
func: function(cargo) { // X Axis is Cargo func: function(cargo) { // X Axis is Cargo
return calcSpeed(ship.unladenMass + $scope.fuel + cargo, ship.speed, ship.boost, $scope.th.c); return calcSpeed(ship.unladenMass + $scope.fuel + cargo, ship.speed, ship.boost, $scope.th.c, ship.pipSpeed);
} }
}; };
$scope.speedChart = { $scope.speedChart = {
@@ -360,6 +361,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
$scope.speedSeries.xMax = $scope.trSeries.xMax = $scope.jrSeries.xMax = ship.cargoCapacity; $scope.speedSeries.xMax = $scope.trSeries.xMax = $scope.jrSeries.xMax = ship.cargoCapacity;
$scope.jrSeries.yMax = ship.unladenRange; $scope.jrSeries.yMax = ship.unladenRange;
$scope.trSeries.yMax = ship.unladenTotalRange; $scope.trSeries.yMax = ship.unladenTotalRange;
$scope.speedSeries.yMax = calcSpeed(ship.unladenMass, ship.speed, ship.boost, $scope.th.c, ship.pipSpeed).boost;
updateRetrofitCosts(); updateRetrofitCosts();
win.triggerHandler('pwrchange'); win.triggerHandler('pwrchange');
} }

View File

@@ -6,12 +6,14 @@ angular.module('app').directive('barChart', ['$window', '$translate', '$rootScop
function insertLinebreaks(d) { function insertLinebreaks(d) {
var el = d3.select(this); var el = d3.select(this);
var words = d.split('\n'); var lines = d.split('\n');
el.text('').attr('y', -6); el.text('').attr('y', -6);
for (var i = 0; i < words.length; i++) { for (var i = 0; i < lines.length; i++) {
var tspan = el.append('tspan').text(words[i]); var tspan = el.append('tspan').text(lines[i].length > 18 ? lines[i].substring(0, 15) + '...' : lines[i]);
if (i > 0) { if (i > 0) {
tspan.attr('x', -9).attr('dy', '1em'); tspan.attr('x', -9).attr('dy', '1em');
} else {
tspan.attr('class', 'primary');
} }
} }
} }
@@ -65,7 +67,7 @@ angular.module('app').directive('barChart', ['$window', '$translate', '$rootScop
var data = scope.data, var data = scope.data,
width = element[0].offsetWidth, width = element[0].offsetWidth,
w = width - margin.left - margin.right, w = width - margin.left - margin.right,
height = 45 + (30 * data.length * $rootScope.sizeRatio), height = 50 + (30 * data.length * $rootScope.sizeRatio),
h = height - margin.top - margin.bottom, h = height - margin.top - margin.bottom,
maxVal = d3.max(data, function(d) { return d3.max(properties, function(p) {return d[p]; }); }); maxVal = d3.max(data, function(d) { return d3.max(properties, function(p) {return d[p]; }); });

View File

@@ -8,7 +8,7 @@ angular.module('app').directive('componentSelect', ['$translate', function($tran
var o = opts[i]; var o = opts[i];
var id = o.id || (o.class + o.rating); // Common components' ID is their class and rating var id = o.id || (o.class + o.rating); // Common components' ID is their class and rating
if (i > 0 && opts.length > 4 && o.class != prevClass && (o.rating != prevRating || o.mode)) { if (i > 0 && opts.length > 3 && o.class != prevClass && (o.rating != prevRating || o.mode) && o.grp != 'pa') {
list.push('<br/>'); list.push('<br/>');
} }

View File

@@ -1,4 +1,7 @@
angular.module('app').directive('lineChart', ['$window', '$translate', '$rootScope', function($window, $translate, $rootScope) { angular.module('app').directive('lineChart', ['$window', '$translate', '$rootScope', function($window, $translate, $rootScope) {
var RENDER_POINTS = 20; // Only render 20 points on the graph
return { return {
restrict: 'A', restrict: 'A',
scope: { scope: {
@@ -8,7 +11,7 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
link: function(scope, element) { link: function(scope, element) {
var seriesConfig = scope.series, var seriesConfig = scope.series,
series = seriesConfig.series, series = seriesConfig.series,
color = d3.scale.ordinal().range([ '#ff8c0d', '#1fb0ff', '#a05d56', '#d0743c']), color = d3.scale.ordinal().range(scope.series.colors ? scope.series.colors : ['#ff8c0d']),
config = scope.config, config = scope.config,
labels = config.labels, labels = config.labels,
margin = { top: 15, right: 15, bottom: 35, left: 60 }, margin = { top: 15, right: 15, bottom: 35, left: 60 },
@@ -39,20 +42,33 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
.attr('transform', 'rotate(-90)') .attr('transform', 'rotate(-90)')
.attr('y', -50) .attr('y', -50)
.attr('dy', '.1em') .attr('dy', '.1em')
.style('text-anchor', 'middle') .style('text-anchor', 'middle');
.text($translate.instant(labels.yAxis.title) + ' (' + $translate.instant(labels.yAxis.unit) + ')');
// Create X Axis SVG Elements // Create X Axis SVG Elements
var xLbl = vis.append('g').attr('class', 'x axis'); var xLbl = vis.append('g').attr('class', 'x axis');
var xTxt = xLbl.append('text') var xTxt = xLbl.append('text')
.attr('class', 'cap') .attr('class', 'cap')
.attr('y', 30) .attr('y', 30)
.attr('dy', '.1em') .attr('dy', '.1em')
.style('text-anchor', 'middle') .style('text-anchor', 'middle');
.text($translate.instant(labels.xAxis.title) + ' (' + $translate.instant(labels.xAxis.unit) + ')');
// xTxt.append('tspan').attr('class', 'metric');
// yTxt.append('tspan').attr('class', 'metric');
// Create and Add tooltip // Create and Add tooltip
var tipWidth = (Math.max(labels.yAxis.unit.length, labels.xAxis.unit.length) * 1.25) + 2.5; var tipHeight = 2 + (1.25 * (series ? series.length : 0.75));
var tips = vis.append('g').style('display', 'none'); var tips = vis.append('g').style('display', 'none').attr('class', 'tooltip');
var markers = vis.append('g').style('display', 'none');
tips.append('rect')
.attr('height', tipHeight + 'em')
.attr('y', (-tipHeight / 2) + 'em')
.attr('class', 'tip');
tips.append('text')
.attr('class', 'label x')
.attr('dy', (-tipHeight / 2) + 'em')
.attr('y', '1.25em');
var background = vis.append('rect') // Background to capture hover/drag var background = vis.append('rect') // Background to capture hover/drag
.attr('fill-opacity', 0) .attr('fill-opacity', 0)
@@ -84,7 +100,7 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
yMin = seriesConfig.yMin, yMin = seriesConfig.yMin,
w = width - margin.left - margin.right, w = width - margin.left - margin.right,
h = height - margin.top - margin.bottom, h = height - margin.top - margin.bottom,
s, val, yVal, delta; c, s, val, yVal, delta;
data.length = 0; // Reset Data array data.length = 0; // Reset Data array
@@ -105,12 +121,14 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
data[s].push( [ xMin, yVal[ series[s] ] ], [ 1, yVal[ series[s] ] ]); data[s].push( [ xMin, yVal[ series[s] ] ], [ 1, yVal[ series[s] ] ]);
} }
} else { } else {
delta = (xMax - xMin) / 30; // Only render 30 points on the graph delta = (xMax - xMin) / RENDER_POINTS;
for (val = xMin; val <= xMax; val += delta) { val = 0;
for (c = 0; c <= RENDER_POINTS; c++) {
yVal = func(val); yVal = func(val);
for (s = 0; s < series.length; s++) { for (s = 0; s < series.length; s++) {
data[s].push([ val, yVal[ series[s] ] ]); data[s].push([ val, yVal[ series[s] ] ]);
} }
val += delta;
} }
} }
@@ -120,9 +138,11 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
yVal = func(xMin); yVal = func(xMin);
seriesData.push([ xMin, yVal ], [ 1, yVal ]); seriesData.push([ xMin, yVal ], [ 1, yVal ]);
} else { } else {
delta = (xMax - xMin) / 30; // Only render 30 points on the graph delta = (xMax - xMin) / RENDER_POINTS;
for (val = xMin; val <= xMax; val += delta) { val = 0;
for (c = 0; c <= RENDER_POINTS; c++) {
seriesData.push([val, func(val) ]); seriesData.push([val, func(val) ]);
val += delta;
} }
} }
@@ -152,35 +172,63 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
.attr('stroke-width', 2) .attr('stroke-width', 2)
.attr('d', line); .attr('d', line);
var tip = tips.selectAll('g.tooltip').data(data).enter().append('g').attr('class', 'tooltip'); tips.selectAll('text.label.y').data(data).enter()
tip.append('rect').attr('width', tipWidth + 'em').attr('height', '2em').attr('x', '0.5em').attr('y', '-1em').attr('class', 'tip'); .append('text')
tip.append('circle').attr('class', 'marker').attr('r', 4); .attr('class', 'label y')
tip.append('text').attr('class', 'label x').attr('y', '-0.25em'); .attr('dy', (-tipHeight / 2) + 'em')
tip.append('text').attr('class', 'label y').attr('y', '0.85em'); .attr('y', function(d, i) { return 1.25 * (i + 2) + 'em'; });
markers.selectAll('circle.marker').data(data).enter().append('circle').attr('class', 'marker').attr('r', 4);
} }
function showTip() { function showTip() {
tips.style('display', null); tips.style('display', null);
markers.style('display', null);
} }
function hideTip() { function hideTip() {
if (!dragging) { if (!dragging) {
tips.style('display', 'none'); tips.style('display', 'none');
markers.style('display', 'none');
} }
} }
function moveTip() { function moveTip() {
var xPos = d3.mouse(this)[0], x0 = x.invert(xPos), y0 = func(x0), flip = (x0 / x.domain()[1] > 0.65); var xPos = d3.mouse(this)[0],
var tip = tips.selectAll('g.tooltip').attr('transform', function(d, i) { return 'translate(' + x(x0) + ',' + y(series ? y0[series[i]] : y0) + ')'; }); x0 = x.invert(xPos),
tip.selectAll('rect').attr('x', flip ? (-tipWidth - 0.5) + 'em' : '0.5em').style('text-anchor', flip ? 'end' : 'start'); y0 = func(x0),
tip.selectAll('text.label').attr('x', flip ? '-1em' : '1em').style('text-anchor', flip ? 'end' : 'start'); yTotal = 0,
tip.selectAll('text.label.x').text(fmtLong(x0) + ' ' + $translate.instant(labels.xAxis.unit)); flip = (x0 / x.domain()[1] > 0.65),
tips.selectAll('text.label.y').text(function(d, i) { return fmtLong(series ? y0[series[i]] : y0) + ' ' + $translate.instant(labels.yAxis.unit); }); tipWidth = 0,
minTransY = (tips.selectAll('rect').node().getBoundingClientRect().height / 2) - margin.top;
tips.selectAll('text.label.y').text(function(d, i) {
var yVal = series ? y0[series[i]] : y0;
yTotal += yVal;
return (series ? $translate.instant(series[i]) : '') + ' ' + fmtLong(yVal);
}).append('tspan').attr('class', 'metric').text(' ' + $translate.instant(labels.yAxis.unit));
tips.selectAll('text').each(function() {
if (this.getBBox().width > tipWidth) {
tipWidth = Math.ceil(this.getBBox().width);
}
});
tipWidth += 8;
markers.selectAll('circle.marker').attr('cx', x(x0)).attr('cy', function(d, i) { return y(series ? y0[series[i]] : y0); });
tips.selectAll('text.label').attr('x', flip ? -12 : 12).style('text-anchor', flip ? 'end' : 'start');
tips.selectAll('text.label.x').text(fmtLong(x0)).append('tspan').attr('class', 'metric').text(' ' + $translate.instant(labels.xAxis.unit));
tips.attr('transform', 'translate(' + x(x0) + ',' + Math.max(minTransY, y(yTotal / (series ? series.length : 1))) + ')');
tips.selectAll('rect')
.attr('width', tipWidth + 4)
.attr('x', flip ? -tipWidth - 12 : 8)
.style('text-anchor', flip ? 'end' : 'start');
} }
function updateFormats() { function updateFormats() {
xTxt.text($translate.instant(labels.xAxis.title) + ' (' + $translate.instant(labels.xAxis.unit) + ')'); xTxt.text($translate.instant(labels.xAxis.title)).append('tspan').attr('class', 'metric').text(' (' + $translate.instant(labels.xAxis.unit) + ')');
yTxt.text($translate.instant(labels.yAxis.title) + ' (' + $translate.instant(labels.yAxis.unit) + ')'); yTxt.text($translate.instant(labels.yAxis.title)).append('tspan').attr('class', 'metric').text(' (' + $translate.instant(labels.yAxis.unit) + ')');
fmtLong = $rootScope.localeFormat.numberFormat('.2f'); fmtLong = $rootScope.localeFormat.numberFormat('.2f');
xAxis.tickFormat($rootScope.localeFormat.numberFormat('.2r')); xAxis.tickFormat($rootScope.localeFormat.numberFormat('.2r'));
yAxis.tickFormat($rootScope.localeFormat.numberFormat('.3r')); yAxis.tickFormat($rootScope.localeFormat.numberFormat('.3r'));

View File

@@ -1,218 +1,216 @@
angular.module('app').config(['$translateProvider', function($translateProvider) { angular.module('app').config(['$translateProvider', function($translateProvider) {
$translateProvider.translations('en', {
$translateProvider PHRASE_EXPORT_DESC: 'A detailed JSON export of your build for use in other sites and tools',
.translations('en', { 'A-Rated': 'A-Rated',
PHRASE_EXPORT_DESC: 'A detailed JSON export of your build for use in other sites and tools', about: 'about',
'A-Rated': 'A-Rated', action: 'action',
about: 'about', added: 'added',
action: 'action', Advanced: 'Advanced',
added: 'added', 'Advanced Discovery Scanner': 'Advanced Discovery Scanner',
Advanced: 'Advanced', agility: 'agility',
'Advanced Discovery Scanner': 'Advanced Discovery Scanner', alpha: 'alpha',
agility: 'agility', ammo: 'ammo',
alpha: 'alpha', PHRASE_CONFIRMATION: 'Are You Sure?',
ammo: 'ammo', armour: 'armour',
PHRASE_CONFIRMATION: 'Are You Sure?', am: 'Auto Field-Maintenance Unit',
armour: 'armour', available: 'available',
am: 'Auto Field-Maintenance Unit', backup: 'backup',
available: 'available', 'Basic Discovery Scanner': 'Basic Discovery Scanner',
backup: 'backup', bl: 'Beam Laser',
'Basic Discovery Scanner': 'Basic Discovery Scanner', beta: 'beta',
bl: 'Beam Laser', bins: 'bins',
beta: 'beta', boost: 'boost',
bins: 'bins', build: 'build',
boost: 'boost', 'build name': 'Build Name',
build: 'build', builds: 'builds',
'build name': 'Build Name', bh: 'bulkheads',
builds: 'builds', ul: 'Burst Laser',
bh: 'bulkheads', buy: 'buy',
ul: 'Burst Laser', cancel: 'cancel',
buy: 'buy', c: 'Cannon',
cancel: 'cancel', capital: 'capital',
c: 'Cannon', cargo: 'cargo',
capital: 'capital', 'Cargo Hatch': 'Cargo Hatch',
cargo: 'cargo', cr: 'Cargo Rack',
'Cargo Hatch': 'Cargo Hatch', cs: 'Cargo Scanner',
cr: 'Cargo Rack', cells: 'cells',
cs: 'Cargo Scanner', 'Chaff Launcher': 'Chaff Launcher',
cells: 'cells', close: 'close',
'Chaff Launcher': 'Chaff Launcher', cc: 'Collector Limpet Controller',
close: 'close', compare: 'compare',
cc: 'Collector Limpet Controller', 'compare all': 'compare all',
compare: 'compare', comparison: 'comparison',
'compare all': 'compare all', comparisons: 'comparisons',
comparison: 'comparison', component: 'component',
comparisons: 'comparisons', cost: 'cost',
component: 'component', costs: 'costs',
cost: 'cost', cm: 'Countermeasure',
costs: 'costs', CR: 'CR',
cm: 'Countermeasure', create: 'create',
CR: 'CR', 'create new': 'create new',
create: 'create', credits: 'credits',
'create new': 'create new', Cytoscrambler: 'Cytoscrambler',
credits: 'credits', damage: 'damage',
Cytoscrambler: 'Cytoscrambler', delete: 'delete',
damage: 'damage', 'delete all': 'delete all',
delete: 'delete', dep: 'dep',
'delete all': 'delete all', deployed: 'deployed',
dep: 'dep', 'detailed export': 'detailed export',
deployed: 'deployed', 'Detailed Surface Scanner': 'Detailed Surface Scanner',
'detailed export': 'detailed export', disabled: 'disabled',
'Detailed Surface Scanner': 'Detailed Surface Scanner', discount: 'discount',
disabled: 'disabled', Distruptor: 'Distruptor',
discount: 'discount', dc: 'Docking Computer',
Distruptor: 'Distruptor', done: 'done',
dc: 'Docking Computer', DPS: 'DPS',
done: 'done', 'edit data': 'edit data',
DPS: 'DPS', efficiency: 'efficiency',
'edit data': 'edit data', 'Electronic Countermeasure': 'Electronic Countermeasure',
efficiency: 'efficiency', empty: 'empty',
'Electronic Countermeasure': 'Electronic Countermeasure', Enforcer: 'Enforcer',
empty: 'empty', ENG: 'ENG',
Enforcer: 'Enforcer', 'enter name': 'Enter Name',
ENG: 'ENG', EPS: 'EPS',
'enter name': 'Enter Name', export: 'export',
EPS: 'EPS', fixed: 'fixed',
export: 'export', forum: 'forum',
fixed: 'fixed', fc: 'Fragment Cannon',
forum: 'forum', fd: 'Frame Shift Drive',
fc: 'Fragment Cannon', ws: 'Frame Shift Wake Scanner',
fd: 'Frame Shift Drive', FSD: 'FSD',
ws: 'Frame Shift Wake Scanner', fi: 'FSD Interdictor',
FSD: 'FSD', fuel: 'fuel',
fi: 'FSD Interdictor', fs: 'Fuel Scoop',
fuel: 'fuel', ft: 'Fuel Tank',
fs: 'Fuel Scoop', fx: 'Fuel Transfer Limpet Controller',
ft: 'Fuel Tank', 'full tank': 'full tank',
fx: 'Fuel Transfer Limpet Controller', Gimballed: 'Gimballed',
'full tank': 'full tank', H: 'H',
Gimballed: 'Gimballed', hardpoints: 'hardpoints',
H: 'H', hb: 'Hatch Breaker Limpet Controller',
hardpoints: 'hardpoints', 'Heat Sink Launcher': 'Heat Sink Launcher',
hb: 'Hatch Breaker Limpet Controller', huge: 'huge',
'Heat Sink Launcher': 'Heat Sink Launcher', hull: 'hull',
huge: 'huge', hr: 'Hull Reinforcement Package',
hull: 'hull', 'Imperial Hammer': 'Imperial Hammer',
hr: 'Hull Reinforcement Package', import: 'import',
'Imperial Hammer': 'Imperial Hammer', 'import all': 'import all',
import: 'import', insurance: 'insurance',
'import all': 'import all', 'Intermediate Discovery Scanner': 'Intermediate Discovery Scanner',
insurance: 'insurance', 'internal compartments': 'internal compartments',
'Intermediate Discovery Scanner': 'Intermediate Discovery Scanner', 'jump range': 'jump range',
'internal compartments': 'internal compartments', jumps: 'jumps',
'jump range': 'jump range', kw: 'Kill Warrant Scanner',
jumps: 'jumps', L: 'L',
kw: 'Kill Warrant Scanner', laden: 'laden',
L: 'L', language: 'language',
laden: 'laden', large: 'large',
language: 'language', ls: 'life support',
large: 'large', 'Lightweight Alloy': 'Lightweight Alloy',
ls: 'life support', 'lock factor': 'lock factor',
'Lightweight Alloy': 'Lightweight Alloy', LS: 'Ls',
'lock factor': 'lock factor', LY: 'LY',
LS: 'Ls', M: 'M',
LY: 'LY', 'm/s': 'm/s',
M: 'M', mass: 'mass',
'm/s': 'm/s', max: 'max',
mass: 'mass', 'max mass': 'max mass',
max: 'max', medium: 'medium',
'max mass': 'max mass', 'Military Grade Composite': 'Military Grade Composite',
medium: 'medium', nl: 'Mine Launcher',
'Military Grade Composite': 'Military Grade Composite', 'Mining Lance': 'Mining Lance',
nl: 'Mine Launcher', ml: 'Mining Laser',
'Mining Lance': 'Mining Lance', 'Mirrored Surface Composite': 'Mirrored Surface Composite',
ml: 'Mining Laser', mr: 'Missile Rack',
'Mirrored Surface Composite': 'Mirrored Surface Composite', mc: 'Multi-cannon',
mr: 'Missile Rack', 'net cost': 'net cost',
mc: 'Multi-cannon', no: 'no',
'net cost': 'net cost', PHRASE_NO_BUILDS: 'No builds added to comparison!',
no: 'no', PHRASE_NO_RETROCH: 'No Retrofitting changes',
PHRASE_NO_BUILDS: 'No builds added to comparison!', none: 'none',
PHRASE_NO_RETROCH: 'No Retrofitting changes', 'none created': 'none created',
none: 'none', off: 'off',
'none created': 'none created', on: 'on',
off: 'off', optimal: 'optimal',
on: 'on', 'optimal mass': 'optimal mass',
optimal: 'optimal', 'optimize mass': 'optimize mass',
'optimal mass': 'optimal mass', overwrite: 'overwrite',
'optimize mass': 'optimize mass', Pacifier: 'Pacifier',
overwrite: 'overwrite', 'Pack-Hound': 'Pack-Hound',
Pacifier: 'Pacifier', PHRASE_IMPORT: 'Paste JSON or import here',
'Pack-Hound': 'Pack-Hound', pen: 'pen',
PHRASE_IMPORT: 'Paste JSON or import here', penetration: 'penetration',
pen: 'pen', permalink: 'permalink',
penetration: 'penetration', pa: 'Plasma Accelerator',
permalink: 'permalink', 'Point Defence': 'Point Defence',
pa: 'Plasma Accelerator', power: 'power',
'Point Defence': 'Point Defence', pd: 'power distributor',
power: 'power', pp: 'power plant',
pd: 'power distributor', pri: 'pri',
pp: 'power plant', priority: 'priority',
pri: 'pri', psg: 'Prismatic Shield Generator',
priority: 'priority', proceed: 'proceed',
psg: 'Prismatic Shield Generator', pc: 'Prospector Limpet Controller',
proceed: 'proceed', pl: 'Pulse Laser',
pc: 'Prospector Limpet Controller', PWR: 'PWR',
pl: 'Pulse Laser', rg: 'Rail Gun',
PWR: 'PWR', range: 'range',
rg: 'Rail Gun', rate: 'rate',
range: 'range', 'Reactive Surface Composite': 'Reactive Surface Composite',
rate: 'rate', recharge: 'recharge',
'Reactive Surface Composite': 'Reactive Surface Composite', rf: 'Refinery',
recharge: 'recharge', 'refuel time': 'refuel time',
rf: 'Refinery', 'Reinforced Alloy': 'Reinforced Alloy',
'refuel time': 'refuel time', reload: 'reload',
'Reinforced Alloy': 'Reinforced Alloy', rename: 'rename',
reload: 'reload', repair: 'repair',
rename: 'rename', reset: 'reset',
repair: 'repair', ret: 'ret',
reset: 'reset', retracted: 'retracted',
ret: 'ret', 'retrofit costs': 'retrofit costs',
retracted: 'retracted', 'retrofit from': 'retrofit from',
'retrofit costs': 'retrofit costs', ROF: 'ROF',
'retrofit from': 'retrofit from', S: 'S',
ROF: 'ROF', save: 'save',
S: 'S', sc: 'scanner',
save: 'save', PHRASE_SELECT_BUILDS: 'Select Builds to Compare',
sc: 'scanner', sell: 'sell',
PHRASE_SELECT_BUILDS: 'Select Builds to Compare', s: 'sensors',
sell: 'sell', settings: 'settings',
s: 'sensors', sb: 'Shield Booster',
settings: 'settings', scb: 'Shield Cell Bank',
sb: 'Shield Booster', sg: 'Shield Generator',
scb: 'Shield Cell Bank', shields: 'shields',
sg: 'Shield Generator', ship: 'ship',
shields: 'shields', ships: 'ships',
ship: 'ship', shortened: 'shortened',
ships: 'ships', size: 'size',
shortened: 'shortened', skip: 'skip',
size: 'size', small: 'small',
skip: 'skip', speed: 'speed',
small: 'small', standard: 'standard',
speed: 'speed', 'Standard Docking Computer': 'Standard Docking Computer',
standard: 'standard', Stock: 'Stock',
'Standard Docking Computer': 'Standard Docking Computer', SYS: 'SYS',
Stock: 'Stock', T: 'T',
SYS: 'SYS', T_LOAD: 't-load',
T: 'T', 'The Retributor': 'The Retributor',
T_LOAD: 't-load', t: 'thrusters',
'The Retributor': 'The Retributor', time: 'time',
t: 'thrusters', tp: 'Torpedo Pylon',
time: 'time', total: 'total',
tp: 'Torpedo Pylon', 'total range': 'total range',
total: 'total', turret: 'turret',
'total range': 'total range', type: 'type',
turret: 'turret', U: 'U',
type: 'type', unladen: 'unladen',
U: 'U', PHRASE_UPDATE_RDY: 'Update Available! Click to Refresh',
unladen: 'unladen', URL: 'URL',
PHRASE_UPDATE_RDY: 'Update Available! Click to Refresh', utility: 'utility',
URL: 'URL', 'utility mounts': 'utility mounts',
utility: 'utility', version: 'version',
'utility mounts': 'utility mounts', WEP: 'WEP',
version: 'version', yes: 'yes',
WEP: 'WEP', PHRASE_BACKUP_DESC: 'Backup of all Coriolis data to save or transfer to another browser/device'
yes: 'yes', });
PHRASE_BACKUP_DESC: 'Backup of all Coriolis data to save or transfer to another browser/device'
});
}]); }]);

View File

@@ -17,247 +17,195 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
}); });
$translateProvider.translations('es', { $translateProvider.translations('es', {
PHRASE_EXPORT_DESC: 'Ein detaillierter JSON-Export Ihrer Konfiguration für die Verwendung in anderen Websites und Tools', 'PHRASE_EXPORT_DESC': 'Una detallada exportaci\u00f3n JSON de tu construcci\u00f3n para usarlo en otros sitios web y herramientas',
A_RATED: 'A-Klasse', 'A-Rated': 'Calidad-A',
ABOUT: 'Über', 'about': 'Acerca',
ACTION: 'Aktion', 'action': 'Acci\u00f3n',
ADDED: 'Hinzugefügt', 'added': 'A\u00f1adido',
ADDER: 'Adder', 'Advanced Discovery Scanner': 'Esc\u00e1ner de exploraci\u00f3n avanzado',
ADVANCED: 'Fortgeschritten', 'agility': 'Maniobrabilidad',
'Advanced Discovery Scanner': 'Fortgeschrittener Aufklärungsscanner', 'alpha': 'Alfa',
'Advanced Plasma Laser': 'Fortgeschrittener Plasma-Laser', 'ammo': 'Munici\u00f3n',
AGILITY: 'Beweglichkeit', 'PHRASE_CONFIRMATION': '\u00bfEst\u00e1s seguro?',
ALPHA: 'Alpha', 'armour': 'Blindaje',
AMMO: 'Munition', 'am': 'Unidad de auto-reparaciones',
ANACONDA: 'Anaconda', 'available': 'Disponible',
PHRASE_CONFIRMATION: 'Sind Sie sicher?', 'backup': 'Reserva',
ARMOUR: 'Panzerung', 'Basic Discovery Scanner': 'Esc\u00e1ner de exploraci\u00f3n b\u00e1sico',
ASP_EXPLORER: 'Asp Explorer', 'bl': 'L\u00e1ser de haz',
am: 'Automatische Feldwartungseinheit', 'bins': 'contenedores',
AVAILABLE: 'Verfügbar', 'boost': 'incrementar',
BACKUP: 'Sicherungsdatei', 'build': 'Construcci\u00f3n',
'Basic Discovery Scanner': 'Einfacher Aufklärungsscanner', 'build name': 'Nombre de la construcci\u00f3n',
bl: 'Strahlenlaser', 'builds': 'Construcciones',
BELUGA_LINER: 'Beluga Liner', 'bh': 'mamparos',
BETA: 'beta', 'ul': 'Laser de r\u00e1fagas',
BINS: 'Behälter', 'buy': 'Comprar',
BOOST: 'Boost', 'cancel': 'Cancelar',
BUILD: 'Konfiguration', 'c': 'Ca\u00f1\u00f3n',
BUILD_NAME: 'Konfigurationsname', 'capital': 'capital',
BUILDS: 'Konfigurationen', 'cargo': 'Carga',
BULKHEADS: 'Rumpfhüllenverstärkung', 'Cargo Hatch': 'Compuerta de carga',
ul: 'Salvenlaser', 'cr': 'Compartimento de carga',
BUY: 'Kaufen', 'cs': 'Esc\u00e1ner de carga',
CANCEL: 'Abbrechen', 'cells': 'celdas',
c: 'Kanone', 'Chaff Launcher': 'Lanzador de birutas',
CAPITAL: 'kapital', 'close': 'Cerrar',
CARGO: 'Fracht', 'cc': 'Controlador de Drones de Recogida',
CARGO_HATCH: 'Frachtluke', 'compare': 'Comparar',
cr: 'Frachtgestell', 'compare all': 'comparar todas',
cs: 'Frachtscanner', 'comparison': 'Comparativa',
CELLS: 'Zellen', 'comparisons': 'Comparativas',
CHAFF_LAUNCHER: 'Düppel-Werfer', 'component': 'Componente',
CLOSE: 'Schließen', 'cost': 'Coste',
COBRA_MK_III: 'Cobra MK III', 'costs': 'Costes',
COBRA_MK_IV: 'Cobra MK IV', 'cm': 'Contramedidas',
cc: 'Krallensteuerung: Sammler', 'create': 'Crear',
COMPARE: 'Vergleichen', 'create new': 'Crear nuevo',
COMPARE_ALL: 'Alles Vergleichen', 'credits': 'Cr\u00e9ditos',
COMPARISON: 'Vergleich', 'damage': 'Da\u00f1o',
COMPARISONS: 'Vergleiche', 'delete': 'Borrar',
COMPONENT: 'Komponente', 'delete all': 'Borrar todo',
COST: 'Kostet', 'dep': 'desp',
COSTS: 'Kosten', 'deployed': 'Desplegado',
cm: 'Gegenmaßnahme', 'detailed export': 'Exportacion detallada',
CR: 'CR', 'Detailed Surface Scanner': 'Escaner de exploraci\u00f3n detallada',
CREATE: 'Erstellen', 'disabled': 'Desactivado',
CREATE_NEW: 'Neu Erstellen', 'discount': 'Descuento',
CREDITS: 'Credits', 'dc': 'Ordenador de aterrizaje',
Cytoscrambler: 'Zytostreuer', 'done': 'Hecho',
DAMAGE: 'Schaden', 'DPS': 'DPS (Da\u00f1o Por Segundo)',
DELETE: 'Löschen', 'edit data': 'Editar datos',
DELETE_ALL: 'Alles Löschen', 'efficiency': 'Eficiencia',
DEP: 'Ausg', 'Electronic Countermeasure': 'Contramedidas electr\u00f3nicas',
DEPLOYED: 'Ausgefahren', 'empty': 'Vac\u00edo',
DETAILED_EXPORT: 'Detailiertes Exportieren', 'ENG': 'MOT',
'Detailed Surface Scanner': 'Detailoberflächenscanner', 'enter name': 'Introduce el nombre',
DIAMONDBACK_EXPLORER: 'Diamondback-Erkunder', 'export': 'exportar',
DIAMONDBACK_SCOUT: 'Diamondback-Aufklärer', 'fixed': 'fijo',
DISABLED: 'Deaktiviert', 'forum': 'Foro',
DISCOUNT: 'Rabatt', 'fc': 'Ca\u00f1\u00f3n de fragmentaci\u00f3n',
Distruptor: 'Disruptor', 'fd': 'Motor de salto',
dc: 'Standard-Landecomputer', 'ws': 'Esc\u00e1ner de Salto',
DOLPHIN: 'Dolphin', 'fi': 'Interdictor FSD',
DONE: 'Fertig', 'fuel': 'Combustible',
DPS: 'DPS', 'fs': 'Recolector de Combustible',
EAGLE: 'Eagle', 'ft': 'Tanque de combustible',
EDIT_DATA: 'Bearbeiten', 'fx': 'Sistema de Transferencia de Combustilble',
EFFICIENCY: 'Effizienz', 'full tank': 'Tanque lleno',
'Electronic Countermeasure': 'Elektronische Gegenmaßnahme', 'Gimballed': 'Card\u00e1n',
EMPTY: 'leer', 'H': 'E',
ENFORCER: 'Vollstrecker', 'hardpoints': 'Montura de armas',
ENG: 'FAH', 'hb': 'Controlador de Apertura de Bah\u00eda de Carga',
PHRASE_ENTER_BUILD_NAME: '', 'Heat Sink Launcher': 'Eyector de Acumulador de Calor',
EPS: 'en/s', 'huge': 'enorme',
EXPORT: 'Exportieren', 'hull': 'Casco',
FEDERAL_CORVETTE: 'Föderale Korvette', 'hr': 'Sistema de Casco Reforzado',
FEDERAL_DROPSHIP: 'Föderales Abwurfschiff', 'import': 'Importar',
FEDERAL_DROPSHIP_MK_II: 'Föderales Abwurfschiff Mk II', 'import all': 'Importar todo',
FEDERAL_GUNSHIP: 'Föderales Kanonenschiff', 'insurance': 'Seguro',
FER_DE_LANCE: 'Fer-de-Lance', 'Intermediate Discovery Scanner': 'Esc\u00e1ner de exploraci\u00f3n media',
FIXED: '', 'internal compartments': 'Compartimentos internos',
FORUM: 'Forum', 'jump range': 'Rango de salto',
fc: 'Splitterkanone', 'jumps': 'Saltos',
fd: 'Frameshift-Antrieb', 'kw': 'Esc\u00e1ner Detector de Recompensas',
ws: 'Sogwolkenscanner', 'L': 'G',
FSD: 'FSA', 'laden': 'Cargada',
fi: 'FSA-Unterbrecher', 'language': 'Idioma',
FUEL: 'Treibstoff', 'large': 'Grande',
fs: 'Treibstoffsammler', 'ls': 'Soporte vital',
ft: 'Treibstofftank', 'Lightweight Alloy': 'Aleaci\u00f3n ligera',
fx: 'Krallensteuerung Treibstoffstransfer', 'lock factor': 'factor de bloqueo',
FULL_TANK: 'Tank voll', 'mass': 'Masa',
GIMBALLED: 'Kardianisch', 'max': 'm\u00e1x',
H: 'H', 'max mass': 'Masa m\u00e1xima',
HARDPOINTS: 'Waffenaufhängungen', 'medium': 'medio',
hb: 'Krallen-Steuereinheit (Ladelukenöffner)', 'Military Grade Composite': 'Blindaje Militar',
HAULER: 'Hauler', 'nl': 'Lanzaminas',
'Heat Sink Launcher': 'Kühlkörperwerfer', 'Mining Lance': 'Lanza de miner\u00eda',
HUGE: 'Riesig', 'ml': 'L\u00e1ser de miner\u00eda',
HULL: 'Hülle', 'Mirrored Surface Composite': 'Blindaje Reflectante',
hr: 'Rumpfhüllenverstärkung (Paket)', 'mr': 'Bah\u00eda de Misiles',
IMPERIAL_CLIPPER: 'Imperialer Clipper', 'mc': 'Ca\u00f1\u00f3n m\u00faltiple',
IMPERIAL_COURIER: 'Imperialer Kurier', 'net cost': 'Coste neto',
IMPERIAL_CUTTER: 'Imperialer Cutter', 'PHRASE_NO_BUILDS': '\u00a1No se a\u00f1adieron plantillas para comparaci\u00f3n!',
IMPERIAL_EAGLE: 'Imperialer Eagle', 'PHRASE_NO_RETROCH': 'No hay cambios en los ajutes',
IMPERIAL_HAMMER: 'Imperialer Hammer', 'none': 'Nada',
IMPORT: 'Importieren', 'none created': 'Nada creado',
IMPORT_ALL: 'Alles Importieren', 'off': 'apagado',
INSURANCE: 'Versicherung', 'on': 'encendido',
'Intermediate Discover Scanner': 'Mittlerer Aufklärungsscanner', 'optimal': '\u00f3ptimo',
INTERNAL_COMPARTMENTS: 'Innenbereichkabine', 'optimal mass': 'masa \u00f3ptima',
JUMP_RANGE: 'Sprungreichweite', 'optimize mass': 'optimizar masa',
JUMPS: 'Sprünge', 'overwrite': 'Sobreescribir',
kw: 'Tötungsbefehlscanner', 'PHRASE_IMPORT': 'Pega el JSON o imp\u00f3rtalo aqu\u00ed',
KRAIT: 'Krait', 'penetration': 'penetraci\u00f3n',
L: 'L', 'permalink': 'enlace permanente',
LADEN: 'Beladen', 'pa': 'Acelerador de Plasma',
LANGUAGE: 'Sprache', 'Point Defence': 'Punto de Defensa',
LARGE: 'Groß', 'power': 'energ\u00eda',
ls: 'Lebenserhaltung', 'pd': 'distribuidor de energ\u00eda',
'Lightweight Alloy': 'Leichte Legierung', 'pp': 'Planta de Energ\u00eda',
LOCK_FACTOR: 'Massensperrefaktor', 'priority': 'prioridad',
LS: 'LS', 'proceed': 'Proceder',
LY: 'LJ', 'pc': 'Controlador de drones de prospecci\u00f3n',
M: 'M', 'pl': 'L\u00e1ser de Pulso',
'm/s': 'M/Sec.', 'PWR': 'POT',
MASS: 'Masse', 'rg': 'Ca\u00f1\u00f3n de Riel',
MAX: 'max', 'range': 'rango',
MAX_MASS: 'maximale Masse', 'rate': 'ratio',
MEDIUM: 'Mittel', 'Reactive Surface Composite': 'Blindaje Reactivo',
'Military Grade Composite': 'Militär-Komposit', 'recharge': 'recargar',
nl: 'Minenwerfer', 'rf': 'Refineria',
'Mining Lance': 'Lanzenabbaulaser', 'refuel time': 'Tiempo para repostar',
ml: 'Abbaulaser', 'Reinforced Alloy': 'Armadura reforzada',
'Mirrored Surface Composite': 'Gespiegelte-Oberfläche-Komposit', 'reload': 'Recargar',
mr: 'Raketenbatterie', 'rename': 'Renombrar',
mc: 'Mehrfachgeschütz', 'repair': 'Reparar',
NET_COST: 'Nettokosten', 'reset': 'Reiniciar',
NO: 'Nein', 'ret': 'PLE',
NO_RETROFITTING_CHANGES: 'Keine Umrüständerungen', 'retracted': 'plegadas',
NONE: 'Nichts', 'retrofit costs': 'costes de equipamiento',
NONE_CREATED: 'Nichts erstellt', 'retrofit from': 'equipamiento desde',
OFF: 'Aus', 'ROF': 'RDF',
ON: 'An', 'S': 'P',
OPTIMAL: 'optimal', 'save': 'guardar',
OPTIMAL_MASS: 'optimale Masse', 'sc': 'sc\u00e1ner',
OPTIMIZE_MASS: 'Masse optimieren', 'PHRASE_SELECT_BUILDS': 'Selecciona equipamientos para comparar',
ORCA: 'Orca', 'sell': 'Vender',
OVERWRITE: 'Überschreiben', 's': 'Sensores',
Pacifier: 'Friedensstifter', 'settings': 'Configuraci\u00f3n',
'Pack-Hound': 'Schwarmwerfer', 'sb': 'Potenciador de Escudos',
PANTHER_CLIPPER: 'Panter Clipper', 'scb': 'C\u00e9lula de Energ\u00eda de Escudos',
PHRASE_IMPORT: 'JSON hier einfügen oder hier importieren', 'sg': 'Generador de escudos',
PEN: 'Durchdr', 'shields': 'Escudos',
PENETRATION: 'Durchdringung', 'ship': 'Nave ',
PERMALINK: 'Permalink', 'ships': 'Naves',
pa: 'Plasmabeschleuniger', 'shortened': 'Abreviado',
POINT_DEFENCE: 'Punktverteidigung', 'size': 'Tama\u00f1o',
POWER: 'Energie', 'skip': 'omitir',
pd: 'Energieverteiler', 'small': 'Peque\u00f1o',
pp: 'Kraftwerk', 'speed': 'velocidad',
PRI: 'Prio', 'standard': 'est\u00e1ndar',
PRIORITY: 'Priorität', 'Standard Docking Computer': 'Computador de Atraque Est\u00e1ndar',
psg: 'Prismaschildgenerator', 'Stock': 'De serie',
PROCEED: 'Fortfahren', 'SYS': 'SIS',
pc: 'Krallensteuerung: Erzsucher', 'T_LOAD': 'c-t\u00e9rmica',
pl: 'Impulslaser', 't': 'Propulsores',
PWR: 'En', 'time': 'Tiempo',
PYTHON: 'Python', 'tp': 'Anclaje de torpedo',
rg: 'Schienenkanone', 'total': 'Total',
RANGE: 'Reichweite', 'total range': 'Rango total',
RATE: 'Rate', 'turret': 'torreta',
'Reactive Surface Composite': 'Reaktive-Oberfläche-Komposit', 'type': 'Tipo',
RECHARGE: 'Aufladen', 'unladen': 'Sin carga',
rf: 'Raffinerie', 'PHRASE_UPDATE_RDY': 'Actualizacion disponible! Haz click para recargar',
REFUEL_TIME: 'Auftankzeit', 'URL': 'Enlace',
'Reinforced Alloy': 'Verstärkte Legierungen', 'utility': 'utilidad',
RELOAD: 'Aktualisieren', 'utility mounts': 'monturas de utilidad',
RENAME: 'Umbenennen', 'version': 'Versi\u00f3n',
REPAIR: 'Reparieren', 'WEP': 'ARM',
RESET: 'Zurücksetzen', 'yes': 'si',
RET: 'eing', 'PHRASE_BACKUP_DESC': 'Copia de seguridad de todos los datos de Coriolis para guardarlos o transferirlos a otro navegador\/dispositivo'
RETRACTED: 'Eingefahren',
RETROFIT_COSTS: 'Nachrüstkosten',
RETROFIT_FROM: 'Nachrüsten von',
ROF: 'Kad',
S: 'S',
SAVE: 'Speichern',
sc: 'Scanner',
PHRASE_SELECT_BUILDS: 'Wähle Konfigurationen zum Vergleichen',
SELL: 'Verkaufen',
s: 'Sensoren',
SETTINGS: 'Konfiguration',
sb: 'Schildverstärker',
scb: 'Schildzellenbank',
sg: 'Schildgenerator',
SHIELDS: 'Schilde',
SHIP: 'Schiff',
SHIPS: 'Schiffe',
SHORTENED: 'Gekürzt',
SIDEWINDER: 'Sidewinder',
SIZE: 'Größe',
SKIP: 'Überspringen',
SMALL: 'S',
SPEED: 'Geschwindigkeit',
STANDARD: 'Standard',
STANDARD_DOCKING_COMPUTER: 'Landecomputer',
STOCK: 'Standard',
SYS: 'SYS',
T: 'T',
T_LOAD: 'T-Lad',
THE_HUNTER: 'The Hunter',
'The Retributor': 'Retributor',
t: 'Schubdüsen',
TIME: 'Dauer',
tp: 'Torpedoaufhängung',
TOTAL: 'Gesamt',
TOTAL_RANGE: 'Maximale Reichweite',
TURRET: 'Geschützturm',
TYPE: 'Typ',
TYPE_6_TRANSPORTER: 'Typ-6 Transporter',
TYPE_7_TRANSPORTER: 'Typ-7 Transporter',
TYPE_9_HEAVY: 'Typ-9 Transporter (schwer)',
U: 'U',
UNLADEN: 'Unbeladen',
UPDATE_NOTIFICATION: 'Update verfügbar! Klicken zum Aktualisieren',
URL: 'URL',
UTILITY: 'Werkzeug',
UTILITY_MOUNTS: 'Werkzeug-Steckplatz',
VERSION: 'Version',
VIPER: 'Viper',
VULTURE: 'Vulture',
WEP: 'WAF',
YES: 'Ja'
}); });
}]); }]);

View File

@@ -20,17 +20,17 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
about: 'à propos', about: 'à propos',
added: 'ajouté', added: 'ajouté',
Advanced: 'Avancé', Advanced: 'Avancé',
'Advanced Discovery Scanner': 'Scanner de découverte avancé', 'Advanced Discovery Scanner': 'Détecteur découverte avancé',
agility: 'manœuvrabilité', agility: 'manœuvrabilité',
ammo: 'munitions', ammo: 'munitions',
PHRASE_CONFIRMATION: 'Êtes-vous sûr ?', PHRASE_CONFIRMATION: 'Êtes-vous sûr ?',
armour: 'Armure', armour: 'Armure',
am: 'Unité de réparation automatique', am: 'Unité de maintenance de terrain auto',
available: 'Disponibilité', available: 'Disponibilité',
backup: 'sauvegarde', backup: 'sauvegarde',
'Basic Discovery Scanner': 'Scanner de découverte simple', 'Basic Discovery Scanner': 'Détecteur découverte simple',
bl: 'Rayon Laser', bl: 'Rayon Laser',
bins: 'bacs', bins: 'bennes',
build: 'Configuration', build: 'Configuration',
'build name': 'Nom de la configuration', 'build name': 'Nom de la configuration',
builds: 'Configurations', builds: 'Configurations',
@@ -40,9 +40,9 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
cancel: 'Annuler', cancel: 'Annuler',
c: 'Canon', c: 'Canon',
cargo: 'Soute', cargo: 'Soute',
'Cargo Hatch': 'Ecoutille de soute', 'Cargo Hatch': 'Écoutille de soute',
cr: 'Compartiment de soute', cr: 'Compartiment de soute',
cs: 'Scanner de soute', cs: 'Détecteur de cargaison',
cells: 'Cellules', cells: 'Cellules',
'Chaff Launcher': 'Lanceur de paillettes', 'Chaff Launcher': 'Lanceur de paillettes',
close: 'fermer', close: 'fermer',
@@ -64,15 +64,15 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
dep: 'depl', dep: 'depl',
deployed: 'déployé', deployed: 'déployé',
'detailed export': 'export détaillé', 'detailed export': 'export détaillé',
'Detailed Surface Scanner': 'Scanner de surface détaillé', 'Detailed Surface Scanner': 'Détecteur surface détaillé',
disabled: 'désactivé', disabled: 'désactivé',
discount: 'réduction', discount: 'réduction',
Distruptor: 'Disrupteur', Distruptor: 'Disrupteur',
dc: 'Ordinateur d\'appontage', dc: 'Ordinateur d\'appontage',
done: 'Valider', done: 'Valider',
'edit data': 'Editer donnée', 'edit data': 'Editer donnée',
efficiency: 'efficience', efficiency: 'efficacité',
'Electronic Countermeasure': 'Contre mesure électronique', 'Electronic Countermeasure': 'Contre-mesures électroniques',
empty: 'Vide', empty: 'Vide',
'enter name': 'Entrer un nom', 'enter name': 'Entrer un nom',
fixed: 'fixé', fixed: 'fixé',
@@ -83,28 +83,28 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
fuel: 'carburant', fuel: 'carburant',
fs: 'Récupérateur de carburant', fs: 'Récupérateur de carburant',
ft: 'Réservoir de carburant', ft: 'Réservoir de carburant',
fx: 'Drone de ravitaillement', fx: 'Contrôleur de ravitailleur',
'full tank': 'Réservoir plein', 'full tank': 'Réservoir plein',
Gimballed: 'Point', Gimballed: 'Point',
hardpoints: 'Points d\'emport', hardpoints: 'Points d\'emport',
hb: 'Contrôle de patelle perce-soute', hb: 'Contrôle de patelle perce-soute',
'Heat Sink Launcher': 'Ejecteur de dissipateur thermique', 'Heat Sink Launcher': 'Éjecteur de dissipateur thermique',
huge: 'Très grand', huge: 'Très grand',
hull: 'Coque', hull: 'Coque',
hr: 'Renfort de soute', hr: 'Ensemble de mesures permettant de',
'Imperial Hammer': 'Marteau impérial', 'Imperial Hammer': 'Marteau impérial',
import: 'Importer', import: 'Importer',
'import all': 'Importer tout', 'import all': 'Importer tout',
insurance: 'Assurance', insurance: 'Assurance',
'Intermediate Discovery Scanner': 'Scanner de découverte intermédiaire', 'Intermediate Discovery Scanner': 'Détecteur découverte intermédiaire',
'internal compartments': 'compartiments internes', 'internal compartments': 'compartiments internes',
'jump range': 'Distance de saut', 'jump range': 'Distance de saut',
jumps: 'Sauts', jumps: 'Sauts',
kw: 'Détecteur d\'avis de recherche', kw: 'Détecteur d\'avis de recherche',
laden: 'chargé', laden: 'chargé',
language: 'Langage', language: 'Langue',
large: 'large', large: 'large',
ls: 'Support vital', ls: 'Systèmes de survie',
'Lightweight Alloy': 'alliage léger', 'Lightweight Alloy': 'alliage léger',
'lock factor': 'facteur inhibition de masse', 'lock factor': 'facteur inhibition de masse',
LS: 'SL', LS: 'SL',
@@ -115,8 +115,8 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
nl: 'Lance-mines', nl: 'Lance-mines',
'Mining Lance': 'Lance de minage', 'Mining Lance': 'Lance de minage',
ml: 'Laser minier', ml: 'Laser minier',
'Mirrored Surface Composite': 'Composite à surface mirroir', 'Mirrored Surface Composite': 'Composite à surface miroir',
mr: 'Lance missiles', mr: 'Batterie de missiles',
mc: 'Canon multiple', mc: 'Canon multiple',
'net cost': 'coûts nets', 'net cost': 'coûts nets',
no: 'non', no: 'non',
@@ -137,15 +137,15 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
pa: 'accélérateur plasma', pa: 'accélérateur plasma',
'Point Defence': 'Défense ponctuelle', 'Point Defence': 'Défense ponctuelle',
power: 'énergie', power: 'énergie',
pd: 'distributeur d\'énérgie', pd: 'Répartiteur de puissance',
pp: 'centrale d\'énergie', pp: 'Générateur',
priority: 'priorité', priority: 'priorité',
psg: 'générateur de bouclier prisme', psg: 'générateur de bouclier prisme',
proceed: 'continuer', proceed: 'continuer',
pc: 'Drône de minage', pc: 'Contrôleur de prospecteur',
pl: 'Laser à impulsion', pl: 'Laser à impulsion',
PWR: 'P', PWR: 'P',
rg: 'Canon électromagnétique', rg: 'Canon électrique',
range: 'portée', range: 'portée',
rate: 'cadence', rate: 'cadence',
'Reactive Surface Composite': 'Composite à surface réactive', 'Reactive Surface Composite': 'Composite à surface réactive',
@@ -166,7 +166,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
sc: 'scanner', sc: 'scanner',
PHRASE_SELECT_BUILDS: 'Sélectionner les configurations à comparer', PHRASE_SELECT_BUILDS: 'Sélectionner les configurations à comparer',
sell: 'vendre', sell: 'vendre',
s: 'détecteurs', s: 'Capteurs',
settings: 'paramètres', settings: 'paramètres',
sb: 'Survolteur de bouclier', sb: 'Survolteur de bouclier',
scb: 'Réserve de cellules d\'énergie', scb: 'Réserve de cellules d\'énergie',
@@ -179,9 +179,9 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
skip: 'Suivant', skip: 'Suivant',
small: 'petit', small: 'petit',
speed: 'vitesse', speed: 'vitesse',
'Standard Docking Computer': 'ordinateur amarrage standard', 'Standard Docking Computer': 'Ordinateur d\'appontage standard',
Stock: 'de base', Stock: 'de base',
T_LOAD: 'degrés', T_LOAD: 'Charge thermique',
'The Retributor': 'Le Rétributeur', 'The Retributor': 'Le Rétributeur',
t: 'propulseurs', t: 'propulseurs',
time: 'temps', time: 'temps',
@@ -189,7 +189,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
'total range': 'Distance maximale', 'total range': 'Distance maximale',
turret: 'tourelle', turret: 'tourelle',
unladen: 'Non chargé', unladen: 'Non chargé',
PHRASE_UPDATE_RDY: 'Mise à jour disponible ! Cliquez pour rafraichir', PHRASE_UPDATE_RDY: 'Mise à jour disponible ! Cliquez ici pour mettre à jour',
utility: 'utilitaire', utility: 'utilitaire',
'utility mounts': 'Support utilitaire', 'utility mounts': 'Support utilitaire',
WEP: 'ARM', WEP: 'ARM',

133
app/js/i18n/it.js Normal file
View File

@@ -0,0 +1,133 @@
angular.module('app').config(['$translateProvider', 'localeFormatProvider', function($translateProvider, localeFormatProvider) {
// Declare number format settings
localeFormatProvider.addFormat('es', {
decimal: ',',
thousands: '.',
grouping: [3],
currency: ['€', ''],
dateTime: '%A %e %B %Y, %X',
date: '%d/%m/%Y',
time: '%H:%M:%S',
periods: ['AM', 'PM'], // unused
days: ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'],
shortDays: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
shortMonths: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
});
$translateProvider.translations('it', {
PHRASE_EXPORT_DESC: 'Un export dettagliato in formato JSON della tua configurazione per essere usato in altri siti o tools',
'A-Rated': 'Classe A',
about: 'Info su Coriolis',
action: 'azione',
added: 'aggiunto',
Advanced: 'Avanzato',
agility: 'agilità',
ammo: 'munizioni',
PHRASE_CONFIRMATION: 'Sei sicuro ?',
armour: 'armatura',
available: 'disponibile',
bins: 'contenitore',
build: 'configurazione',
'build name': 'Nome Configurazione',
builds: 'configurazioni',
buy: 'compra',
cancel: 'cancella',
cells: 'celle',
close: 'chiudi',
compare: 'confronta',
'compare all': 'confronta tutti',
comparison: 'comparazione',
comparisons: 'comparazioni',
component: 'componente',
cost: 'costo',
costs: 'costi',
cm: 'Contromisure',
create: 'crea',
'create new': 'crea nuovo',
credits: 'crediti',
damage: 'danno',
delete: 'elimina',
'delete all': 'elimina tutto',
dep: 'dep',
deployed: 'deployed',
'detailed export': 'esportazione dettagliata',
disabled: 'disabilita',
discount: 'sconto',
done: 'fatto',
'edit data': 'modifica i dati',
efficiency: 'efficenza',
empty: 'vuoto',
Enforcer: 'Rinforzatore',
'enter name': 'Inserisci un nome',
export: 'esporta',
fixed: 'fissi',
fuel: 'carburante',
'full tank': 'Serbatoio Pieno',
huge: 'enorme',
hull: 'corazza',
import: 'importa',
'import all': 'importa tutto',
insurance: 'assicurazione',
'internal compartments': 'compartimenti interni',
'jump range': 'distanza di salto',
jumps: 'salti',
laden: 'carico',
language: 'lingua',
large: 'largo',
mass: 'massa',
max: 'massimo',
'max mass': 'massa massimale',
medium: 'medio',
'net cost': 'costo netto',
PHRASE_NO_BUILDS: 'nessuna configurazione è stata aggiunta per la comparazione!',
PHRASE_NO_RETROCH: 'Nessun cambiamento di Retrofitting',
none: 'nessuno',
'none created': 'nessuno creato',
optimal: 'ottimale',
'optimal mass': 'massa ottimale',
'optimize mass': 'ottimizza la massa',
overwrite: 'sovrasscrivi',
PHRASE_IMPORT: 'Incolla un JSON o importalo qua',
penetration: 'penetrazione',
power: 'potenza',
priority: 'priorità',
proceed: 'procedi',
range: 'distanza',
rate: 'rateo',
recharge: 'ricarica',
reload: 'ricarica',
rename: 'rinomina',
repair: 'ripara',
reset: 'resetta',
retracted: 'retratti',
'retrofit costs': 'costi di retrofit',
'retrofit from': 'retrofit da',
save: 'salva',
sell: 'vendi',
settings: 'impostazioni',
shields: 'scudi',
ship: 'nave',
ships: 'navi',
shortened: 'accorciato',
size: 'grandezza',
skip: 'salta',
small: 'piccolo',
speed: 'velocità',
Stock: 'appena comprata',
t: 'Motori',
time: 'tempo',
total: 'totale',
'total range': 'distanza totale',
turret: 'turrette',
type: 'tipo',
unladen: 'scarico',
PHRASE_UPDATE_RDY: 'Aggiornamenti disponibili ! Clicca per Aggiornare',
utility: 'supporti',
'utility mounts': 'supporti di utilità',
version: 'versione',
yes: 'sì',
PHRASE_BACKUP_DESC: 'Esportazione di tutti i dati su Coriolis per salvarli o trasferirli in un altro Browser/dispositivo'
});
}]);

View File

@@ -3,11 +3,12 @@ angular.module('app').config(['$translateProvider', function($translateProvider)
.useSanitizeValueStrategy('escapeParameters') .useSanitizeValueStrategy('escapeParameters')
.useStorage('Persist') .useStorage('Persist')
.fallbackLanguage('en') // Use English as default/fallback language .fallbackLanguage('en') // Use English as default/fallback language
.registerAvailableLanguageKeys(['en', 'de', 'fr', 'ru'], { // TODO: add 'es' to the array when ready .registerAvailableLanguageKeys(['en', 'de', 'es', 'fr', 'it', 'ru'], {
'en*': 'en', 'en*': 'en',
'de*': 'de', 'de*': 'de',
//'es*': 'es', 'es*': 'es',
'fr*': 'fr', 'fr*': 'fr',
'it*': 'it',
'ru*': 'ru' 'ru*': 'ru'
}) })
.determinePreferredLanguage(); .determinePreferredLanguage();
@@ -15,7 +16,8 @@ angular.module('app').config(['$translateProvider', function($translateProvider)
.value('Languages', { .value('Languages', {
en: 'English', en: 'English',
de: 'Deutsh', de: 'Deutsh',
//es: 'Español', it: 'Italiano',
es: 'Español',
fr: 'Français', fr: 'Français',
ru: 'ру́сский' ru: 'ру́сский'
}); });

View File

@@ -1,4 +1,4 @@
angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength', 'calcJumpRange', 'calcTotalRange', 'lodash', 'ArmourMultiplier', function(Components, calcShieldStrength, calcJumpRange, calcTotalRange, _, ArmourMultiplier) { angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength', 'calcJumpRange', 'calcTotalRange', 'calcSpeed', 'lodash', 'ArmourMultiplier', function(Components, calcShieldStrength, calcJumpRange, calcTotalRange, calcSpeed, _, ArmourMultiplier) {
/** /**
* Returns the power usage type of a slot and it's particular component * Returns the power usage type of a slot and it's particular component
@@ -159,6 +159,7 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
this.updatePower(); this.updatePower();
this.updateJumpStats(); this.updateJumpStats();
this.updateShieldStrength(); this.updateShieldStrength();
this.updateTopSpeed();
} }
}; };
@@ -375,6 +376,7 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
if (powerChange) { if (powerChange) {
this.updatePower(); this.updatePower();
} }
this.updateTopSpeed();
this.updateJumpStats(); this.updateJumpStats();
this.updateShieldStrength(); this.updateShieldStrength();
} }
@@ -395,6 +397,12 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
this.powerDeployed = prevDeployed; this.powerDeployed = prevDeployed;
}; };
Ship.prototype.updateTopSpeed = function() {
var speeds = calcSpeed(this.unladenMass + this.fuelCapacity, this.speed, this.boost, this.common[1].c, this.pipSpeed);
this.topSpeed = speeds['4 Pips'];
this.topBoost = speeds.boost;
};
Ship.prototype.updateShieldStrength = function() { Ship.prototype.updateShieldStrength = function() {
var sgSlot = this.findInternalByGroup('sg'); // Find Shield Generator slot Index if any var sgSlot = this.findInternalByGroup('sg'); // Find Shield Generator slot Index if any
this.shieldStrength = sgSlot && sgSlot.enabled ? calcShieldStrength(this.hullMass, this.baseShieldStrength, sgSlot.c, this.shieldMultiplier) : 0; this.shieldStrength = sgSlot && sgSlot.enabled ? calcShieldStrength(this.hullMass, this.baseShieldStrength, sgSlot.c, this.shieldMultiplier) : 0;

View File

@@ -33,7 +33,7 @@ angular.module('shipyard', ['ngLodash'])
sc: 'Scanner', sc: 'Scanner',
am: 'Auto Field-Maintenance Unit', am: 'Auto Field-Maintenance Unit',
cr: 'Cargo Rack', cr: 'Cargo Rack',
fi: 'FSD Interdictor', fi: 'Frame Shift Drive Interdictor',
hb: 'Hatch Breaker Limpet Controller', hb: 'Hatch Breaker Limpet Controller',
hr: 'Hull Reinforcement Package', hr: 'Hull Reinforcement Package',
rf: 'Refinery', rf: 'Refinery',
@@ -87,10 +87,10 @@ angular.module('shipyard', ['ngLodash'])
}, },
{ // 1 { // 1
title: 'speed', title: 'speed',
props: ['speed', 'boost'], props: ['topSpeed', 'topBoost'],
lbls: ['thrusters', 'boost'], lbls: ['thrusters', 'boost'],
unit: 'm/s', unit: 'm/s',
fmt: 'fRound' fmt: 'fCrd'
}, },
{ // 2 { // 2
title: 'armour', title: 'armour',
@@ -204,7 +204,6 @@ angular.module('shipyard', ['ngLodash'])
/** /**
* Calculate the a ships shield strength based on mass, shield generator and shield boosters used. * Calculate the a ships shield strength based on mass, shield generator and shield boosters used.
* *
* @private
* @param {number} mass Current mass of the ship * @param {number} mass Current mass of the ship
* @param {number} shields Base Shield strength MJ for ship * @param {number} shields Base Shield strength MJ for ship
* @param {object} sg The shield generator used * @param {object} sg The shield generator used
@@ -230,18 +229,23 @@ angular.module('shipyard', ['ngLodash'])
} }
}) })
/** /**
* Calculate the a ships speed based on mass, and thrusters. Currently Innacurate / Incomplete :( * Calculate the a ships speed based on mass, and thrusters.
* *
* @private
* @param {number} mass Current mass of the ship * @param {number} mass Current mass of the ship
* @param {number} baseSpeed Base speed m/s for ship * @param {number} baseSpeed Base speed m/s for ship
* @param {number} baseBoost Base boost m/s for ship * @param {number} baseBoost Base boost speed m/s for ship
* @param {object} thrusters The shield generator used * @param {object} thrusters The Thrusters used
* @return {object} Approximate speed and boost speed in m/s * @param {number} pipSpeed Speed pip multiplier
* @return {object} Approximate speed by pips
*/ */
.value('calcSpeed', function(mass, baseSpeed, baseBoost) { //, thrusters) { .value('calcSpeed', function(mass, baseSpeed, baseBoost, thrusters, pipSpeed) {
//var speed = baseSpeed * (1 + ((thrusters.optmass / mass) * 0.1 ) ); // TODO: find thruser coefficient(s) var multiplier = mass > thrusters.maxmass ? 0 : ((1 - thrusters.M) + (thrusters.M * Math.pow(3 - (2 * Math.max(0.5, mass / thrusters.optmass)), thrusters.P)));
//var boost = baseBoost * (1 + ((thrusters.optmass / mass) * 0.1 ) ); var speed = baseSpeed * multiplier;
return { boost: baseSpeed, speed: baseBoost }; return {
'0 Pips': speed * (1 - (pipSpeed * 4)),
'2 Pips': speed * (1 - (pipSpeed * 2)),
'4 Pips': speed,
'boost': baseBoost * multiplier
};
}); });

View File

@@ -2,7 +2,7 @@
font-size: 0.8em; font-size: 0.8em;
padding: 0.25em 0.5em; padding: 0.25em 0.5em;
background: @primary-disabled; background: @primary-disabled;
text-transform: capitalize;
color: @primary-bg; color: @primary-bg;
pointer-events: none; pointer-events: none;
} }

View File

@@ -39,12 +39,14 @@ svg {
fill: @primary-disabled; fill: @primary-disabled;
} }
&.y { }
text tspan:first-child {
fill: @primary;
}
}
.label {
text-transform: capitalize;
}
.metric {
text-transform: none;
} }
.marker { .marker {
@@ -60,5 +62,6 @@ svg {
fill: @bgBlack; fill: @bgBlack;
stroke: @secondary; stroke: @secondary;
stroke-width: 1px; stroke-width: 1px;
font-size: 0.75em
} }
} }

View File

@@ -163,12 +163,6 @@ table.total {
.smallTablet({ .smallTablet({
width: 50%; width: 50%;
.axis.x {
g.tick:nth-child(2n + 1) text {
display: none;
}
}
}); });
.largePhone({ .largePhone({
@@ -192,12 +186,12 @@ table.total {
&.third { &.third {
width: 33%; width: 33%;
.largePhone({ .smallTablet({
width: 100% !important; width: 100% !important;
}); });
} }
.smallTablet({ .smallScreen({
.axis.x { .axis.x {
g.tick:nth-child(2n + 1) text { g.tick:nth-child(2n + 1) text {
display: none; display: none;

View File

@@ -32,3 +32,9 @@
@rules(); @rules();
} }
} }
.smallScreen(@rules) {
@media only screen and /*(min-width: 601px) and */(max-width: 1400px) {
@rules();
}
}

View File

@@ -63,11 +63,11 @@
<td class="cap" ng-bind="['','small','medium','large','capital'][ship.class] | translate"></td> <td class="cap" ng-bind="['','small','medium','large','capital'][ship.class] | translate"></td>
<td>{{ship.agility}}/10</td> <td>{{ship.agility}}/10</td>
<td> <td>
<span ng-if="th.c.maxmass >= ship.ladenMass">{{fRound(ship.speed)}} <u translate>m/s</u></span> <span ng-if="th.c.maxmass >= ship.ladenMass">{{fCrd(ship.topSpeed)}} <u translate>m/s</u></span>
<span class="warning" ng-if="th.c.maxmass < ship.ladenMass">0 <svg class="icon"><use xlink:href="#warning"></use></svg></span> <span class="warning" ng-if="th.c.maxmass < ship.ladenMass">0 <svg class="icon"><use xlink:href="#warning"></use></svg></span>
</td> </td>
<td> <td>
<span ng-if="pd.c.enginecapacity >= ship.boostEnergy && th.c.maxmass >= ship.ladenMass">{{fRound(ship.boost)}} <u translate>m/s</u></span> <span ng-if="pd.c.enginecapacity >= ship.boostEnergy && th.c.maxmass >= ship.ladenMass">{{fCrd(ship.topBoost)}} <u translate>m/s</u></span>
<span class="warning" ng-if="pd.c.enginecapacity < ship.boostEnergy || th.c.maxmass < ship.ladenMass">0 <span class="warning" ng-if="pd.c.enginecapacity < ship.boostEnergy || th.c.maxmass < ship.ladenMass">0
<svg class="icon"><use xlink:href="#warning"></use></svg> <svg class="icon"><use xlink:href="#warning"></use></svg>
</span> </span>
@@ -229,8 +229,8 @@
<th style="width:3em;" class="sortable" ng-click="sortPwr('type')" translate="TYPE"></th> <th style="width:3em;" class="sortable" ng-click="sortPwr('type')" translate="TYPE"></th>
<th style="width:4em;" class="sortable" ng-click="sortPwr('priority')" translate="PRI"></th> <th style="width:4em;" class="sortable" ng-click="sortPwr('priority')" translate="PRI"></th>
<th colspan="2" class="sortable" ng-click="sortPwr('c.power')" translate="PWR"></th> <th colspan="2" class="sortable" ng-click="sortPwr('c.power')" translate="PWR"></th>
<th style="width:3em;" class="sortable" ng-click="sortPwr(statusRetracted)" translate="RET"></th> <th style="width:3em;" class="sortable" ng-click="sortPwr(statusRetracted)" translate="ret"></th>
<th style="width:3em;" class="sortable" ng-click="sortPwr(statusDeployed)" translate="DEP"></th> <th style="width:3em;" class="sortable" ng-click="sortPwr(statusDeployed)" translate="dep"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -250,11 +250,19 @@
<td class="le shorten cap" ng-click="togglePwr(c)" ng-bind="cName(c)"></td> <td class="le shorten cap" ng-click="togglePwr(c)" ng-bind="cName(c)"></td>
<td ng-click="togglePwr(c)"><u ng-bind="c.type | translate"></u></td> <td ng-click="togglePwr(c)"><u ng-bind="c.type | translate"></u></td>
<td><span ng-click="decPriority(c)" class="flip">&#9658;</span> {{c.priority + 1}} <span ng-click="incPriority(c)">&#9658;</span></td> <td><span ng-click="decPriority(c)" class="flip">&#9658;</span> {{c.priority + 1}} <span ng-click="incPriority(c)">&#9658;</span></td>
<td class="ri" style="width:3.25em;">{{fPwr(c.c.power)}}</td> <td class="ri" style="width:3.25em;" ng-click="togglePwr(c)">{{fPwr(c.c.power)}}</td>
<td class="ri" style="width:3em;"><u>{{f1Pct(c.c.power/ship.powerAvailable)}}</u></td> <td class="ri" style="width:3em;" ng-click="togglePwr(c)"><u>{{f1Pct(c.c.power/ship.powerAvailable)}}</u></td>
<td ng-if="!c.enabled" class="disabled upp" colspan="2" translate="disabled"></td> <td ng-if="!c.enabled" class="disabled upp" colspan="2" translate="disabled" ng-click="togglePwr(c)"></td>
<td class="upp" ng-if="c.enabled" ng-class="STATUS_CLASS[statusRetracted(c)]">{{STATUS[statusRetracted(c)] | translate}}</td> <td class="upp" ng-if="c.enabled" ng-click="togglePwr(c)">
<td class="upp" ng-if="c.enabled" ng-class="STATUS_CLASS[statusDeployed(c)]">{{STATUS[statusDeployed(c)] | translate}}</td> <svg class="icon secondary-disabled" ng-if="statusRetracted(c) == 3"><use xlink:href="#power"><title class="cap">{{'on' | translate}}</title></use></svg>
<svg class="icon warning" ng-if="statusRetracted(c) == 2"><use xlink:href="#no-power"><title class="cap">{{'off' | translate}}</title></use></svg>
<span class="disabled" translate="disabled" ng-if="statusRetracted(c) == 1"></span>
</td>
<td class="upp" ng-if="c.enabled" ng-click="togglePwr(c)">
<svg class="icon secondary-disabled" ng-if="statusDeployed(c) == 3"><use xlink:href="#power"><title class="cap">{{'on' | translate}}</title></use></svg>
<svg class="icon warning" ng-if="statusDeployed(c) == 2"><use xlink:href="#no-power"><title class="cap">{{'off' | translate}}</title></use></svg>
<span class="disabled" translate="disabled" ng-if="statusDeployed(c) == 1"></span>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -348,22 +356,21 @@
</div> </div>
</div> </div>
<div class="group half"> <div class="group third">
<h1 translate="jump range"></h1> <h1 translate="jump range"></h1>
<div line-chart config="jrChart" series="jrSeries"></div> <div line-chart config="jrChart" series="jrSeries"></div>
</div> </div>
<div class="group half"> <div class="group third">
<h1 translate="total range"></h1> <h1 translate="total range"></h1>
<div line-chart config="trChart" series="trSeries"></div> <div line-chart config="trChart" series="trSeries"></div>
</div> </div>
<!-- TODO: Add back in once calcSpeed is dynamic and accurate
<div class="group third"> <div class="group third">
<h1 translate="speed"></h1> <h1 translate="speed"></h1>
<div line-chart config="speedChart" series="speedSeries"></div> <div line-chart config="speedChart" series="speedSeries"></div>
</div> </div>
-->
<div class="group half"> <div class="group half">
<div slider max="ship.fuelCapacity" unit="'T'" on-change="::fuelChange(val)" style="position:relative; margin: 0 auto;"> <div slider max="ship.fuelCapacity" unit="'T'" on-change="::fuelChange(val)" style="position:relative; margin: 0 auto;">

View File

@@ -1,32 +1,37 @@
{ {
"7E": { "grp": "t", "class": 7, "rating": "E", "cost": 633199, "mass": 80, "power": 6.08, "optmass": 1440, "maxmass": 2160 }, "7E": { "grp": "t", "class": 7, "rating": "E", "M": 0.17, "P": 0.235, "cost": 633199, "mass": 80, "power": 6.08, "optmass": 1440, "maxmass": 2160 },
"7D": { "grp": "t", "class": 7, "rating": "D", "cost": 1899597, "mass": 32, "power": 6.84, "optmass": 1620, "maxmass": 2430 }, "7D": { "grp": "t", "class": 7, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 1899597, "mass": 32, "power": 6.84, "optmass": 1620, "maxmass": 2430 },
"7C": { "grp": "t", "class": 7, "rating": "C", "cost": 5698790, "mass": 80, "power": 7.6, "optmass": 1800, "maxmass": 2700 }, "7C": { "grp": "t", "class": 7, "rating": "C", "M": 0.10, "P": 1, "cost": 5698790, "mass": 80, "power": 7.6, "optmass": 1800, "maxmass": 2700 },
"7B": { "grp": "t", "class": 7, "rating": "B", "cost": 17096371, "mass": 128, "power": 8.36, "optmass": 1980, "maxmass": 2970 }, "7B": { "grp": "t", "class": 7, "rating": "B", "M": 0.07, "P": 1.51, "cost": 17096371, "mass": 128, "power": 8.36, "optmass": 1980, "maxmass": 2970 },
"7A": { "grp": "t", "class": 7, "rating": "A", "cost": 51289112, "mass": 80, "power": 9.12, "optmass": 2160, "maxmass": 3240 }, "7A": { "grp": "t", "class": 7, "rating": "A", "M": 0.04, "P": 2.33, "cost": 51289112, "mass": 80, "power": 9.12, "optmass": 2160, "maxmass": 3240 },
"6E": { "grp": "t", "class": 6, "rating": "E", "cost": 199747, "mass": 40, "power": 5.04, "optmass": 960, "maxmass": 1440 },
"6D": { "grp": "t", "class": 6, "rating": "D", "cost": 599242, "mass": 16, "power": 5.67, "optmass": 1080, "maxmass": 1620 }, "6E": { "grp": "t", "class": 6, "rating": "E", "M": 0.17, "P": 0.235, "cost": 199747, "mass": 40, "power": 5.04, "optmass": 960, "maxmass": 1440 },
"6C": { "grp": "t", "class": 6, "rating": "C", "cost": 1797726, "mass": 40, "power": 6.3, "optmass": 1200, "maxmass": 1800 }, "6D": { "grp": "t", "class": 6, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 599242, "mass": 16, "power": 5.67, "optmass": 1080, "maxmass": 1620 },
"6B": { "grp": "t", "class": 6, "rating": "B", "cost": 5393177, "mass": 64, "power": 6.93, "optmass": 1320, "maxmass": 1980 }, "6C": { "grp": "t", "class": 6, "rating": "C", "M": 0.10, "P": 1, "cost": 1797726, "mass": 40, "power": 6.3, "optmass": 1200, "maxmass": 1800 },
"6A": { "grp": "t", "class": 6, "rating": "A", "cost": 16179531, "mass": 40, "power": 7.56, "optmass": 1440, "maxmass": 2160 }, "6B": { "grp": "t", "class": 6, "rating": "B", "M": 0.07, "P": 1.51, "cost": 5393177, "mass": 64, "power": 6.93, "optmass": 1320, "maxmass": 1980 },
"5E": { "grp": "t", "class": 5, "rating": "E", "cost": 63012, "mass": 20, "power": 4.08, "optmass": 560, "maxmass": 840 }, "6A": { "grp": "t", "class": 6, "rating": "A", "M": 0.04, "P": 2.33, "cost": 16179531, "mass": 40, "power": 7.56, "optmass": 1440, "maxmass": 2160 },
"5D": { "grp": "t", "class": 5, "rating": "D", "cost": 189035, "mass": 8, "power": 4.59, "optmass": 630, "maxmass": 945 },
"5C": { "grp": "t", "class": 5, "rating": "C", "cost": 567106, "mass": 20, "power": 5.1, "optmass": 700, "maxmass": 1050 }, "5E": { "grp": "t", "class": 5, "rating": "E", "M": 0.17, "P": 0.235, "cost": 63012, "mass": 20, "power": 4.08, "optmass": 560, "maxmass": 840 },
"5B": { "grp": "t", "class": 5, "rating": "B", "cost": 1701318, "mass": 32, "power": 5.61, "optmass": 770, "maxmass": 1155 }, "5D": { "grp": "t", "class": 5, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 189035, "mass": 8, "power": 4.59, "optmass": 630, "maxmass": 945 },
"5A": { "grp": "t", "class": 5, "rating": "A", "cost": 5103953, "mass": 20, "power": 6.12, "optmass": 840, "maxmass": 1260 }, "5C": { "grp": "t", "class": 5, "rating": "C", "M": 0.10, "P": 1, "cost": 567106, "mass": 20, "power": 5.1, "optmass": 700, "maxmass": 1050 },
"4E": { "grp": "t", "class": 4, "rating": "E", "cost": 19878, "mass": 10, "power": 3.82, "optmass": 280, "maxmass": 420 }, "5B": { "grp": "t", "class": 5, "rating": "B", "M": 0.07, "P": 1.51, "cost": 1701318, "mass": 32, "power": 5.61, "optmass": 770, "maxmass": 1155 },
"4D": { "grp": "t", "class": 4, "rating": "D", "cost": 59633, "mass": 4, "power": 3.69, "optmass": 315, "maxmass": 473 }, "5A": { "grp": "t", "class": 5, "rating": "A", "M": 0.04, "P": 2.33, "cost": 5103953, "mass": 20, "power": 6.12, "optmass": 840, "maxmass": 1260 },
"4C": { "grp": "t", "class": 4, "rating": "C", "cost": 178898, "mass": 10, "power": 4.1, "optmass": 350, "maxmass": 525 },
"4B": { "grp": "t", "class": 4, "rating": "B", "cost": 536693, "mass": 16, "power": 4.51, "optmass": 385, "maxmass": 578 }, "4E": { "grp": "t", "class": 4, "rating": "E", "M": 0.17, "P": 0.235, "cost": 19878, "mass": 10, "power": 3.82, "optmass": 280, "maxmass": 420 },
"4A": { "grp": "t", "class": 4, "rating": "A", "cost": 1610080, "mass": 10, "power": 4.92, "optmass": 420, "maxmass": 630 }, "4D": { "grp": "t", "class": 4, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 59633, "mass": 4, "power": 3.69, "optmass": 315, "maxmass": 473 },
"3E": { "grp": "t", "class": 3, "rating": "E", "cost": 6271, "mass": 5, "power": 2.48, "optmass": 80, "maxmass": 120 }, "4C": { "grp": "t", "class": 4, "rating": "C", "M": 0.10, "P": 1, "cost": 178898, "mass": 10, "power": 4.1, "optmass": 350, "maxmass": 525 },
"3D": { "grp": "t", "class": 3, "rating": "D", "cost": 18812, "mass": 2, "power": 2.79, "optmass": 90, "maxmass": 135 }, "4B": { "grp": "t", "class": 4, "rating": "B", "M": 0.07, "P": 1.51, "cost": 536693, "mass": 16, "power": 4.51, "optmass": 385, "maxmass": 578 },
"3C": { "grp": "t", "class": 3, "rating": "C", "cost": 56435, "mass": 5, "power": 3.1, "optmass": 100, "maxmass": 150 }, "4A": { "grp": "t", "class": 4, "rating": "A", "M": 0.04, "P": 2.33, "cost": 1610080, "mass": 10, "power": 4.92, "optmass": 420, "maxmass": 630 },
"3B": { "grp": "t", "class": 3, "rating": "B", "cost": 169304, "mass": 8, "power": 3.41, "optmass": 110, "maxmass": 165 },
"3A": { "grp": "t", "class": 3, "rating": "A", "cost": 507912, "mass": 5, "power": 3.72, "optmass": 120, "maxmass": 180 }, "3E": { "grp": "t", "class": 3, "rating": "E", "M": 0.17, "P": 0.235, "cost": 6271, "mass": 5, "power": 2.48, "optmass": 80, "maxmass": 120 },
"2E": { "grp": "t", "class": 2, "rating": "E", "cost": 1978, "mass": 2.5, "power": 2, "optmass": 48, "maxmass": 72 }, "3D": { "grp": "t", "class": 3, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 18812, "mass": 2, "power": 2.79, "optmass": 90, "maxmass": 135 },
"2D": { "grp": "t", "class": 2, "rating": "D", "cost": 5934, "mass": 1, "power": 2.25, "optmass": 54, "maxmass": 81 }, "3C": { "grp": "t", "class": 3, "rating": "C", "M": 0.10, "P": 1, "cost": 56435, "mass": 5, "power": 3.1, "optmass": 100, "maxmass": 150 },
"2C": { "grp": "t", "class": 2, "rating": "C", "cost": 17803, "mass": 2.5, "power": 2.5, "optmass": 60, "maxmass": 90 }, "3B": { "grp": "t", "class": 3, "rating": "B", "M": 0.07, "P": 1.51, "cost": 169304, "mass": 8, "power": 3.41, "optmass": 110, "maxmass": 165 },
"2B": { "grp": "t", "class": 2, "rating": "B", "cost": 53408, "mass": 4, "power": 2.75, "optmass": 66, "maxmass": 99 }, "3A": { "grp": "t", "class": 3, "rating": "A", "M": 0.04, "P": 2.33, "cost": 507912, "mass": 5, "power": 3.72, "optmass": 120, "maxmass": 180 },
"2A": { "grp": "t", "class": 2, "rating": "A", "cost": 160224, "mass": 2.5, "power": 3, "optmass": 72, "maxmass": 108 }
} "2E": { "grp": "t", "class": 2, "rating": "E", "M": 0.17, "P": 0.235, "cost": 1978, "mass": 2.5, "power": 2, "optmass": 48, "maxmass": 72 },
"2D": { "grp": "t", "class": 2, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 5934, "mass": 1, "power": 2.25, "optmass": 54, "maxmass": 81 },
"2C": { "grp": "t", "class": 2, "rating": "C", "M": 0.10, "P": 1, "cost": 17803, "mass": 2.5, "power": 2.5, "optmass": 60, "maxmass": 90 },
"2B": { "grp": "t", "class": 2, "rating": "B", "M": 0.07, "P": 1.51, "cost": 53408, "mass": 4, "power": 2.75, "optmass": 66, "maxmass": 99 },
"2A": { "grp": "t", "class": 2, "rating": "A", "M": 0.04, "P": 2.33, "cost": 160224, "mass": 2.5, "power": 3, "optmass": 72, "maxmass": 108 }
}

View File

@@ -63,7 +63,7 @@
{ {
"id": "Ap", "id": "Ap",
"grp": "pa", "grp": "pa",
"name": "Advanced", "name": "Advanced Plasma Accelerator",
"class": 3, "class": 3,
"rating": "B", "rating": "B",
"cost": 4119120, "cost": 4119120,

View File

@@ -1,12 +1,12 @@
{ {
"psg": [ "psg": [
{ "id": "p6", "grp": "psg", "class": 1, "rating": "A", "cost": 132195, "mass": 2.5, "power": 2.52, "minmass": 13, "optmass": 25, "maxmass": 63, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }, { "id": "p6", "grp": "psg", "class": 1, "rating": "A", "cost": 132195, "mass": 2.5, "power": 2.52, "minmass": 13, "optmass": 25, "maxmass": 63, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
{ "id": "p5", "grp": "psg", "class": 2, "rating": "A", "cost": 240336, "mass": 5, "power": 3.15, "minmass": 23, "optmass": 55, "maxmass": 138, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }, { "id": "p5", "grp": "psg", "class": 2, "rating": "A", "cost": 240336, "mass": 5, "power": 3.15, "minmass": 23, "optmass": 55, "maxmass": 138, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
{ "id": "p4", "grp": "psg", "class": 3, "rating": "A", "cost": 761868, "mass": 10, "power": 3.78, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }, { "id": "p4", "grp": "psg", "class": 3, "rating": "A", "cost": 761868, "mass": 10, "power": 3.78, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
{ "id": "p3", "grp": "psg", "class": 4, "rating": "A", "cost": 2415120, "mass": 20, "power": 4.62, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }, { "id": "p3", "grp": "psg", "class": 4, "rating": "A", "cost": 2415120, "mass": 20, "power": 4.62, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
{ "id": "p2", "grp": "psg", "class": 5, "rating": "A", "cost": 7655930, "mass": 40, "power": 5.46, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }, { "id": "p2", "grp": "psg", "class": 5, "rating": "A", "cost": 7655930, "mass": 40, "power": 5.46, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
{ "id": "p1", "grp": "psg", "class": 6, "rating": "A", "cost": 24269297, "mass": 80, "power": 6.51, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }, { "id": "p1", "grp": "psg", "class": 6, "rating": "A", "cost": 24269297, "mass": 80, "power": 6.51, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
{ "id": "p0", "grp": "psg", "class": 7, "rating": "A", "cost": 76933668, "mass": 160, "power": 7.35, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }, { "id": "p0", "grp": "psg", "class": 7, "rating": "A", "cost": 76933668, "mass": 160, "power": 7.35, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
{ "id": "p7", "grp": "psg", "class": 8, "rating": "A", "cost": 243879729, "mass": 320, "power": 8.4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 } { "id": "p7", "grp": "psg", "class": 8, "rating": "A", "cost": 243879729, "mass": 320, "power": 8.4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 2, "optmul": 1.5, "maxmul": 1 }
] ]
} }

View File

@@ -5,36 +5,43 @@
{ "id": "63", "grp": "scb", "class": 8, "rating": "C", "cost": 4359903, "mass": 160, "power": 2.4, "cells": 5, "rechargeRating": "B", "recharge": 0 }, { "id": "63", "grp": "scb", "class": 8, "rating": "C", "cost": 4359903, "mass": 160, "power": 2.4, "cells": 5, "rechargeRating": "B", "recharge": 0 },
{ "id": "62", "grp": "scb", "class": 8, "rating": "B", "cost": 10899756, "mass": 256, "power": 2.88, "cells": 6, "rechargeRating": "A", "recharge": 0 }, { "id": "62", "grp": "scb", "class": 8, "rating": "B", "cost": 10899756, "mass": 256, "power": 2.88, "cells": 6, "rechargeRating": "A", "recharge": 0 },
{ "id": "61", "grp": "scb", "class": 8, "rating": "A", "cost": 27249391, "mass": 160, "power": 3.36, "cells": 5, "rechargeRating": "A", "recharge": 0 }, { "id": "61", "grp": "scb", "class": 8, "rating": "A", "cost": 27249391, "mass": 160, "power": 3.36, "cells": 5, "rechargeRating": "A", "recharge": 0 },
{ "id": "60", "grp": "scb", "class": 7, "rating": "E", "cost": 249137, "mass": 80, "power": 1.24, "cells": 6, "rechargeRating": "D", "recharge": 97 }, { "id": "60", "grp": "scb", "class": 7, "rating": "E", "cost": 249137, "mass": 80, "power": 1.24, "cells": 6, "rechargeRating": "D", "recharge": 97 },
{ "id": "5v", "grp": "scb", "class": 7, "rating": "D", "cost": 622843, "mass": 32, "power": 1.66, "cells": 4, "rechargeRating": "C", "recharge": 130 }, { "id": "5v", "grp": "scb", "class": 7, "rating": "D", "cost": 622843, "mass": 32, "power": 1.66, "cells": 4, "rechargeRating": "C", "recharge": 130 },
{ "id": "5u", "grp": "scb", "class": 7, "rating": "C", "cost": 1557108, "mass": 80, "power": 2.07, "cells": 5, "rechargeRating": "B", "recharge": 163 }, { "id": "5u", "grp": "scb", "class": 7, "rating": "C", "cost": 1557108, "mass": 80, "power": 2.07, "cells": 5, "rechargeRating": "B", "recharge": 163 },
{ "id": "5t", "grp": "scb", "class": 7, "rating": "B", "cost": 3892770, "mass": 128, "power": 2.48, "cells": 6, "rechargeRating": "B", "recharge": 197 }, { "id": "5t", "grp": "scb", "class": 7, "rating": "B", "cost": 3892770, "mass": 128, "power": 2.48, "cells": 6, "rechargeRating": "B", "recharge": 197 },
{ "id": "5s", "grp": "scb", "class": 7, "rating": "A", "cost": 9731925, "mass": 80, "power": 2.9, "cells": 5, "rechargeRating": "A", "recharge": 230 }, { "id": "5s", "grp": "scb", "class": 7, "rating": "A", "cost": 9731925, "mass": 80, "power": 2.9, "cells": 5, "rechargeRating": "A", "recharge": 230 },
{ "id": "5r", "grp": "scb", "class": 6, "rating": "E", "cost": 88978, "mass": 40, "power": 1.06, "cells": 6, "rechargeRating": "D", "recharge": 92 }, { "id": "5r", "grp": "scb", "class": 6, "rating": "E", "cost": 88978, "mass": 40, "power": 1.06, "cells": 6, "rechargeRating": "D", "recharge": 92 },
{ "id": "5q", "grp": "scb", "class": 6, "rating": "D", "cost": 222444, "mass": 16, "power": 1.42, "cells": 4, "rechargeRating": "C", "recharge": 120 }, { "id": "5q", "grp": "scb", "class": 6, "rating": "D", "cost": 222444, "mass": 16, "power": 1.42, "cells": 4, "rechargeRating": "C", "recharge": 120 },
{ "id": "5p", "grp": "scb", "class": 6, "rating": "C", "cost": 556110, "mass": 40, "power": 1.77, "cells": 5, "rechargeRating": "C", "recharge": 148 }, { "id": "5p", "grp": "scb", "class": 6, "rating": "C", "cost": 556110, "mass": 40, "power": 1.77, "cells": 5, "rechargeRating": "C", "recharge": 148 },
{ "id": "5o", "grp": "scb", "class": 6, "rating": "B", "cost": 1390275, "mass": 64, "power": 2.12, "cells": 6, "rechargeRating": "B", "recharge": 176 }, { "id": "5o", "grp": "scb", "class": 6, "rating": "B", "cost": 1390275, "mass": 64, "power": 2.12, "cells": 6, "rechargeRating": "B", "recharge": 176 },
{ "id": "5n", "grp": "scb", "class": 6, "rating": "A", "cost": 3475688, "mass": 40, "power": 2.48, "cells": 5, "rechargeRating": "A", "recharge": 204 }, { "id": "5n", "grp": "scb", "class": 6, "rating": "A", "cost": 3475688, "mass": 40, "power": 2.48, "cells": 5, "rechargeRating": "A", "recharge": 204 },
{ "id": "5m", "grp": "scb", "class": 5, "rating": "E", "cost": 31778, "mass": 20, "power": 0.9, "cells": 5, "rechargeRating": "D", "recharge": 82 }, { "id": "5m", "grp": "scb", "class": 5, "rating": "E", "cost": 31778, "mass": 20, "power": 0.9, "cells": 5, "rechargeRating": "D", "recharge": 82 },
{ "id": "5l", "grp": "scb", "class": 5, "rating": "D", "cost": 79444, "mass": 8, "power": 1.2, "cells": 3, "rechargeRating": "C", "recharge": 109 }, { "id": "5l", "grp": "scb", "class": 5, "rating": "D", "cost": 79444, "mass": 8, "power": 1.2, "cells": 3, "rechargeRating": "C", "recharge": 109 },
{ "id": "5k", "grp": "scb", "class": 5, "rating": "C", "cost": 198611, "mass": 20, "power": 1.5, "cells": 4, "rechargeRating": "C", "recharge": 135 }, { "id": "5k", "grp": "scb", "class": 5, "rating": "C", "cost": 198611, "mass": 20, "power": 1.5, "cells": 4, "rechargeRating": "C", "recharge": 135 },
{ "id": "5j", "grp": "scb", "class": 5, "rating": "B", "cost": 496527, "mass": 32, "power": 1.8, "cells": 5, "rechargeRating": "B", "recharge": 162 }, { "id": "5j", "grp": "scb", "class": 5, "rating": "B", "cost": 496527, "mass": 32, "power": 1.8, "cells": 5, "rechargeRating": "B", "recharge": 162 },
{ "id": "5i", "grp": "scb", "class": 5, "rating": "A", "cost": 1241317, "mass": 20, "power": 2.1, "cells": 4, "rechargeRating": "B", "recharge": 189 }, { "id": "5i", "grp": "scb", "class": 5, "rating": "A", "cost": 1241317, "mass": 20, "power": 2.1, "cells": 4, "rechargeRating": "B", "recharge": 189 },
{ "id": "5h", "grp": "scb", "class": 4, "rating": "E", "cost": 11349, "mass": 10, "power": 0.74, "cells": 5, "rechargeRating": "D", "recharge": 72 }, { "id": "5h", "grp": "scb", "class": 4, "rating": "E", "cost": 11349, "mass": 10, "power": 0.74, "cells": 5, "rechargeRating": "D", "recharge": 72 },
{ "id": "5g", "grp": "scb", "class": 4, "rating": "D", "cost": 28373, "mass": 4, "power": 0.98, "cells": 3, "rechargeRating": "D", "recharge": 94 }, { "id": "5g", "grp": "scb", "class": 4, "rating": "D", "cost": 28373, "mass": 4, "power": 0.98, "cells": 3, "rechargeRating": "D", "recharge": 94 },
{ "id": "5f", "grp": "scb", "class": 4, "rating": "C", "cost": 70932, "mass": 10, "power": 1.23, "cells": 4, "rechargeRating": "C", "recharge": 117 }, { "id": "5f", "grp": "scb", "class": 4, "rating": "C", "cost": 70932, "mass": 10, "power": 1.23, "cells": 4, "rechargeRating": "C", "recharge": 117 },
{ "id": "5e", "grp": "scb", "class": 4, "rating": "B", "cost": 177331, "mass": 16, "power": 1.48, "cells": 5, "rechargeRating": "C", "recharge": 140 }, { "id": "5e", "grp": "scb", "class": 4, "rating": "B", "cost": 177331, "mass": 16, "power": 1.48, "cells": 5, "rechargeRating": "C", "recharge": 140 },
{ "id": "5d", "grp": "scb", "class": 4, "rating": "A", "cost": 443328, "mass": 10, "power": 1.72, "cells": 4, "rechargeRating": "B", "recharge": 163 }, { "id": "5d", "grp": "scb", "class": 4, "rating": "A", "cost": 443328, "mass": 10, "power": 1.72, "cells": 4, "rechargeRating": "B", "recharge": 163 },
{ "id": "5c", "grp": "scb", "class": 3, "rating": "E", "cost": 4053, "mass": 5, "power": 0.61, "cells": 5, "rechargeRating": "D", "recharge": 61 }, { "id": "5c", "grp": "scb", "class": 3, "rating": "E", "cost": 4053, "mass": 5, "power": 0.61, "cells": 5, "rechargeRating": "D", "recharge": 61 },
{ "id": "5b", "grp": "scb", "class": 3, "rating": "D", "cost": 10133, "mass": 2, "power": 0.82, "cells": 3, "rechargeRating": "D", "recharge": 80 }, { "id": "5b", "grp": "scb", "class": 3, "rating": "D", "cost": 10133, "mass": 2, "power": 0.82, "cells": 3, "rechargeRating": "D", "recharge": 80 },
{ "id": "5a", "grp": "scb", "class": 3, "rating": "C", "cost": 25333, "mass": 5, "power": 1.02, "cells": 4, "rechargeRating": "D", "recharge": 100 }, { "id": "5a", "grp": "scb", "class": 3, "rating": "C", "cost": 25333, "mass": 5, "power": 1.02, "cells": 4, "rechargeRating": "D", "recharge": 100 },
{ "id": "59", "grp": "scb", "class": 3, "rating": "B", "cost": 63333, "mass": 8, "power": 1.22, "cells": 5, "rechargeRating": "C", "recharge": 119 }, { "id": "59", "grp": "scb", "class": 3, "rating": "B", "cost": 63333, "mass": 8, "power": 1.22, "cells": 5, "rechargeRating": "C", "recharge": 119 },
{ "id": "58", "grp": "scb", "class": 3, "rating": "A", "cost": 158331, "mass": 5, "power": 1.43, "cells": 4, "rechargeRating": "C", "recharge": 138 }, { "id": "58", "grp": "scb", "class": 3, "rating": "A", "cost": 158331, "mass": 5, "power": 1.43, "cells": 4, "rechargeRating": "C", "recharge": 138 },
{ "id": "57", "grp": "scb", "class": 2, "rating": "E", "cost": 1448, "mass": 2.5, "power": 0.5, "cells": 5, "rechargeRating": "E", "recharge": 46 }, { "id": "57", "grp": "scb", "class": 2, "rating": "E", "cost": 1448, "mass": 2.5, "power": 0.5, "cells": 5, "rechargeRating": "E", "recharge": 46 },
{ "id": "56", "grp": "scb", "class": 2, "rating": "D", "cost": 3619, "mass": 1, "power": 0.67, "cells": 3, "rechargeRating": "D", "recharge": 61 }, { "id": "56", "grp": "scb", "class": 2, "rating": "D", "cost": 3619, "mass": 1, "power": 0.67, "cells": 3, "rechargeRating": "D", "recharge": 61 },
{ "id": "55", "grp": "scb", "class": 2, "rating": "C", "cost": 9048, "mass": 2.5, "power": 0.84, "cells": 4, "rechargeRating": "D", "recharge": 77 }, { "id": "55", "grp": "scb", "class": 2, "rating": "C", "cost": 9048, "mass": 2.5, "power": 0.84, "cells": 4, "rechargeRating": "D", "recharge": 77 },
{ "id": "54", "grp": "scb", "class": 2, "rating": "B", "cost": 22619, "mass": 4, "power": 1.01, "cells": 5, "rechargeRating": "D", "recharge": 92 }, { "id": "54", "grp": "scb", "class": 2, "rating": "B", "cost": 22619, "mass": 4, "power": 1.01, "cells": 5, "rechargeRating": "D", "recharge": 92 },
{ "id": "53", "grp": "scb", "class": 2, "rating": "A", "cost": 56547, "mass": 2.5, "power": 1.18, "cells": 4, "rechargeRating": "C", "recharge": 107 }, { "id": "53", "grp": "scb", "class": 2, "rating": "A", "cost": 56547, "mass": 2.5, "power": 1.18, "cells": 4, "rechargeRating": "C", "recharge": 107 },
{ "id": "52", "grp": "scb", "class": 1, "rating": "E", "cost": 517, "mass": 1.3, "power": 0.41, "cells": 4, "rechargeRating": "E", "recharge": 31 }, { "id": "52", "grp": "scb", "class": 1, "rating": "E", "cost": 517, "mass": 1.3, "power": 0.41, "cells": 4, "rechargeRating": "E", "recharge": 31 },
{ "id": "51", "grp": "scb", "class": 1, "rating": "D", "cost": 1293, "mass": 0.5, "power": 0.55, "cells": 2, "rechargeRating": "E", "recharge": 41 }, { "id": "51", "grp": "scb", "class": 1, "rating": "D", "cost": 1293, "mass": 0.5, "power": 0.55, "cells": 2, "rechargeRating": "E", "recharge": 41 },
{ "id": "50", "grp": "scb", "class": 1, "rating": "C", "cost": 3231, "mass": 1.3, "power": 0.69, "cells": 3, "rechargeRating": "D", "recharge": 51 }, { "id": "50", "grp": "scb", "class": 1, "rating": "C", "cost": 3231, "mass": 1.3, "power": 0.69, "cells": 3, "rechargeRating": "D", "recharge": 51 },

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 60, "baseShieldStrength": 60,
"baseArmour": 162, "baseArmour": 162,
"hullMass": 35, "hullMass": 35,
"masslock": 7 "masslock": 7,
"pipSpeed": 0.13625
}, },
"retailCost": 87808, "retailCost": 87808,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 350, "baseShieldStrength": 350,
"baseArmour": 945, "baseArmour": 945,
"hullMass": 400, "hullMass": 400,
"masslock": 23 "masslock": 23,
"pipSpeed": 0.13875
}, },
"retailCost": 146969451, "retailCost": 146969451,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 140, "baseShieldStrength": 140,
"baseArmour": 378, "baseArmour": 378,
"hullMass": 280, "hullMass": 280,
"masslock": 11 "masslock": 11,
"pipSpeed": 0.13
}, },
"retailCost": 6661153, "retailCost": 6661153,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 80, "baseShieldStrength": 80,
"baseArmour": 216, "baseArmour": 216,
"hullMass": 180, "hullMass": 180,
"masslock": 8 "masslock": 8,
"pipSpeed": 0.125
}, },
"retailCost": 379718, "retailCost": 379718,
"slots": { "slots": {

View File

@@ -6,13 +6,14 @@
"class": 1, "class": 1,
"hullCost": 461341, "hullCost": 461341,
"speed": 283, "speed": 283,
"boost": 384, "boost": 380,
"boostEnergy": 11, "boostEnergy": 11,
"agility": 8, "agility": 8,
"baseShieldStrength": 118, "baseShieldStrength": 118,
"baseArmour": 216, "baseArmour": 216,
"hullMass": 170, "hullMass": 170,
"masslock": 8 "masslock": 8,
"pipSpeed": 0.09875
}, },
"retailCost": 564329, "retailCost": 564329,
"minMassFilter": 180.5, "minMassFilter": 180.5,

View File

@@ -5,14 +5,15 @@
"manufacturer": "Lakon", "manufacturer": "Lakon",
"class": 1, "class": 1,
"hullCost": 1635691, "hullCost": 1635691,
"speed": 242, "speed": 260,
"boost": 316, "boost": 340,
"boostEnergy": 14, "boostEnergy": 14,
"agility": 5, "agility": 5,
"baseShieldStrength": 146, "baseShieldStrength": 146,
"baseArmour": 270, "baseArmour": 270,
"hullMass": 298, "hullMass": 298,
"masslock": 10 "masslock": 10,
"pipSpeed": 0.09625
}, },
"retailCost": 1894760, "retailCost": 1894760,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 60, "baseShieldStrength": 60,
"baseArmour": 72, "baseArmour": 72,
"hullMass": 50, "hullMass": 50,
"masslock": 6 "masslock": 6,
"pipSpeed": 0.0625
}, },
"retailCost": 44800, "retailCost": 44800,
"slots": { "slots": {

View File

@@ -5,14 +5,15 @@
"manufacturer": "Core Dynamics", "manufacturer": "Core Dynamics",
"class": 2, "class": 2,
"hullCost": 19071993, "hullCost": 19071993,
"speed": 216, "speed": 210,
"boost": 361, "boost": 350,
"boostEnergy": 21, "boostEnergy": 21,
"agility": 6, "agility": 6,
"baseShieldStrength": 200, "baseShieldStrength": 200,
"baseArmour": 540, "baseArmour": 540,
"hullMass": 480, "hullMass": 480,
"masslock": 14 "masslock": 14,
"pipSpeed": 0.11125
}, },
"retailCost": 19814205, "retailCost": 19814205,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 200, "baseShieldStrength": 200,
"baseArmour": 540, "baseArmour": 540,
"hullMass": 580, "hullMass": 580,
"masslock": 14 "masslock": 14,
"pipSpeed": 0.0725
}, },
"retailCost": 19814205, "retailCost": 19814205,
"slots": { "slots": {

View File

@@ -4,17 +4,18 @@
"name": "Federal Gunship", "name": "Federal Gunship",
"manufacturer": "Core Dynamics", "manufacturer": "Core Dynamics",
"class": 2, "class": 2,
"hullCost": 34774802, "hullCost": 44774591,
"speed": 172, "speed": 170,
"boost": 284, "boost": 280,
"boostEnergy": 21, "boostEnergy": 21,
"agility": 2, "agility": 2,
"baseShieldStrength": 250, "baseShieldStrength": 250,
"baseArmour": 630, "baseArmour": 630,
"hullMass": 580, "hullMass": 580,
"masslock": 14 "masslock": 14,
"pipSpeed": 0.1025
}, },
"retailCost": 35814211, "retailCost": 45814000,
"slots": { "slots": {
"common": [ "common": [
6, 6,

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 300, "baseShieldStrength": 300,
"baseArmour": 405, "baseArmour": 405,
"hullMass": 250, "hullMass": 250,
"masslock": 12 "masslock": 12,
"pipSpeed": 0.03875
}, },
"retailCost": 51567040, "retailCost": 51567040,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 50, "baseShieldStrength": 50,
"baseArmour": 90, "baseArmour": 90,
"hullMass": 14, "hullMass": 14,
"masslock": 6 "masslock": 6,
"pipSpeed": 0.1625
}, },
"retailCost": 52720, "retailCost": 52720,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 180, "baseShieldStrength": 180,
"baseArmour": 486, "baseArmour": 486,
"hullMass": 400, "hullMass": 400,
"masslock": 12 "masslock": 12,
"pipSpeed": 0.1
}, },
"retailCost": 22296860, "retailCost": 22296860,
"slots": { "slots": {

View File

@@ -5,14 +5,15 @@
"manufacturer": "Gutamaya", "manufacturer": "Gutamaya",
"class": 1, "class": 1,
"hullCost": 2481552, "hullCost": 2481552,
"speed": 277, "speed": 280,
"boost": 380, "boost": 380,
"boostEnergy": 11, "boostEnergy": 11,
"agility": 6, "agility": 6,
"baseShieldStrength": 197, "baseShieldStrength": 197,
"baseArmour": 144, "baseArmour": 144,
"hullMass": 35, "hullMass": 35,
"masslock": 7 "masslock": 7,
"pipSpeed": 0.05375
}, },
"retailCost": 2542931, "retailCost": 2542931,
"slots": { "slots": {

View File

@@ -5,14 +5,15 @@
"manufacturer": "Core Dynamics", "manufacturer": "Core Dynamics",
"class": 1, "class": 1,
"hullCost": 72186, "hullCost": 72186,
"speed": 303, "speed": 300,
"boost": 405, "boost": 400,
"boostEnergy": 9, "boostEnergy": 9,
"agility": 6, "agility": 6,
"baseShieldStrength": 80, "baseShieldStrength": 80,
"baseArmour": 108, "baseArmour": 108,
"hullMass": 50, "hullMass": 50,
"masslock": 6 "masslock": 6,
"pipSpeed": 0.075
}, },
"retailCost": 110833, "retailCost": 110833,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 220, "baseShieldStrength": 220,
"baseArmour": 396, "baseArmour": 396,
"hullMass": 580, "hullMass": 580,
"masslock": 13 "masslock": 13,
"pipSpeed": 0.08375
}, },
"retailCost": 48539887, "retailCost": 48539887,
"slots": { "slots": {

View File

@@ -6,13 +6,14 @@
"class": 2, "class": 2,
"hullCost": 55171395, "hullCost": 55171395,
"speed": 230, "speed": 230,
"boost": 280, "boost": 300,
"boostEnergy": 24, "boostEnergy": 24,
"agility": 6, "agility": 6,
"baseShieldStrength": 260, "baseShieldStrength": 260,
"baseArmour": 468, "baseArmour": 468,
"hullMass": 350, "hullMass": 350,
"masslock": 17 "masslock": 17,
"pipSpeed": 0.0975
}, },
"retailCost": 56978179, "retailCost": 56978179,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 40, "baseShieldStrength": 40,
"baseArmour": 108, "baseArmour": 108,
"hullMass": 25, "hullMass": 25,
"masslock": 6 "masslock": 6,
"pipSpeed": 0.1375
}, },
"retailCost": 32000, "retailCost": 32000,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 90, "baseShieldStrength": 90,
"baseArmour": 162, "baseArmour": 162,
"hullMass": 155, "hullMass": 155,
"masslock": 8 "masslock": 8,
"pipSpeed": 0.1475
}, },
"retailCost": 1045945, "retailCost": 1045945,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 120, "baseShieldStrength": 120,
"baseArmour": 216, "baseArmour": 216,
"hullMass": 420, "hullMass": 420,
"masslock": 10 "masslock": 10,
"pipSpeed": 0.16625
}, },
"retailCost": 17472252, "retailCost": 17472252,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 240, "baseShieldStrength": 240,
"baseArmour": 432, "baseArmour": 432,
"hullMass": 1000, "hullMass": 1000,
"masslock": 16 "masslock": 16,
"pipSpeed": 0.17375
}, },
"retailCost": 76555842, "retailCost": 76555842,
"slots": { "slots": {

View File

@@ -6,13 +6,14 @@
"class": 1, "class": 1,
"hullCost": 95893, "hullCost": 95893,
"speed": 320, "speed": 320,
"boost": 400, "boost": 380,
"boostEnergy": 11, "boostEnergy": 11,
"agility": 6, "agility": 6,
"baseShieldStrength": 105, "baseShieldStrength": 105,
"baseArmour": 126, "baseArmour": 126,
"hullMass": 60, "hullMass": 60,
"masslock": 7 "masslock": 7,
"pipSpeed": 0.09375
}, },
"retailCost": 142931, "retailCost": 142931,
"slots": { "slots": {

View File

@@ -12,7 +12,8 @@
"baseShieldStrength": 240, "baseShieldStrength": 240,
"baseArmour": 288, "baseArmour": 288,
"hullMass": 230, "hullMass": 230,
"masslock": 10 "masslock": 10,
"pipSpeed": 0.02375
}, },
"retailCost": 4925615, "retailCost": 4925615,
"slots": { "slots": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "coriolis_shipyard", "name": "coriolis_shipyard",
"version": "1.5.5", "version": "1.7.2",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/cmmcleod/coriolis" "url": "https://github.com/cmmcleod/coriolis"

View File

@@ -179,7 +179,7 @@
{ {
"class": 2, "class": 2,
"rating": "A", "rating": "A",
"group": "FSD Interdictor" "group": "Frame Shift Drive Interdictor"
} }
] ]
}, },
@@ -187,7 +187,7 @@
"class": 3, "class": 3,
"hullCost": 141889932, "hullCost": 141889932,
"speed": 180, "speed": 180,
"boost": 240, "boost": 244,
"boostEnergy": 29, "boostEnergy": 29,
"agility": 2, "agility": 2,
"baseShieldStrength": 350, "baseShieldStrength": 350,

View File

@@ -245,7 +245,7 @@
"rating": "A", "rating": "A",
"enabled": true, "enabled": true,
"priority": 3, "priority": 3,
"group": "FSD Interdictor" "group": "Frame Shift Drive Interdictor"
} }
] ]
}, },
@@ -253,13 +253,16 @@
"class": 3, "class": 3,
"hullCost": 141889932, "hullCost": 141889932,
"speed": 180, "speed": 180,
"topSpeed": 186.5,
"boost": 240, "boost": 240,
"boostEnergy": 29, "boostEnergy": 29,
"topBoost": 248.66,
"agility": 2, "agility": 2,
"baseShieldStrength": 350, "baseShieldStrength": 350,
"baseArmour": 945, "baseArmour": 945,
"hullMass": 400, "hullMass": 400,
"masslock": 23, "masslock": 23,
"pipSpeed": 0.14,
"shipCostMultiplier": 1, "shipCostMultiplier": 1,
"componentCostMultiplier": 1, "componentCostMultiplier": 1,
"fuelCapacity": 32, "fuelCapacity": 32,

View File

@@ -2188,7 +2188,7 @@
{ {
"class": 2, "class": 2,
"rating": "A", "rating": "A",
"group": "FSD Interdictor" "group": "Frame Shift Drive Interdictor"
} }
] ]
}, },
@@ -2885,7 +2885,7 @@
{ {
"class": 2, "class": 2,
"rating": "A", "rating": "A",
"group": "FSD Interdictor" "group": "Frame Shift Drive Interdictor"
} }
] ]
}, },
@@ -3145,7 +3145,7 @@
{ {
"class": 1, "class": 1,
"rating": "A", "rating": "A",
"group": "FSD Interdictor" "group": "Frame Shift Drive Interdictor"
}, },
{ {
"class": 1, "class": 1,

View File

@@ -1,6 +1,20 @@
describe('Database', function() { describe('Database', function() {
var shipProperties = ['name', 'manufacturer', 'class', 'hullCost', 'speed', 'boost', 'agility', 'baseShieldStrength', 'baseArmour', 'hullMass', 'masslock']; var shipProperties = [
'name',
'manufacturer',
'class',
'hullCost',
'speed',
'boost',
'boostEnergy',
'agility',
'baseShieldStrength',
'baseArmour',
'hullMass',
'masslock',
'pipSpeed'
];
it('has ships and components', function() { it('has ships and components', function() {
expect(DB.ships).toBeDefined() expect(DB.ships).toBeDefined()

View File

@@ -21,7 +21,8 @@ describe("Ship Factory", function() {
ship.buildWith(shipData.defaults); ship.buildWith(shipData.defaults);
expect(ship.totalCost).toEqual(shipData.retailCost, s + ' retail cost does not match default build cost'); expect(ship.totalCost).toEqual(shipData.retailCost, s + ' retail cost does not match default build cost');
expect(ship.priorityBands[0].retracted).toBeGreaterThan(0, s + ' cargo'); expect(ship.cargoCapacity).toBeDefined(s + ' cargo');
expect(ship.priorityBands[0].retracted).toBeGreaterThan(0, s + ' priorityBands');
expect(ship.powerAvailable).toBeGreaterThan(0, s + ' powerAvailable'); expect(ship.powerAvailable).toBeGreaterThan(0, s + ' powerAvailable');
expect(ship.unladenRange).toBeGreaterThan(0, s + ' unladenRange'); expect(ship.unladenRange).toBeGreaterThan(0, s + ' unladenRange');
expect(ship.ladenRange).toBeGreaterThan(0, s + ' ladenRange'); expect(ship.ladenRange).toBeGreaterThan(0, s + ' ladenRange');
@@ -30,6 +31,7 @@ describe("Ship Factory", function() {
expect(ship.ladenTotalRange).toBeGreaterThan(0, s + ' ladenTotalRange'); expect(ship.ladenTotalRange).toBeGreaterThan(0, s + ' ladenTotalRange');
expect(ship.shieldStrength).toBeGreaterThan(0, s + ' shieldStrength'); expect(ship.shieldStrength).toBeGreaterThan(0, s + ' shieldStrength');
expect(ship.armour).toBeGreaterThan(0, s + ' armour'); expect(ship.armour).toBeGreaterThan(0, s + ' armour');
expect(ship.topSpeed).toBeGreaterThan(0, s + ' topSpeed');
} }
}); });