869 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			869 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Python
		
	
	
	
from worlds.generic.Rules import add_rule
 | 
						|
 | 
						|
from . import yugioh06_difficulty
 | 
						|
from .fusions import count_has_materials
 | 
						|
 | 
						|
 | 
						|
def set_rules(world):
 | 
						|
    player = world.player
 | 
						|
    multiworld = world.multiworld
 | 
						|
 | 
						|
    location_rules = {
 | 
						|
        # Campaign
 | 
						|
        "Campaign Tier 1: 1 Win": lambda state: state.has("Tier 1 Beaten", player),
 | 
						|
        "Campaign Tier 1: 3 Wins A": lambda state: state.has("Tier 1 Beaten", player, 3),
 | 
						|
        "Campaign Tier 1: 3 Wins B": lambda state: state.has("Tier 1 Beaten", player, 3),
 | 
						|
        "Campaign Tier 1: 5 Wins A": lambda state: state.has("Tier 1 Beaten", player, 5),
 | 
						|
        "Campaign Tier 1: 5 Wins B": lambda state: state.has("Tier 1 Beaten", player, 5),
 | 
						|
        "Campaign Tier 2: 1 Win": lambda state: state.has("Tier 2 Beaten", player),
 | 
						|
        "Campaign Tier 2: 3 Wins A": lambda state: state.has("Tier 2 Beaten", player, 3),
 | 
						|
        "Campaign Tier 2: 3 Wins B": lambda state: state.has("Tier 2 Beaten", player, 3),
 | 
						|
        "Campaign Tier 2: 5 Wins A": lambda state: state.has("Tier 2 Beaten", player, 5),
 | 
						|
        "Campaign Tier 2: 5 Wins B": lambda state: state.has("Tier 2 Beaten", player, 5),
 | 
						|
        "Campaign Tier 3: 1 Win": lambda state: state.has("Tier 3 Beaten", player),
 | 
						|
        "Campaign Tier 3: 3 Wins A": lambda state: state.has("Tier 3 Beaten", player, 3),
 | 
						|
        "Campaign Tier 3: 3 Wins B": lambda state: state.has("Tier 3 Beaten", player, 3),
 | 
						|
        "Campaign Tier 3: 5 Wins A": lambda state: state.has("Tier 3 Beaten", player, 5),
 | 
						|
        "Campaign Tier 3: 5 Wins B": lambda state: state.has("Tier 3 Beaten", player, 5),
 | 
						|
        "Campaign Tier 4: 5 Wins A": lambda state: state.has("Tier 4 Beaten", player, 5),
 | 
						|
        "Campaign Tier 4: 5 Wins B": lambda state: state.has("Tier 4 Beaten", player, 5),
 | 
						|
 | 
						|
        # Bonuses
 | 
						|
        "Duelist Bonus Level 1": lambda state: state.has("Tier 1 Beaten", player),
 | 
						|
        "Duelist Bonus Level 2": lambda state: state.has("Tier 2 Beaten", player),
 | 
						|
        "Duelist Bonus Level 3": lambda state: state.has("Tier 3 Beaten", player),
 | 
						|
        "Duelist Bonus Level 4": lambda state: state.has("Tier 4 Beaten", player),
 | 
						|
        "Duelist Bonus Level 5": lambda state: state.has("Tier 5 Beaten", player),
 | 
						|
        "Max ATK Bonus": lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "No Spell Cards Bonus": lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "No Trap Cards Bonus": lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "No Damage Bonus": lambda state: state.has_group("Campaign Boss Beaten", player, 3),
 | 
						|
        "Low Deck Bonus": lambda state: state.has_any(["Reasoning", "Monster Gate", "Magical Merchant"], player) and
 | 
						|
                                        yugioh06_difficulty(state, player, 3),
 | 
						|
        "Extremely Low Deck Bonus":
 | 
						|
            lambda state: state.has_any(["Reasoning", "Monster Gate", "Magical Merchant"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 2),
 | 
						|
        "Opponent's Turn Finish Bonus": lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "Exactly 0 LP Bonus": lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "Reversal Finish Bonus": lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "Quick Finish Bonus": lambda state: state.has("Quick-Finish", player) or yugioh06_difficulty(state, player, 6),
 | 
						|
        "Exodia Finish Bonus": lambda state: state.has("Can Exodia Win", player),
 | 
						|
        "Last Turn Finish Bonus": lambda state: state.has("Can Last Turn Win", player),
 | 
						|
        "Yata-Garasu Finish Bonus": lambda state: state.has("Can Yata Lock", player),
 | 
						|
        "Skull Servant Finish Bonus": lambda state: state.has("Skull Servant", player) and
 | 
						|
                                                    yugioh06_difficulty(state, player, 3),
 | 
						|
        "Konami Bonus": lambda state: state.has_all(["Messenger of Peace", "Castle of Dark Illusions", "Mystik Wok"],
 | 
						|
                                                    player) or (state.has_all(["Mystik Wok", "Barox", "Cyber-Stein",
 | 
						|
                                                                              "Poison of the Old Man"],
 | 
						|
                                                                             player) and yugioh06_difficulty(state,
 | 
						|
            player, 8)),
 | 
						|
        "Max Damage Bonus": lambda state: state.has_any(["Wave-Motion Cannon", "Megamorph", "United We Stand",
 | 
						|
                                                         "Mage Power"], player),
 | 
						|
        "Fusion Summon Bonus": lambda state: state.has_any(["Polymerization", "Fusion Gate", "Power Bond"], player),
 | 
						|
        "Ritual Summon Bonus": lambda state: state.has("Ritual", player),
 | 
						|
        "Over 20000 LP Bonus": lambda state: can_gain_lp_every_turn(state, player)
 | 
						|
                                             and state.has("Can Stall with ST", player),
 | 
						|
        "Low LP Bonus": lambda state: state.has("Wall of Revealing Light", player) and yugioh06_difficulty(state, player,
 | 
						|
                                                                                                                 2),
 | 
						|
        "Extremely Low LP Bonus": lambda state: state.has_all(["Wall of Revealing Light", "Messenger of Peace"], player)
 | 
						|
                                                and yugioh06_difficulty(state, player, 4),
 | 
						|
        "Effect Damage Only Bonus": lambda state: state.has_all(["Solar Flare Dragon", "UFO Turtle"], player)
 | 
						|
                                                  or state.has("Wave-Motion Cannon", player)
 | 
						|
                                                  or state.can_reach("Final Countdown Finish Bonus", "Location", player)
 | 
						|
                                                  or state.can_reach("Destiny Board Finish Bonus", "Location", player)
 | 
						|
                                                  or state.has("Can Exodia Win", player)
 | 
						|
                                                  or state.has("Can Last Turn Win", player),
 | 
						|
        "No More Cards Bonus": lambda state: state.has_any(["Cyber Jar", "Morphing Jar",
 | 
						|
                                                            "Morphing Jar #2", "Needle Worm"], player)
 | 
						|
                                             and state.has_any(["The Shallow Grave", "Spear Cretin"],
 | 
						|
                                                               player) and yugioh06_difficulty(state, player, 5),
 | 
						|
        "Final Countdown Finish Bonus": lambda state: state.has("Final Countdown", player)
 | 
						|
                                                      and state.has("Can Stall with ST", player),
 | 
						|
        "Destiny Board Finish Bonus": lambda state: state.has("Can Stall with Monsters", player) and
 | 
						|
                                                    state.has("Destiny Board and its letters", player) and
 | 
						|
                                                    state.has("A Cat of Ill Omen", player),
 | 
						|
 | 
						|
        # Cards
 | 
						|
        "Obtain all pieces of Exodia": lambda state: state.has("Exodia", player),
 | 
						|
        "Obtain Final Countdown": lambda state: state.has("Final Countdown", player),
 | 
						|
        "Obtain Victory Dragon": lambda state: state.has("Victory D.", player),
 | 
						|
        "Obtain Ojama Delta Hurricane and its required cards":
 | 
						|
            lambda state: state.has("Ojama Delta Hurricane and required cards", player),
 | 
						|
        "Obtain Huge Revolution and its required cards":
 | 
						|
            lambda state: state.has("Huge Revolution and its required cards", player),
 | 
						|
        "Obtain Perfectly Ultimate Great Moth and its required cards":
 | 
						|
            lambda state: state.has("Perfectly Ultimate Great Moth and its required cards", player),
 | 
						|
        "Obtain Valkyrion the Magna Warrior and its pieces":
 | 
						|
            lambda state: state.has("Valkyrion the Magna Warrior and its pieces", player),
 | 
						|
        "Obtain Dark Sage and its required cards": lambda state: state.has("Dark Sage and its required cards", player),
 | 
						|
        "Obtain Destiny Board and its letters": lambda state: state.has("Destiny Board and its letters", player),
 | 
						|
        "Obtain all XYZ-Dragon Cannon fusions and their materials":
 | 
						|
            lambda state: state.has("XYZ-Dragon Cannon fusions and their materials", player),
 | 
						|
        "Obtain VWXYZ-Dragon Catapult Cannon and the fusion materials":
 | 
						|
            lambda state: state.has("VWXYZ-Dragon Catapult Cannon and the fusion materials", player),
 | 
						|
        "Obtain Hamon, Lord of Striking Thunder":
 | 
						|
            lambda state: state.has("Hamon, Lord of Striking Thunder", player),
 | 
						|
        "Obtain Raviel, Lord of Phantasms":
 | 
						|
            lambda state: state.has("Raviel, Lord of Phantasms", player),
 | 
						|
        "Obtain Uria, Lord of Searing Flames":
 | 
						|
            lambda state: state.has("Uria, Lord of Searing Flames", player),
 | 
						|
        "Obtain Gate Guardian and its pieces":
 | 
						|
            lambda state: state.has("Gate Guardian and its pieces", player),
 | 
						|
        "Obtain Dark Scorpion Combination and its required cards":
 | 
						|
            lambda state: state.has("Dark Scorpion Combination and its required cards", player),
 | 
						|
        # Collection Events
 | 
						|
        "Ojama Delta Hurricane and required cards":
 | 
						|
            lambda state: state.has_all(["Ojama Delta Hurricane", "Ojama Green", "Ojama Yellow", "Ojama Black"],
 | 
						|
                                        player),
 | 
						|
        "Huge Revolution and its required cards":
 | 
						|
            lambda state: state.has_all(["Huge Revolution", "Oppressed People", "United Resistance",
 | 
						|
                                         "People Running About"], player),
 | 
						|
        "Perfectly Ultimate Great Moth and its required cards":
 | 
						|
            lambda state: state.has_all(["Perfectly Ultimate Great Moth", "Petit Moth", "Cocoon of Evolution"], player),
 | 
						|
        "Valkyrion the Magna Warrior and its pieces":
 | 
						|
            lambda state: state.has_all(["Valkyrion the Magna Warrior", "Alpha the Magnet Warrior",
 | 
						|
                                         "Beta the Magnet Warrior", "Gamma the Magnet Warrior"], player),
 | 
						|
        "Dark Sage and its required cards":
 | 
						|
            lambda state: state.has_all(["Dark Sage", "Dark Magician", "Time Wizard"], player),
 | 
						|
        "Destiny Board and its letters":
 | 
						|
            lambda state: state.has_all(["Destiny Board", "Spirit Message 'I'", "Spirit Message 'N'",
 | 
						|
                                         "Spirit Message 'A'", "Spirit Message 'L'"], player),
 | 
						|
        "XYZ-Dragon Cannon fusions and their materials":
 | 
						|
            lambda state: state.has_all(["X-Head Cannon", "Y-Dragon Head", "Z-Metal Tank",
 | 
						|
                                         "XY-Dragon Cannon", "XZ-Tank Cannon", "YZ-Tank Dragon", "XYZ-Dragon Cannon"],
 | 
						|
                                        player),
 | 
						|
        "VWXYZ-Dragon Catapult Cannon and the fusion materials":
 | 
						|
            lambda state: state.has_all(["X-Head Cannon", "Y-Dragon Head", "Z-Metal Tank", "XYZ-Dragon Cannon",
 | 
						|
                                         "V-Tiger Jet", "W-Wing Catapult", "VW-Tiger Catapult",
 | 
						|
                                         "VWXYZ-Dragon Catapult Cannon"],
 | 
						|
                                        player),
 | 
						|
        "Gate Guardian and its pieces":
 | 
						|
            lambda state: state.has_all(["Gate Guardian", "Kazejin", "Suijin", "Sanga of the Thunder"], player),
 | 
						|
        "Dark Scorpion Combination and its required cards":
 | 
						|
            lambda state: state.has_all(["Dark Scorpion Combination", "Don Zaloog", "Dark Scorpion - Chick the Yellow",
 | 
						|
                                         "Dark Scorpion - Meanae the Thorn", "Dark Scorpion - Gorg the Strong",
 | 
						|
                                         "Cliff the Trap Remover"], player),
 | 
						|
        "Can Exodia Win":
 | 
						|
            lambda state: state.has_all(["Exodia", "Heart of the Underdog"], player),
 | 
						|
        "Can Last Turn Win":
 | 
						|
            lambda state: state.has_all(["Last Turn", "Wall of Revealing Light"], player) and
 | 
						|
                          (state.has_any(["Jowgen the Spiritualist", "Jowls of Dark Demise", "Non Aggression Area"],
 | 
						|
                                         player)
 | 
						|
                           or state.has_all(["Cyber-Stein", "The Last Warrior from Another Planet"], player)),
 | 
						|
        "Can Yata Lock":
 | 
						|
            lambda state: state.has_all(["Yata-Garasu", "Chaos Emperor Dragon - Envoy of the End", "Sangan"], player)
 | 
						|
                          and state.has_any(["No Banlist", "Banlist September 2003"], player),
 | 
						|
        "Can Stall with Monsters":
 | 
						|
            lambda state: state.count_from_list_unique(
 | 
						|
                ["Spirit Reaper", "Giant Germ", "Marshmallon", "Nimble Momonga"], player) >= 2,
 | 
						|
        "Can Stall with ST":
 | 
						|
            lambda state: state.count_from_list_unique(["Level Limit - Area B", "Gravity Bind", "Messenger of Peace"],
 | 
						|
                                                       player) >= 2,
 | 
						|
        "Has Back-row removal":
 | 
						|
            lambda state: back_row_removal(state, player)
 | 
						|
 | 
						|
    }
 | 
						|
    access_rules = {
 | 
						|
        # Limited
 | 
						|
        "LD01 All except Level 4 forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD02 Medium/high Level forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 1),
 | 
						|
        "LD03 ATK 1500 or more forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 4),
 | 
						|
        "LD04 Flip Effects forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 1),
 | 
						|
        "LD05 Tributes forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 1),
 | 
						|
        "LD06 Traps forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 1),
 | 
						|
        "LD07 Large Deck A":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 4),
 | 
						|
        "LD08 Large Deck B":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 4),
 | 
						|
        "LD09 Sets Forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 1),
 | 
						|
        "LD10 All except LV monsters forbidden":
 | 
						|
            lambda state: only_level(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD11 All except Fairies forbidden":
 | 
						|
            lambda state: only_fairy(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD12 All except Wind forbidden":
 | 
						|
            lambda state: only_wind(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD13 All except monsters forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "LD14 Level 3 or below forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 1),
 | 
						|
        "LD15 DEF 1500 or less forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "LD16 Effect Monsters forbidden":
 | 
						|
            lambda state: only_normal(state, player) and yugioh06_difficulty(state, player, 4),
 | 
						|
        "LD17 Spells forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "LD18 Attacks forbidden":
 | 
						|
            lambda state: state.has_all(["Wave-Motion Cannon", "Stealth Bird"], player)
 | 
						|
                          and state.count_from_list_unique(["Dark World Lightning", "Nobleman of Crossout",
 | 
						|
                                                            "Shield Crash", "Tribute to the Doomed"], player) >= 2
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "LD19 All except E-Hero's forbidden":
 | 
						|
            lambda state: state.has_any(["Polymerization", "Fusion Gate"], player) and
 | 
						|
                          count_has_materials(state, ["Elemental Hero Flame Wingman",
 | 
						|
                                                      "Elemental Hero Madballman",
 | 
						|
                                                      "Elemental Hero Rampart Blaster",
 | 
						|
                                                      "Elemental Hero Steam Healer",
 | 
						|
                                                      "Elemental Hero Shining Flare Wingman",
 | 
						|
                                                      "Elemental Hero Wildedge"], player) >= 3 and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "LD20 All except Warriors forbidden":
 | 
						|
            lambda state: only_warrior(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD21 All except Dark forbidden":
 | 
						|
            lambda state: only_dark(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD22 All limited cards forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "LD23 Refer to Mar 05 Banlist":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 5),
 | 
						|
        "LD24 Refer to Sept 04 Banlist":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 5),
 | 
						|
        "LD25 Low Life Points":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 5),
 | 
						|
        "LD26 All except Toons forbidden":
 | 
						|
            lambda state: only_toons(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD27 All except Spirits forbidden":
 | 
						|
            lambda state: only_spirit(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD28 All except Dragons forbidden":
 | 
						|
            lambda state: only_dragon(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD29 All except Spellcasters forbidden":
 | 
						|
            lambda state: only_spellcaster(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD30 All except Light forbidden":
 | 
						|
            lambda state: only_light(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD31 All except Fire forbidden":
 | 
						|
            lambda state: only_fire(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD32 Decks with multiples forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 4),
 | 
						|
        "LD33 Special Summons forbidden":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD34 Normal Summons forbidden":
 | 
						|
            lambda state: state.has_all(["Polymerization", "King of the Swamp"], player) and
 | 
						|
                          count_has_materials(state, ["Elemental Hero Flame Wingman",
 | 
						|
                                                      "Elemental Hero Madballman",
 | 
						|
                                                      "Elemental Hero Rampart Blaster",
 | 
						|
                                                      "Elemental Hero Steam Healer",
 | 
						|
                                                      "Elemental Hero Shining Flare Wingman",
 | 
						|
                                                      "Elemental Hero Wildedge"], player) >= 3 and
 | 
						|
                          yugioh06_difficulty(state, player, 4),
 | 
						|
        "LD35 All except Zombies forbidden":
 | 
						|
            lambda state: only_zombie(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD36 All except Earth forbidden":
 | 
						|
            lambda state: only_earth(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD37 All except Water forbidden":
 | 
						|
            lambda state: only_water(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "LD38 Refer to Mar 04 Banlist":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 4),
 | 
						|
        "LD39 Monsters forbidden":
 | 
						|
            lambda state: state.has_all(["Skull Zoma", "Embodiment of Apophis"], player)
 | 
						|
                          and yugioh06_difficulty(state, player, 5),
 | 
						|
        "LD40 Refer to Sept 05 Banlist":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 5),
 | 
						|
        "LD41 Refer to Sept 03 Banlist":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 5),
 | 
						|
        # Theme Duels
 | 
						|
        "TD01 Battle Damage":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 1),
 | 
						|
        "TD02 Deflected Damage":
 | 
						|
            lambda state: state.has("Fairy Box", player) and yugioh06_difficulty(state, player, 1),
 | 
						|
        "TD03 Normal Summon":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD04 Ritual Summon":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3) and
 | 
						|
                          state.has_all(["Contract with the Abyss",
 | 
						|
                                         "Manju of the Ten Thousand Hands",
 | 
						|
                                         "Senju of the Thousand Hands",
 | 
						|
                                         "Sonic Bird",
 | 
						|
                                         "Pot of Avarice",
 | 
						|
                                         "Dark Master - Zorc",
 | 
						|
                                         "Demise, King of Armageddon",
 | 
						|
                                         "The Masked Beast",
 | 
						|
                                         "Magician of Black Chaos",
 | 
						|
                                         "Dark Magic Ritual"], player),
 | 
						|
        "TD05 Special Summon A":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD06 20x Spell":
 | 
						|
            lambda state: state.has("Magical Blast", player) and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD07 10x Trap":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD08 Draw":
 | 
						|
            lambda state: state.has_any(["Self-Destruct Button", "Dark Snake Syndrome"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD09 Hand Destruction":
 | 
						|
            lambda state: state.has_all(["Cyber Jar",
 | 
						|
                                         "Morphing Jar",
 | 
						|
                                         "Book of Moon",
 | 
						|
                                         "Book of Taiyou",
 | 
						|
                                         "Card Destruction",
 | 
						|
                                         "Serial Spell",
 | 
						|
                                         "Spell Reproduction",
 | 
						|
                                         "The Shallow Grave"], player) and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD10 During Opponent's Turn":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD11 Recover":
 | 
						|
            lambda state: can_gain_lp_every_turn(state, player) and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD12 Remove Monsters by Effect":
 | 
						|
            lambda state: state.has("Soul Release", player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD13 Flip Summon":
 | 
						|
            lambda state: pacman_deck(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD14 Special Summon B":
 | 
						|
            lambda state: state.has_any(["Manticore of Darkness", "Treeborn Frog"], player) and
 | 
						|
                          state.has("Foolish Burial", player) and
 | 
						|
                          yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD15 Token":
 | 
						|
            lambda state: state.has_all(["Dandylion", "Ojama Trio", "Stray Lambs"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD16 Union":
 | 
						|
            lambda state: equip_unions(state, player) and
 | 
						|
                          yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD17 10x Quick Spell":
 | 
						|
            lambda state: quick_plays(state, player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD18 The Forbidden":
 | 
						|
            lambda state: state.has("Can Exodia Win", player),
 | 
						|
        "TD19 20 Turns":
 | 
						|
            lambda state: state.has("Final Countdown", player) and state.has("Can Stall with ST", player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD20 Deck Destruction":
 | 
						|
            lambda state: state.has_any(["Cyber Jar", "Morphing Jar", "Morphing Jar #2", "Needle Worm"], player)
 | 
						|
                          and state.has_any(["The Shallow Grave", "Spear Cretin"],
 | 
						|
                                            player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD21 Victory D.":
 | 
						|
            lambda state: state.has("Victory D.", player) and only_dragon(state, player)
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD22 The Preventers Fight Back":
 | 
						|
            lambda state: state.has("Ojama Delta Hurricane and required cards", player) and
 | 
						|
                          state.has_all(["Rescue Cat", "Enchanting Fitting Room", "Jerry Beans Man"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD23 Huge Revolution":
 | 
						|
            lambda state: state.has("Huge Revolution and its required cards", player) and
 | 
						|
                          state.has_all(["Enchanting Fitting Room", "Jerry Beans Man"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD24 Victory in 5 Turns":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD25 Moth Grows Up":
 | 
						|
            lambda state: state.has("Perfectly Ultimate Great Moth and its required cards", player) and
 | 
						|
                          state.has_all(["Gokipon", "Howling Insect"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD26 Magnetic Power":
 | 
						|
            lambda state: state.has("Valkyrion the Magna Warrior and its pieces", player) and
 | 
						|
                          yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD27 Dark Sage":
 | 
						|
            lambda state: state.has("Dark Sage and its required cards", player) and
 | 
						|
                          state.has_any(["Skilled Dark Magician", "Dark Magic Curtain"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD28 Direct Damage":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD29 Destroy Monsters in Battle":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD30 Tribute Summon":
 | 
						|
            lambda state: state.has("Treeborn Frog", player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD31 Special Summon C":
 | 
						|
            lambda state: state.count_from_list_unique(
 | 
						|
                ["Aqua Spirit", "Rock Spirit", "Spirit of Flames",
 | 
						|
                 "Garuda the Wind Spirit", "Gigantes", "Inferno", "Megarock Dragon", "Silpheed"],
 | 
						|
                player) > 4 and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD32 Toon":
 | 
						|
            lambda state: only_toons(state, player) and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD33 10x Counter":
 | 
						|
            lambda state: counter_traps(state, player) and yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD34 Destiny Board":
 | 
						|
            lambda state: state.has("Destiny Board and its letters", player)
 | 
						|
                          and state.has("Can Stall with Monsters", player)
 | 
						|
                          and state.has("A Cat of Ill Omen", player)
 | 
						|
                          and yugioh06_difficulty(state, player, 2),
 | 
						|
        "TD35 Huge Damage in a Turn":
 | 
						|
            lambda state: state.has_all(["Cyber-Stein", "Cyber Twin Dragon", "Megamorph"], player)
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD36 V-Z In the House":
 | 
						|
            lambda state: state.has("VWXYZ-Dragon Catapult Cannon and the fusion materials", player)
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD37 Uria, Lord of Searing Flames":
 | 
						|
            lambda state: state.has_all(["Uria, Lord of Searing Flames",
 | 
						|
                                         "Embodiment of Apophis",
 | 
						|
                                         "Skull Zoma",
 | 
						|
                                         "Metal Reflect Slime"], player)
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD38 Hamon, Lord of Striking Thunder":
 | 
						|
            lambda state: state.has("Hamon, Lord of Striking Thunder", player)
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD39 Raviel, Lord of Phantasms":
 | 
						|
            lambda state: state.has_all(["Raviel, Lord of Phantasms", "Giant Germ"], player) and
 | 
						|
                          state.count_from_list_unique(["Archfiend Soldier",
 | 
						|
                                                        "Skull Descovery Knight",
 | 
						|
                                                        "Slate Warrior",
 | 
						|
                                                        "D. D. Trainer",
 | 
						|
                                                        "Earthbound Spirit"], player) >= 3
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD40 Make a Chain":
 | 
						|
            lambda state: state.has("Ultimate Offering", player)
 | 
						|
                          and yugioh06_difficulty(state, player, 4),
 | 
						|
        "TD41 The Gatekeeper Stands Tall":
 | 
						|
            lambda state: state.has("Gate Guardian and its pieces", player) and
 | 
						|
                          state.has_all(["Treeborn Frog", "Tribute Doll"], player)
 | 
						|
                          and yugioh06_difficulty(state, player, 4),
 | 
						|
        "TD42 Serious Damage":
 | 
						|
            lambda state: yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD43 Return Monsters with Effects":
 | 
						|
            lambda state: state.has_all(["Penguin Soldier", "Messenger of Peace"], player)
 | 
						|
                          and yugioh06_difficulty(state, player, 4),
 | 
						|
        "TD44 Fusion Summon":
 | 
						|
            lambda state: state.has_all(["Fusion Gate", "Terraforming", "Dimension Fusion",
 | 
						|
                                         "Return from the Different Dimension"], player) and
 | 
						|
                          count_has_materials(state, ["Elemental Hero Flame Wingman",
 | 
						|
                                                      "Elemental Hero Madballman",
 | 
						|
                                                      "Elemental Hero Rampart Blaster",
 | 
						|
                                                      "Elemental Hero Steam Healer",
 | 
						|
                                                      "Elemental Hero Shining Flare Wingman",
 | 
						|
                                                      "Elemental Hero Wildedge"], player) >= 4 and
 | 
						|
                          yugioh06_difficulty(state, player, 7),
 | 
						|
        "TD45 Big Damage at once":
 | 
						|
            lambda state: state.has("Wave-Motion Cannon", player)
 | 
						|
                          and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD46 XYZ In the House":
 | 
						|
            lambda state: state.has("XYZ-Dragon Cannon fusions and their materials", player) and
 | 
						|
                          state.has("Dimension Fusion", player),
 | 
						|
        "TD47 Spell Counter":
 | 
						|
            lambda state: spell_counter(state, player) and yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD48 Destroy Monsters with Effects":
 | 
						|
            lambda state: state.has_all(["Blade Rabbit", "Dream Clown"], player) and
 | 
						|
                          state.has("Can Stall with ST", player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3),
 | 
						|
        "TD49 Plunder":
 | 
						|
            lambda state: take_control(state, player) and yugioh06_difficulty(state, player, 5),
 | 
						|
        "TD50 Dark Scorpion Combination":
 | 
						|
            lambda state: state.has("Dark Scorpion Combination and its required cards", player) and
 | 
						|
                          state.has_all(["Reinforcement of the Army", "Mystic Tomato"], player) and
 | 
						|
                          yugioh06_difficulty(state, player, 3)
 | 
						|
    }
 | 
						|
    multiworld.completion_condition[player] = lambda state: state.has("Goal", player)
 | 
						|
 | 
						|
    for loc in multiworld.get_locations(player):
 | 
						|
        if loc.name in location_rules:
 | 
						|
            add_rule(loc, location_rules[loc.name])
 | 
						|
        if loc.name in access_rules:
 | 
						|
            add_rule(multiworld.get_entrance(loc.name, player), access_rules[loc.name])
 | 
						|
 | 
						|
 | 
						|
def only_light(state, player):
 | 
						|
    return state.has_from_list_unique([
 | 
						|
        "Dunames Dark Witch",
 | 
						|
        "X-Head Cannon",
 | 
						|
        "Homunculus the Alchemic Being",
 | 
						|
        "Hysteric Fairy",
 | 
						|
        "Ninja Grandmaster Sasuke"], player, 2)\
 | 
						|
           and state.has_from_list_unique([
 | 
						|
        "Chaos Command Magician",
 | 
						|
        "Cybernetic Magician",
 | 
						|
        "Kaiser Glider",
 | 
						|
        "The Agent of Judgment - Saturn",
 | 
						|
        "Zaborg the Thunder Monarch",
 | 
						|
        "Cyber Dragon"], player, 1) \
 | 
						|
           and state.has_from_list_unique([
 | 
						|
        "D.D. Warrior Lady",
 | 
						|
        "Mystic Swordsman LV2",
 | 
						|
        "Y-Dragon Head",
 | 
						|
        "Z-Metal Tank",
 | 
						|
    ], player, 2) and state.has("Shining Angel", player)
 | 
						|
 | 
						|
 | 
						|
def only_dark(state, player):
 | 
						|
    return state.has_from_list_unique([
 | 
						|
        "Dark Elf",
 | 
						|
        "Archfiend Soldier",
 | 
						|
        "Mad Dog of Darkness",
 | 
						|
        "Vorse Raider",
 | 
						|
        "Skilled Dark Magician",
 | 
						|
        "Skull Descovery Knight",
 | 
						|
        "Mechanicalchaser",
 | 
						|
        "Dark Blade",
 | 
						|
        "Gil Garth",
 | 
						|
        "La Jinn the Mystical Genie of the Lamp",
 | 
						|
        "Opticlops",
 | 
						|
        "Zure, Knight of Dark World",
 | 
						|
        "Brron, Mad King of Dark World",
 | 
						|
        "D.D. Survivor",
 | 
						|
        "Exarion Universe",
 | 
						|
        "Kycoo the Ghost Destroyer",
 | 
						|
        "Regenerating Mummy"
 | 
						|
    ], player, 2) \
 | 
						|
           and state.has_any([
 | 
						|
        "Summoned Skull",
 | 
						|
        "Skull Archfiend of Lightning",
 | 
						|
        "The End of Anubis",
 | 
						|
        "Dark Ruler Ha Des",
 | 
						|
        "Beast of Talwar",
 | 
						|
        "Inferno Hammer",
 | 
						|
        "Jinzo",
 | 
						|
        "Ryu Kokki"
 | 
						|
    ], player) \
 | 
						|
           and state.has_from_list_unique([
 | 
						|
        "Legendary Fiend",
 | 
						|
        "Don Zaloog",
 | 
						|
        "Newdoria",
 | 
						|
        "Sangan",
 | 
						|
        "Spirit Reaper",
 | 
						|
        "Giant Germ"
 | 
						|
    ], player, 2) and state.has("Mystic Tomato", player)
 | 
						|
 | 
						|
 | 
						|
def only_earth(state, player):
 | 
						|
    return state.has_from_list_unique([
 | 
						|
        "Berserk Gorilla",
 | 
						|
        "Gemini Elf",
 | 
						|
        "Insect Knight",
 | 
						|
        "Toon Gemini Elf",
 | 
						|
        "Familiar-Possessed - Aussa",
 | 
						|
        "Neo Bug",
 | 
						|
        "Blindly Loyal Goblin",
 | 
						|
        "Chiron the Mage",
 | 
						|
        "Gearfried the Iron Knight"
 | 
						|
    ], player, 2) and state.has_any([
 | 
						|
        "Dark Driceratops",
 | 
						|
        "Granmarg the Rock Monarch",
 | 
						|
        "Hieracosphinx",
 | 
						|
        "Saber Beetle"
 | 
						|
    ], player) and state.has_from_list_unique([
 | 
						|
        "Hyper Hammerhead",
 | 
						|
        "Green Gadget",
 | 
						|
        "Red Gadget",
 | 
						|
        "Yellow Gadget",
 | 
						|
        "Dimensional Warrior",
 | 
						|
        "Enraged Muka Muka",
 | 
						|
        "Exiled Force"
 | 
						|
    ], player, 2) and state.has("Giant Rat", player)
 | 
						|
 | 
						|
 | 
						|
def only_water(state, player):
 | 
						|
    return state.has_from_list_unique([
 | 
						|
        "Gagagigo",
 | 
						|
        "Familiar-Possessed - Eria",
 | 
						|
        "7 Colored Fish",
 | 
						|
        "Sea Serpent Warrior of Darkness",
 | 
						|
        "Abyss Soldier"
 | 
						|
    ], player, 2) and state.has_any([
 | 
						|
        "Giga Gagagigo",
 | 
						|
        "Amphibian Beast",
 | 
						|
        "Terrorking Salmon",
 | 
						|
        "Mobius the Frost Monarch"
 | 
						|
    ], player) and state.has_from_list_unique([
 | 
						|
        "Revival Jam",
 | 
						|
        "Yomi Ship",
 | 
						|
        "Treeborn Frog"
 | 
						|
    ], player, 2) and state.has("Mother Grizzly", player)
 | 
						|
 | 
						|
 | 
						|
def only_fire(state, player):
 | 
						|
    return state.has_from_list_unique([
 | 
						|
        "Blazing Inpachi",
 | 
						|
        "Familiar-Possessed - Hiita",
 | 
						|
        "Great Angus",
 | 
						|
        "Fire Beaters"
 | 
						|
    ], player, 2) and state.has_any([
 | 
						|
        "Thestalos the Firestorm Monarch",
 | 
						|
        "Horus the Black Flame Dragon LV6"
 | 
						|
    ], player) and state.has_from_list_unique([
 | 
						|
        "Solar Flare Dragon",
 | 
						|
        "Tenkabito Shien",
 | 
						|
        "Ultimate Baseball Kid"
 | 
						|
    ], player, 2) and state.has("UFO Turtle", player)
 | 
						|
 | 
						|
 | 
						|
def only_wind(state, player):
 | 
						|
    return state.has_from_list_unique([
 | 
						|
        "Luster Dragon",
 | 
						|
        "Slate Warrior",
 | 
						|
        "Spear Dragon",
 | 
						|
        "Familiar-Possessed - Wynn",
 | 
						|
        "Harpie's Brother",
 | 
						|
        "Nin-Ken Dog",
 | 
						|
        "Cyber Harpie Lady",
 | 
						|
        "Oxygeddon"
 | 
						|
    ], player, 2) and state.has_any([
 | 
						|
        "Cyber-Tech Alligator",
 | 
						|
        "Luster Dragon #2",
 | 
						|
        "Armed Dragon LV5",
 | 
						|
        "Roc from the Valley of Haze"
 | 
						|
    ], player) and state.has_from_list_unique([
 | 
						|
        "Armed Dragon LV3",
 | 
						|
        "Twin-Headed Behemoth",
 | 
						|
        "Harpie Lady 1"
 | 
						|
    ], player, 2) and state.has("Flying Kamakiri 1", player)
 | 
						|
 | 
						|
 | 
						|
def only_fairy(state, player):
 | 
						|
    return state.has_any([
 | 
						|
        "Dunames Dark Witch",
 | 
						|
        "Hysteric Fairy"
 | 
						|
    ], player) and (state.count_from_list_unique([
 | 
						|
        "Dunames Dark Witch",
 | 
						|
        "Hysteric Fairy",
 | 
						|
        "Dancing Fairy",
 | 
						|
        "Zolga",
 | 
						|
        "Shining Angel",
 | 
						|
        "Kelbek",
 | 
						|
        "Mudora",
 | 
						|
        "Asura Priest",
 | 
						|
        "Cestus of Dagla"
 | 
						|
    ], player) + (state.has_any([
 | 
						|
        "The Agent of Judgment - Saturn",
 | 
						|
        "Airknight Parshath"
 | 
						|
    ], player))) >= 7
 | 
						|
 | 
						|
 | 
						|
def only_warrior(state, player):
 | 
						|
    return state.has_any([
 | 
						|
        "Dark Blade",
 | 
						|
        "Blindly Loyal Goblin",
 | 
						|
        "D.D. Survivor",
 | 
						|
        "Gearfried the Iron knight",
 | 
						|
        "Ninja Grandmaster Sasuke",
 | 
						|
        "Warrior Beaters"
 | 
						|
    ], player) and (state.count_from_list_unique([
 | 
						|
        "Warrior Lady of the Wasteland",
 | 
						|
        "Exiled Force",
 | 
						|
        "Mystic Swordsman LV2",
 | 
						|
        "Dimensional Warrior",
 | 
						|
        "Dandylion",
 | 
						|
        "D.D. Assailant",
 | 
						|
        "Blade Knight",
 | 
						|
        "D.D. Warrior Lady",
 | 
						|
        "Marauding Captain",
 | 
						|
        "Command Knight",
 | 
						|
        "Reinforcement of the Army"
 | 
						|
    ], player) + (state.has_any([
 | 
						|
        "Freed the Matchless General",
 | 
						|
        "Holy Knight Ishzark",
 | 
						|
        "Silent Swordsman Lv5"
 | 
						|
    ], player))) >= 7
 | 
						|
 | 
						|
 | 
						|
def only_zombie(state, player):
 | 
						|
    return state.has("Pyramid Turtle", player) \
 | 
						|
           and state.has_from_list_unique([
 | 
						|
        "Regenerating Mummy",
 | 
						|
        "Ryu Kokki",
 | 
						|
        "Spirit Reaper",
 | 
						|
        "Master Kyonshee",
 | 
						|
        "Curse of Vampire",
 | 
						|
        "Vampire Lord",
 | 
						|
        "Goblin Zombie",
 | 
						|
        "Curse of Vampire",
 | 
						|
        "Vampire Lord",
 | 
						|
        "Goblin Zombie",
 | 
						|
        "Book of Life",
 | 
						|
        "Call of the Mummy"
 | 
						|
    ], player, 6)
 | 
						|
 | 
						|
 | 
						|
def only_dragon(state, player):
 | 
						|
    return state.has_any([
 | 
						|
        "Luster Dragon",
 | 
						|
        "Spear Dragon",
 | 
						|
        "Cave Dragon"
 | 
						|
    ], player) and (state.count_from_list_unique([
 | 
						|
        "Luster Dragon",
 | 
						|
        "Spear Dragon",
 | 
						|
        "Cave Dragon"
 | 
						|
        "Armed Dragon LV3",
 | 
						|
        "Masked Dragon",
 | 
						|
        "Twin-Headed Behemoth",
 | 
						|
        "Element Dragon",
 | 
						|
        "Troop Dragon",
 | 
						|
        "Horus the Black Flame Dragon LV4",
 | 
						|
        "Stamping Destruction"
 | 
						|
    ], player) + (state.has_any([
 | 
						|
        "Luster Dragon #2",
 | 
						|
        "Armed Dragon LV5",
 | 
						|
        "Kaiser Glider",
 | 
						|
        "Horus the Black Flame Dragon LV6"
 | 
						|
    ], player))) >= 7
 | 
						|
 | 
						|
 | 
						|
def only_spellcaster(state, player):
 | 
						|
    return state.has_any([
 | 
						|
        "Dark Elf",
 | 
						|
        "Gemini Elf",
 | 
						|
        "Skilled Dark Magician",
 | 
						|
        "Toon Gemini Elf",
 | 
						|
        "Kycoo the Ghost Destroyer",
 | 
						|
        "Familiar-Possessed - Aussa"
 | 
						|
    ], player) and (state.count_from_list_unique([
 | 
						|
        "Dark Elf",
 | 
						|
        "Gemini Elf",
 | 
						|
        "Skilled Dark Magician",
 | 
						|
        "Toon Gemini Elf",
 | 
						|
        "Kycoo the Ghost Destroyer",
 | 
						|
        "Familiar-Possessed - Aussa",
 | 
						|
        "Breaker the magical Warrior",
 | 
						|
        "The Tricky",
 | 
						|
        "Injection Fairy Lily",
 | 
						|
        "Magician of Faith",
 | 
						|
        "Tsukuyomi",
 | 
						|
        "Gravekeeper's Spy",
 | 
						|
        "Gravekeeper's Guard",
 | 
						|
        "Summon Priest",
 | 
						|
        "Old Vindictive Magician",
 | 
						|
        "Apprentice Magician",
 | 
						|
        "Magical Dimension"
 | 
						|
    ], player) + (state.has_any([
 | 
						|
        "Chaos Command Magician",
 | 
						|
        "Cybernetic Magician"
 | 
						|
    ], player))) >= 7
 | 
						|
 | 
						|
 | 
						|
def equip_unions(state, player):
 | 
						|
    return (state.has_all(["Burning Beast", "Freezing Beast",
 | 
						|
                           "Metallizing Parasite - Lunatite", "Mother Grizzly"], player) or
 | 
						|
            state.has_all(["Dark Blade", "Pitch-Dark Dragon",
 | 
						|
                           "Giant Orc", "Second Goblin", "Mystic Tomato"], player) or
 | 
						|
            state.has_all(["Decayed Commander", "Zombie Tiger",
 | 
						|
                           "Vampire Orchis", "Des Dendle", "Giant Rat"], player) or
 | 
						|
            state.has_all(["Indomitable Fighter Lei Lei", "Protective Soul Ailin",
 | 
						|
                           "V-Tiger Jet", "W-Wing Catapult", "Shining Angel"], player) or
 | 
						|
            state.has_all(["X-Head Cannon", "Y-Dragon Head", "Z-Metal Tank", "Shining Angel"], player)) and\
 | 
						|
           state.has_any(["Frontline Base", "Formation Union", "Roll Out!"], player)
 | 
						|
 | 
						|
 | 
						|
def can_gain_lp_every_turn(state, player):
 | 
						|
    return state.count_from_list_unique([
 | 
						|
        "Solemn Wishes",
 | 
						|
        "Cure Mermaid",
 | 
						|
        "Dancing Fairy",
 | 
						|
        "Princess Pikeru",
 | 
						|
        "Kiseitai"], player) >= 3
 | 
						|
 | 
						|
 | 
						|
def only_normal(state, player):
 | 
						|
    return (state.has_from_list_unique([
 | 
						|
        "Archfiend Soldier",
 | 
						|
        "Gemini Elf",
 | 
						|
        "Insect Knight",
 | 
						|
        "Luster Dragon",
 | 
						|
        "Mad Dog of Darkness",
 | 
						|
        "Vorse Raider",
 | 
						|
        "Blazing Inpachi",
 | 
						|
        "Gagagigo",
 | 
						|
        "Mechanicalchaser",
 | 
						|
        "7 Colored Fish",
 | 
						|
        "Dark Blade",
 | 
						|
        "Dunames Dark Witch",
 | 
						|
        "Giant Red Snake",
 | 
						|
        "Gil Garth",
 | 
						|
        "Great Angus",
 | 
						|
        "Harpie's Brother",
 | 
						|
        "La Jinn the Mystical Genie of the Lamp",
 | 
						|
        "Neo Bug",
 | 
						|
        "Nin-Ken Dog",
 | 
						|
        "Opticlops",
 | 
						|
        "Sea Serpent Warrior of Darkness",
 | 
						|
        "X-Head Cannon",
 | 
						|
        "Zure, Knight of Dark World"], player, 6) and
 | 
						|
            state.has_any([
 | 
						|
                "Cyber-Tech Alligator",
 | 
						|
                "Summoned Skull",
 | 
						|
                "Giga Gagagigo",
 | 
						|
                "Amphibian Beast",
 | 
						|
                "Beast of Talwar",
 | 
						|
                "Luster Dragon #2",
 | 
						|
                "Terrorking Salmon"], player))
 | 
						|
 | 
						|
 | 
						|
def only_level(state, player):
 | 
						|
    return (state.has("Level Up!", player) and
 | 
						|
            (state.has_all(["Armed Dragon LV3", "Armed Dragon LV5"], player) +
 | 
						|
             state.has_all(["Horus the Black Flame Dragon LV4", "Horus the Black Flame Dragon LV6"], player) +
 | 
						|
             state.has_all(["Mystic Swordsman LV4", "Mystic Swordsman LV6"], player) +
 | 
						|
             state.has_all(["Silent Swordsman Lv3", "Silent Swordsman Lv5"], player) +
 | 
						|
             state.has_all(["Ultimate Insect Lv3", "Ultimate Insect Lv5"], player)) >= 3)
 | 
						|
 | 
						|
 | 
						|
def spell_counter(state, player):
 | 
						|
    return (state.has("Pitch-Black Power Stone", player) and
 | 
						|
            state.has_from_list_unique(["Blast Magician",
 | 
						|
                                        "Magical Marionette",
 | 
						|
                                        "Mythical Beast Cerberus",
 | 
						|
                                        "Royal Magical Library",
 | 
						|
                                        "Spell-Counter Cards"], player, 2))
 | 
						|
 | 
						|
 | 
						|
def take_control(state, player):
 | 
						|
    return state.has_from_list_unique(["Aussa the Earth Charmer",
 | 
						|
                                       "Jowls of Dark Demise",
 | 
						|
                                       "Brain Control",
 | 
						|
                                       "Creature Swap",
 | 
						|
                                       "Enemy Controller",
 | 
						|
                                       "Mind Control",
 | 
						|
                                       "Magician of Faith"], player, 5)
 | 
						|
 | 
						|
 | 
						|
def only_toons(state, player):
 | 
						|
    return state.has_all(["Toon Gemini Elf",
 | 
						|
                          "Toon Goblin Attack Force",
 | 
						|
                          "Toon Masked Sorcerer",
 | 
						|
                          "Toon Mermaid",
 | 
						|
                          "Toon Dark Magician Girl",
 | 
						|
                          "Toon World"], player)
 | 
						|
 | 
						|
 | 
						|
def only_spirit(state, player):
 | 
						|
    return state.has_all(["Asura Priest",
 | 
						|
                          "Fushi No Tori",
 | 
						|
                          "Maharaghi",
 | 
						|
                          "Susa Soldier"], player)
 | 
						|
 | 
						|
 | 
						|
def pacman_deck(state, player):
 | 
						|
    return state.has_from_list_unique(["Des Lacooda",
 | 
						|
                                       "Swarm of Locusts",
 | 
						|
                                       "Swarm of Scarabs",
 | 
						|
                                       "Wandering Mummy",
 | 
						|
                                       "Golem Sentry",
 | 
						|
                                       "Great Spirit",
 | 
						|
                                       "Royal Keeper",
 | 
						|
                                       "Stealth Bird"], player, 4)
 | 
						|
 | 
						|
 | 
						|
def quick_plays(state, player):
 | 
						|
    return state.has_from_list_unique(["Collapse",
 | 
						|
                                       "Emergency Provisions",
 | 
						|
                                       "Enemy Controller",
 | 
						|
                                       "Graceful Dice",
 | 
						|
                                       "Mystik Wok",
 | 
						|
                                       "Offerings to the Doomed",
 | 
						|
                                       "Poison of the Old Man",
 | 
						|
                                       "Reload",
 | 
						|
                                       "Rush Recklessly",
 | 
						|
                                       "The Reliable Guardian"], player, 4)
 | 
						|
 | 
						|
 | 
						|
def counter_traps(state, player):
 | 
						|
    return state.has_from_list_unique(["Cursed Seal of the Forbidden Spell",
 | 
						|
                                       "Divine Wrath",
 | 
						|
                                       "Horn of Heaven",
 | 
						|
                                       "Magic Drain",
 | 
						|
                                       "Magic Jammer",
 | 
						|
                                       "Negate Attack",
 | 
						|
                                       "Seven Tools of the Bandit",
 | 
						|
                                       "Solemn Judgment",
 | 
						|
                                       "Spell Shield Type-8"], player, 5)
 | 
						|
 | 
						|
 | 
						|
def back_row_removal(state, player):
 | 
						|
    return state.has_from_list_unique(["Anteatereatingant",
 | 
						|
                                       "B.E.S. Tetran",
 | 
						|
                                       "Breaker the Magical Warrior",
 | 
						|
                                       "Calamity of the Wicked",
 | 
						|
                                       "Chiron the Mage",
 | 
						|
                                       "Dust Tornado",
 | 
						|
                                       "Heavy Storm",
 | 
						|
                                       "Mystical Space Typhoon",
 | 
						|
                                       "Mobius the Frost Monarch",
 | 
						|
                                       "Raigeki Break",
 | 
						|
                                       "Stamping Destruction",
 | 
						|
                                       "Swarm of Locusts"], player, 2)
 |