Move Skull values to Value enumeration

The cost of applying each skull has been broken down and moved to Value.

Skull has been cleaned up and ordered lexicographically.
This commit is contained in:
Jeremy Saklad 2021-06-09 12:56:24 -05:00
parent f1e2f75cf6
commit 245248f320
Signed by: Jeremy Saklad
GPG Key ID: 9CA2149583EDBF84

View File

@ -35,6 +35,10 @@ class Value(enum.Enum):
# Bone Fragment
BONE_FRAGMENT = 1
# Bright Brass Skull
# Merrigans Exchange
BRASS_SKULL = 6250
# Cartographer's Hoard
CARTOGRAPHERS_HOARD = 31250
@ -45,23 +49,62 @@ class Value(enum.Enum):
# Volume of Collated Research
COLLATED_RESEARCH = 250
# Favours: The Docks
# Various opportunity cards
DOCK_FAVOURS = ACTION
# Eyeless Skull
# No consistent source
EYELESS_SKULL = cp_model.INT32_MAX
# Five-Pointed Ribcage
# Upwards
FIVE_POINTED_RIBCAGE = 9*ACTION + CARTOGRAPHERS_HOARD
# Esteem of the Guild
# Jericho Parade, 2 at a time
GUILD_ESTEEM = (ACTION + 5*DOCK_FAVOURS)/2
# Skull in Coral
# Persephone, 1-2 at a time
CORAL_SKULL = 1.5*(2*ACTION + 3*GUILD_ESTEEM)
# Headless Skeleton
# These are accumulated while acquiring other qualities.
HEADLESS_SKELETON = 0
# Hinterland Scrip
HINTERLAND_SCRIP = 50
# Crate of Incorruptible Biscuits
INCORRUPTIBLE_BISCUITS = 250
# Inkling of Identity
INKLING_OF_IDENTITY = 10
# A Custom-Engraved Skull
# Feast of the Exceptional Rose, sent by one player and accepted by another
ENGRAVED_SKULL = 2*ACTION + 200*INKLING_OF_IDENTITY
# Nevercold Brass Sliver
NEVERCOLD_BRASS = 1
# Pentagrammic Skull
# Upwards
PENTAGRAMMIC_SKULL = 9*ACTION
# Hand-picked Peppercaps
PEPPERCAPS = HINTERLAND_SCRIP
# Knob of Scintillack
SCINTILLACK = 250
# Searing Enigma
SEARING_ENIGMA = 6250
# Carved Ball of Stygian Ivory
STYGIAN_IVORY = 250
# Preserved Surface Blooms
SURFACE_BLOOMS = 250
@ -105,6 +148,18 @@ class Value(enum.Enum):
# Helicon House
FLOURISHING_RIBCAGE = ACTION + HUMAN_RIBCAGE + THORNED_RIBCAGE
# Time Remaining in the Woods
# Compel Ghillie, 5 at a time
TIME_REMAINING_IN_THE_WOODS = (ACTION + 4*COLLATED_RESEARCH)/5
# Observation: Fox
# Balmoral Woods
FOX_OBSERVATION = 10*ACTION + 8*TIME_REMAINING_IN_THE_WOODS
# Doubled Skull
# Keeper of the Marigold Menagerie
DOUBLED_SKULL = ACTION + FOX_OBSERVATION
# Nodule of Trembling Amber
TREMBLING_AMBER = 1250
@ -112,6 +167,10 @@ class Value(enum.Enum):
# Helicon House
RIBCAGE_WITH_EIGHT_SPINES = ACTION + 3*SEARING_ENIGMA + THORNED_RIBCAGE + 3*TREMBLING_AMBER
# Rubbery Skull
# Flute Street, including travel due to quality cap
RUBBERY_SKULL = 25*ACTION
# Rumour of the Upper River
RUMOUR_OF_THE_UPPER_RIVER = 250
@ -122,6 +181,18 @@ class Value(enum.Enum):
# Nodule of Warm Amber
WARM_AMBER = 10
# Horned Skull
# Ealing Gardens Butcher
HORNED_SKULL = ACTION + 1000*BONE_FRAGMENT + 5*WARM_AMBER
# Plated Skull
# Ealing Gardens Butcher
PLATED_SKULL = ACTION + 1750*BONE_FRAGMENT + INCORRUPTIBLE_BISCUITS + 25*WARM_AMBER
# Sabre-toothed Skull
# Ealing Gardens Butcher
SABRE_TOOTHED_SKULL = ACTION + 4900*BONE_FRAGMENT + 125*WARM_AMBER
# Warbler Skeleton
# Ealing Gardens Butcher
WARBLER_SKELETON = ACTION + 130*BONE_FRAGMENT + 2*WARM_AMBER
@ -387,41 +458,143 @@ class Torso(enum.Enum):
# Actions that are taken immediately after starting a skeleton.
class Skull(enum.Enum):
BRASS_SKULL = Action("Affix a Bright Brass Skull to your (Skeleton Type)", cost = 6450 + Value.ACTION.value, value = 6500, skulls_needed = -1, skulls = 1, implausibility = 2)
BAPTIST_SKULL = Action(
"Duplicate the skull of John the Baptist, if you can call that a skull",
cost = Value.ACTION.value + 500*Value.BONE_FRAGMENT.value + 10*Value.PEPPERCAPS.value,
value = 1500,
skulls_needed = -1,
skulls = 1,
counter_church = 2
)
# No consistent source
# EYELESS_SKULL = Action("Affix an Eyeless Skull to your (Skeleton Type)", cost = cp_model.INT32_MAX, value = 3000, skulls_needed = -1, skulls = 1, menace = 2)
BRASS_SKULL = Action(
"Affix a Bright Brass Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.BRASS_SKULL.value + 200*Value.NEVERCOLD_BRASS.value,
value = 6500,
skulls_needed = -1,
skulls = 1,
implausibility = 2
)
# Feast of the Exceptional Rose, 200 Inklings of Identity, action to send and receive it
# ENGRAVED_SKULL = Action("Affix a Custom-Engraved Skull to your (Skeleton Type)", cost = 2000 + Value.ACTION.value*2, value = 10000, skulls_needed = -1, skulls = 1, exhaustion = 2)
CORAL_SKULL = Action(
"Affix a Skull in Coral to your (Skeleton Type)",
cost = Value.ACTION.value + Value.CORAL_SKULL.value + Value.SCINTILLACK.value,
value = 1750,
skulls_needed = -1,
skulls = 1,
amalgamy = 2
)
HORNED_SKULL = Action("Affix a Horned Skull to your (Skeleton Type)", cost = 1050 + Value.ACTION.value*2, value = 1250, skulls_needed = -1, skulls = 1, antiquity = 1, menace = 2)
DOUBLED_SKULL = Action(
"Affix a Doubled Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.DOUBLED_SKULL.value,
value = 6250,
skulls_needed = -1,
skulls = 2,
amalgamy = 1,
antiquity = 2
)
SABRE_TOOTHED_SKULL = Action("Affix a Sabre-toothed Skull to your (Skeleton Type)", cost = 6150 + Value.ACTION.value*2, value = 6250, skulls_needed = -1, skulls = 1, antiquity = 1, menace = 1)
# Adds Exhaustion
# ENGRAVED_SKULL = Action(
# "Affix a Custom-Engraved Skull to your (Skeleton Type)",
# cost = Value.ACTION.value + Value.ENGRAVED_SKULL.value,
# value = 10000,
# skulls_needed = -1,
# skulls = 1,
# exhaustion = 2
# )
# Upwards
PENTAGRAMMIC_SKULL = Action("Affix a Pentagrammic Skull to your (Skeleton Type)", cost = Value.ACTION.value*10, value = 1250, skulls_needed = -1, skulls = 1, amalgamy = 2, menace = 1)
EYELESS_SKULL = Action(
"Affix an Eyeless Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.EYELESS_SKULL.value,
value = 3000,
skulls_needed = -1,
skulls = 1,
menace = 2
)
PLATED_SKULL = Action("Affix a Plated Skull to your (Skeleton Type)", cost = 2250 + Value.ACTION.value*2, value = 2500, skulls_needed = -1, skulls = 1, menace = 2)
HORNED_SKULL = Action(
"Affix a Horned Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.HORNED_SKULL.value,
value = 1250,
skulls_needed = -1,
skulls = 1,
antiquity = 1,
menace = 2
)
# Flute Street, including travel due to quality cap
RUBBERY_SKULL = Action("Affix a Rubbery Skull to your (Skeleton Type)", cost = Value.ACTION.value*26, value = 600, skulls_needed = -1, skulls = 1, amalgamy = 1)
# Seeking the Name of Mr. Eaten
# OWN_SKULL = Action(
# "Duplicate your own skull and affix it here",
# cost = Value.ACTION.value + 1000*Value.BONE_FRAGMENT.value,
# value = -250,
# skulls_needed = -1,
# skulls = 1
# )
# OWN_SKULL = Action("Duplicate your own skull and affix it here", cost = 1000 + Value.ACTION.value, value = -250, skulls_needed = -1, skulls = 1)
PENTAGRAMMIC_SKULL = Action(
"Affix a Pentagrammic Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.PENTAGRAMMIC_SKULL.value,
value = 1250,
skulls_needed = -1,
skulls = 1,
amalgamy = 2,
menace = 1
)
BAPTIST_SKULL = Action("Duplicate the skull of John the Baptist, if you can call that a skull", cost = 1000 + Value.ACTION.value, value = 1500, skulls_needed = -1, skulls = 1, counter_church = 2)
PLATED_SKULL = Action(
"Affix a Plated Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.PLATED_SKULL.value,
value = 2500,
skulls_needed = -1,
skulls = 1,
menace = 2
)
# Persephone, 6 actions (Favours: the Docks) for 2 Esteem of the Guild
CORAL_SKULL = Action("Affix a Skull in Coral to your (Skeleton Type)", cost = Value.ACTION.value*25/3, value = 1750, skulls_needed = -1, skulls = 1, amalgamy = 2)
RUBBERY_SKULL = Action(
"Affix a Rubbery Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.RUBBERY_SKULL.value,
value = 600,
skulls_needed = -1,
skulls = 1,
amalgamy = 1
)
VAKE_SKULL = Action("Duplicate the Vake's skull and use it to decorate your (Skeleton Type)", cost = 6000 + Value.ACTION.value, value = 6500, skulls_needed = -1, skulls = 1, menace = 3)
SABRE_TOOTHED_SKULL = Action(
"Affix a Sabre-toothed Skull to your (Skeleton Type)",
cost = Value.ACTION.value + Value.SABRE_TOOTHED_SKULL.value,
value = 6250,
skulls_needed = -1,
skulls = 1,
antiquity = 1,
menace = 1
)
# VICTIM_SKULL = Action("Cap this with a victims skull", cost = Value.ACTION.value, value = 250, skulls_needed = -1, skulls = 1)
STYGIAN_IVORY = Action(
"Use a Carved Ball of Stygian Ivory to cap off your (Skeleton Type)",
cost = Value.ACTION.value + Value.STYGIAN_IVORY.value,
value = 250,
skulls_needed = -1
)
# Balmoral Woods (also gives Thorned Ribcage)
DOUBLED_SKULL = Action("Affix a Doubled Skull to your (Skeleton Type)", cost = 2000 + Value.ACTION.value*14, value = 6250, skulls_needed = -1, skulls = 2, amalgamy = 1, antiquity = 2)
VAKE_SKULL = Action(
"Duplicate the Vake's skull and use it to decorate your (Skeleton Type)",
cost = Value.ACTION.value + 6000*Value.BONE_FRAGMENT.value,
value = 6500,
skulls_needed = -1,
skulls = 1,
menace = 3
)
STYGIAN_IVORY = Action("Use a Carved Ball of Stygian Ivory to cap off your (Skeleton Type)", cost = 250 + Value.ACTION.value, value = 250, skulls_needed = -1)
# Licentiate
# VICTIM_SKULL = Action(
# "Cap this with a victims skull",
# cost = Value.ACTION.value,
# value = 250,
# skulls_needed = -1,
# skulls = 1
# )
def __str__(self):
return str(self.value)