Compare commits

...

97 Commits
1.5.1 ... 1.8.2

Author SHA1 Message Date
Colin McLeod
e837bb68fb Bumping version to 1.8.2 2015-10-09 15:48:54 -07:00
Colin McLeod
e2adc7bdc4 Tweak AFMU for explorer build 2015-10-09 15:44:10 -07:00
Colin McLeod
22716517c5 Remove A-rated build type, now redundant 2015-10-09 15:23:59 -07:00
Colin McLeod
8b82965c12 Fix section quick-fit menu z-index / overlap 2015-10-09 15:23:43 -07:00
Colin McLeod
65cf975a35 Merge pull request #104 from sf302/master
Hull reinforcement auto-fill, hardpoint clobber behavior tweak
2015-10-09 15:09:10 -07:00
Kevin Chang
1c78fea48f Fix behavior for hull reinforcement max at 5D 2015-10-08 22:51:00 -07:00
Kevin Chang
08f49c8339 Fix SCB internal clobber 2015-10-08 19:29:46 -07:00
Kevin Chang
bed81d26b2 Alter auto-fill clobbering behavior for hardpoints 2015-10-08 19:20:17 -07:00
Kevin Chang
38b13fca27 Add armor autofill, prevent internal fill clobber 2015-10-08 18:06:01 -07:00
Colin McLeod
0869230b13 Fix to standard fit all class B. Closes #103 2015-10-08 15:32:01 -07:00
Colin McLeod
80d4b6b431 fix power bug when swapping disabled components 2015-10-07 20:34:52 -07:00
Colin McLeod
fb7e9136d4 Merge pull request #102 from sf302/master
Additional auto-fill for SCB and other weapons
2015-10-07 20:25:38 -07:00
Colin McLeod
059ff367ff Price changes for 1.4 2015-10-07 20:13:21 -07:00
Kevin Chang
d322e062ad Trimming back down to just laser/MC/cannon fills 2015-10-07 20:09:51 -07:00
Kevin Chang
f807f4222f Less hacks to get the same thing done 2015-10-07 20:06:04 -07:00
Kevin Chang
1d4b046723 Tweaked to reenable slot if previously disabled 2015-10-07 19:51:36 -07:00
Kevin Chang
b9fc114e02 Additional auto-fill for SCB and other weapons 2015-10-07 19:43:39 -07:00
Colin McLeod
50047411c3 Correct Viper boost speed 2015-10-07 17:57:22 -07:00
Colin McLeod
610ded2f83 Fix ammo sorting by qty and unit price 2015-10-07 11:35:36 -07:00
Colin McLeod
2a644e787a Merge pull request #100 from sf302/master
Added new 'Reload Costs' tab for ammo, digit display cleanup
2015-10-07 11:33:05 -07:00
Colin McLeod
90b339e5c3 Correct 50% warning on power band 2015-10-07 11:32:52 -07:00
Colin McLeod
a213ad12d0 lint fix 2015-10-07 02:17:49 -07:00
Colin McLeod
a4b8b942a1 Show warning when Power priority group 1 exceeds 50%. 2015-10-07 02:16:00 -07:00
Colin McLeod
df7ef0fbdb Adding more outiftting sub section menu options 2015-10-07 02:14:45 -07:00
Colin McLeod
f42dc481df Added Outfitting section sub-menu 2015-10-06 22:49:09 -07:00
Colin McLeod
623be748c0 New and improved shipyard/home page 2015-10-06 20:06:13 -07:00
Colin McLeod
35c84ee0f0 Handle rounding erros on priority bands 2015-10-06 20:06:13 -07:00
Colin McLeod
4d84f271be Update tests for ignore auto generated property 2015-10-06 20:06:13 -07:00
Colin McLeod
5458c548fb Detailed discover scanner does not use any power 2015-10-06 20:06:12 -07:00
Colin McLeod
a9be057fe8 Readbility changes for fsd, fuel tank, and ls data 2015-10-06 20:06:12 -07:00
Colin McLeod
564c228d41 Massive refactoring to Ship class 2015-10-06 20:06:12 -07:00
Colin McLeod
3f6875abb6 Add find lightest shield generator 2015-10-06 20:06:12 -07:00
Colin McLeod
a2aa829b45 Add/impromve find compoonent functions 2015-10-06 20:06:12 -07:00
Colin McLeod
08b6ec9e31 Add size map 2015-10-06 20:06:12 -07:00
Colin McLeod
ee99d33275 Bumping version to 1.8.0 2015-10-06 20:06:12 -07:00
Colin McLeod
7b9e8dbc7d Sort ships by actual name not file name 2015-10-06 20:06:12 -07:00
Colin McLeod
44f45e7e93 Handle comparison when build is missing. Closes #96 2015-10-06 20:06:12 -07:00
Colin McLeod
a49f7ec594 Handle special characters in build or comparison name. Closes #101 2015-10-06 20:06:12 -07:00
Colin McLeod
9ee12e4167 Rename DBS file 2015-10-06 20:06:11 -07:00
Kevin Chang
33ad7d909a Fix torpedo ammo cost data 2015-10-05 20:27:22 -07:00
Kevin Chang
e5e29dc6cb Cleaned up lint errors 2015-10-05 20:15:46 -07:00
Kevin Chang
34dd40bcbf Added new 'Reload Costs' tab for ammo, digit display cleanup 2015-10-05 20:08:36 -07:00
Colin McLeod
0e8e9f5cbc Merge pull request #97 from SmokyBird/patch-1
Update fr.js
2015-10-05 16:30:00 -07:00
SmokyBird
d39cbb3ef5 Update fr.js
Finally found the full French translation for the Hull Reinforcement.
2015-10-06 00:47:07 +02:00
Colin McLeod
5470b241f6 Merge pull request #94 from koreldan/master
Minor corrections
2015-09-28 09:24:49 -07:00
enrico
6507c22355 minor corrections 2015-09-27 15:36:11 +02:00
Enrico
96c2f4b3b6 Merge pull request #1 from cmmcleod/master
updating
2015-09-27 15:26:35 +02:00
Colin McLeod
b0c521246e Bumping version to 1.7.3 2015-09-22 11:53:08 -07:00
Colin McLeod
5c0616ad47 Display clip + ammo reserve more intelligently 2015-09-22 11:52:44 -07:00
Colin McLeod
523f37ccc1 Correct Torpedo Pylon ammo reserve 2015-09-22 11:52:13 -07:00
Colin McLeod
5e2768bbf6 Correct Pack-Hound cost 2015-09-22 11:51:56 -07:00
Colin McLeod
61b3e7d47d Corrected Federal Gunship hull cost 2015-09-22 11:51:25 -07:00
Colin McLeod
ed6fc32d76 Correct Shield Cell Bank recharge values 2015-09-22 11:50:00 -07:00
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
Colin McLeod
6e65d67f14 Bumping version to 1.5.5 2015-09-05 23:01:19 -07:00
Colin McLeod
a127e2f5a5 Merge pull request #85 from gbiobob/master
Corrections for French localisation
2015-09-05 11:01:13 -07:00
gbiobob
9154b7f38c Corrections for French localisation 2015-09-05 11:13:26 +02:00
Colin McLeod
c2d8cad249 Bumping version to 1.5.4 2015-09-04 17:31:08 -07:00
Colin McLeod
e9ffe5baec Fix to Russian language name 2015-09-04 17:30:41 -07:00
Colin McLeod
fffa325e83 Corrections to French translation 2015-09-04 12:45:14 -07:00
Colin McLeod
ed14ed2bb7 Bumping version to 1.5.2 2015-09-03 12:19:59 -07:00
Colin McLeod
7c9e020b88 Minor french translation correction 2015-09-03 12:10:21 -07:00
Colin McLeod
d711d1519b Correct base shield strength on fed assault and gun ship 2015-09-03 12:07:50 -07:00
Colin McLeod
3361f7e435 Another russian translation correction 2015-09-03 12:01:13 -07:00
Colin McLeod
3a79f99f77 Correct Russian translations 2015-09-03 11:58:29 -07:00
104 changed files with 2607 additions and 4123 deletions

View File

@@ -1,3 +0,0 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 32 32">
<path d="M10.063 26l1.8-6h8.274l1.8 6h3.551l-6-20h-6.976l-6 20h3.551zM14.863 10h2.274l1.8 6h-5.874l1.8-6z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 265 B

View File

@@ -1,6 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by IcoMoon.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 32 32">
<path d="M18 23l3 3 10-10-10-10-3 3 7 7z"></path>
<path d="M14 9l-3-3-10 10 10 10 3-3-7-7z"></path>

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 248 B

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

@@ -0,0 +1,3 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
<path d="M448 128v-16c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576zM256 256v-128h128v128h-128zM832 432c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-576v128h576v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h192v-128h-192v-16zM640 576v-128h128v128h-128zM448 752c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576v-16zM256 896v-128h128v128h-128z"></path>
</svg>

After

Width:  |  Height:  |  Size: 646 B

View File

@@ -1,3 +0,0 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="724" height="1024" viewBox="0 0 1024 1024">
<path d="M0 1024c128-384 463-1024 1024-1024-263 211-384 704-576 704s-192 0-192 0l-192 320h-64z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 218 B

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">
<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" sizes="180x180" href="/images/logo/apple-touch-icon-180x180.png">
<!-- 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">
<!-- iPhone, iPod Touch, landscape -->

View File

