/// <summary> /// Chain the enemy monster, or disable monster like Rescue Rabbit. /// </summary> protected bool DefaultDisableMonster() { if (Duel.Player == 1) { ClientCard target = Enemy.MonsterZone.GetShouldBeDisabledBeforeItUseEffectMonster(); if (target != null) { AI.SelectCard(target); return(true); } } ClientCard LastChainCard = Util.GetLastChainCard(); if (LastChainCard != null && LastChainCard.Controller == 1 && LastChainCard.Location == CardLocation.MonsterZone && !LastChainCard.IsDisabled() && !LastChainCard.IsShouldNotBeTarget() && !LastChainCard.IsShouldNotBeSpellTrapTarget()) { AI.SelectCard(LastChainCard); return(true); } if (Bot.BattlingMonster != null && Enemy.BattlingMonster != null) { if (!Enemy.BattlingMonster.IsDisabled() && Enemy.BattlingMonster.IsCode(_CardId.EaterOfMillions)) { AI.SelectCard(Enemy.BattlingMonster); return(true); } } if (Duel.Phase == DuelPhase.BattleStart && Duel.Player == 1 && Enemy.HasInMonstersZone(_CardId.NumberS39UtopiaTheLightning, true)) { AI.SelectCard(_CardId.NumberS39UtopiaTheLightning); return(true); } return(false); }
//无限泡影 public bool Impermanence_activate() { // negate before effect used foreach (ClientCard m in Enemy.GetMonsters()) { if (m.IsMonsterShouldBeDisabledBeforeItUseEffect() && !m.IsDisabled() && Duel.LastChainPlayer != 0) { if (Card.Location == CardLocation.SpellZone) { for (int i = 0; i < 5; ++i) { if (Bot.SpellZone[i] == Card) { Impermanence_list.Add(i); break; } } } if (Card.Location == CardLocation.Hand) { AI.SelectPlace(SelectSTPlace(Card, true)); } AI.SelectCard(m); return(true); } } ClientCard LastChainCard = Util.GetLastChainCard(); // negate spells if (Card.Location == CardLocation.SpellZone) { int this_seq = -1; int that_seq = -1; for (int i = 0; i < 5; ++i) { if (Bot.SpellZone[i] == Card) { this_seq = i; } if (LastChainCard != null && LastChainCard.Controller == 1 && LastChainCard.Location == CardLocation.SpellZone && Enemy.SpellZone[i] == LastChainCard) { that_seq = i; } else if (Duel.Player == 0 && Util.GetProblematicEnemySpell() != null && Enemy.SpellZone[i] != null && Enemy.SpellZone[i].IsFloodgate()) { that_seq = i; } } if ((this_seq * that_seq >= 0 && this_seq + that_seq == 4) || (Util.IsChainTarget(Card)) || (LastChainCard != null && LastChainCard.Controller == 1 && LastChainCard.IsCode(_CardId.HarpiesFeatherDuster))) { List <ClientCard> enemy_monsters = Enemy.GetMonsters(); enemy_monsters.Sort(CardContainer.CompareCardAttack); enemy_monsters.Reverse(); foreach (ClientCard card in enemy_monsters) { if (card.IsFaceup() && !card.IsShouldNotBeTarget() && !card.IsShouldNotBeSpellTrapTarget()) { AI.SelectCard(card); Impermanence_list.Add(this_seq); return(true); } } } } if ((LastChainCard == null || LastChainCard.Controller != 1 || LastChainCard.Location != CardLocation.MonsterZone || LastChainCard.IsDisabled() || LastChainCard.IsShouldNotBeTarget() || LastChainCard.IsShouldNotBeSpellTrapTarget())) { return(false); } // negate monsters if (is_should_not_negate() && LastChainCard.Location == CardLocation.MonsterZone) { return(false); } if (Card.Location == CardLocation.SpellZone) { for (int i = 0; i < 5; ++i) { if (Bot.SpellZone[i] == Card) { Impermanence_list.Add(i); break; } } } if (Card.Location == CardLocation.Hand) { AI.SelectPlace(SelectSTPlace(Card, true)); } if (LastChainCard != null) { AI.SelectCard(LastChainCard); } else { List <ClientCard> enemy_monsters = Enemy.GetMonsters(); enemy_monsters.Sort(CardContainer.CompareCardAttack); enemy_monsters.Reverse(); foreach (ClientCard card in enemy_monsters) { if (card.IsFaceup() && !card.IsShouldNotBeTarget() && !card.IsShouldNotBeSpellTrapTarget()) { AI.SelectCard(card); return(true); } } } return(true); }