Commit e37b72b1 authored by mercury233's avatar mercury233

translate to English

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