@@ -1,6 +1,6 @@
angular.module('app', ['ui.router', 'ct.ui.router.extras.sticky', 'ui.sortable', 'shipyard', 'ngLodash', 'app.templates', 'pascalprecht.translate'])
.run(['$rootScope', '$location', '$window', '$document', '$state', '$translate', 'localeFormat', 'Persist', 'Discounts', 'Languages',
function($rootScope, $location, $window, $doc, $state, $translate, localeFormat, Persist, Discounts, Languages) {
.run(['$rootScope', '$location', '$window', '$document', '$state', '$translate', 'localeFormat', 'Persist', 'Discounts', 'Languages', 'SizeMap',
function($rootScope, $location, $window, $doc, $state, $translate, localeFormat, Persist, Discounts, Languages, SizeMap) {
// App is running as a standalone web app on tablet/mobile
var isStandAlone;
// This was causing issues on Windows phones ($window.external was causing Angular js to throw an exception). Backup is to try this and set isStandAlone to false if this fails.
@@ -42,9 +42,8 @@ function($rootScope, $location, $window, $doc, $state, $translate, localeFormat,
// Global Reference variables
$rootScope.insurance = { opts: [{ name: 'standard', pct: 0.05 }, { name: 'alpha', pct: 0.025 }, { name: 'beta', pct: 0.0375 }] };
$rootScope.discounts = { opts: Discounts };
$rootScope.STATUS = ['', 'disabled', 'off', 'on'];
$rootScope.STATUS_CLASS = ['', 'disabled', 'warning', 'secondary-disabled'];
$rootScope.sizeRatio = Persist.getSizeRatio();
$rootScope.SZM = SizeMap;
$rootScope.title = 'Coriolis';
$rootScope.changeLanguage = function() {

View File

@@ -20,6 +20,11 @@ angular.module('app').controller('ComparisonController', ['lodash', '$rootScope'
$scope.addBuild = function(id, name, code) {
var data = Ships[id]; // Get ship properties
code = code ? code : Persist.builds[id][name]; // Retrieve build code if not passed
if (!code) { // No build found
return;
}
var b = new Ship(id, data.properties, data.slots); // Create a new Ship instance
Serializer.toShip(b, code); // Populate components from code
// Extend ship instance and add properties below

View File

@@ -145,11 +145,11 @@ angular.module('app').controller('ImportController', ['lodash', '$rootScope', '$
group = _.find(GroupMap, equalsIgnoreCase, name);
var hpid = Components.findHardpointId(group, cl, rating, group ? null : name, mount, missile);
var hp = Components.findHardpoint(group, cl, rating, group ? null : name, mount, missile);
if (!hpid) { throw 'Unknown component: "' + line + '"'; }
if (!hp) { throw 'Unknown component: "' + line + '"'; }
ship.use(slot, hpid, Components.hardpoints(hpid), true);
ship.use(slot, hp.id, hp, true);
} else if (typeSize == 'BH') {
var bhId = bhMap[name.toLowerCase()];
@@ -177,11 +177,11 @@ angular.module('app').controller('ImportController', ['lodash', '$rootScope', '$
group = _.find(GroupMap, equalsIgnoreCase, name);
var intId = Components.findInternalId(group, cl, rating, group ? null : name);
var intComp = Components.findInternal(group, cl, rating, group ? null : name);
if (!intId) { throw 'Unknown component: "' + line + '"'; }
if (!intComp) { throw 'Unknown component: "' + line + '"'; }
ship.use(slot, intId, Components.internal(intId));
ship.use(slot, intComp.id, intComp);
}
}

View File

@@ -13,6 +13,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
}
$scope.buildName = $p.bn;
$scope.ships = Ships;
$rootScope.title = ship.name + ($scope.buildName ? ' - ' + $scope.buildName : '');
$scope.ship = ship;
$scope.pp = ship.common[0]; // Power Plant
@@ -27,7 +28,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
$scope.costList = ship.costList;
$scope.powerList = ship.powerList;
$scope.priorityBands = ship.priorityBands;
$scope.availCS = Components.forShip(ship.id);
$scope.availCS = ship.getAvailableComponents();
$scope.selectedSlot = null;
$scope.savedCode = Persist.getBuild(ship.id, $scope.buildName);
$scope.canSave = Persist.isEnabled();
@@ -39,6 +40,8 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
$scope.retroPredicate = 'netCost';
$scope.costDesc = true;
$scope.costPredicate = 'c.cost';
$scope.ammoDesc = false;
$scope.ammoPredicate = 'ammoName';
$scope.costTab = Persist.getCostTab() || 'costs';
if ($scope.savedCode) {
@@ -59,7 +62,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
yMax: ship.unladenRange,
yMin: 0,
func: function(cargo) { // X Axis is Cargo
return ship.jumpRangeWithMass(ship.unladenMass + $scope.fuel + cargo, $scope.fuel);
return ship.getJumpRangeForMass(ship.unladenMass + $scope.fuel + cargo, $scope.fuel);
}
};
$scope.jrChart = {
@@ -100,11 +103,12 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
$scope.speedSeries = {
xMin: 0,
xMax: ship.cargoCapacity,
yMax: 500,
yMax: calcSpeed(ship.unladenMass, ship.speed, ship.boost, $scope.th.c, ship.pipSpeed).boost,
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
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 = {
@@ -183,25 +187,9 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
}
};
/**
* Strip ship to A-class and biggest A-class shield generator with military bulkheads
*/
$scope.aRatedBuild = function() {
for (var i = 0, l = ship.common.length - 1; i < l; i++) { // All except Fuel Tank
var id = ship.common[i].maxClass + 'A';
ship.use(ship.common[i], id, Components.common(i, id));
}
ship.hardpoints.forEach(function(slot) { ship.use(slot, null, null); });
ship.internal.forEach(function(slot) { ship.use(slot, null, null); });
ship.internal.some(function(slot) {
if (typeof slot.eligible === 'undefined') { // Assuming largest slot can hold an eligible shield
id = Components.findInternalId('Shield Generator', slot.maxClass, 'A');
ship.use(slot, id, Components.internal(id));
return true;
}
});
ship.useBulkhead(2);
updateState(Serializer.fromShip(ship));
$scope.resetBuild = function() {
ship.buildWith(data.defaults); // Populate with default components
updateState(null);
};
/**
@@ -209,21 +197,148 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
* without power management.
*/
$scope.optimizeMassBuild = function() {
var common = ship.common;
ship.hardpoints.forEach(function(slot) { ship.use(slot, null, null); });
ship.internal.forEach(function(slot) { ship.use(slot, null, null); });
ship.useBulkhead(0);
ship.use(common[2], common[2].maxClass + 'A', Components.common(2, common[2].maxClass + 'A')); // FSD
ship.use(common[3], common[3].maxClass + 'D', Components.common(3, common[3].maxClass + 'D')); // Life Support
ship.use(common[5], common[5].maxClass + 'D', Components.common(5, common[5].maxClass + 'D')); // Sensors
updateState(Serializer.fromShip(ship.optimizeMass()));
};
var pd = $scope.availCS.lightestPowerDist(ship.boostEnergy); // Find lightest Power Distributor that can still boost
ship.use(ship.common[4], pd, Components.common(4, pd));
var th = $scope.availCS.lightestThruster(ship.ladenMass); // Find lightest Thruster that still works for the ship at max mass
ship.use(ship.common[1], th, Components.common(1, th));
var pp = $scope.availCS.lightestPowerPlant(ship.powerRetracted); // Find lightest Power plant that can power the ship
ship.use(ship.common[0], pp, Components.common(0, pp));
/**
* Optimize for the lower mass build that can still boost and power the ship
* without power management.
*/
$scope.optimizeCommon = function() {
updateState(Serializer.fromShip(ship.useLightestCommon()));
};
$scope.useCommon = function(rating) {
updateState(Serializer.fromShip(ship.useCommon(rating)));
};
$scope.useHardpoint = function(group, mount, clobber, missile) {
updateState(Serializer.fromShip(ship.useWeapon(group, mount, clobber, missile)));
};
$scope.useUtility = function(group, rating, clobber) {
updateState(Serializer.fromShip(ship.useUtility(group, rating, clobber)));
};
$scope.emptyInternal = function() {
updateState(Serializer.fromShip(ship.emptyInternal()));
};
$scope.emptyHardpoints = function() {
updateState(Serializer.fromShip(ship.emptyWeapons()));
};
$scope.emptyUtility = function() {
updateState(Serializer.fromShip(ship.emptyUtility()));
};
$scope.fillWithCargo = function() {
ship.internal.forEach(function(slot) {
var id = Components.findInternalId('cr', slot.maxClass, 'E');
if (!slot.c) {
ship.use(slot, id, Components.internal(id));
}
});
updateState(Serializer.fromShip(ship));
};
$scope.fillWithCells = function() {
var chargeCap = 0; // Capacity of single activation
ship.internal.forEach(function(slot) {
var id = Components.findInternalId('scb', slot.maxClass, 'A');
if (!slot.c && (!slot.eligible || slot.eligible.scb)) { // Check eligibility because of Orca, don't overwrite generator
ship.use(slot, id, Components.internal(id));
chargeCap += Components.internal(id).recharge;
ship.setSlotEnabled(slot, chargeCap <= ship.shieldStrength); // Don't waste cell capacity on overcharge
}
});
updateState(Serializer.fromShip(ship));
};
$scope.fillWithArmor = function() {
ship.internal.forEach(function(slot) {
var hr = Components.findInternal('hr', Math.min(slot.maxClass, 5), 'D'); // Hull reinforcements top out at 5D
if (!slot.c && hr) {
ship.use(slot, hr.id, hr);
}
});
updateState(Serializer.fromShip(ship));
};
/**
* Fill all internal slots with Cargo Racks, and optmize internal components.
* Hardpoints are not altered.
*/
$scope.optimizeCargo = function() {
ship.internal.forEach(function(slot) {
var id = Components.findInternalId('cr', slot.maxClass, 'E');
ship.use(slot, id, Components.internal(id));
});
ship.useLightestCommon();
updateState(Serializer.fromShip(ship));
};
/**
* Optimize common and internal components, hardpoints for exploration
*/
$scope.optimizeExplorer = function() {
var intLength = ship.internal.length,
heatSinkCount = 2, // Fit 2 heat sinks if possible
afmUnitCount = 2, // Fit 2 AFM Units if possible
sgSlot,
fuelScoopSlot,
sgId = $scope.availCS.lightestShieldGenerator(ship.hullMass),
sg = Components.internal(sgId);
ship.setSlotEnabled(ship.cargoHatch, false)
.use(ship.internal[--intLength], '2f', Components.internal('2f')) // Advanced Discovery Scanner
.use(ship.internal[--intLength], '2i', Components.internal('2i')); // Detailed Surface Scanner
for (var i = 0; i < intLength; i++) {
var slot = ship.internal[i];
var nextSlot = (i + 1) < intLength ? ship.internal[i + 1] : null;
if (!fuelScoopSlot && (!slot.eligible || slot.eligible.fs)) { // Fit best possible Fuel Scoop
var fuelScoopId = Components.findInternalId('fs', slot.maxClass, 'A');
fuelScoopSlot = slot;
ship.use(fuelScoopSlot, fuelScoopId, Components.internal(fuelScoopId));
ship.setSlotEnabled(fuelScoopSlot, true);
// Mount a Shield generator if possible AND an AFM Unit has been mounted already (Guarantees at least 1 AFM Unit)
} else if (!sgSlot && afmUnitCount < 2 && sg.class <= slot.maxClass && (!slot.eligible || slot.eligible.sg) && (!nextSlot || nextSlot.maxClass < sg.class)) {
sgSlot = slot;
ship.use(sgSlot, sgId, sg);
ship.setSlotEnabled(sgSlot, true);
} else if (afmUnitCount > 0 && (!slot.eligible || slot.eligible.am)) {
afmUnitCount--;
var am = Components.findInternal('am', slot.maxClass, afmUnitCount ? 'B' : 'A');
ship.use(slot, am.id, am);
ship.setSlotEnabled(slot, false); // Disabled power for AFM Unit
} else {
ship.use(slot, null, null);
}
}
ship.hardpoints.forEach(function(s) {
if (s.maxClass == 0 && heatSinkCount) { // Mount up to 2 heatsinks
ship.use(s, '02', Components.hardpoints('02'));
ship.setSlotEnabled(s, heatSinkCount == 2); // Only enable a single Heatsink
heatSinkCount--;
} else {
ship.use(s, null, null);
}
});
if (sgSlot) {
// The SG and Fuel scoop to not need to be powered at the same time
if (sgSlot.c.power > fuelScoopSlot.c.power) { // The Shield generator uses the most power
ship.setSlotEnabled(fuelScoopSlot, false);
} else { // The Fuel scoop uses the most power
ship.setSlotEnabled(sgSlot, false);
}
}
ship.useLightestCommon({ pd: '1D', ppRating: 'A' });
updateState(Serializer.fromShip(ship));
};
@@ -289,6 +404,15 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
ship.setCostIncluded(item, !item.incCost);
};
/**
* Toggle cost of the selected component for retrofitting comparison
* @param {object} item The component being toggled
*/
$scope.toggleRetrofitCost = function(item) {
retrofitShip.setCostIncluded(item, !item.incCost);
updateRetrofitCosts();
};
/**
* [sortCost description]
* @param {[type]} key [description]
@@ -305,8 +429,13 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
};
$scope.sortRetrofit = function(key) {
$scope.retroDesc = $scope.retroPredicate == key ? !$scope.retroDesc : $scope.retroDesc;
$scope.retroPredicate = key;
$scope.retroDesc = $scope.retroPredicate == key ? !$scope.retroDesc : $scope.retroDesc;
$scope.retroPredicate = key;
};
$scope.sortAmmo = function(key) {
$scope.ammoDesc = $scope.ammoPredicate == key ? !$scope.ammoDesc : $scope.ammoDesc;
$scope.ammoPredicate = key;
};
/**
@@ -352,6 +481,19 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
updateRetrofitCosts();
};
$scope.updateCostTab = function(tab) {
Persist.setCostTab(tab);
$scope.costTab = tab;
};
$scope.ppWarning = function(pp) {
return pp.pGen < ship.powerRetracted;
};
$scope.pdWarning = function(pd) {
return pd.enginecapacity < ship.boostEnergy;
};
// Utilify functions
function updateState(code) {
@@ -360,6 +502,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
$scope.speedSeries.xMax = $scope.trSeries.xMax = $scope.jrSeries.xMax = ship.cargoCapacity;
$scope.jrSeries.yMax = ship.unladenRange;
$scope.trSeries.yMax = ship.unladenTotalRange;
$scope.speedSeries.yMax = calcSpeed(ship.unladenMass, ship.speed, ship.boost, $scope.th.c, ship.pipSpeed).boost;
updateRetrofitCosts();
win.triggerHandler('pwrchange');
}
@@ -374,10 +517,13 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
buyName: ship.bulkheads.c.name,
sellClassRating: retrofitShip.bulkheads.c.class + retrofitShip.bulkheads.c.rating,
sellName: retrofitShip.bulkheads.c.name,
netCost: ship.bulkheads.discountedCost - retrofitShip.bulkheads.discountedCost
netCost: ship.bulkheads.discountedCost - retrofitShip.bulkheads.discountedCost,
retroItem: retrofitShip.bulkheads
};
costs.push(item);
total += item.netCost;
if (retrofitShip.bulkheads.incCost) {
total += item.netCost;
}
}
for (var g in { common: 1, internal: 1, hardpoints: 1 }) {
@@ -385,7 +531,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
var slotGroup = ship[g];
for (i = 0, l = slotGroup.length; i < l; i++) {
if (slotGroup[i].id != retroSlotGroup[i].id) {
item = { netCost: 0 };
item = { netCost: 0, retroItem: retroSlotGroup[i] };
if (slotGroup[i].id) {
item.buyName = slotGroup[i].c.name || slotGroup[i].c.grp;
item.buyClassRating = slotGroup[i].c.class + slotGroup[i].c.rating;
@@ -397,25 +543,56 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
item.netCost -= retroSlotGroup[i].discountedCost;
}
costs.push(item);
total += item.netCost;
if (retroSlotGroup[i].incCost) {
total += item.netCost;
}
}
}
}
$scope.retrofitTotal = total;
updateAmmoCosts();
}
$scope.updateCostTab = function(tab) {
Persist.setCostTab(tab);
$scope.costTab = tab;
};
function updateAmmoCosts() {
var costs = $scope.ammoList = [];
var total = 0, i, l, item;
$scope.ppWarning = function(pp) {
return pp.pGen < ship.powerRetracted;
};
$scope.pdWarning = function(pd) {
return pd.enginecapacity < ship.boostEnergy;
};
for (var g in { common: 1, internal: 1, hardpoints: 1 }) {
var slotGroup = ship[g];
for (i = 0, l = slotGroup.length; i < l; i++) {
var q = 0;
if (slotGroup[i].id) {
//special cases needed for fuel, SCB and AFMU since they don't use standard ammo/clip
if (slotGroup[i].c.grp == 'ft') {
q = slotGroup[i].c.capacity;
slotGroup[i].c.ammocost = 50;
}
if (slotGroup[i].c.grp == 'scb') {
q = slotGroup[i].c.cells;
}
if (slotGroup[i].c.grp == 'am') {
q = slotGroup[i].c.ammo;
}
//calculate ammo costs only if a cost is specified
if (slotGroup[i].c.ammocost > 0) {
if (q == 0) {
q = slotGroup[i].c.clip + slotGroup[i].c.ammo;
}
item = {
ammoClassRating: slotGroup[i].c.class + slotGroup[i].c.rating,
ammoName: slotGroup[i].c.name || slotGroup[i].c.grp,
ammoMax: q,
ammoUnitCost: slotGroup[i].c.ammocost,
ammoTotalCost: q * slotGroup[i].c.ammocost
};
costs.push(item);
total += item.ammoTotalCost;
}
}
}
}
$scope.ammoTotal = total;
}
// Hide any open menu/slot/etc if the background is clicked
$scope.$on('close', function() {

View File

@@ -1,4 +1,59 @@
angular.module('app').controller('ShipyardController', ['$rootScope', 'ShipsDB', function($rootScope, ships) {
$rootScope.title = 'Coriolis';
$rootScope.ships = ships;
angular.module('app').controller('ShipyardController', ['$rootScope', '$scope', 'ShipsDB', 'Ship', 'Components', function($rootScope, $scope, ShipsDB, Ship, Components) {
$rootScope.title = 'Coriolis - Shipyard';
$scope.shipPredicate = 'properties.name';
$scope.shipDesc = false;
function countHp(slot) {
this.hp[slot.maxClass]++;
this.hpCount++;
}
function countInt(slot) {
var crEligible = !slot.eligible || slot.eligible.cr;
this.int[slot.maxClass - 1]++; // Subtract 1 since there is no Class 0 Internal compartment
this.intCount++;
this.maxCargo += crEligible ? Components.findInternal('cr', slot.maxClass, 'E').capacity : 0;
}
function shipSummary(shipId, shipData) {
var summary = angular.copy(shipData.properties);
var ship = new Ship(shipId, shipData.properties, shipData.slots);
summary.id = s;
summary.hpCount = 0;
summary.intCount = 0;
summary.maxCargo = 0;
summary.hp = [0, 0, 0, 0, 0]; // Utility, Small, Medium, Large, Huge
summary.int = [0, 0, 0, 0, 0, 0, 0, 0]; // Sizes 1 - 8
// Build Ship
ship.buildWith(shipData.defaults); // Populate with stock/default components
ship.hardpoints.forEach(countHp.bind(summary)); // Count Hardpoints by class
ship.internal.forEach(countInt.bind(summary)); // Count Internal Compartments by class
summary.retailCost = ship.totalCost; // Record Stock/Default/retail cost
ship.optimizeMass({ pd: '1D' }); // Optimize Mass with 1D PD for maximum possible jump range
summary.maxJumpRange = ship.unladenRange; // Record Jump Range
ship.optimizeMass({ th: ship.common[1].maxClass + 'A' }); // Optmize mass with Max Thrusters
summary.topSpeed = ship.topSpeed;
summary.topBoost = ship.topBoost;
return summary;
}
/* Initialization */
if (!$rootScope.shipsOverview) { // Only generate this once
$rootScope.shipsOverview = [];
for (var s in ShipsDB) {
$scope.shipsOverview.push(shipSummary(s, ShipsDB[s]));
}
}
/**
* Sort ships
* @param {object} key Sort predicate
*/
$scope.sortShips = function(key) {
$scope.shipDesc = $scope.shipPredicate == key ? !$scope.shipDesc : $scope.shipDesc;
$scope.shipPredicate = key;
};
}]);

View File

@@ -6,12 +6,14 @@ angular.module('app').directive('barChart', ['$window', '$translate', '$rootScop
function insertLinebreaks(d) {
var el = d3.select(this);
var words = d.split('\n');
var lines = d.split('\n');
el.text('').attr('y', -6);
for (var i = 0; i < words.length; i++) {
var tspan = el.append('tspan').text(words[i]);
for (var i = 0; i < lines.length; i++) {
var tspan = el.append('tspan').text(lines[i].length > 18 ? lines[i].substring(0, 15) + '...' : lines[i]);
if (i > 0) {
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,
width = element[0].offsetWidth,
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,
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 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/>');
}

View File

@@ -10,7 +10,7 @@ angular.module('app').directive('shipyardHeader', ['lodash', '$window', '$rootSc
scope.ships = ships;
scope.allBuilds = Persist.builds;
scope.buildsList = Object.keys(scope.allBuilds).sort();
scope.allComparisons = Persist.comparisons;
scope.allComparisons = Object.keys(Persist.comparisons).sort();
scope.bs = Persist.state;
var win = angular.element($window); // Angularized window object for event triggering
@@ -57,6 +57,10 @@ angular.module('app').directive('shipyardHeader', ['lodash', '$window', '$rootSc
});
};
scope.cleanedBuildList = function(shipId) {
return Object.keys(scope.allBuilds[shipId]);
};
scope.openMenu = function(e, menu) {
e.stopPropagation();
if (menu == scope.openedMenu) {
@@ -68,6 +72,11 @@ angular.module('app').directive('shipyardHeader', ['lodash', '$window', '$rootSc
scope.openedMenu = null;
return;
}
if (menu == 'comp') {
scope.allComparisons = Object.keys(Persist.comparisons).sort();
}
scope.openedMenu = menu;
};

View File

@@ -1,4 +1,7 @@
angular.module('app').directive('lineChart', ['$window', '$translate', '$rootScope', function($window, $translate, $rootScope) {
var RENDER_POINTS = 20; // Only render 20 points on the graph
return {
restrict: 'A',
scope: {
@@ -8,7 +11,7 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
link: function(scope, element) {
var seriesConfig = scope.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,
labels = config.labels,
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('y', -50)
.attr('dy', '.1em')
.style('text-anchor', 'middle')
.text($translate.instant(labels.yAxis.title) + ' (' + $translate.instant(labels.yAxis.unit) + ')');
.style('text-anchor', 'middle');
// Create X Axis SVG Elements
var xLbl = vis.append('g').attr('class', 'x axis');
var xTxt = xLbl.append('text')
.attr('class', 'cap')
.attr('y', 30)
.attr('dy', '.1em')
.style('text-anchor', 'middle')
.text($translate.instant(labels.xAxis.title) + ' (' + $translate.instant(labels.xAxis.unit) + ')');
.style('text-anchor', 'middle');
// xTxt.append('tspan').attr('class', 'metric');
// yTxt.append('tspan').attr('class', 'metric');
// Create and Add tooltip
var tipWidth = (Math.max(labels.yAxis.unit.length, labels.xAxis.unit.length) * 1.25) + 2.5;
var tips = vis.append('g').style('display', 'none');
var tipHeight = 2 + (1.25 * (series ? series.length : 0.75));
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
.attr('fill-opacity', 0)
@@ -84,7 +100,7 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
yMin = seriesConfig.yMin,
w = width - margin.left - margin.right,
h = height - margin.top - margin.bottom,
s, val, yVal, delta;
c, s, val, yVal, delta;
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] ] ]);
}
} else {
delta = (xMax - xMin) / 30; // Only render 30 points on the graph
for (val = xMin; val <= xMax; val += delta) {
delta = (xMax - xMin) / RENDER_POINTS;
val = 0;
for (c = 0; c <= RENDER_POINTS; c++) {
yVal = func(val);
for (s = 0; s < series.length; 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);
seriesData.push([ xMin, yVal ], [ 1, yVal ]);
} else {
delta = (xMax - xMin) / 30; // Only render 30 points on the graph
for (val = xMin; val <= xMax; val += delta) {
delta = (xMax - xMin) / RENDER_POINTS;
val = 0;
for (c = 0; c <= RENDER_POINTS; c++) {
seriesData.push([val, func(val) ]);
val += delta;
}
}
@@ -152,35 +172,63 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
.attr('stroke-width', 2)
.attr('d', line);
var tip = tips.selectAll('g.tooltip').data(data).enter().append('g').attr('class', 'tooltip');
tip.append('rect').attr('width', tipWidth + 'em').attr('height', '2em').attr('x', '0.5em').attr('y', '-1em').attr('class', 'tip');
tip.append('circle').attr('class', 'marker').attr('r', 4);
tip.append('text').attr('class', 'label x').attr('y', '-0.25em');
tip.append('text').attr('class', 'label y').attr('y', '0.85em');
tips.selectAll('text.label.y').data(data).enter()
.append('text')
.attr('class', 'label y')
.attr('dy', (-tipHeight / 2) + 'em')
.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() {
tips.style('display', null);
markers.style('display', null);
}
function hideTip() {
if (!dragging) {
tips.style('display', 'none');
markers.style('display', 'none');
}
}
function moveTip() {
var xPos = d3.mouse(this)[0], x0 = x.invert(xPos), y0 = func(x0), flip = (x0 / x.domain()[1] > 0.65);
var tip = tips.selectAll('g.tooltip').attr('transform', function(d, i) { return 'translate(' + x(x0) + ',' + y(series ? y0[series[i]] : y0) + ')'; });
tip.selectAll('rect').attr('x', flip ? (-tipWidth - 0.5) + 'em' : '0.5em').style('text-anchor', flip ? 'end' : 'start');
tip.selectAll('text.label').attr('x', flip ? '-1em' : '1em').style('text-anchor', flip ? 'end' : 'start');
tip.selectAll('text.label.x').text(fmtLong(x0) + ' ' + $translate.instant(labels.xAxis.unit));
tips.selectAll('text.label.y').text(function(d, i) { return fmtLong(series ? y0[series[i]] : y0) + ' ' + $translate.instant(labels.yAxis.unit); });
var xPos = d3.mouse(this)[0],
x0 = x.invert(xPos),
y0 = func(x0),
yTotal = 0,
flip = (x0 / x.domain()[1] > 0.65),
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() {
xTxt.text($translate.instant(labels.xAxis.title) + ' (' + $translate.instant(labels.xAxis.unit) + ')');
yTxt.text($translate.instant(labels.yAxis.title) + ' (' + $translate.instant(labels.yAxis.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)).append('tspan').attr('class', 'metric').text(' (' + $translate.instant(labels.yAxis.unit) + ')');
fmtLong = $rootScope.localeFormat.numberFormat('.2f');
xAxis.tickFormat($rootScope.localeFormat.numberFormat('.2r'));
yAxis.tickFormat($rootScope.localeFormat.numberFormat('.3r'));

View File

@@ -38,7 +38,7 @@ angular.module('app').directive('powerBands', ['$window', '$translate', '$rootSc
});
// Create Y Axis SVG Elements
vis.append('g').attr('class', 'watt axis');
var wattAxisGroup = vis.append('g').attr('class', 'watt axis');
vis.append('g').attr('class', 'pct axis');
var retText = vis.append('text').attr('x', -3).style('text-anchor', 'end').attr('dy', '0.5em').attr('class', 'primary upp');
var depText = vis.append('text').attr('x', -3).style('text-anchor', 'end').attr('dy', '0.5em').attr('class', 'primary upp');
@@ -94,13 +94,24 @@ angular.module('app').directive('powerBands', ['$window', '$translate', '$rootSc
retracted.selectAll('text').remove();
deployed.selectAll('rect').remove();
deployed.selectAll('text').remove();
wattAxisGroup.selectAll('line.threshold').remove();
// Update X & Y Axis
wattScale.range([0, w]).domain([0, maxPwr]).clamp(true);
pctScale.range([0, w]).domain([0, maxPwr / available]).clamp(true);
vis.selectAll('.watt.axis').call(wattAxis);
wattAxisGroup.call(wattAxis);
vis.selectAll('.pct.axis').attr('transform', 'translate(0,' + innerHeight + ')').call(pctAxis);
var pwrWarningClass = 'threshold' + (bands[0].retractedSum * 2 >= available ? ' exceeded' : '');
vis.select('.pct.axis g:nth-child(6)').selectAll('line, text').attr('class', pwrWarningClass);
wattAxisGroup.append('line')
.attr('x1', pctScale(0.5))
.attr('x2', pctScale(0.5))
.attr('y1', 0)
.attr('y2', innerHeight)
.attr('class', pwrWarningClass);
retText.attr('y', repY);
depText.attr('y', depY);
updateLabel(retLbl, w, repY, retBandsSelected, retBandsSelected ? retractedSum : maxBand.retractedSum, available);
@@ -162,7 +173,8 @@ angular.module('app').directive('powerBands', ['$window', '$translate', '$rootSc
}
function getClass(selected, sum, avail) {
return selected ? 'secondary' : (sum >= avail) ? 'warning' : 'primary';
// Round to avoid floating point precision errors
return selected ? 'secondary' : ((Math.round(sum * 100) / 100) >= avail) ? 'warning' : 'primary';
}
function bandText(val, index) {

View File

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

View File

@@ -15,35 +15,35 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
shortMonths: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.']
});
$translateProvider.translations('fr', {
PHRASE_EXPORT_DESC: 'Un export détaillé en JSON de votre configuration pour l\'utilisation dans d\'autres sites et outils',
PHRASE_EXPORT_DESC: 'Export détaillé en JSON de votre configuration pour utilisation sur d\'autres sites et outils',
'A-Rated': 'Classe-A ',
about: 'à propos',
added: 'ajouté',
Advanced: 'Avancé',
'Advanced Discovery Scanner': 'Scanner de découverte avancé',
agility: 'agilité',
ammo: 'munition',
PHRASE_CONFIRMATION: 'Êtes-vous sûr?',
'Advanced Discovery Scanner': 'Détecteur découverte avancé',
agility: 'manœuvrabilité',
ammo: 'munitions',
PHRASE_CONFIRMATION: 'Êtes-vous sûr ?',
armour: 'Armure',
am: 'Unité de réparation automatique',
am: 'Unité de maintenance de terrain auto',
available: 'Disponibilité',
backup: 'sauvegarde',
'Basic Discovery Scanner': 'Scanner de découverte de base',
bl: 'Laser rayon',
bins: 'bacs',
'Basic Discovery Scanner': 'Détecteur découverte simple',
bl: 'Rayon Laser',
bins: 'bennes',
build: 'Configuration',
'build name': 'Nom de la configuration',
builds: 'Configurations',
bh: 'Coque',
ul: 'Laser salves',
ul: 'Laser à rafale',
buy: 'Acheter',
cancel: 'Annuler',
c: 'Canon',
cargo: 'Soute',
'Cargo Hatch': 'hublot de chargement',
'Cargo Hatch': 'Écoutille de soute',
cr: 'Compartiment de soute',
cs: 'Scanner de soute',
cells: 'Cellule',
cs: 'Détecteur de cargaison',
cells: 'Cellules',
'Chaff Launcher': 'Lanceur de paillettes',
close: 'fermer',
cc: 'Contrôleur de prospecteur',
@@ -64,17 +64,17 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
dep: 'depl',
deployed: 'déployé',
'detailed export': 'export détaillé',
'Detailed Surface Scanner': 'Scanner de surface détaillé',
'Detailed Surface Scanner': 'Détecteur surface détaillé',
disabled: 'désactivé',
discount: 'ristourne',
discount: 'réduction',
Distruptor: 'Disrupteur',
dc: 'Ordinateur d\'appontage',
done: 'Fait',
done: 'Valider',
'edit data': 'Editer donnée',
efficiency: 'efficience',
'Electronic Countermeasure': 'Contre mesure électronique',
efficiency: 'efficacité',
'Electronic Countermeasure': 'Contre-mesures électroniques',
empty: 'Vide',
'enter name': 'Entrer nom',
'enter name': 'Entrer un nom',
fixed: 'fixé',
fc: 'Canon à fragmentation',
fd: 'Réacteur FSD',
@@ -83,29 +83,28 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
fuel: 'carburant',
fs: 'Récupérateur de carburant',
ft: 'Réservoir de carburant',
fx: 'Drone de ravitaillement',
fx: 'Contrôleur de ravitailleur',
'full tank': 'Réservoir plein',
Gimballed: 'Point',
hardpoints: 'Points d\'emport',
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',
hull: 'Coque',
hr: 'Renfort de soute',
hr: 'Ensemble de mesures permettant de renforcer la coque',
'Imperial Hammer': 'Marteau impérial',
import: 'Importer',
'import all': 'Importer tout',
insurance: 'Assurance',
'Intermediate Discovery Scanner': 'Scanner de découverte de portée intermédiaire',
'Intermediate Discovery Scanner': 'Détecteur découverte intermédiaire',
'internal compartments': 'compartiments internes',
'jump range': 'Distance de saut',
jumps: 'Sauts',
kw: 'Détecteur d\'avis de recherche',
L: 'Langage',
laden: 'chargé',
language: 'Langage',
large: 'grand',
ls: 'Support vital',
language: 'Langue',
large: 'large',
ls: 'Systèmes de survie',
'Lightweight Alloy': 'alliage léger',
'lock factor': 'facteur inhibition de masse',
LS: 'SL',
@@ -116,37 +115,37 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
nl: 'Lance-mines',
'Mining Lance': 'Lance de minage',
ml: 'Laser minier',
'Mirrored Surface Composite': 'Composite à surface mirroir',
mr: 'Lance missiles',
'Mirrored Surface Composite': 'Composite à surface miroir',
mr: 'Batterie de missiles',
mc: 'Canon multiple',
'net cost': 'coûts nets',
no: 'non',
PHRASE_NO_BUILDS: 'Défaut de configuration pour comparaison',
PHRASE_NO_RETROCH: 'configuration non modifiée',
PHRASE_NO_BUILDS: 'Aucune configuration ajoutée pour comparaison',
PHRASE_NO_RETROCH: 'Configuration non modifiée',
none: 'aucun',
'none created': 'Rien de créé',
off: 'éteint',
on: 'allumé',
'optimal mass': 'masse optimale',
'optimize mass': 'optimiser masse',
overwrite: 'écraser',
overwrite: 'remplacer',
Pacifier: 'Pacificateur',
PHRASE_IMPORT: 'Coller JSON ou importer ici',
PHRASE_IMPORT: 'Coller ici votre JSON à importer',
pen: 'pén.',
penetration: 'pénétration',
permalink: 'lien durable',
pa: 'accélérateur plasma',
'Point Defence': 'Défense ponctuelle',
power: 'énergie',
pd: 'distributeur d\'énérgie',
pp: 'centrale d\'énergie',
pd: 'Répartiteur de puissance',
pp: 'Générateur',
priority: 'priorité',
psg: 'générateur de bouclier prisme',
proceed: 'continuer',
pc: 'Drône de minage',
pc: 'Contrôleur de prospecteur',
pl: 'Laser à impulsion',
PWR: 'Puissance',
rg: 'Canon électromagnétique',
PWR: 'P',
rg: 'Canon électrique',
range: 'portée',
rate: 'cadence',
'Reactive Surface Composite': 'Composite à surface réactive',
@@ -165,9 +164,9 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
ROF: 'cadence',
save: 'sauvegarder',
sc: 'scanner',
PHRASE_SELECT_BUILDS: 'Sélectionner configurations à comparer',
PHRASE_SELECT_BUILDS: 'Sélectionner les configurations à comparer',
sell: 'vendre',
s: 'détecteurs',
s: 'Capteurs',
settings: 'paramètres',
sb: 'Survolteur de bouclier',
scb: 'Réserve de cellules d\'énergie',
@@ -180,9 +179,9 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
skip: 'Suivant',
small: 'petit',
speed: 'vitesse',
'Standard Docking Computer': 'ordinateur amarrage standard',
'Standard Docking Computer': 'Ordinateur d\'appontage standard',
Stock: 'de base',
T_LOAD: 'degrés',
T_LOAD: 'Charge thermique',
'The Retributor': 'Le Rétributeur',
t: 'propulseurs',
time: 'temps',
@@ -190,11 +189,11 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
'total range': 'Distance maximale',
turret: 'tourelle',
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 mounts': 'Support utilitaire',
WEP: 'ARM',
yes: 'oui',
PHRASE_BACKUP_DESC: 'Exportation détaillée des données Coriolis pour l\'utilisation dans d\'autres sites et outils'
PHRASE_BACKUP_DESC: 'Exportation détaillée des données de Coriolis pour l\'utilisation dans d\'autres sites et outils'
});
}]);

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: 'thrusters',
time: 'tempo',
total: 'totale',
'total range': 'distanza totale',
turret: 'torrette',
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')
.useStorage('Persist')
.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',
'de*': 'de',
//'es*': 'es',
'es*': 'es',
'fr*': 'fr',
'it*': 'it',
'ru*': 'ru'
})
.determinePreferredLanguage();
@@ -15,7 +16,8 @@ angular.module('app').config(['$translateProvider', function($translateProvider)
.value('Languages', {
en: 'English',
de: 'Deutsh',
//es: 'Español',
it: 'Italiano',
es: 'Español',
fr: 'Français',
ru: 'ру́сский язы́к'
ru: 'ру́сский'
});

View File

@@ -31,7 +31,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
armour: 'Броня',
am: 'Ремонтный модуль',
available: 'доступно',
backup: 'бэкап',
backup: 'Резервная копия',
'Basic Discovery Scanner': 'Стандартный исследовательский сканер',
bl: 'Лучевой лазер',
beta: 'Бета',
@@ -40,11 +40,11 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
build: 'cборка',
'build name': 'название сборки',
builds: 'cборки',
bh: 'Переборки',
bh: 'Корпус',
ul: 'Мультиимпульсный лазер',
buy: 'купить',
cancel: 'отменить',
c: 'Крупнокалиберное орудие',
c: 'Пушка',
capital: 'Крупный',
cargo: 'Груз',
'Cargo Hatch': 'Грузовой люк',
@@ -71,7 +71,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
delete: 'Удалить',
'delete all': 'Удалить все',
dep: 'Вып',
deployed: 'Готово',
deployed: 'Открыты',
'detailed export': 'Подробный экспорт',
'Detailed Surface Scanner': 'Подробный сканер поверхности',
disabled: 'Отключено',
@@ -79,15 +79,15 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
Distruptor: 'Дисраптор',
dc: 'Стыковочный компьютер',
done: 'готово',
DPS: 'ПВС',
DPS: 'УВС',
'edit data': 'Редактирование',
efficiency: 'Эффективность',
'Electronic Countermeasure': 'Электронное противодействие',
'Electronic Countermeasure': 'Электронная противомера',
empty: 'пусто',
Enforcer: 'Энфорсер',
ENG: 'ДВГ',
'enter name': 'Введите имя',
EPS: 'э/с',
EPS: 'ЭВС',
export: 'Экспорт',
fixed: 'Фиксированое',
forum: 'Форум',
@@ -97,11 +97,11 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
fi: 'Перехватчик FSD',
fuel: 'Топливо',
fs: 'Топливозаборник',
fs: 'Топливосборщик',
ft: 'Топливный бак',
fx: 'Контроллер Дрона-заправщика',
'full tank': 'Полный бак',
Gimballed: 'Доводимое',
Gimballed: 'Шарнирное',
H: 'O',
hardpoints: 'Орудийные порты',
hb: 'Контроллер "дрон-взломщик"',
@@ -133,13 +133,13 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
max: 'Макс',
'max mass': 'Максимальная масса',
medium: 'Средний',
'Military Grade Composite': 'Композит военного класса',
nl: 'Минный аппарат',
'Military Grade Composite': 'Военный композит',
nl: 'Минноукладчик',
'Mining Lance': 'Бурильная сулица',
ml: 'Горный лазер',
'Mirrored Surface Composite': 'Композит с зеркальной поверхностью',
ml: 'Бурильный лазер',
'Mirrored Surface Composite': 'Зеркальный композит',
mr: 'Ракетная установка',
mc: 'Скорострельное орудие',
mc: 'Многоствольное орудие',
'net cost': 'разница в цене',
no: 'Нет',
PHRASE_NO_BUILDS: 'Нечего сравнивать',
@@ -153,7 +153,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
'optimize mass': 'Оптимизировать массу',
overwrite: 'перезаписать',
Pacifier: 'Миротворец',
'Pack-Hound': 'Ракеты "Собачья стая" or original name(eng)',
'Pack-Hound': 'Ракета "Гончая"',
PHRASE_IMPORT: 'Для импорта вставьте код в эту форму',
pen: 'ПБ',
penetration: 'Пробитие',
@@ -170,10 +170,10 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
pc: 'Контроллер "Дрон-исследователь"',
pl: 'Импульсный лазер',
PWR: 'Эн',
rg: 'Рельсовая пушка',
rg: 'Рельсотрон',
range: 'Дальность',
rate: 'скорость',
'Reactive Surface Composite': 'Композитно-реактивная поверхность',
'Reactive Surface Composite': 'Динамическая защита',
recharge: 'Перезарядка',
rf: 'Переработка',
'refuel time': 'Время дозаправки',
@@ -211,8 +211,8 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
SYS: 'СИС',
T: 'Т',
T_LOAD: 'Тепл.',
'The Retributor': 'Орудие Возмездия',
t: 'Ускорители',
'The Retributor': '"Возмездие"',
t: 'Двигатели',
time: 'Время',
tp: 'Торпедный аппарат',
total: 'Всего',

View File

@@ -143,11 +143,10 @@ angular.module('app').service('Serializer', ['lodash', 'GroupMap', 'MountMap', '
var internal = _.map(comps.internal, function(c) { return c ? Components.findInternalId(c.group, c.class, c.rating, c.name) : 0; });
var hardpoints = _.map(comps.hardpoints, function(c) {
return c ? Components.findHardpointId(c.group, c.class, c.rating, c.name, MountMap[c.mount], c.missile) : 0;
});
hardpoints = hardpoints.concat(_.map(comps.utility, function(c) {
return c ? Components.findHardpointId(c.group, c.class, c.rating, c.name, MountMap[c.mount]) : 0;
}));
return c ? Components.findHardpointId(c.group, c.class, c.rating, c.name, MountMap[c.mount], c.missile) : 0;
}).concat(_.map(comps.utility, function(c) {
return c ? Components.findHardpointId(c.group, c.class, c.rating, c.name, MountMap[c.mount]) : 0;
}));
// The ordering of these arrays must match the order in which they are read in Ship.buildWith
priorities = priorities.concat(_.map(comps.hardpoints, function(c) { return (!c || c.priority === undefined) ? 0 : c.priority - 1; }),

View File

@@ -117,7 +117,18 @@ angular.module('shipyard').factory('ComponentSet', ['lodash', function(_) {
return th.class + th.rating;
};
ComponentSet.prototype.lightestPowerPlant = function(powerUsed) {
ComponentSet.prototype.lightestShieldGenerator = function(hullMass) {
var sg = null;
_.forEach(this.internal.sg, function(s) {
if (sg == null || (s.mass < sg.mass && s.minmass <= hullMass && s.maxmass > hullMass)) {
sg = s;
}
});
return sg.id;
};
ComponentSet.prototype.lightestPowerPlant = function(powerUsed, rating) {
var pps = this.common[0];
var pp = null;
@@ -126,7 +137,7 @@ angular.module('shipyard').factory('ComponentSet', ['lodash', function(_) {
pp = pps[i];
}
}
return pp.class + (pp.rating != 'D' ? 'A' : 'D'); // Use A rated if C,E
return pp.class + (pp.rating != 'D' || rating == 'A' ? 'A' : 'D'); // Use A rated if C,E
};
return ComponentSet;

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
@@ -8,9 +8,6 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
*/
function powerUsageType(slot, component) {
if (component) {
if (component.retractedOnly) {
return 'retOnly';
}
if (component.passive) {
return 'retracted';
}
@@ -29,6 +26,7 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
this.id = id;
this.cargoHatch = { c: Components.cargoHatch(), type: 'SYS' };
this.bulkheads = { incCost: true, maxClass: 8 };
this.availCS = Components.forShip(id);
for (var p in properties) { this[p] = properties[p]; } // Copy all base properties from shipData
@@ -71,6 +69,91 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
];
}
//*********//
// GETTERS //
//*********//
Ship.prototype.getAvailableComponents = function() {
return this.availCS;
};
Ship.prototype.getSlotStatus = function(slot, deployed) {
if (!slot.c) { // Empty Slot
return 0; // No Status (Not possible to be active in this state)
} else if (!slot.enabled) {
return 1; // Disabled
} else if (deployed) {
return this.priorityBands[slot.priority].deployedSum >= this.powerAvailable ? 2 : 3; // Offline : Online
// Active hardpoints have no retracted status
} else if ((slot.cat === 1 && !slot.c.passive)) {
return 0; // No Status (Not possible to be active in this state)
}
return this.priorityBands[slot.priority].retractedSum >= this.powerAvailable ? 2 : 3; // Offline : Online
};
/**
* Calculate jump range using the installed FSD and the
* specified mass which can be more or less than ships actual mass
* @param {number} mass Mass in tons
* @param {number} fuel Fuel available in tons
* @return {number} Jump range in Light Years
*/
Ship.prototype.getJumpRangeForMass = function(mass, fuel) {
return calcJumpRange(mass, this.common[2].c, fuel);
};
/**
* Find an internal slot that has an installed component of the specific group.
*
* @param {string} group Component group/type
* @return {number} The index of the slot in ship.internal
*/
Ship.prototype.findInternalByGroup = function(group) {
var index;
if (group == 'sg' || group == 'psg') {
index = _.findIndex(this.internal, function(slot) {
return slot.c && (slot.c.grp == 'sg' || slot.c.grp == 'psg');
});
} else {
index = _.findIndex(this.internal, function(slot) {
return slot.c && slot.c.grp == group;
});
}
if (index !== -1) {
return this.internal[index];
}
return null;
};
//**********************//
// Mutate / Update Ship //
//**********************//
/**
* Recalculate all item costs and total based on discounts.
* @param {number} shipCostMultiplier Ship cost multiplier discount (e.g. 0.9 === 10% discount)
* @param {number} componentCostMultiplier Component cost multiplier discount (e.g. 0.75 === 25% discount)
*/
Ship.prototype.applyDiscounts = function(shipCostMultiplier, componentCostMultiplier) {
var total = 0;
var costList = this.costList;
for (var i = 0, l = costList.length; i < l; i++) {
var item = costList[i];
if (item.c && item.c.cost) {
item.discountedCost = item.c.cost * (item.type == 'SHIP' ? shipCostMultiplier : componentCostMultiplier);
if (item.incCost) {
total += item.discountedCost;
}
}
}
this.shipCostMultiplier = shipCostMultiplier;
this.componentCostMultiplier = componentCostMultiplier;
this.totalCost = total;
return this;
};
/**
* Builds/Updates the ship instance with the components[comps] passed in.
* @param {object} comps Collection of components used to build the ship
@@ -156,107 +239,54 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
// Update aggragated stats
if (comps) {
this.updatePower();
this.updateJumpStats();
this.updateShieldStrength();
this.updatePower()
.updateJumpStats()
.updateShieldStrength()
.updateTopSpeed();
}
return this;
};
Ship.prototype.useBulkhead = function(index, preventUpdate) {
var oldBulkhead = this.bulkheads.c;
this.bulkheads.id = index;
this.bulkheads.c = Components.bulkheads(this.id, index);
this.bulkheads.discountedCost = this.bulkheads.c.cost * this.componentCostMultiplier;
this.armourMultiplier = ArmourMultiplier[index];
this.updateStats(this.bulkheads, this.bulkheads.c, oldBulkhead, preventUpdate);
Ship.prototype.emptyHardpoints = function() {
for (var i = this.hardpoints.length; i--; ) {
this.use(this.hardpoints[i], null, null);
}
return this;
};
/**
* Update a slot with a the component if the id is different from the current id for this slot.
* Has logic handling components that you may only have 1 of (Shield Generator or Refinery).
*
* @param {object} slot The component slot
* @param {string} id Unique ID for the selected component
* @param {object} component Properties for the selected component
* @param {boolean} preventUpdate If true, do not update aggregated stats
*/
Ship.prototype.use = function(slot, id, component, preventUpdate) {
if (slot.id != id) { // Selecting a different component
// Slot is an internal slot, is not being emptied, and the selected component group/type must be of unique
if (slot.cat == 2 && component && _.includes(['psg', 'sg', 'rf', 'fs'], component.grp)) {
// Find another internal slot that already has this type/group installed
var similarSlot = this.findInternalByGroup(component.grp);
// If another slot has an installed component with of the same type
if (!preventUpdate && similarSlot && similarSlot !== slot) {
this.updateStats(similarSlot, null, similarSlot.c, true); // Update stats but don't trigger a global update
similarSlot.id = similarSlot.c = null; // Empty the slot
similarSlot.discountedCost = 0;
}
Ship.prototype.emptyInternal = function() {
for (var i = this.internal.length; i--; ) {
this.use(this.internal[i], null, null);
}
return this;
};
Ship.prototype.emptyUtility = function() {
for (var i = this.hardpoints.length; i--; ) {
if (!this.hardpoints[i].maxClass) {
this.use(this.hardpoints[i], null, null);
}
var oldComponent = slot.c;
slot.id = id;
slot.c = component;
slot.discountedCost = (component && component.cost) ? component.cost * this.componentCostMultiplier : 0;
this.updateStats(slot, component, oldComponent, preventUpdate);
}
return this;
};
/**
* Calculate jump range using the installed FSD and the
* specified mass which can be more or less than ships actual mass
* @param {number} mass Mass in tons
* @param {number} fuel Fuel available in tons
* @return {number} Jump range in Light Years
*/
Ship.prototype.jumpRangeWithMass = function(mass, fuel) {
return calcJumpRange(mass, this.common[2].c, fuel);
};
/**
* Find an internal slot that has an installed component of the specific group.
*
* @param {string} group Component group/type
* @return {number} The index of the slot in ship.internal
*/
Ship.prototype.findInternalByGroup = function(group) {
var index;
if (group == 'sg' || group == 'psg') {
index = _.findIndex(this.internal, function(slot) {
return slot.c && (slot.c.grp == 'sg' || slot.c.grp == 'psg');
});
} else {
index = _.findIndex(this.internal, function(slot) {
return slot.c && slot.c.grp == group;
});
}
if (index !== -1) {
return this.internal[index];
}
return null;
};
/**
* Will change the priority of the specified slot if the new priority is valid
* @param {object} slot The slot to be updated
* @param {number} newPriority The new priority to be set
* @return {boolean} Returns true if the priority was changed (within range)
*/
Ship.prototype.changePriority = function(slot, newPriority) {
if (newPriority >= 0 && newPriority < this.priorityBands.length) {
var oldPriority = slot.priority;
slot.priority = newPriority;
if (slot.enabled) { // Only update power if the slot is enabled
var usage = powerUsageType(slot, slot.c);
this.priorityBands[oldPriority][usage] -= slot.c.power;
this.priorityBands[newPriority][usage] += slot.c.power;
this.updatePower();
Ship.prototype.emptyWeapons = function() {
for (var i = this.hardpoints.length; i--; ) {
if (this.hardpoints[i].maxClass) {
this.use(this.hardpoints[i], null, null);
}
return true;
}
return false;
return this;
};
/**
* Optimize for the lower mass build that can still boost and power the ship
* without power management.
* @param {object} c Common Component overrides
*/
Ship.prototype.optimizeMass = function(c) {
return this.emptyHardpoints().emptyInternal().useLightestCommon(c);
};
Ship.prototype.setCostIncluded = function(item, included) {
@@ -264,6 +294,7 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
this.totalCost += included ? item.discountedCost : -item.discountedCost;
}
item.incCost = included;
return this;
};
Ship.prototype.setSlotEnabled = function(slot, enabled) {
@@ -284,20 +315,7 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
this.updatePower();
}
}
};
Ship.prototype.getSlotStatus = function(slot, deployed) {
if (!slot.c) { // Empty Slot
return 0; // No Status (Not possible)
} else if (!slot.enabled) {
return 1; // Disabled
} else if (deployed && !slot.c.retractedOnly) { // Certain component (e.g. Detaild Surface scanner) are power only while retracted
return this.priorityBands[slot.priority].deployedSum >= this.powerAvailable ? 2 : 3; // Offline : Online
// Active hardpoints have no retracted status
} else if ((deployed && slot.c.retractedOnly) || (slot.cat === 1 && !slot.c.passive)) {
return 0; // No Status (Not possible)
}
return this.priorityBands[slot.priority].retractedSum >= this.powerAvailable ? 2 : 3; // Offline : Online
return this;
};
/**
@@ -375,9 +393,11 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
if (powerChange) {
this.updatePower();
}
this.updateTopSpeed();
this.updateJumpStats();
this.updateShieldStrength();
}
return this;
};
Ship.prototype.updatePower = function() {
@@ -393,11 +413,20 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
this.powerAvailable = this.common[0].c.pGen;
this.powerRetracted = prevRetracted;
this.powerDeployed = prevDeployed;
return this;
};
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;
return this;
};
Ship.prototype.updateShieldStrength = function() {
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;
return this;
};
/**
@@ -411,29 +440,160 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
this.unladenTotalRange = calcTotalRange(this.unladenMass, fsd, this.fuelCapacity);
this.ladenTotalRange = calcTotalRange(this.unladenMass + this.cargoCapacity, fsd, this.fuelCapacity);
this.maxJumpCount = Math.ceil(this.fuelCapacity / fsd.maxfuel);
return this;
};
/**
* Update a slot with a the component if the id is different from the current id for this slot.
* Has logic handling components that you may only have 1 of (Shield Generator or Refinery).
*
* @param {object} slot The component slot
* @param {string} id Unique ID for the selected component
* @param {object} component Properties for the selected component
* @param {boolean} preventUpdate If true, do not update aggregated stats
*/
Ship.prototype.use = function(slot, id, component, preventUpdate) {
if (slot.id != id) { // Selecting a different component
// Slot is an internal slot, is not being emptied, and the selected component group/type must be of unique
if (slot.cat == 2 && component && _.includes(['psg', 'sg', 'rf', 'fs'], component.grp)) {
// Find another internal slot that already has this type/group installed
var similarSlot = this.findInternalByGroup(component.grp);
// If another slot has an installed component with of the same type
if (!preventUpdate && similarSlot && similarSlot !== slot) {
this.updateStats(similarSlot, null, similarSlot.c);
similarSlot.id = similarSlot.c = null; // Empty the slot
similarSlot.discountedCost = 0;
}
}
var oldComponent = slot.c;
slot.id = id;
slot.c = component;
slot.discountedCost = (component && component.cost) ? component.cost * this.componentCostMultiplier : 0;
this.updateStats(slot, component, oldComponent, preventUpdate);
}
return this;
};
/**
* Recalculate all item costs and total based on discounts.
* @param {number} shipCostMultiplier Ship cost multiplier discount (e.g. 0.9 === 10% discount)
* @param {number} componentCostMultiplier Component cost multiplier discount (e.g. 0.75 === 25% discount)
* [useBulkhead description]
* @param {[type]} index [description]
* @param {[type]} preventUpdate [description]
* @return {[type]} [description]
*/
Ship.prototype.applyDiscounts = function(shipCostMultiplier, componentCostMultiplier) {
var total = 0;
var costList = this.costList;
Ship.prototype.useBulkhead = function(index, preventUpdate) {
var oldBulkhead = this.bulkheads.c;
this.bulkheads.id = index;
this.bulkheads.c = Components.bulkheads(this.id, index);
this.bulkheads.discountedCost = this.bulkheads.c.cost * this.componentCostMultiplier;
this.armourMultiplier = ArmourMultiplier[index];
this.updateStats(this.bulkheads, this.bulkheads.c, oldBulkhead, preventUpdate);
for (var i = 0, l = costList.length; i < l; i++) {
var item = costList[i];
if (item.c && item.c.cost) {
item.discountedCost = item.c.cost * (item.type == 'SHIP' ? shipCostMultiplier : componentCostMultiplier);
if (item.incCost) {
total += item.discountedCost;
}
return this;
};
/**
* [useCommon description]
* @param {[type]} rating [description]
* @return {[type]} [description]
*/
Ship.prototype.useCommon = function(rating) {
for (var i = this.common.length - 1; i--; ) { // All except Fuel Tank
var id = this.common[i].maxClass + rating;
this.use(this.common[i], id, Components.common(i, id));
}
return this;
};
/**
* Use the lightest common components unless otherwise specified
* @param {object} c Component overrides
*/
Ship.prototype.useLightestCommon = function(c) {
c = c || {};
var common = this.common,
pd = c.pd || this.availCS.lightestPowerDist(this.boostEnergy), // Find lightest Power Distributor that can still boost;
fsd = c.fsd || common[2].maxClass + 'A',
ls = c.ls || common[3].maxClass + 'D',
s = c.s || common[5].maxClass + 'D',
updated;
this.useBulkhead(0)
.use(common[2], fsd, Components.common(2, fsd)) // FSD
.use(common[3], ls, Components.common(3, ls)) // Life Support
.use(common[5], s, Components.common(5, s)) // Sensors
.use(common[4], pd, Components.common(4, pd)); // Power Distributor
// Thrusters and Powerplant must be determined after all other components are mounted
// Loop at least once to determine absolute lightest PD and TH
do {
updated = false;
// Find lightest Thruster that still works for the ship at max mass
var th = c.th || this.availCS.lightestThruster(this.ladenMass);
if (th != common[1].id) {
this.use(common[1], th, Components.common(1, th));
updated = true;
}
// Find lightest Power plant that can power the ship
var pp = c.pp || this.availCS.lightestPowerPlant(Math.max(this.powerRetracted, this.powerDeployed), c.ppRating);
if (pp != common[0].id) {
this.use(common[0], pp, Components.common(0, pp));
updated = true;
}
} while (updated);
return this;
};
Ship.prototype.useUtility = function(group, rating, clobber) {
var component = Components.findHardpoint(group, 0, rating);
for (var i = this.hardpoints.length; i--; ) {
if ((clobber || !this.hardpoints[i].c) && !this.hardpoints[i].maxClass) {
this.use(this.hardpoints[i], component.id, component);
}
}
this.shipCostMultiplier = shipCostMultiplier;
this.componentCostMultiplier = componentCostMultiplier;
this.totalCost = total;
return this;
};
Ship.prototype.useWeapon = function(group, mount, clobber, missile) {
var hps = this.hardpoints;
for (var i = hps.length; i--; ) {
if (hps[i].maxClass) {
var size = hps[i].maxClass, component;
do {
component = Components.findHardpoint(group, size, null, null, mount, missile);
if ((clobber || !hps[i].c) && component) {
this.use(hps[i], component.id, component);
break;
}
} while (!component && (--size > 0));
}
}
return this;
};
/**
* Will change the priority of the specified slot if the new priority is valid
* @param {object} slot The slot to be updated
* @param {number} newPriority The new priority to be set
* @return {boolean} Returns true if the priority was changed (within range)
*/
Ship.prototype.changePriority = function(slot, newPriority) {
if (newPriority >= 0 && newPriority < this.priorityBands.length) {
var oldPriority = slot.priority;
slot.priority = newPriority;
if (slot.enabled) { // Only update power if the slot is enabled
var usage = powerUsageType(slot, slot.c);
this.priorityBands[oldPriority][usage] -= slot.c.power;
this.priorityBands[newPriority][usage] += slot.c.power;
this.updatePower();
}
return true;
}
return false;
};
return Ship;

View File

@@ -10,15 +10,16 @@ angular.module('shipyard', ['ngLodash'])
// Create 'angularized' references to DB. This will aid testing
.constant('ShipsDB', DB.ships)
.constant('ComponentsDB', DB.components)
.value('ArmourMultiplier', [
.constant('ArmourMultiplier', [
1, // Lightweight
1.4, // Reinforced
1.945, // Military
1.945, // Mirrored
1.945 // Reactive
])
.constant('SizeMap', ['', 'small', 'medium', 'large', 'capital'])
// Map to lookup group labels/names for component grp, used for JSON Serialization
.value('GroupMap', {
.constant('GroupMap', {
// Common
pp: 'Power Plant',
t: 'Thrusters',
@@ -33,7 +34,7 @@ angular.module('shipyard', ['ngLodash'])
sc: 'Scanner',
am: 'Auto Field-Maintenance Unit',
cr: 'Cargo Rack',
fi: 'FSD Interdictor',
fi: 'Frame Shift Drive Interdictor',
hb: 'Hatch Breaker Limpet Controller',
hr: 'Hull Reinforcement Package',
rf: 'Refinery',
@@ -64,7 +65,7 @@ angular.module('shipyard', ['ngLodash'])
sb: 'Shield Booster',
tp: 'Torpedo Pylon'
})
.value('MountMap', {
.constant('MountMap', {
'F': 'Fixed',
'G': 'Gimballed',
'T': 'Turret',
@@ -78,7 +79,7 @@ angular.module('shipyard', ['ngLodash'])
*
* @type {Array}
*/
.value('ShipFacets', [
.constant('ShipFacets', [
{ // 0
title: 'agility',
props: ['agility'],
@@ -87,10 +88,10 @@ angular.module('shipyard', ['ngLodash'])
},
{ // 1
title: 'speed',
props: ['speed', 'boost'],
props: ['topSpeed', 'topBoost'],
lbls: ['thrusters', 'boost'],
unit: 'm/s',
fmt: 'fRound'
fmt: 'fCrd'
},
{ // 2
title: 'armour',
@@ -161,7 +162,7 @@ angular.module('shipyard', ['ngLodash'])
/**
* Set of all available / theoretical discounts
*/
.value('Discounts', {
.constant('Discounts', {
'0%': 1,
'5%': 0.95,
'10%': 0.90,
@@ -204,7 +205,6 @@ angular.module('shipyard', ['ngLodash'])
/**
* 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} shields Base Shield strength MJ for ship
* @param {object} sg The shield generator used
@@ -230,18 +230,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} baseSpeed Base speed m/s for ship
* @param {number} baseBoost Base boost m/s for ship
* @param {object} thrusters The shield generator used
* @return {object} Approximate speed and boost speed in m/s
* @param {number} baseBoost Base boost speed m/s for ship
* @param {object} thrusters The Thrusters used
* @param {number} pipSpeed Speed pip multiplier
* @return {object} Approximate speed by pips
*/
.value('calcSpeed', function(mass, baseSpeed, baseBoost) { //, thrusters) {
//var speed = baseSpeed * (1 + ((thrusters.optmass / mass) * 0.1 ) ); // TODO: find thruser coefficient(s)
//var boost = baseBoost * (1 + ((thrusters.optmass / mass) * 0.1 ) );
.value('calcSpeed', function(mass, baseSpeed, baseBoost, thrusters, pipSpeed) {
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 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

@@ -38,61 +38,117 @@ angular.module('shipyard').service('Components', ['lodash', 'ComponentsDB', 'Shi
return null;
};
this.findInternalId = function(groupName, clss, rating, name) {
/**
* Finds an internal Component based on Class, Rating, Group and/or name.
* At least one ofGroup name or unique component name must be provided
*
* @param {string} groupName [Optional] Full name or abbreviated name for component group
* @param {integer} clss Component Class
* @param {string} rating Component Rating
* @param {string} name [Optional] Long/unique name for component -e.g. 'Advanced Discover Scanner'
* @return {String} The id of the component if found, null if not found
*/
this.findInternal = function(groupName, clss, rating, name) {
var groups = {};
if (groupName) {
var grpCode = GrpNameToCodeMap[groupName];
if (grpCode && !C.internal[grpCode]) {
throw 'Invalid internal group: ' + groupName;
if (C.internal[groupName]) {
groups[groupName] = C.internal[groupName];
} else {
var grpCode = GrpNameToCodeMap[groupName];
if (grpCode && C.internal[grpCode]) {
groups[grpCode] = C.internal[grpCode];
}
}
groups[grpCode] = C.internal[grpCode];
} else if (name) {
groups = C.internal;
} else {
throw 'Invalid group or name not provided';
}
for (var g in groups) {
var group = groups[g];
for (var i = 0, l = group.length; i < l; i++) {
if (group[i].class == clss && group[i].rating == rating && ((!name && !group[i].name) || group[i].name == name)) {
return group[i].id;
return group[i];
}
}
}
return 0;
return null;
};
this.findHardpointId = function(groupName, clss, rating, name, mode, missile) {
/**
* Finds an internal Component ID based on Class, Rating, Group and/or name.
* At least one ofGroup name or unique component name must be provided
*
* @param {string} groupName [Optional] Full name or abbreviated name for component group
* @param {integer} clss Component Class
* @param {string} rating Component Rating
* @param {string} name [Optional] Long/unique name for component -e.g. 'Advanced Discover Scanner'
* @return {String} The id of the component if found, null if not found
*/
this.findInternalId = function(groupName, clss, rating, name) {
var i = this.findInternal(groupName, clss, rating, name);
return i ? i.id : 0;
};
/**
* Finds a hardpoint Component based on Class, Rating, Group and/or name.
* At least one ofGroup name or unique component name must be provided
*
* @param {string} groupName [Optional] Full name or abbreviated name for component group
* @param {integer} clss Component Class
* @param {string} rating [Optional] Component Rating
* @param {string} name [Optional] Long/unique name for component -e.g. 'Heat Sink Launcher'
* @param {string} mode Mount mode/type - [F]ixed, [G]imballed, [T]urret
* @param {string} missile [Optional] Missile type - [D]umbfire, [S]eeker
* @return {String} The id of the component if found, null if not found
*/
this.findHardpoint = function(groupName, clss, rating, name, mode, missile) {
var groups = {};
if (groupName) {
var grpCode = GrpNameToCodeMap[groupName];
if (grpCode && !C.hardpoints[grpCode]) {
throw 'Invalid internal group: ' + groupName;
if (C.hardpoints[groupName]) {
groups[groupName] = C.hardpoints[groupName];
} else {
var grpCode = GrpNameToCodeMap[groupName];
if (grpCode && C.hardpoints[grpCode]) {
groups[grpCode] = C.hardpoints[grpCode];
}
}
groups[grpCode] = C.hardpoints[grpCode];
} else if (name) {
groups = C.hardpoints;
} else {
throw 'Invalid group or name not provided';
}
for (var g in groups) {
var group = groups[g];
for (var i = 0, l = group.length; i < l; i++) {
if (group[i].class == clss && group[i].rating == rating && group[i].mode == mode
if (group[i].class == clss && (!rating || group[i].rating == rating) && group[i].mode == mode
&& ((!name && !group[i].name) || group[i].name == name)
&& ((!missile && !group[i].missile) || group[i].missile == missile)
) {
return group[i].id;
return group[i];
}
}
}
return 0;
return null;
};
/**
* Finds a hardpoint Component ID based on Class, Rating, Group and/or name.
* At least one of Group name or unique component name must be provided
*
* @param {string} groupName [Optional] Full name or abbreviated name for component group
* @param {integer} clss Component Class
* @param {string} rating Component Rating
* @param {string} name [Optional] Long/unique name for component -e.g. 'Heat Sink Launcher'
* @param {string} mode Mount mode/type - [F]ixed, [G]imballed, [T]urret
* @param {string} missile [Optional] Missile type - [D]umbfire, [S]eeker
* @return {String} The id of the component if found, null if not found
*/
this.findHardpointId = function(groupName, clss, rating, name, mode, missile) {
var h = this.findHardpoint(groupName, clss, rating, name, mode, missile);
return h ? h.id : 0;
};
/**

View File

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

View File

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

View File

@@ -51,6 +51,32 @@
transform: scaleX(-1); /* standard */
}
.section-menu {
position: relative;
z-index: 0;
&.selected {
z-index: 1;
h1 {
background-color: @primary;
}
}
h1 {
cursor: pointer;
.icon {
float: right;
margin: 0.1em 0.3em 0 0;
}
}
.select {
box-sizing: border-box;
left: 0;
}
}
#build {
float: right;
line-height: 2em;
@@ -163,12 +189,6 @@ table.total {
.smallTablet({
width: 50%;
.axis.x {
g.tick:nth-child(2n + 1) text {
display: none;
}
}
});
.largePhone({
@@ -192,12 +212,12 @@ table.total {
&.third {
width: 33%;
.largePhone({
.smallTablet({
width: 100% !important;
});
}
.smallTablet({
.smallScreen({
.axis.x {
g.tick:nth-child(2n + 1) text {
display: none;
@@ -215,6 +235,19 @@ table.total {
stroke-width: 1px;
stroke: #000;
}
}
svg g {
.threshold {
stroke: @secondary-disabled !important;
fill: @secondary-disabled !important;
&.exceeded {
stroke: @warning !important;
fill: @warning !important;
}
}
}
#componentPriority {

View File

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

View File

@@ -87,7 +87,7 @@ select {
.lc, .c {
border:1px solid @primary-disabled;
padding: 0.1em 0.2em;
padding: 0.1em 0.25em;
margin: 0.3em;
&.warning {

View File

@@ -22,8 +22,8 @@
<div class="dbl" >
<div><ul ng-repeat="shipId in buildsList">
{{ships[shipId].properties.name}}
<li ng-repeat="(name, build) in allBuilds[shipId]">
<a ui-sref-active="active" class="name" ui-sref="outfit({shipId:shipId, code:build, bn:name})" ng-bind="name"></a>
<li ng-repeat="(i, name) in cleanedBuildList(shipId)">
<a ui-sref-active="active" class="name" ui-sref="outfit({shipId:shipId, code:allBuilds[shipId][name], bn:name})" ng-bind="name"></a>
</li>
</ul></div>
</div>
@@ -36,7 +36,7 @@
</div>
<div class="menu-list" ng-if="openedMenu=='comp'" ng-click="$event.stopPropagation();" style="white-space: nowrap;">
<span class="cap" ng-if="!bs.hasComparisons" translate="none created"></span>
<a ng-repeat="(name, comp) in allComparisons" ui-sref-active="active" class="block name" ui-sref="compare({name:name})" ng-bind="name"></a>
<a ng-repeat="(i, name) in allComparisons" ui-sref-active="active" class="block name" ui-sref="compare({name:name})" ng-bind="name"></a>
<hr />
<a ui-sref="compare({name: 'all'})" class="block cap" translate="compare all"></a>
<a ui-sref="compare({name: null})" class="block cap" translate="create new"></a>

View File

@@ -12,6 +12,6 @@
<div class="l" ng-if="hp.c.armourpen">{{'pen' | translate}}: {{hp.c.armourpen}}</div>
<div class="l" ng-if="hp.c.shieldmul">+{{$r.fRPct(hp.c.shieldmul)}}</div>
<div class="l" ng-if="hp.c.range">{{hp.c.range}} <u>km</u></div>
<div class="l" ng-if="hp.c.ammo">{{'ammo' | translate}}: {{$r.fCrd(hp.c.clip)}}/{{$r.fCrd(hp.c.ammo)}}</div>
<div class="l" ng-if="hp.c.ammo >= 0">{{'ammo' | translate}}: {{$r.fCrd(hp.c.clip)}}+{{$r.fCrd(hp.c.ammo)}}</div>
</div>
</div>

View File

@@ -8,7 +8,7 @@
<div class="l" ng-if="c.c.maxmass">{{'max mass' | translate}}: {{c.c.maxmass}} <u translate="T"></u></div>
<div class="l" ng-if="c.c.bins">{{c.c.bins}} <u translate="bins"></u></div>
<div class="l" ng-if="c.c.rate">{{'rate' | translate}}: {{c.c.rate}} <u>Kg/s</u>&nbsp;&nbsp;&nbsp;{{'refuel time' | translate}}: {{$r.fTime(fuel * 1000 / c.c.rate)}}</div>
<div class="l" ng-if="c.c.ammo">{{'ammo' | translate}}: {{c.c.ammo}}</div>
<div class="l" ng-if="c.c.ammo">{{'ammo' | translate}}: {{$r.fCrd(c.c.ammo)}}</div>
<div class="l" ng-if="c.c.cells">{{'cells' | translate}}: {{c.c.cells}}</div>
<div class="l" ng-if="c.c.recharge">{{'recharge' | translate}}: {{c.c.recharge}} <u>MJ</u>&nbsp;&nbsp;&nbsp;{{'total' | translate}}: {{c.c.cells * c.c.recharge}} <u>MJ</u></div>
<div class="l" ng-if="c.c.repair">{{'repair' | translate}}: {{c.c.repair}}</div>

View File

@@ -13,15 +13,9 @@
<button class="danger" ng-click="deleteBuild()" ng-disabled="!savedCode">
<svg class="icon lg"><use xlink:href="#bin"></use></svg>
</button>
<button ui-sref="outfit({shipId: ship.id,code:null, bn: buildName})" ng-disabled="!code">
<button ng-click="resetBuild()" ng-disabled="!code">
<svg class="icon lg"><use xlink:href="#switch"></use></svg><span class="button-lbl" translate="reset"></span>
</button>
<button ng-click="aRatedBuild()">
<svg class="icon lg"><use xlink:href="#a"></use></svg><span class="button-lbl" translate="A-Rated"></span>
</button>
<button ng-click="optimizeMassBuild()">
<svg class="icon lg"><use xlink:href="#feather"></use></svg><span class="button-lbl" translate="optimize mass"></span>
</button>
<button ng-click="exportBuild($event)" ng-disabled="!buildName">
<svg class="icon lg"><use xlink:href="#download"></use></svg><span class="button-lbl" translate="export"></span>
</button>
@@ -60,26 +54,26 @@
</thead>
<tbody>
<tr>
<td class="cap" ng-bind="['','small','medium','large','capital'][ship.class] | translate"></td>
<td class="cap" ng-bind="SZM[ship.class] | translate"></td>
<td>{{ship.agility}}/10</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>
</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
<svg class="icon"><use xlink:href="#warning"></use></svg>
</span>
</td>
<td>{{fRound(ship.totalDps)}}</td>
<td>
{{ship.armour}}
{{fCrd(ship.armour)}}
<span ng-if="ship.armourAdded || ship.armourMultiplier > 1">
(<span ng-if="ship.armourMultiplier > 1">{{fRPct(ship.armourMultiplier)}}</span><span ng-if="ship.armourAdded && ship.armourMultiplier > 1">&nbsp;</span><span ng-if="ship.armourAdded">+ {{ship.armourAdded}}</span>)
</span>
</td>
<td>{{fRound(ship.shieldStrength)}} <u translate>MJ</u> <span ng-if="ship.shieldMultiplier > 1 && ship.shieldStrength > 0">({{fRPct(ship.shieldMultiplier)}})</span></td>
<td>{{fCrd(ship.shieldStrength)}} <u translate>MJ</u> <span ng-if="ship.shieldMultiplier > 1 && ship.shieldStrength > 0">({{fRPct(ship.shieldMultiplier)}})</span></td>
<td>{{ship.hullMass}} <u translate>T</u></td>
<td>{{fRound(ship.unladenMass)}} <u translate>T</u></td>
<td>{{fRound(ship.ladenMass)}} <u translate>T</u></td>
@@ -98,7 +92,27 @@
</div>
<div id="standard" class="group">
<h1 translate="standard"></h1>
<div class="section-menu" ng-class="{selected: selectedSlot=='standard'}" context-menu="optimizeCommon()" ng-click="selectSlot($event, 'standard')">
<h1>
{{'standard' | translate}}
<svg class="icon"><use xlink:href="#equalizer"></use></svg>
</h1>
<div class="select" ng-if="selectedSlot=='standard'">
<ul>
<li class="lc" ng-click="optimizeCommon()" translate="Optimize"></li>
<li class="c" ng-click="useCommon('E')">E</li>
<li class="c" ng-click="useCommon('D')">D</li>
<li class="c" ng-click="useCommon('C')">C</li>
<li class="c" ng-click="useCommon('B')">B</li>
<li class="c" ng-click="useCommon('A')">A</li>
</ul>
<div class="select-group cap" translate="builds / roles"></div>
<ul>
<li class="lc" ng-click="optimizeCargo()" translate="Trader"></li>
<li class="lc" ng-click="optimizeExplorer()" translate="Explorer"></li>
</ul>
</div>
</div>
<div class="slot" ng-click="selectSlot($event, ship.bulkheads)" ng-class="{selected: selectedSlot==ship.bulkheads}">
<div class="details">
<div class="sz"><span>8</span></div>
@@ -192,7 +206,20 @@
</div>
<div id="internal" class="group">
<h1 translate="internal compartments"></h1>
<div class="section-menu" ng-class="{selected: selectedSlot=='internal'}" context-menu="emptyInternal()" ng-click="selectSlot($event, 'internal')">
<h1>
{{'internal compartments' | translate}}
<svg class="icon"><use xlink:href="#equalizer"></use></svg>
</h1>
<div class="select" ng-if="selectedSlot=='internal'">
<ul>
<li class="lc" ng-click="emptyInternal()" translate="empty all"></li>
<li class="lc" ng-click="fillWithCargo()" translate="cargo"></li>
<li class="lc" ng-click="fillWithCells()" translate="scb"></li>
<li class="lc" ng-click="fillWithArmor()" translate="hr"></li>
</ul>
</div>
</div>
<div class="slot" ng-repeat="i in ship.internal" ng-click="selectSlot($event, i)" context-menu="select('i', i, $event, 'empty')" ng-class="{selected: selectedSlot==i}">
<div slot-internal class="details" slot="i" fuel="ship.fuelCapacity"></div>
<div class="select" ng-if="selectedSlot==i" ng-click="select('i',i,$event)">
@@ -202,7 +229,47 @@
</div>
<div id="hardpoints" class="group">
<h1 translate="hardpoints"></h1>
<div class="section-menu" ng-class="{selected: selectedSlot=='hardpoints'}" context-menu="emptyHardpoints()" ng-click="selectSlot($event, 'hardpoints')">
<h1>
{{'hardpoints' | translate}}
<svg class="icon"><use xlink:href="#equalizer"></use></svg>
</h1>
<div class="select hardpoint" ng-if="selectedSlot=='hardpoints'">
<ul>
<li class="lc" ng-click="emptyHardpoints()" translate="empty all"></li>
</ul>
<div class="select-group cap" translate="pl"></div>
<ul>
<li class="c" ng-click="useHardpoint('pl','F')"><svg class="icon lg"><use xlink:href="#mount-F"></use></svg></li>
<li class="c" ng-click="useHardpoint('pl','G')"><svg class="icon lg"><use xlink:href="#mount-G"></use></svg></li>
<li class="c" ng-click="useHardpoint('pl','T')"><svg class="icon lg"><use xlink:href="#mount-T"></use></svg></li>
</ul>
<div class="select-group cap" translate="ul"></div>
<ul>
<li class="c" ng-click="useHardpoint('ul','F')"><svg class="icon lg"><use xlink:href="#mount-F"></use></svg></li>
<li class="c" ng-click="useHardpoint('ul','G')"><svg class="icon lg"><use xlink:href="#mount-G"></use></svg></li>
<li class="c" ng-click="useHardpoint('ul','T')"><svg class="icon lg"><use xlink:href="#mount-T"></use></svg></li>
</ul>
<div class="select-group cap" translate="bl"></div>
<ul>
<li class="c" ng-click="useHardpoint('bl','F')"><svg class="icon lg"><use xlink:href="#mount-F"></use></svg></li>
<li class="c" ng-click="useHardpoint('bl','G')"><svg class="icon lg"><use xlink:href="#mount-G"></use></svg></li>
<li class="c" ng-click="useHardpoint('bl','T')"><svg class="icon lg"><use xlink:href="#mount-T"></use></svg></li>
</ul>
<div class="select-group cap" translate="mc"></div>
<ul>
<li class="c" ng-click="useHardpoint('mc','F')"><svg class="icon lg"><use xlink:href="#mount-F"></use></svg></li>
<li class="c" ng-click="useHardpoint('mc','G')"><svg class="icon lg"><use xlink:href="#mount-G"></use></svg></li>
<li class="c" ng-click="useHardpoint('mc','T')"><svg class="icon lg"><use xlink:href="#mount-T"></use></svg></li>
</ul>
<div class="select-group cap" translate="c"></div>
<ul>
<li class="c" ng-click="useHardpoint('c','F')"><svg class="icon lg"><use xlink:href="#mount-F"></use></svg></li>
<li class="c" ng-click="useHardpoint('c','G')"><svg class="icon lg"><use xlink:href="#mount-G"></use></svg></li>
<li class="c" ng-click="useHardpoint('c','T')"><svg class="icon lg"><use xlink:href="#mount-T"></use></svg></li>
</ul>
</div>
</div>
<div class="slot" ng-repeat="h in ship.hardpoints | filter:{maxClass: '!0'}" ng-click="selectSlot($event, h)" context-menu="select('h', h, $event, 'empty')" ng-class="{selected: selectedSlot==h}">
<div slot-hardpoint class="details" hp="h" size="HPC[h.maxClass]"></div>
<div class="select" ng-class="{hardpoint: h.maxClass > 0}" ng-if="selectedSlot==h" ng-click="select('h',h,$event)">
@@ -212,7 +279,25 @@
</div>
<div id="utility" class="group">
<h1 translate="utility mounts"></h1>
<div class="section-menu" ng-class="{selected: selectedSlot=='utility'}" context-menu="emptyUtility()" ng-click="selectSlot($event, 'utility')">
<h1>
{{'utility mounts' | translate}}
<svg class="icon"><use xlink:href="#equalizer"></use></svg>
</h1>
<div class="select" ng-if="selectedSlot=='utility'">
<ul>
<li class="lc" ng-click="emptyUtility()" translate="empty all"></li>
</ul>
<div class="select-group cap" translate="sb"></div>
<ul>
<li class="c" ng-click="useUtility('sb','E')">E</li>
<li class="c" ng-click="useUtility('sb','D')">D</li>
<li class="c" ng-click="useUtility('sb','C')">C</li>
<li class="c" ng-click="useUtility('sb','B')">B</li>
<li class="c" ng-click="useUtility('sb','A')">A</li>
</ul>
</div>
</div>
<div class="slot" ng-repeat="h in ship.hardpoints | filter:{maxClass: '0'}" ng-click="selectSlot($event, h)" context-menu="select('h', h, $event, 'empty')" ng-class="{selected: selectedSlot==h}">
<div slot-hardpoint class="details" hp="h" size="HPC[h.maxClass]"></div>
<div class="select" ng-class="{hardpoint: h.maxClass > 0}" ng-if="selectedSlot==h" ng-click="select('h',h,$event)">
@@ -229,8 +314,8 @@
<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 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(statusDeployed)" translate="DEP"></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>
</tr>
</thead>
<tbody>
@@ -250,11 +335,19 @@
<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><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:3em;"><u>{{f1Pct(c.c.power/ship.powerAvailable)}}</u></td>
<td ng-if="!c.enabled" class="disabled upp" colspan="2" translate="disabled"></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-class="STATUS_CLASS[statusDeployed(c)]">{{STATUS[statusDeployed(c)] | translate}}</td>
<td class="ri" style="width:3.25em;" ng-click="togglePwr(c)">{{fPwr(c.c.power)}}</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" ng-click="togglePwr(c)"></td>
<td class="upp" ng-if="c.enabled" ng-click="togglePwr(c)">
<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>
</tbody>
</table>
@@ -265,8 +358,9 @@
<table class="tabs">
<thead>
<tr>
<th style="width:50%" ng-class="{active: costTab == 'retrofit'}" ng-click="updateCostTab('retrofit')" translate="retrofit costs"></th>
<th style="width:50%" ng-class="{active: costTab == 'costs'}" ng-click="updateCostTab('costs')" translate="costs"></th>
<th style="width:34%" ng-class="{active: costTab == 'ammo'}" ng-click="updateCostTab('ammo')" translate="reload costs"></th>
<th style="width:33%" ng-class="{active: costTab == 'retrofit'}" ng-click="updateCostTab('retrofit')" translate="retrofit costs"></th>
<th style="width:33%" ng-class="{active: costTab == 'costs'}" ng-click="updateCostTab('costs')" translate="costs"></th>
</tr>
</thead>
</table>
@@ -319,12 +413,12 @@
<tr ng-if="!retrofitList || retrofitList.length == 0">
<td colspan="5" style="padding: 3em 0;" translate="PHRASE_NO_RETROCH"></td>
</tr>
<tr class="highlight" ng-repeat="item in retrofitList | orderBy:retroPredicate:retroDesc">
<td style="width:1em;">{{item.sellClassRating}}</td>
<tr class="highlight" ng-repeat="item in retrofitList | orderBy:retroPredicate:retroDesc" ng-click="toggleRetrofitCost(item.retroItem)" ng-class="{disabled: !item.retroItem.incCost}">
<td style="width:1em;">{{item.sellClassRating}}</td>
<td class="le shorten cap">{{item.sellName | translate}}</td>
<td style="width:1em;">{{item.buyClassRating}}</td>
<td class="le shorten cap">{{item.buyName | translate}}</td>
<td class="ri" ng-class="item.netCost > 0 ? 'warning' : 'secondary-disabled'">{{ fCrd(item.netCost)}} <u translate>CR</u></td>
<td class="ri" ng-class="item.retroItem.incCost ? item.netCost > 0 ? 'warning' : 'secondary-disabled' : 'disabled'">{{ fCrd(item.netCost)}} <u translate>CR</u></td>
</tr>
</tbody>
</table>
@@ -346,24 +440,55 @@
</tr>
</table>
</div>
<div ng-if="costTab == 'ammo'">
<div class="scroll-x">
<table style="width:100%">
<thead>
<tr class="main">
<th colspan="2" class="sortable le" ng-click="sortAmmo('ammoName | translate')" translate="component"></th>
<th colspan="1" class="sortable le" ng-click="sortAmmo('ammoMax')" translate="quantity"></th>
<th colspan="1" class="sortable le" ng-click="sortAmmo('ammoUnitCost')" translate="unit cost"></th>
<th class="sortable le" ng-click="sortAmmo('ammoTotalCost')">
{{'total cost' | translate}} <u class="optional-hide" ng-if="discounts.ammo < 1">-[{{fRPct(1 - discounts.ammo)}}]</u>
</th>
</tr>
</thead>
<tbody>
<tr class="highlight" ng-repeat="item in ammoList | orderBy:ammoPredicate:ammoDesc">
<td style="width:1em;">{{item.ammoClassRating}}</td>
<td class="le shorten cap">{{item.ammoName | translate}}</td>
<td class="ri">{{fCrd(item.ammoMax)}}</td>
<td class="ri">{{fCrd(item.ammoUnitCost)}} <u translate>CR</u></td>
<td class="ri">{{fCrd(item.ammoTotalCost)}} <u translate>CR</u></td>
</tr>
</tbody>
</table>
</div>
<table class="total">
<tr class="ri">
<td class="lbl" translate="total"></td>
<td>{{fCrd(ammoTotal)}} <u translate>CR</u></td>
</tr>
</table>
</div>
</div>
<div class="group half">
<div class="group third">
<h1 translate="jump range"></h1>
<div line-chart config="jrChart" series="jrSeries"></div>
</div>
<div class="group half">
<div class="group third">
<h1 translate="total range"></h1>
<div line-chart config="trChart" series="trSeries"></div>
</div>
<!-- TODO: Add back in once calcSpeed is dynamic and accurate
<div class="group third">
<h1 translate="speed"></h1>
<div line-chart config="speedChart" series="speedSeries"></div>
</div>
-->
<div class="group half">
<div slider max="ship.fuelCapacity" unit="'T'" on-change="::fuelChange(val)" style="position:relative; margin: 0 auto;">

View File

@@ -1,9 +1,87 @@
<div id="shipyard">
<a ui-sref="outfit({shipId:id})" class="ship" ng-repeat="(id,s) in ships">
<h2 ng-bind="s.properties.name"></h2>
<div class="subtitle">
<small ng-bind="s.properties.manufacturer"></small>
</div>
{{fCrd(s.retailCost)}} <u>CR</u>
</a>
<div class="scroll-x">
<table align="center" style="font-size:0.85em;white-space:nowrap">
<thead>
<tr class="main">
<th rowspan="2" class="sortable le" ng-click="sortShips('name')" translate="ship"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('manufacturer')" translate="manufacturer"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('class')" translate="size"></th>
<th colspan="4" translate="base"></th>
<th colspan="4" translate="max"></th>
<th colspan="5" class="sortable" ng-click="sortShips('hpCount')" translate="hardpoints"></th>
<th colspan="8" class="sortable" ng-click="sortShips('intCount')" translate="internal compartments"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('hullMass')" translate="hull"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('masslock')" translate="MLF"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('retailCost')" translate="cost"></th>
</tr>
<tr>
<!-- Base -->
<th class="sortable lft" ng-click="sortShips('speed')" translate="speed"></th>
<th class="sortable" ng-click="sortShips('boost')" translate="boost"></th>
<th class="sortable" ng-click="sortShips('baseArmour')" translate="armour"></th>
<th class="sortable" ng-click="sortShips('baseShieldStrength')" translate="shields"></th>
<!-- Max -->
<th class="sortable lft" ng-click="sortShips('topSpeed')" translate="speed"></th>
<th class="sortable " ng-click="sortShips('topBoost')" translate="boost"></th>
<th class="sortable " ng-click="sortShips('maxJumpRange')" translate="jump"></th>
<th class="sortable" ng-click="sortShips('maxCargo')" translate="cargo"></th>
<!-- Hardpoints -->
<th class="sortable lft" ng-click="sortShips('hp[1]')" translate="S"></th>
<th class="sortable" ng-click="sortShips('hp[2]')" translate="M"></th>
<th class="sortable" ng-click="sortShips('hp[3]')" translate="L"></th>
<th class="sortable" ng-click="sortShips('hp[4]')" translate="H"></th>
<th class="sortable" ng-click="sortShips('hp[0]')" translate="U"></th>
<!-- Internal -->
<th class="sortable lft" ng-click="sortShips('int[0]')" translate="1"></th>
<th class="sortable" ng-click="sortShips('int[1]')" translate="2"></th>
<th class="sortable" ng-click="sortShips('int[2]')" translate="3"></th>
<th class="sortable" ng-click="sortShips('int[3]')" translate="4"></th>
<th class="sortable" ng-click="sortShips('int[4]')" translate="5"></th>
<th class="sortable" ng-click="sortShips('int[5]')" translate="6"></th>
<th class="sortable" ng-click="sortShips('int[6]')" translate="7"></th>
<th class="sortable" ng-click="sortShips('int[7]')" translate="8"></th>
</tr>
</thead>
<tbody>
<tr class="highlight" ng-repeat="s in shipsOverview | orderBy:shipPredicate:shipDesc">
<td class="le"><a ui-sref="outfit({shipId: s.id})" ng-bind="s.name"></a></td>
<td class="le" ng-bind="s.manufacturer"></td>
<!-- Pad Size -->
<td class="cap" ng-bind="SZM[s.class] | translate"></td>
<!-- Base -->
<td class="ri">{{fCrd(s.speed)}} <u translate>m/s</u></td>
<td class="ri">{{fCrd(s.boost)}} <u translate>m/s</u></td>
<td class="ri" ng-bind="s.baseArmour"></td>
<td class="ri">{{fCrd(s.baseShieldStrength)}} <u translate>Mj</u></td>
<!-- Max -->
<td class="ri">{{fCrd(s.topSpeed)}} <u translate>m/s</u></td>
<td class="ri">{{fCrd(s.topBoost)}} <u translate>m/s</u></td>
<td class="ri">{{fRound(s.maxJumpRange)}} <u translate>LY</u></td>
<td class="ri">{{fCrd(s.maxCargo)}} <u translate>T</u></td>
<!-- Hardpoints -->
<td ng-bind="s.hp[1]" ng-class="{disabled: !s.hp[1]}"></td>
<td ng-bind="s.hp[2]" ng-class="{disabled: !s.hp[2]}"></td>
<td ng-bind="s.hp[3]" ng-class="{disabled: !s.hp[3]}"></td>
<td ng-bind="s.hp[4]" ng-class="{disabled: !s.hp[4]}"></td>
<td ng-bind="s.hp[0]" ng-class="{disabled: !s.hp[0]}"></td>
<!-- Internal -->
<td ng-bind="s.int[0]" ng-class="{disabled: !s.int[0]}"></td>
<td ng-bind="s.int[1]" ng-class="{disabled: !s.int[1]}"></td>
<td ng-bind="s.int[2]" ng-class="{disabled: !s.int[2]}"></td>
<td ng-bind="s.int[3]" ng-class="{disabled: !s.int[3]}"></td>
<td ng-bind="s.int[4]" ng-class="{disabled: !s.int[4]}"></td>
<td ng-bind="s.int[5]" ng-class="{disabled: !s.int[5]}"></td>
<td ng-bind="s.int[6]" ng-class="{disabled: !s.int[6]}"></td>
<td ng-bind="s.int[7]" ng-class="{disabled: !s.int[7]}"></td>
<!-- Other Stats -->
<td class="ri">{{fCrd(s.hullMass)}} <u translate>T</u></td>
<td class="ri" ng-bind="s.masslock"></td>
<td class="ri">{{fCrd(s.retailCost)}} <u translate>CR</u></td>
</tr>
</tbody>
</table>
</div>
</div>

View File

@@ -1,853 +1,163 @@
{
"sidewinder": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 25600,
"mass": 2
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 80320,
"mass": 4
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 132064,
"mass": 4
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 139424,
"mass": 4
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 25600, "mass": 2 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 80320, "mass": 4 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 132060, "mass": 4 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 139420, "mass": 4 }
],
"diamondback": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 225700,
"mass": 13
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 507900,
"mass": 26
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 1185100,
"mass": 26
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 1330100,
"mass": 26
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 225700, "mass": 13 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 507900, "mass": 26 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 1185100, "mass": 26 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 1330100, "mass": 26 }
],
"diamondback_explorer": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 800000,
"mass": 23
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 1800000,
"mass": 47
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 4200000,
"mass": 26
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 4714000,
"mass": 47
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 800000, "mass": 23 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 1800000, "mass": 47 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 4200000, "mass": 26 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 4714000, "mass": 47 }
],
"imperial_courier": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 1017200,
"mass": 4
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 2288600,
"mass": 8
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 5408800,
"mass": 8
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 5993700,
"mass": 8
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 1017200, "mass": 4 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 2288600, "mass": 8 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 5408800, "mass": 8 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 5993700, "mass": 8 }
],
"cobra_mk_iii": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 151887,
"mass": 14
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 341746,
"mass": 27
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 797407,
"mass": 27
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 894995,
"mass": 27
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 151890, "mass": 14 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 341750, "mass": 27 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 797410, "mass": 27 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 895000, "mass": 27 }
],
"imperial_clipper": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 8918344,
"mass": 30
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 20066274,
"mass": 60
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 47423294,
"mass": 60
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 52551342,
"mass": 60
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 8918340, "mass": 30 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 20066270, "mass": 60 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 47423290, "mass": 60 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 52551340, "mass": 60 }
],
"imperial_eagle": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 66500,
"mass": 4
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 222765,
"mass": 8
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 346555,
"mass": 8
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 372044,
"mass": 8
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 66500, "mass": 4 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 222760, "mass": 8 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 346550, "mass": 8 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 372040, "mass": 8 }
],
"federal_assault_ship": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 7925682,
"mass": 44
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 17832784,
"mass": 87
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 42144814,
"mass": 87
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 46702081,
"mass": 87
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 7925680, "mass": 44 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 17832780, "mass": 87 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 42144810, "mass": 87 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 46702080, "mass": 87 }
],
"federal_dropship": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 7925682,
"mass": 44
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 17832784,
"mass": 87
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 42144814,
"mass": 87
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 46702081,
"mass": 87
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 5725680, "mass": 44 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 12882780, "mass": 87 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 30446310, "mass": 87 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 33738580, "mass": 87 }
],
"federal_gunship": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 14325688,
"mass": 44
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 32232788,
"mass": 87
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 76176811,
"mass": 87
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 84414088,
"mass": 87
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 14325690, "mass": 44 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 32232790, "mass": 87 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 76176810, "mass": 87 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 84414090, "mass": 87 }
],
"python": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 22791271,
"mass": 26
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 51280361,
"mass": 53
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 121192586,
"mass": 53
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 134297567,
"mass": 53
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 22791270, "mass": 26 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 51280360, "mass": 53 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 121192590, "mass": 53 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 134297570, "mass": 53 }
],
"anaconda": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 58787780,
"mass": 30
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 132272505,
"mass": 60
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 312604021,
"mass": 60
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 346406995,
"mass": 60
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 58787780, "mass": 30 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 132272510, "mass": 60 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 312604020, "mass": 60 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 346407000, "mass": 60 }
],
"eagle": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 26880,
"mass": 4
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 90048,
"mass": 8
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 140089,
"mass": 8
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 150393,
"mass": 8
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 26880, "mass": 4 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 90050, "mass": 8 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 140090, "mass": 8 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 150390, "mass": 8 }
],
"viper": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 57172,
"mass": 5
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 128637,
"mass": 9
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 304014,
"mass": 9
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 336888,
"mass": 9
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 57170, "mass": 5 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 128640, "mass": 9 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 304010, "mass": 9 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 336890, "mass": 9 }
],
"vulture": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 1970246,
"mass": 17
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 4433054,
"mass": 35
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 10476783,
"mass": 35
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 11609675,
"mass": 35
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 1970250, "mass": 17 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 4433050, "mass": 35 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 10476780, "mass": 35 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 11609670, "mass": 35 }
],
"fer_de_lance": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 20626816,
"mass": 19
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 46410336,
"mass": 38
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 109683094,
"mass": 38
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 121543513,
"mass": 38
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 20626820, "mass": 19 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 46410340, "mass": 38 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 109683090, "mass": 38 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 121543510, "mass": 38 }
],
"hauler": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 42176,
"mass": 1
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 185047,
"mass": 2
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 270295,
"mass": 2
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 282421,
"mass": 2
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 42180, "mass": 1 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 185050, "mass": 2 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 270300, "mass": 2 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 282420, "mass": 2 }
],
"type_6_transporter": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 418378,
"mass": 12
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 941350,
"mass": 23
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 2224725,
"mass": 23
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 2465292,
"mass": 23
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 418380, "mass": 12 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 941350, "mass": 23 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 2224730, "mass": 23 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 2465290, "mass": 23 }
],
"type_7_transport": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 6988901,
"mass": 32
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 15725027,
"mass": 63
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 37163481,
"mass": 63
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 41182099,
"mass": 63
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 6988900, "mass": 32 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 15725030, "mass": 63 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 37163480, "mass": 63 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 41182100, "mass": 63 }
],
"type_9_heavy": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 30622336,
"mass": 75
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 68900257,
"mass": 150
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 162834275,
"mass": 150
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 180442119,
"mass": 150
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 30622340, "mass": 75 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 68900260, "mass": 150 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 162834280, "mass": 150 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 180442120, "mass": 150 }
],
"adder": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 35123,
"mass": 3
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 79027,
"mass": 5
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 186767,
"mass": 5
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 206963,
"mass": 5
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 35120, "mass": 3 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 79030, "mass": 5 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 186770, "mass": 5 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 206960, "mass": 5 }
],
"asp": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 2664461,
"mass": 21
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 5995038,
"mass": 42
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 14168273,
"mass": 42
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 15700338,
"mass": 42
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 2664460, "mass": 21 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 5995040, "mass": 42 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 14168270, "mass": 42 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 15700340, "mass": 42 }
],
"orca": [
{
"name": "Lightweight Alloy",
"class": 1,
"rating": "I",
"cost": 0,
"mass": 0
},
{
"name": "Reinforced Alloy",
"class": 1,
"rating": "I",
"cost": 19415954,
"mass": 21
},
{
"name": "Military Grade Composite",
"class": 1,
"rating": "I",
"cost": 43685898,
"mass": 87
},
{
"name": "Mirrored Surface Composite",
"class": 1,
"rating": "I",
"cost": 103244339,
"mass": 87
},
{
"name": "Reactive Surface Composite",
"class": 1,
"rating": "I",
"cost": 114408513,
"mass": 87
}
{ "name": "Lightweight Alloy", "class": 1, "rating": "I", "cost": 0, "mass": 0 },
{ "name": "Reinforced Alloy", "class": 1, "rating": "I", "cost": 19415950, "mass": 21 },
{ "name": "Military Grade Composite", "class": 1, "rating": "I", "cost": 43685900, "mass": 87 },
{ "name": "Mirrored Surface Composite", "class": 1, "rating": "I", "cost": 103244340, "mass": 87 },
{ "name": "Reactive Surface Composite", "class": 1, "rating": "I", "cost": 114408510, "mass": 87 }
]
}

View File

@@ -1,302 +1,31 @@
{
"6E": {
"grp": "fd",
"class": 6,
"rating": "E",
"cost": 199747,
"mass": 40,
"power": 0.4,
"optmass": 960,
"maxfuel": 5.3,
"fuelmul": 0.011,
"fuelpower": 2.6
},
"6D": {
"grp": "fd",
"class": 6,
"rating": "D",
"cost": 599242,
"mass": 16,
"power": 0.45,
"optmass": 1080,
"maxfuel": 5.3,
"fuelmul": 0.01,
"fuelpower": 2.6
},
"6C": {
"grp": "fd",
"class": 6,
"rating": "C",
"cost": 1797726,
"mass": 40,
"power": 0.5,
"optmass": 1200,
"maxfuel": 5.3,
"fuelmul": 0.008,
"fuelpower": 2.6
},
"6B": {
"grp": "fd",
"class": 6,
"rating": "B",
"cost": 5393177,
"mass": 64,
"power": 0.63,
"optmass": 1500,
"maxfuel": 6.6,
"fuelmul": 0.01,
"fuelpower": 2.6
},
"6A": {
"grp": "fd",
"class": 6,
"rating": "A",
"cost": 16179531,
"mass": 40,
"power": 0.75,
"optmass": 1800,
"maxfuel": 8,
"fuelmul": 0.012,
"fuelpower": 2.6
},
"5E": {
"grp": "fd",
"class": 5,
"rating": "E",
"cost": 63013,
"mass": 20,
"power": 0.32,
"optmass": 560,
"maxfuel": 3.3,
"fuelmul": 0.011,
"fuelpower": 2.45
},
"5D": {
"grp": "fd",
"class": 5,
"rating": "D",
"cost": 189036,
"mass": 8,
"power": 0.36,
"optmass": 630,
"maxfuel": 3.3,
"fuelmul": 0.01,
"fuelpower": 2.45
},
"5C": {
"grp": "fd",
"class": 5,
"rating": "C",
"cost": 567106,
"mass": 20,
"power": 0.4,
"optmass": 700,
"maxfuel": 3.3,
"fuelmul": 0.008,
"fuelpower": 2.45
},
"5B": {
"grp": "fd",
"class": 5,
"rating": "B",
"cost": 1701318,
"mass": 32,
"power": 0.5,
"optmass": 875,
"maxfuel": 4.1,
"fuelmul": 0.01,
"fuelpower": 2.45
},
"5A": {
"grp": "fd",
"class": 5,
"rating": "A",
"cost": 5103953,
"mass": 20,
"power": 0.6,
"optmass": 1050,
"maxfuel": 5,
"fuelmul": 0.012,
"fuelpower": 2.45
},
"4E": {
"grp": "fd",
"class": 4,
"rating": "E",
"cost": 19878,
"mass": 10,
"power": 0.24,
"optmass": 280,
"maxfuel": 2,
"fuelmul": 0.011,
"fuelpower": 2.3
},
"4D": {
"grp": "fd",
"class": 4,
"rating": "D",
"cost": 59633,
"mass": 4,
"power": 0.27,
"optmass": 315,
"maxfuel": 2,
"fuelmul": 0.01,
"fuelpower": 2.3
},
"4C": {
"grp": "fd",
"class": 4,
"rating": "C",
"cost": 178898,
"mass": 10,
"power": 0.3,
"optmass": 350,
"maxfuel": 2,
"fuelmul": 0.008,
"fuelpower": 2.3
},
"4B": {
"grp": "fd",
"class": 4,
"rating": "B",
"cost": 536693,
"mass": 16,
"power": 0.38,
"optmass": 438,
"maxfuel": 2.5,
"fuelmul": 0.01,
"fuelpower": 2.3
},
"4A": {
"grp": "fd",
"class": 4,
"rating": "A",
"cost": 1610080,
"mass": 10,
"power": 0.45,
"optmass": 525,
"maxfuel": 3,
"fuelmul": 0.012,
"fuelpower": 2.3
},
"3E": {
"grp": "fd",
"class": 3,
"rating": "E",
"cost": 6271,
"mass": 5,
"power": 0.24,
"optmass": 80,
"maxfuel": 1.2,
"fuelmul": 0.011,
"fuelpower": 2.15
},
"3D": {
"grp": "fd",
"class": 3,
"rating": "D",
"cost": 18812,
"mass": 2,
"power": 0.27,
"optmass": 90,
"maxfuel": 1.2,
"fuelmul": 0.01,
"fuelpower": 2.15
},
"3C": {
"grp": "fd",
"class": 3,
"rating": "C",
"cost": 56435,
"mass": 5,
"power": 0.3,
"optmass": 100,
"maxfuel": 1.2,
"fuelmul": 0.008,
"fuelpower": 2.15
},
"3B": {
"grp": "fd",
"class": 3,
"rating": "B",
"cost": 169304,
"mass": 8,
"power": 0.38,
"optmass": 125,
"maxfuel": 1.5,
"fuelmul": 0.01,
"fuelpower": 2.15
},
"3A": {
"grp": "fd",
"class": 3,
"rating": "A",
"cost": 507912,
"mass": 5,
"power": 0.45,
"optmass": 150,
"maxfuel": 1.8,
"fuelmul": 0.012,
"fuelpower": 2.15
},
"2E": {
"grp": "fd",
"class": 2,
"rating": "E",
"cost": 1978,
"mass": 2.5,
"power": 0.16,
"optmass": 48,
"maxfuel": 0.6,
"fuelmul": 0.011,
"fuelpower": 2
},
"2D": {
"grp": "fd",
"class": 2,
"rating": "D",
"cost": 5934,
"mass": 1,
"power": 0.18,
"optmass": 54,
"maxfuel": 0.6,
"fuelmul": 0.01,
"fuelpower": 2
},
"2C": {
"grp": "fd",
"class": 2,
"rating": "C",
"cost": 17803,
"mass": 2.5,
"power": 0.2,
"optmass": 60,
"maxfuel": 0.6,
"fuelmul": 0.008,
"fuelpower": 2
},
"2B": {
"grp": "fd",
"class": 2,
"rating": "B",
"cost": 53408,
"mass": 4,
"power": 0.25,
"optmass": 75,
"maxfuel": 0.8,
"fuelmul": 0.01,
"fuelpower": 2
},
"2A": {
"grp": "fd",
"class": 2,
"rating": "A",
"cost": 160224,
"mass": 2.5,
"power": 0.3,
"optmass": 90,
"maxfuel": 0.9,
"fuelmul": 0.012,
"fuelpower": 2
}
"6E": { "grp": "fd", "class": 6, "rating": "E", "cost": 199750, "mass": 40, "power": 0.4, "optmass": 960, "maxfuel": 5.3, "fuelmul": 0.011, "fuelpower": 2.6 },
"6D": { "grp": "fd", "class": 6, "rating": "D", "cost": 599240, "mass": 16, "power": 0.45, "optmass": 1080, "maxfuel": 5.3, "fuelmul": 0.01, "fuelpower": 2.6 },
"6C": { "grp": "fd", "class": 6, "rating": "C", "cost": 1797730, "mass": 40, "power": 0.5, "optmass": 1200, "maxfuel": 5.3, "fuelmul": 0.008, "fuelpower": 2.6 },
"6B": { "grp": "fd", "class": 6, "rating": "B", "cost": 5393180, "mass": 64, "power": 0.63, "optmass": 1500, "maxfuel": 6.6, "fuelmul": 0.01, "fuelpower": 2.6 },
"6A": { "grp": "fd", "class": 6, "rating": "A", "cost": 16179530, "mass": 40, "power": 0.75, "optmass": 1800, "maxfuel": 8, "fuelmul": 0.012, "fuelpower": 2.6 },
"5E": { "grp": "fd", "class": 5, "rating": "E", "cost": 63010, "mass": 20, "power": 0.32, "optmass": 560, "maxfuel": 3.3, "fuelmul": 0.011, "fuelpower": 2.45 },
"5D": { "grp": "fd", "class": 5, "rating": "D", "cost": 189040, "mass": 8, "power": 0.36, "optmass": 630, "maxfuel": 3.3, "fuelmul": 0.01, "fuelpower": 2.45 },
"5C": { "grp": "fd", "class": 5, "rating": "C", "cost": 567110, "mass": 20, "power": 0.4, "optmass": 700, "maxfuel": 3.3, "fuelmul": 0.008, "fuelpower": 2.45 },
"5B": { "grp": "fd", "class": 5, "rating": "B", "cost": 1701320, "mass": 32, "power": 0.5, "optmass": 875, "maxfuel": 4.1, "fuelmul": 0.01, "fuelpower": 2.45 },
"5A": { "grp": "fd", "class": 5, "rating": "A", "cost": 5103950, "mass": 20, "power": 0.6, "optmass": 1050, "maxfuel": 5, "fuelmul": 0.012, "fuelpower": 2.45 },
"4E": { "grp": "fd", "class": 4, "rating": "E", "cost": 19880, "mass": 10, "power": 0.24, "optmass": 280, "maxfuel": 2, "fuelmul": 0.011, "fuelpower": 2.3 },
"4D": { "grp": "fd", "class": 4, "rating": "D", "cost": 59630, "mass": 4, "power": 0.27, "optmass": 315, "maxfuel": 2, "fuelmul": 0.01, "fuelpower": 2.3 },
"4C": { "grp": "fd", "class": 4, "rating": "C", "cost": 178900, "mass": 10, "power": 0.3, "optmass": 350, "maxfuel": 2, "fuelmul": 0.008, "fuelpower": 2.3 },
"4B": { "grp": "fd", "class": 4, "rating": "B", "cost": 536690, "mass": 16, "power": 0.38, "optmass": 438, "maxfuel": 2.5, "fuelmul": 0.01, "fuelpower": 2.3 },
"4A": { "grp": "fd", "class": 4, "rating": "A", "cost": 1610080, "mass": 10, "power": 0.45, "optmass": 525, "maxfuel": 3, "fuelmul": 0.012, "fuelpower": 2.3 },
"3E": { "grp": "fd", "class": 3, "rating": "E", "cost": 6270, "mass": 5, "power": 0.24, "optmass": 80, "maxfuel": 1.2, "fuelmul": 0.011, "fuelpower": 2.15 },
"3D": { "grp": "fd", "class": 3, "rating": "D", "cost": 18810, "mass": 2, "power": 0.27, "optmass": 90, "maxfuel": 1.2, "fuelmul": 0.01, "fuelpower": 2.15 },
"3C": { "grp": "fd", "class": 3, "rating": "C", "cost": 56440, "mass": 5, "power": 0.3, "optmass": 100, "maxfuel": 1.2, "fuelmul": 0.008, "fuelpower": 2.15 },
"3B": { "grp": "fd", "class": 3, "rating": "B", "cost": 169300, "mass": 8, "power": 0.38, "optmass": 125, "maxfuel": 1.5, "fuelmul": 0.01, "fuelpower": 2.15 },
"3A": { "grp": "fd", "class": 3, "rating": "A", "cost": 507910, "mass": 5, "power": 0.45, "optmass": 150, "maxfuel": 1.8, "fuelmul": 0.012, "fuelpower": 2.15 },
"2E": { "grp": "fd", "class": 2, "rating": "E", "cost": 1980, "mass": 2.5, "power": 0.16, "optmass": 48, "maxfuel": 0.6, "fuelmul": 0.011, "fuelpower": 2 },
"2D": { "grp": "fd", "class": 2, "rating": "D", "cost": 5930, "mass": 1, "power": 0.18, "optmass": 54, "maxfuel": 0.6, "fuelmul": 0.01, "fuelpower": 2 },
"2C": { "grp": "fd", "class": 2, "rating": "C", "cost": 17800, "mass": 2.5, "power": 0.2, "optmass": 60, "maxfuel": 0.6, "fuelmul": 0.008, "fuelpower": 2 },
"2B": { "grp": "fd", "class": 2, "rating": "B", "cost": 53410, "mass": 4, "power": 0.25, "optmass": 75, "maxfuel": 0.8, "fuelmul": 0.01, "fuelpower": 2 },
"2A": { "grp": "fd", "class": 2, "rating": "A", "cost": 160220, "mass": 2.5, "power": 0.3, "optmass": 90, "maxfuel": 0.9, "fuelmul": 0.012, "fuelpower": 2 }
}

View File

@@ -1,44 +1,10 @@
{
"1C": {
"grp": "ft",
"class": 1,
"rating": "C",
"cost": 1000,
"capacity": 2
},
"2C": {
"grp": "ft",
"class": 2,
"rating": "C",
"cost": 3750,
"capacity": 4
},
"3C": {
"grp": "ft",
"class": 3,
"rating": "C",
"cost": 7063,
"capacity": 8
},
"4C": {
"grp": "ft",
"class": 4,
"rating": "C",
"cost": 24734,
"capacity": 16
},
"5C": {
"grp": "ft",
"class": 5,
"rating": "C",
"cost": 97754,
"capacity": 32
},
"6C": {
"grp": "ft",
"class": 6,
"rating": "C",
"cost": 341577,
"capacity": 64
}
"1C": { "grp": "ft", "class": 1, "rating": "C", "cost": 1000, "capacity": 2 },
"2C": { "grp": "ft", "class": 2, "rating": "C", "cost": 3750, "capacity": 4 },
"3C": { "grp": "ft", "class": 3, "rating": "C", "cost": 7060, "capacity": 8 },
"4C": { "grp": "ft", "class": 4, "rating": "C", "cost": 24730, "capacity": 16 },
"5C": { "grp": "ft", "class": 5, "rating": "C", "cost": 97750, "capacity": 32 },
"6C": { "grp": "ft", "class": 6, "rating": "C", "cost": 341580, "capacity": 64 },
"7C": { "grp": "ft", "class": 7, "rating": "C", "cost": 1780910, "capacity": 128 },
"8C": { "grp": "ft", "class": 8, "rating": "C", "cost": 5428400, "capacity": 256 }
}

View File

@@ -1,272 +1,37 @@
{
"6E": {
"grp": "ls",
"class": 6,
"rating": "E",
"cost": 88978,
"mass": 40,
"power": 0.64,
"time": 300
},
"6D": {
"grp": "ls",
"class": 6,
"rating": "D",
"cost": 222444,
"mass": 16,
"power": 0.72,
"time": 450
},
"6C": {
"grp": "ls",
"class": 6,
"rating": "C",
"cost": 556110,
"mass": 40,
"power": 0.8,
"time": 600
},
"6B": {
"grp": "ls",
"class": 6,
"rating": "B",
"cost": 1390275,
"mass": 64,
"power": 0.88,
"time": 900
},
"6A": {
"grp": "ls",
"class": 6,
"rating": "A",
"cost": 3475688,
"mass": 40,
"power": 0.96,
"time": 1500
},
"5E": {
"grp": "ls",
"class": 5,
"rating": "E",
"cost": 31778,
"mass": 20,
"power": 0.57,
"time": 300
},
"5D": {
"grp": "ls",
"class": 5,
"rating": "D",
"cost": 79444,
"mass": 8,
"power": 0.64,
"time": 450
},
"5C": {
"grp": "ls",
"class": 5,
"rating": "C",
"cost": 198611,
"mass": 20,
"power": 0.71,
"time": 600
},
"5B": {
"grp": "ls",
"class": 5,
"rating": "B",
"cost": 496527,
"mass": 32,
"power": 0.78,
"time": 900
},
"5A": {
"grp": "ls",
"class": 5,
"rating": "A",
"cost": 1241317,
"mass": 20,
"power": 0.85,
"time": 1500
},
"4E": {
"grp": "ls",
"class": 4,
"rating": "E",
"cost": 11349,
"mass": 10,
"power": 0.5,
"time": 300
},
"4D": {
"grp": "ls",
"class": 4,
"rating": "D",
"cost": 28373,
"mass": 4,
"power": 0.56,
"time": 450
},
"4C": {
"grp": "ls",
"class": 4,
"rating": "C",
"cost": 70932,
"mass": 10,
"power": 0.62,
"time": 600
},
"4B": {
"grp": "ls",
"class": 4,
"rating": "B",
"cost": 177331,
"mass": 16,
"power": 0.68,
"time": 900
},
"4A": {
"grp": "ls",
"class": 4,
"rating": "A",
"cost": 443328,
"mass": 10,
"power": 0.74,
"time": 1500
},
"3E": {
"grp": "ls",
"class": 3,
"rating": "E",
"cost": 4053,
"mass": 5,
"power": 0.42,
"time": 300
},
"3D": {
"grp": "ls",
"class": 3,
"rating": "D",
"cost": 10133,
"mass": 2,
"power": 0.48,
"time": 450
},
"3C": {
"grp": "ls",
"class": 3,
"rating": "C",
"cost": 25333,
"mass": 5,
"power": 0.53,
"time": 600
},
"3B": {
"grp": "ls",
"class": 3,
"rating": "B",
"cost": 63333,
"mass": 8,
"power": 0.58,
"time": 900
},
"3A": {
"grp": "ls",
"class": 3,
"rating": "A",
"cost": 158331,
"mass": 5,
"power": 0.64,
"time": 1500
},
"2E": {
"grp": "ls",
"class": 2,
"rating": "E",
"cost": 1448,
"mass": 2.5,
"power": 0.37,
"time": 300
},
"2D": {
"grp": "ls",
"class": 2,
"rating": "D",
"cost": 3619,
"mass": 1,
"power": 0.41,
"time": 450
},
"2C": {
"grp": "ls",
"class": 2,
"rating": "C",
"cost": 9048,
"mass": 2.5,
"power": 0.46,
"time": 600
},
"2B": {
"grp": "ls",
"class": 2,
"rating": "B",
"cost": 22619,
"mass": 4,
"power": 0.51,
"time": 900
},
"2A": {
"grp": "ls",
"class": 2,
"rating": "A",
"cost": 56547,
"mass": 2.5,
"power": 0.55,
"time": 1500
},
"1E": {
"grp": "ls",
"class": 1,
"rating": "E",
"cost": 517,
"mass": 1.3,
"power": 0.32,
"time": 300
},
"1D": {
"grp": "ls",
"class": 1,
"rating": "D",
"cost": 1293,
"mass": 0.5,
"power": 0.36,
"time": 450
},
"1C": {
"grp": "ls",
"class": 1,
"rating": "C",
"cost": 3231,
"mass": 1.3,
"power": 0.4,
"time": 600
},
"1B": {
"grp": "ls",
"class": 1,
"rating": "B",
"cost": 8078,
"mass": 2,
"power": 0.44,
"time": 900
},
"1A": {
"grp": "ls",
"class": 1,
"rating": "A",
"cost": 20195,
"mass": 1.3,
"power": 0.48,
"time": 1500
}
"6E": { "grp": "ls", "class": 6, "rating": "E", "cost": 88980, "mass": 40, "power": 0.64, "time": 300 },
"6D": { "grp": "ls", "class": 6, "rating": "D", "cost": 222440, "mass": 16, "power": 0.72, "time": 450 },
"6C": { "grp": "ls", "class": 6, "rating": "C", "cost": 556110, "mass": 40, "power": 0.8, "time": 600 },
"6B": { "grp": "ls", "class": 6, "rating": "B", "cost": 1390280, "mass": 64, "power": 0.88, "time": 900 },
"6A": { "grp": "ls", "class": 6, "rating": "A", "cost": 3475690, "mass": 40, "power": 0.96, "time": 1500 },
"5E": { "grp": "ls", "class": 5, "rating": "E", "cost": 31780, "mass": 20, "power": 0.57, "time": 300 },
"5D": { "grp": "ls", "class": 5, "rating": "D", "cost": 79440, "mass": 8, "power": 0.64, "time": 450 },
"5C": { "grp": "ls", "class": 5, "rating": "C", "cost": 198610, "mass": 20, "power": 0.71, "time": 600 },
"5B": { "grp": "ls", "class": 5, "rating": "B", "cost": 496530, "mass": 32, "power": 0.78, "time": 900 },
"5A": { "grp": "ls", "class": 5, "rating": "A", "cost": 1241320, "mass": 20, "power": 0.85, "time": 1500 },
"4E": { "grp": "ls", "class": 4, "rating": "E", "cost": 11350, "mass": 10, "power": 0.5, "time": 300 },
"4D": { "grp": "ls", "class": 4, "rating": "D", "cost": 28370, "mass": 4, "power": 0.56, "time": 450 },
"4C": { "grp": "ls", "class": 4, "rating": "C", "cost": 70930, "mass": 10, "power": 0.62, "time": 600 },
"4B": { "grp": "ls", "class": 4, "rating": "B", "cost": 177330, "mass": 16, "power": 0.68, "time": 900 },
"4A": { "grp": "ls", "class": 4, "rating": "A", "cost": 443330, "mass": 10, "power": 0.74, "time": 1500 },
"3E": { "grp": "ls", "class": 3, "rating": "E", "cost": 4050, "mass": 5, "power": 0.42, "time": 300 },
"3D": { "grp": "ls", "class": 3, "rating": "D", "cost": 10130, "mass": 2, "power": 0.48, "time": 450 },
"3C": { "grp": "ls", "class": 3, "rating": "C", "cost": 25330, "mass": 5, "power": 0.53, "time": 600 },
"3B": { "grp": "ls", "class": 3, "rating": "B", "cost": 63330, "mass": 8, "power": 0.58, "time": 900 },
"3A": { "grp": "ls", "class": 3, "rating": "A", "cost": 158330, "mass": 5, "power": 0.64, "time": 1500 },
"2E": { "grp": "ls", "class": 2, "rating": "E", "cost": 1450, "mass": 2.5, "power": 0.37, "time": 300 },
"2D": { "grp": "ls", "class": 2, "rating": "D", "cost": 3620, "mass": 1, "power": 0.41, "time": 450 },
"2C": { "grp": "ls", "class": 2, "rating": "C", "cost": 9050, "mass": 2.5, "power": 0.46, "time": 600 },
"2B": { "grp": "ls", "class": 2, "rating": "B", "cost": 22620, "mass": 4, "power": 0.51, "time": 900 },
"2A": { "grp": "ls", "class": 2, "rating": "A", "cost": 56550, "mass": 2.5, "power": 0.55, "time": 1500 },
"1E": { "grp": "ls", "class": 1, "rating": "E", "cost": 520, "mass": 1.3, "power": 0.32, "time": 300 },
"1D": { "grp": "ls", "class": 1, "rating": "D", "cost": 1290, "mass": 0.5, "power": 0.36, "time": 450 },
"1C": { "grp": "ls", "class": 1, "rating": "C", "cost": 3230, "mass": 1.3, "power": 0.4, "time": 600 },
"1B": { "grp": "ls", "class": 1, "rating": "B", "cost": 8080, "mass": 2, "power": 0.44, "time": 900 },
"1A": { "grp": "ls", "class": 1, "rating": "A", "cost": 20200, "mass": 1.3, "power": 0.48, "time": 1500 }
}

View File

@@ -1,42 +1,49 @@
{
"8E": { "grp": "pd", "class": 8, "rating": "E", "cost": 697584, "mass": 160, "power": 0.64, "weaponcapacity": 48, "weaponrecharge": 4.8, "enginecapacity": 32, "enginerecharge": 3.2, "systemcapacity": 32, "systemrecharge": 3.2 },
"8D": { "grp": "pd", "class": 8, "rating": "D", "cost": 1743961, "mass": 64, "power": 0.72, "weaponcapacity": 54, "weaponrecharge": 5.4, "enginecapacity": 36, "enginerecharge": 3.6, "systemcapacity": 36, "systemrecharge": 3.6 },
"8C": { "grp": "pd", "class": 8, "rating": "C", "cost": 4359903, "mass": 160, "power": 0.8, "weaponcapacity": 60, "weaponrecharge": 6, "enginecapacity": 40, "enginerecharge": 4, "systemcapacity": 40, "systemrecharge": 4 },
"8B": { "grp": "pd", "class": 8, "rating": "B", "cost": 10899756, "mass": 256, "power": 0.88, "weaponcapacity": 66, "weaponrecharge": 6.6, "enginecapacity": 44, "enginerecharge": 4.4, "systemcapacity": 44, "systemrecharge": 4.4 },
"8A": { "grp": "pd", "class": 8, "rating": "A", "cost": 27249391, "mass": 160, "power": 0.96, "weaponcapacity": 72, "weaponrecharge": 7.2, "enginecapacity": 48, "enginerecharge": 4.8, "systemcapacity": 48, "systemrecharge": 4.8 },
"7E": { "grp": "pd", "class": 7, "rating": "E", "cost": 249137, "mass": 80, "power": 0.59, "weaponcapacity": 41, "weaponrecharge": 4.1, "enginecapacity": 27, "enginerecharge": 2.6, "systemcapacity": 27, "systemrecharge": 2.6 },
"7D": { "grp": "pd", "class": 7, "rating": "D", "cost": 622843, "mass": 32, "power": 0.67, "weaponcapacity": 46, "weaponrecharge": 4.6, "enginecapacity": 31, "enginerecharge": 3, "systemcapacity": 31, "systemrecharge": 3 },
"7C": { "grp": "pd", "class": 7, "rating": "C", "cost": 1557108, "mass": 80, "power": 0.74, "weaponcapacity": 51, "weaponrecharge": 5.1, "enginecapacity": 34, "enginerecharge": 3.3, "systemcapacity": 34, "systemrecharge": 3.3 },
"8E": { "grp": "pd", "class": 8, "rating": "E", "cost": 697580, "mass": 160, "power": 0.64, "weaponcapacity": 48, "weaponrecharge": 4.8, "enginecapacity": 32, "enginerecharge": 3.2, "systemcapacity": 32, "systemrecharge": 3.2 },
"8D": { "grp": "pd", "class": 8, "rating": "D", "cost": 1743960, "mass": 64, "power": 0.72, "weaponcapacity": 54, "weaponrecharge": 5.4, "enginecapacity": 36, "enginerecharge": 3.6, "systemcapacity": 36, "systemrecharge": 3.6 },
"8C": { "grp": "pd", "class": 8, "rating": "C", "cost": 4359900, "mass": 160, "power": 0.8, "weaponcapacity": 60, "weaponrecharge": 6, "enginecapacity": 40, "enginerecharge": 4, "systemcapacity": 40, "systemrecharge": 4 },
"8B": { "grp": "pd", "class": 8, "rating": "B", "cost": 10899760, "mass": 256, "power": 0.88, "weaponcapacity": 66, "weaponrecharge": 6.6, "enginecapacity": 44, "enginerecharge": 4.4, "systemcapacity": 44, "systemrecharge": 4.4 },
"8A": { "grp": "pd", "class": 8, "rating": "A", "cost": 27249390, "mass": 160, "power": 0.96, "weaponcapacity": 72, "weaponrecharge": 7.2, "enginecapacity": 48, "enginerecharge": 4.8, "systemcapacity": 48, "systemrecharge": 4.8 },
"7E": { "grp": "pd", "class": 7, "rating": "E", "cost": 249140, "mass": 80, "power": 0.59, "weaponcapacity": 41, "weaponrecharge": 4.1, "enginecapacity": 27, "enginerecharge": 2.6, "systemcapacity": 27, "systemrecharge": 2.6 },
"7D": { "grp": "pd", "class": 7, "rating": "D", "cost": 622840, "mass": 32, "power": 0.67, "weaponcapacity": 46, "weaponrecharge": 4.6, "enginecapacity": 31, "enginerecharge": 3, "systemcapacity": 31, "systemrecharge": 3 },
"7C": { "grp": "pd", "class": 7, "rating": "C", "cost": 1557110, "mass": 80, "power": 0.74, "weaponcapacity": 51, "weaponrecharge": 5.1, "enginecapacity": 34, "enginerecharge": 3.3, "systemcapacity": 34, "systemrecharge": 3.3 },
"7B": { "grp": "pd", "class": 7, "rating": "B", "cost": 3892770, "mass": 128, "power": 0.81, "weaponcapacity": 56, "weaponrecharge": 5.6, "enginecapacity": 37, "enginerecharge": 3.6, "systemcapacity": 37, "systemrecharge": 3.6 },
"7A": { "grp": "pd", "class": 7, "rating": "A", "cost": 9731925, "mass": 80, "power": 0.89, "weaponcapacity": 61, "weaponrecharge": 6.1, "enginecapacity": 41, "enginerecharge": 4, "systemcapacity": 41, "systemrecharge": 4 },
"6E": { "grp": "pd", "class": 6, "rating": "E", "cost": 88978, "mass": 40, "power": 0.54, "weaponcapacity": 34, "weaponrecharge": 3.4, "enginecapacity": 23, "enginerecharge": 2.2, "systemcapacity": 23, "systemrecharge": 2.2 },
"6D": { "grp": "pd", "class": 6, "rating": "D", "cost": 222444, "mass": 16, "power": 0.61, "weaponcapacity": 38, "weaponrecharge": 3.9, "enginecapacity": 26, "enginerecharge": 2.4, "systemcapacity": 26, "systemrecharge": 2.4 },
"7A": { "grp": "pd", "class": 7, "rating": "A", "cost": 9731930, "mass": 80, "power": 0.89, "weaponcapacity": 61, "weaponrecharge": 6.1, "enginecapacity": 41, "enginerecharge": 4, "systemcapacity": 41, "systemrecharge": 4 },
"6E": { "grp": "pd", "class": 6, "rating": "E", "cost": 88980, "mass": 40, "power": 0.54, "weaponcapacity": 34, "weaponrecharge": 3.4, "enginecapacity": 23, "enginerecharge": 2.2, "systemcapacity": 23, "systemrecharge": 2.2 },
"6D": { "grp": "pd", "class": 6, "rating": "D", "cost": 222440, "mass": 16, "power": 0.61, "weaponcapacity": 38, "weaponrecharge": 3.9, "enginecapacity": 26, "enginerecharge": 2.4, "systemcapacity": 26, "systemrecharge": 2.4 },
"6C": { "grp": "pd", "class": 6, "rating": "C", "cost": 556110, "mass": 40, "power": 0.68, "weaponcapacity": 42, "weaponrecharge": 4.3, "enginecapacity": 29, "enginerecharge": 2.7, "systemcapacity": 29, "systemrecharge": 2.7 },
"6B": { "grp": "pd", "class": 6, "rating": "B", "cost": 1390275, "mass": 64, "power": 0.75, "weaponcapacity": 46, "weaponrecharge": 4.7, "enginecapacity": 32, "enginerecharge": 3, "systemcapacity": 32, "systemrecharge": 3 },
"6A": { "grp": "pd", "class": 6, "rating": "A", "cost": 3475688, "mass": 40, "power": 0.82, "weaponcapacity": 50, "weaponrecharge": 5.2, "enginecapacity": 35, "enginerecharge": 3.2, "systemcapacity": 35, "systemrecharge": 3.2 },
"5E": { "grp": "pd", "class": 5, "rating": "E", "cost": 31778, "mass": 20, "power": 0.5, "weaponcapacity": 27, "weaponrecharge": 2.9, "enginecapacity": 19, "enginerecharge": 1.7, "systemcapacity": 19, "systemrecharge": 1.7 },
"5D": { "grp": "pd", "class": 5, "rating": "D", "cost": 79444, "mass": 8, "power": 0.56, "weaponcapacity": 31, "weaponrecharge": 3.2, "enginecapacity": 22, "enginerecharge": 1.9, "systemcapacity": 22, "systemrecharge": 1.9 },
"5C": { "grp": "pd", "class": 5, "rating": "C", "cost": 198611, "mass": 20, "power": 0.62, "weaponcapacity": 34, "weaponrecharge": 3.6, "enginecapacity": 24, "enginerecharge": 2.1, "systemcapacity": 24, "systemrecharge": 2.1 },
"5B": { "grp": "pd", "class": 5, "rating": "B", "cost": 496527, "mass": 32, "power": 0.68, "weaponcapacity": 37, "weaponrecharge": 4, "enginecapacity": 26, "enginerecharge": 2.3, "systemcapacity": 26, "systemrecharge": 2.3 },
"5A": { "grp": "pd", "class": 5, "rating": "A", "cost": 1241317, "mass": 20, "power": 0.74, "weaponcapacity": 41, "weaponrecharge": 4.3, "enginecapacity": 29, "enginerecharge": 2.5, "systemcapacity": 29, "systemrecharge": 2.5 },
"4E": { "grp": "pd", "class": 4, "rating": "E", "cost": 11349, "mass": 10, "power": 0.45, "weaponcapacity": 22, "weaponrecharge": 2.3, "enginecapacity": 15, "enginerecharge": 1.3, "systemcapacity": 15, "systemrecharge": 1.3 },
"4D": { "grp": "pd", "class": 4, "rating": "D", "cost": 28373, "mass": 4, "power": 0.5, "weaponcapacity": 24, "weaponrecharge": 2.6, "enginecapacity": 17, "enginerecharge": 1.4, "systemcapacity": 17, "systemrecharge": 1.4 },
"4C": { "grp": "pd", "class": 4, "rating": "C", "cost": 70932, "mass": 10, "power": 0.56, "weaponcapacity": 27, "weaponrecharge": 2.9, "enginecapacity": 19, "enginerecharge": 1.6, "systemcapacity": 19, "systemrecharge": 1.6 },
"4B": { "grp": "pd", "class": 4, "rating": "B", "cost": 177331, "mass": 16, "power": 0.62, "weaponcapacity": 30, "weaponrecharge": 3.2, "enginecapacity": 21, "enginerecharge": 1.8, "systemcapacity": 21, "systemrecharge": 1.8 },
"4A": { "grp": "pd", "class": 4, "rating": "A", "cost": 443328, "mass": 10, "power": 0.67, "weaponcapacity": 32, "weaponrecharge": 3.5, "enginecapacity": 23, "enginerecharge": 1.9, "systemcapacity": 23, "systemrecharge": 1.9 },
"3E": { "grp": "pd", "class": 3, "rating": "E", "cost": 4053, "mass": 5, "power": 0.4, "weaponcapacity": 16, "weaponrecharge": 1.8, "enginecapacity": 12, "enginerecharge": 0.9, "systemcapacity": 12, "systemrecharge": 0.9 },
"3D": { "grp": "pd", "class": 3, "rating": "D", "cost": 10133, "mass": 2, "power": 0.45, "weaponcapacity": 18, "weaponrecharge": 2.1, "enginecapacity": 14, "enginerecharge": 1, "systemcapacity": 14, "systemrecharge": 1 },
"3C": { "grp": "pd", "class": 3, "rating": "C", "cost": 25333, "mass": 5, "power": 0.5, "weaponcapacity": 20, "weaponrecharge": 2.3, "enginecapacity": 15, "enginerecharge": 1.1, "systemcapacity": 15, "systemrecharge": 1.1 },
"3B": { "grp": "pd", "class": 3, "rating": "B", "cost": 63333, "mass": 8, "power": 0.55, "weaponcapacity": 22, "weaponrecharge": 2.5, "enginecapacity": 17, "enginerecharge": 1.2, "systemcapacity": 17, "systemrecharge": 1.2 },
"3A": { "grp": "pd", "class": 3, "rating": "A", "cost": 158331, "mass": 5, "power": 0.6, "weaponcapacity": 24, "weaponrecharge": 2.8, "enginecapacity": 18, "enginerecharge": 1.3, "systemcapacity": 18, "systemrecharge": 1.3 },
"2E": { "grp": "pd", "class": 2, "rating": "E", "cost": 1448, "mass": 2.5, "power": 0.36, "weaponcapacity": 12, "weaponrecharge": 1.4, "enginecapacity": 10, "enginerecharge": 0.6, "systemcapacity": 10, "systemrecharge": 0.6 },
"2D": { "grp": "pd", "class": 2, "rating": "D", "cost": 3619, "mass": 1, "power": 0.41, "weaponcapacity": 14, "weaponrecharge": 1.6, "enginecapacity": 11, "enginerecharge": 0.6, "systemcapacity": 11, "systemrecharge": 0.6 },
"2C": { "grp": "pd", "class": 2, "rating": "C", "cost": 9048, "mass": 2.5, "power": 0.45, "weaponcapacity": 15, "weaponrecharge": 1.8, "enginecapacity": 12, "enginerecharge": 0.7, "systemcapacity": 12, "systemrecharge": 0.7 },
"2B": { "grp": "pd", "class": 2, "rating": "B", "cost": 22619, "mass": 4, "power": 0.5, "weaponcapacity": 17, "weaponrecharge": 2, "enginecapacity": 13, "enginerecharge": 0.8, "systemcapacity": 13, "systemrecharge": 0.8 },
"2A": { "grp": "pd", "class": 2, "rating": "A", "cost": 56547, "mass": 2.5, "power": 0.54, "weaponcapacity": 18, "weaponrecharge": 2.2, "enginecapacity": 14, "enginerecharge": 0.8, "systemcapacity": 14, "systemrecharge": 0.8 },
"1E": { "grp": "pd", "class": 1, "rating": "E", "cost": 517, "mass": 1.3, "power": 0.32, "weaponcapacity": 10, "weaponrecharge": 1.2, "enginecapacity": 8, "enginerecharge": 0.4, "systemcapacity": 8, "systemrecharge": 0.4 },
"1D": { "grp": "pd", "class": 1, "rating": "D", "cost": 1293, "mass": 0.5, "power": 0.36, "weaponcapacity": 11, "weaponrecharge": 1.4, "enginecapacity": 9, "enginerecharge": 0.5, "systemcapacity": 9, "systemrecharge": 0.5 },
"1C": { "grp": "pd", "class": 1, "rating": "C", "cost": 3231, "mass": 1.3, "power": 0.4, "weaponcapacity": 12, "weaponrecharge": 1.5, "enginecapacity": 10, "enginerecharge": 0.5, "systemcapacity": 10, "systemrecharge": 0.5 },
"1B": { "grp": "pd", "class": 1, "rating": "B", "cost": 8078, "mass": 2, "power": 0.44, "weaponcapacity": 13, "weaponrecharge": 1.7, "enginecapacity": 11, "enginerecharge": 0.6, "systemcapacity": 11, "systemrecharge": 0.6 },
"1A": { "grp": "pd", "class": 1, "rating": "A", "cost": 20195, "mass": 1.3, "power": 0.48, "weaponcapacity": 14, "weaponrecharge": 1.8, "enginecapacity": 12, "enginerecharge": 0.6, "systemcapacity": 12, "systemrecharge": 0.6 }
"6B": { "grp": "pd", "class": 6, "rating": "B", "cost": 1390280, "mass": 64, "power": 0.75, "weaponcapacity": 46, "weaponrecharge": 4.7, "enginecapacity": 32, "enginerecharge": 3, "systemcapacity": 32, "systemrecharge": 3 },
"6A": { "grp": "pd", "class": 6, "rating": "A", "cost": 3475690, "mass": 40, "power": 0.82, "weaponcapacity": 50, "weaponrecharge": 5.2, "enginecapacity": 35, "enginerecharge": 3.2, "systemcapacity": 35, "systemrecharge": 3.2 },
"5E": { "grp": "pd", "class": 5, "rating": "E", "cost": 31780, "mass": 20, "power": 0.5, "weaponcapacity": 27, "weaponrecharge": 2.9, "enginecapacity": 19, "enginerecharge": 1.7, "systemcapacity": 19, "systemrecharge": 1.7 },
"5D": { "grp": "pd", "class": 5, "rating": "D", "cost": 79440, "mass": 8, "power": 0.56, "weaponcapacity": 31, "weaponrecharge": 3.2, "enginecapacity": 22, "enginerecharge": 1.9, "systemcapacity": 22, "systemrecharge": 1.9 },
"5C": { "grp": "pd", "class": 5, "rating": "C", "cost": 198610, "mass": 20, "power": 0.62, "weaponcapacity": 34, "weaponrecharge": 3.6, "enginecapacity": 24, "enginerecharge": 2.1, "systemcapacity": 24, "systemrecharge": 2.1 },
"5B": { "grp": "pd", "class": 5, "rating": "B", "cost": 496530, "mass": 32, "power": 0.68, "weaponcapacity": 37, "weaponrecharge": 4, "enginecapacity": 26, "enginerecharge": 2.3, "systemcapacity": 26, "systemrecharge": 2.3 },
"5A": { "grp": "pd", "class": 5, "rating": "A", "cost": 1241320, "mass": 20, "power": 0.74, "weaponcapacity": 41, "weaponrecharge": 4.3, "enginecapacity": 29, "enginerecharge": 2.5, "systemcapacity": 29, "systemrecharge": 2.5 },
"4E": { "grp": "pd", "class": 4, "rating": "E", "cost": 11350, "mass": 10, "power": 0.45, "weaponcapacity": 22, "weaponrecharge": 2.3, "enginecapacity": 15, "enginerecharge": 1.3, "systemcapacity": 15, "systemrecharge": 1.3 },
"4D": { "grp": "pd", "class": 4, "rating": "D", "cost": 28370, "mass": 4, "power": 0.5, "weaponcapacity": 24, "weaponrecharge": 2.6, "enginecapacity": 17, "enginerecharge": 1.4, "systemcapacity": 17, "systemrecharge": 1.4 },
"4C": { "grp": "pd", "class": 4, "rating": "C", "cost": 70930, "mass": 10, "power": 0.56, "weaponcapacity": 27, "weaponrecharge": 2.9, "enginecapacity": 19, "enginerecharge": 1.6, "systemcapacity": 19, "systemrecharge": 1.6 },
"4B": { "grp": "pd", "class": 4, "rating": "B", "cost": 177330, "mass": 16, "power": 0.62, "weaponcapacity": 30, "weaponrecharge": 3.2, "enginecapacity": 21, "enginerecharge": 1.8, "systemcapacity": 21, "systemrecharge": 1.8 },
"4A": { "grp": "pd", "class": 4, "rating": "A", "cost": 443330, "mass": 10, "power": 0.67, "weaponcapacity": 32, "weaponrecharge": 3.5, "enginecapacity": 23, "enginerecharge": 1.9, "systemcapacity": 23, "systemrecharge": 1.9 },
"3E": { "grp": "pd", "class": 3, "rating": "E", "cost": 4050, "mass": 5, "power": 0.4, "weaponcapacity": 16, "weaponrecharge": 1.8, "enginecapacity": 12, "enginerecharge": 0.9, "systemcapacity": 12, "systemrecharge": 0.9 },
"3D": { "grp": "pd", "class": 3, "rating": "D", "cost": 10130, "mass": 2, "power": 0.45, "weaponcapacity": 18, "weaponrecharge": 2.1, "enginecapacity": 14, "enginerecharge": 1, "systemcapacity": 14, "systemrecharge": 1 },
"3C": { "grp": "pd", "class": 3, "rating": "C", "cost": 25330, "mass": 5, "power": 0.5, "weaponcapacity": 20, "weaponrecharge": 2.3, "enginecapacity": 15, "enginerecharge": 1.1, "systemcapacity": 15, "systemrecharge": 1.1 },
"3B": { "grp": "pd", "class": 3, "rating": "B", "cost": 63330, "mass": 8, "power": 0.55, "weaponcapacity": 22, "weaponrecharge": 2.5, "enginecapacity": 17, "enginerecharge": 1.2, "systemcapacity": 17, "systemrecharge": 1.2 },
"3A": { "grp": "pd", "class": 3, "rating": "A", "cost": 158330, "mass": 5, "power": 0.6, "weaponcapacity": 24, "weaponrecharge": 2.8, "enginecapacity": 18, "enginerecharge": 1.3, "systemcapacity": 18, "systemrecharge": 1.3 },
"2E": { "grp": "pd", "class": 2, "rating": "E", "cost": 1450, "mass": 2.5, "power": 0.36, "weaponcapacity": 12, "weaponrecharge": 1.4, "enginecapacity": 10, "enginerecharge": 0.6, "systemcapacity": 10, "systemrecharge": 0.6 },
"2D": { "grp": "pd", "class": 2, "rating": "D", "cost": 3620, "mass": 1, "power": 0.41, "weaponcapacity": 14, "weaponrecharge": 1.6, "enginecapacity": 11, "enginerecharge": 0.6, "systemcapacity": 11, "systemrecharge": 0.6 },
"2C": { "grp": "pd", "class": 2, "rating": "C", "cost": 9050, "mass": 2.5, "power": 0.45, "weaponcapacity": 15, "weaponrecharge": 1.8, "enginecapacity": 12, "enginerecharge": 0.7, "systemcapacity": 12, "systemrecharge": 0.7 },
"2B": { "grp": "pd", "class": 2, "rating": "B", "cost": 22620, "mass": 4, "power": 0.5, "weaponcapacity": 17, "weaponrecharge": 2, "enginecapacity": 13, "enginerecharge": 0.8, "systemcapacity": 13, "systemrecharge": 0.8 },
"2A": { "grp": "pd", "class": 2, "rating": "A", "cost": 56550, "mass": 2.5, "power": 0.54, "weaponcapacity": 18, "weaponrecharge": 2.2, "enginecapacity": 14, "enginerecharge": 0.8, "systemcapacity": 14, "systemrecharge": 0.8 },
"1E": { "grp": "pd", "class": 1, "rating": "E", "cost": 520, "mass": 1.3, "power": 0.32, "weaponcapacity": 10, "weaponrecharge": 1.2, "enginecapacity": 8, "enginerecharge": 0.4, "systemcapacity": 8, "systemrecharge": 0.4 },
"1D": { "grp": "pd", "class": 1, "rating": "D", "cost": 1290, "mass": 0.5, "power": 0.36, "weaponcapacity": 11, "weaponrecharge": 1.4, "enginecapacity": 9, "enginerecharge": 0.5, "systemcapacity": 9, "systemrecharge": 0.5 },
"1C": { "grp": "pd", "class": 1, "rating": "C", "cost": 3230, "mass": 1.3, "power": 0.4, "weaponcapacity": 12, "weaponrecharge": 1.5, "enginecapacity": 10, "enginerecharge": 0.5, "systemcapacity": 10, "systemrecharge": 0.5 },
"1B": { "grp": "pd", "class": 1, "rating": "B", "cost": 8080, "mass": 2, "power": 0.44, "weaponcapacity": 13, "weaponrecharge": 1.7, "enginecapacity": 11, "enginerecharge": 0.6, "systemcapacity": 11, "systemrecharge": 0.6 },
"1A": { "grp": "pd", "class": 1, "rating": "A", "cost": 20200, "mass": 1.3, "power": 0.48, "weaponcapacity": 14, "weaponrecharge": 1.8, "enginecapacity": 12, "enginerecharge": 0.6, "systemcapacity": 12, "systemrecharge": 0.6 }
}

View File

@@ -1,37 +1,43 @@
{
"8E":{ "grp": "pp", "class": 8, "rating": "E", "cost": 2007241, "mass": 160, "pGen": 24, "eff": "F" },
"8D":{ "grp": "pp", "class": 8, "rating": "D", "cost": 6021722, "mass": 64, "pGen": 27, "eff": "D" },
"8C":{ "grp": "pp", "class": 8, "rating": "C", "cost": 18065165, "mass": 80, "pGen": 30, "eff": "C" },
"8B":{ "grp": "pp", "class": 8, "rating": "B", "cost": 54195495, "mass": 128, "pGen": 33, "eff": "C" },
"8A":{ "grp": "pp", "class": 8, "rating": "A", "cost": 162586486, "mass": 80, "pGen": 36, "eff": "B" },
"7E":{ "grp": "pp", "class": 7, "rating": "E", "cost": 633199, "mass": 80, "pGen": 20, "eff": "F" },
"7D":{ "grp": "pp", "class": 7, "rating": "D", "cost": 1899597, "mass": 32, "pGen": 22.5, "eff": "D" },
"8E":{ "grp": "pp", "class": 8, "rating": "E", "cost": 2007240, "mass": 160, "pGen": 24, "eff": "F" },
"8D":{ "grp": "pp", "class": 8, "rating": "D", "cost": 6021720, "mass": 64, "pGen": 27, "eff": "D" },
"8C":{ "grp": "pp", "class": 8, "rating": "C", "cost": 18065170, "mass": 80, "pGen": 30, "eff": "C" },
"8B":{ "grp": "pp", "class": 8, "rating": "B", "cost": 54195500, "mass": 128, "pGen": 33, "eff": "C" },
"8A":{ "grp": "pp", "class": 8, "rating": "A", "cost": 162586490, "mass": 80, "pGen": 36, "eff": "B" },
"7E":{ "grp": "pp", "class": 7, "rating": "E", "cost": 633200, "mass": 80, "pGen": 20, "eff": "F" },
"7D":{ "grp": "pp", "class": 7, "rating": "D", "cost": 1899600, "mass": 32, "pGen": 22.5, "eff": "D" },
"7C":{ "grp": "pp", "class": 7, "rating": "C", "cost": 5698790, "mass": 40, "pGen": 25, "eff": "C" },
"7B":{ "grp": "pp", "class": 7, "rating": "B", "cost": 17096371, "mass": 64, "pGen": 27.5, "eff": "C" },
"7A":{ "grp": "pp", "class": 7, "rating": "A", "cost": 51289112, "mass": 40, "pGen": 30, "eff": "B" },
"6E":{ "grp": "pp", "class": 6, "rating": "E", "cost": 199747, "mass": 40, "pGen": 16.8, "eff": "F" },
"6D":{ "grp": "pp", "class": 6, "rating": "D", "cost": 599242, "mass": 16, "pGen": 18.9, "eff": "D" },
"6C":{ "grp": "pp", "class": 6, "rating": "C", "cost": 1797726, "mass": 20, "pGen": 21, "eff": "C" },
"6B":{ "grp": "pp", "class": 6, "rating": "B", "cost": 5393177, "mass": 32, "pGen": 23.1, "eff": "C" },
"6A":{ "grp": "pp", "class": 6, "rating": "A", "cost": 16179531, "mass": 20, "pGen": 25.2, "eff": "B" },
"5E":{ "grp": "pp", "class": 5, "rating": "E", "cost": 63012, "mass": 20, "pGen": 13.6, "eff": "F" },
"5D":{ "grp": "pp", "class": 5, "rating": "D", "cost": 189035, "mass": 8, "pGen": 15.3, "eff": "D" },
"5C":{ "grp": "pp", "class": 5, "rating": "C", "cost": 567106, "mass": 10, "pGen": 17, "eff": "C" },
"5B":{ "grp": "pp", "class": 5, "rating": "B", "cost": 1701318, "mass": 16, "pGen": 18.7, "eff": "C" },
"5A":{ "grp": "pp", "class": 5, "rating": "A", "cost": 5103953, "mass": 10, "pGen": 20.4, "eff": "B" },
"4E":{ "grp": "pp", "class": 4, "rating": "E", "cost": 19878, "mass": 10, "pGen": 10.4, "eff": "F" },
"4D":{ "grp": "pp", "class": 4, "rating": "D", "cost": 59633, "mass": 4, "pGen": 11.7, "eff": "D" },
"4C":{ "grp": "pp", "class": 4, "rating": "C", "cost": 178898, "mass": 5, "pGen": 13, "eff": "C" },
"4B":{ "grp": "pp", "class": 4, "rating": "B", "cost": 536693, "mass": 8, "pGen": 14.3, "eff": "C" },
"7B":{ "grp": "pp", "class": 7, "rating": "B", "cost": 17096370, "mass": 64, "pGen": 27.5, "eff": "C" },
"7A":{ "grp": "pp", "class": 7, "rating": "A", "cost": 51289110, "mass": 40, "pGen": 30, "eff": "B" },
"6E":{ "grp": "pp", "class": 6, "rating": "E", "cost": 199750, "mass": 40, "pGen": 16.8, "eff": "F" },
"6D":{ "grp": "pp", "class": 6, "rating": "D", "cost": 599240, "mass": 16, "pGen": 18.9, "eff": "D" },
"6C":{ "grp": "pp", "class": 6, "rating": "C", "cost": 1797730, "mass": 20, "pGen": 21, "eff": "C" },
"6B":{ "grp": "pp", "class": 6, "rating": "B", "cost": 5393180, "mass": 32, "pGen": 23.1, "eff": "C" },
"6A":{ "grp": "pp", "class": 6, "rating": "A", "cost": 16179530, "mass": 20, "pGen": 25.2, "eff": "B" },
"5E":{ "grp": "pp", "class": 5, "rating": "E", "cost": 63010, "mass": 20, "pGen": 13.6, "eff": "F" },
"5D":{ "grp": "pp", "class": 5, "rating": "D", "cost": 189040, "mass": 8, "pGen": 15.3, "eff": "D" },
"5C":{ "grp": "pp", "class": 5, "rating": "C", "cost": 567110, "mass": 10, "pGen": 17, "eff": "C" },
"5B":{ "grp": "pp", "class": 5, "rating": "B", "cost": 1701320, "mass": 16, "pGen": 18.7, "eff": "C" },
"5A":{ "grp": "pp", "class": 5, "rating": "A", "cost": 5103950, "mass": 10, "pGen": 20.4, "eff": "B" },
"4E":{ "grp": "pp", "class": 4, "rating": "E", "cost": 19880, "mass": 10, "pGen": 10.4, "eff": "F" },
"4D":{ "grp": "pp", "class": 4, "rating": "D", "cost": 59630, "mass": 4, "pGen": 11.7, "eff": "D" },
"4C":{ "grp": "pp", "class": 4, "rating": "C", "cost": 178900, "mass": 5, "pGen": 13, "eff": "C" },
"4B":{ "grp": "pp", "class": 4, "rating": "B", "cost": 536690, "mass": 8, "pGen": 14.3, "eff": "C" },
"4A":{ "grp": "pp", "class": 4, "rating": "A", "cost": 1610080, "mass": 5, "pGen": 15.6, "eff": "B" },
"3E":{ "grp": "pp", "class": 3, "rating": "E", "cost": 6271, "mass": 5, "pGen": 8, "eff": "F" },
"3D":{ "grp": "pp", "class": 3, "rating": "D", "cost": 18812, "mass": 2, "pGen": 9, "eff": "D" },
"3C":{ "grp": "pp", "class": 3, "rating": "C", "cost": 56435, "mass": 2.5, "pGen": 10, "eff": "C" },
"3B":{ "grp": "pp", "class": 3, "rating": "B", "cost": 169304, "mass": 4, "pGen": 11, "eff": "C" },
"3A":{ "grp": "pp", "class": 3, "rating": "A", "cost": 507912, "mass": 2.5, "pGen": 12, "eff": "B" },
"2E":{ "grp": "pp", "class": 2, "rating": "E", "cost": 1978, "mass": 2.5, "pGen": 6.4, "eff": "F" },
"2D":{ "grp": "pp", "class": 2, "rating": "D", "cost": 5934, "mass": 1, "pGen": 7.2, "eff": "D" },
"2C":{ "grp": "pp", "class": 2, "rating": "C", "cost": 17803, "mass": 1.3, "pGen": 8, "eff": "C" },
"2B":{ "grp": "pp", "class": 2, "rating": "B", "cost": 53408, "mass": 2, "pGen": 8.8, "eff": "C" },
"2A":{ "grp": "pp", "class": 2, "rating": "A", "cost": 160224, "mass": 1.3, "pGen": 9.6, "eff": "B" }
"3E":{ "grp": "pp", "class": 3, "rating": "E", "cost": 6270, "mass": 5, "pGen": 8, "eff": "F" },
"3D":{ "grp": "pp", "class": 3, "rating": "D", "cost": 18810, "mass": 2, "pGen": 9, "eff": "D" },
"3C":{ "grp": "pp", "class": 3, "rating": "C", "cost": 56440, "mass": 2.5, "pGen": 10, "eff": "C" },
"3B":{ "grp": "pp", "class": 3, "rating": "B", "cost": 169300, "mass": 4, "pGen": 11, "eff": "C" },
"3A":{ "grp": "pp", "class": 3, "rating": "A", "cost": 507910, "mass": 2.5, "pGen": 12, "eff": "B" },
"2E":{ "grp": "pp", "class": 2, "rating": "E", "cost": 1980, "mass": 2.5, "pGen": 6.4, "eff": "F" },
"2D":{ "grp": "pp", "class": 2, "rating": "D", "cost": 5930, "mass": 1, "pGen": 7.2, "eff": "D" },
"2C":{ "grp": "pp", "class": 2, "rating": "C", "cost": 17800, "mass": 1.3, "pGen": 8, "eff": "C" },
"2B":{ "grp": "pp", "class": 2, "rating": "B", "cost": 53410, "mass": 2, "pGen": 8.8, "eff": "C" },
"2A":{ "grp": "pp", "class": 2, "rating": "A", "cost": 160220, "mass": 1.3, "pGen": 9.6, "eff": "B" }
}

View File

@@ -1,43 +1,43 @@
{
"8E": { "grp": "s", "class": 8, "rating": "E", "cost": 697584, "mass": 160, "power": 0.55, "range": 5.12 },
"8D": { "grp": "s", "class": 8, "rating": "D", "cost": 1743961, "mass": 64, "power": 0.62, "range": 5.76 },
"8C": { "grp": "s", "class": 8, "rating": "C", "cost": 4359903, "mass": 160, "power": 0.69, "range": 6.4 },
"8B": { "grp": "s", "class": 8, "rating": "B", "cost": 10899756, "mass": 256, "power": 1.14, "range": 7.04 },
"8A": { "grp": "s", "class": 8, "rating": "A", "cost": 27249391, "mass": 160, "power": 2.07, "range": 7.68 },
"8E": { "grp": "s", "class": 8, "rating": "E", "cost": 697580, "mass": 160, "power": 0.55, "range": 5.12 },
"8D": { "grp": "s", "class": 8, "rating": "D", "cost": 1743960, "mass": 64, "power": 0.62, "range": 5.76 },
"8C": { "grp": "s", "class": 8, "rating": "C", "cost": 4359900, "mass": 160, "power": 0.69, "range": 6.4 },
"8B": { "grp": "s", "class": 8, "rating": "B", "cost": 10899760, "mass": 256, "power": 1.14, "range": 7.04 },
"8A": { "grp": "s", "class": 8, "rating": "A", "cost": 27249390, "mass": 160, "power": 2.07, "range": 7.68 },
"6E": { "grp": "s", "class": 6, "rating": "E", "cost": 88978, "mass": 40, "power": 0.4, "range": 4.8 },
"6D": { "grp": "s", "class": 6, "rating": "D", "cost": 222444, "mass": 16, "power": 0.45, "range": 5.4 },
"6E": { "grp": "s", "class": 6, "rating": "E", "cost": 88980, "mass": 40, "power": 0.4, "range": 4.8 },
"6D": { "grp": "s", "class": 6, "rating": "D", "cost": 222440, "mass": 16, "power": 0.45, "range": 5.4 },
"6C": { "grp": "s", "class": 6, "rating": "C", "cost": 556110, "mass": 40, "power": 0.5, "range": 6 },
"6B": { "grp": "s", "class": 6, "rating": "B", "cost": 1390275, "mass": 64, "power": 0.83, "range": 6.6 },
"6A": { "grp": "s", "class": 6, "rating": "A", "cost": 3475688, "mass": 40, "power": 1.5, "range": 7.2 },
"6B": { "grp": "s", "class": 6, "rating": "B", "cost": 1390280, "mass": 64, "power": 0.83, "range": 6.6 },
"6A": { "grp": "s", "class": 6, "rating": "A", "cost": 3475690, "mass": 40, "power": 1.5, "range": 7.2 },
"5E": { "grp": "s", "class": 5, "rating": "E", "cost": 31778, "mass": 20, "power": 0.33, "range": 4.64 },
"5D": { "grp": "s", "class": 5, "rating": "D", "cost": 79444, "mass": 8, "power": 0.37, "range": 5.22 },
"5C": { "grp": "s", "class": 5, "rating": "C", "cost": 198611, "mass": 20, "power": 0.41, "range": 5.8 },
"5B": { "grp": "s", "class": 5, "rating": "B", "cost": 496527, "mass": 32, "power": 0.68, "range": 6.38 },
"5A": { "grp": "s", "class": 5, "rating": "A", "cost": 1241317, "mass": 20, "power": 1.23, "range": 6.96 },
"5E": { "grp": "s", "class": 5, "rating": "E", "cost": 31780, "mass": 20, "power": 0.33, "range": 4.64 },
"5D": { "grp": "s", "class": 5, "rating": "D", "cost": 79440, "mass": 8, "power": 0.37, "range": 5.22 },
"5C": { "grp": "s", "class": 5, "rating": "C", "cost": 198610, "mass": 20, "power": 0.41, "range": 5.8 },
"5B": { "grp": "s", "class": 5, "rating": "B", "cost": 496530, "mass": 32, "power": 0.68, "range": 6.38 },
"5A": { "grp": "s", "class": 5, "rating": "A", "cost": 1241320, "mass": 20, "power": 1.23, "range": 6.96 },
"4E": { "grp": "s", "class": 4, "rating": "E", "cost": 11349, "mass": 10, "power": 0.27, "range": 4.48 },
"4D": { "grp": "s", "class": 4, "rating": "D", "cost": 28373, "mass": 4, "power": 0.31, "range": 5.04 },
"4C": { "grp": "s", "class": 4, "rating": "C", "cost": 70932, "mass": 10, "power": 0.34, "range": 5.6 },
"4B": { "grp": "s", "class": 4, "rating": "B", "cost": 177331, "mass": 16, "power": 0.56, "range": 6.16 },
"4A": { "grp": "s", "class": 4, "rating": "A", "cost": 443328, "mass": 10, "power": 1.02, "range": 6.72 },
"4E": { "grp": "s", "class": 4, "rating": "E", "cost": 11350, "mass": 10, "power": 0.27, "range": 4.48 },
"4D": { "grp": "s", "class": 4, "rating": "D", "cost": 28370, "mass": 4, "power": 0.31, "range": 5.04 },
"4C": { "grp": "s", "class": 4, "rating": "C", "cost": 70930, "mass": 10, "power": 0.34, "range": 5.6 },
"4B": { "grp": "s", "class": 4, "rating": "B", "cost": 177330, "mass": 16, "power": 0.56, "range": 6.16 },
"4A": { "grp": "s", "class": 4, "rating": "A", "cost": 443330, "mass": 10, "power": 1.02, "range": 6.72 },
"3E": { "grp": "s", "class": 3, "rating": "E", "cost": 4053, "mass": 5, "power": 0.22, "range": 4.32 },
"3D": { "grp": "s", "class": 3, "rating": "D", "cost": 10133, "mass": 2, "power": 0.25, "range": 4.86 },
"3C": { "grp": "s", "class": 3, "rating": "C", "cost": 25333, "mass": 5, "power": 0.28, "range": 5.4 },
"3B": { "grp": "s", "class": 3, "rating": "B", "cost": 63333, "mass": 8, "power": 0.46, "range": 5.94 },
"3A": { "grp": "s", "class": 3, "rating": "A", "cost": 158331, "mass": 5, "power": 0.84, "range": 6.48 },
"3E": { "grp": "s", "class": 3, "rating": "E", "cost": 4050, "mass": 5, "power": 0.22, "range": 4.32 },
"3D": { "grp": "s", "class": 3, "rating": "D", "cost": 10130, "mass": 2, "power": 0.25, "range": 4.86 },
"3C": { "grp": "s", "class": 3, "rating": "C", "cost": 25330, "mass": 5, "power": 0.28, "range": 5.4 },
"3B": { "grp": "s", "class": 3, "rating": "B", "cost": 63330, "mass": 8, "power": 0.46, "range": 5.94 },
"3A": { "grp": "s", "class": 3, "rating": "A", "cost": 158330, "mass": 5, "power": 0.84, "range": 6.48 },
"2E": { "grp": "s", "class": 2, "rating": "E", "cost": 1448, "mass": 2.5, "power": 0.18, "range": 4.16 },
"2D": { "grp": "s", "class": 2, "rating": "D", "cost": 3619, "mass": 1, "power": 0.21, "range": 4.68 },
"2C": { "grp": "s", "class": 2, "rating": "C", "cost": 9048, "mass": 2.5, "power": 0.23, "range": 5.2 },
"2B": { "grp": "s", "class": 2, "rating": "B", "cost": 22619, "mass": 4, "power": 0.38, "range": 5.72 },
"2A": { "grp": "s", "class": 2, "rating": "A", "cost": 56547, "mass": 2.5, "power": 0.69, "range": 6.24 },
"2E": { "grp": "s", "class": 2, "rating": "E", "cost": 1450, "mass": 2.5, "power": 0.18, "range": 4.16 },
"2D": { "grp": "s", "class": 2, "rating": "D", "cost": 3620, "mass": 1, "power": 0.21, "range": 4.68 },
"2C": { "grp": "s", "class": 2, "rating": "C", "cost": 9050, "mass": 2.5, "power": 0.23, "range": 5.2 },
"2B": { "grp": "s", "class": 2, "rating": "B", "cost": 22620, "mass": 4, "power": 0.38, "range": 5.72 },
"2A": { "grp": "s", "class": 2, "rating": "A", "cost": 56550, "mass": 2.5, "power": 0.69, "range": 6.24 },
"1E": { "grp": "s", "class": 1, "rating": "E", "cost": 517, "mass": 1.3, "power": 0.16, "range": 4 },
"1D": { "grp": "s", "class": 1, "rating": "D", "cost": 1293, "mass": 0.5, "power": 0.18, "range": 4.5 },
"1C": { "grp": "s", "class": 1, "rating": "C", "cost": 3231, "mass": 1.3, "power": 0.2, "range": 5 },
"1B": { "grp": "s", "class": 1, "rating": "B", "cost": 8078, "mass": 2, "power": 0.33, "range": 5.5 },
"1A": { "grp": "s", "class": 1, "rating": "A", "cost": 20195, "mass": 1.3, "power": 0.6, "range": 6 }
"1E": { "grp": "s", "class": 1, "rating": "E", "cost": 520, "mass": 1.3, "power": 0.16, "range": 4 },
"1D": { "grp": "s", "class": 1, "rating": "D", "cost": 1290, "mass": 0.5, "power": 0.18, "range": 4.5 },
"1C": { "grp": "s", "class": 1, "rating": "C", "cost": 3230, "mass": 1.3, "power": 0.2, "range": 5 },
"1B": { "grp": "s", "class": 1, "rating": "B", "cost": 8080, "mass": 2, "power": 0.33, "range": 5.5 },
"1A": { "grp": "s", "class": 1, "rating": "A", "cost": 20200, "mass": 1.3, "power": 0.6, "range": 6 }
}

View File

@@ -1,32 +1,37 @@
{
"7E": { "grp": "t", "class": 7, "rating": "E", "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 },
"7C": { "grp": "t", "class": 7, "rating": "C", "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 },
"7A": { "grp": "t", "class": 7, "rating": "A", "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 },
"6C": { "grp": "t", "class": 6, "rating": "C", "cost": 1797726, "mass": 40, "power": 6.3, "optmass": 1200, "maxmass": 1800 },
"6B": { "grp": "t", "class": 6, "rating": "B", "cost": 5393177, "mass": 64, "power": 6.93, "optmass": 1320, "maxmass": 1980 },
"6A": { "grp": "t", "class": 6, "rating": "A", "cost": 16179531, "mass": 40, "power": 7.56, "optmass": 1440, "maxmass": 2160 },
"5E": { "grp": "t", "class": 5, "rating": "E", "cost": 63012, "mass": 20, "power": 4.08, "optmass": 560, "maxmass": 840 },
"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 },
"5B": { "grp": "t", "class": 5, "rating": "B", "cost": 1701318, "mass": 32, "power": 5.61, "optmass": 770, "maxmass": 1155 },
"5A": { "grp": "t", "class": 5, "rating": "A", "cost": 5103953, "mass": 20, "power": 6.12, "optmass": 840, "maxmass": 1260 },
"4E": { "grp": "t", "class": 4, "rating": "E", "cost": 19878, "mass": 10, "power": 3.82, "optmass": 280, "maxmass": 420 },
"4D": { "grp": "t", "class": 4, "rating": "D", "cost": 59633, "mass": 4, "power": 3.69, "optmass": 315, "maxmass": 473 },
"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 },
"4A": { "grp": "t", "class": 4, "rating": "A", "cost": 1610080, "mass": 10, "power": 4.92, "optmass": 420, "maxmass": 630 },
"3E": { "grp": "t", "class": 3, "rating": "E", "cost": 6271, "mass": 5, "power": 2.48, "optmass": 80, "maxmass": 120 },
"3D": { "grp": "t", "class": 3, "rating": "D", "cost": 18812, "mass": 2, "power": 2.79, "optmass": 90, "maxmass": 135 },
"3C": { "grp": "t", "class": 3, "rating": "C", "cost": 56435, "mass": 5, "power": 3.1, "optmass": 100, "maxmass": 150 },
"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 },
"2E": { "grp": "t", "class": 2, "rating": "E", "cost": 1978, "mass": 2.5, "power": 2, "optmass": 48, "maxmass": 72 },
"2D": { "grp": "t", "class": 2, "rating": "D", "cost": 5934, "mass": 1, "power": 2.25, "optmass": 54, "maxmass": 81 },
"2C": { "grp": "t", "class": 2, "rating": "C", "cost": 17803, "mass": 2.5, "power": 2.5, "optmass": 60, "maxmass": 90 },
"2B": { "grp": "t", "class": 2, "rating": "B", "cost": 53408, "mass": 4, "power": 2.75, "optmass": 66, "maxmass": 99 },
"2A": { "grp": "t", "class": 2, "rating": "A", "cost": 160224, "mass": 2.5, "power": 3, "optmass": 72, "maxmass": 108 }
}
"7E": { "grp": "t", "class": 7, "rating": "E", "M": 0.17, "P": 0.235, "cost": 633200, "mass": 80, "power": 6.08, "optmass": 1440, "maxmass": 2160 },
"7D": { "grp": "t", "class": 7, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 1899600, "mass": 32, "power": 6.84, "optmass": 1620, "maxmass": 2430 },
"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", "M": 0.07, "P": 1.51, "cost": 17096370, "mass": 128, "power": 8.36, "optmass": 1980, "maxmass": 2970 },
"7A": { "grp": "t", "class": 7, "rating": "A", "M": 0.04, "P": 2.33, "cost": 51289110, "mass": 80, "power": 9.12, "optmass": 2160, "maxmass": 3240 },
"6E": { "grp": "t", "class": 6, "rating": "E", "M": 0.17, "P": 0.235, "cost": 199750, "mass": 40, "power": 5.04, "optmass": 960, "maxmass": 1440 },
"6D": { "grp": "t", "class": 6, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 599240, "mass": 16, "power": 5.67, "optmass": 1080, "maxmass": 1620 },
"6C": { "grp": "t", "class": 6, "rating": "C", "M": 0.10, "P": 1, "cost": 1797730, "mass": 40, "power": 6.3, "optmass": 1200, "maxmass": 1800 },
"6B": { "grp": "t", "class": 6, "rating": "B", "M": 0.07, "P": 1.51, "cost": 5393180, "mass": 64, "power": 6.93, "optmass": 1320, "maxmass": 1980 },
"6A": { "grp": "t", "class": 6, "rating": "A", "M": 0.04, "P": 2.33, "cost": 16179530, "mass": 40, "power": 7.56, "optmass": 1440, "maxmass": 2160 },
"5E": { "grp": "t", "class": 5, "rating": "E", "M": 0.17, "P": 0.235, "cost": 63010, "mass": 20, "power": 4.08, "optmass": 560, "maxmass": 840 },
"5D": { "grp": "t", "class": 5, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 189040, "mass": 8, "power": 4.59, "optmass": 630, "maxmass": 945 },
"5C": { "grp": "t", "class": 5, "rating": "C", "M": 0.10, "P": 1, "cost": 567110, "mass": 20, "power": 5.1, "optmass": 700, "maxmass": 1050 },
"5B": { "grp": "t", "class": 5, "rating": "B", "M": 0.07, "P": 1.51, "cost": 1701320, "mass": 32, "power": 5.61, "optmass": 770, "maxmass": 1155 },
"5A": { "grp": "t", "class": 5, "rating": "A", "M": 0.04, "P": 2.33, "cost": 5103950, "mass": 20, "power": 6.12, "optmass": 840, "maxmass": 1260 },
"4E": { "grp": "t", "class": 4, "rating": "E", "M": 0.17, "P": 0.235, "cost": 19880, "mass": 10, "power": 3.82, "optmass": 280, "maxmass": 420 },
"4D": { "grp": "t", "class": 4, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 59630, "mass": 4, "power": 3.69, "optmass": 315, "maxmass": 473 },
"4C": { "grp": "t", "class": 4, "rating": "C", "M": 0.10, "P": 1, "cost": 178900, "mass": 10, "power": 4.1, "optmass": 350, "maxmass": 525 },
"4B": { "grp": "t", "class": 4, "rating": "B", "M": 0.07, "P": 1.51, "cost": 536690, "mass": 16, "power": 4.51, "optmass": 385, "maxmass": 578 },
"4A": { "grp": "t", "class": 4, "rating": "A", "M": 0.04, "P": 2.33, "cost": 1610080, "mass": 10, "power": 4.92, "optmass": 420, "maxmass": 630 },
"3E": { "grp": "t", "class": 3, "rating": "E", "M": 0.17, "P": 0.235, "cost": 6270, "mass": 5, "power": 2.48, "optmass": 80, "maxmass": 120 },
"3D": { "grp": "t", "class": 3, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 18810, "mass": 2, "power": 2.79, "optmass": 90, "maxmass": 135 },
"3C": { "grp": "t", "class": 3, "rating": "C", "M": 0.10, "P": 1, "cost": 56440, "mass": 5, "power": 3.1, "optmass": 100, "maxmass": 150 },
"3B": { "grp": "t", "class": 3, "rating": "B", "M": 0.07, "P": 1.51, "cost": 169300, "mass": 8, "power": 3.41, "optmass": 110, "maxmass": 165 },
"3A": { "grp": "t", "class": 3, "rating": "A", "M": 0.04, "P": 2.33, "cost": 507910, "mass": 5, "power": 3.72, "optmass": 120, "maxmass": 180 },
"2E": { "grp": "t", "class": 2, "rating": "E", "M": 0.17, "P": 0.235, "cost": 1980, "mass": 2.5, "power": 2, "optmass": 48, "maxmass": 72 },
"2D": { "grp": "t", "class": 2, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 5930, "mass": 1, "power": 2.25, "optmass": 54, "maxmass": 81 },
"2C": { "grp": "t", "class": 2, "rating": "C", "M": 0.10, "P": 1, "cost": 17800, "mass": 2.5, "power": 2.5, "optmass": 60, "maxmass": 90 },
"2B": { "grp": "t", "class": 2, "rating": "B", "M": 0.07, "P": 1.51, "cost": 53410, "mass": 4, "power": 2.75, "optmass": 66, "maxmass": 99 },
"2A": { "grp": "t", "class": 2, "rating": "A", "M": 0.04, "P": 2.33, "cost": 160220, "mass": 2.5, "power": 3, "optmass": 72, "maxmass": 108 }
}

View File

@@ -168,7 +168,7 @@
"name": "Retributor",
"class": 1,
"rating": "E",
"cost": 56145,
"cost": 56150,
"mass": 2,
"power": 0.69,
"mode": "F",

View File

@@ -18,7 +18,8 @@
"clip": 5,
"mjdps": 8.13,
"ssdam" : 37.13,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1r",
@@ -38,7 +39,8 @@
"clip": 5,
"mjdps": 10.97,
"ssdam" : 30.94,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1n",
@@ -58,7 +60,8 @@
"clip": 5,
"mjdps": 8.13,
"ssdam" : 22.28,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1o",
@@ -78,7 +81,8 @@
"clip": 5,
"mjdps" : 7.95,
"ssdam" : 21.04,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1p",
@@ -98,7 +102,8 @@
"clip": 5,
"mjdps" : 3.58,
"ssdam" : 12.38,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1k",
@@ -118,7 +123,8 @@
"clip": 5,
"mjdps" : 6.00,
"ssdam" : 15.47,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1l",
@@ -138,7 +144,8 @@
"clip": 5,
"mjdps" : 6.24,
"ssdam" : 15.47,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1m",
@@ -158,7 +165,8 @@
"clip": 5,
"mjdps" : 2.41,
"ssdam" : 7.74,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1h",
@@ -178,7 +186,8 @@
"clip": 5,
"mjdps" : 4.00,
"ssdam" : 9.59,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1i",
@@ -198,7 +207,8 @@
"clip": 5,
"mjdps" : 3.80,
"ssdam" : 8.97,
"ammo": 100
"ammo": 100,
"ammocost": 20
},
{
"id": "1j",
@@ -218,7 +228,8 @@
"clip": 5,
"mjdps" : 1.35,
"ssdam" : 4.13,
"ammo": 100
"ammo": 100,
"ammocost": 20
}
]
}
}

View File

@@ -5,7 +5,7 @@
"grp": "cs",
"class": 0,
"rating": "E",
"cost": 13544,
"cost": 13540,
"mass": 1.3,
"power": 0.2,
"range": 2,
@@ -16,7 +16,7 @@
"grp": "cs",
"class": 0,
"rating": "D",
"cost": 40633,
"cost": 40630,
"mass": 1.3,
"power": 0.4,
"range": 2.5,
@@ -27,7 +27,7 @@
"grp": "cs",
"class": 0,
"rating": "C",
"cost": 121899,
"cost": 121900,
"mass": 1.3,
"power": 0.8,
"range": 3,
@@ -38,7 +38,7 @@
"grp": "cs",
"class": 0,
"rating": "B",
"cost": 365698,
"cost": 365700,
"mass": 1.3,
"power": 1.6,
"range": 3.5,
@@ -49,7 +49,7 @@
"grp": "cs",
"class": 0,
"rating": "A",
"cost": 1097095,
"cost": 1097100,
"mass": 1.3,
"power": 3.2,
"range": 4,

View File

@@ -13,7 +13,8 @@
"armourpen": "F",
"thermload": 2,
"clip": 1,
"ammo": 10
"ammo": 10,
"ammocost": 30
},
{
"id": "01",
@@ -42,7 +43,8 @@
"armourpen": "F",
"thermload": 0,
"clip": 1,
"ammo": 3
"ammo": 3,
"ammocost": 25
},
{
"id": "03",
@@ -50,14 +52,15 @@
"name": "Point Defence",
"class": 0,
"rating": "I",
"cost": 18546,
"cost": 18550,
"mass": 0.5,
"power": 0.2,
"passive": 1,
"armourpen": "F",
"thermload": 1,
"clip": 50,
"ammo": 10000
"ammo": 10000,
"ammocost": 1
}
]
}
}

View File

@@ -18,7 +18,8 @@
"clip": 3,
"mjdps": 15.19,
"ssdam" : 28.36,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "1u",
@@ -38,7 +39,8 @@
"clip": 3,
"mjdps" : 12.77,
"ssdam" : 23.21,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "1v",
@@ -58,7 +60,8 @@
"clip": 3,
"mjdps" : 6.85,
"ssdam" : 12.89,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "1s",
@@ -78,7 +81,8 @@
"clip": 3,
"mjdps" : 9.50,
"ssdam" : 18.05,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
@@ -97,7 +101,8 @@
"dps": 9,
"thermload": 1,
"clip": 3,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "7f",
@@ -115,7 +120,8 @@
"dps": 9,
"thermload": 1,
"clip": 3,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "20",
@@ -135,7 +141,8 @@
"clip": 3,
"mjdps" : 5.53,
"ssdam" : 10.31,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "21",
@@ -155,7 +162,8 @@
"clip": 3,
"mjdps" : 3.58,
"ssdam" : 6.45,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "22",
@@ -175,7 +183,8 @@
"clip": 3,
"mjdps" : 2.11,
"ssdam" : 3.87,
"ammo": 30
"ammo": 30,
"ammocost": 50
},
{
"id": "pa",
@@ -183,7 +192,7 @@
"name": "Pacifier",
"class": 3,
"rating": "C",
"cost": 1400832,
"cost": 1400830,
"mass": 8,
"power": 1.02,
"mode": "F",
@@ -197,4 +206,4 @@
"ammo": 30
}
]
}
}

View File

@@ -5,7 +5,7 @@
"grp": "ws",
"class": 0,
"rating": "E",
"cost": 13544,
"cost": 13540,
"mass": 1.3,
"power": 0.2,
"range": 2,
@@ -16,7 +16,7 @@
"grp": "ws",
"class": 0,
"rating": "D",
"cost": 40633,
"cost": 40630,
"mass": 1.3,
"power": 0.4,
"range": 2.5,
@@ -27,7 +27,7 @@
"grp": "ws",
"class": 0,
"rating": "C",
"cost": 121899,
"cost": 121900,
"mass": 1.3,
"power": 0.8,
"range": 3,
@@ -38,7 +38,7 @@
"grp": "ws",
"class": 0,
"rating": "B",
"cost": 365698,
"cost": 365700,
"mass": 1.3,
"power": 1.6,
"range": 3.5,
@@ -49,7 +49,7 @@
"grp": "ws",
"class": 0,
"rating": "A",
"cost": 1097095,
"cost": 1097100,
"mass": 1.3,
"power": 3.2,
"range": 4,

View File

@@ -5,7 +5,7 @@
"grp": "kw",
"class": 0,
"rating": "E",
"cost": 13544,
"cost": 13540,
"mass": 1.3,
"power": 0.2,
"range": 2,
@@ -16,7 +16,7 @@
"grp": "kw",
"class": 0,
"rating": "D",
"cost": 40633,
"cost": 40630,
"mass": 1.3,
"power": 0.4,
"range": 2.5,
@@ -27,7 +27,7 @@
"grp": "kw",
"class": 0,
"rating": "C",
"cost": 121899,
"cost": 121900,
"mass": 1.3,
"power": 0.8,
"range": 3,
@@ -38,7 +38,7 @@
"grp": "kw",
"class": 0,
"rating": "B",
"cost": 365698,
"cost": 365700,
"mass": 1.3,
"power": 1.6,
"range": 3.5,
@@ -49,7 +49,7 @@
"grp": "kw",
"class": 0,
"rating": "A",
"cost": 1097095,
"cost": 1097100,
"mass": 1.3,
"power": 3.2,
"range": 4,

View File

@@ -13,7 +13,8 @@
"armourpen": "C",
"thermload": 2,
"clip": 1,
"ammo": 24
"ammo": 24,
"ammocost": 209
},
{
"id": "2k",
@@ -28,7 +29,8 @@
"armourpen": "C",
"thermload": 3,
"clip": 3,
"ammo": 24
"ammo": 24,
"ammocost": 209
}
]
}
}

View File

@@ -17,7 +17,7 @@
"grp": "ml",
"class": 2,
"rating": "D",
"cost": 22576,
"cost": 22580,
"mass": 2,
"power": 0.75,
"mode": "F",

View File

@@ -19,7 +19,8 @@
"ammo": 24,
"mjdps": 1.72,
"ssdam" : 3.87,
"missile": "D"
"missile": "D",
"ammocost": 500
},
{
"id": "2g",
@@ -40,14 +41,15 @@
"ammo": 18,
"mjdps": 0.57,
"ssdam" : 2.58,
"missile": "S"
"missile": "S",
"ammocost": 666.67
},
{
"id": "2d",
"grp": "mr",
"class": 1,
"rating": "B",
"cost": 32175,
"cost": 32180,
"mass": 2,
"power": 0.4,
"mode": "F",
@@ -61,7 +63,8 @@
"ammo": 16,
"mjdps": 1.63,
"ssdam" : 3.87,
"missile": "D"
"missile": "D",
"ammocost": 500
},
{
"id": "2e",
@@ -82,7 +85,8 @@
"ammo": 6,
"mjdps": 0.57,
"ssdam" : 2.58,
"missile": "S"
"missile": "S",
"ammocost": 666.67
},
{
"id": "Ph",
@@ -90,7 +94,7 @@
"name": "Pack-Hound",
"class": 2,
"rating": "B",
"cost": 1000832,
"cost": 768600,
"mass": 4,
"power": 1.2,
"mode": "F",
@@ -106,4 +110,4 @@
"missile": "S"
}
]
}
}

View File

@@ -18,7 +18,8 @@
"clip": 90,
"mjdps" : 6.02,
"ssdam" : 1.20,
"ammo": 2100
"ammo": 2100,
"ammocost": 1
},
{
"id": "27",
@@ -38,7 +39,8 @@
"clip": 90,
"mjdps" : 5.59,
"ssdam" : 1.03,
"ammo": 2100
"ammo": 2100,
"ammocost": 1
},
{
"id": "28",
@@ -58,7 +60,8 @@
"clip": 90,
"mjdps" : 2.15,
"ssdam" : 0.52,
"ammo": 2100
"ammo": 2100,
"ammocost": 1
},
{
"id": "23",
@@ -78,7 +81,8 @@
"clip": 90,
"mjdps" : 3.75,
"ssdam" : 0.69,
"ammo": 2100
"ammo": 2100,
"ammocost": 1
},
{
"id": "24",
@@ -98,7 +102,8 @@
"clip": 90,
"mjdps" : 2.03,
"ssdam" : 0.34,
"ammo": 2100
"ammo": 2100,
"ammocost": 1
},
{
"id": "25",
@@ -118,7 +123,8 @@
"clip": 90,
"mjdps" : 1.54,
"ssdam" : 0.34,
"ammo": 2100
"ammo": 2100,
"ammocost": 1
},
{
"id": "e0",
@@ -126,7 +132,7 @@
"name": "Enforcer",
"class": 1,
"rating": "F",
"cost": 13984,
"cost": 13980,
"mass": 2,
"power": 0.28,
"mode": "F",
@@ -140,4 +146,4 @@
"ammo": 1000
}
]
}
}

View File

@@ -18,7 +18,8 @@
"clip": 5,
"mjdps" : 6.89,
"ssdam" : 27.85,
"ammo": 100
"ammo": 100,
"ammocost": 200
},
{
"id": "2b",
@@ -38,7 +39,8 @@
"clip": 5,
"mjdps" : 20.98,
"ssdam" : 92.82,
"ammo": 100
"ammo": 100,
"ammocost": 200
},
{
"id": "2c",
@@ -58,12 +60,13 @@
"clip": 5,
"mjdps" : 25.55,
"ssdam" : 123.76,
"ammo": 100
"ammo": 100,
"ammocost": 200
},
{
"id": "Ap",
"grp": "pa",
"name": "Advanced",
"name": "Advanced Plasma Accelerator",
"class": 3,
"rating": "B",
"cost": 4119120,
@@ -80,4 +83,4 @@
"ammo": 300
}
]
}
}

View File

@@ -18,7 +18,8 @@
"clip": 1,
"mjdps" : 13.75,
"ssdam" : 24.75,
"ammo": 30
"ammo": 30,
"ammocost": 200
},
{
"id": "2a",
@@ -38,7 +39,8 @@
"clip": 1,
"mjdps" : 21.66,
"ssdam" : 43.32,
"ammo": 30
"ammo": 30,
"ammocost": 200
},
{
"id": "ih",
@@ -60,4 +62,4 @@
"ammo": 90
}
]
}
}

