Compare commits

...

17 Commits

Author SHA1 Message Date
Colin McLeod
3c8b1f7d6a Adding 2.5% discount 2015-12-18 01:05:49 -08:00
Colin McLeod
62d9749660 Adding agility/maneuverability to shipyard overview 2015-12-13 12:31:06 -08:00
Colin McLeod
7db185e635 Bumping version to 1.10.0 2015-12-13 12:20:56 -08:00
Colin McLeod
e69bdac75c Add Cobra MK IV, FdL power plant update, PV Hangar 2015-12-13 12:19:22 -08:00
Colin McLeod
231f7e9267 Add planetary vechile hanger support 2015-12-13 12:19:22 -08:00
Colin McLeod
2ef44e38b3 Merge pull request #123 from fawick/master
Fix typo in languages.js
2015-12-07 10:31:23 -08:00
Fabian Wickborn
d051829f98 Fix typo in languages.js 2015-12-07 19:16:00 +01:00
Colin McLeod
01e8e71b28 Updating data reference, bumping version to 1.9.4 2015-11-30 23:38:06 -08:00
Colin McLeod
14681aa9fa Update tests to include bulkheads 2015-11-30 22:56:28 -08:00
Colin McLeod
b93572b18d Merge pull request #120 from sf302/master
Heat Sink Launcher utility auto-fill
2015-11-19 16:28:51 -08:00
Kevin Chang
41c4b4243a Remove arg overloading in useUtility 2015-11-16 16:36:15 -08:00
Kevin Chang
f5127c2475 Typo fix 2015-11-16 15:37:55 -08:00
Kevin Chang
db4303d3c8 Add Heat Sink auto-fill given new SCB heat output 2015-11-16 15:35:36 -08:00
Colin McLeod
8bc100714f Fix Viper Mk4 data. Bumping version to 1.9.3 2015-11-14 12:04:55 -08:00
Colin McLeod
fabd370f4a Update serializer test fixtures 2015-11-14 10:59:15 -08:00
Colin McLeod
769c20154d Updating Hull Reinforcement packages. Bumping to 1.9.2 2015-11-14 10:48:47 -08:00
Colin McLeod
2b5edd75cb Fix keelback boost/speed. Bump to 1.9.1 2015-11-14 10:37:38 -08:00
14 changed files with 50 additions and 11 deletions

View File

