VANILLA_KEYBLADE_STATS = [
    {"STR":  3, "CRR":  20, "CRB":  0, "REC": 30, "MP":  0}, # Kingdom Key
    {"STR":  1, "CRR":  20, "CRB":  0, "REC": 30, "MP":  0}, # Dream Sword
    {"STR":  1, "CRR":   0, "CRB":  0, "REC": 60, "MP":  0}, # Dream Shield
    {"STR":  1, "CRR":  10, "CRB":  0, "REC": 30, "MP":  0}, # Dream Rod
    {"STR":  0, "CRR":  20, "CRB":  0, "REC": 30, "MP":  0}, # Wooden Sword
    {"STR":  5, "CRR":  10, "CRB":  0, "REC":  1, "MP":  0}, # Jungle King
    {"STR":  6, "CRR":  20, "CRB":  0, "REC": 60, "MP":  0}, # Three Wishes
    {"STR":  8, "CRR":  10, "CRB":  2, "REC": 30, "MP":  1}, # Fairy Harp
    {"STR":  7, "CRR":  40, "CRB":  0, "REC":  1, "MP":  0}, # Pumpkinhead
    {"STR":  6, "CRR":  20, "CRB":  0, "REC": 30, "MP":  1}, # Crabclaw
    {"STR": 13, "CRR":  40, "CRB":  0, "REC": 60, "MP":  0}, # Divine Rose
    {"STR":  4, "CRR":  20, "CRB":  0, "REC": 30, "MP":  2}, # Spellbinder
    {"STR": 10, "CRR":  20, "CRB":  2, "REC": 90, "MP":  0}, # Olympia
    {"STR": 10, "CRR":  20, "CRB":  0, "REC": 30, "MP":  1}, # Lionheart
    {"STR":  9, "CRR":   2, "CRB":  0, "REC": 90, "MP": -1}, # Metal Chocobo
    {"STR":  9, "CRR":  40, "CRB":  0, "REC":  1, "MP":  1}, # Oathkeeper
    {"STR": 11, "CRR":  20, "CRB":  2, "REC": 30, "MP": -1}, # Oblivion
    {"STR":  7, "CRR":  20, "CRB":  0, "REC":  1, "MP":  2}, # Lady Luck
    {"STR":  5, "CRR": 200, "CRB":  2, "REC":  1, "MP":  0}, # Wishing Star
    {"STR": 14, "CRR":  40, "CRB":  2, "REC": 90, "MP":  2}, # Ultima Weapon
    {"STR":  3, "CRR":  20, "CRB":  0, "REC":  1, "MP":  3}, # Diamond Dust
    {"STR":  8, "CRR":  10, "CRB": 16, "REC": 90, "MP": -2}, # One-Winged Angel
    ]
VANILLA_PUPPY_LOCATIONS = [
    "Traverse Town Mystical House Glide Chest",
    "Traverse Town Alleyway Behind Crates Chest",
    "Traverse Town Item Workshop Left Chest",
    "Traverse Town Secret Waterway Near Stairs Chest",
    "Wonderland Queen's Castle Hedge Right Blue Chest",
    "Wonderland Lotus Forest Nut Chest",
    "Wonderland Tea Party Garden Above Lotus Forest Entrance 1st Chest",
    "Olympus Coliseum Coliseum Gates Right Blue Trinity Chest",
    "Deep Jungle Hippo's Lagoon Center Chest",
    "Deep Jungle Vines 2 Chest",
    "Deep Jungle Waterfall Cavern Middle Chest",
    "Deep Jungle Camp Blue Trinity Chest",
    "Agrabah Cave of Wonders Treasure Room Across Platforms Chest",
    "Halloween Town Oogie's Manor Hollow Chest",
    "Neverland Pirate Ship Deck White Trinity Chest",
    "Agrabah Cave of Wonders Hidden Room Left Chest",
    "Agrabah Cave of Wonders Entrance Tall Tower Chest",
    "Agrabah Palace Gates High Opposite Palace Chest",
    "Monstro Chamber 3 Platform Above Chamber 2 Entrance Chest",
    "Wonderland Lotus Forest Through the Painting Thunder Plant Chest",
    "Hollow Bastion Grand Hall Left of Gate Chest",
    "Halloween Town Cemetery By Cat Shape Chest",
    "Halloween Town Moonlight Hill White Trinity Chest",
    "Halloween Town Guillotine Square Pumpkin Structure Right Chest",
    "Monstro Mouth High Platform Across from Boat Chest",
    "Monstro Chamber 6 Low Chest",
    "Monstro Chamber 5 Atop Barrel Chest",
    "Neverland Hold Flight 1st Chest",
    "Neverland Hold Yellow Trinity Green Chest",
    "Neverland Captain's Cabin Chest",
    "Hollow Bastion Rising Falls Floating Platform Near Save Chest",
    "Hollow Bastion Castle Gates Gravity Chest",
    "Hollow Bastion Lift Stop Outside Library Gravity Chest"
    ]
