diff --git a/misc/SSD Icons/new3.svg b/misc/SSD Icons/torpedo.svg
similarity index 100%
rename from misc/SSD Icons/new3.svg
rename to misc/SSD Icons/torpedo.svg
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte
index 47a73a0..555740d 100644
--- a/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/Arc.svelte
@@ -1,5 +1,5 @@
-
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
index 77fbb26..ad06add 100644
--- a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
@@ -18,6 +18,7 @@
import Scattergun from "./Scattergun.svelte";
import Needle from "./Needle.svelte";
import Graser from "./Graser/index.svelte";
+ import Torpedo from "./Torpedo/index.svelte";
const component = {
beam: Beam,
@@ -26,6 +27,7 @@
scattergun: Scattergun,
needle: Needle,
graser: Graser,
+ torpedo: Torpedo,
};
export let reqs = {};
diff --git a/src/lib/store/ship/weaponry/rules.ts b/src/lib/store/ship/weaponry/rules.ts
index 3c3d024..99c4e4d 100644
--- a/src/lib/store/ship/weaponry/rules.ts
+++ b/src/lib/store/ship/weaponry/rules.ts
@@ -33,7 +33,20 @@ type Graser = {
arcs: Arc[];
};
-export type Weapon = Beam | Submunition | PDS | Scattergun | Needle | Graser;
+type Torpedo = {
+ type: "torpedo";
+ weaponClass: 1 | 2 | 3 | 4;
+ arcs: Arc[];
+};
+
+export type Weapon =
+ | Beam
+ | Submunition
+ | PDS
+ | Scattergun
+ | Needle
+ | Graser
+ | Torpedo;
export const weaponTypes = [
{
@@ -67,6 +80,20 @@ export const weaponTypes = [
},
],
},
+ {
+ type: "torpedo",
+ name: "torpedo",
+ reqs: torpedoReqs,
+ initial: {
+ type: "torpedo",
+ weaponClass: 1,
+ arcs: ["F"],
+ } as any as Torpedo,
+ options: {
+ maxClass: 4,
+ nbrArcs: [1, 2, 3, "broadside"],
+ },
+ },
{
type: "submunition",
name: "submunition pack",
@@ -153,7 +180,7 @@ function beamReqs({ weaponClass, arcs }: Beam) {
};
}
-function graserReqs({ weaponClass, arcs }: Beam) {
+function graserReqs({ weaponClass, arcs }: Graser) {
let mass: number;
if (weaponClass === 1) {
@@ -185,3 +212,20 @@ function graserReqs({ weaponClass, arcs }: Beam) {
cost: 4 * mass,
};
}
+
+function torpedoReqs({ weaponClass, arcs }: Torpedo): Reqs {
+ let mass: number = 4;
+
+ if (isBroadside(arcs)) {
+ mass += 2;
+ } else {
+ mass += arcs.length - 1;
+ }
+
+ mass = mass * Math.pow(2, weaponClass - 1);
+
+ return {
+ mass,
+ cost: 3 * mass,
+ };
+}
diff --git a/src/routes/export/print/PrintShip/Identification.svelte b/src/routes/export/print/PrintShip/Identification.svelte
index c9a7087..0abe34f 100644
--- a/src/routes/export/print/PrintShip/Identification.svelte
+++ b/src/routes/export/print/PrintShip/Identification.svelte
@@ -10,15 +10,14 @@
{shipType}
- {cost} paid {mass} weight
+ {reqs.cost} paid {reqs.mass} weight
diff --git a/src/routes/export/print/PrintShip/Weapons/printComps.js b/src/routes/export/print/PrintShip/Weapons/printComps.js
index af00c95..2f82b89 100644
--- a/src/routes/export/print/PrintShip/Weapons/printComps.js
+++ b/src/routes/export/print/PrintShip/Weapons/printComps.js
@@ -4,8 +4,10 @@ import PDS from "./PDS.svelte";
import Scattergun from "./Scattergun.svelte";
import Needlebeam from "./Needlebeam.svelte";
import Graser from "./Graser/index.svelte";
+import Torpedo from "./Torpedo/index.svelte";
export default {
+ torpedo: Torpedo,
graser: Graser,
beam: Beam,
submunition: Submunition,