60 lines
977 B
JavaScript
60 lines
977 B
JavaScript
|
|
export function weapon_cost_mass(weapon){
|
|
let cost = 0;
|
|
let mass = 0;
|
|
|
|
if( weapon.weapon_type === 'beam' ) {
|
|
return beam_cost_mass(weapon);
|
|
}
|
|
|
|
|
|
return { cost, mass };
|
|
}
|
|
|
|
const is_broadside = arcs => {
|
|
if( arcs.length !== 4 ) return false;
|
|
|
|
// that'd be A or F
|
|
return !arcs.some( a => a.length === 1 );
|
|
}
|
|
|
|
function beam_cost_mass({weapon_class, arcs}) {
|
|
let mass;
|
|
if( weapon_class === 1 ) {
|
|
mass = 1;
|
|
}
|
|
|
|
if( weapon_class == 2 ) {
|
|
mass = 2 + (arcs.length > 3 ? 1 : 0);
|
|
}
|
|
|
|
|
|
if( weapon_class == 3 ) {
|
|
mass = 4;
|
|
|
|
if( is_broadside(arcs) ) {
|
|
mass += 2;
|
|
}
|
|
else {
|
|
mass += arcs.length - 1;
|
|
}
|
|
}
|
|
|
|
if( weapon_class == 4 ) {
|
|
mass = 8;
|
|
|
|
if( is_broadside(arcs) ) {
|
|
mass += 4;
|
|
}
|
|
else {
|
|
mass += 2*(arcs.length - 1);
|
|
}
|
|
}
|
|
|
|
return {
|
|
mass, cost: 3 * mass
|
|
}
|
|
|
|
|
|
}
|