| 
									
										
										
										
											2022-09-29 14:16:59 -04:00
										 |  |  | import math | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from BaseClasses import MultiWorld | 
					
						
							|  |  |  | from .Names import LocationName, ItemName | 
					
						
							| 
									
										
										
										
											2023-02-19 03:10:32 -05:00
										 |  |  | from worlds.AutoWorld import LogicMixin | 
					
						
							|  |  |  | from worlds.generic.Rules import add_rule, set_rule | 
					
						
							| 
									
										
										
										
											2022-09-29 14:16:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def set_rules(world: MultiWorld, player: int): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if world.goal[player] == "yoshi_egg_hunt": | 
					
						
							|  |  |  |         required_yoshi_eggs = max(math.floor( | 
					
						
							|  |  |  |                 world.number_of_yoshi_eggs[player].value * (world.percentage_of_yoshi_eggs[player].value / 100.0)), 1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         add_rule(world.get_location(LocationName.yoshis_house, player), | 
					
						
							|  |  |  |                  lambda state: state.has(ItemName.yoshi_egg, player, required_yoshi_eggs)) | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         add_rule(world.get_location(LocationName.bowser, player), lambda state: state.has(ItemName.mario_carry, player)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     world.completion_condition[player] = lambda state: state.has(ItemName.victory, player) |