mirror of
				https://github.com/MarioSpore/Grinch-AP.git
				synced 2025-10-21 20:21:32 -06:00 
			
		
		
		
	
		
			
	
	
		
			138 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			138 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from dataclasses import dataclass | ||
|  | 
 | ||
|  | from Options import Toggle, Choice, DeathLinkMixin, StartInventoryPool, PerGameCommonOptions, DefaultOnToggle | ||
|  | 
 | ||
|  | 
 | ||
|  | class Act1DeathLinkBehaviour(Choice): | ||
|  |     """If DeathLink is enabled, determines what counts as a death in act 1. This affects deaths sent and received.
 | ||
|  | 
 | ||
|  |     - Sacrificed: Send a death when sacrificed by Leshy. Receiving a death will extinguish all candles. | ||
|  | 
 | ||
|  |     - Candle Extinguished: Send a death when a candle is extinguished. Receiving a death will extinguish a candle."""
 | ||
|  |     display_name = "Act 1 Death Link Behaviour" | ||
|  |     option_sacrificed = 0 | ||
|  |     option_candle_extinguished = 1 | ||
|  |     default = 0 | ||
|  | 
 | ||
|  | 
 | ||
|  | class Goal(Choice): | ||
|  |     """Defines the goal to accomplish in order to complete the randomizer.
 | ||
|  | 
 | ||
|  |     - Full Story In Order: Complete each act in order. You can return to previously completed acts. | ||
|  | 
 | ||
|  |     - Full Story Any Order: Complete each act in any order. All acts are available from the start. | ||
|  | 
 | ||
|  |     - First Act: Complete Act 1 by finding the New Game button. Great for a smaller scale randomizer."""
 | ||
|  |     display_name = "Goal" | ||
|  |     option_full_story_in_order = 0 | ||
|  |     option_full_story_any_order = 1 | ||
|  |     option_first_act = 2 | ||
|  |     default = 0 | ||
|  | 
 | ||
|  | 
 | ||
|  | class RandomizeCodes(Toggle): | ||
|  |     """Randomize codes and passwords in the game (clocks, safes, etc.)""" | ||
|  |     display_name = "Randomize Codes" | ||
|  | 
 | ||
|  | 
 | ||
|  | class RandomizeDeck(Choice): | ||
|  |     """Randomize cards in your deck into new cards.
 | ||
|  |     Disable: Disable the feature. | ||
|  | 
 | ||
|  |     - Every Encounter Within Same Type: Randomize cards within the same type every encounter (keep rarity/scrybe type). | ||
|  | 
 | ||
|  |     - Every Encounter Any Type: Randomize cards into any possible card every encounter. | ||
|  | 
 | ||
|  |     - Starting Only: Only randomize cards given at the beginning of runs and acts."""
 | ||
|  |     display_name = "Randomize Deck" | ||
|  |     option_disable = 0 | ||
|  |     option_every_encounter_within_same_type = 1 | ||
|  |     option_every_encounter_any_type = 2 | ||
|  |     option_starting_only = 3 | ||
|  |     default = 0 | ||
|  | 
 | ||
|  | 
 | ||
|  | class RandomizeSigils(Choice): | ||
|  |     """Randomize sigils printed on the cards into new sigils every encounter.
 | ||
|  | 
 | ||
|  |     - Disable: Disable the feature. | ||
|  | 
 | ||
|  |     - Randomize Addons: Only randomize sigils added from sacrifices or other means. | ||
|  | 
 | ||
|  |     - Randomize All: Randomize all sigils."""
 | ||
|  |     display_name = "Randomize Abilities" | ||
|  |     option_disable = 0 | ||
|  |     option_randomize_addons = 1 | ||
|  |     option_randomize_all = 2 | ||
|  |     default = 0 | ||
|  | 
 | ||
|  | 
 | ||
|  | class OptionalDeathCard(Choice): | ||
|  |     """Add a moment after death in act 1 where you can decide to create a death card or not.
 | ||
|  | 
 | ||
|  |     - Disable: Disable the feature. | ||
|  | 
 | ||
|  |     - Always On: The choice is always offered after losing all candles. | ||
|  | 
 | ||
|  |     - DeathLink Only: The choice is only offered after receiving a DeathLink event."""
 | ||
|  |     display_name = "Optional Death Card" | ||
|  |     option_disable = 0 | ||
|  |     option_always_on = 1 | ||
|  |     option_deathlink_only = 2 | ||
|  |     default = 2 | ||
|  | 
 | ||
|  | 
 | ||
|  | class SkipTutorial(DefaultOnToggle): | ||
|  |     """Skips the first few tutorial runs of act 1. Bones are available from the start.""" | ||
|  |     display_name = "Skip Tutorial" | ||
|  | 
 | ||
|  | 
 | ||
|  | class SkipEpilogue(Toggle): | ||
|  |     """Completes the goal as soon as the required acts are completed without the need of completing the epilogue.""" | ||
|  |     display_name = "Skip Epilogue" | ||
|  | 
 | ||
|  | 
 | ||
|  | class EpitaphPiecesRandomization(Choice): | ||
|  |     """Determines how epitaph pieces in act 2 are randomized. This can affect your chances of getting stuck.
 | ||
|  | 
 | ||
|  |     - All Pieces: Randomizes all nine pieces as their own item. | ||
|  | 
 | ||
|  |     - In Groups: Randomizes pieces in groups of three. | ||
|  | 
 | ||
|  |     - As One Item: Group all nine pieces as a single item."""
 | ||
|  |     display_name = "Epitaph Pieces Randomization" | ||
|  |     option_all_pieces = 0 | ||
|  |     option_in_groups = 1 | ||
|  |     option_as_one_item = 2 | ||
|  |     default = 0 | ||
|  | 
 | ||
|  | 
 | ||
|  | class PaintingChecksBalancing(Choice): | ||
|  |     """Generation options for the second and third painting checks in act 1.
 | ||
|  | 
 | ||
|  |     - None: Adds no progression logic to these painting checks. They will all count as sphere 1 (early game checks). | ||
|  | 
 | ||
|  |     - Balanced: Adds rules to these painting checks. Early game items are less likely to appear into these paintings. | ||
|  | 
 | ||
|  |     - Force Filler: For when you dislike doing these last two paintings. Their checks will only contain filler items."""
 | ||
|  |     display_name = "Painting Checks Balancing" | ||
|  |     option_none = 0 | ||
|  |     option_balanced = 1 | ||
|  |     option_force_filler = 2 | ||
|  |     default = 1 | ||
|  | 
 | ||
|  | 
 | ||
|  | @dataclass | ||
|  | class InscryptionOptions(DeathLinkMixin, PerGameCommonOptions): | ||
|  |     start_inventory_from_pool: StartInventoryPool | ||
|  |     act1_death_link_behaviour: Act1DeathLinkBehaviour | ||
|  |     goal: Goal | ||
|  |     randomize_codes: RandomizeCodes | ||
|  |     randomize_deck: RandomizeDeck | ||
|  |     randomize_sigils: RandomizeSigils | ||
|  |     optional_death_card: OptionalDeathCard | ||
|  |     skip_tutorial: SkipTutorial | ||
|  |     skip_epilogue: SkipEpilogue | ||
|  |     epitaph_pieces_randomization: EpitaphPiecesRandomization | ||
|  |     painting_checks_balancing: PaintingChecksBalancing |