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
1031 lines
55 KiB
Python
1031 lines
55 KiB
Python
from typing import NamedTuple, Dict, Set, List
|
|
|
|
from BaseClasses import ItemClassification, Item
|
|
|
|
|
|
# Specific ItemData for this game, based off of the Archipelago ItemData class
|
|
class ItemData(NamedTuple):
|
|
name: str
|
|
id: int # All dungeons have the same id as their id in the base game for ease of use
|
|
classification: ItemClassification
|
|
start_number: int # originally inteded to have the start id of the dungeon, ended up changed to the same value.
|
|
# also can be used for weights for filler items and traps
|
|
|
|
group: list[str]
|
|
memory_offset: int # memory address for where the item is in the game usually per game table
|
|
|
|
|
|
# Game specific Item that extends the Archipelago Item. Only thing this changes is sets the game name so that AP knows
|
|
# what game the item comes from
|
|
class EOSItem(Item):
|
|
game: str = "Pokemon Mystery Dungeon Explorers of Sky"
|
|
|
|
|
|
# Make a dictionary that separates the item table based on the different groups for being able to search for all items
|
|
# under a specific group
|
|
def get_item_table_by_groups() -> Dict[str, set[str]]:
|
|
# groups: Set[str] = set()
|
|
new_dict: Dict[str, set[str]] = {}
|
|
for item_name in item_table:
|
|
if item_table[item_name].group:
|
|
for group in item_table[item_name].group:
|
|
if group in new_dict:
|
|
new_dict[group].add(item_name)
|
|
else:
|
|
group_set = set("")
|
|
group_set.add(item_name)
|
|
new_dict.update({group: group_set})
|
|
|
|
return new_dict
|
|
|
|
|
|
# Item table for all the EOS items that can be in the game. Does not include filler or trap items.
|
|
EOS_item_table = [
|
|
# "Test Dungeon"0, ItemClassification.progression, ["Unique", "Dungeons"],0x0), Test Dungeon does not actually exist
|
|
# ItemData("Beach Cave", 1, ItemClassification.progression, 1, ["Unique", "EarlyDungeons"], 0x1), Beach cave is open
|
|
# by default
|
|
ItemData(
|
|
"Drenched Bluff", 3, ItemClassification.progression, 3, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x3
|
|
),
|
|
ItemData("Mt. Bristle", 4, ItemClassification.progression, 4, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x4),
|
|
ItemData(
|
|
"Waterfall Cave", 6, ItemClassification.progression, 6, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x6
|
|
),
|
|
ItemData("Apple Woods", 7, ItemClassification.progression, 7, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x7),
|
|
ItemData("Craggy Coast", 8, ItemClassification.progression, 8, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x8),
|
|
ItemData("Side Path", 9, ItemClassification.progression, 9, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x9),
|
|
ItemData("Mt. Horn", 10, ItemClassification.progression, 10, ["Unique", "EarlyDungeons", "MissionDungeons"], 0xA),
|
|
ItemData("Rock Path", 11, ItemClassification.progression, 11, ["Unique", "EarlyDungeons", "MissionDungeons"], 0xB),
|
|
ItemData(
|
|
"Foggy Forest", 12, ItemClassification.progression, 12, ["Unique", "EarlyDungeons", "MissionDungeons"], 0xC
|
|
),
|
|
ItemData(
|
|
"Forest Path", 13, ItemClassification.progression, 13, ["Unique", "EarlyDungeons", "MissionDungeons"], 0xD
|
|
),
|
|
ItemData("Steam Cave", 14, ItemClassification.progression, 14, ["Unique", "EarlyDungeons", "MissionDungeons"], 0xE),
|
|
ItemData(
|
|
"Amp Plains", 17, ItemClassification.progression, 17, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x11
|
|
),
|
|
ItemData(
|
|
"Northern Desert", 20, ItemClassification.progression, 20, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x14
|
|
),
|
|
ItemData(
|
|
"Quicksand Cave", 21, ItemClassification.progression, 21, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x15
|
|
),
|
|
ItemData(
|
|
"Crystal Cave", 24, ItemClassification.progression, 24, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x18
|
|
),
|
|
ItemData(
|
|
"Crystal Crossing", 25, ItemClassification.progression, 25, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x19
|
|
),
|
|
ItemData(
|
|
"Chasm Cave", 27, ItemClassification.progression, 27, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x1B
|
|
),
|
|
ItemData("Dark Hill", 28, ItemClassification.progression, 28, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x1C),
|
|
ItemData(
|
|
"Sealed Ruin", 29, ItemClassification.progression, 29, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x1D
|
|
),
|
|
ItemData(
|
|
"Dusk Forest", 32, ItemClassification.progression, 32, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x20
|
|
),
|
|
ItemData(
|
|
"Deep Dusk Forest", 33, ItemClassification.progression, 33, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x21
|
|
),
|
|
ItemData(
|
|
"Treeshroud Forest",
|
|
34,
|
|
ItemClassification.progression,
|
|
34,
|
|
["Unique", "EarlyDungeons", "MissionDungeons"],
|
|
0x22,
|
|
),
|
|
ItemData(
|
|
"Brine Cave", 35, ItemClassification.progression, 35, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x23
|
|
),
|
|
# Hidden Land is opened by relic fragment shards (Macguffins)
|
|
# ItemData("Hidden Land", 38, ItemClassification.progression, 38, ["Unique", "BossDungeons"], 0x26),
|
|
ItemData("Temporal Tower", 41, ItemClassification.progression, 41, ["Unique", "BossDungeons"], 0x29),
|
|
ItemData(
|
|
"Mystifying Forest", 44, ItemClassification.progression, 44, ["Unique", "LateDungeons", "MissionDungeons"], 0x2C
|
|
),
|
|
ItemData(
|
|
"Blizzard Island", 46, ItemClassification.progression, 46, ["Unique", "LateDungeons", "MissionDungeons"], 0x2E
|
|
),
|
|
ItemData(
|
|
"Crevice Cave", 47, ItemClassification.progression, 47, ["Unique", "LateDungeons", "MissionDungeons"], 0x2F
|
|
),
|
|
ItemData(
|
|
"Surrounded Sea", 50, ItemClassification.progression, 50, ["Unique", "LateDungeons", "MissionDungeons"], 0x32
|
|
),
|
|
ItemData(
|
|
"Miracle Sea", 51, ItemClassification.progression, 51, ["Unique", "LateDungeons", "MissionDungeons"], 0x33
|
|
),
|
|
ItemData("Ice Aegis Cave", 54, ItemClassification.progression, 54, ["Unique", "LateDungeons"], 0x36),
|
|
ItemData(
|
|
"Mt. Travail", 62, ItemClassification.progression, 62, ["Unique", "LateDungeons", "MissionDungeons"], 0x3E
|
|
),
|
|
ItemData(
|
|
"The Nightmare", 63, ItemClassification.progression, 63, ["Unique", "LateDungeons", "MissionDungeons"], 0x3F
|
|
),
|
|
ItemData(
|
|
"Spacial Rift", 64, ItemClassification.progression, 64, ["Unique", "LateDungeons", "MissionDungeons"], 0x40
|
|
),
|
|
# Dark Crater auto opens if you get the amount of instruments needed
|
|
# ItemData("Dark Crater", 67, ItemClassification.progression, 67, ["Unique", "BossDungeons"], 0x43),
|
|
ItemData(
|
|
"Concealed Ruins", 70, ItemClassification.progression, 70, ["Unique", "LateDungeons", "MissionDungeons"], 0x46
|
|
),
|
|
ItemData(
|
|
"Marine Resort", 72, ItemClassification.progression, 72, ["Unique", "LateDungeons", "MissionDungeons"], 0x48
|
|
),
|
|
ItemData(
|
|
"Bottomless Sea", 73, ItemClassification.progression, 73, ["Unique", "LateDungeons", "MissionDungeons"], 0x49
|
|
),
|
|
ItemData(
|
|
"Shimmer Desert", 75, ItemClassification.progression, 75, ["Unique", "LateDungeons", "MissionDungeons"], 0x4B
|
|
),
|
|
ItemData(
|
|
"Mt. Avalanche", 77, ItemClassification.progression, 77, ["Unique", "LateDungeons", "MissionDungeons"], 0x4D
|
|
),
|
|
ItemData(
|
|
"Giant Volcano", 79, ItemClassification.progression, 79, ["Unique", "LateDungeons", "MissionDungeons"], 0x4F
|
|
),
|
|
ItemData(
|
|
"World Abyss", 81, ItemClassification.progression, 81, ["Unique", "LateDungeons", "MissionDungeons"], 0x51
|
|
),
|
|
ItemData(
|
|
"Sky Stairway", 83, ItemClassification.progression, 83, ["Unique", "LateDungeons", "MissionDungeons"], 0x53
|
|
),
|
|
ItemData(
|
|
"Mystery Jungle", 85, ItemClassification.progression, 85, ["Unique", "LateDungeons", "MissionDungeons"], 0x55
|
|
),
|
|
ItemData(
|
|
"Serenity River", 87, ItemClassification.progression, 87, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x57
|
|
),
|
|
ItemData(
|
|
"Landslide Cave", 88, ItemClassification.progression, 88, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x58
|
|
),
|
|
ItemData(
|
|
"Lush Prairie", 89, ItemClassification.progression, 89, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x59
|
|
),
|
|
ItemData(
|
|
"Tiny Meadow", 90, ItemClassification.progression, 90, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x5A
|
|
),
|
|
ItemData(
|
|
"Labyrinth Cave", 91, ItemClassification.progression, 91, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x5B
|
|
),
|
|
ItemData(
|
|
"Oran Forest", 92, ItemClassification.progression, 92, ["Unique", "EarlyDungeons", "MissionDungeons"], 0x5C
|
|
),
|
|
ItemData("Lake Afar", 93, ItemClassification.progression, 93, ["Unique", "LateDungeons", "MissionDungeons"], 0x5D),
|
|
ItemData(
|
|
"Happy Outlook", 94, ItemClassification.progression, 94, ["Unique", "LateDungeons", "MissionDungeons"], 0x5E
|
|
),
|
|
ItemData(
|
|
"Mt. Mistral", 95, ItemClassification.progression, 95, ["Unique", "LateDungeons", "MissionDungeons"], 0x5F
|
|
),
|
|
ItemData(
|
|
"Shimmer Hill", 96, ItemClassification.progression, 96, ["Unique", "LateDungeons", "MissionDungeons"], 0x60
|
|
),
|
|
ItemData(
|
|
"Lost Wilderness", 97, ItemClassification.progression, 97, ["Unique", "LateDungeons", "MissionDungeons"], 0x61
|
|
),
|
|
ItemData(
|
|
"Midnight Forest", 98, ItemClassification.progression, 98, ["Unique", "LateDungeons", "MissionDungeons"], 0x62
|
|
),
|
|
ItemData("Zero Isle North", 99, ItemClassification.progression, 99, ["Unique", "RuleDungeons"], 0x63),
|
|
ItemData("Zero Isle East", 100, ItemClassification.progression, 100, ["Unique", "RuleDungeons"], 0x64),
|
|
ItemData("Zero Isle West", 101, ItemClassification.progression, 101, ["Unique", "RuleDungeons"], 0x65),
|
|
ItemData("Zero Isle South", 102, ItemClassification.progression, 102, ["Unique", "RuleDungeons"], 0x66),
|
|
ItemData("Zero Isle Center", 103, ItemClassification.progression, 103, ["Unique", "RuleDungeons"], 0x67),
|
|
ItemData("Destiny Tower", 104, ItemClassification.progression, 104, ["Unique", "RuleDungeons"], 0x68),
|
|
ItemData("Oblivion Forest", 107, ItemClassification.progression, 107, ["Unique", "RuleDungeons"], 0x6B),
|
|
ItemData("Treacherous Waters", 108, ItemClassification.progression, 108, ["Unique", "RuleDungeons"], 0x6C),
|
|
ItemData("Southeastern Islands", 109, ItemClassification.progression, 109, ["Unique", "RuleDungeons"], 0x6D),
|
|
ItemData("Inferno Cave", 110, ItemClassification.progression, 110, ["Unique", "RuleDungeons"], 0x6E),
|
|
ItemData(
|
|
"1st Station Pass",
|
|
111,
|
|
ItemClassification.progression,
|
|
111,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x6F,
|
|
),
|
|
ItemData(
|
|
"2nd Station Pass",
|
|
112,
|
|
ItemClassification.progression,
|
|
112,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x70,
|
|
),
|
|
ItemData(
|
|
"3rd Station Pass",
|
|
113,
|
|
ItemClassification.progression,
|
|
113,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x71,
|
|
),
|
|
ItemData(
|
|
"4th Station Pass",
|
|
114,
|
|
ItemClassification.progression,
|
|
114,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x72,
|
|
),
|
|
ItemData(
|
|
"5th Station Pass",
|
|
115,
|
|
ItemClassification.progression,
|
|
115,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x73,
|
|
),
|
|
ItemData(
|
|
"6th Station Pass",
|
|
116,
|
|
ItemClassification.progression,
|
|
116,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x74,
|
|
),
|
|
ItemData(
|
|
"7th Station Pass",
|
|
117,
|
|
ItemClassification.progression,
|
|
117,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x75,
|
|
),
|
|
ItemData(
|
|
"8th Station Pass",
|
|
118,
|
|
ItemClassification.progression,
|
|
118,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x76,
|
|
),
|
|
ItemData(
|
|
"9th Station Pass",
|
|
119,
|
|
ItemClassification.progression,
|
|
119,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x77,
|
|
),
|
|
ItemData(
|
|
"Sky Peak Summit Pass",
|
|
120,
|
|
ItemClassification.progression,
|
|
120,
|
|
["Unique", "LateDungeons", "SkyPeak", "MissionDungeons"],
|
|
0x78,
|
|
),
|
|
# Boss parts of the dungeons do not need to be unlocked by the client
|
|
# ItemData("5th Station Clearing", 121, ItemClassification.progression, 121,
|
|
# ["Unique", "LateDungeons", "MissionDungeons"], 0x79),
|
|
# ItemData("Sky Peak Summit", 122, ItemClassification.progression, 122,
|
|
# ["Unique", "LateDungeons", "MissionDungeons"], 0x7A),
|
|
# SPECIAL EPISODES // All special episodes are unlocked by their beginning dungeon
|
|
ItemData("Bidoof's Wish", 123, ItemClassification.progression, 123, ["Unique", "Special Dungeons"], 0x0),
|
|
# ItemData("SE Star Cave", 123, ItemClassification.useful, 123, ["Unique", "Special Dungeons"], 0x7B),
|
|
ItemData("Igglybuff the Prodigy", 128, ItemClassification.progression, 128, ["Unique", "Special Dungeons"], 0x1),
|
|
# ItemData("Murky Forest", 128, ItemClassification.useful, 128, ["Unique", "Special Dungeons"], 0x80),
|
|
# ItemData("Eastern Cave", 129, ItemClassification.useful, 129, ["Unique", "Special Dungeons"], 0x81),
|
|
# ItemData("Fortune Ravine", 130, ItemClassification.useful, 130, ["Unique", "Special Dungeons"], 0x82),
|
|
ItemData(
|
|
"In the Future of Darkness", 133, ItemClassification.progression, 133, ["Unique", "Special Dungeons"], 0x4
|
|
),
|
|
# ItemData("Barren Valley", 133, ItemClassification.useful, 133, ["Unique", "Special Dungeons"], 0x85),
|
|
# ItemData("Dark Wasteland", 136, ItemClassification.useful, 136, ["Unique", "Special Dungeons"], 0x88),
|
|
# ItemData("Temporal Tower2", 137, ItemClassification.useful, 137, ["Unique", "Special Dungeons"], 0x89),
|
|
# ItemData("Dusk Forest2", 139, ItemClassification.useful, 139, ["Unique", "Special Dungeons"], 0x8B),
|
|
# ItemData("Spacial Cliffs", 141, ItemClassification.useful, 141, ["Unique", "Special Dungeons"], 0x8D),
|
|
# ItemData("Dark Ice Mountain", 142, ItemClassification.useful, 142, ["Unique", "Special Dungeons"], 0x8E),
|
|
# ItemData("Icicle Forest", 145, ItemClassification.useful, 145, ["Unique", "Special Dungeons"], 0x91),
|
|
# ItemData("Vast Ice Mountain", 146, ItemClassification.useful, 146, ["Unique", "Special Dungeons"], 0x92),
|
|
ItemData("Here Comes Team Charm!", 149, ItemClassification.progression, 149, ["Unique", "Special Dungeons"], 0x3),
|
|
# ItemData("Southern Jungle", 149, ItemClassification.useful, 149, ["Unique", "Special Dungeons"], 0x95),
|
|
# ItemData("Boulder Quarry", 150, ItemClassification.useful, 150, ["Unique", "Special Dungeons"], 0x96),
|
|
# ItemData("Right Cave Path", 153, ItemClassification.useful, 153, ["Unique", "Special Dungeons"], 0x99),
|
|
# ItemData("Left Cave Path", 154, ItemClassification.useful, 154, ["Unique", "Special Dungeons"], 0x9A),
|
|
# ItemData("Limestone Cavern", 155, ItemClassification.useful, 155, ["Unique", "Special Dungeons"], 0x9B),
|
|
ItemData('Today\'s "Oh My Gosh"', 158, ItemClassification.progression, 158, ["Unique", "Special Dungeons"], 0x2),
|
|
# ItemData("Spring Cave", 158, ItemClassification.useful, 158, ["Unique", "Special Dungeons"], 0x9E),
|
|
# PMD EOS Why do you have three things to open after the SEs >:(
|
|
ItemData(
|
|
"Star Cave", 174, ItemClassification.progression, 174, ["Unique", "EarlyDungeons", "MissionDungeons"], 0xAE
|
|
),
|
|
ItemData("Shaymin Village", 175, ItemClassification.useful, 175, ["Unique", "ExtraDungeons"], 0xAF),
|
|
ItemData("Luminous Spring", 177, ItemClassification.useful, 177, ["Unique", "ExtraDungeons"], 0xB1),
|
|
ItemData("Hot Spring", 178, ItemClassification.useful, 178, ["Unique", "ExtraDungeons"], 0xB2),
|
|
# DOJO DUNGEONS
|
|
ItemData("Dojo Normal/Fly Maze", 180, ItemClassification.progression, 180, ["Unique", "Dojo Dungeons"], 0xB4),
|
|
ItemData("Dojo Dark/Fire Maze", 181, ItemClassification.progression, 181, ["Unique", "Dojo Dungeons"], 0xB5),
|
|
ItemData("Dojo Rock/Water Maze", 182, ItemClassification.progression, 182, ["Unique", "Dojo Dungeons"], 0xB6),
|
|
ItemData("Dojo Grass Maze", 183, ItemClassification.progression, 183, ["Unique", "Dojo Dungeons"], 0xB7),
|
|
ItemData("Dojo Elec/Steel Maze", 184, ItemClassification.progression, 184, ["Unique", "Dojo Dungeons"], 0xB8),
|
|
ItemData("Dojo Ice/Ground Maze", 185, ItemClassification.progression, 185, ["Unique", "Dojo Dungeons"], 0xB9),
|
|
ItemData("Dojo Fight/Psych Maze", 186, ItemClassification.progression, 186, ["Unique", "Dojo Dungeons"], 0xBA),
|
|
ItemData("Dojo Poison/Bug Maze", 187, ItemClassification.progression, 187, ["Unique", "Dojo Dungeons"], 0xBB),
|
|
ItemData("Dojo Dragon Maze", 188, ItemClassification.progression, 188, ["Unique", "Dojo Dungeons"], 0xBC),
|
|
ItemData("Dojo Ghost Maze", 189, ItemClassification.progression, 189, ["Unique", "Dojo Dungeons"], 0xBD),
|
|
ItemData("Dojo Final Maze", 191, ItemClassification.progression, 191, ["Unique", "Final Dojo"], 0xBF), # 7 subareas
|
|
# Macguffin for opening Hidden Land
|
|
ItemData("Relic Fragment Shard", 200, ItemClassification.progression_skip_balancing, 200, ["Macguffin"], 0x00),
|
|
# Item for the progressive sky peak option. Does not exist outside that option
|
|
ItemData("Progressive Sky Peak", 201, ItemClassification.progression, 0, ["SkyPeak"], 0x00),
|
|
# Seals for Aegis Cave. Unlock the ability to progress in the cave without getting cursed
|
|
ItemData("Ice Seal", 203, ItemClassification.progression, 0, ["Aegis"], 0x00),
|
|
ItemData("Rock Seal", 204, ItemClassification.progression, 0, ["Aegis"], 0x00),
|
|
ItemData("Steel Seal", 205, ItemClassification.progression, 0, ["Aegis"], 0x00),
|
|
# Progressive version of seals for Aegis Cave
|
|
ItemData("Progressive Seal", 206, ItemClassification.progression, 0, ["Aegis"], 0x00),
|
|
# Need an item that can get claimed to tell AP that victory has been accomplished. Just an event.
|
|
ItemData("Victory", 300, ItemClassification.progression, 0, [], 0x00),
|
|
# Progressively upgrade the player's bag
|
|
ItemData("Bag Upgrade", 370, ItemClassification.progression, 0, ["ProgressiveBag", "Generic"], 0x00),
|
|
# Secret rank which unlocks the ability to get the checks for recruiting legendaries late game
|
|
ItemData("Secret Rank", 409, ItemClassification.progression, 0, ["Rank"], 0x0),
|
|
# Useful Items to be put in the apworld
|
|
ItemData("Mystery Part", 500, ItemClassification.useful, 0, ["Item", "Single"], 0xAD),
|
|
ItemData("Secret Slab", 501, ItemClassification.useful, 0, ["Item", "Single"], 0xAE),
|
|
ItemData("Amber Tear", 502, ItemClassification.useful, 0, ["Item", "Single"], 0x3A),
|
|
ItemData("Friend Bow", 503, ItemClassification.useful, 0, ["Item", "Single"], 0x35),
|
|
ItemData("Golden Mask", 546, ItemClassification.useful, 0, ["Item", "Single"], 0x39),
|
|
ItemData("Miracle Chest", 464, ItemClassification.useful, 0, ["Item", "Single"], 0x42), # Boosts Exp
|
|
ItemData("Wonder Chest", 465, ItemClassification.useful, 0, ["Item", "Single"], 0x43), # Boosts Exp
|
|
# LEGENDARIES
|
|
ItemData("Regirock", 504, ItemClassification.useful, 0, ["Legendary"], 0x0),
|
|
ItemData("Regice", 505, ItemClassification.useful, 0, ["Legendary"], 0x1),
|
|
ItemData("Registeel", 506, ItemClassification.useful, 0, ["Legendary"], 0x2),
|
|
ItemData("Groudon", 507, ItemClassification.useful, 0, ["Legendary"], 0x3),
|
|
ItemData("Uxie", 508, ItemClassification.useful, 0, ["Legendary"], 0x4),
|
|
ItemData("Mesprit", 509, ItemClassification.useful, 0, ["Legendary"], 0x5),
|
|
ItemData("Azelf", 510, ItemClassification.useful, 0, ["Legendary"], 0x6),
|
|
ItemData("Dialga", 511, ItemClassification.useful, 0, ["Legendary"], 0x7),
|
|
ItemData("Palkia", 512, ItemClassification.useful, 0, ["Legendary"], 0x8),
|
|
ItemData("Regigigas", 513, ItemClassification.useful, 0, ["Legendary"], 0x9),
|
|
ItemData("Giratina", 514, ItemClassification.useful, 0, ["Legendary"], 0xA),
|
|
ItemData("Celebi", 515, ItemClassification.useful, 0, ["Legendary"], 0xB),
|
|
ItemData("Articuno", 516, ItemClassification.useful, 0, ["Legendary"], 0xC),
|
|
ItemData("Heatran", 517, ItemClassification.useful, 0, ["Legendary"], 0xD),
|
|
ItemData("Primal Dialga", 518, ItemClassification.useful, 0, ["Legendary"], 0xE),
|
|
ItemData("Mew", 519, ItemClassification.useful, 0, ["Legendary"], 0xF),
|
|
ItemData("Manaphy", 520, ItemClassification.progression, 0, ["Legendary"], 0x10),
|
|
ItemData("Phione", 521, ItemClassification.useful, 0, ["Legendary"], 0x11),
|
|
ItemData("Cresselia", 522, ItemClassification.useful, 0, ["Legendary"], 0x12),
|
|
ItemData("Rayquaza", 523, ItemClassification.useful, 0, ["Legendary"], 0x13),
|
|
ItemData("Kyogre", 524, ItemClassification.useful, 0, ["Legendary"], 0x14),
|
|
ItemData("Shaymin", 525, ItemClassification.useful, 0, ["Legendary"], 0x15),
|
|
# Instruments which are also Macguffins for Dark Crater. Includes some extra instruments that we have added for fun
|
|
# and flavor
|
|
ItemData("Icy Flute", 526, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x3B),
|
|
ItemData("Fiery Drum", 527, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x3C),
|
|
ItemData("Terra Cymbal", 528, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x3D),
|
|
ItemData("Aqua-Monica", 529, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x3E),
|
|
ItemData("Rock Horn", 530, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x3F),
|
|
ItemData("Grass Cornet", 531, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x40),
|
|
ItemData("Sky Melodica", 532, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x41),
|
|
ItemData("Stellar Symphony", 533, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x56B),
|
|
ItemData("Null Bagpipes", 534, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x56C),
|
|
ItemData("Glimmer Harp", 535, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x56D),
|
|
ItemData("Toxic Sax", 536, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x56E),
|
|
ItemData("Biting Bass", 537, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x56F),
|
|
ItemData("Knockout Bell", 538, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x570),
|
|
ItemData("Spectral Chimes", 539, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x571),
|
|
ItemData("Liar's Lyre", 540, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x572),
|
|
ItemData("Charge Synth", 541, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x573),
|
|
ItemData("Norma-ccordion", 542, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x574),
|
|
ItemData("Psychic Cello", 543, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x575),
|
|
ItemData("Dragu-teki", 544, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x576),
|
|
ItemData("Steel Guitar", 545, ItemClassification.progression_skip_balancing, 0, ["Item", "Instrument"], 0x577),
|
|
# Items that give the player an overall buff or ability to do something new in game
|
|
ItemData("Hero Evolution", 550, ItemClassification.useful, 0, ["Generic"], 0),
|
|
ItemData("Recruit Evolution", 551, ItemClassification.useful, 0, ["Generic"], 0),
|
|
ItemData("Recruitment", 552, ItemClassification.useful, 0, ["Generic"], 0),
|
|
ItemData("Formation Control", 553, ItemClassification.progression, 0, ["Generic"], 0),
|
|
# Unlocking the main game for Special Episode Sanity
|
|
ItemData("Main Game Unlock", 700, ItemClassification.progression, 0, [], 0),
|
|
# Adding one team name trap so players can actually get their team name at leasst once in the game
|
|
ItemData("Inspiration Strikes!!", 466, ItemClassification.useful, 0, ["Trap"], 0x0),
|
|
]
|
|
filler_items = [
|
|
# Item boxes as "loot boxes" as defined in a later section what they contain
|
|
ItemData("Heavy Box", 301, ItemClassification.filler, 10, ["Item", "Box"], 0x171),
|
|
ItemData("Shiny Box", 302, ItemClassification.filler, 10, ["Item", "Box"], 0x174),
|
|
ItemData("Nifty Box", 303, ItemClassification.filler, 10, ["Item", "Box"], 0x177),
|
|
# ItemData("Dainty Box", 304, ItemClassification.filler, 10, ["Item", "Box"], 0x17A),
|
|
# ItemData("Glittery Box", 305, ItemClassification.filler, 10, ["Item", "Box"], 0x17D),
|
|
ItemData("Pretty Box", 306, ItemClassification.filler, 10, ["Item", "Box"], 0x180),
|
|
# ItemData("Deluxe Box", 307, ItemClassification.filler, 10, ["Item", "Box"], 0x183),
|
|
ItemData("Light Box", 308, ItemClassification.filler, 10, ["Item", "Box"], 0x186),
|
|
ItemData("Cute Box", 309, ItemClassification.filler, 10, ["Item", "Box"], 0x189),
|
|
# ItemData("Hard Box", 310, ItemClassification.filler, 10, ["Item", "Box"], 0x18C),
|
|
# ItemData("Sinister Box", 311, ItemClassification.filler, 10, ["Item", "Box"], 0x18F),
|
|
ItemData("Link Box", 312, ItemClassification.filler, 10, ["Item", "Single"], 0x16A),
|
|
ItemData("Sky Gift", 313, ItemClassification.filler, 10, ["Item", "Single"], 0xB4),
|
|
# MONEY
|
|
ItemData("Poké x100", 560, ItemClassification.filler, 20, ["Money"], 100),
|
|
ItemData("Poké x500", 561, ItemClassification.filler, 20, ["Money"], 500),
|
|
ItemData("Poké x1000", 562, ItemClassification.filler, 20, ["Money"], 1000),
|
|
ItemData("Poké x5000", 563, ItemClassification.filler, 5, ["Money"], 5000),
|
|
ItemData("Poké x200", 564, ItemClassification.filler, 20, ["Money"], 200),
|
|
ItemData("Poké x1", 565, ItemClassification.filler, 50, ["Money"], 1),
|
|
# Time to be a little nice to the players by incrementing recycle shop
|
|
ItemData("Recycle Count +1", 571, ItemClassification.filler, 10, ["Recycles"], 1),
|
|
ItemData("Recycle Count +5", 572, ItemClassification.filler, 10, ["Recycles"], 5),
|
|
ItemData("Recycle Count +10", 573, ItemClassification.filler, 10, ["Recycles"], 10),
|
|
ItemData("Recycle Count +20", 574, ItemClassification.filler, 10, ["Recycles"], 20),
|
|
# General filler stuff that mostly is just flavor from the main game
|
|
ItemData("Secret of the Waterfall", 405, ItemClassification.filler, 2, ["Generic"], 0x0),
|
|
ItemData("Mystery of the Quicksand", 299, ItemClassification.filler, 2, ["Generic"], 0x0),
|
|
ItemData("Chatot Repellent", 406, ItemClassification.filler, 2, ["Generic"], 0x0),
|
|
ItemData("Sky Jukebox", 407, ItemClassification.filler, 2, ["Generic"], 0x0),
|
|
ItemData("Recruitment Sensor", 408, ItemClassification.filler, 2, ["Generic"], 0x0),
|
|
# Backpack Items
|
|
ItemData("Rare Fossil", 410, ItemClassification.filler, 10, ["Item", "Multi"], 0xA),
|
|
ItemData("Reviver Seed", 411, ItemClassification.filler, 5, ["Item", "Single"], 0x49),
|
|
ItemData("Oran Berry", 412, ItemClassification.filler, 20, ["Item", "Single"], 0x46),
|
|
ItemData("Heal Seed", 413, ItemClassification.filler, 20, ["Item", "Single"], 0x45),
|
|
ItemData("Apple", 414, ItemClassification.filler, 20, ["Item", "Single"], 0x6D),
|
|
ItemData("Golden Seed", 393, ItemClassification.filler, 3, ["Item", "Single"], 0x5D),
|
|
ItemData("Ginseng", 394, ItemClassification.filler, 1, ["Item", "Single"], 0x58),
|
|
# ItemData("Gold Ribbon", 395, ItemClassification.filler, 0, ["Item"], 0x20),
|
|
ItemData("Protein", 480, ItemClassification.filler, 10, ["Item", "Single"], 0x64),
|
|
ItemData("Calcium", 481, ItemClassification.filler, 10, ["Item", "Single"], 0x65),
|
|
ItemData("Iron", 482, ItemClassification.filler, 10, ["Item", "Single"], 0x66),
|
|
ItemData("Nectar", 483, ItemClassification.filler, 10, ["Item", "Single"], 0x67),
|
|
ItemData("Max Elixir", 484, ItemClassification.filler, 10, ["Item", "Single"], 0x63),
|
|
ItemData("Gabite Scale", 485, ItemClassification.filler, 10, ["Item", "Single"], 0x5C),
|
|
ItemData("Zinc", 486, ItemClassification.filler, 10, ["Item", "Single"], 0x6C),
|
|
ItemData("Sitrus Berry", 701, ItemClassification.filler, 10, ["Item", "Single"], 0x47),
|
|
ItemData("Eyedrop Seed", 702, ItemClassification.filler, 10, ["Item", "Single"], 0x48),
|
|
ItemData("Blinker Seed", 703, ItemClassification.filler, 10, ["Item", "Single"], 0x4A),
|
|
ItemData("X-Eye Seed", 704, ItemClassification.filler, 10, ["Item", "Single"], 0x4C),
|
|
ItemData("Life Seed", 705, ItemClassification.filler, 10, ["Item", "Single"], 0x4D),
|
|
ItemData("Rawst Berry", 706, ItemClassification.filler, 10, ["Item", "Single"], 0x4E),
|
|
ItemData("Quick Seed", 707, ItemClassification.filler, 10, ["Item", "Single"], 0x50),
|
|
ItemData("Pecha Berry", 708, ItemClassification.filler, 10, ["Item", "Single"], 0x51),
|
|
ItemData("Cheri Berry", 709, ItemClassification.filler, 10, ["Item", "Single"], 0x52),
|
|
ItemData("Totter Seed", 710, ItemClassification.filler, 10, ["Item", "Single"], 0x53),
|
|
ItemData("Sleep Seed", 711, ItemClassification.filler, 10, ["Item", "Single"], 0x54),
|
|
ItemData("Warp Seed", 712, ItemClassification.filler, 10, ["Item", "Single"], 0x56),
|
|
ItemData("Blast Seed", 713, ItemClassification.filler, 10, ["Item", "Single"], 0x57),
|
|
ItemData("Joy Seed", 714, ItemClassification.filler, 10, ["Item", "Single"], 0x59),
|
|
ItemData("Chesto Berry", 715, ItemClassification.filler, 10, ["Item", "Single"], 0x5A),
|
|
ItemData("Stun Seed", 716, ItemClassification.filler, 10, ["Item", "Single"], 0x5B),
|
|
ItemData("Vile Seed", 717, ItemClassification.filler, 10, ["Item", "Single"], 0x5E),
|
|
ItemData("Pure Seed", 718, ItemClassification.filler, 10, ["Item", "Single"], 0x5F),
|
|
ItemData("Violent Seed", 719, ItemClassification.filler, 10, ["Item", "Single"], 0x60),
|
|
ItemData("Vanish Seed", 720, ItemClassification.filler, 10, ["Item", "Single"], 0x61),
|
|
ItemData("Big Apple", 721, ItemClassification.filler, 10, ["Item", "Single"], 0x6E),
|
|
ItemData("Huge Apple", 722, ItemClassification.filler, 10, ["Item", "Single"], 0x70),
|
|
ItemData("Golden Apple", 723, ItemClassification.filler, 10, ["Item", "Single"], 0x73),
|
|
ItemData("White Gummi", 724, ItemClassification.filler, 10, ["Item", "Single"], 0x77),
|
|
ItemData("Red Gummi", 725, ItemClassification.filler, 10, ["Item", "Single"], 0x78),
|
|
ItemData("Blue Gummi", 726, ItemClassification.filler, 10, ["Item", "Single"], 0x79),
|
|
ItemData("Grass Gummi", 727, ItemClassification.filler, 10, ["Item", "Single"], 0x7A),
|
|
ItemData("Yellow Gummi", 728, ItemClassification.filler, 10, ["Item", "Single"], 0x7B),
|
|
ItemData("Clear Gummi", 729, ItemClassification.filler, 10, ["Item", "Single"], 0x7C),
|
|
ItemData("Orange Gummi", 730, ItemClassification.filler, 10, ["Item", "Single"], 0x7D),
|
|
ItemData("Pink Gummi", 731, ItemClassification.filler, 10, ["Item", "Single"], 0x7E),
|
|
ItemData("Brown Gummi", 732, ItemClassification.filler, 10, ["Item", "Single"], 0x7F),
|
|
ItemData("Sky Gummi", 733, ItemClassification.filler, 10, ["Item", "Single"], 0x80),
|
|
ItemData("Gold Gummi", 734, ItemClassification.filler, 10, ["Item", "Single"], 0x81),
|
|
ItemData("Green Gummi", 735, ItemClassification.filler, 10, ["Item", "Single"], 0x82),
|
|
ItemData("Gray Gummi", 736, ItemClassification.filler, 10, ["Item", "Single"], 0x83),
|
|
ItemData("Purple Gummi", 737, ItemClassification.filler, 10, ["Item", "Single"], 0x84),
|
|
ItemData("Royal Gummi", 738, ItemClassification.filler, 10, ["Item", "Single"], 0x85),
|
|
ItemData("Black Gummi", 739, ItemClassification.filler, 10, ["Item", "Single"], 0x86),
|
|
ItemData("Silver Gummi", 740, ItemClassification.filler, 10, ["Item", "Single"], 0x87),
|
|
ItemData("Wonder Gummi", 741, ItemClassification.filler, 10, ["Item", "Single"], 0x88),
|
|
ItemData("Key", 742, ItemClassification.filler, 10, ["Item", "Single"], 0xB6),
|
|
ItemData("Hail Orb", 743, ItemClassification.filler, 10, ["Item", "Single"], 0x12D),
|
|
ItemData("Sunny Orb", 744, ItemClassification.filler, 10, ["Item", "Single"], 0x12E),
|
|
ItemData("Rainy Orb", 745, ItemClassification.filler, 10, ["Item", "Single"], 0x12F),
|
|
ItemData("Evasion Orb", 746, ItemClassification.filler, 10, ["Item", "Single"], 0x130),
|
|
ItemData("Sandy Orb", 747, ItemClassification.filler, 10, ["Item", "Single"], 0x131),
|
|
ItemData("Rocky Orb", 748, ItemClassification.filler, 10, ["Item", "Single"], 0x132),
|
|
ItemData("Snatch Orb", 749, ItemClassification.filler, 10, ["Item", "Single"], 0x133),
|
|
ItemData("See-Trap Orb", 750, ItemClassification.filler, 10, ["Item", "Single"], 0x134),
|
|
ItemData("Mug Orb", 751, ItemClassification.filler, 10, ["Item", "Single"], 0x135),
|
|
ItemData("Rebound Orb", 752, ItemClassification.filler, 10, ["Item", "Single"], 0x136),
|
|
ItemData("Lob Orb", 753, ItemClassification.filler, 10, ["Item", "Single"], 0x137),
|
|
ItemData("Switcher Orb", 754, ItemClassification.filler, 10, ["Item", "Single"], 0x138),
|
|
ItemData("Blowback Orb", 755, ItemClassification.filler, 10, ["Item", "Single"], 0x139),
|
|
ItemData("Warp Orb", 756, ItemClassification.filler, 10, ["Item", "Single"], 0x13A),
|
|
ItemData("Transfer Orb", 757, ItemClassification.filler, 10, ["Item", "Single"], 0x13B),
|
|
ItemData("Slow Orb", 758, ItemClassification.filler, 10, ["Item", "Single"], 0x13C),
|
|
ItemData("Quick Orb", 759, ItemClassification.filler, 10, ["Item", "Single"], 0x13D),
|
|
ItemData("Luminous Orb", 760, ItemClassification.filler, 10, ["Item", "Single"], 0x13E),
|
|
ItemData("Petrify Orb", 761, ItemClassification.filler, 10, ["Item", "Single"], 0x13F),
|
|
ItemData("Stayaway Orb", 762, ItemClassification.filler, 10, ["Item", "Single"], 0x140),
|
|
ItemData("Pounce Orb", 763, ItemClassification.filler, 10, ["Item", "Single"], 0x141),
|
|
ItemData("Trawl Orb", 764, ItemClassification.filler, 10, ["Item", "Single"], 0x142),
|
|
ItemData("Cleanse Orb", 765, ItemClassification.filler, 10, ["Item", "Single"], 0x143),
|
|
ItemData("Decoy Orb", 766, ItemClassification.filler, 10, ["Item", "Single"], 0x145),
|
|
ItemData("Slumber Orb", 767, ItemClassification.filler, 10, ["Item", "Single"], 0x146),
|
|
ItemData("Totter Orb", 768, ItemClassification.filler, 10, ["Item", "Single"], 0x147),
|
|
ItemData("Two-Edge Orb", 769, ItemClassification.filler, 10, ["Item", "Single"], 0x148),
|
|
ItemData("Silence Orb", 770, ItemClassification.filler, 10, ["Item", "Single"], 0x149),
|
|
ItemData("Escape Orb", 771, ItemClassification.filler, 10, ["Item", "Single"], 0x14A),
|
|
ItemData("Scanner Orb", 772, ItemClassification.filler, 10, ["Item", "Single"], 0x14B),
|
|
ItemData("Radar Orb", 773, ItemClassification.filler, 10, ["Item", "Single"], 0x14C),
|
|
ItemData("Drought Orb", 774, ItemClassification.filler, 10, ["Item", "Single"], 0x14D),
|
|
ItemData("Trapbust Orb", 775, ItemClassification.filler, 10, ["Item", "Single"], 0x14E),
|
|
ItemData("Rollcall Orb", 776, ItemClassification.filler, 10, ["Item", "Single"], 0x14F),
|
|
ItemData("Invisify Orb", 777, ItemClassification.filler, 10, ["Item", "Single"], 0x150),
|
|
ItemData("One-Shot Orb", 778, ItemClassification.filler, 10, ["Item", "Single"], 0x151),
|
|
ItemData("Identify Orb", 779, ItemClassification.filler, 10, ["Item", "Single"], 0x152),
|
|
ItemData("Shocker Orb", 780, ItemClassification.filler, 10, ["Item", "Single"], 0x154),
|
|
ItemData("Sizebust Orb", 781, ItemClassification.filler, 10, ["Item", "Single"], 0x155),
|
|
ItemData("One-Room Orb", 782, ItemClassification.filler, 10, ["Item", "Single"], 0x156),
|
|
ItemData("Fill-In Orb", 783, ItemClassification.filler, 10, ["Item", "Single"], 0x157),
|
|
ItemData("Trapper Orb", 784, ItemClassification.filler, 10, ["Item", "Single"], 0x158),
|
|
ItemData("Itemizer Orb", 785, ItemClassification.filler, 10, ["Item", "Single"], 0x15A),
|
|
ItemData("Hurl Orb", 786, ItemClassification.filler, 10, ["Item", "Single"], 0x15B),
|
|
ItemData("Mobile Orb", 787, ItemClassification.filler, 10, ["Item", "Single"], 0x15C),
|
|
ItemData("Stairs Orb", 788, ItemClassification.filler, 10, ["Item", "Single"], 0x15E),
|
|
ItemData("Longtoss Orb", 789, ItemClassification.filler, 10, ["Item", "Single"], 0x15F),
|
|
ItemData("Pierce Orb", 790, ItemClassification.filler, 10, ["Item", "Single"], 0x160),
|
|
ItemData("Spurn Orb", 791, ItemClassification.filler, 10, ["Item", "Single"], 0x162),
|
|
ItemData("Foe-Hold Orb", 792, ItemClassification.filler, 10, ["Item", "Single"], 0x163),
|
|
ItemData("All-Mach Orb", 793, ItemClassification.filler, 10, ["Item", "Single"], 0x164),
|
|
ItemData("Foe-Fear Orb", 794, ItemClassification.filler, 10, ["Item", "Single"], 0x165),
|
|
ItemData("All-Hit Orb", 795, ItemClassification.filler, 10, ["Item", "Single"], 0x166),
|
|
ItemData("Foe-Seal Orb", 796, ItemClassification.filler, 10, ["Item", "Single"], 0x167),
|
|
]
|
|
|
|
# filler tiems that there can only be one of in the game, specifically the "typed" items
|
|
exclusive_filler_items = [
|
|
# specific item Types
|
|
ItemData("Joy Globe", 487, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1FD), # Normal
|
|
ItemData("Fiery Globe", 488, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x201), # Fire
|
|
ItemData("Aqua Globe", 489, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x205), # Water
|
|
ItemData("Soothe Globe", 415, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x209), # Grass
|
|
ItemData("Volt Globe", 416, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x20D), # Electric
|
|
ItemData("Icy Globe", 417, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x211), # Ice
|
|
ItemData("Power Globe", 418, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x215), # Fighting
|
|
ItemData("Poison Globe", 419, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x219), # Poison
|
|
ItemData("Terra Globe", 420, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x21D), # Ground
|
|
ItemData("Sky Globe", 421, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x221), # Flying
|
|
ItemData("Psyche Globe", 422, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x225), # Psychic
|
|
ItemData("Defend Globe", 423, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x229), # Bug
|
|
ItemData("Rock Globe", 424, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x22D), # Rock
|
|
ItemData("Nether Globe", 425, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x231), # Ghost
|
|
ItemData("Dragon Globe", 426, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x235), # Dragon
|
|
ItemData("Dusk Globe", 427, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x239), # Dark
|
|
ItemData("Steel Globe", 428, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x23D), # Steel
|
|
# Legendary specific items
|
|
ItemData("Freeze Veil", 429, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1D8), # Articuno
|
|
# ItemData("Thunder Veil", 430, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1D9), # Zapdos
|
|
# ItemData("Fire Veil", 431, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1DA), # Moltres
|
|
# ItemData("Havoc Robe", 432, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1DB), # Mewtwo
|
|
ItemData("Life Ring", 433, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1DC), # Mew
|
|
# ItemData("Bolt Fang", 434, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1DD), # Raikou
|
|
# ItemData("Flare Fang", 435, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1DE), # Entei
|
|
# ItemData("Aqua Mantle", 436, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1DF), # Suicune
|
|
# ItemData("Silver Veil", 437, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E0), # Lugia
|
|
# ItemData("Rainbow Veil", 438, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E1), # Ho-oh
|
|
ItemData("Chrono Veil", 439, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E2), # Celebi
|
|
ItemData("Rock Sash", 440, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E3), # Regirock
|
|
ItemData("Ice Sash", 441, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E4), # Regice
|
|
ItemData("Steel Sash", 442, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E5), # Registeel
|
|
# ItemData("Heart Brooch", 443, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E6), # Latias
|
|
# ItemData("Eon Veil", 444, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E7), # Latios
|
|
ItemData("Seabed Veil", 445, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E8), # Kyogre
|
|
ItemData("Terra Ring", 446, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1E9), # Groudon
|
|
ItemData("SkyHigh Veil", 447, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1EA), # Rayquaza
|
|
# ItemData("Wish Mantle", 448, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1EB), # Jirachi
|
|
# ItemData("Revive Robe", 449, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1EC), # Deoxys
|
|
ItemData("Edify Robe", 450, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1EF), # Uxie
|
|
ItemData("Charity Robe", 451, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F0), # Mesprit
|
|
ItemData("Hope Robe", 452, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F1), # Azelf
|
|
ItemData("Time Shield", 453, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F2), # Dialga
|
|
ItemData("Air Blade", 454, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F3), # Palkia
|
|
ItemData("Searing Ring", 455, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F4), # Heatran
|
|
ItemData("Ancient Ring", 456, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F5), # Regigigas
|
|
ItemData("Nether Veil", 457, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F6), # Giratina
|
|
ItemData("Lunar Veil", 458, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F7), # Cresselia
|
|
ItemData("Ripple Cape", 459, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x3E5), # Phione
|
|
ItemData("Marine Cache", 460, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1D7), # Phione
|
|
ItemData("Tidal Cape", 461, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F8), # Manaphy
|
|
# ItemData("Eclipse Robe", 462, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x1F9), # Darkrai
|
|
ItemData("Purify Veil", 463, ItemClassification.filler, 1, ["Item", "Exclusive"], 0x547), # Shaymin
|
|
]
|
|
|
|
# OOH FUN TRAPS
|
|
trap_items = [
|
|
# Team Name
|
|
ItemData("Inspiration Strikes!", 400, ItemClassification.trap, 20, ["Trap"], 0x0),
|
|
# gives the player unown font until they sleep (also cannot interact with most shops)
|
|
ItemData("Get Unowned!", 401, ItemClassification.trap, 20, ["Trap"], 0x0),
|
|
# send the player to bed
|
|
ItemData("Nap Time!", 402, ItemClassification.trap, 20, ["Trap"], 0x0),
|
|
# force the player to do sentry duty for the day, they must succeed to clear the trap
|
|
ItemData("Sentry Duty!", 403, ItemClassification.trap, 20, ["Trap"], 0x0),
|
|
# Makes the player take a short break
|
|
ItemData("Touch Grass", 404, ItemClassification.trap, 20, ["Trap"], 0x0),
|
|
# Bye Bye inventory cash
|
|
ItemData("Poké x-1000", 570, ItemClassification.trap, 20, ["Trap", "Money"], 1000),
|
|
# lookalike dungeons
|
|
ItemData("Denched Bluff", 2, ItemClassification.trap, 20, ["Trap", "Early", "Unique", "Dungeon"], 0x2),
|
|
ItemData("Mt. Brinstar", 5, ItemClassification.trap, 20, ["Trap", "Early", "Unique", "Dungeon"], 0x5),
|
|
ItemData("Froggy Forest", 15, ItemClassification.trap, 20, ["Trap", "Early", "Unique", "Dungeon"], 0xF),
|
|
ItemData("Steamy Cave", 16, ItemClassification.trap, 20, ["Trap", "Early", "Unique", "Dungeon"], 0x10),
|
|
ItemData("Craggy Cost", 18, ItemClassification.trap, 20, ["Trap", "Early", "Unique", "Dungeon"], 0x12),
|
|
ItemData("Special Rift", 65, ItemClassification.trap, 20, ["Trap", "Late", "Unique", "Dungeon"], 0x41),
|
|
ItemData("Congealed Ruins", 71, ItemClassification.trap, 20, ["Trap", "Late", "Unique", "Dungeon"], 0x47),
|
|
ItemData("Labyrinth Cove", 86, ItemClassification.trap, 20, ["Trap", "Early", "Unique", "Dungeon"], 0x56),
|
|
ItemData("Dojo Ghast Maze", 190, ItemClassification.trap, 20, ["Trap", "Dojo", "Unique", "Dungeon"], 0xBE),
|
|
# In dungeon traps that give a status to the player
|
|
ItemData("Dungeon Yawn", 470, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x1),
|
|
ItemData("Dungeon Whiffer", 471, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x2),
|
|
ItemData("Dungeon DropItems", 472, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x3),
|
|
ItemData("Dungeon Weather", 473, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x5),
|
|
ItemData("Dungeon Warp", 474, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x4),
|
|
ItemData("Dungeon Pitfall", 475, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x6),
|
|
ItemData("Dungeon Embargo", 476, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x7),
|
|
# Ooh look your next floor is a maze!
|
|
ItemData("Dungeon Maze", 477, ItemClassification.trap, 20, ["Trap", "DungeonTrap"], 0x0),
|
|
]
|
|
# create dictionaries and tables for later use
|
|
filler_item_weights = [item.start_number for item in filler_items]
|
|
filler_item_table: Dict[str, ItemData] = {item.name: item for item in filler_items}
|
|
|
|
exclusive_filler_item_weights = [item.start_number for item in exclusive_filler_items]
|
|
exclusive_filler_item_table: Dict[str, ItemData] = {item.name: item for item in exclusive_filler_items}
|
|
|
|
trap_item_weights = [item.start_number for item in trap_items]
|
|
trap_item_table: Dict[str, ItemData] = {item.name: item for item in trap_items}
|
|
|
|
# for items that appear multiple times, defined here
|
|
item_frequencies: Dict[str, int] = {
|
|
"Bag Upgrade": 5,
|
|
# "Hero Evolution": 1,
|
|
# "Recruit Evolution": 1,
|
|
"Recruitment": 1,
|
|
"Formation Control": 1,
|
|
# "Bidoof\'s Wish": 1,
|
|
# "Igglybuff the Prodigy": 1,
|
|
# "In the Future of Darkness": 1,
|
|
# "Here Comes Team Charm!": 1,
|
|
# "Dojo Normal/Fly Maze": 1,
|
|
# "Dojo Dark/Fire Maze": 1,
|
|
# "Dojo Rock/Water Maze": 1,
|
|
# "Dojo Grass Maze": 1,
|
|
# "Dojo Elec/Steel Maze": 1,
|
|
# "Dojo Ice/Ground Maze": 1,
|
|
# "Dojo Fight/Psych Maze": 1,
|
|
# "Dojo Poison/Bug Maze": 1,
|
|
# "Dojo Dragon Maze": 1,
|
|
# "Dojo Ghost Maze": 1,
|
|
}
|
|
|
|
# Create a table of all the possible items in the game for AP
|
|
item_table: Dict[str, ItemData] = {item.name: item for item in EOS_item_table}
|
|
item_table.update(filler_item_table)
|
|
item_table.update(exclusive_filler_item_table)
|
|
item_table.update(trap_item_table)
|
|
item_table_by_id: Dict[int, ItemData] = {item.id: item for item in item_table.values()}
|
|
|
|
item_table_by_groups = get_item_table_by_groups()
|
|
|
|
# definition of what can be inside the different loot boxes. Some got taken away with the addition of more filler items
|
|
lootbox_table: Dict[str, Dict[str, int]] = {
|
|
"Gorgeous Box": {
|
|
"Gold Ribbon": 0x20,
|
|
},
|
|
"Heavy Box": {
|
|
"Gravelerock": 0x7,
|
|
"Geo Pebble": 0x8,
|
|
"Gravelyrock": 0x89,
|
|
"Iron Thorn": 0x2,
|
|
"Silver Spike": 0x3,
|
|
"Gold Fang": 0x4,
|
|
"Cacnea Spike": 0x5,
|
|
"Corsola Twig": 0x6,
|
|
"Stick": 0x1,
|
|
"Gold Thorn": 0x9,
|
|
"Rare Fossil": 0xA,
|
|
"Gone Pebble": 0xA7,
|
|
},
|
|
"Shiny Box": {
|
|
"Used TM": 0xBB,
|
|
"Focus Punch": 0xBC,
|
|
"Dragon Claw": 0xBD,
|
|
"Water Pulse": 0xBE,
|
|
"Calm Mind": 0xBF,
|
|
"Roar": 0xC0,
|
|
"Toxic": 0xC1,
|
|
# "Hail": 0xC2,
|
|
"Bulk Up": 0xC3,
|
|
"Bullet Seed": 0xC4,
|
|
"Hidden Power": 0xC5,
|
|
"Taunt": 0xC7,
|
|
"Ice Beam": 0xC8,
|
|
"Blizzard": 0xC9,
|
|
"Hyper Beam": 0xCA,
|
|
"Light Screen": 0xCB,
|
|
"Protect": 0xCC,
|
|
"Giga Drain": 0xCE,
|
|
"Safeguard": 0xCF,
|
|
"Frustration": 0xD0,
|
|
"Solar Beam": 0xD1,
|
|
"Iron Tail": 0xD2,
|
|
"Thunderbolt": 0xD3,
|
|
"Thunder": 0xD4,
|
|
"Earthquake": 0xD5,
|
|
"Return": 0xD6,
|
|
"Dig": 0xD7,
|
|
"Psychic": 0xD8,
|
|
"Shadow Ball": 0xD9,
|
|
"Brick Break": 0xDA,
|
|
"Reflect": 0xDC,
|
|
"Shock Wave": 0xDD,
|
|
"Flamethrower": 0xDE,
|
|
"Sludge Bomb": 0xDF,
|
|
"Fire Blast": 0xE1,
|
|
"Aerial Ace": 0xE3,
|
|
"Torment": 0xE4,
|
|
"Facade": 0xE5,
|
|
"Secret Power": 0xE6,
|
|
"Rest": 0xE7,
|
|
"Attract": 0xE8,
|
|
"Thief": 0xE9,
|
|
"Steel Wing": 0xEA,
|
|
"Skill Swap": 0xEB,
|
|
"Overheat": 0xED,
|
|
"Roost": 0xEE,
|
|
"Focus Blast": 0xEF,
|
|
"Energy Ball": 0xF0,
|
|
"False Swipe": 0xF1,
|
|
"Brine": 0xF2,
|
|
"Fling": 0xF3,
|
|
"Charge Beam": 0xF4,
|
|
"Endure": 0xF5,
|
|
"Dragon Pulse": 0xF6,
|
|
"Drain Punch": 0xF7,
|
|
"Will-O-Wisp": 0xF8,
|
|
"Silver Wind": 0xF9,
|
|
"Embargo": 0xFA,
|
|
"Explosion": 0xFB,
|
|
"Shadow Claw": 0xFC,
|
|
"Payback": 0xFD,
|
|
"Recycle": 0xFE,
|
|
"Giga Impact": 0xFF,
|
|
"Rock Polish": 0x100,
|
|
"Wide Slash": 0x101,
|
|
"Vaccum Cut": 0x104,
|
|
"Dive": 0x105,
|
|
"Flash": 0x106,
|
|
"Stone Edge": 0x107,
|
|
"Avalanche": 0x108,
|
|
"Thunder Wave": 0x109,
|
|
"Gyro Ball": 0x10A,
|
|
"Swords Dance": 0x10B,
|
|
"Stealth Rock": 0x10C,
|
|
"Psych Up": 0x10D,
|
|
"Captivate": 0x10E,
|
|
"Dark Pulse": 0x10F,
|
|
"Rock Slide": 0x110,
|
|
"X-Scissor": 0x111,
|
|
"Sleep Talk": 0x112,
|
|
"Natural Gift": 0x113,
|
|
"Poison Jab": 0x114,
|
|
"Dream EAter": 0x115,
|
|
"Grass Knot": 0x116,
|
|
"Swagger": 0x117,
|
|
"Pluck": 0x118,
|
|
"U-turn": 0x119,
|
|
"Substitute": 0x11A,
|
|
"Flash Cannon": 0x11B,
|
|
"Trick Room": 0x11C,
|
|
"Cut": 0x11D,
|
|
"Fly": 0x11E,
|
|
"Surf": 0x11F,
|
|
"Strength": 0x120,
|
|
"Defog": 0x121,
|
|
"Rock Smash": 0x122,
|
|
"Waterfall": 0x123,
|
|
"Rock Climb": 0x124,
|
|
},
|
|
"Nifty Box": {
|
|
"Mobile Scarf": 0x10,
|
|
"Scope Lens": 0x13,
|
|
"No Stick Cap": 0x15,
|
|
"X-Ray Specs": 0x18,
|
|
"Tight Belt": 0x1E,
|
|
"Goggle Specs": 0x21,
|
|
"Diet Ribbon": 0x22,
|
|
"Pass Scarf": 0x33,
|
|
"Weather Band": 0x34,
|
|
"Space Globe": 0x2B,
|
|
"IQ Booster": 0x44,
|
|
"Gaggle Specs": 0xF,
|
|
"Y-Ray Specs": 0xE,
|
|
"No-Slip Cap": 0xD,
|
|
"Curve Band": 0x2E,
|
|
"Whiff Specs": 0x2F,
|
|
"Patsy Band": 0x14,
|
|
},
|
|
"Dainty Box": {
|
|
"White Gummi": 0x77,
|
|
"Red Gummi": 0x78,
|
|
"Blue Gummi": 0x79,
|
|
"Grass Gummi": 0x7A,
|
|
"Yellow Gummi": 0x7B,
|
|
"Clear Gummi": 0x7C,
|
|
"Orange Gummi": 0x7D,
|
|
"Pink Gummi": 0x7E,
|
|
"Brown Gummi": 0x7F,
|
|
"Sky Gummi": 0x80,
|
|
"Gold Gummi": 0x81,
|
|
"Green Gummi": 0x82,
|
|
"Gray Gummi": 0x83,
|
|
"Purple Gummi": 0x84,
|
|
"Royal Gummi": 0x85,
|
|
"Black Gummi": 0x86,
|
|
"Silver Gummi": 0x87,
|
|
"Wonder Gummi": 0x88,
|
|
"Wander Gummi": 0xA8,
|
|
},
|
|
"Glittery Box": {
|
|
"Oran Berry": 0x46,
|
|
"Oren Berry": 0x75,
|
|
"Reviver Seed": 0x49,
|
|
"Reviser Seed": 0x69,
|
|
"Max Elixir": 0x63,
|
|
"Mix Elixir": 0x74,
|
|
"Heal Seed": 0x45,
|
|
"Sitrus Berry": 0x47,
|
|
"Eyedrop Seed": 0x48,
|
|
"Life Seed": 0x4D,
|
|
"Rawst Berry": 0x4E,
|
|
"Quick Seed": 0x50,
|
|
"Pecha Berry": 0x51,
|
|
"Cheri Berry": 0x52,
|
|
"Totter Seed": 0x53,
|
|
"Sleep Seed": 0x54,
|
|
"Warp Seed": 0x56,
|
|
"Blast Seed": 0x57,
|
|
"Ginseng": 0x58,
|
|
"Joy Seed": 0x59,
|
|
"Chesto Berry": 0x5A,
|
|
"Stun Seed": 0x5B,
|
|
"Gabite Scale": 0x5C,
|
|
"Pure Seed": 0x5E,
|
|
"Violent Seed": 0x60,
|
|
"Vanish Seed": 0x61,
|
|
"Protein": 0x64,
|
|
"Calcium": 0x65,
|
|
"Iron": 0x66,
|
|
"Nectar": 0x67,
|
|
"Slip Seed": 0x6A,
|
|
"Vila Seed": 0x6B,
|
|
"Zinc": 0x6C,
|
|
"Apple": 0x6D,
|
|
"Big Apple": 0x6E,
|
|
"Huge Apple": 0x70,
|
|
"Dough Seed": 0x76,
|
|
},
|
|
"Pretty Box": {
|
|
"Upgrade": 0x8B,
|
|
"King's Rock": 0x8C,
|
|
"Thunderstone": 0x8D,
|
|
"Deepseascale": 0x8E,
|
|
"Deepseatooth": 0x8F,
|
|
"Sun Stone": 0x90,
|
|
"Moon Stone": 0x91,
|
|
"Fire Stone": 0x92,
|
|
"Water Stone": 0x93,
|
|
"Metal Coat": 0x94,
|
|
"Leaf Stone": 0x95,
|
|
"Dragon Scale": 0x96,
|
|
"Link Cable": 0x97,
|
|
"Dubious Disc": 0x98,
|
|
"Protector": 0x99,
|
|
"Reaper Cloth": 0x9A,
|
|
"Razor Fang": 0x9B,
|
|
"Razor Claw": 0x9C,
|
|
},
|
|
"Deluxe Box": {
|
|
"Gold Ribbon": 0x20,
|
|
"Golden Seed": 0x50,
|
|
"Golden Apple": 0x73,
|
|
},
|
|
"Light Box": {
|
|
"Prize Ticket": 0xA9,
|
|
"Silver Ticket": 0xAA,
|
|
"Gold Ticket": 0xAB,
|
|
"Prism Ticket": 0xAC,
|
|
},
|
|
"Cute Box": {
|
|
"Silver Bow": 0x1AC,
|
|
"Brown Bow": 0x1AD,
|
|
"Red Bow": 0x1AE,
|
|
"Pick Bow": 0x1AF,
|
|
"Orange Bow": 0x1B0,
|
|
"Yellow Bow": 0x1B1,
|
|
"Lime Bow": 0x1B2,
|
|
"Green Bow": 0x1B3,
|
|
"Viridian Bow": 0x1B4,
|
|
"Minty Bow": 0x1B5,
|
|
"Sky Blue Bow": 0x1B6,
|
|
"Blue Bow": 0x1B7,
|
|
"Cobalt Bow": 0x1B8,
|
|
"Purple Bow": 0x1B9,
|
|
"Violet Bow": 0x1BA,
|
|
"Fuchsia Bow": 0x1BB,
|
|
},
|
|
"Hard Box": {
|
|
"Key": 0xB6,
|
|
"Lost Loot": 0xBA,
|
|
"Unown Rock A": 0x190,
|
|
"Unown Rock B": 0x191,
|
|
"Unown Rock C": 0x192,
|
|
"Unown Rock D": 0x193,
|
|
"Unown Rock E": 0x194,
|
|
"Unown Rock F": 0x195,
|
|
"Unown Rock G": 0x196,
|
|
"Unown Rock H": 0x197,
|
|
"Unown Rock I": 0x198,
|
|
"Unown Rock J": 0x199,
|
|
"Unown Rock K": 0x19A,
|
|
"Unown Rock L": 0x19B,
|
|
"Unown Rock M": 0x19C,
|
|
"Unown Rock N": 0x19D,
|
|
"Unown Rock O": 0x19E,
|
|
"Unown Rock P": 0x19F,
|
|
"Unown Rock Q": 0x1A0,
|
|
"Unown Rock R": 0x1A1,
|
|
"Unown Rock S": 0x1A2,
|
|
"Unown Rock T": 0x1A3,
|
|
"Unown Rock U": 0x1A4,
|
|
"Unown Rock V": 0x1A5,
|
|
"Unown Rock W": 0x1A6,
|
|
"Unown Rock X": 0x1A7,
|
|
"Unown Rock Y": 0x1A8,
|
|
"Unown Rock Z": 0x1A9,
|
|
"Unown Rock !": 0x1AA,
|
|
"Unown Rock ?": 0x1AB,
|
|
},
|
|
"Sinister Box": {
|
|
"Blinker Seed": 0x4A,
|
|
"Doom Seed": 0x4B,
|
|
"X-Eye Seed": 0x4C,
|
|
"Hunger Seed": 0x4F,
|
|
"Totter Seed": 0x53,
|
|
"Sleep Seed": 0x54,
|
|
"Stun Seed": 0x5B,
|
|
"Vile Seed": 0x5E,
|
|
"DropEye Seed": 0x68,
|
|
"Grimy Food": 0x6F,
|
|
},
|
|
}
|
|
|
|
# map the legendaries to their possible ids
|
|
legendary_pool_dict = {
|
|
"Regirock": [504, 440],
|
|
"Regice": [505, 441],
|
|
"Registeel": [506, 442],
|
|
"Groudon": [507, 446],
|
|
"Uxie": [508, 450],
|
|
"Mesprit": [509, 451],
|
|
"Azelf": [510, 452],
|
|
"Dialga": [511, 453],
|
|
"Palkia": [512, 454],
|
|
"Regigigas": [513, 456],
|
|
"Giratina": [514, 457],
|
|
"Celebi": [515, 439],
|
|
"Articuno": [516, 429],
|
|
"Heatran": [517, 455],
|
|
# "Primal Dialga": [518],
|
|
"Mew": [519, 433],
|
|
"Manaphy": [520, 461],
|
|
"Phione": [521, 459, 460],
|
|
"Cresselia": [522, 458],
|
|
"Rayquaza": [523, 447],
|
|
"Kyogre": [524, 445],
|
|
"Shaymin": [525, 463],
|
|
}
|
|
|
|
# Make some useful items count as filler if we exclude too many locations
|
|
# Top of the list becomes filler first
|
|
conditional_filler_useful_items = [
|
|
"Mystery Part",
|
|
"Secret Slab",
|
|
"Amber Tear",
|
|
"Friend Bow",
|
|
"Golden Mask",
|
|
"Miracle Chest",
|
|
"Wonder Chest",
|
|
"Hero Evolution",
|
|
"Recruit Evolution",
|
|
"Luminous Spring",
|
|
"Shaymin Village",
|
|
]
|