@@ -556,7 +556,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
function updateAmmoCosts() { function updateAmmoCosts() {
var costs = $scope.ammoList = []; var costs = $scope.ammoList = [];
var total = 0, i, l, item, q, limpets = 0, scoop = false; var total = 0, i, l, item, q, limpets = 0, srvs = 0, scoop = false;
for (var g in { standard: 1, internal: 1, hardpoints: 1 }) { for (var g in { standard: 1, internal: 1, hardpoints: 1 }) {
var slotGroup = ship[g]; var slotGroup = ship[g];
@@ -577,6 +577,9 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
case 'fx': case 'hb': case 'cc': case 'pc': case 'fx': case 'hb': case 'cc': case 'pc':
limpets = ship.cargoCapacity; limpets = ship.cargoCapacity;
break; break;
case 'pv':
srvs += slotGroup[i].c.vehicles;
break;
default: default:
q = slotGroup[i].c.clip + slotGroup[i].c.ammo; q = slotGroup[i].c.clip + slotGroup[i].c.ammo;
} }
@@ -597,6 +600,17 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
} }
//limpets if controllers exist and cargo space available //limpets if controllers exist and cargo space available
if (srvs > 0) {
item = {
ammoName: 'SRVs',
ammoMax: srvs,
ammoUnitCost: 6005,
ammoTotalCost: srvs * 6005
};
costs.push(item);
total += item.ammoTotalCost;
}
//limpets if controllers exist and cargo space available
if (limpets > 0) { if (limpets > 0) {
item = { item = {
ammoName: 'limpets', ammoName: 'limpets',

View File

@@ -154,6 +154,7 @@ angular.module('app').config(['$translateProvider', function($translateProvider)
proceed: 'proceed', proceed: 'proceed',
pc: 'Prospector Limpet Controller', pc: 'Prospector Limpet Controller',
pl: 'Pulse Laser', pl: 'Pulse Laser',
pv: 'Planetary Vehicle Hangar',
PWR: 'PWR', PWR: 'PWR',
rg: 'Rail Gun', rg: 'Rail Gun',
range: 'range', range: 'range',

View File

@@ -15,7 +15,7 @@ angular.module('app').config(['$translateProvider', function($translateProvider)
}]) }])
.value('Languages', { .value('Languages', {
en: 'English', en: 'English',
de: 'Deutsh', de: 'Deutsch',
it: 'Italiano', it: 'Italiano',
es: 'Español', es: 'Español',
fr: 'Français', fr: 'Français',

View File

@@ -547,8 +547,8 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
return this; return this;
}; };
Ship.prototype.useUtility = function(group, rating, clobber) { Ship.prototype.useUtility = function(group, rating, name, clobber) {
var component = Components.findHardpoint(group, 0, rating); var component = Components.findHardpoint(group, 0, rating, name);
for (var i = this.hardpoints.length; i--; ) { for (var i = this.hardpoints.length; i--; ) {
if ((clobber || !this.hardpoints[i].c) && !this.hardpoints[i].maxClass) { if ((clobber || !this.hardpoints[i].c) && !this.hardpoints[i].maxClass) {
this.use(this.hardpoints[i], component.id, component); this.use(this.hardpoints[i], component.id, component);

View File

@@ -46,6 +46,7 @@ angular.module('shipyard', ['ngLodash'])
fx: 'Fuel Transfer Limpet Controller', fx: 'Fuel Transfer Limpet Controller',
pc: 'Prospector Limpet Controller', pc: 'Prospector Limpet Controller',
cc: 'Collector Limpet Controller', cc: 'Collector Limpet Controller',
pv: 'Planetary Vehicle Hangar',
// Hard Points // Hard Points
bl: 'Beam Laser', bl: 'Beam Laser',
@@ -165,6 +166,7 @@ angular.module('shipyard', ['ngLodash'])
*/ */
.constant('Discounts', { .constant('Discounts', {
'0%': 1, '0%': 1,
'2.5%': 0.975,
'5%': 0.95, '5%': 0.95,
'10%': 0.90, '10%': 0.90,
'15%': 0.85, '15%': 0.85,

View File

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

View File

@@ -296,6 +296,10 @@
<li class="c" ng-click="useUtility('sb','B')">B</li> <li class="c" ng-click="useUtility('sb','B')">B</li>
<li class="c" ng-click="useUtility('sb','A')">A</li> <li class="c" ng-click="useUtility('sb','A')">A</li>
</ul> </ul>
<div class="select-group cap" translate="Heat Sink Launcher"></div>
<ul>
<li class="lc" ng-click="useUtility('cm',null,'Heat Sink Launcher')" translate="Heat Sink Launcher"></li>
</ul>
</div> </div>
</div> </div>
<div class="slot" ng-repeat="h in ship.hardpoints | filter:{maxClass: '0'}" ng-click="selectSlot($event, h)" context-menu="select('h', h, $event, 'empty')" ng-class="{selected: selectedSlot==h}"> <div class="slot" ng-repeat="h in ship.hardpoints | filter:{maxClass: '0'}" ng-click="selectSlot($event, h)" context-menu="select('h', h, $event, 'empty')" ng-class="{selected: selectedSlot==h}">

View File

@@ -7,6 +7,7 @@
<th rowspan="2" class="sortable le" ng-click="sortShips('name')" translate="ship"></th> <th rowspan="2" class="sortable le" ng-click="sortShips('name')" translate="ship"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('manufacturer')" translate="manufacturer"></th> <th rowspan="2" class="sortable" ng-click="sortShips('manufacturer')" translate="manufacturer"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('class')" translate="size"></th> <th rowspan="2" class="sortable" ng-click="sortShips('class')" translate="size"></th>
<th rowspan="2" class="sortable" ng-click="sortShips('agility')" translate="agility"></th>
<th colspan="4" translate="base"></th> <th colspan="4" translate="base"></th>
<th colspan="4" translate="max"></th> <th colspan="4" translate="max"></th>
<th colspan="5" class="sortable" ng-click="sortShips('hpCount')" translate="hardpoints"></th> <th colspan="5" class="sortable" ng-click="sortShips('hpCount')" translate="hardpoints"></th>
@@ -49,6 +50,7 @@
<td class="le" ng-bind="s.manufacturer"></td> <td class="le" ng-bind="s.manufacturer"></td>
<!-- Pad Size --> <!-- Pad Size -->
<td class="cap" ng-bind="SZM[s.class] | translate"></td> <td class="cap" ng-bind="SZM[s.class] | translate"></td>
<td class="ri" ng-bind="s.agility"></td>
<!-- Base --> <!-- Base -->
<td class="ri">{{fCrd(s.speed)}} <u translate>m/s</u></td> <td class="ri">{{fCrd(s.speed)}} <u translate>m/s</u></td>
<td class="ri">{{fCrd(s.boost)}} <u translate>m/s</u></td> <td class="ri">{{fCrd(s.boost)}} <u translate>m/s</u></td>

2
data

Submodule data updated: a3afc00fa3...bb316e77b2

View File

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

View File

@@ -268,8 +268,8 @@
"fuelCapacity": 32, "fuelCapacity": 32,
"cargoCapacity": 128, "cargoCapacity": 128,
"ladenMass": 1339.2, "ladenMass": 1339.2,
"armour": 2078, "armour": 2228,
"armourAdded": 240, "armourAdded": 390,
"armourMultiplier": 1.95, "armourMultiplier": 1.95,
"shieldMultiplier": 1.4, "shieldMultiplier": 1.4,
"totalCost": 882362060, "totalCost": 882362060,

View File

@@ -45,6 +45,6 @@
"Attack": "25A5C4A4D6A4A3C1r0s0s0s0s000404-04-4a-5d27-.Iw18aQ==.Aw18aQ==" "Attack": "25A5C4A4D6A4A3C1r0s0s0s0s000404-04-4a-5d27-.Iw18aQ==.Aw18aQ=="
}, },
"eagle": { "eagle": {
"Figther": "42A3A3A1D2A2A2C0p0p24-40532j.Iw19A===.Aw19A===" "Figther": "42A3A3A1D2A2A2C0p0p24-40532j-.Iw1-EA==.Aw1-EA=="
} }
} }

View File

@@ -3423,7 +3423,8 @@
"class": 1, "class": 1,
"rating": "A", "rating": "A",
"group": "Fuel Scoop" "group": "Fuel Scoop"
} },
null
] ]
}, },
"stats": { "stats": {

View File

@@ -76,10 +76,24 @@ describe('Database', function() {
expect(ids[id]).toBeFalsy('ID already exists: ' + id); expect(ids[id]).toBeFalsy('ID already exists: ' + id);
expect(group[c].eddbID).toBeDefined('Standard component' + id + ' is missing EDDB ID'); expect(group[c].eddbID).toBeDefined('Standard component' + id + ' is missing EDDB ID');
//validateEDDBId('Standard', group[c]); //validateEDDBId('Standard', group[c]);
expect(group[c].grp).toBeDefined('Common component has no group defined, Type: ' + i + ', ID: ' + c); expect(group[c].grp).toBeDefined('Standard component has no group defined, Type: ' + i + ', ID: ' + c);
ids[id] = true; ids[id] = true;
} }
} }
for (var s in DB.components.bulkheads) {
var bulkheadSet = DB.components.bulkheads[s];
for (var b in bulkheadSet) {
var id = bulkheadSet[b].id;
expect(ids[id]).toBeFalsy('ID already exists: ' + id);
expect(bulkheadSet[b].eddbID).toBeDefined('Bulkhead component' + id + ' is missing EDDB ID');
//validateEDDBId('Bulkheads', group[c]);
expect(bulkheadSet[b].cost).toBeDefined('Bulkhead has no cost defined, ID: ' + id);
expect(bulkheadSet[b].mass).toBeDefined('Bulkhead has no mass defined, ID: ' + id);
ids[id] = true;
}
}
}); });
it('has valid hardpoints', function() { it('has valid hardpoints', function() {