mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 04:01:32 -06:00

### Features: - Trap Link - When you receive a trap, you send a copy of it to every other player with Trap Link enabled - Ring Link - Any coin amounts gained and lost by a linked player will be instantly shared with all other active linked players Co-authored-by: TheLX5 <luisyuregi@gmail.com>
124 lines
4.3 KiB
Python
124 lines
4.3 KiB
Python
import typing
|
|
|
|
from BaseClasses import Item, ItemClassification
|
|
from .Names import ItemName
|
|
|
|
|
|
class ItemData(typing.NamedTuple):
|
|
code: typing.Optional[int]
|
|
progression: bool
|
|
trap: bool = False
|
|
quantity: int = 1
|
|
event: bool = False
|
|
|
|
|
|
class SMWItem(Item):
|
|
game: str = "Super Mario World"
|
|
|
|
|
|
# Separate tables for each type of item.
|
|
junk_table = {
|
|
ItemName.one_coin: ItemData(0xBC0017, False),
|
|
ItemName.five_coins: ItemData(0xBC0018, False),
|
|
ItemName.ten_coins: ItemData(0xBC0019, False),
|
|
ItemName.fifty_coins: ItemData(0xBC001A, False),
|
|
ItemName.one_up_mushroom: ItemData(0xBC0001, False),
|
|
}
|
|
|
|
collectable_table = {
|
|
ItemName.yoshi_egg: ItemData(0xBC0002, True),
|
|
}
|
|
|
|
upgrade_table = {
|
|
ItemName.mario_run: ItemData(0xBC0003, True),
|
|
ItemName.mario_carry: ItemData(0xBC0004, True),
|
|
ItemName.mario_swim: ItemData(0xBC0005, True),
|
|
ItemName.mario_spin_jump: ItemData(0xBC0006, True),
|
|
ItemName.mario_climb: ItemData(0xBC0007, True),
|
|
ItemName.yoshi_activate: ItemData(0xBC0008, True),
|
|
ItemName.p_switch: ItemData(0xBC0009, True),
|
|
ItemName.progressive_powerup: ItemData(0xBC000A, True),
|
|
ItemName.p_balloon: ItemData(0xBC000B, True),
|
|
ItemName.super_star_active: ItemData(0xBC000D, True),
|
|
ItemName.special_world_clear: ItemData(0xBC001B, True),
|
|
}
|
|
|
|
switch_palace_table = {
|
|
ItemName.yellow_switch_palace: ItemData(0xBC000E, True),
|
|
ItemName.green_switch_palace: ItemData(0xBC000F, True),
|
|
ItemName.red_switch_palace: ItemData(0xBC0010, True),
|
|
ItemName.blue_switch_palace: ItemData(0xBC0011, True),
|
|
}
|
|
|
|
trap_table = {
|
|
ItemName.ice_trap: ItemData(0xBC0013, False, True),
|
|
ItemName.stun_trap: ItemData(0xBC0014, False, True),
|
|
ItemName.literature_trap: ItemData(0xBC0015, False, True),
|
|
ItemName.timer_trap: ItemData(0xBC0016, False, True),
|
|
ItemName.reverse_controls_trap: ItemData(0xBC001C, False, True),
|
|
ItemName.thwimp_trap: ItemData(0xBC001D, False, True),
|
|
}
|
|
|
|
event_table = {
|
|
ItemName.victory: ItemData(0xBC0000, True),
|
|
ItemName.koopaling: ItemData(0xBC0012, True),
|
|
}
|
|
|
|
# Complete item table.
|
|
item_table = {
|
|
**junk_table,
|
|
**collectable_table,
|
|
**upgrade_table,
|
|
**switch_palace_table,
|
|
**trap_table,
|
|
**event_table,
|
|
}
|
|
|
|
lookup_id_to_name: typing.Dict[int, str] = {data.code: item_name for item_name, data in item_table.items() if data.code}
|
|
|
|
|
|
trap_value_to_name: typing.Dict[int, str] = {
|
|
0xBC0013: ItemName.ice_trap,
|
|
0xBC0014: ItemName.stun_trap,
|
|
0xBC0015: ItemName.literature_trap,
|
|
0xBC0016: ItemName.timer_trap,
|
|
0xBC001C: ItemName.reverse_controls_trap,
|
|
0xBC001D: ItemName.thwimp_trap,
|
|
}
|
|
|
|
trap_name_to_value: typing.Dict[str, int] = {
|
|
# Our native Traps
|
|
ItemName.ice_trap: 0xBC0013,
|
|
ItemName.stun_trap: 0xBC0014,
|
|
ItemName.literature_trap: 0xBC0015,
|
|
ItemName.timer_trap: 0xBC0016,
|
|
ItemName.reverse_controls_trap: 0xBC001C,
|
|
ItemName.thwimp_trap: 0xBC001D,
|
|
|
|
# Common other trap names
|
|
"Chaos Control Trap": 0xBC0014, # Stun Trap
|
|
"Confuse Trap": 0xBC001C, # Reverse Trap
|
|
"Exposition Trap": 0xBC0015, # Literature Trap
|
|
"Cutscene Trap": 0xBC0015, # Literature Trap
|
|
"Freeze Trap": 0xBC0014, # Stun Trap
|
|
"Frozen Trap": 0xBC0014, # Stun Trap
|
|
"Paralyze Trap": 0xBC0014, # Stun Trap
|
|
"Reversal Trap": 0xBC001C, # Reverse Trap
|
|
"Fuzzy Trap": 0xBC001C, # Reverse Trap
|
|
"Confound Trap": 0xBC001C, # Reverse Trap
|
|
"Confusion Trap": 0xBC001C, # Reverse Trap
|
|
"Police Trap": 0xBC001D, # Thwimp Trap
|
|
"Buyon Trap": 0xBC001D, # Thwimp Trap
|
|
"Gooey Bag": 0xBC001D, # Thwimp Trap
|
|
"TNT Barrel Trap": 0xBC001D, # Thwimp Trap
|
|
"Honey Trap": 0xBC0014, # Stun Trap
|
|
"Screen Flip Trap": 0xBC001C, # Reverse Trap
|
|
"Banana Trap": 0xBC0013, # Ice Trap
|
|
"Bomb": 0xBC001D, # Thwimp Trap
|
|
"Bonk Trap": 0xBC0014, # Stun Trap
|
|
"Ghost": 0xBC001D, # Thwimp Trap
|
|
"Fast Trap": 0xBC0016, # Timer Trap
|
|
"Nut Trap": 0xBC001D, # Thwimp Trap
|
|
"Army Trap": 0xBC001D, # Thwimp Trap
|
|
}
|