mirror of
				https://github.com/MarioSpore/Grinch-AP.git
				synced 2025-10-21 20:21:32 -06:00 
			
		
		
		
	Made AdvancementGoal a Range again
also fixed the awful rules formatting
This commit is contained in:
		| @@ -1,13 +1,11 @@ | ||||
| import typing | ||||
|  | ||||
| from Options import Choice, Option, Toggle | ||||
| from Options import Choice, Option, Toggle, Range | ||||
|  | ||||
|  | ||||
| class AdvancementGoal(Choice): | ||||
|     option_few = 0 | ||||
|     option_normal = 1 | ||||
|     option_many = 2 | ||||
|     default = 1 | ||||
| class AdvancementGoal(Range): | ||||
|     range_start = 0 | ||||
|     range_end = 87 | ||||
|     default = 50 | ||||
|  | ||||
|  | ||||
| class CombatDifficulty(Choice): | ||||
|   | ||||
| @@ -18,19 +18,15 @@ def set_rules(world: MultiWorld, player: int): | ||||
|     # There are 5 advancements which cannot be included for dragon spawning (4 postgame, Free the End) | ||||
|     # Hence the true maximum is (92 - 5) = 87 | ||||
|     goal = int(world.advancement_goal[player].value) | ||||
|     can_complete = lambda state: len(reachable_locations(state)) >= goal and state.can_reach('The End', 'Region', | ||||
|                                                                                              player) and state.can_kill_ender_dragon( | ||||
|         player) | ||||
|     can_complete = lambda state: len(reachable_locations(state)) >= goal and state.can_reach('The End', 'Region', player) and state.can_kill_ender_dragon(player) | ||||
|  | ||||
|     if world.logic[player] != 'nologic': | ||||
|         world.completion_condition[player] = lambda state: state.has('Victory', player) | ||||
|  | ||||
|     set_rule(world.get_entrance("Nether Portal", player), lambda state: state.has('Flint and Steel', player) and | ||||
|                                                                         (state.has('Bucket', player) or state.has( | ||||
|                                                                             'Progressive Tools', player, 3)) and | ||||
|                                                                         state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_entrance("End Portal", player), | ||||
|              lambda state: state.enter_stronghold(player) and state.has('3 Ender Pearls', player, 4)) | ||||
|     set_rule(world.get_entrance("Nether Portal", player), lambda state: state.has('Flint and Steel', player) and  | ||||
|         (state.has('Bucket', player) or state.has('Progressive Tools', player, 3)) and  | ||||
|         state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_entrance("End Portal", player), lambda state: state.enter_stronghold(player) and state.has('3 Ender Pearls', player, 4)) | ||||
|     set_rule(world.get_entrance("Overworld Structure 1", player), lambda state: state.can_adventure(player)) | ||||
|     set_rule(world.get_entrance("Overworld Structure 2", player), lambda state: state.can_adventure(player)) | ||||
|     set_rule(world.get_entrance("Nether Structure 1", player), lambda state: state.can_adventure(player)) | ||||
| @@ -52,49 +48,35 @@ def set_rules(world: MultiWorld, player: int): | ||||
|                                                                              state.can_reach('Village', 'Region', player) and # Night Vision, Invisibility | ||||
|                                                                              state.can_reach('Bring Home the Beacon', 'Location', player)) # Resistance | ||||
|     set_rule(world.get_location("Best Friends Forever", player), lambda state: True) | ||||
|     set_rule(world.get_location("Bring Home the Beacon", player), | ||||
|              lambda state: state.can_kill_wither(player) and state.has_diamond_pickaxe(player) and | ||||
|                            state.has("Ingot Crafting", player) and state.has("Resource Blocks", player)) | ||||
|     set_rule(world.get_location("Not Today, Thank You", player), | ||||
|              lambda state: state.has("Shield", player) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Isn't It Iron Pick", player), | ||||
|              lambda state: state.has("Progressive Tools", player, 2) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Bring Home the Beacon", player), lambda state: state.can_kill_wither(player) and  | ||||
|         state.has_diamond_pickaxe(player) and state.has("Ingot Crafting", player) and state.has("Resource Blocks", player)) | ||||
|     set_rule(world.get_location("Not Today, Thank You", player), lambda state: state.has("Shield", player) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Isn't It Iron Pick", player), lambda state: state.has("Progressive Tools", player, 2) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Local Brewery", player), lambda state: state.can_brew_potions(player)) | ||||
|     set_rule(world.get_location("The Next Generation", player), lambda state: can_complete(state)) | ||||
|     set_rule(world.get_location("Fishy Business", player), lambda state: state.has("Fishing Rod", player)) | ||||
|     set_rule(world.get_location("Hot Tourist Destinations", player), lambda state: True) | ||||
|     set_rule(world.get_location("This Boat Has Legs", player), | ||||
|              lambda state: (state.fortress_loot(player) or state.complete_raid(player)) and state.has("Fishing Rod", | ||||
|                                                                                                       player)) | ||||
|     set_rule(world.get_location("This Boat Has Legs", player), lambda state: (state.fortress_loot(player) or state.complete_raid(player)) and state.has("Fishing Rod", player)) | ||||
|     set_rule(world.get_location("Sniper Duel", player), lambda state: state.has("Archery", player)) | ||||
|     set_rule(world.get_location("Nether", player), lambda state: True) | ||||
|     set_rule(world.get_location("Great View From Up Here", player), lambda state: state.basic_combat(player)) | ||||
|     set_rule(world.get_location("How Did We Get Here?", player), | ||||
|              lambda state: state.can_brew_potions(player) and state.has_gold_ingots( | ||||
|                  player) and  # most effects; Absorption | ||||
|                            state.can_reach('End City', 'Region', player) and state.can_reach('The Nether', 'Region', | ||||
|                                                                                              player) and  # Levitation; potion ingredients | ||||
|                            state.has("Fishing Rod", player) and state.has("Archery", | ||||
|                                                                           player) and  # Pufferfish, Nautilus Shells; spectral arrows | ||||
|     set_rule(world.get_location("How Did We Get Here?", player), lambda state: state.can_brew_potions(player) and  | ||||
|                            state.has_gold_ingots(player) and  # Absorption | ||||
|                            state.can_reach('End City', 'Region', player) and # Levitation | ||||
|                            state.can_reach('The Nether', 'Region', player) and  # potion ingredients | ||||
|                            state.has("Fishing Rod", player) and state.has("Archery",player) and  # Pufferfish, Nautilus Shells; spectral arrows | ||||
|                            state.can_reach("Bring Home the Beacon", "Location", player) and  # Haste | ||||
|                            state.can_reach("Hero of the Village", "Location", player))  # Bad Omen, Hero of the Village | ||||
|     set_rule(world.get_location("Bullseye", player), | ||||
|              lambda state: state.has("Archery", player) and state.has("Progressive Tools", player, | ||||
|                                                                       2) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Bullseye", player), lambda state: state.has("Archery", player) and state.has("Progressive Tools", player, 2) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Spooky Scary Skeleton", player), lambda state: state.basic_combat(player)) | ||||
|     set_rule(world.get_location("Two by Two", player), | ||||
|              lambda state: state.has_iron_ingots(player) and state.can_adventure( | ||||
|                  player))  # shears > seagrass > turtles; nether > striders; gold carrots > horses skips ingots | ||||
|     set_rule(world.get_location("Two by Two", player), lambda state: state.has_iron_ingots(player) and state.can_adventure(player))  # shears > seagrass > turtles; nether > striders; gold carrots > horses skips ingots | ||||
|     set_rule(world.get_location("Stone Age", player), lambda state: True) | ||||
|     set_rule(world.get_location("Two Birds, One Arrow", player), | ||||
|              lambda state: state.craft_crossbow(player) and state.can_enchant(player)) | ||||
|     set_rule(world.get_location("Two Birds, One Arrow", player), lambda state: state.craft_crossbow(player) and state.can_enchant(player)) | ||||
|     set_rule(world.get_location("We Need to Go Deeper", player), lambda state: True) | ||||
|     set_rule(world.get_location("Who's the Pillager Now?", player), lambda state: state.craft_crossbow(player)) | ||||
|     set_rule(world.get_location("Getting an Upgrade", player), lambda state: state.has("Progressive Tools", player)) | ||||
|     set_rule(world.get_location("Tactical Fishing", player), | ||||
|              lambda state: state.has("Bucket", player) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Zombie Doctor", player), | ||||
|              lambda state: state.can_brew_potions(player) and state.has_gold_ingots(player)) | ||||
|     set_rule(world.get_location("Tactical Fishing", player), lambda state: state.has("Bucket", player) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Zombie Doctor", player), lambda state: state.can_brew_potions(player) and state.has_gold_ingots(player)) | ||||
|     set_rule(world.get_location("The City at the End of the Game", player), lambda state: True) | ||||
|     set_rule(world.get_location("Ice Bucket Challenge", player), lambda state: state.has_diamond_pickaxe(player)) | ||||
|     set_rule(world.get_location("Remote Getaway", player), lambda state: True) | ||||
| @@ -106,71 +88,47 @@ def set_rules(world: MultiWorld, player: int): | ||||
|                                                                      state.can_use_anvil(player) and state.can_enchant(player)) | ||||
|     set_rule(world.get_location("The End... Again...", player), lambda state: can_complete(state)) | ||||
|     set_rule(world.get_location("Acquire Hardware", player), lambda state: state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Not Quite \"Nine\" Lives", player), | ||||
|              lambda state: state.can_piglin_trade(player) and state.has("Resource Blocks", player)) | ||||
|     set_rule(world.get_location("Cover Me With Diamonds", player), | ||||
|              lambda state: state.has("Progressive Armor", player, 2) and state.can_reach("Diamonds!", "Location", | ||||
|                                                                                          player)) | ||||
|     set_rule(world.get_location("Not Quite \"Nine\" Lives", player), lambda state: state.can_piglin_trade(player) and state.has("Resource Blocks", player)) | ||||
|     set_rule(world.get_location("Cover Me With Diamonds", player), lambda state: state.has("Progressive Armor", player, 2) and state.can_reach("Diamonds!", "Location", player)) | ||||
|     set_rule(world.get_location("Sky's the Limit", player), lambda state: state.basic_combat(player)) | ||||
|     set_rule(world.get_location("Hired Help", player), | ||||
|              lambda state: state.has("Resource Blocks", player) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Hired Help", player), lambda state: state.has("Resource Blocks", player) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("Return to Sender", player), lambda state: True) | ||||
|     set_rule(world.get_location("Sweet Dreams", player), | ||||
|              lambda state: state.has("Bed", player) or state.can_reach('Village', 'Region', player)) | ||||
|     set_rule(world.get_location("You Need a Mint", player), | ||||
|              lambda state: can_complete(state) and state.has_bottle_mc(player)) | ||||
|     set_rule(world.get_location("Sweet Dreams", player), lambda state: state.has("Bed", player) or state.can_reach('Village', 'Region', player)) | ||||
|     set_rule(world.get_location("You Need a Mint", player), lambda state: can_complete(state) and state.has_bottle_mc(player)) | ||||
|     set_rule(world.get_location("Adventure", player), lambda state: True) | ||||
|     set_rule(world.get_location("Monsters Hunted", player), | ||||
|              lambda state: can_complete(state) and state.can_kill_wither(player) and state.has("Fishing Rod", | ||||
|                                                                                                player))  # pufferfish for Water Breathing | ||||
|     set_rule(world.get_location("Monsters Hunted", player), lambda state: can_complete(state) and state.can_kill_wither(player) and state.has("Fishing Rod", player))  # pufferfish for Water Breathing | ||||
|     set_rule(world.get_location("Enchanter", player), lambda state: state.can_enchant(player)) | ||||
|     set_rule(world.get_location("Voluntary Exile", player), lambda state: state.basic_combat(player)) | ||||
|     set_rule(world.get_location("Eye Spy", player), lambda state: state.enter_stronghold(player)) | ||||
|     set_rule(world.get_location("The End", player), lambda state: True) | ||||
|     set_rule(world.get_location("Serious Dedication", player), | ||||
|              lambda state: state.can_reach("Hidden in the Depths", "Location", player) and state.has_gold_ingots( | ||||
|                  player)) | ||||
|     set_rule(world.get_location("Serious Dedication", player), lambda state: state.can_reach("Hidden in the Depths", "Location", player) and state.has_gold_ingots(player)) | ||||
|     set_rule(world.get_location("Postmortal", player), lambda state: state.complete_raid(player)) | ||||
|     set_rule(world.get_location("Monster Hunter", player), lambda state: True) | ||||
|     set_rule(world.get_location("Adventuring Time", player), lambda state: state.can_adventure(player)) | ||||
|     set_rule(world.get_location("A Seedy Place", player), lambda state: True) | ||||
|     set_rule(world.get_location("Those Were the Days", player), lambda state: True) | ||||
|     set_rule(world.get_location("Hero of the Village", player), lambda state: state.complete_raid(player)) | ||||
|     set_rule(world.get_location("Hidden in the Depths", player), | ||||
|              lambda state: state.can_brew_potions(player) and state.has("Bed", player) and state.has_diamond_pickaxe( | ||||
|                  player))  # bed mining :) | ||||
|     set_rule(world.get_location("Beaconator", player), | ||||
|              lambda state: state.can_kill_wither(player) and state.has_diamond_pickaxe(player) and | ||||
|     set_rule(world.get_location("Hidden in the Depths", player), lambda state: state.can_brew_potions(player) and state.has("Bed", player) and state.has_diamond_pickaxe(player))  # bed mining :) | ||||
|     set_rule(world.get_location("Beaconator", player), lambda state: state.can_kill_wither(player) and state.has_diamond_pickaxe(player) and | ||||
|                            state.has("Ingot Crafting", player) and state.has("Resource Blocks", player)) | ||||
|     set_rule(world.get_location("Withering Heights", player), lambda state: state.can_kill_wither(player)) | ||||
|     set_rule(world.get_location("A Balanced Diet", player), | ||||
|              lambda state: state.has_bottle_mc(player) and state.has_gold_ingots(player) and  # honey bottle; gapple | ||||
|                            state.has("Resource Blocks", player) and state.can_reach('The End', 'Region', | ||||
|                                                                                     player))  # notch apple, chorus fruit | ||||
|     set_rule(world.get_location("A Balanced Diet", player), lambda state: state.has_bottle_mc(player) and state.has_gold_ingots(player) and  # honey bottle; gapple | ||||
|                            state.has("Resource Blocks", player) and state.can_reach('The End', 'Region', player))  # notch apple, chorus fruit | ||||
|     set_rule(world.get_location("Subspace Bubble", player), lambda state: state.has_diamond_pickaxe(player)) | ||||
|     set_rule(world.get_location("Husbandry", player), lambda state: True) | ||||
|     set_rule(world.get_location("Country Lode, Take Me Home", player), | ||||
|              lambda state: state.can_reach("Hidden in the Depths", "Location", player) and state.has_gold_ingots( | ||||
|                  player)) | ||||
|     set_rule(world.get_location("Bee Our Guest", player), | ||||
|              lambda state: state.has("Campfire", player) and state.has_bottle_mc(player)) | ||||
|     set_rule(world.get_location("Country Lode, Take Me Home", player), lambda state: state.can_reach("Hidden in the Depths", "Location", player) and state.has_gold_ingots(player)) | ||||
|     set_rule(world.get_location("Bee Our Guest", player), lambda state: state.has("Campfire", player) and state.has_bottle_mc(player)) | ||||
|     set_rule(world.get_location("What a Deal!", player), lambda state: True) | ||||
|     set_rule(world.get_location("Uneasy Alliance", player), | ||||
|              lambda state: state.has_diamond_pickaxe(player) and state.has('Fishing Rod', player)) | ||||
|     set_rule(world.get_location("Diamonds!", player), | ||||
|              lambda state: state.has("Progressive Tools", player, 2) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("A Terrible Fortress", player), | ||||
|              lambda state: True)  # since you don't have to fight anything | ||||
|     set_rule(world.get_location("Uneasy Alliance", player), lambda state: state.has_diamond_pickaxe(player) and state.has('Fishing Rod', player)) | ||||
|     set_rule(world.get_location("Diamonds!", player), lambda state: state.has("Progressive Tools", player, 2) and state.has_iron_ingots(player)) | ||||
|     set_rule(world.get_location("A Terrible Fortress", player), lambda state: True)  # since you don't have to fight anything | ||||
|     set_rule(world.get_location("A Throwaway Joke", player), lambda state: True)  # kill drowned | ||||
|     set_rule(world.get_location("Minecraft", player), lambda state: True) | ||||
|     set_rule(world.get_location("Sticky Situation", player), | ||||
|              lambda state: state.has("Campfire", player) and state.has_bottle_mc(player)) | ||||
|     set_rule(world.get_location("Sticky Situation", player), lambda state: state.has("Campfire", player) and state.has_bottle_mc(player)) | ||||
|     set_rule(world.get_location("Ol' Betsy", player), lambda state: state.craft_crossbow(player)) | ||||
|     set_rule(world.get_location("Cover Me in Debris", player), | ||||
|              lambda state: state.has("Progressive Armor", player, 2) and | ||||
|     set_rule(world.get_location("Cover Me in Debris", player), lambda state: state.has("Progressive Armor", player, 2) and | ||||
|                            state.has("8 Netherite Scrap", player, 2) and state.has("Ingot Crafting", player) and | ||||
|                            state.can_reach("Diamonds!", "Location", player) and state.can_reach("Hidden in the Depths", | ||||
|                                                                                                 "Location", player)) | ||||
|                            state.can_reach("Diamonds!", "Location", player) and state.can_reach("Hidden in the Depths", "Location", player)) | ||||
|     set_rule(world.get_location("The End?", player), lambda state: True) | ||||
|     set_rule(world.get_location("The Parrots and the Bats", player), lambda state: True) | ||||
|     set_rule(world.get_location("A Complete Catalogue", player), lambda state: True)  # kill fish for raw | ||||
| @@ -178,19 +136,13 @@ def set_rules(world: MultiWorld, player: int): | ||||
|     set_rule(world.get_location("Time to Mine!", player), lambda state: True) | ||||
|     set_rule(world.get_location("Hot Topic", player), lambda state: state.has("Ingot Crafting", player)) | ||||
|     set_rule(world.get_location("Bake Bread", player), lambda state: True) | ||||
|     set_rule(world.get_location("The Lie", player), | ||||
|              lambda state: state.has_iron_ingots(player) and state.has("Bucket", player)) | ||||
|     set_rule(world.get_location("On a Rail", player), | ||||
|              lambda state: state.has_iron_ingots(player) and state.has('Progressive Tools', player, 2))  # powered rails | ||||
|     set_rule(world.get_location("The Lie", player), lambda state: state.has_iron_ingots(player) and state.has("Bucket", player)) | ||||
|     set_rule(world.get_location("On a Rail", player), lambda state: state.has_iron_ingots(player) and state.has('Progressive Tools', player, 2))  # powered rails | ||||
|     set_rule(world.get_location("Time to Strike!", player), lambda state: True) | ||||
|     set_rule(world.get_location("Cow Tipper", player), lambda state: True) | ||||
|     set_rule(world.get_location("When Pigs Fly", player), | ||||
|              lambda state: (state.fortress_loot(player) or state.complete_raid(player)) and state.has("Fishing Rod", | ||||
|                                                                                                       player) and state.can_adventure( | ||||
|                  player)) | ||||
|     set_rule(world.get_location("Overkill", player), lambda state: state.can_brew_potions(player) and ( | ||||
|                 state.has("Progressive Weapons", player) or state.can_reach('The Nether', 'Region', | ||||
|                                                                             player)))  # strength 1 + stone axe crit OR strength 2 + wood axe crit | ||||
|     set_rule(world.get_location("When Pigs Fly", player), lambda state: (state.fortress_loot(player) or state.complete_raid(player)) and  | ||||
|         state.has("Fishing Rod", player) and state.can_adventure(player)) | ||||
|     set_rule(world.get_location("Overkill", player), lambda state: state.can_brew_potions(player) and  | ||||
|         (state.has("Progressive Weapons", player) or state.can_reach('The Nether', 'Region', player)))  # strength 1 + stone axe crit OR strength 2 + wood axe crit | ||||
|     set_rule(world.get_location("Librarian", player), lambda state: state.has("Enchanting", player)) | ||||
|     set_rule(world.get_location("Overpowered", player), | ||||
|              lambda state: state.has("Resource Blocks", player) and state.has_gold_ingots(player)) | ||||
|     set_rule(world.get_location("Overpowered", player), lambda state: state.has("Resource Blocks", player) and state.has_gold_ingots(player)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 espeon65536
					espeon65536