CHAR_TO_KH = {
    " ": 0x01,
    "0": 0x21,
    "1": 0x22,
    "2": 0x23,
    "3": 0x24,
    "4": 0x25,
    "5": 0x26,
    "6": 0x27,
    "7": 0x28,
    "8": 0x29,
    "9": 0x2A,
    "A": 0x2B,
    "B": 0x2C,
    "C": 0x2D,
    "D": 0x2E,
    "E": 0x2F,
    "F": 0x30,
    "G": 0x31,
    "H": 0x32,
    "I": 0x33,
    "J": 0x34,
    "K": 0x35,
    "L": 0x36,
    "M": 0x37,
    "N": 0x38,
    "O": 0x39,
    "P": 0x3A,
    "Q": 0x3B,
    "R": 0x3C,
    "S": 0x3D,
    "T": 0x3E,
    "U": 0x3F,
    "V": 0x40,
    "W": 0x41,
    "X": 0x42,
    "Y": 0x43,
    "Z": 0x44,
    "a": 0x45,
    "b": 0x46,
    "c": 0x47,
    "d": 0x48,
    "e": 0x49,
    "f": 0x4A,
    "g": 0x4B,
    "h": 0x4C,
    "i": 0x4D,
    "j": 0x4E,
    "k": 0x4F,
    "l": 0x50,
    "m": 0x51,
    "n": 0x52,
    "o": 0x53,
    "p": 0x54,
    "q": 0x55,
    "r": 0x56,
    "s": 0x57,
    "t": 0x58,
    "u": 0x59,
    "v": 0x5A,
    "w": 0x5B,
    "x": 0x5C,
    "y": 0x5D,
    "z": 0x5E
    }
VANILLA_ABILITY_AP_COSTS = [
    {"Ability Name": "Treasure Magnet", "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Combo Plus",      "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Air Combo Plus",  "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Critical Plus",   "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Second Wind",     "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Scan",            "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Sonic Blade",     "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Ars Arcanum",     "AP Cost": 4, "Randomize": True},
    {"Ability Name": "Strike Raid",     "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Ragnarok",        "AP Cost": 4, "Randomize": True},
    {"Ability Name": "Trinity Limit",   "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Cheer",           "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Vortex",          "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Aerial Sweep",    "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Counter Attack",  "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Blitz",           "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Guard",           "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Dodge Roll",      "AP Cost": 1, "Randomize": True},
    {"Ability Name": "MP Haste",        "AP Cost": 3, "Randomize": True},
    {"Ability Name": "MP Rage",         "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Second Chance",   "AP Cost": 5, "Randomize": True},
    {"Ability Name": "Berserk",         "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Jackpot",         "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Lucky Strike",    "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Charge",          "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Rocket",          "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Tornado",         "AP Cost": 2, "Randomize": True},
    {"Ability Name": "MP Gift",         "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Raging Boar",     "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Asp's Bite",      "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Healing Herb",    "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Wind Armor",      "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Crescent",        "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Sandstorm",       "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Applause!",       "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Blazing Fury",    "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Icy Terror",      "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Bolts of Sorrow", "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Ghostly Scream",  "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Hummingbird",     "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Time-Out",        "AP Cost": 4, "Randomize": True},
    {"Ability Name": "Storm´s Eye",     "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Ferocious Lunge", "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Furious Bellow",  "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Spiral Wave",     "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Thunder Potion",  "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Cure Potion",     "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Aero Potion",     "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Slapshot",        "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Sliding Dash",    "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Hurricane Blast", "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Ripple Drive",    "AP Cost": 3, "Randomize": True},
    {"Ability Name": "Stun Impact",     "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Gravity Break",   "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Zantetsuken",     "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Tech Boost",      "AP Cost": 2, "Randomize": True},
    {"Ability Name": "Encounter Plus",  "AP Cost": 1, "Randomize": True},
    {"Ability Name": "Leaf Bracer",     "AP Cost": 5, "Randomize": True},
    {"Ability Name": "Evolution",       "AP Cost": 3, "Randomize": True},
    {"Ability Name": "EXP Zero",        "AP Cost": 0, "Randomize": True},
    {"Ability Name": "Combo Master",    "AP Cost": 3, "Randomize": True}
    ]

WORLD_KEY_ITEMS = {
    "Footprints": "Wonderland",
    "Entry Pass": "Olympus Coliseum",
    "Slides": "Deep Jungle",
    "Crystal Trident": "Atlantica",
    "Forget-Me-Not": "Halloween Town",
    "Jack-In-The-Box": "Halloween Town",
    "Theon Vol. 6": "Hollow Bastion"
}

LOGIC_BEGINNER = 0
LOGIC_NORMAL = 5
LOGIC_PROUD = 10
LOGIC_MINIMAL = 15