mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-08 22:33:24 +00:00
UI changes, added utilitiy services, persistance, serialization
This commit is contained in:
18
README.md
18
README.md
@@ -1,7 +1,7 @@
|
||||
|
||||
About
|
||||
|
||||
License
|
||||
|
||||
|
||||
Development
|
||||
|
||||
@@ -9,9 +9,21 @@ Development
|
||||
|
||||
#Ship and Component Database
|
||||
|
||||
See Data Readme for details on structure, etc.
|
||||
See Data Wiki for details on structure, etc.
|
||||
|
||||
Please submit issues, or better yet pull requests for any corrections or additions to the database.
|
||||
|
||||
Feature Requests and To Do List
|
||||
|
||||
|
||||
#Feature Requests and To Do List
|
||||
|
||||
#To Do
|
||||
|
||||
#Data
|
||||
#Internal Components
|
||||
|
||||
## Frame Shift Drive Interdictors
|
||||
- Get actual range for range rating in Light seconds
|
||||
|
||||
|
||||
#License
|
||||
BIN
app/images/deep-space.jpg
Normal file
BIN
app/images/deep-space.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 188 KiB |
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<base href="/">
|
||||
<title>Coriolis Shipyard</title>
|
||||
<title ng-bind="title">Coriolis</title>
|
||||
<link rel="stylesheet" href="app.css">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="images/logo/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="images/logo/apple-touch-icon-114x114.png">
|
||||
@@ -24,7 +24,7 @@
|
||||
<body>
|
||||
<div id="bg"></div>
|
||||
<shipyard-menu></shipyard-menu>
|
||||
<div id="main" ng-view ng-click="bgClicked($event)"></div>
|
||||
<div id="main" ui-view ng-click="bgClicked($event)"></div>
|
||||
|
||||
<footer>
|
||||
<div class="right">Version <%= version %> - <%= date %></div>
|
||||
|
||||
@@ -1,25 +1,45 @@
|
||||
angular.module('app', ['ngRoute', 'shipyard', 'ngLodash', 'n3-line-chart', 'app.templates'])
|
||||
.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
|
||||
angular.module('app', ['ui.router', 'shipyard', 'ngLodash', 'app.templates'])
|
||||
.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {
|
||||
$locationProvider.html5Mode(true);
|
||||
$routeProvider
|
||||
.when('/:ship', { templateUrl: 'views/ship.html', controller: 'ShipController' })
|
||||
.when('/:ship/:code', { templateUrl: 'views/ship.html', controller: 'ShipController' })
|
||||
.when('/', { templateUrl: 'views/ships.html', controller: 'ShipyardController' });
|
||||
$stateProvider
|
||||
.state('outfit', {
|
||||
url: '/outfit/:shipId/:code?bn',
|
||||
params: {
|
||||
// TODO: fix below, default, squash false not working
|
||||
//shipId: { value: 'sidewinder', squash: false }, // Allow 'shipId' parameter to default to
|
||||
code: { value: null, squash: true } // Allow 'code' parameter to be empty/optional
|
||||
},
|
||||
templateUrl: 'views/page-outfit.html',
|
||||
controller: 'OutfitController',
|
||||
resolve: {
|
||||
shipId: ['$stateParams',function ($p) { // Ensure ship exists before loading controller
|
||||
if (!DB.ships[$p.shipId]) {
|
||||
throw { type: 404, message: 'Ship "' + $p.shipId + '" does not exist'};
|
||||
}
|
||||
}]
|
||||
}
|
||||
})
|
||||
.state('shipyard', { url: '/', templateUrl: 'views/page-shipyard.html', controller: 'ShipyardController' })
|
||||
.state('error', { params: {type:null, message:null, details: null }, templateUrl: 'views/page-error.html', controller: 'ErrorController' })
|
||||
.state('notfound', { url: '*path', templateUrl: 'views/page-error.html', controller: 'ErrorController' });
|
||||
|
||||
}])
|
||||
.run(['$rootScope','$document','$location','$route','commonArray','shipPurpose','shipSize','hardPointClass','internalGroupMap', function ($rootScope, $doc, $loc, $route, CArr, shipPurpose, sz, hpc, igMap) {
|
||||
// Allow URL changes without reloading controllers/view
|
||||
var original = $loc.path;
|
||||
$loc.path = function (path, reload) {
|
||||
if (reload === false) {
|
||||
var lastRoute = $route.current;
|
||||
var un = $rootScope.$on('$locationChangeSuccess', function () {
|
||||
$route.current = lastRoute;
|
||||
un();
|
||||
});
|
||||
}
|
||||
return original.apply($loc, [path]);
|
||||
};
|
||||
.config(['$provide',function($provide) {
|
||||
// Global Error Handler, redirects uncaught errors to the error page
|
||||
$provide.decorator('$exceptionHandler', ['$delegate', '$injector', function ($delegate, $injector) {
|
||||
return function(exception, cause) {
|
||||
$injector.get('$state').go('error', { details: exception }, {location:false, reload:true}); // Go to error state, reload the controller, keep the current URL
|
||||
$delegate(exception, cause);
|
||||
};
|
||||
}]);
|
||||
}])
|
||||
.run(['$rootScope','$document','$state','commonArray','shipPurpose','shipSize','hardPointClass','internalGroupMap','hardpointsGroupMap', function ($rootScope, $doc, $state, CArr, shipPurpose, sz, hpc, igMap, hgMap) {
|
||||
|
||||
// Redirect any state transition errors to the error controller/state
|
||||
$rootScope.$on('$stateChangeError', function(e, toState, toParams, fromState, fromParams, error){
|
||||
e.preventDefault();
|
||||
$state.go('error',error, {location:false, reload:true}); // Go to error state, reload the controller, keep the current URL
|
||||
});
|
||||
|
||||
// Global Reference variables
|
||||
$rootScope.CArr = CArr;
|
||||
@@ -27,7 +47,9 @@ angular.module('app', ['ngRoute', 'shipyard', 'ngLodash', 'n3-line-chart', 'app.
|
||||
$rootScope.SZ = sz;
|
||||
$rootScope.HPC = hpc;
|
||||
$rootScope.igMap = igMap;
|
||||
window.hgmap = $rootScope.hgMap = hgMap;
|
||||
$rootScope.ships = DB.ships;
|
||||
$rootScope.title = 'Coriolis';
|
||||
|
||||
// Formatters
|
||||
$rootScope.fCrd = d3.format(',.0f');
|
||||
|
||||
15
app/js/controllers/controller-error.js
Normal file
15
app/js/controllers/controller-error.js
Normal file
@@ -0,0 +1,15 @@
|
||||
angular.module('app')
|
||||
.controller('ErrorController', ['$rootScope','$scope','$stateParams', '$location', function ($rootScope, $scope, $p, $location) {
|
||||
$rootScope.title = 'Error';
|
||||
|
||||
if ($p.path) { // If path is specified, 404
|
||||
$scope.type = 404; // Deep Space Image...
|
||||
$scope.message = ""
|
||||
$scope.path = $p.path;
|
||||
} else {
|
||||
$scope.type = $p.type || 'unknown';
|
||||
$scope.message = $p.message || "Uh, this is bad..";
|
||||
$scope.path = $location.path();
|
||||
}
|
||||
|
||||
}]);
|
||||
101
app/js/controllers/controller-outfit.js
Normal file
101
app/js/controllers/controller-outfit.js
Normal file
@@ -0,0 +1,101 @@
|
||||
angular.module('app').controller('OutfitController', ['$rootScope','$scope', '$state', '$stateParams', 'Ship', 'Components', 'Serializer', 'Persist', function ($rootScope, $scope, $state, $p, Ship, Components, Serializer, Persist) {
|
||||
var data = DB.ships[$p.shipId];
|
||||
var ship = new Ship($p.shipId, data.properties, data.slots); // Create a new Ship instance
|
||||
|
||||
if ($p.code) {
|
||||
Serializer.toShip(ship, $p.code); // Populate components from 'code' URL param
|
||||
$scope.code = $p.code;
|
||||
} else {
|
||||
ship.buildWith(data.defaults); // Populate with default components
|
||||
}
|
||||
|
||||
$scope.buildName = $p.bn;
|
||||
$rootScope.title = ship.name + $scope.buildName? ' - ' + $scope.buildName: '';
|
||||
$scope.ship = ship;
|
||||
$scope.pp = ship.common[0]; // Power Plant
|
||||
$scope.th = ship.common[1]; // Thruster
|
||||
$scope.fsd = ship.common[2]; // Frame Shrift Drive
|
||||
$scope.ls = ship.common[3]; // Life Support
|
||||
$scope.pd = ship.common[4]; // Power Distributor
|
||||
$scope.ss = ship.common[5]; // Sensors
|
||||
$scope.ft = ship.common[6]; // Fuel Tank
|
||||
$scope.hps = ship.hardpoints;
|
||||
$scope.internal = ship.internal;
|
||||
$scope.availCS = Components.forShip(ship.id);
|
||||
$scope.selectedSlot = null;
|
||||
$scope.lastSaveCode = Persist.getBuild(ship.id, $scope.buildName);
|
||||
|
||||
// for debugging
|
||||
window.myScope = $scope;
|
||||
|
||||
$scope.selectSlot = function(e, slot) {
|
||||
e.stopPropagation();
|
||||
if ($scope.selectedSlot == slot) {
|
||||
$scope.selectedSlot = null;
|
||||
} else {
|
||||
$scope.selectedSlot = slot;
|
||||
}
|
||||
};
|
||||
|
||||
$scope.select = function(type, slot, e) {
|
||||
e.stopPropagation();
|
||||
if (e.srcElement.id) {
|
||||
if(type == 'h') {
|
||||
ship.use(slot, e.srcElement.id, Components.hardpoints(e.srcElement.id));
|
||||
} else if (type == 'c') {
|
||||
ship.use(slot, e.srcElement.id, Components.common(ship.common.indexOf(slot), e.srcElement.id));
|
||||
} else if (type == 'i') {
|
||||
ship.use(slot, e.srcElement.id, Components.internal(e.srcElement.id));
|
||||
} else if (type == 'b') {
|
||||
ship.useBulkhead(slot, e.srcElement.id);
|
||||
} else {
|
||||
ship.use(slot, null, null);
|
||||
}
|
||||
$scope.selectedSlot = null;
|
||||
$scope.code = Serializer.fromShip(ship);
|
||||
$state.go('outfit', {shipId: ship.id, code: $scope.code, bn: $scope.buildName}, {location:'replace', notify:false});
|
||||
$scope.canSave = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the build from the last save.
|
||||
*/
|
||||
$scope.reloadBuild = function() {
|
||||
if ($scope.buildName && $scope.lastSaveCode) {
|
||||
Serializer.toShip(ship, $scope.lastSaveCode); // Repopulate with components from last save
|
||||
$scope.code = $scope.lastSaveCode;
|
||||
$state.go('outfit', {shipId: ship.id, code: $scope.lastSaveCode, bn: $scope.buildName}, {location:'replace', notify:false});
|
||||
}
|
||||
};
|
||||
|
||||
$scope.saveBuild = function() {
|
||||
if ($scope.code && $scope.code != $scope.lastSaveCode) {
|
||||
Persist.saveBuild(ship.id, $scope.buildName, $scope.code);
|
||||
$scope.lastSaveCode = $scope.code;
|
||||
$rootScope.$broadcast('buildSaved', ship.id, $scope.buildName, $scope.code);
|
||||
}
|
||||
}
|
||||
|
||||
$scope.deleteBuild = function() {
|
||||
Persist.deleteBuild(ship.id, $scope.buildName);
|
||||
$rootScope.$broadcast('buildDeleted', $scope.saveName, ship.id);
|
||||
$state.go('outfit', {shipId: ship.id, code: null, bn: null}, {location:'replace', reload:true});
|
||||
}
|
||||
|
||||
$rootScope.$on('keyup', function (e, keyEvent) {
|
||||
if(keyEvent.keyCode == 27) { // on Escape
|
||||
$scope.selectedSlot = null;
|
||||
$scope.$apply();
|
||||
}
|
||||
else if(keyEvent.keycode == 83 && keyEvent.ctrlKey){ // CTRL + S
|
||||
e.preventDefault();
|
||||
$scope.saveBuild();
|
||||
}
|
||||
});
|
||||
|
||||
$rootScope.$on('bgClicked', function (e, keyEvent) {
|
||||
$scope.selectedSlot = null;
|
||||
});
|
||||
|
||||
}]);
|
||||
@@ -1,61 +0,0 @@
|
||||
angular.module('app')
|
||||
.controller('ShipController', ['$rootScope','$scope', '$routeParams', '$location', 'ShipFactory', 'components', function ($rootScope, $scope, $p, $loc, ShipFactory, Components) {
|
||||
$scope.shipId = $p.ship;
|
||||
|
||||
// TODO: show 404 if ship not found.
|
||||
var ship = ShipFactory($scope.shipId, DB.ships[$scope.shipId], $p.code);
|
||||
$scope.ship = ship;
|
||||
$scope.pp = ship.common[0]; // Power Plant
|
||||
$scope.th = ship.common[1]; // Thruster
|
||||
$scope.fsd = ship.common[2]; // Frame Shrift Drive
|
||||
$scope.ls = ship.common[3]; // Life Support
|
||||
$scope.pd = ship.common[4]; // Power Distributor
|
||||
$scope.ss = ship.common[5]; // Sensors
|
||||
$scope.ft = ship.common[6]; // Fuel Tank
|
||||
$scope.hps = ship.hardpoints;
|
||||
$scope.internal = ship.internal;
|
||||
$scope.availCS = Components.forShip($scope.shipId);
|
||||
$scope.selectedSlot = null;
|
||||
// for debugging
|
||||
window.ship = ship;
|
||||
window.availcs = $scope.availCS;
|
||||
|
||||
$scope.selectSlot = function(e, slot) {
|
||||
e.stopPropagation();
|
||||
if ($scope.selectedSlot == slot) {
|
||||
$scope.selectedSlot = null;
|
||||
} else {
|
||||
$scope.selectedSlot = slot;
|
||||
}
|
||||
};
|
||||
|
||||
$scope.selectComponent = function(slot, id, component) {
|
||||
ship.use(slot, id, component);
|
||||
$scope.selectedSlot = null;
|
||||
$loc.path(ship.id + '/' + ship.code, false).replace();
|
||||
}
|
||||
|
||||
$scope.hideMenus = function() {
|
||||
$scope.selectedSlot = null;
|
||||
}
|
||||
|
||||
$rootScope.$on('keyup', function (e, keyEvent) {
|
||||
if(keyEvent.keyCode == 27) { // on Escape
|
||||
$scope.hideMenus();
|
||||
$scope.$apply();
|
||||
}
|
||||
// TODO: CTRL+S -> Save
|
||||
});
|
||||
|
||||
$rootScope.$on('bgClicked', function (e, keyEvent) {
|
||||
$scope.hideMenus();
|
||||
});
|
||||
|
||||
// TODO: Save build
|
||||
// TODO: name build + save
|
||||
// Push new url history in this case
|
||||
// TODO: delete build
|
||||
// TODO: reset to ship defaults
|
||||
// TODO: revert to last save
|
||||
|
||||
}]);
|
||||
@@ -1,4 +1,4 @@
|
||||
angular.module('app')
|
||||
.controller('ShipyardController', function () {
|
||||
|
||||
});
|
||||
.controller('ShipyardController', ['$rootScope', function ($rootScope) {
|
||||
$rootScope.title = 'Coriolis - Shipyard';
|
||||
}]);
|
||||
@@ -2,15 +2,39 @@ angular.module('app').directive('componentSelect', [ function() {
|
||||
return {
|
||||
restrict: 'A',
|
||||
scope:{
|
||||
opts: '=', // Component Options object
|
||||
slot: '=', // Slot Object
|
||||
selectComponent: '&sc' // Select Component function
|
||||
opts: '=', // Component Options object
|
||||
},
|
||||
templateUrl: 'views/component_select.html',
|
||||
link: function (scope) {
|
||||
scope.use = function(id, component) {
|
||||
scope.selectComponent({s: scope.slot, id: id, c: component});
|
||||
};
|
||||
link: function(scope, element) {
|
||||
var list = [], o, id;
|
||||
var opts = scope.opts;
|
||||
//TODO: take current ship mass into account if provided
|
||||
// Generting the HTML in this manner is MUCH faster than using an angular template.
|
||||
for (id in opts) {
|
||||
o = opts[id];
|
||||
list.push('<li class="');
|
||||
list.push(o.name? 'lc' : 'c');
|
||||
if (false) { // Omit id if mass is exceeded making it 'disabled'
|
||||
list.push(' disabled"');
|
||||
} else {
|
||||
list.push('" id="');
|
||||
}
|
||||
list.push(id);
|
||||
list.push('">');
|
||||
list.push(o.class);
|
||||
list.push(o.rating);
|
||||
if(o.mode) {
|
||||
list.push('/' + o.mode);
|
||||
if(o.missile) {
|
||||
list.push(o.missile);
|
||||
}
|
||||
}
|
||||
if(o.name) {
|
||||
list.push(' ' + o.name);
|
||||
}
|
||||
list.push('</li>');
|
||||
}
|
||||
|
||||
element.html('<ul>' + list.join('') + '</ul>');
|
||||
}
|
||||
};
|
||||
}]);
|
||||
@@ -1,4 +1,4 @@
|
||||
angular.module('app').directive('shipRange', ['$rootScope','CalcJumpRange', function ($r, calcJumpRange) {
|
||||
angular.module('app').directive('shipRange', ['$rootScope','calcJumpRange', function ($r, calcJumpRange) {
|
||||
|
||||
return {
|
||||
restrict: 'A',
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
angular.module('app').directive('hardpoint', ['$rootScope', function ($r) {
|
||||
angular.module('app').directive('slotHardpoint', ['$rootScope', function ($r) {
|
||||
return {
|
||||
restrict: 'A',
|
||||
scope:{
|
||||
hp: '=',
|
||||
size: '=',
|
||||
opts: '='
|
||||
lbl: '=',
|
||||
},
|
||||
templateUrl: 'views/hardpoint.html',
|
||||
templateUrl: 'views/slot-hardpoint.html',
|
||||
link: function (scope) {
|
||||
scope.$r = $r;
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
angular.module('app').directive('slotDetails', ['$rootScope', function ($r) {
|
||||
angular.module('app').directive('slotInternal', ['$rootScope', function ($r) {
|
||||
return {
|
||||
restrict: 'A',
|
||||
scope:{
|
||||
c: '=',
|
||||
c: '=slot',
|
||||
lbl: '=',
|
||||
opts: '='
|
||||
},
|
||||
templateUrl: 'views/slot.html',
|
||||
templateUrl: 'views/slot-internal.html',
|
||||
link: function(scope) {
|
||||
scope.$r = $r;
|
||||
}
|
||||
58
app/js/service-persist.js
Normal file
58
app/js/service-persist.js
Normal file
@@ -0,0 +1,58 @@
|
||||
angular.module('app').service('Persist', ['lodash', function (_) {
|
||||
var LS_KEY = 'builds';
|
||||
|
||||
var buildJson = localStorage.getItem(LS_KEY);
|
||||
|
||||
if (buildJson) {
|
||||
this.builds = angular.fromJson(localStorage.getItem(LS_KEY));
|
||||
} else {
|
||||
this.builds = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Persist a ship build in local storage.
|
||||
*
|
||||
* @param {string} shipId The unique id for a model of ship
|
||||
* @param {string} name The name of the build
|
||||
* @param {string} code The serialized code
|
||||
*/
|
||||
this.saveBuild = function (shipId, name, code) {
|
||||
if (!this.builds[shipId]) {
|
||||
this.builds[shipId] = {};
|
||||
}
|
||||
|
||||
this.builds[shipId][name] = code;
|
||||
localStorage.setItem(LS_KEY, angular.toJson(this.builds)); // Persist updated build collection to localstorage
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the serialized code/string for a build. Returns null if a
|
||||
* build is not found.
|
||||
*
|
||||
* @param {string} shipId The unique id for a model of ship
|
||||
* @param {string} name The name of the build
|
||||
* @return {string} The serialized build string.
|
||||
*/
|
||||
this.getBuild = function (shipId, name) {
|
||||
if (this.builds[shipId]) {
|
||||
return this.builds[shipId][name];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a build from local storage. It will also delete the ship build collection if
|
||||
* it becomes empty
|
||||
*
|
||||
* @param {string} shipId The unique id for a model of ship
|
||||
* @param {string} name The name of the build
|
||||
*/
|
||||
this.deleteBuild = function (shipId, name) {
|
||||
delete build[shipId][name];
|
||||
if (Object.keys(build[shipId]).length == 0) {
|
||||
delete build[shipId];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}]);
|
||||
69
app/js/service-serializer.js
Normal file
69
app/js/service-serializer.js
Normal file
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* Service managing seralization and deserialization of models for use in URLs and persistene.
|
||||
*/
|
||||
angular.module('app').service('Serializer', ['lodash', function (_) {
|
||||
|
||||
/**
|
||||
* Serializes the ships selected components for all slots to a URL friendly string.
|
||||
* @param {Ship} ship The ship to be serialized.
|
||||
* @return {string} Encoded string of components
|
||||
*/
|
||||
this.fromShip = function(ship) {
|
||||
var data = [
|
||||
ship.bulkheads.id,
|
||||
_.map(ship.common, idToStr),
|
||||
_.map(ship.hardpoints, idToStr),
|
||||
_.map(ship.internal, idToStr),
|
||||
];
|
||||
|
||||
return _.flatten(data).join('');
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates an existing ship instance's slots with components determined by the
|
||||
* code.
|
||||
*
|
||||
* @param {Ship} ship The ship instance to be updated
|
||||
* @param {string} code The string to deserialize
|
||||
*/
|
||||
this.toShip = function (ship, code) {
|
||||
var commonCount = ship.common.length;
|
||||
var hpCount = commonCount + ship.hardpoints.length;
|
||||
var comps = {
|
||||
bulkheads: code.charAt(0) * 1,
|
||||
common: new Array(ship.common.length),
|
||||
hardpoints: new Array(ship.hardpoints.length),
|
||||
internal: new Array(ship.internal.length)
|
||||
};
|
||||
|
||||
// TODO: improve...
|
||||
for (var i = 1, c = 0, l = code.length; i < l; i++) {
|
||||
var empty = code.charAt(i) == '-';
|
||||
if (c < commonCount) {
|
||||
comps.common[c] = empty? 0 : code.substring(i, i + 2);
|
||||
} else if (c < hpCount) {
|
||||
comps.hardpoints[c - commonCount] = empty? 0 : code.substring(i, i + 2);
|
||||
} else {
|
||||
comps.internal[c - hpCount] = empty? 0 : code.substring(i, i + 2);
|
||||
}
|
||||
if (!empty) {
|
||||
i++;
|
||||
}
|
||||
c++;
|
||||
}
|
||||
ship.buildWith(comps);
|
||||
};
|
||||
|
||||
/**
|
||||
* Utility function to retrieve a safe string for selected component for a slot.
|
||||
* Used for serialization to code only.
|
||||
*
|
||||
* @private
|
||||
* @param {object} slot The slot object.
|
||||
* @return {string} The id of the selected component or '-' if none selected
|
||||
*/
|
||||
function idToStr(slot) {
|
||||
return (slot.id === null)? '-' : slot.id;
|
||||
}
|
||||
|
||||
}]);
|
||||
@@ -1,40 +1,45 @@
|
||||
angular.module('shipyard').factory('components', ['lodash', function (_) {
|
||||
var C = DB.components;
|
||||
angular.module('shipyard').factory('ComponentSet', ['lodash', function (_) {
|
||||
|
||||
function ComponentSet(shipId) {
|
||||
var ship = DB.ships[shipId];
|
||||
var maxInternal = ship.slotCap.internal[0];
|
||||
|
||||
this.mass = ship.mass;
|
||||
function ComponentSet(components, mass, maxCommonArr, maxInternal, maxHardPoint) {
|
||||
this.mass = mass;
|
||||
this.common = {};
|
||||
this.internal = {};
|
||||
this.hardpoints = filter(C.hardpoints, ship.slotCap.hardpoints[0], 0, ship.mass);
|
||||
this.bulkheads = C.bulkheads[shipId];
|
||||
this.hardpoints = {};
|
||||
this.hpClass = {};
|
||||
this.intClass = {};
|
||||
|
||||
for (var i = 0; i < C.common.length; i ++) {
|
||||
var max = ship.slotCap.common[i];
|
||||
for (var i = 0; i < components.common.length; i ++) {
|
||||
var max = maxCommonArr[i];
|
||||
switch (i) {
|
||||
// Slots where component class must be equal to slot class
|
||||
case 3: // Life Support
|
||||
case 5: // Sensors
|
||||
this.common[i] = filter(C.common[i], max, max, ship.mass);
|
||||
this.common[i] = filter(components.common[i], max, max, this.mass);
|
||||
break;
|
||||
// Other slots can have a component of class lower than the slot class
|
||||
default:
|
||||
this.common[i] = filter(C.common[i], max, 0, ship.mass);
|
||||
this.common[i] = filter(components.common[i], max, 0, this.mass);
|
||||
}
|
||||
}
|
||||
|
||||
for(var g in C.internal) {
|
||||
this.internal[g] = filter(C.internal[g], maxInternal, 0, ship.mass);
|
||||
for(var h in components.hardpoints) {
|
||||
this.hardpoints[h] = filter(components.hardpoints[h], maxHardPoint, 0, this.mass);
|
||||
}
|
||||
|
||||
for(var g in components.internal) {
|
||||
this.internal[g] = filter(components.internal[g], maxInternal, 0, this.mass);
|
||||
}
|
||||
}
|
||||
|
||||
ComponentSet.prototype.getHps = function(c) {
|
||||
if(!this.hpClass[c]) {
|
||||
this.hpClass[c] = filter(this.hardpoints, c, c? 1 : 0, this.mass);
|
||||
var o = this.hpClass[c] = {};
|
||||
for(var key in this.hardpoints) {
|
||||
var data = filter(this.hardpoints[key], c, c? 1 : 0, this.mass);
|
||||
if(Object.keys(data).length) { // If group is not empty
|
||||
o[key] = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.hpClass[c];
|
||||
};
|
||||
@@ -44,7 +49,7 @@ angular.module('shipyard').factory('components', ['lodash', function (_) {
|
||||
var o = this.intClass[c] = {};
|
||||
for(var key in this.internal) {
|
||||
var data = filter(this.internal[key], c, 0, this.mass);
|
||||
if(Object.keys(data).length) {
|
||||
if(Object.keys(data).length) { // If group is not empty
|
||||
o[key] = data;
|
||||
}
|
||||
}
|
||||
@@ -62,16 +67,6 @@ angular.module('shipyard').factory('components', ['lodash', function (_) {
|
||||
return set;
|
||||
}
|
||||
|
||||
return {
|
||||
forShip: function (shipId) {
|
||||
return new ComponentSet(shipId);
|
||||
},
|
||||
findInternal: function(id) {
|
||||
var c = _.find(C.internal, function(o) {
|
||||
return o[id];
|
||||
})
|
||||
return c[id];
|
||||
}
|
||||
};
|
||||
return ComponentSet;
|
||||
|
||||
}]);
|
||||
@@ -1,47 +1,30 @@
|
||||
angular.module('shipyard').factory('ShipFactory', ['components', 'CalcShieldStrength', 'CalcJumpRange', 'lodash', function (Components, calcShieldStrength, calcJumpRange, _) {
|
||||
angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength', 'calcJumpRange', 'lodash', function (Components, calcShieldStrength, calcJumpRange, _) {
|
||||
|
||||
/**
|
||||
* Ship model used to track all ship components and properties.
|
||||
*
|
||||
* @param {string} id Unique ship Id / Key
|
||||
* @param {object} shipData Data/defaults from the Ship database.
|
||||
* @param {string} id Unique ship Id / Key
|
||||
* @param {object} properties Basic ship properties such as name, manufacturer, mass, etc
|
||||
* @param {object} slots Collection of slot groups (standard/common, internal, hardpoints) with their max class size.
|
||||
*/
|
||||
function Ship(id, shipData) {
|
||||
function Ship(id, properties, slots) {
|
||||
this.id = id;
|
||||
this.defaults = shipData.defaultComponents;
|
||||
this.incCost = true;
|
||||
this.cargoScoop = { enabled: true, c: { name: 'Cargo Scoop', class: 1, rating: 'H', power: 0.6} };
|
||||
this.sgSI = null; // Shield Generator Slot Index
|
||||
this.cargoScoop = { enabled: true, c: Components.cargoScoop() };
|
||||
this.bulkheads = { incCost: true, maxClass: 8 };
|
||||
this.sgSI = null; // Shield Generator Index
|
||||
|
||||
// Copy all base properties from shipData
|
||||
angular.forEach(shipData,function(o,k){
|
||||
if(typeof o != 'object') {
|
||||
this[k] = o;
|
||||
}
|
||||
}.bind(this));
|
||||
for (p in properties) { this[p] = properties[p]; } // Copy all base properties from shipData
|
||||
|
||||
angular.forEach(shipData.slotCap, function (slots, slotGroup) { // Initialize all slots
|
||||
this[slotGroup] = []; // Initialize Slot group (Common, Hardpoints, Internal)
|
||||
for(var i = 0; i < slots.length; i++){
|
||||
this[slotGroup].push({id: null, c: null, enabled: true, incCost: true, maxClass: slots[i]});
|
||||
for (groupName in slots) { // Initialize all slots
|
||||
var slotGroup = slots[groupName];
|
||||
var group = this[groupName] = []; // Initialize Slot group (Common, Hardpoints, Internal)
|
||||
for(var i = 0; i < slotGroup.length; i++){
|
||||
group.push({id: null, c: null, enabled: true, incCost: true, maxClass: slotGroup[i]});
|
||||
}
|
||||
}.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the ship to the original 'manufacturer' defaults.
|
||||
*/
|
||||
Ship.prototype.clear = function() {
|
||||
this.buildWith(DB.ships[this.id].defaultComponents);
|
||||
};
|
||||
|
||||
/**
|
||||
* Reset the current build to the previously used default
|
||||
*/
|
||||
Ship.prototype.reset = function() {
|
||||
this.buildWith(this.defaults);
|
||||
};
|
||||
|
||||
/**
|
||||
* Builds/Updates the ship instance with the components[comps] passed in.
|
||||
* @param {object} comps Collection of components used to build the ship
|
||||
@@ -50,98 +33,37 @@ angular.module('shipyard').factory('ShipFactory', ['components', 'CalcShieldStre
|
||||
var internal = this.internal;
|
||||
var common = this.common;
|
||||
var hps = this.hardpoints;
|
||||
var availCommon = DB.components.common;
|
||||
var availHardPoints = DB.components.hardpoints;
|
||||
var availInternal = DB.components.internal;
|
||||
var i,l;
|
||||
|
||||
this.bulkheads = { incCost: true, maxClass: 8, id: comps.bulkheads || 0, c: DB.components.bulkheads[this.id][comps.bulkheads || 0] };
|
||||
this.bulkheads.id = comps.bulkheads || 0;
|
||||
this.bulkheads.c = Components.bulkheads(this.id, this.bulkheads.id);
|
||||
|
||||
for(i = 0, l = comps.common.length; i < l; i++) {
|
||||
common[i].id = comps.common[i];
|
||||
common[i].c = availCommon[i][comps.common[i]];
|
||||
common[i].c = Components.common(i, comps.common[i]);
|
||||
}
|
||||
|
||||
for(i = 0, l = comps.hardpoints.length; i < l; i++) {
|
||||
if(comps.hardpoints[i] !== 0) {
|
||||
if (comps.hardpoints[i] !== 0) {
|
||||
hps[i].id = comps.hardpoints[i];
|
||||
hps[i].c = availHardPoints[comps.hardpoints[i]];
|
||||
hps[i].c = Components.hardpoints(comps.hardpoints[i]);
|
||||
} else {
|
||||
hps[i].c = hps[i].id = null;
|
||||
}
|
||||
}
|
||||
|
||||
for(i = 0, l = comps.internal.length; i < l; i++) {
|
||||
if(comps.internal[i] !== 0) {
|
||||
if (comps.internal[i] !== 0) {
|
||||
internal[i].id = comps.internal[i];
|
||||
internal[i].c = Components.findInternal(comps.internal[i]);
|
||||
if(internal[i].c.group == 'sg') {
|
||||
internal[i].c = Components.internal(comps.internal[i]);
|
||||
if (internal[i].c.group == 'sg') {
|
||||
this.sgSI = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.code = this.toCode();
|
||||
this.updateTotals();
|
||||
};
|
||||
|
||||
/**
|
||||
* Serializes the selected components for all slots to a URL friendly string.
|
||||
* @return {string} Encoded string of components
|
||||
*/
|
||||
Ship.prototype.toCode = function() {
|
||||
var data = [
|
||||
this.bulkheads.id,
|
||||
_.map(this.common, idToStr),
|
||||
_.map(this.hardpoints, idToStr),
|
||||
_.map(this.internal, idToStr),
|
||||
];
|
||||
|
||||
return _.flatten(data).join('');
|
||||
};
|
||||
|
||||
/**
|
||||
* Utility function to retrieve a safe string for selected component for a slot.
|
||||
* Used for serialization to code only.
|
||||
*
|
||||
* @private
|
||||
* @param {object} slot The slot object.
|
||||
* @return {string} The id of the selected component or '-' if none selected
|
||||
*/
|
||||
function idToStr(slot) {
|
||||
return (slot.id === null)? '-' : slot.id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the current ship instance's slots with components determined by the
|
||||
* code.
|
||||
*
|
||||
* @param {string} code [description]
|
||||
*/
|
||||
Ship.prototype.buildFromCode = function (code) {
|
||||
var commonCount = this.common.length;
|
||||
var hpCount = commonCount + this.hardpoints.length;
|
||||
var comps = {
|
||||
bulkheads: code.charAt(0) * 1,
|
||||
common: new Array(this.common.length),
|
||||
hardpoints: new Array(this.hardpoints.length),
|
||||
internal: new Array(this.internal.length)
|
||||
};
|
||||
|
||||
// TODO: improve...
|
||||
for (var i = 1, c = 0, l = code.length; i < l; i++) {
|
||||
var isNull = code.charAt(i) == '-';
|
||||
if (c < commonCount) {
|
||||
comps.common[c] = isNull? 0 : code.substring(i, i + 2);
|
||||
} else if (c < hpCount) {
|
||||
comps.hardpoints[c - commonCount] = isNull? 0 : code.substring(i, i + 2);
|
||||
} else {
|
||||
comps.internal[c - hpCount] = isNull? 0 : code.substring(i, i + 2);
|
||||
internal[i].id = internal[i].c = null;
|
||||
}
|
||||
if (!isNull) {
|
||||
i++;
|
||||
}
|
||||
c++;
|
||||
}
|
||||
this.defaults = comps;
|
||||
this.buildWith(comps);
|
||||
this.updateTotals();
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -171,7 +93,6 @@ angular.module('shipyard').factory('ShipFactory', ['components', 'CalcShieldStre
|
||||
// TODO: shield recharge rate
|
||||
// TODO: armor bonus / damage reduction for bulkheads
|
||||
// TODO: thermal load and weapon recharge rate
|
||||
this.code = this.toCode();
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -195,6 +116,10 @@ angular.module('shipyard').factory('ShipFactory', ['components', 'CalcShieldStre
|
||||
return sum;
|
||||
}
|
||||
|
||||
function findInternal(slots, group) {
|
||||
|
||||
}
|
||||
|
||||
Ship.prototype.useBulkhead = function(index) {
|
||||
this.bulkheads.id = index;
|
||||
this.bulkheads.c = DB.components.bulkheads[this.id][index];
|
||||
@@ -238,21 +163,5 @@ angular.module('shipyard').factory('ShipFactory', ['components', 'CalcShieldStre
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Ship Factory function. Created a new instance of a ship based on the ship type.
|
||||
*
|
||||
* @param {string} id Id/Key for the Ship type
|
||||
* @param {object} shipData [description]
|
||||
* @param {string} code [optional] Code to build the ship with
|
||||
* @return {Ship} A new Ship instance
|
||||
*/
|
||||
return function (id, shipData, code) {
|
||||
var s = new Ship(id, shipData);
|
||||
if (code) {
|
||||
s.buildFromCode(code);
|
||||
} else {
|
||||
s.clear();
|
||||
}
|
||||
return s;
|
||||
};
|
||||
return Ship;
|
||||
}]);
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/**
|
||||
* This module contains all of the logic and models corresponding to
|
||||
* information or behavoir in Elite Dangerous.
|
||||
*
|
||||
* This file contains values and functions that can be reused across the app.
|
||||
*/
|
||||
angular.module('shipyard', [])
|
||||
.value('commonArray', [
|
||||
'Power Plant',
|
||||
@@ -13,14 +19,33 @@ angular.module('shipyard', [])
|
||||
sc:'Scanners',
|
||||
am:'Auto Field-Maintenance Unit',
|
||||
cr:'Cargo Racks',
|
||||
fi:'Frame Shift Drive Interdictor',
|
||||
hb:'Hatch Breaker Limpet Controller',
|
||||
fi:'FSD Interdictor',
|
||||
hb:'Hatch Breaker Limpet Ctrl',
|
||||
hr:'Hull Reinforcement Package',
|
||||
rf:'Refinery',
|
||||
sb:'Shield Cell Bank',
|
||||
sg:'Shield Generator',
|
||||
dc:'Docking Computer'
|
||||
})
|
||||
.value('hardpointsGroupMap', {
|
||||
'bl': "Beam Laser",
|
||||
'ul': "Burst Laser",
|
||||
'c': "Cannon",
|
||||
'cs': "Cargo Scanner",
|
||||
'cm': "Countermeasure",
|
||||
'fc': "Fragment Cannon",
|
||||
'fs': "Frame Shift Wake Scanner",
|
||||
'kw': "Kill Warrant Scanner",
|
||||
'nl': "Mine Launcher",
|
||||
'ml': "Mining Laser",
|
||||
'mr': "Missile Rack",
|
||||
'pa': "Plasma Accelerator",
|
||||
'mc': "Multi-cannon",
|
||||
'pl': "Pulse Laser",
|
||||
'rg': "Rail Gun",
|
||||
'sb': "Shield Booster",
|
||||
'tp': "Torpedo Pylon"
|
||||
})
|
||||
.value('shipPurpose', {
|
||||
mp: 'Multi Purpose',
|
||||
fr: 'Freighter',
|
||||
@@ -35,13 +60,6 @@ angular.module('shipyard', [])
|
||||
'Large',
|
||||
'Capital',
|
||||
])
|
||||
.factory('commonMap', ['commonArray', function (commonArray) {
|
||||
var commonMap = {};
|
||||
for(var i = 0; i < commonArray.length; i++) {
|
||||
commonMap[commonArray[i]] = i;
|
||||
}
|
||||
return commonMap;
|
||||
}])
|
||||
.value('hardPointClass', [
|
||||
'Utility',
|
||||
'Small',
|
||||
@@ -49,53 +67,7 @@ angular.module('shipyard', [])
|
||||
'Large',
|
||||
'Huge'
|
||||
])
|
||||
.factory('hardpointGroup', function () {
|
||||
function groupToLabel (grp) {
|
||||
var a = grp.toLowerCase().split('');
|
||||
var l = [];
|
||||
switch(a[0]) {
|
||||
case 's':
|
||||
l.push('Small');
|
||||
break;
|
||||
case 'm':
|
||||
l.push('Medium');
|
||||
break;
|
||||
case 'l':
|
||||
l.push('Large');
|
||||
break;
|
||||
case 'h':
|
||||
l.push('Huge');
|
||||
break;
|
||||
case 'u':
|
||||
l.push('Utility');
|
||||
break;
|
||||
}
|
||||
switch(a[1]) {
|
||||
case 'o':
|
||||
l.push('Other');
|
||||
break;
|
||||
case 'k':
|
||||
l.push('Kinetic');
|
||||
break;
|
||||
case 't':
|
||||
l.push('Thermal');
|
||||
break;
|
||||
case 's':
|
||||
l.push('Scanner');
|
||||
break;
|
||||
case 'b':
|
||||
l.push('Booster');
|
||||
break;
|
||||
case 'm':
|
||||
l.push('Mount');
|
||||
break;
|
||||
}
|
||||
return l.join(' ');
|
||||
}
|
||||
|
||||
return groupToLabel;
|
||||
})
|
||||
.factory('CalcJumpRange', function() {
|
||||
.factory('calcJumpRange', function() {
|
||||
/**
|
||||
* Calculate the maximum single jump range based on mass and a specific FSD
|
||||
* @param {number} mass Mass of a ship: laden, unlanden, partially laden, etc
|
||||
@@ -107,7 +79,7 @@ angular.module('shipyard', [])
|
||||
return Math.pow(Math.min(fuel || Infinity, fsd.maxfuel) / fsd.fuelmul, 1 / fsd.fuelpower ) * fsd.optmass / mass;
|
||||
};
|
||||
})
|
||||
.factory('CalcShieldStrength', function() {
|
||||
.factory('calcShieldStrength', function() {
|
||||
/**
|
||||
* Calculate the a ships shield strength based on mass, shield generator and shield boosters used.
|
||||
*
|
||||
@@ -119,6 +91,9 @@ angular.module('shipyard', [])
|
||||
* @return {number} Approximate shield strengh in MJ
|
||||
*/
|
||||
return function (mass, shields, sg, multiplier) {
|
||||
if (!sg) {
|
||||
return 0;
|
||||
}
|
||||
if (mass <= sg.minmass) {
|
||||
return shields * multiplier * sg.minmul;
|
||||
}
|
||||
|
||||
35
app/js/shipyard/service-components.js
Normal file
35
app/js/shipyard/service-components.js
Normal file
@@ -0,0 +1,35 @@
|
||||
angular.module('shipyard').service('Components', ['lodash', 'ComponentSet', function (_, ComponentSet) {
|
||||
var C = DB.components;
|
||||
|
||||
this.cargoScoop = function() {
|
||||
return { name: 'Cargo Scoop', class: 1, rating: 'H', power: 0.6};
|
||||
}
|
||||
|
||||
this.common = function (typeIndex, componentId) {
|
||||
return C.common[typeIndex][componentId];
|
||||
};
|
||||
|
||||
this.hardpoints = function(id) {
|
||||
var c = _.find(C.hardpoints, function(o) {
|
||||
return o[id];
|
||||
})
|
||||
return c[id];
|
||||
};
|
||||
|
||||
this.internal = function(id) {
|
||||
var c = _.find(C.internal, function(o) {
|
||||
return o[id];
|
||||
})
|
||||
return c[id];
|
||||
};
|
||||
|
||||
this.bulkheads = function(shipId, bulkheadsId) {
|
||||
return C.bulkheads[shipId][bulkheadsId];
|
||||
};
|
||||
|
||||
this.forShip = function (shipId) {
|
||||
var ship = DB.ships[shipId];
|
||||
return new ComponentSet(C, ship.properties.mass, ship.slots.common, ship.slots.internal[0], ship.slots.hardpoints[0]);
|
||||
};
|
||||
|
||||
}]);
|
||||
@@ -7,6 +7,7 @@
|
||||
@import 'list';
|
||||
@import 'slot';
|
||||
@import 'ship';
|
||||
@import 'select';
|
||||
@import 'charts';
|
||||
@import 'meters';
|
||||
|
||||
@@ -32,10 +33,10 @@ body {
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
opacity: 0.3;
|
||||
//background-image: url(images/docking-bay.jpg);
|
||||
//background-repeat: no-repeat;
|
||||
//background-position: center;
|
||||
//background-size: cover;
|
||||
background-image: url(images/docking-bay.jpg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
#main {
|
||||
|
||||
84
app/less/select.less
Normal file
84
app/less/select.less
Normal file
@@ -0,0 +1,84 @@
|
||||
.select {
|
||||
color: @primary-disabled;
|
||||
position: absolute;
|
||||
left: -1px;
|
||||
padding: 5px 0;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
max-height: 300px;
|
||||
overflow-y: scroll;
|
||||
background-color: @bg;
|
||||
border: 1px solid @primary;
|
||||
white-space: nowrap;
|
||||
|
||||
.select-group {
|
||||
clear: both;
|
||||
margin: 5px 0;
|
||||
padding-left: 5px;
|
||||
border-top: 1px solid @primary-disabled;
|
||||
border-bottom: 1px solid @primary-disabled;
|
||||
}
|
||||
|
||||
.empty-c, .c, .lc {
|
||||
cursor: pointer;
|
||||
|
||||
color: @primary-disabled;
|
||||
|
||||
&:hover {
|
||||
color: @warning;
|
||||
}
|
||||
}
|
||||
|
||||
@optionSpacing: 1.8em;
|
||||
|
||||
.lc {
|
||||
padding-left: 5px;
|
||||
line-height:@optionSpacing;
|
||||
}
|
||||
|
||||
.empty-c {
|
||||
line-height:@optionSpacing;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.hardpoint {
|
||||
.c {
|
||||
width: 4em;
|
||||
&:nth-child(3n + 1) {
|
||||
clear: left;
|
||||
}
|
||||
&:nth-child(5n +1) {
|
||||
clear: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.c {
|
||||
border:1px solid @primary-disabled;
|
||||
display: block;
|
||||
float:left;
|
||||
padding: 0;
|
||||
margin: 0.5em;
|
||||
width: 2em;
|
||||
line-height: @optionSpacing;
|
||||
text-align: center;
|
||||
|
||||
&:hover {
|
||||
border:1px solid @warning;
|
||||
}
|
||||
|
||||
&:nth-child(5n +1) {
|
||||
clear: left;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
margin-left: 20px;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -88,77 +88,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.select {
|
||||
color: @primary-disabled;
|
||||
position: absolute;
|
||||
left: -1px;
|
||||
padding: 5px 0;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
max-height: 300px;
|
||||
overflow-y: scroll;
|
||||
background-color: @bg;
|
||||
border: 1px solid @primary;
|
||||
|
||||
|
||||
.select-group {
|
||||
clear: both;
|
||||
margin: 5px 0;
|
||||
padding-left: 5px;
|
||||
border-top: 1px solid @primary-disabled;
|
||||
border-bottom: 1px solid @primary-disabled;
|
||||
}
|
||||
|
||||
.empty-c, .c, .lc {
|
||||
cursor: pointer;
|
||||
|
||||
color: @primary-disabled;
|
||||
|
||||
&:hover {
|
||||
color: @warning;
|
||||
}
|
||||
}
|
||||
|
||||
@optionSpacing: 1.8em;
|
||||
|
||||
.lc {
|
||||
padding-left: 5px;
|
||||
line-height:@optionSpacing;
|
||||
}
|
||||
|
||||
.empty-c {
|
||||
line-height:@optionSpacing;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.c {
|
||||
border:1px solid @primary-disabled;
|
||||
display: block;
|
||||
float:left;
|
||||
padding: 0;
|
||||
margin: 0.5em;
|
||||
width: 2em;
|
||||
//height: 1.5em;
|
||||
line-height: @optionSpacing;
|
||||
text-align: center;
|
||||
|
||||
&:hover {
|
||||
border:1px solid @warning;
|
||||
}
|
||||
|
||||
&:nth-child(5n +1) {
|
||||
clear: left;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
margin-left: 20px;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<ul>
|
||||
<li ng-class="{c: !o.name, lc: !!o.name}" ng-repeat="(id,o) in opts" ng-click="use(id,o)">{{o.class}}{{o.rating}}{{' ' + o.name || ''}}</li>
|
||||
</ul>
|
||||
@@ -1,12 +1,15 @@
|
||||
<header>
|
||||
<div class="left">
|
||||
<a href="/" class="logo shipyard"></a>
|
||||
<a ui-sref="shipyard" class="logo shipyard"></a>
|
||||
|
||||
<a href="/something/bad" class="">Something bad</a>
|
||||
<a href="/outfit/" class="">Outfit</a>
|
||||
<a href="/outfit/bad" class="">Bad Ship</a>
|
||||
</div>
|
||||
|
||||
<div class="right">
|
||||
<a class="logo github" href="https://github.com/cmmcleod/ed-shipyard" target="_blank" title="Shipyard Github Project"></a>
|
||||
<a class="logo reddit" href="https://github.com/cmmcleod/ed-shipyard" target="_blank" title="Reddit Thread"></a>
|
||||
<a class="logo elite-dangerous" href="https://github.com/cmmcleod/ed-shipyard" target="_blank" title="Elite Dangerous Forum Thread"></a>
|
||||
<a class="logo reddit" href="#" target="_blank" title="Reddit Thread"></a>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
12
app/views/page-error.html
Normal file
12
app/views/page-error.html
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
|
||||
<div>
|
||||
<h1>Error {{type}}</h1>
|
||||
<h2 ng-bind="message"></h2>
|
||||
|
||||
<p ng-if="path" ng-bind="path"></p>
|
||||
</div>
|
||||
|
||||
<!-- TODO: formatting /-->
|
||||
<!-- TODO: add awesome relevant SVG based on code /-->
|
||||
<!-- TODO: Add github issue link /-->
|
||||
@@ -2,8 +2,14 @@
|
||||
<div id="hardpoints" class="slot-group">
|
||||
<h1>HardPoints</h1>
|
||||
<div class="slot" ng-repeat="h in ship.hardpoints" ng-click="selectSlot($event, h)" ng-class="{selected: selectedSlot==h}">
|
||||
<div class="details" hardpoint hp="h" size="HPC[h.maxClass]"></div>
|
||||
<div component-select class="select" slot="h" sc="selectComponent(s,id,c)" opts="availCS.getHps(h.maxClass)" ng-show="selectedSlot==h" ng-click="$event.stopPropagation()"></div>
|
||||
<div slot-hardpoint class="details" hp="h" size="HPC[h.maxClass]" lbl="hgMap[h.c.grp]"></div>
|
||||
<div class="select" ng-class="{hardpoint: h.maxClass > 0}" ng-if="selectedSlot==h" ng-click="select('h',h,$event)">
|
||||
<div class="empty-c" id="empty" ng-click="select(null, h, $event)">EMPTY</div>
|
||||
<div ng-repeat="(grp, data) in availCS.getHps(h.maxClass)">
|
||||
<div class="select-group">{{grp}}</div>
|
||||
<div component-select opts="data"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,17 +22,17 @@
|
||||
<div class="cl l">{{ship.bulkheads.c.name}}</div>
|
||||
<div class="r cr">{{ship.bulkheads.c.mass}} T</div>
|
||||
</div>
|
||||
<div class="select" ng-show="selectedSlot==ship.bulkheads" ng-click="$event.stopPropagation()"><ul>
|
||||
<li class="lc" ng-click="ship.useBulkhead(0);hideMenus();">Lightweight Alloy</li>
|
||||
<li class="lc" ng-click="ship.useBulkhead(1);hideMenus();">Reinforced Alloy</li>
|
||||
<li class="lc" ng-click="ship.useBulkhead(2);hideMenus();">Military Grade Composite</li>
|
||||
<li class="lc" ng-click="ship.useBulkhead(3);hideMenus();">Mirrored Surface Composite</li>
|
||||
<li class="lc" ng-click="ship.useBulkhead(4);hideMenus();">Reactive Surface Composite</li>
|
||||
<div class="select" ng-if="selectedSlot==ship.bulkheads" ng-click="select('b',ship.bulkheads,$event)"><ul>
|
||||
<li class="lc" id="0">Lightweight Alloy</li>
|
||||
<li class="lc" id="1">Reinforced Alloy</li>
|
||||
<li class="lc" id="2">Military Grade Composite</li>
|
||||
<li class="lc" id="3">Mirrored Surface Composite</li>
|
||||
<li class="lc" id="4">Reactive Surface Composite</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
<div class="slot" ng-click="selectSlot($event, pp)" ng-class="{selected: selectedSlot==pp}">
|
||||
<div class="details">
|
||||
<div class="sz">{{pp.maxClass}}</div>
|
||||
<div class="sz">{{::pp.maxClass}}</div>
|
||||
<div class="l">Power Plant</div>
|
||||
<div class="r">{{pp.id}}</div>
|
||||
<div class="cb"></div>
|
||||
@@ -34,11 +40,11 @@
|
||||
<div class="l">Power: {{pp.c.pGen}} MW</div>
|
||||
<div class="r">{{pp.c.mass}} T</div>
|
||||
</div>
|
||||
<div component-select class="select" slot="pp" sc="selectComponent(s,id,c)" opts="availCS.common[0]" ng-show="selectedSlot==pp" ng-click="$event.stopPropagation()"></div>
|
||||
<div component-select class="select" opts="availCS.common[0]" ng-if="selectedSlot==pp" ng-click="select('c',pp,$event)"></div>
|
||||
</div>
|
||||
<div class="slot" ng-click="selectSlot($event, th)" ng-class="{selected: selectedSlot==th}">
|
||||
<div class="details">
|
||||
<div class="sz">{{th.maxClass}}</div>
|
||||
<div class="sz">{{::th.maxClass}}</div>
|
||||
<div class="l">Thrusters</div>
|
||||
<div class="r">{{th.id}}</div>
|
||||
<div class="cb"></div>
|
||||
@@ -46,11 +52,11 @@
|
||||
<div class="l">Max: {{th.c.optmass}} T</div>
|
||||
<div class="r">{{th.c.mass}} T</div>
|
||||
</div>
|
||||
<div component-select class="select" slot="th" sc="selectComponent(s,id,c)" opts="availCS.common[1]" ng-show="selectedSlot==th" ng-click="$event.stopPropagation()"></div>
|
||||
<div component-select class="select" opts="availCS.common[1]" ng-if="selectedSlot==th" ng-click="select('c',th,$event)"></div>
|
||||
</div>
|
||||
<div class="slot" ng-click="selectSlot($event, fsd)" ng-class="{selected: selectedSlot==fsd}">
|
||||
<div class="details">
|
||||
<div class="sz">{{fsd.maxClass}}</div>
|
||||
<div class="sz">{{::fsd.maxClass}}</div>
|
||||
<div class="l">Frame Shift Drive</div>
|
||||
<div class="r">{{fsd.id}}</div>
|
||||
<div class="cb"></div>
|
||||
@@ -58,66 +64,75 @@
|
||||
<div class="l">Max Fuel: {{fsd.c.maxfuel}} T</div>
|
||||
<div class="r cr">{{fsd.c.mass}} T</div>
|
||||
</div>
|
||||
<div component-select class="select" slot="fsd" sc="selectComponent(s,id,c)" opts="availCS.common[2]" ng-show="selectedSlot==fsd" ng-click="$event.stopPropagation()"></div>
|
||||
<div component-select class="select" opts="availCS.common[2]" ng-if="selectedSlot==fsd" ng-click="select('c',fsd,$event)"></div>
|
||||
</div>
|
||||
<div class="slot" ng-click="selectSlot($event, ls)" ng-class="{selected: selectedSlot==ls}">
|
||||
<div class="details">
|
||||
<div class="sz">{{ls.maxClass}}</div>
|
||||
<div class="sz">{{::ls.maxClass}}</div>
|
||||
<div class="l">Life Support</div>
|
||||
<div class="r">{{ls.id}}</div>
|
||||
<div class="cb"></div>
|
||||
<div class="l">Time: {{fTime(ls.c.time)}}</div>
|
||||
<div class="r cr">{{ls.c.mass}} T</div>
|
||||
</div>
|
||||
<div component-select class="select" slot="ls" sc="selectComponent(s,id,c)" opts="availCS.common[3]" ng-show="selectedSlot==ls" ng-click="$event.stopPropagation()"></div>
|
||||
<div component-select class="select" opts="availCS.common[3]" ng-if="selectedSlot==ls" ng-click="select('c',ls,$event)"></div>
|
||||
</div>
|
||||
<div class="slot" ng-click="selectSlot($event, pd)" ng-class="{selected: selectedSlot==pd}">
|
||||
<div class="details">
|
||||
<div class="sz">{{pd.maxClass}}</div>
|
||||
<div class="sz">{{::pd.maxClass}}</div>
|
||||
<div class="l">Power Distributor</div>
|
||||
<div class="r">{{pd.id}}</div>
|
||||
<div class="cb"></div>
|
||||
<!-- TODO: add power distributor stuff /-->
|
||||
<div class="r cr">{{pd.c.mass}} T</div>
|
||||
</div>
|
||||
<div component-select class="select" slot="pd" sc="selectComponent(s,id,c)" opts="availCS.common[4]" ng-show="selectedSlot==pd" ng-click="$event.stopPropagation()"></div>
|
||||
<div component-select class="select" opts="availCS.common[4]" ng-if="selectedSlot==pd" ng-click="select('c',pd,$event)"></div>
|
||||
</div>
|
||||
<div class="slot" ng-click="selectSlot($event, ss)" ng-class="{selected: selectedSlot==ss}">
|
||||
<div class="details">
|
||||
<div class="sz">{{ss.maxClass}}</div>
|
||||
<div class="sz">{{::ss.maxClass}}</div>
|
||||
<div class="l">Sensors</div>
|
||||
<div class="r">{{ss.id}}</div>
|
||||
<div class="cb"></div>
|
||||
<div class="l">{{ss.c.range}} KM</div>
|
||||
<div class="r cr">{{ss.c.mass}} T</div>
|
||||
</div>
|
||||
<div component-select class="select" slot="ss" sc="selectComponent(s,id,c)" opts="availCS.common[5]" ng-show="selectedSlot==ss" ng-click="$event.stopPropagation()"></div>
|
||||
<div component-select class="select" opts="availCS.common[5]" ng-if="selectedSlot==ss" ng-click="select('c',ss,$event)"></div>
|
||||
</div>
|
||||
<div class="slot" ng-click="selectSlot($event, ft)" ng-class="{selected: selectedSlot==ft}">
|
||||
<div class="details" lbl="CArr[0]">
|
||||
<div class="sz">{{ft.maxClass}}</div>
|
||||
<div class="details">
|
||||
<div class="sz">{{::ft.maxClass}}</div>
|
||||
<div class="l">Fuel Tank</div>
|
||||
<div class="r">{{ft.id}}</div>
|
||||
<div class="r cr">{{ft.c.capacity}} T</div>
|
||||
</div>
|
||||
<div component-select class="select" slot="ft" sc="selectComponent(s,id,c)" opts="availCS.common[6]" ng-show="selectedSlot==ft" ng-click="$event.stopPropagation()"></div>
|
||||
<div component-select class="select" opts="availCS.common[6]" ng-if="selectedSlot==ft" ng-click="select('c',ft,$event)"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="internal" class="slot-group">
|
||||
<h1>Internal Compartments</h1>
|
||||
<div class="slot" ng-repeat="i in ship.internal" ng-click="selectSlot($event, i)" ng-class="{selected: selectedSlot==i}">
|
||||
<div class="details" slot-details c="i" lbl="igMap[i.c.group]"></div>
|
||||
<div class="select" ng-show="selectedSlot==i" ng-click="$event.stopPropagation()">
|
||||
<div class="empty-c" ng-click="selectComponent(i, null,null)">EMPTY</div>
|
||||
<div slot-internal class="details" slot="i" lbl="igMap[i.c.group]"></div>
|
||||
<div class="select" ng-if="selectedSlot==i" ng-click="select('i',i,$event)">
|
||||
<div class="empty-c" id="empty" ng-click="select(null, i, $event)">EMPTY</div>
|
||||
<div ng-repeat="(grp, data) in availCS.getInts(i.maxClass)">
|
||||
<div class="select-group">{{grp}}</div>
|
||||
<div component-select slot="i" sc="selectComponent(s,id,c)" opts="data"></div>
|
||||
<div component-select opts="data"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="build">
|
||||
<h1 ng-bind="ship.name"></h1>
|
||||
<input ng-model="buildName" placeholder="Build Name" />
|
||||
<button ng-click="saveBuild()" ng-disabled="code == lastSaveCode">Save</button>
|
||||
<button ng-click="reloadBuild()" ng-disabled="!lastSaveCode || code == lastSaveCode">Reload</button>
|
||||
<button ui-sref="outfit({shipId: ship.id,code:null})" ng-disabled="!code">Clear</button>
|
||||
<button ng-click="deleteBuild()" ng-disabled="!lastSaveCode">Delete</button>
|
||||
</div>
|
||||
|
||||
<div id="summary">
|
||||
<div class="list">
|
||||
<div class="header">Maneuverability</div>
|
||||
9
app/views/page-shipyard.html
Normal file
9
app/views/page-shipyard.html
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
<a ui-sref="outfit({shipId:id})" class="ship" ng-repeat="(id,s) in ships">
|
||||
<h2 ng-bind="s.properties.name"></h2>
|
||||
<small ng-bind="s.properties.manufacturer"></small>
|
||||
<div class="subtitle">
|
||||
<div class="purpose" ng-bind="SP[s.properties.group]"></div>
|
||||
</div>
|
||||
{{fCrd(s.properties.cost)}} CR
|
||||
</a>
|
||||
@@ -1,9 +0,0 @@
|
||||
|
||||
<a ng-href="{{id}}" class="ship" ng-repeat="(id,s) in ships">
|
||||
<h2>{{s.name}}</h2>
|
||||
<small>{{s.manufacturer}}</small>
|
||||
<div class="subtitle">
|
||||
<div class="purpose">{{SP[s.group]}}</div>
|
||||
</div>
|
||||
{{fCrd(s.cost)}} CR
|
||||
</a>
|
||||
@@ -1,7 +1,7 @@
|
||||
<div class="sz">{{['U','S','M','L','H'][hp.maxClass]}}</div>
|
||||
<div class="sz">{{::['U','S','M','L','H'][hp.maxClass]}}</div>
|
||||
<div class="empty" ng-if="!hp.c">EMPTY</div>
|
||||
<div ng-if="hp.c">
|
||||
<div class="l">{{hp.c.name}}</div><div class="r">{{hp.c.class}}{{hp.c.rating}}<span ng-if="hp.c.mode">/{{hp.c.mode}}{{hp.c.missile}}</span></div>
|
||||
<div class="l">{{hp.c.name || lbl}}</div><div class="r">{{hp.c.class}}{{hp.c.rating}}<span ng-if="hp.c.mode">/{{hp.c.mode}}{{hp.c.missile}}</span></div>
|
||||
<div class="cb">
|
||||
<div class="cb" ng-if="hp.c.damage" >
|
||||
<div class="l" meter max="10" obj="hp.c" labels="['dps','dmg']" keys="['dps','damage']" style="width: 75px;height: 30px;"></div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="sz">{{c.maxClass}}</div>
|
||||
<div class="sz" ng-bind="c.maxClass"></div>
|
||||
<div class="empty" ng-if="!c.c">EMPTY</div>
|
||||
<div ng-if="c.c">
|
||||
<div class="l">{{c.c.name || lbl}}</div>
|
||||
@@ -8,8 +8,8 @@
|
||||
<div class="l" ng-if="c.c.maxmass">Max: {{c.c.optmass}} T</div>
|
||||
<div class="l" ng-if="c.c.bins">{{c.c.bins}} Bins</div>
|
||||
<div class="l" ng-if="c.c.range">{{c.c.range}} KM</div>
|
||||
<div class="r cr">{{c.c.mass || '0'}} T</div>
|
||||
<!-- Armour add /-->
|
||||
<!-- Capacity add /-->
|
||||
<div class="l" ng-if="c.c.armouradd">+{{c.c.armouradd}} Armour</div>
|
||||
<div class="r cr">{{c.c.mass || c.c.capacity || '0'}} T</div>
|
||||
|
||||
<!-- Rate add /-->
|
||||
</div>
|
||||
11
bower.json
11
bower.json
@@ -25,14 +25,7 @@
|
||||
"dependencies": {
|
||||
"d3": "~3.5.5",
|
||||
"ng-lodash": "~0.2.0",
|
||||
"angular-route": "~1.3.15",
|
||||
"n3-line-chart": "~1.1.6"
|
||||
"angular-ui-router": "0.2.14"
|
||||
},
|
||||
"overrides": {
|
||||
"nvd3": {
|
||||
"main": [
|
||||
"build/nv.d3.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
"overrides": {}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
|
||||
Explain WTF is going on here....
|
||||
|
||||
@@ -1,4 +1,213 @@
|
||||
{
|
||||
"2A": {
|
||||
"class": 2,
|
||||
"rating": "A",
|
||||
"cost": 160224,
|
||||
"mass": 2.5,
|
||||
"power": 0.3,
|
||||
"optmass": 90,
|
||||
"maxfuel": 0.9,
|
||||
"fuelmul": 0.012,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2B": {
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 53408,
|
||||
"mass": 4,
|
||||
"power": 0.25,
|
||||
"optmass": 75,
|
||||
"maxfuel": 0.8,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2C": {
|
||||
"class": 2,
|
||||
"rating": "C",
|
||||
"cost": 17803,
|
||||
"mass": 2.5,
|
||||
"power": 0.2,
|
||||
"optmass": 60,
|
||||
"maxfuel": 0.6,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2D": {
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 5934,
|
||||
"mass": 1,
|
||||
"power": 0.18,
|
||||
"optmass": 54,
|
||||
"maxfuel": 0.6,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2E": {
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 1978,
|
||||
"mass": 2.5,
|
||||
"power": 0.16,
|
||||
"optmass": 48,
|
||||
"maxfuel": 0.6,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"3A": {
|
||||
"class": 3,
|
||||
"rating": "A",
|
||||
"cost": 507912,
|
||||
"mass": 5,
|
||||
"power": 0.45,
|
||||
"optmass": 150,
|
||||
"maxfuel": 1.8,
|
||||
"fuelmul": 0.012,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3B": {
|
||||
"class": 3,
|
||||
"rating": "B",
|
||||
"cost": 169304,
|
||||
"mass": 8,
|
||||
"power": 0.38,
|
||||
"optmass": 125,
|
||||
"maxfuel": 1.5,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3C": {
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 56435,
|
||||
"mass": 5,
|
||||
"power": 0.3,
|
||||
"optmass": 100,
|
||||
"maxfuel": 1.2,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3D": {
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 18812,
|
||||
"mass": 2,
|
||||
"power": 0.27,
|
||||
"optmass": 90,
|
||||
"maxfuel": 1.2,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3E": {
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 6271,
|
||||
"mass": 5,
|
||||
"power": 0.24,
|
||||
"optmass": 80,
|
||||
"maxfuel": 1.2,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"4A": {
|
||||
"class": 4,
|
||||
"rating": "A",
|
||||
"cost": 1610080,
|
||||
"mass": 10,
|
||||
"power": 0.45,
|
||||
"optmass": 525,
|
||||
"maxfuel": 3,
|
||||
"fuelmul": 0.012,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4B": {
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 536693,
|
||||
"mass": 16,
|
||||
"power": 0.38,
|
||||
"optmass": 438,
|
||||
"maxfuel": 2.5,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4C": {
|
||||
"class": 4,
|
||||
"rating": "C",
|
||||
"cost": 178898,
|
||||
"mass": 10,
|
||||
"power": 0.3,
|
||||
"optmass": 350,
|
||||
"maxfuel": 2,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4D": {
|
||||
"class": 4,
|
||||
"rating": "D",
|
||||
"cost": 59633,
|
||||
"mass": 4,
|
||||
"power": 0.27,
|
||||
"optmass": 315,
|
||||
"maxfuel": 2,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4E": {
|
||||
"class": 4,
|
||||
"rating": "E",
|
||||
"cost": 19878,
|
||||
"mass": 10,
|
||||
"power": 0.24,
|
||||
"optmass": 280,
|
||||
"maxfuel": 2,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"5B": {
|
||||
"class": 5,
|
||||
"rating": "B",
|
||||
"cost": 1701318,
|
||||
"mass": 32,
|
||||
"power": 0.5,
|
||||
"optmass": 875,
|
||||
"maxfuel": 4.1,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"5C": {
|
||||
"class": 5,
|
||||
"rating": "C",
|
||||
"cost": 567106,
|
||||
"mass": 20,
|
||||
"power": 0.4,
|
||||
"optmass": 700,
|
||||
"maxfuel": 3.3,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"5D": {
|
||||
"class": 5,
|
||||
"rating": "D",
|
||||
"cost": 189036,
|
||||
"mass": 8,
|
||||
"power": 0.36,
|
||||
"optmass": 630,
|
||||
"maxfuel": 3.3,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"5E": {
|
||||
"class": 5,
|
||||
"rating": "E",
|
||||
"cost": 63013,
|
||||
"mass": 20,
|
||||
"power": 0.32,
|
||||
"optmass": 560,
|
||||
"maxfuel": 3.3,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"6A": {
|
||||
"class": 6,
|
||||
"rating": "A",
|
||||
@@ -64,214 +273,5 @@
|
||||
"maxfuel": 5,
|
||||
"fuelmul": 0.012,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"5B": {
|
||||
"class": 5,
|
||||
"rating": "B",
|
||||
"cost": 1701318,
|
||||
"mass": 32,
|
||||
"power": 0.5,
|
||||
"optmass": 875,
|
||||
"maxfuel": 4.1,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"5C": {
|
||||
"class": 5,
|
||||
"rating": "C",
|
||||
"cost": 567106,
|
||||
"mass": 20,
|
||||
"power": 0.4,
|
||||
"optmass": 700,
|
||||
"maxfuel": 3.3,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"5D": {
|
||||
"class": 5,
|
||||
"rating": "D",
|
||||
"cost": 189036,
|
||||
"mass": 8,
|
||||
"power": 0.36,
|
||||
"optmass": 630,
|
||||
"maxfuel": 3.3,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"5E": {
|
||||
"class": 5,
|
||||
"rating": "E",
|
||||
"cost": 63013,
|
||||
"mass": 20,
|
||||
"power": 0.32,
|
||||
"optmass": 560,
|
||||
"maxfuel": 3.3,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2.45
|
||||
},
|
||||
"4A": {
|
||||
"class": 4,
|
||||
"rating": "A",
|
||||
"cost": 1610080,
|
||||
"mass": 10,
|
||||
"power": 0.45,
|
||||
"optmass": 525,
|
||||
"maxfuel": 3,
|
||||
"fuelmul": 0.012,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4B": {
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 536693,
|
||||
"mass": 16,
|
||||
"power": 0.38,
|
||||
"optmass": 438,
|
||||
"maxfuel": 2.5,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4C": {
|
||||
"class": 4,
|
||||
"rating": "C",
|
||||
"cost": 178898,
|
||||
"mass": 10,
|
||||
"power": 0.3,
|
||||
"optmass": 350,
|
||||
"maxfuel": 2,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4D": {
|
||||
"class": 4,
|
||||
"rating": "D",
|
||||
"cost": 59633,
|
||||
"mass": 4,
|
||||
"power": 0.27,
|
||||
"optmass": 315,
|
||||
"maxfuel": 2,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"4E": {
|
||||
"class": 4,
|
||||
"rating": "E",
|
||||
"cost": 19878,
|
||||
"mass": 10,
|
||||
"power": 0.24,
|
||||
"optmass": 280,
|
||||
"maxfuel": 2,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2.3
|
||||
},
|
||||
"3A": {
|
||||
"class": 3,
|
||||
"rating": "A",
|
||||
"cost": 507912,
|
||||
"mass": 5,
|
||||
"power": 0.45,
|
||||
"optmass": 150,
|
||||
"maxfuel": 1.8,
|
||||
"fuelmul": 0.012,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3B": {
|
||||
"class": 3,
|
||||
"rating": "B",
|
||||
"cost": 169304,
|
||||
"mass": 8,
|
||||
"power": 0.38,
|
||||
"optmass": 125,
|
||||
"maxfuel": 1.5,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3C": {
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 56435,
|
||||
"mass": 5,
|
||||
"power": 0.3,
|
||||
"optmass": 100,
|
||||
"maxfuel": 1.2,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3D": {
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 18812,
|
||||
"mass": 2,
|
||||
"power": 0.27,
|
||||
"optmass": 90,
|
||||
"maxfuel": 1.2,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"3E": {
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 6271,
|
||||
"mass": 5,
|
||||
"power": 0.24,
|
||||
"optmass": 80,
|
||||
"maxfuel": 1.2,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2.15
|
||||
},
|
||||
"2A": {
|
||||
"class": 2,
|
||||
"rating": "A",
|
||||
"cost": 160224,
|
||||
"mass": 2.5,
|
||||
"power": 0.3,
|
||||
"optmass": 90,
|
||||
"maxfuel": 0.9,
|
||||
"fuelmul": 0.012,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2B": {
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 53408,
|
||||
"mass": 4,
|
||||
"power": 0.25,
|
||||
"optmass": 75,
|
||||
"maxfuel": 0.8,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2C": {
|
||||
"class": 2,
|
||||
"rating": "C",
|
||||
"cost": 17803,
|
||||
"mass": 2.5,
|
||||
"power": 0.2,
|
||||
"optmass": 60,
|
||||
"maxfuel": 0.6,
|
||||
"fuelmul": 0.008,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2D": {
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 5934,
|
||||
"mass": 1,
|
||||
"power": 0.18,
|
||||
"optmass": 54,
|
||||
"maxfuel": 0.6,
|
||||
"fuelmul": 0.01,
|
||||
"fuelpower": 2
|
||||
},
|
||||
"2E": {
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 1978,
|
||||
"mass": 2.5,
|
||||
"power": 0.16,
|
||||
"optmass": 48,
|
||||
"maxfuel": 0.6,
|
||||
"fuelmul": 0.011,
|
||||
"fuelpower": 2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,9 @@
|
||||
{
|
||||
"6C": {
|
||||
"class": 6,
|
||||
"1C": {
|
||||
"class": 1,
|
||||
"rating": "C",
|
||||
"cost": 341577,
|
||||
"capacity": 64
|
||||
},
|
||||
"5C": {
|
||||
"class": 5,
|
||||
"rating": "C",
|
||||
"cost": 97754,
|
||||
"capacity": 32
|
||||
},
|
||||
"4C": {
|
||||
"class": 4,
|
||||
"rating": "C",
|
||||
"cost": 24734,
|
||||
"capacity": 16
|
||||
},
|
||||
"3C": {
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 7063,
|
||||
"capacity": 8
|
||||
"cost": 1000,
|
||||
"capacity": 2
|
||||
},
|
||||
"2C": {
|
||||
"class": 2,
|
||||
@@ -29,11 +11,28 @@
|
||||
"cost": 3750,
|
||||
"capacity": 4
|
||||
},
|
||||
"1C": {
|
||||
"class": 1,
|
||||
"3C": {
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1000,
|
||||
"capacity": 2
|
||||
"cost": 7063,
|
||||
"capacity": 8
|
||||
},
|
||||
"4C": {
|
||||
"class": 4,
|
||||
"rating": "C",
|
||||
"cost": 24734,
|
||||
"capacity": 16
|
||||
},
|
||||
"5C": {
|
||||
"class": 5,
|
||||
"rating": "C",
|
||||
"cost": 97754,
|
||||
"capacity": 32
|
||||
},
|
||||
"6C": {
|
||||
"class": 6,
|
||||
"rating": "C",
|
||||
"cost": 341577,
|
||||
"capacity": 64
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,202 +1,42 @@
|
||||
{
|
||||
"8A": {
|
||||
"class": 8,
|
||||
"2A": {
|
||||
"class": 2,
|
||||
"rating": "A",
|
||||
"cost": 162586486,
|
||||
"mass": 80,
|
||||
"pGen": 36,
|
||||
"cost": 160224,
|
||||
"mass": 1.3,
|
||||
"pGen": 9.6,
|
||||
"eff": "B"
|
||||
},
|
||||
"8B": {
|
||||
"class": 8,
|
||||
"2B": {
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 54195495,
|
||||
"mass": 128,
|
||||
"pGen": 33,
|
||||
"cost": 53408,
|
||||
"mass": 2,
|
||||
"pGen": 8.8,
|
||||
"eff": "C"
|
||||
},
|
||||
"8C": {
|
||||
"class": 8,
|
||||
"2C": {
|
||||
"class": 2,
|
||||
"rating": "C",
|
||||
"cost": 18065165,
|
||||
"mass": 80,
|
||||
"pGen": 30,
|
||||
"cost": 17803,
|
||||
"mass": 1.3,
|
||||
"pGen": 8,
|
||||
"eff": "C"
|
||||
},
|
||||
"8D": {
|
||||
"class": 8,
|
||||
"2D": {
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 6021722,
|
||||
"mass": 64,
|
||||
"pGen": 27,
|
||||
"cost": 5934,
|
||||
"mass": 1,
|
||||
"pGen": 7.2,
|
||||
"eff": "D"
|
||||
},
|
||||
"8E": {
|
||||
"class": 8,
|
||||
"2E": {
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 2007241,
|
||||
"mass": 160,
|
||||
"pGen": 24,
|
||||
"eff": "F"
|
||||
},
|
||||
"7A": {
|
||||
"class": 7,
|
||||
"rating": "A",
|
||||
"cost": 51289112,
|
||||
"mass": 40,
|
||||
"pGen": 30,
|
||||
"eff": "B"
|
||||
},
|
||||
"7B": {
|
||||
"class": 7,
|
||||
"rating": "B",
|
||||
"cost": 17096371,
|
||||
"mass": 64,
|
||||
"pGen": 27.5,
|
||||
"eff": "C"
|
||||
},
|
||||
"7C": {
|
||||
"class": 7,
|
||||
"rating": "C",
|
||||
"cost": 5698790,
|
||||
"mass": 40,
|
||||
"pGen": 25,
|
||||
"eff": "C"
|
||||
},
|
||||
"7D": {
|
||||
"class": 7,
|
||||
"rating": "D",
|
||||
"cost": 1899597,
|
||||
"mass": 32,
|
||||
"pGen": 22.5,
|
||||
"eff": "D"
|
||||
},
|
||||
"7E": {
|
||||
"class": 7,
|
||||
"rating": "E",
|
||||
"cost": 633199,
|
||||
"mass": 80,
|
||||
"pGen": 20,
|
||||
"eff": "F"
|
||||
},
|
||||
"6A": {
|
||||
"class": 6,
|
||||
"rating": "A",
|
||||
"cost": 16179531,
|
||||
"mass": 20,
|
||||
"pGen": 25.2,
|
||||
"eff": "B"
|
||||
},
|
||||
"6B": {
|
||||
"class": 6,
|
||||
"rating": "B",
|
||||
"cost": 5393177,
|
||||
"mass": 32,
|
||||
"pGen": 23.1,
|
||||
"eff": "C"
|
||||
},
|
||||
"6C": {
|
||||
"class": 6,
|
||||
"rating": "C",
|
||||
"cost": 1797726,
|
||||
"mass": 20,
|
||||
"pGen": 21,
|
||||
"eff": "C"
|
||||
},
|
||||
"6D": {
|
||||
"class": 6,
|
||||
"rating": "D",
|
||||
"cost": 599242,
|
||||
"mass": 16,
|
||||
"pGen": 18.9,
|
||||
"eff": "D"
|
||||
},
|
||||
"6E": {
|
||||
"class": 6,
|
||||
"rating": "E",
|
||||
"cost": 199747,
|
||||
"mass": 40,
|
||||
"pGen": 16.8,
|
||||
"eff": "F"
|
||||
},
|
||||
"5A": {
|
||||
"class": 5,
|
||||
"rating": "A",
|
||||
"cost": 5103953,
|
||||
"mass": 10,
|
||||
"pGen": 20.4,
|
||||
"eff": "B"
|
||||
},
|
||||
"5B": {
|
||||
"class": 5,
|
||||
"rating": "B",
|
||||
"cost": 1701318,
|
||||
"mass": 16,
|
||||
"pGen": 18.7,
|
||||
"eff": "C"
|
||||
},
|
||||
"5C": {
|
||||
"class": 5,
|
||||
"rating": "C",
|
||||
"cost": 567106,
|
||||
"mass": 10,
|
||||
"pGen": 17,
|
||||
"eff": "C"
|
||||
},
|
||||
"5D": {
|
||||
"class": 5,
|
||||
"rating": "D",
|
||||
"cost": 189035,
|
||||
"mass": 8,
|
||||
"pGen": 15.3,
|
||||
"eff": "D"
|
||||
},
|
||||
"5E": {
|
||||
"class": 5,
|
||||
"rating": "E",
|
||||
"cost": 63012,
|
||||
"mass": 20,
|
||||
"pGen": 13.6,
|
||||
"eff": "F"
|
||||
},
|
||||
"4A": {
|
||||
"class": 4,
|
||||
"rating": "A",
|
||||
"cost": 1610080,
|
||||
"mass": 5,
|
||||
"pGen": 15.6,
|
||||
"eff": "B"
|
||||
},
|
||||
"4B": {
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 536693,
|
||||
"mass": 8,
|
||||
"pGen": 14.3,
|
||||
"eff": "C"
|
||||
},
|
||||
"4C": {
|
||||
"class": 4,
|
||||
"rating": "C",
|
||||
"cost": 178898,
|
||||
"mass": 5,
|
||||
"pGen": 13,
|
||||
"eff": "C"
|
||||
},
|
||||
"4D": {
|
||||
"class": 4,
|
||||
"rating": "D",
|
||||
"cost": 59633,
|
||||
"mass": 4,
|
||||
"pGen": 11.7,
|
||||
"eff": "D"
|
||||
},
|
||||
"4E": {
|
||||
"class": 4,
|
||||
"rating": "E",
|
||||
"cost": 19878,
|
||||
"mass": 10,
|
||||
"pGen": 10.4,
|
||||
"cost": 1978,
|
||||
"mass": 2.5,
|
||||
"pGen": 6.4,
|
||||
"eff": "F"
|
||||
},
|
||||
"3A": {
|
||||
@@ -239,44 +79,204 @@
|
||||
"pGen": 8,
|
||||
"eff": "F"
|
||||
},
|
||||
"2A": {
|
||||
"class": 2,
|
||||
"4A": {
|
||||
"class": 4,
|
||||
"rating": "A",
|
||||
"cost": 160224,
|
||||
"mass": 1.3,
|
||||
"pGen": 9.6,
|
||||
"cost": 1610080,
|
||||
"mass": 5,
|
||||
"pGen": 15.6,
|
||||
"eff": "B"
|
||||
},
|
||||
"2B": {
|
||||
"class": 2,
|
||||
"4B": {
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 53408,
|
||||
"mass": 2,
|
||||
"pGen": 8.8,
|
||||
"cost": 536693,
|
||||
"mass": 8,
|
||||
"pGen": 14.3,
|
||||
"eff": "C"
|
||||
},
|
||||
"2C": {
|
||||
"class": 2,
|
||||
"4C": {
|
||||
"class": 4,
|
||||
"rating": "C",
|
||||
"cost": 17803,
|
||||
"mass": 1.3,
|
||||
"pGen": 8,
|
||||
"cost": 178898,
|
||||
"mass": 5,
|
||||
"pGen": 13,
|
||||
"eff": "C"
|
||||
},
|
||||
"2D": {
|
||||
"class": 2,
|
||||
"4D": {
|
||||
"class": 4,
|
||||
"rating": "D",
|
||||
"cost": 5934,
|
||||
"mass": 1,
|
||||
"pGen": 7.2,
|
||||
"cost": 59633,
|
||||
"mass": 4,
|
||||
"pGen": 11.7,
|
||||
"eff": "D"
|
||||
},
|
||||
"2E": {
|
||||
"class": 2,
|
||||
"4E": {
|
||||
"class": 4,
|
||||
"rating": "E",
|
||||
"cost": 1978,
|
||||
"mass": 2.5,
|
||||
"pGen": 6.4,
|
||||
"cost": 19878,
|
||||
"mass": 10,
|
||||
"pGen": 10.4,
|
||||
"eff": "F"
|
||||
},
|
||||
"5A": {
|
||||
"class": 5,
|
||||
"rating": "A",
|
||||
"cost": 5103953,
|
||||
"mass": 10,
|
||||
"pGen": 20.4,
|
||||
"eff": "B"
|
||||
},
|
||||
"5B": {
|
||||
"class": 5,
|
||||
"rating": "B",
|
||||
"cost": 1701318,
|
||||
"mass": 16,
|
||||
"pGen": 18.7,
|
||||
"eff": "C"
|
||||
},
|
||||
"5C": {
|
||||
"class": 5,
|
||||
"rating": "C",
|
||||
"cost": 567106,
|
||||
"mass": 10,
|
||||
"pGen": 17,
|
||||
"eff": "C"
|
||||
},
|
||||
"5D": {
|
||||
"class": 5,
|
||||
"rating": "D",
|
||||
"cost": 189035,
|
||||
"mass": 8,
|
||||
"pGen": 15.3,
|
||||
"eff": "D"
|
||||
},
|
||||
"5E": {
|
||||
"class": 5,
|
||||
"rating": "E",
|
||||
"cost": 63012,
|
||||
"mass": 20,
|
||||
"pGen": 13.6,
|
||||
"eff": "F"
|
||||
},
|
||||
"6A": {
|
||||
"class": 6,
|
||||
"rating": "A",
|
||||
"cost": 16179531,
|
||||
"mass": 20,
|
||||
"pGen": 25.2,
|
||||
"eff": "B"
|
||||
},
|
||||
"6B": {
|
||||
"class": 6,
|
||||
"rating": "B",
|
||||
"cost": 5393177,
|
||||
"mass": 32,
|
||||
"pGen": 23.1,
|
||||
"eff": "C"
|
||||
},
|
||||
"6C": {
|
||||
"class": 6,
|
||||
"rating": "C",
|
||||
"cost": 1797726,
|
||||
"mass": 20,
|
||||
"pGen": 21,
|
||||
"eff": "C"
|
||||
},
|
||||
"6D": {
|
||||
"class": 6,
|
||||
"rating": "D",
|
||||
"cost": 599242,
|
||||
"mass": 16,
|
||||
"pGen": 18.9,
|
||||
"eff": "D"
|
||||
},
|
||||
"6E": {
|
||||
"class": 6,
|
||||
"rating": "E",
|
||||
"cost": 199747,
|
||||
"mass": 40,
|
||||
"pGen": 16.8,
|
||||
"eff": "F"
|
||||
},
|
||||
"7A": {
|
||||
"class": 7,
|
||||
"rating": "A",
|
||||
"cost": 51289112,
|
||||
"mass": 40,
|
||||
"pGen": 30,
|
||||
"eff": "B"
|
||||
},
|
||||
"7B": {
|
||||
"class": 7,
|
||||
"rating": "B",
|
||||
"cost": 17096371,
|
||||
"mass": 64,
|
||||
"pGen": 27.5,
|
||||
"eff": "C"
|
||||
},
|
||||
"7C": {
|
||||
"class": 7,
|
||||
"rating": "C",
|
||||
"cost": 5698790,
|
||||
"mass": 40,
|
||||
"pGen": 25,
|
||||
"eff": "C"
|
||||
},
|
||||
"7D": {
|
||||
"class": 7,
|
||||
"rating": "D",
|
||||
"cost": 1899597,
|
||||
"mass": 32,
|
||||
"pGen": 22.5,
|
||||
"eff": "D"
|
||||
},
|
||||
"7E": {
|
||||
"class": 7,
|
||||
"rating": "E",
|
||||
"cost": 633199,
|
||||
"mass": 80,
|
||||
"pGen": 20,
|
||||
"eff": "F"
|
||||
},
|
||||
"8A": {
|
||||
"class": 8,
|
||||
"rating": "A",
|
||||
"cost": 162586486,
|
||||
"mass": 80,
|
||||
"pGen": 36,
|
||||
"eff": "B"
|
||||
},
|
||||
"8B": {
|
||||
"class": 8,
|
||||
"rating": "B",
|
||||
"cost": 54195495,
|
||||
"mass": 128,
|
||||
"pGen": 33,
|
||||
"eff": "C"
|
||||
},
|
||||
"8C": {
|
||||
"class": 8,
|
||||
"rating": "C",
|
||||
"cost": 18065165,
|
||||
"mass": 80,
|
||||
"pGen": 30,
|
||||
"eff": "C"
|
||||
},
|
||||
"8D": {
|
||||
"class": 8,
|
||||
"rating": "D",
|
||||
"cost": 6021722,
|
||||
"mass": 64,
|
||||
"pGen": 27,
|
||||
"eff": "D"
|
||||
},
|
||||
"8E": {
|
||||
"class": 8,
|
||||
"rating": "E",
|
||||
"cost": 2007241,
|
||||
"mass": 160,
|
||||
"pGen": 24,
|
||||
"eff": "F"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,146 +1,139 @@
|
||||
{
|
||||
"10": {
|
||||
"group": "lt",
|
||||
"name": "Beam Laser",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 19399600,
|
||||
"mass": 8,
|
||||
"power": 1.68,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 4
|
||||
},
|
||||
"0o": {
|
||||
"group": "st",
|
||||
"name": "Beam Laser",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 37430,
|
||||
"mass": 2,
|
||||
"power": 0.69,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 3
|
||||
},
|
||||
"0p": {
|
||||
"group": "st",
|
||||
"name": "Beam Laser",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 74650,
|
||||
"mass": 2,
|
||||
"power": 0.67,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 3
|
||||
},
|
||||
"0q": {
|
||||
"group": "st",
|
||||
"name": "Beam Laser",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 500000,
|
||||
"mass": 2,
|
||||
"power": 0.63,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 2
|
||||
},
|
||||
"0r": {
|
||||
"group": "mt",
|
||||
"name": "Beam Laser",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 299520,
|
||||
"mass": 4,
|
||||
"power": 1.12,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 4
|
||||
},
|
||||
"0s": {
|
||||
"group": "mt",
|
||||
"name": "Beam Laser",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 500600,
|
||||
"mass": 4,
|
||||
"power": 1.1,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 4
|
||||
},
|
||||
"0t": {
|
||||
"group": "mt",
|
||||
"name": "Beam Laser",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 2099900,
|
||||
"mass": 4,
|
||||
"power": 1.03,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 3
|
||||
},
|
||||
"0u": {
|
||||
"group": "lt",
|
||||
"name": "Beam Laser",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1177600,
|
||||
"mass": 8,
|
||||
"power": 1.8,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 5,
|
||||
"thermload": 5
|
||||
},
|
||||
"0v": {
|
||||
"group": "lt",
|
||||
"name": "Beam Laser",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 2396160,
|
||||
"mass": 8,
|
||||
"power": 1.78,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 6
|
||||
"Beam Lasers" : {
|
||||
"10": {
|
||||
"grp": "bl",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 37430,
|
||||
"mass": 2,
|
||||
"power": 0.69,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 3
|
||||
},
|
||||
"0p": {
|
||||
"grp": "bl",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 74650,
|
||||
"mass": 2,
|
||||
"power": 0.67,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 3
|
||||
},
|
||||
"0q": {
|
||||
"grp": "bl",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 500000,
|
||||
"mass": 2,
|
||||
"power": 0.63,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 2
|
||||
},
|
||||
"0r": {
|
||||
"grp": "bl",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 299520,
|
||||
"mass": 4,
|
||||
"power": 1.12,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 4
|
||||
},
|
||||
"0s": {
|
||||
"grp": "bl",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 500600,
|
||||
"mass": 4,
|
||||
"power": 1.1,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 4
|
||||
},
|
||||
"0t": {
|
||||
"grp": "bl",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 2099900,
|
||||
"mass": 4,
|
||||
"power": 1.03,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 3,
|
||||
"thermload": 3
|
||||
},
|
||||
"0u": {
|
||||
"grp": "bl",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1177600,
|
||||
"mass": 8,
|
||||
"power": 1.8,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 5,
|
||||
"thermload": 5
|
||||
},
|
||||
"0v": {
|
||||
"grp": "bl",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 2396160,
|
||||
"mass": 8,
|
||||
"power": 1.78,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 6
|
||||
},
|
||||
"0o": {
|
||||
"grp": "bl",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 19399600,
|
||||
"mass": 8,
|
||||
"power": 1.68,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": null,
|
||||
"dps": 4,
|
||||
"thermload": 4
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,98 +1,94 @@
|
||||
{
|
||||
"11": {
|
||||
"group": "st",
|
||||
"name": "Burst Laser",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 4400,
|
||||
"mass": 2,
|
||||
"power": 0.65,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 1.6,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"12": {
|
||||
"group": "st",
|
||||
"name": "Burst Laser",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 8600,
|
||||
"mass": 2,
|
||||
"power": 0.64,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 1.7,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"13": {
|
||||
"group": "st",
|
||||
"name": "Burst Laser",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 52800,
|
||||
"mass": 2,
|
||||
"power": 0.6,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 1,
|
||||
"armourpen": "B",
|
||||
"rof": 1.3,
|
||||
"dps": 2,
|
||||
"thermload": 1
|
||||
},
|
||||
"14": {
|
||||
"group": "lt",
|
||||
"name": "Burst Laser",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 140400,
|
||||
"mass": 8,
|
||||
"power": 1.66,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "B",
|
||||
"rof": 1,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"15": {
|
||||
"group": "lt",
|
||||
"name": "Burst Laser",
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 281600,
|
||||
"mass": 8,
|
||||
"power": 1.65,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 1.2,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"16": {
|
||||
"group": "lt",
|
||||
"name": "Burst Laser",
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 800400,
|
||||
"mass": 8,
|
||||
"power": 1.57,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 0.9,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
"Burst Lasers": {
|
||||
"11": {
|
||||
"grp": "ul",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 4400,
|
||||
"mass": 2,
|
||||
"power": 0.65,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 1.6,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"12": {
|
||||
"grp": "ul",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 8600,
|
||||
"mass": 2,
|
||||
"power": 0.64,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 1.7,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"13": {
|
||||
"grp": "ul",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 52800,
|
||||
"mass": 2,
|
||||
"power": 0.6,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 1,
|
||||
"armourpen": "B",
|
||||
"rof": 1.3,
|
||||
"dps": 2,
|
||||
"thermload": 1
|
||||
},
|
||||
"14": {
|
||||
"grp": "ul",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 140400,
|
||||
"mass": 8,
|
||||
"power": 1.66,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "B",
|
||||
"rof": 1,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"15": {
|
||||
"grp": "ul",
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 281600,
|
||||
"mass": 8,
|
||||
"power": 1.65,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 1.2,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"16": {
|
||||
"grp": "ul",
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 800400,
|
||||
"mass": 8,
|
||||
"power": 1.57,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 0.9,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,200 +1,202 @@
|
||||
{
|
||||
"1h": {
|
||||
"group": "sk",
|
||||
"name": "Cannon",
|
||||
"class": 1,
|
||||
"rating": "D",
|
||||
"cost": 21100,
|
||||
"mass": 2,
|
||||
"power": 0.34,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1i": {
|
||||
"group": "sk",
|
||||
"name": "Cannon",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 42200,
|
||||
"mass": 2,
|
||||
"power": 0.38,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1j": {
|
||||
"group": "sk",
|
||||
"name": "Cannon",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 506400,
|
||||
"mass": 2,
|
||||
"power": 0.32,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1k": {
|
||||
"group": "mk",
|
||||
"name": "Cannon",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 168430,
|
||||
"mass": 4,
|
||||
"power": 0.49,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1l": {
|
||||
"group": "mk",
|
||||
"name": "Cannon",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 337600,
|
||||
"mass": 4,
|
||||
"power": 0.54,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1m": {
|
||||
"group": "mk",
|
||||
"name": "Cannon",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 4051200,
|
||||
"mass": 4,
|
||||
"power": 0.45,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1n": {
|
||||
"group": "lk",
|
||||
"name": "Cannon",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 675200,
|
||||
"mass": 8,
|
||||
"power": 0.67,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 4,
|
||||
"thermload": 2,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1o": {
|
||||
"group": "lk",
|
||||
"name": "Cannon",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1350400,
|
||||
"mass": 8,
|
||||
"power": 0.75,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1p": {
|
||||
"group": "lk",
|
||||
"name": "Cannon",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 16204800,
|
||||
"mass": 8,
|
||||
"power": 0.64,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1q": {
|
||||
"group": "hk",
|
||||
"name": "Cannon",
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 2700800,
|
||||
"mass": 16,
|
||||
"power": 0.92,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 9,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 5,
|
||||
"thermload": 2,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1r": {
|
||||
"group": "hk",
|
||||
"name": "Cannon",
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 5401600,
|
||||
"mass": 16,
|
||||
"power": 1.03,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 8,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 4,
|
||||
"thermload": 2,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
"Cannons": {
|
||||
"1h": {
|
||||
"grp": "c",
|
||||
"class": 1,
|
||||
"rating": "D",
|
||||
"cost": 21100,
|
||||
"mass": 2,
|
||||
"power": 0.34,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1i": {
|
||||
"grp": "c",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 42200,
|
||||
"mass": 2,
|
||||
"power": 0.38,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1j": {
|
||||
"grp": "c",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 506400,
|
||||
"mass": 2,
|
||||
"power": 0.32,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1k": {
|
||||
"grp": "c",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 168430,
|
||||
"mass": 4,
|
||||
"power": 0.49,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1l": {
|
||||
"grp": "c",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 337600,
|
||||
"mass": 4,
|
||||
"power": 0.54,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1m": {
|
||||
"grp": "c",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 4051200,
|
||||
"mass": 4,
|
||||
"power": 0.45,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 5,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1n": {
|
||||
"grp": "c",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 675200,
|
||||
"mass": 8,
|
||||
"power": 0.67,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 4,
|
||||
"thermload": 2,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1o": {
|
||||
"grp": "c",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1350400,
|
||||
"mass": 8,
|
||||
"power": 0.75,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1p": {
|
||||
"grp": "c",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 16204800,
|
||||
"mass": 8,
|
||||
"power": 0.64,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1q": {
|
||||
"grp": "c",
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 2700800,
|
||||
"mass": 16,
|
||||
"power": 0.92,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 9,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 5,
|
||||
"thermload": 2,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"1r": {
|
||||
"grp": "c",
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 5401600,
|
||||
"mass": 16,
|
||||
"power": 1.03,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 8,
|
||||
"armourpen": "A",
|
||||
"rof": 0.4,
|
||||
"dps": 4,
|
||||
"thermload": 2,
|
||||
"grp": "c",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,57 +1,54 @@
|
||||
{
|
||||
"09": {
|
||||
"group": "us",
|
||||
"name": "Cargo Scanner",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 1097095,
|
||||
"mass": 1.3,
|
||||
"power": 3.2,
|
||||
"range": 4,
|
||||
"time": 10
|
||||
},
|
||||
"0a": {
|
||||
"group": "us",
|
||||
"name": "Cargo Scanner",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 365698,
|
||||
"mass": 1.3,
|
||||
"power": 1.6,
|
||||
"range": 3.5,
|
||||
"time": 10
|
||||
},
|
||||
"0b": {
|
||||
"group": "us",
|
||||
"name": "Cargo Scanner",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 121899,
|
||||
"mass": 1.3,
|
||||
"power": 0.8,
|
||||
"range": 3,
|
||||
"time": 10
|
||||
},
|
||||
"0c": {
|
||||
"group": "us",
|
||||
"name": "Cargo Scanner",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 40633,
|
||||
"mass": 1.3,
|
||||
"power": 0.4,
|
||||
"range": 2.5,
|
||||
"time": 10
|
||||
},
|
||||
"0d": {
|
||||
"group": "us",
|
||||
"name": "Cargo Scanner",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 13544,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 2,
|
||||
"time": 10
|
||||
"Cargo Scanners": {
|
||||
"09": {
|
||||
"grp": "cs",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 1097095,
|
||||
"mass": 1.3,
|
||||
"power": 3.2,
|
||||
"range": 4,
|
||||
"time": 10
|
||||
},
|
||||
"0a": {
|
||||
"grp": "cs",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 365698,
|
||||
"mass": 1.3,
|
||||
"power": 1.6,
|
||||
"range": 3.5,
|
||||
"time": 10
|
||||
},
|
||||
"0b": {
|
||||
"grp": "cs",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 121899,
|
||||
"mass": 1.3,
|
||||
"power": 0.8,
|
||||
"range": 3,
|
||||
"time": 10
|
||||
},
|
||||
"0c": {
|
||||
"grp": "cs",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 40633,
|
||||
"mass": 1.3,
|
||||
"power": 0.4,
|
||||
"range": 2.5,
|
||||
"time": 10
|
||||
},
|
||||
"0d": {
|
||||
"grp": "cs",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 13544,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 2,
|
||||
"time": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"00": {
|
||||
"group": "um",
|
||||
"name": "Chaff Launcher",
|
||||
"class": 0,
|
||||
"rating": "I",
|
||||
"cost": 8500,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"armourpen": "F",
|
||||
"thermload": 2,
|
||||
"clip": 1,
|
||||
"ammo": 10
|
||||
}
|
||||
}
|
||||
55
data/components/hardpoints/countermeasures.json
Normal file
55
data/components/hardpoints/countermeasures.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Countermeasures": {
|
||||
"00": {
|
||||
"name": "Chaff Launcher",
|
||||
"class": 0,
|
||||
"rating": "I",
|
||||
"cost": 8500,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"armourpen": "F",
|
||||
"thermload": 2,
|
||||
"clip": 1,
|
||||
"ammo": 10
|
||||
},
|
||||
"01": {
|
||||
"name": "Electronic Countermeasure",
|
||||
"class": 0,
|
||||
"rating": "F",
|
||||
"cost": 12500,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 3,
|
||||
"chargeup": 4,
|
||||
"activepower": 4,
|
||||
"cooldown": 10
|
||||
},
|
||||
"02": {
|
||||
"name": "Heat Sink Launcher",
|
||||
"class": 0,
|
||||
"rating": "I",
|
||||
"cost": 3500,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"armourpen": "F",
|
||||
"thermload": 0,
|
||||
"clip": 1,
|
||||
"ammo": 3
|
||||
},
|
||||
"03": {
|
||||
"name": "Point Defence",
|
||||
"class": 0,
|
||||
"rating": "I",
|
||||
"cost": 18546,
|
||||
"mass": 0.5,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"armourpen": "F",
|
||||
"thermload": 1,
|
||||
"clip": 50,
|
||||
"ammo": 10000
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"01": {
|
||||
"group": "um",
|
||||
"name": "Electronic Countermeasure",
|
||||
"class": 0,
|
||||
"rating": "F",
|
||||
"cost": 12500,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 3,
|
||||
"chargeup": 4,
|
||||
"activepower": 4,
|
||||
"cooldown": 10
|
||||
}
|
||||
}
|
||||
@@ -1,128 +1,130 @@
|
||||
{
|
||||
"20": {
|
||||
"group": "lk",
|
||||
"name": "Fragment Cannon",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1167360,
|
||||
"mass": 8,
|
||||
"power": 1.02,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 4.5,
|
||||
"dps": 10,
|
||||
"thermload": 1,
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"21": {
|
||||
"group": "lk",
|
||||
"name": "Fragment Cannon",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1751040,
|
||||
"mass": 8,
|
||||
"power": 1.55,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 4.8,
|
||||
"dps": 10,
|
||||
"thermload": 1,
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"22": {
|
||||
"group": "lk",
|
||||
"name": "Fragment Cannon",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 5836800,
|
||||
"mass": 8,
|
||||
"power": 1.29,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 3.3,
|
||||
"dps": 9,
|
||||
"thermload": 1,
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1s": {
|
||||
"group": "sk",
|
||||
"name": "Fragment Cannon",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 36000,
|
||||
"mass": 2,
|
||||
"power": 0.45,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 5.5,
|
||||
"dps": 8,
|
||||
"thermload": 1,
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1t": {
|
||||
"group": "sk",
|
||||
"name": "Fragment Cannon",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 54720,
|
||||
"mass": 2,
|
||||
"power": 0.59,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 5.8,
|
||||
"dps": 7,
|
||||
"thermload": 1,
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1u": {
|
||||
"group": "sk",
|
||||
"name": "Fragment Cannon",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 182400,
|
||||
"mass": 2,
|
||||
"power": 0.42,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 1,
|
||||
"armourpen": "A",
|
||||
"rof": 4,
|
||||
"dps": 6,
|
||||
"thermload": 1,
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1v": {
|
||||
"group": "mk",
|
||||
"name": "Fragment Cannon",
|
||||
"class": 2,
|
||||
"rating": "A",
|
||||
"cost": 291840,
|
||||
"mass": 4,
|
||||
"power": 0.74,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 5,
|
||||
"dps": 9,
|
||||
"thermload": 1,
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
"Fragment Cannons": {
|
||||
"20": {
|
||||
"grp": "fc",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 36000,
|
||||
"mass": 2,
|
||||
"power": 0.45,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 5.5,
|
||||
"dps": 8,
|
||||
"thermload": 1,
|
||||
"grp": "fc",
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"21": {
|
||||
"grp": "fc",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 54720,
|
||||
"mass": 2,
|
||||
"power": 0.59,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 5.8,
|
||||
"dps": 7,
|
||||
"thermload": 1,
|
||||
"grp": "fc",
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"22": {
|
||||
"grp": "fc",
|
||||
"class": 1,
|
||||
"rating": "E",
|
||||
"cost": 182400,
|
||||
"mass": 2,
|
||||
"power": 0.42,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 1,
|
||||
"armourpen": "A",
|
||||
"rof": 4,
|
||||
"dps": 6,
|
||||
"thermload": 1,
|
||||
"grp": "fc",
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1s": {
|
||||
"grp": "fc",
|
||||
"class": 2,
|
||||
"rating": "A",
|
||||
"cost": 291840,
|
||||
"mass": 4,
|
||||
"power": 0.74,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 5,
|
||||
"dps": 9,
|
||||
"thermload": 1,
|
||||
"grp": "fc",
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1t": {
|
||||
"grp": "fc",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1167360,
|
||||
"mass": 8,
|
||||
"power": 1.02,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 4.5,
|
||||
"dps": 10,
|
||||
"thermload": 1,
|
||||
"grp": "fc",
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1u": {
|
||||
"grp": "fc",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 1751040,
|
||||
"mass": 8,
|
||||
"power": 1.55,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 4.8,
|
||||
"dps": 10,
|
||||
"thermload": 1,
|
||||
"grp": "fc",
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
},
|
||||
"1v": {
|
||||
"grp": "fc",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 5836800,
|
||||
"mass": 8,
|
||||
"power": 1.29,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 3.3,
|
||||
"dps": 9,
|
||||
"thermload": 1,
|
||||
"grp": "fc",
|
||||
"clip": 3,
|
||||
"ammo": 30
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,57 +1,54 @@
|
||||
{
|
||||
"0e": {
|
||||
"group": "us",
|
||||
"name": "Frame Shift Wake Scanner",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 1097095,
|
||||
"mass": 1.3,
|
||||
"power": 3.2,
|
||||
"range": 4,
|
||||
"time": 10
|
||||
},
|
||||
"0f": {
|
||||
"group": "us",
|
||||
"name": "Frame Shift Wake Scanner",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 365698,
|
||||
"mass": 1.3,
|
||||
"power": 1.6,
|
||||
"range": 3.5,
|
||||
"time": 10
|
||||
},
|
||||
"0g": {
|
||||
"group": "us",
|
||||
"name": "Frame Shift Wake Scanner",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 121899,
|
||||
"mass": 1.3,
|
||||
"power": 0.8,
|
||||
"range": 3,
|
||||
"time": 10
|
||||
},
|
||||
"0h": {
|
||||
"group": "us",
|
||||
"name": "Frame Shift Wake Scanner",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 40633,
|
||||
"mass": 1.3,
|
||||
"power": 0.4,
|
||||
"range": 2.5,
|
||||
"time": 10
|
||||
},
|
||||
"0i": {
|
||||
"group": "us",
|
||||
"name": "Frame Shift Wake Scanner",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 13544,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 2,
|
||||
"time": 10
|
||||
"Frame Shift Wake Scanners": {
|
||||
"0e": {
|
||||
"grp": "fs",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 1097095,
|
||||
"mass": 1.3,
|
||||
"power": 3.2,
|
||||
"range": 4,
|
||||
"time": 10
|
||||
},
|
||||
"0f": {
|
||||
"grp": "fs",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 365698,
|
||||
"mass": 1.3,
|
||||
"power": 1.6,
|
||||
"range": 3.5,
|
||||
"time": 10
|
||||
},
|
||||
"0g": {
|
||||
"grp": "fs",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 121899,
|
||||
"mass": 1.3,
|
||||
"power": 0.8,
|
||||
"range": 3,
|
||||
"time": 10
|
||||
},
|
||||
"0h": {
|
||||
"grp": "fs",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 40633,
|
||||
"mass": 1.3,
|
||||
"power": 0.4,
|
||||
"range": 2.5,
|
||||
"time": 10
|
||||
},
|
||||
"0i": {
|
||||
"grp": "fs",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 13544,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 2,
|
||||
"time": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"02": {
|
||||
"group": "um",
|
||||
"name": "Heat Sink Launcher",
|
||||
"class": 0,
|
||||
"rating": "I",
|
||||
"cost": 3500,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"armourpen": "F",
|
||||
"thermload": 0,
|
||||
"clip": 1,
|
||||
"ammo": 3
|
||||
}
|
||||
}
|
||||
@@ -1,57 +1,54 @@
|
||||
{
|
||||
"0j": {
|
||||
"group": "us",
|
||||
"name": "Kill Warrant Scanner",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 1097095,
|
||||
"mass": 1.3,
|
||||
"power": 3.2,
|
||||
"range": 4,
|
||||
"time": 10
|
||||
},
|
||||
"0k": {
|
||||
"group": "us",
|
||||
"name": "Kill Warrant Scanner",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 365698,
|
||||
"mass": 1.3,
|
||||
"power": 1.6,
|
||||
"range": 3.5,
|
||||
"time": 10
|
||||
},
|
||||
"0l": {
|
||||
"group": "us",
|
||||
"name": "Kill Warrant Scanner",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 121899,
|
||||
"mass": 1.3,
|
||||
"power": 0.8,
|
||||
"range": 3,
|
||||
"time": 10
|
||||
},
|
||||
"0m": {
|
||||
"group": "us",
|
||||
"name": "Kill Warrant Scanner",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 40633,
|
||||
"mass": 1.3,
|
||||
"power": 0.4,
|
||||
"range": 2.5,
|
||||
"time": 10
|
||||
},
|
||||
"0n": {
|
||||
"group": "us",
|
||||
"name": "Kill Warrant Scanner",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 13544,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 2,
|
||||
"time": 10
|
||||
"Kill Warrant Scanners": {
|
||||
"0j": {
|
||||
"grp": "kw",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 1097095,
|
||||
"mass": 1.3,
|
||||
"power": 3.2,
|
||||
"range": 4,
|
||||
"time": 10
|
||||
},
|
||||
"0k": {
|
||||
"grp": "kw",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 365698,
|
||||
"mass": 1.3,
|
||||
"power": 1.6,
|
||||
"range": 3.5,
|
||||
"time": 10
|
||||
},
|
||||
"0l": {
|
||||
"grp": "kw",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 121899,
|
||||
"mass": 1.3,
|
||||
"power": 0.8,
|
||||
"range": 3,
|
||||
"time": 10
|
||||
},
|
||||
"0m": {
|
||||
"grp": "kw",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 40633,
|
||||
"mass": 1.3,
|
||||
"power": 0.4,
|
||||
"range": 2.5,
|
||||
"time": 10
|
||||
},
|
||||
"0n": {
|
||||
"grp": "kw",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 13544,
|
||||
"mass": 1.3,
|
||||
"power": 0.2,
|
||||
"range": 2,
|
||||
"time": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +1,32 @@
|
||||
{
|
||||
"2j": {
|
||||
"group": "so",
|
||||
"name": "Mine Launcher",
|
||||
"class": 1,
|
||||
"rating": "I",
|
||||
"cost": 24260,
|
||||
"mass": 2,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"armourpen": "C",
|
||||
"thermload": 2,
|
||||
"clip": 1,
|
||||
"ammo": 24
|
||||
},
|
||||
"2k": {
|
||||
"group": "mo",
|
||||
"name": "Mine Launcher",
|
||||
"class": 2,
|
||||
"rating": "I",
|
||||
"cost": 294080,
|
||||
"mass": 4,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"armourpen": "C",
|
||||
"thermload": 3,
|
||||
"clip": 3,
|
||||
"ammo": 24
|
||||
"Mine Launchers": {
|
||||
"2j": {
|
||||
"grp": "nl",
|
||||
"class": 1,
|
||||
"rating": "I",
|
||||
"cost": 24260,
|
||||
"mass": 2,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"armourpen": "C",
|
||||
"thermload": 2,
|
||||
"clip": 1,
|
||||
"ammo": 24
|
||||
},
|
||||
"2k": {
|
||||
"grp": "nl",
|
||||
"class": 2,
|
||||
"rating": "I",
|
||||
"cost": 294080,
|
||||
"mass": 4,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"armourpen": "C",
|
||||
"thermload": 3,
|
||||
"clip": 3,
|
||||
"ammo": 24
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +1,32 @@
|
||||
{
|
||||
"2l": {
|
||||
"group": "so",
|
||||
"name": "Mining Laser",
|
||||
"class": 1,
|
||||
"rating": "D",
|
||||
"cost": 6800,
|
||||
"mass": 2,
|
||||
"power": 0.5,
|
||||
"mode": "F",
|
||||
"armourpen": "D",
|
||||
"thermload": 3,
|
||||
"clip": 1,
|
||||
"ammo": 1
|
||||
},
|
||||
"2m": {
|
||||
"group": "mo",
|
||||
"name": "Mining Laser",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 22576,
|
||||
"mass": 2,
|
||||
"power": 0.75,
|
||||
"mode": "F",
|
||||
"armourpen": "D",
|
||||
"thermload": 5,
|
||||
"clip": 1,
|
||||
"ammo": 1
|
||||
"Mining Lasers": {
|
||||
"2l": {
|
||||
"grp": "ml",
|
||||
"class": 1,
|
||||
"rating": "D",
|
||||
"cost": 6800,
|
||||
"mass": 2,
|
||||
"power": 0.5,
|
||||
"mode": "F",
|
||||
"armourpen": "D",
|
||||
"thermload": 3,
|
||||
"grp": "ml",
|
||||
"clip": 1,
|
||||
"ammo": 1
|
||||
},
|
||||
"2m": {
|
||||
"grp": "ml",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 22576,
|
||||
"mass": 2,
|
||||
"power": 0.75,
|
||||
"mode": "F",
|
||||
"armourpen": "D",
|
||||
"thermload": 5,
|
||||
"grp": "ml",
|
||||
"clip": 1,
|
||||
"ammo": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,78 +1,80 @@
|
||||
{
|
||||
"2d": {
|
||||
"group": "so",
|
||||
"name": "Missile Rack",
|
||||
"class": 1,
|
||||
"rating": "B",
|
||||
"cost": 32175,
|
||||
"mass": 2,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 7,
|
||||
"armourpen": "F",
|
||||
"rof": 2.5,
|
||||
"dps": 8,
|
||||
"thermload": 3,
|
||||
"clip": 8,
|
||||
"ammo": 16,
|
||||
"missile": "D"
|
||||
},
|
||||
"2e": {
|
||||
"group": "so",
|
||||
"name": "Missile Rack",
|
||||
"class": 1,
|
||||
"rating": "B",
|
||||
"cost": 72600,
|
||||
"mass": 2,
|
||||
"power": 0.6,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 6,
|
||||
"armourpen": "F",
|
||||
"rof": 0.3,
|
||||
"dps": 3,
|
||||
"thermload": 3,
|
||||
"clip": 6,
|
||||
"ammo": 6,
|
||||
"missile": "S"
|
||||
},
|
||||
"2f": {
|
||||
"group": "mo",
|
||||
"name": "Missile Rack",
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 240400,
|
||||
"mass": 4,
|
||||
"power": 1.2,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 7,
|
||||
"armourpen": "F",
|
||||
"rof": 2.5,
|
||||
"dps": 8,
|
||||
"thermload": 3,
|
||||
"clip": 12,
|
||||
"ammo": 24,
|
||||
"missile": "D"
|
||||
},
|
||||
"2g": {
|
||||
"group": "mo",
|
||||
"name": "Missile Rack",
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 512400,
|
||||
"mass": 4,
|
||||
"power": 1.2,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 6,
|
||||
"armourpen": "F",
|
||||
"rof": 0.3,
|
||||
"dps": 3,
|
||||
"thermload": 3,
|
||||
"clip": 6,
|
||||
"ammo": 18,
|
||||
"missile": "S"
|
||||
"Missile Racks": {
|
||||
"2d": {
|
||||
"grp": "mr",
|
||||
"class": 1,
|
||||
"rating": "B",
|
||||
"cost": 32175,
|
||||
"mass": 2,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 7,
|
||||
"armourpen": "F",
|
||||
"rof": 2.5,
|
||||
"dps": 8,
|
||||
"thermload": 3,
|
||||
"grp": "mr",
|
||||
"clip": 8,
|
||||
"ammo": 16,
|
||||
"missile": "D"
|
||||
},
|
||||
"2e": {
|
||||
"grp": "mr",
|
||||
"class": 1,
|
||||
"rating": "B",
|
||||
"cost": 72600,
|
||||
"mass": 2,
|
||||
"power": 0.6,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 6,
|
||||
"armourpen": "F",
|
||||
"rof": 0.3,
|
||||
"dps": 3,
|
||||
"thermload": 3,
|
||||
"grp": "mr",
|
||||
"clip": 6,
|
||||
"ammo": 6,
|
||||
"missile": "S"
|
||||
},
|
||||
"2f": {
|
||||
"grp": "mr",
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 240400,
|
||||
"mass": 4,
|
||||
"power": 1.2,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 7,
|
||||
"armourpen": "F",
|
||||
"rof": 2.5,
|
||||
"dps": 8,
|
||||
"thermload": 3,
|
||||
"grp": "mr",
|
||||
"clip": 12,
|
||||
"ammo": 24,
|
||||
"missile": "D"
|
||||
},
|
||||
"2g": {
|
||||
"grp": "mr",
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 512400,
|
||||
"mass": 4,
|
||||
"power": 1.2,
|
||||
"mode": "F",
|
||||
"type": "E",
|
||||
"damage": 6,
|
||||
"armourpen": "F",
|
||||
"rof": 0.3,
|
||||
"dps": 3,
|
||||
"thermload": 3,
|
||||
"grp": "mr",
|
||||
"clip": 6,
|
||||
"ammo": 18,
|
||||
"missile": "S"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,110 +1,112 @@
|
||||
{
|
||||
"23": {
|
||||
"group": "sk",
|
||||
"name": "Multi-cannon",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 9500,
|
||||
"mass": 2,
|
||||
"power": 0.28,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 8,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"24": {
|
||||
"group": "sk",
|
||||
"name": "Multi-cannon",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 14250,
|
||||
"mass": 2,
|
||||
"power": 0.37,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 8.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"25": {
|
||||
"group": "sk",
|
||||
"name": "Multi-cannon",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 81600,
|
||||
"mass": 2,
|
||||
"power": 0.26,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 0,
|
||||
"armourpen": "A",
|
||||
"rof": 6,
|
||||
"dps": 2,
|
||||
"thermload": 1,
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"26": {
|
||||
"group": "mk",
|
||||
"name": "Multi-cannon",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 38000,
|
||||
"mass": 4,
|
||||
"power": 0.46,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 7,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"27": {
|
||||
"group": "mk",
|
||||
"name": "Multi-cannon",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 57000,
|
||||
"mass": 4,
|
||||
"power": 0.64,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 7.5,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"28": {
|
||||
"group": "mk",
|
||||
"name": "Multi-cannon",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 1292800,
|
||||
"mass": 4,
|
||||
"power": 0.5,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 5.3,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
"Multi-cannons": {
|
||||
"23": {
|
||||
"grp": "mc",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 9500,
|
||||
"mass": 2,
|
||||
"power": 0.28,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 8,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "mc",
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"24": {
|
||||
"grp": "mc",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 14250,
|
||||
"mass": 2,
|
||||
"power": 0.37,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 8.5,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "mc",
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"25": {
|
||||
"grp": "mc",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 81600,
|
||||
"mass": 2,
|
||||
"power": 0.26,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 0,
|
||||
"armourpen": "A",
|
||||
"rof": 6,
|
||||
"dps": 2,
|
||||
"thermload": 1,
|
||||
"grp": "mc",
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"26": {
|
||||
"grp": "mc",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 38000,
|
||||
"mass": 4,
|
||||
"power": 0.46,
|
||||
"mode": "F",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 7,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"grp": "mc",
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"27": {
|
||||
"grp": "mc",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 57000,
|
||||
"mass": 4,
|
||||
"power": 0.64,
|
||||
"mode": "G",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 7.5,
|
||||
"dps": 4,
|
||||
"thermload": 1,
|
||||
"grp": "mc",
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
},
|
||||
"28": {
|
||||
"grp": "mc",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 1292800,
|
||||
"mass": 4,
|
||||
"power": 0.5,
|
||||
"mode": "T",
|
||||
"type": "K",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 5.3,
|
||||
"dps": 3,
|
||||
"thermload": 1,
|
||||
"grp": "mc",
|
||||
"clip": 90,
|
||||
"ammo": 2100
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,56 +1,58 @@
|
||||
{
|
||||
"1g": {
|
||||
"group": "mt",
|
||||
"name": "Plasma Accelerator",
|
||||
"class": 2,
|
||||
"rating": "C",
|
||||
"cost": 834200,
|
||||
"mass": 4,
|
||||
"power": 1.43,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 4,
|
||||
"thermload": 10,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"2b": {
|
||||
"group": "lo",
|
||||
"name": "Plasma Accelerator",
|
||||
"class": 3,
|
||||
"rating": "B",
|
||||
"cost": 3051200,
|
||||
"mass": 8,
|
||||
"power": 1.97,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 9,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 4,
|
||||
"thermload": 8,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"2c": {
|
||||
"group": "ho",
|
||||
"name": "Plasma Accelerator",
|
||||
"class": 4,
|
||||
"rating": "A",
|
||||
"cost": 13793600,
|
||||
"mass": 16,
|
||||
"power": 2.63,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 10,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 5,
|
||||
"thermload": 10,
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
"Plasma Accelerators": {
|
||||
"1g": {
|
||||
"grp": "pa",
|
||||
"class": 2,
|
||||
"rating": "C",
|
||||
"cost": 834200,
|
||||
"mass": 4,
|
||||
"power": 1.43,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 4,
|
||||
"thermload": 10,
|
||||
"grp": "pa",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"2b": {
|
||||
"grp": "pa",
|
||||
"class": 3,
|
||||
"rating": "B",
|
||||
"cost": 3051200,
|
||||
"mass": 8,
|
||||
"power": 1.97,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 9,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 4,
|
||||
"thermload": 8,
|
||||
"grp": "pa",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
},
|
||||
"2c": {
|
||||
"grp": "pa",
|
||||
"class": 4,
|
||||
"rating": "A",
|
||||
"cost": 13793600,
|
||||
"mass": 16,
|
||||
"power": 2.63,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 10,
|
||||
"armourpen": "A",
|
||||
"rof": 0.3,
|
||||
"dps": 5,
|
||||
"thermload": 10,
|
||||
"grp": "pa",
|
||||
"clip": 5,
|
||||
"ammo": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"03": {
|
||||
"group": "um",
|
||||
"name": "Point Defence",
|
||||
"class": 0,
|
||||
"rating": "I",
|
||||
"cost": 18546,
|
||||
"mass": 0.5,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"armourpen": "F",
|
||||
"thermload": 1,
|
||||
"clip": 50,
|
||||
"ammo": 10000
|
||||
}
|
||||
}
|
||||
@@ -1,146 +1,139 @@
|
||||
{
|
||||
"17": {
|
||||
"group": "st",
|
||||
"name": "Pulse Laser",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 2200,
|
||||
"mass": 2,
|
||||
"power": 0.39,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 3.8,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"18": {
|
||||
"group": "st",
|
||||
"name": "Pulse Laser",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 6600,
|
||||
"mass": 2,
|
||||
"power": 0.39,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 4,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"19": {
|
||||
"group": "st",
|
||||
"name": "Pulse Laser",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 26000,
|
||||
"mass": 2,
|
||||
"power": 0.38,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 2.8,
|
||||
"dps": 2,
|
||||
"thermload": 1
|
||||
},
|
||||
"1a": {
|
||||
"group": "mt",
|
||||
"name": "Pulse Laser",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 17600,
|
||||
"mass": 4,
|
||||
"power": 0.6,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 3.4,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"1b": {
|
||||
"group": "mt",
|
||||
"name": "Pulse Laser",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 35400,
|
||||
"mass": 4,
|
||||
"power": 0.6,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 3.6,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"1c": {
|
||||
"group": "mt",
|
||||
"name": "Pulse Laser",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 132800,
|
||||
"mass": 4,
|
||||
"power": 0.58,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 2.5,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"1d": {
|
||||
"group": "lt",
|
||||
"name": "Pulse Laser",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 70400,
|
||||
"mass": 8,
|
||||
"power": 0.9,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": 3,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"1e": {
|
||||
"group": "lt",
|
||||
"name": "Pulse Laser",
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 140600,
|
||||
"mass": 8,
|
||||
"power": 0.92,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 3.2,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"1f": {
|
||||
"group": "lt",
|
||||
"name": "Pulse Laser",
|
||||
"class": 3,
|
||||
"rating": "F",
|
||||
"cost": 400400,
|
||||
"mass": 8,
|
||||
"power": 0.89,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 2.3,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
"Pulse Lasers": {
|
||||
"17": {
|
||||
"grp": "pl",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 2200,
|
||||
"mass": 2,
|
||||
"power": 0.39,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 3.8,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"18": {
|
||||
"grp": "pl",
|
||||
"class": 1,
|
||||
"rating": "F",
|
||||
"cost": 6600,
|
||||
"mass": 2,
|
||||
"power": 0.39,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 4,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"19": {
|
||||
"grp": "pl",
|
||||
"class": 1,
|
||||
"rating": "G",
|
||||
"cost": 26000,
|
||||
"mass": 2,
|
||||
"power": 0.38,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 2.8,
|
||||
"dps": 2,
|
||||
"thermload": 1
|
||||
},
|
||||
"1a": {
|
||||
"grp": "pl",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 17600,
|
||||
"mass": 4,
|
||||
"power": 0.6,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 3.4,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"1b": {
|
||||
"grp": "pl",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 35400,
|
||||
"mass": 4,
|
||||
"power": 0.6,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 3.6,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"1c": {
|
||||
"grp": "pl",
|
||||
"class": 2,
|
||||
"rating": "F",
|
||||
"cost": 132800,
|
||||
"mass": 4,
|
||||
"power": 0.58,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 2,
|
||||
"armourpen": "A",
|
||||
"rof": 2.5,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
},
|
||||
"1d": {
|
||||
"grp": "pl",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 70400,
|
||||
"mass": 8,
|
||||
"power": 0.9,
|
||||
"mode": "F",
|
||||
"type": "T",
|
||||
"damage": 4,
|
||||
"armourpen": "A",
|
||||
"rof": 3,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"1e": {
|
||||
"grp": "pl",
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 140600,
|
||||
"mass": 8,
|
||||
"power": 0.92,
|
||||
"mode": "G",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 3.2,
|
||||
"dps": 4,
|
||||
"thermload": 1
|
||||
},
|
||||
"1f": {
|
||||
"grp": "pl",
|
||||
"class": 3,
|
||||
"rating": "F",
|
||||
"cost": 400400,
|
||||
"mass": 8,
|
||||
"power": 0.89,
|
||||
"mode": "T",
|
||||
"type": "T",
|
||||
"damage": 3,
|
||||
"armourpen": "A",
|
||||
"rof": 2.3,
|
||||
"dps": 3,
|
||||
"thermload": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,38 +1,40 @@
|
||||
{
|
||||
"29": {
|
||||
"group": "so",
|
||||
"name": "Rail Gun",
|
||||
"class": 1,
|
||||
"rating": "D",
|
||||
"cost": 51600,
|
||||
"mass": 2,
|
||||
"power": 1.15,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.6,
|
||||
"dps": 4,
|
||||
"thermload": 7,
|
||||
"clip": 1,
|
||||
"ammo": 30
|
||||
},
|
||||
"2a": {
|
||||
"group": "mo",
|
||||
"name": "Rail Gun",
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 412800,
|
||||
"mass": 4,
|
||||
"power": 1.63,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 4,
|
||||
"thermload": 10,
|
||||
"clip": 1,
|
||||
"ammo": 30
|
||||
"Rail Guns": {
|
||||
"29": {
|
||||
"grp": "rg",
|
||||
"class": 1,
|
||||
"rating": "D",
|
||||
"cost": 51600,
|
||||
"mass": 2,
|
||||
"power": 1.15,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 6,
|
||||
"armourpen": "A",
|
||||
"rof": 0.6,
|
||||
"dps": 4,
|
||||
"thermload": 7,
|
||||
"grp": "rg",
|
||||
"clip": 1,
|
||||
"ammo": 30
|
||||
},
|
||||
"2a": {
|
||||
"grp": "rg",
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 412800,
|
||||
"mass": 4,
|
||||
"power": 1.63,
|
||||
"mode": "F",
|
||||
"type": "TK",
|
||||
"damage": 7,
|
||||
"armourpen": "A",
|
||||
"rof": 0.5,
|
||||
"dps": 4,
|
||||
"thermload": 10,
|
||||
"grp": "rg",
|
||||
"clip": 1,
|
||||
"ammo": 30
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,57 +1,54 @@
|
||||
{
|
||||
"04": {
|
||||
"group": "ub",
|
||||
"name": "Shield Booster",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 281000,
|
||||
"mass": 3.5,
|
||||
"power": 1.2,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.2
|
||||
},
|
||||
"05": {
|
||||
"group": "ub",
|
||||
"name": "Shield Booster",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 122000,
|
||||
"mass": 3,
|
||||
"power": 1,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.16
|
||||
},
|
||||
"06": {
|
||||
"group": "ub",
|
||||
"name": "Shield Booster",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 53000,
|
||||
"mass": 2,
|
||||
"power": 0.7,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.12
|
||||
},
|
||||
"07": {
|
||||
"group": "ub",
|
||||
"name": "Shield Booster",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 23000,
|
||||
"mass": 1,
|
||||
"power": 0.5,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.08
|
||||
},
|
||||
"08": {
|
||||
"group": "ub",
|
||||
"name": "Shield Booster",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 10000,
|
||||
"mass": 0.5,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.04
|
||||
"Shield Boosters": {
|
||||
"04": {
|
||||
"grp": "sb",
|
||||
"class": 0,
|
||||
"rating": "A",
|
||||
"cost": 281000,
|
||||
"mass": 3.5,
|
||||
"power": 1.2,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.2
|
||||
},
|
||||
"05": {
|
||||
"grp": "sb",
|
||||
"class": 0,
|
||||
"rating": "B",
|
||||
"cost": 122000,
|
||||
"mass": 3,
|
||||
"power": 1,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.16
|
||||
},
|
||||
"06": {
|
||||
"grp": "sb",
|
||||
"class": 0,
|
||||
"rating": "C",
|
||||
"cost": 53000,
|
||||
"mass": 2,
|
||||
"power": 0.7,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.12
|
||||
},
|
||||
"07": {
|
||||
"grp": "sb",
|
||||
"class": 0,
|
||||
"rating": "D",
|
||||
"cost": 23000,
|
||||
"mass": 1,
|
||||
"power": 0.5,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.08
|
||||
},
|
||||
"08": {
|
||||
"grp": "sb",
|
||||
"class": 0,
|
||||
"rating": "E",
|
||||
"cost": 10000,
|
||||
"mass": 0.5,
|
||||
"power": 0.2,
|
||||
"passive": 1,
|
||||
"shieldmul": 0.04
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +1,34 @@
|
||||
{
|
||||
"2h": {
|
||||
"group": "so",
|
||||
"name": "Torpedo Pylon",
|
||||
"class": 1,
|
||||
"rating": "I",
|
||||
"cost": 11200,
|
||||
"mass": 2,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"armourpen": "C",
|
||||
"thermload": 10,
|
||||
"clip": 1,
|
||||
"ammo": 1,
|
||||
"missile": "S"
|
||||
},
|
||||
"2i": {
|
||||
"group": "mo",
|
||||
"name": "Torpedo Pylon",
|
||||
"class": 2,
|
||||
"rating": "I",
|
||||
"cost": 44800,
|
||||
"mass": 4,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"armourpen": "C",
|
||||
"thermload": 10,
|
||||
"clip": 2,
|
||||
"ammo": 1,
|
||||
"missile": "S"
|
||||
"Torpedo Pylons": {
|
||||
"2h": {
|
||||
"grp": "tp",
|
||||
"class": 1,
|
||||
"rating": "I",
|
||||
"cost": 11200,
|
||||
"mass": 2,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"armourpen": "C",
|
||||
"thermload": 10,
|
||||
"grp": "tp",
|
||||
"clip": 1,
|
||||
"ammo": 1,
|
||||
"missile": "S"
|
||||
},
|
||||
"2i": {
|
||||
"grp": "tp",
|
||||
"class": 2,
|
||||
"rating": "I",
|
||||
"cost": 44800,
|
||||
"mass": 4,
|
||||
"power": 0.4,
|
||||
"mode": "F",
|
||||
"armourpen": "C",
|
||||
"thermload": 10,
|
||||
"grp": "tp",
|
||||
"clip": 2,
|
||||
"ammo": 1,
|
||||
"missile": "S"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Auto Field-Maintenance Unit": {
|
||||
"Auto Field-Maintenance Units": {
|
||||
"10": {
|
||||
"group": "am",
|
||||
"class": 5,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Cargo Rack": {
|
||||
"Cargo Racks": {
|
||||
"00": {
|
||||
"group": "cr",
|
||||
"name": "Cargo Rack (Capacity: 2)",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Docking Computer": {
|
||||
"Docking Computers": {
|
||||
"24": {
|
||||
"group": "dc",
|
||||
"name": "Standard Docking Computer",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Frame Shift Drive Interdictor": {
|
||||
"FSD Interdictors": {
|
||||
"66": {
|
||||
"group": "fi",
|
||||
"class": 1,
|
||||
@@ -7,7 +7,7 @@
|
||||
"cost": 972000,
|
||||
"mass": 1.3,
|
||||
"power": 0.32,
|
||||
"range": "C"
|
||||
"rangeRating": "C"
|
||||
},
|
||||
"67": {
|
||||
"group": "fi",
|
||||
@@ -16,7 +16,7 @@
|
||||
"cost": 324000,
|
||||
"mass": 2,
|
||||
"power": 0.28,
|
||||
"range": "D"
|
||||
"rangeRating": "D"
|
||||
},
|
||||
"68": {
|
||||
"group": "fi",
|
||||
@@ -25,7 +25,7 @@
|
||||
"cost": 108000,
|
||||
"mass": 1.3,
|
||||
"power": 0.23,
|
||||
"range": "D"
|
||||
"rangeRating": "D"
|
||||
},
|
||||
"69": {
|
||||
"group": "fi",
|
||||
@@ -34,7 +34,7 @@
|
||||
"cost": 36000,
|
||||
"mass": 0.5,
|
||||
"power": 0.18,
|
||||
"range": "D"
|
||||
"rangeRating": "D"
|
||||
},
|
||||
"6a": {
|
||||
"group": "fi",
|
||||
@@ -43,7 +43,7 @@
|
||||
"cost": 12000,
|
||||
"mass": 1.3,
|
||||
"power": 0.14,
|
||||
"range": "E"
|
||||
"rangeRating": "E"
|
||||
},
|
||||
"6b": {
|
||||
"group": "fi",
|
||||
@@ -52,7 +52,7 @@
|
||||
"cost": 2721600,
|
||||
"mass": 2.5,
|
||||
"power": 0.39,
|
||||
"range": "B"
|
||||
"rangeRating": "B"
|
||||
},
|
||||
"6c": {
|
||||
"group": "fi",
|
||||
@@ -61,7 +61,7 @@
|
||||
"cost": 907200,
|
||||
"mass": 4,
|
||||
"power": 0.34,
|
||||
"range": "C"
|
||||
"rangeRating": "C"
|
||||
},
|
||||
"6d": {
|
||||
"group": "fi",
|
||||
@@ -70,7 +70,7 @@
|
||||
"cost": 302400,
|
||||
"mass": 2.5,
|
||||
"power": 0.28,
|
||||
"range": "C"
|
||||
"rangeRating": "C"
|
||||
},
|
||||
"6e": {
|
||||
"group": "fi",
|
||||
@@ -79,7 +79,7 @@
|
||||
"cost": 100800,
|
||||
"mass": 1,
|
||||
"power": 0.22,
|
||||
"range": "C"
|
||||
"rangeRating": "C"
|
||||
},
|
||||
"6f": {
|
||||
"group": "fi",
|
||||
@@ -88,7 +88,7 @@
|
||||
"cost": 33600,
|
||||
"mass": 2.5,
|
||||
"power": 0.17,
|
||||
"range": "D"
|
||||
"rangeRating": "D"
|
||||
},
|
||||
"6g": {
|
||||
"group": "fi",
|
||||
@@ -97,7 +97,7 @@
|
||||
"cost": 7620480,
|
||||
"mass": 5,
|
||||
"power": 0.48,
|
||||
"range": "A"
|
||||
"rangeRating": "A"
|
||||
},
|
||||
"6h": {
|
||||
"group": "fi",
|
||||
@@ -106,7 +106,7 @@
|
||||
"cost": 2540160,
|
||||
"mass": 8,
|
||||
"power": 0.41,
|
||||
"range": "B"
|
||||
"rangeRating": "B"
|
||||
},
|
||||
"6i": {
|
||||
"group": "fi",
|
||||
@@ -115,7 +115,7 @@
|
||||
"cost": 846720,
|
||||
"mass": 5,
|
||||
"power": 0.34,
|
||||
"range": "B"
|
||||
"rangeRating": "B"
|
||||
},
|
||||
"6j": {
|
||||
"group": "fi",
|
||||
@@ -124,7 +124,7 @@
|
||||
"cost": 282240,
|
||||
"mass": 2,
|
||||
"power": 0.27,
|
||||
"range": "B"
|
||||
"rangeRating": "B"
|
||||
},
|
||||
"6k": {
|
||||
"group": "fi",
|
||||
@@ -133,7 +133,7 @@
|
||||
"cost": 94080,
|
||||
"mass": 5,
|
||||
"power": 0.2,
|
||||
"range": "C"
|
||||
"rangeRating": "C"
|
||||
},
|
||||
"6l": {
|
||||
"group": "fi",
|
||||
@@ -142,7 +142,7 @@
|
||||
"cost": 21337344,
|
||||
"mass": 10,
|
||||
"power": 0.57,
|
||||
"range": "A"
|
||||
"rangeRating": "A"
|
||||
},
|
||||
"6m": {
|
||||
"group": "fi",
|
||||
@@ -151,7 +151,7 @@
|
||||
"cost": 7112448,
|
||||
"mass": 16,
|
||||
"power": 0.49,
|
||||
"range": "A"
|
||||
"rangeRating": "A"
|
||||
},
|
||||
"6n": {
|
||||
"group": "fi",
|
||||
@@ -160,7 +160,7 @@
|
||||
"cost": 2370816,
|
||||
"mass": 10,
|
||||
"power": 0.41,
|
||||
"range": "A"
|
||||
"rangeRating": "A"
|
||||
},
|
||||
"6o": {
|
||||
"group": "fi",
|
||||
@@ -169,7 +169,7 @@
|
||||
"cost": 790272,
|
||||
"mass": 4,
|
||||
"power": 0.33,
|
||||
"range": "A"
|
||||
"rangeRating": "A"
|
||||
},
|
||||
"6p": {
|
||||
"group": "fi",
|
||||
@@ -178,7 +178,7 @@
|
||||
"cost": 263424,
|
||||
"mass": 10,
|
||||
"power": 0.25,
|
||||
"range": "B"
|
||||
"rangeRating": "B"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Hatch Breaker Limpet Controller": {
|
||||
"Hatch Breaker Limpet Controllers": {
|
||||
"70": {
|
||||
"group": "hb",
|
||||
"class": 3,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Hull Reinforcement Package": {
|
||||
"Hull Reinforcement Packages": {
|
||||
"25": {
|
||||
"group": "hr",
|
||||
"class": 1,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Refinery": {
|
||||
"Refineries": {
|
||||
"20": {
|
||||
"group": "rf",
|
||||
"class": 4,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Shield Cell Bank": {
|
||||
"Shield Cell Banks": {
|
||||
"50": {
|
||||
"group": "sb",
|
||||
"class": 1,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Shield Generator": {
|
||||
"Shield Generators": {
|
||||
"40": {
|
||||
"group": "sg",
|
||||
"class": 3,
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"adder": {
|
||||
"group": "ex",
|
||||
"name": "Adder",
|
||||
"manufacturer": "Zorgon Peterson",
|
||||
"class": 1,
|
||||
"cost": 39993,
|
||||
"speed": 220,
|
||||
"boost": 320,
|
||||
"agility": 8,
|
||||
"shields": 60,
|
||||
"armour": 90,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "ex",
|
||||
"name": "Adder",
|
||||
"manufacturer": "Zorgon Peterson",
|
||||
"class": 1,
|
||||
"cost": 39993,
|
||||
"speed": 220,
|
||||
"boost": 320,
|
||||
"agility": 8,
|
||||
"shields": 60,
|
||||
"armour": 90,
|
||||
"fuelcost": 50,
|
||||
"mass": 35
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
3,
|
||||
3,
|
||||
@@ -36,7 +39,7 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"3E",
|
||||
"3E",
|
||||
@@ -60,7 +63,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 35
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"anaconda": {
|
||||
"group": "mp",
|
||||
"name": "Anaconda",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 3,
|
||||
"cost": 141889932,
|
||||
"speed": 180,
|
||||
"boost": 240,
|
||||
"agility": 2,
|
||||
"shields": 350,
|
||||
"armour": 525,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "mp",
|
||||
"name": "Anaconda",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 3,
|
||||
"cost": 141889932,
|
||||
"speed": 180,
|
||||
"boost": 240,
|
||||
"agility": 2,
|
||||
"shields": 350,
|
||||
"armour": 525,
|
||||
"fuelcost": 50,
|
||||
"mass": 400
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
8,
|
||||
7,
|
||||
@@ -53,7 +56,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"8E",
|
||||
"7E",
|
||||
@@ -94,7 +97,6 @@
|
||||
"2h",
|
||||
"00"
|
||||
]
|
||||
},
|
||||
"mass": 400
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"asp": {
|
||||
"group": "ex",
|
||||
"name": "Asp",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 2,
|
||||
"cost": 6135658,
|
||||
"speed": 250,
|
||||
"boost": 340,
|
||||
"agility": 6,
|
||||
"shields": 140,
|
||||
"armour": 210,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "ex",
|
||||
"name": "Asp",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 2,
|
||||
"cost": 6135658,
|
||||
"speed": 250,
|
||||
"boost": 340,
|
||||
"agility": 6,
|
||||
"shields": 140,
|
||||
"armour": 210,
|
||||
"fuelcost": 50,
|
||||
"mass": 280
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
5,
|
||||
5,
|
||||
@@ -43,7 +46,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"5E",
|
||||
"5E",
|
||||
@@ -74,7 +77,6 @@
|
||||
"00",
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 280
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"cobra_mk_iii": {
|
||||
"group": "mp",
|
||||
"name": "Cobra Mk III",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 1,
|
||||
"cost": 235787,
|
||||
"speed": 280,
|
||||
"boost": 400,
|
||||
"agility": 6,
|
||||
"shields": 80,
|
||||
"armour": 120,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "mp",
|
||||
"name": "Cobra Mk III",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 1,
|
||||
"cost": 235787,
|
||||
"speed": 280,
|
||||
"boost": 400,
|
||||
"agility": 6,
|
||||
"shields": 80,
|
||||
"armour": 120,
|
||||
"fuelcost": 50,
|
||||
"mass": 180
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
4,
|
||||
4,
|
||||
@@ -38,7 +41,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"4E",
|
||||
"4E",
|
||||
@@ -64,7 +67,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 180
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"eagle": {
|
||||
"group": "co",
|
||||
"name": "Eagle",
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 1,
|
||||
"cost": 10446,
|
||||
"speed": 240,
|
||||
"boost": 350,
|
||||
"agility": 10,
|
||||
"shields": 60,
|
||||
"armour": 40,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "co",
|
||||
"name": "Eagle",
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 1,
|
||||
"cost": 10446,
|
||||
"speed": 240,
|
||||
"boost": 350,
|
||||
"agility": 10,
|
||||
"shields": 60,
|
||||
"armour": 40,
|
||||
"fuelcost": 50,
|
||||
"mass": 50
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
2,
|
||||
3,
|
||||
@@ -33,7 +36,7 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"2E",
|
||||
"3E",
|
||||
@@ -54,7 +57,6 @@
|
||||
"00",
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"federal_dropship": {
|
||||
"group": "mp",
|
||||
"name": "Federal Dropship",
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 2,
|
||||
"cost": 18969990,
|
||||
"speed": 180,
|
||||
"boost": 300,
|
||||
"agility": 0,
|
||||
"shields": 200,
|
||||
"armour": 300,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "mp",
|
||||
"name": "Federal Dropship",
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 2,
|
||||
"cost": 18969990,
|
||||
"speed": 180,
|
||||
"boost": 300,
|
||||
"agility": 0,
|
||||
"shields": 200,
|
||||
"armour": 300,
|
||||
"fuelcost": 50,
|
||||
"mass": 580
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
6,
|
||||
6,
|
||||
@@ -42,7 +45,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"6E",
|
||||
"6E",
|
||||
@@ -72,7 +75,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 580
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"fer_de_lance": {
|
||||
"group": "co",
|
||||
"name": "Fer-de-Lance",
|
||||
"manufacturer": "Zorgon Peterson",
|
||||
"class": 2,
|
||||
"cost": 51232230,
|
||||
"speed": 260,
|
||||
"boost": 350,
|
||||
"agility": 6,
|
||||
"shields": 300,
|
||||
"armour": 225,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "co",
|
||||
"name": "Fer-de-Lance",
|
||||
"manufacturer": "Zorgon Peterson",
|
||||
"class": 2,
|
||||
"cost": 51232230,
|
||||
"speed": 260,
|
||||
"boost": 350,
|
||||
"agility": 6,
|
||||
"shields": 300,
|
||||
"armour": 225,
|
||||
"fuelcost": 50,
|
||||
"mass": 250
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
5,
|
||||
5,
|
||||
@@ -42,7 +45,7 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"5E",
|
||||
"5E",
|
||||
@@ -72,7 +75,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 250
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"hauler": {
|
||||
"group": "fr",
|
||||
"name": "Hauler",
|
||||
"manufacturer": "Zorgon Peterson",
|
||||
"class": 1,
|
||||
"cost": 29807,
|
||||
"speed": 200,
|
||||
"boost": 300,
|
||||
"agility": 6,
|
||||
"shields": 50,
|
||||
"armour": 50,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "fr",
|
||||
"name": "Hauler",
|
||||
"manufacturer": "Zorgon Peterson",
|
||||
"class": 1,
|
||||
"cost": 29807,
|
||||
"speed": 200,
|
||||
"boost": 300,
|
||||
"agility": 6,
|
||||
"shields": 50,
|
||||
"armour": 50,
|
||||
"fuelcost": 50,
|
||||
"mass": 14
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
2,
|
||||
2,
|
||||
@@ -33,7 +36,7 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"2E",
|
||||
"2E",
|
||||
@@ -54,7 +57,6 @@
|
||||
"3v",
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 14
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"imperial_clipper": {
|
||||
"group": "mp",
|
||||
"name": "Imperial Clipper",
|
||||
"manufacturer": "Gutamaya",
|
||||
"class": 3,
|
||||
"cost": 21077784,
|
||||
"speed": 300,
|
||||
"boost": 380,
|
||||
"agility": 2,
|
||||
"shields": 180,
|
||||
"armour": 270,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "mp",
|
||||
"name": "Imperial Clipper",
|
||||
"manufacturer": "Gutamaya",
|
||||
"class": 3,
|
||||
"cost": 21077784,
|
||||
"speed": 300,
|
||||
"boost": 380,
|
||||
"agility": 2,
|
||||
"shields": 180,
|
||||
"armour": 270,
|
||||
"fuelcost": 50,
|
||||
"mass": 400
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
6,
|
||||
6,
|
||||
@@ -42,7 +45,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"6E",
|
||||
"6E",
|
||||
@@ -72,7 +75,6 @@
|
||||
"00",
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 400
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"orca": {
|
||||
"group": "pa",
|
||||
"name": "Orca",
|
||||
"manufacturer": "Saud Kruger",
|
||||
"class": 3,
|
||||
"cost": 47798079,
|
||||
"speed": 300,
|
||||
"boost": 380,
|
||||
"agility": 2,
|
||||
"shields": 220,
|
||||
"armour": 220,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "pa",
|
||||
"name": "Orca",
|
||||
"manufacturer": "Saud Kruger",
|
||||
"class": 3,
|
||||
"cost": 47798079,
|
||||
"speed": 300,
|
||||
"boost": 380,
|
||||
"agility": 2,
|
||||
"shields": 220,
|
||||
"armour": 220,
|
||||
"fuelcost": 50,
|
||||
"mass": 580
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
5,
|
||||
6,
|
||||
@@ -41,7 +44,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"5E",
|
||||
"6E",
|
||||
@@ -70,7 +73,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 580
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"python": {
|
||||
"group": "mp",
|
||||
"name": "Python",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 2,
|
||||
"cost": 55171395,
|
||||
"speed": 230,
|
||||
"boost": 280,
|
||||
"agility": 6,
|
||||
"shields": 260,
|
||||
"armour": 260,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "mp",
|
||||
"name": "Python",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 2,
|
||||
"cost": 55171395,
|
||||
"speed": 230,
|
||||
"boost": 280,
|
||||
"agility": 6,
|
||||
"shields": 260,
|
||||
"armour": 260,
|
||||
"fuelcost": 50,
|
||||
"mass": 350
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
7,
|
||||
6,
|
||||
@@ -44,7 +47,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"7E",
|
||||
"6E",
|
||||
@@ -76,7 +79,6 @@
|
||||
"00",
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 350
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"sidewinder": {
|
||||
"group": "mp",
|
||||
"name": "Sidewinder",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 1,
|
||||
"cost": 12887,
|
||||
"speed": 220,
|
||||
"boost": 320,
|
||||
"agility": 8,
|
||||
"shields": 40,
|
||||
"armour": 60,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "mp",
|
||||
"name": "Sidewinder",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 1,
|
||||
"cost": 12887,
|
||||
"speed": 220,
|
||||
"boost": 320,
|
||||
"agility": 8,
|
||||
"shields": 40,
|
||||
"armour": 60,
|
||||
"fuelcost": 50,
|
||||
"mass": 25
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
2,
|
||||
2,
|
||||
@@ -33,7 +36,7 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"2E",
|
||||
"2E",
|
||||
@@ -54,7 +57,6 @@
|
||||
"01",
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 25
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"type_6_transporter": {
|
||||
"group": "fr",
|
||||
"name": "Type-6 Transporter",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 2,
|
||||
"cost": 865782,
|
||||
"speed": 220,
|
||||
"boost": 350,
|
||||
"agility": 3,
|
||||
"shields": 90,
|
||||
"armour": 90,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "fr",
|
||||
"name": "Type-6 Transporter",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 2,
|
||||
"cost": 865782,
|
||||
"speed": 220,
|
||||
"boost": 350,
|
||||
"agility": 3,
|
||||
"shields": 90,
|
||||
"armour": 90,
|
||||
"fuelcost": 50,
|
||||
"mass": 155
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
3,
|
||||
4,
|
||||
@@ -38,7 +41,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"3E",
|
||||
"4E",
|
||||
@@ -64,7 +67,6 @@
|
||||
"00",
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 155
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"type_7_transport": {
|
||||
"group": "fr",
|
||||
"name": "Type-7 Transport",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 3,
|
||||
"cost": 16881511,
|
||||
"speed": 180,
|
||||
"boost": 300,
|
||||
"agility": 2,
|
||||
"shields": 120,
|
||||
"armour": 120,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "fr",
|
||||
"name": "Type-7 Transport",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 3,
|
||||
"cost": 16881511,
|
||||
"speed": 180,
|
||||
"boost": 300,
|
||||
"agility": 2,
|
||||
"shields": 120,
|
||||
"armour": 120,
|
||||
"fuelcost": 50,
|
||||
"mass": 420
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
4,
|
||||
5,
|
||||
@@ -42,7 +45,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"4E",
|
||||
"5E",
|
||||
@@ -72,7 +75,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 420
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"type_9_heavy": {
|
||||
"group": "fr",
|
||||
"name": "Type-9 Heavy",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 3,
|
||||
"cost": 73255168,
|
||||
"speed": 130,
|
||||
"boost": 200,
|
||||
"agility": 0,
|
||||
"shields": 240,
|
||||
"armour": 240,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "fr",
|
||||
"name": "Type-9 Heavy",
|
||||
"manufacturer": "Lakon",
|
||||
"class": 3,
|
||||
"cost": 73255168,
|
||||
"speed": 130,
|
||||
"boost": 200,
|
||||
"agility": 0,
|
||||
"shields": 240,
|
||||
"armour": 240,
|
||||
"fuelcost": 50,
|
||||
"mass": 1000
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
6,
|
||||
7,
|
||||
@@ -44,7 +47,7 @@
|
||||
2
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"6E",
|
||||
"7E",
|
||||
@@ -76,7 +79,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 1000
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"viper": {
|
||||
"group": "co",
|
||||
"name": "Viper",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 1,
|
||||
"cost": 95893,
|
||||
"speed": 320,
|
||||
"boost": 400,
|
||||
"agility": 6,
|
||||
"shields": 105,
|
||||
"armour": 70,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "co",
|
||||
"name": "Viper",
|
||||
"manufacturer": "Faulcon DeLacy",
|
||||
"class": 1,
|
||||
"cost": 95893,
|
||||
"speed": 320,
|
||||
"boost": 400,
|
||||
"agility": 6,
|
||||
"shields": 105,
|
||||
"armour": 70,
|
||||
"fuelcost": 50,
|
||||
"mass": 60
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
3,
|
||||
3,
|
||||
@@ -36,7 +39,7 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"3E",
|
||||
"3E",
|
||||
@@ -60,7 +63,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 60
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,20 @@
|
||||
{
|
||||
"vulture": {
|
||||
"group": "co",
|
||||
"name": "Vulture",
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 1,
|
||||
"cost": 4689629,
|
||||
"speed": 210,
|
||||
"boost": 340,
|
||||
"agility": 9,
|
||||
"shields": 240,
|
||||
"armour": 160,
|
||||
"fuelcost": 50,
|
||||
"slotCap": {
|
||||
"properties": {
|
||||
"group": "co",
|
||||
"name": "Vulture",
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 1,
|
||||
"cost": 4689629,
|
||||
"speed": 210,
|
||||
"boost": 340,
|
||||
"agility": 9,
|
||||
"shields": 240,
|
||||
"armour": 160,
|
||||
"fuelcost": 50,
|
||||
"mass": 230
|
||||
},
|
||||
"slots": {
|
||||
"common": [
|
||||
4,
|
||||
5,
|
||||
@@ -37,7 +40,7 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
"defaultComponents": {
|
||||
"defaults": {
|
||||
"common": [
|
||||
"4E",
|
||||
"5E",
|
||||
@@ -62,7 +65,6 @@
|
||||
0,
|
||||
"2h"
|
||||
]
|
||||
},
|
||||
"mass": 230
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user