View File

@@ -13,7 +13,8 @@
"thermload": 10,
"grp": "tp",
"clip": 1,
"ammo": 1,
"ammo": 0,
"ammocost": 15000,
"missile": "S"
},
{
@@ -29,8 +30,9 @@
"thermload": 10,
"grp": "tp",
"clip": 2,
"ammo": 1,
"ammo": 0,
"ammocost": 15000,
"missile": "S"
}
]
}
}

View File

@@ -1,404 +1,51 @@
{
"am": [
{
"id": "1f",
"grp": "am",
"class": 8,
"rating": "E",
"cost": 612220,
"power": 1.8,
"ammo": 10000,
"repair": 120
},
{
"id": "1e",
"grp": "am",
"class": 8,
"rating": "D",
"cost": 1836660,
"power": 2.4,
"ammo": 9000,
"repair": 144
},
{
"id": "1d",
"grp": "am",
"class": 8,
"rating": "C",
"cost": 5509980,
"power": 3,
"ammo": 10000,
"repair": 200
},
{
"id": "1c",
"grp": "am",
"class": 8,
"rating": "B",
"cost": 16529941,
"power": 3.45,
"ammo": 12000,
"repair": 276
},
{
"id": "1b",
"grp": "am",
"class": 8,
"rating": "A",
"cost": 49589823,
"power": 4.2,
"ammo": 11000,
"repair": 308
},
{
"id": "1a",
"grp": "am",
"class": 7,
"rating": "E",
"cost": 340122,
"power": 1.58,
"ammo": 8700,
"repair": 104.4
},
{
"id": "19",
"grp": "am",
"class": 7,
"rating": "D",
"cost": 1020367,
"power": 2.1,
"ammo": 7800,
"repair": 124.8
},
{
"id": "18",
"grp": "am",
"class": 7,
"rating": "C",
"cost": 3061100,
"power": 2.63,
"ammo": 8700,
"repair": 174
},
{
"id": "17",
"grp": "am",
"class": 7,
"rating": "B",
"cost": 9183300,
"power": 3.02,
"ammo": 10400,
"repair": 239.2
},
{
"id": "16",
"grp": "am",
"class": 7,
"rating": "A",
"cost": 27549901,
"power": 3.68,
"ammo": 9600,
"repair": 268.8
},
{
"id": "15",
"grp": "am",
"class": 6,
"rating": "E",
"cost": 188957,
"power": 1.4,
"ammo": 7400,
"repair": 88.8
},
{
"id": "14",
"grp": "am",
"class": 6,
"rating": "D",
"cost": 566870,
"power": 1.86,
"ammo": 6700,
"repair": 107.2
},
{
"id": "13",
"grp": "am",
"class": 6,
"rating": "C",
"cost": 1700611,
"power": 2.33,
"ammo": 7400,
"repair": 148
},
{
"id": "12",
"grp": "am",
"class": 6,
"rating": "B",
"cost": 5101834,
"power": 2.67,
"ammo": 8900,
"repair": 204.7
},
{
"id": "11",
"grp": "am",
"class": 6,
"rating": "A",
"cost": 15305501,
"power": 3.26,
"ammo": 8100,
"repair": 226.8
},
{
"id": "10",
"grp": "am",
"class": 5,
"rating": "E",
"cost": 104976,
"power": 1.17,
"ammo": 6100,
"repair": 73.2
},
{
"id": "0v",
"grp": "am",
"class": 5,
"rating": "D",
"cost": 314928,
"power": 1.56,
"ammo": 5500,
"repair": 88
},
{
"id": "0u",
"grp": "am",
"class": 5,
"rating": "C",
"cost": 944784,
"power": 1.95,
"ammo": 6100,
"repair": 122
},
{
"id": "0t",
"grp": "am",
"class": 5,
"rating": "B",
"cost": 2834352,
"power": 2.24,
"ammo": 7300,
"repair": 167.9
},
{
"id": "0s",
"grp": "am",
"class": 5,
"rating": "A",
"cost": 8503056,
"power": 2.73,
"ammo": 6700,
"repair": 187.6
},
{
"id": "0r",
"grp": "am",
"class": 4,
"rating": "E",
"cost": 58320,
"power": 0.99,
"ammo": 4900,
"repair": 58.8
},
{
"id": "0q",
"grp": "am",
"class": 4,
"rating": "D",
"cost": 174960,
"power": 1.32,
"ammo": 4400,
"repair": 70.4
},
{
"id": "0p",
"grp": "am",
"class": 4,
"rating": "C",
"cost": 524880,
"power": 1.65,
"ammo": 4900,
"repair": 98
},
{
"id": "0o",
"grp": "am",
"class": 4,
"rating": "B",
"cost": 1574640,
"power": 1.9,
"ammo": 5900,
"repair": 135.7
},
{
"id": "0n",
"grp": "am",
"class": 4,
"rating": "A",
"cost": 4723920,
"power": 2.31,
"ammo": 5400,
"repair": 151.2
},
{
"id": "0m",
"grp": "am",
"class": 3,
"rating": "E",
"cost": 32400,
"power": 0.81,
"ammo": 3600,
"repair": 43.2
},
{
"id": "0l",
"grp": "am",
"class": 3,
"rating": "D",
"cost": 97200,
"power": 1.08,
"ammo": 3200,
"repair": 51.2
},
{
"id": "0k",
"grp": "am",
"class": 3,
"rating": "C",
"cost": 291600,
"power": 1.35,
"ammo": 3600,
"repair": 72
},
{
"id": "0j",
"grp": "am",
"class": 3,
"rating": "B",
"cost": 874800,
"power": 1.55,
"ammo": 4300,
"repair": 98.9
},
{
"id": "0i",
"grp": "am",
"class": 3,
"rating": "A",
"cost": 2624400,
"power": 1.89,
"ammo": 4000,
"repair": 112
},
{
"id": "0h",
"grp": "am",
"class": 2,
"rating": "E",
"cost": 18000,
"power": 0.68,
"ammo": 2300,
"repair": 27.6
},
{
"id": "0g",
"grp": "am",
"class": 2,
"rating": "D",
"cost": 54000,
"power": 0.9,
"ammo": 2100,
"repair": 33.6
},
{
"id": "0f",
"grp": "am",
"class": 2,
"rating": "C",
"cost": 162000,
"power": 1.13,
"ammo": 2300,
"repair": 46
},
{
"id": "0e",
"grp": "am",
"class": 2,
"rating": "B",
"cost": 486000,
"power": 1.29,
"ammo": 2800,
"repair": 64.4
},
{
"id": "0d",
"grp": "am",
"class": 2,
"rating": "A",
"cost": 1458000,
"power": 1.58,
"ammo": 2500,
"repair": 70
},
{
"id": "0c",
"grp": "am",
"class": 1,
"rating": "E",
"cost": 10000,
"power": 0.54,
"ammo": 1000,
"repair": 12
},
{
"id": "0b",
"grp": "am",
"class": 1,
"rating": "D",
"cost": 30000,
"power": 0.72,
"ammo": 900,
"repair": 14.4
},
{
"id": "0a",
"grp": "am",
"class": 1,
"rating": "C",
"cost": 90000,
"power": 0.9,
"ammo": 1000,
"repair": 20
},
{
"id": "09",
"grp": "am",
"class": 1,
"rating": "B",
"cost": 270000,
"power": 1.04,
"ammo": 1200,
"repair": 27.6
},
{
"id": "08",
"grp": "am",
"class": 1,
"rating": "A",
"cost": 810000,
"power": 1.26,
"ammo": 1100,
"repair": 30.8
}
{ "id": "1f", "grp": "am", "class": 8, "rating": "E", "cost": 612220, "power": 1.8, "ammo": 10000, "repair": 120, "ammocost": 100 },
{ "id": "1e", "grp": "am", "class": 8, "rating": "D", "cost": 1836660, "power": 2.4, "ammo": 9000, "repair": 144, "ammocost": 100 },
{ "id": "1d", "grp": "am", "class": 8, "rating": "C", "cost": 5509980, "power": 3, "ammo": 10000, "repair": 200, "ammocost": 100 },
{ "id": "1c", "grp": "am", "class": 8, "rating": "B", "cost": 16529940, "power": 3.45, "ammo": 12000, "repair": 276, "ammocost": 100 },
{ "id": "1b", "grp": "am", "class": 8, "rating": "A", "cost": 49589820, "power": 4.2, "ammo": 11000, "repair": 308, "ammocost": 100 },
{ "id": "1a", "grp": "am", "class": 7, "rating": "E", "cost": 340120, "power": 1.58, "ammo": 8700, "repair": 104.4, "ammocost": 100 },
{ "id": "19", "grp": "am", "class": 7, "rating": "D", "cost": 1020370, "power": 2.1, "ammo": 7800, "repair": 124.8, "ammocost": 100 },
{ "id": "18", "grp": "am", "class": 7, "rating": "C", "cost": 3061100, "power": 2.63, "ammo": 8700, "repair": 174, "ammocost": 100 },
{ "id": "17", "grp": "am", "class": 7, "rating": "B", "cost": 9183300, "power": 3.02, "ammo": 10400, "repair": 239.2, "ammocost": 100 },
{ "id": "16", "grp": "am", "class": 7, "rating": "A", "cost": 27549900, "power": 3.68, "ammo": 9600, "repair": 268.8, "ammocost": 100 },
{ "id": "15", "grp": "am", "class": 6, "rating": "E", "cost": 188960, "power": 1.4, "ammo": 7400, "repair": 88.8, "ammocost": 100 },
{ "id": "14", "grp": "am", "class": 6, "rating": "D", "cost": 566870, "power": 1.86, "ammo": 6700, "repair": 107.2, "ammocost": 100 },
{ "id": "13", "grp": "am", "class": 6, "rating": "C", "cost": 1700610, "power": 2.33, "ammo": 7400, "repair": 148, "ammocost": 100 },
{ "id": "12", "grp": "am", "class": 6, "rating": "B", "cost": 5101830, "power": 2.67, "ammo": 8900, "repair": 204.7, "ammocost": 100 },
{ "id": "11", "grp": "am", "class": 6, "rating": "A", "cost": 15305500, "power": 3.26, "ammo": 8100, "repair": 226.8, "ammocost": 100 },
{ "id": "10", "grp": "am", "class": 5, "rating": "E", "cost": 104980, "power": 1.17, "ammo": 6100, "repair": 73.2, "ammocost": 100 },
{ "id": "0v", "grp": "am", "class": 5, "rating": "D", "cost": 314930, "power": 1.56, "ammo": 5500, "repair": 88, "ammocost": 100 },
{ "id": "0u", "grp": "am", "class": 5, "rating": "C", "cost": 944780, "power": 1.95, "ammo": 6100, "repair": 122, "ammocost": 100 },
{ "id": "0t", "grp": "am", "class": 5, "rating": "B", "cost": 2834350, "power": 2.24, "ammo": 7300, "repair": 167.9, "ammocost": 100 },
{ "id": "0s", "grp": "am", "class": 5, "rating": "A", "cost": 8503060, "power": 2.73, "ammo": 6700, "repair": 187.6, "ammocost": 100 },
{ "id": "0r", "grp": "am", "class": 4, "rating": "E", "cost": 58320, "power": 0.99, "ammo": 4900, "repair": 58.8, "ammocost": 100 },
{ "id": "0q", "grp": "am", "class": 4, "rating": "D", "cost": 174960, "power": 1.32, "ammo": 4400, "repair": 70.4, "ammocost": 100 },
{ "id": "0p", "grp": "am", "class": 4, "rating": "C", "cost": 524880, "power": 1.65, "ammo": 4900, "repair": 98, "ammocost": 100 },
{ "id": "0o", "grp": "am", "class": 4, "rating": "B", "cost": 1574640, "power": 1.9, "ammo": 5900, "repair": 135.7, "ammocost": 100 },
{ "id": "0n", "grp": "am", "class": 4, "rating": "A", "cost": 4723920, "power": 2.31, "ammo": 5400, "repair": 151.2, "ammocost": 100 },
{ "id": "0m", "grp": "am", "class": 3, "rating": "E", "cost": 32400, "power": 0.81, "ammo": 3600, "repair": 43.2, "ammocost": 100 },
{ "id": "0l", "grp": "am", "class": 3, "rating": "D", "cost": 97200, "power": 1.08, "ammo": 3200, "repair": 51.2, "ammocost": 100 },
{ "id": "0k", "grp": "am", "class": 3, "rating": "C", "cost": 291600, "power": 1.35, "ammo": 3600, "repair": 72, "ammocost": 100 },
{ "id": "0j", "grp": "am", "class": 3, "rating": "B", "cost": 874800, "power": 1.55, "ammo": 4300, "repair": 98.9, "ammocost": 100 },
{ "id": "0i", "grp": "am", "class": 3, "rating": "A", "cost": 2624400, "power": 1.89, "ammo": 4000, "repair": 112, "ammocost": 100 },
{ "id": "0h", "grp": "am", "class": 2, "rating": "E", "cost": 18000, "power": 0.68, "ammo": 2300, "repair": 27.6, "ammocost": 100 },
{ "id": "0g", "grp": "am", "class": 2, "rating": "D", "cost": 54000, "power": 0.9, "ammo": 2100, "repair": 33.6, "ammocost": 100 },
{ "id": "0f", "grp": "am", "class": 2, "rating": "C", "cost": 162000, "power": 1.13, "ammo": 2300, "repair": 46, "ammocost": 100 },
{ "id": "0e", "grp": "am", "class": 2, "rating": "B", "cost": 486000, "power": 1.29, "ammo": 2800, "repair": 64.4, "ammocost": 100 },
{ "id": "0d", "grp": "am", "class": 2, "rating": "A", "cost": 1458000, "power": 1.58, "ammo": 2500, "repair": 70, "ammocost": 100 },
{ "id": "0c", "grp": "am", "class": 1, "rating": "E", "cost": 10000, "power": 0.54, "ammo": 1000, "repair": 12, "ammocost": 100 },
{ "id": "0b", "grp": "am", "class": 1, "rating": "D", "cost": 30000, "power": 0.72, "ammo": 900, "repair": 14.4, "ammocost": 100 },
{ "id": "0a", "grp": "am", "class": 1, "rating": "C", "cost": 90000, "power": 0.9, "ammo": 1000, "repair": 20, "ammocost": 100 },
{ "id": "09", "grp": "am", "class": 1, "rating": "B", "cost": 270000, "power": 1.04, "ammo": 1200, "repair": 27.6, "ammocost": 100 },
{ "id": "08", "grp": "am", "class": 1, "rating": "A", "cost": 810000, "power": 1.26, "ammo": 1100, "repair": 30.8, "ammocost": 100 }
]
}
}

