HK: allow shuffling charm costs, instead of randomizing. (#441)

This commit is contained in:
Fabian Dill 2022-06-09 00:27:43 +02:00 committed by GitHub
parent 8b1baafddf
commit 1281426075
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 5 deletions

View File

@ -4,6 +4,12 @@ from .ExtractedData import logic_options, starts, pool_options
from Options import Option, DefaultOnToggle, Toggle, Choice, Range, OptionDict
from .Charms import vanilla_costs, names as charm_names
if typing.TYPE_CHECKING:
# avoid import during runtime
from random import Random
else:
Random = typing.Any
class Disabled(Toggle):
def __init__(self, value: int):
@ -203,19 +209,27 @@ class MaximumCharmPrice(MinimumCharmPrice):
class RandomCharmCosts(Range):
"""Total Notch Cost of all Charms together. Set to -1 for vanilla costs. Vanilla sums to 90.
This value is distributed among all charms in a random fashion."""
"""Total Notch Cost of all Charms together. Vanilla sums to 90.
This value is distributed among all charms in a random fashion.
Special Cases:
Set to -1 for vanilla costs.
Set to -2 to shuffle around the vanilla costs to different charms."""
display_name = "Randomize Charm Notch Costs"
range_start = -1
range_start = -2
range_end = 240
default = -1
vanilla_costs: typing.List[int] = vanilla_costs
charm_count: int = len(vanilla_costs)
def get_costs(self, random_source) -> typing.List[int]:
def get_costs(self, random_source: Random) -> typing.List[int]:
charms: typing.List[int]
if -1 == self.value:
return self.vanilla_costs
return self.vanilla_costs.copy()
elif -2 == self.value:
charms = self.vanilla_costs.copy()
random_source.shuffle(charms)
return charms
else:
charms = [0]*self.charm_count
for x in range(self.value):