Commit 2e7936cf authored by mercury233's avatar mercury233

add decks from Tic-Tac-Toc

ydks are made by me
parent 8ffe9863
#created by ...
#main
75498415
75498415
75498415
81105204
81105204
81105204
58820853
58820853
58820853
49003716
49003716
49003716
85215458
85215458
85215458
2009101
2009101
2009101
22835145
22835145
22835145
46710683
46710683
46710683
53129443
5318639
5318639
5318639
91351370
91351370
91351370
44095762
44095762
44095762
59839761
59839761
59839761
70342110
70342110
70342110
#extra
33236860
33236860
33236860
9012916
9012916
9012916
69031175
69031175
69031175
76913983
76913983
76913983
17377751
17377751
17377751
!side
#created by ...
#main
4162088
68774379
70095154
70095154
70095154
59281922
59281922
59281922
3370104
67159705
26439287
26439287
26439287
76986005
23893227
23893227
23893227
3657444
11961740
11961740
24094653
24094653
37630732
37630732
37630732
52875873
52875873
53129443
66607691
95286165
29401950
29401950
44095762
44095762
91989718
92773018
92773018
97077563
97077563
3819470
#extra
1546123
1546123
1546123
74157028
74157028
74157028
10443957
10443957
10443957
58069384
58069384
58069384
!side
#created by ...
#main
25524823
36521459
3825890
62473983
17393207
17393207
17393207
25262697
30213599
30213599
30213599
24317029
24317029
24317029
93023479
93023479
93023479
72405967
72405967
5318639
5318639
5318639
14087893
14087893
70000776
70000776
47355498
47355498
47355498
29401950
29401950
30450531
30450531
53582587
53582587
70342110
70342110
84749824
90434657
90434657
#extra
44508094
!side
#created by ...
#main
52738610
52738610
52738610
23401839
23401839
23401839
95492061
95492061
95492061
30312361
30312361
90307777
88240999
88240999
52068432
52068432
52068432
74122412
74122412
26674724
89463537
99185129
99185129
99185129
32807846
53129443
96729612
14735698
14735698
14735698
51124303
51124303
51124303
97211663
5318639
5318639
5318639
51452091
51452091
51452091
#extra
35952884
35952884
41517789
41517789
24696097
24696097
52687916
74586817
37192109
42566602
90953320
79606837
79606837
79606837
46772449
!side
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
[Deck("Blackwing", "AI_Blackwing")]
public class BlackwingExecutor : DefaultExecutor
{
public enum CardId
{
残夜之波刃剑鸟 = 81105204,
晓之希洛克 = 75498415,
苍炎之修罗 = 58820853,
黑枪之布拉斯特 = 49003716,
月影之卡鲁特 = 85215458,
疾风之盖尔 = 2009101,
极北之布利扎德 = 22835145,
银盾之密史脱拉 = 46710683,
Raigeki = 12580477,
DarkHole = 53129443,
MysticalSpaceTyphoon = 5318639,
黑旋风 = 91351370,
神圣防护罩 = 44095762,
三角乌鸦阵 = 59839761,
次元幽闭 = 70342110,
孤高之银风鸦 = 33236860,
黑羽龙 = 9012916,
铠翼鸦 = 69031175,
兵翼鸦 = 76913983,
煌星之怒剑鸟 = 17377751
}
public BlackwingExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, (int)CardId.黑旋风, 黑旋风);
AddExecutor(ExecutorType.SpSummon, (int)CardId.残夜之波刃剑鸟);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.残夜之波刃剑鸟);
AddExecutor(ExecutorType.Summon, (int)CardId.晓之希洛克, 晓之希洛克);
AddExecutor(ExecutorType.Summon, (int)CardId.苍炎之修罗, 苍炎之修罗);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.苍炎之修罗);
AddExecutor(ExecutorType.SpSummon, (int)CardId.黑枪之布拉斯特);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.黑枪之布拉斯特);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.月影之卡鲁特, 月影之卡鲁特);
AddExecutor(ExecutorType.SpSummon, (int)CardId.疾风之盖尔);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.疾风之盖尔);
AddExecutor(ExecutorType.Summon, (int)CardId.极北之布利扎德, 极北之布利扎德);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.银盾之密史脱拉);
AddExecutor(ExecutorType.SpSummon, (int)CardId.孤高之银风鸦);
AddExecutor(ExecutorType.SpSummon, (int)CardId.铠翼鸦);
AddExecutor(ExecutorType.SpSummon, (int)CardId.煌星之怒剑鸟);
AddExecutor(ExecutorType.SpSummon, (int)CardId.兵翼鸦);
AddExecutor(ExecutorType.SpSummon, (int)CardId.黑羽龙);
AddExecutor(ExecutorType.Activate, (int)CardId.神圣防护罩, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.次元幽闭, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.三角乌鸦阵, 三角乌鸦阵);
AddExecutor(ExecutorType.Activate, (int)CardId.三角乌鸦阵, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.极北之布利扎德);
AddExecutor(ExecutorType.Activate, (int)CardId.苍炎之修罗);
AddExecutor(ExecutorType.Activate, (int)CardId.月影之卡鲁特, 攻击力上升效果);
AddExecutor(ExecutorType.Activate, (int)CardId.晓之希洛克, 攻击力上升效果);
AddExecutor(ExecutorType.Activate, (int)CardId.疾风之盖尔, 疾风之盖尔效果);
AddExecutor(ExecutorType.Activate, (int)CardId.孤高之银风鸦);
AddExecutor(ExecutorType.Activate, (int)CardId.黑羽龙);
AddExecutor(ExecutorType.Activate, (int)CardId.铠翼鸦);
AddExecutor(ExecutorType.Activate, (int)CardId.兵翼鸦);
AddExecutor(ExecutorType.Activate, (int)CardId.煌星之怒剑鸟);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender)
{
if (defender.IsMonsterInvincible() && !defender.IsMonsterDangerous() && attacker.Id == 83104731)
return true;
return base.OnPreBattleBetween(attacker, defender);
}
private bool 苍炎之修罗()
{
if (Duel.Fields[0].HasInMonstersZone((int)CardId.晓之希洛克) && Duel.Fields[0].GetMonsters().GetHighestAttackMonster().Attack < 3800)
return true;
return false;
}
private bool 黑旋风()
{
if (Card.Location == CardLocation.Hand && Duel.Fields[0].HasInSpellZone(Card.Id))
return false;
if (ActivateDescription == AI.Utils.GetStringId((int)Card.Id,0))
AI.SelectCard((int)CardId.疾风之盖尔);
return true;
}
private bool 晓之希洛克()
{
int OpponentMonster = Duel.Fields[1].GetMonsterCount();
int AIMonster = Duel.Fields[0].GetMonsterCount();
if (OpponentMonster != 0 && AIMonster == 0)
return true;
return false;
}
private bool 黑枪之布拉斯特()
{
List<ClientCard> monster = Duel.Fields[0].GetMonsters();
foreach (ClientCard card in monster)
if (card != null && card.Id == (int)CardId.残夜之波刃剑鸟 || card.Id == (int)CardId.月影之卡鲁特 || card.Id == (int)CardId.疾风之盖尔 || card.Id == (int)CardId.黑枪之布拉斯特 || card.Id == (int)CardId.晓之希洛克 || card.Id == (int)CardId.苍炎之修罗 || card.Id == (int)CardId.极北之布利扎德)
return true;
return false;
}
private bool 月影之卡鲁特()
{
foreach (ClientCard card in Duel.Fields[0].Hand)
if (card != null && card.Id == (int)CardId.残夜之波刃剑鸟 || card.Id == (int)CardId.疾风之盖尔 || card.Id == (int)CardId.黑枪之布拉斯特 || card.Id == (int)CardId.晓之希洛克 || card.Id == (int)CardId.苍炎之修罗 || card.Id == (int)CardId.极北之布利扎德)
return false;
return true;
}
private bool 极北之布利扎德()
{
foreach (ClientCard card in Duel.Fields[0].Graveyard)
if (card != null && card.Id == (int)CardId.月影之卡鲁特 || card.Id == (int)CardId.黑枪之布拉斯特 || card.Id == (int)CardId.苍炎之修罗 || card.Id == (int)CardId.残夜之波刃剑鸟)
return true;
return false;
}
private bool 三角乌鸦阵()
{
int Count = 0;
List<ClientCard> monster = Duel.Fields[0].GetMonsters();
foreach (ClientCard card in monster)
if (card != null && card.Id == (int)CardId.残夜之波刃剑鸟 || card.Id == (int)CardId.月影之卡鲁特 || card.Id == (int)CardId.疾风之盖尔 || card.Id == (int)CardId.黑枪之布拉斯特 || card.Id == (int)CardId.晓之希洛克 || card.Id == (int)CardId.苍炎之修罗 || card.Id == (int)CardId.极北之布利扎德)
Count++;
if (Count == 3)
return true;
return false;
}
private bool 疾风之盖尔效果()
{
if (Card.Position == (int)CardPosition.FaceUp)
{
AI.SelectCard(Duel.Fields[1].GetMonsters().GetHighestAttackMonster());
return true;
}
return false;
}
private bool 攻击力上升效果()
{
if (Duel.Fields[1].GetMonsters().GetHighestAttackMonster().IsFacedown() || Duel.Fields[1].GetMonsters().GetHighestDefenseMonster().IsFacedown() || Duel.Fields[1].GetMonsterCount() == 0)
return false;
if (Duel.Fields[0].GetMonsters().GetHighestAttackMonster().Attack < Duel.Fields[1].GetMonsters().GetHighestAttackMonster().Attack)
return true;
if (Duel.Fields[0].GetMonsters().GetHighestAttackMonster().Attack < Duel.Fields[1].GetMonsters().GetHighestDefenseMonster().Defense)
return true;
return false;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
[Deck("CyberDragon", "AI_CyberDragon")]
public class CyberDragonExecutor : DefaultExecutor
{
ClientField Bot;
bool 力量结合效果 = false;
public enum CardId
{
电子镭射龙 = 4162088,
电子障壁龙 = 68774379,
电子龙 = 70095154,
电子龙三型 = 59281922,
电子凤凰 = 3370104,
装甲电子翼 = 67159705,
原始电子龙 = 26439287,
电子麒麟 = 76986005,
电子龙核 = 23893227,
电子多变龙 = 3657444,
Raigeki = 12580477,
DarkHole = 53129443,
时间胶囊 = 11961740,
融合 = 24094653,
力量结合 = 37630732,
进化光焰 = 52875873,
光子发生装置 = 66607691,
融合解除 = 95286165,
奈落的落穴 = 29401950,
神圣防护罩反射镜力 = 44095762,
攻击反射装置 = 91989718,
电子隐秘技术 = 92773018,
活死人的呼声 = 97077563,
盗贼的七道具 = 3819470,
电子双生龙 = 74157028,
电子终结龙 = 1546123,
电子龙新星 = 58069384
}
public CyberDragonExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
Bot = Duel.Fields[0];
AddExecutor(ExecutorType.SpellSet, (int)CardId.融合解除);
AddExecutor(ExecutorType.Activate, (int)CardId.时间胶囊, Capsule);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, (int)CardId.融合, 融合);
AddExecutor(ExecutorType.Activate, (int)CardId.力量结合, 力量结合);
AddExecutor(ExecutorType.Activate, (int)CardId.进化光焰, 进化光焰);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.光子发生装置);
AddExecutor(ExecutorType.Activate, (int)CardId.融合解除, 融合解除);
AddExecutor(ExecutorType.Activate, (int)CardId.奈落的落穴, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.神圣防护罩反射镜力, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.攻击反射装置);
AddExecutor(ExecutorType.Activate, (int)CardId.盗贼的七道具, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.活死人的呼声, DefaultCallOfTheHaunted);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.电子龙三型, 没有电子龙可特殊召唤);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.电子凤凰, 没有电子龙可特殊召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.电子多变龙, 没有电子龙可特殊召唤);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.电子龙核, 没有电子龙可特殊召唤);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.装甲电子翼, 装甲电子翼);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.原始电子龙, 原始电子龙);
AddExecutor(ExecutorType.Summon, (int)CardId.电子麒麟, 电子麒麟);
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子龙);
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子终结龙);
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子双生龙);
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子障壁龙);
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子镭射龙);
AddExecutor(ExecutorType.Activate, (int)CardId.电子障壁龙);
AddExecutor(ExecutorType.Activate, (int)CardId.电子镭射龙);
AddExecutor(ExecutorType.Activate, (int)CardId.电子龙三型);
AddExecutor(ExecutorType.Activate, (int)CardId.电子凤凰);
AddExecutor(ExecutorType.Activate, (int)CardId.电子麒麟);
AddExecutor(ExecutorType.Activate, (int)CardId.装甲电子翼, 装甲电子翼效果);
AddExecutor(ExecutorType.Activate, (int)CardId.电子多变龙);
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
private bool CyberDragonInHand() { return Duel.Fields[0].HasInHand((int)CardId.电子龙); }
private bool CyberDragonInGraveyard() { return Duel.Fields[0].HasInGraveyard((int)CardId.电子龙); }
private bool CyberDragonInMonsterZone() { return Duel.Fields[0].HasInMonstersZone((int)CardId.电子龙); }
private bool CyberDragonIsBanished() { return Duel.Fields[0].HasInBanished((int)CardId.电子龙); }
private bool Capsule()
{
List<int> SelectedCard = new List<int>();
SelectedCard.Add((int)CardId.力量结合);
SelectedCard.Add((int)CardId.DarkHole);
SelectedCard.Add((int)CardId.Raigeki);
AI.SelectCard(SelectedCard);
return true;
}
private bool 融合()
{
if (Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.原始电子龙) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙三型) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙三型) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.电子龙) >= 3)
AI.SelectCard((int)CardId.电子终结龙);
else
AI.SelectCard((int)CardId.电子双生龙);
return true;
}
private bool 力量结合()
{
力量结合效果 = true;
if (Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.原始电子龙) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.电子龙核) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.电子龙核) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.电子龙三型) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙三型) >= 3)
AI.SelectCard((int)CardId.电子终结龙);
else
AI.SelectCard((int)CardId.电子双生龙);
return true;
}
private bool 进化光焰()
{
if (!AI.Utils.IsOneEnnemyBetterThanValue(Bot.MonsterZone.GetHighestAttackMonster().Attack, false))
return false;
else
AI.SelectCard(Duel.Fields[1].MonsterZone.GetHighestAttackMonster());
return true;
}
private bool 没有电子龙可特殊召唤()
{
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Duel.Fields[1].GetMonsterCount() != 0))
return false;
return true;
}
private bool 装甲电子翼()
{
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Duel.Fields[1].GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.电子龙三型) || Bot.HasInHand((int)CardId.电子凤凰)) && !AI.Utils.IsOneEnnemyBetterThanValue(1800,true))
return false;
return true;
}
private bool 原始电子龙()
{
if (Bot.GetCountCardInZone(Bot.Hand, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙核) >= 1 && Bot.HasInHand((int)CardId.融合) || Bot.GetCountCardInZone(Bot.Hand, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.电子龙) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.电子龙核) >= 1 && Bot.HasInHand((int)CardId.力量结合))
return true;
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Duel.Fields[1].GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.电子龙三型) || Bot.HasInHand((int)CardId.电子凤凰)) && !AI.Utils.IsOneEnnemyBetterThanValue(1800, true))
return false;
return true;
}
private bool 电子麒麟()
{
return 力量结合效果;
}
private bool 装甲电子翼效果()
{
if (Card.Location == CardLocation.Hand)
return true;
else if (Card.Location == CardLocation.SpellZone)
{
if (AI.Utils.IsOneEnnemyBetterThanValue(Bot.GetMonsters().GetHighestAttackMonster().Attack, true))
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.装甲电子翼, 2))
return true;
return false;
}
return false;
}
private bool 融合解除()
{
if (Duel.Phase == DuelPhase.Battle)
{
if (!Bot.HasAttackingMonster())
return true;
}
return false;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
[Deck("Gravekeeper", "AI_Gravekeeper")]
public class GravekeeperExecutor : DefaultExecutor
{
public enum CardId
{
守墓的审神者 = 25524823,
罪星尘龙 = 36521459,
守墓的大神官 = 3825890,
守墓之长 = 62473983,
雷王 = 71564252,
守墓的司令官 = 17393207,
守墓的暗杀者 = 25262697,
守墓的末裔 = 30213599,
守墓的侦察者 = 24317029,
守墓的召唤师 = 93023479,
暗之诱惑 = 1475311,
黑洞 = 53129443,
王家的牲祭 = 72405967,
守墓的石板 = 99523325,
旋风 = 5318639,
月之书 = 14087893,
王家长眠之谷的祭殿 = 70000776,
王家长眠之谷 = 47355498,
奈落的落穴 = 29401950,
降灵的仪式 = 30450531,
激流葬 = 53582587,
次元幽闭 = 70342110,
神之警告 = 84749824,
王家长眠之谷的王墓 = 90434657
}
public GravekeeperExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.暗之诱惑);
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.王家的牲祭);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的石板);
AddExecutor(ExecutorType.Activate, (int)CardId.旋风, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.月之书, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.王家长眠之谷的祭殿, 王家长眠之谷的祭殿);
AddExecutor(ExecutorType.Activate, (int)CardId.王家长眠之谷, 王家长眠之谷);
AddExecutor(ExecutorType.Activate, (int)CardId.奈落的落穴, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.神之警告, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.次元幽闭, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.降灵的仪式, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.王家长眠之谷的王墓, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.激流葬, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Summon, (int)CardId.守墓的审神者);
AddExecutor(ExecutorType.SpSummon, (int)CardId.罪星尘龙, 罪星尘龙);
AddExecutor(ExecutorType.Summon, (int)CardId.守墓的大神官);
AddExecutor(ExecutorType.Summon, (int)CardId.守墓之长);
AddExecutor(ExecutorType.Summon, (int)CardId.雷王);
AddExecutor(ExecutorType.Summon, (int)CardId.守墓的司令官, 守墓的司令官召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.守墓的暗杀者);
AddExecutor(ExecutorType.Summon, (int)CardId.守墓的末裔);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.守墓的侦察者);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.守墓的召唤师);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的审神者);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的大神官);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓之长);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的司令官, 守墓的司令官);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的暗杀者, 守墓的暗杀者);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的末裔, 守墓的末裔);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的侦察者, 检索守墓的末裔);
AddExecutor(ExecutorType.Activate, (int)CardId.守墓的召唤师, 检索守墓的末裔);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
private bool 王家长眠之谷的祭殿()
{
if (Card.Location == CardLocation.Hand && Duel.Fields[0].HasInSpellZone((int)Card.Id))
return false;
return true;
}
private bool 王家长眠之谷()
{
if (Duel.Fields[0].SpellZone[5] != null)
return false;
return true;
}
private bool 罪星尘龙()
{
if (Duel.Fields[0].SpellZone[5] != null)
return true;
return false;
}
private bool 守墓的司令官()
{
if (!Duel.Fields[0].HasInHand((int)CardId.王家长眠之谷) && !Duel.Fields[0].HasInSpellZone((int)CardId.王家长眠之谷))
return true;
return false;
}
private bool 守墓的司令官召唤()
{
return !守墓的司令官();
}
private bool 守墓的暗杀者()
{
if (!Card.IsAttack())
return false;
foreach (ClientCard card in Duel.Fields[1].MonsterZone)
if (card != null && card.IsDefense() && card.Defense > 1500 && card.Attack < 1500 || card.Attack > 1500 && card.Defense < 1500)
return true;
return false;
}
private bool 守墓的末裔()
{
int bestatk = Duel.Fields[0].GetMonsters().GetHighestAttackMonster().Attack;
if (AI.Utils.IsOneEnnemyBetterThanValue(bestatk, true))
{
AI.SelectCard(Duel.Fields[1].GetMonsters().GetHighestAttackMonster());
return true;
}
return false;
}
private bool 检索守墓的末裔()
{
AI.SelectCard((int)CardId.守墓的末裔);
return true;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
[Deck("Nekroz", "AI_Nekroz")]
public class NekrozExecutor : DefaultExecutor
{
public enum CardId
{
影灵衣舞姬 = 52738610,
千手神 = 23401839,
万手神 = 95492061,
影灵衣术士施里特 = 90307777,
增殖的G = 23434538,
决战兵器之影灵衣 = 88240999,
三叉龙之影灵衣 = 52068432,
瓦尔基鲁斯之影灵衣 = 25857246,
天枪龙之影灵衣 = 74122412,
光枪龙之影灵衣 = 26674724,
尤尼科之影灵衣 = 89463537,
辉剑鸟之影灵衣 = 99185129,
混沌幻影 = 30312361,
黑洞 = 53129443,
增援 = 32807846,
抵价购物 = 38120068,
仪式的准备 = 96729612,
影灵衣的降魔镜 = 14735698,
影灵衣的万华镜 = 51124303,
影灵衣的返魂术 = 97211663,
旋风 = 5318639,
王宫的通告 = 51452091,
励辉士入魔蝇王 = 46772449,
虹光之宣告者 = 79606837
}
List<int> NekrozRituelCard = new List<int>();
List<int> NekrozSpellCard = new List<int>();
public NekrozExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
NekrozRituelCard.Add((int)CardId.辉剑鸟之影灵衣);
NekrozRituelCard.Add((int)CardId.尤尼科之影灵衣);
NekrozRituelCard.Add((int)CardId.决战兵器之影灵衣);
NekrozRituelCard.Add((int)CardId.光枪龙之影灵衣);
NekrozRituelCard.Add((int)CardId.三叉龙之影灵衣);
NekrozRituelCard.Add((int)CardId.天枪龙之影灵衣);
NekrozRituelCard.Add((int)CardId.瓦尔基鲁斯之影灵衣);
NekrozSpellCard.Add((int)CardId.影灵衣的降魔镜);
NekrozSpellCard.Add((int)CardId.影灵衣的万华镜);
NekrozSpellCard.Add((int)CardId.影灵衣的返魂术);
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.增援, 增援);
AddExecutor(ExecutorType.Activate, (int)CardId.抵价购物);
AddExecutor(ExecutorType.Activate, (int)CardId.仪式的准备);
AddExecutor(ExecutorType.Activate, (int)CardId.影灵衣的降魔镜);
AddExecutor(ExecutorType.Activate, (int)CardId.影灵衣的万华镜);
AddExecutor(ExecutorType.Activate, (int)CardId.影灵衣的返魂术);
AddExecutor(ExecutorType.Activate, (int)CardId.旋风, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.王宫的通告);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.影灵衣舞姬, 影灵衣舞姬召唤);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.影灵衣术士施里特, 影灵衣术士施里特);
AddExecutor(ExecutorType.Summon, (int)CardId.千手神, 千手神召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.万手神, 万手神召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.混沌幻影, 混沌幻影);
AddExecutor(ExecutorType.Activate, (int)CardId.尤尼科之影灵衣, 尤尼科之影灵衣);
AddExecutor(ExecutorType.Activate, (int)CardId.决战兵器之影灵衣, 决战兵器之影灵衣);
AddExecutor(ExecutorType.Activate, (int)CardId.瓦尔基鲁斯之影灵衣, 瓦尔基鲁斯之影灵衣);
AddExecutor(ExecutorType.Activate, (int)CardId.天枪龙之影灵衣, 天枪龙之影灵衣);
AddExecutor(ExecutorType.Activate, (int)CardId.光枪龙之影灵衣, 光枪龙之影灵衣);
AddExecutor(ExecutorType.Activate, (int)CardId.辉剑鸟之影灵衣, 辉剑鸟之影灵衣);
AddExecutor(ExecutorType.Activate, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王);
AddExecutor(ExecutorType.Activate, (int)CardId.混沌幻影, 混沌幻影效果);
AddExecutor(ExecutorType.Activate, (int)CardId.增殖的G);
AddExecutor(ExecutorType.Activate, (int)CardId.千手神, 千手神效果);
AddExecutor(ExecutorType.Activate, (int)CardId.万手神, 光枪龙之影灵衣);
AddExecutor(ExecutorType.Activate, (int)CardId.虹光之宣告者);
AddExecutor(ExecutorType.SpSummon, (int)CardId.三叉龙之影灵衣);
AddExecutor(ExecutorType.SpSummon, (int)CardId.决战兵器之影灵衣);
AddExecutor(ExecutorType.SpSummon, (int)CardId.瓦尔基鲁斯之影灵衣);
AddExecutor(ExecutorType.SpSummon, (int)CardId.天枪龙之影灵衣);
AddExecutor(ExecutorType.SpSummon, (int)CardId.光枪龙之影灵衣);
AddExecutor(ExecutorType.SpSummon, (int)CardId.尤尼科之影灵衣);
AddExecutor(ExecutorType.SpSummon, (int)CardId.辉剑鸟之影灵衣);
AddExecutor(ExecutorType.SpSummon, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王);
}
private bool 千手神召唤()
{
if (!Duel.Fields[0].HasInHand(NekrozRituelCard) || Duel.Fields[0].HasInHand((int)CardId.影灵衣术士施里特) || !Duel.Fields[0].HasInHand(NekrozSpellCard))
return true;
foreach (ClientCard Card in Duel.Fields[0].Hand)
if (Card != null && Card.Id == (int)CardId.影灵衣的万华镜 && !Duel.Fields[0].HasInHand((int)CardId.尤尼科之影灵衣))
return true;
else if (Card.Id == (int)CardId.三叉龙之影灵衣 || Card.Id == (int)CardId.决战兵器之影灵衣 && !Duel.Fields[0].HasInHand((int)CardId.影灵衣的降魔镜) || !Duel.Fields[0].HasInHand((int)CardId.影灵衣术士施里特))
return true;
return false;
}
private bool 增援()
{
if (!Duel.Fields[0].HasInGraveyard((int)CardId.影灵衣术士施里特) && !Duel.Fields[0].HasInHand((int)CardId.影灵衣术士施里特))
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
return true;
}
return false;
}
private bool 万手神召唤()
{
if (!Duel.Fields[0].HasInHand((int)CardId.千手神) || !Duel.Fields[0].HasInHand((int)CardId.影灵衣术士施里特))
return true;
return false;
}
private bool 影灵衣舞姬召唤()
{
if (!Duel.Fields[0].HasInHand((int)CardId.千手神) && !Duel.Fields[0].HasInHand((int)CardId.万手神))
return true;
return false;
}
private bool 混沌幻影()
{
if (Duel.Fields[0].HasInGraveyard((int)CardId.影灵衣术士施里特) && Duel.Fields[0].HasInHand(NekrozSpellCard) && Duel.Fields[0].HasInHand(NekrozRituelCard))
return true;
return false;
}
private bool 混沌幻影效果()
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
return true;
}
private bool 影灵衣术士施里特()
{
if (!Duel.Fields[0].HasInHand((int)CardId.千手神) && !Duel.Fields[0].HasInHand((int)CardId.万手神) && !Duel.Fields[0].HasInHand((int)CardId.影灵衣舞姬))
return true;
return false;
}
private bool 三叉龙之影灵衣()
{
if (AI.Utils.IsAllEnnemyBetterThanValue(2700, true) && Duel.Fields[0].HasInHand((int)CardId.决战兵器之影灵衣))
return false;
return true;
}
private bool 决战兵器之影灵衣()
{
if (AI.Utils.IsAllEnnemyBetterThanValue(3300, true))
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
return true;
}
return false;
}
private bool 励辉士入魔蝇王()
{
if (AI.Utils.IsAllEnnemyBetterThanValue(Duel.Fields[0].GetMonsters().GetHighestAttackMonster().Attack, true))
{
return true;
}
return false;
}
private bool 瓦尔基鲁斯之影灵衣()
{
if (Duel.Phase == DuelPhase.Battle)
return true;
return false;
}
private bool 天枪龙之影灵衣()
{
if (AI.Utils.IsOneEnnemyBetterThanValue(Duel.Fields[0].GetMonsters().GetHighestAttackMonster().Attack,true) && Duel.Phase == DuelPhase.Main1)
{
AI.SelectCard(Duel.Fields[1].GetMonsters().GetHighestAttackMonster());
return true;
}
return false;
}
private bool 光枪龙之影灵衣()
{
if (!Duel.Fields[0].HasInHand((int)CardId.影灵衣术士施里特))
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
return true;
}
else if (!Duel.Fields[0].HasInHand(NekrozSpellCard))
{
AI.SelectCard((int)CardId.影灵衣的降魔镜);
return true;
}
else if (AI.Utils.IsOneEnnemyBetterThanValue(3300, true) && !Duel.Fields[0].HasInHand((int)CardId.三叉龙之影灵衣))
{
AI.SelectCard((int)CardId.三叉龙之影灵衣);
return true;
}
else if (AI.Utils.IsAllEnnemyBetterThanValue(2700,true) && !Duel.Fields[0].HasInHand((int)CardId.决战兵器之影灵衣))
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
return true;
}
else if (Duel.Fields[0].HasInHand((int)CardId.尤尼科之影灵衣) && !Duel.Fields[0].HasInHand((int)CardId.影灵衣的万华镜))
{
AI.SelectCard((int)CardId.影灵衣的万华镜);
return true;
}
else if (!Duel.Fields[0].HasInHand((int)CardId.尤尼科之影灵衣) && Duel.Fields[0].HasInHand((int)CardId.影灵衣的万华镜))
{
AI.SelectCard((int)CardId.尤尼科之影灵衣);
return true;
}
return false;
}
private bool 千手神效果()
{
if (AI.Utils.IsOneEnnemyBetterThanValue(3300, true) && !Duel.Fields[0].HasInHand((int)CardId.三叉龙之影灵衣))
{
AI.SelectCard((int)CardId.三叉龙之影灵衣);
return true;
}
else if (AI.Utils.IsAllEnnemyBetterThanValue(2700, true) && !Duel.Fields[0].HasInHand((int)CardId.决战兵器之影灵衣))
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
return true;
}
else if (!Duel.Fields[0].HasInHand((int)CardId.尤尼科之影灵衣) && Duel.Fields[0].HasInHand((int)CardId.影灵衣的万华镜))
{
AI.SelectCard((int)CardId.尤尼科之影灵衣);
return true;
}
return false;
}
private bool 尤尼科之影灵衣()
{
if (Duel.Fields[0].HasInGraveyard((int)CardId.影灵衣术士施里特))
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
return true;
}
return false;
}
private bool 辉剑鸟之影灵衣()
{
if (!Duel.Fields[0].HasInHand(NekrozSpellCard))
{
AI.SelectCard((int)CardId.影灵衣的降魔镜);
return true;
}
return false;
}
private bool IsTheLastPossibility()
{
if (!Duel.Fields[0].HasInHand((int)CardId.决战兵器之影灵衣) && !Duel.Fields[0].HasInHand((int)CardId.三叉龙之影灵衣))
return true;
return false;
}
private bool SelectNekrozWhoInvoke()
{
List<int> NekrozCard = new List<int>();
try
{
foreach (ClientCard Card in Duel.Fields[0].Hand)
if (Card != null && NekrozRituelCard.Contains((int)Card.Id))
NekrozCard.Add(Card.Id);
foreach (int Id in NekrozCard)
{
if (Id == (int)CardId.三叉龙之影灵衣 && AI.Utils.IsAllEnnemyBetterThanValue(2700, true) && Duel.Fields[0].HasInHand((int)CardId.决战兵器之影灵衣))
{
AI.SelectCard((int)CardId.三叉龙之影灵衣);
return true;
}
else if (Id == (int)CardId.决战兵器之影灵衣)
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
return true;
}
else if (Id == (int)CardId.尤尼科之影灵衣 && Duel.Fields[0].HasInHand((int)CardId.影灵衣的万华镜) && !Duel.Fields[0].HasInGraveyard((int)CardId.影灵衣术士施里特))
{
AI.SelectCard((int)CardId.尤尼科之影灵衣);
return true;
}
else if (Id == (int)CardId.瓦尔基鲁斯之影灵衣)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.瓦尔基鲁斯之影灵衣);
return true;
}
}
else if (Id == (int)CardId.天枪龙之影灵衣)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.天枪龙之影灵衣);
return true;
}
}
else if (Id == (int)CardId.辉剑鸟之影灵衣)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.辉剑鸟之影灵衣);
return true;
}
}
}
return false;
}
catch
{ return false; }
}
}
}
......@@ -67,6 +67,24 @@ namespace WindBot.Game.AI
return false;
}
protected bool DefaultCallOfTheHaunted()
{
if (!AI.Utils.IsEnnemyBetter(true, true))
return false;
ClientCard selected = null;
int BestAtk = 0;
foreach (ClientCard card in Duel.Fields[0].Graveyard)
{
if (card.Attack > BestAtk)
{
BestAtk = card.Attack;
selected = card;
}
}
AI.SelectCard(selected);
return true;
}
protected bool DefaultTorrentialTribute()
{
return (AI.Utils.IsEnnemyBetter(true, true));
......
......@@ -59,6 +59,10 @@
<Compile Include="Game\AI\CardSelector.cs" />
<Compile Include="Game\AI\DeckAttribute.cs" />
<Compile Include="Game\AI\DecksManager.cs" />
<Compile Include="Game\AI\Decks\BlackwingExecutor.cs" />
<Compile Include="Game\AI\Decks\CyberDragonExecutor.cs" />
<Compile Include="Game\AI\Decks\NekrozExecutor.cs" />
<Compile Include="Game\AI\Decks\GravekeeperExecutor.cs" />
<Compile Include="Game\AI\Decks\RainbowExecutor.cs" />
<Compile Include="Game\AI\Decks\BlueEyesExecutor.cs" />
<Compile Include="Game\AI\Decks\BurnExecutor.cs" />
......
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