Commit 3ec365a9 authored by wyykak's avatar wyykak

add Yuyuko

Signed-off-by: wyykak's avatarwyykak <wyy_1414@126.com>
parent d6dce94b
...@@ -4,11 +4,6 @@ ...@@ -4,11 +4,6 @@
# description # description
# flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE, SUPPORT_MASTER_RULE_2020, SELECT_DECKFILE) # flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE, SUPPORT_MASTER_RULE_2020, SELECT_DECKFILE)
!DJNormal
Name=DJ Deck='DJ' Dialog=heyDJ DbPath=expansions\AI.cdb
兄弟打碟吗
SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!一面:幽幽子(Easy !一面:幽幽子(Easy
Name=西行寺幽幽子 Deck='YuyukoRank1' Dialog=YuyukoRank1.zh-CN DbPath=expansions\AI.cdb Name=西行寺幽幽子 Deck='YuyukoRank1' Dialog=YuyukoRank1.zh-CN DbPath=expansions\AI.cdb
弱小的一面bossAI。在此难度下AI的智商非常低 弱小的一面bossAI。在此难度下AI的智商非常低
...@@ -30,16 +25,16 @@ Name=西行寺幽幽子 Deck='YuyukoRank4' Dialog=YuyukoRank1.zh-CN DbPath=expan ...@@ -30,16 +25,16 @@ Name=西行寺幽幽子 Deck='YuyukoRank4' Dialog=YuyukoRank1.zh-CN DbPath=expan
SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!P2-自选卡组 !P2-自选卡组
Name=P2[EXT] Deck=Lucky Dialog=gugugu.zh-CN DbPath=expansions\AI.cdb Name=P2 Deck=Lucky Dialog=gugugu.zh-CN DbPath=expansions\AI.cdb
人机卡组由你选择。随缘出牌。 人机卡组由你选择。随缘出牌。
SELECT_DECKFILE SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 SELECT_DECKFILE SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!摆烂型王圆圆 !摆烂型王圆圆
Name=摆烂型王圆圆[EXT] Deck='THC_DSReimu' Dialog=gugugu.zh-CN DbPath=expansions\AI.cdb Name=摆烂型王圆圆 Deck='THC_DSReimu' Dialog=gugugu.zh-CN DbPath=expansions\AI.cdb
幼女化灵梦摆烂卡组,但偶尔也会有一些惊喜? 幼女化灵梦摆烂卡组,但偶尔也会有一些惊喜?
SUPPORT_MASTER_RULE_2020 SUPPORT_MASTER_RULE_2020
!强袭型王圆圆 !强袭型王圆圆
Name=强袭型王圆圆[EXT] Deck='THC_WDL' Dialog=ayane.zh-CN DbPath=expansions\AI.cdb Name=强袭型王圆圆 Deck='THC_WDL' Dialog=ayane.zh-CN DbPath=expansions\AI.cdb
乱打也能像样的喔嘟噜卡组。 乱打也能像样的喔嘟噜卡组。
SUPPORT_MASTER_RULE_2020 SUPPORT_MASTER_RULE_2020
#created by ...
#main
11011
11011
11011
20032
20241
20235
20235
25081
20257
20257
20257
20083
20083
20083
26125
26125
26125
20248
20248
20248
20210
20210
20193
20193
20193
25127
25127
25127
20090
20090
20090
20178
25096
25096
20050
20050
20050
10113
10113
10113
#extra
20245
20245
20245
19011
25171
20042
15059
20242
25501
20504
20504
20504
10501
21501
21501
!side
#created by ...
#main
11011
11011
11011
20032
20241
20235
20235
25081
20257
20257
20257
20083
20083
20083
26125
26125
26125
20248
20248
20248
20210
20210
20193
20193
20193
25127
25127
25127
20090
20090
20090
20178
25096
25096
20050
20050
20050
10113
10113
10113
#extra
20245
20245
20245
19011
25171
20042
15059
20242
25501
20504
20504
20504
10501
21501
21501
!side
#created by ...
#main
2003200
2003200
11011
11011
20238
20237
20237
20237
25081
20257
20257
20257
20084
20084
26126
26126
26126
20248
20248
20248
20212
20212
20193
20193
20193
25127
25127
25127
20090
20090
20090
20179
25096
25096
20050
20050
20050
10113
10113
10113
#extra
20245
20245
20245
19011
25171
20042
15059
20242
25501
20504
20504
20504
10501
21501
21501
!side
#created by ...
#main
2003200
2003200
2003200
11011
11011
20238
20237
20237
25081
20257
20257
20257
20084
20084
26126
26126
26126
20248
20248
20248
20212
20212
20193
20193
20193
25127
25127
25127
20090
20090
20090
20179
25096
25096
20050
20050
20050
10113
10113
10113
#extra
20245
20245
20245
19011
25171
20042
15059
20242
25501
20504
20504
20504
10501
21501
21501
!side
{
"welcome": [
"今天有什么事么?",
"AI功能正在测试中,遇到问题请及时反馈。",
"麻薯是什么,好吃吗?",
"好了,你打算怎么办呢?",
"不拐点什么人过来入坑么"
],
"deckerror": [
"为什么我的{0}不能用了?"
],
"duelstart": [
"樱花,就像人的一生一般",
"BGM:「死灵の夜桜」(自行脑补)",
"愿于春日樱下死,阴历二月满月时。"
],
"newturn": [
"虽然有点突然,被我打倒吧!",
"我的回合,抽卡!"
],
"endturn": [
"请不要对我抱有恐惧",
"妖梦,晚餐还没准备好么?"
],
"directattack": [
"{0},直接攻击!",
"幽雅的绽放吧,墨染的樱花。",
"最后一点的春我就拿走了哦",
"没有比收拾祭祀之后的残局更令人感到空虚了。",
"桜符「西行桜吹雪」",
"符牒「死蝶の舞 - 桜花 -」"
],
"attack": [
"{0},攻击这只{1}!",
"{0},消灭这只{1}!",
"{0},打倒{1}!",
"沉眠于樱花下吧!"
],
"ondirectattack": [
"从死去到现在,樱花已经开放过多少回了?",
"怎么可能呢。",
"希望在我死后,吊祭我的人能以樱花贡奉。",
"这种程度,对亡灵来说不疼不痒"
],
"facedownmonstername": "怪兽",
"activate": [
"我发动{0}。",
"我使用{0}的效果。",
"誘霊の甘蜜!"
],
"summon": [
"我召唤{0}。",
"出来吧,{0}!",
"出现吧,{0}!",
"我召唤了强大的{0}!",
"我呼唤出{0}。"
],
"setmonster": [
"我放置了一只怪兽。",
"撒,攻过来吧!"
],
"chaining": [
"我发动{0}",
"我使用{0}的力量。",
"畏惧我的{0}吧",
"来自对岸的引诱"
]
}
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
// NOT FINISHED YET
[Deck("YuyukoRank1", "AI_YuyukoRank1")]
public class YuyukoRank1Executor : DefaultExecutor
{
public class CardId
{
public const int Liesun = 200119;
public const int YoumuN5 = 20252;
public const int Bing = 20046;
public const int MimaL9 = 11011;
public const int YuyukoL8 = 20032;
public const int YoumuTheMangetsuYuuki = 20241;
public const int YoumuTheAkaSakuraYuurei = 20235;
public const int HatanokokoroL4 = 25081;
public const int YoumuTheHalfSpirit = 20257;
public const int YoumuTheBluesky = 20083;
public const int NueL3 = 26125;
public const int YoumuTheSweetMaid = 20248;
public const int YoumuTheHalfSpiritL3 = 20210;
public const int YoumeiNoKuwa = 20193;
public const int KokoroCorona = 25127;
public const int Mougakyou = 20090;
public const int KanataOfTamaSakura = 20178;
public const int HiNoOtoko = 25096;
public const int Hakugyokurou = 20050;
public const int JigenYuuhei = 10113;
public const int YoumuF6 = 20245;
public const int YoumuSanaeF = 19011;
public const int AyaS8 = 25171;
public const int YoumuS6 = 20041;
public const int LoliceR4 = 15059;
public const int YoumuR4 = 20242;
public const int LinkYuuka = 25501;
public const int LinkYuyuko = 20504;
public const int LinkReimu = 10501;
public const int LinkReisen = 21501;
}
public YuyukoRank1Executor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, CardId.Liesun);
AddExecutor(ExecutorType.Activate, CardId.YoumuN5);
AddExecutor(ExecutorType.Activate, CardId.YoumeiNoKuwa);
AddExecutor(ExecutorType.Activate, CardId.KokoroCorona);
AddExecutor(ExecutorType.Activate, CardId.HiNoOtoko);
AddExecutor(ExecutorType.Activate, CardId.NueL3);
AddExecutor(ExecutorType.Activate, CardId.Mougakyou);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheSweetMaid);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheBluesky);
AddExecutor(ExecutorType.Activate, CardId.Hakugyokurou);
AddExecutor(ExecutorType.SpSummon, CardId.MimaL9);
AddExecutor(ExecutorType.SpSummon, CardId.YuyukoL8);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheAkaSakuraYuurei);
AddExecutor(ExecutorType.Summon, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.SummonOrSet, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.Summon, CardId.YoumuTheHalfSpirit);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheHalfSpiritL3);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuuka);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuyuko);
AddExecutor(ExecutorType.SpSummon, CardId.AyaS8);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuS6);
AddExecutor(ExecutorType.SpSummon, CardId.LoliceR4);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuR4);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReimu);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReisen);
AddExecutor(ExecutorType.Activate, CardId.JigenYuuhei, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
private bool AttackUpEffect()
{
ClientCard bestMy = Bot.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyATK = Enemy.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyDEF = Enemy.GetMonsters().GetHighestDefenseMonster();
if (bestMy == null || (bestEnemyATK == null && bestEnemyDEF == null))
return false;
if (bestEnemyATK != null && bestMy.Attack < bestEnemyATK.Attack)
return true;
if (bestEnemyDEF != null && bestMy.Attack < bestEnemyDEF.Defense)
return true;
return false;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
// NOT FINISHED YET
[Deck("YuyukoRank2", "AI_YuyukoRank2")]
public class YuyukoRank2Executor : DefaultExecutor
{
public class CardId
{
public const int Liesun = 200119;
public const int YoumuN5 = 20252;
public const int Bing = 20046;
public const int MimaL9 = 11011;
public const int YuyukoL8 = 20032;
public const int YoumuTheMangetsuYuuki = 20241;
public const int YoumuTheAkaSakuraYuurei = 20235;
public const int HatanokokoroL4 = 25081;
public const int YoumuTheHalfSpirit = 20257;
public const int YoumuTheBluesky = 20083;
public const int NueL3 = 26125;
public const int YoumuTheSweetMaid = 20248;
public const int YoumuTheHalfSpiritL3 = 20210;
public const int YoumeiNoKuwa = 20193;
public const int KokoroCorona = 25127;
public const int Mougakyou = 20090;
public const int KanataOfTamaSakura = 20178;
public const int HiNoOtoko = 25096;
public const int Hakugyokurou = 20050;
public const int JigenYuuhei = 10113;
public const int YoumuF6 = 20245;
public const int YoumuSanaeF = 19011;
public const int AyaS8 = 25171;
public const int YoumuS6 = 20041;
public const int LoliceR4 = 15059;
public const int YoumuR4 = 20242;
public const int LinkYuuka = 25501;
public const int LinkYuyuko = 20504;
public const int LinkReimu = 10501;
public const int LinkReisen = 21501;
}
public YuyukoRank2Executor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, CardId.Liesun);
AddExecutor(ExecutorType.Activate, CardId.YoumuN5);
AddExecutor(ExecutorType.Activate, CardId.YoumeiNoKuwa);
AddExecutor(ExecutorType.Activate, CardId.KokoroCorona, KokoroCoronaEffect);
AddExecutor(ExecutorType.Activate, CardId.HiNoOtoko);
AddExecutor(ExecutorType.Activate, CardId.Mougakyou, MougakyouEffect);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheSweetMaid, YoumuTheSweetMaidEffect);
AddExecutor(ExecutorType.Activate, CardId.Hakugyokurou, HakugyokurouEffect);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheBluesky, YoumuTheBlueskySummon);
AddExecutor(ExecutorType.Activate, CardId.NueL3, NueL3Effect);
AddExecutor(ExecutorType.Activate, CardId.MimaL9);
AddExecutor(ExecutorType.Activate, CardId.Bing);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheMangetsuYuuki);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheHalfSpirit);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheHalfSpiritL3);
AddExecutor(ExecutorType.Activate, CardId.YoumuSanaeF);
AddExecutor(ExecutorType.Activate, CardId.YoumuR4);
AddExecutor(ExecutorType.Activate, CardId.YoumuSanaeF);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheAkaSakuraYuurei);
AddExecutor(ExecutorType.Activate, CardId.YoumuF6);
AddExecutor(ExecutorType.Activate, CardId.AyaS8);
AddExecutor(ExecutorType.Activate, CardId.YoumuS6);
AddExecutor(ExecutorType.Activate, CardId.LoliceR4);
AddExecutor(ExecutorType.Activate, CardId.LinkReimu);
AddExecutor(ExecutorType.Activate, CardId.LinkReisen);
AddExecutor(ExecutorType.SpSummon, CardId.MimaL9, MimaL9Effect);
AddExecutor(ExecutorType.SpSummon, CardId.YuyukoL8, YuyukoL8Summon);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheAkaSakuraYuurei);
AddExecutor(ExecutorType.Summon, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.SummonOrSet, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.Summon, CardId.YoumuTheHalfSpirit);
AddExecutor(ExecutorType.SummonOrSet, CardId.YoumuTheSweetMaid);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheMangetsuYuuki);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheHalfSpiritL3);
AddExecutor(ExecutorType.Activate, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuyuko, LinkYuyukoSummon);
AddExecutor(ExecutorType.Activate, CardId.LinkYuyuko, LinkYuyukoEffect);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuuka);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuS6);
AddExecutor(ExecutorType.SpSummon, CardId.LoliceR4, DefaultCastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.SpSummon, CardId.AyaS8);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReimu, LinkSummon);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReisen, LinkSummon);
AddExecutor(ExecutorType.Activate, CardId.YuyukoL8, YuyukoL8Effect);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuR4, YoumuR4Summon);
AddExecutor(ExecutorType.Activate, CardId.JigenYuuhei, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
public override IList<ClientCard> OnSelectCard(IList<ClientCard> cards, int min, int max, int hint, bool cancelable)
{
Logger.DebugWriteLine("OnSelectCard " + cards.Count + " " + min + " " + max);
if (hint == 504 && cards[0].Location == CardLocation.Hand)
{
IList<ClientCard> result = Util.SelectPreferredCards(new[] {
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheBluesky,
CardId.MimaL9,
CardId.KanataOfTamaSakura,
CardId.HatanokokoroL4,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumeiNoKuwa,
CardId.YoumuTheSweetMaid,
CardId.KokoroCorona
}, cards, min, max);
Util.CheckSelectCount(result, cards, min, max);
return result;
}
return null;
}
public override IList<ClientCard> OnSelectPendulumSummon(IList<ClientCard> cards, int max)
{
Logger.DebugWriteLine("OnSelectPendulumSummon");
// select the last cards
IList<ClientCard> selected = new List<ClientCard>();
for (int i = 1; i <= max; ++i)
{
ClientCard card = cards[cards.Count - i];
if ((card.Location == CardLocation.Removed) || (card.Location == CardLocation.Grave))
selected.Add(card);
}
if (selected.Count == 0)
selected.Add(cards[cards.Count - 1]);
return selected;
}
private bool KokoroCoronaEffect()
{
AI.SelectCard(new[]
{
CardId.HatanokokoroL4,
CardId.YoumuTheBluesky,
CardId.YoumuTheHalfSpiritL3
});
return true;
}
private bool MougakyouEffect()
{
if (ActivateDescription == Util.GetStringId(CardId.Mougakyou, 3))
{
AI.SelectCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.YoumuTheSweetMaid
});
return true;
}
else if (ActivateDescription == Util.GetStringId(CardId.Mougakyou, 0) || ActivateDescription == Util.GetStringId(CardId.Mougakyou, 2))
{
AI.SelectCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpirit,
CardId.YoumuTheHalfSpiritL3
});
return true;
}
else
{
AI.SelectCard(new[]
{
CardId.Hakugyokurou,
CardId.KanataOfTamaSakura,
CardId.HiNoOtoko,
CardId.Mougakyou,
CardId.MimaL9,
CardId.HatanokokoroL4,
CardId.YoumuF6
});
return true;
}
}
private bool HakugyokurouEffect()
{
if (Card.Location == CardLocation.Hand && Bot.HasInSpellZone(Card.Id) && Bot.GetGraveyardMonsters().Count !=0)
return false;
if (ActivateDescription == Util.GetStringId(CardId.Hakugyokurou, 1))
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
AI.SelectCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.MimaL9,
CardId.YoumuTheSweetMaid
});
return true;
}
else if (ActivateDescription == Util.GetStringId(CardId.Hakugyokurou, 0))
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
List<ClientCard> spells = Enemy.GetSpells();
if (spells.Count == 0)
return false;
ClientCard selected = null;
{
foreach (ClientCard card in spells)
{
if (card.IsFacedown())
{
selected = card;
break;
}
}
}
if (selected == null)
return false;
AI.SelectCard(selected);
return true;
}
else
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
AI.SelectCard(new[]
{
CardId.YoumuTheAkaSakuraYuurei
});
return true;
}
}
private bool YoumuTheSweetMaidEffect()
{
AI.SelectCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheHalfSpirit,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheAkaSakuraYuurei
});
{
AI.SelectNextCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3
});
}
return true;
}
private bool YoumuTheBlueskySummon()
{
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
private bool NueL3Effect()
{
AI.SelectCard(new[]
{
CardId.YoumuF6
});
{
AI.SelectNextCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.YoumuTheAkaSakuraYuurei
});
}
return true;
}
private bool MimaL9Effect()
{
AI.SelectCard(new[]
{
CardId.YoumuTheAkaSakuraYuurei,
CardId.MimaL9,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheBluesky,
CardId.HatanokokoroL4
});
return true;
}
private bool YuyukoL8Summon()
{
AI.SelectCard(new[]
{
CardId.NueL3,
CardId.YoumuTheSweetMaid,
CardId.YoumuF6,
CardId.YoumuSanaeF,
CardId.AyaS8,
CardId.YoumuS6,
CardId.LoliceR4,
CardId.YoumuR4,
CardId.LinkYuuka,
CardId.LinkReimu,
CardId.LinkReimu,
CardId.LinkYuyuko,
CardId.YoumuTheHalfSpirit
});
return true;
}
private bool YuyukoL8Effect()
{
if (Duel.Turn != 1 && ActivateDescription == Util.GetStringId(CardId.YuyukoL8, 2))
{
return false;
}
if (ActivateDescription == -1 || ActivateDescription == Util.GetStringId(CardId.YuyukoL8, 0))
{
return true;
}
return false;
}
private bool LinkYuyukoSummon()
{
if (Bot.HasInMonstersZone(CardId.LinkYuyuko))
{
return false;
}
return true;
}
private bool LinkYuyukoEffect()
{
ClientCard targets = Util.GetBestEnemySpell();
ClientCard target = Util.GetBestEnemyMonster();
if (targets != null)
{
AI.SelectCard(targets);
return true;
}
else if (target != null)
{
AI.SelectCard(target);
return true;
}
return false;
}
private bool YoumuR4Summon()
{
return (Util.IsTurn1OrMain2() || Util.IsOneEnemyBetter());
}
private bool AttackUpEffect()
{
ClientCard bestMy = Bot.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyATK = Enemy.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyDEF = Enemy.GetMonsters().GetHighestDefenseMonster();
if (bestMy == null || (bestEnemyATK == null && bestEnemyDEF == null))
return false;
if (bestEnemyATK != null && bestMy.Attack < bestEnemyATK.Attack)
return true;
if (bestEnemyDEF != null && bestMy.Attack < bestEnemyDEF.Defense)
return true;
return false;
}
private bool LinkSummon()
{
return (Util.IsTurn1OrMain2() || Util.IsOneEnemyBetter())
&& Util.GetBestAttack(Bot) < Card.Attack;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
// NOT FINISHED YET
[Deck("YuyukoRank3", "AI_YuyukoRank3")]
public class YuyukoRank3Executor : DefaultExecutor
{
public class CardId
{
public const int Liesun = 200119;
public const int YoumuN5 = 20252;
public const int Bing = 20046;
public const int MimaL9 = 11011;
public const int YuyukoL8 = 2003200;
public const int YoumuTheMangetsuYuuki = 20238;
public const int YoumuTheAkaSakuraYuurei = 20237;
public const int HatanokokoroL4 = 25081;
public const int YoumuTheHalfSpirit = 20257;
public const int YoumuTheBluesky = 20084;
public const int NueL3 = 26125;
public const int YoumuTheSweetMaid = 20248;
public const int YoumuTheHalfSpiritL3 = 20212;
public const int YoumeiNoKuwa = 20193;
public const int KokoroCorona = 25127;
public const int Mougakyou = 20090;
public const int KanataOfTamaSakura = 20179;
public const int HiNoOtoko = 25096;
public const int Hakugyokurou = 20050;
public const int JigenYuuhei = 10113;
public const int YoumuF6 = 20245;
public const int YoumuSanaeF = 19011;
public const int AyaS8 = 25171;
public const int YoumuS6 = 20041;
public const int LoliceR4 = 15059;
public const int YoumuR4 = 20242;
public const int LinkYuuka = 25501;
public const int LinkYuyuko = 20504;
public const int LinkReimu = 10501;
public const int LinkReisen = 21501;
}
public YuyukoRank3Executor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, CardId.Liesun);
AddExecutor(ExecutorType.Activate, CardId.YoumuN5);
AddExecutor(ExecutorType.Activate, CardId.YoumeiNoKuwa);
AddExecutor(ExecutorType.Activate, CardId.KokoroCorona, KokoroCoronaEffect);
AddExecutor(ExecutorType.Activate, CardId.HiNoOtoko);
AddExecutor(ExecutorType.Activate, CardId.Mougakyou, MougakyouEffect);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheSweetMaid, YoumuTheSweetMaidEffect);
AddExecutor(ExecutorType.Activate, CardId.Hakugyokurou, HakugyokurouEffect);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheBluesky, YoumuTheBlueskySummon);
AddExecutor(ExecutorType.Activate, CardId.NueL3, NueL3Effect);
AddExecutor(ExecutorType.Activate, CardId.MimaL9);
AddExecutor(ExecutorType.Activate, CardId.Bing);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheMangetsuYuuki);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheHalfSpirit);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheHalfSpiritL3);
AddExecutor(ExecutorType.Activate, CardId.YoumuSanaeF);
AddExecutor(ExecutorType.Activate, CardId.YoumuR4);
AddExecutor(ExecutorType.Activate, CardId.YoumuSanaeF);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheAkaSakuraYuurei);
AddExecutor(ExecutorType.Activate, CardId.YoumuF6);
AddExecutor(ExecutorType.Activate, CardId.AyaS8);
AddExecutor(ExecutorType.Activate, CardId.YoumuS6);
AddExecutor(ExecutorType.Activate, CardId.LoliceR4);
AddExecutor(ExecutorType.Activate, CardId.LinkReimu);
AddExecutor(ExecutorType.Activate, CardId.LinkReisen);
AddExecutor(ExecutorType.SpSummon, CardId.MimaL9, MimaL9Effect);
AddExecutor(ExecutorType.SpSummon, CardId.YuyukoL8, YuyukoL8Summon);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheAkaSakuraYuurei);
AddExecutor(ExecutorType.Summon, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.SummonOrSet, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.Summon, CardId.YoumuTheHalfSpirit);
AddExecutor(ExecutorType.SummonOrSet, CardId.YoumuTheSweetMaid);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheMangetsuYuuki);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheHalfSpiritL3);
AddExecutor(ExecutorType.Activate, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuyuko, LinkYuyukoSummon);
AddExecutor(ExecutorType.Activate, CardId.LinkYuyuko, LinkYuyukoEffect);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuuka);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuS6);
AddExecutor(ExecutorType.SpSummon, CardId.LoliceR4, DefaultCastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.SpSummon, CardId.AyaS8);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReimu, LinkSummon);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReisen, LinkSummon);
AddExecutor(ExecutorType.Activate, CardId.YuyukoL8, YuyukoL8Effect);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuR4, YoumuR4Summon);
AddExecutor(ExecutorType.Activate, CardId.JigenYuuhei, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
public override IList<ClientCard> OnSelectCard(IList<ClientCard> cards, int min, int max, int hint, bool cancelable)
{
Logger.DebugWriteLine("OnSelectCard " + cards.Count + " " + min + " " + max);
if (hint == 504 && cards[0].Location == CardLocation.Hand)
{
IList<ClientCard> result = Util.SelectPreferredCards(new[] {
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheBluesky,
CardId.MimaL9,
CardId.KanataOfTamaSakura,
CardId.HatanokokoroL4,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumeiNoKuwa,
CardId.YoumuTheSweetMaid,
CardId.KokoroCorona
}, cards, min, max);
Util.CheckSelectCount(result, cards, min, max);
return result;
}
return null;
}
public override IList<ClientCard> OnSelectPendulumSummon(IList<ClientCard> cards, int max)
{
Logger.DebugWriteLine("OnSelectPendulumSummon");
// select the last cards
IList<ClientCard> selected = new List<ClientCard>();
for (int i = 1; i <= max; ++i)
{
ClientCard card = cards[cards.Count - i];
if ((card.Location == CardLocation.Removed) || (card.Location == CardLocation.Grave))
selected.Add(card);
}
if (selected.Count == 0)
selected.Add(cards[cards.Count - 1]);
return selected;
}
private bool KokoroCoronaEffect()
{
AI.SelectCard(new[]
{
CardId.HatanokokoroL4,
CardId.YoumuTheBluesky,
CardId.YoumuTheHalfSpiritL3
});
return true;
}
private bool MougakyouEffect()
{
if (ActivateDescription == Util.GetStringId(CardId.Mougakyou, 3))
{
AI.SelectCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.YoumuTheSweetMaid
});
return true;
}
else if (ActivateDescription == Util.GetStringId(CardId.Mougakyou, 0) || ActivateDescription == Util.GetStringId(CardId.Mougakyou, 2))
{
AI.SelectCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpirit,
CardId.YoumuTheHalfSpiritL3
});
return true;
}
else
{
AI.SelectCard(new[]
{
CardId.Hakugyokurou,
CardId.KanataOfTamaSakura,
CardId.HiNoOtoko,
CardId.Mougakyou,
CardId.MimaL9,
CardId.HatanokokoroL4,
CardId.YoumuF6
});
return true;
}
}
private bool HakugyokurouEffect()
{
if (Bot.GetGraveyardMonsters().Count !=0)
return false;
if (ActivateDescription == Util.GetStringId(CardId.Hakugyokurou, 1))
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
AI.SelectCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.MimaL9,
CardId.YoumuTheSweetMaid
});
return true;
}
else if (ActivateDescription == Util.GetStringId(CardId.Hakugyokurou, 0))
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
List<ClientCard> spells = Enemy.GetSpells();
if (spells.Count == 0)
return false;
ClientCard selected = null;
{
foreach (ClientCard card in spells)
{
if (card.IsFacedown())
{
selected = card;
break;
}
}
}
if (selected == null)
return false;
AI.SelectCard(selected);
return true;
}
else
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
AI.SelectCard(new[]
{
CardId.YoumuTheAkaSakuraYuurei
});
return true;
}
}
private bool YoumuTheSweetMaidEffect()
{
AI.SelectCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheHalfSpirit,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheAkaSakuraYuurei
});
{
AI.SelectNextCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3
});
}
return true;
}
private bool YoumuTheBlueskySummon()
{
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
private bool NueL3Effect()
{
AI.SelectCard(new[]
{
CardId.YoumuF6
});
{
AI.SelectNextCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.YoumuTheAkaSakuraYuurei
});
}
return true;
}
private bool MimaL9Effect()
{
AI.SelectCard(new[]
{
CardId.YoumuTheAkaSakuraYuurei,
CardId.MimaL9,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheBluesky,
CardId.HatanokokoroL4
});
return true;
}
private bool YuyukoL8Summon()
{
ClientCard target = Util.GetBestEnemyCard();
if (target != null)
{
AI.SelectCard(target);
return true;
}
return true;
}
private bool YuyukoL8Effect()
{
if (Duel.Turn != 1 && ActivateDescription == Util.GetStringId(CardId.YuyukoL8, 2))
{
return false;
}
if (ActivateDescription == -1 || ActivateDescription == Util.GetStringId(CardId.YuyukoL8, 0))
{
return true;
}
return false;
}
private bool LinkYuyukoSummon()
{
if (Bot.HasInMonstersZone(CardId.LinkYuyuko))
{
return false;
}
return true;
}
private bool LinkYuyukoEffect()
{
ClientCard targets = Util.GetBestEnemySpell();
ClientCard target = Util.GetBestEnemyMonster();
if (targets != null)
{
AI.SelectCard(targets);
return true;
}
else if (target != null)
{
AI.SelectCard(target);
return true;
}
return false;
}
private bool YoumuR4Summon()
{
return (Util.IsTurn1OrMain2() || Util.IsOneEnemyBetter());
}
private bool AttackUpEffect()
{
ClientCard bestMy = Bot.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyATK = Enemy.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyDEF = Enemy.GetMonsters().GetHighestDefenseMonster();
if (bestMy == null || (bestEnemyATK == null && bestEnemyDEF == null))
return false;
if (bestEnemyATK != null && bestMy.Attack < bestEnemyATK.Attack)
return true;
if (bestEnemyDEF != null && bestMy.Attack < bestEnemyDEF.Defense)
return true;
return false;
}
private bool LinkSummon()
{
return (Util.IsTurn1OrMain2() || Util.IsOneEnemyBetter())
&& Util.GetBestAttack(Bot) < Card.Attack;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks
{
// NOT FINISHED YET
[Deck("YuyukoRank4", "AI_YuyukoRank4")]
public class YuyukoRank4Executor : DefaultExecutor
{
public class CardId
{
public const int Liesun = 200119;
public const int YoumuN5 = 20252;
public const int Oyobi = 27029;
public const int Genshi = 20170;
public const int Bing = 20046;
public const int MimaL9 = 11011;
public const int YuyukoL8 = 2003200;
public const int YoumuTheMangetsuYuuki = 20238;
public const int YoumuTheAkaSakuraYuurei = 20237;
public const int HatanokokoroL4 = 25081;
public const int YoumuTheHalfSpirit = 20257;
public const int YoumuTheBluesky = 20084;
public const int NueL3 = 26125;
public const int YoumuTheSweetMaid = 20248;
public const int YoumuTheHalfSpiritL3 = 20212;
public const int YoumeiNoKuwa = 20193;
public const int KokoroCorona = 25127;
public const int Mougakyou = 20090;
public const int KanataOfTamaSakura = 20179;
public const int HiNoOtoko = 25096;
public const int Hakugyokurou = 20050;
public const int JigenYuuhei = 10113;
public const int YoumuF6 = 20245;
public const int YoumuSanaeF = 19011;
public const int AyaS8 = 25171;
public const int YoumuS6 = 20041;
public const int LoliceR4 = 15059;
public const int YoumuR4 = 20242;
public const int LinkYuuka = 25501;
public const int LinkYuyuko = 20504;
public const int LinkReimu = 10501;
public const int LinkReisen = 21501;
}
public YuyukoRank4Executor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, CardId.Liesun);
AddExecutor(ExecutorType.Activate, CardId.Genshi, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, CardId.YoumuN5);
AddExecutor(ExecutorType.Activate, CardId.YoumeiNoKuwa);
AddExecutor(ExecutorType.Activate, CardId.KokoroCorona, KokoroCoronaEffect);
AddExecutor(ExecutorType.Activate, CardId.HiNoOtoko);
AddExecutor(ExecutorType.Activate, CardId.Mougakyou, MougakyouEffect);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheSweetMaid, YoumuTheSweetMaidEffect);
AddExecutor(ExecutorType.Activate, CardId.Hakugyokurou, HakugyokurouEffect);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheBluesky, YoumuTheBlueskySummon);
AddExecutor(ExecutorType.Activate, CardId.Oyobi, DefaultCallOfTheHaunted);
AddExecutor(ExecutorType.Activate, CardId.NueL3, NueL3Effect);
AddExecutor(ExecutorType.Activate, CardId.MimaL9);
AddExecutor(ExecutorType.Activate, CardId.Bing);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheMangetsuYuuki);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheHalfSpirit);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheHalfSpiritL3);
AddExecutor(ExecutorType.Activate, CardId.YoumuSanaeF);
AddExecutor(ExecutorType.Activate, CardId.YoumuR4);
AddExecutor(ExecutorType.Activate, CardId.YoumuSanaeF);
AddExecutor(ExecutorType.Activate, CardId.YoumuTheAkaSakuraYuurei);
AddExecutor(ExecutorType.Activate, CardId.YoumuF6);
AddExecutor(ExecutorType.Activate, CardId.AyaS8);
AddExecutor(ExecutorType.Activate, CardId.YoumuS6);
AddExecutor(ExecutorType.Activate, CardId.LoliceR4);
AddExecutor(ExecutorType.Activate, CardId.LinkReimu);
AddExecutor(ExecutorType.Activate, CardId.LinkReisen);
AddExecutor(ExecutorType.SpSummon, CardId.MimaL9, MimaL9Effect);
AddExecutor(ExecutorType.SpSummon, CardId.YuyukoL8, YuyukoL8Summon);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheAkaSakuraYuurei);
AddExecutor(ExecutorType.Summon, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.SummonOrSet, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.Summon, CardId.YoumuTheHalfSpirit);
AddExecutor(ExecutorType.SummonOrSet, CardId.YoumuTheSweetMaid);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheMangetsuYuuki);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuTheHalfSpiritL3);
AddExecutor(ExecutorType.Activate, CardId.HatanokokoroL4);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuyuko, LinkYuyukoSummon);
AddExecutor(ExecutorType.Activate, CardId.LinkYuyuko, LinkYuyukoEffect);
AddExecutor(ExecutorType.SpSummon, CardId.LinkYuuka);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuS6);
AddExecutor(ExecutorType.SpSummon, CardId.LoliceR4, DefaultCastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.SpSummon, CardId.AyaS8);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReimu, LinkSummon);
AddExecutor(ExecutorType.SpSummon, CardId.LinkReisen, LinkSummon);
AddExecutor(ExecutorType.Activate, CardId.YuyukoL8, YuyukoL8Effect);
AddExecutor(ExecutorType.SpSummon, CardId.YoumuR4, YoumuR4Summon);
AddExecutor(ExecutorType.Activate, CardId.JigenYuuhei, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
bool CardOfDemiseUsed = false;
public override IList<ClientCard> OnSelectCard(IList<ClientCard> cards, int min, int max, int hint, bool cancelable)
{
Logger.DebugWriteLine("OnSelectCard " + cards.Count + " " + min + " " + max);
if (hint == 504 && cards[0].Location == CardLocation.Hand)
{
IList<ClientCard> result = Util.SelectPreferredCards(new[] {
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheBluesky,
CardId.MimaL9,
CardId.KanataOfTamaSakura,
CardId.HatanokokoroL4,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumeiNoKuwa,
CardId.YoumuTheSweetMaid,
CardId.KokoroCorona
}, cards, min, max);
Util.CheckSelectCount(result, cards, min, max);
return result;
}
return null;
}
public override IList<ClientCard> OnSelectPendulumSummon(IList<ClientCard> cards, int max)
{
Logger.DebugWriteLine("OnSelectPendulumSummon");
// select the last cards
IList<ClientCard> selected = new List<ClientCard>();
for (int i = 1; i <= max; ++i)
{
ClientCard card = cards[cards.Count - i];
if ((card.Location == CardLocation.Removed) || (card.Location == CardLocation.Grave))
selected.Add(card);
}
if (selected.Count == 0)
selected.Add(cards[cards.Count - 1]);
return selected;
}
private bool KokoroCoronaEffect()
{
AI.SelectCard(new[]
{
CardId.HatanokokoroL4,
CardId.YoumuTheBluesky,
CardId.YoumuTheHalfSpiritL3
});
return true;
}
private bool MougakyouEffect()
{
if (ActivateDescription == Util.GetStringId(CardId.Mougakyou, 3))
{
AI.SelectCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.YoumuTheSweetMaid
});
return true;
}
else if (ActivateDescription == Util.GetStringId(CardId.Mougakyou, 0) || ActivateDescription == Util.GetStringId(CardId.Mougakyou, 2))
{
AI.SelectCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpirit,
CardId.YoumuTheHalfSpiritL3
});
return true;
}
else
{
AI.SelectCard(new[]
{
CardId.Hakugyokurou,
CardId.KanataOfTamaSakura,
CardId.HiNoOtoko,
CardId.Mougakyou,
CardId.MimaL9,
CardId.HatanokokoroL4,
CardId.YoumuF6
});
return true;
}
}
private bool HakugyokurouEffect()
{
if (Bot.GetGraveyardMonsters().Count !=0)
return false;
if (ActivateDescription == Util.GetStringId(CardId.Hakugyokurou, 1))
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
AI.SelectCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.MimaL9,
CardId.YoumuTheSweetMaid
});
return true;
}
else if (ActivateDescription == Util.GetStringId(CardId.Hakugyokurou, 0))
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
List<ClientCard> spells = Enemy.GetSpells();
if (spells.Count == 0)
return false;
ClientCard selected = null;
{
foreach (ClientCard card in spells)
{
if (card.IsFacedown())
{
selected = card;
break;
}
}
}
if (selected == null)
return false;
AI.SelectCard(selected);
return true;
}
else
{
AI.SelectCard(new[]
{
CardId.Mougakyou
});
AI.SelectCard(new[]
{
CardId.YoumuTheAkaSakuraYuurei
});
return true;
}
}
private bool YoumuTheSweetMaidEffect()
{
AI.SelectCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheHalfSpirit,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheAkaSakuraYuurei
});
{
AI.SelectNextCard(new[]
{
CardId.YoumuTheBluesky,
CardId.YoumuTheAkaSakuraYuurei,
CardId.YoumuTheHalfSpiritL3
});
}
return true;
}
private bool YoumuTheBlueskySummon()
{
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
}
private bool NueL3Effect()
{
AI.SelectCard(new[]
{
CardId.YoumuF6
});
{
AI.SelectNextCard(new[]
{
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheBluesky,
CardId.YoumuTheAkaSakuraYuurei
});
}
return true;
}
private bool MimaL9Effect()
{
AI.SelectCard(new[]
{
CardId.YoumuTheAkaSakuraYuurei,
CardId.MimaL9,
CardId.YoumuTheHalfSpiritL3,
CardId.YoumuTheMangetsuYuuki,
CardId.YoumuTheSweetMaid,
CardId.YoumuTheBluesky,
CardId.HatanokokoroL4
});
return true;
}
private bool YuyukoL8Summon()
{
ClientCard target = Util.GetBestEnemyCard();
if (target != null)
{
AI.SelectCard(target);
return true;
}
return true;
}
private bool YuyukoL8Effect()
{
if (Duel.Turn != 1 && ActivateDescription == Util.GetStringId(CardId.YuyukoL8, 2))
{
return false;
}
if (ActivateDescription == -1 || ActivateDescription == Util.GetStringId(CardId.YuyukoL8, 0))
{
return true;
}
return false;
}
private bool LinkYuyukoSummon()
{
if (Bot.HasInMonstersZone(CardId.LinkYuyuko))
{
return false;
}
return true;
}
private bool LinkYuyukoEffect()
{
ClientCard targets = Util.GetBestEnemySpell();
ClientCard target = Util.GetBestEnemyMonster();
if (targets != null)
{
AI.SelectCard(targets);
return true;
}
else if (target != null)
{
AI.SelectCard(target);
return true;
}
return false;
}
private bool YoumuR4Summon()
{
return (Util.IsTurn1OrMain2() || Util.IsOneEnemyBetter());
}
private bool AttackUpEffect()
{
ClientCard bestMy = Bot.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyATK = Enemy.GetMonsters().GetHighestAttackMonster();
ClientCard bestEnemyDEF = Enemy.GetMonsters().GetHighestDefenseMonster();
if (bestMy == null || (bestEnemyATK == null && bestEnemyDEF == null))
return false;
if (bestEnemyATK != null && bestMy.Attack < bestEnemyATK.Attack)
return true;
if (bestEnemyDEF != null && bestMy.Attack < bestEnemyDEF.Defense)
return true;
return false;
}
private bool LinkSummon()
{
return (Util.IsTurn1OrMain2() || Util.IsOneEnemyBetter())
&& Util.GetBestAttack(Bot) < Card.Attack;
}
}
}
\ No newline at end of file
...@@ -122,6 +122,10 @@ ...@@ -122,6 +122,10 @@
<Compile Include="Game\AI\Decks\DoEveryThingExecutor.cs" /> <Compile Include="Game\AI\Decks\DoEveryThingExecutor.cs" />
<Compile Include="Game\AI\Decks\OldSchoolExecutor.cs" /> <Compile Include="Game\AI\Decks\OldSchoolExecutor.cs" />
<Compile Include="Game\AI\Decks\Rank5Executor.cs" /> <Compile Include="Game\AI\Decks\Rank5Executor.cs" />
<Compile Include="Game\AI\Decks\YuyukoRank1Executor.cs" />
<Compile Include="Game\AI\Decks\YuyukoRank2Executor.cs" />
<Compile Include="Game\AI\Decks\YuyukoRank3Executor.cs" />
<Compile Include="Game\AI\Decks\YuyukoRank4Executor.cs" />
<Compile Include="Game\AI\Decks\ZefraExecutor.cs" /> <Compile Include="Game\AI\Decks\ZefraExecutor.cs" />
<Compile Include="Game\AI\Decks\ZoodiacExecutor.cs" /> <Compile Include="Game\AI\Decks\ZoodiacExecutor.cs" />
<Compile Include="Game\AI\Decks\ZexalWeaponsExecutor.cs" /> <Compile Include="Game\AI\Decks\ZexalWeaponsExecutor.cs" />
......
{ {
"windbots": [ "windbots": [
{ {
"name": "伊芙·墨菲", "name": "伊芙·墨菲",
"deck": "Toadally Awesome", "deck": "Toadally Awesome",
"dialog": "wof-Eve-Murphy" "dialog": "wof-Eve-Murphy"
}, },
{ {
"name": "梦前菜菜", "name": "梦前菜菜",
"deck": "Rainbow", "deck": "Rainbow",
"dialog": "wof-Yumesaki-Nana" "dialog": "wof-Yumesaki-Nana"
}, },
{ {
"name": "石砂原奈绪", "name": "石砂原奈绪",
"deck": "Dragunity", "deck": "Dragunity",
"dialog": "wof-Isagohara-Nao" "dialog": "wof-Isagohara-Nao"
}, },
{ {
"name": "鸣野凪子", "name": "鸣野凪子",
"deck": "Rank V", "deck": "Rank V",
"dialog": "wof-Shigino-Nagiko" "dialog": "wof-Shigino-Nagiko"
}, },
{ {
"name": "绫濑亚梦", "name": "绫濑亚梦",
"deck": "Zexal Weapons", "deck": "Zexal Weapons",
"dialog": "wof-Ayase-Amu" "dialog": "wof-Ayase-Amu"
}, },
{ {
"name": "埃莉丝·科菲", "name": "埃莉丝·科菲",
"deck": "Level VIII", "deck": "Level VIII",
"dialog": "wof-Elyse-Coffey" "dialog": "wof-Elyse-Coffey"
}, },
{ {
"name": "城崎千夏", "name": "城崎千夏",
"deck": "Zoodiac", "deck": "Zoodiac",
"dialog": "wof-Jougasaki-Chinatsu" "dialog": "wof-Jougasaki-Chinatsu"
}, },
{ {
"name": "下垣鸣海凛央奈", "name": "下垣鸣海凛央奈",
"deck": "Blue-Eyes", "deck": "Blue-Eyes",
"dialog": "wof-Shimogakinarumi-Riona" "dialog": "wof-Shimogakinarumi-Riona"
}, },
{ {
"name": "鹭泽由依", "name": "鹭泽由依",
"deck": "Yosenju", "deck": "Yosenju",
"dialog": "wof-Sagisawa-Yui" "dialog": "wof-Sagisawa-Yui"
}, },
{ {
"name": "十十六木花奏子", "name": "十十六木花奏子",
"deck": "Qliphort", "deck": "Qliphort",
"dialog": "wof-Todoroki-Kanako" "dialog": "wof-Todoroki-Kanako"
}, },
{ {
"name": "七草一花", "name": "七草一花",
"deck": "Trickstar", "deck": "Trickstar",
"dialog": "wof-Nanakusa-Ichika" "dialog": "wof-Nanakusa-Ichika"
}, },
{ {
"name": "凯瑟琳·罗森塔尔", "name": "凯瑟琳·罗森塔尔",
"deck": "Altergeist", "deck": "Altergeist",
"dialog": "wof-Catherine-Rosenthal" "dialog": "wof-Catherine-Rosenthal"
}, },
{ {
"name": "白石唯", "name": "白石唯",
"deck": "Nekroz", "deck": "Nekroz",
"dialog": "wof-Shiraishi-Yui" "dialog": "wof-Shiraishi-Yui"
}, },
{ {
"name": "水晶艾蕾娜", "name": "水晶艾蕾娜",
"deck": "ST1732", "deck": "ST1732",
"dialog": "wof-Suisho-Erena" "dialog": "wof-Suisho-Erena"
}, },
{ {
"name": "音羽真寻", "name": "音羽真寻",
"deck": "Lightsworn", "deck": "Lightsworn",
"dialog": "wof-Otoha-Mahiro" "dialog": "wof-Otoha-Mahiro"
}, },
{ {
"name": "神崎春瑚", "name": "神崎春瑚",
"deck": "Blackwing", "deck": "Blackwing",
"dialog": "wof-Kanzaki-Haruko" "dialog": "wof-Kanzaki-Haruko"
}, },
{ {
"name": "樱庭小梅", "name": "樱庭小梅",
"deck": "CyberDragon", "deck": "CyberDragon",
"dialog": "wof-Sakuraba-Koume" "dialog": "wof-Sakuraba-Koume"
}, },
{ {
"name": "淡野美妙子", "name": "淡野美妙子",
"deck": "Evilswarm", "deck": "Evilswarm",
"dialog": "wof-Awaya-Mieko" "dialog": "wof-Awaya-Mieko"
}, },
{ {
"name": "璃池樱空", "name": "璃池樱空",
"deck": "Gravekeeper", "deck": "Gravekeeper",
"dialog": "wof-Akiike-Sara" "dialog": "wof-Akiike-Sara"
}, },
{ {
"name": "月白五十铃", "name": "月白五十铃",
"deck": "Graydle", "deck": "Graydle",
"dialog": "wof-Tsukishiro-Isuzu" "dialog": "wof-Tsukishiro-Isuzu"
}, },
{ {
"name": "晴海夏佳", "name": "晴海夏佳",
"deck": "LightswornShaddoldinosour", "deck": "LightswornShaddoldinosour",
"dialog": "wof-Harumi-Natsuka" "dialog": "wof-Harumi-Natsuka"
}, },
{ {
"name": "濑名歌铃", "name": "濑名歌铃",
"deck": "SkyStriker", "deck": "SkyStriker",
"dialog": "wof-Sena-Karin" "dialog": "wof-Sena-Karin"
}, },
{ {
"name": "椎名咪玉", "name": "椎名咪玉",
"deck": "DarkMagician", "deck": "DarkMagician",
"dialog": "wof-Shiina-Miu" "dialog": "wof-Shiina-Miu"
}, },
{ {
"name": "薇薇安·伊文捷琳", "name": "薇薇安·伊文捷琳",
"deck": "Orcust", "deck": "Orcust",
"dialog": "wof-Vivian-Evangeline" "dialog": "wof-Vivian-Evangeline"
}, },
{ {
"name": "海伦·薇萨拉兹", "name": "海伦·薇萨拉兹",
"deck": "Salamangreat", "deck": "Salamangreat",
"dialog": "wof-Helen-Virsaladze" "dialog": "wof-Helen-Virsaladze"
}, },
{ {
"name": "蓝叶雾叶", "name": "蓝叶雾叶",
"deck": "Dragun", "deck": "Dragun",
"dialog": "wof-Aiha-Kiriha" "dialog": "wof-Aiha-Kiriha"
}, },
{ {
"name": "诺玛·林斯科特", "name": "诺玛·林斯科特",
"deck": "MathMech", "deck": "MathMech",
"dialog": "wof-Norma-Linscott" "dialog": "wof-Norma-Linscott"
}, },
{ {
"name": "砂冢明音", "name": "砂冢明音",
"deck": "TimeThief", "deck": "TimeThief",
"dialog": "wof-Sunazuka-Akane" "dialog": "wof-Sunazuka-Akane"
}, },
{ {
"name": "早见虹羽", "name": "早见虹羽",
"deck": "PureWinds", "deck": "PureWinds",
"dialog": "wof-Hayami-Nijiha" "dialog": "wof-Hayami-Nijiha"
}, },
{ {
"name": "白雪安娜", "name": "白雪安娜",
"deck": "Witchcraft", "deck": "Witchcraft",
"dialog": "wof-Shirayuki-Anna" "dialog": "wof-Shirayuki-Anna"
}, },
{ {
"name": "星希花音", "name": "星希花音",
"deck": "Burn", "deck": "Burn",
"dialog": "wof-Hoshiki-Kanon" "dialog": "wof-Hoshiki-Kanon"
}, },
{ {
"name": "浅见空子", "name": "浅见空子",
"deck": "Frog", "deck": "Frog",
"dialog": "wof-Asami-Sorako" "dialog": "wof-Asami-Sorako"
}, },
{ {
"name": "佐佐木茜", "name": "佐佐木茜",
"deck": "Horus", "deck": "Horus",
"dialog": "wof-Sasaki-Akane" "dialog": "wof-Sasaki-Akane"
}, },
{ {
"name": "克里斯汀·罗森塔尔", "name": "克里斯汀·罗森塔尔",
"deck": "BlueEyesMaxDragon", "deck": "BlueEyesMaxDragon",
"dialog": "wof-Christine-Rosenthal" "dialog": "wof-Christine-Rosenthal"
}, },
{ {
"name": "白鸟芽衣", "name": "白鸟芽衣",
"deck": "Phantasm", "deck": "Phantasm",
"dialog": "wof-Shiratori-Mei" "dialog": "wof-Shiratori-Mei"
}, },
{ {
"name": "八宫一月", "name": "八宫一月",
"deck": "GrenMajuThunderBoarder", "deck": "GrenMajuThunderBoarder",
"dialog": "wof-Hachimiya-Kaduki" "dialog": "wof-Hachimiya-Kaduki"
}, },
{ {
"name": "浅仓纱花", "name": "浅仓纱花",
"deck": "ChainBurn", "deck": "ChainBurn",
"dialog": "wof-Asukura-Sayaka" "dialog": "wof-Asukura-Sayaka"
}, },
{ {
"name": "黑崎智秋", "name": "黑崎智秋",
"deck": "FamiliarPossessed", "deck": "FamiliarPossessed",
"dialog": "wof-Kurosaki-Chiaki" "dialog": "wof-Kurosaki-Chiaki"
}, },
{ {
"name": "神代心春", "name": "神代心春",
"deck": "Brave", "deck": "Brave",
"dialog": "wof-Kamishiro-Koharu" "dialog": "wof-Kamishiro-Koharu"
}, },
{ {
"name": "玻名城夏爱", "name": "玻名城夏爱",
"deck": "Exosister", "deck": "Exosister",
"dialog": "wof-Hanagusuku-Kea" "dialog": "wof-Hanagusuku-Kea"
}, },
{ {
"name": "珠洲岛拓海", "name": "珠洲岛拓海",
"deck": "Labrynth", "deck": "Labrynth",
"dialog": "wof-Suzujima-Takumi" "dialog": "wof-Suzujima-Takumi"
}, },
{ {
"name": "空鸽子", "name": "空鸽子",
"deck": "ThunderDragon", "deck": "ThunderDragon",
"dialog": "wof-Empty-Pigeon" "dialog": "wof-Empty-Pigeon"
}, },
{ {
"name": "朝比奈千夜", "name": "朝比奈千夜",
"deck": "Kashtira", "deck": "Kashtira",
"dialog": "wof-Asabina-Chiya" "dialog": "wof-Asabina-Chiya"
}, },
{ {
"name": "露卡希娅", "name": "露卡希娅",
"deck": "Tearlaments", "deck": "Tearlaments",
"dialog": "wof-Rukahira" "dialog": "wof-Rukahira"
}, },
{ {
"name": "二宫爱丽丝", "name": "二宫爱丽丝",
"deck": "Zefra", "deck": "Zefra",
"dialog": "wof-Ninomiya-Arisu" "dialog": "wof-Ninomiya-Arisu"
}, },
{ {
"name": "时谷彼方", "name": "时谷彼方",
"deck": "Swordsoul", "deck": "Swordsoul",
"dialog": "wof-Tokitani-Kanata" "dialog": "wof-Tokitani-Kanata"
}, },
{ {
"name": "三水小雪", "name": "三水小雪",
"deck": "Dogmatika", "deck": "Dogmatika",
"dialog": "wof-Samisui-Koyuki" "dialog": "wof-Samisui-Koyuki"
}, },
{ {
"name": "鹫见花火", "name": "鹫见花火",
"deck": "Albaz", "deck": "Albaz",
"dialog": "wof-Sumi-Hanabi" "dialog": "wof-Sumi-Hanabi"
}, },
{ {
"name": "有栖川蓝子", "name": "有栖川蓝子",
"deck": "MokeyMokeyKing", "deck": "MokeyMokeyKing",
"dialog": "wof-Arisugawa-Aiko" "dialog": "wof-Arisugawa-Aiko"
}, },
{ {
"name": "宫水静香", "name": "宫水静香",
"deck": "SuperheavySamurai", "deck": "SuperheavySamurai",
"dialog": "wof-Miyamizu-Shizuka" "dialog": "wof-Miyamizu-Shizuka"
}, },
{ {
"name": "糖歌", "name": "糖歌",
"deck": "Ryzeal", "deck": "Ryzeal",
"dialog": "wof-Ameuta" "dialog": "wof-Ameuta"
}, },
{ {
"name": "摆烂型王圆圆", "name": "摆烂型王圆圆",
"deck": "THC_DSReimu", "deck": "THC_DSReimu",
"dialog": "default" "dialog": "default"
}, },
{ {
"name": "强袭型王圆圆", "name": "强袭型王圆圆",
"deck": "THC_WDL", "deck": "THC_WDL",
"dialog": "ayane.zh-CN" "dialog": "ayane.zh-CN"
}, },
{ {
"name": "神数不神", "name": "神数不神",
"deck": "Tearlaments", "deck": "Tearlaments",
"dialog": "Zefra.zh-CN" "dialog": "Zefra.zh-CN"
}, },
{ {
"name": "神数不神", "name": "神数不神",
"deck": "Zefra", "deck": "Zefra",
"dialog": "Zefra.zh-CN" "dialog": "Zefra.zh-CN"
}, },
{ {
"name": "艾克莉西娅", "name": "艾克莉西娅",
"deck": "Swordsoul", "deck": "Swordsoul",
"dialog": "ecclesia.zh-CN" "dialog": "ecclesia.zh-CN"
} },
] {
"name": "西行寺幽幽子<Easy>",
"deck": "YuyukoRank1",
"dialog": "YuyukoRank1.zh-CN"
},
{
"name": "西行寺幽幽子<Normal>",
"deck": "YuyukoRank2",
"dialog": "YuyukoRank1.zh-CN"
},
{
"name": "西行寺幽幽子<Hard>",
"deck": "YuyukoRank3",
"dialog": "YuyukoRank1.zh-CN"
},
{
"name": "西行寺幽幽子<Lunatic>",
"deck": "YuyukoRank4",
"dialog": "YuyukoRank1.zh-CN"
}
]
} }
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