Files
Grinch-AP/worlds/sm64ex/Items.py
josephwhite ce34b60712 Super Mario 64: ItemData class and tables (#4321)
* sm64ex: use item data class

* rearrange imports

* Dict to dict

* remove optional typing

* bonus item descriptions since we can also add stuff for webworld easily

* remove item descriptions (rip) and decrease verbosity for classifications

* formatting
2025-03-08 12:07:50 -05:00

59 lines
2.3 KiB
Python

from typing import NamedTuple
from BaseClasses import Item, ItemClassification
sm64ex_base_id: int = 3626000
class SM64Item(Item):
game: str = "Super Mario 64"
class SM64ItemData(NamedTuple):
code: int | None = None
classification: ItemClassification = ItemClassification.progression
generic_item_data_table: dict[str, SM64ItemData] = {
"Power Star": SM64ItemData(sm64ex_base_id + 0, ItemClassification.progression_skip_balancing),
"Basement Key": SM64ItemData(sm64ex_base_id + 178),
"Second Floor Key": SM64ItemData(sm64ex_base_id + 179),
"Progressive Key": SM64ItemData(sm64ex_base_id + 180),
"Wing Cap": SM64ItemData(sm64ex_base_id + 181),
"Metal Cap": SM64ItemData(sm64ex_base_id + 182),
"Vanish Cap": SM64ItemData(sm64ex_base_id + 183),
"1Up Mushroom": SM64ItemData(sm64ex_base_id + 184, ItemClassification.filler),
}
action_item_data_table: dict[str, SM64ItemData] = {
"Double Jump": SM64ItemData(sm64ex_base_id + 185),
"Triple Jump": SM64ItemData(sm64ex_base_id + 186),
"Long Jump": SM64ItemData(sm64ex_base_id + 187),
"Backflip": SM64ItemData(sm64ex_base_id + 188),
"Side Flip": SM64ItemData(sm64ex_base_id + 189),
"Wall Kick": SM64ItemData(sm64ex_base_id + 190),
"Dive": SM64ItemData(sm64ex_base_id + 191),
"Ground Pound": SM64ItemData(sm64ex_base_id + 192),
"Kick": SM64ItemData(sm64ex_base_id + 193),
"Climb": SM64ItemData(sm64ex_base_id + 194),
"Ledge Grab": SM64ItemData(sm64ex_base_id + 195),
}
cannon_item_data_table: dict[str, SM64ItemData] = {
"Cannon Unlock BoB": SM64ItemData(sm64ex_base_id + 200),
"Cannon Unlock WF": SM64ItemData(sm64ex_base_id + 201),
"Cannon Unlock JRB": SM64ItemData(sm64ex_base_id + 202),
"Cannon Unlock CCM": SM64ItemData(sm64ex_base_id + 203),
"Cannon Unlock SSL": SM64ItemData(sm64ex_base_id + 207),
"Cannon Unlock SL": SM64ItemData(sm64ex_base_id + 209),
"Cannon Unlock WDW": SM64ItemData(sm64ex_base_id + 210),
"Cannon Unlock TTM": SM64ItemData(sm64ex_base_id + 211),
"Cannon Unlock THI": SM64ItemData(sm64ex_base_id + 212),
"Cannon Unlock RR": SM64ItemData(sm64ex_base_id + 214),
}
item_data_table = {
**generic_item_data_table,
**action_item_data_table,
**cannon_item_data_table
}
item_table = {name: data.code for name, data in item_data_table.items() if data.code is not None}