Bonuses = {
    "Duelist Bonus Level 1": 1,
    "Duelist Bonus Level 2": 2,
    "Duelist Bonus Level 3": 3,
    "Duelist Bonus Level 4": 4,
    "Duelist Bonus Level 5": 5,
    "Battle Damage": 6,
    "Battle Damage Only Bonus": 7,
    "Max ATK Bonus": 8,
    "Max Damage Bonus": 9,
    "Destroyed in Battle Bonus": 10,
    "Spell Card Bonus": 11,
    "Trap Card Bonus": 12,
    "Tribute Summon Bonus": 13,
    "Fusion Summon Bonus": 14,
    "Ritual Summon Bonus": 15,
    "No Special Summon Bonus": 16,
    "No Spell Cards Bonus": 17,
    "No Trap Cards Bonus": 18,
    "No Damage Bonus": 19,
    "Over 20000 LP Bonus": 20,
    "Low LP Bonus": 21,
    "Extremely Low LP Bonus": 22,
    "Low Deck Bonus": 23,
    "Extremely Low Deck Bonus": 24,
    "Effect Damage Only Bonus": 25,
    "No More Cards Bonus": 26,
    "Opponent's Turn Finish Bonus": 27,
    "Exactly 0 LP Bonus": 28,
    "Reversal Finish Bonus": 29,
    "Quick Finish Bonus": 30,
    "Exodia Finish Bonus": 31,
    "Last Turn Finish Bonus": 32,
    "Final Countdown Finish Bonus": 33,
    "Destiny Board Finish Bonus": 34,
    "Yata-Garasu Finish Bonus": 35,
    "Skull Servant Finish Bonus": 36,
    "Konami Bonus": 37,
}

Limited_Duels = {
    "LD01 All except Level 4 forbidden": 38,
    "LD02 Medium/high Level forbidden": 39,
    "LD03 ATK 1500 or more forbidden": 40,
    "LD04 Flip Effects forbidden": 41,
    "LD05 Tributes forbidden": 42,
    "LD06 Traps forbidden": 43,
    "LD07 Large Deck A": 44,
    "LD08 Large Deck B": 45,
    "LD09 Sets Forbidden": 46,
    "LD10 All except LV monsters forbidden": 47,
    "LD11 All except Fairies forbidden": 48,
    "LD12 All except Wind forbidden": 49,
    "LD13 All except monsters forbidden": 50,
    "LD14 Level 3 or below forbidden": 51,
    "LD15 DEF 1500 or less forbidden": 52,
    "LD16 Effect Monsters forbidden": 53,
    "LD17 Spells forbidden": 54,
    "LD18 Attacks forbidden": 55,
    "LD19 All except E-Hero's forbidden": 56,
    "LD20 All except Warriors forbidden": 57,
    "LD21 All except Dark forbidden": 58,
    "LD22 All limited cards forbidden": 59,
    "LD23 Refer to Mar 05 Banlist": 60,
    "LD24 Refer to Sept 04 Banlist": 61,
    "LD25 Low Life Points": 62,
    "LD26 All except Toons forbidden": 63,
    "LD27 All except Spirits forbidden": 64,
    "LD28 All except Dragons forbidden": 65,
    "LD29 All except Spellcasters forbidden": 66,
    "LD30 All except Light forbidden": 67,
    "LD31 All except Fire forbidden": 68,
    "LD32 Decks with multiples forbidden": 69,
    "LD33 Special Summons forbidden": 70,
    "LD34 Normal Summons forbidden": 71,
    "LD35 All except Zombies forbidden": 72,
    "LD36 All except Earth forbidden": 73,
    "LD37 All except Water forbidden": 74,
    "LD38 Refer to Mar 04 Banlist": 75,
    "LD39 Monsters forbidden": 76,
    "LD40 Refer to Sept 05 Banlist": 77,
    "LD41 Refer to Sept 03 Banlist": 78,
}

