Commit e37b72b1 authored by mercury233's avatar mercury233

translate to English

parent 2cbdbc52
......@@ -11,26 +11,26 @@ namespace WindBot.Game.AI.Decks
{
public enum CardId
{
残夜之波刃剑鸟 = 81105204,
晓之希洛克 = 75498415,
苍炎之修罗 = 58820853,
黑枪之布拉斯特 = 49003716,
月影之卡鲁特 = 85215458,
疾风之盖尔 = 2009101,
极北之布利扎德 = 22835145,
银盾之密史脱拉 = 46710683,
KrisTheCrackOfDawn = 81105204,
SiroccoTheDawn = 75498415,
ShuraTheBlueFlame = 58820853,
BoraTheSpear = 49003716,
KalutTheMoonShadow = 85215458,
GaleTheWhirlwind = 2009101,
BlizzardTheFarNorth = 22835145,
MistralTheSilverShield = 46710683,
Raigeki = 12580477,
DarkHole = 53129443,
MysticalSpaceTyphoon = 5318639,
黑旋风 = 91351370,
神圣防护罩 = 44095762,
三角乌鸦阵 = 59839761,
次元幽闭 = 70342110,
孤高之银风鸦 = 33236860,
黑羽龙 = 9012916,
铠翼鸦 = 69031175,
兵翼鸦 = 76913983,
煌星之怒剑鸟 = 17377751
BlackWhirlwind = 91351370,
MirrorForce = 44095762,
DeltaCrowAntiReverse = 59839761,
DimensionalPrison = 70342110,
SilverwindTheAscendant = 33236860,
BlackWingedDragon = 9012916,
ArmorMaster = 69031175,
ArmedWing = 76913983,
GramTheShiningStar = 17377751
}
public BlackwingExecutor(GameAI ai, Duel duel)
......@@ -41,42 +41,42 @@ namespace WindBot.Game.AI.Decks
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.Activate, (int)CardId.BlackWhirlwind, BlackWhirlwindEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.KrisTheCrackOfDawn);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.KrisTheCrackOfDawn);
AddExecutor(ExecutorType.Summon, (int)CardId.SiroccoTheDawn, SiroccoTheDawnSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.ShuraTheBlueFlame, ShuraTheBlueFlameSummon);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.ShuraTheBlueFlame);
AddExecutor(ExecutorType.SpSummon, (int)CardId.BoraTheSpear);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.BoraTheSpear);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.KalutTheMoonShadow, KalutTheMoonShadowSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GaleTheWhirlwind);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.GaleTheWhirlwind);
AddExecutor(ExecutorType.Summon, (int)CardId.BlizzardTheFarNorth, BlizzardTheFarNorthSummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.MistralTheSilverShield);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SilverwindTheAscendant);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ArmorMaster);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GramTheShiningStar);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ArmedWing);
AddExecutor(ExecutorType.SpSummon, (int)CardId.BlackWingedDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalPrison, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DeltaCrowAntiReverse, DeltaCrowAntiReverseEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.BlizzardTheFarNorth);
AddExecutor(ExecutorType.Activate, (int)CardId.ShuraTheBlueFlame);
AddExecutor(ExecutorType.Activate, (int)CardId.BoraTheSpear, BoraTheSpearEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.KalutTheMoonShadow, AttackUpEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SiroccoTheDawn, AttackUpEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GaleTheWhirlwind, GaleTheWhirlwindEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SilverwindTheAscendant);
AddExecutor(ExecutorType.Activate, (int)CardId.BlackWingedDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.ArmorMaster);
AddExecutor(ExecutorType.Activate, (int)CardId.ArmedWing);
AddExecutor(ExecutorType.Activate, (int)CardId.GramTheShiningStar);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -88,23 +88,23 @@ namespace WindBot.Game.AI.Decks
return base.OnPreBattleBetween(attacker, defender);
}
private bool 苍炎之修罗()
private bool ShuraTheBlueFlameSummon()
{
if (Bot.HasInMonstersZone((int)CardId.晓之希洛克) && Bot.GetMonsters().GetHighestAttackMonster().Attack < 3800)
if (Bot.HasInMonstersZone((int)CardId.SiroccoTheDawn) && Bot.GetMonsters().GetHighestAttackMonster().Attack < 3800)
return true;
return false;
}
private bool 黑旋风()
private bool BlackWhirlwindEffect()
{
if (Card.Location == CardLocation.Hand && Bot.HasInSpellZone(Card.Id))
return false;
if (ActivateDescription == AI.Utils.GetStringId((int)Card.Id,0))
AI.SelectCard((int)CardId.疾风之盖尔);
AI.SelectCard((int)CardId.GaleTheWhirlwind);
return true;
}
private bool 晓之希洛克()
private bool SiroccoTheDawnSummon()
{
int OpponentMonster = Enemy.GetMonsterCount();
int AIMonster = Bot.GetMonsterCount();
......@@ -113,38 +113,38 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 黑枪之布拉斯特()
private bool BoraTheSpearEffect()
{
List<ClientCard> monster = Bot.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.极北之布利扎德)
if (card != null && card.Id == (int)CardId.KrisTheCrackOfDawn || card.Id == (int)CardId.KalutTheMoonShadow || card.Id == (int)CardId.GaleTheWhirlwind || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.SiroccoTheDawn || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.BlizzardTheFarNorth)
return true;
return false;
}
private bool 月影之卡鲁特()
private bool KalutTheMoonShadowSummon()
{
foreach (ClientCard card in Bot.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.极北之布利扎德)
if (card != null && card.Id == (int)CardId.KrisTheCrackOfDawn || card.Id == (int)CardId.GaleTheWhirlwind || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.SiroccoTheDawn || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.BlizzardTheFarNorth)
return false;
return true;
}
private bool 极北之布利扎德()
private bool BlizzardTheFarNorthSummon()
{
foreach (ClientCard card in Bot.Graveyard)
if (card != null && card.Id == (int)CardId.月影之卡鲁特 || card.Id == (int)CardId.黑枪之布拉斯特 || card.Id == (int)CardId.苍炎之修罗 || card.Id == (int)CardId.残夜之波刃剑鸟)
if (card != null && card.Id == (int)CardId.KalutTheMoonShadow || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.KrisTheCrackOfDawn)
return true;
return false;
}
private bool 三角乌鸦阵()
private bool DeltaCrowAntiReverseEffect()
{
int Count = 0;
List<ClientCard> monster = Bot.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.极北之布利扎德)
if (card != null && card.Id == (int)CardId.KrisTheCrackOfDawn || card.Id == (int)CardId.KalutTheMoonShadow || card.Id == (int)CardId.GaleTheWhirlwind || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.SiroccoTheDawn || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.BlizzardTheFarNorth)
Count++;
if (Count == 3)
......@@ -152,7 +152,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 疾风之盖尔效果()
private bool GaleTheWhirlwindEffect()
{
if (Card.Position == (int)CardPosition.FaceUp)
{
......@@ -162,7 +162,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 攻击力上升效果()
private bool AttackUpEffect()
{
ClientCard bestMy = Bot.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyATK = Enemy.GetMonsters().GetHighestAttackMonster();
......
......@@ -11,136 +11,130 @@ namespace WindBot.Game.AI.Decks
{
public enum CardId
{
青眼白龙 = 89631139,
青眼亚白龙 = 38517737,
白色灵龙 = 45467446,
增殖的G = 23434538,
太古的白石 = 71039903,
传说的白石 = 79814787,
青色眼睛的贤士 = 8240199,
效果遮蒙者 = 97268402,
银河旋风 = 5133471,
鹰身女妖的羽毛扫 = 18144506,
复活之福音 = 6853254,
强欲而贪欲之壶 = 35261759,
抵价购物 = 38120068,
调和的宝札 = 39701395,
龙之灵庙 = 41620959,
龙觉醒旋律 = 48800175,
灵魂补充 = 54447022,
死者苏生 = 83764718,
银龙的轰咆 = 87025064,
WhiteDragon = 89631139,
AlternativeWhiteDragon = 38517737,
DragonSpiritOfWhite = 45467446,
WhiteStoneOfAncients = 71039903,
WhiteStoneOfLegend = 79814787,
SageWithEyesOfBlue = 8240199,
EffectVeiler = 97268402,
GalaxyCyclone = 5133471,
HarpiesFeatherDuster = 18144506,
ReturnOfTheDragonLords = 6853254,
PotOfDesires = 35261759,
TradeIn = 38120068,
CardsOfConsonance = 39701395,
DragonShrine = 41620959,
MelodyOfAwakeningDragon = 48800175,
SoulCharge = 54447022,
MonsterReborn = 83764718,
SilversCry = 87025064,
鬼岩城 = 63422098,
苍眼银龙 = 40908371,
青眼精灵龙 = 59822133,
银河眼暗物质龙 = 58820923,
银河眼光波刃龙 = 2530830,
银河眼重铠光子龙 = 39030163,
银河眼光子龙皇 = 31801517,
银河眼光波龙 = 18963306,
希望魁龙银河巨神 = 63767246,
森罗的姬牙宫 = 33909817
Giganticastle = 63422098,
AzureEyesSilverDragon = 40908371,
BlueEyesSpiritDragon = 59822133,
GalaxyEyesDarkMatterDragon = 58820923,
GalaxyEyesCipherBladeDragon = 2530830,
GalaxyEyesFullArmorPhotonDragon = 39030163,
GalaxyEyesPrimePhotonDragon = 31801517,
GalaxyEyesCipherDragon = 18963306,
HopeHarbingerDragonTitanicGalaxy = 63767246,
SylvanPrincessprite = 33909817
}
private List<ClientCard> 使用过的青眼亚白龙 = new List<ClientCard>();
ClientCard 使用过的光波龙;
bool 已特殊召唤青眼亚白龙 = false;
bool 已发动灵魂补充 = false;
private List<ClientCard> UsedAlternativeWhiteDragon = new List<ClientCard>();
ClientCard UsedGalaxyEyesCipherDragon;
bool AlternativeWhiteDragonSummoned = false;
bool SoulChargeUsed = false;
public BlueEyesExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
// 有坑先清
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.银河旋风, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫);
// destroy traps
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyCyclone, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
// 灵庙
AddExecutor(ExecutorType.Activate, (int)CardId.龙之灵庙, 龙之灵庙效果);
AddExecutor(ExecutorType.Activate, (int)CardId.DragonShrine, DragonShrineEffect);
// 贤士检索
AddExecutor(ExecutorType.Summon, (int)CardId.青色眼睛的贤士, 青色眼睛的贤士通常召唤);
// Sage search
AddExecutor(ExecutorType.Summon, (int)CardId.SageWithEyesOfBlue, SageWithEyesOfBlueSummon);
// 拿亚白
AddExecutor(ExecutorType.Activate, (int)CardId.龙觉醒旋律, 龙觉醒旋律效果);
// search Alternative White Dragon
AddExecutor(ExecutorType.Activate, (int)CardId.MelodyOfAwakeningDragon, MelodyOfAwakeningDragonEffect);
// 调和
AddExecutor(ExecutorType.Activate, (int)CardId.调和的宝札, 调和的宝札效果);
AddExecutor(ExecutorType.Activate, (int)CardId.CardsOfConsonance, CardsOfConsonanceEffect);
// 八抽
AddExecutor(ExecutorType.Activate, (int)CardId.抵价购物, 抵价购物效果);
AddExecutor(ExecutorType.Activate, (int)CardId.TradeIn, TradeInEffect);
// 吸一口
AddExecutor(ExecutorType.Activate, (int)CardId.强欲而贪欲之壶, DefaultPotOfDesires);
AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDesires, DefaultPotOfDesires);
// 有亚白就跳
AddExecutor(ExecutorType.SpSummon, (int)CardId.青眼亚白龙, 青眼亚白龙特殊召唤);
// spsummon Alternative White Dragon if possible
AddExecutor(ExecutorType.SpSummon, (int)CardId.AlternativeWhiteDragon, AlternativeWhiteDragonSummon);
// 苏生
AddExecutor(ExecutorType.Activate, (int)CardId.复活之福音, 死者苏生效果);
AddExecutor(ExecutorType.Activate, (int)CardId.银龙的轰咆, 死者苏生效果);
AddExecutor(ExecutorType.Activate, (int)CardId.死者苏生, 死者苏生效果);
// reborn
AddExecutor(ExecutorType.Activate, (int)CardId.ReturnOfTheDragonLords, RebornEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SilversCry, RebornEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, RebornEffect);
// 效果
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.Activate, (int)CardId.银河眼暗物质龙, 银河眼暗物质龙效果);
AddExecutor(ExecutorType.Activate, (int)CardId.苍眼银龙, 苍眼银龙效果);
AddExecutor(ExecutorType.Activate, (int)CardId.森罗的姬牙宫, 森罗的姬芽宫效果);
// monster effects
AddExecutor(ExecutorType.Activate, (int)CardId.AlternativeWhiteDragon, AlternativeWhiteDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SageWithEyesOfBlue, SageWithEyesOfBlueEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.WhiteStoneOfAncients, WhiteStoneOfAncientsEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.DragonSpiritOfWhite, DragonSpiritOfWhiteEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.BlueEyesSpiritDragon, BlueEyesSpiritDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.HopeHarbingerDragonTitanicGalaxy, HopeHarbingerDragonTitanicGalaxyEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyEyesCipherDragon, GalaxyEyesCipherDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyEyesPrimePhotonDragon, GalaxyEyesPrimePhotonDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyEyesFullArmorPhotonDragon, GalaxyEyesFullArmorPhotonDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyEyesCipherBladeDragon, GalaxyEyesCipherBladeDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyEyesDarkMatterDragon, GalaxyEyesDarkMatterDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.AzureEyesSilverDragon, AzureEyesSilverDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SylvanPrincessprite, SylvanPrincesspriteEffect);
// 通招
AddExecutor(ExecutorType.Summon, (int)CardId.青色眼睛的贤士, 太古的白石通常召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.太古的白石, 太古的白石通常召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.传说的白石, 太古的白石通常召唤);
// normal summon
AddExecutor(ExecutorType.Summon, (int)CardId.SageWithEyesOfBlue, WhiteStoneSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.WhiteStoneOfAncients, WhiteStoneSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.WhiteStoneOfLegend, WhiteStoneSummon);
// 出大怪
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.希望魁龙银河巨神, 希望魁龙银河巨神超量召唤);
AddExecutor(ExecutorType.SpSummon, (int)CardId.森罗的姬牙宫, 森罗的姬芽宫超量召唤);
// special summon from extra
AddExecutor(ExecutorType.SpSummon, (int)CardId.GalaxyEyesCipherDragon, GalaxyEyesCipherDragonSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GalaxyEyesPrimePhotonDragon, GalaxyEyesPrimePhotonDragonSumom);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GalaxyEyesFullArmorPhotonDragon, GalaxyEyesFullArmorPhotonDragonSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GalaxyEyesCipherBladeDragon, GalaxyEyesCipherBladeDragonSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GalaxyEyesDarkMatterDragon, GalaxyEyesDarkMatterDragonSummom);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Giganticastle, GiganticastleSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.BlueEyesSpiritDragon, BlueEyesSpiritDragonSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.HopeHarbingerDragonTitanicGalaxy, HopeHarbingerDragonTitanicGalaxySummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SylvanPrincessprite, SylvanPrincesspriteSummon);
// 没别的可干
AddExecutor(ExecutorType.Activate, (int)CardId.灵魂补充, 灵魂补充);
AddExecutor(ExecutorType.Repos, 改变攻守表示);
// 通招白石发动贤士手卡效果
AddExecutor(ExecutorType.Summon, (int)CardId.传说的白石, 传说的白石通常召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.太古的白石, 传说的白石通常召唤);
AddExecutor(ExecutorType.Summon, (int)CardId.青色眼睛的贤士, 传说的白石通常召唤);
AddExecutor(ExecutorType.Activate, (int)CardId.青色眼睛的贤士, 青色眼睛的贤士手卡效果);
// 优先盖传说白石以期望拿到白龙打开局面
AddExecutor(ExecutorType.MonsterSet, (int)CardId.传说的白石);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.太古的白石);
AddExecutor(ExecutorType.SpellSet, 盖卡);
// if we don't have other things to do...
AddExecutor(ExecutorType.Activate, (int)CardId.SoulCharge, SoulChargeEffect);
AddExecutor(ExecutorType.Repos, Repos);
// summon White Stone to use the hand effect of Sage
AddExecutor(ExecutorType.Summon, (int)CardId.WhiteStoneOfLegend, WhiteStoneSummonForSage);
AddExecutor(ExecutorType.Summon, (int)CardId.WhiteStoneOfAncients, WhiteStoneSummonForSage);
AddExecutor(ExecutorType.Summon, (int)CardId.SageWithEyesOfBlue, WhiteStoneSummonForSage);
AddExecutor(ExecutorType.Activate, (int)CardId.SageWithEyesOfBlue, SageWithEyesOfBlueEffectInHand);
// set White Stone of Legend frist
AddExecutor(ExecutorType.MonsterSet, (int)CardId.WhiteStoneOfLegend);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.WhiteStoneOfAncients);
AddExecutor(ExecutorType.SpellSet, SpellSet);
}
public override bool OnSelectHand()
{
// 随机先后攻
return Program.Rand.Next(2) > 0;
}
public override void OnNewTurn()
{
// 回合开始时重置状况
使用过的青眼亚白龙.Clear();
使用过的光波龙 = null;
已特殊召唤青眼亚白龙 = false;
已发动灵魂补充 = false;
// reset
UsedAlternativeWhiteDragon.Clear();
UsedGalaxyEyesCipherDragon = null;
AlternativeWhiteDragonSummoned = false;
SoulChargeUsed = false;
}
public override IList<ClientCard> OnSelectCard(IList<ClientCard> cards, int min, int max, bool cancelable)
......@@ -148,13 +142,13 @@ namespace WindBot.Game.AI.Decks
Logger.DebugWriteLine("OnSelectCard " + cards.Count + " " + min + " " + max);
if (max == 2 && cards[0].Location == CardLocation.Deck)
{
Logger.DebugWriteLine("龙觉醒检索.");
Logger.DebugWriteLine("OnSelectCard MelodyOfAwakeningDragon");
IList<ClientCard> result = new List<ClientCard>();
if (!Bot.HasInHand((int)CardId.青眼白龙))
if (!Bot.HasInHand((int)CardId.WhiteDragon))
{
foreach (ClientCard card in cards)
{
if (card.Id == (int)CardId.青眼白龙)
if (card.Id == (int)CardId.WhiteDragon)
{
result.Add(card);
break;
......@@ -163,7 +157,7 @@ namespace WindBot.Game.AI.Decks
}
foreach (ClientCard card in cards)
{
if (card.Id == (int)CardId.青眼亚白龙 && result.Count < max)
if (card.Id == (int)CardId.AlternativeWhiteDragon && result.Count < max)
{
result.Add(card);
}
......@@ -186,7 +180,7 @@ namespace WindBot.Game.AI.Decks
}
if (max == 2 && min == 2 && cards[0].Location == CardLocation.MonsterZone)
{
Logger.DebugWriteLine("超量召唤.");
Logger.DebugWriteLine("OnSelectCard XYZ");
IList<ClientCard> avail = new List<ClientCard>();
foreach (ClientCard card in cards)
{
......@@ -194,11 +188,11 @@ namespace WindBot.Game.AI.Decks
avail.Add(card);
}
IList<ClientCard> result = new List<ClientCard>();
while (使用过的青眼亚白龙.Count > 0 && avail.IndexOf(使用过的青眼亚白龙[0]) > 0)
while (UsedAlternativeWhiteDragon.Count > 0 && avail.IndexOf(UsedAlternativeWhiteDragon[0]) > 0)
{
Logger.DebugWriteLine("优先用使用过的亚白龙超量.");
ClientCard card = 使用过的青眼亚白龙[0];
使用过的青眼亚白龙.Remove(card);
Logger.DebugWriteLine("select UsedAlternativeWhiteDragon");
ClientCard card = UsedAlternativeWhiteDragon[0];
UsedAlternativeWhiteDragon.Remove(card);
avail.Remove(card);
result.Add(card);
}
......@@ -224,13 +218,13 @@ namespace WindBot.Game.AI.Decks
if (sum != 8 || !mode)
return null;
foreach (ClientCard 亚白龙 in 使用过的青眼亚白龙)
foreach (ClientCard AlternativeWhiteDragon in UsedAlternativeWhiteDragon)
{
if (cards.IndexOf(亚白龙) > 0)
if (cards.IndexOf(AlternativeWhiteDragon) > 0)
{
使用过的青眼亚白龙.Remove(亚白龙);
Logger.DebugWriteLine("选择了使用过的青眼亚白龙");
return new[] { 亚白龙 };
UsedAlternativeWhiteDragon.Remove(AlternativeWhiteDragon);
Logger.DebugWriteLine("select UsedAlternativeWhiteDragon");
return new[] { AlternativeWhiteDragon };
}
}
......@@ -247,182 +241,162 @@ namespace WindBot.Game.AI.Decks
return attacker.Attack > 0;
}
private bool 龙之灵庙效果()
private bool DragonShrineEffect()
{
Logger.DebugWriteLine("龙之灵庙.");
AI.SelectCard(new[]
{
(int)CardId.白色灵龙,
(int)CardId.青眼白龙,
(int)CardId.太古的白石,
(int)CardId.传说的白石
(int)CardId.DragonSpiritOfWhite,
(int)CardId.WhiteDragon,
(int)CardId.WhiteStoneOfAncients,
(int)CardId.WhiteStoneOfLegend
});
if (!Bot.HasInHand((int)CardId.青眼白龙))
if (!Bot.HasInHand((int)CardId.WhiteDragon))
{
Logger.DebugWriteLine("手里没有本体,堆白石.");
AI.SelectNextCard((int)CardId.传说的白石);
AI.SelectNextCard((int)CardId.WhiteStoneOfLegend);
}
else
{
Logger.DebugWriteLine("堆太古或灵龙或白石.");
AI.SelectNextCard(new[]
{
(int)CardId.太古的白石,
(int)CardId.白色灵龙,
(int)CardId.传说的白石
(int)CardId.WhiteStoneOfAncients,
(int)CardId.DragonSpiritOfWhite,
(int)CardId.WhiteStoneOfLegend
});
}
return true;
}
private bool 龙觉醒旋律效果()
private bool MelodyOfAwakeningDragonEffect()
{
Logger.DebugWriteLine("龙觉醒选要丢的卡.");
AI.SelectCard(new[]
{
(int)CardId.太古的白石,
(int)CardId.白色灵龙,
(int)CardId.传说的白石,
(int)CardId.银河旋风,
(int)CardId.效果遮蒙者,
(int)CardId.抵价购物,
(int)CardId.青色眼睛的贤士
(int)CardId.WhiteStoneOfAncients,
(int)CardId.DragonSpiritOfWhite,
(int)CardId.WhiteStoneOfLegend,
(int)CardId.GalaxyCyclone,
(int)CardId.EffectVeiler,
(int)CardId.TradeIn,
(int)CardId.SageWithEyesOfBlue
});
return true;
}
private bool 调和的宝札效果()
private bool CardsOfConsonanceEffect()
{
Logger.DebugWriteLine("调和选要丢的卡.");
if (!Bot.HasInHand((int)CardId.青眼白龙))
if (!Bot.HasInHand((int)CardId.WhiteDragon))
{
Logger.DebugWriteLine("手里没有本体,丢白石.");
AI.SelectCard((int)CardId.传说的白石);
AI.SelectCard((int)CardId.WhiteStoneOfLegend);
}
else if (Bot.HasInHand((int)CardId.抵价购物))
else if (Bot.HasInHand((int)CardId.TradeIn))
{
Logger.DebugWriteLine("手里有本体,再拿一个喂八抽.");
AI.SelectCard((int)CardId.传说的白石);
AI.SelectCard((int)CardId.WhiteStoneOfLegend);
}
else
{
Logger.DebugWriteLine("手里有本体,优先丢太古.");
AI.SelectCard((int)CardId.太古的白石);
AI.SelectCard((int)CardId.WhiteStoneOfAncients);
}
return true;
}
private bool 抵价购物效果()
private bool TradeInEffect()
{
Logger.DebugWriteLine("抵价购物发动.");
if (Bot.HasInHand((int)CardId.白色灵龙))
if (Bot.HasInHand((int)CardId.DragonSpiritOfWhite))
{
Logger.DebugWriteLine("手里有白灵龙,优先丢掉.");
AI.SelectCard((int)CardId.白色灵龙);
AI.SelectCard((int)CardId.DragonSpiritOfWhite);
return true;
}
else if (手里有2((int)CardId.青眼白龙))
else if (HasTwoInHand((int)CardId.WhiteDragon))
{
Logger.DebugWriteLine("手里有2个青眼白龙,丢1个.");
AI.SelectCard((int)CardId.青眼白龙);
AI.SelectCard((int)CardId.WhiteDragon);
return true;
}
else if (手里有2((int)CardId.青眼亚白龙))
else if (HasTwoInHand((int)CardId.AlternativeWhiteDragon))
{
Logger.DebugWriteLine("手里有2个青眼亚白龙,丢1个.");
AI.SelectCard((int)CardId.青眼亚白龙);
AI.SelectCard((int)CardId.AlternativeWhiteDragon);
return true;
}
else if (!Bot.HasInHand((int)CardId.青眼白龙) || !Bot.HasInHand((int)CardId.青眼亚白龙))
else if (!Bot.HasInHand((int)CardId.WhiteDragon) || !Bot.HasInHand((int)CardId.AlternativeWhiteDragon))
{
Logger.DebugWriteLine("手里没有成对的青眼和亚白,丢1个.");
AI.SelectCard(new[]
{
(int)CardId.青眼白龙,
(int)CardId.青眼亚白龙
(int)CardId.WhiteDragon,
(int)CardId.AlternativeWhiteDragon
});
return true;
}
else
{
Logger.DebugWriteLine("手里只有一对,不能乱丢.");
return false;
}
}
private bool 青眼亚白龙效果()
private bool AlternativeWhiteDragonEffect()
{
Logger.DebugWriteLine("亚白龙效果.");
ClientCard card = Enemy.MonsterZone.GetFloodgate();
if (card != null)
{
Logger.DebugWriteLine("炸坑怪.");
AI.SelectCard(card);
使用过的青眼亚白龙.Add(Card);
UsedAlternativeWhiteDragon.Add(Card);
return true;
}
card = Enemy.MonsterZone.GetInvincibleMonster();
if (card != null)
{
Logger.DebugWriteLine("炸打不死的怪.");
AI.SelectCard(card);
使用过的青眼亚白龙.Add(Card);
UsedAlternativeWhiteDragon.Add(Card);
return true;
}
card = Enemy.MonsterZone.GetDangerousMonster();
if (card != null)
{
Logger.DebugWriteLine("炸厉害的怪.");
AI.SelectCard(card);
使用过的青眼亚白龙.Add(Card);
UsedAlternativeWhiteDragon.Add(Card);
return true;
}
card = AI.Utils.GetOneEnemyBetterThanValue(Card.GetDefensePower(), false);
if (card != null)
{
Logger.DebugWriteLine("炸比自己强的怪.");
AI.SelectCard(card);
使用过的青眼亚白龙.Add(Card);
UsedAlternativeWhiteDragon.Add(Card);
return true;
}
if (能处理青眼亚白龙())
if (CanDealWithUsedAlternativeWhiteDragon())
{
使用过的青眼亚白龙.Add(Card);
UsedAlternativeWhiteDragon.Add(Card);
return true;
}
Logger.DebugWriteLine("不炸.");
return false;
}
private bool 死者苏生效果()
private bool RebornEffect()
{
if (Duel.Player == 0 && CurrentChain.Count > 0)
{
Logger.DebugWriteLine("轰咆避免卡时点.");
// Silver's Cry spsummon Dragon Spirit at chain 2 will miss the timing
return false;
}
if (Duel.Player == 0 && (Duel.Phase == DuelPhase.Draw || Duel.Phase == DuelPhase.Standby))
{
Logger.DebugWriteLine("轰咆自己回合不和苍眼银龙抢对象.");
// Let Azure-Eyes spsummon first
return false;
}
List<int> targets = new List<int> {
(int)CardId.希望魁龙银河巨神,
(int)CardId.银河眼暗物质龙,
(int)CardId.青眼亚白龙,
(int)CardId.苍眼银龙,
(int)CardId.青眼精灵龙,
(int)CardId.青眼白龙,
(int)CardId.白色灵龙
(int)CardId.HopeHarbingerDragonTitanicGalaxy,
(int)CardId.GalaxyEyesDarkMatterDragon,
(int)CardId.AlternativeWhiteDragon,
(int)CardId.AzureEyesSilverDragon,
(int)CardId.BlueEyesSpiritDragon,
(int)CardId.WhiteDragon,
(int)CardId.DragonSpiritOfWhite
};
if (!Bot.HasInGraveyard(targets))
{
return false;
}
ClientCard floodgate = Enemy.SpellZone.GetFloodgate();
if (floodgate != null && Bot.HasInGraveyard((int)CardId.白色灵龙))
if (floodgate != null && Bot.HasInGraveyard((int)CardId.DragonSpiritOfWhite))
{
AI.SelectCard((int)CardId.白色灵龙);
AI.SelectCard((int)CardId.DragonSpiritOfWhite);
}
else
{
......@@ -431,31 +405,29 @@ namespace WindBot.Game.AI.Decks
return true;
}
private bool 苍眼银龙效果()
private bool AzureEyesSilverDragonEffect()
{
Logger.DebugWriteLine("苍眼银龙效果.");
if (Enemy.GetSpellCount() > 0)
{
AI.SelectCard((int)CardId.白色灵龙);
AI.SelectCard((int)CardId.DragonSpiritOfWhite);
}
else
{
AI.SelectCard((int)CardId.青眼白龙);
AI.SelectCard((int)CardId.WhiteDragon);
}
return true;
}
private bool 青色眼睛的贤士通常召唤()
private bool SageWithEyesOfBlueSummon()
{
Logger.DebugWriteLine("手里没有白石,先贤士检索.");
return !Bot.HasInHand(new List<int>
{
(int)CardId.太古的白石,
(int)CardId.传说的白石
(int)CardId.WhiteStoneOfAncients,
(int)CardId.WhiteStoneOfLegend
});
}
private bool 青色眼睛的贤士效果()
private bool SageWithEyesOfBlueEffect()
{
if (Card.Location == CardLocation.Hand)
{
......@@ -463,20 +435,19 @@ namespace WindBot.Game.AI.Decks
}
AI.SelectCard(new[]
{
(int)CardId.太古的白石,
(int)CardId.效果遮蒙者,
(int)CardId.传说的白石
(int)CardId.WhiteStoneOfAncients,
(int)CardId.EffectVeiler,
(int)CardId.WhiteStoneOfLegend
});
return true;
}
private bool 传说的白石通常召唤()
private bool WhiteStoneSummonForSage()
{
Logger.DebugWriteLine("通招白石给贤士发手卡效果.");
return Bot.HasInHand((int)CardId.青色眼睛的贤士);
return Bot.HasInHand((int)CardId.SageWithEyesOfBlue);
}
private bool 青色眼睛的贤士手卡效果()
private bool SageWithEyesOfBlueEffectInHand()
{
if (Card.Location != CardLocation.Hand)
{
......@@ -484,105 +455,84 @@ namespace WindBot.Game.AI.Decks
}
if (!Bot.HasInMonstersZone(new List<int>
{
(int)CardId.传说的白石,
(int)CardId.太古的白石
(int)CardId.WhiteStoneOfLegend,
(int)CardId.WhiteStoneOfAncients
}) || Bot.HasInMonstersZone(new List<int>
{
(int)CardId.青眼亚白龙,
(int)CardId.青眼白龙,
(int)CardId.白色灵龙
(int)CardId.AlternativeWhiteDragon,
(int)CardId.WhiteDragon,
(int)CardId.DragonSpiritOfWhite
}))
{
Logger.DebugWriteLine("能做其他展开,不发贤士效果.");
return false;
}
AI.SelectCard(new[]
{
(int)CardId.传说的白石,
(int)CardId.太古的白石
(int)CardId.WhiteStoneOfLegend,
(int)CardId.WhiteStoneOfAncients
});
List<ClientCard> spells = Enemy.GetSpells();
if (spells.Count == 0)
{
Logger.DebugWriteLine("对面没坑,跳个本体.");
AI.SelectNextCard((int)CardId.青眼白龙);
AI.SelectNextCard((int)CardId.WhiteDragon);
}
else
{
Logger.DebugWriteLine("对面有坑,拆.");
AI.SelectNextCard((int)CardId.白色灵龙);
AI.SelectNextCard((int)CardId.DragonSpiritOfWhite);
}
return true;
}
private bool 白色灵龙效果()
private bool DragonSpiritOfWhiteEffect()
{
Logger.DebugWriteLine("白色灵龙" + ActivateDescription);
if (ActivateDescription == -1)
{
Logger.DebugWriteLine("白色灵龙拆后场.");
ClientCard target = Enemy.SpellZone.GetFloodgate();
AI.SelectCard(target);
return true;
}
/*else if(Duel.Phase==DuelPhase.BattleStart)
{
Logger.DebugWriteLine("白色灵龙战阶变身.");
return true;
}*/
else
{
if (Duel.Player == 0 && Duel.Phase == DuelPhase.BattleStart)
{
Logger.DebugWriteLine("白色灵龙打完变身");
return 手里有足够的青眼白龙() && Card.Attacked;
return HaveEnoughWhiteDragonInHand() && Card.Attacked;
}
if (Duel.Player == 1 && Duel.Phase == DuelPhase.End)
{
Logger.DebugWriteLine("白色灵龙回合结束变身");
return 手里有足够的青眼白龙()
&& Bot.HasInMonstersZone((int)CardId.苍眼银龙, true)
&& !Bot.HasInGraveyard((int)CardId.白色灵龙)
&& !Bot.HasInGraveyard((int)CardId.青眼白龙);
return HaveEnoughWhiteDragonInHand()
&& Bot.HasInMonstersZone((int)CardId.AzureEyesSilverDragon, true)
&& !Bot.HasInGraveyard((int)CardId.DragonSpiritOfWhite)
&& !Bot.HasInGraveyard((int)CardId.WhiteDragon);
}
Logger.DebugWriteLine("白色灵龙特招手卡. 对象数量" + Duel.ChainTargets.Count);
foreach (ClientCard card in Duel.ChainTargets)
{
// Logger.DebugWriteLine("对象" + card.Id);
if (Card.Equals(card))
{
Logger.DebugWriteLine("白色灵龙被取对象,是否变身.");
return 手里有足够的青眼白龙();
return HaveEnoughWhiteDragonInHand();
}
}
return false;
}
}
private bool 青眼精灵龙效果()
private bool BlueEyesSpiritDragonEffect()
{
Logger.DebugWriteLine("青眼精灵龙" + ActivateDescription);
if (ActivateDescription == -1 || ActivateDescription == AI.Utils.GetStringId((int)CardId.青眼精灵龙, 0))
if (ActivateDescription == -1 || ActivateDescription == AI.Utils.GetStringId((int)CardId.BlueEyesSpiritDragon, 0))
{
Logger.DebugWriteLine("青眼精灵龙无效墓地.");
return LastChainPlayer == 1;
}
else if (Duel.Player == 1 && (Duel.Phase == DuelPhase.BattleStart || Duel.Phase == DuelPhase.End))
{
Logger.DebugWriteLine("青眼精灵龙主动变身.");
AI.SelectCard((int)CardId.苍眼银龙);
AI.SelectCard((int)CardId.AzureEyesSilverDragon);
return true;
}
else
{
Logger.DebugWriteLine("青眼精灵龙变身. 对象数量" + Duel.ChainTargets.Count);
foreach (ClientCard card in Duel.ChainTargets)
{
// Logger.DebugWriteLine("对象" + card.Id);
if (Card.Equals(card))
{
Logger.DebugWriteLine("青眼精灵龙被取对象,变身.");
AI.SelectCard((int)CardId.苍眼银龙);
AI.SelectCard((int)CardId.AzureEyesSilverDragon);
return true;
}
}
......@@ -590,105 +540,89 @@ namespace WindBot.Game.AI.Decks
}
}
private bool 希望魁龙银河巨神效果()
private bool HopeHarbingerDragonTitanicGalaxyEffect()
{
Logger.DebugWriteLine("希望魁龙银河巨神" + ActivateDescription);
if (ActivateDescription == -1 || ActivateDescription == AI.Utils.GetStringId((int)CardId.希望魁龙银河巨神, 0))
if (ActivateDescription == -1 || ActivateDescription == AI.Utils.GetStringId((int)CardId.HopeHarbingerDragonTitanicGalaxy, 0))
{
Logger.DebugWriteLine("希望魁龙银河巨神无效魔法.");
return LastChainPlayer == 1;
}
return true;
}
private bool 太古的白石效果()
private bool WhiteStoneOfAncientsEffect()
{
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.太古的白石, 0))
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.WhiteStoneOfAncients, 0))
{
Logger.DebugWriteLine("太古白石回收效果.");
if (Bot.HasInHand((int)CardId.抵价购物)
&& !Bot.HasInHand((int)CardId.青眼白龙)
&& !Bot.HasInHand((int)CardId.青眼亚白龙))
if (Bot.HasInHand((int)CardId.TradeIn)
&& !Bot.HasInHand((int)CardId.WhiteDragon)
&& !Bot.HasInHand((int)CardId.AlternativeWhiteDragon))
{
Logger.DebugWriteLine("回收喂八抽.");
AI.SelectCard((int)CardId.青眼白龙);
AI.SelectCard((int)CardId.WhiteDragon);
return true;
}
if (已特殊召唤青眼亚白龙)
if (AlternativeWhiteDragonSummoned)
{
Logger.DebugWriteLine("已经跳过亚白龙,下回合再回收.");
return false;
}
if (Bot.HasInHand((int)CardId.青眼白龙)
&& !Bot.HasInHand((int)CardId.青眼亚白龙)
&& Bot.HasInGraveyard((int)CardId.青眼亚白龙))
if (Bot.HasInHand((int)CardId.WhiteDragon)
&& !Bot.HasInHand((int)CardId.AlternativeWhiteDragon)
&& Bot.HasInGraveyard((int)CardId.AlternativeWhiteDragon))
{
Logger.DebugWriteLine("缺亚白龙,回收.");
AI.SelectCard((int)CardId.青眼亚白龙);
AI.SelectCard((int)CardId.AlternativeWhiteDragon);
return true;
}
if (Bot.HasInHand((int)CardId.青眼亚白龙)
&& !Bot.HasInHand((int)CardId.青眼白龙)
&& Bot.HasInGraveyard((int)CardId.青眼白龙))
if (Bot.HasInHand((int)CardId.AlternativeWhiteDragon)
&& !Bot.HasInHand((int)CardId.WhiteDragon)
&& Bot.HasInGraveyard((int)CardId.WhiteDragon))
{
Logger.DebugWriteLine("有亚白龙缺本体,回收.");
AI.SelectCard((int)CardId.青眼白龙);
AI.SelectCard((int)CardId.WhiteDragon);
return true;
}
Logger.DebugWriteLine("并没有应该回收的.");
return false;
}
else
{
Logger.DebugWriteLine("太古白石特招效果.");
List<ClientCard> spells = Enemy.GetSpells();
if (spells.Count == 0)
{
Logger.DebugWriteLine("对面没坑,跳个本体.");
AI.SelectCard((int)CardId.青眼白龙);
//AI.SelectCard((int)CardId.白色灵龙);
AI.SelectCard((int)CardId.WhiteDragon);
}
else
{
Logger.DebugWriteLine("对面有坑,拆.");
AI.SelectCard((int)CardId.白色灵龙);
AI.SelectCard((int)CardId.DragonSpiritOfWhite);
}
return true;
}
}
private bool 青眼亚白龙特殊召唤()
private bool AlternativeWhiteDragonSummon()
{
已特殊召唤青眼亚白龙 = true;
AlternativeWhiteDragonSummoned = true;
return true;
}
private bool 太古的白石通常召唤()
private bool WhiteStoneSummon()
{
Logger.DebugWriteLine("1星怪兽通常召唤.");
return Bot.HasInMonstersZone(new List<int>
{
(int)CardId.青色眼睛的贤士,
(int)CardId.太古的白石,
(int)CardId.传说的白石,
(int)CardId.青眼亚白龙,
(int)CardId.青眼白龙,
(int)CardId.白色灵龙
(int)CardId.SageWithEyesOfBlue,
(int)CardId.WhiteStoneOfAncients,
(int)CardId.WhiteStoneOfLegend,
(int)CardId.AlternativeWhiteDragon,
(int)CardId.WhiteDragon,
(int)CardId.DragonSpiritOfWhite
});
}
private bool 银河眼光波龙超量召唤()
private bool GalaxyEyesCipherDragonSummon()
{
Logger.DebugWriteLine("银河眼光波龙超量召唤.");
if (Duel.Turn == 1 || 已发动灵魂补充)
if (Duel.Turn == 1 || SoulChargeUsed)
{
Logger.DebugWriteLine("先攻不叠银河眼,叠银河巨神.");
return false;
}
List<ClientCard> monsters = Enemy.GetMonsters();
if (monsters.Count == 1 && !monsters[0].IsFacedown() && ((monsters[0].IsDefense() && monsters[0].GetDefensePower() >= 3000) && monsters[0].HasType(CardType.Xyz)))
{
Logger.DebugWriteLine("只有一个大怪兽,光波龙抢之.");
return true;
}
if (monsters.Count >= 3)
......@@ -697,7 +631,6 @@ namespace WindBot.Game.AI.Decks
{
if (!monster.IsFacedown() && ((monster.IsDefense() && monster.GetDefensePower() >= 3000) || monster.HasType(CardType.Xyz)))
{
Logger.DebugWriteLine("貌似打不死,出个光波龙看看.");
return true;
}
}
......@@ -705,87 +638,79 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 银河眼光子龙皇超量召唤()
private bool GalaxyEyesPrimePhotonDragonSumom()
{
Logger.DebugWriteLine("银河眼光子龙皇超量召唤.");
if (Duel.Turn == 1)
{
Logger.DebugWriteLine("先攻不叠银河眼,叠银河巨神.");
return false;
}
if (AI.Utils.IsOneEnemyBetterThanValue(2999, false))
{
Logger.DebugWriteLine("有高攻怪兽,出银河眼.");
return true;
}
return false;
}
private bool 银河眼重铠光子龙超量召唤()
private bool GalaxyEyesFullArmorPhotonDragonSummon()
{
Logger.DebugWriteLine("银河眼重铠光子龙超量召唤.");
if (Bot.HasInMonstersZone((int)CardId.银河眼光波龙))
if (Bot.HasInMonstersZone((int)CardId.GalaxyEyesCipherDragon))
{
List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters)
{
if ((monster.IsDisabled() && monster.HasType(CardType.Xyz) && !monster.Equals(使用过的光波龙))
|| (Duel.Phase == DuelPhase.Main2 && monster.Equals(使用过的光波龙)))
if ((monster.IsDisabled() && monster.HasType(CardType.Xyz) && !monster.Equals(UsedGalaxyEyesCipherDragon))
|| (Duel.Phase == DuelPhase.Main2 && monster.Equals(UsedGalaxyEyesCipherDragon)))
{
AI.SelectCard(monster);
return true;
}
}
}
if (Bot.HasInMonstersZone((int)CardId.银河眼光子龙皇))
if (Bot.HasInMonstersZone((int)CardId.GalaxyEyesPrimePhotonDragon))
{
if (!AI.Utils.IsOneEnemyBetterThanValue(4000, false))
{
Logger.DebugWriteLine("没有高攻怪兽,出重铠.");
AI.SelectCard((int)CardId.银河眼光子龙皇);
AI.SelectCard((int)CardId.GalaxyEyesPrimePhotonDragon);
return true;
}
}
return false;
}
private bool 银河眼光波刃龙超量召唤()
private bool GalaxyEyesCipherBladeDragonSummon()
{
Logger.DebugWriteLine("银河眼光波刃龙超量召唤.");
if (Bot.HasInMonstersZone((int)CardId.银河眼重铠光子龙) && AI.Utils.GetProblematicCard() != null)
if (Bot.HasInMonstersZone((int)CardId.GalaxyEyesFullArmorPhotonDragon) && AI.Utils.GetProblematicCard() != null)
{
AI.SelectCard((int)CardId.银河眼重铠光子龙);
AI.SelectCard((int)CardId.GalaxyEyesFullArmorPhotonDragon);
return true;
}
return false;
}
private bool 银河眼暗物质龙超量召唤()
private bool GalaxyEyesDarkMatterDragonSummom()
{
Logger.DebugWriteLine("银河眼暗物质龙超量召唤.");
if (Bot.HasInMonstersZone((int)CardId.银河眼重铠光子龙))
if (Bot.HasInMonstersZone((int)CardId.GalaxyEyesFullArmorPhotonDragon))
{
AI.SelectCard((int)CardId.银河眼重铠光子龙);
AI.SelectCard((int)CardId.GalaxyEyesFullArmorPhotonDragon);
return true;
}
return false;
}
private bool 银河眼光子龙皇效果()
private bool GalaxyEyesPrimePhotonDragonEffect()
{
return true;
}
private bool 银河眼光波龙效果()
private bool GalaxyEyesCipherDragonEffect()
{
Logger.DebugWriteLine("银河眼光波龙效果.");
List<ClientCard> monsters = Enemy.GetMonsters();
foreach (ClientCard monster in monsters)
{
if (monster.HasType(CardType.Xyz))
{
AI.SelectCard(monster);
使用过的光波龙 = Card;
UsedGalaxyEyesCipherDragon = Card;
return true;
}
}
......@@ -794,17 +719,16 @@ namespace WindBot.Game.AI.Decks
if (monster.IsDefense())
{
AI.SelectCard(monster);
使用过的光波龙 = Card;
UsedGalaxyEyesCipherDragon = Card;
return true;
}
}
使用过的光波龙 = Card;
UsedGalaxyEyesCipherDragon = Card;
return true;
}
private bool 银河眼重铠光子龙效果()
private bool GalaxyEyesFullArmorPhotonDragonEffect()
{
Logger.DebugWriteLine("重铠优先炸后场.");
ClientCard floodgate = Enemy.SpellZone.GetFloodgate();
if (floodgate != null)
{
......@@ -829,7 +753,6 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> monsters = Enemy.GetMonsters();
if (monsters.Count >= 2)
{
Logger.DebugWriteLine("怪多就先炸守备的.");
foreach (ClientCard monster in monsters)
{
if (monster.IsDefense())
......@@ -842,7 +765,6 @@ namespace WindBot.Game.AI.Decks
}
if (monsters.Count == 2)
{
Logger.DebugWriteLine("2只怪只炸打不过的,剩下留给暗物质打.");
foreach (ClientCard monster in monsters)
{
if (monster.IsMonsterInvincible() || monster.IsMonsterDangerous() || monster.GetDefensePower() > 4000)
......@@ -859,13 +781,12 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 银河眼光波刃龙效果()
private bool GalaxyEyesCipherBladeDragonEffect()
{
if (Card.Location == CardLocation.Grave)
{
return true;
}
Logger.DebugWriteLine("光波刃龙优先炸前场.");
ClientCard target = AI.Utils.GetProblematicCard();
if (target != null)
{
......@@ -903,123 +824,111 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 银河眼暗物质龙效果()
private bool GalaxyEyesDarkMatterDragonEffect()
{
AI.SelectCard(new[]
{
(int)CardId.太古的白石,
(int)CardId.传说的白石,
(int)CardId.白色灵龙,
(int)CardId.青眼白龙
(int)CardId.WhiteStoneOfAncients,
(int)CardId.WhiteStoneOfLegend,
(int)CardId.DragonSpiritOfWhite,
(int)CardId.WhiteDragon
});
AI.SelectNextCard(new[]
{
(int)CardId.太古的白石,
(int)CardId.传说的白石,
(int)CardId.白色灵龙,
(int)CardId.青眼白龙
(int)CardId.WhiteStoneOfAncients,
(int)CardId.WhiteStoneOfLegend,
(int)CardId.DragonSpiritOfWhite,
(int)CardId.WhiteDragon
});
return true;
}
private bool 鬼岩城同调召唤()
private bool GiganticastleSummon()
{
if (Duel.Phase != DuelPhase.Main1 || Duel.Turn == 1 || 已发动灵魂补充)
if (Duel.Phase != DuelPhase.Main1 || Duel.Turn == 1 || SoulChargeUsed)
return false;
int bestSelfAttack = AI.Utils.GetBestAttack(Bot, false);
int bestEnemyAttack = AI.Utils.GetBestAttack(Enemy, false);
return bestSelfAttack <= bestEnemyAttack && bestEnemyAttack > 2500 && bestEnemyAttack <= 3100;
}
private bool 青眼精灵龙同调召唤()
private bool BlueEyesSpiritDragonSummon()
{
if (Duel.Phase == DuelPhase.Main1)
{
Logger.DebugWriteLine("主阶段1同调精灵龙.");
if (使用过的青眼亚白龙.Count > 0)
if (UsedAlternativeWhiteDragon.Count > 0)
{
Logger.DebugWriteLine("有用过的亚白需要同调.");
return true;
}
if (Duel.Turn == 1 || 已发动灵魂补充)
if (Duel.Turn == 1 || SoulChargeUsed)
{
Logger.DebugWriteLine("先攻同调.");
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
}
if (Duel.Phase == DuelPhase.Main2)
{
Logger.DebugWriteLine("主阶段2同调精灵龙.");
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
return false;
}
private bool 希望魁龙银河巨神超量召唤()
private bool HopeHarbingerDragonTitanicGalaxySummon()
{
if (Duel.Phase == DuelPhase.Main1)
{
Logger.DebugWriteLine("主阶段1超量银河巨神.");
if (使用过的青眼亚白龙.Count > 0)
if (UsedAlternativeWhiteDragon.Count > 0)
{
Logger.DebugWriteLine("有用过的亚白可以叠.");
return true;
}
if (Duel.Turn == 1 || 已发动灵魂补充)
if (Duel.Turn == 1 || SoulChargeUsed)
{
Logger.DebugWriteLine("先攻超量银河巨神.");
return true;
}
}
if (Duel.Phase == DuelPhase.Main2)
{
Logger.DebugWriteLine("主阶段2超量银河巨神.");
return true;
}
return false;
}
private bool 森罗的姬芽宫超量召唤()
private bool SylvanPrincesspriteSummon()
{
if (Duel.Turn == 1)
{
Logger.DebugWriteLine("先攻可以超量森罗的姬芽宫.");
return true;
}
if (Duel.Phase == DuelPhase.Main1 && !Bot.HasInMonstersZone(new List<int>
{
(int)CardId.青眼亚白龙,
(int)CardId.青眼白龙,
(int)CardId.白色灵龙
(int)CardId.AlternativeWhiteDragon,
(int)CardId.WhiteDragon,
(int)CardId.DragonSpiritOfWhite
}))
{
Logger.DebugWriteLine("不能出L9,只能叠森罗的姬芽宫.");
return true;
}
if (Duel.Phase == DuelPhase.Main2 || 已发动灵魂补充)
if (Duel.Phase == DuelPhase.Main2 || SoulChargeUsed)
{
Logger.DebugWriteLine("主阶段2超量森罗的姬芽宫.");
return true;
}
return false;
}
private bool 森罗的姬芽宫效果()
private bool SylvanPrincesspriteEffect()
{
AI.SelectCard(new[]
{
(int)CardId.传说的白石,
(int)CardId.太古的白石
(int)CardId.WhiteStoneOfLegend,
(int)CardId.WhiteStoneOfAncients
});
return true;
}
private bool 灵魂补充()
private bool SoulChargeEffect()
{
Logger.DebugWriteLine("灵魂补充.");
if (Bot.HasInMonstersZone((int)CardId.青眼精灵龙, true))
if (Bot.HasInMonstersZone((int)CardId.BlueEyesSpiritDragon, true))
return false;
int count = Bot.GetGraveyardMonsters().Count;
int space = 5 - Bot.GetMonsterCount();
......@@ -1049,20 +958,20 @@ namespace WindBot.Game.AI.Decks
}
AI.SelectCard(new[]
{
(int)CardId.青眼精灵龙,
(int)CardId.希望魁龙银河巨神,
(int)CardId.青眼亚白龙,
(int)CardId.青眼白龙,
(int)CardId.白色灵龙,
(int)CardId.苍眼银龙,
(int)CardId.太古的白石,
(int)CardId.传说的白石
(int)CardId.BlueEyesSpiritDragon,
(int)CardId.HopeHarbingerDragonTitanicGalaxy,
(int)CardId.AlternativeWhiteDragon,
(int)CardId.WhiteDragon,
(int)CardId.DragonSpiritOfWhite,
(int)CardId.AzureEyesSilverDragon,
(int)CardId.WhiteStoneOfAncients,
(int)CardId.WhiteStoneOfLegend
});
已发动灵魂补充 = true;
SoulChargeUsed = true;
return true;
}
private bool 改变攻守表示()
private bool Repos()
{
bool enemyBetter = AI.Utils.IsEnemyBetter(true, true);
......@@ -1073,25 +982,25 @@ namespace WindBot.Game.AI.Decks
if (Card.IsDefense() && !enemyBetter && Card.Attack >= Card.Defense)
return true;
if (Card.IsDefense() && (
Card.Id == (int)CardId.青眼精灵龙
|| Card.Id == (int)CardId.苍眼银龙
Card.Id == (int)CardId.BlueEyesSpiritDragon
|| Card.Id == (int)CardId.AzureEyesSilverDragon
))
return true;
if (Card.IsAttack() && (
Card.Id == (int)CardId.青色眼睛的贤士
|| Card.Id == (int)CardId.太古的白石
|| Card.Id == (int)CardId.传说的白石
Card.Id == (int)CardId.SageWithEyesOfBlue
|| Card.Id == (int)CardId.WhiteStoneOfAncients
|| Card.Id == (int)CardId.WhiteStoneOfLegend
))
return true;
return false;
}
private bool 盖卡()
private bool SpellSet()
{
return (Card.IsTrap() || (Card.Id==(int)CardId.银龙的轰咆)) && Bot.GetSpellCountWithoutField() < 4;
return (Card.IsTrap() || (Card.Id==(int)CardId.SilversCry)) && Bot.GetSpellCountWithoutField() < 4;
}
private bool 手里有2(int id)
private bool HasTwoInHand(int id)
{
int num = 0;
foreach (ClientCard card in Bot.Hand)
......@@ -1102,23 +1011,23 @@ namespace WindBot.Game.AI.Decks
return num >= 2;
}
private bool 能处理青眼亚白龙()
private bool CanDealWithUsedAlternativeWhiteDragon()
{
return Bot.HasInMonstersZone(new List<int>
{
(int)CardId.青色眼睛的贤士,
(int)CardId.太古的白石,
(int)CardId.传说的白石,
(int)CardId.青眼白龙,
(int)CardId.白色灵龙
}) || Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.青眼亚白龙)>=2 ;
(int)CardId.SageWithEyesOfBlue,
(int)CardId.WhiteStoneOfAncients,
(int)CardId.WhiteStoneOfLegend,
(int)CardId.WhiteDragon,
(int)CardId.DragonSpiritOfWhite
}) || Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.AlternativeWhiteDragon)>=2 ;
}
private bool 手里有足够的青眼白龙()
private bool HaveEnoughWhiteDragonInHand()
{
return 手里有2((int)CardId.青眼白龙) || (
Bot.HasInGraveyard((int)CardId.青眼白龙)
&& Bot.HasInGraveyard((int)CardId.太古的白石)
return HasTwoInHand((int)CardId.WhiteDragon) || (
Bot.HasInGraveyard((int)CardId.WhiteDragon)
&& Bot.HasInGraveyard((int)CardId.WhiteStoneOfAncients)
);
}
}
......
......@@ -9,120 +9,120 @@ namespace WindBot.Game.AI.Decks
[Deck("CyberDragon", "AI_CyberDragon")]
public class CyberDragonExecutor : DefaultExecutor
{
bool 力量结合效果 = false;
bool PowerBondUsed = false;
public enum CardId
{
电子镭射龙 = 4162088,
电子障壁龙 = 68774379,
电子龙 = 70095154,
电子龙三型 = 59281922,
电子凤凰 = 3370104,
装甲电子翼 = 67159705,
原始电子龙 = 26439287,
电子麒麟 = 76986005,
电子龙核 = 23893227,
电子多变龙 = 3657444,
CyberLaserDragon = 4162088,
CyberBarrierDragon = 68774379,
CyberDragon = 70095154,
CyberDragonDrei = 59281922,
CyberPhoenix = 3370104,
ArmoredCybern = 67159705,
ProtoCyberDragon = 26439287,
CyberKirin = 76986005,
CyberDragonCore = 23893227,
CyberValley = 3657444,
Raigeki = 12580477,
DarkHole = 53129443,
时间胶囊 = 11961740,
融合 = 24094653,
力量结合 = 37630732,
进化光焰 = 52875873,
光子发生装置 = 66607691,
融合解除 = 95286165,
奈落的落穴 = 29401950,
神圣防护罩反射镜力 = 44095762,
攻击反射装置 = 91989718,
电子隐秘技术 = 92773018,
活死人的呼声 = 97077563,
盗贼的七道具 = 3819470,
电子双生龙 = 74157028,
电子终结龙 = 1546123,
电子龙新星 = 58069384
DifferentDimensionCapsule = 11961740,
Polymerization = 24094653,
PowerBond = 37630732,
EvolutionBurst = 52875873,
PhotonGeneratorUnit = 66607691,
DeFusion = 95286165,
BottomlessTrapHole = 29401950,
MirrorForce = 44095762,
AttackReflectorUnit = 91989718,
CyberneticHiddenTechnology = 92773018,
CallOfTheHaunted = 97077563,
SevenToolsOfTheBandit = 3819470,
CyberTwinDragon = 74157028,
CyberEndDragon = 1546123,
CyberDragonNova = 58069384
}
public CyberDragonExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, (int)CardId.融合解除);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DeFusion);
AddExecutor(ExecutorType.Activate, (int)CardId.时间胶囊, Capsule);
AddExecutor(ExecutorType.Activate, (int)CardId.DifferentDimensionCapsule, 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.Polymerization, PolymerizationEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.PowerBond, PowerBondEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.EvolutionBurst, EvolutionBurstEffect);
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.Activate, (int)CardId.PhotonGeneratorUnit);
AddExecutor(ExecutorType.Activate, (int)CardId.DeFusion, DeFusionEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.AttackReflectorUnit);
AddExecutor(ExecutorType.Activate, (int)CardId.SevenToolsOfTheBandit, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.CallOfTheHaunted, DefaultCallOfTheHaunted);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.CyberDragonDrei, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.CyberPhoenix, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.Summon, (int)CardId.CyberValley, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.CyberDragonCore, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.ArmoredCybern, ArmoredCybernSet);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.ProtoCyberDragon, ProtoCyberDragonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.CyberKirin, CyberKirinSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberEndDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberTwinDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberBarrierDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberLaserDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberBarrierDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberLaserDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberDragonDrei);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberPhoenix);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberKirin);
AddExecutor(ExecutorType.Activate, (int)CardId.ArmoredCybern, ArmoredCybernEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberValley);
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
private bool CyberDragonInHand() { return Bot.HasInHand((int)CardId.电子龙); }
private bool CyberDragonInGraveyard() { return Bot.HasInGraveyard((int)CardId.电子龙); }
private bool CyberDragonInMonsterZone() { return Bot.HasInMonstersZone((int)CardId.电子龙); }
private bool CyberDragonIsBanished() { return Bot.HasInBanished((int)CardId.电子龙); }
private bool CyberDragonInHand() { return Bot.HasInHand((int)CardId.CyberDragon); }
private bool CyberDragonInGraveyard() { return Bot.HasInGraveyard((int)CardId.CyberDragon); }
private bool CyberDragonInMonsterZone() { return Bot.HasInMonstersZone((int)CardId.CyberDragon); }
private bool CyberDragonIsBanished() { return Bot.HasInBanished((int)CardId.CyberDragon); }
private bool Capsule()
{
List<int> SelectedCard = new List<int>();
SelectedCard.Add((int)CardId.力量结合);
SelectedCard.Add((int)CardId.PowerBond);
SelectedCard.Add((int)CardId.DarkHole);
SelectedCard.Add((int)CardId.Raigeki);
AI.SelectCard(SelectedCard);
return true;
}
private bool 融合()
private bool PolymerizationEffect()
{
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.电子终结龙);
if (Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.ProtoCyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) >= 3)
AI.SelectCard((int)CardId.CyberEndDragon);
else
AI.SelectCard((int)CardId.电子双生龙);
AI.SelectCard((int)CardId.CyberTwinDragon);
return true;
}
private bool 力量结合()
private bool PowerBondEffect()
{
力量结合效果 = 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.电子终结龙);
PowerBondUsed = true;
if (Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.ProtoCyberDragon) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragonCore) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragonCore) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonDrei) >= 3)
AI.SelectCard((int)CardId.CyberEndDragon);
else
AI.SelectCard((int)CardId.电子双生龙);
AI.SelectCard((int)CardId.CyberTwinDragon);
return true;
}
private bool 进化光焰()
private bool EvolutionBurstEffect()
{
ClientCard bestMy = Bot.GetMonsters().GetHighestAttackMonster();
if (bestMy == null || !AI.Utils.IsOneEnemyBetterThanValue(bestMy.Attack, false))
......@@ -132,49 +132,49 @@ namespace WindBot.Game.AI.Decks
return true;
}
private bool 没有电子龙可特殊召唤()
private bool NoCyberDragonSpsummon()
{
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0))
return false;
return true;
}
private bool 装甲电子翼()
private bool ArmoredCybernSet()
{
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.电子龙三型) || Bot.HasInHand((int)CardId.电子凤凰)) && !AI.Utils.IsOneEnemyBetterThanValue(1800,true))
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.CyberDragonDrei) || Bot.HasInHand((int)CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800,true))
return false;
return true;
}
private bool 原始电子龙()
private bool ProtoCyberDragonSummon()
{
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.力量结合))
if (Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonCore) >= 1 && Bot.HasInHand((int)CardId.Polymerization) || Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragonCore) >= 1 && Bot.HasInHand((int)CardId.PowerBond))
return true;
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.电子龙三型) || Bot.HasInHand((int)CardId.电子凤凰)) && !AI.Utils.IsOneEnemyBetterThanValue(1800, true))
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.CyberDragonDrei) || Bot.HasInHand((int)CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800, true))
return false;
return true;
}
private bool 电子麒麟()
private bool CyberKirinSummon()
{
return 力量结合效果;
return PowerBondUsed;
}
private bool 装甲电子翼效果()
private bool ArmoredCybernEffect()
{
if (Card.Location == CardLocation.Hand)
return true;
else if (Card.Location == CardLocation.SpellZone)
{
if (AI.Utils.IsOneEnemyBetterThanValue(Bot.GetMonsters().GetHighestAttackMonster().Attack, true))
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.装甲电子翼, 2))
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.ArmoredCybern, 2))
return true;
return false;
}
return false;
}
private bool 融合解除()
private bool DeFusionEffect()
{
if (Duel.Phase == DuelPhase.Battle)
{
......
......@@ -11,23 +11,23 @@ namespace WindBot.Game.AI.Decks
{
public enum CardId
{
黑洞 = 53129443,
宇宙旋风 = 8267140,
侵略的泛发感染 = 27541267,
神之宣告 = 41420027,
神之警告 = 84749824,
神之通告 = 40605147
DarkHole = 53129443,
CosmicCyclone = 8267140,
InfestationPandemic = 27541267,
SolemnJudgment = 41420027,
SolemnWarning = 84749824,
SolemnStrike = 40605147
}
public EvilswarmExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.宇宙旋风, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.神之宣告, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.神之警告, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.神之通告, DefaultSolemnStrike);
AddExecutor(ExecutorType.SpellSet, (int)CardId.侵略的泛发感染);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.SpellSet, (int)CardId.InfestationPandemic);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
AddExecutor(ExecutorType.Summon);
AddExecutor(ExecutorType.SpSummon);
......
......@@ -11,30 +11,30 @@ namespace WindBot.Game.AI.Decks
{
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
GravekeepersOracle = 25524823,
MaleficStardustDragon = 36521459,
GravekeepersVisionary = 3825890,
GravekeepersChief = 62473983,
ThunderKingRaiOh = 71564252,
GravekeepersCommandant = 17393207,
GravekeepersAssailant = 25262697,
GravekeepersDescendant = 30213599,
GravekeepersSpy = 24317029,
GravekeepersRecruiter = 93023479,
AllureOfDarkness = 1475311,
DarkHole = 53129443,
RoyalTribute = 72405967,
GravekeepersStele = 99523325,
MysticalSpaceTyphoon = 5318639,
BookofMoon = 14087893,
HiddenTemplesOfNecrovalley = 70000776,
Necrovalley = 47355498,
BottomlessTrapHole = 29401950,
RiteOfSpirit = 30450531,
TorrentialTribute = 53582587,
DimensionalPrison = 70342110,
SolemnWarning = 84749824,
ImperialTombsOfNecrovalley = 90434657
}
public GravekeeperExecutor(GameAI ai, Duel duel)
......@@ -42,79 +42,79 @@ namespace WindBot.Game.AI.Decks
{
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.AllureOfDarkness);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.RoyalTribute);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersStele);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.BookofMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.HiddenTemplesOfNecrovalley, HiddenTemplesOfNecrovalleyEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Necrovalley, NecrovalleyActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.奈落的落穴, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.神之警告, DefaultSolemnWarning);
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.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalPrison, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.RiteOfSpirit, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.ImperialTombsOfNecrovalley, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, 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.Summon, (int)CardId.GravekeepersOracle);
AddExecutor(ExecutorType.SpSummon, (int)CardId.MaleficStardustDragon, MaleficStardustDragonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersVisionary);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersChief);
AddExecutor(ExecutorType.Summon, (int)CardId.ThunderKingRaiOh);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersCommandant, GravekeepersCommandantSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersAssailant);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersDescendant);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.GravekeepersSpy);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.GravekeepersRecruiter);
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.GravekeepersOracle);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersVisionary);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersChief);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersCommandant, GravekeepersCommandantEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersAssailant, GravekeepersAssailantEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersDescendant, GravekeepersDescendantEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersSpy, SearchForDescendant);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersRecruiter, SearchForDescendant);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
private bool 王家长眠之谷的祭殿()
private bool HiddenTemplesOfNecrovalleyEffect()
{
if (Card.Location == CardLocation.Hand && Bot.HasInSpellZone((int)Card.Id))
return false;
return true;
}
private bool 王家长眠之谷()
private bool NecrovalleyActivate()
{
if (Bot.SpellZone[5] != null)
return false;
return true;
}
private bool 罪星尘龙()
private bool MaleficStardustDragonSummon()
{
if (Bot.SpellZone[5] != null)
return true;
return false;
}
private bool 守墓的司令官()
private bool GravekeepersCommandantEffect()
{
if (!Bot.HasInHand((int)CardId.王家长眠之谷) && !Bot.HasInSpellZone((int)CardId.王家长眠之谷))
if (!Bot.HasInHand((int)CardId.Necrovalley) && !Bot.HasInSpellZone((int)CardId.Necrovalley))
return true;
return false;
}
private bool 守墓的司令官召唤()
private bool GravekeepersCommandantSummon()
{
return !守墓的司令官();
return !GravekeepersCommandantEffect();
}
private bool 守墓的暗杀者()
private bool GravekeepersAssailantEffect()
{
if (!Card.IsAttack())
return false;
......@@ -126,7 +126,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 守墓的末裔()
private bool GravekeepersDescendantEffect()
{
int bestatk = Bot.GetMonsters().GetHighestAttackMonster().Attack;
if (AI.Utils.IsOneEnemyBetterThanValue(bestatk, true))
......@@ -137,9 +137,9 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 检索守墓的末裔()
private bool SearchForDescendant()
{
AI.SelectCard((int)CardId.守墓的末裔);
AI.SelectCard((int)CardId.GravekeepersDescendant);
return true;
}
}
......
......@@ -11,21 +11,21 @@ namespace WindBot.Game.AI.Decks
{
public enum CardId
{
黑洞 = 53129443,
宇宙旋风 = 8267140,
神之宣告 = 41420027,
神之警告 = 84749824,
神之通告 = 40605147
DarkHole = 53129443,
CosmicCyclone = 8267140,
SolemnJudgment = 41420027,
SolemnWarning = 84749824,
SolemnStrike = 40605147
}
public GraydleExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.宇宙旋风, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.神之宣告, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.神之警告, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.神之通告, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
AddExecutor(ExecutorType.MonsterSet);
AddExecutor(ExecutorType.SpSummon);
......
......@@ -11,86 +11,86 @@ namespace WindBot.Game.AI.Decks
{
public enum CardId
{
裁决之龙 = 57774843,
光道兽沃尔夫 = 58996430,
光道战士加洛斯 = 59019082,
光道暗杀者莱登 = 77558536,
光道魔术师丽拉 = 22624373,
娱乐法师戏法小丑 = 67696066,
哥布林德伯格 = 25259669,
英豪挑战者千刀兵 = 1833916,
光道弓手费莉丝 = 73176465,
欧尼斯特 = 37742478,
光道召唤师露米娜丝 = 95503687,
光道少女密涅瓦 = 40164421,
光道猎犬雷光 = 21502796,
成长的鳞茎 = 67441435,
太阳交换 = 691925,
银河旋风 = 5133471,
鹰身女妖的羽毛扫 = 18144506,
增援 = 32807846,
炼装融合 = 73594093,
光之援军 = 94886282,
冰结界之龙三叉龙 = 52687916,
红莲魔龙右红痕 = 80666118,
PSY骨架王Ω = 74586817,
光道主大天使米迦勒 = 4779823,
PSY骨架王Ζ = 37192109,
闪光No39希望皇霍普电光皇 = 56832966,
No39希望皇霍普 = 84013237,
鸟铳士卡斯泰尔 = 82633039,
光道圣女密涅瓦 = 30100551,
励辉士入魔蝇王 = 46772449,
彼岸的旅人但丁 = 83531441,
解码语者 = 1861629,
金毛妇 = 3987233
}
bool 已发动小丑 = false;
JudgmentDragon = 57774843,
Wulf = 58996430,
Garoth = 59019082,
Raiden = 77558536,
Lyla = 22624373,
Felis = 73176465,
Lumina = 95503687,
Minerva = 40164421,
Ryko = 21502796,
PerformageTrickClown = 67696066,
Goblindbergh = 25259669,
ThousandBlades = 1833916,
Honest = 37742478,
GlowUpBulb = 67441435,
SolarRecharge = 691925,
GalaxyCyclone = 5133471,
HarpiesFeatherDuster = 18144506,
ReinforcementOfTheArmy = 32807846,
MetalfoesFusion = 73594093,
ChargeOfTheLightBrigade = 94886282,
Michael = 4779823,
MinervaTheExalted = 30100551,
TrishulaDragonOfTheIceBarrier = 52687916,
ScarlightRedDragonArchfiend = 80666118,
PSYFramelordOmega = 74586817,
PSYFramelordZeta = 37192109,
NumberS39UtopiatheLightning = 56832966,
Number39Utopia = 84013237,
CastelTheSkyblasterMusketeer = 82633039,
EvilswarmExcitonKnight = 46772449,
DanteTravelerOfTheBurningAbyss = 83531441,
DecodeTalker = 1861629,
MissusRadiant = 3987233
}
bool ClownUsed = false;
public LightswornExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.银河旋风, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫);
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyCyclone, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.炼装融合);
AddExecutor(ExecutorType.Activate, (int)CardId.成长的鳞茎);
AddExecutor(ExecutorType.Activate, (int)CardId.MetalfoesFusion);
AddExecutor(ExecutorType.Activate, (int)CardId.GlowUpBulb);
AddExecutor(ExecutorType.Activate, (int)CardId.裁决之龙, DefaultDarkHole);
AddExecutor(ExecutorType.SpSummon, (int)CardId.裁决之龙);
AddExecutor(ExecutorType.Activate, (int)CardId.JudgmentDragon, DefaultDarkHole);
AddExecutor(ExecutorType.SpSummon, (int)CardId.JudgmentDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.增援, 增援效果);
AddExecutor(ExecutorType.Activate, (int)CardId.光之援军, 光之援军效果);
AddExecutor(ExecutorType.Activate, (int)CardId.太阳交换, 太阳交换效果);
AddExecutor(ExecutorType.Activate, (int)CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmyEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.ChargeOfTheLightBrigade, ChargeOfTheLightBrigadeEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SolarRecharge, SolarRechargeEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.哥布林德伯格, 哥布林德伯格通常召唤);
AddExecutor(ExecutorType.Activate, (int)CardId.哥布林德伯格, 哥布林德伯格效果);
AddExecutor(ExecutorType.Summon, (int)CardId.Goblindbergh, GoblindberghSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Goblindbergh, GoblindberghEffect);
// 常用额外
AddExecutor(ExecutorType.SpSummon, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王特殊召唤);
AddExecutor(ExecutorType.Activate, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王效果);
AddExecutor(ExecutorType.SpSummon, (int)CardId.鸟铳士卡斯泰尔, 鸟铳士卡斯泰尔特殊召唤);
AddExecutor(ExecutorType.Activate, (int)CardId.鸟铳士卡斯泰尔, 鸟铳士卡斯泰尔效果);
AddExecutor(ExecutorType.SpSummon, (int)CardId.红莲魔龙右红痕, 红莲魔龙右红痕特殊召唤);
AddExecutor(ExecutorType.Activate, (int)CardId.红莲魔龙右红痕, 红莲魔龙右红痕效果);
AddExecutor(ExecutorType.SpSummon, (int)CardId.No39希望皇霍普, 电光皇特殊召唤);
AddExecutor(ExecutorType.SpSummon, (int)CardId.闪光No39希望皇霍普电光皇);
AddExecutor(ExecutorType.Activate, (int)CardId.闪光No39希望皇霍普电光皇);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CastelTheSkyblasterMusketeer, CastelTheSkyblasterMusketeerSummom);
AddExecutor(ExecutorType.Activate, (int)CardId.CastelTheSkyblasterMusketeer, CastelTheSkyblasterMusketeerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ScarlightRedDragonArchfiend, ScarlightRedDragonArchfiendSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.ScarlightRedDragonArchfiend, ScarlightRedDragonArchfiendEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, NumberS39UtopiatheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.娱乐法师戏法小丑, 娱乐法师戏法小丑效果);
AddExecutor(ExecutorType.Activate, (int)CardId.英豪挑战者千刀兵);
AddExecutor(ExecutorType.Activate, (int)CardId.欧尼斯特, 欧尼斯特效果);
AddExecutor(ExecutorType.Activate, (int)CardId.PerformageTrickClown, PerformageTrickClownEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.ThousandBlades);
AddExecutor(ExecutorType.Activate, (int)CardId.Honest, HonestEffect);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
public override void OnNewTurn()
{
// 回合开始时重置状况
已发动小丑 = false;
ClownUsed = false;
}
public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender)
......@@ -100,11 +100,11 @@ namespace WindBot.Game.AI.Decks
if (defender.IsMonsterDangerous() || defender.IsDefense())
return false;
}
if (!(defender.Id == (int)CardId.闪光No39希望皇霍普电光皇))
if (!(defender.Id == (int)CardId.NumberS39UtopiatheLightning))
{
if (attacker.Attribute == (int)CardAttribute.Light && Bot.HasInHand((int)CardId.欧尼斯特))
if (attacker.Attribute == (int)CardAttribute.Light && Bot.HasInHand((int)CardId.Honest))
attacker.RealPower = attacker.RealPower + defender.Attack;
if (attacker.Id == (int)CardId.闪光No39希望皇霍普电光皇 && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, (int)CardId.No39希望皇霍普))
if (attacker.Id == (int)CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, (int)CardId.Number39Utopia))
attacker.RealPower = 5000;
}
return attacker.RealPower > defender.GetDefensePower();
......@@ -114,7 +114,7 @@ namespace WindBot.Game.AI.Decks
{
if (max == 2 && min == 2 && cards[0].Location == CardLocation.MonsterZone)
{
Logger.DebugWriteLine("超量召唤.");
Logger.DebugWriteLine("OnSelectCard XYZ");
IList<ClientCard> avail = new List<ClientCard>();
foreach (ClientCard card in cards)
{
......@@ -124,7 +124,7 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> result = new List<ClientCard>();
foreach (ClientCard card in cards)
{
if (!result.Contains(card) && (!已发动小丑 || card.Id != (int)CardId.娱乐法师戏法小丑))
if (!result.Contains(card) && (!ClownUsed || card.Id != (int)CardId.PerformageTrickClown))
result.Add(card);
if (result.Count >= 2)
break;
......@@ -145,44 +145,44 @@ namespace WindBot.Game.AI.Decks
return null;
}
private bool 增援效果()
private bool ReinforcementOfTheArmyEffect()
{
if (!Bot.HasInHand((int)CardId.哥布林德伯格))
AI.SelectCard((int)CardId.哥布林德伯格);
else if (!Bot.HasInHand((int)CardId.光道暗杀者莱登))
AI.SelectCard((int)CardId.光道暗杀者莱登);
if (!Bot.HasInHand((int)CardId.Goblindbergh))
AI.SelectCard((int)CardId.Goblindbergh);
else if (!Bot.HasInHand((int)CardId.Raiden))
AI.SelectCard((int)CardId.Raiden);
return true;
}
private bool 光之援军效果()
private bool ChargeOfTheLightBrigadeEffect()
{
if (!Bot.HasInHand((int)CardId.光道召唤师露米娜丝))
AI.SelectCard((int)CardId.光道召唤师露米娜丝);
if (!Bot.HasInHand((int)CardId.Lumina))
AI.SelectCard((int)CardId.Lumina);
else
AI.SelectCard(new[]
{
(int)CardId.光道暗杀者莱登,
(int)CardId.光道召唤师露米娜丝,
(int)CardId.光道少女密涅瓦,
(int)CardId.光道魔术师丽拉
(int)CardId.Raiden,
(int)CardId.Lumina,
(int)CardId.Minerva,
(int)CardId.Lyla
});
return true;
}
private bool 太阳交换效果()
private bool SolarRechargeEffect()
{
AI.SelectCard(new[]
{
(int)CardId.光道兽沃尔夫,
(int)CardId.光道弓手费莉丝,
(int)CardId.光道少女密涅瓦,
(int)CardId.光道魔术师丽拉,
(int)CardId.光道暗杀者莱登
(int)CardId.Wulf,
(int)CardId.Felis,
(int)CardId.Minerva,
(int)CardId.Lyla,
(int)CardId.Raiden
});
return true;
}
private bool 哥布林德伯格通常召唤()
private bool GoblindberghSummon()
{
foreach (ClientCard card in Bot.Hand)
{
......@@ -192,39 +192,39 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 哥布林德伯格效果()
private bool GoblindberghEffect()
{
AI.SelectCard(new[]
{
(int)CardId.光道弓手费莉丝,
(int)CardId.光道兽沃尔夫,
(int)CardId.光道暗杀者莱登,
(int)CardId.娱乐法师戏法小丑,
(int)CardId.英豪挑战者千刀兵
(int)CardId.Felis,
(int)CardId.Wulf,
(int)CardId.Raiden,
(int)CardId.PerformageTrickClown,
(int)CardId.ThousandBlades
});
return true;
}
private bool 娱乐法师戏法小丑效果()
private bool PerformageTrickClownEffect()
{
已发动小丑 = true;
ClownUsed = true;
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
private bool 欧尼斯特效果()
private bool HonestEffect()
{
return Duel.Phase != DuelPhase.Main1;
}
private bool 励辉士入魔蝇王特殊召唤()
private bool EvilswarmExcitonKnightSummon()
{
int selfCount = Bot.GetMonsterCount() + Bot.GetSpellCount() + Bot.GetHandCount();
int oppoCount = Enemy.GetMonsterCount() + Enemy.GetSpellCount() + Enemy.GetHandCount();
return (selfCount - 1 < oppoCount) && 励辉士入魔蝇王效果();
return (selfCount - 1 < oppoCount) && EvilswarmExcitonKnightEffect();
}
private bool 励辉士入魔蝇王效果()
private bool EvilswarmExcitonKnightEffect()
{
int selfCount = Bot.GetMonsterCount() + Bot.GetSpellCount();
int oppoCount = Enemy.GetMonsterCount() + Enemy.GetSpellCount();
......@@ -246,14 +246,14 @@ namespace WindBot.Game.AI.Decks
return (selfCount < oppoCount) || (selfAttack < oppoAttack);
}
private bool 红莲魔龙右红痕特殊召唤()
private bool ScarlightRedDragonArchfiendSummon()
{
int selfBestAttack = AI.Utils.GetBestAttack(Bot, true);
int oppoBestAttack = AI.Utils.GetBestAttack(Enemy, false);
return (selfBestAttack <= oppoBestAttack && oppoBestAttack <= 3000) || 红莲魔龙右红痕效果();
return (selfBestAttack <= oppoBestAttack && oppoBestAttack <= 3000) || ScarlightRedDragonArchfiendEffect();
}
private bool 红莲魔龙右红痕效果()
private bool ScarlightRedDragonArchfiendEffect()
{
int selfCount = 0;
List<ClientCard> monsters = Bot.GetMonsters();
......@@ -267,7 +267,6 @@ namespace WindBot.Game.AI.Decks
monsters = Enemy.GetMonsters();
foreach (ClientCard monster in monsters)
{
// 没有办法获取特殊召唤的状态,只好默认全部是特招的
if (monster.HasType(CardType.Effect) && monster.Attack <= Card.Attack)
oppoCount++;
}
......@@ -275,36 +274,20 @@ namespace WindBot.Game.AI.Decks
return (oppoCount > 0 && selfCount <= oppoCount) || oppoCount > 2;
}
private bool 鸟铳士卡斯泰尔特殊召唤()
private bool CastelTheSkyblasterMusketeerSummom()
{
return AI.Utils.GetProblematicCard() != null;
}
private bool 鸟铳士卡斯泰尔效果()
private bool CastelTheSkyblasterMusketeerEffect()
{
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.鸟铳士卡斯泰尔, 0))
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.CastelTheSkyblasterMusketeer, 0))
return false;
AI.SelectNextCard(AI.Utils.GetProblematicCard());
return true;
}
private bool 辉光子帕拉迪奥斯特殊召唤()
{
return 辉光子帕拉迪奥斯效果();
}
private bool 辉光子帕拉迪奥斯效果()
{
ClientCard result = AI.Utils.GetOneEnemyBetterThanValue(2000, true);
if (result != null)
{
AI.SelectNextCard(result);
return true;
}
return false;
}
private bool 电光皇特殊召唤()
private bool NumberS39UtopiatheLightningSummon()
{
return AI.Utils.IsEnemyBetter(false, false);
}
......
......@@ -11,30 +11,31 @@ namespace WindBot.Game.AI.Decks
{
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
DancePrincess = 52738610,
ThousandHands = 23401839,
TenThousandHands = 95492061,
Shurit = 90307777,
MaxxC = 23434538,
DecisiveArmor = 88240999,
Trishula = 52068432,
Valkyrus = 25857246,
Gungnir = 74122412,
Brionac = 26674724,
Unicore = 89463537,
Clausolas = 99185129,
PhantomOfChaos = 30312361,
DarkHole = 53129443,
ReinforcementOfTheArmy = 32807846,
TradeIn = 38120068,
PreparationOfRites = 96729612,
Mirror = 14735698,
Kaleidoscope = 51124303,
Cycle = 97211663,
MysticalSpaceTyphoon = 5318639,
RoyalDecree = 51452091,
EvilswarmExcitonKnight = 46772449,
HeraldOfTheArcLight = 79606837
}
List<int> NekrozRituelCard = new List<int>();
......@@ -43,157 +44,150 @@ namespace WindBot.Game.AI.Decks
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.瓦尔基鲁斯之影灵衣);
NekrozRituelCard.Add((int)CardId.Clausolas);
NekrozRituelCard.Add((int)CardId.Unicore);
NekrozRituelCard.Add((int)CardId.DecisiveArmor);
NekrozRituelCard.Add((int)CardId.Brionac);
NekrozRituelCard.Add((int)CardId.Trishula);
NekrozRituelCard.Add((int)CardId.Gungnir);
NekrozRituelCard.Add((int)CardId.Valkyrus);
NekrozSpellCard.Add((int)CardId.影灵衣的降魔镜);
NekrozSpellCard.Add((int)CardId.影灵衣的万华镜);
NekrozSpellCard.Add((int)CardId.影灵衣的返魂术);
NekrozSpellCard.Add((int)CardId.Mirror);
NekrozSpellCard.Add((int)CardId.Kaleidoscope);
NekrozSpellCard.Add((int)CardId.Cycle);
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.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmyEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.TradeIn);
AddExecutor(ExecutorType.Activate, (int)CardId.PreparationOfRites);
AddExecutor(ExecutorType.Activate, (int)CardId.Mirror);
AddExecutor(ExecutorType.Activate, (int)CardId.Kaleidoscope);
AddExecutor(ExecutorType.Activate, (int)CardId.Cycle);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.RoyalDecree);
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.SummonOrSet, (int)CardId.DancePrincess, DancePrincessSummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.Shurit, ShuritSet);
AddExecutor(ExecutorType.Summon, (int)CardId.ThousandHands, ThousandHandsSummom);
AddExecutor(ExecutorType.Summon, (int)CardId.TenThousandHands, TenThousandHandsSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.PhantomOfChaos, PhantomOfChaosSummon);
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.增殖的G);
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.Unicore, UnicoreEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.DecisiveArmor, DecisiveArmorEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Valkyrus, ValkyrusEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Gungnir, GungnirEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Brionac, BrionacEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Clausolas, ClausolasEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Trishula);
AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.PhantomOfChaos, PhantomOfChaosEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.MaxxC);
AddExecutor(ExecutorType.Activate, (int)CardId.ThousandHands, ThousandHandsEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.TenThousandHands, BrionacEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.HeraldOfTheArcLight);
AddExecutor(ExecutorType.Activate, (int)CardId.Shurit);
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.励辉士入魔蝇王, 励辉士入魔蝇王特殊召唤);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Trishula);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DecisiveArmor);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Valkyrus);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Gungnir);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Brionac);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Unicore);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Clausolas);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightSummon);
}
private bool 千手神召唤()
private bool ThousandHandsSummom()
{
if (!Bot.HasInHand(NekrozRituelCard) || Bot.HasInHand((int)CardId.影灵衣术士施里特) || !Bot.HasInHand(NekrozSpellCard))
if (!Bot.HasInHand(NekrozRituelCard) || Bot.HasInHand((int)CardId.Shurit) || !Bot.HasInHand(NekrozSpellCard))
return true;
foreach (ClientCard Card in Bot.Hand)
if (Card != null && Card.Id == (int)CardId.影灵衣的万华镜 && !Bot.HasInHand((int)CardId.尤尼科之影灵衣))
if (Card != null && Card.Id == (int)CardId.Kaleidoscope && !Bot.HasInHand((int)CardId.Unicore))
return true;
else if (Card.Id == (int)CardId.三叉龙之影灵衣 || Card.Id == (int)CardId.决战兵器之影灵衣 && !Bot.HasInHand((int)CardId.影灵衣的降魔镜) || !Bot.HasInHand((int)CardId.影灵衣术士施里特))
else if (Card.Id == (int)CardId.Trishula || Card.Id == (int)CardId.DecisiveArmor && !Bot.HasInHand((int)CardId.Mirror) || !Bot.HasInHand((int)CardId.Shurit))
return true;
return false;
}
private bool 增援()
private bool ReinforcementOfTheArmyEffect()
{
if (!Bot.HasInGraveyard((int)CardId.影灵衣术士施里特) && !Bot.HasInHand((int)CardId.影灵衣术士施里特))
if (!Bot.HasInGraveyard((int)CardId.Shurit) && !Bot.HasInHand((int)CardId.Shurit))
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
AI.SelectCard((int)CardId.Shurit);
return true;
}
return false;
}
private bool 万手神召唤()
private bool TenThousandHandsSummon()
{
if (!Bot.HasInHand((int)CardId.千手神) || !Bot.HasInHand((int)CardId.影灵衣术士施里特))
if (!Bot.HasInHand((int)CardId.ThousandHands) || !Bot.HasInHand((int)CardId.Shurit))
return true;
return false;
}
private bool 影灵衣舞姬召唤()
private bool DancePrincessSummon()
{
if (!Bot.HasInHand((int)CardId.千手神) && !Bot.HasInHand((int)CardId.万手神))
if (!Bot.HasInHand((int)CardId.ThousandHands) && !Bot.HasInHand((int)CardId.TenThousandHands))
return true;
return false;
}
private bool 混沌幻影()
private bool PhantomOfChaosSummon()
{
if (Bot.HasInGraveyard((int)CardId.影灵衣术士施里特) && Bot.HasInHand(NekrozSpellCard) && Bot.HasInHand(NekrozRituelCard))
if (Bot.HasInGraveyard((int)CardId.Shurit) && Bot.HasInHand(NekrozSpellCard) && Bot.HasInHand(NekrozRituelCard))
return true;
return false;
}
private bool 混沌幻影效果()
private bool PhantomOfChaosEffect()
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
AI.SelectCard((int)CardId.Shurit);
return true;
}
private bool 影灵衣术士施里特()
private bool ShuritSet()
{
if (!Bot.HasInHand((int)CardId.千手神) && !Bot.HasInHand((int)CardId.万手神) && !Bot.HasInHand((int)CardId.影灵衣舞姬))
if (!Bot.HasInHand((int)CardId.ThousandHands) && !Bot.HasInHand((int)CardId.TenThousandHands) && !Bot.HasInHand((int)CardId.DancePrincess))
return true;
return false;
}
private bool 三叉龙之影灵衣()
{
if (AI.Utils.IsAllEnemyBetterThanValue(2700, true) && Bot.HasInHand((int)CardId.决战兵器之影灵衣))
return false;
return true;
}
private bool 决战兵器之影灵衣()
private bool DecisiveArmorEffect()
{
if (AI.Utils.IsAllEnemyBetterThanValue(3300, true))
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
AI.SelectCard((int)CardId.DecisiveArmor);
return true;
}
return false;
}
private bool 励辉士入魔蝇王特殊召唤()
private bool EvilswarmExcitonKnightSummon()
{
int selfCount = Bot.GetMonsterCount() + Bot.GetSpellCount() + Bot.GetHandCount();
int oppoCount = Enemy.GetMonsterCount() + Enemy.GetSpellCount() + Enemy.GetHandCount();
return (selfCount - 1 < oppoCount) && 励辉士入魔蝇王效果();
return (selfCount - 1 < oppoCount) && EvilswarmExcitonKnightEffect();
}
private bool 励辉士入魔蝇王效果()
private bool EvilswarmExcitonKnightEffect()
{
int selfCount = Bot.GetMonsterCount() + Bot.GetSpellCount();
int oppoCount = Enemy.GetMonsterCount() + Enemy.GetSpellCount();
return selfCount < oppoCount;
}
private bool 瓦尔基鲁斯之影灵衣()
private bool ValkyrusEffect()
{
if (Duel.Phase == DuelPhase.Battle)
return true;
return false;
}
private bool 天枪龙之影灵衣()
private bool GungnirEffect()
{
if (AI.Utils.IsEnemyBetter(true, false) && Duel.Phase == DuelPhase.Main1)
{
......@@ -203,76 +197,76 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 光枪龙之影灵衣()
private bool BrionacEffect()
{
if (!Bot.HasInHand((int)CardId.影灵衣术士施里特))
if (!Bot.HasInHand((int)CardId.Shurit))
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
AI.SelectCard((int)CardId.Shurit);
return true;
}
else if (!Bot.HasInHand(NekrozSpellCard))
{
AI.SelectCard((int)CardId.影灵衣的降魔镜);
AI.SelectCard((int)CardId.Mirror);
return true;
}
else if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand((int)CardId.三叉龙之影灵衣))
else if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand((int)CardId.Trishula))
{
AI.SelectCard((int)CardId.三叉龙之影灵衣);
AI.SelectCard((int)CardId.Trishula);
return true;
}
else if (AI.Utils.IsAllEnemyBetterThanValue(2700,true) && !Bot.HasInHand((int)CardId.决战兵器之影灵衣))
else if (AI.Utils.IsAllEnemyBetterThanValue(2700,true) && !Bot.HasInHand((int)CardId.DecisiveArmor))
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
AI.SelectCard((int)CardId.DecisiveArmor);
return true;
}
else if (Bot.HasInHand((int)CardId.尤尼科之影灵衣) && !Bot.HasInHand((int)CardId.影灵衣的万华镜))
else if (Bot.HasInHand((int)CardId.Unicore) && !Bot.HasInHand((int)CardId.Kaleidoscope))
{
AI.SelectCard((int)CardId.影灵衣的万华镜);
AI.SelectCard((int)CardId.Kaleidoscope);
return true;
}
else if (!Bot.HasInHand((int)CardId.尤尼科之影灵衣) && Bot.HasInHand((int)CardId.影灵衣的万华镜))
else if (!Bot.HasInHand((int)CardId.Unicore) && Bot.HasInHand((int)CardId.Kaleidoscope))
{
AI.SelectCard((int)CardId.尤尼科之影灵衣);
AI.SelectCard((int)CardId.Unicore);
return true;
}
return true;
}
private bool 千手神效果()
private bool ThousandHandsEffect()
{
if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand((int)CardId.三叉龙之影灵衣))
if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand((int)CardId.Trishula))
{
AI.SelectCard((int)CardId.三叉龙之影灵衣);
AI.SelectCard((int)CardId.Trishula);
return true;
}
else if (AI.Utils.IsAllEnemyBetterThanValue(2700, true) && !Bot.HasInHand((int)CardId.决战兵器之影灵衣))
else if (AI.Utils.IsAllEnemyBetterThanValue(2700, true) && !Bot.HasInHand((int)CardId.DecisiveArmor))
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
AI.SelectCard((int)CardId.DecisiveArmor);
return true;
}
else if (!Bot.HasInHand((int)CardId.尤尼科之影灵衣) && Bot.HasInHand((int)CardId.影灵衣的万华镜))
else if (!Bot.HasInHand((int)CardId.Unicore) && Bot.HasInHand((int)CardId.Kaleidoscope))
{
AI.SelectCard((int)CardId.尤尼科之影灵衣);
AI.SelectCard((int)CardId.Unicore);
return true;
}
return true;
}
private bool 尤尼科之影灵衣()
private bool UnicoreEffect()
{
if (Bot.HasInGraveyard((int)CardId.影灵衣术士施里特))
if (Bot.HasInGraveyard((int)CardId.Shurit))
{
AI.SelectCard((int)CardId.影灵衣术士施里特);
AI.SelectCard((int)CardId.Shurit);
return true;
}
return false;
}
private bool 辉剑鸟之影灵衣()
private bool ClausolasEffect()
{
if (!Bot.HasInHand(NekrozSpellCard))
{
AI.SelectCard((int)CardId.影灵衣的降魔镜);
AI.SelectCard((int)CardId.Mirror);
return true;
}
return false;
......@@ -280,7 +274,7 @@ namespace WindBot.Game.AI.Decks
private bool IsTheLastPossibility()
{
if (!Bot.HasInHand((int)CardId.决战兵器之影灵衣) && !Bot.HasInHand((int)CardId.三叉龙之影灵衣))
if (!Bot.HasInHand((int)CardId.DecisiveArmor) && !Bot.HasInHand((int)CardId.Trishula))
return true;
return false;
}
......@@ -296,42 +290,42 @@ namespace WindBot.Game.AI.Decks
foreach (int Id in NekrozCard)
{
if (Id == (int)CardId.三叉龙之影灵衣 && AI.Utils.IsAllEnemyBetterThanValue(2700, true) && Bot.HasInHand((int)CardId.决战兵器之影灵衣))
if (Id == (int)CardId.Trishula && AI.Utils.IsAllEnemyBetterThanValue(2700, true) && Bot.HasInHand((int)CardId.DecisiveArmor))
{
AI.SelectCard((int)CardId.三叉龙之影灵衣);
AI.SelectCard((int)CardId.Trishula);
return true;
}
else if (Id == (int)CardId.决战兵器之影灵衣)
else if (Id == (int)CardId.DecisiveArmor)
{
AI.SelectCard((int)CardId.决战兵器之影灵衣);
AI.SelectCard((int)CardId.DecisiveArmor);
return true;
}
else if (Id == (int)CardId.尤尼科之影灵衣 && Bot.HasInHand((int)CardId.影灵衣的万华镜) && !Bot.HasInGraveyard((int)CardId.影灵衣术士施里特))
else if (Id == (int)CardId.Unicore && Bot.HasInHand((int)CardId.Kaleidoscope) && !Bot.HasInGraveyard((int)CardId.Shurit))
{
AI.SelectCard((int)CardId.尤尼科之影灵衣);
AI.SelectCard((int)CardId.Unicore);
return true;
}
else if (Id == (int)CardId.瓦尔基鲁斯之影灵衣)
else if (Id == (int)CardId.Valkyrus)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.瓦尔基鲁斯之影灵衣);
AI.SelectCard((int)CardId.Valkyrus);
return true;
}
}
else if (Id == (int)CardId.天枪龙之影灵衣)
else if (Id == (int)CardId.Gungnir)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.天枪龙之影灵衣);
AI.SelectCard((int)CardId.Gungnir);
return true;
}
}
else if (Id == (int)CardId.辉剑鸟之影灵衣)
else if (Id == (int)CardId.Clausolas)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.辉剑鸟之影灵衣);
AI.SelectCard((int)CardId.Clausolas);
return true;
}
}
......
......@@ -11,128 +11,123 @@ namespace WindBot.Game.AI.Decks
{
public enum CardId
{
机壳工具丑恶 = 65518099,
机壳别名愚钝 = 13073850,
机壳壳层拒绝 = 90885155,
机壳基因组贪欲 = 37991342,
机壳档案色欲 = 91907707,
黑洞 = 53129443,
削命的宝札 = 59750328,
召唤师的技艺 = 79816536,
强欲而谦虚之壶 = 98645731,
机壳的牲祭 = 17639150,
神圣防护罩反射镜力 = 44095762,
激流葬 = 53582587,
次元障壁 = 83326048,
强制脱出装置 = 94192409,
虚无空间 = 5851097,
技能抽取 = 82732705,
神之通告 = 40605147,
反大革命 = 99188141
}
bool 已发动削命 = false;
List<int> 低刻度 = new List<int>
{
(int)CardId.机壳别名愚钝,
(int)CardId.机壳档案色欲
Scout = 65518099,
Stealth = 13073850,
Shell = 90885155,
Helix = 37991342,
Carrier = 91907707,
DarkHole = 53129443,
CardOfDemise = 59750328,
SummonersArt = 79816536,
PotOfDuality = 98645731,
Saqlifice = 17639150,
MirrorForce = 44095762,
TorrentialTribute = 53582587,
DimensionalBarrier = 83326048,
CompulsoryEvacuationDevice = 94192409,
VanitysEmptiness = 5851097,
SkillDrain = 82732705,
SolemnStrike = 40605147,
TheHugeRevolutionIsOver = 99188141
}
bool CardOfDemiseUsed = false;
List<int> LowScaleCards = new List<int>
{
(int)CardId.Stealth,
(int)CardId.Carrier
};
List<int> 高刻度 = new List<int>
List<int> HighScaleCards = new List<int>
{
(int)CardId.机壳工具丑恶,
(int)CardId.机壳壳层拒绝,
(int)CardId.机壳基因组贪欲
(int)CardId.Scout,
(int)CardId.Shell,
(int)CardId.Helix
};
public QliphortExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.召唤师的技艺);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.SummonersArt);
AddExecutor(ExecutorType.Activate, (int)CardId.机壳工具丑恶, 机壳工具丑恶发动);
AddExecutor(ExecutorType.Activate, (int)CardId.机壳工具丑恶, 机壳工具丑恶效果);
AddExecutor(ExecutorType.Activate, (int)CardId.Scout, ScoutActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Scout, ScoutEffect);
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.Stealth, ScaleActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Shell, ScaleActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Helix, ScaleActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Carrier, ScaleActivate);
AddExecutor(ExecutorType.Summon, 通常召唤);
AddExecutor(ExecutorType.Summon, NormalSummon);
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.机壳的牲祭, 机壳的牲祭);
AddExecutor(ExecutorType.Activate, (int)CardId.机壳别名愚钝, 机壳别名愚钝效果);
AddExecutor(ExecutorType.Activate, (int)CardId.机壳基因组贪欲, 机壳基因组贪欲效果);
AddExecutor(ExecutorType.Activate, (int)CardId.机壳档案色欲, 机壳档案色欲效果);
// 盖坑
AddExecutor(ExecutorType.SpellSet, (int)CardId.技能抽取, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.虚无空间, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.次元障壁, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.激流葬, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之通告, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神圣防护罩反射镜力, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强制脱出装置, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.反大革命, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.机壳的牲祭, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.技能抽取, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.虚无空间, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.次元障壁, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.激流葬, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之通告, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神圣防护罩反射镜力, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强制脱出装置, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.反大革命, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.黑洞, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.召唤师的技艺, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强欲而谦虚之壶, 魔陷区有空余格子);
// 开完削命继续盖坑
AddExecutor(ExecutorType.Activate, (int)CardId.强欲而谦虚之壶, 强欲而谦虚之壶);
AddExecutor(ExecutorType.SpellSet, (int)CardId.削命的宝札);
AddExecutor(ExecutorType.Activate, (int)CardId.削命的宝札, 削命的宝札);
AddExecutor(ExecutorType.SpellSet, (int)CardId.机壳的牲祭, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.技能抽取, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.虚无空间, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.次元障壁, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.激流葬, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之通告, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神圣防护罩反射镜力, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强制脱出装置, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.反大革命, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.黑洞, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.召唤师的技艺, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强欲而谦虚之壶, 已发动过削命);
// 坑人
AddExecutor(ExecutorType.Activate, (int)CardId.反大革命, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.神之通告, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.技能抽取, 技能抽取);
AddExecutor(ExecutorType.Activate, (int)CardId.虚无空间, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.强制脱出装置, DefaultCompulsoryEvacuationDevice);
AddExecutor(ExecutorType.Activate, (int)CardId.次元障壁, DefaultDimensionalBarrier);
AddExecutor(ExecutorType.Activate, (int)CardId.神圣防护罩反射镜力, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.激流葬, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, (int)CardId.Saqlifice, SaqlificeEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Stealth, StealthEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Helix, HelixEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Carrier, CarrierEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SkillDrain, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TheHugeRevolutionIsOver, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.Saqlifice, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SkillDrain, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TheHugeRevolutionIsOver, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SummonersArt, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDuality, PotOfDualityEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CardOfDemise);
AddExecutor(ExecutorType.Activate, (int)CardId.CardOfDemise, CardOfDemiseEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.Saqlifice, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SkillDrain, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TheHugeRevolutionIsOver, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SummonersArt, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, CardOfDemiseAcivated);
AddExecutor(ExecutorType.Activate, (int)CardId.TheHugeRevolutionIsOver, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.SkillDrain, SkillDrainEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.VanitysEmptiness, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.CompulsoryEvacuationDevice, DefaultCompulsoryEvacuationDevice);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalBarrier, DefaultDimensionalBarrier);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
public override bool OnSelectHand()
{
// 抢先攻
return true;
}
public override void OnNewTurn()
{
// 回合开始时重置状况
已发动削命 = false;
CardOfDemiseUsed = false;
}
public override IList<ClientCard> OnSelectCard(IList<ClientCard> cards, int min, int max, bool cancelable)
......@@ -150,81 +145,81 @@ namespace WindBot.Game.AI.Decks
return selected;
}
private bool 通常召唤()
private bool NormalSummon()
{
if (Card.Id == (int)CardId.机壳工具丑恶)
if (Card.Id == (int)CardId.Scout)
return false;
if (Card.Level < 8)
AI.SelectOption(1);
return true;
}
private bool 技能抽取()
private bool SkillDrainEffect()
{
return (Duel.LifePoints[0] > 1000) && DefaultUniqueTrap();
}
private bool 强欲而谦虚之壶()
private bool PotOfDualityEffect()
{
AI.SelectCard(new[]
{
(int)CardId.机壳工具丑恶,
(int)CardId.技能抽取,
(int)CardId.虚无空间,
(int)CardId.次元障壁,
(int)CardId.机壳别名愚钝,
(int)CardId.机壳壳层拒绝,
(int)CardId.机壳基因组贪欲,
(int)CardId.机壳档案色欲,
(int)CardId.神之通告,
(int)CardId.削命的宝札
(int)CardId.Scout,
(int)CardId.SkillDrain,
(int)CardId.VanitysEmptiness,
(int)CardId.DimensionalBarrier,
(int)CardId.Stealth,
(int)CardId.Shell,
(int)CardId.Helix,
(int)CardId.Carrier,
(int)CardId.SolemnStrike,
(int)CardId.CardOfDemise
});
return !应进行灵摆召唤();
return !ShouldPendulum();
}
private bool 削命的宝札()
private bool CardOfDemiseEffect()
{
if (AI.Utils.IsTurn1OrMain2() && !应进行灵摆召唤())
if (AI.Utils.IsTurn1OrMain2() && !ShouldPendulum())
{
已发动削命 = true;
CardOfDemiseUsed = true;
return true;
}
return false;
}
private bool 优先盖不重复的坑()
private bool TrapSetUnique()
{
foreach (ClientCard card in Bot.SpellZone)
{
if (card != null && card.Id == Card.Id)
return false;
}
return 魔陷区有空余格子();
return TrapSetWhenZoneFree();
}
private bool 魔陷区有空余格子()
private bool TrapSetWhenZoneFree()
{
return Bot.GetSpellCountWithoutField() < 4;
}
private bool 已发动过削命()
private bool CardOfDemiseAcivated()
{
return 已发动削命;
return CardOfDemiseUsed;
}
private bool 机壳的牲祭()
private bool SaqlificeEffect()
{
if (Card.Location == CardLocation.Grave)
{
ClientCard l = AI.Utils.GetPZone(0, 0);
ClientCard r = AI.Utils.GetPZone(0, 1);
if (l == null && r == null)
AI.SelectCard((int)CardId.机壳工具丑恶);
AI.SelectCard((int)CardId.Scout);
}
return true;
}
private bool 机壳工具丑恶发动()
private bool ScoutActivate()
{
if (Card.Location != CardLocation.Hand)
return false;
......@@ -239,7 +234,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 设置刻度()
private bool ScaleActivate()
{
if (!Card.HasType(CardType.Pendulum) || Card.Location != CardLocation.Hand)
return false;
......@@ -258,7 +253,7 @@ namespace WindBot.Game.AI.Decks
ClientCard r = AI.Utils.GetPZone(0, 1);
if (l == null && r == null)
{
if (已发动削命)
if (CardOfDemiseUsed)
return true;
bool pair = false;
foreach (ClientCard card in Bot.Hand.GetMonsters())
......@@ -273,13 +268,13 @@ namespace WindBot.Game.AI.Decks
return pair && count>1;
}
if (l == null && r.RScale != Card.LScale)
return count > 1 || 已发动削命;
return count > 1 || CardOfDemiseUsed;
if (r == null && l.LScale != Card.RScale)
return count > 1 || 已发动削命;
return count > 1 || CardOfDemiseUsed;
return false;
}
private bool 机壳工具丑恶效果()
private bool ScoutEffect()
{
if (Card.Location == CardLocation.Hand)
return false;
......@@ -300,27 +295,27 @@ namespace WindBot.Game.AI.Decks
if (card.HasType(CardType.Pendulum) && card.IsFaceup())
count++;
}
if (count>0 && !Bot.HasInHand(低刻度))
if (count>0 && !Bot.HasInHand(LowScaleCards))
{
AI.SelectCard(低刻度);
AI.SelectCard(LowScaleCards);
}
else if (handcount>0 || fieldcount>0)
{
AI.SelectCard(new[]
{
(int)CardId.机壳的牲祭,
(int)CardId.机壳壳层拒绝,
(int)CardId.机壳基因组贪欲
(int)CardId.Saqlifice,
(int)CardId.Shell,
(int)CardId.Helix
});
}
else
{
AI.SelectCard(高刻度);
AI.SelectCard(HighScaleCards);
}
return Duel.LifePoints[0] > 800;
}
private bool 机壳别名愚钝效果()
private bool StealthEffect()
{
if (Card.Location == CardLocation.Hand)
return false;
......@@ -353,7 +348,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 机壳档案色欲效果()
private bool CarrierEffect()
{
if (Card.Location == CardLocation.Hand)
return false;
......@@ -372,7 +367,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 机壳基因组贪欲效果()
private bool HelixEffect()
{
if (Card.Location == CardLocation.Hand)
return false;
......@@ -399,7 +394,7 @@ namespace WindBot.Game.AI.Decks
return false;
}
private bool 应进行灵摆召唤()
private bool ShouldPendulum()
{
ClientCard l = AI.Utils.GetPZone(0, 0);
ClientCard r = AI.Utils.GetPZone(0, 1);
......
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