diff --git a/src/game/modifiers.tsx b/src/game/modifiers.tsx
index 1ee3905..d80b45a 100644
--- a/src/game/modifiers.tsx
+++ b/src/game/modifiers.tsx
@@ -276,8 +276,12 @@ export function createExponentialModifier<T extends ExponentialModifierOptions>(
 export function createSequentialModifier<
     T extends Modifier[],
     S = T extends WithRequired<Modifier, "invert">[]
-        ? WithRequired<Modifier, "description" | "invert">
-        : Omit<WithRequired<Modifier, "description">, "invert">
+        ? T extends WithRequired<Modifier, "getFormula">[]
+            ? WithRequired<Modifier, "description" | "invert" | "getFormula">
+            : Omit<WithRequired<Modifier, "description" | "getFormula">, "invert">
+        : T extends WithRequired<Modifier, "invert">[]
+        ? WithRequired<Modifier, "getFormula" | "invert">
+        : Omit<WithRequired<Modifier, "getFormula">, "invert">
 >(modifiersFunc: () => T): S {
     return createLazyProxy(() => {
         const modifiers = modifiersFunc();
@@ -296,10 +300,14 @@ export function createSequentialModifier<
                 : undefined,
             getFormula: modifiers.every(m => m.getFormula != null)
                 ? (gain: FormulaSource) =>
-                      modifiers
+                      modifiers.reduce((acc, curr) => {
+                          if (curr.enabled == null || curr.enabled === true) {
+                              // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+                              return curr.getFormula!(acc);
+                          }
                           // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-                          .reduce((acc, curr) => Formula.if(acc, curr.enabled ?? true,
-                            acc => curr.getFormula!(acc), acc => acc), gain)
+                          return Formula.if(acc, curr.enabled, acc => curr.getFormula!(acc));
+                      }, gain)
                 : undefined,
             enabled: modifiers.some(m => m.enabled != null)
                 ? computed(() => modifiers.filter(m => unref(m.enabled) !== false).length > 0)
diff --git a/tests/game/modifiers.test.ts b/tests/game/modifiers.test.ts
index d5e186d..fdf0f67 100644
--- a/tests/game/modifiers.test.ts
+++ b/tests/game/modifiers.test.ts
@@ -199,6 +199,20 @@ describe("Sequential Modifiers", () => {
             // So long as one is true or undefined, enable should be true
             expect(unref(modifier.enabled)).toBe(true);
         });
+        test("respects enabled", () => {
+            const value = ref(10);
+            const enabled = ref(false);
+            const modifier = createSequentialModifier(() => [
+                createMultiplicativeModifier(() => ({ multiplier: 5, enabled }))
+            ]);
+            expect(modifier.getFormula(Formula.variable(value)).evaluate()).compare_tolerance(
+                value.value
+            );
+            enabled.value = true;
+            expect(modifier.getFormula(Formula.variable(value)).evaluate()).not.compare_tolerance(
+                value.value
+            );
+        });
     });
 
     describe("applies smallerIsBetter correctly", () => {