Hollow Knight: Add additional DeathLink option and add ExtraPlatforms option. (#2545)

This commit is contained in:
Zach Parks 2023-12-17 10:11:40 -06:00 committed by GitHub
parent 4979314825
commit a549af8304
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 17 deletions

View File

@ -2,7 +2,7 @@ import typing
from .ExtractedData import logic_options, starts, pool_options from .ExtractedData import logic_options, starts, pool_options
from .Rules import cost_terms from .Rules import cost_terms
from Options import Option, DefaultOnToggle, Toggle, Choice, Range, OptionDict, NamedRange from Options import Option, DefaultOnToggle, Toggle, Choice, Range, OptionDict, NamedRange, DeathLink
from .Charms import vanilla_costs, names as charm_names from .Charms import vanilla_costs, names as charm_names
if typing.TYPE_CHECKING: if typing.TYPE_CHECKING:
@ -402,22 +402,34 @@ class WhitePalace(Choice):
default = 0 default = 0
class DeathLink(Choice): class ExtraPlatforms(DefaultOnToggle):
"""Places additional platforms to make traveling throughout Hallownest more convenient."""
class DeathLinkShade(Choice):
"""Sets whether to create a shade when you are killed by a DeathLink and how to handle your existing shade, if any.
vanilla: DeathLink deaths function like any other death and overrides your existing shade (including geo), if any.
shadeless: DeathLink deaths do not spawn shades. Your existing shade (including geo), if any, is untouched.
shade: DeathLink deaths spawn a shade if you do not have an existing shade. Otherwise, it acts like shadeless.
* This option has no effect if DeathLink is disabled.
** Self-death shade behavior is not changed; if a self-death normally creates a shade in vanilla, it will override
your existing shade, if any.
""" """
When you die, everyone dies. Of course the reverse is true too. option_vanilla = 0
When enabled, choose how incoming deathlinks are handled:
vanilla: DeathLink kills you and is just like any other death. RIP your previous shade and geo.
shadeless: DeathLink kills you, but no shade spawns and no geo is lost. Your previous shade, if any, is untouched.
shade: DeathLink functions like a normal death if you do not already have a shade, shadeless otherwise.
"""
option_off = 0
alias_no = 0
alias_true = 1
alias_on = 1
alias_yes = 1
option_shadeless = 1 option_shadeless = 1
option_vanilla = 2 option_shade = 2
option_shade = 3 default = 2
class DeathLinkBreaksFragileCharms(Toggle):
"""Sets if fragile charms break when you are killed by a DeathLink.
* This option has no effect if DeathLink is disabled.
** Self-death fragile charm behavior is not changed; if a self-death normally breaks fragile charms in vanilla, it
will continue to do so.
"""
class StartingGeo(Range): class StartingGeo(Range):
@ -476,7 +488,8 @@ hollow_knight_options: typing.Dict[str, type(Option)] = {
**{ **{
option.__name__: option option.__name__: option
for option in ( for option in (
StartLocation, Goal, WhitePalace, StartingGeo, DeathLink, StartLocation, Goal, WhitePalace, ExtraPlatforms, StartingGeo,
DeathLink, DeathLinkShade, DeathLinkBreaksFragileCharms,
MinimumGeoPrice, MaximumGeoPrice, MinimumGeoPrice, MaximumGeoPrice,
MinimumGrubPrice, MaximumGrubPrice, MinimumGrubPrice, MaximumGrubPrice,
MinimumEssencePrice, MaximumEssencePrice, MinimumEssencePrice, MaximumEssencePrice,
@ -488,7 +501,7 @@ hollow_knight_options: typing.Dict[str, type(Option)] = {
LegEaterShopSlots, GrubfatherRewardSlots, LegEaterShopSlots, GrubfatherRewardSlots,
SeerRewardSlots, ExtraShopSlots, SeerRewardSlots, ExtraShopSlots,
SplitCrystalHeart, SplitMothwingCloak, SplitMantisClaw, SplitCrystalHeart, SplitMothwingCloak, SplitMantisClaw,
CostSanity, CostSanityHybridChance, CostSanity, CostSanityHybridChance
) )
}, },
**cost_sanity_weights **cost_sanity_weights