| 
									
										
										
										
											2024-03-20 15:03:25 -06:00
										 |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | from Options import Choice, DefaultOnToggle, Range, Toggle, PerGameCommonOptions, StartInventoryPool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CharacterStages(Choice): | 
					
						
							|  |  |  |     """Whether to include Reinhardt-only stages, Carrie-only stages, or both with or without branching paths at the end
 | 
					
						
							|  |  |  |     of Villa and Castle Center."""
 | 
					
						
							|  |  |  |     display_name = "Character Stages" | 
					
						
							|  |  |  |     option_both = 0 | 
					
						
							|  |  |  |     option_branchless_both = 1 | 
					
						
							|  |  |  |     option_reinhardt_only = 2 | 
					
						
							|  |  |  |     option_carrie_only = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StageShuffle(Toggle): | 
					
						
							|  |  |  |     """Shuffles which stages appear in which stage slots. Villa and Castle Center will never appear in any character
 | 
					
						
							|  |  |  |     stage slots if Character Stages is set to Both; they can only be somewhere on the main path. | 
					
						
							|  |  |  |     Castle Keep will always be at the end of the line."""
 | 
					
						
							|  |  |  |     display_name = "Stage Shuffle" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StartingStage(Choice): | 
					
						
							|  |  |  |     """Which stage to start at if Stage Shuffle is turned on.""" | 
					
						
							|  |  |  |     display_name = "Starting Stage" | 
					
						
							|  |  |  |     option_forest_of_silence = 0 | 
					
						
							|  |  |  |     option_castle_wall = 1 | 
					
						
							|  |  |  |     option_villa = 2 | 
					
						
							|  |  |  |     option_tunnel = 3 | 
					
						
							|  |  |  |     option_underground_waterway = 4 | 
					
						
							|  |  |  |     option_castle_center = 5 | 
					
						
							|  |  |  |     option_duel_tower = 6 | 
					
						
							|  |  |  |     option_tower_of_execution = 7 | 
					
						
							|  |  |  |     option_tower_of_science = 8 | 
					
						
							|  |  |  |     option_tower_of_sorcery = 9 | 
					
						
							|  |  |  |     option_room_of_clocks = 10 | 
					
						
							|  |  |  |     option_clock_tower = 11 | 
					
						
							|  |  |  |     default = "random" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class WarpOrder(Choice): | 
					
						
							|  |  |  |     """Arranges the warps in the warp menu in whichever stage order chosen,
 | 
					
						
							|  |  |  |     thereby changing the order they are unlocked in."""
 | 
					
						
							|  |  |  |     display_name = "Warp Order" | 
					
						
							|  |  |  |     option_seed_stage_order = 0 | 
					
						
							|  |  |  |     option_vanilla_stage_order = 1 | 
					
						
							|  |  |  |     option_randomized_order = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SubWeaponShuffle(Choice): | 
					
						
							|  |  |  |     """Shuffles all sub-weapons in the game within each other in their own pool or in the main item pool.""" | 
					
						
							|  |  |  |     display_name = "Sub-weapon Shuffle" | 
					
						
							|  |  |  |     option_off = 0 | 
					
						
							|  |  |  |     option_own_pool = 1 | 
					
						
							|  |  |  |     option_anywhere = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SpareKeys(Choice): | 
					
						
							|  |  |  |     """Puts an additional copy of every non-Special key item in the pool for every key item that there is.
 | 
					
						
							|  |  |  |     Chance gives each key item a 50% chance of having a duplicate instead of guaranteeing one for all of them."""
 | 
					
						
							|  |  |  |     display_name = "Spare Keys" | 
					
						
							|  |  |  |     option_off = 0 | 
					
						
							|  |  |  |     option_on = 1 | 
					
						
							|  |  |  |     option_chance = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HardItemPool(Toggle): | 
					
						
							|  |  |  |     """Replaces some items in the item pool with less valuable ones, to make the item pool sort of resemble Hard Mode
 | 
					
						
							|  |  |  |     in the PAL version."""
 | 
					
						
							|  |  |  |     display_name = "Hard Item Pool" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Special1sPerWarp(Range): | 
					
						
							| 
									
										
										
										
											2024-04-18 10:37:51 -06:00
										 |  |  |     """Sets how many Special1 jewels are needed per warp menu option unlock.
 | 
					
						
							|  |  |  |     This will decrease until the number x 7 is less than or equal to the Total Specail1s if it isn't already.""" | 
					
						
							| 
									
										
										
										
											2024-03-20 15:03:25 -06:00
										 |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 10 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  |     display_name = "Special1s Per Warp" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TotalSpecial1s(Range): | 
					
						
							| 
									
										
										
										
											2024-04-18 10:37:51 -06:00
										 |  |  |     """Sets how many Speical1 jewels are in the pool in total.""" | 
					
						
							| 
									
										
										
										
											2024-03-20 15:03:25 -06:00
										 |  |  |     range_start = 7 | 
					
						
							|  |  |  |     range_end = 70 | 
					
						
							|  |  |  |     default = 7 | 
					
						
							|  |  |  |     display_name = "Total Special1s" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DraculasCondition(Choice): | 
					
						
							|  |  |  |     """Sets the requirement for unlocking and opening the door to Dracula's chamber.
 | 
					
						
							|  |  |  |     None: No requirement. Door is unlocked from the start. | 
					
						
							|  |  |  |     Crystal: Activate the big crystal in Castle Center's basement. Neither boss afterwards has to be defeated. | 
					
						
							|  |  |  |     Bosses: Kill a specified number of bosses with health bars and claim their Trophies. | 
					
						
							|  |  |  |     Specials: Find a specified number of Special2 jewels shuffled in the main item pool."""
 | 
					
						
							|  |  |  |     display_name = "Dracula's Condition" | 
					
						
							|  |  |  |     option_none = 0 | 
					
						
							|  |  |  |     option_crystal = 1 | 
					
						
							|  |  |  |     option_bosses = 2 | 
					
						
							|  |  |  |     option_specials = 3 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PercentSpecial2sRequired(Range): | 
					
						
							|  |  |  |     """Percentage of Special2s required to enter Dracula's chamber when Dracula's Condition is Special2s.""" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 80 | 
					
						
							|  |  |  |     display_name = "Percent Special2s Required" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TotalSpecial2s(Range): | 
					
						
							|  |  |  |     """How many Speical2 jewels are in the pool in total when Dracula's Condition is Special2s.""" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 70 | 
					
						
							|  |  |  |     default = 25 | 
					
						
							|  |  |  |     display_name = "Total Special2s" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BossesRequired(Range): | 
					
						
							|  |  |  |     """How many bosses need to be defeated to enter Dracula's chamber when Dracula's Condition is set to Bosses.
 | 
					
						
							|  |  |  |     This will automatically adjust if there are fewer available bosses than the chosen number."""
 | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 16 | 
					
						
							|  |  |  |     default = 14 | 
					
						
							|  |  |  |     display_name = "Bosses Required" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CarrieLogic(Toggle): | 
					
						
							|  |  |  |     """Adds the 2 checks inside Underground Waterway's crawlspace to the pool.
 | 
					
						
							|  |  |  |     If you (and everyone else if racing the same seed) are planning to only ever play Reinhardt, don't enable this. | 
					
						
							|  |  |  |     Can be combined with Hard Logic to include Carrie-only tricks."""
 | 
					
						
							|  |  |  |     display_name = "Carrie Logic" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HardLogic(Toggle): | 
					
						
							|  |  |  |     """Properly considers sequence break tricks in logic (i.e. maze skip). Can be combined with Carrie Logic to include
 | 
					
						
							|  |  |  |     Carrie-only tricks. | 
					
						
							|  |  |  |     See the Game Page for a full list of tricks and glitches that may be logically required."""
 | 
					
						
							|  |  |  |     display_name = "Hard Logic" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MultiHitBreakables(Toggle): | 
					
						
							| 
									
										
										
										
											2024-03-31 09:55:55 -06:00
										 |  |  |     """Adds the items that drop from the objects that break in three hits to the pool. There are 18 of these throughout
 | 
					
						
							|  |  |  |     the game, adding up to 79 or 80 checks (depending on sub-weapons | 
					
						
							|  |  |  |     being shuffled anywhere or not) in total with all stages. | 
					
						
							| 
									
										
										
										
											2024-03-20 15:03:25 -06:00
										 |  |  |     The game will be modified to | 
					
						
							|  |  |  |     remember exactly which of their items you've picked up instead of simply whether they were broken or not.""" | 
					
						
							|  |  |  |     display_name = "Multi-hit Breakables" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EmptyBreakables(Toggle): | 
					
						
							|  |  |  |     """Adds 9 check locations in the form of breakables that normally have nothing (all empty Forest coffins, etc.)
 | 
					
						
							|  |  |  |     and some additional Red Jewels and/or moneybags into the item pool to compensate."""
 | 
					
						
							|  |  |  |     display_name = "Empty Breakables" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LizardLockerItems(Toggle): | 
					
						
							|  |  |  |     """Adds the 6 items inside Castle Center 2F's Lizard-man generators to the pool.
 | 
					
						
							|  |  |  |     Picking up all of these can be a very tedious luck-based process, so they are off by default."""
 | 
					
						
							|  |  |  |     display_name = "Lizard Locker Items" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Shopsanity(Toggle): | 
					
						
							|  |  |  |     """Adds 7 one-time purchases from Renon's shop into the location pool. After buying an item from a slot, it will
 | 
					
						
							|  |  |  |     revert to whatever it is in the vanilla game."""
 | 
					
						
							|  |  |  |     display_name = "Shopsanity" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ShopPrices(Choice): | 
					
						
							|  |  |  |     """Randomizes the amount of gold each item costs in Renon's shop.
 | 
					
						
							|  |  |  |     Use the below options to control how much or little an item can cost."""
 | 
					
						
							|  |  |  |     display_name = "Shop Prices" | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_randomized = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MinimumGoldPrice(Range): | 
					
						
							|  |  |  |     """The lowest amount of gold an item can cost in Renon's shop, divided by 100.""" | 
					
						
							|  |  |  |     display_name = "Minimum Gold Price" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 50 | 
					
						
							|  |  |  |     default = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MaximumGoldPrice(Range): | 
					
						
							|  |  |  |     """The highest amount of gold an item can cost in Renon's shop, divided by 100.""" | 
					
						
							|  |  |  |     display_name = "Maximum Gold Price" | 
					
						
							|  |  |  |     range_start = 1 | 
					
						
							|  |  |  |     range_end = 50 | 
					
						
							|  |  |  |     default = 30 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PostBehemothBoss(Choice): | 
					
						
							|  |  |  |     """Sets which boss is fought in the vampire triplets' room in Castle Center by which characters after defeating
 | 
					
						
							|  |  |  |     Behemoth."""
 | 
					
						
							|  |  |  |     display_name = "Post-Behemoth Boss" | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_inverted = 1 | 
					
						
							|  |  |  |     option_always_rosa = 2 | 
					
						
							|  |  |  |     option_always_camilla = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoomOfClocksBoss(Choice): | 
					
						
							|  |  |  |     """Sets which boss is fought at Room of Clocks by which characters.""" | 
					
						
							|  |  |  |     display_name = "Room of Clocks Boss" | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_inverted = 1 | 
					
						
							|  |  |  |     option_always_death = 2 | 
					
						
							|  |  |  |     option_always_actrise = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RenonFightCondition(Choice): | 
					
						
							|  |  |  |     """Sets the condition on which the Renon fight will trigger.""" | 
					
						
							|  |  |  |     display_name = "Renon Fight Condition" | 
					
						
							|  |  |  |     option_never = 0 | 
					
						
							|  |  |  |     option_spend_30k = 1 | 
					
						
							|  |  |  |     option_always = 2 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VincentFightCondition(Choice): | 
					
						
							|  |  |  |     """Sets the condition on which the vampire Vincent fight will trigger.""" | 
					
						
							|  |  |  |     display_name = "Vincent Fight Condition" | 
					
						
							|  |  |  |     option_never = 0 | 
					
						
							|  |  |  |     option_wait_16_days = 1 | 
					
						
							|  |  |  |     option_always = 2 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BadEndingCondition(Choice): | 
					
						
							|  |  |  |     """Sets the condition on which the currently-controlled character's Bad Ending will trigger.""" | 
					
						
							|  |  |  |     display_name = "Bad Ending Condition" | 
					
						
							|  |  |  |     option_never = 0 | 
					
						
							|  |  |  |     option_kill_vincent = 1 | 
					
						
							|  |  |  |     option_always = 2 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IncreaseItemLimit(DefaultOnToggle): | 
					
						
							|  |  |  |     """Increases the holding limit of usable items from 10 to 99 of each item.""" | 
					
						
							|  |  |  |     display_name = "Increase Item Limit" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NerfHealingItems(Toggle): | 
					
						
							|  |  |  |     """Decreases the amount of health healed by Roast Chickens to 25%, Roast Beefs to 50%, and Healing Kits to 80%.""" | 
					
						
							|  |  |  |     display_name = "Nerf Healing Items" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LoadingZoneHeals(DefaultOnToggle): | 
					
						
							|  |  |  |     """Whether end-of-level loading zones restore health and cure status aliments or not.
 | 
					
						
							|  |  |  |     Recommended off for those looking for more of a survival horror experience!"""
 | 
					
						
							|  |  |  |     display_name = "Loading Zone Heals" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class InvisibleItems(Choice): | 
					
						
							|  |  |  |     """Sets which items are visible in their locations and which are invisible until picked up.
 | 
					
						
							|  |  |  |     'Chance' gives each item a 50/50 chance of being visible or invisible."""
 | 
					
						
							|  |  |  |     display_name = "Invisible Items" | 
					
						
							|  |  |  |     option_vanilla = 0 | 
					
						
							|  |  |  |     option_reveal_all = 1 | 
					
						
							|  |  |  |     option_hide_all = 2 | 
					
						
							|  |  |  |     option_chance = 3 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DropPreviousSubWeapon(Toggle): | 
					
						
							|  |  |  |     """When receiving a sub-weapon, the one you had before will drop behind you, so it can be taken back if desired.""" | 
					
						
							|  |  |  |     display_name = "Drop Previous Sub-weapon" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PermanentPowerUps(Toggle): | 
					
						
							|  |  |  |     """Replaces PowerUps with PermaUps, which upgrade your B weapon level permanently and will stay even after
 | 
					
						
							|  |  |  |     dying and/or continuing. | 
					
						
							|  |  |  |     To compensate, only two will be in the pool overall, and they will not drop from any enemy or projectile."""
 | 
					
						
							|  |  |  |     display_name = "Permanent PowerUps" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IceTrapPercentage(Range): | 
					
						
							|  |  |  |     """Replaces a percentage of junk items with Ice Traps.
 | 
					
						
							|  |  |  |     These will be visibly disguised as other items, and receiving one will freeze you | 
					
						
							|  |  |  |     as if you were hit by Camilla's ice cloud attack.""" | 
					
						
							|  |  |  |     display_name = "Ice Trap Percentage" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IceTrapAppearance(Choice): | 
					
						
							|  |  |  |     """What items Ice Traps can possibly be disguised as.""" | 
					
						
							|  |  |  |     display_name = "Ice Trap Appearance" | 
					
						
							|  |  |  |     option_major_only = 0 | 
					
						
							|  |  |  |     option_junk_only = 1 | 
					
						
							|  |  |  |     option_anything = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DisableTimeRestrictions(Toggle): | 
					
						
							|  |  |  |     """Disables the restriction on every event and door that requires the current time
 | 
					
						
							|  |  |  |     to be within a specific range, so they can be triggered at any time. | 
					
						
							|  |  |  |     This includes all sun/moon doors and, in the Villa, the meeting with Rosa and the fountain pillar. | 
					
						
							|  |  |  |     The Villa coffin is not affected by this."""
 | 
					
						
							|  |  |  |     display_name = "Disable Time Requirements" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SkipGondolas(Toggle): | 
					
						
							|  |  |  |     """Makes jumping on and activating a gondola in Tunnel instantly teleport you
 | 
					
						
							|  |  |  |     to the other station, thereby skipping the entire three-minute ride. | 
					
						
							|  |  |  |     The item normally at the gondola transfer point is moved to instead be | 
					
						
							|  |  |  |     near the red gondola at its station."""
 | 
					
						
							|  |  |  |     display_name = "Skip Gondolas" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SkipWaterwayBlocks(Toggle): | 
					
						
							|  |  |  |     """Opens the door to the third switch in Underground Waterway from the start so that the jumping across floating
 | 
					
						
							|  |  |  |     brick platforms won't have to be done. Shopping at the Contract on the other side of them may still be logically | 
					
						
							|  |  |  |     required if Shopsanity is on."""
 | 
					
						
							|  |  |  |     display_name = "Skip Waterway Blocks" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Countdown(Choice): | 
					
						
							|  |  |  |     """Displays, near the HUD clock and below the health bar, the number of unobtained progression-marked items
 | 
					
						
							|  |  |  |     or the total check locations remaining in the stage you are currently in."""
 | 
					
						
							|  |  |  |     display_name = "Countdown" | 
					
						
							|  |  |  |     option_none = 0 | 
					
						
							|  |  |  |     option_majors = 1 | 
					
						
							|  |  |  |     option_all_locations = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BigToss(Toggle): | 
					
						
							|  |  |  |     """Makes every non-immobilizing damage source launch you as if you got hit by Behemoth's charge.
 | 
					
						
							|  |  |  |     Press A while tossed to cancel the launch momentum and avoid being thrown off ledges. | 
					
						
							|  |  |  |     Hold Z to have all incoming damage be treated as it normally would. | 
					
						
							| 
									
										
										
										
											2024-03-26 07:31:36 -06:00
										 |  |  |     Any tricks that might be possible with it are NOT considered in logic by any options."""
 | 
					
						
							| 
									
										
										
										
											2024-03-20 15:03:25 -06:00
										 |  |  |     display_name = "Big Toss" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PantherDash(Choice): | 
					
						
							|  |  |  |     """Hold C-right at any time to sprint way faster. Any tricks that might be
 | 
					
						
							| 
									
										
										
										
											2024-03-26 07:31:36 -06:00
										 |  |  |     possible with it are NOT considered in logic by any options and any boss | 
					
						
							| 
									
										
										
										
											2024-03-20 15:03:25 -06:00
										 |  |  |     fights with boss health meters, if started, are expected to be finished | 
					
						
							|  |  |  |     before leaving their arenas if Dracula's Condition is bosses. Jumpless will | 
					
						
							|  |  |  |     prevent jumping while moving at the increased speed to ensure logic cannot be broken with it."""
 | 
					
						
							|  |  |  |     display_name = "Panther Dash" | 
					
						
							|  |  |  |     option_off = 0 | 
					
						
							|  |  |  |     option_on = 1 | 
					
						
							|  |  |  |     option_jumpless = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IncreaseShimmySpeed(Toggle): | 
					
						
							|  |  |  |     """Increases the speed at which characters shimmy left and right while hanging on ledges.""" | 
					
						
							|  |  |  |     display_name = "Increase Shimmy Speed" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FallGuard(Toggle): | 
					
						
							|  |  |  |     """Removes fall damage from landing too hard. Note that falling for too long will still result in instant death.""" | 
					
						
							|  |  |  |     display_name = "Fall Guard" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BackgroundMusic(Choice): | 
					
						
							|  |  |  |     """Randomizes or disables the music heard throughout the game.
 | 
					
						
							|  |  |  |     Randomized music is split into two pools: songs that loop and songs that don't. | 
					
						
							|  |  |  |     The "lead-in" versions of some songs will be paired accordingly."""
 | 
					
						
							|  |  |  |     display_name = "Background Music" | 
					
						
							|  |  |  |     option_normal = 0 | 
					
						
							|  |  |  |     option_disabled = 1 | 
					
						
							|  |  |  |     option_randomized = 2 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MapLighting(Choice): | 
					
						
							|  |  |  |     """Randomizes the lighting color RGB values on every map during every time of day to be literally anything.
 | 
					
						
							|  |  |  |     The colors and/or shading of the following things are affected: fog, maps, player, enemies, and some objects."""
 | 
					
						
							|  |  |  |     display_name = "Map Lighting" | 
					
						
							|  |  |  |     option_normal = 0 | 
					
						
							|  |  |  |     option_randomized = 1 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CinematicExperience(Toggle): | 
					
						
							|  |  |  |     """Enables an unused film reel effect on every cutscene in the game. Purely cosmetic.""" | 
					
						
							|  |  |  |     display_name = "Cinematic Experience" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class WindowColorR(Range): | 
					
						
							|  |  |  |     """The red value for the background color of the text windows during gameplay.""" | 
					
						
							|  |  |  |     display_name = "Window Color R" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 15 | 
					
						
							|  |  |  |     default = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class WindowColorG(Range): | 
					
						
							|  |  |  |     """The green value for the background color of the text windows during gameplay.""" | 
					
						
							|  |  |  |     display_name = "Window Color G" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 15 | 
					
						
							|  |  |  |     default = 5 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class WindowColorB(Range): | 
					
						
							|  |  |  |     """The blue value for the background color of the text windows during gameplay.""" | 
					
						
							|  |  |  |     display_name = "Window Color B" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 15 | 
					
						
							|  |  |  |     default = 15 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class WindowColorA(Range): | 
					
						
							|  |  |  |     """The alpha value for the background color of the text windows during gameplay.""" | 
					
						
							|  |  |  |     display_name = "Window Color A" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 15 | 
					
						
							|  |  |  |     default = 8 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DeathLink(Choice): | 
					
						
							|  |  |  |     """When you die, everyone dies. Of course the reverse is true too.
 | 
					
						
							|  |  |  |     Explosive: Makes received DeathLinks kill you via the Magical Nitro explosion | 
					
						
							|  |  |  |     instead of the normal death animation."""
 | 
					
						
							|  |  |  |     display_name = "DeathLink" | 
					
						
							|  |  |  |     option_off = 0 | 
					
						
							|  |  |  |     alias_no = 0 | 
					
						
							|  |  |  |     alias_true = 1 | 
					
						
							|  |  |  |     alias_yes = 1 | 
					
						
							|  |  |  |     option_on = 1 | 
					
						
							|  |  |  |     option_explosive = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @dataclass | 
					
						
							|  |  |  | class CV64Options(PerGameCommonOptions): | 
					
						
							|  |  |  |     character_stages: CharacterStages | 
					
						
							|  |  |  |     stage_shuffle: StageShuffle | 
					
						
							|  |  |  |     starting_stage: StartingStage | 
					
						
							|  |  |  |     warp_order: WarpOrder | 
					
						
							|  |  |  |     sub_weapon_shuffle: SubWeaponShuffle | 
					
						
							|  |  |  |     spare_keys: SpareKeys | 
					
						
							|  |  |  |     hard_item_pool: HardItemPool | 
					
						
							|  |  |  |     special1s_per_warp: Special1sPerWarp | 
					
						
							|  |  |  |     total_special1s: TotalSpecial1s | 
					
						
							|  |  |  |     draculas_condition: DraculasCondition | 
					
						
							|  |  |  |     percent_special2s_required: PercentSpecial2sRequired | 
					
						
							|  |  |  |     total_special2s: TotalSpecial2s | 
					
						
							|  |  |  |     bosses_required: BossesRequired | 
					
						
							|  |  |  |     carrie_logic: CarrieLogic | 
					
						
							|  |  |  |     hard_logic: HardLogic | 
					
						
							|  |  |  |     multi_hit_breakables: MultiHitBreakables | 
					
						
							|  |  |  |     empty_breakables: EmptyBreakables | 
					
						
							|  |  |  |     lizard_locker_items: LizardLockerItems | 
					
						
							|  |  |  |     shopsanity: Shopsanity | 
					
						
							|  |  |  |     shop_prices: ShopPrices | 
					
						
							|  |  |  |     minimum_gold_price: MinimumGoldPrice | 
					
						
							|  |  |  |     maximum_gold_price: MaximumGoldPrice | 
					
						
							|  |  |  |     post_behemoth_boss: PostBehemothBoss | 
					
						
							|  |  |  |     room_of_clocks_boss: RoomOfClocksBoss | 
					
						
							|  |  |  |     renon_fight_condition: RenonFightCondition | 
					
						
							|  |  |  |     vincent_fight_condition: VincentFightCondition | 
					
						
							|  |  |  |     bad_ending_condition: BadEndingCondition | 
					
						
							|  |  |  |     increase_item_limit: IncreaseItemLimit | 
					
						
							|  |  |  |     nerf_healing_items: NerfHealingItems | 
					
						
							|  |  |  |     loading_zone_heals: LoadingZoneHeals | 
					
						
							|  |  |  |     invisible_items: InvisibleItems | 
					
						
							|  |  |  |     drop_previous_sub_weapon: DropPreviousSubWeapon | 
					
						
							|  |  |  |     permanent_powerups: PermanentPowerUps | 
					
						
							|  |  |  |     ice_trap_percentage: IceTrapPercentage | 
					
						
							|  |  |  |     ice_trap_appearance: IceTrapAppearance | 
					
						
							|  |  |  |     disable_time_restrictions: DisableTimeRestrictions | 
					
						
							|  |  |  |     skip_gondolas: SkipGondolas | 
					
						
							|  |  |  |     skip_waterway_blocks: SkipWaterwayBlocks | 
					
						
							|  |  |  |     countdown: Countdown | 
					
						
							|  |  |  |     big_toss: BigToss | 
					
						
							|  |  |  |     panther_dash: PantherDash | 
					
						
							|  |  |  |     increase_shimmy_speed: IncreaseShimmySpeed | 
					
						
							|  |  |  |     background_music: BackgroundMusic | 
					
						
							|  |  |  |     map_lighting: MapLighting | 
					
						
							|  |  |  |     fall_guard: FallGuard | 
					
						
							|  |  |  |     cinematic_experience: CinematicExperience | 
					
						
							|  |  |  |     window_color_r: WindowColorR | 
					
						
							|  |  |  |     window_color_g: WindowColorG | 
					
						
							|  |  |  |     window_color_b: WindowColorB | 
					
						
							|  |  |  |     window_color_a: WindowColorA | 
					
						
							|  |  |  |     death_link: DeathLink | 
					
						
							|  |  |  |     start_inventory_from_pool: StartInventoryPool |