From b4319464a195878b9a0a8b56c9e3c9dc7e99eb40 Mon Sep 17 00:00:00 2001 From: Jeremy Saklad Date: Thu, 26 May 2022 07:32:04 -0600 Subject: [PATCH] feat: Add Segmented Ribcage to skulls This skull is unique for requiring a specific torso style, and for adding additional limb slots. --- bonemarketsolver/data/skulls.py | 10 ++++++++++ bonemarketsolver/solve.py | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/bonemarketsolver/data/skulls.py b/bonemarketsolver/data/skulls.py index e141d19..918930d 100644 --- a/bonemarketsolver/data/skulls.py +++ b/bonemarketsolver/data/skulls.py @@ -124,6 +124,16 @@ class Skull(Enum): menace = 1 ) + # Requires Torso Style 110 + SEGMENTED_RIBCAGE = Action( + 'Affix a Segmented Ribcage as the "skull"', + cost = Cost.ACTION.value + Cost.SEGMENTED_RIBCAGE.value, + value = 250, + skulls_needed = -1, + limbs_needed = 4, + segments = 1 + ) + STYGIAN_IVORY = Action( "Use a Carved Ball of Stygian Ivory to cap off your (Skeleton Type)", cost = Cost.ACTION.value + Cost.STYGIAN_IVORY.value, diff --git a/bonemarketsolver/solve.py b/bonemarketsolver/solve.py index 568a19f..c27e203 100644 --- a/bonemarketsolver/solve.py +++ b/bonemarketsolver/solve.py @@ -445,6 +445,12 @@ def Solve(shadowy_level, bone_market_fluctuations = None, zoological_mania = Non .OnlyEnforceIf(actions[Declaration.CURATOR]) + # Skull requirements + + model.Add(torso_style == 110) \ + .OnlyEnforceIf(model.BoolExpression(actions[Skull.SEGMENTED_RIBCAGE] > 0)) + + # Declaration requirements model.AddIf(actions[Declaration.HUMANOID],