Commit 217ca75b authored by 苍蓝's avatar 苍蓝

111

parent ab90d3d9
Pipeline #5615 passed with stage
in 54 seconds
......@@ -5,12 +5,12 @@
# flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE, SUPPORT_MASTER_RULE_2020)
!齿车戒龙
Name=齿车戒龙 Deck=RushDragonDragears Dialog=zh-CN
Name=齿车戒龙 Deck=MokeyMokey Dialog=zh-CN
龙法卡组。
SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!破坏剑士
Name=破坏剑士 Deck=BusterBlader Dialog=zh-CN
Name=破坏剑士 Deck=MokeyMokeyKing Dialog=zh-CN
加强版龙法卡组。需勾选不检查卡组才能对战。
SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
......
#created by ...
#main
120170000
120170000
120170000
120110001
120110001
120110001
120145000
120145000
120105005
120105005
120105005
120145001
120145001
120145001
120105006
120105006
120105006
120145014
120145014
120120018
120120018
120120018
120130016
120130016
120130016
120110009
120110009
120151023
120105012
120105012
120105012
120110012
120110012
120105013
120105013
120105013
120105014
120150019
120150019
120150019
#extra
!side
#created by ...
#created by ygomobile
#main
120151006
120151006
......@@ -41,4 +41,4 @@
120151020
120151019
#extra
!side
!side
\ No newline at end of file
#created by ...
#main
39552864
39552864
39552864
12482652
12482652
12482652
42941100
42941100
42941100
79335209
79335209
79335209
487395
487395
487395
99171160
99171160
99171160
53776525
53776525
53776525
32274490
32274490
32274490
27288416
27288416
27288416
80825553
80825553
80825553
7902349
8124921
44519536
70903634
69380702
69380702
69380702
3557275
3557275
3557275
120151023
120170000
120110001
120110001
120110001
120105001
120105001
120105001
120110005
120110005
120105005
120105005
120145001
120145001
120145001
120105006
120105006
120105006
120145014
120145014
120120018
120120018
120120018
120130016
120130016
120130016
120110009
120110009
120110009
120105012
120105012
120105012
120110012
120110012
120105013
120105013
120105013
120105014
120170065
120150019
#extra
!side
#created by ...
#main
5464695
5464695
5464695
39256679
39256679
39256679
11549357
11549357
11549357
99785935
99785935
99785935
91152256
91152256
91152256
76812113
76812113
76812113
85639257
85639257
85639257
74093656
74093656
74093656
68505803
68505803
68505803
27288416
27288416
27288416
19384334
22702055
23424603
35956022
45778932
50913601
56594520
82999629
86318356
87430998
120170000
120170000
120170000
120110001
120110001
120110001
120145000
120145000
120105005
120105005
120105005
120145001
120145001
120145001
120105006
120105006
120105006
120145014
120145014
120120018
120120018
120120018
120130016
120130016
120130016
120110009
120110009
120151023
120105012
120105012
120105012
120110012
120110012
120105013
120105013
120105013
120105014
120150019
120150019
120150019
#extra
45815891
45815891
45815891
71594310
71594310
71594310
67598234
67598234
67598234
!side
#created by ...
#main
120151023
120170000
120110001
120110001
120110001
120105001
120105001
120105001
120110005
120110005
120105005
120105005
120145001
120145001
120145001
120105006
120105006
120105006
120145014
120145014
120120018
120120018
120120018
120130016
120130016
120130016
120110009
120110009
120110009
120105012
120105012
120105012
120110012
120110012
120105013
120105013
120105013
120105014
120170065
120150019
#extra
!side
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using System.Linq;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
using System;
namespace WindBot.Game.AI.Decks
{
[Deck("BusterBlader", "AI_BusterBlader")]
public class BusterBladerExecutor : DefaultExecutor
{
public class CardId
{
public const int 青眼白龙 = 120120000;
public const int 破坏之剑士 = 120170000;
public const int 黑魔术师 = 120130000;
public const int 真红眼黑龙 = 120125001;
public const int 恶魔召唤 = 120145000;
public const int 人造人 = 120155000;
public const int 连击龙 = 120110001;
public const int 七星道魔术师 = 120105001;
public const int 雅灭鲁拉 = 120120029;
public const int 耳语妖精 = 120120018;
public const int 神秘庄家 = 120105006;
public const int 火星心少女 = 120145014;
public const int 斗牛士 = 120170035;
public const int 凤凰龙 = 120110009;
public const int 七星道法师 = 120130016;
public const int sionmax = 120150007;
public const int 对死者的供奉 = 120151023;
public const int 落穴 = 120150019;
public const int 暗黑释放 = 120105013;
}
public BusterBladerExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Activate, CardId.七星道法师, 七星道法师Effect);
AddExecutor(ExecutorType.Summon, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.恶魔召唤, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.雅灭鲁拉, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.黑魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.真红眼黑龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.七星道魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.人造人, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.神秘庄家);
AddExecutor(ExecutorType.Activate, CardId.神秘庄家);
AddExecutor(ExecutorType.SpellSet, CardId.暗黑释放);
AddExecutor(ExecutorType.SpellSet, CardId.落穴);
AddExecutor(ExecutorType.Activate, CardId.落穴, 落穴Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.SpellSet, CardId.对死者的供奉);
AddExecutor(ExecutorType.MonsterSet, CardId.凤凰龙, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.火星心少女, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.七星道法师, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.耳语妖精, monsterset);
AddExecutor(ExecutorType.Summon, CardId.七星道法师);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
AddExecutor(ExecutorType.Activate, CardId.火星心少女, 火星心少女Effect);
AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.七星道魔术师);
//AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
}
private List<int> HintMsgForEnemy = new List<int>
{
HintMsg.Release, HintMsg.Destroy, HintMsg.Remove, HintMsg.ToGrave, HintMsg.ReturnToHand, HintMsg.ToDeck,
HintMsg.FusionMaterial, HintMsg.SynchroMaterial, HintMsg.XyzMaterial, HintMsg.LinkMaterial, HintMsg.Disable
};
private List<int> HintMsgForMaxSelect = new List<int>
{
HintMsg.SpSummon, HintMsg.ToGrave, HintMsg.AddToHand, HintMsg.ToDeck, HintMsg.Destroy
};
public override IList<ClientCard> OnSelectCard(IList<ClientCard> _cards, int min, int max, int hint, bool cancelable)
{
if (Duel.Phase == DuelPhase.BattleStart)
return null;
if (AI.HaveSelectedCards())
return null;
IList<ClientCard> selected = new List<ClientCard>();
IList<ClientCard> cards = new List<ClientCard>(_cards);
if (max > cards.Count)
max = cards.Count;
if (HintMsgForEnemy.Contains(hint))
{
IList<ClientCard> enemyCards = cards.Where(card => card.Controller == 1).ToList();
// select enemy's card first
while (enemyCards.Count > 0 && selected.Count < max)
{
ClientCard card = enemyCards[Program.Rand.Next(enemyCards.Count)];
selected.Add(card);
enemyCards.Remove(card);
cards.Remove(card);
}
}
if (HintMsgForMaxSelect.Contains(hint))
{
// select max cards
while (selected.Count < max)
{
ClientCard card = cards[Program.Rand.Next(cards.Count)];
selected.Add(card);
cards.Remove(card);
}
}
return selected;
}
public override bool OnSelectHand()
{
// go first
return true;
}
public bool monsterset()
{
if (Duel.Turn == 1)
{
return true;
}
else if (Bot.HasInHand(new[] {
CardId.七星道魔术师,
CardId.连击龙,
CardId.青眼白龙,
CardId.人造人,
CardId.恶魔召唤,
CardId.雅灭鲁拉,
CardId.破坏之剑士,
CardId.真红眼黑龙,
CardId.黑魔术师
}))
return false;
return true;
}
private bool 耳语妖精Effect()
{
IList<ClientCard> targets = new List<ClientCard>();
foreach (ClientCard card in Enemy.GetGraveyardMonsters())
{
if (card.Level <= 4)
targets.Add(card);
}
return true;
}
private bool 七星道法师Effect()
{
AI.SelectCard(Enemy.GetMonsters().GetHighestAttackMonster());
return true;
}
private bool 落穴Effect()
{
foreach (ClientCard n in Duel.LastSummonedCards)
{
if (n.Attack >= 1900)
return true;
}
return false;
}
private bool 死供Effect()
{
if (Util.IsOneEnemyBetterThanValue(1900, true))
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
AI.SelectNextCard(Enemy.GetMonsters().GetHighestAttackMonster());
return true;
}
return false;
}
private bool 火星心少女Effect()
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
AI.SelectNextCard(Enemy.GetMonsters().GetHighestAttackMonster());
AI.SelectYesNo(true);
return true;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using System.Linq;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
using System;
namespace WindBot.Game.AI.Decks
{
[Deck("MokeyMokey", "AI_MokeyMokey", "Easy")]
[Deck("MokeyMokey", "AI_MokeyMokey")]
public class MokeyMokeyExecutor : DefaultExecutor
{
public class CardId
{
public const int LeoWizard = 4392470;
public const int Bunilla = 69380702;
public const int 青眼白龙 = 120120000;
public const int 破坏之剑士 = 120170000;
public const int 黑魔术师 = 120130000;
public const int 真红眼黑龙 = 120125001;
public const int 恶魔召唤 = 120145000;
public const int 人造人 = 120155000;
public const int 连击龙 = 120110001;
public const int 七星道魔术师 = 120105001;
public const int 雅灭鲁拉 = 120120029;
public const int 耳语妖精 = 120120018;
public const int 神秘庄家 = 120105006;
public const int 火星心少女 = 120145014;
public const int 斗牛士 = 120170035;
public const int 凤凰龙 = 120110009;
public const int 七星道法师 = 120130016;
public const int sionmax = 120150007;
public const int 对死者的供奉 = 120151023;
public const int 落穴 = 120150019;
public const int 暗黑释放 = 120105013;
}
private int RockCount = 0;
public MokeyMokeyExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Summon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Activate, CardId.七星道法师,七星道法师Effect);
AddExecutor(ExecutorType.Summon, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.恶魔召唤, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.雅灭鲁拉, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.黑魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.真红眼黑龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.七星道魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.人造人, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.神秘庄家);
AddExecutor(ExecutorType.Activate, CardId.神秘庄家);
AddExecutor(ExecutorType.SpellSet, CardId.暗黑释放);
AddExecutor(ExecutorType.SpellSet, CardId.落穴);
AddExecutor(ExecutorType.Activate, CardId.落穴, 落穴Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.SpellSet, CardId.对死者的供奉);
AddExecutor(ExecutorType.MonsterSet, CardId.凤凰龙, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.火星心少女, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.七星道法师, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.耳语妖精, monsterset);
AddExecutor(ExecutorType.Summon, CardId.七星道法师);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
AddExecutor(ExecutorType.Activate, CardId.火星心少女, 火星心少女Effect);
AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.七星道魔术师);
//AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
}
private List<int> HintMsgForEnemy = new List<int>
{
HintMsg.Release, HintMsg.Destroy, HintMsg.Remove, HintMsg.ToGrave, HintMsg.ReturnToHand, HintMsg.ToDeck,
HintMsg.FusionMaterial, HintMsg.SynchroMaterial, HintMsg.XyzMaterial, HintMsg.LinkMaterial, HintMsg.Disable
};
private List<int> HintMsgForMaxSelect = new List<int>
{
HintMsg.SpSummon, HintMsg.ToGrave, HintMsg.AddToHand, HintMsg.ToDeck, HintMsg.Destroy
};
public override IList<ClientCard> OnSelectCard(IList<ClientCard> _cards, int min, int max, int hint, bool cancelable)
{
if (Duel.Phase == DuelPhase.BattleStart)
return null;
if (AI.HaveSelectedCards())
return null;
IList<ClientCard> selected = new List<ClientCard>();
IList<ClientCard> cards = new List<ClientCard>(_cards);
if (max > cards.Count)
max = cards.Count;
if (HintMsgForEnemy.Contains(hint))
{
IList<ClientCard> enemyCards = cards.Where(card => card.Controller == 1).ToList();
// select enemy's card first
while (enemyCards.Count > 0 && selected.Count < max)
{
ClientCard card = enemyCards[Program.Rand.Next(enemyCards.Count)];
selected.Add(card);
enemyCards.Remove(card);
cards.Remove(card);
}
}
if (HintMsgForMaxSelect.Contains(hint))
{
// select max cards
while (selected.Count < max)
{
ClientCard card = cards[Program.Rand.Next(cards.Count)];
selected.Add(card);
cards.Remove(card);
}
}
return selected;
}
public override bool OnSelectHand()
{
// go first
return true;
}
public bool monsterset()
{
if (Duel.Turn == 1)
{
return true;
}
else if (Bot.HasInHand(new[] {
CardId.七星道魔术师,
CardId.连击龙,
CardId.青眼白龙,
CardId.人造人,
CardId.恶魔召唤,
CardId.雅灭鲁拉,
CardId.破坏之剑士,
CardId.真红眼黑龙,
CardId.黑魔术师
}))
return false;
return true;
}
private bool 耳语妖精Effect()
{
IList<ClientCard> targets = new List<ClientCard>();
foreach (ClientCard card in Enemy.GetGraveyardMonsters())
{
if (card.Level <= 4)
targets.Add(card);
}
return true;
public override int OnRockPaperScissors()
}
private bool 落穴Effect()
{
foreach (ClientCard n in Duel.LastSummonedCards)
{
if (n.Attack >= 1900)
return true;
}
return false;
}
private bool 火星心少女Effect()
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
AI.SelectNextCard(Enemy.GetMonsters().GetHighestAttackMonster());
AI.SelectYesNo(true);
return true;
}
private bool 死供Effect()
{
if (Util.IsOneEnemyBetterThanValue(1900, false))
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
if (Enemy.GetMonsters().GetHighestAttackMonster() == null)
{
AI.SelectNextCard(Enemy.MonsterZone.GetHighestDefenseMonster());
}
AI.SelectNextCard(Enemy.MonsterZone.GetHighestAttackMonster());
return true;
}
return false;
}
private bool 七星道法师Effect()
{
RockCount++;
if (RockCount <= 3)
return 2;
else
return base.OnRockPaperScissors();
AI.SelectCard(Enemy.GetMonsters().GetHighestAttackMonster());
return true;
}
}
}
\ No newline at end of file
}
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using System.Linq;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
using System;
namespace WindBot.Game.AI.Decks
{
[Deck("MokeyMokeyKing", "AI_MokeyMokeyKing", "Easy")]
[Deck("MokeyMokeyKing", "AI_MokeyMokeyKing")]
public class MokeyMokeyKingExecutor : DefaultExecutor
{
public class CardId
{
public const int LeoWizard = 4392470;
public const int Bunilla = 69380702;
public const int 青眼白龙 = 120120000;
public const int 破坏之剑士 = 120170000;
public const int 黑魔术师 = 120130000;
public const int 真红眼黑龙 = 120125001;
public const int 恶魔召唤 = 120145000;
public const int 人造人 = 120155000;
public const int 连击龙 = 120110001;
public const int 七星道魔术师 = 120105001;
public const int 雅灭鲁拉 = 120120029;
public const int 耳语妖精 = 120120018;
public const int 神秘庄家 = 120105006;
public const int 火星心少女 = 120145014;
public const int 斗牛士 = 120170035;
public const int 凤凰龙 = 120110009;
public const int 七星道法师 = 120130016;
public const int sionmax = 120150007;
public const int 对死者的供奉 = 120151023;
public const int 落穴 = 120150019;
public const int 暗黑释放 = 120105013;
}
private int RockCount = 0;
public MokeyMokeyKingExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.SummonOrSet);
AddExecutor(ExecutorType.Activate, CardId.七星道法师, 七星道法师Effect);
AddExecutor(ExecutorType.Summon, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.恶魔召唤, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.雅灭鲁拉, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.黑魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.真红眼黑龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.七星道魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.人造人, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.神秘庄家);
AddExecutor(ExecutorType.Activate, CardId.神秘庄家);
AddExecutor(ExecutorType.SpellSet, CardId.暗黑释放);
AddExecutor(ExecutorType.SpellSet, CardId.落穴);
AddExecutor(ExecutorType.Activate, CardId.落穴, 落穴Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.SpellSet, CardId.对死者的供奉);
AddExecutor(ExecutorType.MonsterSet, CardId.凤凰龙, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.火星心少女, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.七星道法师, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.耳语妖精, monsterset);
AddExecutor(ExecutorType.Summon, CardId.七星道法师);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, DefaultField);
AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
AddExecutor(ExecutorType.Activate, CardId.火星心少女, 火星心少女Effect);
AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.七星道魔术师);
//AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
}
private List<int> HintMsgForEnemy = new List<int>
{
HintMsg.Release, HintMsg.Destroy, HintMsg.Remove, HintMsg.ToGrave, HintMsg.ReturnToHand, HintMsg.ToDeck,
HintMsg.FusionMaterial, HintMsg.SynchroMaterial, HintMsg.XyzMaterial, HintMsg.LinkMaterial, HintMsg.Disable
};
private List<int> HintMsgForMaxSelect = new List<int>
{
HintMsg.SpSummon, HintMsg.ToGrave, HintMsg.AddToHand, HintMsg.ToDeck, HintMsg.Destroy
};
public override IList<ClientCard> OnSelectCard(IList<ClientCard> _cards, int min, int max, int hint, bool cancelable)
{
if (Duel.Phase == DuelPhase.BattleStart)
return null;
if (AI.HaveSelectedCards())
return null;
IList<ClientCard> selected = new List<ClientCard>();
IList<ClientCard> cards = new List<ClientCard>(_cards);
if (max > cards.Count)
max = cards.Count;
if (HintMsgForEnemy.Contains(hint))
{
IList<ClientCard> enemyCards = cards.Where(card => card.Controller == 1).ToList();
// select enemy's card first
while (enemyCards.Count > 0 && selected.Count < max)
{
ClientCard card = enemyCards[Program.Rand.Next(enemyCards.Count)];
selected.Add(card);
enemyCards.Remove(card);
cards.Remove(card);
}
}
if (HintMsgForMaxSelect.Contains(hint))
{
// select max cards
while (selected.Count < max)
{
ClientCard card = cards[Program.Rand.Next(cards.Count)];
selected.Add(card);
cards.Remove(card);
}
}
return selected;
}
public override bool OnSelectHand()
{
// go first
return true;
}
public bool monsterset()
{
if (Duel.Turn == 1)
{
return true;
}
else if (Bot.HasInHand(new[] {
CardId.七星道魔术师,
CardId.连击龙,
CardId.青眼白龙,
CardId.人造人,
CardId.恶魔召唤,
CardId.雅灭鲁拉,
CardId.破坏之剑士,
CardId.真红眼黑龙,
CardId.黑魔术师
}))
return false;
return true;
}
private bool 耳语妖精Effect()
{
IList<ClientCard> targets = new List<ClientCard>();
foreach (ClientCard card in Enemy.GetGraveyardMonsters())
{
if (card.Level <= 4)
targets.Add(card);
}
return true;
}
private bool 七星道法师Effect()
{
AI.SelectCard(Enemy.GetMonsters().GetHighestAttackMonster());
return true;
}
private bool 落穴Effect()
{
foreach (ClientCard n in Duel.LastSummonedCards)
{
if (n.Attack >= 1900)
return true;
}
return false;
}
private bool 死供Effect()
{
if (Util.IsOneEnemyBetterThanValue(1900, true))
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
AI.SelectNextCard(Enemy.GetMonsters().GetHighestAttackMonster());
return true;
}
return false;
}
public override int OnRockPaperScissors()
private bool 火星心少女Effect()
{
RockCount++;
if (RockCount <= 3)
return 2;
else
return base.OnRockPaperScissors();
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
AI.SelectNextCard(Enemy.GetMonsters().GetHighestAttackMonster());
AI.SelectYesNo(true);
return true;
}
}
}
\ No newline at end of file
using YGOSharp.OCGWrapper.Enums;
using System.Collections.Generic;
using System.Linq;
using WindBot;
using WindBot.Game;
using WindBot.Game.AI;
using System;
namespace WindBot.Game.AI.Decks
{
[Deck("RushDragonDragears", "AI_RushDragonDragears")]
public class RushDragonDragearsExecutor : DefaultExecutor
{
public class CardId
{
public const int 青眼白龙 = 120120000;
public const int 破坏之剑士 = 120170000;
public const int 黑魔术师 = 120130000;
public const int 真红眼黑龙 = 120125001;
public const int 恶魔召唤 = 120145000;
public const int 人造人 = 120155000;
public const int 连击龙 = 120110001;
public const int 七星道魔术师 = 120105001;
public const int 雅灭鲁拉 = 120120029;
public const int 耳语妖精 = 120120018;
public const int 神秘庄家 = 120105006;
public const int 火星心少女 = 120145014;
public const int 斗牛士 = 120170035;
public const int 凤凰龙 = 120110009;
public const int 七星道法师 = 120130016;
public const int sionmax = 120150007;
public const int 对死者的供奉 = 120151023;
public const int 落穴 = 120150019;
public const int 暗黑释放 = 120105013;
}
public RushDragonDragearsExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Activate, CardId.七星道法师,七星道法师Effect);
AddExecutor(ExecutorType.Summon, CardId.青眼白龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.破坏之剑士, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.恶魔召唤, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.连击龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.雅灭鲁拉, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.黑魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.真红眼黑龙, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.七星道魔术师, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.人造人, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.神秘庄家);
AddExecutor(ExecutorType.Activate, CardId.神秘庄家);
AddExecutor(ExecutorType.SpellSet, CardId.暗黑释放);
AddExecutor(ExecutorType.SpellSet, CardId.落穴);
AddExecutor(ExecutorType.Activate, CardId.落穴, 落穴Effect);
AddExecutor(ExecutorType.Activate, CardId.对死者的供奉, 死供Effect);
AddExecutor(ExecutorType.SpellSet, CardId.对死者的供奉);
AddExecutor(ExecutorType.MonsterSet, CardId.凤凰龙, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.火星心少女, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.七星道法师, monsterset);
AddExecutor(ExecutorType.MonsterSet, CardId.耳语妖精, monsterset);
AddExecutor(ExecutorType.Summon, CardId.七星道法师);
AddExecutor(ExecutorType.Summon, CardId.凤凰龙);
AddExecutor(ExecutorType.Activate, CardId.凤凰龙);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpellSet);
//AddExecutor(ExecutorType.Activate, CardId.sionmax, sionmaxEffect);
AddExecutor(ExecutorType.Activate, CardId.耳语妖精, 耳语妖精Effect);
AddExecutor(ExecutorType.Activate, CardId.火星心少女, 火星心少女Effect);
AddExecutor(ExecutorType.Activate, CardId.连击龙);
AddExecutor(ExecutorType.Activate, CardId.七星道魔术师);
//AddExecutor(ExecutorType.Activate, CardId.斗牛士, 斗牛士Effect);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
}
private List<int> HintMsgForEnemy = new List<int>
{
HintMsg.Release, HintMsg.Destroy, HintMsg.Remove, HintMsg.ToGrave, HintMsg.ReturnToHand, HintMsg.ToDeck,
HintMsg.FusionMaterial, HintMsg.SynchroMaterial, HintMsg.XyzMaterial, HintMsg.LinkMaterial, HintMsg.Disable
};
private List<int> HintMsgForMaxSelect = new List<int>
{
HintMsg.SpSummon, HintMsg.ToGrave, HintMsg.AddToHand, HintMsg.ToDeck, HintMsg.Destroy
};
public override IList<ClientCard> OnSelectCard(IList<ClientCard> _cards, int min, int max, int hint, bool cancelable)
{
if (Duel.Phase == DuelPhase.BattleStart)
return null;
if (AI.HaveSelectedCards())
return null;
IList<ClientCard> selected = new List<ClientCard>();
IList<ClientCard> cards = new List<ClientCard>(_cards);
if (max > cards.Count)
max = cards.Count;
if (HintMsgForEnemy.Contains(hint))
{
IList<ClientCard> enemyCards = cards.Where(card => card.Controller == 1).ToList();
// select enemy's card first
while (enemyCards.Count > 0 && selected.Count < max)
{
ClientCard card = enemyCards[Program.Rand.Next(enemyCards.Count)];
selected.Add(card);
enemyCards.Remove(card);
cards.Remove(card);
}
}
if (HintMsgForMaxSelect.Contains(hint))
{
// select max cards
while (selected.Count < max)
{
ClientCard card = cards[Program.Rand.Next(cards.Count)];
selected.Add(card);
cards.Remove(card);
}
}
return selected;
}
public override bool OnSelectHand()
{
// go first
return true;
}
public bool monsterset()
{
if (Duel.Turn == 1)
{
return true;
}
else if (Bot.HasInHand(new[] {
CardId.七星道魔术师,
CardId.连击龙,
CardId.青眼白龙,
CardId.人造人,
CardId.恶魔召唤,
CardId.雅灭鲁拉,
CardId.破坏之剑士,
CardId.真红眼黑龙,
CardId.黑魔术师
}))
return false;
return true;
}
private bool 耳语妖精Effect()
{
IList<ClientCard> targets = new List<ClientCard>();
foreach (ClientCard card in Enemy.GetGraveyardMonsters())
{
if (card.Level <= 4)
targets.Add(card);
}
return true;
}
private bool 落穴Effect()
{
foreach (ClientCard n in Duel.LastSummonedCards)
{
if (n.Attack >= 1900)
return true;
}
return false;
}
private bool 火星心少女Effect()
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
AI.SelectNextCard(Enemy.GetMonsters().GetHighestAttackMonster());
AI.SelectYesNo(true);
return true;
}
private bool 死供Effect()
{
if (Util.IsOneEnemyBetterThanValue(1900, false))
{
foreach (ClientCard m in Bot.Hand)
AI.SelectCard(m);
if (Enemy.GetMonsters().GetHighestAttackMonster() == null)
{
AI.SelectNextCard(Enemy.MonsterZone.GetHighestDefenseMonster());
}
AI.SelectNextCard(Enemy.MonsterZone.GetHighestAttackMonster());
return true;
}
return false;
}
private bool 七星道法师Effect()
{
AI.SelectCard(Enemy.GetMonsters().GetHighestAttackMonster());
return true;
}
}
}
......@@ -70,6 +70,7 @@
<Compile Include="Game\AI\DeckAttribute.cs" />
<Compile Include="Game\AI\DecksManager.cs" />
<Compile Include="Game\AI\Decks\AltergeistExecutor.cs" />
<Compile Include="Game\AI\Decks\DinocarriageDynarmixExecutor.cs" />
<Compile Include="Game\AI\Decks\FamiliarPossessedExecutor.cs" />
<Compile Include="Game\AI\Decks\BlackwingExecutor.cs" />
<Compile Include="Game\AI\Decks\LuckyExecutor.cs" />
......@@ -154,9 +155,6 @@
</None>
</ItemGroup>
<ItemGroup>
<None Include="bots.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Decks\*.ydk">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......
......@@ -3,12 +3,12 @@
{
"name": "齿车戒龙",
"deck": "RushDragonDragears",
"deck": "MokeyMokey",
"dialog": "zh-CN"
},
{
"name": "破坏剑士",
"deck": "BusterBlader",
"deck": "MokeyMokeyKing",
"dialog": "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