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

update

parent 64571ab5
Pipeline #6141 passed with stage
in 32 seconds
#created by ...
#main
120183024
120193002
120155015
120181011
120181011
120181011
......@@ -10,15 +10,15 @@
120181001
120193002
120193002
120193002
120183002
120183002
120181001
120181001
120155015
120155015
120155015
120183024
120183024
120183030
120183030
......
......@@ -41,8 +41,8 @@
"facedownmonstername": "员工",
"activate": [
"我发动{0}。",
"我使用{0}的贿赂效果。",
"我使用{0}的贿赂力量。"
"我使用{0}的效果。",
"我使用{0}偷偷贿赂。"
],
"summon": [
"召唤{0}。他们都是洋溢着梦想与希望,有着美好前程的宝贵人才。",
......
......@@ -31,6 +31,7 @@ namespace WindBot.Game.AI.Decks
public const int 落穴 = 120150019;
public const int 圣防 = 120198003;
public const int 炸甲 = 120194005;
public const int 暗黑释放 = 120105013;
}
public DragunExecutor(GameAI ai, Duel duel)
......@@ -43,22 +44,21 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.机器栗子);
AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Repos, CardId.青眼白龙, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.连击龙, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, 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.死苏, 死苏effect2);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect2);
AddExecutor(ExecutorType.MonsterSet, CardId.斗牛士, Monsterset);
AddExecutor(ExecutorType.Summon, CardId.斗牛士);
AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.Repos, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.血腥魔兽人);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙, 凤凰龙summon);
......@@ -71,18 +71,18 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.SpellSet, CardId.对死者的供奉);
AddExecutor(ExecutorType.MonsterSet, CardId.圣精灵);
AddExecutor(ExecutorType.MonsterSet, CardId.凤凰龙);
AddExecutor(ExecutorType.MonsterSet, CardId.机器栗子);
AddExecutor(ExecutorType.MonsterSet, CardId.成金恐龙王);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
AddExecutor(ExecutorType.Repos, CardId.青眼白龙, 圣防Repos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, 圣防Repos);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
}
......@@ -150,10 +150,10 @@ namespace WindBot.Game.AI.Decks
return true;
}
else if (Bot.HasInHand(new[] {
CardId.连击龙,
CardId.青眼白龙,
CardId.人造人,
CardId.人造人,
CardId.破坏之剑士,
}))
......@@ -162,13 +162,13 @@ namespace WindBot.Game.AI.Decks
}
private bool 落穴Effect()
{
foreach (ClientCard n in Duel.LastSummonedCards)
{
if (n.Attack >= 1900)
return true;
}
{
foreach (ClientCard n in Duel.LastSummonedCards)
{
if (n.Attack >= 1900)
return true;
}
return false;
}
private bool 圣防Effect()
......@@ -179,8 +179,8 @@ namespace WindBot.Game.AI.Decks
}
private bool 炸甲Effect()
{
if (Enemy.BattlingMonster.Attack > 1500)
return true;
if (Enemy.BattlingMonster.Attack > 1500)
return true;
return false;
}
private bool 死苏effect()
......@@ -194,7 +194,7 @@ namespace WindBot.Game.AI.Decks
if (!Bot.HasInGraveyard(targets) || !Enemy.HasInGraveyard(targets))
{
AI.SelectCard(targets);
return true;
return true;
}
return false;
}
......@@ -203,10 +203,10 @@ namespace WindBot.Game.AI.Decks
if (!Util.IsAllEnemyBetter(true))
return false;
ClientCard selected = Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive()).OrderByDescending(card => card.Attack).FirstOrDefault();
if (selected.Attack >=2400)
if (selected.Attack >= 2400)
{
AI.SelectCard(selected);
return true;
return true;
}
return false;
}
......@@ -222,13 +222,19 @@ namespace WindBot.Game.AI.Decks
}
private bool 栗子summon()
{
if (Bot.HasInHand(CardId.机器栗子) && (Bot.GetMonstersInMainZone().Count == 0))
return true;
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 false;
}
private bool 凤凰龙summon()
{
if (Bot.HasInGraveyard(new[] { CardId.连击龙, CardId.青眼白龙 }))
if (Bot.HasInGraveyard(new[] { CardId.连击龙, CardId.青眼白龙 }))
return true;
return false;
}
......@@ -252,27 +258,26 @@ namespace WindBot.Game.AI.Decks
}
private bool 斗牛士Effect()
{
//if (Util.IsOneEnemyBetterThanValue(1900, false))
{
{
foreach (ClientCard o in Bot.Graveyard)
AI.SelectCard(o);
if (Enemy.GetMonsters().GetHighestAttackMonster() == null)
AI.SelectNextCard(Enemy.MonsterZone.GetHighestAttackMonster());
AI.SelectNextCard(Enemy.MonsterZone.GetHighestAttackMonster());
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.人造人))
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;
}
}
}
......
......@@ -34,20 +34,23 @@ namespace WindBot.Game.AI.Decks
public const int 减俸 = 120183062;
public const int 左迁 = 120183063;
public const int 冻结 = 120183064;
public const int 暗黑释放 = 120105013;
}
public MathMechExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Activate, CardId.铁之重击);
AddExecutor(ExecutorType.Activate, CardId.铁之重击);
AddExecutor(ExecutorType.Activate, CardId.成金恐龙王);
AddExecutor(ExecutorType.Activate, CardId.恶德, 恶德Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff);
AddExecutor(ExecutorType.Activate, CardId.最强战旗, 最强战旗Eff);
AddExecutor(ExecutorType.Activate, CardId.突击坦克, 突击坦克Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff);
AddExecutor(ExecutorType.Activate, CardId.最强战旗, 最强战旗Eff);
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);
......@@ -63,19 +66,19 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Summon, CardId.瞄准鹰, 瞄准鹰summon);
AddExecutor(ExecutorType.Summon, CardId.瞄准鹰, 瞄准鹰summon2);
AddExecutor(ExecutorType.Summon, CardId.瞄准鹰, 瞄准鹰summon3);
AddExecutor(ExecutorType.Summon, CardId.双角兽, 瞄准鹰双角兽summon);
AddExecutor(ExecutorType.Summon, CardId.双角兽, 瞄准鹰双角兽summon);
AddExecutor(ExecutorType.Summon, CardId.成金恐龙王, 瞄准鹰成金恐龙王summon);
AddExecutor(ExecutorType.Summon, CardId.突击坦克, 瞄准鹰坦克summon);
AddExecutor(ExecutorType.Summon, CardId.突击坦克, 瞄准鹰坦克summon);
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.Activate, CardId.工匠无人机,无人机Effect);
AddExecutor(ExecutorType.Activate, CardId.工匠无人机, 无人机Effect);
AddExecutor(ExecutorType.Summon, CardId.工匠无人机);
AddExecutor(ExecutorType.Summon, CardId.突击坦克, 突击坦克summon);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect);
AddExecutor(ExecutorType.SummonOrSet, CardId.旗兽, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.社员, DefaultMonsterSummon);
AddExecutor(ExecutorType.MonsterSet, CardId.工匠无人机);
......@@ -83,18 +86,18 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.MonsterSet, CardId.瞄准鹰);
AddExecutor(ExecutorType.MonsterSet, CardId.双角兽);
AddExecutor(ExecutorType.Activate, CardId.世纪末兽机界, DefaultField);
AddExecutor(ExecutorType.Activate, CardId.兽之拳,兽之拳Effect);
AddExecutor(ExecutorType.Activate, CardId.左迁, 左迁1Effect);
AddExecutor(ExecutorType.Activate, CardId.兽之拳, 兽之拳Effect);
AddExecutor(ExecutorType.Activate, CardId.左迁, 左迁1Effect);
AddExecutor(ExecutorType.Activate, CardId.减俸);
AddExecutor(ExecutorType.Activate, CardId.左迁,左迁2Effect);
AddExecutor(ExecutorType.Activate, CardId.冻结,冻结Effect);
AddExecutor(ExecutorType.Activate, CardId.左迁, 左迁2Effect);
AddExecutor(ExecutorType.Activate, CardId.冻结, 冻结Effect);
AddExecutor(ExecutorType.Activate, CardId.兽之拳);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
AddExecutor(ExecutorType.Repos, CardId.最强战旗, 圣防Repos);
AddExecutor(ExecutorType.Repos, CardId.钢机神, 圣防Repos);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.铁之重击);
AddExecutor(ExecutorType.SpellSet, CardId.死苏);
......@@ -139,17 +142,17 @@ namespace WindBot.Game.AI.Decks
}
}
if (HintMsgForMaxSelect.Contains(hint))
if (HintMsgForMaxSelect.Contains(hint))
{
//select max cards
//select max cards
while (selected.Count < max)
{
ClientCard card = cards[Program.Rand.Next(cards.Count)];
selected.Add(card);
cards.Remove(card);
}
}
return selected;
ClientCard card = cards[Program.Rand.Next(cards.Count)];
selected.Add(card);
cards.Remove(card);
}
}
return selected;
}
public override bool OnSelectHand()
......@@ -164,20 +167,20 @@ namespace WindBot.Game.AI.Decks
DoubleTribute = false;
}
private bool DefaultDoubleSummon()
{
{
if (!DoubleTribute) return false;
else
AI.SelectCard(CardId.双角兽);
DoubleTribute = false;
return true;
AI.SelectMaterials(CardId.双角兽);
DoubleTribute = false;
return true;
}
private bool 左迁1Effect()
{
if (Enemy.BattlingMonster.Attack > 2000)
if (Enemy.BattlingMonster.Attack > 2000)
{
AI.SelectCard(Enemy.BattlingMonster);
return true;
AI.SelectCard(Enemy.BattlingMonster);
return true;
}
return false;
}
......@@ -186,7 +189,7 @@ namespace WindBot.Game.AI.Decks
ClientCard target = Util.GetBestEnemyMonster(true, true);
if (target != null)
AI.SelectCard(target);
return true;
return true;
}
private bool 冻结Effect()
{
......@@ -207,20 +210,40 @@ namespace WindBot.Game.AI.Decks
return true;
}
private bool 钢机神Effect()
{
if (Duel.Turn == 1) return false;
{
if (Duel.Turn == 1)
{
return false;
}
else if (Enemy.HasAttackingMonster() || Enemy.GetMonsterCount() < 1)
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.双角兽, CardId.瞄准鹰);
else AI.SelectCard(Bot.Graveyard.GetHighestLevelMonster());
return true;
}
private bool 钢机神1Effect()
{
if (!Enemy.HasAttackingMonster() && Enemy.GetMonsterCount() >= 1)
{
AI.SelectCard(Bot.Graveyard.GetHighestAttackMonster());
return true;
}
return false;
{
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)
{
ClientCard card = cards[i];
if ((selectedCard == null || card.Attack > selectedCard.Attack))
{
selectedCard = card;
break;
}
}
if (selectedCard != null)
{
AI.SelectCard(selectedCard);
return true;
}
}*/
return true;
}
private bool 恶德Effect()
{
......@@ -229,7 +252,7 @@ namespace WindBot.Game.AI.Decks
AI.SelectNextCard(CardId.左迁, CardId.减俸);
AI.SelectNextCard(CardId.左迁, CardId.减俸);
return true;
}
private bool 兽之拳Effect()
{
......@@ -247,10 +270,10 @@ namespace WindBot.Game.AI.Decks
if (!Util.IsAllEnemyBetter(true))
return false;
ClientCard selected = Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive()).OrderByDescending(card => card.Attack).FirstOrDefault();
if (selected.Attack >=2400)
if (selected.Attack >= 2400)
{
AI.SelectCard(selected);
return true;
return true;
}
return false;
}
......@@ -296,7 +319,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 突击坦克Effect()
{
{
foreach (ClientCard mon in Enemy.GetMonsters())
if (mon.Level >= 9)
AI.SelectCard(mon);
......@@ -320,14 +343,13 @@ namespace WindBot.Game.AI.Decks
private bool 双角兽summon()
{
if (Bot.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.Machine) > 0) >= 3 && Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
if (Bot.Graveyard.GetMatchingCardsCount(card => (card.Race & (int)CardRace.Machine) > 0) >= 3 && Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
return true;
return false;
}
private bool 双角兽Effect()
{
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }) && !Bot.HasInMonstersZone(new[] { CardId.最强战旗, CardId.钢机神 }))
{
AI.SelectCard(CardId.瞄准鹰, CardId.双角兽, CardId.工匠无人机, CardId.突击坦克, CardId.社员, CardId.旗兽, CardId.恶德, CardId.钢机神, CardId.最强战旗);
DoubleTribute = true;
......@@ -354,79 +376,79 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 瞄准鹰summon()
{
foreach (ClientCard m in Bot.GetMonsters())
if (m.HasAttribute(CardAttribute.Light) && m.Level <= 4 && m.IsFaceup())
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
if (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0)
return true;
{
foreach (ClientCard m in Bot.GetMonsters())
if (m.HasAttribute(CardAttribute.Light) && m.Level <= 4 && m.IsFaceup())
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
if (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0)
return true;
return false;
}
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 (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0)
return true;
if (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0)
return true;
return false;
}
private bool 瞄准鹰summon3()
{
if (Bot.HasInHand(CardId.双角兽) || Bot.HasInHand(CardId.突击坦克) || Bot.HasInHand(CardId.成金恐龙王))
if (Bot.HasInHand(CardId.双角兽) || Bot.HasInHand(CardId.突击坦克) || Bot.HasInHand(CardId.成金恐龙王))
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
if (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0)
return true;
if (Enemy.MonsterZone.GetMatchingCardsCount(card => card.Level >= 7) > 0)
return true;
return false;
}
private bool 瞄准鹰Effect()
{
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.SelectNextCard(CardId.瞄准鹰, CardId.突击坦克, CardId.成金恐龙王, CardId.社员, CardId.旗兽);
AI.SelectThirdCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.社员);
return true;
AI.SelectCard(CardId.瞄准鹰, CardId.突击坦克, CardId.成金恐龙王, CardId.社员, CardId.旗兽);
AI.SelectNextCard(CardId.瞄准鹰, CardId.突击坦克, CardId.成金恐龙王, CardId.社员, CardId.旗兽);
AI.SelectThirdCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.社员);
return true;
}
return false;
}
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.恶德);
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.恶德);
return true;
return true;
}
return false;
}
else
AI.SelectCard(CardId.瞄准鹰, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.旗兽);
return true;
AI.SelectCard(CardId.瞄准鹰, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.旗兽);
return true;
}
private bool 最强战旗Effect()
{
if (Util.IsOneEnemyBetterThanValue(1900, false))
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m) ;
if (Util.IsOneEnemyBetterThanValue(1900, false))
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
foreach (ClientCard mon in Enemy.GetMonsters())
if (mon.Level >= 9)
AI.SelectNextCard(mon);
else if (mon.Level >= 8)
AI.SelectNextCard(mon);
else if (mon.Level >= 7)
AI.SelectNextCard(mon);
if (mon.Level >= 9)
AI.SelectNextCard(mon);
else if (mon.Level >= 8)
AI.SelectNextCard(mon);
else if (mon.Level >= 7)
AI.SelectNextCard(mon);
else if (mon.Level >= 5)
AI.SelectNextCard(mon);
return true;
}
return false;
}
return false;
}
private bool 最强战旗Eff()
{
if (Util.IsOneEnemyBetterThanValue(2500, false))
......@@ -448,7 +470,7 @@ namespace WindBot.Game.AI.Decks
}
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())
return true;
......
......@@ -40,10 +40,11 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel)
{
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, CardId.七星道法师,七星道法师Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff);
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);
......@@ -68,7 +69,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.青眼白龙, 圣防Repos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, 圣防Repos);
AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
......@@ -254,7 +256,15 @@ namespace WindBot.Game.AI.Decks
return true;
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
: base(ai, duel)
{
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, CardId.七星道法师, 七星道法师Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Eff);
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);
......@@ -73,7 +74,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Summon, CardId.七星道法师);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.青眼白龙, 圣防Repos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, 圣防Repos);
AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
......@@ -258,7 +260,15 @@ namespace WindBot.Game.AI.Decks
return true;
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
public const int 减俸 = 120183062;
public const int 左迁 = 120183063;
public const int 冻结 = 120183064;
public const int 暗黑释放 = 120105013;
}
public SaikyoBattleFlagExecutor(GameAI ai, Duel duel)
......@@ -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.Repos, CardId.双角兽, 双角兽summon);
AddExecutor(ExecutorType.Repos, CardId.瞄准鹰, 瞄准鹰summon);
AddExecutor(ExecutorType.Repos, CardId.最强战旗, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.钢机神, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.恶德, DefaultMonsterRepos);
......@@ -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.钢机神, 钢机神1Effect);
//AddExecutor(ExecutorType.Activate, CardId.钢机神, 钢机神1Effect);
AddExecutor(ExecutorType.MonsterSet, CardId.成金恐龙王);
AddExecutor(ExecutorType.Activate, CardId.工匠无人机,无人机Effect);
AddExecutor(ExecutorType.Summon, CardId.工匠无人机);
......@@ -167,7 +170,7 @@ namespace WindBot.Game.AI.Decks
{
if (!DoubleTribute) return false;
else
AI.SelectCard(CardId.双角兽);
AI.SelectMaterials(CardId.双角兽);
DoubleTribute = false;
return true;
}
......@@ -207,22 +210,40 @@ namespace WindBot.Game.AI.Decks
return true;
}
private bool 钢机神Effect()
{
if (Duel.Turn == 1) return false;
{
if (Duel.Turn == 1)
{
return false;
}
else if (Enemy.HasAttackingMonster() || Enemy.GetMonsterCount() < 1)
AI.SelectCard(CardId.最强战旗, CardId.钢机神, CardId.恶德, CardId.旗兽, CardId.突击坦克, CardId.工匠无人机, CardId.社员, CardId.双角兽, CardId.瞄准鹰);
return true;
else AI.SelectCard(Bot.Graveyard.GetHighestLevelMonster());
return true;
}
private bool 钢机神1Effect()
{
foreach (ClientCard m in Bot.Graveyard)
if (!Enemy.HasAttackingMonster() && Enemy.GetMonsterCount() >= 1)
{
if (m.Race == (int)CardRace.Machine )
AI.SelectCard(m);
return true;
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)
{
ClientCard card = cards[i];
if ((selectedCard == null || card.Attack > selectedCard.Attack))
{
selectedCard = card;
break;
}
}
if (selectedCard != null)
{
AI.SelectCard(selectedCard);
return true;
}
return false;
}*/
return true;
}
private bool 恶德Effect()
{
......@@ -327,9 +348,8 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 双角兽Effect()
{
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }))
{
if (Bot.HasInHand(new[] { CardId.最强战旗, CardId.钢机神, CardId.恶德 }) && !Bot.HasInMonstersZone(new[] { CardId.最强战旗, CardId.钢机神 }))
{
AI.SelectCard(CardId.瞄准鹰, CardId.双角兽, CardId.工匠无人机, CardId.突击坦克, CardId.社员, CardId.旗兽, CardId.恶德, CardId.钢机神, CardId.最强战旗);
DoubleTribute = true;
......@@ -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) > 2)
if (Bot.Hand.GetMatchingCardsCount(card => card.Level > 5) > 2)
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.恶德);
return true;
......@@ -450,7 +470,7 @@ namespace WindBot.Game.AI.Decks
}
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())
return true;
......
......@@ -31,6 +31,7 @@ namespace WindBot.Game.AI.Decks
public const int 落穴 = 120150019;
public const int 圣防 = 120198003;
public const int 炸甲 = 120194005;
public const int 暗黑释放 = 120105013;
}
public TheLegendExecutor(GameAI ai, Duel duel)
......@@ -43,14 +44,13 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.机器栗子);
AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Repos, CardId.青眼白龙, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.破坏之剑士, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, CardId.连击龙, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos,DefaultMonsterRepos);
AddExecutor(ExecutorType.SummonOrSet, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.人造人, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.机器栗子,栗子summon);
AddExecutor(ExecutorType.Repos, CardId.机器栗子, 栗子summon2);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect);
AddExecutor(ExecutorType.Activate, CardId.死苏, 死苏effect2);
AddExecutor(ExecutorType.MonsterSet, CardId.斗牛士, Monsterset);
......@@ -58,7 +58,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.Repos, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.成金恐龙王, 成金恐龙王Summon);
AddExecutor(ExecutorType.SummonOrSet, CardId.血腥魔兽人);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙, 凤凰龙summon);
......@@ -222,10 +222,16 @@ namespace WindBot.Game.AI.Decks
}
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 false;
}
private bool 凤凰龙summon()
{
if (Bot.HasInGraveyard(new[] { CardId.连击龙, CardId.青眼白龙 }))
......@@ -265,7 +271,7 @@ namespace WindBot.Game.AI.Decks
}
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())
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