Bone-Market-Solver/bonemarketsolver/data/skulls.py

157 lines
5.5 KiB
Python
Raw Normal View History

__all__ = ['Skull']
__author__ = "Jeremy Saklad"
2021-08-03 17:19:21 +00:00
from enum import Enum
from .costs import Cost
from ..objects.action import Action
2021-08-25 13:58:32 +00:00
from ..challenge_functions import narrow_challenge, mean_outcome
from ..read_char import Char
2021-08-03 17:19:21 +00:00
class Skull(Enum):
"""An action that is taken immediately after starting a skeleton."""
BAPTIST_SKULL = Action(
"Duplicate the skull of John the Baptist, if you can call that a skull",
2021-08-25 13:58:32 +00:00
cost = Cost.ACTION.value * 1 / narrow_challenge(6, Char.ARTISAN_OF_RED_SCIENCE.value) + 500*Cost.BONE_FRAGMENT.value + 10*Cost.PEPPERCAPS.value,
2021-08-03 17:19:21 +00:00
value = 1250,
skulls_needed = -1,
skulls = 1,
counter_church = 1
)
BRASS_SKULL = Action(
"Affix a Bright Brass Skull to your (Skeleton Type)",
2021-08-25 13:58:32 +00:00
cost = Cost.ACTION.value + Cost.BRASS_SKULL.value + mean_outcome(200*Cost.NEVERCOLD_BRASS.value, 0, narrow_challenge(6, Char.MITHRIDACY.value)),
value = mean_outcome(6500, 6000, narrow_challenge(6, Char.MITHRIDACY.value)),
2021-08-03 17:19:21 +00:00
skulls_needed = -1,
skulls = 1,
2021-08-25 13:58:32 +00:00
implausibility = mean_outcome(2, 6, narrow_challenge(6, Char.MITHRIDACY.value)),
2021-08-03 17:19:21 +00:00
)
2021-08-25 13:58:32 +00:00
# TODO
2021-08-03 17:19:21 +00:00
CORAL_SKULL = Action(
"Affix a Skull in Coral to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.CORAL_SKULL.value + Cost.SCINTILLACK.value,
value = 1750,
skulls_needed = -1,
skulls = 1,
amalgamy = 2
)
DOUBLED_SKULL = Action(
"Affix a Doubled Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.DOUBLED_SKULL.value,
value = 6250,
skulls_needed = -1,
skulls = 2,
amalgamy = 1,
2021-08-25 13:58:32 +00:00
antiquity = mean_outcome(2, 1, narrow_challenge(4, Char.MONSTROUS_ANATOMY.value))
2021-08-03 17:19:21 +00:00
)
# Adds Exhaustion
ENGRAVED_SKULL = Action(
"Affix a Custom-Engraved Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.ENGRAVED_SKULL.value,
value = 10000,
skulls_needed = -1,
skulls = 1,
2021-08-25 13:58:32 +00:00
exhaustion = 2,
implausibility = mean_outcome(0, 2, narrow_challenge(4, Char.MITHRIDACY.value)),
)
2021-08-03 17:19:21 +00:00
EYELESS_SKULL = Action(
"Affix an Eyeless Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.EYELESS_SKULL.value,
value = 3000,
skulls_needed = -1,
skulls = 1,
menace = 2
)
HORNED_SKULL = Action(
"Affix a Horned Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.HORNED_SKULL.value,
value = 1250,
skulls_needed = -1,
skulls = 1,
antiquity = 1,
2021-08-25 13:58:32 +00:00
menace = mean_outcome(2, 1, narrow_challenge(6, Char.MONSTROUS_ANATOMY.value))
2021-08-03 17:19:21 +00:00
)
# Seeking the Name of Mr. Eaten
OWN_SKULL = Action(
"Duplicate your own skull and affix it here",
2021-08-25 13:58:32 +00:00
cost = Cost.ACTION.value * 1 / narrow_challenge(6, Char.ARTISAN_OF_RED_SCIENCE.value) + 1000*Cost.BONE_FRAGMENT.value,
value = -250,
skulls_needed = -1,
skulls = 1
)
2021-08-03 17:19:21 +00:00
PENTAGRAMMIC_SKULL = Action(
"Affix a Pentagrammic Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.PENTAGRAMMIC_SKULL.value,
value = 1250,
skulls_needed = -1,
skulls = 1,
amalgamy = 2,
menace = 1
)
PLATED_SKULL = Action(
"Affix a Plated Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.PLATED_SKULL.value,
value = 2500,
skulls_needed = -1,
skulls = 1,
2021-08-25 13:58:32 +00:00
menace = mean_outcome(2, 1, narrow_challenge(4, Char.MONSTROUS_ANATOMY.value))
2021-08-03 17:19:21 +00:00
)
RUBBERY_SKULL = Action(
"Affix a Rubbery Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.RUBBERY_SKULL.value,
value = 600,
skulls_needed = -1,
skulls = 1,
amalgamy = 1
)
SABRE_TOOTHED_SKULL = Action(
"Affix a Sabre-toothed Skull to your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.SABRE_TOOTHED_SKULL.value,
value = 6250,
skulls_needed = -1,
skulls = 1,
antiquity = 1,
2021-08-25 13:58:32 +00:00
menace = mean_outcome(1, 0, narrow_challenge(6, Char.MONSTROUS_ANATOMY.value))
2021-08-03 17:19:21 +00:00
)
STYGIAN_IVORY = Action(
"Use a Carved Ball of Stygian Ivory to cap off your (Skeleton Type)",
cost = Cost.ACTION.value + Cost.STYGIAN_IVORY.value,
value = 250,
2021-08-25 13:58:32 +00:00
skulls_needed = -1,
implausibility = mean_outcome(0, 2, narrow_challenge(6, Char.MITHRIDACY.value))
2021-08-03 17:19:21 +00:00
)
VAKE_SKULL = Action(
"Duplicate the Vake's skull and use it to decorate your (Skeleton Type)",
2021-08-25 13:58:32 +00:00
cost = Cost.ACTION.value + 6000*Cost.BONE_FRAGMENT.value + mean_outcome(0, Cost.ACTION.value + 300*Cost.BONE_FRAGMENT.value, narrow_challenge(6, Char.ARTISAN_OF_RED_SCIENCE.value)),
2021-08-03 17:19:21 +00:00
value = 6500,
skulls_needed = -1,
skulls = 1,
menace = 3
)
# Licentiate
VICTIM_SKULL = Action(
"Cap this with a victims skull",
cost = Cost.ACTION.value,
value = 250,
skulls_needed = -1,
skulls = 1
)
2021-08-03 17:19:21 +00:00
def __str__(self):
return str(self.value)