73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from BaseClasses import Item | ||
|  | from typing import NamedTuple, Dict | ||
|  | from . import names | ||
|  | 
 | ||
|  | 
 | ||
|  | class ItemData(NamedTuple): | ||
|  |     code: int | ||
|  |     progression: bool | ||
|  |     useful: bool = False  # primarily use this for incredibly useful items of their class, like Metal Blade | ||
|  |     skip_balancing: bool = False | ||
|  | 
 | ||
|  | 
 | ||
|  | class MM2Item(Item): | ||
|  |     game = "Mega Man 2" | ||
|  | 
 | ||
|  | 
 | ||
|  | robot_master_weapon_table = { | ||
|  |     names.atomic_fire: ItemData(0x880001, True), | ||
|  |     names.air_shooter: ItemData(0x880002, True), | ||
|  |     names.leaf_shield: ItemData(0x880003, True), | ||
|  |     names.bubble_lead: ItemData(0x880004, True), | ||
|  |     names.quick_boomerang: ItemData(0x880005, True), | ||
|  |     names.time_stopper: ItemData(0x880006, True, True), | ||
|  |     names.metal_blade: ItemData(0x880007, True, True), | ||
|  |     names.crash_bomber: ItemData(0x880008, True), | ||
|  | } | ||
|  | 
 | ||
|  | stage_access_table = { | ||
|  |     names.heat_man_stage: ItemData(0x880101, True), | ||
|  |     names.air_man_stage: ItemData(0x880102, True), | ||
|  |     names.wood_man_stage: ItemData(0x880103, True), | ||
|  |     names.bubble_man_stage: ItemData(0x880104, True), | ||
|  |     names.quick_man_stage: ItemData(0x880105, True), | ||
|  |     names.flash_man_stage: ItemData(0x880106, True), | ||
|  |     names.metal_man_stage: ItemData(0x880107, True), | ||
|  |     names.crash_man_stage: ItemData(0x880108, True), | ||
|  | } | ||
|  | 
 | ||
|  | item_item_table = { | ||
|  |     names.item_1: ItemData(0x880011, True, True, True), | ||
|  |     names.item_2: ItemData(0x880012, True, True, True), | ||
|  |     names.item_3: ItemData(0x880013, True, True, True) | ||
|  | } | ||
|  | 
 | ||
|  | filler_item_table = { | ||
|  |     names.one_up: ItemData(0x880020, False), | ||
|  |     names.weapon_energy: ItemData(0x880021, False), | ||
|  |     names.health_energy: ItemData(0x880022, False), | ||
|  |     names.e_tank: ItemData(0x880023, False, True), | ||
|  | } | ||
|  | 
 | ||
|  | filler_item_weights = { | ||
|  |     names.one_up: 1, | ||
|  |     names.weapon_energy: 4, | ||
|  |     names.health_energy: 1, | ||
|  |     names.e_tank: 2, | ||
|  | } | ||
|  | 
 | ||
|  | item_table = { | ||
|  |     **robot_master_weapon_table, | ||
|  |     **stage_access_table, | ||
|  |     **item_item_table, | ||
|  |     **filler_item_table, | ||
|  | } | ||
|  | 
 | ||
|  | item_names = { | ||
|  |     "Weapons": {name for name in robot_master_weapon_table.keys()}, | ||
|  |     "Stages": {name for name in stage_access_table.keys()}, | ||
|  |     "Items": {name for name in item_item_table.keys()} | ||
|  | } | ||
|  | 
 | ||
|  | lookup_item_to_id: Dict[str, int] = {item_name: data.code for item_name, data in item_table.items()} |