View File

@@ -2,11 +2,11 @@
"cr": [
{ "id": "00", "grp": "cr", "class": 1, "rating": "E", "cost": 1000, "capacity": 2 },
{ "id": "01", "grp": "cr", "class": 2, "rating": "E", "cost": 3250, "capacity": 4 },
{ "id": "02", "grp": "cr", "class": 3, "rating": "E", "cost": 10563, "capacity": 8 },
{ "id": "03", "grp": "cr", "class": 4, "rating": "E", "cost": 34328, "capacity": 16 },
{ "id": "04", "grp": "cr", "class": 5, "rating": "E", "cost": 111566, "capacity": 32 },
{ "id": "05", "grp": "cr", "class": 6, "rating": "E", "cost": 362591, "capacity": 64 },
{ "id": "02", "grp": "cr", "class": 3, "rating": "E", "cost": 10560, "capacity": 8 },
{ "id": "03", "grp": "cr", "class": 4, "rating": "E", "cost": 34330, "capacity": 16 },
{ "id": "04", "grp": "cr", "class": 5, "rating": "E", "cost": 111570, "capacity": 32 },
{ "id": "05", "grp": "cr", "class": 6, "rating": "E", "cost": 362590, "capacity": 64 },
{ "id": "06", "grp": "cr", "class": 7, "rating": "E", "cost": 1178420, "capacity": 128 },
{ "id": "07", "grp": "cr", "class": 8, "rating": "E", "cost": 3829866, "capacity": 256 }
{ "id": "07", "grp": "cr", "class": 8, "rating": "E", "cost": 3829870, "capacity": 256 }
]
}

