From 44fdad6bff1bfbfa62f8c77af6dbc33dcb564ea7 Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Thu, 11 May 2023 15:48:21 -0400 Subject: [PATCH] add heavy missiles to the printShip --- .../Weaponry/Weapon/HeavyMissile/index.svelte | 72 +++++++++++++++++++ .../ShipEdit/Weaponry/Weapon/index.svelte | 2 + src/lib/shipDux/weaponry/weapons.ts | 10 +++ src/lib/store/ship/weaponry/rules.ts | 36 +++++++++- 4 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/ShipEdit/Weaponry/Weapon/HeavyMissile/index.svelte 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;