Commit 3f572de6 authored by handsomekiwi's avatar handsomekiwi Committed by mercury233

update GrenMajuThunderBoarder (#88)

parent f84924f5
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
71564252 71564252
71564252 71564252
71564252 71564252
14558127
14558127
36584821 36584821
36584821 36584821
36584821 36584821
...@@ -20,9 +22,6 @@ ...@@ -20,9 +22,6 @@
35261759 35261759
59750328 59750328
59750328 59750328
70368879
70368879
70368879
98645731 98645731
98645731 98645731
98645731 98645731
...@@ -30,22 +29,22 @@ ...@@ -30,22 +29,22 @@
73915051 73915051
10045474 10045474
10045474 10045474
10045474
10813327 10813327
15693423 15693423
23924608 23924608
47475363
47475363
30241314 30241314
30241314 30241314
58921041 58921041
58921041 58921041
61740673 61740673
61936647
69452756 69452756
40605147 40605147
40605147 40605147
77538567 77538567
77538567 77538567
84749824
84749824
#extra #extra
86221741 86221741
31833038 31833038
...@@ -65,13 +64,11 @@ ...@@ -65,13 +64,11 @@
!side !side
10000080 10000080
86937530 86937530
14558127
62015408 62015408
9742784 9742784
67441435 70368879
72529749
43898403
19508728 19508728
10045474
15693423 15693423
24207889 24207889
69452756 69452756
......
...@@ -13,6 +13,7 @@ namespace WindBot.Game.AI.Decks ...@@ -13,6 +13,7 @@ namespace WindBot.Game.AI.Decks
{ {
public const int InspectBoarder = 15397015; public const int InspectBoarder = 15397015;
public const int ThunderKingRaiOh = 71564252; public const int ThunderKingRaiOh = 71564252;
public const int AshBlossomAndJoyousSpring =14558127;
public const int GhostReaperAndWinterCherries = 62015408; public const int GhostReaperAndWinterCherries = 62015408;
public const int GrenMajuDaEizo = 36584821; public const int GrenMajuDaEizo = 36584821;
public const int MaxxC = 23434538; public const int MaxxC = 23434538;
...@@ -29,9 +30,11 @@ namespace WindBot.Game.AI.Decks ...@@ -29,9 +30,11 @@ namespace WindBot.Game.AI.Decks
public const int WakingTheDragon = 10813327; public const int WakingTheDragon = 10813327;
public const int EvenlyMatched = 15693423; public const int EvenlyMatched = 15693423;
public const int HeavyStormDuster = 23924608; public const int HeavyStormDuster = 23924608;
public const int DrowningMirrorForce = 47475363;
public const int MacroCosmos = 30241314; public const int MacroCosmos = 30241314;
public const int AntiSpellFragrance = 58921041; public const int AntiSpellFragrance = 58921041;
public const int ImperialOrder = 61740673; public const int ImperialOrder = 61740673;
public const int PhatomKnightsSword = 61936647;
public const int UnendingNightmare= 69452756; public const int UnendingNightmare= 69452756;
public const int SolemnWarning = 84749824; public const int SolemnWarning = 84749824;
public const int SolemStrike= 40605147; public const int SolemStrike= 40605147;
...@@ -42,7 +45,7 @@ namespace WindBot.Game.AI.Decks ...@@ -42,7 +45,7 @@ namespace WindBot.Game.AI.Decks
public const int BorreloadDragon = 31833038; public const int BorreloadDragon = 31833038;
public const int BirrelswordDragon = 85289965; public const int BirrelswordDragon = 85289965;
public const int FirewallDragon = 5043010; public const int FirewallDragon = 5043010;
public const int BingirsuTheWorldChaliceWarrior = 30194529; public const int NingirsuTheWorldChaliceWarrior = 30194529;
public const int TopologicTrisbaena = 72529749; public const int TopologicTrisbaena = 72529749;
public const int KnightmareUnicorn = 38342335; public const int KnightmareUnicorn = 38342335;
public const int KnightmarePhoenix = 2857636; public const int KnightmarePhoenix = 2857636;
...@@ -53,61 +56,68 @@ namespace WindBot.Game.AI.Decks ...@@ -53,61 +56,68 @@ namespace WindBot.Game.AI.Decks
public const int BrandishMaidenKagari= 63288573; public const int BrandishMaidenKagari= 63288573;
public const int LinkSpider = 98978921; public const int LinkSpider = 98978921;
public const int Linkuriboh = 41999284; public const int Linkuriboh = 41999284;
public const int KnightmareGryphon = 65330383;
} }
public GrenMajuThunderBoarderExecutor(GameAI ai, Duel duel) public GrenMajuThunderBoarderExecutor(GameAI ai, Duel duel)
: base(ai, duel) : base(ai, duel)
{ {
AddExecutor(ExecutorType.GoToBattlePhase, EvenlyMatchedToBP); AddExecutor(ExecutorType.GoToBattlePhase, GoToBattlePhase);
AddExecutor(ExecutorType.Activate, CardId.EvenlyMatched, EvenlyMatchedeff); AddExecutor(ExecutorType.Activate, CardId.EvenlyMatched, EvenlyMatchedeff);
//Sticker //Sticker
AddExecutor(ExecutorType.Activate, CardId.MacroCosmos, MacroCosmoseff); AddExecutor(ExecutorType.Activate, CardId.MacroCosmos, MacroCosmoseff);
AddExecutor(ExecutorType.Activate, CardId.AntiSpellFragrance, AntiSpellFragranceeff); AddExecutor(ExecutorType.Activate, CardId.AntiSpellFragrance, AntiSpellFragranceeff);
//counter //counter
AddExecutor(ExecutorType.Activate, CardId.MaxxC, MaxxCeff); AddExecutor(ExecutorType.Activate, CardId.AshBlossomAndJoyousSpring, DefaultAshBlossomAndJoyousSpring);
AddExecutor(ExecutorType.Activate, CardId.InfiniteImpermanence, InfiniteImpermanenceeff); AddExecutor(ExecutorType.Activate, CardId.MaxxC, DefaultMaxxC);
AddExecutor(ExecutorType.Activate, CardId.InfiniteImpermanence, DefaultInfiniteImpermanence);
AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning); AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, CardId.SolemStrike, DefaultSolemnStrike); AddExecutor(ExecutorType.Activate, CardId.SolemStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, CardId.ImperialOrder, ImperialOrderfirst);
AddExecutor(ExecutorType.Activate, CardId.HeavyStormDuster, HeavyStormDustereff); AddExecutor(ExecutorType.Activate, CardId.HeavyStormDuster, HeavyStormDustereff);
AddExecutor(ExecutorType.Activate, CardId.UnendingNightmare, UnendingNightmareeff); AddExecutor(ExecutorType.Activate, CardId.UnendingNightmare, UnendingNightmareeff);
AddExecutor(ExecutorType.Activate, CardId.DarkBribe); AddExecutor(ExecutorType.Activate, CardId.DarkBribe, DarkBribeeff);
AddExecutor(ExecutorType.Activate, CardId.ImperialOrder, ImperialOrdereff); AddExecutor(ExecutorType.Activate, CardId.ImperialOrder, ImperialOrdereff);
AddExecutor(ExecutorType.Activate, CardId.ThunderKingRaiOh, ThunderKingRaiOheff); AddExecutor(ExecutorType.Activate, CardId.ThunderKingRaiOh, ThunderKingRaiOheff);
AddExecutor(ExecutorType.Activate, CardId.SolemnJudgment, DefaultSolemnJudgment); AddExecutor(ExecutorType.Activate, CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, CardId.DrowningMirrorForce, DrowningMirrorForceeff);
//first do //first do
AddExecutor(ExecutorType.Activate, CardId.UpstartGoblin, UpstartGoblineff); AddExecutor(ExecutorType.Activate, CardId.UpstartGoblin, UpstartGoblineff);
AddExecutor(ExecutorType.Activate, CardId.HarpieFeatherDuster, DefaultHarpiesFeatherDusterFirst); AddExecutor(ExecutorType.Activate, CardId.HarpieFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, CardId.PotOfDuality, PotOfDualityeff); AddExecutor(ExecutorType.Activate, CardId.PotOfDuality, PotOfDualityeff);
AddExecutor(ExecutorType.Activate, CardId.PotOfDesires, PotOfDesireseff); AddExecutor(ExecutorType.Activate, CardId.PotOfDesires, PotOfDesireseff);
AddExecutor(ExecutorType.Activate, CardId.CardOfDemise, CardOfDemiseeff); AddExecutor(ExecutorType.Activate, CardId.CardOfDemise, CardOfDemiseeff);
//sp //sp
AddExecutor(ExecutorType.SpSummon, CardId.BorreloadDragon, BorreloadDragonsp);
AddExecutor(ExecutorType.Activate, CardId.BorreloadDragon, BorreloadDragoneff);
AddExecutor(ExecutorType.Activate, CardId.EaterOfMillions, EaterOfMillionseff);
AddExecutor(ExecutorType.Activate, CardId.WakingTheDragon, WakingTheDragoneff);
AddExecutor(ExecutorType.SpSummon, CardId.MissusRadiant, MissusRadiantsp); AddExecutor(ExecutorType.SpSummon, CardId.MissusRadiant, MissusRadiantsp);
AddExecutor(ExecutorType.Activate, CardId.MissusRadiant, MissusRadianteff); AddExecutor(ExecutorType.Activate, CardId.MissusRadiant, MissusRadianteff);
AddExecutor(ExecutorType.Activate, CardId.Linkuriboh, Linkuriboheff); AddExecutor(ExecutorType.Activate, CardId.Linkuriboh, Linkuriboheff);
AddExecutor(ExecutorType.SpSummon, CardId.Linkuriboh, Linkuribohsp); AddExecutor(ExecutorType.SpSummon, CardId.Linkuriboh, Linkuribohsp);
AddExecutor(ExecutorType.SpSummon, CardId.LinkSpider); AddExecutor(ExecutorType.SpSummon, CardId.LinkSpider);
AddExecutor(ExecutorType.SpSummon, CardId.BorreloadDragon, BorreloadDragonsp);
AddExecutor(ExecutorType.Activate, CardId.BorreloadDragon, BorreloadDragoneff);
AddExecutor(ExecutorType.Activate, CardId.EaterOfMillions, EaterOfMillionseff);
AddExecutor(ExecutorType.Activate, CardId.WakingTheDragon, WakingTheDragoneff);
// normal summon // normal summon
AddExecutor(ExecutorType.Summon, CardId.InspectBoarder, InspectBoardersummon); AddExecutor(ExecutorType.Summon, CardId.InspectBoarder, InspectBoardersummon);
AddExecutor(ExecutorType.Summon, CardId.GrenMajuDaEizo, GrenMajuDaEizosummon); AddExecutor(ExecutorType.Summon, CardId.GrenMajuDaEizo, GrenMajuDaEizosummon);
AddExecutor(ExecutorType.Summon, CardId.ThunderKingRaiOh, ThunderKingRaiOhsummon); AddExecutor(ExecutorType.Summon, CardId.ThunderKingRaiOh, ThunderKingRaiOhsummon);
AddExecutor(ExecutorType.SpSummon, CardId.BorreloadDragon, BorreloadDragonspsecond);
AddExecutor(ExecutorType.SpSummon, CardId.EaterOfMillions, EaterOfMillionssp); AddExecutor(ExecutorType.SpSummon, CardId.EaterOfMillions, EaterOfMillionssp);
//spell //spell
AddExecutor(ExecutorType.Activate, CardId.MoonMirrorShield, MoonMirrorShieldeff); AddExecutor(ExecutorType.Activate, CardId.MoonMirrorShield, MoonMirrorShieldeff);
AddExecutor(ExecutorType.Activate, CardId.Scapegoat, Scapegoateff); AddExecutor(ExecutorType.Activate, CardId.Scapegoat, DefaultScapegoat);
AddExecutor(ExecutorType.Activate, CardId.PhatomKnightsSword, PhatomKnightsSwordeff);
AddExecutor(ExecutorType.Repos, MonsterRepos); AddExecutor(ExecutorType.Repos, MonsterRepos);
//set //set
AddExecutor(ExecutorType.SpellSet, SpellSet); AddExecutor(ExecutorType.SpellSet, SpellSet);
} }
bool CardOfDemiseeff_used = false; bool CardOfDemiseeff_used = false;
bool eater_eff = false; bool eater_eff = false;
public override void OnNewTurn() public override void OnNewTurn()
{ {
eater_eff = false; eater_eff = false;
CardOfDemiseeff_used = false; CardOfDemiseeff_used = false;
} }
public override void OnNewPhase() public override void OnNewPhase()
...@@ -135,22 +145,11 @@ namespace WindBot.Game.AI.Decks ...@@ -135,22 +145,11 @@ namespace WindBot.Game.AI.Decks
base.OnNewPhase(); base.OnNewPhase();
} }
private bool SpellWillBeNegated() private bool GoToBattlePhase()
{ {
ClientCard card = null; return Bot.HasInHand(CardId.EvenlyMatched) && Duel.Turn >= 2 && Enemy.GetFieldCount() >= 2 && Bot.GetFieldCount() == 0;
foreach (ClientCard check in Bot.GetSpells()) }
{
if(check.Id==CardId.ImperialOrder && !check.IsDisabled())
card = check;
}
if (card!=null && card.IsFaceup())
return true;
if (Enemy.HasInSpellZone(CardId.ImperialOrder, true))
return true;
return false;
}
private bool MacroCosmoseff() private bool MacroCosmoseff()
{ {
...@@ -169,49 +168,12 @@ namespace WindBot.Game.AI.Decks ...@@ -169,49 +168,12 @@ namespace WindBot.Game.AI.Decks
if (spell_count >= 2) return false; if (spell_count >= 2) return false;
return Duel.Player == 1 && UniqueFaceupSpell(); return Duel.Player == 1 && UniqueFaceupSpell();
} }
private bool MaxxCeff()
{
return Duel.Player == 1;
}
private bool EvenlyMatchedToBP()
{
return Bot.HasInHand(CardId.EvenlyMatched) && Bot.GetFieldCount() <= 1 && Duel.Turn >= 2 && Enemy.GetFieldCount() - Bot.GetFieldCount() >= 2;
}
private bool EvenlyMatchedeff() private bool EvenlyMatchedeff()
{ {
return true; return Enemy.GetFieldCount()-Bot.GetFieldCount() > 1;
}
private bool InfiniteImpermanenceeff()
{
AI.SelectPlace(Zones.z2);
ClientCard target = Enemy.MonsterZone.GetShouldBeDisabledBeforeItUseEffectMonster();
if(target!=null)
{
AI.SelectCard(target);
return true;
}
if(Duel.LastChainPlayer==1)
{
foreach (ClientCard check in Enemy.GetMonsters())
{
if(AI.Utils.GetLastChainCard()==check)
{
target = check;
break;
}
}
if(target!=null)
{
AI.SelectCard(target);
return true;
}
}
return false;
} }
private bool HeavyStormDustereff() private bool HeavyStormDustereff()
{ {
IList<ClientCard> targets = new List<ClientCard>(); IList<ClientCard> targets = new List<ClientCard>();
...@@ -219,6 +181,16 @@ namespace WindBot.Game.AI.Decks ...@@ -219,6 +181,16 @@ namespace WindBot.Game.AI.Decks
{ {
if (check.HasType(CardType.Continuous) || check.HasType(CardType.Field)) if (check.HasType(CardType.Continuous) || check.HasType(CardType.Field))
targets.Add(check); targets.Add(check);
}
if (AI.Utils.GetPZone(1, 0) != null && AI.Utils.GetPZone(1, 0).Type == 16777218)
{
targets.Add(AI.Utils.GetPZone(1, 0));
}
if (AI.Utils.GetPZone(1, 1) != null && AI.Utils.GetPZone(1, 1).Type == 16777218)
{
targets.Add(AI.Utils.GetPZone(1, 1));
} }
foreach (ClientCard check in Enemy.GetSpells()) foreach (ClientCard check in Enemy.GetSpells())
{ {
...@@ -230,9 +202,15 @@ namespace WindBot.Game.AI.Decks ...@@ -230,9 +202,15 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(targets); AI.SelectCard(targets);
return true; return true;
} }
int count = 0;
foreach(ClientCard check in Enemy.GetSpells())
{
if (check.Type == 16777218)
count++;
}
if(AI.Utils.GetLastChainCard()!=null && if(AI.Utils.GetLastChainCard()!=null &&
(AI.Utils.GetLastChainCard().HasType(CardType.Continuous)|| (AI.Utils.GetLastChainCard().HasType(CardType.Continuous)||
AI.Utils.GetLastChainCard().HasType(CardType.Field)) && AI.Utils.GetLastChainCard().HasType(CardType.Field) || count==2) &&
Duel.LastChainPlayer==1) Duel.LastChainPlayer==1)
{ {
AI.SelectCard(targets); AI.SelectCard(targets);
...@@ -242,7 +220,6 @@ namespace WindBot.Game.AI.Decks ...@@ -242,7 +220,6 @@ namespace WindBot.Game.AI.Decks
} }
private bool UnendingNightmareeff() private bool UnendingNightmareeff()
{ {
ClientCard card = null; ClientCard card = null;
foreach(ClientCard check in Enemy.GetSpells()) foreach(ClientCard check in Enemy.GetSpells())
{ {
...@@ -250,7 +227,21 @@ namespace WindBot.Game.AI.Decks ...@@ -250,7 +227,21 @@ namespace WindBot.Game.AI.Decks
card = check; card = check;
break; break;
} }
if(card!=null && Bot.LifePoints>1000) int count = 0;
foreach (ClientCard check in Enemy.GetSpells())
{
if (check.Type == 16777218)
count++;
}
if(count==2)
{
if (AI.Utils.GetPZone(1, 1) != null && AI.Utils.GetPZone(1, 1).Type == 16777218)
{
card=AI.Utils.GetPZone(1, 1);
}
}
if (card!=null && Bot.LifePoints>1000)
{ {
AI.SelectCard(card); AI.SelectCard(card);
return true; return true;
...@@ -258,12 +249,27 @@ namespace WindBot.Game.AI.Decks ...@@ -258,12 +249,27 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool DarkBribeeff()
{
if (AI.Utils.GetLastChainCard()!=null && AI.Utils.GetLastChainCard().Id == CardId.UpstartGoblin)
return false;
return true;
}
private bool ImperialOrderfirst()
{
if (AI.Utils.GetLastChainCard() != null && AI.Utils.GetLastChainCard().Id == CardId.UpstartGoblin)
return false;
return DefaultOnBecomeTarget() && AI.Utils.GetLastChainCard().HasType(CardType.Spell);
}
private bool ImperialOrdereff() private bool ImperialOrdereff()
{ {
if (AI.Utils.GetLastChainCard() != null && AI.Utils.GetLastChainCard().Id == CardId.UpstartGoblin)
return false;
if (Duel.LastChainPlayer == 1) if (Duel.LastChainPlayer == 1)
{ {
foreach(ClientCard check in Enemy.SpellZone) foreach(ClientCard check in Enemy.GetSpells())
{ {
if (AI.Utils.GetLastChainCard() == check) if (AI.Utils.GetLastChainCard() == check)
return true; return true;
...@@ -271,16 +277,28 @@ namespace WindBot.Game.AI.Decks ...@@ -271,16 +277,28 @@ namespace WindBot.Game.AI.Decks
} }
return false; return false;
} }
private bool DrowningMirrorForceeff()
{
if(Enemy.GetMonsterCount() ==1)
{
if(Enemy.BattlingMonster.Attack-Bot.LifePoints>=1000)
return DefaultUniqueTrap();
}
if (AI.Utils.GetTotalAttackingMonsterAttack(1) >= Bot.LifePoints)
return DefaultUniqueTrap();
if (Enemy.GetMonsterCount() >= 2)
return DefaultUniqueTrap();
return false;
}
private bool UpstartGoblineff() private bool UpstartGoblineff()
{ {
return !SpellWillBeNegated(); return !DefaultSpellWillBeNegated();
} }
private bool PotOfDualityeff() private bool PotOfDualityeff()
{ {
if (SpellWillBeNegated()) if (DefaultSpellWillBeNegated())
return false; return false;
int count = 0; int count = 0;
if (Bot.GetMonsterCount() > 0) if (Bot.GetMonsterCount() > 0)
count = 1; count = 1;
...@@ -289,6 +307,20 @@ namespace WindBot.Game.AI.Decks ...@@ -289,6 +307,20 @@ namespace WindBot.Game.AI.Decks
if (card.HasType(CardType.Monster)) if (card.HasType(CardType.Monster))
count++; count++;
} }
if(AI.Utils.GetBestEnemyMonster()!=null && AI.Utils.GetBestEnemyMonster().Attack>=1900)
AI.SelectCard(new[]
{
CardId.EaterOfMillions,
CardId.PotOfDesires,
CardId.GrenMajuDaEizo,
CardId.InspectBoarder,
CardId.ThunderKingRaiOh,
CardId.Scapegoat,
CardId.SolemnJudgment,
CardId.SolemnWarning,
CardId.SolemStrike,
CardId.InfiniteImpermanence,
});
if (count == 0) if (count == 0)
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
...@@ -297,6 +329,7 @@ namespace WindBot.Game.AI.Decks ...@@ -297,6 +329,7 @@ namespace WindBot.Game.AI.Decks
CardId.ThunderKingRaiOh, CardId.ThunderKingRaiOh,
CardId.EaterOfMillions, CardId.EaterOfMillions,
CardId.GrenMajuDaEizo, CardId.GrenMajuDaEizo,
CardId.Scapegoat,
}); });
else else
{ {
...@@ -308,6 +341,7 @@ namespace WindBot.Game.AI.Decks ...@@ -308,6 +341,7 @@ namespace WindBot.Game.AI.Decks
CardId.SolemnWarning, CardId.SolemnWarning,
CardId.SolemStrike, CardId.SolemStrike,
CardId.InfiniteImpermanence, CardId.InfiniteImpermanence,
CardId.Scapegoat,
}); });
} }
return true; return true;
...@@ -315,12 +349,13 @@ namespace WindBot.Game.AI.Decks ...@@ -315,12 +349,13 @@ namespace WindBot.Game.AI.Decks
private bool PotOfDesireseff() private bool PotOfDesireseff()
{ {
return Bot.Deck.Count > 14 && !SpellWillBeNegated(); if (CardOfDemiseeff_used) return false;
return Bot.Deck.Count > 14 && !DefaultSpellWillBeNegated();
} }
private bool CardOfDemiseeff() private bool CardOfDemiseeff()
{ {
if(Bot.Hand.Count == 1 && Bot.GetSpellCountWithoutField() <= 3 && !SpellWillBeNegated()) if (Bot.Hand.Count == 1 && Bot.GetSpellCountWithoutField() <= 3 && !DefaultSpellWillBeNegated())
{ {
CardOfDemiseeff_used = true; CardOfDemiseeff_used = true;
return true; return true;
...@@ -333,7 +368,7 @@ namespace WindBot.Game.AI.Decks ...@@ -333,7 +368,7 @@ namespace WindBot.Game.AI.Decks
if(Card.Location==CardLocation.Hand) if(Card.Location==CardLocation.Hand)
{ {
if (Bot.GetMonsterCount() == 0) return false; if (Bot.GetMonsterCount() == 0) return false;
return !SpellWillBeNegated(); return !DefaultSpellWillBeNegated();
} }
if(Card.Location==CardLocation.Grave) if(Card.Location==CardLocation.Grave)
{ {
...@@ -342,59 +377,67 @@ namespace WindBot.Game.AI.Decks ...@@ -342,59 +377,67 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool Scapegoateff() private bool PhatomKnightsSwordeff()
{ {
if (SpellWillBeNegated()) return false; if (Card.IsFaceup())
if (Duel.Player == 0) return false; return true;
if (Duel.Phase == DuelPhase.End) return true; if(Duel.Phase==DuelPhase.BattleStart && Bot.BattlingMonster!=null && Enemy.BattlingMonster!=null)
if (Duel.LastChainPlayer == 1 && (AI.Utils.IsChainTarget(Card) || (DefaultOnBecomeTarget() && !Bot.HasInSpellZone(CardId.WakingTheDragon)))) return true; {
if (Duel.Phase > DuelPhase.Main1 && Duel.Phase < DuelPhase.Main2) if (Bot.BattlingMonster.Attack + 800 >= Enemy.BattlingMonster.GetDefensePower())
{
int total_atk = 0;
List<ClientCard> enemy_monster = Enemy.GetMonsters();
foreach (ClientCard m in enemy_monster)
{ {
if (m.IsAttack() && !m.Attacked) total_atk += m.Attack; AI.SelectCard(Bot.BattlingMonster);
} return DefaultUniqueTrap();
if (total_atk >= Bot.LifePoints) return true; }
} }
return false; return false;
} }
private bool InspectBoardersummon() private bool InspectBoardersummon()
{ {
AI.SelectPlace(Zones.z4 | Zones.z0); if (Bot.MonsterZone[0] == null)
AI.SelectPlace(Zones.z0);
else
AI.SelectPlace(Zones.z4);
return true; return true;
} }
private bool GrenMajuDaEizosummon() private bool GrenMajuDaEizosummon()
{ {
if (Duel.Turn == 1) return false; if (Duel.Turn == 1) return false;
AI.SelectPlace(Zones.z4 | Zones.z0); if (Bot.MonsterZone[0] == null)
AI.SelectPlace(Zones.z0);
else
AI.SelectPlace(Zones.z4);
return Bot.Banished.Count >= 6; return Bot.Banished.Count >= 6;
} }
private bool ThunderKingRaiOhsummon() private bool ThunderKingRaiOhsummon()
{ {
AI.SelectPlace(Zones.z4 | Zones.z0); if (Bot.MonsterZone[0] == null)
AI.SelectPlace(Zones.z0);
else
AI.SelectPlace(Zones.z4);
return true; return true;
} }
private bool ThunderKingRaiOheff() private bool ThunderKingRaiOheff()
{ {
foreach (ClientCard card in Duel.SummoningCards) if(Duel.SummoningCards.Count > 0)
{ {
if (card.Attack >= 1900) foreach(ClientCard m in Duel.SummoningCards)
return true; {
} if (m.Attack >= 1900)
return true;
}
}
return false; return false;
} }
private bool BorreloadDragonsp() private bool BorreloadDragonsp()
{ {
if (!Bot.HasInMonstersZone(CardId.MissusRadiant)) return false;
IList<ClientCard> material_list = new List<ClientCard>(); IList<ClientCard> material_list = new List<ClientCard>();
foreach (ClientCard monster in Bot.GetMonsters()) foreach (ClientCard monster in Bot.GetMonsters())
{ {
if (monster.Id != CardId.EaterOfMillions) if (monster.Id ==CardId.MissusRadiant || monster.Id==CardId.LinkSpider || monster.Id==CardId.Linkuriboh)
material_list.Add(monster); material_list.Add(monster);
if (material_list.Count == 3) break; if (material_list.Count == 3) break;
} }
...@@ -405,10 +448,29 @@ namespace WindBot.Game.AI.Decks ...@@ -405,10 +448,29 @@ namespace WindBot.Game.AI.Decks
} }
return false; return false;
} }
private bool BorreloadDragonspsecond()
{
if (!Bot.HasInMonstersZone(CardId.MissusRadiant)) return false;
IList<ClientCard> material_list = new List<ClientCard>();
foreach (ClientCard monster in Bot.GetMonsters())
{
if ((monster.Id == CardId.MissusRadiant ||
monster.Id == CardId.LinkSpider ||
monster.Id == CardId.Linkuriboh )&&
monster.Id!=CardId.EaterOfMillions)
material_list.Add(monster);
if (material_list.Count == 3) break;
}
if (material_list.Count >= 3)
{
AI.SelectMaterials(material_list);
return true;
}
return false;
}
public bool BorreloadDragoneff() public bool BorreloadDragoneff()
{ {
if (ActivateDescription == -1) if (ActivateDescription == -1 && (Duel.Phase==DuelPhase.BattleStart||Duel.Phase==DuelPhase.End))
{ {
ClientCard enemy_monster = Enemy.BattlingMonster; ClientCard enemy_monster = Enemy.BattlingMonster;
if (enemy_monster != null && enemy_monster.HasPosition(CardPosition.Attack)) if (enemy_monster != null && enemy_monster.HasPosition(CardPosition.Attack))
...@@ -431,15 +493,20 @@ namespace WindBot.Game.AI.Decks ...@@ -431,15 +493,20 @@ namespace WindBot.Game.AI.Decks
private bool EaterOfMillionssp() private bool EaterOfMillionssp()
{ {
if (Bot.HasInMonstersZone(CardId.InspectBoarder) && !eater_eff) return false; if (Bot.MonsterZone[0] == null)
AI.SelectPlace(Zones.z0);
else
AI.SelectPlace(Zones.z4);
if (Enemy.HasInMonstersZone(CardId.KnightmareGryphon, true)) return false;
if (Bot.HasInMonstersZone(CardId.InspectBoarder) && !eater_eff) return false;
if (AI.Utils.GetProblematicEnemyMonster() == null && Bot.ExtraDeck.Count < 5) return false; if (AI.Utils.GetProblematicEnemyMonster() == null && Bot.ExtraDeck.Count < 5) return false;
if (Bot.GetMonstersInMainZone().Count >= 5) return false; if (Bot.GetMonstersInMainZone().Count >= 5) return false;
if (AI.Utils.IsTurn1OrMain2()) return false; if (AI.Utils.IsTurn1OrMain2()) return false;
AI.SelectPosition(CardPosition.FaceUpAttack); AI.SelectPosition(CardPosition.FaceUpAttack);
IList<ClientCard> targets = new List<ClientCard>(); IList<ClientCard> targets = new List<ClientCard>();
foreach (ClientCard e_c in Bot.ExtraDeck) foreach (ClientCard e_c in Bot.ExtraDeck)
{ {
targets.Add(e_c); targets.Add(e_c);
if (targets.Count >= 5) if (targets.Count >= 5)
{ {
AI.SelectCard(targets); AI.SelectCard(targets);
...@@ -456,6 +523,7 @@ namespace WindBot.Game.AI.Decks ...@@ -456,6 +523,7 @@ namespace WindBot.Game.AI.Decks
CardId.BirrelswordDragon, CardId.BirrelswordDragon,
CardId.RaidraptorUltimateFalcon, CardId.RaidraptorUltimateFalcon,
});*/ });*/
AI.SelectPlace(Zones.z4 | Zones.z0); AI.SelectPlace(Zones.z4 | Zones.z0);
return true; return true;
} }
...@@ -475,7 +543,8 @@ namespace WindBot.Game.AI.Decks ...@@ -475,7 +543,8 @@ namespace WindBot.Game.AI.Decks
private bool EaterOfMillionseff() private bool EaterOfMillionseff()
{ {
//if (Enemy.BattlingMonster.HasPosition(CardPosition.Attack) && (Bot.BattlingMonster.Attack - Enemy.BattlingMonster.GetDefensePower() >= Enemy.LifePoints)) return false; if (Enemy.BattlingMonster.HasPosition(CardPosition.Attack) && (Bot.BattlingMonster.Attack - Enemy.BattlingMonster.GetDefensePower() >= Enemy.LifePoints)) return false;
return true; return true;
} }
...@@ -497,7 +566,10 @@ namespace WindBot.Game.AI.Decks ...@@ -497,7 +566,10 @@ namespace WindBot.Game.AI.Decks
if (material_list.Count < 2) return false; if (material_list.Count < 2) return false;
if (Bot.HasInMonstersZone(CardId.MissusRadiant)) return false; if (Bot.HasInMonstersZone(CardId.MissusRadiant)) return false;
AI.SelectMaterials(material_list); AI.SelectMaterials(material_list);
AI.SelectPlace(Zones.z5 | Zones.z6); if (Bot.MonsterZone[0] == null && Bot.MonsterZone[2] == null && Bot.MonsterZone[5] == null)
AI.SelectPlace(Zones.z5);
else
AI.SelectPlace(Zones.z6);
return true; return true;
} }
...@@ -512,13 +584,12 @@ namespace WindBot.Game.AI.Decks ...@@ -512,13 +584,12 @@ namespace WindBot.Game.AI.Decks
} }
private bool Linkuribohsp() private bool Linkuribohsp()
{ {
foreach (ClientCard c in Bot.GetMonsters()) foreach (ClientCard c in Bot.GetMonsters())
{ {
if (c.Id != CardId.EaterOfMillions && c.Level == 1 && c.Id != CardId.Linkuriboh && c.Id != CardId.LinkSpider) if (c.Id != CardId.EaterOfMillions && c.Id != CardId.Linkuriboh && c.Level==1 )
{ {
AI.SelectCard(c); AI.SelectMaterials(c);
return true; return true;
} }
} }
...@@ -537,7 +608,7 @@ namespace WindBot.Game.AI.Decks ...@@ -537,7 +608,7 @@ namespace WindBot.Game.AI.Decks
} }
private bool SpellSet() private bool SpellSet()
{ {
int count = 0; int count = 0;
foreach(ClientCard check in Bot.Hand) foreach(ClientCard check in Bot.Hand)
{ {
...@@ -548,11 +619,12 @@ namespace WindBot.Game.AI.Decks ...@@ -548,11 +619,12 @@ namespace WindBot.Game.AI.Decks
return true; return true;
if (Card.Id == CardId.MacroCosmos && Bot.HasInSpellZone(CardId.MacroCosmos)) return false; if (Card.Id == CardId.MacroCosmos && Bot.HasInSpellZone(CardId.MacroCosmos)) return false;
if (Card.Id == CardId.AntiSpellFragrance && Bot.HasInSpellZone(CardId.AntiSpellFragrance)) return false; if (Card.Id == CardId.AntiSpellFragrance && Bot.HasInSpellZone(CardId.AntiSpellFragrance)) return false;
if (CardOfDemiseeff_used)return true; if (CardOfDemiseeff_used)return true;
//if (Duel.Turn > 1 && Duel.Phase != DuelPhase.Main2) return false;
if (Card.Id == CardId.EvenlyMatched && (Enemy.GetFieldCount() - Bot.GetFieldCount()) < 0) return false; if (Card.Id == CardId.EvenlyMatched && (Enemy.GetFieldCount() - Bot.GetFieldCount()) < 0) return false;
if (Card.Id == CardId.AntiSpellFragrance && Bot.HasInSpellZone(CardId.AntiSpellFragrance)) return false; if (Card.Id == CardId.AntiSpellFragrance && Bot.HasInSpellZone(CardId.AntiSpellFragrance)) return false;
if (Card.Id == CardId.MacroCosmos && Bot.HasInSpellZone(CardId.MacroCosmos)) return false; if (Card.Id == CardId.MacroCosmos && Bot.HasInSpellZone(CardId.MacroCosmos)) return false;
if (Duel.Turn > 1 && Duel.Phase == DuelPhase.Main1 && Bot.HasAttackingMonster())
return false;
if (Card.Id == CardId.InfiniteImpermanence) if (Card.Id == CardId.InfiniteImpermanence)
return Bot.GetFieldCount() > 0 && Bot.GetSpellCountWithoutField() < 4; return Bot.GetFieldCount() > 0 && Bot.GetSpellCountWithoutField() < 4;
if (Card.Id == CardId.Scapegoat) if (Card.Id == CardId.Scapegoat)
...@@ -569,18 +641,17 @@ namespace WindBot.Game.AI.Decks ...@@ -569,18 +641,17 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender) public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender)
{ {
if (attacker.Id == _CardId.EaterOfMillions && (Bot.HasInMonstersZone(CardId.InspectBoarder) && eater_eff) && !attacker.IsDisabled())
if (attacker.Id==CardId.EaterOfMillions && (Bot.HasInMonstersZone(CardId.InspectBoarder) && eater_eff))
{ {
attacker.RealPower = 9999; attacker.RealPower = 9999;
return true; return true;
} }
if (attacker.Id == CardId.EaterOfMillions && !Bot.HasInMonstersZone(CardId.InspectBoarder)) if (attacker.Id == _CardId.EaterOfMillions && !Bot.HasInMonstersZone(CardId.InspectBoarder) && !attacker.IsDisabled())
{ {
attacker.RealPower = 9999; attacker.RealPower = 9999;
return true; return true;
} }
return base.OnPreBattleBetween(attacker, defender); return base.OnPreBattleBetween(attacker, defender);
} }
public override ClientCard OnSelectAttacker(IList<ClientCard> attackers, IList<ClientCard> defenders) public override ClientCard OnSelectAttacker(IList<ClientCard> attackers, IList<ClientCard> defenders)
......
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