View File

@@ -1,204 +1,27 @@
{
"fi": [
{
"id": "6p",
"grp": "fi",
"class": 4,
"rating": "E",
"cost": 263424,
"mass": 10,
"power": 0.25,
"rangeRating": "B"
},
{
"id": "6o",
"grp": "fi",
"class": 4,
"rating": "D",
"cost": 790272,
"mass": 4,
"power": 0.33,
"rangeRating": "A"
},
{
"id": "6n",
"grp": "fi",
"class": 4,
"rating": "C",
"cost": 2370816,
"mass": 10,
"power": 0.41,
"rangeRating": "A"
},
{
"id": "6m",
"grp": "fi",
"class": 4,
"rating": "B",
"cost": 7112448,
"mass": 16,
"power": 0.49,
"rangeRating": "A"
},
{
"id": "6l",
"grp": "fi",
"class": 4,
"rating": "A",
"cost": 21337344,
"mass": 10,
"power": 0.57,
"rangeRating": "A"
},
{
"id": "6k",
"grp": "fi",
"class": 3,
"rating": "E",
"cost": 94080,
"mass": 5,
"power": 0.2,
"rangeRating": "C"
},
{
"id": "6j",
"grp": "fi",
"class": 3,
"rating": "D",
"cost": 282240,
"mass": 2,
"power": 0.27,
"rangeRating": "B"
},
{
"id": "6i",
"grp": "fi",
"class": 3,
"rating": "C",
"cost": 846720,
"mass": 5,
"power": 0.34,
"rangeRating": "B"
},
{
"id": "6h",
"grp": "fi",
"class": 3,
"rating": "B",
"cost": 2540160,
"mass": 8,
"power": 0.41,
"rangeRating": "B"
},
{
"id": "6g",
"grp": "fi",
"class": 3,
"rating": "A",
"cost": 7620480,
"mass": 5,
"power": 0.48,
"rangeRating": "A"
},
{
"id": "6f",
"grp": "fi",
"class": 2,
"rating": "E",
"cost": 33600,
"mass": 2.5,
"power": 0.17,
"rangeRating": "D"
},
{
"id": "6e",
"grp": "fi",
"class": 2,
"rating": "D",
"cost": 100800,
"mass": 1,
"power": 0.22,
"rangeRating": "C"
},
{
"id": "6d",
"grp": "fi",
"class": 2,
"rating": "C",
"cost": 302400,
"mass": 2.5,
"power": 0.28,
"rangeRating": "C"
},
{
"id": "6c",
"grp": "fi",
"class": 2,
"rating": "B",
"cost": 907200,
"mass": 4,
"power": 0.34,
"rangeRating": "C"
},
{
"id": "6b",
"grp": "fi",
"class": 2,
"rating": "A",
"cost": 2721600,
"mass": 2.5,
"power": 0.39,
"rangeRating": "B"
},
{
"id": "6a",
"grp": "fi",
"class": 1,
"rating": "E",
"cost": 12000,
"mass": 1.3,
"power": 0.14,
"rangeRating": "E"
},
{
"id": "69",
"grp": "fi",
"class": 1,
"rating": "D",
"cost": 36000,
"mass": 0.5,
"power": 0.18,
"rangeRating": "D"
},
{
"id": "68",
"grp": "fi",
"class": 1,
"rating": "C",
"cost": 108000,
"mass": 1.3,
"power": 0.23,
"rangeRating": "D"
},
{
"id": "67",
"grp": "fi",
"class": 1,
"rating": "B",
"cost": 324000,
"mass": 2,
"power": 0.28,
"rangeRating": "D"
},
{
"id": "66",
"grp": "fi",
"class": 1,
"rating": "A",
"cost": 972000,
"mass": 1.3,
"power": 0.32,
"rangeRating": "C"
}
{ "id": "6p", "grp": "fi", "class": 4, "rating": "E", "cost": 263420, "mass": 10, "power": 0.25, "rangeRating": "B" },
{ "id": "6o", "grp": "fi", "class": 4, "rating": "D", "cost": 790270, "mass": 4, "power": 0.33, "rangeRating": "A" },
{ "id": "6n", "grp": "fi", "class": 4, "rating": "C", "cost": 2370820, "mass": 10, "power": 0.41, "rangeRating": "A" },
{ "id": "6m", "grp": "fi", "class": 4, "rating": "B", "cost": 7112450, "mass": 16, "power": 0.49, "rangeRating": "A" },
{ "id": "6l", "grp": "fi", "class": 4, "rating": "A", "cost": 21337340, "mass": 10, "power": 0.57, "rangeRating": "A" },
{ "id": "6k", "grp": "fi", "class": 3, "rating": "E", "cost": 94080, "mass": 5, "power": 0.2, "rangeRating": "C" },
{ "id": "6j", "grp": "fi", "class": 3, "rating": "D", "cost": 282240, "mass": 2, "power": 0.27, "rangeRating": "B" },
{ "id": "6i", "grp": "fi", "class": 3, "rating": "C", "cost": 846720, "mass": 5, "power": 0.34, "rangeRating": "B" },
{ "id": "6h", "grp": "fi", "class": 3, "rating": "B", "cost": 2540160, "mass": 8, "power": 0.41, "rangeRating": "B" },
{ "id": "6g", "grp": "fi", "class": 3, "rating": "A", "cost": 7620480, "mass": 5, "power": 0.48, "rangeRating": "A" },
{ "id": "6f", "grp": "fi", "class": 2, "rating": "E", "cost": 33600, "mass": 2.5, "power": 0.17, "rangeRating": "D" },
{ "id": "6e", "grp": "fi", "class": 2, "rating": "D", "cost": 100800, "mass": 1, "power": 0.22, "rangeRating": "C" },
{ "id": "6d", "grp": "fi", "class": 2, "rating": "C", "cost": 302400, "mass": 2.5, "power": 0.28, "rangeRating": "C" },
{ "id": "6c", "grp": "fi", "class": 2, "rating": "B", "cost": 907200, "mass": 4, "power": 0.34, "rangeRating": "C" },
{ "id": "6b", "grp": "fi", "class": 2, "rating": "A", "cost": 2721600, "mass": 2.5, "power": 0.39, "rangeRating": "B" },
{ "id": "6a", "grp": "fi", "class": 1, "rating": "E", "cost": 12000, "mass": 1.3, "power": 0.14, "rangeRating": "E" },
{ "id": "69", "grp": "fi", "class": 1, "rating": "D", "cost": 36000, "mass": 0.5, "power": 0.18, "rangeRating": "D" },
{ "id": "68", "grp": "fi", "class": 1, "rating": "C", "cost": 108000, "mass": 1.3, "power": 0.23, "rangeRating": "D" },
{ "id": "67", "grp": "fi", "class": 1, "rating": "B", "cost": 324000, "mass": 2, "power": 0.28, "rangeRating": "D" },
{ "id": "66", "grp": "fi", "class": 1, "rating": "A", "cost": 972000, "mass": 1.3, "power": 0.32, "rangeRating": "C" }
]
}

