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

update GrenMajuThunderBoarder (#88)

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