| 
									
										
										
										
											2024-08-11 08:47:17 -04:00
										 |  |  | from typing import Callable, Dict, NamedTuple, Optional, TYPE_CHECKING | 
					
						
							| 
									
										
										
										
											2023-07-19 17:16:03 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-11 08:47:17 -04:00
										 |  |  | from BaseClasses import Item, ItemClassification | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if TYPE_CHECKING: | 
					
						
							|  |  |  |     from . import CliqueWorld | 
					
						
							| 
									
										
										
										
											2023-07-19 17:16:03 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CliqueItem(Item): | 
					
						
							|  |  |  |     game = "Clique" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CliqueItemData(NamedTuple): | 
					
						
							|  |  |  |     code: Optional[int] = None | 
					
						
							|  |  |  |     type: ItemClassification = ItemClassification.filler | 
					
						
							| 
									
										
										
										
											2024-08-11 08:47:17 -04:00
										 |  |  |     can_create: Callable[["CliqueWorld"], bool] = lambda world: True | 
					
						
							| 
									
										
										
										
											2023-07-19 17:16:03 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | item_data_table: Dict[str, CliqueItemData] = { | 
					
						
							|  |  |  |     "Feeling of Satisfaction": CliqueItemData( | 
					
						
							|  |  |  |         code=69696969, | 
					
						
							|  |  |  |         type=ItemClassification.progression, | 
					
						
							|  |  |  |     ), | 
					
						
							|  |  |  |     "Button Activation": CliqueItemData( | 
					
						
							|  |  |  |         code=69696968, | 
					
						
							|  |  |  |         type=ItemClassification.progression, | 
					
						
							| 
									
										
										
										
											2024-08-11 08:47:17 -04:00
										 |  |  |         can_create=lambda world: world.options.hard_mode, | 
					
						
							| 
									
										
										
										
											2023-07-19 17:16:03 -05:00
										 |  |  |     ), | 
					
						
							|  |  |  |     "A Cool Filler Item (No Satisfaction Guaranteed)": CliqueItemData( | 
					
						
							|  |  |  |         code=69696967, | 
					
						
							| 
									
										
										
										
											2024-08-11 08:47:17 -04:00
										 |  |  |         can_create=lambda world: False  # Only created from `get_filler_item_name`. | 
					
						
							| 
									
										
										
										
											2023-07-19 17:16:03 -05:00
										 |  |  |     ), | 
					
						
							|  |  |  |     "The Urge to Push": CliqueItemData( | 
					
						
							|  |  |  |         type=ItemClassification.progression, | 
					
						
							|  |  |  |     ), | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | item_table = {name: data.code for name, data in item_data_table.items() if data.code is not None} |