forked from mirror/Archipelago
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
125 lines
3.4 KiB
Python
125 lines
3.4 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),
|
|
"Fast Trap": ItemData(0x770043, False, False, True),
|
|
"Ice Trap": ItemData(0x770044, False, False, True),
|
|
"Push Trap": ItemData(0x770045, False, False, True),
|
|
}
|
|
|
|
filler_item_weights = {
|
|
"1-Up": 4,
|
|
"Maxim Tomato": 2,
|
|
"Invincible Candy": 2
|
|
}
|
|
|
|
star_item_weights = {
|
|
"Little Star": 16,
|
|
"Medium Star": 8,
|
|
"Big Star": 4
|
|
}
|
|
|
|
event_item_table = {
|
|
"Goku": ItemData(None, True),
|
|
"Little Toad": ItemData(None, True),
|
|
"Wall": ItemData(None, True),
|
|
"Donbe": ItemData(None, True),
|
|
"ROB Base": ItemData(None, True),
|
|
"ROB Torso": ItemData(None, True),
|
|
"ROB Left Arm": ItemData(None, True),
|
|
"ROB Right Arm": ItemData(None, True),
|
|
"ROB Head": ItemData(None, True),
|
|
"Mikarin": ItemData(None, True),
|
|
"Shell": ItemData(None, True),
|
|
"Angel Feather": ItemData(None, True),
|
|
}
|
|
|
|
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,
|
|
**event_item_table
|
|
}
|
|
|
|
item_names = {
|
|
"Copy Ability": set(copy_ability_table),
|
|
"Animal Friend": set(animal_friend_table),
|
|
}
|
|
|
|
lookup_item_to_id: typing.Dict[str, int] = {item_name: data.code for item_name, data in item_table.items() if data.code}
|