| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2024-09-17 15:13:19 +02:00
										 |  |  |                                         yugioh06_difficulty(state, player, 2), | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "Extremely Low Deck Bonus": | 
					
						
							|  |  |  |             lambda state: state.has_any(["Reasoning", "Monster Gate", "Magical Merchant"], player) and | 
					
						
							| 
									
										
										
										
											2024-09-17 15:13:19 +02:00
										 |  |  |                           yugioh06_difficulty(state, player, 3), | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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": | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |             lambda state: state.count_from_list_unique( | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |                 ["Spirit Reaper", "Giant Germ", "Marshmallon", "Nimble Momonga"], player) >= 2, | 
					
						
							|  |  |  |         "Can Stall with ST": | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |             lambda state: state.count_from_list_unique(["Level Limit - Area B", "Gravity Bind", "Messenger of Peace"], | 
					
						
							|  |  |  |                                                        player) >= 2, | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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) | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |                           and state.count_from_list_unique(["Dark World Lightning", "Nobleman of Crossout", | 
					
						
							|  |  |  |                                                             "Shield Crash", "Tribute to the Doomed"], player) >= 2 | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |                           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": | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |             lambda state: state.count_from_list_unique( | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |                 ["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 | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |                           state.count_from_list_unique(["Archfiend Soldier", | 
					
						
							|  |  |  |                                                         "Skull Descovery Knight", | 
					
						
							|  |  |  |                                                         "Slate Warrior", | 
					
						
							|  |  |  |                                                         "D. D. Trainer", | 
					
						
							|  |  |  |                                                         "Earthbound Spirit"], player) >= 3 | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |                           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): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "Dunames Dark Witch", | 
					
						
							|  |  |  |         "X-Head Cannon", | 
					
						
							|  |  |  |         "Homunculus the Alchemic Being", | 
					
						
							|  |  |  |         "Hysteric Fairy", | 
					
						
							|  |  |  |         "Ninja Grandmaster Sasuke"], player, 2)\ | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |            and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "Chaos Command Magician", | 
					
						
							|  |  |  |         "Cybernetic Magician", | 
					
						
							|  |  |  |         "Kaiser Glider", | 
					
						
							|  |  |  |         "The Agent of Judgment - Saturn", | 
					
						
							|  |  |  |         "Zaborg the Thunder Monarch", | 
					
						
							|  |  |  |         "Cyber Dragon"], player, 1) \ | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |            and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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) \ | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |            and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "Legendary Fiend", | 
					
						
							|  |  |  |         "Don Zaloog", | 
					
						
							|  |  |  |         "Newdoria", | 
					
						
							|  |  |  |         "Sangan", | 
					
						
							|  |  |  |         "Spirit Reaper", | 
					
						
							|  |  |  |         "Giant Germ" | 
					
						
							|  |  |  |     ], player, 2) and state.has("Mystic Tomato", player) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def only_earth(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "Revival Jam", | 
					
						
							|  |  |  |         "Yomi Ship", | 
					
						
							|  |  |  |         "Treeborn Frog" | 
					
						
							|  |  |  |     ], player, 2) and state.has("Mother Grizzly", player) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def only_fire(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "Solar Flare Dragon", | 
					
						
							|  |  |  |         "Tenkabito Shien", | 
					
						
							|  |  |  |         "Ultimate Baseball Kid" | 
					
						
							|  |  |  |     ], player, 2) and state.has("UFO Turtle", player) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def only_wind(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and (state.count_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and (state.count_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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) \ | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |            and state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and (state.count_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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" | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     ], player) and (state.count_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return state.count_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "Solemn Wishes", | 
					
						
							|  |  |  |         "Cure Mermaid", | 
					
						
							|  |  |  |         "Dancing Fairy", | 
					
						
							|  |  |  |         "Princess Pikeru", | 
					
						
							|  |  |  |         "Kiseitai"], player) >= 3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def only_normal(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     return (state.has_from_list_unique([ | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  |         "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 | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |             state.has_from_list_unique(["Blast Magician", | 
					
						
							|  |  |  |                                         "Magical Marionette", | 
					
						
							|  |  |  |                                         "Mythical Beast Cerberus", | 
					
						
							|  |  |  |                                         "Royal Magical Library", | 
					
						
							|  |  |  |                                         "Spell-Counter Cards"], player, 2)) | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def take_control(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def quick_plays(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def counter_traps(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2024-05-17 19:23:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def back_row_removal(state, player): | 
					
						
							| 
									
										
										
										
											2024-05-25 13:14:13 +02:00
										 |  |  |     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) |