View File

@@ -1,364 +1,51 @@
{
"fs": [
{
"id": "3q",
"grp": "fs",
"class": 8,
"rating": "E",
"cost": 1083910,
"power": 0.48,
"rate": 720
},
{
"id": "3p",
"grp": "fs",
"class": 8,
"rating": "D",
"cost": 4516291,
"power": 0.64,
"rate": 960
},
{
"id": "3o",
"grp": "fs",
"class": 8,
"rating": "C",
"cost": 18065165,
"power": 0.8,
"rate": 1200
},
{
"id": "3n",
"grp": "fs",
"class": 8,
"rating": "B",
"cost": 72260660,
"power": 0.96,
"rate": 1440
},
{
"id": "3m",
"grp": "fs",
"class": 8,
"rating": "A",
"cost": 289042541,
"power": 1.12,
"rate": 1680
},
{
"id": "3l",
"grp": "fs",
"class": 7,
"rating": "E",
"cost": 341927,
"power": 0.41,
"rate": 534
},
{
"id": "3k",
"grp": "fs",
"class": 7,
"rating": "D",
"cost": 1424698,
"power": 0.55,
"rate": 712
},
{
"id": "3j",
"grp": "fs",
"class": 7,
"rating": "C",
"cost": 5698790,
"power": 0.69,
"rate": 890
},
{
"id": "3i",
"grp": "fs",
"class": 7,
"rating": "B",
"cost": 22795161,
"power": 0.83,
"rate": 1068
},
{
"id": "3h",
"grp": "fs",
"class": 7,
"rating": "A",
"cost": 91180644,
"power": 0.97,
"rate": 1245
},
{
"id": "3g",
"grp": "fs",
"class": 6,
"rating": "E",
"cost": 107864,
"power": 0.35,
"rate": 376
},
{
"id": "3f",
"grp": "fs",
"class": 6,
"rating": "D",
"cost": 449431,
"power": 0.47,
"rate": 502
},
{
"id": "3e",
"grp": "fs",
"class": 6,
"rating": "C",
"cost": 1797726,
"power": 0.59,
"rate": 627
},
{
"id": "3d",
"grp": "fs",
"class": 6,
"rating": "B",
"cost": 7190903,
"power": 0.71,
"rate": 752
},
{
"id": "3c",
"grp": "fs",
"class": 6,
"rating": "A",
"cost": 28763610,
"power": 0.83,
"rate": 878
},
{
"id": "3b",
"grp": "fs",
"class": 5,
"rating": "E",
"cost": 34026,
"power": 0.3,
"rate": 247
},
{
"id": "3a",
"grp": "fs",
"class": 5,
"rating": "D",
"cost": 141776,
"power": 0.4,
"rate": 330
},
{
"id": "39",
"grp": "fs",
"class": 5,
"rating": "C",
"cost": 567106,
"power": 0.5,
"rate": 412
},
{
"id": "38",
"grp": "fs",
"class": 5,
"rating": "B",
"cost": 2268424,
"power": 0.6,
"rate": 494
},
{
"id": "37",
"grp": "fs",
"class": 5,
"rating": "A",
"cost": 9073694,
"power": 0.7,
"rate": 577
},
{
"id": "36",
"grp": "fs",
"class": 4,
"rating": "E",
"cost": 10734,
"power": 0.25,
"rate": 147
},
{
"id": "35",
"grp": "fs",
"class": 4,
"rating": "D",
"cost": 44724,
"power": 0.33,
"rate": 196
},
{
"id": "34",
"grp": "fs",
"class": 4,
"rating": "C",
"cost": 178898,
"power": 0.41,
"rate": 245
},
{
"id": "33",
"grp": "fs",
"class": 4,
"rating": "B",
"cost": 715591,
"power": 0.49,
"rate": 294
},
{
"id": "32",
"grp": "fs",
"class": 4,
"rating": "A",
"cost": 2862364,
"power": 0.57,
"rate": 342
},
{
"id": "31",
"grp": "fs",
"class": 3,
"rating": "E",
"cost": 3386,
"power": 0.2,
"rate": 75
},
{
"id": "30",
"grp": "fs",
"class": 3,
"rating": "D",
"cost": 14109,
"power": 0.27,
"rate": 100
},
{
"id": "2v",
"grp": "fs",
"class": 3,
"rating": "C",
"cost": 56435,
"power": 0.34,
"rate": 126
},
{
"id": "2u",
"grp": "fs",
"class": 3,
"rating": "B",
"cost": 225738,
"power": 0.41,
"rate": 151
},
{
"id": "2t",
"grp": "fs",
"class": 3,
"rating": "A",
"cost": 902954,
"power": 0.48,
"rate": 176
},
{
"id": "2s",
"grp": "fs",
"class": 2,
"rating": "E",
"cost": 1068,
"power": 0.17,
"rate": 32
},
{
"id": "2r",
"grp": "fs",
"class": 2,
"rating": "D",
"cost": 4451,
"power": 0.22,
"rate": 43
},
{
"id": "2q",
"grp": "fs",
"class": 2,
"rating": "C",
"cost": 17803,
"power": 0.28,
"rate": 54
},
{
"id": "2p",
"grp": "fs",
"class": 2,
"rating": "B",
"cost": 71211,
"power": 0.34,
"rate": 65
},
{
"id": "2o",
"grp": "fs",
"class": 2,
"rating": "A",
"cost": 284844,
"power": 0.39,
"rate": 75
},
{
"id": "2n",
"grp": "fs",
"class": 1,
"rating": "E",
"cost": 309,
"power": 0.14,
"rate": 18
},
{
"id": "2m",
"grp": "fs",
"class": 1,
"rating": "D",
"cost": 1285,
"power": 0.18,
"rate": 24
},
{
"id": "2l",
"grp": "fs",
"class": 1,
"rating": "C",
"cost": 5142,
"power": 0.23,
"rate": 30
},
{
"id": "2k",
"grp": "fs",
"class": 1,
"rating": "B",
"cost": 20568,
"power": 0.28,
"rate": 36
},
{
"id": "2j",
"grp": "fs",
"class": 1,
"rating": "A",
"cost": 82270,
"power": 0.32,
"rate": 42
}
{ "id": "3q", "grp": "fs", "class": 8, "rating": "E", "cost": 1083910, "power": 0.48, "rate": 720 },
{ "id": "3p", "grp": "fs", "class": 8, "rating": "D", "cost": 4516290, "power": 0.64, "rate": 960 },
{ "id": "3o", "grp": "fs", "class": 8, "rating": "C", "cost": 18065160, "power": 0.8, "rate": 1200 },
{ "id": "3n", "grp": "fs", "class": 8, "rating": "B", "cost": 72260660, "power": 0.96, "rate": 1440 },
{ "id": "3m", "grp": "fs", "class": 8, "rating": "A", "cost": 289042540, "power": 1.12, "rate": 1680 },
{ "id": "3l", "grp": "fs", "class": 7, "rating": "E", "cost": 341930, "power": 0.41, "rate": 534 },
{ "id": "3k", "grp": "fs", "class": 7, "rating": "D", "cost": 1424700, "power": 0.55, "rate": 712 },
{ "id": "3j", "grp": "fs", "class": 7, "rating": "C", "cost": 5698790, "power": 0.69, "rate": 890 },
{ "id": "3i", "grp": "fs", "class": 7, "rating": "B", "cost": 22795160, "power": 0.83, "rate": 1068 },
{ "id": "3h", "grp": "fs", "class": 7, "rating": "A", "cost": 91180640, "power": 0.97, "rate": 1245 },
{ "id": "3g", "grp": "fs", "class": 6, "rating": "E", "cost": 107860, "power": 0.35, "rate": 376 },
{ "id": "3f", "grp": "fs", "class": 6, "rating": "D", "cost": 449430, "power": 0.47, "rate": 502 },
{ "id": "3e", "grp": "fs", "class": 6, "rating": "C", "cost": 1797730, "power": 0.59, "rate": 627 },
{ "id": "3d", "grp": "fs", "class": 6, "rating": "B", "cost": 7190900, "power": 0.71, "rate": 752 },
{ "id": "3c", "grp": "fs", "class": 6, "rating": "A", "cost": 28763610, "power": 0.83, "rate": 878 },
{ "id": "3b", "grp": "fs", "class": 5, "rating": "E", "cost": 34030, "power": 0.3, "rate": 247 },
{ "id": "3a", "grp": "fs", "class": 5, "rating": "D", "cost": 141780, "power": 0.4, "rate": 330 },
{ "id": "39", "grp": "fs", "class": 5, "rating": "C", "cost": 567110, "power": 0.5, "rate": 412 },
{ "id": "38", "grp": "fs", "class": 5, "rating": "B", "cost": 2268420, "power": 0.6, "rate": 494 },
{ "id": "37", "grp": "fs", "class": 5, "rating": "A", "cost": 9073690, "power": 0.7, "rate": 577 },
{ "id": "36", "grp": "fs", "class": 4, "rating": "E", "cost": 10730, "power": 0.25, "rate": 147 },
{ "id": "35", "grp": "fs", "class": 4, "rating": "D", "cost": 44720, "power": 0.33, "rate": 196 },
{ "id": "34", "grp": "fs", "class": 4, "rating": "C", "cost": 178900, "power": 0.41, "rate": 245 },
{ "id": "33", "grp": "fs", "class": 4, "rating": "B", "cost": 715590, "power": 0.49, "rate": 294 },
{ "id": "32", "grp": "fs", "class": 4, "rating": "A", "cost": 2862360, "power": 0.57, "rate": 342 },
{ "id": "31", "grp": "fs", "class": 3, "rating": "E", "cost": 3390, "power": 0.2, "rate": 75 },
{ "id": "30", "grp": "fs", "class": 3, "rating": "D", "cost": 14110, "power": 0.27, "rate": 100 },
{ "id": "2v", "grp": "fs", "class": 3, "rating": "C", "cost": 56440, "power": 0.34, "rate": 126 },
{ "id": "2u", "grp": "fs", "class": 3, "rating": "B", "cost": 225740, "power": 0.41, "rate": 151 },
{ "id": "2t", "grp": "fs", "class": 3, "rating": "A", "cost": 902950, "power": 0.48, "rate": 176 },
{ "id": "2s", "grp": "fs", "class": 2, "rating": "E", "cost": 1070, "power": 0.17, "rate": 32 },
{ "id": "2r", "grp": "fs", "class": 2, "rating": "D", "cost": 4450, "power": 0.22, "rate": 43 },
{ "id": "2q", "grp": "fs", "class": 2, "rating": "C", "cost": 17800, "power": 0.28, "rate": 54 },
{ "id": "2p", "grp": "fs", "class": 2, "rating": "B", "cost": 71210, "power": 0.34, "rate": 65 },
{ "id": "2o", "grp": "fs", "class": 2, "rating": "A", "cost": 284840, "power": 0.39, "rate": 75 },
{ "id": "2n", "grp": "fs", "class": 1, "rating": "E", "cost": 310, "power": 0.14, "rate": 18 },
{ "id": "2m", "grp": "fs", "class": 1, "rating": "D", "cost": 1290, "power": 0.18, "rate": 24 },
{ "id": "2l", "grp": "fs", "class": 1, "rating": "C", "cost": 5140, "power": 0.23, "rate": 30 },
{ "id": "2k", "grp": "fs", "class": 1, "rating": "B", "cost": 20570, "power": 0.28, "rate": 36 },
{ "id": "2j", "grp": "fs", "class": 1, "rating": "A", "cost": 82270, "power": 0.32, "rate": 42 }
]
}

