diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte
new file mode 100644
index 0000000..989666f
--- /dev/null
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte
@@ -0,0 +1,72 @@
+heavy missile
+
+
+
setFirstArc(detail)}
+ />
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
index ad06add..c330b45 100644
--- a/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
+++ b/src/lib/components/ShipEdit/Weaponry/Weapon/index.svelte
@@ -19,6 +19,7 @@
import Needle from "./Needle.svelte";
import Graser from "./Graser/index.svelte";
import Torpedo from "./Torpedo/index.svelte";
+ import Missile from "./HeavyMissile/index.svelte";
const component = {
beam: Beam,
@@ -28,6 +29,7 @@
needle: Needle,
graser: Graser,
torpedo: Torpedo,
+ heavyMissile: Missile,
};
export let reqs = {};
diff --git a/src/lib/shipDux/weaponry/weapons.ts b/src/lib/shipDux/weaponry/weapons.ts
index 3a0f98d..bdb974a 100644
--- a/src/lib/shipDux/weaponry/weapons.ts
+++ b/src/lib/shipDux/weaponry/weapons.ts
@@ -35,6 +35,16 @@ export const weaponTypes = [
reqs: { mass: 2, cost: 6 },
initial: { arc: "F" },
},
+ {
+ name: "heavy missile",
+ type: "missile",
+ reqs: missileReqs,
+ initial: {
+ arcs: ["FS", "F", "FP"],
+ extended: false,
+ multiState: false,
+ },
+ },
];
const weaponsSlice = createSlice({
diff --git a/src/lib/store/ship/weaponry/rules.ts b/src/lib/store/ship/weaponry/rules.ts
index 99c4e4d..001ad74 100644
--- a/src/lib/store/ship/weaponry/rules.ts
+++ b/src/lib/store/ship/weaponry/rules.ts
@@ -27,6 +27,13 @@ type Scattergun = { type: "scattergun" };
type Needle = { type: "needle"; arc: Arc };
+type HeavyMissile = {
+ type: "heavyMissile";
+ arcs: Arc[];
+ extended: boolean;
+ multiStage: boolean;
+};
+
type Graser = {
type: "graser";
weaponClass: 1 | 2 | 3;
@@ -46,7 +53,8 @@ export type Weapon =
| Scattergun
| Needle
| Graser
- | Torpedo;
+ | Torpedo
+ | HeavyMissile;
export const weaponTypes = [
{
@@ -120,6 +128,17 @@ export const weaponTypes = [
reqs: { mass: 2, cost: 6 },
initial: { arc: "F", type: "needle" },
},
+ {
+ name: "heavy missile",
+ type: "heavyMissile",
+ reqs: missileReqs,
+ initial: {
+ arcs: ["FP", "F", "FS"],
+ extended: false,
+ multiStage: false,
+ type: "heavyMissile",
+ },
+ },
];
export function weaponReqs(weapon): Reqs {
@@ -213,6 +232,21 @@ function graserReqs({ weaponClass, arcs }: Graser) {
};
}
+function missileReqs({ extended, multiStage }: HeavyMissile): Reqs {
+ let mass = 2;
+ let cost = 6;
+ if (extended) {
+ mass += 1;
+ cost += 3;
+ }
+ if (multiStage) {
+ mass += 2;
+ cost *= 2;
+ }
+
+ return { cost, mass };
+}
+
function torpedoReqs({ weaponClass, arcs }: Torpedo): Reqs {
let mass: number = 4;