add some more guards on ships

This commit is contained in:
William Blythe
2018-11-30 10:59:32 +11:00
parent 78d8779641
commit d37d69c3a7

View File

@@ -163,10 +163,14 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
slot = ship.internal.filter(a => a.maxClass === 4).filter(a => a.maxClass >= fs.class) slot = ship.internal.filter(a => a.maxClass === 4).filter(a => a.maxClass >= fs.class)
.sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString())) .sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString()))
[0]; [0];
if (fs) {
ship.use(slot, fs); ship.use(slot, fs);
}
} else { } else {
if (fs) {
ship.use(slot, fs); ship.use(slot, fs);
} }
}
} else if (fsd.class === 6 && fsd.rating === 'A') { } else if (fsd.class === 6 && fsd.rating === 'A') {
let fs = ModuleUtils.findInternal('fs', 6, 'B'); let fs = ModuleUtils.findInternal('fs', 6, 'B');
let slot = ship.internal.filter(a => a.maxClass >= 6) let slot = ship.internal.filter(a => a.maxClass >= 6)
@@ -176,10 +180,14 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
if (slot.m) { if (slot.m) {
fs = ModuleUtils.findInternal('fs', 5, 'A'); fs = ModuleUtils.findInternal('fs', 5, 'A');
slot = ship.internal.filter(a => a.maxClass === 5)[0]; slot = ship.internal.filter(a => a.maxClass === 5)[0];
if (fs) {
ship.use(slot, fs); ship.use(slot, fs);
}
} else { } else {
if (fs) {
ship.use(slot, fs); ship.use(slot, fs);
} }
}
} else if (fsd.class === 7 && fsd.rating === 'A') { } else if (fsd.class === 7 && fsd.rating === 'A') {
let fs = ModuleUtils.findInternal('fs', 7, 'B'); let fs = ModuleUtils.findInternal('fs', 7, 'B');
let slot = ship.internal.filter(a => a.maxClass >= 7).filter(a => a.maxClass >= fs.class) let slot = ship.internal.filter(a => a.maxClass >= 7).filter(a => a.maxClass >= fs.class)
@@ -188,11 +196,15 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
if (slot.m) { if (slot.m) {
fs = ModuleUtils.findInternal('fs', 6, 'A'); fs = ModuleUtils.findInternal('fs', 6, 'A');
slot = ship.internal.filter(a => a.maxClass === 6)[0]; slot = ship.internal.filter(a => a.maxClass === 6)[0];
if (fs) {
ship.use(slot, fs); ship.use(slot, fs);
}
} else { } else {
if (fs) {
ship.use(slot, fs); ship.use(slot, fs);
} }
} }
}
if (tier !== 1) { if (tier !== 1) {
const fuelNeeded = ship.standard[2].m.maxfuel * 3; const fuelNeeded = ship.standard[2].m.maxfuel * 3;
@@ -208,14 +220,18 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
if (ship.id === 'alliance_chieftain' || ship.id === 'alliance_crusader' || ship.id === 'federal_gunship' || ship.id === 'vulture') { if (ship.id === 'alliance_chieftain' || ship.id === 'alliance_crusader' || ship.id === 'federal_gunship' || ship.id === 'vulture') {
const hrp = ModuleUtils.findInternal('hrp', 3, 'D'); const hrp = ModuleUtils.findInternal('hrp', 3, 'D');
const slot = ship.internal.filter(e => e.eligible && e.maxClass === 3); const slot = ship.internal.filter(e => e.eligible && e.maxClass === 3);
if (hrp) {
ship.use(slot, hrp); ship.use(slot, hrp);
}
} else { } else {
const sg = ship.getAvailableModules().lightestShieldGenerator(ship.ladenMass); const sg = ship.getAvailableModules().lightestShieldGenerator(ship.ladenMass);
const slot = ship.internal.filter(a => !a.m) const slot = ship.internal.filter(a => !a.m)
.filter(a => a.maxClass >= sg.class) .filter(a => a.maxClass >= sg.class)
.sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString())) .sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString()))
[0]; [0];
if (sg) {
ship.use(slot, sg); ship.use(slot, sg);
}
if (engineeringLevel === 2) { if (engineeringLevel === 2) {
// ELP G3 // ELP G3
const shieldBP = getBlueprint('ShieldGenerator_Optimised', ship.findShieldGenerator()); const shieldBP = getBlueprint('ShieldGenerator_Optimised', ship.findShieldGenerator());
@@ -247,7 +263,9 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
.filter(a => a.maxClass >= sg.class) .filter(a => a.maxClass >= sg.class)
.sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString())) .sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString()))
[0]; [0];
if (sg) {
ship.use(slot, sg); ship.use(slot, sg);
}
if (engineeringLevel === 1) { if (engineeringLevel === 1) {
// ELP G3 // ELP G3
const shieldBP = getBlueprint('ShieldGenerator_Optimised', ship.findShieldGenerator()); const shieldBP = getBlueprint('ShieldGenerator_Optimised', ship.findShieldGenerator());
@@ -298,8 +316,9 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
.filter(d => d.rating === 'D') .filter(d => d.rating === 'D')
.filter(d => (d.engcap * 1.728) >= ship.boostEnergy) .filter(d => (d.engcap * 1.728) >= ship.boostEnergy)
.sort((a, b) => a.class.toString().localeCompare(b.class.toString()))[0]; .sort((a, b) => a.class.toString().localeCompare(b.class.toString()))[0];
if (pd) {
ship.use(ship.standard[4], pd); ship.use(ship.standard[4], pd);
}
// CE G5 // CE G5
const pdBP = getBlueprint('PowerDistributor_HighFrequency', ship.standard[4]); const pdBP = getBlueprint('PowerDistributor_HighFrequency', ship.standard[4]);
pdBP.grade = 5; pdBP.grade = 5;
@@ -311,15 +330,18 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
.filter(d => d.rating === 'D') .filter(d => d.rating === 'D')
.sort((a, b) => a.engcap > b.engcap) .sort((a, b) => a.engcap > b.engcap)
[0]; [0];
if (pd) {
ship.use(ship.standard[4], pd); ship.use(ship.standard[4], pd);
} }
}
} else { } else {
if (engineeringLevel === 3) { if (engineeringLevel === 3) {
const pd = ship.availCS.standard[4] const pd = ship.availCS.standard[4]
.filter(d => d.rating === 'D') .filter(d => d.rating === 'D')
.sort((a, b) => b.class.toString().localeCompare(a.class.toString()))[0]; .sort((a, b) => b.class.toString().localeCompare(a.class.toString()))[0];
if (pd) {
ship.use(ship.standard[4], pd); ship.use(ship.standard[4], pd);
}
// CE G5 // CE G5
const pdBP = getBlueprint('PowerDistributor_HighFrequency', ship.standard[4]); const pdBP = getBlueprint('PowerDistributor_HighFrequency', ship.standard[4]);
pdBP.grade = 5; pdBP.grade = 5;
@@ -330,69 +352,74 @@ export function dw2Build(ship, tier, engineeringLevel, role, gfsb, gpp, fighter)
const pd = ship.availCS.standard[4] const pd = ship.availCS.standard[4]
.filter(d => d.rating === 'D') .filter(d => d.rating === 'D')
.sort((a, b) => b.class.toString().localeCompare(a.class.toString()))[0]; .sort((a, b) => b.class.toString().localeCompare(a.class.toString()))[0];
if (pd) {
ship.use(ship.standard[4], pd); ship.use(ship.standard[4], pd);
} }
} }
}
if (ship.fighterHangars && fighter) { if (ship.fighterHangars && fighter) {
const slot = ship.internal.filter(s => s.maxClass >= 5 && !s.m) const slot = ship.internal.filter(s => s.maxClass >= 5 && !s.m)
.sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString())) .sort((a, b) => a.maxClass.toString().localeCompare(b.maxClass.toString()))
[0]; [0];
if (slot) {
const mod = ModuleUtils.findInternal('fh', 5, 'D'); const mod = ModuleUtils.findInternal('fh', 5, 'D');
if (slot && mod) {
ship.use(slot, mod); ship.use(slot, mod);
} }
} }
if (tier === 1) { if (tier === 1) {
ship.use(ship.standard[4], ModuleUtils.findStandard('pd', 1, 'D')); const pd = ModuleUtils.findStandard('pd', 1, 'D');
if (pd) {
ship.use(ship.standard[4]);
}
} }
let dssPriority = 0 let dssPriority = 0;
let srvPriority = 0 let srvPriority = 0;
let afmu = true let afmu = true;
let cargo = false let cargo = false;
let miningLaserPriority = 0 let miningLaserPriority = 0;
let refinery = false let refinery = false;
let collector = false let collector = false;
let prospector = false let prospector = false;
let miningTools = false let miningTools = false;
let refuelLimpets = false let refuelLimpets = false;
let repairLimpets = false let repairLimpets = false;
console.log(role) console.log(role);
if (role === 'exploration') { if (role === 'exploration') {
dssPriority = 2; dssPriority = 2;
afmu = true; afmu = true;
} else if (role === 'surface') { } else if (role === 'surface') {
dssPriority = 2 dssPriority = 2;
srvPriority = 2 srvPriority = 2;
} else if (role === 'materialProspector') { } else if (role === 'materialProspector') {
miningLaserPriority = 2 miningLaserPriority = 2;
srvPriority = 1 srvPriority = 1;
} else if (role === 'propectorMining') { } else if (role === 'propectorMining') {
dssPriority = 1 dssPriority = 1;
prospector = true prospector = true;
miningLaserPriority = 1 miningLaserPriority = 1;
cargo = true cargo = true;
miningTools = true miningTools = true;
} else if (role === 'bigRigMining') { } else if (role === 'bigRigMining') {
dssPriority = 1 dssPriority = 1;
miningLaserPriority = 2 miningLaserPriority = 2;
cargo = true cargo = true;
collector = true collector = true;
refinery = true refinery = true;
miningTools = true miningTools = true;
} else if (role === 'fuelRat') { } else if (role === 'fuelRat') {
refuelLimpets = true refuelLimpets = true;
cargo = true cargo = true;
srvPriority = 1 srvPriority = 1;
} else if (role === 'mechanic') { } else if (role === 'mechanic') {
repairLimpets = true repairLimpets = true;
cargo = true cargo = true;
srvPriority = 1 srvPriority = 1;
} else if (role === 'trucker') { } else if (role === 'trucker') {
cargo = true; cargo = true;
} }