View File

@@ -1,224 +1,27 @@
{
"hb": [
{
"id": "7d",
"grp": "hb",
"class": 7,
"rating": "E",
"cost": 437400,
"power": 0.42,
"range": 2.58,
"maximum": 18,
"time": 25
},
{
"id": "7c",
"grp": "hb",
"class": 7,
"rating": "D",
"cost": 874800,
"power": 0.56,
"range": 3.44,
"maximum": 12,
"time": 22
},
{
"id": "7b",
"grp": "hb",
"class": 7,
"rating": "C",
"cost": 1749600,
"power": 0.7,
"range": 4.3,
"maximum": 15,
"time": 18
},
{
"id": "7a",
"grp": "hb",
"class": 7,
"rating": "B",
"cost": 3499200,
"power": 0.84,
"range": 5.16,
"maximum": 18,
"time": 14
},
{
"id": "79",
"grp": "hb",
"class": 7,
"rating": "A",
"cost": 6998400,
"power": 0.98,
"range": 6.02,
"maximum": 12,
"time": 11
},
{
"id": "78",
"grp": "hb",
"class": 5,
"rating": "E",
"cost": 48600,
"power": 0.3,
"range": 1.98,
"maximum": 9,
"time": 31
},
{
"id": "77",
"grp": "hb",
"class": 5,
"rating": "D",
"cost": 97200,
"power": 0.4,
"range": 2.64,
"maximum": 6,
"time": 26
},
{
"id": "76",
"grp": "hb",
"class": 5,
"rating": "C",
"cost": 194400,
"power": 0.5,
"range": 3.3,
"maximum": 7,
"time": 22
},
{
"id": "75",
"grp": "hb",
"class": 5,
"rating": "B",
"cost": 388800,
"power": 0.6,
"range": 3.96,
"maximum": 9,
"time": 18
},
{
"id": "74",
"grp": "hb",
"class": 5,
"rating": "A",
"cost": 777600,
"power": 0.7,
"range": 4.62,
"maximum": 6,
"time": 13
},
{
"id": "73",
"grp": "hb",
"class": 3,
"rating": "E",
"cost": 5400,
"power": 0.18,
"range": 1.62,
"maximum": 4,
"time": 36
},
{
"id": "72",
"grp": "hb",
"class": 3,
"rating": "D",
"cost": 10800,
"power": 0.24,
"range": 2.16,
"maximum": 3,
"time": 31
},
{
"id": "71",
"grp": "hb",
"class": 3,
"rating": "C",
"cost": 21600,
"power": 0.3,
"range": 2.7,
"maximum": 3,
"time": 26
},
{
"id": "70",
"grp": "hb",
"class": 3,
"rating": "B",
"cost": 43200,
"power": 0.36,
"range": 3.24,
"maximum": 4,
"time": 21
},
{
"id": "6v",
"grp": "hb",
"class": 3,
"rating": "A",
"cost": 86400,
"power": 0.42,
"range": 3.78,
"maximum": 3,
"time": 16
},
{
"id": "6u",
"grp": "hb",
"class": 1,
"rating": "E",
"cost": 600,
"power": 0.12,
"range": 1.5,
"maximum": 2,
"time": 42
},
{
"id": "6t",
"grp": "hb",
"class": 1,
"rating": "D",
"cost": 1200,
"power": 0.16,
"range": 2,
"maximum": 1,
"time": 36
},
{
"id": "6s",
"grp": "hb",
"class": 1,
"rating": "C",
"cost": 2400,
"power": 0.2,
"range": 2.5,
"maximum": 1,
"time": 30
},
{
"id": "6r",
"grp": "hb",
"class": 1,
"rating": "B",
"cost": 4800,
"power": 0.24,
"range": 3,
"maximum": 2,
"time": 24
},
{
"id": "6q",
"grp": "hb",
"class": 1,
"rating": "A",
"cost": 9600,
"power": 0.28,
"range": 3.5,
"maximum": 1,
"time": 18
}
{ "id": "7d", "grp": "hb", "class": 7, "rating": "E", "cost": 437400, "power": 0.42, "range": 2.58, "maximum": 18, "time": 25 },
{ "id": "7c", "grp": "hb", "class": 7, "rating": "D", "cost": 874800, "power": 0.56, "range": 3.44, "maximum": 12, "time": 22 },
{ "id": "7b", "grp": "hb", "class": 7, "rating": "C", "cost": 1749600, "power": 0.7, "range": 4.3, "maximum": 15, "time": 18 },
{ "id": "7a", "grp": "hb", "class": 7, "rating": "B", "cost": 3499200, "power": 0.84, "range": 5.16, "maximum": 18, "time": 14 },
{ "id": "79", "grp": "hb", "class": 7, "rating": "A", "cost": 6998400, "power": 0.98, "range": 6.02, "maximum": 12, "time": 11 },
{ "id": "78", "grp": "hb", "class": 5, "rating": "E", "cost": 48600, "power": 0.3, "range": 1.98, "maximum": 9, "time": 31 },
{ "id": "77", "grp": "hb", "class": 5, "rating": "D", "cost": 97200, "power": 0.4, "range": 2.64, "maximum": 6, "time": 26 },
{ "id": "76", "grp": "hb", "class": 5, "rating": "C", "cost": 194400, "power": 0.5, "range": 3.3, "maximum": 7, "time": 22 },
{ "id": "75", "grp": "hb", "class": 5, "rating": "B", "cost": 388800, "power": 0.6, "range": 3.96, "maximum": 9, "time": 18 },
{ "id": "74", "grp": "hb", "class": 5, "rating": "A", "cost": 777600, "power": 0.7, "range": 4.62, "maximum": 6, "time": 13 },
{ "id": "73", "grp": "hb", "class": 3, "rating": "E", "cost": 5400, "power": 0.18, "range": 1.62, "maximum": 4, "time": 36 },
{ "id": "72", "grp": "hb", "class": 3, "rating": "D", "cost": 10800, "power": 0.24, "range": 2.16, "maximum": 3, "time": 31 },
{ "id": "71", "grp": "hb", "class": 3, "rating": "C", "cost": 21600, "power": 0.3, "range": 2.7, "maximum": 3, "time": 26 },
{ "id": "70", "grp": "hb", "class": 3, "rating": "B", "cost": 43200, "power": 0.36, "range": 3.24, "maximum": 4, "time": 21 },
{ "id": "6v", "grp": "hb", "class": 3, "rating": "A", "cost": 86400, "power": 0.42, "range": 3.78, "maximum": 3, "time": 16 },
{ "id": "6u", "grp": "hb", "class": 1, "rating": "E", "cost": 600, "power": 0.12, "range": 1.5, "maximum": 2, "time": 42 },
{ "id": "6t", "grp": "hb", "class": 1, "rating": "D", "cost": 1200, "power": 0.16, "range": 2, "maximum": 1, "time": 36 },
{ "id": "6s", "grp": "hb", "class": 1, "rating": "C", "cost": 2400, "power": 0.2, "range": 2.5, "maximum": 1, "time": 30 },
{ "id": "6r", "grp": "hb", "class": 1, "rating": "B", "cost": 4800, "power": 0.24, "range": 3, "maximum": 2, "time": 24 },
{ "id": "6q", "grp": "hb", "class": 1, "rating": "A", "cost": 9600, "power": 0.28, "range": 3.5, "maximum": 1, "time": 18 }
]
}

View File

@@ -1,94 +1,18 @@
{
"hr": [
{
"id": "2e",
"grp": "hr",
"class": 5,
"rating": "E",
"cost": 150000,
"mass": 64,
"armouradd": 160
},
{
"id": "2d",
"grp": "hr",
"class": 5,
"rating": "D",
"cost": 450000,
"mass": 32,
"armouradd": 240
},
{
"id": "2c",
"grp": "hr",
"class": 4,
"rating": "E",
"cost": 65000,
"mass": 32,
"armouradd": 80
},
{
"id": "2b",
"grp": "hr",
"class": 4,
"rating": "D",
"cost": 195000,
"mass": 16,
"armouradd": 120
},
{
"id": "2a",
"grp": "hr",
"class": 3,
"rating": "E",
"cost": 28000,
"mass": 16,
"armouradd": 40
},
{
"id": "29",
"grp": "hr",
"class": 3,
"rating": "D",
"cost": 84000,
"mass": 8,
"armouradd": 60
},
{
"id": "28",
"grp": "hr",
"class": 2,
"rating": "E",
"cost": 12000,
"mass": 8,
"armouradd": 20
},
{
"id": "27",
"grp": "hr",
"class": 2,
"rating": "D",
"cost": 36000,
"mass": 4,
"armouradd": 30
},
{
"id": "26",
"grp": "hr",
"class": 1,
"rating": "E",
"cost": 5000,
"mass": 4,
"armouradd": 10
},
{
"id": "25",
"grp": "hr",
"class": 1,
"rating": "D",
"cost": 15000,
"mass": 2,
"armouradd": 15
}
{ "id": "2e", "grp": "hr", "class": 5, "rating": "E", "cost": 150000, "mass": 64, "armouradd": 160 },
{ "id": "2d", "grp": "hr", "class": 5, "rating": "D", "cost": 450000, "mass": 32, "armouradd": 240 },
{ "id": "2c", "grp": "hr", "class": 4, "rating": "E", "cost": 65000, "mass": 32, "armouradd": 80 },
{ "id": "2b", "grp": "hr", "class": 4, "rating": "D", "cost": 195000, "mass": 16, "armouradd": 120 },
{ "id": "2a", "grp": "hr", "class": 3, "rating": "E", "cost": 28000, "mass": 16, "armouradd": 40 },
{ "id": "29", "grp": "hr", "class": 3, "rating": "D", "cost": 84000, "mass": 8, "armouradd": 60 },
{ "id": "28", "grp": "hr", "class": 2, "rating": "E", "cost": 12000, "mass": 8, "armouradd": 20 },
{ "id": "27", "grp": "hr", "class": 2, "rating": "D", "cost": 36000, "mass": 4, "armouradd": 30 },
{ "id": "26", "grp": "hr", "class": 1, "rating": "E", "cost": 5000, "mass": 4, "armouradd": 10 },
{ "id": "25", "grp": "hr", "class": 1, "rating": "D", "cost": 15000, "mass": 2, "armouradd": 15 }
]
}

View File

@@ -2,11 +2,11 @@
"ft": [
{ "id": "f1", "grp": "ft", "class": 1, "rating": "C", "cost": 1000, "capacity": 2 },
{ "id": "f2", "grp": "ft", "class": 2, "rating": "C", "cost": 3750, "capacity": 4 },
{ "id": "f3", "grp": "ft", "class": 3, "rating": "C", "cost": 7063, "capacity": 8 },
{ "id": "f4", "grp": "ft", "class": 4, "rating": "C", "cost": 24734, "capacity": 16 },
{ "id": "f5", "grp": "ft", "class": 5, "rating": "C", "cost": 97754, "capacity": 32 },
{ "id": "f6", "grp": "ft", "class": 6, "rating": "C", "cost": 341577, "capacity": 64 },
{ "id": "f7", "grp": "ft", "class": 7, "rating": "C", "cost": 1780900, "capacity": 128 },
{ "id": "f3", "grp": "ft", "class": 3, "rating": "C", "cost": 7060, "capacity": 8 },
{ "id": "f4", "grp": "ft", "class": 4, "rating": "C", "cost": 24730, "capacity": 16 },
{ "id": "f5", "grp": "ft", "class": 5, "rating": "C", "cost": 97750, "capacity": 32 },
{ "id": "f6", "grp": "ft", "class": 6, "rating": "C", "cost": 341580, "capacity": 64 },
{ "id": "f7", "grp": "ft", "class": 7, "rating": "C", "cost": 1780910, "capacity": 128 },
{ "id": "f8", "grp": "ft", "class": 8, "rating": "C", "cost": 5428400, "capacity": 256 }
]
}

View File

@@ -1,12 +1,12 @@
{
"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": "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": "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": "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": "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": "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": "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": "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": "p6", "grp": "psg", "class": 1, "rating": "A", "cost": 132200, "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": 240340, "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": 761870, "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, "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, "optmul": 1.5, "maxmul": 1 },
{ "id": "p1", "grp": "psg", "class": 6, "rating": "A", "cost": 24269300, "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": 76933670, "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": 243879730, "mass": 320, "power": 8.4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 2, "optmul": 1.5, "maxmul": 1 }
]
}

View File

