Commit 93107b9e authored by mercury233's avatar mercury233

update AI.SelectCard to support variable number of arguments

parent 73314e40
......@@ -658,8 +658,7 @@ namespace WindBot.Game.AI.Decks
{
if (Duel.LastChainPlayer != 0)
{
AI.SelectCard(new[]
{
AI.SelectCard(
_CardId.HarpiesFeatherDuster,
CardId.PotofDesires,
CardId.OneForOne,
......@@ -677,7 +676,7 @@ namespace WindBot.Game.AI.Decks
CardId.WakingtheDragon,
CardId.Impermanence,
CardId.Marionetter
});
);
return true;
}
return false;
......@@ -1102,18 +1101,12 @@ namespace WindBot.Game.AI.Decks
{
if (!Bot.HasInHandOrInSpellZone(CardId.Protocol) && Bot.GetRemainingCount(CardId.Protocol,2) > 0)
{
AI.SelectCard(new[] {
CardId.Protocol,
CardId.Manifestation
});
AI.SelectCard(CardId.Protocol, CardId.Manifestation);
AI.SelectPlace(SelectSetPlace());
return true;
} else
{
AI.SelectCard(new[] {
CardId.Manifestation,
CardId.Protocol
});
AI.SelectCard(CardId.Manifestation, CardId.Protocol);
AI.SelectPlace(SelectSetPlace());
return true;
}
......@@ -1291,16 +1284,15 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.Protocol);
return true;
}
AI.SelectCard(new[]
{
CardId.Meluseek,
CardId.Kunquery,
CardId.Marionetter,
CardId.Multifaker,
CardId.Manifestation,
CardId.Protocol,
CardId.Silquitous
});
AI.SelectCard(
CardId.Meluseek,
CardId.Kunquery,
CardId.Marionetter,
CardId.Multifaker,
CardId.Manifestation,
CardId.Protocol,
CardId.Silquitous
);
return true;
}
......@@ -1373,13 +1365,12 @@ namespace WindBot.Game.AI.Decks
return true;
}
}
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.Kunquery,
CardId.Marionetter,
CardId.Multifaker,
CardId.Silquitous
});
);
return true;
}
return false;
......@@ -1883,10 +1874,7 @@ namespace WindBot.Game.AI.Decks
if (card.IsCode(CardId.Silquitous))
{
AI.SelectCard(card);
AI.SelectNextCard(new[] {
CardId.Multifaker,
CardId.Kunquery
});
AI.SelectNextCard(CardId.Multifaker, CardId.Kunquery);
return true;
}
}
......@@ -1903,13 +1891,13 @@ namespace WindBot.Game.AI.Decks
CardId.Protocol,
CardId.Meluseek
});
AI.SelectNextCard(new[]{
AI.SelectNextCard(
CardId.Multifaker,
CardId.Marionetter,
CardId.Meluseek,
CardId.Kunquery,
CardId.Silquitous
});
);
return true;
}
}
......@@ -1932,13 +1920,13 @@ namespace WindBot.Game.AI.Decks
CardId.Protocol,
CardId.Meluseek
});
AI.SelectNextCard(new[]{
AI.SelectNextCard(
CardId.Multifaker,
CardId.Marionetter,
CardId.Meluseek,
CardId.Kunquery,
CardId.Silquitous
});
);
}
else if (!summoned && !Bot.HasInGraveyard(CardId.Meluseek) && Bot.GetRemainingCount(CardId.Meluseek,3) > 0 && !Bot.HasInHand(CardId.Meluseek)
&& (enemy_best != null || enemy_target != null) )
......@@ -1950,10 +1938,10 @@ namespace WindBot.Game.AI.Decks
if (card.IsCode(CardId.Silquitous))
{
AI.SelectCard(card);
AI.SelectNextCard(new[]{
AI.SelectNextCard(
CardId.Meluseek,
CardId.Marionetter
});
);
return true;
}
}
......@@ -1970,12 +1958,12 @@ namespace WindBot.Game.AI.Decks
CardId.Meluseek,
CardId.Marionetter,
});
AI.SelectNextCard(new[]{
AI.SelectNextCard(
CardId.Meluseek,
CardId.Marionetter,
CardId.Multifaker,
CardId.Kunquery
});
);
return true;
}
}
......@@ -1988,10 +1976,10 @@ namespace WindBot.Game.AI.Decks
if (card.IsCode(CardId.Silquitous))
{
AI.SelectCard(card);
AI.SelectNextCard(new[]{
AI.SelectNextCard(
CardId.Marionetter,
CardId.Meluseek
});
);
return true;
}
}
......@@ -2008,12 +1996,12 @@ namespace WindBot.Game.AI.Decks
CardId.Meluseek,
CardId.Marionetter,
});
AI.SelectNextCard(new[]{
AI.SelectNextCard(
CardId.Marionetter,
CardId.Meluseek,
CardId.Multifaker,
CardId.Kunquery
});
);
return true;
}
}
......@@ -2046,12 +2034,12 @@ namespace WindBot.Game.AI.Decks
}
if (go)
{
AI.SelectNextCard(new[]{
AI.SelectNextCard(
CardId.Marionetter,
CardId.Meluseek,
CardId.Multifaker,
CardId.Kunquery
});
);
return true;
}
return false;
......@@ -2062,25 +2050,23 @@ namespace WindBot.Game.AI.Decks
if (!spell_trap_activate()) return false;
if (!Bot.HasInHandOrInMonstersZoneOrInGraveyard(CardId.Meluseek) && !Bot.HasInHandOrInMonstersZoneOrInGraveyard(CardId.Multifaker))
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.GR_WC,
CardId.MaxxC,
CardId.Kunquery,
CardId.GO_SR
});
);
if (AI.Utils.IsTurn1OrMain2()) AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
if (!summoned && !Meluseek_searched && !Bot.HasInHand(CardId.Marionetter))
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.GR_WC,
CardId.MaxxC,
CardId.Kunquery,
CardId.GO_SR
});
);
return true;
}
return false;
......@@ -2482,11 +2468,11 @@ namespace WindBot.Game.AI.Decks
public bool Needlefiber_eff()
{
AI.SelectCard(new[] {
AI.SelectCard(
CardId.GR_WC,
CardId.GO_SR,
CardId.AB_JS
});
);
return true;
}
......
......@@ -177,41 +177,38 @@ namespace WindBot.Game.AI.Decks
private bool DragonShrineEffect()
{
AI.SelectCard(new[]
{
CardId.DragonSpiritOfWhite,
CardId.WhiteDragon,
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend
});
AI.SelectCard(
CardId.DragonSpiritOfWhite,
CardId.WhiteDragon,
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend
);
if (!Bot.HasInHand(CardId.WhiteDragon))
{
AI.SelectNextCard(CardId.WhiteStoneOfLegend);
}
else
{
AI.SelectNextCard(new[]
{
AI.SelectNextCard(
CardId.WhiteStoneOfAncients,
CardId.DragonSpiritOfWhite,
CardId.WhiteStoneOfLegend
});
);
}
return true;
}
private bool MelodyOfAwakeningDragonEffect()
{
AI.SelectCard(new[]
{
CardId.WhiteStoneOfAncients,
CardId.DragonSpiritOfWhite,
CardId.WhiteStoneOfLegend,
CardId.GalaxyCyclone,
CardId.EffectVeiler,
CardId.TradeIn,
CardId.SageWithEyesOfBlue
});
AI.SelectCard(
CardId.WhiteStoneOfAncients,
CardId.DragonSpiritOfWhite,
CardId.WhiteStoneOfLegend,
CardId.GalaxyCyclone,
CardId.EffectVeiler,
CardId.TradeIn,
CardId.SageWithEyesOfBlue
);
return true;
}
......@@ -251,11 +248,7 @@ namespace WindBot.Game.AI.Decks
}
else if (!Bot.HasInHand(CardId.WhiteDragon) || !Bot.HasInHand(CardId.AlternativeWhiteDragon))
{
AI.SelectCard(new[]
{
CardId.WhiteDragon,
CardId.AlternativeWhiteDragon
});
AI.SelectCard(CardId.WhiteDragon, CardId.AlternativeWhiteDragon);
return true;
}
else
......@@ -348,12 +341,11 @@ namespace WindBot.Game.AI.Decks
{
return false;
}
AI.SelectCard(new[]
{
CardId.WhiteStoneOfAncients,
CardId.EffectVeiler,
CardId.WhiteStoneOfLegend
});
AI.SelectCard(
CardId.WhiteStoneOfAncients,
CardId.EffectVeiler,
CardId.WhiteStoneOfLegend
);
return true;
}
......@@ -381,11 +373,7 @@ namespace WindBot.Game.AI.Decks
{
return false;
}
AI.SelectCard(new[]
{
CardId.WhiteStoneOfLegend,
CardId.WhiteStoneOfAncients
});
AI.SelectCard(CardId.WhiteStoneOfLegend, CardId.WhiteStoneOfAncients);
if (Enemy.GetSpellCount() > 0)
{
AI.SelectNextCard(CardId.DragonSpiritOfWhite);
......@@ -730,20 +718,18 @@ namespace WindBot.Game.AI.Decks
private bool GalaxyEyesDarkMatterDragonEffect()
{
AI.SelectCard(new[]
{
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend,
CardId.DragonSpiritOfWhite,
CardId.WhiteDragon
});
AI.SelectNextCard(new[]
{
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend,
CardId.DragonSpiritOfWhite,
CardId.WhiteDragon
});
AI.SelectCard(
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend,
CardId.DragonSpiritOfWhite,
CardId.WhiteDragon
);
AI.SelectNextCard(
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend,
CardId.DragonSpiritOfWhite,
CardId.WhiteDragon
);
return true;
}
......@@ -822,11 +808,7 @@ namespace WindBot.Game.AI.Decks
private bool SylvanPrincesspriteEffect()
{
AI.SelectCard(new[]
{
CardId.WhiteStoneOfLegend,
CardId.WhiteStoneOfAncients
});
AI.SelectCard(CardId.WhiteStoneOfLegend, CardId.WhiteStoneOfAncients);
return true;
}
......@@ -858,17 +840,16 @@ namespace WindBot.Game.AI.Decks
if (attack - defence > Enemy.LifePoints)
return false;
}
AI.SelectCard(new[]
{
CardId.BlueEyesSpiritDragon,
CardId.HopeHarbingerDragonTitanicGalaxy,
CardId.AlternativeWhiteDragon,
CardId.WhiteDragon,
CardId.DragonSpiritOfWhite,
CardId.AzureEyesSilverDragon,
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend
});
AI.SelectCard(
CardId.BlueEyesSpiritDragon,
CardId.HopeHarbingerDragonTitanicGalaxy,
CardId.AlternativeWhiteDragon,
CardId.WhiteDragon,
CardId.DragonSpiritOfWhite,
CardId.AzureEyesSilverDragon,
CardId.WhiteStoneOfAncients,
CardId.WhiteStoneOfLegend
);
SoulChargeUsed = true;
return true;
}
......
......@@ -133,28 +133,28 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(CardId.MaxxC);
if(AI.Utils.ChainContainsCard(CardId.TheMelodyOfAwakeningDragon))
AI.SelectNextCard(new[] { CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon });
AI.SelectNextCard(CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon);
return UniqueFaceupSpell();
}
if (lastCard.IsCode(CardId.LockBird))
{
AI.SelectCard(CardId.LockBird);
if (AI.Utils.ChainContainsCard(CardId.TheMelodyOfAwakeningDragon))
AI.SelectNextCard(new[] { CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon });
AI.SelectNextCard(CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon);
return UniqueFaceupSpell();
}
if (lastCard.IsCode(CardId.Ghost))
{
AI.SelectCard(CardId.Ghost);
if (AI.Utils.ChainContainsCard(CardId.TheMelodyOfAwakeningDragon))
AI.SelectNextCard(new[] { CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon });
AI.SelectNextCard(CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon);
return UniqueFaceupSpell();
}
if (lastCard.IsCode(CardId.AshBlossom))
{
AI.SelectCard(CardId.AshBlossom);
if (AI.Utils.ChainContainsCard(CardId.TheMelodyOfAwakeningDragon))
AI.SelectNextCard(new[] { CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon });
AI.SelectNextCard(CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon);
return UniqueFaceupSpell();
}
}
......@@ -184,7 +184,7 @@ namespace WindBot.Game.AI.Decks
if(Bot.HasInMonstersZone(CardId.BlueEyesChaosMaxDragon,true) && Duel.Phase==DuelPhase.Main1 &&
(Bot.HasInMonstersZone(CardId.DeviritualTalismandra) || Bot.HasInMonstersZone(CardId.DevirrtualCandoll)))
{
AI.SelectCard(new[] {CardId.DevirrtualCandoll,CardId.DeviritualTalismandra });
AI.SelectCard(CardId.DevirrtualCandoll, CardId.DeviritualTalismandra);
return true;
}
return false;
......@@ -195,13 +195,13 @@ namespace WindBot.Game.AI.Decks
if(TheMelody_count>=2 && Bot.GetRemainingCount(CardId.BlueEyesChaosMaxDragon,3)>0)
{
AI.SelectCard(CardId.TheMelodyOfAwakeningDragon);
AI.SelectNextCard(new[] { CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon , CardId.BlueEyesAlternativeWhiteDragon });
AI.SelectNextCard(CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon);
return true;
}
if(Bot.HasInHand(CardId.BlueEyesWhiteDragon) && Bot.GetRemainingCount(CardId.BlueEyesChaosMaxDragon, 3) > 0)
{
AI.SelectCard(CardId.BlueEyesWhiteDragon);
AI.SelectNextCard(new[] { CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon,CardId.BlueEyesAlternativeWhiteDragon });
AI.SelectNextCard(CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon);
return true;
}
return false;
......@@ -225,7 +225,7 @@ namespace WindBot.Game.AI.Decks
if (!m.IsCode(CardId.AdvancedRitualArt))
AI.SelectCard(m);
}
AI.SelectNextCard(new[] { CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon });
AI.SelectNextCard(CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesChaosMaxDragon, CardId.BlueEyesAlternativeWhiteDragon);
return true;
}
return false;
......@@ -445,11 +445,7 @@ namespace WindBot.Game.AI.Decks
private bool MissusRadianteff()
{
AI.SelectCard(new[]
{
CardId.MaxxC,
CardId.MissusRadiant,
});
AI.SelectCard(CardId.MaxxC, CardId.MissusRadiant);
return true;
}
......
......@@ -385,7 +385,7 @@ namespace WindBot.Game.AI.Decks
Bot.HasInMonstersZone(CardId.WindwitchSnowBell))
{
//AI.SelectPlace(Zones.z5, Zones.ExtraMonsterZones);
AI.SelectCard(new[] { CardId.WindwitchIceBell, CardId.WindwitchGlassBell });
AI.SelectCard(CardId.WindwitchIceBell, CardId.WindwitchGlassBell);
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
......@@ -810,15 +810,9 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.DarkMagician);
ClientCard check = AI.Utils.GetOneEnemyBetterThanValue(2500, true);
if (check != null)
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
else
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
magician_sp = true;
return UniqueFaceupSpell();
}
......@@ -828,15 +822,9 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.DarkMagician);
ClientCard check = AI.Utils.GetOneEnemyBetterThanValue(2500, true);
if (check != null)
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
else
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
magician_sp = true;
return true;
}
......@@ -846,15 +834,9 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.DarkMagician);
ClientCard check = AI.Utils.GetOneEnemyBetterThanValue(2500, true);
if (check != null)
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
else
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
magician_sp = true;
return UniqueFaceupSpell();
}
......@@ -866,15 +848,9 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.DarkMagician);
ClientCard check = AI.Utils.GetOneEnemyBetterThanValue(2500, true);
if (check != null)
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
else
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
magician_sp = true;
return UniqueFaceupSpell();
}
......@@ -886,15 +862,9 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.DarkMagician);
ClientCard check = AI.Utils.GetOneEnemyBetterThanValue(2500, true);
if (check != null)
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
else
AI.SelectNextCard(new[] {
CardId.ApprenticeLllusionMagician,
CardId.DarkMagician,
CardId.MagicianOfLllusion});
AI.SelectNextCard(CardId.ApprenticeLllusionMagician, CardId.DarkMagician, CardId.MagicianOfLllusion);
magician_sp = true;
return UniqueFaceupSpell();
}
......@@ -948,7 +918,7 @@ namespace WindBot.Game.AI.Decks
if (Bot.HasInMonstersZone(CardId.MagiciansRod))
{
AI.SelectCard(CardId.MagiciansRod);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
}
......@@ -965,7 +935,7 @@ namespace WindBot.Game.AI.Decks
if (Duel.CurrentChain.Count >= 2 && AI.Utils.GetLastChainCard().IsCode(0))
{
AI.SelectCard(CardId.MagiciansRod);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
}
......@@ -986,45 +956,45 @@ namespace WindBot.Game.AI.Decks
Bot.HasInMonstersZone(CardId.WindwitchGlassBell))
return false;
AI.SelectCard(target);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
if (Bot.HasInMonstersZone(CardId.MagiciansRod) || Bot.HasInMonstersZone(CardId.SpellbookMagicianOfProphecy))
{
AI.SelectCard(new[] { CardId.MagiciansRod, CardId.SpellbookMagicianOfProphecy });
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectCard(CardId.MagiciansRod, CardId.SpellbookMagicianOfProphecy);
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
if (Duel.Player == 1 && Bot.HasInMonstersZone(CardId.WindwitchGlassBell))
{
AI.SelectCard(CardId.WindwitchGlassBell);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
if (Duel.Player == 1 && Bot.HasInMonstersZone(CardId.WindwitchIceBell))
{
AI.SelectCard(CardId.WindwitchIceBell);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
if (Duel.Player == 1 && Bot.HasInMonstersZone(CardId.WindwitchSnowBell))
{
AI.SelectCard(CardId.WindwitchSnowBell);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
if (Duel.Player == 1 && Bot.HasInMonstersZone(CardId.SpellbookMagicianOfProphecy))
{
AI.SelectCard(CardId.SpellbookMagicianOfProphecy);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
if (Duel.Player == 1 && Bot.HasInMonstersZone(CardId.ApprenticeLllusionMagician) &&
(Bot.HasInSpellZone(CardId.EternalSoul) || Bot.HasInSpellZone(CardId.MagicianNavigation)))
{
AI.SelectCard(CardId.ApprenticeLllusionMagician);
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
......@@ -1033,8 +1003,8 @@ namespace WindBot.Game.AI.Decks
(Bot.HasInMonstersZone(CardId.DarkMagician) || Bot.HasInMonstersZone(CardId.ApprenticeLllusionMagician)) &&
Duel.Player == 1 && !Bot.HasInHand(CardId.DarkMagician))
{
AI.SelectCard(new[] { CardId.DarkMagician, CardId.ApprenticeLllusionMagician });
AI.SelectNextCard(new[] { CardId.DarkMagician, CardId.DarkMagician });
AI.SelectCard(CardId.DarkMagician, CardId.ApprenticeLllusionMagician);
AI.SelectNextCard(CardId.DarkMagician, CardId.DarkMagician);
return true;
}
return false;
......@@ -1045,7 +1015,7 @@ namespace WindBot.Game.AI.Decks
if (Secret_used)
AI.SelectCard(CardId.SpellbookOfKnowledge);
else
AI.SelectCard(new[] { CardId.SpellbookOfSecrets, CardId.SpellbookOfKnowledge });
AI.SelectCard(CardId.SpellbookOfSecrets, CardId.SpellbookOfKnowledge);
return true;
}
......@@ -1090,12 +1060,7 @@ namespace WindBot.Game.AI.Decks
Bot.HasInMonstersZone(CardId.WindwitchGlassBell) ||
Bot.HasInMonstersZone(CardId.WindwitchIceBell))
{
AI.SelectCard(new[]
{
CardId.SpellbookMagicianOfProphecy,
CardId.MagiciansRod,
CardId.WindwitchGlassBell,
});
AI.SelectCard(CardId.SpellbookMagicianOfProphecy, CardId.MagiciansRod, CardId.WindwitchGlassBell);
return true;
}
if (Bot.HasInMonstersZone(CardId.ApprenticeLllusionMagician) && Bot.GetSpellCount() < 2 && Duel.Phase == DuelPhase.Main2)
......@@ -1132,13 +1097,12 @@ namespace WindBot.Game.AI.Decks
Bot.HasInMonstersZone(CardId.WindwitchGlassBell) ||
Bot.HasInMonstersZone(CardId.WindwitchIceBell))
{
AI.SelectCard(new[]
{
CardId.SpellbookMagicianOfProphecy,
CardId.MagiciansRod,
CardId.WindwitchGlassBell,
CardId.WindwitchIceBell,
});
AI.SelectCard(
CardId.SpellbookMagicianOfProphecy,
CardId.MagiciansRod,
CardId.WindwitchGlassBell,
CardId.WindwitchIceBell
);
return UniqueFaceupSpell();
}
......@@ -1196,11 +1160,7 @@ namespace WindBot.Game.AI.Decks
Bot.HasInHand(CardId.DarkMagicAttack)))
{
AI.SelectPosition(CardPosition.FaceUpAttack);
AI.SelectCard(new[]
{
CardId.SpellbookOfSecrets,
CardId.DarkMagicAttack,
});
AI.SelectCard(CardId.SpellbookOfSecrets, CardId.DarkMagicAttack);
return true;
}
if (Bot.HasInMonstersZone(CardId.ApprenticeLllusionMagician))
......@@ -1223,14 +1183,7 @@ namespace WindBot.Game.AI.Decks
Bot.GetMonsterCount()==0)
{
AI.SelectPosition(CardPosition.FaceUpAttack);
AI.SelectCard(new[]
{
CardId.MagicianOfLllusion,
CardId.ApprenticeLllusionMagician,
CardId.TheEyeOfTimaeus,
CardId.DarkMagicInheritance,
CardId.WonderWand,
});
AI.SelectCard(CardId.MagicianOfLllusion, CardId.ApprenticeLllusionMagician, CardId.TheEyeOfTimaeus, CardId.DarkMagicInheritance, CardId.WonderWand);
return true;
}
if (!Bot.HasInHandOrInMonstersZoneOrInGraveyard(CardId.DarkMagician))
......@@ -1249,14 +1202,7 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.MagicianNavigation);
return true;
}
AI.SelectCard(new[]
{
CardId.MagicianOfLllusion,
CardId.ApprenticeLllusionMagician,
CardId.TheEyeOfTimaeus,
CardId.DarkMagicInheritance,
CardId.WonderWand,
});
AI.SelectCard(CardId.MagicianOfLllusion, CardId.ApprenticeLllusionMagician, CardId.TheEyeOfTimaeus, CardId.DarkMagicInheritance, CardId.WonderWand);
return true;
}
return false;
......@@ -1296,7 +1242,7 @@ namespace WindBot.Game.AI.Decks
if (Secret_used)
AI.SelectCard(CardId.SpellbookOfKnowledge);
else
AI.SelectCard(new[] { CardId.SpellbookOfSecrets, CardId.SpellbookOfKnowledge });
AI.SelectCard(CardId.SpellbookOfSecrets, CardId.SpellbookOfKnowledge);
return true;
}
return false;
......@@ -1371,35 +1317,18 @@ namespace WindBot.Game.AI.Decks
{
if (Bot.HasInGraveyard(CardId.MagicianNavigation))
{
AI.SelectNextCard(new[] {
CardId.EternalSoul,
CardId.MagicianNavigation,
CardId.DarkMagicalCircle});
AI.SelectNextCard(CardId.EternalSoul, CardId.MagicianNavigation, CardId.DarkMagicalCircle);
}
else
AI.SelectNextCard(new[] {
CardId.EternalSoul,
CardId.MagicianNavigation,
CardId.DarkMagicalCircle});
AI.SelectNextCard(CardId.EternalSoul, CardId.MagicianNavigation, CardId.DarkMagicalCircle);
return true;
}
if (Bot.HasInGraveyard(CardId.MagicianNavigation))
{
AI.SelectNextCard(new[]
{
CardId.EternalSoul,
CardId.DarkMagicalCircle,
CardId.MagicianNavigation,
});
AI.SelectNextCard(CardId.EternalSoul, CardId.DarkMagicalCircle, CardId.MagicianNavigation);
}
else
AI.SelectNextCard(new[]
{
CardId.MagicianNavigation,
CardId.DarkMagicalCircle,
CardId.EternalSoul,
});
AI.SelectNextCard(CardId.MagicianNavigation, CardId.DarkMagicalCircle, CardId.EternalSoul);
return true;
}
return false;
......@@ -1483,11 +1412,7 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.EternalSoul);
return true;
}
AI.SelectCard(new[] {
CardId.LllusionMagic,
CardId.EternalSoul,
CardId.DarkMagicalCircle,
CardId.MagicianNavigation});
AI.SelectCard(CardId.LllusionMagic, CardId.EternalSoul, CardId.DarkMagicalCircle, CardId.MagicianNavigation);
return true;
}
else
......@@ -1523,16 +1448,7 @@ namespace WindBot.Game.AI.Decks
Bot.GetMonsterCount() > 1) return false;
if ((Bot.LifePoints - Enemy_atk <= 1000) &&
Bot.GetMonsterCount() == 1) return false;
AI.SelectCard(new[]
{
CardId.VentriloauistsClaraAndLucika,
CardId.SpellbookMagicianOfProphecy,
CardId.WindwitchGlassBell,
CardId.WindwitchIceBell,
CardId.MagiciansRod,
CardId.DarkMagician,
CardId.MagicianOfLllusion
});
AI.SelectCard(CardId.VentriloauistsClaraAndLucika, CardId.SpellbookMagicianOfProphecy, CardId.WindwitchGlassBell, CardId.WindwitchIceBell, CardId.MagiciansRod, CardId.DarkMagician, CardId.MagicianOfLllusion);
return true;
}
}
......@@ -1624,7 +1540,7 @@ namespace WindBot.Game.AI.Decks
}
if (rod_count >= 2)
{
AI.SelectCard(new[] { CardId.MagiciansRod, CardId.MagiciansRod });
AI.SelectCard(CardId.MagiciansRod, CardId.MagiciansRod);
return true;
}
if (Bot.HasInMonstersZone(CardId.DarkMagician) &&
......@@ -1633,9 +1549,9 @@ namespace WindBot.Game.AI.Decks
&& Duel.Phase == DuelPhase.Main2)
{
if (rod_count >= 2)
AI.SelectCard(new[] { CardId.MagiciansRod, CardId.MagiciansRod });
AI.SelectCard(CardId.MagiciansRod, CardId.MagiciansRod);
else
AI.SelectCard(new[] { CardId.MagiciansRod, CardId.DarkMagician });
AI.SelectCard(CardId.MagiciansRod, CardId.DarkMagician);
return true;
}
if (Bot.HasInMonstersZone(CardId.MagiciansRod) &&
......@@ -1644,9 +1560,9 @@ namespace WindBot.Game.AI.Decks
&& Duel.Phase == DuelPhase.Main2)
{
if (rod_count >= 2)
AI.SelectCard(new[] { CardId.MagiciansRod, CardId.MagiciansRod });
AI.SelectCard(CardId.MagiciansRod, CardId.MagiciansRod);
else
AI.SelectCard(new[] { CardId.MagiciansRod, CardId.DarkMagician });
AI.SelectCard(CardId.MagiciansRod, CardId.DarkMagician);
return true;
}
return false;
......@@ -1654,7 +1570,7 @@ namespace WindBot.Game.AI.Decks
private bool ApprenticeWitchlingeff()
{
AI.SelectCard(new[] { CardId.MagiciansRod, CardId.DarkMagician, CardId.ApprenticeLllusionMagician });
AI.SelectCard(CardId.MagiciansRod, CardId.DarkMagician, CardId.ApprenticeLllusionMagician);
return true;
}
public override bool OnSelectHand()
......
......@@ -243,12 +243,11 @@ namespace WindBot.Game.AI.Decks
private bool FoolishBurial()
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.DragunityPhalanx,
CardId.AssaultBeast,
CardId.StardustDragonAssaultMode
});
);
return true;
}
......
......@@ -308,41 +308,38 @@ namespace WindBot.Game.AI.Decks
count++;
}
if(AI.Utils.GetBestEnemyMonster()!=null && AI.Utils.GetBestEnemyMonster().Attack>=1900)
AI.SelectCard(new[]
{
CardId.EaterOfMillions,
AI.SelectCard(
CardId.EaterOfMillions,
CardId.PotOfDesires,
CardId.GrenMajuDaEizo,
CardId.InspectBoarder,
CardId.ThunderKingRaiOh,
CardId.ThunderKingRaiOh,
CardId.Scapegoat,
CardId.SolemnJudgment,
CardId.SolemnWarning,
CardId.SolemStrike,
CardId.InfiniteImpermanence,
});
CardId.InfiniteImpermanence
);
if (count == 0)
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.PotOfDesires,
CardId.InspectBoarder,
CardId.ThunderKingRaiOh,
CardId.EaterOfMillions,
CardId.GrenMajuDaEizo,
CardId.Scapegoat,
});
CardId.Scapegoat
);
else
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.PotOfDesires,
CardId.CardOfDemise,
CardId.SolemnJudgment,
CardId.SolemnWarning,
CardId.SolemStrike,
CardId.InfiniteImpermanence,
CardId.Scapegoat,
});
CardId.Scapegoat
);
}
return true;
}
......@@ -572,11 +569,7 @@ namespace WindBot.Game.AI.Decks
private bool MissusRadianteff()
{
AI.SelectCard(new[]
{
CardId.MaxxC,
CardId.MissusRadiant,
});
AI.SelectCard(CardId.MaxxC, CardId.MissusRadiant);
return true;
}
......
......@@ -139,26 +139,24 @@ namespace WindBot.Game.AI.Decks
if (!Bot.HasInHand(CardId.Lumina))
AI.SelectCard(CardId.Lumina);
else
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.Raiden,
CardId.Lumina,
CardId.Minerva,
CardId.Lyla
});
);
return true;
}
private bool SolarRechargeEffect()
{
AI.SelectCard(new[]
{
CardId.Wulf,
CardId.Felis,
CardId.Minerva,
CardId.Lyla,
CardId.Raiden
});
AI.SelectCard(
CardId.Wulf,
CardId.Felis,
CardId.Minerva,
CardId.Lyla,
CardId.Raiden
);
return true;
}
......@@ -174,14 +172,13 @@ namespace WindBot.Game.AI.Decks
private bool GoblindberghEffect()
{
AI.SelectCard(new[]
{
CardId.Felis,
CardId.Wulf,
CardId.Raiden,
CardId.PerformageTrickClown,
CardId.ThousandBlades
});
AI.SelectCard(
CardId.Felis,
CardId.Wulf,
CardId.Raiden,
CardId.PerformageTrickClown,
CardId.ThousandBlades
);
return true;
}
......@@ -197,17 +194,14 @@ namespace WindBot.Game.AI.Decks
}
else
{
AI.SelectCard(new[] {
AI.SelectCard(
CardId.Wulf,
CardId.Felis,
CardId.Minerva,
CardId.ThousandBlades
});
);
}
AI.SelectNextCard(new[] {
CardId.Raiden,
CardId.Felis
});
AI.SelectNextCard(CardId.Raiden, CardId.Felis);
return true;
}
......
......@@ -446,27 +446,11 @@ namespace WindBot.Game.AI.Decks
};
if (Bot.HasInGraveyard(targets))
{
AI.SelectCard(new[] {
CardId.GiantRex,
CardId.DogorantheMadFlameKaiju,
CardId.OvertexCoatls,
CardId.GamecieltheSeaTurtleKaiju,
CardId.RadiantheMultidimensionalKaiju,
CardId.SouleatingOviraptor,
CardId.UltimateConductorTytanno,
});
AI.SelectCard(CardId.GiantRex, CardId.DogorantheMadFlameKaiju, CardId.OvertexCoatls, CardId.GamecieltheSeaTurtleKaiju, CardId.RadiantheMultidimensionalKaiju, CardId.SouleatingOviraptor, CardId.UltimateConductorTytanno);
}
else
{
AI.SelectCard(new[] {
CardId.GiantRex,
CardId.DogorantheMadFlameKaiju,
CardId.GamecieltheSeaTurtleKaiju,
CardId.RadiantheMultidimensionalKaiju,
CardId.OvertexCoatls,
CardId.SouleatingOviraptor,
CardId.UltimateConductorTytanno,
});
AI.SelectCard(CardId.GiantRex, CardId.DogorantheMadFlameKaiju, CardId.GamecieltheSeaTurtleKaiju, CardId.RadiantheMultidimensionalKaiju, CardId.OvertexCoatls, CardId.SouleatingOviraptor, CardId.UltimateConductorTytanno);
}
IList<int> targets2 = new[] {
CardId.GiantRex,
......@@ -479,42 +463,10 @@ namespace WindBot.Game.AI.Decks
};
if (Bot.HasInGraveyard(targets))
{
AI.SelectNextCard(new[] {
CardId.ShaddollBeast,
CardId.ShaddollDragon,
CardId.KeeperOfDragonicMagic,
CardId.ShaddollSquamata,
CardId.SouleatingOviraptor,
CardId.Raiden,
CardId.Lumina,
CardId.ShaddollHedgehog,
CardId.AshBlossom,
CardId.GhostOgre,
CardId.ShaddollFalco,
CardId.MaxxC,
CardId.PlaguespreaderZombie,
CardId.GlowUpBulb,
CardId.FairyTailSnow,
});
AI.SelectNextCard(CardId.ShaddollBeast, CardId.ShaddollDragon, CardId.KeeperOfDragonicMagic, CardId.ShaddollSquamata, CardId.SouleatingOviraptor, CardId.Raiden, CardId.Lumina, CardId.ShaddollHedgehog, CardId.AshBlossom, CardId.GhostOgre, CardId.ShaddollFalco, CardId.MaxxC, CardId.PlaguespreaderZombie, CardId.GlowUpBulb, CardId.FairyTailSnow);
}
else
AI.SelectNextCard(new[] {
CardId.ShaddollBeast,
CardId.ShaddollDragon,
CardId.KeeperOfDragonicMagic,
CardId.ShaddollSquamata,
CardId.SouleatingOviraptor,
CardId.Raiden,
CardId.Lumina,
CardId.ShaddollHedgehog,
CardId.AshBlossom,
CardId.GhostOgre,
CardId.ShaddollFalco,
CardId.MaxxC,
CardId.PlaguespreaderZombie,
CardId.GlowUpBulb,
CardId.FairyTailSnow,
});
AI.SelectNextCard(CardId.ShaddollBeast, CardId.ShaddollDragon, CardId.KeeperOfDragonicMagic, CardId.ShaddollSquamata, CardId.SouleatingOviraptor, CardId.Raiden, CardId.Lumina, CardId.ShaddollHedgehog, CardId.AshBlossom, CardId.GhostOgre, CardId.ShaddollFalco, CardId.MaxxC, CardId.PlaguespreaderZombie, CardId.GlowUpBulb, CardId.FairyTailSnow);
AI.SelectThirdCard(new[] {
CardId.UltimateConductorTytanno,
......@@ -745,23 +697,20 @@ namespace WindBot.Game.AI.Decks
if (deck_check)
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.ElShaddollConstruct,
CardId.ElShaddollShekhinaga,
CardId.ElShaddollGrysra,
CardId.ElShaddollWinda
});
AI.SelectNextCard(new[]
{
);
AI.SelectNextCard(
CardId.ShaddollSquamata,
CardId.ShaddollBeast,
CardId.ShaddollHedgehog,
CardId.ShaddollDragon,
CardId.ShaddollFalco,
CardId.FairyTailSnow,
});
CardId.FairyTailSnow
);
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
......@@ -841,15 +790,13 @@ namespace WindBot.Game.AI.Decks
{
if (DefaultBreakthroughSkill())
{
AI.SelectCard(new[]
{
CardId.ShaddollBeast,
CardId.ShaddollSquamata,
CardId.ShaddollHedgehog,
CardId.ShaddollDragon,
CardId.ShaddollFalco,
}
);
AI.SelectCard(
CardId.ShaddollBeast,
CardId.ShaddollSquamata,
CardId.ShaddollHedgehog,
CardId.ShaddollDragon,
CardId.ShaddollFalco
);
}
else
return false;
......@@ -925,15 +872,13 @@ namespace WindBot.Game.AI.Decks
return true;
else
{
AI.SelectCard(new[]
{
CardId.ElShaddollConstruct,
CardId.ElShaddollShekhinaga,
CardId.ElShaddollGrysra,
CardId.ElShaddollWinda,
CardId.ShaddollSquamata,
}
);
AI.SelectCard(
CardId.ElShaddollConstruct,
CardId.ElShaddollShekhinaga,
CardId.ElShaddollGrysra,
CardId.ElShaddollWinda,
CardId.ShaddollSquamata
);
}
return true;
......@@ -947,25 +892,28 @@ namespace WindBot.Game.AI.Decks
{
if (AI.Utils.ChainContainsCard(CardId.ElShaddollConstruct))
{
AI.SelectNextCard(new[]{
CardId.ShaddollFalco,
CardId.ShaddollSquamata,
CardId.ShaddollDragon,
});
AI.SelectNextCard(
CardId.ShaddollFalco,
CardId.ShaddollSquamata,
CardId.ShaddollDragon
);
}
else
{
AI.SelectCard(new[]{
CardId.ShaddollSquamata,
CardId.ShaddollDragon,
});
AI.SelectCard(
CardId.ShaddollSquamata,
CardId.ShaddollDragon
);
}
}
else
{
AI.SelectCard(new[] { CardId.ShaddollFusion, CardId.SinisterShadowGames });
AI.SelectCard(
CardId.ShaddollFusion,
CardId.SinisterShadowGames
);
}
return true;
}
......@@ -1018,11 +966,7 @@ namespace WindBot.Game.AI.Decks
}
else
{
AI.SelectCard(new[]
{
CardId.ShaddollSquamata,
CardId.FairyTailSnow,
});
AI.SelectCard(CardId.ShaddollSquamata, CardId.FairyTailSnow);
}
return true;
}
......@@ -1153,7 +1097,12 @@ namespace WindBot.Game.AI.Decks
{
CrystronNeedlefibereff_used = true;
AI.SelectCard(new[] { CardId.GhostOgre, CardId.GlowUpBulb, CardId.PlaguespreaderZombie, CardId.ShaddollFalco });
AI.SelectCard(
CardId.GhostOgre,
CardId.GlowUpBulb,
CardId.PlaguespreaderZombie,
CardId.ShaddollFalco
);
return true;
}
......
......@@ -292,39 +292,43 @@ namespace WindBot.Game.AI.Decks
{
if(Bot.HasInGraveyard(CardId.PacifisThePhantasmCity) && !Bot.HasInHandOrInSpellZone(CardId.SeaStealthAttack))
{
AI.SelectCard(new[] {
CardId.SeaStealthAttack,
CardId.PacifisThePhantasmCity,
CardId.Terraforming,
CardId.Metaverse,
CardId.CardOfDemise,
CardId.Scapegoat});
AI.SelectCard(
CardId.SeaStealthAttack,
CardId.PacifisThePhantasmCity,
CardId.Terraforming,
CardId.Metaverse,
CardId.CardOfDemise,
CardId.Scapegoat
);
}
else
{
AI.SelectCard(new[] {
CardId.PacifisThePhantasmCity,
CardId.Terraforming,
CardId.Metaverse,
CardId.CardOfDemise,
CardId.Scapegoat});
AI.SelectCard(
CardId.PacifisThePhantasmCity,
CardId.Terraforming,
CardId.Metaverse,
CardId.CardOfDemise,
CardId.Scapegoat
);
}
}
else if(!Bot.HasInHandOrInSpellZone(CardId.SeaStealthAttack))
{
AI.SelectCard(new[] {
CardId.SeaStealthAttack,
CardId.CardOfDemise,
CardId.PotOfDesires,
CardId.Scapegoat});
AI.SelectCard(
CardId.SeaStealthAttack,
CardId.CardOfDemise,
CardId.PotOfDesires,
CardId.Scapegoat
);
}
else
{
AI.SelectCard(new[] {
CardId.CardOfDemise,
CardId.PotOfDesires,
CardId.Scapegoat});
AI.SelectCard(
CardId.CardOfDemise,
CardId.PotOfDesires,
CardId.Scapegoat
);
}
return true;
}
......@@ -460,12 +464,13 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> material_list = new List<ClientCard>();
if(Bot.HasInExtra(CardId.BorreloadDragon))
{
AI.SelectCard(new[] {
CardId.TopologicBomberDragon,
CardId.TopologicTrisbaena,
CardId.KnightmareGryphon,
CardId.SummonSorceress,
CardId.BorreloadDragon});
AI.SelectCard(
CardId.TopologicBomberDragon,
CardId.TopologicTrisbaena,
CardId.KnightmareGryphon,
CardId.SummonSorceress,
CardId.BorreloadDragon
);
}
else
{
......
......@@ -166,19 +166,18 @@ namespace WindBot.Game.AI.Decks
private bool PotOfDualityEffect()
{
AI.SelectCard(new[]
{
CardId.Scout,
CardId.SkillDrain,
CardId.VanitysEmptiness,
CardId.DimensionalBarrier,
CardId.Stealth,
CardId.Shell,
CardId.Helix,
CardId.Carrier,
CardId.SolemnStrike,
CardId.CardOfDemise
});
AI.SelectCard(
CardId.Scout,
CardId.SkillDrain,
CardId.VanitysEmptiness,
CardId.DimensionalBarrier,
CardId.Stealth,
CardId.Shell,
CardId.Helix,
CardId.Carrier,
CardId.SolemnStrike,
CardId.CardOfDemise
);
return !ShouldPendulum();
}
......@@ -304,12 +303,7 @@ namespace WindBot.Game.AI.Decks
}
else if (handcount>0 || fieldcount>0)
{
AI.SelectCard(new[]
{
CardId.Saqlifice,
CardId.Shell,
CardId.Helix
});
AI.SelectCard(CardId.Saqlifice, CardId.Shell, CardId.Helix);
}
else
{
......
......@@ -179,12 +179,11 @@ namespace WindBot.Game.AI.Decks
private bool UnexpectedDaiEffect()
{
if (Bot.HasInHand(CardId.RescueRabbit) || NormalSummoned)
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.MysteryShellDragon,
CardId.PhantomGryphon,
CardId.MegalosmasherX
});
);
else if (AI.Utils.IsTurn1OrMain2())
{
if (Bot.HasInHand(CardId.MysteryShellDragon))
......@@ -203,11 +202,7 @@ namespace WindBot.Game.AI.Decks
else if (Bot.HasInHand(CardId.PhantomGryphon))
AI.SelectCard(CardId.PhantomGryphon);
else if (Bot.HasInHand(CardId.AngelTrumpeter))
AI.SelectCard(new[]
{
CardId.MetalfoesGoldriver,
CardId.MasterPendulumTheDracoslayer
});
AI.SelectCard(CardId.MetalfoesGoldriver, CardId.MasterPendulumTheDracoslayer);
}
return true;
}
......@@ -216,22 +211,20 @@ namespace WindBot.Game.AI.Decks
{
if (AI.Utils.IsTurn1OrMain2())
{
AI.SelectCard(new[]
{
CardId.MegalosmasherX,
CardId.MysteryShellDragon
});
AI.SelectCard(
CardId.MegalosmasherX,
CardId.MysteryShellDragon
);
}
else
{
AI.SelectCard(new[]
{
CardId.MasterPendulumTheDracoslayer,
CardId.PhantomGryphon,
CardId.MegalosmasherX,
CardId.MetalfoesGoldriver,
CardId.AngelTrumpeter
});
AI.SelectCard(
CardId.MasterPendulumTheDracoslayer,
CardId.PhantomGryphon,
CardId.MegalosmasherX,
CardId.MetalfoesGoldriver,
CardId.AngelTrumpeter
);
}
return true;
}
......
......@@ -147,17 +147,16 @@ namespace WindBot.Game.AI.Decks
{
if (!NeedLV5())
return false;
AI.SelectCard(new[]
{
CardId.QuickdrawSynchron,
CardId.ZWEagleClaw,
CardId.SolarWindJammer,
CardId.CyberDragon,
CardId.MistArchfiend,
CardId.WindUpSoldier,
CardId.StarDrawing,
CardId.ChronomalyGoldenJet
});
AI.SelectCard(
CardId.QuickdrawSynchron,
CardId.ZWEagleClaw,
CardId.SolarWindJammer,
CardId.CyberDragon,
CardId.MistArchfiend,
CardId.WindUpSoldier,
CardId.StarDrawing,
CardId.ChronomalyGoldenJet
);
return true;
}
......@@ -333,14 +332,13 @@ namespace WindBot.Game.AI.Decks
{
if (!UniqueFaceupSpell())
return false;
AI.SelectCard(new[]
{
CardId.CyberDragonInfinity,
CardId.CyberDragonNova,
CardId.TirasKeeperOfGenesis,
CardId.SharkFortress,
CardId.Number61Volcasaurus
});
AI.SelectCard(
CardId.CyberDragonInfinity,
CardId.CyberDragonNova,
CardId.TirasKeeperOfGenesis,
CardId.SharkFortress,
CardId.Number61Volcasaurus
);
return true;
}
......
......@@ -175,12 +175,12 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> targets = Enemy.GetSpells();
if (targets.Count > 0)
{
AI.SelectCard(new[]{
AI.SelectCard(
CardId.DualAssembloom,
CardId.Bitron,
CardId.Digitron,
CardId.RecodedAlive
});
);
AI.SelectNextCard(targets);
return true;
}
......@@ -306,14 +306,13 @@ namespace WindBot.Game.AI.Decks
}
if (selected)
{
AI.SelectNextCard(new[]
{
AI.SelectNextCard(
CardId.ROMCloudia,
CardId.BalancerLord,
CardId.Kleinant,
CardId.Draconnet,
CardId.Backlinker
});
);
return true;
}
return false;
......@@ -360,24 +359,24 @@ namespace WindBot.Game.AI.Decks
{
if (Card.Location == CardLocation.MonsterZone)
{
AI.SelectCard(new[]{
AI.SelectCard(
CardId.BootStagguard,
CardId.BalancerLord,
CardId.Kleinant,
CardId.Linkslayer,
CardId.Draconnet,
CardId.RAMClouder
});
);
return true;
}
else
{
AI.SelectCard(new[]{
AI.SelectCard(
CardId.BalancerLord,
CardId.Kleinant,
CardId.RAMClouder,
CardId.DotScaper
});
);
return true;
}
}
......@@ -429,28 +428,28 @@ namespace WindBot.Game.AI.Decks
private bool RAMClouderEffect()
{
AI.SelectCard(new[]{
CardId.StagToken,
CardId.Bitron,
CardId.Digitron,
CardId.DotScaper,
CardId.Draconnet,
CardId.Backlinker,
CardId.RAMClouder
});
AI.SelectNextCard(new[]{
CardId.DecodeTalker,
CardId.EncodeTalker,
CardId.TriGateWizard,
CardId.BinarySorceress,
CardId.Honeybot,
CardId.DualAssembloom,
CardId.BootStagguard,
CardId.BalancerLord,
CardId.ROMCloudia,
CardId.Linkslayer,
CardId.RAMClouder
});
AI.SelectCard(
CardId.StagToken,
CardId.Bitron,
CardId.Digitron,
CardId.DotScaper,
CardId.Draconnet,
CardId.Backlinker,
CardId.RAMClouder
);
AI.SelectNextCard(
CardId.DecodeTalker,
CardId.EncodeTalker,
CardId.TriGateWizard,
CardId.BinarySorceress,
CardId.Honeybot,
CardId.DualAssembloom,
CardId.BootStagguard,
CardId.BalancerLord,
CardId.ROMCloudia,
CardId.Linkslayer,
CardId.RAMClouder
);
return true;
}
......
......@@ -229,12 +229,12 @@ namespace WindBot.Game.AI.Decks
private bool FoolishBurialGoodsEffect()
{
AI.SelectCard(new[]{
AI.SelectCard(
CardId.MetalfoesFusion,
CardId.WidowAnchor,
CardId.Engage,
CardId.HornetDrones
});
);
return true;
}
......@@ -312,13 +312,13 @@ namespace WindBot.Game.AI.Decks
if (target > 0)
AI.SelectCard(target);
else
AI.SelectCard(new[] {
AI.SelectCard(
CardId.Multirole,
CardId.AreaZero,
CardId.Afterburners,
CardId.JammingWave,
CardId.Raye
});
);
return true;
}
......@@ -330,13 +330,13 @@ namespace WindBot.Game.AI.Decks
if (target > 0)
AI.SelectCard(target);
else
AI.SelectCard(new[] {
AI.SelectCard(
CardId.Multirole,
CardId.AreaZero,
CardId.Afterburners,
CardId.JammingWave,
CardId.Raye
});
);
return true;
}
......@@ -562,11 +562,7 @@ namespace WindBot.Game.AI.Decks
}
else
{
AI.SelectCard(new[] {
CardId.Shizuku,
CardId.Kagari,
CardId.Hayate
});
AI.SelectCard(CardId.Shizuku, CardId.Kagari, CardId.Hayate);
}
}
......@@ -595,11 +591,7 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.JammingWave);
}
else
AI.SelectCard(new[] {
CardId.Engage,
CardId.HornetDrones,
CardId.WidowAnchor
});
AI.SelectCard(CardId.Engage, CardId.HornetDrones, CardId.WidowAnchor);
return true;
}
......@@ -619,11 +611,7 @@ namespace WindBot.Game.AI.Decks
if (target != 0)
AI.SelectCard(target);
else
AI.SelectCard(new[] {
CardId.Engage,
CardId.HornetDrones,
CardId.WidowAnchor
});
AI.SelectCard(CardId.Engage, CardId.HornetDrones, CardId.WidowAnchor);
return true;
}
......
......@@ -138,28 +138,26 @@ namespace WindBot.Game.AI.Decks
}
else
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
});
);
}
return true;
}
private bool SurfaceEffect()
{
AI.SelectCard(new[]
{
CardId.ToadallyAwesome,
CardId.HeraldOfTheArcLight,
CardId.SwapFrog,
CardId.DewdarkOfTheIceBarrier,
CardId.CryomancerOfTheIceBarrier,
CardId.DupeFrog,
CardId.Ronintoadin,
CardId.GraydleSlimeJr
});
AI.SelectCard(
CardId.ToadallyAwesome,
CardId.HeraldOfTheArcLight,
CardId.SwapFrog,
CardId.DewdarkOfTheIceBarrier,
CardId.CryomancerOfTheIceBarrier,
CardId.DupeFrog,
CardId.Ronintoadin,
CardId.GraydleSlimeJr
);
return true;
}
......@@ -182,27 +180,25 @@ namespace WindBot.Game.AI.Decks
else if (Bot.HasInGraveyard(CardId.DupeFrog) && !Bot.HasInGraveyard(CardId.Ronintoadin))
AI.SelectCard(CardId.Ronintoadin);
else
AI.SelectCard(new[]
{
CardId.GraydleSlimeJr,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.SwapFrog
});
AI.SelectCard(
CardId.GraydleSlimeJr,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.SwapFrog
);
return true;
}
private bool SalvageEffect()
{
AI.SelectCard(new[]
{
CardId.SwapFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
});
AI.SelectCard(
CardId.SwapFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
);
return true;
}
......@@ -215,16 +211,15 @@ namespace WindBot.Game.AI.Decks
else if (Bot.HasInGraveyard(CardId.DupeFrog) && !Bot.HasInGraveyard(CardId.Ronintoadin))
AI.SelectCard(CardId.Ronintoadin);
else
AI.SelectCard(new[]
{
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr,
CardId.SwapFrog
});
AI.SelectCard(
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr,
CardId.SwapFrog
);
return true;
}
......@@ -238,12 +233,11 @@ namespace WindBot.Game.AI.Decks
{
if (Bot.HasInHand(CardId.DupeFrog))
{
AI.SelectCard(new[]
{
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr,
CardId.SwapFrog
});
AI.SelectCard(
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr,
CardId.SwapFrog
);
return true;
}
}
......@@ -259,16 +253,15 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(CardId.GraydleSlimeJr);
AI.SelectPosition(CardPosition.FaceUpDefence);
AI.SelectNextCard(new[]
{
CardId.SwapFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
});
AI.SelectNextCard(
CardId.SwapFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
);
return true;
}
......@@ -378,12 +371,11 @@ namespace WindBot.Game.AI.Decks
}
else
{
AI.SelectCard(new[]
{
CardId.SwapFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
});
AI.SelectCard(
CardId.SwapFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
);
}
return true;
}
......@@ -392,27 +384,25 @@ namespace WindBot.Game.AI.Decks
SelectXYZDetach(Card.Overlays);
if (Duel.Player == 0)
{
AI.SelectNextCard(new[]
{
CardId.SwapFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.GraydleSlimeJr
});
AI.SelectNextCard(
CardId.SwapFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.GraydleSlimeJr
);
}
else
{
AI.SelectNextCard(new[]
{
CardId.DupeFrog,
CardId.SwapFrog,
CardId.Ronintoadin,
CardId.GraydleSlimeJr,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
});
AI.SelectNextCard(
CardId.DupeFrog,
CardId.SwapFrog,
CardId.Ronintoadin,
CardId.GraydleSlimeJr,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
);
AI.SelectPosition(CardPosition.FaceUpDefence);
}
return true;
......@@ -566,16 +556,15 @@ namespace WindBot.Game.AI.Decks
else if (Overlays.Contains(CardId.Ronintoadin) && Bot.HasInGraveyard(CardId.DupeFrog) && !Bot.HasInGraveyard(CardId.Ronintoadin))
AI.SelectCard(CardId.Ronintoadin);
else
AI.SelectCard(new[]
{
CardId.GraydleSlimeJr,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.SwapFrog
});
AI.SelectCard(
CardId.GraydleSlimeJr,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.SwapFrog
);
}
}
}
......@@ -431,14 +431,7 @@ namespace WindBot.Game.AI.Decks
// tuner ss
if (ActivateDescription == -1)
{
AI.SelectCard(new[]
{
CardId.Ghost,
CardId.TG,
CardId.Tuner,
CardId.Urara,
CardId.BF
});
AI.SelectCard(CardId.Ghost, CardId.TG, CardId.Tuner, CardId.Urara, CardId.BF);
return true;
};
// counter
......@@ -576,62 +569,31 @@ namespace WindBot.Game.AI.Decks
{
if (!Bot.HasInHand(CardId.Yellow))
{
AI.SelectCard(new[]
{
CardId.Yellow,
CardId.Pink,
CardId.Red,
CardId.White
});
AI.SelectCard(CardId.Yellow, CardId.Pink, CardId.Red, CardId.White);
stage_locked = null;
return true;
}
else if (Enemy.LifePoints <= 1000 && Bot.GetRemainingCount(CardId.Pink,1) > 0)
{
AI.SelectCard(new[]
{
CardId.Pink,
CardId.Yellow,
CardId.Red,
CardId.White
});
AI.SelectCard(CardId.Pink, CardId.Yellow, CardId.Red, CardId.White);
stage_locked = null;
return true;
}
else if (Bot.HasInHand(CardId.Yellow) && ! Bot.HasInHand(CardId.Red))
{
AI.SelectCard(new[]
{
CardId.Red,
CardId.Pink,
CardId.Yellow,
CardId.White
});
AI.SelectCard(CardId.Red, CardId.Pink, CardId.Yellow, CardId.White);
stage_locked = null;
return true;
}
else if (Enemy.GetMonsterCount() > 0 && AI.Utils.GetBestEnemyMonster().Attack >= AI.Utils.GetBestAttack(Bot))
{
AI.SelectCard(new[]
{
CardId.White,
CardId.Yellow,
CardId.Pink,
CardId.Red
});
AI.SelectCard(CardId.White, CardId.Yellow, CardId.Pink, CardId.Red);
stage_locked = null;
return true;
}
else if (!Bot.HasInSpellZone(CardId.Stage))
{
AI.SelectCard(new[]
{
CardId.Yellow,
CardId.Pink,
CardId.Red,
CardId.White
});
AI.SelectCard(CardId.Yellow, CardId.Pink, CardId.Red, CardId.White);
stage_locked = null;
return true;
}
......@@ -642,47 +604,23 @@ namespace WindBot.Game.AI.Decks
{
if (Enemy.LifePoints <= 1000 && !pink_ss && Bot.GetRemainingCount(CardId.Pink,1) > 0)
{
AI.SelectCard(new[]
{
CardId.Pink,
CardId.Yellow,
CardId.Red,
CardId.White
});
AI.SelectCard(CardId.Pink, CardId.Yellow, CardId.Red, CardId.White);
stage_locked = null;
return true;
}
if (Enemy.GetMonsterCount() > 0 && AI.Utils.GetBestEnemyMonster().Attack >= AI.Utils.GetBestAttack(Bot) && !Bot.HasInHand(CardId.White))
{
AI.SelectCard(new[]
{
CardId.White,
CardId.Yellow,
CardId.Pink,
CardId.Red
});
AI.SelectCard(CardId.White, CardId.Yellow, CardId.Pink, CardId.Red);
stage_locked = null;
return true;
}
if (Bot.HasInMonstersZone(CardId.Yellow) && !Bot.HasInHand(CardId.Red))
{
AI.SelectCard(new[]
{
CardId.Red,
CardId.Pink,
CardId.Yellow,
CardId.White
});
AI.SelectCard(CardId.Red, CardId.Pink, CardId.Yellow, CardId.White);
stage_locked = null;
return true;
}
AI.SelectCard(new[]
{
CardId.Yellow,
CardId.Pink,
CardId.Red,
CardId.White
});
AI.SelectCard(CardId.Yellow, CardId.Pink, CardId.Red, CardId.White);
stage_locked = null;
return true;
}
......@@ -744,21 +682,11 @@ namespace WindBot.Game.AI.Decks
{
if (!NormalSummoned && Bot.HasInGraveyard(CardId.Yellow))
{
AI.SelectCard(new[]
{
CardId.Yellow,
CardId.Red,
CardId.White
});
AI.SelectCard(CardId.Yellow, CardId.Red, CardId.White);
return true;
} else
{
AI.SelectCard(new[]
{
CardId.Red,
CardId.Yellow,
CardId.White
});
AI.SelectCard(CardId.Red, CardId.Yellow, CardId.White);
return true;
}
}
......@@ -934,46 +862,19 @@ namespace WindBot.Game.AI.Decks
{
if (!Bot.HasInHand(CardId.Stage) && !Bot.HasInSpellZone(CardId.Stage) && Bot.GetRemainingCount(CardId.Stage, 3) > 0)
{
AI.SelectCard(new[]
{
CardId.Stage,
CardId.Red,
CardId.White,
CardId.Pink,
CardId.Re,
CardId.Crown,
CardId.Yellow
});
AI.SelectCard(CardId.Stage, CardId.Red, CardId.White, CardId.Pink, CardId.Re, CardId.Crown, CardId.Yellow);
return true;
}
if (Enemy.LifePoints <= 1000)
{
if (Bot.GetRemainingCount(CardId.Pink, 1) > 0 && !pink_ss)
{
AI.SelectCard(new[]
{
CardId.Pink,
CardId.Stage,
CardId.Red,
CardId.White,
CardId.Re,
CardId.Crown,
CardId.Yellow
});
AI.SelectCard(CardId.Pink, CardId.Stage, CardId.Red, CardId.White, CardId.Re, CardId.Crown, CardId.Yellow);
return true;
}
else if (Bot.HasInGraveyard(CardId.Pink) && Bot.GetRemainingCount(CardId.Crown, 1) > 0)
{
AI.SelectCard(new[]
{
CardId.Crown,
CardId.Pink,
CardId.Re,
CardId.Stage,
CardId.Red,
CardId.White,
CardId.Yellow
});
AI.SelectCard(CardId.Crown, CardId.Pink, CardId.Re, CardId.Stage, CardId.Red, CardId.White, CardId.Yellow);
return true;
}
}
......@@ -981,68 +882,23 @@ namespace WindBot.Game.AI.Decks
{
if (Bot.HasInGraveyard(CardId.Red) && Bot.GetRemainingCount(CardId.Pink, 1) > 0 && !pink_ss)
{
AI.SelectCard(new[]
{
CardId.Pink,
CardId.Red,
CardId.White,
CardId.Re,
CardId.Stage,
CardId.Crown,
CardId.Yellow
});
AI.SelectCard(CardId.Pink, CardId.Red, CardId.White, CardId.Re, CardId.Stage, CardId.Crown, CardId.Yellow);
}
else if (Bot.HasInGraveyard(CardId.Pink) && Bot.HasInGraveyard(CardId.Red) && Bot.GetRemainingCount(CardId.Ring, 1) > 0)
{
AI.SelectCard(new[]
{
CardId.Crown,
CardId.Red,
CardId.White,
CardId.Re,
CardId.Stage,
CardId.Pink,
CardId.Yellow
});
AI.SelectCard(CardId.Crown, CardId.Red, CardId.White, CardId.Re, CardId.Stage, CardId.Pink, CardId.Yellow);
}
else if (Bot.GetRemainingCount(CardId.White, 2) > 0 && Enemy.LifePoints <= 4000)
{
AI.SelectCard(new[]
{
CardId.White,
CardId.Red,
CardId.Pink,
CardId.Re,
CardId.Stage,
CardId.Crown,
CardId.Yellow
});
AI.SelectCard(CardId.White, CardId.Red, CardId.Pink, CardId.Re, CardId.Stage, CardId.Crown, CardId.Yellow);
}
else if (Bot.HasInGraveyard(CardId.White) && Bot.GetRemainingCount(CardId.Crown, 1) > 0)
{
AI.SelectCard(new[]
{
CardId.Crown,
CardId.Red,
CardId.Pink,
CardId.Re,
CardId.Stage,
CardId.White,
CardId.Yellow
});
AI.SelectCard(CardId.Crown, CardId.Red, CardId.Pink, CardId.Re, CardId.Stage, CardId.White, CardId.Yellow);
}
else
{
AI.SelectCard(new[]
{
CardId.Red,
CardId.Pink,
CardId.Re,
CardId.Crown,
CardId.Stage,
CardId.White,
CardId.Yellow
});
AI.SelectCard(CardId.Red, CardId.Pink, CardId.Re, CardId.Crown, CardId.Stage, CardId.White, CardId.Yellow);
}
return true;
}
......@@ -1051,55 +907,19 @@ namespace WindBot.Game.AI.Decks
int power = AI.Utils.GetProblematicEnemyMonster().GetDefensePower();
if (power >= 1800 && power <= 3600 && Bot.GetRemainingCount(CardId.White, 2) > 0 && !Bot.HasInHand(CardId.White))
{
AI.SelectCard(new[]
{
CardId.White,
CardId.Red,
CardId.Pink,
CardId.Re,
CardId.Stage,
CardId.Crown,
CardId.Yellow
});
AI.SelectCard(CardId.White, CardId.Red, CardId.Pink, CardId.Re, CardId.Stage, CardId.Crown, CardId.Yellow);
}
else
{
AI.SelectCard(new[]
{
CardId.Red,
CardId.Pink,
CardId.Re,
CardId.Crown,
CardId.Stage,
CardId.White,
CardId.Yellow
});
AI.SelectCard(CardId.Red, CardId.Pink, CardId.Re, CardId.Crown, CardId.Stage, CardId.White, CardId.Yellow);
}
return true;
}
if ((Bot.HasInHand(CardId.Red) || Bot.HasInHand(CardId.Stage) || Bot.HasInHand(CardId.Yellow)) && Bot.GetRemainingCount(CardId.Re,1) > 0) {
AI.SelectCard(new[]
{
CardId.Re,
CardId.Red,
CardId.White,
CardId.Crown,
CardId.Pink,
CardId.Stage,
CardId.Yellow
});
AI.SelectCard(CardId.Re, CardId.Red, CardId.White, CardId.Crown, CardId.Pink, CardId.Stage, CardId.Yellow);
return true;
}
AI.SelectCard(new[]
{
CardId.Red,
CardId.Pink,
CardId.Re,
CardId.Crown,
CardId.Stage,
CardId.White,
CardId.Yellow
});
AI.SelectCard(CardId.Red, CardId.Pink, CardId.Re, CardId.Crown, CardId.Stage, CardId.White, CardId.Yellow);
return true;
}
......@@ -1239,26 +1059,14 @@ namespace WindBot.Game.AI.Decks
}
else
{
AI.SelectCard(new[]
{
CardId.Red,
CardId.White,
CardId.Yellow,
CardId.Pink
});
AI.SelectCard(CardId.Red, CardId.White, CardId.Yellow, CardId.Pink);
return true;
}
}
else
{
AI.SelectCard(new[]
{
CardId.Red,
CardId.White,
CardId.Yellow,
CardId.Pink
});
AI.SelectCard(CardId.Red, CardId.White, CardId.Yellow, CardId.Pink);
return true;
}
}
......@@ -1364,7 +1172,7 @@ namespace WindBot.Game.AI.Decks
public bool Linkuri_eff()
{
if (Duel.LastChainPlayer == 0 && AI.Utils.GetLastChainCard().IsCode(CardId.Linkuri)) return false;
AI.SelectCard(new[] { CardId.Tuner, CardId.BF + 1 });
AI.SelectCard(CardId.Tuner, CardId.BF + 1);
return true;
}
......@@ -1373,10 +1181,7 @@ namespace WindBot.Game.AI.Decks
if (crystal_eff_used) return false;
if (Bot.HasInMonstersZone(CardId.BF) && Bot.HasInMonstersZone(CardId.BF + 1))
{
AI.SelectCard(new[]
{CardId.BF,
CardId.BF + 1
});
AI.SelectCard(CardId.BF, CardId.BF + 1);
return true;
}
foreach(ClientCard extra_card in Bot.GetMonstersInExtraZone())
......@@ -1415,7 +1220,7 @@ namespace WindBot.Game.AI.Decks
if (Duel.Player == 0)
{
crystal_eff_used = true;
AI.SelectCard(new[] { CardId.Tuner, CardId.Ghost , CardId.Urara});
AI.SelectCard(CardId.Tuner, CardId.Ghost, CardId.Urara);
return true;
}
else if (AI.Utils.IsChainTarget(Card) || AI.Utils.GetProblematicEnemySpell() != null) return true;
......@@ -1734,12 +1539,7 @@ namespace WindBot.Game.AI.Decks
public bool Missus_eff()
{
AI.SelectCard(new[]
{
CardId.MG,
CardId.Missus,
CardId.Snake
});
AI.SelectCard(CardId.MG, CardId.Missus, CardId.Snake);
return true;
}
......
......@@ -189,8 +189,7 @@ namespace WindBot.Game.AI.Decks
{
if (CardOfDemiseUsed)
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.StarlightRoad,
CardId.MagicDrain,
CardId.SolemnJudgment,
......@@ -202,12 +201,11 @@ namespace WindBot.Game.AI.Decks
CardId.SolemnWarning,
CardId.MacroCosmos,
CardId.CardOfDemise
});
);
}
else
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.YosenjuKama3,
CardId.YosenjuKama1,
CardId.YosenjuKama2,
......@@ -221,8 +219,8 @@ namespace WindBot.Game.AI.Decks
CardId.SolemnJudgment,
CardId.SolemnWarning,
CardId.MacroCosmos,
CardId.CardOfDemise,
});
CardId.CardOfDemise
);
}
return true;
}
......@@ -272,12 +270,7 @@ namespace WindBot.Game.AI.Decks
// Don't activate the return to hand effect first
if (Duel.Phase == DuelPhase.End)
return false;
AI.SelectCard(new[]
{
CardId.YosenjuKama1,
CardId.YosenjuKama2,
CardId.YosenjuKama3
});
AI.SelectCard(CardId.YosenjuKama1, CardId.YosenjuKama2, CardId.YosenjuKama3);
return true;
}
......
......@@ -170,14 +170,13 @@ namespace WindBot.Game.AI.Decks
private bool ReinforcementOfTheArmy()
{
AI.SelectCard(new[]
{
CardId.Goblindbergh,
CardId.TinGoldfish,
CardId.StarDrawing,
CardId.Kagetokage,
CardId.SacredCrane
});
AI.SelectCard(
CardId.Goblindbergh,
CardId.TinGoldfish,
CardId.StarDrawing,
CardId.Kagetokage,
CardId.SacredCrane
);
return true;
}
......@@ -224,13 +223,12 @@ namespace WindBot.Game.AI.Decks
private bool GoblindberghEffect()
{
AI.SelectCard(new[]
{
CardId.SacredCrane,
CardId.HeroicChallengerExtraSword,
CardId.StarDrawing,
CardId.SummonerMonk
});
AI.SelectCard(
CardId.SacredCrane,
CardId.HeroicChallengerExtraSword,
CardId.StarDrawing,
CardId.SummonerMonk
);
return true;
}
......@@ -253,13 +251,12 @@ namespace WindBot.Game.AI.Decks
if (Bot.HasInHand(costs))
{
AI.SelectCard(costs);
AI.SelectNextCard(new[]
{
AI.SelectNextCard(
CardId.SacredCrane,
CardId.StarDrawing,
CardId.Goblindbergh,
CardId.TinGoldfish
});
);
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
......
......@@ -270,20 +270,18 @@ namespace WindBot.Game.AI.Decks
{
if (Bot.HasInGraveyard(CardId.Whiptail) || Bot.HasInGraveyard(CardId.Thoroughblade))
{
AI.SelectCard(new[]
{
AI.SelectCard(
CardId.Broadbull,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Thoroughblade,
CardId.Ratpier,
CardId.Whiptail
});
AI.SelectNextCard(new[]
{
);
AI.SelectNextCard(
CardId.Whiptail,
CardId.Thoroughblade
});
);
return true;
}
return false;
......@@ -336,12 +334,7 @@ namespace WindBot.Game.AI.Decks
// return false;
AI.SelectCard(CardId.Chakanine);
AI.SelectNextCard(CardId.Tigermortar);
AI.SelectThirdCard(new[]
{
CardId.Ratpier,
CardId.Whiptail,
CardId.Thoroughblade
});
AI.SelectThirdCard(CardId.Ratpier, CardId.Whiptail, CardId.Thoroughblade);
return true;
}
......@@ -384,14 +377,13 @@ namespace WindBot.Game.AI.Decks
private bool BroadbullEffect()
{
AI.SelectCard(new[]
{
CardId.Tigermortar,
CardId.Chakanine,
CardId.Drident,
CardId.AleisterTheInvoker,
CardId.PhotonThrasher
});
AI.SelectCard(
CardId.Tigermortar,
CardId.Chakanine,
CardId.Drident,
CardId.AleisterTheInvoker,
CardId.PhotonThrasher
);
if (Bot.HasInHand(CardId.Whiptail) && !Bot.HasInHand(CardId.Ratpier))
AI.SelectNextCard(CardId.Ratpier);
else
......@@ -475,12 +467,11 @@ namespace WindBot.Game.AI.Decks
private bool RatpierEffect()
{
AI.SelectCard(new[]
{
CardId.ZoodiacCombo,
CardId.Thoroughblade,
CardId.ZoodiacBarrage
});
AI.SelectCard(
CardId.ZoodiacCombo,
CardId.Thoroughblade,
CardId.ZoodiacBarrage
);
return true;
}
......@@ -491,15 +482,14 @@ namespace WindBot.Game.AI.Decks
ClientCard target = AI.Utils.GetBestEnemyCard(true);
if (target == null)
return false;
AI.SelectCard(new[]
{
CardId.Broadbull,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Thoroughblade,
CardId.Ratpier,
CardId.Whiptail
});
AI.SelectCard(
CardId.Broadbull,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Thoroughblade,
CardId.Ratpier,
CardId.Whiptail
);
AI.SelectNextCard(target);
return true;
}
......@@ -516,17 +506,15 @@ namespace WindBot.Game.AI.Decks
private bool DaigustoEmeralEffect()
{
AI.SelectCard(new[]
{
CardId.Ratpier,
CardId.AleisterTheInvoker,
CardId.Whiptail
});
AI.SelectNextCard(new[]
{
CardId.Ratpier,
CardId.DaigustoEmeral
});
AI.SelectCard(
CardId.Ratpier,
CardId.AleisterTheInvoker,
CardId.Whiptail
);
AI.SelectNextCard(
CardId.Ratpier,
CardId.DaigustoEmeral
);
return true;
}
......@@ -553,18 +541,16 @@ namespace WindBot.Game.AI.Decks
if (spell.IsCode(CardId.ZoodiacBarrage) && !Card.Equals(spell))
return false;
}
AI.SelectCard(new[]
{
CardId.FireFormationTenki,
CardId.MagicalMeltdown,
CardId.ZoodiacBarrage
});
AI.SelectNextCard(new[]
{
CardId.Ratpier,
CardId.Whiptail,
CardId.Thoroughblade
});
AI.SelectCard(
CardId.FireFormationTenki,
CardId.MagicalMeltdown,
CardId.ZoodiacBarrage
);
AI.SelectNextCard(
CardId.Ratpier,
CardId.Whiptail,
CardId.Thoroughblade
);
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
......@@ -576,29 +562,27 @@ namespace WindBot.Game.AI.Decks
if (Card.Location != CardLocation.Grave)
{
AI.SelectCard(CardId.Drident);
AI.SelectNextCard(new[]
{
AI.SelectNextCard(
CardId.Whiptail,
CardId.Ratpier,
CardId.Thoroughblade
});
);
}
return true;
}
private bool MonsterRebornEffect()
{
AI.SelectCard(new[]
{
CardId.Ratpier,
CardId.Whiptail,
CardId.InvokedMechaba,
CardId.JizukirutheStarDestroyingKaiju,
CardId.InvokedMagellanica,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Broadbull
});
AI.SelectCard(
CardId.Ratpier,
CardId.Whiptail,
CardId.InvokedMechaba,
CardId.JizukirutheStarDestroyingKaiju,
CardId.InvokedMagellanica,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Broadbull
);
return true;
}
......
......@@ -362,7 +362,7 @@ namespace WindBot.Game.AI
if (DefaultOnBecomeTarget()) return true;
if (Duel.Phase > DuelPhase.Main1 && Duel.Phase < DuelPhase.Main2)
{
if (Enemy.HasInMonstersZone(new []
if (Enemy.HasInMonstersZone(new[]
{
_CardId.UltimateConductorTytanno,
_CardId.InvokedPurgatrio,
......@@ -863,42 +863,38 @@ namespace WindBot.Game.AI
{
if (Card.Location == CardLocation.Grave)
{
AI.SelectCard(new[]
{
AI.SelectCard(
_CardId.GamecieltheSeaTurtleKaiju,
_CardId.KumongoustheStickyStringKaiju,
_CardId.GadarlatheMysteryDustKaiju,
_CardId.RadiantheMultidimensionalKaiju,
_CardId.DogorantheMadFlameKaiju,
_CardId.ThunderKingtheLightningstrikeKaiju,
_CardId.JizukirutheStarDestroyingKaiju,
});
_CardId.JizukirutheStarDestroyingKaiju
);
return true;
}
if (DefaultDarkHole())
{
AI.SelectCard(new[]
{
AI.SelectCard(
_CardId.JizukirutheStarDestroyingKaiju,
_CardId.ThunderKingtheLightningstrikeKaiju,
_CardId.DogorantheMadFlameKaiju,
_CardId.RadiantheMultidimensionalKaiju,
_CardId.GadarlatheMysteryDustKaiju,
_CardId.KumongoustheStickyStringKaiju,
_CardId.GamecieltheSeaTurtleKaiju,
});
AI.SelectNextCard(new[]
{
_CardId.GamecieltheSeaTurtleKaiju
);
AI.SelectNextCard(
_CardId.SuperAntiKaijuWarMachineMechaDogoran,
_CardId.GamecieltheSeaTurtleKaiju,
_CardId.KumongoustheStickyStringKaiju,
_CardId.GadarlatheMysteryDustKaiju,
_CardId.RadiantheMultidimensionalKaiju,
_CardId.DogorantheMadFlameKaiju,
_CardId.ThunderKingtheLightningstrikeKaiju,
});
_CardId.ThunderKingtheLightningstrikeKaiju
);
return true;
}
......
......@@ -784,6 +784,12 @@ namespace WindBot.Game
m_selector.Add(new CardSelector(ids));
}
public void SelectCard(params int[] ids)
{
m_selector_pointer = m_selector.Count();
m_selector.Add(new CardSelector(ids));
}
public void SelectCard(CardLocation loc)
{
m_selector_pointer = m_selector.Count();
......@@ -830,6 +836,16 @@ namespace WindBot.Game
m_selector.Insert(m_selector_pointer, new CardSelector(ids));
}
public void SelectNextCard(params int[] ids)
{
if (m_selector_pointer == -1)
{
Logger.WriteErrorLine("Error: Call SelectNextCard() before SelectCard()");
m_selector_pointer = 0;
}
m_selector.Insert(m_selector_pointer, new CardSelector(ids));
}
public void SelectNextCard(CardLocation loc)
{
if (m_selector_pointer == -1)
......@@ -880,6 +896,16 @@ namespace WindBot.Game
m_selector.Insert(m_selector_pointer, new CardSelector(ids));
}
public void SelectThirdCard(params int[] ids)
{
if (m_selector_pointer == -1)
{
Logger.WriteErrorLine("Error: Call SelectThirdCard() before SelectCard()");
m_selector_pointer = 0;
}
m_selector.Insert(m_selector_pointer, new CardSelector(ids));
}
public void SelectThirdCard(CardLocation loc)
{
if (m_selector_pointer == -1)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment