Commit c32eb21c authored by mercury233's avatar mercury233

translate to English

parent e37b72b1
...@@ -11,142 +11,140 @@ namespace WindBot.Game.AI.Decks ...@@ -11,142 +11,140 @@ namespace WindBot.Game.AI.Decks
{ {
public enum CardId public enum CardId
{ {
幻壳龙 = 18108166, MysteryShellDragon = 18108166,
幻之狮鹫 = 74852097, PhantomGryphon = 74852097,
龙剑士卓辉星灵摆 = 75195825, MasterPendulumTheDracoslayer = 75195825,
曼陀罗天使号手 = 87979586, AngelTrumpeter = 87979586,
炼装勇士金驰 = 33256280, MetalfoesGoldriver = 33256280,
打喷嚏的河马龙 = 51934376, Kabazauls = 51934376,
救援兔 = 85138716, RescueRabbit = 85138716,
粗人预料 = 911883, UnexpectedDai = 911883,
鹰身女妖的羽毛扫 = 18144506, HarpiesFeatherDuster = 18144506,
强欲而贪欲之壶 = 35261759, PotOfDesires = 35261759,
死者苏生 = 83764718, MonsterReborn = 83764718,
地碎 = 97169186, SmashingGround = 97169186,
沙尘防护罩尘埃之力 = 40838625, QuakingMirrorForce = 40838625,
波纹防护罩波浪之力 = 47475363, DrowningMirrorForce = 47475363,
业炎防护罩火焰之力 = 75249652, BlazingMirrorForce = 75249652,
神风防护罩大气之力 = 5650082, StormingMirrorForce = 5650082,
神圣防护罩反射镜力 = 44095762, MirrorForce = 44095762,
邪恶防护罩暗黑之力 = 20522190, DarkMirrorForce = 20522190,
奈落的落穴 = 29401950, BottomlessTrapHole = 29401950,
虫惑的落穴 = 29616929, TraptrixTrapHoleNightmare = 29616929,
星光大道 = 58120309, StarlightRoad = 58120309,
红莲魔龙右红痕 = 80666118, ScarlightRedDragonArchfiend = 80666118,
爆龙剑士点火星日珥 = 18239909, IgnisterProminenceTheBlastingDracoslayer = 18239909,
星尘龙 = 44508094, StardustDragon = 44508094,
闪光No39希望皇霍普电光皇 = 56832966, NumberS39UtopiatheLightning = 56832966,
No37希望织龙蜘蛛鲨 = 37279508, Number37HopeWovenDragonSpiderShark = 37279508,
No39希望皇霍普 = 84013237, Number39Utopia = 84013237,
进化帝半鸟龙 = 74294676, EvolzarLaggia = 74294676,
No59背反之料理人 = 82697249, Number59CrookedCook = 82697249,
鸟铳士卡斯泰尔 = 82633039, CastelTheSkyblasterMusketeer = 82633039,
辉光子帕拉迪奥斯 = 61344030, StarliegePaladynamo = 61344030,
电光千鸟 = 22653490, LightningChidori = 22653490,
励辉士入魔蝇王 = 46772449, EvilswarmExcitonKnight = 46772449,
我我我枪手 = 12014404, GagagaCowboy = 12014404,
入魔梦魇骑士 = 359563, EvilswarmNightmare = 359563,
芙莉西亚之虫惑魔 = 6511113 TraptrixRafflesia = 6511113
} }
private bool 已通常召唤 = false; private bool NormalSummoned = false;
public RainbowExecutor(GameAI ai, Duel duel) public RainbowExecutor(GameAI ai, Duel duel)
: base(ai, duel) : base(ai, duel)
{ {
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫); AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.粗人预料, 粗人预料效果); AddExecutor(ExecutorType.Activate, (int)CardId.UnexpectedDai, UnexpectedDaiEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.救援兔); AddExecutor(ExecutorType.Summon, (int)CardId.RescueRabbit);
AddExecutor(ExecutorType.Activate, (int)CardId.救援兔, 救援兔效果); AddExecutor(ExecutorType.Activate, (int)CardId.RescueRabbit, RescueRabbitEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.强欲而贪欲之壶, DefaultPotOfDesires); AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDesires, DefaultPotOfDesires);
AddExecutor(ExecutorType.Summon, (int)CardId.曼陀罗天使号手, 曼陀罗天使号手通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.AngelTrumpeter, AngelTrumpeterSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.打喷嚏的河马龙, 打喷嚏的河马龙通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.Kabazauls, KabazaulsSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.龙剑士卓辉星灵摆, 龙剑士卓辉星灵摆通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.MasterPendulumTheDracoslayer, MasterPendulumTheDracoslayerSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.幻壳龙, 幻壳龙通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.MysteryShellDragon, MysteryShellDragonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.幻之狮鹫, 幻之狮鹫通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.PhantomGryphon, PhantomGryphonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.炼装勇士金驰, 炼装勇士金驰通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.MetalfoesGoldriver, MetalfoesGoldriverSummon);
AddExecutor(ExecutorType.Summon, 通常召唤); AddExecutor(ExecutorType.Summon, NormalSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.爆龙剑士点火星日珥, 爆龙剑士点火星日珥特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.爆龙剑士点火星日珥, 爆龙剑士点火星日珥效果); AddExecutor(ExecutorType.Activate, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.我我我枪手, 我我我枪手特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.GagagaCowboy, GagagaCowboySummon);
AddExecutor(ExecutorType.Activate, (int)CardId.我我我枪手); AddExecutor(ExecutorType.Activate, (int)CardId.GagagaCowboy);
AddExecutor(ExecutorType.SpSummon, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王效果); AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.进化帝半鸟龙, 进化帝半鸟龙特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.EvolzarLaggia, EvolzarLaggiaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.进化帝半鸟龙, 进化帝半鸟龙效果); AddExecutor(ExecutorType.Activate, (int)CardId.EvolzarLaggia, EvolzarLaggiaEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.入魔梦魇骑士, 入魔梦魇骑士特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmNightmare, EvilswarmNightmareSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.入魔梦魇骑士); AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmNightmare);
AddExecutor(ExecutorType.SpSummon, (int)CardId.辉光子帕拉迪奥斯, 辉光子帕拉迪奥斯特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.StarliegePaladynamo, StarliegePaladynamoSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.辉光子帕拉迪奥斯, 辉光子帕拉迪奥斯效果); AddExecutor(ExecutorType.Activate, (int)CardId.StarliegePaladynamo, StarliegePaladynamoEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.电光千鸟, 电光千鸟特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.LightningChidori, LightningChidoriSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.电光千鸟, 电光千鸟效果); AddExecutor(ExecutorType.Activate, (int)CardId.LightningChidori, LightningChidoriEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.No37希望织龙蜘蛛鲨, No37希望织龙蜘蛛鲨特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Number37HopeWovenDragonSpiderShark, Number37HopeWovenDragonSpiderSharkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.No37希望织龙蜘蛛鲨); AddExecutor(ExecutorType.Activate, (int)CardId.Number37HopeWovenDragonSpiderShark);
AddExecutor(ExecutorType.SpSummon, (int)CardId.芙莉西亚之虫惑魔, 芙莉西亚之虫惑魔特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.TraptrixRafflesia, TraptrixRafflesiaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.芙莉西亚之虫惑魔); AddExecutor(ExecutorType.Activate, (int)CardId.TraptrixRafflesia);
AddExecutor(ExecutorType.Activate, (int)CardId.地碎, DefaultSmashingGround); AddExecutor(ExecutorType.Activate, (int)CardId.SmashingGround, DefaultSmashingGround);
AddExecutor(ExecutorType.SpSummon, (int)CardId.鸟铳士卡斯泰尔, 鸟铳士卡斯泰尔特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.CastelTheSkyblasterMusketeer, CastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.鸟铳士卡斯泰尔, 鸟铳士卡斯泰尔效果); AddExecutor(ExecutorType.Activate, (int)CardId.CastelTheSkyblasterMusketeer, CastelTheSkyblasterMusketeerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.爆龙剑士点火星日珥, 爆龙剑士点火星日珥特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.爆龙剑士点火星日珥, 爆龙剑士点火星日珥效果); AddExecutor(ExecutorType.Activate, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.红莲魔龙右红痕, 红莲魔龙右红痕特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.ScarlightRedDragonArchfiend, ScarlightRedDragonArchfiendSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.红莲魔龙右红痕, 红莲魔龙右红痕效果); AddExecutor(ExecutorType.Activate, (int)CardId.ScarlightRedDragonArchfiend, ScarlightRedDragonArchfiendEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.No39希望皇霍普, 电光皇特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, NumberS39UtopiatheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.闪光No39希望皇霍普电光皇); AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.闪光No39希望皇霍普电光皇); AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, (int)CardId.星尘龙, 星尘龙特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.StardustDragon, StardustDragonSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.星尘龙, 星尘龙效果); AddExecutor(ExecutorType.Activate, (int)CardId.StardustDragon, StardustDragonEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.No59背反之料理人, No59背反之料理人特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Number59CrookedCook, Number59CrookedCookSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.No59背反之料理人, No59背反之料理人效果); AddExecutor(ExecutorType.Activate, (int)CardId.Number59CrookedCook, Number59CrookedCookEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.星光大道, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.沙尘防护罩尘埃之力, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.波纹防护罩波浪之力, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.业炎防护罩火焰之力, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.BlazingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神风防护罩大气之力, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.StormingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神圣防护罩反射镜力, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.邪恶防护罩暗黑之力, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.奈落的落穴, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.BottomlessTrapHole, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.虫惑的落穴, 陷阱卡覆盖); AddExecutor(ExecutorType.SpellSet, (int)CardId.TraptrixTrapHoleNightmare, TrapSet);
AddExecutor(ExecutorType.Activate, (int)CardId.星光大道, DefaultTrap); AddExecutor(ExecutorType.Activate, (int)CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.沙尘防护罩尘埃之力, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.QuakingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.波纹防护罩波浪之力, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.DrowningMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.业炎防护罩火焰之力, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.BlazingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.神风防护罩大气之力, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.StormingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.神圣防护罩反射镜力, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.邪恶防护罩暗黑之力, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.DarkMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.奈落的落穴, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.虫惑的落穴, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.TraptrixTrapHoleNightmare, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
} }
public override void OnNewTurn() public override void OnNewTurn()
{ {
// 回合开始时重置状况 NormalSummoned = false;
已通常召唤 = false;
} }
public override bool OnSelectHand() public override bool OnSelectHand()
{ {
// 随机先后攻
return Program.Rand.Next(2) > 0; return Program.Rand.Next(2) > 0;
} }
...@@ -157,101 +155,101 @@ namespace WindBot.Game.AI.Decks ...@@ -157,101 +155,101 @@ 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.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;
if (Bot.HasInMonstersZone((int)CardId.No37希望织龙蜘蛛鲨, true, true)) if (Bot.HasInMonstersZone((int)CardId.Number37HopeWovenDragonSpiderShark, true, true))
attacker.RealPower = attacker.RealPower + 1000; attacker.RealPower = attacker.RealPower + 1000;
} }
return attacker.RealPower > defender.GetDefensePower(); return attacker.RealPower > defender.GetDefensePower();
} }
private bool 粗人预料效果() private bool UnexpectedDaiEffect()
{ {
if (Bot.HasInHand((int)CardId.救援兔) || 已通常召唤) if (Bot.HasInHand((int)CardId.RescueRabbit) || NormalSummoned)
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.幻壳龙, (int)CardId.MysteryShellDragon,
(int)CardId.幻之狮鹫 (int)CardId.PhantomGryphon
}); });
else if (AI.Utils.IsTurn1OrMain2()) else if (AI.Utils.IsTurn1OrMain2())
{ {
if (Bot.HasInHand((int)CardId.幻壳龙)) if (Bot.HasInHand((int)CardId.MysteryShellDragon))
AI.SelectCard((int)CardId.幻壳龙); AI.SelectCard((int)CardId.MysteryShellDragon);
else if (Bot.HasInHand((int)CardId.打喷嚏的河马龙)) else if (Bot.HasInHand((int)CardId.Kabazauls))
AI.SelectCard((int)CardId.打喷嚏的河马龙); AI.SelectCard((int)CardId.Kabazauls);
else if (Bot.HasInHand((int)CardId.曼陀罗天使号手)) else if (Bot.HasInHand((int)CardId.AngelTrumpeter))
AI.SelectCard((int)CardId.曼陀罗天使号手); AI.SelectCard((int)CardId.AngelTrumpeter);
} }
else else
{ {
if (Bot.HasInHand((int)CardId.打喷嚏的河马龙)) if (Bot.HasInHand((int)CardId.Kabazauls))
AI.SelectCard((int)CardId.打喷嚏的河马龙); AI.SelectCard((int)CardId.Kabazauls);
else if (Bot.HasInHand((int)CardId.龙剑士卓辉星灵摆)) else if (Bot.HasInHand((int)CardId.MasterPendulumTheDracoslayer))
AI.SelectCard((int)CardId.龙剑士卓辉星灵摆); AI.SelectCard((int)CardId.MasterPendulumTheDracoslayer);
else if (Bot.HasInHand((int)CardId.幻之狮鹫)) else if (Bot.HasInHand((int)CardId.PhantomGryphon))
AI.SelectCard((int)CardId.幻之狮鹫); AI.SelectCard((int)CardId.PhantomGryphon);
else if (Bot.HasInHand((int)CardId.曼陀罗天使号手)) else if (Bot.HasInHand((int)CardId.AngelTrumpeter))
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.炼装勇士金驰, (int)CardId.MetalfoesGoldriver,
(int)CardId.龙剑士卓辉星灵摆 (int)CardId.MasterPendulumTheDracoslayer
}); });
} }
return true; return true;
} }
private bool 救援兔效果() private bool RescueRabbitEffect()
{ {
if (AI.Utils.IsTurn1OrMain2()) if (AI.Utils.IsTurn1OrMain2())
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.打喷嚏的河马龙, (int)CardId.Kabazauls,
(int)CardId.幻壳龙 (int)CardId.MysteryShellDragon
}); });
else else
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.龙剑士卓辉星灵摆, (int)CardId.MasterPendulumTheDracoslayer,
(int)CardId.幻之狮鹫, (int)CardId.PhantomGryphon,
(int)CardId.打喷嚏的河马龙, (int)CardId.Kabazauls,
(int)CardId.炼装勇士金驰, (int)CardId.MetalfoesGoldriver,
(int)CardId.曼陀罗天使号手 (int)CardId.AngelTrumpeter
}); });
return true; return true;
} }
private bool 幻壳龙通常召唤() private bool MysteryShellDragonSummon()
{ {
return Bot.HasInMonstersZone((int)CardId.幻壳龙); return Bot.HasInMonstersZone((int)CardId.MysteryShellDragon);
} }
private bool 幻之狮鹫通常召唤() private bool PhantomGryphonSummon()
{ {
return Bot.HasInMonstersZone((int)CardId.幻之狮鹫); return Bot.HasInMonstersZone((int)CardId.PhantomGryphon);
} }
private bool 龙剑士卓辉星灵摆通常召唤() private bool MasterPendulumTheDracoslayerSummon()
{ {
return Bot.HasInMonstersZone((int)CardId.龙剑士卓辉星灵摆); return Bot.HasInMonstersZone((int)CardId.MasterPendulumTheDracoslayer);
} }
private bool 曼陀罗天使号手通常召唤() private bool AngelTrumpeterSummon()
{ {
return Bot.HasInMonstersZone((int)CardId.曼陀罗天使号手); return Bot.HasInMonstersZone((int)CardId.AngelTrumpeter);
} }
private bool 炼装勇士金驰通常召唤() private bool MetalfoesGoldriverSummon()
{ {
return Bot.HasInMonstersZone((int)CardId.炼装勇士金驰); return Bot.HasInMonstersZone((int)CardId.MetalfoesGoldriver);
} }
private bool 打喷嚏的河马龙通常召唤() private bool KabazaulsSummon()
{ {
return Bot.HasInMonstersZone((int)CardId.打喷嚏的河马龙); return Bot.HasInMonstersZone((int)CardId.Kabazauls);
} }
private bool 通常召唤() private bool NormalSummon()
{ {
return true; return true;
} }
private bool 我我我枪手特殊召唤() private bool GagagaCowboySummon()
{ {
if (Duel.LifePoints[1] <= 800) if (Duel.LifePoints[1] <= 800)
{ {
...@@ -261,14 +259,14 @@ namespace WindBot.Game.AI.Decks ...@@ -261,14 +259,14 @@ namespace WindBot.Game.AI.Decks
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();
...@@ -290,14 +288,14 @@ namespace WindBot.Game.AI.Decks ...@@ -290,14 +288,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();
...@@ -319,27 +317,27 @@ namespace WindBot.Game.AI.Decks ...@@ -319,27 +317,27 @@ namespace WindBot.Game.AI.Decks
return (oppoCount > 0 && selfCount <= oppoCount) || oppoCount > 2; return (oppoCount > 0 && selfCount <= oppoCount) || oppoCount > 2;
} }
private bool 鸟铳士卡斯泰尔特殊召唤() private bool CastelTheSkyblasterMusketeerSummon()
{ {
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 IgnisterProminenceTheBlastingDracoslayerSummon()
{ {
return AI.Utils.GetProblematicCard() != null; return AI.Utils.GetProblematicCard() != null;
} }
private bool 爆龙剑士点火星日珥效果() private bool IgnisterProminenceTheBlastingDracoslayerEffect()
{ {
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.爆龙剑士点火星日珥, 1)) if (ActivateDescription == AI.Utils.GetStringId((int)CardId.IgnisterProminenceTheBlastingDracoslayer, 1))
return true; return true;
ClientCard target1 = null; ClientCard target1 = null;
ClientCard target2 = AI.Utils.GetProblematicCard(); ClientCard target2 = AI.Utils.GetProblematicCard();
...@@ -363,7 +361,6 @@ namespace WindBot.Game.AI.Decks ...@@ -363,7 +361,6 @@ namespace WindBot.Game.AI.Decks
} }
if (target2 == null && target1 != null) if (target2 == null && target1 != null)
{ {
// 对面有P卡,随便吹另一张
foreach (ClientCard spell in spells) foreach (ClientCard spell in spells)
{ {
if (!spell.Equals(target1)) if (!spell.Equals(target1))
...@@ -388,12 +385,12 @@ namespace WindBot.Game.AI.Decks ...@@ -388,12 +385,12 @@ namespace WindBot.Game.AI.Decks
return true; return true;
} }
private bool No37希望织龙蜘蛛鲨特殊召唤() private bool Number37HopeWovenDragonSpiderSharkSummon()
{ {
return AI.Utils.IsAllEnemyBetterThanValue(1700, false) && !AI.Utils.IsOneEnemyBetterThanValue(3600, true); return AI.Utils.IsAllEnemyBetterThanValue(1700, false) && !AI.Utils.IsOneEnemyBetterThanValue(3600, true);
} }
private bool 电光千鸟特殊召唤() private bool LightningChidoriSummon()
{ {
List<ClientCard> monsters = Enemy.GetMonsters(); List<ClientCard> monsters = Enemy.GetMonsters();
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
...@@ -415,29 +412,29 @@ namespace WindBot.Game.AI.Decks ...@@ -415,29 +412,29 @@ namespace WindBot.Game.AI.Decks
return AI.Utils.GetProblematicCard() != null; return AI.Utils.GetProblematicCard() != null;
} }
private bool 电光千鸟效果() private bool LightningChidoriEffect()
{ {
ClientCard problematicCard = AI.Utils.GetProblematicCard(); ClientCard problematicCard = AI.Utils.GetProblematicCard();
AI.SelectNextCard(problematicCard); AI.SelectNextCard(problematicCard);
return true; return true;
} }
private bool 星尘龙特殊召唤() private bool StardustDragonSummon()
{ {
return (AI.Utils.IsEnemyBetter(false, false) && !AI.Utils.IsOneEnemyBetterThanValue(2400, true)) || AI.Utils.IsTurn1OrMain2(); return (AI.Utils.IsEnemyBetter(false, false) && !AI.Utils.IsOneEnemyBetterThanValue(2400, true)) || AI.Utils.IsTurn1OrMain2();
} }
private bool 星尘龙效果() private bool StardustDragonEffect()
{ {
return (Card.Location == CardLocation.Grave) || DefaultTrap(); return (Card.Location == CardLocation.Grave) || DefaultTrap();
} }
private bool 进化帝半鸟龙特殊召唤() private bool EvolzarLaggiaSummon()
{ {
return (AI.Utils.IsAllEnemyBetterThanValue(1700, false) && !AI.Utils.IsOneEnemyBetterThanValue(2400, true)) || AI.Utils.IsTurn1OrMain2(); return (AI.Utils.IsAllEnemyBetterThanValue(1700, false) && !AI.Utils.IsOneEnemyBetterThanValue(2400, true)) || AI.Utils.IsTurn1OrMain2();
} }
private bool 入魔梦魇骑士特殊召唤() private bool EvilswarmNightmareSummon()
{ {
if (AI.Utils.IsTurn1OrMain2()) if (AI.Utils.IsTurn1OrMain2())
{ {
...@@ -447,9 +444,9 @@ namespace WindBot.Game.AI.Decks ...@@ -447,9 +444,9 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 芙莉西亚之虫惑魔特殊召唤() private bool TraptrixRafflesiaSummon()
{ {
if (AI.Utils.IsTurn1OrMain2() && (Bot.GetRemainingCount((int)CardId.奈落的落穴, 1) + Bot.GetRemainingCount((int)CardId.虫惑的落穴, 1)) > 0) if (AI.Utils.IsTurn1OrMain2() && (Bot.GetRemainingCount((int)CardId.BottomlessTrapHole, 1) + Bot.GetRemainingCount((int)CardId.TraptrixTrapHoleNightmare, 1)) > 0)
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
...@@ -457,13 +454,13 @@ namespace WindBot.Game.AI.Decks ...@@ -457,13 +454,13 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool No59背反之料理人特殊召唤() private bool Number59CrookedCookSummon()
{ {
return ((Bot.GetMonsterCount() + Bot.GetSpellCount() - 2) <= 1) && return ((Bot.GetMonsterCount() + Bot.GetSpellCount() - 2) <= 1) &&
((AI.Utils.IsEnemyBetter(false, false) && !AI.Utils.IsOneEnemyBetterThanValue(2300, true)) || AI.Utils.IsTurn1OrMain2()); ((AI.Utils.IsEnemyBetter(false, false) && !AI.Utils.IsOneEnemyBetterThanValue(2300, true)) || AI.Utils.IsTurn1OrMain2());
} }
private bool No59背反之料理人效果() private bool Number59CrookedCookEffect()
{ {
if (Duel.Player == 0) if (Duel.Player == 0)
{ {
...@@ -481,17 +478,17 @@ namespace WindBot.Game.AI.Decks ...@@ -481,17 +478,17 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 进化帝半鸟龙效果() private bool EvolzarLaggiaEffect()
{ {
return DefaultTrap(); return DefaultTrap();
} }
private bool 辉光子帕拉迪奥斯特殊召唤() private bool StarliegePaladynamoSummon()
{ {
return 辉光子帕拉迪奥斯效果(); return StarliegePaladynamoEffect();
} }
private bool 辉光子帕拉迪奥斯效果() private bool StarliegePaladynamoEffect()
{ {
ClientCard result = AI.Utils.GetOneEnemyBetterThanValue(2000, true); ClientCard result = AI.Utils.GetOneEnemyBetterThanValue(2000, true);
if (result != null) if (result != null)
...@@ -502,14 +499,14 @@ namespace WindBot.Game.AI.Decks ...@@ -502,14 +499,14 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 电光皇特殊召唤() private bool NumberS39UtopiatheLightningSummon()
{ {
return AI.Utils.IsEnemyBetter(false, false); return AI.Utils.IsEnemyBetter(false, false);
} }
private bool 陷阱卡覆盖() private bool TrapSet()
{ {
return !Bot.HasInMonstersZone((int)CardId.No59背反之料理人, true, true); return !Bot.HasInMonstersZone((int)CardId.Number59CrookedCook, true, true);
} }
} }
} }
...@@ -11,86 +11,87 @@ namespace WindBot.Game.AI.Decks ...@@ -11,86 +11,87 @@ namespace WindBot.Game.AI.Decks
{ {
public enum CardId public enum CardId
{ {
迷雾恶魔 = 28601770, MistArchfiend = 28601770,
电子龙 = 70095154, CyberDragon = 70095154,
异热同心武器荒鹫激神爪 = 29353756, ZWEagleClaw = 29353756,
太阳风帆船 = 33911264, SolarWindJammer = 33911264,
速攻同调士 = 20932152, QuickdrawSynchron = 20932152,
发条士兵 = 12299841, WindUpSoldier = 12299841,
画星宝宝 = 24610207, StarDrawing = 24610207,
先史遗产黄金航天飞机 = 88552992, ChronomalyGoldenJet = 88552992,
简易融合 = 1845204,
二重召唤 = 43422537, InstantFusion = 1845204,
旋风 = 5318639, DoubleSummon = 43422537,
月之书 = 14087893, MysticalSpaceTyphoon = 5318639,
超量组件 = 13032689, BookOfMoon = 14087893,
超量苏生 = 26708437, XyzUnit = 13032689,
神圣防护罩反射镜力 = 44095762, XyzReborn = 26708437,
激流葬 = 53582587, MirrorForce = 44095762,
超量遮护罩 = 96457619, TorrentialTribute = 53582587,
XyzVeil = 96457619,
重装机甲装甲车龙 = 72959823,
迅雷之骑士盖亚龙骑士 = 91949988, PanzerDragon = 72959823,
电子龙无限 = 10443957, GaiaDragonTheThunderCharger = 91949988,
始祖守护者提拉斯 = 31386180, CyberDragonInfinity = 10443957,
No61火山恐龙 = 29669359, TirasKeeperOfGenesis = 31386180,
鲨鱼要塞 = 50449881, Number61Volcasaurus = 29669359,
电子龙新星 = 58069384 SharkFortress = 50449881,
CyberDragonNova = 58069384
} }
private bool 已通常召唤 = false; private bool NormalSummoned = false;
private bool 已发动简易融合 = false; private bool InstantFusionUsed = false;
private bool 已发动二重召唤 = false; private bool DoubleSummonUsed = false;
private bool 已特殊召唤电子龙无限 = false; private bool CyberDragonInfinitySummoned = false;
private bool 已发动火山恐龙 = false; private bool Number61VolcasaurusUsed = false;
public Rank5Executor(GameAI ai, Duel duel) public Rank5Executor(GameAI ai, Duel duel)
: base(ai, duel) : base(ai, duel)
{ {
// Quick spells // Quick spells
AddExecutor(ExecutorType.Activate, (int)CardId.月之书, DefaultBookOfMoon); AddExecutor(ExecutorType.Activate, (int)CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.旋风, DefaultMysticalSpaceTyphoon); AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
// 优先出的超量怪兽 // Cyber Dragon Infinity first
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子龙新星, 电子龙新星特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragonNova, CyberDragonNovaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.电子龙新星, 电子龙新星效果); AddExecutor(ExecutorType.Activate, (int)CardId.CyberDragonNova, CyberDragonNovaEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子龙无限, 电子龙无限特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragonInfinity, CyberDragonInfinitySummon);
AddExecutor(ExecutorType.Activate, (int)CardId.电子龙无限, 电子龙无限效果); AddExecutor(ExecutorType.Activate, (int)CardId.CyberDragonInfinity, CyberDragonInfinityEffect);
// 无副作用的5星怪兽 // Level 5 monsters without side effects
AddExecutor(ExecutorType.SpSummon, (int)CardId.电子龙); AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.太阳风帆船, 太阳风帆船特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.SolarWindJammer, SolarWindJammerSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.异热同心武器荒鹫激神爪); AddExecutor(ExecutorType.SpSummon, (int)CardId.ZWEagleClaw);
AddExecutor(ExecutorType.Summon, (int)CardId.先史遗产黄金航天飞机, 通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.ChronomalyGoldenJet, NormalSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.先史遗产黄金航天飞机, 先史遗产黄金航天飞机效果); AddExecutor(ExecutorType.Activate, (int)CardId.ChronomalyGoldenJet, ChronomalyGoldenJetEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.画星宝宝, 通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.StarDrawing, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.发条士兵, 通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.WindUpSoldier, NormalSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.发条士兵, 发条士兵效果); AddExecutor(ExecutorType.Activate, (int)CardId.WindUpSoldier, WindUpSoldierEffect);
// XYZ Monsters: Summon // XYZ Monsters: Summon
AddExecutor(ExecutorType.SpSummon, (int)CardId.No61火山恐龙, No61火山恐龙特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Number61Volcasaurus, Number61VolcasaurusSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.No61火山恐龙, No61火山恐龙效果); AddExecutor(ExecutorType.Activate, (int)CardId.Number61Volcasaurus, Number61VolcasaurusEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.始祖守护者提拉斯); AddExecutor(ExecutorType.SpSummon, (int)CardId.TirasKeeperOfGenesis);
AddExecutor(ExecutorType.Activate, (int)CardId.始祖守护者提拉斯, 始祖守护者提拉斯效果); AddExecutor(ExecutorType.Activate, (int)CardId.TirasKeeperOfGenesis, TirasKeeperOfGenesisEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.鲨鱼要塞); AddExecutor(ExecutorType.SpSummon, (int)CardId.SharkFortress);
AddExecutor(ExecutorType.Activate, (int)CardId.鲨鱼要塞); AddExecutor(ExecutorType.Activate, (int)CardId.SharkFortress);
AddExecutor(ExecutorType.SpSummon, (int)CardId.迅雷之骑士盖亚龙骑士, 迅雷之骑士盖亚龙骑士特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.GaiaDragonTheThunderCharger, GaiaDragonTheThunderChargerSummon);
// 有副作用的5星怪兽 // Level 5 monsters with side effects
AddExecutor(ExecutorType.SpSummon, (int)CardId.速攻同调士, 速攻同调士特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.QuickdrawSynchron, QuickdrawSynchronSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.迷雾恶魔, 迷雾恶魔通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.MistArchfiend, MistArchfiendSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.简易融合, 简易融合效果); AddExecutor(ExecutorType.Activate, (int)CardId.InstantFusion, InstantFusionEffect);
// Useful spells // Useful spells
AddExecutor(ExecutorType.Activate, (int)CardId.二重召唤, 二重召唤效果); AddExecutor(ExecutorType.Activate, (int)CardId.DoubleSummon, DoubleSummonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.超量组件, 超量组件效果); AddExecutor(ExecutorType.Activate, (int)CardId.XyzUnit, XyzUnitEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.超量苏生, 超量苏生效果); AddExecutor(ExecutorType.Activate, (int)CardId.XyzReborn, XyzRebornEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.重装机甲装甲车龙, 重装机甲装甲车龙效果); AddExecutor(ExecutorType.Activate, (int)CardId.PanzerDragon, PanzerDragonEffect);
// Reposition // Reposition
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
...@@ -98,9 +99,9 @@ namespace WindBot.Game.AI.Decks ...@@ -98,9 +99,9 @@ namespace WindBot.Game.AI.Decks
// Set and activate traps // Set and activate traps
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.超量遮护罩, 超量遮护罩效果); AddExecutor(ExecutorType.Activate, (int)CardId.XyzVeil, XyzVeilEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.激流葬, DefaultTorrentialTribute); AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, (int)CardId.神圣防护罩反射镜力, DefaultTrap); AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultTrap);
} }
public override bool OnSelectHand() public override bool OnSelectHand()
...@@ -110,130 +111,120 @@ namespace WindBot.Game.AI.Decks ...@@ -110,130 +111,120 @@ namespace WindBot.Game.AI.Decks
public override void OnNewTurn() public override void OnNewTurn()
{ {
// 回合开始时重置状况 NormalSummoned = false;
已通常召唤 = false; InstantFusionUsed = false;
已发动简易融合 = false; DoubleSummonUsed = false;
已发动二重召唤 = false; CyberDragonInfinitySummoned = false;
已特殊召唤电子龙无限 = false; Number61VolcasaurusUsed = false;
已发动火山恐龙 = false;
} }
private bool 特殊召唤不重复的超量怪兽() private bool NormalSummon()
{ {
List<ClientCard> monsters = Bot.GetMonsters(); NormalSummoned = true;
foreach (ClientCard monster in monsters)
if (monster.Id == Card.Id)
return false;
return true;
}
private bool 通常召唤()
{
已通常召唤 = true;
return true; return true;
} }
private bool 太阳风帆船特殊召唤() private bool SolarWindJammerSummon()
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
} }
private bool 速攻同调士特殊召唤() private bool QuickdrawSynchronSummon()
{ {
if (!需要出5()) if (!NeedLV5())
return false; return false;
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.速攻同调士, (int)CardId.QuickdrawSynchron,
(int)CardId.异热同心武器荒鹫激神爪, (int)CardId.ZWEagleClaw,
(int)CardId.太阳风帆船, (int)CardId.SolarWindJammer,
(int)CardId.电子龙, (int)CardId.CyberDragon,
(int)CardId.迷雾恶魔, (int)CardId.MistArchfiend,
(int)CardId.发条士兵, (int)CardId.WindUpSoldier,
(int)CardId.画星宝宝, (int)CardId.StarDrawing,
(int)CardId.先史遗产黄金航天飞机 (int)CardId.ChronomalyGoldenJet
}); });
return true; return true;
} }
private bool 迷雾恶魔通常召唤() private bool MistArchfiendSummon()
{ {
if (!需要出5()) if (!NeedLV5())
return false; return false;
AI.SelectOption(1); AI.SelectOption(1);
已通常召唤 = true; NormalSummoned = true;
return true; return true;
} }
private bool 简易融合效果() private bool InstantFusionEffect()
{ {
if (!需要出5()) if (!NeedLV5())
return false; return false;
已发动简易融合 = true; InstantFusionUsed = true;
return true; return true;
} }
private bool 需要出5() private bool NeedLV5()
{ {
if (场上有5星怪兽()) if (HaveLV5OnField())
return true; return true;
int 其他的5星资源数量 = 0; int lv5Count = 0;
IList<ClientCard> hand = Bot.Hand; IList<ClientCard> hand = Bot.Hand;
foreach (ClientCard card in hand) foreach (ClientCard card in hand)
{ {
if (card.Id == (int)CardId.简易融合 && !已发动简易融合) if (card.Id == (int)CardId.InstantFusion && !InstantFusionUsed)
++其他的5星资源数量; ++lv5Count;
if (card.Id == (int)CardId.速攻同调士 && Bot.Hand.ContainsMonsterWithLevel(4)) if (card.Id == (int)CardId.QuickdrawSynchron && Bot.Hand.ContainsMonsterWithLevel(4))
++其他的5星资源数量; ++lv5Count;
if (card.Id == (int)CardId.迷雾恶魔 && !已通常召唤) if (card.Id == (int)CardId.MistArchfiend && !NormalSummoned)
++其他的5星资源数量; ++lv5Count;
if (card.Id == (int)CardId.二重召唤 && 二重召唤效果()) if (card.Id == (int)CardId.DoubleSummon && DoubleSummonEffect())
++其他的5星资源数量; ++lv5Count;
} }
if (其他的5星资源数量 >= 2) if (lv5Count >= 2)
return true; return true;
return false; return false;
} }
private bool 发条士兵效果() private bool WindUpSoldierEffect()
{ {
return 场上有5星怪兽(); return HaveLV5OnField();
} }
private bool 先史遗产黄金航天飞机效果() private bool ChronomalyGoldenJetEffect()
{ {
return Card.Level == 4; return Card.Level == 4;
} }
private bool 二重召唤效果() private bool DoubleSummonEffect()
{ {
if (!已通常召唤 || 已发动二重召唤) if (!NormalSummoned || DoubleSummonUsed)
return false; return false;
IList<ClientCard> hand = Bot.Hand; IList<ClientCard> hand = Bot.Hand;
foreach (ClientCard card in hand) foreach (ClientCard card in hand)
{ {
if (card.Id == (int)CardId.迷雾恶魔 || if (card.Id == (int)CardId.MistArchfiend ||
card.Id == (int)CardId.发条士兵 || card.Id == (int)CardId.WindUpSoldier ||
card.Id == (int)CardId.画星宝宝 || card.Id == (int)CardId.StarDrawing ||
card.Id == (int)CardId.先史遗产黄金航天飞机) card.Id == (int)CardId.ChronomalyGoldenJet)
{ {
已通常召唤 = false; NormalSummoned = false;
已发动二重召唤 = true; DoubleSummonUsed = true;
return true; return true;
} }
} }
return false; return false;
} }
private bool 电子龙新星特殊召唤() private bool CyberDragonNovaSummon()
{ {
return !已特殊召唤电子龙无限; return !CyberDragonInfinitySummoned;
} }
private bool 电子龙新星效果() private bool CyberDragonNovaEffect()
{ {
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.电子龙新星, 0)) if (ActivateDescription == AI.Utils.GetStringId((int)CardId.CyberDragonNova, 0))
{ {
return true; return true;
} }
...@@ -248,13 +239,13 @@ namespace WindBot.Game.AI.Decks ...@@ -248,13 +239,13 @@ namespace WindBot.Game.AI.Decks
} }
} }
private bool 电子龙无限特殊召唤() private bool CyberDragonInfinitySummon()
{ {
已特殊召唤电子龙无限 = true; CyberDragonInfinitySummoned = true;
return true; return true;
} }
private bool 电子龙无限效果() private bool CyberDragonInfinityEffect()
{ {
if (CurrentChain.Count > 0) if (CurrentChain.Count > 0)
{ {
...@@ -278,27 +269,27 @@ namespace WindBot.Game.AI.Decks ...@@ -278,27 +269,27 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool No61火山恐龙特殊召唤() private bool Number61VolcasaurusSummon()
{ {
return AI.Utils.IsOneEnemyBetterThanValue(2000, false); return AI.Utils.IsOneEnemyBetterThanValue(2000, false);
} }
private bool No61火山恐龙效果() private bool Number61VolcasaurusEffect()
{ {
ClientCard target = Enemy.MonsterZone.GetFloodgate(); ClientCard target = Enemy.MonsterZone.GetFloodgate();
if (target == null) if (target == null)
target = AI.Utils.GetOneEnemyBetterThanValue(2000, false); target = AI.Utils.GetOneEnemyBetterThanValue(2000, false);
if (target != null) if (target != null)
{ {
AI.SelectCard((int)CardId.电子龙); AI.SelectCard((int)CardId.CyberDragon);
AI.SelectNextCard(target); AI.SelectNextCard(target);
已发动火山恐龙 = true; Number61VolcasaurusUsed = true;
return true; return true;
} }
return false; return false;
} }
private bool 始祖守护者提拉斯效果() private bool TirasKeeperOfGenesisEffect()
{ {
ClientCard target = AI.Utils.GetProblematicCard(); ClientCard target = AI.Utils.GetProblematicCard();
if (target != null) if (target != null)
...@@ -308,11 +299,11 @@ namespace WindBot.Game.AI.Decks ...@@ -308,11 +299,11 @@ namespace WindBot.Game.AI.Decks
return true; return true;
} }
private bool 迅雷之骑士盖亚龙骑士特殊召唤() private bool GaiaDragonTheThunderChargerSummon()
{ {
if (已发动火山恐龙 && Bot.HasInMonstersZone((int)CardId.No61火山恐龙)) if (Number61VolcasaurusUsed && Bot.HasInMonstersZone((int)CardId.Number61Volcasaurus))
{ {
AI.SelectCard((int)CardId.No61火山恐龙); AI.SelectCard((int)CardId.Number61Volcasaurus);
return true; return true;
} }
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
...@@ -327,7 +318,7 @@ namespace WindBot.Game.AI.Decks ...@@ -327,7 +318,7 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 超量苏生效果() private bool XyzRebornEffect()
{ {
foreach (ClientCard card in Bot.SpellZone) foreach (ClientCard card in Bot.SpellZone)
{ {
...@@ -338,22 +329,22 @@ namespace WindBot.Game.AI.Decks ...@@ -338,22 +329,22 @@ namespace WindBot.Game.AI.Decks
} }
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.电子龙无限, (int)CardId.CyberDragonInfinity,
(int)CardId.电子龙新星, (int)CardId.CyberDragonNova,
(int)CardId.始祖守护者提拉斯, (int)CardId.TirasKeeperOfGenesis,
(int)CardId.鲨鱼要塞, (int)CardId.SharkFortress,
(int)CardId.No61火山恐龙 (int)CardId.Number61Volcasaurus
}); });
return true; return true;
} }
private bool 超量组件效果() private bool XyzUnitEffect()
{ {
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
return monsters.Exists(p => p.HasType(CardType.Xyz)); return monsters.Exists(p => p.HasType(CardType.Xyz));
} }
private bool 重装机甲装甲车龙效果() private bool PanzerDragonEffect()
{ {
ClientCard target = AI.Utils.GetProblematicCard(); ClientCard target = AI.Utils.GetProblematicCard();
if (target != null) if (target != null)
...@@ -384,12 +375,12 @@ namespace WindBot.Game.AI.Decks ...@@ -384,12 +375,12 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 超量遮护罩效果() private bool XyzVeilEffect()
{ {
List<ClientCard> spells = Bot.GetSpells(); List<ClientCard> spells = Bot.GetSpells();
foreach (ClientCard spell in spells) foreach (ClientCard spell in spells)
{ {
if (spell.Id == (int)CardId.超量遮护罩 && !spell.IsFacedown()) if (spell.Id == (int)CardId.XyzVeil && !spell.IsFacedown())
return false; return false;
} }
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
...@@ -401,7 +392,7 @@ namespace WindBot.Game.AI.Decks ...@@ -401,7 +392,7 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 场上有5星怪兽() private bool HaveLV5OnField()
{ {
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
...@@ -409,8 +400,8 @@ namespace WindBot.Game.AI.Decks ...@@ -409,8 +400,8 @@ namespace WindBot.Game.AI.Decks
if (monster.HasType(CardType.Monster) && if (monster.HasType(CardType.Monster) &&
!monster.HasType(CardType.Xyz) && !monster.HasType(CardType.Xyz) &&
(monster.Level == 5 (monster.Level == 5
|| monster.Id == (int)CardId.画星宝宝 || monster.Id == (int)CardId.StarDrawing
|| (monster.Id == (int)CardId.发条士兵) && !monster.Equals(Card))) || (monster.Id == (int)CardId.WindUpSoldier) && !monster.Equals(Card)))
return true; return true;
} }
return false; return false;
......
...@@ -11,174 +11,175 @@ namespace WindBot.Game.AI.Decks ...@@ -11,174 +11,175 @@ namespace WindBot.Game.AI.Decks
{ {
public enum CardId public enum CardId
{ {
数字机灵 = 32295838, Digitron = 32295838,
比特机灵 = 36211150, Bitron = 36211150,
双汇编亚龙 = 7445307, DualAssembloom = 7445307,
引导交错鹿 = 70950698, BootStagguard = 70950698,
猞猁连接杀手 = 35595518, Linkslayer = 35595518,
RAM云雄羊 = 9190563, RAMClouder = 9190563,
ROM云雌羊 = 44956694, ROMCloudia = 44956694,
均衡负载王 = 8567955, BalancerLord = 8567955,
反向连接兽 = 71172240, Backlinker = 71172240,
克莱因客户端蚁 = 45778242, Kleinant = 45778242,
网络小龙 = 62706865, Draconnet = 62706865,
点阵图跳离士 = 18789533, DotScaper = 18789533,
精神操作 = 37520316,
黑洞 = 53129443, MindControl = 37520316,
死者苏生 = 83764718, DarkHole = 53129443,
旋风 = 5318639, MonsterReborn = 83764718,
宇宙旋风 = 8267140, MysticalSpaceTyphoon = 5318639,
月之书 = 14087893, CosmicCyclone = 8267140,
电脑网后门 = 43839002, BookOfMoon = 14087893,
月镜盾 = 19508728, CynetBackdoor = 43839002,
电脑网宇宙 = 61583217, MoonMirrorShield = 19508728,
奈落的落穴 = 29401950, CynetUniverse = 61583217,
神圣防护罩反射镜力 = 44095762, BottomlessTrapHole = 29401950,
激流葬 = 53582587, MirrorForce = 44095762,
重编码存活 = 70238111, TorrentialTribute = 53582587,
次元障壁 = 83326048, RecodedAlive = 70238111,
强制脱出装置 = 94192409, DimensionalBarrier = 83326048,
神之通告 = 40605147, CompulsoryEvacuationDevice = 94192409,
SolemnStrike = 40605147,
解码语者 = 1861629,
编码语者 = 6622715, DecodeTalker = 1861629,
三栅极男巫 = 32617464, EncodeTalker = 6622715,
蜜罐机器人 = 34472920, TriGateWizard = 32617464,
二进制女巫 = 79016563, Honeybot = 34472920,
连接蜘蛛 = 98978921, BinarySorceress = 79016563,
LinkSpider = 98978921,
引导鹿衍生物 = 70950699
StagToken = 70950699
} }
bool 已发动均衡负载王 = false; bool BalancerLordUsed = false;
public ST1732Executor(GameAI ai, Duel duel) public ST1732Executor(GameAI ai, Duel duel)
: base(ai, duel) : base(ai, duel)
{ {
AddExecutor(ExecutorType.Activate, (int)CardId.宇宙旋风, DefaultCosmicCyclone); AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.旋风, DefaultMysticalSpaceTyphoon); AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole); AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.月之书, DefaultBookOfMoon); AddExecutor(ExecutorType.Activate, (int)CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.电脑网宇宙, 电脑网宇宙效果); AddExecutor(ExecutorType.Activate, (int)CardId.CynetUniverse, CynetUniverseEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.猞猁连接杀手); AddExecutor(ExecutorType.SpSummon, (int)CardId.Linkslayer);
AddExecutor(ExecutorType.Activate, (int)CardId.猞猁连接杀手, 猞猁连接杀手效果); AddExecutor(ExecutorType.Activate, (int)CardId.Linkslayer, LinkslayerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.连接蜘蛛); AddExecutor(ExecutorType.SpSummon, (int)CardId.LinkSpider);
AddExecutor(ExecutorType.Activate, (int)CardId.连接蜘蛛); AddExecutor(ExecutorType.Activate, (int)CardId.LinkSpider);
AddExecutor(ExecutorType.Activate, (int)CardId.精神操作, 精神操作效果); AddExecutor(ExecutorType.Activate, (int)CardId.MindControl, MindControlEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.反向连接兽); AddExecutor(ExecutorType.SpSummon, (int)CardId.Backlinker);
AddExecutor(ExecutorType.Activate, (int)CardId.反向连接兽, 反向连接兽效果); AddExecutor(ExecutorType.Activate, (int)CardId.Backlinker, BacklinkerEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.引导交错鹿, 引导交错鹿效果); AddExecutor(ExecutorType.Activate, (int)CardId.BootStagguard, BootStagguardEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.死者苏生, 死者苏生效果); AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, MonsterRebornEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.月镜盾, 月镜盾效果); AddExecutor(ExecutorType.Activate, (int)CardId.MoonMirrorShield, MoonMirrorShieldEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.电脑网后门, 电脑网后门效果); AddExecutor(ExecutorType.Activate, (int)CardId.CynetBackdoor, CynetBackdoorEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.重编码存活); AddExecutor(ExecutorType.Activate, (int)CardId.RecodedAlive);
AddExecutor(ExecutorType.Summon, (int)CardId.均衡负载王, 均衡负载王通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.BalancerLord, BalancerLordSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.ROM云雌羊, ROM云雌羊通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.ROMCloudia, ROMCloudiaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.ROM云雌羊, ROM云雌羊效果); AddExecutor(ExecutorType.Activate, (int)CardId.ROMCloudia, ROMCloudiaEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.网络小龙, 网络小龙通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.Draconnet, DraconnetSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.网络小龙, 网络小龙效果); AddExecutor(ExecutorType.Activate, (int)CardId.Draconnet, DraconnetEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.克莱因客户端蚁); AddExecutor(ExecutorType.Summon, (int)CardId.Kleinant);
AddExecutor(ExecutorType.Activate, (int)CardId.克莱因客户端蚁, 克莱因客户端蚁效果); AddExecutor(ExecutorType.Activate, (int)CardId.Kleinant, KleinantEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.RAM云雄羊); AddExecutor(ExecutorType.Summon, (int)CardId.RAMClouder);
AddExecutor(ExecutorType.Activate, (int)CardId.RAM云雄羊, RAM云雄羊效果); AddExecutor(ExecutorType.Activate, (int)CardId.RAMClouder, RAMClouderEffect);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.点阵图跳离士); AddExecutor(ExecutorType.SummonOrSet, (int)CardId.DotScaper);
AddExecutor(ExecutorType.Activate, (int)CardId.点阵图跳离士, 点阵图跳离士效果); AddExecutor(ExecutorType.Activate, (int)CardId.DotScaper, DotScaperEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.均衡负载王); AddExecutor(ExecutorType.Summon, (int)CardId.BalancerLord);
AddExecutor(ExecutorType.Summon, (int)CardId.ROM云雌羊); AddExecutor(ExecutorType.Summon, (int)CardId.ROMCloudia);
AddExecutor(ExecutorType.Summon, (int)CardId.网络小龙); AddExecutor(ExecutorType.Summon, (int)CardId.Draconnet);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.反向连接兽); AddExecutor(ExecutorType.SummonOrSet, (int)CardId.Backlinker);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.数字机灵); AddExecutor(ExecutorType.SummonOrSet, (int)CardId.Digitron);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.比特机灵); AddExecutor(ExecutorType.SummonOrSet, (int)CardId.Bitron);
AddExecutor(ExecutorType.Activate, (int)CardId.均衡负载王, 均衡负载王效果); AddExecutor(ExecutorType.Activate, (int)CardId.BalancerLord, BalancerLordEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.解码语者, 连接召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.DecodeTalker, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.解码语者); AddExecutor(ExecutorType.Activate, (int)CardId.DecodeTalker);
AddExecutor(ExecutorType.SpSummon, (int)CardId.三栅极男巫, 连接召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.TriGateWizard, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.三栅极男巫); AddExecutor(ExecutorType.Activate, (int)CardId.TriGateWizard);
AddExecutor(ExecutorType.SpSummon, (int)CardId.编码语者, 连接召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.EncodeTalker, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.编码语者); AddExecutor(ExecutorType.Activate, (int)CardId.EncodeTalker);
AddExecutor(ExecutorType.SpSummon, (int)CardId.蜜罐机器人, 连接召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Honeybot, LinkSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.二进制女巫, 连接召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.BinarySorceress, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.二进制女巫); AddExecutor(ExecutorType.Activate, (int)CardId.BinarySorceress);
AddExecutor(ExecutorType.SpellSet, (int)CardId.电脑网后门, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.CynetBackdoor, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.重编码存活, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.RecodedAlive, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之通告, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强制脱出装置, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.次元障壁, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.激流葬, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神圣防护罩反射镜力, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.奈落的落穴, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.BottomlessTrapHole, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.月之书, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.BookOfMoon, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.宇宙旋风, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.CosmicCyclone, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.旋风, DefaultSpellSet); AddExecutor(ExecutorType.SpellSet, (int)CardId.MysticalSpaceTyphoon, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.神之通告, DefaultSolemnStrike); AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.强制脱出装置, DefaultCompulsoryEvacuationDevice); AddExecutor(ExecutorType.Activate, (int)CardId.CompulsoryEvacuationDevice, DefaultCompulsoryEvacuationDevice);
AddExecutor(ExecutorType.Activate, (int)CardId.次元障壁, DefaultDimensionalBarrier); AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalBarrier, DefaultDimensionalBarrier);
AddExecutor(ExecutorType.Activate, (int)CardId.激流葬, DefaultTorrentialTribute); AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, (int)CardId.神圣防护罩反射镜力, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.奈落的落穴, DefaultUniqueTrap); AddExecutor(ExecutorType.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
} }
public override bool OnSelectHand() public override bool OnSelectHand()
{ {
// 抢后攻 // go second
return false; return false;
} }
public override void OnNewTurn() public override void OnNewTurn()
{ {
// 回合开始时重置状况 // reset
已发动均衡负载王 = false; BalancerLordUsed = false;
} }
public override int OnSelectOption(IList<int> options) public override int OnSelectOption(IList<int> options)
{ {
// 月镜盾回卡组底 // put Moon Mirror Shield to the bottom of deck
return options.Count == 2 ? 1 : 0; return options.Count == 2 ? 1 : 0;
} }
public override bool OnSelectYesNo(int desc) public override bool OnSelectYesNo(int desc)
{ {
if (desc == 210) //是否要继续选择? if (desc == 210) // Continue selecting? (Link Summoning)
return false; return false;
if (desc == 31) //是否直接攻击? if (desc == 31) // Direct Attack?
return true; return true;
return base.OnSelectYesNo(desc); return base.OnSelectYesNo(desc);
} }
private bool 猞猁连接杀手效果() private bool LinkslayerEffect()
{ {
IList<ClientCard> targets = Enemy.GetSpells(); IList<ClientCard> targets = Enemy.GetSpells();
if (targets.Count > 0) if (targets.Count > 0)
{ {
AI.SelectCard(new[]{ AI.SelectCard(new[]{
(int)CardId.双汇编亚龙, (int)CardId.DualAssembloom,
(int)CardId.比特机灵, (int)CardId.Bitron,
(int)CardId.数字机灵, (int)CardId.Digitron,
(int)CardId.重编码存活 (int)CardId.RecodedAlive
}); });
AI.SelectNextCard(targets); AI.SelectNextCard(targets);
return true; return true;
...@@ -186,7 +187,7 @@ namespace WindBot.Game.AI.Decks ...@@ -186,7 +187,7 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 精神操作效果() private bool MindControlEffect()
{ {
ClientCard target = AI.Utils.GetAnyEnemyMonster(); ClientCard target = AI.Utils.GetAnyEnemyMonster();
if (target != null) if (target != null)
...@@ -197,34 +198,34 @@ namespace WindBot.Game.AI.Decks ...@@ -197,34 +198,34 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 反向连接兽效果() private bool BacklinkerEffect()
{ {
return (Bot.MonsterZone[5] == null) && (Bot.MonsterZone[6] == null); return (Bot.MonsterZone[5] == null) && (Bot.MonsterZone[6] == null);
} }
private bool 引导交错鹿效果() private bool BootStagguardEffect()
{ {
if (Card.Location != CardLocation.Hand) if (Card.Location != CardLocation.Hand)
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
} }
private bool 死者苏生效果() private bool MonsterRebornEffect()
{ {
List<int> targets = new List<int> { List<int> targets = new List<int> {
(int)CardId.解码语者, (int)CardId.DecodeTalker,
(int)CardId.编码语者, (int)CardId.EncodeTalker,
(int)CardId.三栅极男巫, (int)CardId.TriGateWizard,
(int)CardId.二进制女巫, (int)CardId.BinarySorceress,
(int)CardId.蜜罐机器人, (int)CardId.Honeybot,
(int)CardId.双汇编亚龙, (int)CardId.DualAssembloom,
(int)CardId.引导交错鹿, (int)CardId.BootStagguard,
(int)CardId.均衡负载王, (int)CardId.BalancerLord,
(int)CardId.ROM云雌羊, (int)CardId.ROMCloudia,
(int)CardId.猞猁连接杀手, (int)CardId.Linkslayer,
(int)CardId.RAM云雄羊, (int)CardId.RAMClouder,
(int)CardId.反向连接兽, (int)CardId.Backlinker,
(int)CardId.克莱因客户端蚁 (int)CardId.Kleinant
}; };
if (!Bot.HasInGraveyard(targets)) if (!Bot.HasInGraveyard(targets))
{ {
...@@ -234,7 +235,7 @@ namespace WindBot.Game.AI.Decks ...@@ -234,7 +235,7 @@ namespace WindBot.Game.AI.Decks
return true; return true;
} }
private bool 月镜盾效果() private bool MoonMirrorShieldEffect()
{ {
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
...@@ -245,7 +246,7 @@ namespace WindBot.Game.AI.Decks ...@@ -245,7 +246,7 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 电脑网宇宙效果() private bool CynetUniverseEffect()
{ {
if (Card.Location == CardLocation.Hand) if (Card.Location == CardLocation.Hand)
return DefaultField(); return DefaultField();
...@@ -261,7 +262,7 @@ namespace WindBot.Game.AI.Decks ...@@ -261,7 +262,7 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 电脑网后门效果() private bool CynetBackdoorEffect()
{ {
if (!(Duel.Player == 0 && Duel.Phase == DuelPhase.Main2) && if (!(Duel.Player == 0 && Duel.Phase == DuelPhase.Main2) &&
!(Duel.Player == 1 && (Duel.Phase == DuelPhase.BattleStart || Duel.Phase == DuelPhase.End))) !(Duel.Player == 1 && (Duel.Phase == DuelPhase.BattleStart || Duel.Phase == DuelPhase.End)))
...@@ -291,7 +292,7 @@ namespace WindBot.Game.AI.Decks ...@@ -291,7 +292,7 @@ namespace WindBot.Game.AI.Decks
monsters = Bot.GetMonsters(); monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.均衡负载王) if (monster.Id == (int)CardId.BalancerLord)
{ {
AI.SelectCard(monster); AI.SelectCard(monster);
selected = true; selected = true;
...@@ -315,99 +316,99 @@ namespace WindBot.Game.AI.Decks ...@@ -315,99 +316,99 @@ namespace WindBot.Game.AI.Decks
{ {
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.ROM云雌羊, (int)CardId.ROMCloudia,
(int)CardId.均衡负载王, (int)CardId.BalancerLord,
(int)CardId.克莱因客户端蚁, (int)CardId.Kleinant,
(int)CardId.网络小龙, (int)CardId.Draconnet,
(int)CardId.反向连接兽 (int)CardId.Backlinker
}); });
return true; return true;
} }
return false; return false;
} }
private bool 均衡负载王通常召唤() private bool BalancerLordSummon()
{ {
return !已发动均衡负载王; return !BalancerLordUsed;
} }
private bool 均衡负载王效果() private bool BalancerLordEffect()
{ {
if (Card.Location == CardLocation.Removed) if (Card.Location == CardLocation.Removed)
return true; return true;
bool hastarget = Bot.HasInHand(new List<int> { bool hastarget = Bot.HasInHand(new List<int> {
(int)CardId.网络小龙, (int)CardId.Draconnet,
(int)CardId.克莱因客户端蚁, (int)CardId.Kleinant,
(int)CardId.均衡负载王, (int)CardId.BalancerLord,
(int)CardId.ROM云雌羊, (int)CardId.ROMCloudia,
(int)CardId.RAM云雄羊, (int)CardId.RAMClouder,
(int)CardId.点阵图跳离士 (int)CardId.DotScaper
}); });
if (hastarget && !已发动均衡负载王) if (hastarget && !BalancerLordUsed)
{ {
已发动均衡负载王 = true; BalancerLordUsed = true;
return true; return true;
} }
return false; return false;
} }
private bool ROM云雌羊通常召唤() private bool ROMCloudiaSummon()
{ {
return Bot.HasInGraveyard(new List<int> { return Bot.HasInGraveyard(new List<int> {
(int)CardId.引导交错鹿, (int)CardId.BootStagguard,
(int)CardId.均衡负载王, (int)CardId.BalancerLord,
(int)CardId.克莱因客户端蚁, (int)CardId.Kleinant,
(int)CardId.猞猁连接杀手, (int)CardId.Linkslayer,
(int)CardId.网络小龙, (int)CardId.Draconnet,
(int)CardId.RAM云雄羊 (int)CardId.RAMClouder
}); });
} }
private bool ROM云雌羊效果() private bool ROMCloudiaEffect()
{ {
if (Card.Location == CardLocation.MonsterZone) if (Card.Location == CardLocation.MonsterZone)
{ {
AI.SelectCard(new[]{ AI.SelectCard(new[]{
(int)CardId.引导交错鹿, (int)CardId.BootStagguard,
(int)CardId.均衡负载王, (int)CardId.BalancerLord,
(int)CardId.克莱因客户端蚁, (int)CardId.Kleinant,
(int)CardId.猞猁连接杀手, (int)CardId.Linkslayer,
(int)CardId.网络小龙, (int)CardId.Draconnet,
(int)CardId.RAM云雄羊 (int)CardId.RAMClouder
}); });
return true; return true;
} }
else else
{ {
AI.SelectCard(new[]{ AI.SelectCard(new[]{
(int)CardId.均衡负载王, (int)CardId.BalancerLord,
(int)CardId.克莱因客户端蚁, (int)CardId.Kleinant,
(int)CardId.RAM云雄羊, (int)CardId.RAMClouder,
(int)CardId.点阵图跳离士 (int)CardId.DotScaper
}); });
return true; return true;
} }
} }
private bool 网络小龙通常召唤() private bool DraconnetSummon()
{ {
return Bot.GetRemainingCount((int)CardId.数字机灵, 1) > 0 return Bot.GetRemainingCount((int)CardId.Digitron, 1) > 0
|| Bot.GetRemainingCount((int)CardId.比特机灵, 1) > 0; || Bot.GetRemainingCount((int)CardId.Bitron, 1) > 0;
} }
private bool 网络小龙效果() private bool DraconnetEffect()
{ {
AI.SelectCard((int)CardId.比特机灵); AI.SelectCard((int)CardId.Bitron);
return true; return true;
} }
private bool 克莱因客户端蚁效果() private bool KleinantEffect()
{ {
IList<int> targets = new[] { IList<int> targets = new[] {
(int)CardId.双汇编亚龙, (int)CardId.DualAssembloom,
(int)CardId.比特机灵, (int)CardId.Bitron,
(int)CardId.数字机灵, (int)CardId.Digitron,
(int)CardId.点阵图跳离士 (int)CardId.DotScaper
}; };
foreach (ClientCard monster in Bot.Hand) foreach (ClientCard monster in Bot.Hand)
{ {
...@@ -418,10 +419,10 @@ namespace WindBot.Game.AI.Decks ...@@ -418,10 +419,10 @@ namespace WindBot.Game.AI.Decks
} }
} }
IList<int> targets2 = new[] { IList<int> targets2 = new[] {
(int)CardId.引导鹿衍生物, (int)CardId.StagToken,
(int)CardId.比特机灵, (int)CardId.Bitron,
(int)CardId.数字机灵, (int)CardId.Digitron,
(int)CardId.点阵图跳离士 (int)CardId.DotScaper
}; };
foreach (ClientCard monster in Bot.GetMonsters()) foreach (ClientCard monster in Bot.GetMonsters())
{ {
...@@ -434,40 +435,40 @@ namespace WindBot.Game.AI.Decks ...@@ -434,40 +435,40 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool RAM云雄羊效果() private bool RAMClouderEffect()
{ {
AI.SelectCard(new[]{ AI.SelectCard(new[]{
(int)CardId.引导鹿衍生物, (int)CardId.StagToken,
(int)CardId.比特机灵, (int)CardId.Bitron,
(int)CardId.数字机灵, (int)CardId.Digitron,
(int)CardId.点阵图跳离士, (int)CardId.DotScaper,
(int)CardId.网络小龙, (int)CardId.Draconnet,
(int)CardId.反向连接兽, (int)CardId.Backlinker,
(int)CardId.RAM云雄羊 (int)CardId.RAMClouder
}); });
AI.SelectNextCard(new[]{ AI.SelectNextCard(new[]{
(int)CardId.解码语者, (int)CardId.DecodeTalker,
(int)CardId.编码语者, (int)CardId.EncodeTalker,
(int)CardId.三栅极男巫, (int)CardId.TriGateWizard,
(int)CardId.二进制女巫, (int)CardId.BinarySorceress,
(int)CardId.蜜罐机器人, (int)CardId.Honeybot,
(int)CardId.双汇编亚龙, (int)CardId.DualAssembloom,
(int)CardId.引导交错鹿, (int)CardId.BootStagguard,
(int)CardId.均衡负载王, (int)CardId.BalancerLord,
(int)CardId.ROM云雌羊, (int)CardId.ROMCloudia,
(int)CardId.猞猁连接杀手, (int)CardId.Linkslayer,
(int)CardId.RAM云雄羊 (int)CardId.RAMClouder
}); });
return true; return true;
} }
private bool 点阵图跳离士效果() private bool DotScaperEffect()
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
} }
private bool 连接召唤() private bool LinkSummon()
{ {
return (AI.Utils.IsTurn1OrMain2() || AI.Utils.IsEnemyBetter(false, false)) return (AI.Utils.IsTurn1OrMain2() || AI.Utils.IsEnemyBetter(false, false))
&& AI.Utils.GetBestAttack(Bot, true) < Card.Attack; && AI.Utils.GetBestAttack(Bot, true) < Card.Attack;
......
...@@ -11,99 +11,102 @@ namespace WindBot.Game.AI.Decks ...@@ -11,99 +11,102 @@ namespace WindBot.Game.AI.Decks
{ {
public enum CardId public enum CardId
{ {
冰结界的术者 = 23950192, CryomancerOfTheIceBarrier = 23950192,
冰结界的水影 = 90311614, DewdarkOfTheIceBarrier = 90311614,
鬼青蛙 = 9126351, SwapFrog = 9126351,
冰结界的传道师 = 50088247, PriorOfTheIceBarrier = 50088247,
粹蛙 = 1357146, Ronintoadin = 1357146,
魔知青蛙 = 46239604, DupeFrog = 46239604,
小灰篮史莱姆 = 80250319, GraydleSlimeJr = 80250319,
银河旋风 = 5133471,
鹰身女妖的羽毛扫 = 18144506, GalaxyCyclone = 5133471,
浮上 = 33057951, HarpiesFeatherDuster = 18144506,
黑洞 = 53129443, Surface = 33057951,
手札抹杀 = 72892473, DarkHole = 53129443,
愚蠢的埋葬 = 81439173, CardDestruction = 72892473,
死者苏生 = 83764718, FoolishBurial = 81439173,
冰结界的纹章 = 84206435, MonsterReborn = 83764718,
海上打捞 = 96947648, MedallionOfTheIceBarrier = 84206435,
水舞台 = 29047353, Salvage = 96947648,
虹光之宣告者 = 79606837, AquariumStage = 29047353,
饼蛙 = 90809975,
神骑矢车菊圣人马 = 36776089, HeraldOfTheArcLight = 79606837,
大薰风凤凰 = 2766877, ToadallyAwesome = 90809975,
猫鲨 = 84224627, SkyCavalryCentaurea = 36776089,
DaigustoPhoenix = 2766877,
旋风 = 5318639, CatShark = 84224627,
月之书 = 14087893,
活死人的呼声 = 97077563, MysticalSpaceTyphoon = 5318639,
激流葬 = 53582587, BookOfMoon = 14087893,
CallOfTheHaunted = 97077563,
闪光No39希望皇霍普电光皇 = 56832966 TorrentialTribute = 53582587,
NumberS39UtopiatheLightning = 56832966
} }
public ToadallyAwesomeExecutor(GameAI ai, Duel duel) public ToadallyAwesomeExecutor(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.黑洞, DefaultDarkHole); AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.水舞台, 水舞台效果); AddExecutor(ExecutorType.Activate, (int)CardId.AquariumStage, AquariumStageEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.冰结界的纹章, 冰结界的纹章效果); AddExecutor(ExecutorType.Activate, (int)CardId.MedallionOfTheIceBarrier, MedallionOfTheIceBarrierEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.愚蠢的埋葬, 愚蠢的埋葬效果); AddExecutor(ExecutorType.Activate, (int)CardId.FoolishBurial, FoolishBurialEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.冰结界的传道师); AddExecutor(ExecutorType.SpSummon, (int)CardId.PriorOfTheIceBarrier);
AddExecutor(ExecutorType.Summon, (int)CardId.小灰篮史莱姆, 小灰篮史莱姆优先通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.GraydleSlimeJr, GraydleSlimeJrSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.鬼青蛙, 鬼青蛙特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.SwapFrog, SwapFrogSpsummon);
AddExecutor(ExecutorType.Activate, (int)CardId.鬼青蛙, 鬼青蛙效果); AddExecutor(ExecutorType.Activate, (int)CardId.SwapFrog, SwapFrogEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.小灰篮史莱姆, 小灰篮史莱姆效果); AddExecutor(ExecutorType.Activate, (int)CardId.GraydleSlimeJr, GraydleSlimeJrEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.粹蛙, 粹蛙效果); AddExecutor(ExecutorType.Activate, (int)CardId.Ronintoadin, RonintoadinEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.冰结界的传道师); AddExecutor(ExecutorType.Activate, (int)CardId.PriorOfTheIceBarrier);
AddExecutor(ExecutorType.Activate, (int)CardId.魔知青蛙); AddExecutor(ExecutorType.Activate, (int)CardId.DupeFrog);
AddExecutor(ExecutorType.Activate, (int)CardId.浮上, 死者苏生效果); AddExecutor(ExecutorType.Activate, (int)CardId.Surface, SurfaceEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.死者苏生, 死者苏生效果); AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, SurfaceEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.海上打捞, 海上打捞效果); AddExecutor(ExecutorType.Activate, (int)CardId.Salvage, SalvageEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.鬼青蛙); AddExecutor(ExecutorType.Summon, (int)CardId.SwapFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.冰结界的水影, 冰结界下级通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.DewdarkOfTheIceBarrier, IceBarrierSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.冰结界的术者, 冰结界下级通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.CryomancerOfTheIceBarrier, IceBarrierSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.手札抹杀); AddExecutor(ExecutorType.Activate, (int)CardId.CardDestruction);
AddExecutor(ExecutorType.Summon, (int)CardId.小灰篮史莱姆, 低攻怪兽通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.GraydleSlimeJr, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.冰结界的传道师, 低攻怪兽通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.PriorOfTheIceBarrier, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.粹蛙, 低攻怪兽通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.Ronintoadin, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.魔知青蛙, 低攻怪兽通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.DupeFrog, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.冰结界的传道师, 冰结界的传道师通常召唤); AddExecutor(ExecutorType.Summon, (int)CardId.PriorOfTheIceBarrier, PriorOfTheIceBarrierSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.猫鲨, 猫鲨特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.CatShark, CatSharkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.猫鲨, 猫鲨效果); AddExecutor(ExecutorType.Activate, (int)CardId.CatShark, CatSharkEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.神骑矢车菊圣人马, 神骑矢车菊圣人马特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.SkyCavalryCentaurea, SkyCavalryCentaureaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.神骑矢车菊圣人马); AddExecutor(ExecutorType.Activate, (int)CardId.SkyCavalryCentaurea);
AddExecutor(ExecutorType.SpSummon, (int)CardId.大薰风凤凰, 大薰风凤凰特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.DaigustoPhoenix, DaigustoPhoenixSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.大薰风凤凰); AddExecutor(ExecutorType.Activate, (int)CardId.DaigustoPhoenix);
AddExecutor(ExecutorType.SpSummon, (int)CardId.饼蛙); AddExecutor(ExecutorType.SpSummon, (int)CardId.ToadallyAwesome);
AddExecutor(ExecutorType.Activate, (int)CardId.饼蛙, 饼蛙效果); AddExecutor(ExecutorType.Activate, (int)CardId.ToadallyAwesome, ToadallyAwesomeEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.虹光之宣告者, 虹光之宣告者特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.HeraldOfTheArcLight, HeraldOfTheArcLightSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.虹光之宣告者); AddExecutor(ExecutorType.Activate, (int)CardId.HeraldOfTheArcLight);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.小灰篮史莱姆); AddExecutor(ExecutorType.MonsterSet, (int)CardId.GraydleSlimeJr);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.魔知青蛙); AddExecutor(ExecutorType.MonsterSet, (int)CardId.DupeFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.粹蛙); AddExecutor(ExecutorType.MonsterSet, (int)CardId.Ronintoadin);
AddExecutor(ExecutorType.Repos, 改变攻守表示); AddExecutor(ExecutorType.Repos, Repos);
// 饼蛙抢来的卡的发动
AddExecutor(ExecutorType.Activate, (int)CardId.旋风, DefaultMysticalSpaceTyphoon); // cards got by Toadall yAwesome
AddExecutor(ExecutorType.Activate, (int)CardId.月之书, DefaultBookOfMoon); AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.活死人的呼声, 死者苏生效果); AddExecutor(ExecutorType.Activate, (int)CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.激流葬, DefaultTorrentialTribute); AddExecutor(ExecutorType.Activate, (int)CardId.CallOfTheHaunted, SurfaceEffect);
AddExecutor(ExecutorType.Activate, 其他魔法发动); AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, 其他陷阱发动); AddExecutor(ExecutorType.Activate, OtherSpellEffect);
AddExecutor(ExecutorType.Activate, 其他怪兽发动); AddExecutor(ExecutorType.Activate, OtherTrapEffect);
AddExecutor(ExecutorType.Activate, OtherMonsterEffect);
} }
public override bool OnSelectHand() public override bool OnSelectHand()
...@@ -118,136 +121,136 @@ namespace WindBot.Game.AI.Decks ...@@ -118,136 +121,136 @@ 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.Id == (int)CardId.神骑矢车菊圣人马 && !attacker.IsDisabled() && attacker.HasXyzMaterial()) if (attacker.Id == (int)CardId.SkyCavalryCentaurea && !attacker.IsDisabled() && attacker.HasXyzMaterial())
attacker.RealPower = Duel.LifePoints[0] + attacker.Attack; attacker.RealPower = Duel.LifePoints[0] + attacker.Attack;
} }
return attacker.RealPower >= defender.GetDefensePower(); return attacker.RealPower >= defender.GetDefensePower();
} }
private bool 冰结界的纹章效果() private bool MedallionOfTheIceBarrierEffect()
{ {
if (Bot.HasInHand(new List<int> if (Bot.HasInHand(new List<int>
{ {
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影 (int)CardId.DewdarkOfTheIceBarrier
}) || Bot.HasInMonstersZone(new List<int> }) || Bot.HasInMonstersZone(new List<int>
{ {
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影 (int)CardId.DewdarkOfTheIceBarrier
})) }))
{ {
AI.SelectCard((int)CardId.冰结界的传道师); AI.SelectCard((int)CardId.PriorOfTheIceBarrier);
} }
else else
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影 (int)CardId.DewdarkOfTheIceBarrier
}); });
} }
return true; return true;
} }
private bool 死者苏生效果() private bool SurfaceEffect()
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.饼蛙, (int)CardId.ToadallyAwesome,
(int)CardId.虹光之宣告者, (int)CardId.HeraldOfTheArcLight,
(int)CardId.鬼青蛙, (int)CardId.SwapFrog,
(int)CardId.冰结界的水影, (int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.魔知青蛙, (int)CardId.DupeFrog,
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.小灰篮史莱姆 (int)CardId.GraydleSlimeJr
}); });
return true; return true;
} }
private bool 水舞台效果() private bool AquariumStageEffect()
{ {
if (Card.Location == CardLocation.Grave) if (Card.Location == CardLocation.Grave)
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return 死者苏生效果(); return SurfaceEffect();
} }
return true; return true;
} }
private bool 愚蠢的埋葬效果() private bool FoolishBurialEffect()
{ {
if (Bot.HasInHand((int)CardId.小灰篮史莱姆) && !Bot.HasInGraveyard((int)CardId.小灰篮史莱姆)) if (Bot.HasInHand((int)CardId.GraydleSlimeJr) && !Bot.HasInGraveyard((int)CardId.GraydleSlimeJr))
AI.SelectCard((int)CardId.小灰篮史莱姆); AI.SelectCard((int)CardId.GraydleSlimeJr);
else if (Bot.HasInGraveyard((int)CardId.粹蛙) && !Bot.HasInGraveyard((int)CardId.魔知青蛙)) else if (Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog))
AI.SelectCard((int)CardId.魔知青蛙); AI.SelectCard((int)CardId.DupeFrog);
else if (Bot.HasInGraveyard((int)CardId.魔知青蛙) && !Bot.HasInGraveyard((int)CardId.粹蛙)) else if (Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.Ronintoadin))
AI.SelectCard((int)CardId.粹蛙); AI.SelectCard((int)CardId.Ronintoadin);
else else
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.小灰篮史莱姆, (int)CardId.GraydleSlimeJr,
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.魔知青蛙, (int)CardId.DupeFrog,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影, (int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.冰结界的传道师, (int)CardId.PriorOfTheIceBarrier,
(int)CardId.鬼青蛙 (int)CardId.SwapFrog
}); });
return true; return true;
} }
private bool 海上打捞效果() private bool SalvageEffect()
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.鬼青蛙, (int)CardId.SwapFrog,
(int)CardId.冰结界的传道师, (int)CardId.PriorOfTheIceBarrier,
(int)CardId.小灰篮史莱姆 (int)CardId.GraydleSlimeJr
}); });
return true; return true;
} }
private bool 鬼青蛙特殊召唤() private bool SwapFrogSpsummon()
{ {
if (Bot.GetCountCardInZone(Bot.Hand, (int)CardId.小灰篮史莱姆)>=2 && !Bot.HasInGraveyard((int)CardId.小灰篮史莱姆)) if (Bot.GetCountCardInZone(Bot.Hand, (int)CardId.GraydleSlimeJr)>=2 && !Bot.HasInGraveyard((int)CardId.GraydleSlimeJr))
AI.SelectCard((int)CardId.小灰篮史莱姆); AI.SelectCard((int)CardId.GraydleSlimeJr);
else if (Bot.HasInGraveyard((int)CardId.粹蛙) && !Bot.HasInGraveyard((int)CardId.魔知青蛙)) else if (Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog))
AI.SelectCard((int)CardId.魔知青蛙); AI.SelectCard((int)CardId.DupeFrog);
else if (Bot.HasInGraveyard((int)CardId.魔知青蛙) && !Bot.HasInGraveyard((int)CardId.粹蛙)) else if (Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.Ronintoadin))
AI.SelectCard((int)CardId.粹蛙); AI.SelectCard((int)CardId.Ronintoadin);
else else
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.魔知青蛙, (int)CardId.DupeFrog,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影, (int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.冰结界的传道师, (int)CardId.PriorOfTheIceBarrier,
(int)CardId.小灰篮史莱姆, (int)CardId.GraydleSlimeJr,
(int)CardId.鬼青蛙 (int)CardId.SwapFrog
}); });
return true; return true;
} }
private bool 鬼青蛙效果() private bool SwapFrogEffect()
{ {
if (ActivateDescription == -1) if (ActivateDescription == -1)
{ {
return 愚蠢的埋葬效果(); return FoolishBurialEffect();
} }
else else
{ {
if (Bot.HasInHand((int)CardId.魔知青蛙)) if (Bot.HasInHand((int)CardId.DupeFrog))
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.冰结界的传道师, (int)CardId.PriorOfTheIceBarrier,
(int)CardId.小灰篮史莱姆, (int)CardId.GraydleSlimeJr,
(int)CardId.鬼青蛙 (int)CardId.SwapFrog
}); });
return true; return true;
} }
...@@ -255,35 +258,35 @@ namespace WindBot.Game.AI.Decks ...@@ -255,35 +258,35 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 小灰篮史莱姆优先通常召唤() private bool GraydleSlimeJrSummon()
{ {
return Bot.HasInGraveyard((int)CardId.小灰篮史莱姆); return Bot.HasInGraveyard((int)CardId.GraydleSlimeJr);
} }
private bool 小灰篮史莱姆效果() private bool GraydleSlimeJrEffect()
{ {
AI.SelectCard((int)CardId.小灰篮史莱姆); AI.SelectCard((int)CardId.GraydleSlimeJr);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.鬼青蛙, (int)CardId.SwapFrog,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影, (int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.魔知青蛙, (int)CardId.DupeFrog,
(int)CardId.冰结界的传道师, (int)CardId.PriorOfTheIceBarrier,
(int)CardId.小灰篮史莱姆 (int)CardId.GraydleSlimeJr
}); });
return true; return true;
} }
private bool 粹蛙效果() private bool RonintoadinEffect()
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
} }
private bool 低攻怪兽通常召唤() private bool NormalSummon()
{ {
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
...@@ -296,59 +299,60 @@ namespace WindBot.Game.AI.Decks ...@@ -296,59 +299,60 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 冰结界下级通常召唤() private bool IceBarrierSummon()
{ {
return Bot.GetCountCardInZone(Bot.Hand, (int)CardId.冰结界的传道师) > 0; return Bot.GetCountCardInZone(Bot.Hand, (int)CardId.PriorOfTheIceBarrier) > 0;
} }
private bool 冰结界的传道师通常召唤() private bool PriorOfTheIceBarrierSummon()
{ {
return Bot.GetCountCardInZone(Bot.Hand, (int)CardId.冰结界的传道师) >= 2; return Bot.GetCountCardInZone(Bot.Hand, (int)CardId.PriorOfTheIceBarrier) >= 2;
} }
private bool 饼蛙效果() private bool ToadallyAwesomeEffect()
{ {
if (CurrentChain.Count > 0) if (CurrentChain.Count > 0)
{ {
// negate effect, select a cost for it
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
List<int> 合适的COST = new List<int> { List<int> suitableCost = new List<int> {
(int)CardId.鬼青蛙, (int)CardId.SwapFrog,
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.小灰篮史莱姆, (int)CardId.GraydleSlimeJr,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影 (int)CardId.DewdarkOfTheIceBarrier
}; };
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (合适的COST.Contains(monster.Id)) if (suitableCost.Contains(monster.Id))
{ {
AI.SelectCard(monster); AI.SelectCard(monster);
return true; return true;
} }
} }
bool 有水舞台 = Bot.HasInSpellZone((int)CardId.水舞台, true); bool haveAquariumStage = Bot.HasInSpellZone((int)CardId.AquariumStage, true);
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.魔知青蛙 && !有水舞台) if (monster.Id == (int)CardId.DupeFrog && !haveAquariumStage)
{ {
AI.SelectCard(monster); AI.SelectCard(monster);
return true; return true;
} }
} }
monsters = (List<ClientCard>)Bot.Hand; monsters = (List<ClientCard>)Bot.Hand;
bool 手里有2个史莱姆 = Bot.GetCountCardInZone(Bot.Hand, (int)CardId.小灰篮史莱姆) >= 2; bool HaveTwoGraydleSlimeJrInHand = Bot.GetCountCardInZone(Bot.Hand, (int)CardId.GraydleSlimeJr) >= 2;
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.小灰篮史莱姆 && 手里有2个史莱姆) if (monster.Id == (int)CardId.GraydleSlimeJr && HaveTwoGraydleSlimeJrInHand)
{ {
AI.SelectCard(monster); AI.SelectCard(monster);
return true; return true;
} }
} }
bool 需要丢魔知 = Bot.HasInGraveyard((int)CardId.粹蛙) && !Bot.HasInGraveyard((int)CardId.魔知青蛙) && !Bot.HasInGraveyard((int)CardId.鬼青蛙); bool NeedDupeFrogInGrave = Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.SwapFrog);
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.魔知青蛙 && 需要丢魔知) if (monster.Id == (int)CardId.DupeFrog && NeedDupeFrogInGrave)
{ {
AI.SelectCard(monster); AI.SelectCard(monster);
return true; return true;
...@@ -356,7 +360,7 @@ namespace WindBot.Game.AI.Decks ...@@ -356,7 +360,7 @@ namespace WindBot.Game.AI.Decks
} }
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.粹蛙 || monster.Id == (int)CardId.魔知青蛙) if (monster.Id == (int)CardId.Ronintoadin || monster.Id == (int)CardId.DupeFrog)
{ {
AI.SelectCard(monster); AI.SelectCard(monster);
return true; return true;
...@@ -371,46 +375,46 @@ namespace WindBot.Game.AI.Decks ...@@ -371,46 +375,46 @@ namespace WindBot.Game.AI.Decks
} }
else if (Card.Location == CardLocation.Grave) else if (Card.Location == CardLocation.Grave)
{ {
if (!Bot.HasInExtra((int)CardId.饼蛙)) if (!Bot.HasInExtra((int)CardId.ToadallyAwesome))
{ {
AI.SelectCard((int)CardId.饼蛙); AI.SelectCard((int)CardId.ToadallyAwesome);
} }
else else
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.鬼青蛙, (int)CardId.SwapFrog,
(int)CardId.冰结界的传道师, (int)CardId.PriorOfTheIceBarrier,
(int)CardId.小灰篮史莱姆 (int)CardId.GraydleSlimeJr
}); });
} }
return true; return true;
} }
else if (Duel.Phase == DuelPhase.Standby) else if (Duel.Phase == DuelPhase.Standby)
{ {
选择取除超量素材(Card.Overlays); SelectXYZDetach(Card.Overlays);
if (Duel.Player == 0) if (Duel.Player == 0)
{ {
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.鬼青蛙, (int)CardId.SwapFrog,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影, (int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.魔知青蛙, (int)CardId.DupeFrog,
(int)CardId.小灰篮史莱姆 (int)CardId.GraydleSlimeJr
}); });
} }
else else
{ {
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.魔知青蛙, (int)CardId.DupeFrog,
(int)CardId.鬼青蛙, (int)CardId.SwapFrog,
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.小灰篮史莱姆, (int)CardId.GraydleSlimeJr,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影 (int)CardId.DewdarkOfTheIceBarrier
}); });
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
} }
...@@ -419,16 +423,16 @@ namespace WindBot.Game.AI.Decks ...@@ -419,16 +423,16 @@ namespace WindBot.Game.AI.Decks
return true; return true;
} }
private bool 猫鲨特殊召唤() private bool CatSharkSummon()
{ {
bool should = Bot.HasInMonstersZone((int)CardId.饼蛙) bool should = Bot.HasInMonstersZone((int)CardId.ToadallyAwesome)
&& ((AI.Utils.IsEnemyBetter(true, false) && ((AI.Utils.IsEnemyBetter(true, false)
&& !Bot.HasInMonstersZone(new List<int> && !Bot.HasInMonstersZone(new List<int>
{ {
(int)CardId.猫鲨, (int)CardId.CatShark,
(int)CardId.神骑矢车菊圣人马 (int)CardId.SkyCavalryCentaurea
}, true, true)) }, true, true))
|| !Bot.HasInExtra((int)CardId.饼蛙)); || !Bot.HasInExtra((int)CardId.ToadallyAwesome));
if (should) if (should)
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
...@@ -437,32 +441,32 @@ namespace WindBot.Game.AI.Decks ...@@ -437,32 +441,32 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 猫鲨效果() private bool CatSharkEffect()
{ {
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.饼蛙 && monster.Attack <= 2200) if (monster.Id == (int)CardId.ToadallyAwesome && monster.Attack <= 2200)
{ {
选择取除超量素材(Card.Overlays); SelectXYZDetach(Card.Overlays);
AI.SelectNextCard(monster); AI.SelectNextCard(monster);
return true; return true;
} }
} }
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.神骑矢车菊圣人马 && monster.Attack <= 2000) if (monster.Id == (int)CardId.SkyCavalryCentaurea && monster.Attack <= 2000)
{ {
选择取除超量素材(Card.Overlays); SelectXYZDetach(Card.Overlays);
AI.SelectNextCard(monster); AI.SelectNextCard(monster);
return true; return true;
} }
} }
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.Id == (int)CardId.大薰风凤凰 && monster.Attack <= 1500) if (monster.Id == (int)CardId.DaigustoPhoenix && monster.Attack <= 1500)
{ {
选择取除超量素材(Card.Overlays); SelectXYZDetach(Card.Overlays);
AI.SelectNextCard(monster); AI.SelectNextCard(monster);
return true; return true;
} }
...@@ -470,7 +474,7 @@ namespace WindBot.Game.AI.Decks ...@@ -470,7 +474,7 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 神骑矢车菊圣人马特殊召唤() private bool SkyCavalryCentaureaSummon()
{ {
int num = 0; int num = 0;
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
...@@ -486,11 +490,11 @@ namespace WindBot.Game.AI.Decks ...@@ -486,11 +490,11 @@ namespace WindBot.Game.AI.Decks
&& num < 4 && num < 4
&& !Bot.HasInMonstersZone(new List<int> && !Bot.HasInMonstersZone(new List<int>
{ {
(int)CardId.神骑矢车菊圣人马 (int)CardId.SkyCavalryCentaurea
}, true, true); }, true, true);
} }
private bool 大薰风凤凰特殊召唤() private bool DaigustoPhoenixSummon()
{ {
if (Duel.Turn != 1) if (Duel.Turn != 1)
{ {
...@@ -515,13 +519,13 @@ namespace WindBot.Game.AI.Decks ...@@ -515,13 +519,13 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 虹光之宣告者特殊召唤() private bool HeraldOfTheArcLightSummon()
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
} }
private bool 改变攻守表示() private bool Repos()
{ {
bool enemyBetter = AI.Utils.IsEnemyBetter(true, true); bool enemyBetter = AI.Utils.IsEnemyBetter(true, true);
...@@ -532,7 +536,7 @@ namespace WindBot.Game.AI.Decks ...@@ -532,7 +536,7 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 其他魔法发动() private bool OtherSpellEffect()
{ {
foreach (CardExecutor exec in Executors) foreach (CardExecutor exec in Executors)
{ {
...@@ -542,7 +546,7 @@ namespace WindBot.Game.AI.Decks ...@@ -542,7 +546,7 @@ namespace WindBot.Game.AI.Decks
return Card.IsSpell(); return Card.IsSpell();
} }
private bool 其他陷阱发动() private bool OtherTrapEffect()
{ {
foreach (CardExecutor exec in Executors) foreach (CardExecutor exec in Executors)
{ {
...@@ -552,7 +556,7 @@ namespace WindBot.Game.AI.Decks ...@@ -552,7 +556,7 @@ namespace WindBot.Game.AI.Decks
return Card.IsTrap() && DefaultTrap(); return Card.IsTrap() && DefaultTrap();
} }
private bool 其他怪兽发动() private bool OtherMonsterEffect()
{ {
foreach (CardExecutor exec in Executors) foreach (CardExecutor exec in Executors)
{ {
...@@ -562,24 +566,24 @@ namespace WindBot.Game.AI.Decks ...@@ -562,24 +566,24 @@ namespace WindBot.Game.AI.Decks
return Card.IsMonster(); return Card.IsMonster();
} }
private void 选择取除超量素材(List<int> Overlays) private void SelectXYZDetach(List<int> Overlays)
{ {
if (Overlays.Contains((int)CardId.小灰篮史莱姆) && Bot.HasInHand((int)CardId.小灰篮史莱姆) && !Bot.HasInGraveyard((int)CardId.小灰篮史莱姆)) if (Overlays.Contains((int)CardId.GraydleSlimeJr) && Bot.HasInHand((int)CardId.GraydleSlimeJr) && !Bot.HasInGraveyard((int)CardId.GraydleSlimeJr))
AI.SelectCard((int)CardId.小灰篮史莱姆); AI.SelectCard((int)CardId.GraydleSlimeJr);
else if (Overlays.Contains((int)CardId.魔知青蛙) && Bot.HasInGraveyard((int)CardId.粹蛙) && !Bot.HasInGraveyard((int)CardId.魔知青蛙)) else if (Overlays.Contains((int)CardId.DupeFrog) && Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog))
AI.SelectCard((int)CardId.魔知青蛙); AI.SelectCard((int)CardId.DupeFrog);
else if (Overlays.Contains((int)CardId.粹蛙) && Bot.HasInGraveyard((int)CardId.魔知青蛙) && !Bot.HasInGraveyard((int)CardId.粹蛙)) else if (Overlays.Contains((int)CardId.Ronintoadin) && Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.Ronintoadin))
AI.SelectCard((int)CardId.粹蛙); AI.SelectCard((int)CardId.Ronintoadin);
else else
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.小灰篮史莱姆, (int)CardId.GraydleSlimeJr,
(int)CardId.粹蛙, (int)CardId.Ronintoadin,
(int)CardId.魔知青蛙, (int)CardId.DupeFrog,
(int)CardId.冰结界的术者, (int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.冰结界的水影, (int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.冰结界的传道师, (int)CardId.PriorOfTheIceBarrier,
(int)CardId.鬼青蛙 (int)CardId.SwapFrog
}); });
} }
} }
......
...@@ -11,166 +11,159 @@ namespace WindBot.Game.AI.Decks ...@@ -11,166 +11,159 @@ namespace WindBot.Game.AI.Decks
{ {
public enum CardId public enum CardId
{ {
妖仙兽镰壹太刀 = 65247798, YosenjuKama1 = 65247798,
妖仙兽镰贰太刀 = 92246806, YosenjuKama2 = 92246806,
妖仙兽镰叁太刀 = 28630501, YosenjuKama3 = 28630501,
妖仙兽辻斩风 = 25244515, YosenjuTsujik = 25244515,
鹰身女妖的羽毛扫 = 18144507,
黑洞 = 53129443, HarpiesFeatherDuster = 18144507,
削命的宝札 = 59750328, DarkHole = 53129443,
强欲而谦虚之壶 = 98645731, CardOfDemise = 59750328,
宇宙旋风 = 8267140, PotOfDuality = 98645731,
沙尘防护罩尘埃之力 = 40838625, CosmicCyclone = 8267140,
波纹防护罩波浪之力 = 47475363, QuakingMirrorForce = 40838625,
星光大道 = 58120309, DrowningMirrorForce = 47475363,
虚无空间 = 5851097, StarlightRoad = 58120309,
大宇宙 = 30241314, VanitysEmptiness = 5851097,
神之通告 = 40605147, MacroCosmos = 30241314,
神之警告 = 84749824, SolemnStrike = 40605147,
神之宣告 = 41420027, SolemnWarning = 84749824,
魔力抽取 = 59344077, SolemnJudgment = 41420027,
星尘龙 = 44508094, MagicDrain = 59344077,
闪光No39希望皇霍普电光皇 = 56832966,
闪光No39希望皇霍普一 = 86532744, StardustDragon = 44508094,
暗叛逆超量龙 = 16195942, NumberS39UtopiatheLightning = 56832966,
No39希望皇霍普 = 84013237, NumberS39UtopiaOne = 86532744,
No103神葬零娘暮零 = 94380860, DarkRebellionXyzDragon = 16195942,
魁炎星王宋虎 = 96381979, Number39Utopia = 84013237,
No106巨岩掌巨手 = 63746411, Number103Ragnazero = 94380860,
鸟铳士卡斯泰尔 = 82633039, BrotherhoodOfTheFireFistTigerKing = 96381979,
恐牙狼钻石恐狼 = 95169481, Number106GiantHand = 63746411,
电光千鸟 = 22653490, CastelTheSkyblasterMusketeer = 82633039,
励辉士入魔蝇王 = 46772449, DiamondDireWolf = 95169481,
深渊的潜伏者 = 21044178, LightningChidori = 22653490,
我我我枪手 = 12014404 EvilswarmExcitonKnight = 46772449,
AbyssDweller = 21044178,
GagagaCowboy = 12014404
} }
bool 已发动削命 = false; bool CardOfDemiseUsed = false;
public YosenjuExecutor(GameAI ai, Duel duel) public YosenjuExecutor(GameAI ai, Duel duel)
: base(ai, duel) : base(ai, duel)
{ {
// 结束阶段优先丢卡 // do the end phase effect of Card Of Demise before Yosenjus return to hand
AddExecutor(ExecutorType.Activate, (int)CardId.削命的宝札, 削命的宝札结束阶段); AddExecutor(ExecutorType.Activate, (int)CardId.CardOfDemise, CardOfDemiseEPEffect);
// 能烧就烧 // burn if enemy's LP is below 800
AddExecutor(ExecutorType.SpSummon, (int)CardId.我我我枪手, 我我我枪手特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.GagagaCowboy, GagagaCowboySummon);
AddExecutor(ExecutorType.Activate, (int)CardId.我我我枪手); AddExecutor(ExecutorType.Activate, (int)CardId.GagagaCowboy);
// 清场 AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫, DefaultHarpiesFeatherDusterFirst); AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.宇宙旋风, DefaultCosmicCyclone); AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫); AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDuality, PotOfDualityEffect);
// 开壶
AddExecutor(ExecutorType.Activate, (int)CardId.强欲而谦虚之壶, 强欲而谦虚之壶); AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama1, HaveAnotherYosenjuWithSameNameInHand);
AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama2, HaveAnotherYosenjuWithSameNameInHand);
// 通招 AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama3, HaveAnotherYosenjuWithSameNameInHand);
AddExecutor(ExecutorType.Summon, (int)CardId.妖仙兽镰壹太刀, 优先出重复的妖仙兽); AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama1);
AddExecutor(ExecutorType.Summon, (int)CardId.妖仙兽镰贰太刀, 优先出重复的妖仙兽); AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama2);
AddExecutor(ExecutorType.Summon, (int)CardId.妖仙兽镰叁太刀, 优先出重复的妖仙兽); AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama3);
AddExecutor(ExecutorType.Summon, (int)CardId.妖仙兽镰壹太刀); AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuTsujik);
AddExecutor(ExecutorType.Summon, (int)CardId.妖仙兽镰贰太刀);
AddExecutor(ExecutorType.Summon, (int)CardId.妖仙兽镰叁太刀); AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuKama1, YosenjuEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.妖仙兽辻斩风); AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuKama2, YosenjuEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuKama3, YosenjuEffect);
// 妖仙兽效果无脑发动 AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuTsujik, YosenjuEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.妖仙兽镰壹太刀, 妖仙兽效果);
AddExecutor(ExecutorType.Activate, (int)CardId.妖仙兽镰贰太刀, 妖仙兽效果); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnJudgment, TrapSetUnique);
AddExecutor(ExecutorType.Activate, (int)CardId.妖仙兽镰叁太刀, 妖仙兽效果); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetUnique);
AddExecutor(ExecutorType.Activate, (int)CardId.妖仙兽辻斩风, 妖仙兽效果); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnWarning, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MacroCosmos, TrapSetUnique);
// 盖坑 AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之宣告, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.MagicDrain, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之通告, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之警告, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.大宇宙, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.虚无空间, 优先盖不重复的坑);
AddExecutor(ExecutorType.SpellSet, (int)CardId.魔力抽取, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnJudgment, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.波纹防护罩波浪之力, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.沙尘防护罩尘埃之力, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnWarning, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.星光大道, 优先盖不重复的坑); AddExecutor(ExecutorType.SpellSet, (int)CardId.MacroCosmos, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之宣告, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.MagicDrain, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之通告, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之警告, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.大宇宙, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.虚无空间, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.HarpiesFeatherDuster, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.魔力抽取, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.波纹防护罩波浪之力, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.沙尘防护罩尘埃之力, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.CosmicCyclone, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.星光大道, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.鹰身女妖的羽毛扫, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.CardOfDemise);
AddExecutor(ExecutorType.SpellSet, (int)CardId.黑洞, 魔陷区有空余格子); AddExecutor(ExecutorType.Activate, (int)CardId.CardOfDemise, CardOfDemiseEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强欲而谦虚之壶, 魔陷区有空余格子);
AddExecutor(ExecutorType.SpellSet, (int)CardId.宇宙旋风, 魔陷区有空余格子); AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnJudgment, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, CardOfDemiseAcivated);
// 开完削命继续盖坑 AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnWarning, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.削命的宝札); AddExecutor(ExecutorType.SpellSet, (int)CardId.MacroCosmos, CardOfDemiseAcivated);
AddExecutor(ExecutorType.Activate, (int)CardId.削命的宝札, 削命的宝札); AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MagicDrain, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之宣告, 已发动过削命); AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之通告, 已发动过削命); AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.神之警告, 已发动过削命); AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.大宇宙, 已发动过削命); AddExecutor(ExecutorType.SpellSet, (int)CardId.HarpiesFeatherDuster, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.虚无空间, 已发动过削命); AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.魔力抽取, 已发动过削命); AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.波纹防护罩波浪之力, 已发动过削命); AddExecutor(ExecutorType.SpellSet, (int)CardId.CosmicCyclone, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.沙尘防护罩尘埃之力, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.星光大道, 已发动过削命); AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.SpellSet, (int)CardId.鹰身女妖的羽毛扫, 已发动过削命); AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, EvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.黑洞, 已发动过削命);
AddExecutor(ExecutorType.SpellSet, (int)CardId.强欲而谦虚之壶, 已发动过削命); AddExecutor(ExecutorType.SpSummon, (int)CardId.DarkRebellionXyzDragon, DarkRebellionXyzDragonSummon);
AddExecutor(ExecutorType.SpellSet, (int)CardId.宇宙旋风, 已发动过削命); AddExecutor(ExecutorType.Activate, (int)CardId.DarkRebellionXyzDragon, DarkRebellionXyzDragonEffect);
// 常用额外 AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, NumberS39UtopiatheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiaOne);
AddExecutor(ExecutorType.Activate, (int)CardId.励辉士入魔蝇王, 励辉士入魔蝇王效果); AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, (int)CardId.暗叛逆超量龙, 暗叛逆超量龙特殊召唤);
AddExecutor(ExecutorType.Activate, (int)CardId.暗叛逆超量龙, 暗叛逆超量龙效果); AddExecutor(ExecutorType.Activate, (int)CardId.StardustDragon, StardustDragonEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.No39希望皇霍普, 电光皇特殊召唤); AddExecutor(ExecutorType.Activate, (int)CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.SpSummon, (int)CardId.闪光No39希望皇霍普一); AddExecutor(ExecutorType.Activate, (int)CardId.MagicDrain);
AddExecutor(ExecutorType.SpSummon, (int)CardId.闪光No39希望皇霍普电光皇); AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.闪光No39希望皇霍普电光皇); AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.星尘龙, 星尘龙效果); AddExecutor(ExecutorType.Activate, (int)CardId.MacroCosmos, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.VanitysEmptiness, DefaultUniqueTrap);
// 坑人 AddExecutor(ExecutorType.Activate, (int)CardId.DrowningMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.星光大道, DefaultTrap); AddExecutor(ExecutorType.Activate, (int)CardId.QuakingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.魔力抽取);
AddExecutor(ExecutorType.Activate, (int)CardId.神之警告, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.神之通告, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.神之宣告, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.大宇宙, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.虚无空间, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.波纹防护罩波浪之力, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.沙尘防护罩尘埃之力, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
} }
public override bool OnSelectHand() public override bool OnSelectHand()
{ {
// 抢先攻 // go first
return true; return true;
} }
public override void OnNewTurn() public override void OnNewTurn()
{ {
// 回合开始时重置状况 CardOfDemiseUsed = false;
已发动削命 = false;
} }
public override bool OnSelectYesNo(int desc) public override bool OnSelectYesNo(int desc)
{ {
// 镰贰太刀能不直击就不直击 // Yosenju Kama 2 shouldn't attack directly at most times
if (Card == null) if (Card == null)
return true; return true;
Logger.DebugWriteLine(Card.Name); // Logger.DebugWriteLine(Card.Name);
if (Card.Id == (int)CardId.妖仙兽镰贰太刀) if (Card.Id == (int)CardId.YosenjuKama2)
return Card.ShouldDirectAttack; return Card.ShouldDirectAttack;
else else
return true; return true;
...@@ -183,69 +176,69 @@ namespace WindBot.Game.AI.Decks ...@@ -183,69 +176,69 @@ 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.Wind && Bot.HasInHand((int)CardId.妖仙兽辻斩风)) if (attacker.Attribute == (int)CardAttribute.Wind && Bot.HasInHand((int)CardId.YosenjuTsujik))
attacker.RealPower = attacker.RealPower + 1000; attacker.RealPower = attacker.RealPower + 1000;
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();
} }
private bool 强欲而谦虚之壶() private bool PotOfDualityEffect()
{ {
if (已发动削命) if (CardOfDemiseUsed)
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.星光大道, (int)CardId.StarlightRoad,
(int)CardId.魔力抽取, (int)CardId.MagicDrain,
(int)CardId.神之宣告, (int)CardId.SolemnJudgment,
(int)CardId.虚无空间, (int)CardId.VanitysEmptiness,
(int)CardId.鹰身女妖的羽毛扫, (int)CardId.HarpiesFeatherDuster,
(int)CardId.波纹防护罩波浪之力, (int)CardId.DrowningMirrorForce,
(int)CardId.沙尘防护罩尘埃之力, (int)CardId.QuakingMirrorForce,
(int)CardId.神之通告, (int)CardId.SolemnStrike,
(int)CardId.神之警告, (int)CardId.SolemnWarning,
(int)CardId.大宇宙, (int)CardId.MacroCosmos,
(int)CardId.削命的宝札 (int)CardId.CardOfDemise
}); });
} }
else else
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.妖仙兽镰叁太刀, (int)CardId.YosenjuKama3,
(int)CardId.妖仙兽镰壹太刀, (int)CardId.YosenjuKama1,
(int)CardId.妖仙兽镰贰太刀, (int)CardId.YosenjuKama2,
(int)CardId.星光大道, (int)CardId.StarlightRoad,
(int)CardId.魔力抽取, (int)CardId.MagicDrain,
(int)CardId.虚无空间, (int)CardId.VanitysEmptiness,
(int)CardId.鹰身女妖的羽毛扫, (int)CardId.HarpiesFeatherDuster,
(int)CardId.波纹防护罩波浪之力, (int)CardId.DrowningMirrorForce,
(int)CardId.沙尘防护罩尘埃之力, (int)CardId.QuakingMirrorForce,
(int)CardId.神之通告, (int)CardId.SolemnStrike,
(int)CardId.神之宣告, (int)CardId.SolemnJudgment,
(int)CardId.神之警告, (int)CardId.SolemnWarning,
(int)CardId.大宇宙, (int)CardId.MacroCosmos,
(int)CardId.削命的宝札, (int)CardId.CardOfDemise,
}); });
} }
return true; return true;
} }
private bool 削命的宝札() private bool CardOfDemiseEffect()
{ {
if (AI.Utils.IsTurn1OrMain2()) if (AI.Utils.IsTurn1OrMain2())
{ {
已发动削命 = true; CardOfDemiseUsed = true;
return true; return true;
} }
return false; return false;
} }
private bool 优先出重复的妖仙兽() private bool HaveAnotherYosenjuWithSameNameInHand()
{ {
foreach (ClientCard card in Bot.Hand) foreach (ClientCard card in Bot.Hand)
{ {
...@@ -255,48 +248,47 @@ namespace WindBot.Game.AI.Decks ...@@ -255,48 +248,47 @@ namespace WindBot.Game.AI.Decks
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 YosenjuEffect()
{ {
// 妖仙兽结束阶段不优先回手 // Don't activate the return to hand effect first
if (Duel.Phase == DuelPhase.End) if (Duel.Phase == DuelPhase.End)
return false; return false;
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.妖仙兽镰壹太刀, (int)CardId.YosenjuKama1,
(int)CardId.妖仙兽镰贰太刀, (int)CardId.YosenjuKama2,
(int)CardId.妖仙兽镰叁太刀 (int)CardId.YosenjuKama3
}); });
return true; return true;
} }
private bool 削命的宝札结束阶段() private bool CardOfDemiseEPEffect()
{ {
// 削命宝札结束阶段在妖仙回手前丢手卡 // do the end phase effect of Card Of Demise before Yosenjus return to hand
Logger.DebugWriteLine("削命的宝札" + (Duel.Phase == DuelPhase.End));
return Duel.Phase == DuelPhase.End; return Duel.Phase == DuelPhase.End;
} }
private bool 我我我枪手特殊召唤() private bool GagagaCowboySummon()
{ {
if (Duel.LifePoints[1] <= 800 || (Bot.GetMonsterCount()>=4 && Duel.LifePoints[1] <= 1600)) if (Duel.LifePoints[1] <= 800 || (Bot.GetMonsterCount()>=4 && Duel.LifePoints[1] <= 1600))
{ {
...@@ -306,28 +298,28 @@ namespace WindBot.Game.AI.Decks ...@@ -306,28 +298,28 @@ namespace WindBot.Game.AI.Decks
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 DarkRebellionXyzDragonSummon()
{ {
int selfBestAttack = AI.Utils.GetBestAttack(Bot, true); int selfBestAttack = AI.Utils.GetBestAttack(Bot, true);
int oppoBestAttack = AI.Utils.GetBestAttack(Enemy, true); int oppoBestAttack = AI.Utils.GetBestAttack(Enemy, true);
return selfBestAttack <= oppoBestAttack; return selfBestAttack <= oppoBestAttack;
} }
private bool 暗叛逆超量龙效果() private bool DarkRebellionXyzDragonEffect()
{ {
int oppoBestAttack = AI.Utils.GetBestAttack(Enemy, true); int oppoBestAttack = AI.Utils.GetBestAttack(Enemy, true);
ClientCard target = AI.Utils.GetOneEnemyBetterThanValue(oppoBestAttack, true); ClientCard target = AI.Utils.GetOneEnemyBetterThanValue(oppoBestAttack, true);
...@@ -338,14 +330,14 @@ namespace WindBot.Game.AI.Decks ...@@ -338,14 +330,14 @@ namespace WindBot.Game.AI.Decks
return true; return true;
} }
private bool 电光皇特殊召唤() private bool NumberS39UtopiatheLightningSummon()
{ {
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; return selfBestAttack <= oppoBestAttack;
} }
private bool 星尘龙效果() private bool StardustDragonEffect()
{ {
return LastChainPlayer == 1; return LastChainPlayer == 1;
} }
......
...@@ -11,122 +11,124 @@ namespace WindBot.Game.AI.Decks ...@@ -11,122 +11,124 @@ namespace WindBot.Game.AI.Decks
{ {
public enum CardId public enum CardId
{ {
坏星坏兽席兹奇埃鲁 = 63941210, JizukirutheStarDestroyingKaiju = 63941210,
怪粉坏兽加达拉 = 36956512, GadarlatheMysteryDustKaiju = 36956512,
海龟坏兽加美西耶勒 = 55063751, GamecieltheSeaTurtleKaiju = 55063751,
多次元坏兽拉迪安 = 28674152, RadiantheMultidimensionalKaiju = 28674152,
黏丝坏兽库莫古斯 = 29726552, KumongoustheStickyStringKaiju = 29726552,
光子斩击者 = 65367484, PhotonThrasher = 65367484,
十二兽马剑 = 77150143, Thoroughblade = 77150143,
十二兽蛇笞 = 31755044, Whiptail = 31755044,
召唤师阿莱斯特 = 86120751, Ratpier = 78872731,
十二兽鼠骑 = 78872731, AleisterTheInvoker = 86120751,
鹰身女妖的羽毛扫 = 18144506,
黑洞 = 53129443, HarpiesFeatherDuster = 18144506,
星球改造 = 73628505, DarkHole = 53129443,
召唤魔术 = 74063034, Terraforming = 73628505,
死者苏生 = 83764718, Invocation = 74063034,
遭受妨碍的坏兽安眠 = 99330325, MonsterReborn = 83764718,
十二兽的会局 = 46060017, InterruptedKaijuSlumber = 99330325,
炎舞天玑 = 57103969, ZoodiacBarrage = 46060017,
暴走魔法阵 = 47679935, FireFormationTenki = 57103969,
十二兽的方合 = 73881652, MagicalMeltdown = 47679935,
召唤兽梅尔卡巴 = 75286621, ZoodiacCombo = 73881652,
召唤兽墨瓦腊泥加 = 48791583,
闪光No39希望皇霍普电光皇 = 56832966, InvokedMechaba = 75286621,
No39希望皇霍普 = 84013237, InvokedMagellanica = 48791583,
大薰风骑士翠玉 = 581014, NumberS39UtopiatheLightning = 56832966,
十二兽虎炮 = 11510448, Number39Utopia = 84013237,
十二兽狗环 = 41375811, DaigustoEmeral = 581014,
十二兽龙枪 = 48905153, Tigermortar = 11510448,
十二兽牛犄 = 85115440 Chakanine = 41375811,
Drident = 48905153,
Broadbull = 85115440
} }
bool 已特殊召唤虎炮 = false; bool TigermortarSpsummoned = false;
bool 已特殊召唤狗环 = false; bool ChakanineSpsummoned = false;
bool 已特殊召唤牛犄 = false; bool BroadbullSpsummoned = false;
int 蛇笞发动次数 = 0; int WhiptailEffectCount = 0;
public ZoodiacExecutor(GameAI ai, Duel duel) public ZoodiacExecutor(GameAI ai, Duel duel)
: base(ai, duel) : base(ai, duel)
{ {
// Quick spells // Quick spells
AddExecutor(ExecutorType.Activate, (int)CardId.鹰身女妖的羽毛扫); AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.遭受妨碍的坏兽安眠, DefaultInterruptedKaijuSlumber); AddExecutor(ExecutorType.Activate, (int)CardId.InterruptedKaijuSlumber, DefaultInterruptedKaijuSlumber);
AddExecutor(ExecutorType.Activate, (int)CardId.黑洞, DefaultDarkHole); AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.SpSummon, (int)CardId.海龟坏兽加美西耶勒, DefaultKaijuSpsummon); AddExecutor(ExecutorType.SpSummon, (int)CardId.GamecieltheSeaTurtleKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.黏丝坏兽库莫古斯, DefaultKaijuSpsummon); AddExecutor(ExecutorType.SpSummon, (int)CardId.KumongoustheStickyStringKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.怪粉坏兽加达拉, DefaultKaijuSpsummon); AddExecutor(ExecutorType.SpSummon, (int)CardId.GadarlatheMysteryDustKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.多次元坏兽拉迪安, DefaultKaijuSpsummon); AddExecutor(ExecutorType.SpSummon, (int)CardId.RadiantheMultidimensionalKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.坏星坏兽席兹奇埃鲁, DefaultKaijuSpsummon); AddExecutor(ExecutorType.SpSummon, (int)CardId.JizukirutheStarDestroyingKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.Activate, (int)CardId.星球改造); AddExecutor(ExecutorType.Activate, (int)CardId.Terraforming);
AddExecutor(ExecutorType.Activate, (int)CardId.暴走魔法阵); AddExecutor(ExecutorType.Activate, (int)CardId.MagicalMeltdown);
AddExecutor(ExecutorType.Activate, (int)CardId.炎舞天玑, 炎舞天玑效果); AddExecutor(ExecutorType.Activate, (int)CardId.FireFormationTenki, FireFormationTenkiEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽的会局, 十二兽的会局效果); AddExecutor(ExecutorType.Activate, (int)CardId.ZoodiacBarrage, ZoodiacBarrageEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.大薰风骑士翠玉); AddExecutor(ExecutorType.Activate, (int)CardId.DaigustoEmeral, DaigustoEmeralEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.光子斩击者, 光子斩击者特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.PhotonThrasher, PhotonThrasherSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.No39希望皇霍普, 电光皇特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, NumberS39UtopiatheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.闪光No39希望皇霍普电光皇); AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.闪光No39希望皇霍普电光皇); AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.召唤兽梅尔卡巴, DefaultTrap); AddExecutor(ExecutorType.Activate, (int)CardId.InvokedMechaba, DefaultTrap);
AddExecutor(ExecutorType.Activate, 十二兽鼠骑素材效果); AddExecutor(ExecutorType.Activate, RatpierMaterialEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽龙枪, 十二兽龙枪效果); AddExecutor(ExecutorType.Activate, (int)CardId.Drident, DridentEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽牛犄, 十二兽牛犄效果); AddExecutor(ExecutorType.Activate, (int)CardId.Broadbull, BroadbullEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽虎炮, 十二兽虎炮效果); AddExecutor(ExecutorType.Activate, (int)CardId.Tigermortar, TigermortarEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽狗环, 十二兽狗环效果); AddExecutor(ExecutorType.Activate, (int)CardId.Chakanine, ChakanineEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.十二兽狗环, 十二兽狗环特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Chakanine, ChakanineSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.十二兽虎炮, 十二兽虎炮特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Tigermortar, TigermortarSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.十二兽牛犄, 十二兽牛犄特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Broadbull, BroadbullSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.十二兽龙枪, 十二兽龙枪特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Drident, DridentSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.十二兽鼠骑); AddExecutor(ExecutorType.Summon, (int)CardId.Ratpier);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽鼠骑, 十二兽鼠骑效果); AddExecutor(ExecutorType.Activate, (int)CardId.Ratpier, Ratpier);
AddExecutor(ExecutorType.Summon, (int)CardId.十二兽马剑); AddExecutor(ExecutorType.Summon, (int)CardId.Thoroughblade);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽马剑, 十二兽鼠骑效果); AddExecutor(ExecutorType.Activate, (int)CardId.Thoroughblade, Ratpier);
AddExecutor(ExecutorType.Summon, (int)CardId.召唤师阿莱斯特); AddExecutor(ExecutorType.Summon, (int)CardId.AleisterTheInvoker);
AddExecutor(ExecutorType.Activate, (int)CardId.召唤师阿莱斯特, 召唤师阿莱斯特效果); AddExecutor(ExecutorType.Activate, (int)CardId.AleisterTheInvoker, AleisterTheInvokerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.大薰风骑士翠玉, 大薰风骑士翠玉特殊召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.DaigustoEmeral, DaigustoEmeralSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.十二兽牛犄, 十二兽牛犄超量召唤); AddExecutor(ExecutorType.SpSummon, (int)CardId.Broadbull, BroadbullXYZSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.死者苏生, 死者苏生效果); AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, MonsterRebornEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.光子斩击者); AddExecutor(ExecutorType.SpSummon, (int)CardId.PhotonThrasher);
AddExecutor(ExecutorType.Summon, (int)CardId.十二兽蛇笞); AddExecutor(ExecutorType.Summon, (int)CardId.Whiptail);
AddExecutor(ExecutorType.Activate, (int)CardId.召唤魔术, 召唤魔术效果); AddExecutor(ExecutorType.Activate, (int)CardId.Invocation, InvocationEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽蛇笞, 十二兽蛇笞效果); AddExecutor(ExecutorType.Activate, (int)CardId.Whiptail, WhiptailEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.十二兽的方合, 十二兽的方合效果); AddExecutor(ExecutorType.Activate, (int)CardId.ZoodiacCombo, ZoodiacComboEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.十二兽的方合); AddExecutor(ExecutorType.SpellSet, (int)CardId.ZoodiacCombo);
AddExecutor(ExecutorType.Repos, MonsterRepos); AddExecutor(ExecutorType.Repos, MonsterRepos);
} }
public override bool OnSelectHand() public override bool OnSelectHand()
{ {
// 抢先攻 // go first
return true; return true;
} }
public override void OnNewTurn() public override void OnNewTurn()
{ {
// 回合开始时重置状况 // reset
已特殊召唤虎炮 = false; TigermortarSpsummoned = false;
已特殊召唤狗环 = false; ChakanineSpsummoned = false;
已特殊召唤牛犄 = false; BroadbullSpsummoned = false;
蛇笞发动次数 = 0; WhiptailEffectCount = 0;
} }
public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender) public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender)
...@@ -136,32 +138,32 @@ namespace WindBot.Game.AI.Decks ...@@ -136,32 +138,32 @@ 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.HasType(CardType.Fusion) && Bot.HasInHand((int)CardId.召唤师阿莱斯特)) //if (attacker.HasType(CardType.Fusion) && Bot.HasInHand((int)CardId.AleisterTheInvoker))
// attacker.RealPower = attacker.RealPower + 1000; // attacker.RealPower = attacker.RealPower + 1000;
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();
} }
private bool 电光皇特殊召唤() private bool NumberS39UtopiatheLightningSummon()
{ {
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; return selfBestAttack < oppoBestAttack;
} }
private bool 光子斩击者特殊召唤() private bool PhotonThrasherSummon()
{ {
return Bot.HasInHand((int)CardId.召唤师阿莱斯特) return Bot.HasInHand((int)CardId.AleisterTheInvoker)
&& !Bot.HasInHand((int)CardId.十二兽鼠骑) && !Bot.HasInHand((int)CardId.Ratpier)
&& !Bot.HasInHand((int)CardId.十二兽马剑); && !Bot.HasInHand((int)CardId.Thoroughblade);
} }
private bool 召唤师阿莱斯特效果() private bool AleisterTheInvokerEffect()
{ {
if (Card.Location == CardLocation.Hand) if (Card.Location == CardLocation.Hand)
{ {
...@@ -175,7 +177,7 @@ namespace WindBot.Game.AI.Decks ...@@ -175,7 +177,7 @@ namespace WindBot.Game.AI.Decks
return true; return true;
} }
private bool 召唤魔术效果() private bool InvocationEffect()
{ {
if (Card.Location == CardLocation.Grave) if (Card.Location == CardLocation.Grave)
return true; return true;
...@@ -200,8 +202,8 @@ namespace WindBot.Game.AI.Decks ...@@ -200,8 +202,8 @@ namespace WindBot.Game.AI.Decks
} }
if (mat != null) if (mat != null)
{ {
AI.SelectCard((int)CardId.召唤兽梅尔卡巴); AI.SelectCard((int)CardId.InvokedMechaba);
选择墓地里的召唤师(); SelectAleisterInGrave();
AI.SelectThirdCard(mat); AI.SelectThirdCard(mat);
AI.SelectPosition(CardPosition.FaceUpAttack); AI.SelectPosition(CardPosition.FaceUpAttack);
return true; return true;
...@@ -224,8 +226,8 @@ namespace WindBot.Game.AI.Decks ...@@ -224,8 +226,8 @@ namespace WindBot.Game.AI.Decks
} }
if (mat != null) if (mat != null)
{ {
AI.SelectCard((int)CardId.召唤兽墨瓦腊泥加); AI.SelectCard((int)CardId.InvokedMagellanica);
选择墓地里的召唤师(); SelectAleisterInGrave();
AI.SelectThirdCard(mat); AI.SelectThirdCard(mat);
AI.SelectPosition(CardPosition.FaceUpAttack); AI.SelectPosition(CardPosition.FaceUpAttack);
return true; return true;
...@@ -233,13 +235,13 @@ namespace WindBot.Game.AI.Decks ...@@ -233,13 +235,13 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private void 选择墓地里的召唤师() private void SelectAleisterInGrave()
{ {
IList<ClientCard> materials0 = Bot.Graveyard; IList<ClientCard> materials0 = Bot.Graveyard;
IList<ClientCard> materials1 = Enemy.Graveyard; IList<ClientCard> materials1 = Enemy.Graveyard;
foreach (ClientCard card in materials1) foreach (ClientCard card in materials1)
{ {
if (card.Id == (int)CardId.召唤师阿莱斯特) if (card.Id == (int)CardId.AleisterTheInvoker)
{ {
AI.SelectNextCard(card); AI.SelectNextCard(card);
return; return;
...@@ -247,198 +249,198 @@ namespace WindBot.Game.AI.Decks ...@@ -247,198 +249,198 @@ namespace WindBot.Game.AI.Decks
} }
foreach (ClientCard card in materials0) foreach (ClientCard card in materials0)
{ {
if (card.Id == (int)CardId.召唤师阿莱斯特) if (card.Id == (int)CardId.AleisterTheInvoker)
{ {
AI.SelectNextCard(card); AI.SelectNextCard(card);
return; return;
} }
} }
AI.SelectNextCard((int)CardId.召唤师阿莱斯特); AI.SelectNextCard((int)CardId.AleisterTheInvoker);
} }
private bool 十二兽狗环特殊召唤() private bool ChakanineSummon()
{ {
if (Bot.HasInMonstersZone((int)CardId.十二兽鼠骑) && !已特殊召唤狗环) if (Bot.HasInMonstersZone((int)CardId.Ratpier) && !ChakanineSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽鼠骑); AI.SelectCard((int)CardId.Ratpier);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤狗环 = true; ChakanineSpsummoned = true;
return true; return true;
} }
if (Bot.HasInMonstersZone((int)CardId.十二兽牛犄) && !已特殊召唤狗环) if (Bot.HasInMonstersZone((int)CardId.Broadbull) && !ChakanineSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽牛犄); AI.SelectCard((int)CardId.Broadbull);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤狗环 = true; ChakanineSpsummoned = true;
return true; return true;
} }
return false; return false;
} }
private bool 十二兽狗环效果() private bool ChakanineEffect()
{ {
if (Bot.HasInGraveyard((int)CardId.十二兽蛇笞) || Bot.HasInGraveyard((int)CardId.十二兽马剑)) if (Bot.HasInGraveyard((int)CardId.Whiptail) || Bot.HasInGraveyard((int)CardId.Thoroughblade))
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽牛犄, (int)CardId.Broadbull,
(int)CardId.十二兽虎炮, (int)CardId.Tigermortar,
(int)CardId.十二兽狗环, (int)CardId.Chakanine,
(int)CardId.十二兽马剑, (int)CardId.Thoroughblade,
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.十二兽蛇笞 (int)CardId.Whiptail
}); });
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.十二兽蛇笞, (int)CardId.Whiptail,
(int)CardId.十二兽马剑 (int)CardId.Thoroughblade
}); });
return true; return true;
} }
return false; return false;
} }
private bool 十二兽虎炮特殊召唤() private bool TigermortarSummon()
{ {
if (Bot.HasInMonstersZone((int)CardId.十二兽狗环) && !已特殊召唤虎炮) if (Bot.HasInMonstersZone((int)CardId.Chakanine) && !TigermortarSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽狗环); AI.SelectCard((int)CardId.Chakanine);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤虎炮 = true; TigermortarSpsummoned = true;
return true; return true;
} }
if (Bot.HasInMonstersZone((int)CardId.十二兽鼠骑) && !已特殊召唤虎炮) if (Bot.HasInMonstersZone((int)CardId.Ratpier) && !TigermortarSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽鼠骑); AI.SelectCard((int)CardId.Ratpier);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤虎炮 = true; TigermortarSpsummoned = true;
return true; return true;
} }
if (Bot.HasInMonstersZone((int)CardId.十二兽马剑) && !已特殊召唤虎炮 if (Bot.HasInMonstersZone((int)CardId.Thoroughblade) && !TigermortarSpsummoned
&& Bot.HasInGraveyard(new List<int> && Bot.HasInGraveyard(new List<int>
{ {
(int)CardId.十二兽蛇笞, (int)CardId.Whiptail,
(int)CardId.十二兽鼠骑 (int)CardId.Ratpier
})) }))
{ {
AI.SelectCard((int)CardId.十二兽马剑); AI.SelectCard((int)CardId.Thoroughblade);
AI.SelectYesNo(true); AI.SelectYesNo(true);
已特殊召唤虎炮 = true; TigermortarSpsummoned = true;
return true; return true;
} }
if (Bot.HasInMonstersZone((int)CardId.十二兽蛇笞) && !已特殊召唤虎炮 if (Bot.HasInMonstersZone((int)CardId.Whiptail) && !TigermortarSpsummoned
&& Bot.HasInGraveyard((int)CardId.十二兽鼠骑)) && Bot.HasInGraveyard((int)CardId.Ratpier))
{ {
AI.SelectCard((int)CardId.十二兽蛇笞); AI.SelectCard((int)CardId.Whiptail);
AI.SelectYesNo(true); AI.SelectYesNo(true);
已特殊召唤虎炮 = true; TigermortarSpsummoned = true;
return true; return true;
} }
return false; return false;
} }
private bool 十二兽虎炮效果() private bool TigermortarEffect()
{ {
//if (Card.HasXyzMaterial((int)CardId.十二兽鼠骑) || !Bot.HasInGraveyard((int)CardId.十二兽鼠骑)) //if (Card.HasXyzMaterial((int)CardId.Ratpier) || !Bot.HasInGraveyard((int)CardId.Ratpier))
// return false; // return false;
AI.SelectCard((int)CardId.十二兽狗环); AI.SelectCard((int)CardId.Chakanine);
AI.SelectNextCard((int)CardId.十二兽虎炮); AI.SelectNextCard((int)CardId.Tigermortar);
AI.SelectThirdCard(new[] AI.SelectThirdCard(new[]
{ {
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.十二兽蛇笞, (int)CardId.Whiptail,
(int)CardId.十二兽马剑 (int)CardId.Thoroughblade
}); });
return true; return true;
} }
private bool 十二兽牛犄特殊召唤() private bool BroadbullSummon()
{ {
if (Bot.HasInMonstersZone((int)CardId.十二兽虎炮) && !已特殊召唤牛犄) if (Bot.HasInMonstersZone((int)CardId.Tigermortar) && !BroadbullSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽虎炮); AI.SelectCard((int)CardId.Tigermortar);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤牛犄 = true; BroadbullSpsummoned = true;
return true; return true;
} }
if (Bot.HasInMonstersZone((int)CardId.十二兽狗环) && !已特殊召唤牛犄) if (Bot.HasInMonstersZone((int)CardId.Chakanine) && !BroadbullSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽狗环); AI.SelectCard((int)CardId.Chakanine);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤牛犄 = true; BroadbullSpsummoned = true;
return true; return true;
} }
if (Bot.HasInMonstersZone((int)CardId.十二兽鼠骑) && !已特殊召唤牛犄) if (Bot.HasInMonstersZone((int)CardId.Ratpier) && !BroadbullSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽鼠骑); AI.SelectCard((int)CardId.Ratpier);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤牛犄 = true; BroadbullSpsummoned = true;
return true; return true;
} }
if (Bot.HasInMonstersZone((int)CardId.十二兽马剑) && !已特殊召唤牛犄) if (Bot.HasInMonstersZone((int)CardId.Thoroughblade) && !BroadbullSpsummoned)
{ {
AI.SelectCard((int)CardId.十二兽马剑); AI.SelectCard((int)CardId.Thoroughblade);
AI.SelectYesNo(true); AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
已特殊召唤牛犄 = true; BroadbullSpsummoned = true;
return true; return true;
} }
return false; return false;
} }
private bool 十二兽牛犄效果() private bool BroadbullEffect()
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽虎炮, (int)CardId.Tigermortar,
(int)CardId.十二兽狗环, (int)CardId.Chakanine,
(int)CardId.十二兽龙枪, (int)CardId.Drident,
(int)CardId.召唤师阿莱斯特, (int)CardId.AleisterTheInvoker,
(int)CardId.光子斩击者 (int)CardId.PhotonThrasher
}); });
if (Bot.HasInHand((int)CardId.十二兽蛇笞) && !Bot.HasInHand((int)CardId.十二兽鼠骑)) if (Bot.HasInHand((int)CardId.Whiptail) && !Bot.HasInHand((int)CardId.Ratpier))
AI.SelectNextCard((int)CardId.十二兽鼠骑); AI.SelectNextCard((int)CardId.Ratpier);
else else
AI.SelectNextCard((int)CardId.十二兽蛇笞); AI.SelectNextCard((int)CardId.Whiptail);
return true; return true;
} }
private bool 十二兽牛犄超量召唤() private bool BroadbullXYZSummon()
{ {
AI.SelectYesNo(false); AI.SelectYesNo(false);
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.光子斩击者, (int)CardId.PhotonThrasher,
(int)CardId.十二兽蛇笞, (int)CardId.Whiptail,
(int)CardId.召唤师阿莱斯特 (int)CardId.AleisterTheInvoker
}); });
return true; return true;
} }
private bool 十二兽龙枪特殊召唤() private bool DridentSummon()
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽牛犄, (int)CardId.Broadbull,
(int)CardId.十二兽虎炮, (int)CardId.Tigermortar,
(int)CardId.十二兽狗环, (int)CardId.Chakanine,
(int)CardId.十二兽马剑 (int)CardId.Thoroughblade
}); });
return true; return true;
} }
private bool 十二兽鼠骑素材效果() private bool RatpierMaterialEffect()
{ {
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.十二兽鼠骑, 1)) if (ActivateDescription == AI.Utils.GetStringId((int)CardId.Ratpier, 1))
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
...@@ -446,17 +448,17 @@ namespace WindBot.Game.AI.Decks ...@@ -446,17 +448,17 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool 十二兽蛇笞效果() private bool WhiptailEffect()
{ {
if (Duel.Phase == DuelPhase.Main1 || Duel.Phase == DuelPhase.Main2) if (Duel.Phase == DuelPhase.Main1 || Duel.Phase == DuelPhase.Main2)
return false; return false;
if (Card.IsDisabled() || 蛇笞发动次数 >= 3) if (Card.IsDisabled() || WhiptailEffectCount >= 3)
return false; return false;
ClientCard target = null; ClientCard target = null;
List<ClientCard> monsters = Bot.GetMonsters(); List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.IsFaceup() && monster.Id == (int)CardId.十二兽龙枪 && !monster.HasXyzMaterial()) if (monster.IsFaceup() && monster.Id == (int)CardId.Drident && !monster.HasXyzMaterial())
{ {
target = monster; target = monster;
break; break;
...@@ -466,7 +468,7 @@ namespace WindBot.Game.AI.Decks ...@@ -466,7 +468,7 @@ namespace WindBot.Game.AI.Decks
{ {
foreach (ClientCard monster in monsters) foreach (ClientCard monster in monsters)
{ {
if (monster.IsFaceup() && monster.Type == (int)CardType.Xyz && monster.Id != (int)CardId.大薰风骑士翠玉 && !monster.HasXyzMaterial()) if (monster.IsFaceup() && monster.Type == (int)CardType.Xyz && monster.Id != (int)CardId.DaigustoEmeral && !monster.HasXyzMaterial())
{ {
target = monster; target = monster;
break; break;
...@@ -477,25 +479,25 @@ namespace WindBot.Game.AI.Decks ...@@ -477,25 +479,25 @@ namespace WindBot.Game.AI.Decks
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽龙枪 (int)CardId.Drident
}); });
} }
蛇笞发动次数++; WhiptailEffectCount++;
return true; return true;
} }
private bool 十二兽鼠骑效果() private bool Ratpier()
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽的方合, (int)CardId.ZoodiacCombo,
(int)CardId.十二兽马剑, (int)CardId.Thoroughblade,
(int)CardId.十二兽的会局 (int)CardId.ZoodiacBarrage
}); });
return true; return true;
} }
private bool 十二兽龙枪效果() private bool DridentEffect()
{ {
if (LastChainPlayer == 0) if (LastChainPlayer == 0)
return false; return false;
...@@ -543,114 +545,114 @@ namespace WindBot.Game.AI.Decks ...@@ -543,114 +545,114 @@ namespace WindBot.Game.AI.Decks
return false; return false;
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽牛犄, (int)CardId.Broadbull,
(int)CardId.十二兽虎炮, (int)CardId.Tigermortar,
(int)CardId.十二兽狗环, (int)CardId.Chakanine,
(int)CardId.十二兽马剑, (int)CardId.Thoroughblade,
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.十二兽蛇笞 (int)CardId.Whiptail
}); });
AI.SelectNextCard(target); AI.SelectNextCard(target);
return true; return true;
} }
private bool 大薰风骑士翠玉特殊召唤() private bool DaigustoEmeralSummon()
{ {
return Bot.GetGraveyardMonsters().Count >= 3; return Bot.GetGraveyardMonsters().Count >= 3;
} }
private bool 大薰风骑士翠玉效果() private bool DaigustoEmeralEffect()
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.召唤师阿莱斯特, (int)CardId.AleisterTheInvoker,
(int)CardId.十二兽蛇笞 (int)CardId.Whiptail
}); });
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.大薰风骑士翠玉 (int)CardId.DaigustoEmeral
}); });
return true; return true;
} }
private bool 炎舞天玑效果() private bool FireFormationTenkiEffect()
{ {
if (Bot.HasInHand((int)CardId.十二兽的会局) if (Bot.HasInHand((int)CardId.ZoodiacBarrage)
|| Bot.HasInSpellZone((int)CardId.十二兽的会局) || Bot.HasInSpellZone((int)CardId.ZoodiacBarrage)
|| Bot.HasInHand((int)CardId.十二兽鼠骑)) || Bot.HasInHand((int)CardId.Ratpier))
{ {
AI.SelectCard((int)CardId.十二兽蛇笞); AI.SelectCard((int)CardId.Whiptail);
} }
else else
{ {
AI.SelectCard((int)CardId.十二兽鼠骑); AI.SelectCard((int)CardId.Ratpier);
} }
AI.SelectYesNo(true); AI.SelectYesNo(true);
return true; return true;
} }
private bool 十二兽的会局效果() private bool ZoodiacBarrageEffect()
{ {
IList<ClientCard> spells = Bot.GetSpells(); IList<ClientCard> spells = Bot.GetSpells();
foreach (ClientCard spell in spells) foreach (ClientCard spell in spells)
{ {
if (spell.Id == (int)CardId.十二兽的会局 && !Card.Equals(spell)) if (spell.Id == (int)CardId.ZoodiacBarrage && !Card.Equals(spell))
return false; return false;
} }
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.炎舞天玑, (int)CardId.FireFormationTenki,
(int)CardId.暴走魔法阵, (int)CardId.MagicalMeltdown,
(int)CardId.十二兽的会局 (int)CardId.ZoodiacBarrage
}); });
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.十二兽蛇笞, (int)CardId.Whiptail,
(int)CardId.十二兽马剑 (int)CardId.Thoroughblade
}); });
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
return true; return true;
} }
private bool 十二兽的方合效果() private bool ZoodiacComboEffect()
{ {
if (CurrentChain.Count > 0) if (CurrentChain.Count > 0)
return false; return false;
if (Card.Location != CardLocation.Grave) if (Card.Location != CardLocation.Grave)
{ {
AI.SelectCard((int)CardId.十二兽龙枪); AI.SelectCard((int)CardId.Drident);
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
(int)CardId.十二兽蛇笞, (int)CardId.Whiptail,
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.十二兽马剑 (int)CardId.Thoroughblade
}); });
} }
return true; return true;
} }
private bool 死者苏生效果() private bool MonsterRebornEffect()
{ {
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
(int)CardId.十二兽鼠骑, (int)CardId.Ratpier,
(int)CardId.十二兽蛇笞, (int)CardId.Whiptail,
(int)CardId.召唤兽梅尔卡巴, (int)CardId.InvokedMechaba,
(int)CardId.坏星坏兽席兹奇埃鲁, (int)CardId.JizukirutheStarDestroyingKaiju,
(int)CardId.召唤兽墨瓦腊泥加, (int)CardId.InvokedMagellanica,
(int)CardId.十二兽虎炮, (int)CardId.Tigermortar,
(int)CardId.十二兽狗环, (int)CardId.Chakanine,
(int)CardId.十二兽牛犄 (int)CardId.Broadbull
}); });
return true; return true;
} }
private bool MonsterRepos() private bool MonsterRepos()
{ {
if (Card.Id == (int)CardId.闪光No39希望皇霍普电光皇) if (Card.Id == (int)CardId.NumberS39UtopiatheLightning)
return false; return false;
return base.DefaultMonsterRepos(); return base.DefaultMonsterRepos();
} }
......
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