Commit 7cddc1c9 authored by 苍蓝's avatar 苍蓝

update

parent 64571ab5
Pipeline #6141 passed with stage
in 32 seconds
#created by ... #created by ...
#main #main
120193002
120183024 120155015
120181011 120181011
120181011 120181011
120181011 120181011
...@@ -10,15 +10,15 @@ ...@@ -10,15 +10,15 @@
120181001 120181001
120193002 120193002
120193002 120193002
120193002
120183002 120183002
120183002 120183002
120181001 120181001
120181001 120181001
120155015 120155015
120155015 120155015
120155015 120183024
120183024 120183024
120183030 120183030
120183030 120183030
......
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
"facedownmonstername": "员工", "facedownmonstername": "员工",
"activate": [ "activate": [
"我发动{0}。", "我发动{0}。",
"我使用{0}的贿赂效果。", "我使用{0}的效果。",
"我使用{0}的贿赂力量。" "我使用{0}偷偷贿赂。"
], ],
"summon": [ "summon": [
"召唤{0}。他们都是洋溢着梦想与希望,有着美好前程的宝贵人才。", "召唤{0}。他们都是洋溢着梦想与希望,有着美好前程的宝贵人才。",
......
...@@ -31,6 +31,7 @@ namespace WindBot.Game.AI.Decks ...@@ -31,6 +31,7 @@ namespace WindBot.Game.AI.Decks
public const int 落穴 = 120150019; public const int 落穴 = 120150019;
public const int 圣防 = 120198003; public const int 圣防 = 120198003;
public const int 炸甲 = 120194005; public const int 炸甲 = 120194005;
public const int 暗黑释放 = 120105013;
} }
public DragunExecutor(GameAI ai, Duel duel) public DragunExecutor(GameAI ai, Duel duel)
...@@ -43,14 +44,13 @@ namespace WindBot.Game.AI.Decks ...@@ -43,14 +44,13 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.机器栗子); AddExecutor(ExecutorType.Activate, CardId.机器栗子);
AddExecutor(ExecutorType.Activate, CardId.连击龙); AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect); AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Repos, CardId.青眼白龙, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.连击龙, DefaultMonsterRepos);
AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon); AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.人造人, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.人造人, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.机器栗子,栗子summon); AddExecutor(ExecutorType.Summon, CardId.机器栗子, 栗子summon);
AddExecutor(ExecutorType.Repos, CardId.机器栗子, 栗子summon2);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect); AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect2); AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect2);
AddExecutor(ExecutorType.MonsterSet, CardId.斗牛士, Monsterset); AddExecutor(ExecutorType.MonsterSet, CardId.斗牛士, Monsterset);
...@@ -58,7 +58,7 @@ namespace WindBot.Game.AI.Decks ...@@ -58,7 +58,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.凤凰龙); AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect); AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.Repos, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.成金恐龙王, 成金恐龙王Summon); AddExecutor(ExecutorType.SummonOrSet, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.血腥魔兽人); AddExecutor(ExecutorType.SummonOrSet, CardId.血腥魔兽人);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙, 凤凰龙summon); AddExecutor(ExecutorType.Summon, CardId.凤凰龙, 凤凰龙summon);
...@@ -203,7 +203,7 @@ namespace WindBot.Game.AI.Decks ...@@ -203,7 +203,7 @@ namespace WindBot.Game.AI.Decks
if (!Util.IsAllEnemyBetter(true)) if (!Util.IsAllEnemyBetter(true))
return false; return false;
ClientCard selected = Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive()).OrderByDescending(card => card.Attack).FirstOrDefault(); ClientCard selected = Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive()).OrderByDescending(card => card.Attack).FirstOrDefault();
if (selected.Attack >=2400) if (selected.Attack >= 2400)
{ {
AI.SelectCard(selected); AI.SelectCard(selected);
return true; return true;
...@@ -222,7 +222,13 @@ namespace WindBot.Game.AI.Decks ...@@ -222,7 +222,13 @@ namespace WindBot.Game.AI.Decks
} }
private bool 栗子summon() private bool 栗子summon()
{ {
if (Bot.HasInHand(CardId.机器栗子) && (Bot.GetMonstersInMainZone().Count == 0)) if (Bot.HasInGraveyard(CardId.机器栗子) && (Bot.GetMonstersInMainZone().Count == 0))
return true;
return false;
}
private bool 栗子summon2()
{
if (Bot.HasInGraveyard(CardId.机器栗子) && (Bot.GetMonstersInMainZone().Count == 1))
return true; return true;
return false; return false;
} }
...@@ -265,14 +271,13 @@ namespace WindBot.Game.AI.Decks ...@@ -265,14 +271,13 @@ namespace WindBot.Game.AI.Decks
} }
private bool 圣防Repos() private bool 圣防Repos()
{ {
if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && !Bot.HasInMonstersZone(CardId.人造人)) if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && !Bot.HasInMonstersZone(CardId.人造人) && Enemy.Graveyard.GetMatchingCardsCount(card => card.IsCode(CardId.暗黑释放)) < 3)
{ {
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster()) if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster())
return true; return true;
} }
return false; return false;
} }
} }
} }
......
...@@ -34,6 +34,7 @@ namespace WindBot.Game.AI.Decks ...@@ -34,6 +34,7 @@ namespace WindBot.Game.AI.Decks
public const int 减俸 = 120183062; public const int 减俸 = 120183062;
public const int 左迁 = 120183063; public const int 左迁 = 120183063;
public const int 冻结 = 120183064; public const int 冻结 = 120183064;
public const int 暗黑释放 = 120105013;
} }
public MathMechExecutor(GameAI ai, Duel duel) public MathMechExecutor(GameAI ai, Duel duel)
...@@ -48,6 +49,8 @@ namespace WindBot.Game.AI.Decks ...@@ -48,6 +49,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.突击坦克, 突击坦克Effect); AddExecutor(ExecutorType.Activate, CardId.突击坦克, 突击坦克Effect);
AddExecutor(ExecutorType.Activate, CardId.瞄准鹰, 瞄准鹰Effect); AddExecutor(ExecutorType.Activate, CardId.瞄准鹰, 瞄准鹰Effect);
AddExecutor(ExecutorType.Activate, CardId.双角兽, 双角兽Effect); AddExecutor(ExecutorType.Activate, CardId.双角兽, 双角兽Effect);
AddExecutor(ExecutorType.Repos, CardId.双角兽, 双角兽summon);
AddExecutor(ExecutorType.Repos, CardId.瞄准鹰, 瞄准鹰summon);
AddExecutor(ExecutorType.Repos, CardId.最强战旗, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.最强战旗, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.钢机神, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.钢机神, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.恶德, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.恶德, DefaultMonsterRepos);
...@@ -69,9 +72,9 @@ namespace WindBot.Game.AI.Decks ...@@ -69,9 +72,9 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.最强战旗, 最强战旗Effect); AddExecutor(ExecutorType.Activate, CardId.最强战旗, 最强战旗Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect); AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神Effect); AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神Effect);
AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神1Effect); //AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神1Effect);
AddExecutor(ExecutorType.MonsterSet, CardId.成金恐龙王); AddExecutor(ExecutorType.MonsterSet, CardId.成金恐龙王);
AddExecutor(ExecutorType.Activate, CardId.工匠无人机,无人机Effect); AddExecutor(ExecutorType.Activate, CardId.工匠无人机, 无人机Effect);
AddExecutor(ExecutorType.Summon, CardId.工匠无人机); AddExecutor(ExecutorType.Summon, CardId.工匠无人机);
AddExecutor(ExecutorType.Summon, CardId.突击坦克, 突击坦克summon); AddExecutor(ExecutorType.Summon, CardId.突击坦克, 突击坦克summon);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect); AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect);
...@@ -83,11 +86,11 @@ namespace WindBot.Game.AI.Decks ...@@ -83,11 +86,11 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.MonsterSet, CardId.瞄准鹰); AddExecutor(ExecutorType.MonsterSet, CardId.瞄准鹰);
AddExecutor(ExecutorType.MonsterSet, CardId.双角兽); AddExecutor(ExecutorType.MonsterSet, CardId.双角兽);
AddExecutor(ExecutorType.Activate, CardId.世纪末兽机界, DefaultField); AddExecutor(ExecutorType.Activate, CardId.世纪末兽机界, DefaultField);
AddExecutor(ExecutorType.Activate, CardId.兽之拳,兽之拳Effect); AddExecutor(ExecutorType.Activate, CardId.兽之拳, 兽之拳Effect);
AddExecutor(ExecutorType.Activate, CardId.左迁, 左迁1Effect); AddExecutor(ExecutorType.Activate, CardId.左迁, 左迁1Effect);
AddExecutor(ExecutorType.Activate, CardId.减俸); AddExecutor(ExecutorType.Activate, CardId.减俸);
AddExecutor(ExecutorType.Activate, CardId.左迁,左迁2Effect); AddExecutor(ExecutorType.Activate, CardId.左迁, 左迁2Effect);
AddExecutor(ExecutorType.Activate, CardId.冻结,冻结Effect); AddExecutor(ExecutorType.Activate, CardId.冻结, 冻结Effect);
AddExecutor(ExecutorType.Activate, CardId.兽之拳); AddExecutor(ExecutorType.Activate, CardId.兽之拳);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself); AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
...@@ -167,7 +170,7 @@ namespace WindBot.Game.AI.Decks ...@@ -167,7 +170,7 @@ namespace WindBot.Game.AI.Decks
{ {
if (!DoubleTribute) return false; if (!DoubleTribute) return false;
else else
AI.SelectCard(CardId.双角兽); AI.SelectMaterials(CardId.双角兽);
DoubleTribute = false; DoubleTribute = false;
return true; return true;
} }
...@@ -208,19 +211,39 @@ namespace WindBot.Game.AI.Decks ...@@ -208,19 +211,39 @@ namespace WindBot.Game.AI.Decks
} }
private bool 钢机神Effect() private bool 钢机神Effect()
{ {
if (Duel.Turn == 1) return false; if (Duel.Turn == 1)
{
return false;
}
else if (Enemy.HasAttackingMonster() || Enemy.GetMonsterCount() < 1) else if (Enemy.HasAttackingMonster() || Enemy.GetMonsterCount() < 1)
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.双角兽, CardId.瞄准鹰); AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.双角兽, CardId.瞄准鹰);
else AI.SelectCard(Bot.Graveyard.GetHighestLevelMonster());
return true; return true;
} }
private bool 钢机神1Effect() private bool 钢机神1Effect()
{ {
if (!Enemy.HasAttackingMonster() && Enemy.GetMonsterCount() >= 1) if (Enemy.HasDefendingMonster() && Enemy.GetMonsterCount() >= 1 && Duel.Turn > 1)
AI.SelectCard(Bot.Graveyard.GetMonsters());
/*{
List<ClientCard> cards = new List<ClientCard>(Bot.Graveyard.GetMatchingCards(card => (card.Race & (int)CardRace.Machine) > 0));
cards.Sort(CardContainer.CompareCardLevel); ClientCard selectedCard = null;
for (int i = cards.Count - 1; i >= 0; --i)
{ {
AI.SelectCard(Bot.Graveyard.GetHighestAttackMonster()); ClientCard card = cards[i];
if ((selectedCard == null || card.Attack > selectedCard.Attack))
{
selectedCard = card;
break;
}
}
if (selectedCard != null)
{
AI.SelectCard(selectedCard);
return true; return true;
} }
return false; }*/
return true;
} }
private bool 恶德Effect() private bool 恶德Effect()
{ {
...@@ -247,7 +270,7 @@ namespace WindBot.Game.AI.Decks ...@@ -247,7 +270,7 @@ namespace WindBot.Game.AI.Decks
if (!Util.IsAllEnemyBetter(true)) if (!Util.IsAllEnemyBetter(true))
return false; return false;
ClientCard selected = Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive()).OrderByDescending(card => card.Attack).FirstOrDefault(); ClientCard selected = Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive()).OrderByDescending(card => card.Attack).FirstOrDefault();
if (selected.Attack >=2400) if (selected.Attack >= 2400)
{ {
AI.SelectCard(selected); AI.SelectCard(selected);
return true; return true;
...@@ -326,8 +349,7 @@ namespace WindBot.Game.AI.Decks ...@@ -326,8 +349,7 @@ namespace WindBot.Game.AI.Decks
} }
private bool 双角兽Effect() private bool 双角兽Effect()
{ {
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }) && !Bot.HasInMonstersZone(new[] { CardId.最强战旗, CardId.钢机神 }))
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
{ {
AI.SelectCard(CardId.瞄准鹰, CardId.双角兽, CardId.工匠无人机, CardId.突击坦克, CardId.社员, CardId.旗兽, CardId.恶德, CardId.钢机神, CardId.最强战旗); AI.SelectCard(CardId.瞄准鹰, CardId.双角兽, CardId.工匠无人机, CardId.突击坦克, CardId.社员, CardId.旗兽, CardId.恶德, CardId.钢机神, CardId.最强战旗);
DoubleTribute = true; DoubleTribute = true;
...@@ -364,7 +386,7 @@ namespace WindBot.Game.AI.Decks ...@@ -364,7 +386,7 @@ namespace WindBot.Game.AI.Decks
} }
private bool 瞄准鹰summon2() private bool 瞄准鹰summon2()
{ {
if (Bot.GetCountCardInZone(Bot.Hand, CardId.瞄准鹰) >= 2 ) if (Bot.GetCountCardInZone(Bot.Hand, CardId.瞄准鹰) >= 2)
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 })) if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
if (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0) if (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0)
return true; return true;
...@@ -383,7 +405,7 @@ namespace WindBot.Game.AI.Decks ...@@ -383,7 +405,7 @@ namespace WindBot.Game.AI.Decks
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level <= 4 && card.IsFaceup()) >= 2 && Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.社员 })) if (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level <= 4 && card.IsFaceup()) >= 2 && Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.社员 }))
{ {
AI.SelectCard(CardId.瞄准鹰,CardId.突击坦克, CardId.成金恐龙王, CardId.社员, CardId.旗兽); AI.SelectCard(CardId.瞄准鹰, CardId.突击坦克, CardId.成金恐龙王, CardId.社员, CardId.旗兽);
AI.SelectNextCard(CardId.瞄准鹰, CardId.突击坦克, CardId.成金恐龙王, CardId.社员, CardId.旗兽); AI.SelectNextCard(CardId.瞄准鹰, CardId.突击坦克, CardId.成金恐龙王, CardId.社员, CardId.旗兽);
AI.SelectThirdCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.社员); AI.SelectThirdCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.社员);
return true; return true;
...@@ -393,11 +415,11 @@ namespace WindBot.Game.AI.Decks ...@@ -393,11 +415,11 @@ namespace WindBot.Game.AI.Decks
private bool 无人机Effect() private bool 无人机Effect()
{ {
if ((Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5)+ Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) <= 2 ) if ((Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5) + Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) <= 2)
{ {
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level > 5) > 2) if (Bot.Hand.GetMatchingCardsCount(card => card.Level > 5) > 2)
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德); AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德);
else if (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level > 5) == 1 && (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5) + Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) == 1) else if (Bot.Hand.GetMatchingCardsCount(card => card.Level > 5) == 1 && (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5) + Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) == 1)
{ {
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德); AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德);
return true; return true;
...@@ -413,7 +435,7 @@ namespace WindBot.Game.AI.Decks ...@@ -413,7 +435,7 @@ namespace WindBot.Game.AI.Decks
if (Util.IsOneEnemyBetterThanValue(1900, false)) if (Util.IsOneEnemyBetterThanValue(1900, false))
{ {
foreach (ClientCard m in Bot.Hand) foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m) ; AI.SelectCard(m);
foreach (ClientCard mon in Enemy.GetMonsters()) foreach (ClientCard mon in Enemy.GetMonsters())
if (mon.Level >= 9) if (mon.Level >= 9)
AI.SelectNextCard(mon); AI.SelectNextCard(mon);
...@@ -448,7 +470,7 @@ namespace WindBot.Game.AI.Decks ...@@ -448,7 +470,7 @@ namespace WindBot.Game.AI.Decks
} }
private bool 圣防Repos() private bool 圣防Repos()
{ {
if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1) if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && Enemy.Graveyard.GetMatchingCardsCount(card => card.IsCode(CardId.暗黑释放)) < 3)
{ {
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster()) if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster())
return true; return true;
......
...@@ -40,10 +40,11 @@ namespace WindBot.Game.AI.Decks ...@@ -40,10 +40,11 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel) : base(ai, duel)
{ {
AddExecutor(ExecutorType.SpSummon); AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, CardId.七星道法师,七星道法师Effect); AddExecutor(ExecutorType.Activate, CardId.七星道法师,七星道法师Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff); AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff);
AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.破坏之剑士, DefaultMonsterSummon); AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.恶魔召唤, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.恶魔召唤, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.雅灭鲁拉, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.雅灭鲁拉, DefaultMonsterSummon);
...@@ -68,7 +69,8 @@ namespace WindBot.Game.AI.Decks ...@@ -68,7 +69,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.青眼白龙, 圣防Repos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, 圣防Repos);
AddExecutor(ExecutorType.SpellSet); AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect); //AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect); AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
...@@ -254,7 +256,15 @@ namespace WindBot.Game.AI.Decks ...@@ -254,7 +256,15 @@ namespace WindBot.Game.AI.Decks
return true; return true;
return false; return false;
} }
private bool 圣防Repos()
{
if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && !Bot.HasInMonstersZone(CardId.人造人) && Enemy.Graveyard.GetMatchingCardsCount(card => card.IsCode(CardId.暗黑释放)) < 3)
{
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster())
return true;
}
return false;
}
} }
......
...@@ -46,10 +46,11 @@ namespace WindBot.Game.AI.Decks ...@@ -46,10 +46,11 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel) : base(ai, duel)
{ {
AddExecutor(ExecutorType.SpSummon); AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, CardId.七星道法师, 七星道法师Effect); AddExecutor(ExecutorType.Activate, CardId.七星道法师, 七星道法师Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff); AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff);
AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.破坏之剑士, DefaultMonsterSummon); AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.恶魔召唤, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.恶魔召唤, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.雅灭鲁拉, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.雅灭鲁拉, DefaultMonsterSummon);
...@@ -73,7 +74,8 @@ namespace WindBot.Game.AI.Decks ...@@ -73,7 +74,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Summon, CardId.七星道法师); AddExecutor(ExecutorType.Summon, CardId.七星道法师);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.青眼白龙, 圣防Repos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, 圣防Repos);
AddExecutor(ExecutorType.SpellSet); AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect); //AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect); AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
...@@ -258,7 +260,15 @@ namespace WindBot.Game.AI.Decks ...@@ -258,7 +260,15 @@ namespace WindBot.Game.AI.Decks
return true; return true;
return false; return false;
} }
private bool 圣防Repos()
{
if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && !Bot.HasInMonstersZone(CardId.人造人) && Enemy.Graveyard.GetMatchingCardsCount(card => card.IsCode(CardId.暗黑释放)) < 3)
{
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster())
return true;
}
return false;
}
} }
} }
\ No newline at end of file
...@@ -34,6 +34,7 @@ namespace WindBot.Game.AI.Decks ...@@ -34,6 +34,7 @@ namespace WindBot.Game.AI.Decks
public const int 减俸 = 120183062; public const int 减俸 = 120183062;
public const int 左迁 = 120183063; public const int 左迁 = 120183063;
public const int 冻结 = 120183064; public const int 冻结 = 120183064;
public const int 暗黑释放 = 120105013;
} }
public SaikyoBattleFlagExecutor(GameAI ai, Duel duel) public SaikyoBattleFlagExecutor(GameAI ai, Duel duel)
...@@ -48,6 +49,8 @@ namespace WindBot.Game.AI.Decks ...@@ -48,6 +49,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.突击坦克, 突击坦克Effect); AddExecutor(ExecutorType.Activate, CardId.突击坦克, 突击坦克Effect);
AddExecutor(ExecutorType.Activate, CardId.瞄准鹰, 瞄准鹰Effect); AddExecutor(ExecutorType.Activate, CardId.瞄准鹰, 瞄准鹰Effect);
AddExecutor(ExecutorType.Activate, CardId.双角兽, 双角兽Effect); AddExecutor(ExecutorType.Activate, CardId.双角兽, 双角兽Effect);
AddExecutor(ExecutorType.Repos, CardId.双角兽, 双角兽summon);
AddExecutor(ExecutorType.Repos, CardId.瞄准鹰, 瞄准鹰summon);
AddExecutor(ExecutorType.Repos, CardId.最强战旗, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.最强战旗, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.钢机神, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.钢机神, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.恶德, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, CardId.恶德, DefaultMonsterRepos);
...@@ -69,7 +72,7 @@ namespace WindBot.Game.AI.Decks ...@@ -69,7 +72,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.最强战旗, 最强战旗Effect); AddExecutor(ExecutorType.Activate, CardId.最强战旗, 最强战旗Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect); AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神Effect); AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神Effect);
AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神1Effect); //AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神1Effect);
AddExecutor(ExecutorType.MonsterSet, CardId.成金恐龙王); AddExecutor(ExecutorType.MonsterSet, CardId.成金恐龙王);
AddExecutor(ExecutorType.Activate, CardId.工匠无人机,无人机Effect); AddExecutor(ExecutorType.Activate, CardId.工匠无人机,无人机Effect);
AddExecutor(ExecutorType.Summon, CardId.工匠无人机); AddExecutor(ExecutorType.Summon, CardId.工匠无人机);
...@@ -167,7 +170,7 @@ namespace WindBot.Game.AI.Decks ...@@ -167,7 +170,7 @@ namespace WindBot.Game.AI.Decks
{ {
if (!DoubleTribute) return false; if (!DoubleTribute) return false;
else else
AI.SelectCard(CardId.双角兽); AI.SelectMaterials(CardId.双角兽);
DoubleTribute = false; DoubleTribute = false;
return true; return true;
} }
...@@ -208,21 +211,39 @@ namespace WindBot.Game.AI.Decks ...@@ -208,21 +211,39 @@ namespace WindBot.Game.AI.Decks
} }
private bool 钢机神Effect() private bool 钢机神Effect()
{ {
if (Duel.Turn == 1) return false; if (Duel.Turn == 1)
{
return false;
}
else if (Enemy.HasAttackingMonster() || Enemy.GetMonsterCount() < 1) else if (Enemy.HasAttackingMonster() || Enemy.GetMonsterCount() < 1)
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.双角兽, CardId.瞄准鹰); AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.双角兽, CardId.瞄准鹰);
else AI.SelectCard(Bot.Graveyard.GetHighestLevelMonster());
return true; return true;
} }
private bool 钢机神1Effect() private bool 钢机神1Effect()
{ {
foreach (ClientCard m in Bot.Graveyard) if (Enemy.HasDefendingMonster() && Enemy.GetMonsterCount() >= 1 && Duel.Turn > 1)
if (!Enemy.HasAttackingMonster() && Enemy.GetMonsterCount() >= 1) AI.SelectCard(Bot.Graveyard.GetMonsters());
/*{
List<ClientCard> cards = new List<ClientCard>(Bot.Graveyard.GetMatchingCards(card => (card.Race & (int)CardRace.Machine) > 0));
cards.Sort(CardContainer.CompareCardLevel); ClientCard selectedCard = null;
for (int i = cards.Count - 1; i >= 0; --i)
{ {
if (m.Race == (int)CardRace.Machine ) ClientCard card = cards[i];
AI.SelectCard(m); if ((selectedCard == null || card.Attack > selectedCard.Attack))
{
selectedCard = card;
break;
}
}
if (selectedCard != null)
{
AI.SelectCard(selectedCard);
return true; return true;
} }
return false; }*/
return true;
} }
private bool 恶德Effect() private bool 恶德Effect()
{ {
...@@ -328,8 +349,7 @@ namespace WindBot.Game.AI.Decks ...@@ -328,8 +349,7 @@ namespace WindBot.Game.AI.Decks
} }
private bool 双角兽Effect() private bool 双角兽Effect()
{ {
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }) && !Bot.HasInMonstersZone(new[] { CardId.最强战旗, CardId.钢机神 }))
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
{ {
AI.SelectCard(CardId.瞄准鹰, CardId.双角兽, CardId.工匠无人机, CardId.突击坦克, CardId.社员, CardId.旗兽, CardId.恶德, CardId.钢机神, CardId.最强战旗); AI.SelectCard(CardId.瞄准鹰, CardId.双角兽, CardId.工匠无人机, CardId.突击坦克, CardId.社员, CardId.旗兽, CardId.恶德, CardId.钢机神, CardId.最强战旗);
DoubleTribute = true; DoubleTribute = true;
...@@ -397,9 +417,9 @@ namespace WindBot.Game.AI.Decks ...@@ -397,9 +417,9 @@ namespace WindBot.Game.AI.Decks
if ((Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5)+ Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) <= 2 ) if ((Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5)+ Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) <= 2 )
{ {
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level > 5) > 2) if (Bot.Hand.GetMatchingCardsCount(card => card.Level > 5) > 2)
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德); AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德);
else if (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level > 5) == 1 && (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5) + Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) == 1) else if (Bot.Hand.GetMatchingCardsCount(card => card.Level > 5) == 1 && (Bot.MonsterZone.GetMatchingCardsCount(card => card.Level < 5) + Bot.Hand.GetMatchingCardsCount(card => card.Level < 5)) == 1)
{ {
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德); AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德);
return true; return true;
...@@ -450,7 +470,7 @@ namespace WindBot.Game.AI.Decks ...@@ -450,7 +470,7 @@ namespace WindBot.Game.AI.Decks
} }
private bool 圣防Repos() private bool 圣防Repos()
{ {
if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1) if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && Enemy.Graveyard.GetMatchingCardsCount(card => card.IsCode(CardId.暗黑释放)) < 3)
{ {
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster()) if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5) >= 2 && !Bot.HasDefendingMonster())
return true; return true;
......
...@@ -31,6 +31,7 @@ namespace WindBot.Game.AI.Decks ...@@ -31,6 +31,7 @@ namespace WindBot.Game.AI.Decks
public const int 落穴 = 120150019; public const int 落穴 = 120150019;
public const int 圣防 = 120198003; public const int 圣防 = 120198003;
public const int 炸甲 = 120194005; public const int 炸甲 = 120194005;
public const int 暗黑释放 = 120105013;
} }
public TheLegendExecutor(GameAI ai, Duel duel) public TheLegendExecutor(GameAI ai, Duel duel)
...@@ -43,14 +44,13 @@ namespace WindBot.Game.AI.Decks ...@@ -43,14 +44,13 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.机器栗子); AddExecutor(ExecutorType.Activate, CardId.机器栗子);
AddExecutor(ExecutorType.Activate, CardId.连击龙); AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect); AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Repos, CardId.青眼白龙, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos,DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.连击龙, DefaultMonsterRepos);
AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon); AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.人造人, DefaultMonsterSummon); AddExecutor(ExecutorType.SummonOrSet, CardId.人造人, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.机器栗子,栗子summon); AddExecutor(ExecutorType.Summon, CardId.机器栗子,栗子summon);
AddExecutor(ExecutorType.Repos, CardId.机器栗子, 栗子summon2);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect); AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect2); AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect2);
AddExecutor(ExecutorType.MonsterSet, CardId.斗牛士, Monsterset); AddExecutor(ExecutorType.MonsterSet, CardId.斗牛士, Monsterset);
...@@ -58,7 +58,7 @@ namespace WindBot.Game.AI.Decks ...@@ -58,7 +58,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.凤凰龙); AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect); AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.Repos, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.成金恐龙王, 成金恐龙王Summon); AddExecutor(ExecutorType.SummonOrSet, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.血腥魔兽人); AddExecutor(ExecutorType.SummonOrSet, CardId.血腥魔兽人);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙, 凤凰龙summon); AddExecutor(ExecutorType.Summon, CardId.凤凰龙, 凤凰龙summon);
...@@ -222,7 +222,13 @@ namespace WindBot.Game.AI.Decks ...@@ -222,7 +222,13 @@ namespace WindBot.Game.AI.Decks
} }
private bool 栗子summon() private bool 栗子summon()
{ {
if (Bot.HasInHand(CardId.机器栗子) && (Bot.GetMonstersInMainZone().Count == 0)) if (Bot.HasInGraveyard(CardId.机器栗子) && (Bot.GetMonstersInMainZone().Count == 0))
return true;
return false;
}
private bool 栗子summon2()
{
if (Bot.HasInGraveyard(CardId.机器栗子) && (Bot.GetMonstersInMainZone().Count == 1))
return true; return true;
return false; return false;
} }
...@@ -265,7 +271,7 @@ namespace WindBot.Game.AI.Decks ...@@ -265,7 +271,7 @@ namespace WindBot.Game.AI.Decks
} }
private bool 圣防Repos() private bool 圣防Repos()
{ {
if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && !Bot.HasInMonstersZone(CardId.人造人)) if (Enemy.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.SpellCaster) > 0) >= 4 && Enemy.GetSpellCountWithoutField() >= 1 && !Bot.HasInMonstersZone(CardId.人造人) && Enemy.Graveyard.GetMatchingCardsCount(card => card.IsCode(CardId.暗黑释放)) < 3)
{ {
if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5 ) >= 2 && !Bot.HasDefendingMonster()) if (Bot.MonsterZone.GetMatchingCardsCount(card => card.IsAttack() && card.Level >= 5 ) >= 2 && !Bot.HasDefendingMonster())
return true; return true;
......
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