Commit 494fe10b authored by mercury233's avatar mercury233

Merge branch 'master' of https://github.com/IceYGO/windbot

parents 43086945 98971329
......@@ -74,7 +74,8 @@ namespace WindBot.Game.AI
public bool IsAllEnemyBetterThanValue(int value, bool onlyATK)
{
return Enemy.MonsterZone.GetMonsters()
List<ClientCard> monsters = Enemy.MonsterZone.GetMonsters();
return monsters.Count > 0 && monsters
.All(card => card.GetDefensePower() > value && (!onlyATK || card.IsAttack()));
}
......
This diff is collapsed.
......@@ -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;
}
......
This diff is collapsed.
......@@ -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;
}
......
......@@ -61,7 +61,7 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel)
{
//counter
//AddExecutor(ExecutorType.ToBattlePhase, ToBattlePhaseeff);
AddExecutor(ExecutorType.GoToBattlePhase, GoToBattlePhase);
AddExecutor(ExecutorType.Activate, CardId.StarlightRoad, PreventFeatherDustereff);
AddExecutor(ExecutorType.Activate, CardId.TheHugeRevolutionIsOver, PreventFeatherDustereff);
AddExecutor(ExecutorType.Activate, _CardId.GhostBelle, DefaultGhostBelleAndHauntedMansion);
......@@ -100,7 +100,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.EaterOfMillions, EaterOfMillionseff);
//other
AddExecutor(ExecutorType.Activate, CardId.Scapegoat, Scapegoateff);
AddExecutor(ExecutorType.Activate, CardId.Scapegoat, DefaultScapegoat);
AddExecutor(ExecutorType.SpellSet, CardId.SeaStealthAttack, NoSetAlreadyDone);
AddExecutor(ExecutorType.SpellSet, CardId.StarlightRoad, StarlightRoadset);
AddExecutor(ExecutorType.SpellSet, CardId.TheHugeRevolutionIsOver, TheHugeRevolutionIsOverset);
......@@ -129,18 +129,17 @@ namespace WindBot.Game.AI.Decks
return Duel.LastChainPlayer == 1;
}
/* private bool ToBattlePhaseeff()
private bool GoToBattlePhase()
{
if (Enemy.GetMonsterCount() == 0)
{
if (AI.Utils.GetTotalAttackingMonsterAttack(0) >= Enemy.LifePoints)
{
AI.ManualPhaseChange = true;
{
return true;
}
}
return false;
}*/
}
private bool PhantasmSprialBattleeff()
{
......@@ -154,8 +153,13 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(CardId.EternalSoul);
return UniqueFaceupSpell();
}
if(Bot.GetMonsterCount()>0 && !Bot.HasInSpellZone(CardId.SeaStealthAttack) &&
AI.Utils.IsOneEnemyBetterThanValue(2000,true) && Duel.Phase==DuelPhase.BattleStart)
if(Bot.UnderAttack && Bot.BattlingMonster != null && Bot.BattlingMonster.IsCode(CardId.MegalosmasherX))
{
AI.SelectCard(Enemy.BattlingMonster);
return UniqueFaceupSpell();
}
if (Bot.GetMonsterCount() > 0 && !Bot.HasInSpellZone(CardId.SeaStealthAttack) &&
AI.Utils.IsOneEnemyBetterThanValue(2000, false) && Duel.Phase==DuelPhase.BattleStart)
{
AI.SelectCard(AI.Utils.GetBestEnemyMonster(true,true));
return UniqueFaceupSpell();
......@@ -257,7 +261,7 @@ namespace WindBot.Game.AI.Decks
private bool CardOfDemiseeff()
{
//if (DefaultSpellWillBeNegated()) return false;
if (DefaultSpellWillBeNegated()) return false;
AI.SelectPlace(Zones.z2);
if(Card.Location==CardLocation.Hand)
{
......@@ -280,7 +284,7 @@ namespace WindBot.Game.AI.Decks
private bool FossilDigeff()
{
//if (DefaultSpellWillBeNegated()) return false;
if (DefaultSpellWillBeNegated()) return false;
if (CardOfDemiseeff_used && summon_used) return false;
return true;
}
......@@ -292,52 +296,56 @@ 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;
}
private bool Terraformingeff()
{
// if (DefaultSpellWillBeNegated()) return false;
if (DefaultSpellWillBeNegated()) return false;
if (CardOfDemiseeff_used && Bot.HasInSpellZone(CardId.PacifisThePhantasmCity)) return false;
return true;
}
private bool PacifisThePhantasmCityeff()
{
// if (DefaultSpellWillBeNegated()) return false;
if (DefaultSpellWillBeNegated()) return false;
if(Card.Location==CardLocation.Hand)
{
if (Bot.HasInSpellZone(CardId.PacifisThePhantasmCity))
......@@ -460,12 +468,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
{
......@@ -610,26 +619,7 @@ namespace WindBot.Game.AI.Decks
private bool PotOfDesireseff()
{
return Bot.Deck.Count >= 18;
}
private bool Scapegoateff()
{
// if (DefaultSpellWillBeNegated()) return false;
if (Duel.Player == 0) return false;
if (Duel.Phase == DuelPhase.End) return true;
if (DefaultOnBecomeTarget()) return true;
if (Duel.Phase > DuelPhase.Main1 && Duel.Phase < DuelPhase.Main2)
{
int total_atk = 0;
List<ClientCard> enemy_monster = Enemy.GetMonsters();
foreach (ClientCard m in enemy_monster)
{
if (m.IsAttack()) total_atk += m.Attack;
}
if (total_atk >= Bot.LifePoints) return true;
}
return false;
}
}
private bool StarlightRoadset()
{
......@@ -740,4 +730,4 @@ namespace WindBot.Game.AI.Decks
}
}
\ No newline at end of file
}
......@@ -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
);
}
}
}
This diff is collapsed.
......@@ -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;
}
......
......@@ -17,6 +17,7 @@ namespace WindBot.Game
public int LifePoints;
public ClientCard BattlingMonster;
public bool UnderAttack;
public ClientField()
{
......
......@@ -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)
......
......@@ -103,6 +103,8 @@ namespace WindBot.Game
_messages.Add(GameMessage.Move, OnMove);
_messages.Add(GameMessage.Swap, OnSwap);
_messages.Add(GameMessage.Attack, OnAttack);
_messages.Add(GameMessage.Battle, OnBattle);
_messages.Add(GameMessage.AttackDisabled, OnAttackDisabled);
_messages.Add(GameMessage.PosChange, OnPosChange);
_messages.Add(GameMessage.Chaining, OnChaining);
_messages.Add(GameMessage.ChainEnd, OnChainEnd);
......@@ -326,6 +328,14 @@ namespace WindBot.Game
int type = packet.ReadByte();
int player = packet.ReadByte();
int data = packet.ReadInt32();
if (type == 1) // HINT_EVENT
{
if (data == 24) // battling
{
_duel.Fields[0].UnderAttack = false;
_duel.Fields[1].UnderAttack = false;
}
}
if (type == 3) // HINT_SELECTMSG
{
_select_hint = data;
......@@ -492,6 +502,8 @@ namespace WindBot.Game
_duel.LastSummonedCards.Clear();
_duel.Fields[0].BattlingMonster = null;
_duel.Fields[1].BattlingMonster = null;
_duel.Fields[0].UnderAttack = false;
_duel.Fields[1].UnderAttack = false;
_ai.OnNewPhase();
}
......@@ -621,6 +633,7 @@ namespace WindBot.Game
}
_duel.Fields[attackcard.Controller].BattlingMonster = attackcard;
_duel.Fields[1 - attackcard.Controller].BattlingMonster = defendcard;
_duel.Fields[1 - attackcard.Controller].UnderAttack = true;
if (ld == 0 && ca != 0)
{
......@@ -628,6 +641,18 @@ namespace WindBot.Game
}
}
private void OnBattle(BinaryReader packet)
{
_duel.Fields[0].UnderAttack = false;
_duel.Fields[1].UnderAttack = false;
}
private void OnAttackDisabled(BinaryReader packet)
{
_duel.Fields[0].UnderAttack = false;
_duel.Fields[1].UnderAttack = false;
}
private void OnPosChange(BinaryReader packet)
{
packet.ReadInt32(); // card id
......
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