88 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import typing | ||
|  | 
 | ||
|  | from Options import AssembleOptions, Choice, Toggle, DeathLink, DefaultOnToggle | ||
|  | 
 | ||
|  | 
 | ||
|  | class Difficulty(Choice): | ||
|  |     """
 | ||
|  |     Choose the difficulty option. Those match DOOM's difficulty options. | ||
|  |     baby (I'm too young to die.) double ammos, half damage, less monsters or strength. | ||
|  |     easy (Hey, not too rough.) less monsters or strength. | ||
|  |     medium (Hurt me plenty.) Default. | ||
|  |     hard (Ultra-Violence.) More monsters or strength. | ||
|  |     nightmare (Nightmare!) Monsters attack more rapidly and respawn. | ||
|  |     """
 | ||
|  |     display_name = "Difficulty" | ||
|  |     option_baby = 0 | ||
|  |     option_easy = 1 | ||
|  |     option_medium = 2 | ||
|  |     option_hard = 3 | ||
|  |     option_nightmare = 4 | ||
|  |     default = 2 | ||
|  | 
 | ||
|  | 
 | ||
|  | class RandomMonsters(Choice): | ||
|  |     """
 | ||
|  |     Choose how monsters are randomized. | ||
|  |     vanilla: No randomization | ||
|  |     shuffle: Monsters are shuffled within the level | ||
|  |     random_balanced: Monsters are completely randomized, but balanced based on existing ratio in the level. (Small monsters vs medium vs big) | ||
|  |     """
 | ||
|  |     display_name = "Random Monsters" | ||
|  |     option_vanilla = 0 | ||
|  |     option_shuffle = 1 | ||
|  |     option_random_balanced = 2 | ||
|  |     default = 1 | ||
|  | 
 | ||
|  | 
 | ||
|  | class RandomPickups(Choice): | ||
|  |     """
 | ||
|  |     Choose how pickups are randomized. | ||
|  |     vanilla: No randomization | ||
|  |     shuffle: Pickups are shuffled within the level | ||
|  |     random_balanced: Pickups are completely randomized, but balanced based on existing ratio in the level. (Small pickups vs Big) | ||
|  |     """
 | ||
|  |     display_name = "Random Pickups" | ||
|  |     option_vanilla = 0 | ||
|  |     option_shuffle = 1 | ||
|  |     option_random_balanced = 2 | ||
|  |     default = 1 | ||
|  | 
 | ||
|  | 
 | ||
|  | class AllowDeathLogic(Toggle): | ||
|  |     """Some locations require a timed puzzle that can only be tried once.
 | ||
|  |     After which, if the player failed to get it, the location cannot be checked anymore. | ||
|  |     By default, no progression items are placed here. There is a way, hovewer, to still get them: | ||
|  |     Get killed in the current map. The map will reset, you can now attempt the puzzle again."""
 | ||
|  |     display_name = "Allow Death Logic" | ||
|  | 
 | ||
|  | 
 | ||
|  | class Episode1(DefaultOnToggle): | ||
|  |     """Knee-Deep in the Dead.
 | ||
|  |     If none of the episodes are chosen, Episode 1 will be chosen by default."""
 | ||
|  |     display_name = "Episode 1" | ||
|  | 
 | ||
|  | 
 | ||
|  | class Episode2(DefaultOnToggle): | ||
|  |     """The Shores of Hell
 | ||
|  |     If none of the episodes are chosen, Episode 1 will be chosen by default."""
 | ||
|  |     display_name = "Episode 2" | ||
|  | 
 | ||
|  | 
 | ||
|  | class Episode3(DefaultOnToggle): | ||
|  |     """Inferno
 | ||
|  |     If none of the episodes are chosen, Episode 1 will be chosen by default."""
 | ||
|  |     display_name = "Episode 3" | ||
|  | 
 | ||
|  | 
 | ||
|  | options: typing.Dict[str, AssembleOptions] = { | ||
|  |     "difficulty": Difficulty, | ||
|  |     "random_monsters": RandomMonsters, | ||
|  |     "random_pickups": RandomPickups, | ||
|  |     "allow_death_logic": AllowDeathLogic, | ||
|  |     "death_link": DeathLink, | ||
|  |     "episode1": Episode1, | ||
|  |     "episode2": Episode2, | ||
|  |     "episode3": Episode3 | ||
|  | } |