/// <summary> /// Clever enough. /// </summary> protected bool DefaultDimensionalBarrier() { const int RITUAL = 0; const int FUSION = 1; const int SYNCHRO = 2; const int XYZ = 3; const int PENDULUM = 4; if (Duel.Player != 0) { List <ClientCard> monsters = Enemy.GetMonsters(); int[] levels = new int[13]; bool tuner = false; bool nontuner = false; foreach (ClientCard monster in monsters) { if (monster.HasType(CardType.Tuner)) { tuner = true; } else if (!monster.HasType(CardType.Xyz) && !monster.HasType(CardType.Link)) { nontuner = true; levels[monster.Level] = levels[monster.Level] + 1; } if (monster.IsOneForXyz()) { AI.SelectOption(XYZ); return(true); } } if (tuner && nontuner) { AI.SelectOption(SYNCHRO); return(true); } for (int i = 1; i <= 12; i++) { if (levels[i] > 1) { AI.SelectOption(XYZ); return(true); } } ClientCard l = Enemy.SpellZone[6]; ClientCard r = Enemy.SpellZone[7]; if (l != null && r != null && l.LScale != r.RScale) { AI.SelectOption(PENDULUM); return(true); } } ClientCard lastchaincard = Util.GetLastChainCard(); if (Duel.LastChainPlayer == 1 && lastchaincard != null && !lastchaincard.IsDisabled()) { if (lastchaincard.HasType(CardType.Ritual)) { AI.SelectOption(RITUAL); return(true); } if (lastchaincard.HasType(CardType.Fusion)) { AI.SelectOption(FUSION); return(true); } if (lastchaincard.HasType(CardType.Synchro)) { AI.SelectOption(SYNCHRO); return(true); } if (lastchaincard.HasType(CardType.Xyz)) { AI.SelectOption(XYZ); return(true); } if (lastchaincard.IsFusionSpell()) { AI.SelectOption(FUSION); return(true); } } if (Util.IsChainTarget(Card)) { AI.SelectOption(XYZ); return(true); } return(false); }
protected bool DefaultDimensionalBarrier() { if (Duel.Player != 0) { List <ClientCard> monsters = Duel.Fields[1].GetMonsters(); int[] levels = new int[13]; bool tuner = false; bool nontuner = false; foreach (ClientCard monster in monsters) { if (monster.HasType(CardType.Tuner)) { tuner = true; } else if (!monster.HasType(CardType.Xyz)) { nontuner = true; } if (monster.IsOneForXyz()) { AI.SelectOption(3); return(true); } levels[monster.Level] = levels[monster.Level] + 1; } if (tuner && nontuner) { AI.SelectOption(2); return(true); } for (int i = 1; i <= 12; i++) { if (levels[i] > 1) { AI.SelectOption(3); return(true); } } ClientCard l = Duel.Fields[1].SpellZone[6]; ClientCard r = Duel.Fields[1].SpellZone[7]; if (l != null && r != null && l.LScale != r.RScale) { AI.SelectOption(4); return(true); } } ClientCard lastchaincard = GetLastChainCard(); if (LastChainPlayer == 1 && lastchaincard != null && !lastchaincard.IsDisabled()) { if (lastchaincard.HasType(CardType.Ritual)) { AI.SelectOption(0); return(true); } if (lastchaincard.HasType(CardType.Fusion)) { AI.SelectOption(1); return(true); } if (lastchaincard.HasType(CardType.Synchro)) { AI.SelectOption(2); return(true); } if (lastchaincard.HasType(CardType.Xyz)) { AI.SelectOption(3); return(true); } if (lastchaincard.IsFusionSpell()) { AI.SelectOption(1); return(true); } } foreach (ClientCard card in Duel.ChainTargets) { if (Card.Equals(card)) { AI.SelectOption(3); return(true); } } return(false); }