@@ -1,184 +1,27 @@
{
"rf": [
{
"id": "23",
"grp": "rf",
"class": 4,
"rating": "E",
"cost": 55566,
"power": 0.25,
"bins": 4
},
{
"id": "22",
"grp": "rf",
"class": 4,
"rating": "D",
"cost": 166698,
"power": 0.33,
"bins": 5
},
{
"id": "21",
"grp": "rf",
"class": 4,
"rating": "C",
"cost": 500094,
"power": 0.41,
"bins": 7
},
{
"id": "20",
"grp": "rf",
"class": 4,
"rating": "B",
"cost": 1500282,
"power": 0.49,
"bins": 9
},
{
"id": "1v",
"grp": "rf",
"class": 4,
"rating": "A",
"cost": 4500846,
"power": 0.57,
"bins": 10
},
{
"id": "1u",
"grp": "rf",
"class": 3,
"rating": "E",
"cost": 26460,
"power": 0.2,
"bins": 3
},
{
"id": "1t",
"grp": "rf",
"class": 3,
"rating": "D",
"cost": 79380,
"power": 0.27,
"bins": 4
},
{
"id": "1s",
"grp": "rf",
"class": 3,
"rating": "C",
"cost": 238140,
"power": 0.34,
"bins": 6
},
{
"id": "1r",
"grp": "rf",
"class": 3,
"rating": "B",
"cost": 714420,
"power": 0.41,
"bins": 7
},
{
"id": "1q",
"grp": "rf",
"class": 3,
"rating": "A",
"cost": 2143260,
"power": 0.48,
"bins": 8
},
{
"id": "1p",
"grp": "rf",
"class": 2,
"rating": "E",
"cost": 12600,
"power": 0.17,
"bins": 2
},
{
"id": "1o",
"grp": "rf",
"class": 2,
"rating": "D",
"cost": 37800,
"power": 0.22,
"bins": 3
},
{
"id": "1n",
"grp": "rf",
"class": 2,
"rating": "C",
"cost": 113400,
"power": 0.28,
"bins": 4
},
{
"id": "1m",
"grp": "rf",
"class": 2,
"rating": "B",
"cost": 340200,
"power": 0.34,
"bins": 5
},
{
"id": "1l",
"grp": "rf",
"class": 2,
"rating": "A",
"cost": 1020600,
"power": 0.39,
"bins": 6
},
{
"id": "1k",
"grp": "rf",
"class": 1,
"rating": "E",
"cost": 6000,
"power": 0.14,
"bins": 1
},
{
"id": "1j",
"grp": "rf",
"class": 1,
"rating": "D",
"cost": 18000,
"power": 0.18,
"bins": 1
},
{
"id": "1i",
"grp": "rf",
"class": 1,
"rating": "C",
"cost": 54000,
"power": 0.23,
"bins": 2
},
{
"id": "1h",
"grp": "rf",
"class": 1,
"rating": "B",
"cost": 162000,
"power": 0.28,
"bins": 3
},
{
"id": "1g",
"grp": "rf",
"class": 1,
"rating": "A",
"cost": 486000,
"power": 0.32,
"bins": 4
}
{ "id": "23", "grp": "rf", "class": 4, "rating": "E", "cost": 55570, "power": 0.25, "bins": 4 },
{ "id": "22", "grp": "rf", "class": 4, "rating": "D", "cost": 166700, "power": 0.33, "bins": 5 },
{ "id": "21", "grp": "rf", "class": 4, "rating": "C", "cost": 500090, "power": 0.41, "bins": 7 },
{ "id": "20", "grp": "rf", "class": 4, "rating": "B", "cost": 1500280, "power": 0.49, "bins": 9 },
{ "id": "1v", "grp": "rf", "class": 4, "rating": "A", "cost": 4500850, "power": 0.57, "bins": 10 },
{ "id": "1u", "grp": "rf", "class": 3, "rating": "E", "cost": 26460, "power": 0.2, "bins": 3 },
{ "id": "1t", "grp": "rf", "class": 3, "rating": "D", "cost": 79380, "power": 0.27, "bins": 4 },
{ "id": "1s", "grp": "rf", "class": 3, "rating": "C", "cost": 238140, "power": 0.34, "bins": 6 },
{ "id": "1r", "grp": "rf", "class": 3, "rating": "B", "cost": 714420, "power": 0.41, "bins": 7 },
{ "id": "1q", "grp": "rf", "class": 3, "rating": "A", "cost": 2143260, "power": 0.48, "bins": 8 },
{ "id": "1p", "grp": "rf", "class": 2, "rating": "E", "cost": 12600, "power": 0.17, "bins": 2 },
{ "id": "1o", "grp": "rf", "class": 2, "rating": "D", "cost": 37800, "power": 0.22, "bins": 3 },
{ "id": "1n", "grp": "rf", "class": 2, "rating": "C", "cost": 113400, "power": 0.28, "bins": 4 },
{ "id": "1m", "grp": "rf", "class": 2, "rating": "B", "cost": 340200, "power": 0.34, "bins": 5 },
{ "id": "1l", "grp": "rf", "class": 2, "rating": "A", "cost": 1020600, "power": 0.39, "bins": 6 },
{ "id": "1k", "grp": "rf", "class": 1, "rating": "E", "cost": 6000, "power": 0.14, "bins": 1 },
{ "id": "1j", "grp": "rf", "class": 1, "rating": "D", "cost": 18000, "power": 0.18, "bins": 1 },
{ "id": "1i", "grp": "rf", "class": 1, "rating": "C", "cost": 54000, "power": 0.23, "bins": 2 },
{ "id": "1h", "grp": "rf", "class": 1, "rating": "B", "cost": 162000, "power": 0.28, "bins": 3 },
{ "id": "1g", "grp": "rf", "class": 1, "rating": "A", "cost": 486000, "power": 0.32, "bins": 4 }
]
}

View File

@@ -38,11 +38,10 @@
"grp": "sc",
"name": "Detailed Surface Scanner",
"class": 1,
"retractedOnly": 1,
"rating": "C",
"cost": 250000,
"mass": 1.3,
"power": 0.6,
"power": 0,
"rangeLS": 0.33
}
]

View File

@@ -1,44 +1,51 @@
{
"scb": [
{ "id": "65", "grp": "scb", "class": 8, "rating": "E", "cost": 697584, "mass": 160, "power": 1.44, "cells": 6, "rechargeRating": "C", "recharge": 0 },
{ "id": "64", "grp": "scb", "class": 8, "rating": "D", "cost": 1743961, "mass": 64, "power": 1.92, "cells": 4, "rechargeRating": "C", "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "4v", "grp": "scb", "class": 1, "rating": "B", "cost": 8078, "mass": 2, "power": 0.83, "cells": 4, "rechargeRating": "D", "recharge": 61 },
{ "id": "4u", "grp": "scb", "class": 1, "rating": "A", "cost": 20195, "mass": 1.3, "power": 0.97, "cells": 3, "rechargeRating": "D", "recharge": 72 }
{ "id": "65", "grp": "scb", "class": 8, "rating": "E", "cost": 697580, "mass": 160, "power": 1.44, "cells": 6, "rechargeRating": "C", "recharge": 105, "ammocost": 300 },
{ "id": "64", "grp": "scb", "class": 8, "rating": "D", "cost": 1743960, "mass": 64, "power": 1.92, "cells": 4, "rechargeRating": "C", "recharge": 140, "ammocost": 300 },
{ "id": "63", "grp": "scb", "class": 8, "rating": "C", "cost": 4359900, "mass": 160, "power": 2.4, "cells": 5, "rechargeRating": "B", "recharge": 175, "ammocost": 300 },
{ "id": "62", "grp": "scb", "class": 8, "rating": "B", "cost": 10899760, "mass": 256, "power": 2.88, "cells": 6, "rechargeRating": "A", "recharge": 210, "ammocost": 300 },
{ "id": "61", "grp": "scb", "class": 8, "rating": "A", "cost": 27249390, "mass": 160, "power": 3.36, "cells": 5, "rechargeRating": "A", "recharge": 245, "ammocost": 300 },
{ "id": "60", "grp": "scb", "class": 7, "rating": "E", "cost": 249140, "mass": 80, "power": 1.24, "cells": 6, "rechargeRating": "D", "recharge": 95, "ammocost": 300 },
{ "id": "5v", "grp": "scb", "class": 7, "rating": "D", "cost": 622840, "mass": 32, "power": 1.66, "cells": 4, "rechargeRating": "C", "recharge": 130, "ammocost": 300 },
{ "id": "5u", "grp": "scb", "class": 7, "rating": "C", "cost": 1557110, "mass": 80, "power": 2.07, "cells": 5, "rechargeRating": "B", "recharge": 160, "ammocost": 300 },
{ "id": "5t", "grp": "scb", "class": 7, "rating": "B", "cost": 3892770, "mass": 128, "power": 2.48, "cells": 6, "rechargeRating": "B", "recharge": 195, "ammocost": 300 },
{ "id": "5s", "grp": "scb", "class": 7, "rating": "A", "cost": 9731930, "mass": 80, "power": 2.9, "cells": 5, "rechargeRating": "A", "recharge": 225, "ammocost": 300 },
{ "id": "5r", "grp": "scb", "class": 6, "rating": "E", "cost": 88980, "mass": 40, "power": 1.06, "cells": 6, "rechargeRating": "D", "recharge": 90, "ammocost": 300 },
{ "id": "5q", "grp": "scb", "class": 6, "rating": "D", "cost": 222440, "mass": 16, "power": 1.42, "cells": 4, "rechargeRating": "C", "recharge": 115, "ammocost": 300 },
{ "id": "5p", "grp": "scb", "class": 6, "rating": "C", "cost": 556110, "mass": 40, "power": 1.77, "cells": 5, "rechargeRating": "C", "recharge": 145, "ammocost": 300 },
{ "id": "5o", "grp": "scb", "class": 6, "rating": "B", "cost": 1390280, "mass": 64, "power": 2.12, "cells": 6, "rechargeRating": "B", "recharge": 175, "ammocost": 300 },
{ "id": "5n", "grp": "scb", "class": 6, "rating": "A", "cost": 3475690, "mass": 40, "power": 2.48, "cells": 5, "rechargeRating": "A", "recharge": 205, "ammocost": 300 },
{ "id": "5m", "grp": "scb", "class": 5, "rating": "E", "cost": 31780, "mass": 20, "power": 0.9, "cells": 5, "rechargeRating": "D", "recharge": 80, "ammocost": 300 },
{ "id": "5l", "grp": "scb", "class": 5, "rating": "D", "cost": 79440, "mass": 8, "power": 1.2, "cells": 3, "rechargeRating": "C", "recharge": 105, "ammocost": 300 },
{ "id": "5k", "grp": "scb", "class": 5, "rating": "C", "cost": 198610, "mass": 20, "power": 1.5, "cells": 4, "rechargeRating": "C", "recharge": 130, "ammocost": 300 },
{ "id": "5j", "grp": "scb", "class": 5, "rating": "B", "cost": 496530, "mass": 32, "power": 1.8, "cells": 5, "rechargeRating": "B", "recharge": 160, "ammocost": 300 },
{ "id": "5i", "grp": "scb", "class": 5, "rating": "A", "cost": 1241320, "mass": 20, "power": 2.1, "cells": 4, "rechargeRating": "B", "recharge": 185, "ammocost": 300 },
{ "id": "5h", "grp": "scb", "class": 4, "rating": "E", "cost": 11350, "mass": 10, "power": 0.74, "cells": 5, "rechargeRating": "D", "recharge": 70, "ammocost": 300 },
{ "id": "5g", "grp": "scb", "class": 4, "rating": "D", "cost": 28370, "mass": 4, "power": 0.98, "cells": 3, "rechargeRating": "D", "recharge": 90, "ammocost": 300 },
{ "id": "5f", "grp": "scb", "class": 4, "rating": "C", "cost": 70930, "mass": 10, "power": 1.23, "cells": 4, "rechargeRating": "C", "recharge": 115, "ammocost": 300 },
{ "id": "5e", "grp": "scb", "class": 4, "rating": "B", "cost": 177330, "mass": 16, "power": 1.48, "cells": 5, "rechargeRating": "C", "recharge": 140, "ammocost": 300 },
{ "id": "5d", "grp": "scb", "class": 4, "rating": "A", "cost": 443330, "mass": 10, "power": 1.72, "cells": 4, "rechargeRating": "B", "recharge": 160, "ammocost": 300 },
{ "id": "5c", "grp": "scb", "class": 3, "rating": "E", "cost": 4050, "mass": 5, "power": 0.61, "cells": 5, "rechargeRating": "D", "recharge": 60, "ammocost": 300 },
{ "id": "5b", "grp": "scb", "class": 3, "rating": "D", "cost": 10130, "mass": 2, "power": 0.82, "cells": 3, "rechargeRating": "D", "recharge": 75, "ammocost": 300 },
{ "id": "5a", "grp": "scb", "class": 3, "rating": "C", "cost": 25330, "mass": 5, "power": 1.02, "cells": 4, "rechargeRating": "D", "recharge": 95, "ammocost": 300 },
{ "id": "59", "grp": "scb", "class": 3, "rating": "B", "cost": 63330, "mass": 8, "power": 1.22, "cells": 5, "rechargeRating": "C", "recharge": 115, "ammocost": 300 },
{ "id": "58", "grp": "scb", "class": 3, "rating": "A", "cost": 158330, "mass": 5, "power": 1.43, "cells": 4, "rechargeRating": "C", "recharge": 135, "ammocost": 300 },
{ "id": "57", "grp": "scb", "class": 2, "rating": "E", "cost": 1450, "mass": 2.5, "power": 0.5, "cells": 5, "rechargeRating": "E", "recharge": 45, "ammocost": 300 },
{ "id": "56", "grp": "scb", "class": 2, "rating": "D", "cost": 3620, "mass": 1, "power": 0.67, "cells": 3, "rechargeRating": "D", "recharge": 60, "ammocost": 300 },
{ "id": "55", "grp": "scb", "class": 2, "rating": "C", "cost": 9050, "mass": 2.5, "power": 0.84, "cells": 4, "rechargeRating": "D", "recharge": 75, "ammocost": 300 },
{ "id": "54", "grp": "scb", "class": 2, "rating": "B", "cost": 22620, "mass": 4, "power": 1.01, "cells": 5, "rechargeRating": "D", "recharge": 90, "ammocost": 300 },
{ "id": "53", "grp": "scb", "class": 2, "rating": "A", "cost": 56550, "mass": 2.5, "power": 1.18, "cells": 4, "rechargeRating": "C", "recharge": 105, "ammocost": 300 },
{ "id": "52", "grp": "scb", "class": 1, "rating": "E", "cost": 520, "mass": 1.3, "power": 0.41, "cells": 4, "rechargeRating": "E", "recharge": 30, "ammocost": 300 },
{ "id": "51", "grp": "scb", "class": 1, "rating": "D", "cost": 1290, "mass": 0.5, "power": 0.55, "cells": 2, "rechargeRating": "E", "recharge": 40, "ammocost": 300 },
{ "id": "50", "grp": "scb", "class": 1, "rating": "C", "cost": 3230, "mass": 1.3, "power": 0.69, "cells": 3, "rechargeRating": "D", "recharge": 50, "ammocost": 300 },
{ "id": "4v", "grp": "scb", "class": 1, "rating": "B", "cost": 8080, "mass": 2, "power": 0.83, "cells": 4, "rechargeRating": "D", "recharge": 60, "ammocost": 300 },
{ "id": "4u", "grp": "scb", "class": 1, "rating": "A", "cost": 20200, "mass": 1.3, "power": 0.97, "cells": 3, "rechargeRating": "D", "recharge": 70, "ammocost": 300 }
]
}

View File

@@ -1,39 +1,45 @@
{
"sg": [
{ "id": "4t", "grp": "sg", "class": 8, "rating": "E", "cost": 2007241, "mass": 160, "power": 2.4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4s", "grp": "sg", "class": 8, "rating": "D", "cost": 6021722, "mass": 64, "power": 3.2, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4r", "grp": "sg", "class": 8, "rating": "C", "cost": 18065165, "mass": 160, "power": 4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "4q", "grp": "sg", "class": 8, "rating": "B", "cost": 54195495, "mass": 256, "power": 4.8, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4p", "grp": "sg", "class": 8, "rating": "A", "cost": 162586486, "mass": 160, "power": 5.6, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "4o", "grp": "sg", "class": 7, "rating": "E", "cost": 633199, "mass": 80, "power": 2.1, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4n", "grp": "sg", "class": 7, "rating": "D", "cost": 1899597, "mass": 32, "power": 2.8, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4t", "grp": "sg", "class": 8, "rating": "E", "cost": 2007240, "mass": 160, "power": 2.4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4s", "grp": "sg", "class": 8, "rating": "D", "cost": 6021720, "mass": 64, "power": 3.2, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4r", "grp": "sg", "class": 8, "rating": "C", "cost": 18065170, "mass": 160, "power": 4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "4q", "grp": "sg", "class": 8, "rating": "B", "cost": 54195500, "mass": 256, "power": 4.8, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4p", "grp": "sg", "class": 8, "rating": "A", "cost": 162586490, "mass": 160, "power": 5.6, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "4o", "grp": "sg", "class": 7, "rating": "E", "cost": 633200, "mass": 80, "power": 2.1, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4n", "grp": "sg", "class": 7, "rating": "D", "cost": 1899600, "mass": 32, "power": 2.8, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4m", "grp": "sg", "class": 7, "rating": "C", "cost": 5698790, "mass": 80, "power": 3.5, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "4l", "grp": "sg", "class": 7, "rating": "B", "cost": 17096371, "mass": 128, "power": 4.2, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4k", "grp": "sg", "class": 7, "rating": "A", "cost": 51289112, "mass": 80, "power": 4.9, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "4j", "grp": "sg", "class": 6, "rating": "E", "cost": 199747, "mass": 40, "power": 1.86, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4i", "grp": "sg", "class": 6, "rating": "D", "cost": 599242, "mass": 16, "power": 2.48, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4h", "grp": "sg", "class": 6, "rating": "C", "cost": 1797726, "mass": 40, "power": 3.1, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "4g", "grp": "sg", "class": 6, "rating": "B", "cost": 5393177, "mass": 64, "power": 3.72, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4f", "grp": "sg", "class": 6, "rating": "A", "cost": 16179531, "mass": 40, "power": 4.34, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "4e", "grp": "sg", "class": 5, "rating": "E", "cost": 63012, "mass": 20, "power": 1.56, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4d", "grp": "sg", "class": 5, "rating": "D", "cost": 189035, "mass": 8, "power": 2.08, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4c", "grp": "sg", "class": 5, "rating": "C", "cost": 567106, "mass": 20, "power": 2.6, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "4b", "grp": "sg", "class": 5, "rating": "B", "cost": 1701318, "mass": 32, "power": 3.12, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4a", "grp": "sg", "class": 5, "rating": "A", "cost": 5103953, "mass": 20, "power": 3.64, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "49", "grp": "sg", "class": 4, "rating": "E", "cost": 19878, "mass": 10, "power": 1.32, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "48", "grp": "sg", "class": 4, "rating": "D", "cost": 59633, "mass": 4, "power": 1.76, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "47", "grp": "sg", "class": 4, "rating": "C", "cost": 178898, "mass": 10, "power": 2.2, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "46", "grp": "sg", "class": 4, "rating": "B", "cost": 536693, "mass": 16, "power": 2.64, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4l", "grp": "sg", "class": 7, "rating": "B", "cost": 17096370, "mass": 128, "power": 4.2, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4k", "grp": "sg", "class": 7, "rating": "A", "cost": 51289110, "mass": 80, "power": 4.9, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "4j", "grp": "sg", "class": 6, "rating": "E", "cost": 199750, "mass": 40, "power": 1.86, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4i", "grp": "sg", "class": 6, "rating": "D", "cost": 599240, "mass": 16, "power": 2.48, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4h", "grp": "sg", "class": 6, "rating": "C", "cost": 1797730, "mass": 40, "power": 3.1, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "4g", "grp": "sg", "class": 6, "rating": "B", "cost": 5393180, "mass": 64, "power": 3.72, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4f", "grp": "sg", "class": 6, "rating": "A", "cost": 16179530, "mass": 40, "power": 4.34, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "4e", "grp": "sg", "class": 5, "rating": "E", "cost": 63010, "mass": 20, "power": 1.56, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "4d", "grp": "sg", "class": 5, "rating": "D", "cost": 189040, "mass": 8, "power": 2.08, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "4c", "grp": "sg", "class": 5, "rating": "C", "cost": 567110, "mass": 20, "power": 2.6, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "4b", "grp": "sg", "class": 5, "rating": "B", "cost": 1701320, "mass": 32, "power": 3.12, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "4a", "grp": "sg", "class": 5, "rating": "A", "cost": 5103950, "mass": 20, "power": 3.64, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "49", "grp": "sg", "class": 4, "rating": "E", "cost": 19880, "mass": 10, "power": 1.32, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "48", "grp": "sg", "class": 4, "rating": "D", "cost": 59630, "mass": 4, "power": 1.76, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "47", "grp": "sg", "class": 4, "rating": "C", "cost": 178900, "mass": 10, "power": 2.2, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "46", "grp": "sg", "class": 4, "rating": "B", "cost": 536690, "mass": 16, "power": 2.64, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "45", "grp": "sg", "class": 4, "rating": "A", "cost": 1610080, "mass": 10, "power": 3.08, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "44", "grp": "sg", "class": 3, "rating": "E", "cost": 6271, "mass": 5, "power": 1.08, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "43", "grp": "sg", "class": 3, "rating": "D", "cost": 18812, "mass": 2, "power": 1.44, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "42", "grp": "sg", "class": 3, "rating": "C", "cost": 56435, "mass": 5, "power": 1.8, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "41", "grp": "sg", "class": 3, "rating": "B", "cost": 169304, "mass": 8, "power": 2.16, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "40", "grp": "sg", "class": 3, "rating": "A", "cost": 507912, "mass": 5, "power": 2.52, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "3v", "grp": "sg", "class": 2, "rating": "E", "cost": 1978, "mass": 2.5, "power": 0.9, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "3u", "grp": "sg", "class": 2, "rating": "D", "cost": 5934, "mass": 1, "power": 1.2, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "3t", "grp": "sg", "class": 2, "rating": "C", "cost": 17803, "mass": 2.5, "power": 1.5, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "3s", "grp": "sg", "class": 2, "rating": "B", "cost": 53408, "mass": 4, "power": 1.8, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "3r", "grp": "sg", "class": 2, "rating": "A", "cost": 160224, "mass": 2.5, "power": 2.1, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 }
{ "id": "44", "grp": "sg", "class": 3, "rating": "E", "cost": 6270, "mass": 5, "power": 1.08, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "43", "grp": "sg", "class": 3, "rating": "D", "cost": 18810, "mass": 2, "power": 1.44, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "42", "grp": "sg", "class": 3, "rating": "C", "cost": 56440, "mass": 5, "power": 1.8, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "41", "grp": "sg", "class": 3, "rating": "B", "cost": 169300, "mass": 8, "power": 2.16, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "40", "grp": "sg", "class": 3, "rating": "A", "cost": 507910, "mass": 5, "power": 2.52, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 },
{ "id": "3v", "grp": "sg", "class": 2, "rating": "E", "cost": 1980, "mass": 2.5, "power": 0.9, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.3, "optmul": 0.8, "maxmul": 0.3 },
{ "id": "3u", "grp": "sg", "class": 2, "rating": "D", "cost": 5930, "mass": 1, "power": 1.2, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.4, "optmul": 0.9, "maxmul": 0.4 },
{ "id": "3t", "grp": "sg", "class": 2, "rating": "C", "cost": 17800, "mass": 2.5, "power": 1.5, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.5, "optmul": 1, "maxmul": 0.5 },
{ "id": "3s", "grp": "sg", "class": 2, "rating": "B", "cost": 53410, "mass": 4, "power": 1.8, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.6, "optmul": 1.1, "maxmul": 0.6 },
{ "id": "3r", "grp": "sg", "class": 2, "rating": "A", "cost": 160220, "mass": 2.5, "power": 2.1, "minmass": 28, "optmass": 55, "maxmass": 138, "minmul": 1.7, "optmul": 1.2, "maxmul": 0.7 }
]
}

View File

@@ -4,7 +4,7 @@
"name": "Adder",
"manufacturer": "Zorgon Peterson",
"class": 1,
"hullCost": 39993,
"hullCost": 40000,
"speed": 220,
"boost": 320,
"boostEnergy": 9,
@@ -12,9 +12,10 @@
"baseShieldStrength": 60,
"baseArmour": 162,
"hullMass": 35,
"masslock": 7
"masslock": 7,
"pipSpeed": 0.13625
},
"retailCost": 87808,
"retailCost": 87810,
"slots": {
"common": [
3,

View File

@@ -4,7 +4,7 @@
"name": "Anaconda",
"manufacturer": "Faulcon DeLacy",
"class": 3,
"hullCost": 141889932,
"hullCost": 141889930,
"speed": 180,
"boost": 240,
"boostEnergy": 29,
@@ -12,9 +12,10 @@
"baseShieldStrength": 350,
"baseArmour": 945,
"hullMass": 400,
"masslock": 23
"masslock": 23,
"pipSpeed": 0.13875
},
"retailCost": 146969451,
"retailCost": 146969450,
"slots": {
"common": [
8,

View File

@@ -4,7 +4,7 @@
"name": "Asp Explorer",
"manufacturer": "Lakon",
"class": 2,
"hullCost": 6135658,
"hullCost": 6135660,
"speed": 250,
"boost": 340,
"boostEnergy": 14,
@@ -12,9 +12,10 @@
"baseShieldStrength": 140,
"baseArmour": 378,
"hullMass": 280,
"masslock": 11
"masslock": 11,
"pipSpeed": 0.13
},
"retailCost": 6661153,
"retailCost": 6661150,
"slots": {
"common": [
5,

View File

@@ -4,7 +4,7 @@
"name": "Cobra Mk III",
"manufacturer": "Faulcon DeLacy",
"class": 1,
"hullCost": 235787,
"hullCost": 235800,
"speed": 280,
"boost": 400,
"boostEnergy": 11,
@@ -12,9 +12,10 @@
"baseShieldStrength": 80,
"baseArmour": 216,
"hullMass": 180,
"masslock": 8
"masslock": 8,
"pipSpeed": 0.125
},
"retailCost": 379718,
"retailCost": 379720,
"slots": {
"common": [
4,

View File

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

View File

@@ -4,18 +4,18 @@
"name": "Diamondback Scout",
"manufacturer": "Lakon",
"class": 1,
"hullCost": 461341,
"hullCost": 461340,
"speed": 283,
"boost": 384,
"boost": 380,
"boostEnergy": 11,
"agility": 8,
"baseShieldStrength": 118,
"baseArmour": 216,
"hullMass": 170,
"masslock": 8
"masslock": 8,
"pipSpeed": 0.09875
},
"retailCost": 564329,
"minMassFilter": 180.5,
"retailCost": 564330,
"slots": {
"common": [
4,

View File

@@ -4,7 +4,7 @@
"name": "Eagle",
"manufacturer": "Core Dynamics",
"class": 1,
"hullCost": 10446,
"hullCost": 10440,
"speed": 240,
"boost": 350,
"boostEnergy": 9,
@@ -12,7 +12,8 @@
"baseShieldStrength": 60,
"baseArmour": 72,
"hullMass": 50,
"masslock": 6
"masslock": 6,
"pipSpeed": 0.0625
},
"retailCost": 44800,
"slots": {

View File

@@ -4,17 +4,18 @@
"name": "Federal Assault Ship",
"manufacturer": "Core Dynamics",
"class": 2,
"hullCost": 19071993,
"speed": 216,
"boost": 361,
"hullCost": 19072000,
"speed": 210,
"boost": 350,
"boostEnergy": 21,
"agility": 6,
"baseShieldStrength": 180,
"baseShieldStrength": 200,
"baseArmour": 540,
"hullMass": 480,
"masslock": 14
"masslock": 14,
"pipSpeed": 0.11125
},
"retailCost": 19814205,
"retailCost": 19814210,
"slots": {
"common": [
6,

View File

@@ -4,7 +4,7 @@
"name": "Federal Dropship",
"manufacturer": "Core Dynamics",
"class": 2,
"hullCost": 18969990,
"hullCost": 13469990,
"speed": 180,
"boost": 300,
"boostEnergy": 21,
@@ -12,9 +12,10 @@
"baseShieldStrength": 200,
"baseArmour": 540,
"hullMass": 580,
"masslock": 14
"masslock": 14,
"pipSpeed": 0.0725
},
"retailCost": 19814205,
"retailCost": 14314210,
"slots": {
"common": [
6,

View File

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

View File

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

View File

@@ -4,7 +4,7 @@
"name": "Hauler",
"manufacturer": "Zorgon Peterson",
"class": 1,
"hullCost": 29807,
"hullCost": 29790,
"speed": 200,
"boost": 300,
"agility": 6,
@@ -12,7 +12,8 @@
"baseShieldStrength": 50,
"baseArmour": 90,
"hullMass": 14,
"masslock": 6
"masslock": 6,
"pipSpeed": 0.1625
},
"retailCost": 52720,
"slots": {

View File

@@ -4,7 +4,7 @@
"name": "Imperial Clipper",
"manufacturer": "Gutamaya",
"class": 3,
"hullCost": 21077784,
"hullCost": 21077780,
"speed": 300,
"boost": 380,
"boostEnergy": 21,
@@ -12,7 +12,8 @@
"baseShieldStrength": 180,
"baseArmour": 486,
"hullMass": 400,
"masslock": 12
"masslock": 12,
"pipSpeed": 0.1
},
"retailCost": 22296860,
"slots": {

View File

@@ -4,17 +4,18 @@
"name": "Imperial Courier",
"manufacturer": "Gutamaya",
"class": 1,
"hullCost": 2481552,
"speed": 277,
"hullCost": 2481550,
"speed": 280,
"boost": 380,
"boostEnergy": 11,
"agility": 6,
"baseShieldStrength": 197,
"baseArmour": 144,
"hullMass": 35,
"masslock": 7
"masslock": 7,
"pipSpeed": 0.05375
},
"retailCost": 2542931,
"retailCost": 2542930,
"slots": {
"common": [
4,

View File

@@ -4,17 +4,18 @@
"name": "Imperial Eagle",
"manufacturer": "Core Dynamics",
"class": 1,
"hullCost": 72186,
"speed": 303,
"boost": 405,
"hullCost": 72180,
"speed": 300,
"boost": 400,
"boostEnergy": 9,
"agility": 6,
"baseShieldStrength": 80,
"baseArmour": 108,
"hullMass": 50,
"masslock": 6
"masslock": 6,
"pipSpeed": 0.075
},
"retailCost": 110833,
"retailCost": 110830,
"slots": {
"common": [
3,

View File

@@ -4,7 +4,7 @@
"name": "Orca",
"manufacturer": "Saud Kruger",
"class": 3,
"hullCost": 47798079,
"hullCost": 47798080,
"speed": 300,
"boost": 380,
"boostEnergy": 17,
@@ -12,9 +12,10 @@
"baseShieldStrength": 220,
"baseArmour": 396,
"hullMass": 580,
"masslock": 13
"masslock": 13,
"pipSpeed": 0.08375
},
"retailCost": 48539887,
"retailCost": 48539890,
"slots": {
"common": [
5,

View File

@@ -4,17 +4,18 @@
"name": "Python",
"manufacturer": "Faulcon DeLacy",
"class": 2,
"hullCost": 55171395,
"hullCost": 55171380,
"speed": 230,
"boost": 280,
"boost": 300,
"boostEnergy": 24,
"agility": 6,
"baseShieldStrength": 260,
"baseArmour": 468,
"hullMass": 350,
"masslock": 17
"masslock": 17,
"pipSpeed": 0.0975
},
"retailCost": 56978179,
"retailCost": 56978180,
"slots": {
"common": [
7,

View File

@@ -4,7 +4,7 @@
"name": "Sidewinder",
"manufacturer": "Faulcon DeLacy",
"class": 1,
"hullCost": 12887,
"hullCost": 12870,
"speed": 220,
"boost": 320,
"boostEnergy": 7,
@@ -12,7 +12,8 @@
"baseShieldStrength": 40,
"baseArmour": 108,
"hullMass": 25,
"masslock": 6
"masslock": 6,
"pipSpeed": 0.1375
},
"retailCost": 32000,
"slots": {

View File

@@ -4,7 +4,7 @@
"name": "Type-6 Transporter",
"manufacturer": "Lakon",
"class": 2,
"hullCost": 865782,
"hullCost": 865790,
"speed": 220,
"boost": 350,
"boostEnergy": 11,
@@ -12,9 +12,10 @@
"baseShieldStrength": 90,
"baseArmour": 162,
"hullMass": 155,
"masslock": 8
"masslock": 8,
"pipSpeed": 0.1475
},
"retailCost": 1045945,
"retailCost": 1045950,
"slots": {
"common": [
3,

View File

@@ -4,7 +4,7 @@
"name": "Type-7 Transporter",
"manufacturer": "Lakon",
"class": 3,
"hullCost": 16881511,
"hullCost": 16881510,
"speed": 180,
"boost": 300,
"boostEnergy": 11,
@@ -12,9 +12,10 @@
"baseShieldStrength": 120,
"baseArmour": 216,
"hullMass": 420,
"masslock": 10
"masslock": 10,
"pipSpeed": 0.16625
},
"retailCost": 17472252,
"retailCost": 17472250,
"slots": {
"common": [
4,

View File

@@ -4,7 +4,7 @@
"name": "Type-9 Heavy",
"manufacturer": "Lakon",
"class": 3,
"hullCost": 73255168,
"hullCost": 73255150,
"speed": 130,
"boost": 200,
"boostEnergy": 21,
@@ -12,9 +12,10 @@
"baseShieldStrength": 240,
"baseArmour": 432,
"hullMass": 1000,
"masslock": 16
"masslock": 16,
"pipSpeed": 0.17375
},
"retailCost": 76555842,
"retailCost": 76555840,
"slots": {
"common": [
6,

View File

@@ -4,7 +4,7 @@
"name": "Viper",
"manufacturer": "Faulcon DeLacy",
"class": 1,
"hullCost": 95893,
"hullCost": 95900,
"speed": 320,
"boost": 400,
"boostEnergy": 11,
@@ -12,9 +12,10 @@
"baseShieldStrength": 105,
"baseArmour": 126,
"hullMass": 60,
"masslock": 7
"masslock": 7,
"pipSpeed": 0.09375
},
"retailCost": 142931,
"retailCost": 142930,
"slots": {
"common": [
3,

View File

@@ -4,7 +4,7 @@
"name": "Vulture",
"manufacturer": "Core Dynamics",
"class": 1,
"hullCost": 4689629,
"hullCost": 4689640,
"speed": 210,
"boost": 340,
"boostEnergy": 17,
@@ -12,9 +12,10 @@
"baseShieldStrength": 240,
"baseArmour": 288,
"hullMass": 230,
"masslock": 10
"masslock": 10,
"pipSpeed": 0.02375
},
"retailCost": 4925615,
"retailCost": 4925620,
"slots": {
"common": [
4,

View File

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

View File

@@ -27,7 +27,7 @@ function done(err, json) { this(err,json); }
function writeDB(err, arr) {
var ships = {}, internal = {}, hardpoints = {};
var shipOrder = Object.keys(arr[0]).sort();
var shipOrder = Object.keys(arr[0]).sort(function(a,b) { return arr[0][a].properties.name < arr[0][b].properties.name ? -1 : 1; });
var internalOrder = Object.keys(arr[3]).sort();
var hpOrder = [
"pl",

View File

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

View File

@@ -245,21 +245,24 @@
"rating": "A",
"enabled": true,
"priority": 3,
"group": "FSD Interdictor"
"group": "Frame Shift Drive Interdictor"
}
]
},
"stats": {
"class": 3,
"hullCost": 141889932,
"hullCost": 141889930,
"speed": 180,
"topSpeed": 186.5,
"boost": 240,
"boostEnergy": 29,
"topBoost": 248.66,
"agility": 2,
"baseShieldStrength": 350,
"baseArmour": 945,
"hullMass": 400,
"masslock": 23,
"pipSpeed": 0.14,
"shipCostMultiplier": 1,
"componentCostMultiplier": 1,
"fuelCapacity": 32,
@@ -269,7 +272,7 @@
"armourAdded": 240,
"armourMultiplier": 1.95,
"shieldMultiplier": 1.4,
"totalCost": 882362049,
"totalCost": 882362060,
"unladenMass": 1179.2,
"totalDps": 29,
"powerAvailable": 36,

View File

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

Some files were not shown because too many files have changed in this diff Show More