106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from BaseClasses import Item | ||
|  | import typing | ||
|  | 
 | ||
|  | 
 | ||
|  | class ItemData(typing.NamedTuple): | ||
|  |     code: typing.Optional[int] | ||
|  |     progression: bool | ||
|  |     skip_balancing: bool = False | ||
|  |     trap: bool = False | ||
|  | 
 | ||
|  | 
 | ||
|  | class KDL3Item(Item): | ||
|  |     game = "Kirby's Dream Land 3" | ||
|  | 
 | ||
|  | 
 | ||
|  | copy_ability_table = { | ||
|  |     "Burning": ItemData(0x770001, True), | ||
|  |     "Stone": ItemData(0x770002, True), | ||
|  |     "Ice": ItemData(0x770003, True), | ||
|  |     "Needle": ItemData(0x770004, True), | ||
|  |     "Clean": ItemData(0x770005, True), | ||
|  |     "Parasol": ItemData(0x770006, True), | ||
|  |     "Spark": ItemData(0x770007, True), | ||
|  |     "Cutter": ItemData(0x770008, True) | ||
|  | } | ||
|  | 
 | ||
|  | animal_friend_table = { | ||
|  |     "Rick": ItemData(0x770010, True), | ||
|  |     "Kine": ItemData(0x770011, True), | ||
|  |     "Coo": ItemData(0x770012, True), | ||
|  |     "Nago": ItemData(0x770013, True), | ||
|  |     "ChuChu": ItemData(0x770014, True), | ||
|  |     "Pitch": ItemData(0x770015, True) | ||
|  | } | ||
|  | 
 | ||
|  | animal_friend_spawn_table = { | ||
|  |     "Rick Spawn": ItemData(None, True), | ||
|  |     "Kine Spawn": ItemData(None, True), | ||
|  |     "Coo Spawn": ItemData(None, True), | ||
|  |     "Nago Spawn": ItemData(None, True), | ||
|  |     "ChuChu Spawn": ItemData(None, True), | ||
|  |     "Pitch Spawn": ItemData(None, True) | ||
|  | } | ||
|  | 
 | ||
|  | copy_ability_access_table = { | ||
|  |     "No Ability": ItemData(None, False), | ||
|  |     "Burning Ability": ItemData(None, True), | ||
|  |     "Stone Ability": ItemData(None, True), | ||
|  |     "Ice Ability": ItemData(None, True), | ||
|  |     "Needle Ability": ItemData(None, True), | ||
|  |     "Clean Ability": ItemData(None, True), | ||
|  |     "Parasol Ability": ItemData(None, True), | ||
|  |     "Spark Ability": ItemData(None, True), | ||
|  |     "Cutter Ability": ItemData(None, True), | ||
|  | } | ||
|  | 
 | ||
|  | misc_item_table = { | ||
|  |     "Heart Star": ItemData(0x770020, True, True), | ||
|  |     "1-Up": ItemData(0x770021, False), | ||
|  |     "Maxim Tomato": ItemData(0x770022, False), | ||
|  |     "Invincible Candy": ItemData(0x770023, False), | ||
|  |     "Little Star": ItemData(0x770024, False), | ||
|  |     "Medium Star": ItemData(0x770025, False), | ||
|  |     "Big Star": ItemData(0x770026, False), | ||
|  | } | ||
|  | 
 | ||
|  | trap_item_table = { | ||
|  |     "Gooey Bag": ItemData(0x770040, False, False, True), | ||
|  |     "Slowness": ItemData(0x770041, False, False, True), | ||
|  |     "Eject Ability": ItemData(0x770042, False, False, True) | ||
|  | } | ||
|  | 
 | ||
|  | filler_item_weights = { | ||
|  |     "1-Up": 4, | ||
|  |     "Maxim Tomato": 2, | ||
|  |     "Invincible Candy": 2 | ||
|  | } | ||
|  | 
 | ||
|  | star_item_weights = { | ||
|  |     "Little Star": 4, | ||
|  |     "Medium Star": 2, | ||
|  |     "Big Star": 1 | ||
|  | } | ||
|  | 
 | ||
|  | total_filler_weights = { | ||
|  |     **filler_item_weights, | ||
|  |     **star_item_weights | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | item_table = { | ||
|  |     **copy_ability_table, | ||
|  |     **copy_ability_access_table, | ||
|  |     **animal_friend_table, | ||
|  |     **animal_friend_spawn_table, | ||
|  |     **misc_item_table, | ||
|  |     **trap_item_table | ||
|  | } | ||
|  | 
 | ||
|  | item_names = { | ||
|  |     "Copy Ability": set(copy_ability_table), | ||
|  |     "Animal Friend": set(animal_friend_table), | ||
|  | } | ||
|  | 
 | ||
|  | lookup_name_to_id: typing.Dict[str, int] = {item_name: data.code for item_name, data in item_table.items() if data.code} |