Move tail values to Value

The cost of applying each tail has been broken down and moved to value.

Skipping tails remains slightly flawed, and will be cleaned up in the
future.

Appendage has once again been cleaned up and sorted lexicographically.

Removing and skipping tails remain at the bottom, as they must be done
after adding tails.

Due to integer overflow issues, both Value.EYELESS_SKULL and
Value.OBSIDIAN_TAIL now have a value of cp_model.INT32_MAX/2. If this
issue recurs, dividing by successively larger powers of 2 may be
necessary.
This commit is contained in:
Jeremy Saklad 2021-06-12 15:51:56 -05:00
parent 276ead2fbb
commit 1204909151
Signed by: Jeremy Saklad
GPG Key ID: 9CA2149583EDBF84
1 changed files with 71 additions and 17 deletions

View File

@ -75,7 +75,7 @@ class Value(enum.Enum):
# Eyeless Skull # Eyeless Skull
# No consistent source # No consistent source
EYELESS_SKULL = cp_model.INT32_MAX EYELESS_SKULL = cp_model.INT32_MAX/2
# Holy Relic of the Thigh of Saint Fiacre # Holy Relic of the Thigh of Saint Fiacre
# Jericho Locks statue, 2 at a time # Jericho Locks statue, 2 at a time
@ -145,6 +145,10 @@ class Value(enum.Enum):
# Nevercold Brass Sliver # Nevercold Brass Sliver
NEVERCOLD_BRASS = 1 NEVERCOLD_BRASS = 1
# Obsidian Chitin Tail
# No consistent source
OBSIDIAN_TAIL = cp_model.INT32_MAX/2
# Parabolan Orange-apple # Parabolan Orange-apple
# Parabolan Base-camp, electricity and hedonism, 2 at a time # Parabolan Base-camp, electricity and hedonism, 2 at a time
ORANGE_APPLE = (2*ACTION + 100*BONE_FRAGMENT + 21*HEDONIST_CP)/2 ORANGE_APPLE = (2*ACTION + 100*BONE_FRAGMENT + 21*HEDONIST_CP)/2
@ -188,6 +192,10 @@ class Value(enum.Enum):
# Laboratory Research # Laboratory Research
SURVEY = 6*ACTION/25 SURVEY = 6*ACTION/25
# Plaster Tail Bones
# Carpenter's Granddaughter, 2 at a time
PLASTER_TAIL_BONES = (ACTION + 10*SURVEY)/2
# Human Ribcage # Human Ribcage
# Ealing Gardens # Ealing Gardens
HUMAN_RIBCAGE = ACTION + 15*SURVEY HUMAN_RIBCAGE = ACTION + 15*SURVEY
@ -242,6 +250,10 @@ class Value(enum.Enum):
# Rumour of the Upper River # Rumour of the Upper River
RUMOUR_OF_THE_UPPER_RIVER = 250 RUMOUR_OF_THE_UPPER_RIVER = 250
# Jet Black Stinger
# Hunting with Sophia's, 5 at a time
BLACK_STINGER = (ACTION + 5*RUMOUR_OF_THE_UPPER_RIVER)/5
# Prismatic Frame # Prismatic Frame
# Expedition at Station VIII # Expedition at Station VIII
PRISMATIC_FRAME = ACTION + OIL_OF_COMPANIONSHIP + 98*RUMOUR_OF_THE_UPPER_RIVER PRISMATIC_FRAME = ACTION + OIL_OF_COMPANIONSHIP + 98*RUMOUR_OF_THE_UPPER_RIVER
@ -277,6 +289,10 @@ class Value(enum.Enum):
# Ealing Gardens Butcher, 2 at a time # Ealing Gardens Butcher, 2 at a time
TERROR_BIRD_WING = (ACTION + 100*BONE_FRAGMENT + 25*WARM_AMBER)/2 TERROR_BIRD_WING = (ACTION + 100*BONE_FRAGMENT + 25*WARM_AMBER)/2
# Tomb-Lion's Tail
# Ealing Gardens Butcher
TOMB_LION_TAIL = ACTION + 200*BONE_FRAGMENT + 2*WARM_AMBER
# Warbler Skeleton # Warbler Skeleton
# Ealing Gardens Butcher # Ealing Gardens Butcher
WARBLER_SKELETON = ACTION + 130*BONE_FRAGMENT + 2*WARM_AMBER WARBLER_SKELETON = ACTION + 130*BONE_FRAGMENT + 2*WARM_AMBER
@ -725,6 +741,14 @@ class Appendage(enum.Enum):
menace = -1 menace = -1
) )
BLACK_STINGER = Action("Apply a Jet Black Stinger to your (Skeleton Type)",
cost = Value.ACTION.value + Value.BLACK_STINGER.value,
value = 50,
tails_needed = -1,
tails = 1,
menace = 2
)
CRUSTACEAN_PINCER = Action( CRUSTACEAN_PINCER = Action(
"Apply a Crustacean Pincer to your (Skeleton Type)", "Apply a Crustacean Pincer to your (Skeleton Type)",
cost = Value.ACTION.value + Value.CRUSTACEAN_PINCER.value, cost = Value.ACTION.value + Value.CRUSTACEAN_PINCER.value,
@ -820,6 +844,24 @@ class Appendage(enum.Enum):
amalgamy = 1 amalgamy = 1
) )
OBSIDIAN_TAIL = Action(
"Apply an Obsidian Chitin Tail to your (Skeleton Type)",
cost = Value.ACTION.value + Value.OBSIDIAN_TAIL.value,
value = 500,
tails_needed = -1,
tails = 1,
amalgamy = 1
)
PLASTER_TAIL_BONES = Action(
"Apply Plaster Tail Bones to your (Skeleton Type)",
cost = Value.ACTION.value + Value.PLASTER_TAIL_BONES.value,
value = 250,
tails_needed = -1,
tails = 1,
implausibility = 1
)
TERROR_BIRD_WING = Action( TERROR_BIRD_WING = Action(
"Add the Wing of a Young Terror Bird to your (Skeleton Type)", "Add the Wing of a Young Terror Bird to your (Skeleton Type)",
cost = Value.ACTION.value + Value.TERROR_BIRD_WING.value, cost = Value.ACTION.value + Value.TERROR_BIRD_WING.value,
@ -830,6 +872,15 @@ class Appendage(enum.Enum):
menace = 1 menace = 1
) )
TOMB_LION_TAIL = Action(
"Apply a Tomb-Lion's Tail to your (Skeleton Type)",
cost = Value.ACTION.value + Value.TOMB_LION_TAIL.value,
value = 250,
tails_needed = -1,
tails = 1,
antiquity = 1
)
UNIDENTIFIED_THIGH = Action( UNIDENTIFIED_THIGH = Action(
"Apply an Unidentified Thigh Bone to your (Skeleton Type)", "Apply an Unidentified Thigh Bone to your (Skeleton Type)",
cost = Value.ACTION.value + Value.UNIDENTIFIED_THIGH.value, cost = Value.ACTION.value + Value.UNIDENTIFIED_THIGH.value,
@ -838,6 +889,15 @@ class Appendage(enum.Enum):
legs = 1 legs = 1
) )
WITHERED_TAIL = Action(
"Apply a Withered Tentacle as a tail on your (Skeleton Type)",
cost = Value.ACTION.value + Value.WITHERED_TENTACLE.value,
value = 250,
tails_needed = -1,
tails = 1,
antiquity = -1
)
WITHERED_TENTACLE = Action( WITHERED_TENTACLE = Action(
"Put a Withered Tentacle on your (Skeleton Type)", "Put a Withered Tentacle on your (Skeleton Type)",
cost = Value.ACTION.value + Value.WITHERED_TENTACLE.value, cost = Value.ACTION.value + Value.WITHERED_TENTACLE.value,
@ -847,24 +907,18 @@ class Appendage(enum.Enum):
antiquity = -1 antiquity = -1
) )
# Carpenter's Granddaughter, 2 at a time REMOVE_TAIL = Action(
PLASTER_TAIL = Action("Apply Plaster Tail Bones to your (Skeleton Type)", cost = Value.ACTION.value*1.5 + Value.SURVEY.value*5, value = 250, tails_needed = -1, tails = 1, implausibility = 1) "Remove the tail from your (Skeleton Type)",
cost = Value.ACTION.value,
TOMB_LION_TAIL = Action("Apply a Tomb-Lion's Tail to your (Skeleton Type)", cost = 220 + Value.ACTION.value*2, value = 250, tails_needed = -1, tails = 1, antiquity = 1) tails = -1
)
# Geology of Winewound
BLACK_STINGER = Action("Apply a Jet Black Stinger to your (Skeleton Type)", cost = Value.ACTION.value*2 + Value.SURVEY.value, value = 50, tails_needed = -1, tails = 1, menace = 2)
# No consistent source
# OBSIDIAN_TAIL = Action("Apply an Obsidian Chitin Tail to your (Skeleton Type)", cost = cp_model.INT32_MAX, value = 500, tails_needed = -1, tails = 1, amalgamy = 1)
# Helicon House, 3 at a time
WITHERED_TAIL = Action("Apply a Withered Tentacle as a tail on your (Skeleton Type)", cost = 50/3 + Value.ACTION.value*4/3, value = 250, tails_needed = -1, tails = 1, antiquity = -1)
# This actually sets Skeleton: Tails Needed to 0 # This actually sets Skeleton: Tails Needed to 0
SKIP_TAILS = Action("Decide your Tailless Animal needs no tail", cost = Value.ACTION.value, tails_needed = -1) SKIP_TAILS = Action(
"Decide your Tailless Animal needs no tail",
REMOVE_TAIL = Action("Remove the tail from your (Skeleton Type)", cost = Value.ACTION.value, tails = -1) cost = Value.ACTION.value,
tails_needed = -1
)
def __str__(self): def __str__(self):
return str(self.value) return str(self.value)