Theme_Duels = {
    "TD01 Battle Damage": 79,
    "TD02 Deflected Damage": 80,
    "TD03 Normal Summon": 81,
    "TD04 Ritual Summon": 82,
    "TD05 Special Summon A": 83,
    "TD06 20x Spell": 84,
    "TD07 10x Trap": 85,
    "TD08 Draw": 86,
    "TD09 Hand Destruction": 87,
    "TD10 During Opponent's Turn": 88,
    "TD11 Recover": 89,
    "TD12 Remove Monsters by Effect": 90,
    "TD13 Flip Summon": 91,
    "TD14 Special Summon B": 92,
    "TD15 Token": 93,
    "TD16 Union": 94,
    "TD17 10x Quick Spell": 95,
    "TD18 The Forbidden": 96,
    "TD19 20 Turns": 97,
    "TD20 Deck Destruction": 98,
    "TD21 Victory D.": 99,
    "TD22 The Preventers Fight Back": 100,
    "TD23 Huge Revolution": 101,
    "TD24 Victory in 5 Turns": 102,
    "TD25 Moth Grows Up": 103,
    "TD26 Magnetic Power": 104,
    "TD27 Dark Sage": 105,
    "TD28 Direct Damage": 106,
    "TD29 Destroy Monsters in Battle": 107,
    "TD30 Tribute Summon": 108,
    "TD31 Special Summon C": 109,
    "TD32 Toon": 110,
    "TD33 10x Counter": 111,
    "TD34 Destiny Board": 112,
    "TD35 Huge Damage in a Turn": 113,
    "TD36 V-Z In the House": 114,
    "TD37 Uria, Lord of Searing Flames": 115,
    "TD38 Hamon, Lord of Striking Thunder": 116,
    "TD39 Raviel, Lord of Phantasms": 117,
    "TD40 Make a Chain": 118,
    "TD41 The Gatekeeper Stands Tall": 119,
    "TD42 Serious Damage": 120,
    "TD43 Return Monsters with Effects": 121,
    "TD44 Fusion Summon": 122,
    "TD45 Big Damage at once": 123,
    "TD46 XYZ In the House": 124,
    "TD47 Spell Counter": 125,
    "TD48 Destroy Monsters with Effects": 126,
    "TD49 Plunder": 127,
    "TD50 Dark Scorpion Combination": 128,
}

Campaign_Opponents = {
    "Campaign Tier 1: 1 Win": 129,
    "Campaign Tier 1: 3 Wins A": 130,
    "Campaign Tier 1: 3 Wins B": 131,
    "Campaign Tier 1: 5 Wins A": 132,
    "Campaign Tier 1: 5 Wins B": 133,
    "Campaign Tier 2: 1 Win": 134,
    "Campaign Tier 2: 3 Wins A": 135,
    "Campaign Tier 2: 3 Wins B": 136,
    "Campaign Tier 2: 5 Wins A": 137,
    "Campaign Tier 2: 5 Wins B": 138,
    "Campaign Tier 3: 1 Win": 139,
    "Campaign Tier 3: 3 Wins A": 140,
    "Campaign Tier 3: 3 Wins B": 141,
    "Campaign Tier 3: 5 Wins A": 142,
    "Campaign Tier 3: 5 Wins B": 143,
    "Campaign Tier 4: 5 Wins A": 144,
    "Campaign Tier 4: 5 Wins B": 145,
}

special = {
    "Campaign Tier 5: Column 1 Win": 146,
    "Campaign Tier 5: Column 2 Win": 147,
    "Campaign Tier 5: Column 3 Win": 148,
    "Campaign Tier 5: Column 4 Win": 149,
    # "Campaign Final Boss Win": 150,
}

Required_Cards = {
    "Obtain all pieces of Exodia": 154,
    "Obtain Final Countdown": 155,
    "Obtain Victory Dragon": 156,
    "Obtain Ojama Delta Hurricane and its required cards": 157,
    "Obtain Huge Revolution and its required cards": 158,
    "Obtain Perfectly Ultimate Great Moth and its required cards": 159,
    "Obtain Valkyrion the Magna Warrior and its pieces": 160,
    "Obtain Dark Sage and its required cards": 161,
    "Obtain Destiny Board and its letters": 162,
    "Obtain all XYZ-Dragon Cannon fusions and their materials": 163,
    "Obtain VWXYZ-Dragon Catapult Cannon and the fusion materials": 164,
    "Obtain Hamon, Lord of Striking Thunder": 165,
    "Obtain Raviel, Lord of Phantasms": 166,
    "Obtain Uria, Lord of Searing Flames": 167,
    "Obtain Gate Guardian and its pieces": 168,
    "Obtain Dark Scorpion Combination and its required cards": 169,
}

collection_events = {
    "Ojama Delta Hurricane and required cards": None,
    "Huge Revolution and its required cards": None,
    "Perfectly Ultimate Great Moth and its required cards": None,
    "Valkyrion the Magna Warrior and its pieces": None,
    "Dark Sage and its required cards": None,
    "Destiny Board and its letters": None,
    "XYZ-Dragon Cannon fusions and their materials": None,
    "VWXYZ-Dragon Catapult Cannon and the fusion materials": None,
    "Gate Guardian and its pieces": None,
    "Dark Scorpion Combination and its required cards": None,
    "Can Exodia Win": None,
    "Can Yata Lock": None,
    "Can Stall with Monsters": None,
    "Can Stall with ST": None,
    "Can Last Turn Win": None,
    "Has Back-row removal": None,
}


def get_beat_challenge_events(self):
    beat_events = {}
    for limited in Limited_Duels.keys():
        if limited not in self.removed_challenges:
            beat_events[limited + " Complete"] = None
    for theme in Theme_Duels.keys():
        if theme not in self.removed_challenges:
            beat_events[theme + " Complete"] = None
    return beat_events
